@ariakit/react-core
Version:
Ariakit React core
91 lines (89 loc) • 2.6 kB
JavaScript
"use client";
import {
useDialogDisclosure
} from "../__chunks/GYHYTZZN.js";
import "../__chunks/NJZUP4KO.js";
import {
useComboboxProviderContext
} from "../__chunks/7P7IWEBR.js";
import "../__chunks/MWF5B7KS.js";
import "../__chunks/63N3TCQX.js";
import "../__chunks/FFSBKSAM.js";
import "../__chunks/72IB6YNO.js";
import "../__chunks/J4DPQC5Y.js";
import "../__chunks/WJ7PHYH7.js";
import "../__chunks/US3TW2XI.js";
import "../__chunks/SWN3JYXT.js";
import "../__chunks/45YOMIF3.js";
import {
createElement,
createHook,
forwardRef
} from "../__chunks/ILRXHV7V.js";
import {
useEvent
} from "../__chunks/K2XTQB3X.js";
import "../__chunks/YXGXYGQX.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 } = store.getState();
store.setDisclosureElement(baseElement);
});
const open = store.useState("open");
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
};