Skip to content

Commit 05aaf31

Browse files
authored
feat: useItems support classnames and styles (#361)
* feat: useItems support classnames and styles * fix * fix
1 parent f0b2c7f commit 05aaf31

File tree

4 files changed

+20
-3
lines changed

4 files changed

+20
-3
lines changed

src/Collapse.tsx

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,8 @@ const Collapse = React.forwardRef<HTMLDivElement, CollapseProps>((props, ref) =>
3232
defaultActiveKey,
3333
onChange,
3434
items,
35+
classNames: customizeClassNames,
36+
styles,
3537
} = props;
3638

3739
const collapseClassName = classNames(prefixCls, className);
@@ -73,6 +75,8 @@ const Collapse = React.forwardRef<HTMLDivElement, CollapseProps>((props, ref) =>
7375
destroyInactivePanel,
7476
onItemClick,
7577
activeKey,
78+
classNames: customizeClassNames,
79+
styles,
7680
});
7781

7882
// ======================== Render ========================

src/hooks/useItems.tsx

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,10 @@ import React from 'react';
33
import type { CollapsePanelProps, CollapseProps, ItemType } from '../interface';
44
import CollapsePanel from '../Panel';
55

6-
type Props = Pick<CollapsePanelProps, 'prefixCls' | 'onItemClick' | 'openMotion' | 'expandIcon'> &
6+
type Props = Pick<
7+
CollapsePanelProps,
8+
'prefixCls' | 'onItemClick' | 'openMotion' | 'expandIcon' | 'classNames' | 'styles'
9+
> &
710
Pick<CollapseProps, 'accordion' | 'collapsible' | 'destroyInactivePanel'> & {
811
activeKey: React.Key[];
912
};
@@ -18,6 +21,8 @@ const convertItemsToNodes = (items: ItemType[], props: Props) => {
1821
activeKey,
1922
openMotion,
2023
expandIcon,
24+
classNames: collapseClassNames,
25+
styles,
2126
} = props;
2227

2328
return items.map((item, index) => {
@@ -53,6 +58,8 @@ const convertItemsToNodes = (items: ItemType[], props: Props) => {
5358
return (
5459
<CollapsePanel
5560
{...restProps}
61+
classNames={collapseClassNames}
62+
styles={styles}
5663
prefixCls={prefixCls}
5764
key={key}
5865
panelKey={key}
@@ -90,6 +97,8 @@ const getNewChild = (
9097
activeKey,
9198
openMotion,
9299
expandIcon,
100+
classNames: collapseClassNames,
101+
styles,
93102
} = props;
94103

95104
const key = child.key || String(index);
@@ -122,6 +131,8 @@ const getNewChild = (
122131
panelKey: key,
123132
header,
124133
headerClass,
134+
classNames: collapseClassNames,
135+
styles,
125136
isActive,
126137
prefixCls,
127138
destroyInactivePanel: childDestroyInactivePanel ?? destroyInactivePanel,

src/interface.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,8 @@ export interface CollapseProps {
3737
* @since 3.6.0
3838
*/
3939
items?: ItemType[];
40+
classNames?: Partial<Record<SemanticName, string>>;
41+
styles?: Partial<Record<SemanticName, React.CSSProperties>>;
4042
}
4143

4244
export type SemanticName = 'header' | 'title' | 'body' | 'icon';

tests/index.spec.tsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -871,12 +871,12 @@ describe('collapse', () => {
871871
const { container } = render(
872872
<Collapse
873873
activeKey={['1']}
874+
styles={customStyles}
875+
classNames={customClassnames}
874876
items={[
875877
{
876878
key: '1',
877879
label: 'title',
878-
styles: customStyles,
879-
classNames: customClassnames,
880880
},
881881
]}
882882
/>,

0 commit comments

Comments
 (0)