UNPKG

@engie-group/fluid-design-system-react

Version:

Fluid Design System React

37 lines (34 loc) 1.47 kB
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 };