Skip to content

Commit f76c46c

Browse files
committed
feat(CAccordion): allow defining custom class names and overriding existing ones
1 parent 3bef184 commit f76c46c

File tree

5 files changed

+23
-14
lines changed

5 files changed

+23
-14
lines changed

packages/coreui-react/src/components/accordion/CAccordion.tsx

+3-3
Original file line numberDiff line numberDiff line change
@@ -89,16 +89,16 @@ export const CAccordion = forwardRef<HTMLDivElement, CAccordionProps>(
8989
) => {
9090
const [_activeItemKey, setActiveKey] = useState(activeItemKey)
9191

92-
const _classNames = mergeClassNames<typeof ACCORDION_CLASS_NAMES>(
92+
const mergedClassNames = mergeClassNames<typeof ACCORDION_CLASS_NAMES>(
9393
ACCORDION_CLASS_NAMES,
9494
customClassNames,
9595
)
9696

9797
return (
9898
<div
9999
className={classNames(
100-
_classNames.ACCORDION,
101-
{ [_classNames.ACCORDION_FLUSH]: flush },
100+
mergedClassNames.ACCORDION,
101+
{ [mergedClassNames.ACCORDION_FLUSH]: flush },
102102
className,
103103
)}
104104
{...rest}

packages/coreui-react/src/components/accordion/CAccordionBody.tsx

+3-3
Original file line numberDiff line numberDiff line change
@@ -51,14 +51,14 @@ export const CAccordionBody = forwardRef<HTMLDivElement, CAccordionBodyProps>(
5151
({ children, className, customClassNames, ...rest }, ref) => {
5252
const { id, visible } = useContext(CAccordionItemContext)
5353

54-
const _classNames = mergeClassNames<typeof ACCORDION_BODY_CLASS_NAMES>(
54+
const mergedClassNames = mergeClassNames<typeof ACCORDION_BODY_CLASS_NAMES>(
5555
ACCORDION_BODY_CLASS_NAMES,
5656
customClassNames,
5757
)
5858

5959
return (
60-
<CCollapse id={id} className={_classNames.ACCORDION_COLLAPSE} visible={visible}>
61-
<div className={classNames(_classNames.ACCORDION_BODY, className)} {...rest} ref={ref}>
60+
<CCollapse id={id} className={mergedClassNames.ACCORDION_COLLAPSE} visible={visible}>
61+
<div className={classNames(mergedClassNames.ACCORDION_BODY, className)} {...rest} ref={ref}>
6262
{children}
6363
</div>
6464
</CCollapse>

packages/coreui-react/src/components/accordion/CAccordionButton.tsx

+7-2
Original file line numberDiff line numberDiff line change
@@ -36,12 +36,17 @@ export const CLASS_NAMES = {
3636
export const CAccordionButton = forwardRef<HTMLButtonElement, CAccordionButtonProps>(
3737
({ children, className, customClassNames, ...rest }, ref) => {
3838
const { id, visible, setVisible } = useContext(CAccordionItemContext)
39-
const _classNames = mergeClassNames<typeof CLASS_NAMES>(CLASS_NAMES, customClassNames)
39+
40+
const mergedClassNames = mergeClassNames<typeof CLASS_NAMES>(CLASS_NAMES, customClassNames)
4041

4142
return (
4243
<button
4344
type="button"
44-
className={classNames(_classNames.ACCORDION_BUTTON, { collapsed: !visible }, className)}
45+
className={classNames(
46+
mergedClassNames.ACCORDION_BUTTON,
47+
{ collapsed: !visible },
48+
className,
49+
)}
4550
aria-controls={id}
4651
aria-expanded={visible}
4752
onClick={() => setVisible(!visible)}

packages/coreui-react/src/components/accordion/CAccordionHeader.tsx

+5-3
Original file line numberDiff line numberDiff line change
@@ -43,13 +43,15 @@ export const ACCORDION_HEADER_CLASS_NAMES = {
4343

4444
export const CAccordionHeader = forwardRef<HTMLDivElement, CAccordionHeaderProps>(
4545
({ children, className, customClassNames, ...rest }, ref) => {
46-
const _classNames = mergeClassNames<typeof ACCORDION_HEADER_CLASS_NAMES>(
46+
const mergedClassNames = mergeClassNames<typeof ACCORDION_HEADER_CLASS_NAMES>(
4747
ACCORDION_HEADER_CLASS_NAMES,
4848
customClassNames,
4949
)
5050
return (
51-
<div className={classNames(_classNames.ACCORDION_HEADER, className)} {...rest} ref={ref}>
52-
<CAccordionButton className={_classNames.ACCORDION_HEADER}>{children}</CAccordionButton>
51+
<div className={classNames(mergedClassNames.ACCORDION_HEADER, className)} {...rest} ref={ref}>
52+
<CAccordionButton className={mergedClassNames.ACCORDION_HEADER}>
53+
{children}
54+
</CAccordionButton>
5355
</div>
5456
)
5557
},

packages/coreui-react/src/components/accordion/CAccordionItem.tsx

+5-3
Original file line numberDiff line numberDiff line change
@@ -65,21 +65,23 @@ export const CAccordionItem = forwardRef<HTMLDivElement, CAccordionItemProps>(
6565
const { _activeItemKey, alwaysOpen, setActiveKey } = useContext(CAccordionContext)
6666
const [visible, setVisible] = useState(Boolean(_activeItemKey === _itemKey.current))
6767

68-
const _classNames = mergeClassNames<typeof ACCORDION_ITEM_CLASS_NAMES>(
68+
const mergedClassNames = mergeClassNames<typeof ACCORDION_ITEM_CLASS_NAMES>(
6969
ACCORDION_ITEM_CLASS_NAMES,
7070
customClassNames,
7171
)
7272

7373
useEffect(() => {
74-
!alwaysOpen && visible && setActiveKey(_itemKey.current)
74+
if (!alwaysOpen && visible) {
75+
setActiveKey(_itemKey.current)
76+
}
7577
}, [visible])
7678

7779
useEffect(() => {
7880
setVisible(Boolean(_activeItemKey === _itemKey.current))
7981
}, [_activeItemKey])
8082

8183
return (
82-
<div className={classNames(_classNames.ACCORDION_ITEM, className)} {...rest} ref={ref}>
84+
<div className={classNames(mergedClassNames.ACCORDION_ITEM, className)} {...rest} ref={ref}>
8385
<CAccordionItemContext.Provider value={{ id, setVisible, visible }}>
8486
{children}
8587
</CAccordionItemContext.Provider>

0 commit comments

Comments
 (0)