UNPKG

@hitachivantara/uikit-react-core

Version:

Core React components for the NEXT Design System.

33 lines (32 loc) 808 B
import { setId } from "../utils/setId.js"; import { useControlled } from "./useControlled.js"; import { useUniqueId } from "./useUniqueId.js"; function useExpandable({ id: idProp, disabled, expanded, defaultExpanded }) { const [isOpen, setIsOpen] = useControlled(expanded, Boolean(defaultExpanded)); const id = useUniqueId(idProp); const buttonId = setId(id, "button"); const regionId = setId(id, "container"); return { isOpen, toggleOpen: (newOpen) => setIsOpen((o) => newOpen ?? !o), buttonProps: { id: buttonId, "aria-disabled": disabled, "aria-expanded": isOpen, "aria-controls": isOpen ? regionId : void 0 }, regionProps: { id: regionId, role: "region", "aria-labelledby": buttonId } }; } export { useExpandable };