@navikt/ds-react 7.33.0 → 7.33.2

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 (99) hide show
  1. package/cjs/date/datepicker/hooks/useRangeDatepicker.js +2 -2
  2. package/cjs/date/datepicker/hooks/useRangeDatepicker.js.map +1 -1
  3. package/cjs/form/combobox/FilteredOptions/FilteredOptions.js +0 -1
  4. package/cjs/form/combobox/FilteredOptions/FilteredOptions.js.map +1 -1
  5. package/cjs/overlays/action-menu/ActionMenu.js +2 -5
  6. package/cjs/overlays/action-menu/ActionMenu.js.map +1 -1
  7. package/cjs/overlays/dismissablelayer/DismissableLayer.d.ts +3 -30
  8. package/cjs/overlays/dismissablelayer/DismissableLayer.js +141 -134
  9. package/cjs/overlays/dismissablelayer/DismissableLayer.js.map +1 -1
  10. package/cjs/overlays/dismissablelayer/util/sort-layers.d.ts +18 -0
  11. package/cjs/overlays/dismissablelayer/util/sort-layers.js +51 -0
  12. package/cjs/overlays/dismissablelayer/util/sort-layers.js.map +1 -0
  13. package/cjs/overlays/floating-menu/Menu.d.ts +5 -7
  14. package/cjs/overlays/floating-menu/Menu.js +7 -15
  15. package/cjs/overlays/floating-menu/Menu.js.map +1 -1
  16. package/cjs/popover/Popover.js +0 -1
  17. package/cjs/popover/Popover.js.map +1 -1
  18. package/cjs/portal/Portal.d.ts +1 -3
  19. package/cjs/portal/Portal.js +49 -17
  20. package/cjs/portal/Portal.js.map +1 -1
  21. package/cjs/timeline/Timeline.d.ts +1 -1
  22. package/cjs/timeline/Timeline.js +1 -1
  23. package/cjs/timeline/Timeline.js.map +1 -1
  24. package/cjs/timeline/index.d.ts +1 -1
  25. package/cjs/timeline/index.js +1 -1
  26. package/cjs/timeline/index.js.map +1 -1
  27. package/cjs/timeline/pin/Pin.d.ts +9 -0
  28. package/cjs/timeline/pin/Pin.js +68 -0
  29. package/cjs/timeline/pin/Pin.js.map +1 -0
  30. package/cjs/timeline/pin/PinInternal.d.ts +13 -0
  31. package/cjs/timeline/{Pin.js → pin/PinInternal.js} +9 -10
  32. package/cjs/timeline/pin/PinInternal.js.map +1 -0
  33. package/cjs/tooltip/Tooltip.js +23 -22
  34. package/cjs/tooltip/Tooltip.js.map +1 -1
  35. package/cjs/util/focus-boundary/FocusBoundary.d.ts +19 -10
  36. package/cjs/util/focus-boundary/FocusBoundary.js +107 -63
  37. package/cjs/util/focus-boundary/FocusBoundary.js.map +1 -1
  38. package/cjs/util/hooks/useScrollLock.js +17 -3
  39. package/cjs/util/hooks/useScrollLock.js.map +1 -1
  40. package/esm/date/datepicker/hooks/useRangeDatepicker.js +2 -2
  41. package/esm/date/datepicker/hooks/useRangeDatepicker.js.map +1 -1
  42. package/esm/form/combobox/FilteredOptions/FilteredOptions.js +0 -1
  43. package/esm/form/combobox/FilteredOptions/FilteredOptions.js.map +1 -1
  44. package/esm/overlays/action-menu/ActionMenu.js +2 -5
  45. package/esm/overlays/action-menu/ActionMenu.js.map +1 -1
  46. package/esm/overlays/dismissablelayer/DismissableLayer.d.ts +3 -30
  47. package/esm/overlays/dismissablelayer/DismissableLayer.js +140 -132
  48. package/esm/overlays/dismissablelayer/DismissableLayer.js.map +1 -1
  49. package/esm/overlays/dismissablelayer/util/sort-layers.d.ts +18 -0
  50. package/esm/overlays/dismissablelayer/util/sort-layers.js +49 -0
  51. package/esm/overlays/dismissablelayer/util/sort-layers.js.map +1 -0
  52. package/esm/overlays/floating-menu/Menu.d.ts +5 -7
  53. package/esm/overlays/floating-menu/Menu.js +7 -15
  54. package/esm/overlays/floating-menu/Menu.js.map +1 -1
  55. package/esm/popover/Popover.js +0 -1
  56. package/esm/popover/Popover.js.map +1 -1
  57. package/esm/portal/Portal.d.ts +1 -3
  58. package/esm/portal/Portal.js +50 -18
  59. package/esm/portal/Portal.js.map +1 -1
  60. package/esm/timeline/Timeline.d.ts +1 -1
  61. package/esm/timeline/Timeline.js +1 -1
  62. package/esm/timeline/Timeline.js.map +1 -1
  63. package/esm/timeline/index.d.ts +1 -1
  64. package/esm/timeline/index.js +1 -1
  65. package/esm/timeline/index.js.map +1 -1
  66. package/esm/timeline/pin/Pin.d.ts +9 -0
  67. package/esm/timeline/pin/Pin.js +29 -0
  68. package/esm/timeline/pin/Pin.js.map +1 -0
  69. package/esm/timeline/pin/PinInternal.d.ts +13 -0
  70. package/esm/timeline/{Pin.js → pin/PinInternal.js} +8 -9
  71. package/esm/timeline/pin/PinInternal.js.map +1 -0
  72. package/esm/tooltip/Tooltip.js +23 -22
  73. package/esm/tooltip/Tooltip.js.map +1 -1
  74. package/esm/util/focus-boundary/FocusBoundary.d.ts +19 -10
  75. package/esm/util/focus-boundary/FocusBoundary.js +108 -64
  76. package/esm/util/focus-boundary/FocusBoundary.js.map +1 -1
  77. package/esm/util/hooks/useScrollLock.js +17 -3
  78. package/esm/util/hooks/useScrollLock.js.map +1 -1
  79. package/package.json +3 -3
  80. package/src/date/datepicker/hooks/useRangeDatepicker.tsx +4 -2
  81. package/src/form/combobox/FilteredOptions/FilteredOptions.tsx +0 -1
  82. package/src/overlays/action-menu/ActionMenu.tsx +2 -4
  83. package/src/overlays/dismissablelayer/DismissableLayer.tsx +219 -194
  84. package/src/overlays/dismissablelayer/util/sort-layers.test.ts +128 -0
  85. package/src/overlays/dismissablelayer/util/sort-layers.ts +61 -0
  86. package/src/overlays/floating-menu/Menu.tsx +11 -21
  87. package/src/popover/Popover.tsx +0 -1
  88. package/src/portal/Portal.tsx +89 -31
  89. package/src/timeline/Timeline.tsx +1 -1
  90. package/src/timeline/index.ts +1 -1
  91. package/src/timeline/pin/Pin.tsx +33 -0
  92. package/src/timeline/{Pin.tsx → pin/PinInternal.tsx} +8 -18
  93. package/src/tooltip/Tooltip.tsx +4 -4
  94. package/src/util/focus-boundary/FocusBoundary.tsx +164 -93
  95. package/src/util/hooks/useScrollLock.ts +22 -3
  96. package/cjs/timeline/Pin.d.ts +0 -17
  97. package/cjs/timeline/Pin.js.map +0 -1
  98. package/esm/timeline/Pin.d.ts +0 -17
  99. package/esm/timeline/Pin.js.map +0 -1
