UNPKG

@crossed/primitive

Version:

A universal & performant styling library for React Native, Next.js & React

77 lines (76 loc) 2.78 kB
"use strict"; var __defProp = Object.defineProperty; var __getOwnPropDesc = Object.getOwnPropertyDescriptor; var __getOwnPropNames = Object.getOwnPropertyNames; var __hasOwnProp = Object.prototype.hasOwnProperty; var __export = (target, all) => { for (var name in all) __defProp(target, name, { get: all[name], enumerable: true }); }; var __copyProps = (to, from, except, desc) => { if (from && typeof from === "object" || typeof from === "function") { for (let key of __getOwnPropNames(from)) if (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); } return to; }; var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); var SelectTrigger_exports = {}; __export(SelectTrigger_exports, { createSelectTrigger: () => createSelectTrigger }); module.exports = __toCommonJS(SelectTrigger_exports); var import_jsx_runtime = require("react/jsx-runtime"); var import_react = require("react"); var import_context = require("./context"); var import_core = require("@crossed/core"); const createSelectTrigger = (StyledRoot) => ( // eslint-disable-next-line @typescript-eslint/ban-ts-comment // @ts-ignore (0, import_react.forwardRef)((props, ref) => { const { id, open, setOpen } = (0, import_context.useContext)(); const refInter = (0, import_react.useRef)(null); const openRef = (0, import_react.useRef)(open); (0, import_react.useEffect)(() => { var _a, _b; if (!open && openRef.current) { (_b = (_a = refInter.current) == null ? void 0 : _a.focus) == null ? void 0 : _b.call(_a); } }, [open]); (0, import_react.useEffect)(() => { openRef.current = open; }, [open]); return /* @__PURE__ */ (0, import_jsx_runtime.jsx)( StyledRoot, { "aria-haspopup": "menu", "aria-expanded": open.toString(), "aria-activedescendant": open ? id : void 0, "aria-controls": open ? id : void 0, id: `trigger-${id}`, ...props, onPress: (0, import_core.composeEventHandlers)(props.onPress, () => { setOpen(!open); }), onKeyDown: (0, import_core.composeEventHandlers)(props.onKeyDown, (e) => { e.preventDefault(); switch (e.code) { case "ArrowDown": case "ArrowUp": case "Space": case "Enter": setOpen(true); break; } }), ref: (0, import_core.composeRefs)(ref, refInter) } ); }) ); // Annotate the CommonJS export names for ESM import in node: 0 && (module.exports = { createSelectTrigger }); //# sourceMappingURL=SelectTrigger.js.map