UNPKG

@ariakit/react

Version:

Toolkit for building accessible web apps with React

76 lines (56 loc) 2.73 kB
"use strict";Object.defineProperty(exports, "__esModule", {value: true}); var _ITEGEFBHcjs = require('./ITEGEFBH.cjs'); var _I4KB2YNAcjs = require('./I4KB2YNA.cjs'); var _5FQZLBJ7cjs = require('./5FQZLBJ7.cjs'); var _LZ6L3ECGcjs = require('./LZ6L3ECG.cjs'); // ../ariakit-react-components/dist/disclosure/disclosure.js var _react = require('react'); var TagName = "button"; var symbol = /* @__PURE__ */ Symbol("disclosure"); var useDisclosure = _LZ6L3ECGcjs.createHook.call(void 0, function useDisclosure2({ store, toggleOnClick = true, ...props }) { var _a; const context = _ITEGEFBHcjs.useDisclosureProviderContext.call(void 0, ); store = store || context; _LZ6L3ECGcjs.invariant.call(void 0, store, process.env.NODE_ENV !== "production" && "Disclosure must receive a `store` prop or be wrapped in a DisclosureProvider component."); const ref = _react.useRef.call(void 0, null); const [expanded, setExpanded] = _react.useState.call(void 0, false); const disclosureElement = _5FQZLBJ7cjs.useStoreState.call(void 0, store, "disclosureElement"); const open = _5FQZLBJ7cjs.useStoreState.call(void 0, store, "open"); _react.useEffect.call(void 0, () => { let isCurrentDisclosure = disclosureElement === ref.current; if (!(disclosureElement == null ? void 0 : disclosureElement.isConnected)) { store == null ? void 0 : store.setDisclosureElement(ref.current); isCurrentDisclosure = true; } setExpanded(open && isCurrentDisclosure); }, [ disclosureElement, store, open ]); const onClickProp = props.onClick; const toggleOnClickProp = _LZ6L3ECGcjs.useBooleanEvent.call(void 0, toggleOnClick); const [isDuplicate, metadataProps] = _LZ6L3ECGcjs.useMetadataProps.call(void 0, props, symbol, true); const onClick = _LZ6L3ECGcjs.useEvent.call(void 0, (event) => { onClickProp == null ? void 0 : onClickProp(event); if (event.defaultPrevented) return; if (isDuplicate) return; if (!toggleOnClickProp(event)) return; store == null ? void 0 : store.setDisclosureElement(event.currentTarget); store == null ? void 0 : store.toggle(); }); props = { "aria-expanded": expanded, "aria-controls": (_a = _5FQZLBJ7cjs.useStoreState.call(void 0, store, "contentElement")) == null ? void 0 : _a.id, ...metadataProps, ...props, ref: _LZ6L3ECGcjs.useMergeRefs.call(void 0, ref, props.ref), onClick }; props = _I4KB2YNAcjs.useButton.call(void 0, props); return props; }); var Disclosure = _LZ6L3ECGcjs.forwardRef.call(void 0, function Disclosure2(props) { return _LZ6L3ECGcjs.createElement.call(void 0, TagName, useDisclosure(props)); }); exports.useDisclosure = useDisclosure; exports.Disclosure = Disclosure;