@@ -6,18 +6,10 @@ import React, {
6
6
  useState,
7
7
  } from "react";
8
8
  import { Slot } from "../../slot/Slot";
9
- import { useMergeRefs } from "../../util/hooks";
10
- import { useEventCallback } from "../hooks/useEventCallback";
11
-
12
- const AUTOFOCUS_ON_MOUNT = "focusBoundary.autoFocusOnMount";
13
- const AUTOFOCUS_ON_UNMOUNT = "focusBoundary.autoFocusOnUnmount";
14
- const EVENT_OPTIONS = { bubbles: false, cancelable: true };
15
-
16
- /* TODO: Regular story */
17
- /**
18
- * TODO:
19
- * - owner(container) for corrent document
20
- */
9
+ import { useClientLayoutEffect, useMergeRefs } from "../../util/hooks";
10
+ import { hideNonTargetElements } from "../hideNonTargetElements";
11
+ import { useLatestRef } from "../hooks/useLatestRef";
12
+ import { ownerDocument } from "../owner";
21
13
 
22
14
  /* -------------------------------------------------------------------------- */
23
15
  /* FocusBoundary */
@@ -48,15 +40,31 @@ interface FocusBoundaryProps extends React.HTMLAttributes<HTMLDivElement> {
48
40
  */
49
41
  trapped?: boolean;
50
42
  /**
51
- * Event handler called when auto-focusing on mount.
52
- * Can be prevented.
43
+ * Will try to focus the given element on mount.
44
+ *
45
+ * If not provided, FocusBoundary will try to focus the first
46
+ * tabbable element inside the boundary.
47
+ *
48
+ * Set to `false` to not focus anything.
53
49
  */
54
- onMountAutoFocus?: (event: Event) => void;
50
+ initialFocus?:
51
+ | boolean
52
+ | React.MutableRefObject<HTMLElement | null>
53
+ | (() => boolean | HTMLElement | null | undefined);
55
54
  /**
56
- * Event handler called when auto-focusing on unmount.
57
- * Can be prevented.
55
+ * Will try to focus the given element on unmount.
56
+ *
57
+ * If not provided, FocusBoundary will try to focus the element
58
+ * that was focused before the FocusBoundary mounted.
59
+ *
60
+ * Set to `false` to not focus anything.
58
61
  */
59
- onUnmountAutoFocus?: (event: Event) => void;
62
+ returnFocus?: boolean | React.MutableRefObject<HTMLElement | null>;
63
+ /**
64
+ * Hides all outside content from screen readers when true.
65
+ * @default false
66
+ */
67
+ modal?: boolean;
60
68
  }
