@szhsin/react-accordion
Version:
The complete accordion solution for React.
30 lines (27 loc) • 631 B
JavaScript
import { ACCORDION_BTN_ATTR } from '../utils/constants.mjs';
import { useId } from './useId.mjs';
const useAccordionItem = ({
state,
toggle,
disabled
}) => {
const buttonId = useId();
const panelId = buttonId && buttonId + '-';
const buttonProps = {
id: buttonId,
'aria-controls': panelId,
'aria-expanded': state.isEnter,
onClick: toggle
};
disabled ? buttonProps.disabled = true : buttonProps[ACCORDION_BTN_ATTR] = '';
const panelProps = {
id: panelId,
'aria-labelledby': buttonId,
role: 'region'
};
return {
buttonProps,
panelProps
};
};
export { useAccordionItem };