@ariakit/react-core
Version:
Ariakit React core
100 lines (98 loc) • 2.9 kB
JavaScript
"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
};