61
69
 
62
70
  const FocusBoundary = forwardRef<HTMLDivElement, FocusBoundaryProps>(
@@ -64,14 +72,15 @@ const FocusBoundary = forwardRef<HTMLDivElement, FocusBoundaryProps>(
64
72
  {
65
73
  loop = false,
66
74
  trapped = false,
67
- onMountAutoFocus: onMountAutoFocusProp,
68
- onUnmountAutoFocus: onUnmountAutoFocusProp,
75
+ initialFocus = true,
76
+ returnFocus = true,
77
+ modal = false,
69
78
  ...restProps
70
79
  }: FocusBoundaryProps,
71
80
  forwardedRef,
72
81
  ) => {
73
- const onMountAutoFocus = useEventCallback(onMountAutoFocusProp);
74
- const onUnmountAutoFocus = useEventCallback(onUnmountAutoFocusProp);
82
+ const initialFocusRef = useLatestRef(initialFocus);
83
+ const returnFocusRef = useLatestRef(returnFocus);
75
84
 
76
85
  const lastFocusedElementRef = useRef<HTMLElement | null>(null);
77
86
  const [container, setContainer] = useState<HTMLElement | null>(null);
@@ -166,88 +175,127 @@ const FocusBoundary = forwardRef<HTMLDivElement, FocusBoundaryProps>(
166
175
  };
167
176
  }, [trapped, container, focusBoundary.paused]);
168
177
 
