@engie-group/fluid-design-system-react
Version:
Fluid Design System React
37 lines (34 loc) • 1.47 kB
JavaScript
import { jsx } from 'react/jsx-runtime';
import React__default, { useRef, useState } from 'react';
import { Utils } from '../../utils/util.js';
import { NJAccordionContext } from './NJAccordionContext.js';
const NJAccordion = React__default.forwardRef(({ children, isSeparated, withoutBorder, className, ...props }, forwardedRef) => {
const ref = useRef(null);
const newRef = Utils.mergeRefs([forwardedRef, ref]);
const [hasAlternativeToggleIcon, setHasAlternativeToggleIcon] = useState();
const [customIcon, setCustomIcon] = useState();
const action = (type) => () => {
const allItems = ref.current?.querySelectorAll(`details.nj-accordion-item`);
allItems?.forEach((item) => {
if (type === 'expand') {
item.setAttribute('open', '');
}
else {
item.removeAttribute('open');
}
});
};
const classNames = Utils.classNames('nj-accordion', {
'nj-accordion--no-border': withoutBorder,
'nj-accordion--separated': isSeparated
}, className);
return (jsx(NJAccordionContext.Provider, { value: {
action,
hasAlternativeToggleIcon,
setHasAlternativeToggleIcon,
customIcon,
setCustomIcon
}, children: jsx("div", { ...props, className: classNames, ref: newRef, children: children }) }));
});
NJAccordion.displayName = 'NJAccordion';
export { NJAccordion };