UNPKG

@ariakit/react-core

Version:

Ariakit React core

100 lines (98 loc) 2.9 kB
"use client"; import { useDialogDisclosure } from "../__chunks/UBWVN2JP.js"; import "../__chunks/W3FWC72U.js"; import { useComboboxProviderContext } from "../__chunks/6C2ASARV.js"; import "../__chunks/467XRHWL.js"; import "../__chunks/2LVHRIRC.js"; import "../__chunks/FYYAZUDI.js"; import "../__chunks/NO3UEYQ2.js"; import "../__chunks/XTCKRCGH.js"; import "../__chunks/EZ4UPVW6.js"; import "../__chunks/3F6D4KUU.js"; import "../__chunks/SWN3JYXT.js"; import { useStoreState } from "../__chunks/SOQQIDO4.js"; import "../__chunks/CTVD4XJH.js"; import { createElement, createHook, forwardRef } from "../__chunks/L4OUMOCQ.js"; import { useEvent, useSafeLayoutEffect } from "../__chunks/W2TDKEPX.js"; import "../__chunks/AZVQSWGA.js"; // src/combobox/combobox-disclosure.tsx import { invariant } from "@ariakit/core/utils/misc"; import { jsx } from "react/jsx-runtime"; var TagName = "button"; var children = /* @__PURE__ */ jsx( "svg", { "aria-hidden": "true", display: "block", fill: "none", stroke: "currentColor", strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 1.5, viewBox: "0 0 16 16", height: "1em", width: "1em", pointerEvents: "none", children: /* @__PURE__ */ jsx("polyline", { points: "4,6 8,10 12,6" }) } ); var useComboboxDisclosure = createHook(function useComboboxDisclosure2({ store, ...props }) { const context = useComboboxProviderContext(); store = store || context; invariant( store, process.env.NODE_ENV !== "production" && "ComboboxDisclosure must receive a `store` prop or be wrapped in a ComboboxProvider component." ); const onMouseDownProp = props.onMouseDown; const onMouseDown = useEvent((event) => { onMouseDownProp == null ? void 0 : onMouseDownProp(event); event.preventDefault(); store == null ? void 0 : store.move(null); }); const onClickProp = props.onClick; const onClick = useEvent((event) => { onClickProp == null ? void 0 : onClickProp(event); if (event.defaultPrevented) return; if (!store) return; const { baseElement: baseElement2 } = store.getState(); store.setDisclosureElement(baseElement2); }); const baseElement = useStoreState(store, "baseElement"); const open = useStoreState(store, "open"); useSafeLayoutEffect(() => { if (!baseElement) return; store.setDisclosureElement(baseElement); }, [store, baseElement]); props = { children, tabIndex: -1, "aria-label": open ? "Hide popup" : "Show popup", "aria-expanded": open, ...props, onMouseDown, onClick }; props = useDialogDisclosure({ store, ...props }); return props; }); var ComboboxDisclosure = forwardRef(function ComboboxDisclosure2(props) { const htmlProps = useComboboxDisclosure(props); return createElement(TagName, htmlProps); }); export { ComboboxDisclosure, useComboboxDisclosure };