@navikt/ds-react 6.14.0 → 6.15.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (84) hide show
  1. package/cjs/form/combobox/FilteredOptions/AddNewOption.d.ts +3 -0
  2. package/cjs/form/combobox/FilteredOptions/AddNewOption.js +41 -0
  3. package/cjs/form/combobox/FilteredOptions/AddNewOption.js.map +1 -0
  4. package/cjs/form/combobox/FilteredOptions/FilteredOptions.js +13 -57
  5. package/cjs/form/combobox/FilteredOptions/FilteredOptions.js.map +1 -1
  6. package/cjs/form/combobox/FilteredOptions/FilteredOptionsItem.d.ts +6 -0
  7. package/cjs/form/combobox/FilteredOptions/FilteredOptionsItem.js +43 -0
  8. package/cjs/form/combobox/FilteredOptions/FilteredOptionsItem.js.map +1 -0
  9. package/cjs/form/combobox/FilteredOptions/LoadingMessage.d.ts +3 -0
  10. package/cjs/form/combobox/FilteredOptions/LoadingMessage.js +16 -0
  11. package/cjs/form/combobox/FilteredOptions/LoadingMessage.js.map +1 -0
  12. package/cjs/form/combobox/FilteredOptions/MaxSelectedMessage.d.ts +3 -0
  13. package/cjs/form/combobox/FilteredOptions/MaxSelectedMessage.js +20 -0
  14. package/cjs/form/combobox/FilteredOptions/MaxSelectedMessage.js.map +1 -0
  15. package/cjs/form/combobox/FilteredOptions/NoSearchHitsMessage.d.ts +3 -0
  16. package/cjs/form/combobox/FilteredOptions/NoSearchHitsMessage.js +14 -0
  17. package/cjs/form/combobox/FilteredOptions/NoSearchHitsMessage.js.map +1 -0
  18. package/cjs/form/combobox/Input/Input.d.ts +1 -0
  19. package/cjs/form/combobox/Input/Input.js +3 -2
  20. package/cjs/form/combobox/Input/Input.js.map +1 -1
  21. package/cjs/form/combobox/Input/InputController.js +1 -1
  22. package/cjs/form/combobox/Input/InputController.js.map +1 -1
  23. package/cjs/overlays/floating-menu/Menu.d.ts +106 -0
  24. package/cjs/overlays/floating-menu/Menu.js +593 -0
  25. package/cjs/overlays/floating-menu/Menu.js.map +1 -0
  26. package/cjs/overlays/floating-menu/parts/FocusScope.d.ts +22 -0
  27. package/cjs/overlays/floating-menu/parts/FocusScope.js +89 -0
  28. package/cjs/overlays/floating-menu/parts/FocusScope.js.map +1 -0
  29. package/cjs/overlays/floating-menu/parts/RovingFocus.d.ts +9 -0
  30. package/cjs/overlays/floating-menu/parts/RovingFocus.js +112 -0
  31. package/cjs/overlays/floating-menu/parts/RovingFocus.js.map +1 -0
  32. package/cjs/overlays/floating-menu/parts/SlottedDivElement.d.ts +7 -0
  33. package/cjs/overlays/floating-menu/parts/SlottedDivElement.js +46 -0
  34. package/cjs/overlays/floating-menu/parts/SlottedDivElement.js.map +1 -0
  35. package/cjs/util/composeEventHandlers.d.ts +1 -1
  36. package/esm/form/combobox/FilteredOptions/AddNewOption.d.ts +3 -0
  37. package/esm/form/combobox/FilteredOptions/AddNewOption.js +36 -0
  38. package/esm/form/combobox/FilteredOptions/AddNewOption.js.map +1 -0
  39. package/esm/form/combobox/FilteredOptions/FilteredOptions.js +13 -57
  40. package/esm/form/combobox/FilteredOptions/FilteredOptions.js.map +1 -1
  41. package/esm/form/combobox/FilteredOptions/FilteredOptionsItem.d.ts +6 -0
  42. package/esm/form/combobox/FilteredOptions/FilteredOptionsItem.js +38 -0
  43. package/esm/form/combobox/FilteredOptions/FilteredOptionsItem.js.map +1 -0
  44. package/esm/form/combobox/FilteredOptions/LoadingMessage.d.ts +3 -0
  45. package/esm/form/combobox/FilteredOptions/LoadingMessage.js +11 -0
  46. package/esm/form/combobox/FilteredOptions/LoadingMessage.js.map +1 -0
  47. package/esm/form/combobox/FilteredOptions/MaxSelectedMessage.d.ts +3 -0
  48. package/esm/form/combobox/FilteredOptions/MaxSelectedMessage.js +15 -0
  49. package/esm/form/combobox/FilteredOptions/MaxSelectedMessage.js.map +1 -0
  50. package/esm/form/combobox/FilteredOptions/NoSearchHitsMessage.d.ts +3 -0
  51. package/esm/form/combobox/FilteredOptions/NoSearchHitsMessage.js +9 -0
  52. package/esm/form/combobox/FilteredOptions/NoSearchHitsMessage.js.map +1 -0
  53. package/esm/form/combobox/Input/Input.d.ts +1 -0
  54. package/esm/form/combobox/Input/Input.js +3 -2
  55. package/esm/form/combobox/Input/Input.js.map +1 -1
  56. package/esm/form/combobox/Input/InputController.js +1 -1
  57. package/esm/form/combobox/Input/InputController.js.map +1 -1
  58. package/esm/overlays/floating-menu/Menu.d.ts +106 -0
  59. package/esm/overlays/floating-menu/Menu.js +551 -0
  60. package/esm/overlays/floating-menu/Menu.js.map +1 -0
  61. package/esm/overlays/floating-menu/parts/FocusScope.d.ts +22 -0
  62. package/esm/overlays/floating-menu/parts/FocusScope.js +63 -0
  63. package/esm/overlays/floating-menu/parts/FocusScope.js.map +1 -0
  64. package/esm/overlays/floating-menu/parts/RovingFocus.d.ts +9 -0
  65. package/esm/overlays/floating-menu/parts/RovingFocus.js +86 -0
  66. package/esm/overlays/floating-menu/parts/RovingFocus.js.map +1 -0
  67. package/esm/overlays/floating-menu/parts/SlottedDivElement.d.ts +7 -0
  68. package/esm/overlays/floating-menu/parts/SlottedDivElement.js +20 -0
  69. package/esm/overlays/floating-menu/parts/SlottedDivElement.js.map +1 -0
  70. package/esm/util/composeEventHandlers.d.ts +1 -1
  71. package/package.json +3 -3
  72. package/src/form/combobox/FilteredOptions/AddNewOption.tsx +63 -0
  73. package/src/form/combobox/FilteredOptions/FilteredOptions.tsx +11 -121
  74. package/src/form/combobox/FilteredOptions/FilteredOptionsItem.tsx +73 -0
  75. package/src/form/combobox/FilteredOptions/LoadingMessage.tsx +20 -0
  76. package/src/form/combobox/FilteredOptions/MaxSelectedMessage.tsx +27 -0
  77. package/src/form/combobox/FilteredOptions/NoSearchHitsMessage.tsx +19 -0
  78. package/src/form/combobox/Input/Input.tsx +4 -2
  79. package/src/form/combobox/Input/InputController.tsx +1 -0
  80. package/src/overlays/floating-menu/Menu.tsx +1177 -0
  81. package/src/overlays/floating-menu/parts/FocusScope.tsx +84 -0
  82. package/src/overlays/floating-menu/parts/RovingFocus.tsx +121 -0
  83. package/src/overlays/floating-menu/parts/SlottedDivElement.tsx +17 -0
  84. package/src/util/composeEventHandlers.ts +1 -1