169
- /* Handles autofocus on mount and unmount */
178
+ /* Adds element to focus-stack */
170
179
  useEffect(() => {
171
180
  if (!container) {
172
181
  return;
173
182
  }
174
183
 
175
184
  focusBoundarysStack.add(focusBoundary);
176
- const initialFocusedElement =
177
- document.activeElement as HTMLElement | null;
178
- const containsActiveElement =
179
- initialFocusedElement && container.contains(initialFocusedElement);
180
-
181
- /*
182
- * We only autofocus on mount if container does not contain active element.
183
- * If container has an element with `autoFocus` attribute, browser will
184
- * have already moved focus there before this effect runs.
185
- */
186
- if (!containsActiveElement) {
187
- const mountEvent = new CustomEvent(AUTOFOCUS_ON_MOUNT, EVENT_OPTIONS);
188
- container.addEventListener(AUTOFOCUS_ON_MOUNT, onMountAutoFocus);
189
- container.dispatchEvent(mountEvent);
190
185
 
191
- /* If consumer does not manually prevent event and handle focus themselves */
192
- if (!mountEvent.defaultPrevented) {
193
- /**
194
- * Attempts focusing the first element in a list of candidates.
195
- * Stops when focus has actually moved.
196
- */
197
- const candidates = removeLinks(getTabbableCandidates(container));
198
- const previouslyFocusedElement = document.activeElement;
199
- for (const candidate of candidates) {
200
- focus(candidate, { select: true });
201
- if (document.activeElement !== previouslyFocusedElement) {
202
- break;
203
- }
204
- }
186
+ return () => {
187
+ setTimeout(() => {
188
+ focusBoundarysStack.remove(focusBoundary);
189
+ }, 0);
190
+ };
191
+ }, [container, focusBoundary]);
205
192
 
206
- /* focusFirst might not find any candidates, so we fall back to focusing container */
207
- if (document.activeElement === initialFocusedElement) {
208
- focus(container);
209
- }
193
+ useEffect(() => {
194
+ if (!container || !modal) {
195
+ return;
196
+ }
197
+
198
+ return hideNonTargetElements([container]);
199
+ }, [container, modal]);
200
+
201
+ /* Handles mount focus */
202
+ useClientLayoutEffect(() => {
203
+ if (!container || initialFocusRef.current === false) {
204
+ return;
205
+ }
206
+
207
+ const ownerDoc = ownerDocument(container);
208
+ const previouslyFocusedElement = ownerDoc.activeElement;
209
+
210
+ queueMicrotask(() => {
211
+ const focusableElements = removeLinks(getTabbableCandidates(container));
212
+ const initialFocusValueOrFn = initialFocusRef.current;
213
+ const resolvedInitialFocus =
214
+ typeof initialFocusValueOrFn === "function"
215
+ ? initialFocusValueOrFn()
216
+ : initialFocusValueOrFn;
217
+
218
+ if (
219
+ resolvedInitialFocus === undefined ||
220
+ resolvedInitialFocus === false
221
+ ) {
222
+ return;
223
+ }
224
+
225
+ let elToFocus: HTMLElement | null | undefined;
226
+ const fallbackelements = focusableElements[0] || container;
227
+
228
+ /* `null` should fallback to default behavior in case of an empty ref. */
229
+ if (resolvedInitialFocus === true || resolvedInitialFocus === null) {
230
+ elToFocus = fallbackelements;
231
+ } else {
232
+ elToFocus = resolveRef(resolvedInitialFocus) || fallbackelements;
233
+ }
234
+
235
+ const focusAlreadyInsideFloatingEl = container.contains(
236
+ previouslyFocusedElement,
237
+ );
238
+
239
+ if (focusAlreadyInsideFloatingEl) {
240
+ return;
210
241
  }
242
+
243
+ focus(elToFocus, {
244
+ preventScroll: elToFocus === container,
245
+ sync: false,
246
+ });
247
+ });
248
+ }, [container, initialFocusRef]);
249
+
250
+ /* Handles unmount focus */
251
+ useClientLayoutEffect(() => {
252
+ if (!container) {
253
+ return;
211
254
  }
255
+ const ownerDoc = ownerDocument(container);
256
+ const previouslyFocusedElement = ownerDoc.activeElement;
212
257
 
213
- return () => {
214
- container.removeEventListener(AUTOFOCUS_ON_MOUNT, onMountAutoFocus);
258
+ function getReturnElement() {
259
+ let resolvedReturnFocusValue = returnFocusRef.current;
215
260
 
216
- /**
217
- * https://github.com/facebook/react/issues/17894
218
- * We delay to next tick to avoid issues with React's event system
219
- * where calling `focus` inside a effect cleanup causes React to not call onFocus handlers.
220
- */
221
- setTimeout(() => {
222
- const unmountEvent = new CustomEvent(
223
- AUTOFOCUS_ON_UNMOUNT,
224
- EVENT_OPTIONS,
225
- );
226
- container.addEventListener(AUTOFOCUS_ON_UNMOUNT, onUnmountAutoFocus);
227
- container.dispatchEvent(unmountEvent);
228
-
229
- /* If consumer does not manually prevent event and handle focus themselves */
230
- if (!unmountEvent.defaultPrevented) {
231
- /* To avoid CPU-spikes on Chrome, we make sure element is still connected to the DOM. */
232
- focus(
233
- initialFocusedElement?.isConnected
234
- ? initialFocusedElement
235
- : document.body,
236
- {
237
- select: true,
238
- },
239
- );
240
- }
241
- /* Since this is inside a cleanup, we need to instantly remove the listener ourselves */
242
- container.removeEventListener(
243
- AUTOFOCUS_ON_UNMOUNT,
244
- onUnmountAutoFocus,
245
- );
261
+ if (
262
+ resolvedReturnFocusValue === undefined ||
263
+ resolvedReturnFocusValue === false
264
+ ) {
265
+ return null;
266
+ }
246
267
 
247
- focusBoundarysStack.remove(focusBoundary);
248
- }, 0);
268
+ /* `null` should fallback to default behavior in case of an empty ref. */
269
+ if (resolvedReturnFocusValue === null) {
270
+ resolvedReturnFocusValue = true;
271
+ }
272
+
273
+ if (typeof resolvedReturnFocusValue === "boolean") {
274
+ const el = previouslyFocusedElement;
275
+ return el?.isConnected ? el : ownerDoc.body;
276
+ }
277
+
278
+ const fallback = previouslyFocusedElement || ownerDoc.body;
279
+
280
+ return resolveRef(resolvedReturnFocusValue) || fallback;
281
+ }
282
+
283
+ return () => {
284
+ const returnElement = getReturnElement() as HTMLElement | null;
285
+ const activeEl = ownerDoc.activeElement;
286
+
287
+ queueMicrotask(() => {
288
+ if (
289
+ // eslint-disable-next-line react-hooks/exhaustive-deps
290
+ returnFocusRef.current &&
291
+ returnElement &&
292
+ returnElement !== activeEl
293
+ ) {
294
+ returnElement.focus({ preventScroll: true });
295
+ }
296
+ });
249
297
  };
250
- }, [container, onMountAutoFocus, onUnmountAutoFocus, focusBoundary]);
298
+ }, [container, returnFocusRef]);
251
299
 
252
300
  /* Takes care of looping focus */
253
301
  const handleKeyDown = useCallback(
@@ -387,14 +435,25 @@ function isHidden(node: HTMLElement, { upTo }: { upTo?: HTMLElement }) {
387
435
  return false;
388
436
  }
389
437
 
390
- function focus(element?: HTMLElement | null, { select = false } = {}) {
438
+ let rafId = 0;
439
+ function focus(
440
+ element?: HTMLElement | null,
441
+ { select = false, preventScroll = true, sync = true } = {},
442
+ ) {
391
443
  if (!element?.focus) {
392
444
  return;
393
445
  }
394
446
 
395
447
  const previouslyFocusedElement = document.activeElement;
396
- /* Prevent scrolling on focus, to minimize jarring transitions */
397
- element.focus({ preventScroll: true });
448
+
449
+ cancelAnimationFrame(rafId);
450
+ const exec = () => element.focus({ preventScroll });
451
+
452
+ if (sync) {
453
+ exec();
454
+ } else {
455
+ rafId = requestAnimationFrame(exec);
456
+ }
398
457
 
399
458
  if (!select) {
400
459
  return;
@@ -449,5 +508,17 @@ function removeLinks(items: HTMLElement[]) {
449
508
  return items.filter((item) => item.tagName !== "A");
450
509
  }
451
510
 
511
+ /**
512
+ * If the provided argument is a ref object, returns its `current` value.
513
+ * Otherwise, returns the argument itself.
514
+ *
515
+ * Non-generic to safely handle refs whose `.current` may be `null`.
516
+ */
517
+ function resolveRef(
518
+ maybeRef: HTMLElement | React.RefObject<HTMLElement | null | undefined>,
519
+ ): HTMLElement | null | undefined {
520
+ return "current" in maybeRef ? maybeRef.current : maybeRef;
521
+ }
522
+
452
523
  export { FocusBoundary };
453
524
  export type { FocusBoundaryProps };
@@ -19,11 +19,20 @@ function hasInsetScrollbars(referenceElement: Element | null) {
19
19
  function preventScrollBasic(referenceElement: Element | null) {
20
20
  const doc = ownerDocument(referenceElement);
21
21
  const html = doc.documentElement;
22
- const originalOverflow = html.style.overflow;
23
- html.style.overflow = "hidden";
22
+ const body = doc.body;
23
+
24
+ /**
25
+ * If an `overflow` style is present on <html>, we need to lock it, because a lock on <body>
26
+ * won't have any effect.
27
+ * But if <body> has an `overflow` style (like `overflow-x: hidden`), we need to lock it
28
+ * instead, as sticky elements shift otherwise.
29
+ */
30
+ const elementToLock = isOverflowElement(html) ? html : body;
31
+ const originalOverflow = elementToLock.style.overflow;
32
+ elementToLock.style.overflow = "hidden";
24
33
 
25
34
  return () => {
26
- html.style.overflow = originalOverflow;
35
+ elementToLock.style.overflow = originalOverflow;
27
36
  };
28
37
  }
29
38
 
@@ -314,4 +323,14 @@ function useScrollLock(params: {
314
323
  }, [enabled, referenceElement]);
315
324
  }
316
325
 
326
+ const invalidOverflowDisplayValues = new Set(["inline", "contents"]);
327
+
328
+ function isOverflowElement(element: Element): boolean {
329
+ const { overflow, overflowX, overflowY, display } = getComputedStyle(element);
330
+ return (
331
+ /auto|scroll|overlay|hidden|clip/.test(overflow + overflowY + overflowX) &&
332
+ !invalidOverflowDisplayValues.has(display)
333
+ );
334
+ }
335
+
317
336
  export { useScrollLock };
@@ -1,17 +0,0 @@
1
- import React from "react";
2
- import { TimelineComponentTypes } from "./utils/types.internal";
3
- export interface TimelinePinProps extends React.HTMLAttributes<HTMLButtonElement> {
4
- /**
5
- * Date position for the pin.
6
- */
7
- date: Date;
8
- /**
9
- * Content in Pin Popover.
10
- */
11
- children?: React.ReactNode;
12
- }
13
- export interface PinType extends React.ForwardRefExoticComponent<TimelinePinProps & React.RefAttributes<HTMLButtonElement>> {
14
- componentType: TimelineComponentTypes;
15
- }
16
- export declare const Pin: PinType;
17
- export default Pin;
@@ -1 +0,0 @@
1
- {"version":3,"file":"Pin.js","sourceRoot":"","sources":["../../src/timeline/Pin.tsx"],"names":[],"mappings":"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"}
@@ -1,17 +0,0 @@
1
- import React from "react";
2
- import { TimelineComponentTypes } from "./utils/types.internal.js";
3
- export interface TimelinePinProps extends React.HTMLAttributes<HTMLButtonElement> {
4
- /**
5
- * Date position for the pin.
6
- */
7
- date: Date;
8
- /**
9
- * Content in Pin Popover.
10
- */
11
- children?: React.ReactNode;
12
- }
13
- export interface PinType extends React.ForwardRefExoticComponent<TimelinePinProps & React.RefAttributes<HTMLButtonElement>> {
14
- componentType: TimelineComponentTypes;
15
- }
16
- export declare const Pin: PinType;
17
- export default Pin;
@@ -1 +0,0 @@
1
- {"version":3,"file":"Pin.js","sourceRoot":"","sources":["../../src/timeline/Pin.tsx"],"names":[],"mappings":"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"}