@hitachivantara/uikit-react-core
Version:
Core React components for the NEXT Design System.
33 lines (32 loc) • 950 B
JavaScript
;
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
const setId = require("../utils/setId.cjs");
const useControlled = require("./useControlled.cjs");
const useUniqueId = require("./useUniqueId.cjs");
function useExpandable({
id: idProp,
disabled,
expanded,
defaultExpanded
}) {
const [isOpen, setIsOpen] = useControlled.useControlled(expanded, Boolean(defaultExpanded));
const id = useUniqueId.useUniqueId(idProp);
const buttonId = setId.setId(id, "button");
const regionId = setId.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
}
};
}
exports.useExpandable = useExpandable;