@@ -0,0 +1,593 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || function (mod) {
19
+ if (mod && mod.__esModule) return mod;
20
+ var result = {};
21
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
+ __setModuleDefault(result, mod);
23
+ return result;
24
+ };
25
+ var __rest = (this && this.__rest) || function (s, e) {
26
+ var t = {};
27
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
28
+ t[p] = s[p];
29
+ if (s != null && typeof Object.getOwnPropertySymbols === "function")
30
+ for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
31
+ if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
32
+ t[p[i]] = s[p[i]];
33
+ }
34
+ return t;
35
+ };
36
+ var __importDefault = (this && this.__importDefault) || function (mod) {
37
+ return (mod && mod.__esModule) ? mod : { "default": mod };
38
+ };
39
+ Object.defineProperty(exports, "__esModule", { value: true });
40
+ exports.MenuSubTrigger = exports.MenuSubContent = exports.MenuSub = exports.MenuSeparator = exports.MenuRadioItem = exports.MenuRadioGroup = exports.MenuPortal = exports.MenuItemIndicator = exports.MenuItem = exports.MenuGroup = exports.MenuContent = exports.MenuCheckboxItem = exports.MenuAnchor = exports.Menu = void 0;
41
+ const react_1 = __importStar(require("react"));
42
+ const react_dom_1 = __importDefault(require("react-dom"));
43
+ const portal_1 = require("../../portal");
44
+ const composeEventHandlers_1 = require("../../util/composeEventHandlers");
45
+ const create_context_1 = require("../../util/create-context");
46
+ const hooks_1 = require("../../util/hooks");
47
+ const useDescendant_1 = require("../../util/hooks/descendants/useDescendant");
48
+ const DismissableLayer_1 = require("../dismissablelayer/DismissableLayer");
49
+ const Floating_1 = require("../floating/Floating");
50
+ const FocusScope_1 = require("./parts/FocusScope");
51
+ const RovingFocus_1 = require("./parts/RovingFocus");
52
+ const SlottedDivElement_1 = require("./parts/SlottedDivElement");
53
+ /* -------------------------------------------------------------------------- */
54
+ /* Constants */
55
+ /* -------------------------------------------------------------------------- */
56
+ const SELECTION_KEYS = ["Enter", " "];
57
+ const SUB_OPEN_KEYS = [...SELECTION_KEYS, "ArrowRight"];
58
+ const SUB_CLOSE_KEYS = ["ArrowLeft"];
59
+ const FIRST_KEYS = ["ArrowDown", "PageUp", "Home"];
60
+ const LAST_KEYS = ["ArrowUp", "PageDown", "End"];
61
+ const FIRST_LAST_KEYS = [...FIRST_KEYS, ...LAST_KEYS];
62
+ const [MenuDescendantsProvider, useMenuDescendantsContext, useMenuDescendants, useMenuDescendant,] = (0, useDescendant_1.createDescendantContext)();
63
+ const [MenuProvider, useMenuContext] = (0, create_context_1.createContext)({
64
+ providerName: "MenuProvider",
65
+ hookName: "useMenuContext",
66
+ });
67
+ const [MenuRootProvider, useMenuRootContext] = (0, create_context_1.createContext)({
68
+ providerName: "MenuRootProvider",
69
+ hookName: "useMenuRootContext",
70
+ });
71
+ const MenuRoot = ({ open = false, children, onOpenChange, modal = true, }) => {
72
+ const [content, setContent] = (0, react_1.useState)(null);
73
+ const isUsingKeyboardRef = (0, react_1.useRef)(false);
74
+ const handleOpenChange = (0, hooks_1.useCallbackRef)(onOpenChange);
75
+ (0, react_1.useEffect)(() => {
76
+ const globalDocument = globalThis.document;
77
+ // Capturephase ensures we set the boolean before any side effects execute
78
+ // in response to the key or pointer event as they might depend on this value.
79
+ const handlePointer = () => {
80
+ isUsingKeyboardRef.current = false;
81
+ };
82
+ const handleKeyDown = () => {
83
+ isUsingKeyboardRef.current = true;
84
+ globalDocument.addEventListener("pointerdown", handlePointer, {
85
+ capture: true,
86
+ once: true,
87
+ });
88
+ globalDocument.addEventListener("pointermove", handlePointer, {
89
+ capture: true,
90
+ once: true,
91
+ });
92
+ };
93
+ globalDocument.addEventListener("keydown", handleKeyDown, {
94
+ capture: true,
95
+ });
96
+ return () => {
97
+ globalDocument.removeEventListener("keydown", handleKeyDown, {
98
+ capture: true,
99
+ });
100
+ globalDocument.removeEventListener("pointerdown", handlePointer, {
101
+ capture: true,
102
+ });
103
+ globalDocument.removeEventListener("pointermove", handlePointer, {
104
+ capture: true,
105
+ });
106
+ };
107
+ }, []);
108
+ return (react_1.default.createElement(Floating_1.Floating, null,
109
+ react_1.default.createElement(MenuProvider, { open: open, onOpenChange: handleOpenChange, content: content, onContentChange: setContent },
110
+ react_1.default.createElement(MenuRootProvider, { onClose: react_1.default.useCallback(() => handleOpenChange(false), [handleOpenChange]), isUsingKeyboardRef: isUsingKeyboardRef, modal: modal }, children))));
111
+ };
112
+ const Menu = MenuRoot;
113
+ exports.Menu = Menu;
114
+ const MenuAnchor = (0, react_1.forwardRef)((props, forwardedRef) => {
115
+ return react_1.default.createElement(Floating_1.Floating.Anchor, Object.assign({}, props, { ref: forwardedRef }));
116
+ });
117
+ exports.MenuAnchor = MenuAnchor;
118
+ const [MenuContentProvider, useMenuContentContext] = (0, create_context_1.createContext)({
119
+ providerName: "MenuContentProvider",
120
+ hookName: "useMenuContentContext",
121
+ });
122
+ const MenuContent = react_1.default.forwardRef((props, ref) => {
123
+ const descendants = useMenuDescendants();
124
+ const rootContext = useMenuRootContext();
125
+ return (react_1.default.createElement(MenuDescendantsProvider, { value: descendants }, rootContext.modal ? (react_1.default.createElement(MenuRootContentModal, Object.assign({}, props, { ref: ref }))) : (react_1.default.createElement(MenuRootContentNonModal, Object.assign({}, props, { ref: ref })))));
126
+ });
127
+ exports.MenuContent = MenuContent;
128
+ /* ---------------------------- Non-modal content --------------------------- */
129
+ const MenuRootContentNonModal = react_1.default.forwardRef((props, ref) => {
130
+ const context = useMenuContext();
131
+ return (react_1.default.createElement(MenuContentInternal, Object.assign({}, props, { ref: ref, disableOutsidePointerEvents: false, onDismiss: () => context.onOpenChange(false) })));
132
+ });
133
+ /* ------------------------------ Modal content ----------------------------- */
134
+ const MenuRootContentModal = (0, react_1.forwardRef)((props, ref) => {
135
+ const context = useMenuContext();
136
+ return (react_1.default.createElement(MenuContentInternal, Object.assign({}, props, { ref: ref,
137
+ // make sure to only disable pointer events when open
138
+ // this avoids blocking interactions while animating out
139
+ disableOutsidePointerEvents: context.open,
140
+ // When focus is trapped, a `focusout` event may still happen.
141
+ // We make sure we don't trigger our `onDismiss` in such case.
142
+ onFocusOutside: (0, composeEventHandlers_1.composeEventHandlers)(props.onFocusOutside, (event) => event.preventDefault(), { checkForDefaultPrevented: false }), onDismiss: () => context.onOpenChange(false) })));
143
+ });
144
+ const MenuContentInternal = (0, react_1.forwardRef)((_a, forwardedRef) => {
145
+ var { onOpenAutoFocus, onCloseAutoFocus, disableOutsidePointerEvents, onEntryFocus, onEscapeKeyDown, onPointerDownOutside, onFocusOutside, onInteractOutside, onDismiss } = _a, rest = __rest(_a, ["onOpenAutoFocus", "onCloseAutoFocus", "disableOutsidePointerEvents", "onEntryFocus", "onEscapeKeyDown", "onPointerDownOutside", "onFocusOutside", "onInteractOutside", "onDismiss"]);
146
+ const descendants = useMenuDescendantsContext();
147
+ const context = useMenuContext();
148
+ const rootContext = useMenuRootContext();
149
+ const contentRef = (0, react_1.useRef)(null);
150
+ const composedRefs = (0, hooks_1.useMergeRefs)(forwardedRef, contentRef, context.onContentChange);
151
+ const pointerGraceTimerRef = react_1.default.useRef(0);
152
+ const pointerGraceIntentRef = react_1.default.useRef(null);
153
+ const pointerDirRef = react_1.default.useRef("right");
154
+ const lastPointerXRef = react_1.default.useRef(0);
155
+ const isPointerMovingToSubmenu = react_1.default.useCallback((event) => {
156
+ var _a, _b;
157
+ const isMovingTowards = pointerDirRef.current === ((_a = pointerGraceIntentRef.current) === null || _a === void 0 ? void 0 : _a.side);
158
+ return (isMovingTowards &&
159
+ isPointerInGraceArea(event, (_b = pointerGraceIntentRef.current) === null || _b === void 0 ? void 0 : _b.area));
160
+ }, []);
161
+ return (react_1.default.createElement(MenuContentProvider, { onItemEnter: react_1.default.useCallback((event) => {
162
+ if (isPointerMovingToSubmenu(event))
163
+ event.preventDefault();
164
+ }, [isPointerMovingToSubmenu]), onItemLeave: react_1.default.useCallback((event) => {
165
+ var _a;
166
+ if (isPointerMovingToSubmenu(event))
167
+ return;
168
+ /**
169
+ * Resets focus from current active item to content area
170
+ * This is to prevent focus from being stuck on an item when we move pointer outside the menu or onto a disabled item
171
+ */
172
+ (_a = contentRef.current) === null || _a === void 0 ? void 0 : _a.focus();
173
+ }, [isPointerMovingToSubmenu]), onPointerLeaveTrigger: react_1.default.useCallback((event) => {
174
+ if (isPointerMovingToSubmenu(event))
175
+ event.preventDefault();
176
+ }, [isPointerMovingToSubmenu]), pointerGraceTimerRef: pointerGraceTimerRef, onPointerGraceIntentChange: react_1.default.useCallback((intent) => {
177
+ pointerGraceIntentRef.current = intent;
178
+ }, []) },
179
+ react_1.default.createElement(FocusScope_1.FocusScope, { onMountHandler: (0, composeEventHandlers_1.composeEventHandlers)(onOpenAutoFocus, (event) => {
180
+ var _a;
181
+ // when opening, explicitly focus the content area only and leave
182
+ // `onEntryFocus` in control of focusing first item
183
+ event.preventDefault();
184
+ (_a = contentRef.current) === null || _a === void 0 ? void 0 : _a.focus({ preventScroll: true });
185
+ }), onUnmountHandler: onCloseAutoFocus },
186
+ react_1.default.createElement(DismissableLayer_1.DismissableLayer, { asChild: true, disableOutsidePointerEvents: disableOutsidePointerEvents, onEscapeKeyDown: onEscapeKeyDown, onPointerDownOutside: onPointerDownOutside, onFocusOutside: onFocusOutside, onInteractOutside: onInteractOutside, onDismiss: onDismiss },
187
+ react_1.default.createElement(RovingFocus_1.RovingFocus, { asChild: true, descendants: descendants, onEntryFocus: (0, composeEventHandlers_1.composeEventHandlers)(onEntryFocus, (event) => {
188
+ // only focus first item when using keyboard
189
+ if (!rootContext.isUsingKeyboardRef.current)
190
+ event.preventDefault();
191
+ }) },
192
+ react_1.default.createElement(Floating_1.Floating.Content, Object.assign({ role: "menu", "aria-orientation": "vertical", "data-state": getOpenState(context.open), "data-aksel-menu-content": "", dir: "ltr" }, rest, { ref: composedRefs, style: Object.assign({ outline: "none" }, rest.style), onKeyDown: (0, composeEventHandlers_1.composeEventHandlers)(rest.onKeyDown, (event) => {
193
+ var _a, _b, _c, _d;
194
+ // submenu key events bubble through portals. We only care about keys in this menu.
195
+ const target = event.target;
196
+ const isKeyDownInside = target.closest("[data-aksel-menu-content]") ===
197
+ event.currentTarget;
198
+ if (isKeyDownInside) {
199
+ // menus should not be navigated using tab key so we prevent it
200
+ if (event.key === "Tab")
201
+ event.preventDefault();
202
+ }
203
+ // focus first/last item based on key pressed
204
+ const content = contentRef.current;
205
+ if (event.target !== content)
206
+ return;
207
+ if (!FIRST_LAST_KEYS.includes(event.key))
208
+ return;
209
+ event.preventDefault();
210
+ if (LAST_KEYS.includes(event.key)) {
211
+ (_b = (_a = descendants.lastEnabled()) === null || _a === void 0 ? void 0 : _a.node) === null || _b === void 0 ? void 0 : _b.focus();
212
+ return;
213
+ }
214
+ (_d = (_c = descendants.firstEnabled()) === null || _c === void 0 ? void 0 : _c.node) === null || _d === void 0 ? void 0 : _d.focus();
215
+ }), onPointerMove: (0, composeEventHandlers_1.composeEventHandlers)(rest.onPointerMove, whenMouse((event) => {
216
+ const target = event.target;
217
+ const pointerXHasChanged = lastPointerXRef.current !== event.clientX;
218
+ // We don't use `event.movementX` for this check because Safari will
219
+ // always return `0` on a pointer event.
220
+ if (event.currentTarget.contains(target) &&
221
+ pointerXHasChanged) {
222
+ const newDir = event.clientX > lastPointerXRef.current
223
+ ? "right"
224
+ : "left";
225
+ pointerDirRef.current = newDir;
226
+ lastPointerXRef.current = event.clientX;
227
+ }
228
+ })) })))))));
229
+ });
230
+ /* -------------------------------------------------------------------------- */
231
+ /* Menu item */
232
+ /* -------------------------------------------------------------------------- */
233
+ const ITEM_SELECT_EVENT = "menu.itemSelect";
234
+ const MenuItem = (0, react_1.forwardRef)((_a, forwardedRef) => {
235
+ var { disabled = false, onSelect, onClick, onPointerUp, onPointerDown, onKeyDown } = _a, rest = __rest(_a, ["disabled", "onSelect", "onClick", "onPointerUp", "onPointerDown", "onKeyDown"]);
236
+ const ref = (0, react_1.useRef)(null);
237
+ const rootContext = useMenuRootContext();
238
+ const composedRefs = (0, hooks_1.useMergeRefs)(forwardedRef, ref);
239
+ const isPointerDownRef = (0, react_1.useRef)(false);
240
+ const handleSelect = () => {
241
+ const menuItem = ref.current;
242
+ if (!disabled && menuItem && onSelect) {
243
+ const itemSelectEvent = new CustomEvent(ITEM_SELECT_EVENT, {
244
+ bubbles: true,
245
+ cancelable: true,
246
+ });
247
+ menuItem.addEventListener(ITEM_SELECT_EVENT, onSelect, { once: true });
248
+ /**
249
+ * We flush the event synchronously to ensure that the event is dispatched before other events react to side-effect from event.
250
+ * This is necessary to prevent the menu from potentially closing before we are able to prevent it.
251
+ */
252
+ react_dom_1.default.flushSync(() => menuItem.dispatchEvent(itemSelectEvent));
253
+ if (itemSelectEvent.defaultPrevented) {
254
+ isPointerDownRef.current = false;
255
+ }
256
+ else {
257
+ rootContext.onClose();
258
+ }
259
+ }
260
+ };
261
+ return (react_1.default.createElement(MenuItemInternal, Object.assign({}, rest, { tabIndex: disabled ? -1 : 0, ref: composedRefs, disabled: disabled, onClick: (0, composeEventHandlers_1.composeEventHandlers)(onClick, handleSelect), onPointerDown: (0, composeEventHandlers_1.composeEventHandlers)(onPointerDown, () => {
262
+ isPointerDownRef.current = true;
263
+ }, { checkForDefaultPrevented: false }), onPointerUp: (0, composeEventHandlers_1.composeEventHandlers)(onPointerUp, (event) => {
264
+ var _a;
265
+ // Pointer down can move to a different menu item which should activate it on pointer up.
266
+ // We dispatch a click for selection to allow composition with click based triggers and to
267
+ // prevent Firefox from getting stuck in text selection mode when the menu closes.
268
+ if (!isPointerDownRef.current)
269
+ (_a = event.currentTarget) === null || _a === void 0 ? void 0 : _a.click();
270
+ }), onKeyDown: (0, composeEventHandlers_1.composeEventHandlers)(onKeyDown, (event) => {
271
+ if (disabled) {
272
+ return;
273
+ }
274
+ if (SELECTION_KEYS.includes(event.key)) {
275
+ event.currentTarget.click();
276
+ /**
277
+ * We prevent default browser behaviour for selection keys as they should only trigger
278
+ * selection.
279
+ * - Prevents space from scrolling the page.
280
+ * - If keydown causes focus to move, prevents keydown from firing on the new target.
281
+ */
282
+ event.preventDefault();
283
+ }
284
+ }) })));
285
+ });
286
+ exports.MenuItem = MenuItem;
287
+ const MenuItemInternal = (0, react_1.forwardRef)((_a, forwardedRef) => {
288
+ var { disabled = false, onPointerMove, onPointerLeave } = _a, rest = __rest(_a, ["disabled", "onPointerMove", "onPointerLeave"]);
289
+ const { register } = useMenuDescendant({ disabled });
290
+ const contentContext = useMenuContentContext();
291
+ const ref = (0, react_1.useRef)(null);
292
+ const composedRefs = (0, hooks_1.useMergeRefs)(forwardedRef, ref, register);
293
+ return (react_1.default.createElement(SlottedDivElement_1.SlottedDivElement, Object.assign({ role: "menuitem", "aria-disabled": disabled || undefined, "data-disabled": disabled ? "" : undefined, tabIndex: -1 }, rest, { style: Object.assign({ userSelect: "none" }, rest === null || rest === void 0 ? void 0 : rest.style), ref: composedRefs,
294
+ /**
295
+ * We focus items on `pointerMove` make sure that the item is focused or re-focused
296
+ * when the mouse wiggles. If we used `mouseOver`/`mouseEnter` it would not re-focus.
297
+ * This is mostly to handle edgecases where the user uses mouse and keyboard together.
298
+ */
299
+ onPointerMove: (0, composeEventHandlers_1.composeEventHandlers)(onPointerMove, whenMouse((event) => {
300
+ if (disabled) {
301
+ /**
302
+ * In the edgecase the focus is still stuck on a previous item, we make sure to reset it
303
+ * even when the disabled item can't be focused itself to reset it.
304
+ */
305
+ contentContext.onItemLeave(event);
306
+ }
307
+ else {
308
+ contentContext.onItemEnter(event);
309
+ if (!event.defaultPrevented) {
310
+ event.currentTarget.focus();
311
+ }
312
+ }
313
+ })), onPointerLeave: (0, composeEventHandlers_1.composeEventHandlers)(onPointerLeave, whenMouse(contentContext.onItemLeave)) })));
314
+ });
315
+ const MenuGroup = (0, react_1.forwardRef)((props, ref) => {
316
+ return react_1.default.createElement(SlottedDivElement_1.SlottedDivElement, Object.assign({ role: "group" }, props, { ref: ref }));
317
+ });
318
+ exports.MenuGroup = MenuGroup;
319
+ const MenuPortal = (0, react_1.forwardRef)(({ children, rootElement }, ref) => {
320
+ const context = useMenuContext();
321
+ if (!context.open) {
322
+ return null;
323
+ }
324
+ return (react_1.default.createElement(portal_1.Portal, { asChild: true, rootElement: rootElement, ref: ref }, children));
325
+ });
326
+ exports.MenuPortal = MenuPortal;
327
+ /* -------------------------------------------------------------------------- */
328
+ /* Menu Radio */
329
+ /* -------------------------------------------------------------------------- */
330
+ const [RadioGroupProvider, useMenuRadioGroupContext] = (0, create_context_1.createContext)({
331
+ providerName: "MenuRadioGroupProvider",
332
+ hookName: "useMenuRadioGroupContext",
333
+ defaultValue: {
334
+ value: undefined,
335
+ onValueChange: () => { },
336
+ },
337
+ });
338
+ const MenuRadioGroup = react_1.default.forwardRef((_a, ref) => {
339
+ var { value, onValueChange } = _a, rest = __rest(_a, ["value", "onValueChange"]);
340
+ const handleValueChange = (0, hooks_1.useCallbackRef)(onValueChange);
341
+ return (react_1.default.createElement(RadioGroupProvider, { value: value, onValueChange: handleValueChange },
342
+ react_1.default.createElement(MenuGroup, Object.assign({}, rest, { ref: ref }))));
343
+ });
344
+ exports.MenuRadioGroup = MenuRadioGroup;
345
+ /* -------------------------------------------------------------------------- */
346
+ /* Menu Item Indicator */
347
+ /* -------------------------------------------------------------------------- */
348
+ const [MenuItemIndicatorProvider, useMenuItemIndicatorContext] = (0, create_context_1.createContext)({
349
+ providerName: "MenuItemIndicatorProvider",
350
+ hookName: "useMenuItemIndicatorContext",
351
+ });
352
+ const MenuItemIndicator = (0, react_1.forwardRef)((_a, ref) => {
353
+ var { asChild } = _a, rest = __rest(_a, ["asChild"]);
354
+ const ctx = useMenuItemIndicatorContext();
355
+ return (react_1.default.createElement(SlottedDivElement_1.SlottedDivElement, Object.assign({}, rest, { ref: ref, "data-state": getCheckedState(ctx.state), "aria-hidden": true, asChild: asChild })));
356
+ });
357
+ exports.MenuItemIndicator = MenuItemIndicator;
358
+ const MenuRadioItem = (0, react_1.forwardRef)((_a, forwardedRef) => {
359
+ var { value, onSelect } = _a, rest = __rest(_a, ["value", "onSelect"]);
360
+ const context = useMenuRadioGroupContext();
361
+ const checked = value === context.value;
362
+ return (react_1.default.createElement(MenuItemIndicatorProvider, { state: checked },
363
+ react_1.default.createElement(MenuItem, Object.assign({ role: "menuitemradio", "aria-checked": checked }, rest, { ref: forwardedRef, "data-state": getCheckedState(checked), onSelect: (0, composeEventHandlers_1.composeEventHandlers)(onSelect, () => { var _a; return (_a = context.onValueChange) === null || _a === void 0 ? void 0 : _a.call(context, value); }, { checkForDefaultPrevented: false }) }))));
364
+ });
365
+ exports.MenuRadioItem = MenuRadioItem;
366
+ const MenuCheckboxItem = (0, react_1.forwardRef)((_a, forwardedRef) => {
367
+ var { checked = false, onCheckedChange, onSelect } = _a, rest = __rest(_a, ["checked", "onCheckedChange", "onSelect"]);
368
+ return (react_1.default.createElement(MenuItemIndicatorProvider, { state: checked },
369
+ react_1.default.createElement(MenuItem, Object.assign({ role: "menuitemcheckbox", "aria-checked": isIndeterminate(checked) ? "mixed" : checked }, rest, { ref: forwardedRef, "data-state": getCheckedState(checked), onSelect: (0, composeEventHandlers_1.composeEventHandlers)(onSelect, () => onCheckedChange === null || onCheckedChange === void 0 ? void 0 : onCheckedChange(isIndeterminate(checked) ? true : !checked), { checkForDefaultPrevented: false }) }))));
370
+ });
371
+ exports.MenuCheckboxItem = MenuCheckboxItem;
372
+ const MenuSeparator = (0, react_1.forwardRef)((props, ref) => {
373
+ return (react_1.default.createElement(SlottedDivElement_1.SlottedDivElement, Object.assign({ role: "separator", "aria-orientation": "horizontal" }, props, { ref: ref })));
374
+ });
375
+ exports.MenuSeparator = MenuSeparator;
376
+ const [MenuSubProvider, useMenuSubContext] = (0, create_context_1.createContext)({
377
+ providerName: "MenuSubProvider",
378
+ hookName: "useMenuSubContext",
379
+ });
380
+ const MenuSub = ({ children, onOpenChange, open = false, }) => {
381
+ const parentMenuContext = useMenuContext();
382
+ const [trigger, setTrigger] = (0, react_1.useState)(null);
383
+ const [content, setContent] = (0, react_1.useState)(null);
384
+ const handleOpenChange = (0, hooks_1.useCallbackRef)(onOpenChange);
385
+ // Prevent the parent menu from reopening with open submenus.
386
+ (0, react_1.useEffect)(() => {
387
+ if (parentMenuContext.open === false) {
388
+ handleOpenChange(false);
389
+ }
390
+ return () => handleOpenChange(false);
391
+ }, [parentMenuContext.open, handleOpenChange]);
392
+ return (react_1.default.createElement(Floating_1.Floating, null,
393
+ react_1.default.createElement(MenuProvider, { open: open, onOpenChange: handleOpenChange, content: content, onContentChange: setContent },
394
+ react_1.default.createElement(MenuSubProvider, { contentId: (0, hooks_1.useId)(), triggerId: (0, hooks_1.useId)(), trigger: trigger, onTriggerChange: setTrigger }, children))));
395
+ };
396
+ exports.MenuSub = MenuSub;
397
+ const MenuSubTrigger = (0, react_1.forwardRef)((props, forwardedRef) => {
398
+ const context = useMenuContext();
399
+ const subContext = useMenuSubContext();
400
+ const contentContext = useMenuContentContext();
401
+ const openTimerRef = (0, react_1.useRef)(null);
402
+ const { pointerGraceTimerRef, onPointerGraceIntentChange } = contentContext;
403
+ const composedRefs = (0, hooks_1.useMergeRefs)(forwardedRef, subContext.onTriggerChange);
404
+ const clearOpenTimer = (0, react_1.useCallback)(() => {
405
+ if (openTimerRef.current) {
406
+ window.clearTimeout(openTimerRef.current);
407
+ }
408
+ openTimerRef.current = null;
409
+ }, []);
410
+ react_1.default.useEffect(() => clearOpenTimer, [clearOpenTimer]);
411
+ react_1.default.useEffect(() => {
412
+ const pointerGraceTimer = pointerGraceTimerRef.current;
413
+ return () => {
414
+ window.clearTimeout(pointerGraceTimer);
415
+ onPointerGraceIntentChange(null);
416
+ };
417
+ }, [pointerGraceTimerRef, onPointerGraceIntentChange]);
418
+ return (react_1.default.createElement(MenuAnchor, { asChild: true },
419
+ react_1.default.createElement(MenuItemInternal, Object.assign({ id: subContext.triggerId, "aria-haspopup": "menu", "aria-expanded": context.open, "aria-controls": subContext.contentId, "data-state": getOpenState(context.open) }, props, { ref: composedRefs,
420
+ /**
421
+ * onClick is added to solve edgecase where the user clicks the trigger,
422
+ * but the focus is outside browser-window or viewport at first.
423
+ */
424
+ onClick: (event) => {
425
+ var _a;
426
+ (_a = props.onClick) === null || _a === void 0 ? void 0 : _a.call(props, event);
427
+ if (props.disabled || event.defaultPrevented)
428
+ return;
429
+ event.currentTarget.focus();
430
+ if (!context.open)
431
+ context.onOpenChange(true);
432
+ }, onPointerMove: (0, composeEventHandlers_1.composeEventHandlers)(props.onPointerMove, whenMouse((event) => {
433
+ if (event.defaultPrevented)
434
+ return;
435
+ if (!props.disabled && !context.open && !openTimerRef.current) {
436
+ contentContext.onPointerGraceIntentChange(null);
437
+ openTimerRef.current = window.setTimeout(() => {
438
+ context.onOpenChange(true);
439
+ clearOpenTimer();
440
+ }, 100);
441
+ }
442
+ })), onPointerLeave: (0, composeEventHandlers_1.composeEventHandlers)(props.onPointerLeave, whenMouse((event) => {
443
+ var _a, _b;
444
+ clearOpenTimer();
445
+ const contentRect = (_a = context.content) === null || _a === void 0 ? void 0 : _a.getBoundingClientRect();
446
+ if (contentRect) {
447
+ const side = (_b = context.content) === null || _b === void 0 ? void 0 : _b.dataset.side;
448
+ const rightSide = side === "right";
449
+ const bleed = rightSide ? -5 : +5;
450
+ const contentNearEdge = contentRect[rightSide ? "left" : "right"];
451
+ const contentFarEdge = contentRect[rightSide ? "right" : "left"];
452
+ contentContext.onPointerGraceIntentChange({
453
+ area: [
454
+ // Apply a bleed on clientX to ensure that our exit point is
455
+ // consistently within polygon bounds
456
+ { x: event.clientX + bleed, y: event.clientY },
457
+ { x: contentNearEdge, y: contentRect.top },
458
+ { x: contentFarEdge, y: contentRect.top },
459
+ { x: contentFarEdge, y: contentRect.bottom },
460
+ { x: contentNearEdge, y: contentRect.bottom },
461
+ ],
462
+ side,
463
+ });
464
+ window.clearTimeout(pointerGraceTimerRef.current);
465
+ pointerGraceTimerRef.current = window.setTimeout(() => contentContext.onPointerGraceIntentChange(null), 300);
466
+ }
467
+ else {
468
+ contentContext.onPointerLeaveTrigger(event);
469
+ if (event.defaultPrevented)
470
+ return;
471
+ // There's 100ms where the user may leave an item before the submenu was opened.
472
+ contentContext.onPointerGraceIntentChange(null);
473
+ }
474
+ })), onKeyDown: (0, composeEventHandlers_1.composeEventHandlers)(props.onKeyDown, (event) => {
475
+ var _a;
476
+ if (props.disabled) {
477
+ return;
478
+ }
479
+ if (SUB_OPEN_KEYS.includes(event.key)) {
480
+ context.onOpenChange(true);
481
+ // The trigger may hold focus if opened via pointer interaction
482
+ // so we ensure content is given focus again when switching to keyboard.
483
+ (_a = context.content) === null || _a === void 0 ? void 0 : _a.focus();
484
+ // prevent window from scrolling
485
+ event.preventDefault();
486
+ }
487
+ }) }))));
488
+ });
489
+ exports.MenuSubTrigger = MenuSubTrigger;
490
+ const MenuSubContent = (0, react_1.forwardRef)((props, forwardedRef) => {
491
+ const descendants = useMenuDescendants();
492
+ const context = useMenuContext();
493
+ const rootContext = useMenuRootContext();
494
+ const subContext = useMenuSubContext();
495
+ const ref = (0, react_1.useRef)(null);
496
+ const composedRefs = (0, hooks_1.useMergeRefs)(forwardedRef, ref);
497
+ return (react_1.default.createElement(MenuDescendantsProvider, { value: descendants },
498
+ react_1.default.createElement(MenuContentInternal, Object.assign({ id: subContext.contentId, "aria-labelledby": subContext.triggerId }, props, { ref: composedRefs, align: "start", side: "right", disableOutsidePointerEvents: false, onOpenAutoFocus: (event) => {
499
+ var _a;
500
+ // when opening a submenu, focus content for keyboard users only
501
+ if (rootContext.isUsingKeyboardRef.current) {
502
+ (_a = ref.current) === null || _a === void 0 ? void 0 : _a.focus();
503
+ }
504
+ event.preventDefault();
505
+ },
506
+ // The menu might close because of focusing another menu item in the parent menu. We
507
+ // don't want it to refocus the trigger in that case so we handle trigger focus ourselves.
508
+ onCloseAutoFocus: (event) => event.preventDefault(), onFocusOutside: (0, composeEventHandlers_1.composeEventHandlers)(props.onFocusOutside, (event) => {
509
+ // We prevent closing when the trigger is focused to avoid triggering a re-open animation
510
+ // on pointer interaction.
511
+ if (event.target !== subContext.trigger)
512
+ context.onOpenChange(false);
513
+ }), onEscapeKeyDown: (0, composeEventHandlers_1.composeEventHandlers)(props.onEscapeKeyDown, (event) => {
514
+ rootContext.onClose();
515
+ // Ensure pressing escape in submenu doesn't escape full screen mode
516
+ event.preventDefault();
517
+ }), onKeyDown: (0, composeEventHandlers_1.composeEventHandlers)(props.onKeyDown, (event) => {
518
+ var _a, _b;
519
+ // Submenu key events bubble through portals. We only care about keys in this menu.
520
+ const isKeyDownInside = event.currentTarget.contains(event.target);
521
+ let isCloseKey = SUB_CLOSE_KEYS.includes(event.key);
522
+ /* When submenu opens to the left, we allow closing it with ArrowRight */
523
+ if (((_a = context.content) === null || _a === void 0 ? void 0 : _a.dataset.side) === "left") {
524
+ isCloseKey = isCloseKey || event.key === "ArrowRight";
525
+ }
526
+ if (isKeyDownInside && isCloseKey) {
527
+ context.onOpenChange(false);
528
+ // We focus manually because we prevented it in `onCloseAutoFocus`
529
+ (_b = subContext.trigger) === null || _b === void 0 ? void 0 : _b.focus();
530
+ // Prevent window from scrolling
531
+ event.preventDefault();
532
+ }
533
+ }) }))));
534
+ });
535
+ exports.MenuSubContent = MenuSubContent;
536
+ /* -------------------------------------------------------------------------- */
537
+ /* Utilities */
538
+ /* -------------------------------------------------------------------------- */
539
+ function getOpenState(open) {
540
+ return open ? "open" : "closed";
541
+ }
542
+ function isIndeterminate(checked) {
543
+ return checked === "indeterminate";
544
+ }
545
+ function getCheckedState(checked) {
546
+ return isIndeterminate(checked)
547
+ ? "indeterminate"
548
+ : checked
549
+ ? "checked"
550
+ : "unchecked";
551
+ }
552
+ /**
553
+ * Determine if a point is inside of a polygon.
554
+ */
555
+ function isPointInPolygon(point, polygon) {
556
+ const { x, y } = point;
557
+ let inside = false;
558
+ for (let i = 0, j = polygon.length - 1; i < polygon.length; j = i++) {
559
+ const xi = polygon[i].x;
560
+ const yi = polygon[i].y;
561
+ const xj = polygon[j].x;
562
+ const yj = polygon[j].y;
563
+ // prettier-ignore
564
+ const intersect = ((yi > y) !== (yj > y)) && (x < (xj - xi) * (y - yi) / (yj - yi) + xi);
565
+ if (intersect)
566
+ inside = !inside;
567
+ }
568
+ return inside;
569
+ }
570
+ function isPointerInGraceArea(event, area) {
571
+ if (!area)
572
+ return false;
573
+ const cursorPos = { x: event.clientX, y: event.clientY };
574
+ return isPointInPolygon(cursorPos, area);
575
+ }
576
+ function whenMouse(handler) {
577
+ return (event) => event.pointerType === "mouse" ? handler(event) : undefined;
578
+ }
579
+ /* -------------------------------------------------------------------------- */
580
+ Menu.Anchor = MenuAnchor;
581
+ Menu.Portal = MenuPortal;
582
+ Menu.Content = MenuContent;
583
+ Menu.Group = MenuGroup;
584
+ Menu.Item = MenuItem;
585
+ Menu.CheckboxItem = MenuCheckboxItem;
586
+ Menu.RadioGroup = MenuRadioGroup;
587
+ Menu.RadioItem = MenuRadioItem;
588
+ Menu.Separator = MenuSeparator;
589
+ Menu.Sub = MenuSub;
590
+ Menu.SubTrigger = MenuSubTrigger;
591
+ Menu.SubContent = MenuSubContent;
592
+ Menu.ItemIndicator = MenuItemIndicator;
593
+ //# sourceMappingURL=Menu.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Menu.js","sourceRoot":"","sources":["../../../src/overlays/floating-menu/Menu.tsx"],"names":[],"mappings":"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"}