@navikt/ds-react 7.30.1 → 7.32.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 (174) hide show
  1. package/cjs/chat/Chat.d.ts +1 -1
  2. package/cjs/chat/Chat.js.map +1 -1
  3. package/cjs/copybutton/CopyButton.js +1 -1
  4. package/cjs/copybutton/CopyButton.js.map +1 -1
  5. package/cjs/form/checkbox/Checkbox.js +1 -1
  6. package/cjs/form/checkbox/Checkbox.js.map +1 -1
  7. package/cjs/form/combobox/Combobox.js +15 -13
  8. package/cjs/form/combobox/Combobox.js.map +1 -1
  9. package/cjs/form/combobox/FilteredOptions/FilteredOptions.js +53 -3
  10. package/cjs/form/combobox/FilteredOptions/FilteredOptions.js.map +1 -1
  11. package/cjs/form/combobox/FilteredOptions/useVirtualFocus.js.map +1 -1
  12. package/cjs/form/combobox/Input/Input.context.d.ts +2 -2
  13. package/cjs/form/combobox/Input/InputController.js +15 -14
  14. package/cjs/form/combobox/Input/InputController.js.map +1 -1
  15. package/cjs/form/file-upload/useFileUpload.d.ts +1 -1
  16. package/cjs/form/radio/Radio.js +1 -1
  17. package/cjs/form/radio/Radio.js.map +1 -1
  18. package/cjs/form/useFormField.js.map +1 -1
  19. package/cjs/modal/ModalUtils.d.ts +2 -2
  20. package/cjs/modal/ModalUtils.js.map +1 -1
  21. package/cjs/overlays/dismissablelayer/DismissableLayer.d.ts +1 -1
  22. package/cjs/overlays/floating/Floating.d.ts +11 -0
  23. package/cjs/overlays/floating/Floating.js +32 -8
  24. package/cjs/overlays/floating/Floating.js.map +1 -1
  25. package/cjs/overlays/overlay/hooks/useAnimationsFinished.d.ts +27 -0
  26. package/cjs/overlays/overlay/hooks/useAnimationsFinished.js +138 -0
  27. package/cjs/overlays/overlay/hooks/useAnimationsFinished.js.map +1 -0
  28. package/cjs/overlays/overlay/hooks/useEventCallback.d.ts +6 -0
  29. package/cjs/overlays/overlay/hooks/useEventCallback.js +89 -0
  30. package/cjs/overlays/overlay/hooks/useEventCallback.js.map +1 -0
  31. package/cjs/overlays/overlay/hooks/useLatestRef.d.ts +5 -0
  32. package/cjs/overlays/overlay/hooks/useLatestRef.js +23 -0
  33. package/cjs/overlays/overlay/hooks/useLatestRef.js.map +1 -0
  34. package/cjs/overlays/overlay/hooks/useOpenChangeAnimationComplete.d.ts +31 -0
  35. package/cjs/overlays/overlay/hooks/useOpenChangeAnimationComplete.js +35 -0
  36. package/cjs/overlays/overlay/hooks/useOpenChangeAnimationComplete.js.map +1 -0
  37. package/cjs/overlays/overlay/hooks/useRefWithInit.d.ts +7 -0
  38. package/cjs/overlays/overlay/hooks/useRefWithInit.js +14 -0
  39. package/cjs/overlays/overlay/hooks/useRefWithInit.js.map +1 -0
  40. package/cjs/overlays/overlay/hooks/useTransitionStatus.d.ts +38 -0
  41. package/cjs/overlays/overlay/hooks/useTransitionStatus.js +118 -0
  42. package/cjs/overlays/overlay/hooks/useTransitionStatus.js.map +1 -0
  43. package/cjs/progress-bar/ProgressBar.js +1 -1
  44. package/cjs/progress-bar/ProgressBar.js.map +1 -1
  45. package/cjs/read-more/ReadMore.d.ts +2 -9
  46. package/cjs/read-more/ReadMore.js +1 -8
  47. package/cjs/read-more/ReadMore.js.map +1 -1
  48. package/cjs/table/AnimateHeight.js +2 -2
  49. package/cjs/table/AnimateHeight.js.map +1 -1
  50. package/cjs/table/ExpandableRow.d.ts +1 -1
  51. package/cjs/table/ExpandableRow.js +2 -10
  52. package/cjs/table/ExpandableRow.js.map +1 -1
  53. package/cjs/table/Row.d.ts +7 -0
  54. package/cjs/table/Row.js +13 -2
  55. package/cjs/table/Row.js.map +1 -1
  56. package/cjs/table/Table.utils.d.ts +9 -0
  57. package/cjs/table/Table.utils.js +57 -0
  58. package/cjs/table/Table.utils.js.map +1 -0
  59. package/cjs/tabs/Tabs.context.d.ts +1 -1
  60. package/cjs/tabs/parts/tab/useTab.d.ts +1 -1
  61. package/cjs/tabs/parts/tablist/useScrollButtons.d.ts +1 -1
  62. package/cjs/tabs/parts/tablist/useScrollButtons.js.map +1 -1
  63. package/cjs/toggle-group/ToggleGroup.context.d.ts +1 -1
  64. package/cjs/toggle-group/parts/useToggleItem.d.ts +1 -1
  65. package/cjs/util/hooks/descendants/useDescendant.d.ts +1 -1
  66. package/cjs/util/hooks/useMergeRefs.d.ts +3 -3
  67. package/cjs/util/hooks/useMergeRefs.js +3 -3
  68. package/cjs/util/hooks/useMergeRefs.js.map +1 -1
  69. package/cjs/util/renderStoriesForChromatic.d.ts +2 -2
  70. package/cjs/util/renderStoriesForChromatic.js +2 -2
  71. package/cjs/util/renderStoriesForChromatic.js.map +1 -1
  72. package/cjs/util/virtualfocus/Context.d.ts +1 -1
  73. package/esm/chat/Chat.d.ts +1 -1
  74. package/esm/chat/Chat.js.map +1 -1
  75. package/esm/copybutton/CopyButton.js +1 -1
  76. package/esm/copybutton/CopyButton.js.map +1 -1
  77. package/esm/form/checkbox/Checkbox.js +1 -1
  78. package/esm/form/checkbox/Checkbox.js.map +1 -1
  79. package/esm/form/combobox/Combobox.js +15 -13
  80. package/esm/form/combobox/Combobox.js.map +1 -1
  81. package/esm/form/combobox/FilteredOptions/FilteredOptions.js +21 -4
  82. package/esm/form/combobox/FilteredOptions/FilteredOptions.js.map +1 -1
  83. package/esm/form/combobox/FilteredOptions/useVirtualFocus.js.map +1 -1
  84. package/esm/form/combobox/Input/Input.context.d.ts +2 -2
  85. package/esm/form/combobox/Input/InputController.js +15 -14
  86. package/esm/form/combobox/Input/InputController.js.map +1 -1
  87. package/esm/form/file-upload/useFileUpload.d.ts +1 -1
  88. package/esm/form/radio/Radio.js +1 -1
  89. package/esm/form/radio/Radio.js.map +1 -1
  90. package/esm/form/useFormField.js.map +1 -1
  91. package/esm/modal/ModalUtils.d.ts +2 -2
  92. package/esm/modal/ModalUtils.js.map +1 -1
  93. package/esm/overlays/dismissablelayer/DismissableLayer.d.ts +1 -1
  94. package/esm/overlays/floating/Floating.d.ts +11 -0
  95. package/esm/overlays/floating/Floating.js +32 -8
  96. package/esm/overlays/floating/Floating.js.map +1 -1
  97. package/esm/overlays/overlay/hooks/useAnimationsFinished.d.ts +27 -0
  98. package/esm/overlays/overlay/hooks/useAnimationsFinished.js +99 -0
  99. package/esm/overlays/overlay/hooks/useAnimationsFinished.js.map +1 -0
  100. package/esm/overlays/overlay/hooks/useEventCallback.d.ts +6 -0
  101. package/esm/overlays/overlay/hooks/useEventCallback.js +53 -0
  102. package/esm/overlays/overlay/hooks/useEventCallback.js.map +1 -0
  103. package/esm/overlays/overlay/hooks/useLatestRef.d.ts +5 -0
  104. package/esm/overlays/overlay/hooks/useLatestRef.js +20 -0
  105. package/esm/overlays/overlay/hooks/useLatestRef.js.map +1 -0
  106. package/esm/overlays/overlay/hooks/useOpenChangeAnimationComplete.d.ts +31 -0
  107. package/esm/overlays/overlay/hooks/useOpenChangeAnimationComplete.js +32 -0
  108. package/esm/overlays/overlay/hooks/useOpenChangeAnimationComplete.js.map +1 -0
  109. package/esm/overlays/overlay/hooks/useRefWithInit.d.ts +7 -0
  110. package/esm/overlays/overlay/hooks/useRefWithInit.js +12 -0
  111. package/esm/overlays/overlay/hooks/useRefWithInit.js.map +1 -0
  112. package/esm/overlays/overlay/hooks/useTransitionStatus.d.ts +38 -0
  113. package/esm/overlays/overlay/hooks/useTransitionStatus.js +113 -0
  114. package/esm/overlays/overlay/hooks/useTransitionStatus.js.map +1 -0
  115. package/esm/progress-bar/ProgressBar.js +1 -1
  116. package/esm/progress-bar/ProgressBar.js.map +1 -1
  117. package/esm/read-more/ReadMore.d.ts +2 -9
  118. package/esm/read-more/ReadMore.js +1 -8
  119. package/esm/read-more/ReadMore.js.map +1 -1
  120. package/esm/table/AnimateHeight.js +2 -2
  121. package/esm/table/AnimateHeight.js.map +1 -1
  122. package/esm/table/ExpandableRow.d.ts +1 -1
  123. package/esm/table/ExpandableRow.js +2 -10
  124. package/esm/table/ExpandableRow.js.map +1 -1
  125. package/esm/table/Row.d.ts +7 -0
  126. package/esm/table/Row.js +13 -2
  127. package/esm/table/Row.js.map +1 -1
  128. package/esm/table/Table.utils.d.ts +9 -0
  129. package/esm/table/Table.utils.js +55 -0
  130. package/esm/table/Table.utils.js.map +1 -0
  131. package/esm/tabs/Tabs.context.d.ts +1 -1
  132. package/esm/tabs/parts/tab/useTab.d.ts +1 -1
  133. package/esm/tabs/parts/tablist/useScrollButtons.d.ts +1 -1
  134. package/esm/tabs/parts/tablist/useScrollButtons.js.map +1 -1
  135. package/esm/toggle-group/ToggleGroup.context.d.ts +1 -1
  136. package/esm/toggle-group/parts/useToggleItem.d.ts +1 -1
  137. package/esm/util/hooks/descendants/useDescendant.d.ts +1 -1
  138. package/esm/util/hooks/useMergeRefs.d.ts +3 -3
  139. package/esm/util/hooks/useMergeRefs.js +3 -3
  140. package/esm/util/hooks/useMergeRefs.js.map +1 -1
  141. package/esm/util/renderStoriesForChromatic.d.ts +2 -2
  142. package/esm/util/renderStoriesForChromatic.js +2 -2
  143. package/esm/util/renderStoriesForChromatic.js.map +1 -1
  144. package/esm/util/virtualfocus/Context.d.ts +1 -1
  145. package/package.json +4 -4
  146. package/src/chat/Chat.tsx +3 -3
  147. package/src/copybutton/CopyButton.tsx +1 -1
  148. package/src/form/checkbox/Checkbox.tsx +5 -3
  149. package/src/form/combobox/Combobox.tsx +44 -41
  150. package/src/form/combobox/FilteredOptions/FilteredOptions.tsx +29 -4
  151. package/src/form/combobox/FilteredOptions/useVirtualFocus.ts +1 -0
  152. package/src/form/combobox/Input/Input.context.tsx +2 -2
  153. package/src/form/combobox/Input/InputController.tsx +33 -29
  154. package/src/form/radio/Radio.tsx +5 -3
  155. package/src/form/useFormField.ts +1 -1
  156. package/src/modal/ModalUtils.ts +2 -2
  157. package/src/overlays/action-menu/ActionMenu.tsx +1 -1
  158. package/src/overlays/floating/Floating.tsx +110 -59
  159. package/src/overlays/overlay/hooks/useAnimationsFinished.ts +117 -0
  160. package/src/overlays/overlay/hooks/useEventCallback.ts +73 -0
  161. package/src/overlays/overlay/hooks/useLatestRef.ts +25 -0
  162. package/src/overlays/overlay/hooks/useOpenChangeAnimationComplete.ts +66 -0
  163. package/src/overlays/overlay/hooks/useRefWithInit.ts +25 -0
  164. package/src/overlays/overlay/hooks/useTransitionStatus.ts +145 -0
  165. package/src/progress-bar/ProgressBar.tsx +1 -1
  166. package/src/read-more/ReadMore.tsx +4 -11
  167. package/src/table/AnimateHeight.tsx +2 -2
  168. package/src/table/ExpandableRow.tsx +4 -17
  169. package/src/table/Row.tsx +33 -1
  170. package/src/table/Table.utils.ts +65 -0
  171. package/src/tabs/parts/tablist/useScrollButtons.ts +3 -1
  172. package/src/util/hooks/useMergeRefs.ts +5 -5
  173. package/src/util/link-anchor/LinkAnchor.tsx +1 -1
  174. package/src/util/renderStoriesForChromatic.tsx +4 -5
@@ -0,0 +1,138 @@
1
+ "use strict";
2
+ "use client";
3
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
4
+ if (k2 === undefined) k2 = k;
5
+ var desc = Object.getOwnPropertyDescriptor(m, k);
6
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
7
+ desc = { enumerable: true, get: function() { return m[k]; } };
8
+ }
9
+ Object.defineProperty(o, k2, desc);
10
+ }) : (function(o, m, k, k2) {
11
+ if (k2 === undefined) k2 = k;
12
+ o[k2] = m[k];
13
+ }));
14
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
15
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
16
+ }) : function(o, v) {
17
+ o["default"] = v;
18
+ });
19
+ var __importStar = (this && this.__importStar) || (function () {
20
+ var ownKeys = function(o) {
21
+ ownKeys = Object.getOwnPropertyNames || function (o) {
22
+ var ar = [];
23
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
24
+ return ar;
25
+ };
26
+ return ownKeys(o);
27
+ };
28
+ return function (mod) {
29
+ if (mod && mod.__esModule) return mod;
30
+ var result = {};
31
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
32
+ __setModuleDefault(result, mod);
33
+ return result;
34
+ };
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.useAnimationsFinished = useAnimationsFinished;
41
+ const react_1 = __importStar(require("react"));
42
+ const react_dom_1 = __importDefault(require("react-dom"));
43
+ const useEventCallback_1 = require("./useEventCallback");
44
+ /**
45
+ * Returns a stable function that, when invoked, waits for all current CSS/Web Animations
46
+ * on a target element (and its subtree) to finish before executing a callback.
47
+ *
48
+ * Why:
49
+ * - Coordinate logic (unmount, focus restore, measuring) after exit / enter animations.
50
+ * - Avoid `animationend` event bookkeeping across multiple animations / nested elements.
51
+ * - Batch detection using `requestAnimationFrame` so freshly-applied animations are discoverable.
52
+ *
53
+ * Mechanics:
54
+ * 1. Resolves the concrete `HTMLElement` (direct element or from ref) – early no-op if missing.
55
+ * 2. If `getAnimations` is unsupported or animations are globally disabled (`AKSEL_ANIMATIONS_DISABLED`),
56
+ * runs the callback immediately.
57
+ * 3. Schedules a frame so style/animation changes applied this render are committed.
58
+ * 4. Optionally schedules an additional frame (`waitForNextTick=true`) to catch animations that
59
+ * start only after layout (e.g. when an `open` class triggers the animation).
60
+ * 5. Captures all current animations, waits on their `.finished` promises (using `Promise.allSettled`
61
+ * so rejections don't block), then `flushSync` executes the callback (ensures React state updates
62
+ * inside run before the browser paints the next frame).
63
+ * 6. If an `AbortSignal` aborts while waiting, it silently cancels execution.
64
+ *
65
+ * @param elementOrRef HTMLElement or ref to observe.
66
+ * @param waitForNextTick If true, waits an extra frame to ensure enter animations are detectable.
67
+ * @returns Stable function (identity preserved) accepting (fn, abortSignal?).
68
+ */
69
+ function useAnimationsFinished(elementOrRef, waitForNextTick = false) {
70
+ const rootFrameRef = react_1.default.useRef(null);
71
+ const nestedFrameRef = react_1.default.useRef(null);
72
+ const cancelScheduled = (0, react_1.useCallback)(() => {
73
+ for (const ref of [rootFrameRef, nestedFrameRef]) {
74
+ if (ref.current !== null) {
75
+ cancelAnimationFrame(ref.current);
76
+ ref.current = null;
77
+ }
78
+ }
79
+ }, []);
80
+ /* Unmount cleanup */
81
+ (0, react_1.useEffect)(() => {
82
+ return () => cancelScheduled();
83
+ }, [cancelScheduled]);
84
+ return (0, useEventCallback_1.useEventCallback)((
85
+ /**
86
+ * A function to execute once all animations have finished.
87
+ */
88
+ fnToExecute,
89
+ /**
90
+ * An optional [AbortSignal](https://developer.mozilla.org/en-US/docs/Web/API/AbortSignal) that
91
+ * can be used to abort `fnToExecute` before all the animations have finished.
92
+ * @default null
93
+ */
94
+ signal = null) => {
95
+ // Cancel any in-flight scheduling from a previous invocation (next-frame debounce semantics)
96
+ cancelScheduled();
97
+ if (elementOrRef == null) {
98
+ return;
99
+ }
100
+ const element = "current" in elementOrRef ? elementOrRef.current : elementOrRef;
101
+ if (element == null) {
102
+ return;
103
+ }
104
+ // Fast path: no Web Animations API support OR animations globally disabled.
105
+ if (typeof element.getAnimations !== "function" ||
106
+ // Flag hook for test envs.
107
+ globalThis.AKSEL_ANIMATIONS_DISABLED) {
108
+ fnToExecute();
109
+ return;
110
+ }
111
+ rootFrameRef.current = requestAnimationFrame(() => {
112
+ function exec() {
113
+ if (!element) {
114
+ return;
115
+ }
116
+ // Collect animations present at this moment; we don't continuously observe
117
+ // if new animations start after these settle, caller should invoke again.
118
+ Promise.allSettled(element.getAnimations().map((anim) => anim.finished)).then(() => {
119
+ if (signal === null || signal === void 0 ? void 0 : signal.aborted)
120
+ return;
121
+ // Ensure any state updates inside the callback are flushed synchronously,
122
+ // guaranteeing that dependent logic observes the current
123
+ // tree rather than a stale in-progress update.
124
+ react_dom_1.default.flushSync(fnToExecute);
125
+ });
126
+ }
127
+ // Some animations (e.g. triggered by a class applied this same frame) only
128
+ // become observable after an extra frame; opt-in via flag.
129
+ if (waitForNextTick) {
130
+ nestedFrameRef.current = requestAnimationFrame(exec);
131
+ }
132
+ else {
133
+ exec();
134
+ }
135
+ });
136
+ });
137
+ }
138
+ //# sourceMappingURL=useAnimationsFinished.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useAnimationsFinished.js","sourceRoot":"","sources":["../../../../src/overlays/overlay/hooks/useAnimationsFinished.ts"],"names":[],"mappings":";AAAA,YAAY,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA+Bb,sDAqFC;AAlHD,+CAAsD;AACtD,0DAAiC;AACjC,yDAAsD;AAEtD;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,SAAgB,qBAAqB,CACnC,YAAsE,EACtE,eAAe,GAAG,KAAK;IAEvB,MAAM,YAAY,GAAG,eAAK,CAAC,MAAM,CAAgB,IAAI,CAAC,CAAC;IACvD,MAAM,cAAc,GAAG,eAAK,CAAC,MAAM,CAAgB,IAAI,CAAC,CAAC;IAEzD,MAAM,eAAe,GAAG,IAAA,mBAAW,EAAC,GAAG,EAAE;QACvC,KAAK,MAAM,GAAG,IAAI,CAAC,YAAY,EAAE,cAAc,CAAC,EAAE,CAAC;YACjD,IAAI,GAAG,CAAC,OAAO,KAAK,IAAI,EAAE,CAAC;gBACzB,oBAAoB,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;gBAClC,GAAG,CAAC,OAAO,GAAG,IAAI,CAAC;YACrB,CAAC;QACH,CAAC;IACH,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,qBAAqB;IACrB,IAAA,iBAAS,EAAC,GAAG,EAAE;QACb,OAAO,GAAG,EAAE,CAAC,eAAe,EAAE,CAAC;IACjC,CAAC,EAAE,CAAC,eAAe,CAAC,CAAC,CAAC;IAEtB,OAAO,IAAA,mCAAgB,EACrB;IACE;;OAEG;IACH,WAAuB;IACvB;;;;OAIG;IACH,SAA6B,IAAI,EACjC,EAAE;QACF,6FAA6F;QAC7F,eAAe,EAAE,CAAC;QAElB,IAAI,YAAY,IAAI,IAAI,EAAE,CAAC;YACzB,OAAO;QACT,CAAC;QAED,MAAM,OAAO,GACX,SAAS,IAAI,YAAY,CAAC,CAAC,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC,YAAY,CAAC;QAClE,IAAI,OAAO,IAAI,IAAI,EAAE,CAAC;YACpB,OAAO;QACT,CAAC;QAED,4EAA4E;QAC5E,IACE,OAAO,OAAO,CAAC,aAAa,KAAK,UAAU;YAC3C,2BAA2B;YAC1B,UAAkB,CAAC,yBAAyB,EAC7C,CAAC;YACD,WAAW,EAAE,CAAC;YACd,OAAO;QACT,CAAC;QAED,YAAY,CAAC,OAAO,GAAG,qBAAqB,CAAC,GAAG,EAAE;YAChD,SAAS,IAAI;gBACX,IAAI,CAAC,OAAO,EAAE,CAAC;oBACb,OAAO;gBACT,CAAC;gBACD,2EAA2E;gBAC3E,0EAA0E;gBAC1E,OAAO,CAAC,UAAU,CAChB,OAAO,CAAC,aAAa,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,CACrD,CAAC,IAAI,CAAC,GAAG,EAAE;oBACV,IAAI,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,OAAO;wBAAE,OAAO;oBAC5B,0EAA0E;oBAC1E,yDAAyD;oBACzD,+CAA+C;oBAC/C,mBAAQ,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;gBAClC,CAAC,CAAC,CAAC;YACL,CAAC;YAED,2EAA2E;YAC3E,2DAA2D;YAC3D,IAAI,eAAe,EAAE,CAAC;gBACpB,cAAc,CAAC,OAAO,GAAG,qBAAqB,CAAC,IAAI,CAAC,CAAC;YACvD,CAAC;iBAAM,CAAC;gBACN,IAAI,EAAE,CAAC;YACT,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC,CACF,CAAC;AACJ,CAAC"}
@@ -0,0 +1,6 @@
1
+ type Callback = (...args: any[]) => any;
2
+ /**
3
+ * TODO: Long term, replace `useCallbackRef` with this hook.
4
+ */
5
+ export declare function useEventCallback<T extends Callback>(callback: T | undefined): T;
6
+ export {};
@@ -0,0 +1,89 @@
1
+ "use strict";
2
+ "use client";
3
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
4
+ if (k2 === undefined) k2 = k;
5
+ var desc = Object.getOwnPropertyDescriptor(m, k);
6
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
7
+ desc = { enumerable: true, get: function() { return m[k]; } };
8
+ }
9
+ Object.defineProperty(o, k2, desc);
10
+ }) : (function(o, m, k, k2) {
11
+ if (k2 === undefined) k2 = k;
12
+ o[k2] = m[k];
13
+ }));
14
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
15
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
16
+ }) : function(o, v) {
17
+ o["default"] = v;
18
+ });
19
+ var __importStar = (this && this.__importStar) || (function () {
20
+ var ownKeys = function(o) {
21
+ ownKeys = Object.getOwnPropertyNames || function (o) {
22
+ var ar = [];
23
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
24
+ return ar;
25
+ };
26
+ return ownKeys(o);
27
+ };
28
+ return function (mod) {
29
+ if (mod && mod.__esModule) return mod;
30
+ var result = {};
31
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
32
+ __setModuleDefault(result, mod);
33
+ return result;
34
+ };
35
+ })();
36
+ Object.defineProperty(exports, "__esModule", { value: true });
37
+ exports.useEventCallback = useEventCallback;
38
+ /**
39
+ * Stable event callback: returns a function whose identity never changes but always
40
+ * invokes the latest `callback`. Avoids stale closures without re‑creating handlers.
41
+ *
42
+ * Why not `useCallback`? Its identity depends on a deps array:
43
+ * - omit deps -> stale; include deps -> new function each render.
44
+ * - This hook decouples identity from freshness.
45
+ *
46
+ * How it works: a single stable "trampoline" function delegates to a mutable ref. The current
47
+ * `callback` is promoted from `next` in an insertion/layout phase effect so abandoned concurrent
48
+ * renders cannot leak outdated handlers.
49
+ *
50
+ * Guarantees: stable identity; latest logic executed; no calls from uncommitted renders; dev
51
+ * error if invoked during render; safe when `callback` is undefined (no-op).
52
+ */
53
+ const react_1 = __importStar(require("react"));
54
+ const useRefWithInit_1 = require("./useRefWithInit");
55
+ /* https://github.com/mui/material-ui/issues/41190#issuecomment-2040873379 */
56
+ const useInsertionEffect = react_1.default[`useInsertionEffect${Math.random().toFixed(1)}`.slice(0, -3)];
57
+ const useSafeInsertionEffect =
58
+ // React 17 doesn't have useInsertionEffect.
59
+ useInsertionEffect &&
60
+ // Preact replaces useInsertionEffect with useLayoutEffect and fires too late.
61
+ useInsertionEffect !== react_1.useLayoutEffect
62
+ ? useInsertionEffect
63
+ : (fn) => fn();
64
+ /**
65
+ * TODO: Long term, replace `useCallbackRef` with this hook.
66
+ */
67
+ function useEventCallback(callback) {
68
+ const stable = (0, useRefWithInit_1.useRefWithInit)(createStableCallback).current;
69
+ stable.next = callback;
70
+ useSafeInsertionEffect(stable.effect);
71
+ return stable.trampoline;
72
+ }
73
+ function createStableCallback() {
74
+ const stable = {
75
+ next: undefined,
76
+ callback: assertNotCalled,
77
+ trampoline: (...args) => { var _a; return (_a = stable.callback) === null || _a === void 0 ? void 0 : _a.call(stable, ...args); },
78
+ effect: () => {
79
+ stable.callback = stable.next;
80
+ },
81
+ };
82
+ return stable;
83
+ }
84
+ function assertNotCalled() {
85
+ if (process.env.NODE_ENV !== "production") {
86
+ throw new Error("Aksel: Cannot call an event handler while rendering.");
87
+ }
88
+ }
89
+ //# sourceMappingURL=useEventCallback.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useEventCallback.js","sourceRoot":"","sources":["../../../../src/overlays/overlay/hooks/useEventCallback.ts"],"names":[],"mappings":";AAAA,YAAY,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA+Cb,4CAOC;AApDD;;;;;;;;;;;;;;GAcG;AACH,+CAA+C;AAC/C,qDAAkD;AAElD,6EAA6E;AAC7E,MAAM,kBAAkB,GAAI,eAAa,CACvC,qBAAqB,IAAI,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAC7D,CAAC;AAEF,MAAM,sBAAsB;AAC1B,4CAA4C;AAC5C,kBAAkB;IAClB,8EAA8E;IAC9E,kBAAkB,KAAK,uBAAe;IACpC,CAAC,CAAC,kBAAkB;IACpB,CAAC,CAAC,CAAC,EAAO,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC;AAaxB;;GAEG;AACH,SAAgB,gBAAgB,CAC9B,QAAuB;IAEvB,MAAM,MAAM,GAAG,IAAA,+BAAc,EAAC,oBAAoB,CAAC,CAAC,OAAoB,CAAC;IACzE,MAAM,CAAC,IAAI,GAAG,QAAQ,CAAC;IACvB,sBAAsB,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IACtC,OAAO,MAAM,CAAC,UAAU,CAAC;AAC3B,CAAC;AAED,SAAS,oBAAoB;IAC3B,MAAM,MAAM,GAAqB;QAC/B,IAAI,EAAE,SAAS;QACf,QAAQ,EAAE,eAAe;QACzB,UAAU,EAAE,CAAC,GAAG,IAAW,EAAE,EAAE,WAAC,OAAA,MAAA,MAAM,CAAC,QAAQ,uDAAG,GAAG,IAAI,CAAC,CAAA,EAAA;QAC1D,MAAM,EAAE,GAAG,EAAE;YACX,MAAM,CAAC,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC;QAChC,CAAC;KACF,CAAC;IACF,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,SAAS,eAAe;IACtB,IAAI,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,YAAY,EAAE,CAAC;QAC1C,MAAM,IAAI,KAAK,CAAC,sDAAsD,CAAC,CAAC;IAC1E,CAAC;AACH,CAAC"}
@@ -0,0 +1,5 @@
1
+ export declare function useLatestRef<T>(value: T): {
2
+ current: T;
3
+ next: T;
4
+ effect: () => void;
5
+ };
@@ -0,0 +1,23 @@
1
+ "use strict";
2
+ "use client";
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ exports.useLatestRef = useLatestRef;
5
+ const util_1 = require("../../../util");
6
+ const useRefWithInit_1 = require("./useRefWithInit");
7
+ function useLatestRef(value) {
8
+ const latest = (0, useRefWithInit_1.useRefWithInit)(createLatestRef, value).current;
9
+ latest.next = value;
10
+ (0, util_1.useClientLayoutEffect)(latest.effect);
11
+ return latest;
12
+ }
13
+ function createLatestRef(value) {
14
+ const latest = {
15
+ current: value,
16
+ next: value,
17
+ effect: () => {
18
+ latest.current = latest.next;
19
+ },
20
+ };
21
+ return latest;
22
+ }
23
+ //# sourceMappingURL=useLatestRef.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useLatestRef.js","sourceRoot":"","sources":["../../../../src/overlays/overlay/hooks/useLatestRef.ts"],"names":[],"mappings":";AAAA,YAAY,CAAC;;AAKb,oCAQC;AAXD,wCAAsD;AACtD,qDAAkD;AAElD,SAAgB,YAAY,CAAI,KAAQ;IACtC,MAAM,MAAM,GAAG,IAAA,+BAAc,EAAC,eAAe,EAAE,KAAK,CAAC,CAAC,OAAQ,CAAC;IAE/D,MAAM,CAAC,IAAI,GAAG,KAAK,CAAC;IAEpB,IAAA,4BAAqB,EAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IAErC,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,SAAS,eAAe,CAAI,KAAQ;IAClC,MAAM,MAAM,GAAG;QACb,OAAO,EAAE,KAAK;QACd,IAAI,EAAE,KAAK;QACX,MAAM,EAAE,GAAG,EAAE;YACX,MAAM,CAAC,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC;QAC/B,CAAC;KACF,CAAC;IACF,OAAO,MAAM,CAAC;AAChB,CAAC"}
@@ -0,0 +1,31 @@
1
+ import React from "react";
2
+ interface useOpenChangeAnimationCompleteParameters {
3
+ /**
4
+ * Enable / disable the effect. Disabled => no animation tracking / callback.
5
+ * @default true
6
+ */
7
+ enabled?: boolean;
8
+ /**
9
+ * Current open state (e.g. popover open). When this flips we wait for any
10
+ * associated CSS/Web animations on `ref` to finish before firing `onComplete`.
11
+ */
12
+ open?: boolean;
13
+ /**
14
+ * Element whose animations/transition we observe. Should be stable while the
15
+ * open/close animation runs (typically the root animated node).
16
+ */
17
+ ref?: React.RefObject<HTMLElement | null>;
18
+ /**
19
+ * Called exactly once per open-change cycle after animations finish OR
20
+ * immediately if animations are disabled / unsupported.
21
+ */
22
+ onComplete: () => void;
23
+ }
24
+ /**
25
+ * Waits for the element's current Web Animations / CSS transitions to finish after an
26
+ * `open` state change, then invokes `onComplete`. Guards against race conditions by
27
+ * comparing the `open` value captured at scheduling time with the latest `open` via ref;
28
+ * if they differ (state flipped again mid‑animation) the callback is skipped.
29
+ */
30
+ export declare function useOpenChangeAnimationComplete(parameters: useOpenChangeAnimationCompleteParameters): void;
31
+ export {};
@@ -0,0 +1,35 @@
1
+ "use strict";
2
+ "use client";
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ exports.useOpenChangeAnimationComplete = useOpenChangeAnimationComplete;
5
+ const react_1 = require("react");
6
+ const useAnimationsFinished_1 = require("./useAnimationsFinished");
7
+ const useEventCallback_1 = require("./useEventCallback");
8
+ const useLatestRef_1 = require("./useLatestRef");
9
+ /**
10
+ * Waits for the element's current Web Animations / CSS transitions to finish after an
11
+ * `open` state change, then invokes `onComplete`. Guards against race conditions by
12
+ * comparing the `open` value captured at scheduling time with the latest `open` via ref;
13
+ * if they differ (state flipped again mid‑animation) the callback is skipped.
14
+ */
15
+ function useOpenChangeAnimationComplete(parameters) {
16
+ const { enabled = true, open, ref = null, onComplete: onCompleteParam, } = parameters;
17
+ const openRef = (0, useLatestRef_1.useLatestRef)(open);
18
+ const onComplete = (0, useEventCallback_1.useEventCallback)(onCompleteParam);
19
+ const runOnceAnimationsFinish = (0, useAnimationsFinished_1.useAnimationsFinished)(ref, open);
20
+ (0, react_1.useEffect)(() => {
21
+ if (!enabled) {
22
+ return;
23
+ }
24
+ /*
25
+ * Schedule completion once the *current* set of animations settle. If during
26
+ * that wait `open` toggles again, skip to avoid firing for an outdated cycle.
27
+ */
28
+ runOnceAnimationsFinish(() => {
29
+ if (open === openRef.current) {
30
+ onComplete();
31
+ }
32
+ });
33
+ }, [enabled, open, onComplete, runOnceAnimationsFinish, openRef]);
34
+ }
35
+ //# sourceMappingURL=useOpenChangeAnimationComplete.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useOpenChangeAnimationComplete.js","sourceRoot":"","sources":["../../../../src/overlays/overlay/hooks/useOpenChangeAnimationComplete.ts"],"names":[],"mappings":";AAAA,YAAY,CAAC;;AAoCb,wEA6BC;AA/DD,iCAAyC;AACzC,mEAAgE;AAChE,yDAAsD;AACtD,iDAA8C;AAyB9C;;;;;GAKG;AACH,SAAgB,8BAA8B,CAC5C,UAAoD;IAEpD,MAAM,EACJ,OAAO,GAAG,IAAI,EACd,IAAI,EACJ,GAAG,GAAG,IAAI,EACV,UAAU,EAAE,eAAe,GAC5B,GAAG,UAAU,CAAC;IAEf,MAAM,OAAO,GAAG,IAAA,2BAAY,EAAC,IAAI,CAAC,CAAC;IACnC,MAAM,UAAU,GAAG,IAAA,mCAAgB,EAAC,eAAe,CAAC,CAAC;IACrD,MAAM,uBAAuB,GAAG,IAAA,6CAAqB,EAAC,GAAG,EAAE,IAAI,CAAC,CAAC;IAEjE,IAAA,iBAAS,EAAC,GAAG,EAAE;QACb,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,OAAO;QACT,CAAC;QAED;;;WAGG;QACH,uBAAuB,CAAC,GAAG,EAAE;YAC3B,IAAI,IAAI,KAAK,OAAO,CAAC,OAAO,EAAE,CAAC;gBAC7B,UAAU,EAAE,CAAC;YACf,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC,EAAE,CAAC,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,uBAAuB,EAAE,OAAO,CAAC,CAAC,CAAC;AACpE,CAAC"}
@@ -0,0 +1,7 @@
1
+ import React from "react";
2
+ /**
3
+ * useRef initialized with a function on mount.
4
+ */
5
+ declare function useRefWithInit<T>(init: () => T): React.RefObject<T>;
6
+ declare function useRefWithInit<T, U>(init: (arg: U) => T, initArg: U): React.RefObject<T>;
7
+ export { useRefWithInit };
@@ -0,0 +1,14 @@
1
+ "use strict";
2
+ "use client";
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ exports.useRefWithInit = useRefWithInit;
5
+ const react_1 = require("react");
6
+ const UNINITIALIZED = {};
7
+ function useRefWithInit(init, initArg) {
8
+ const ref = (0, react_1.useRef)(UNINITIALIZED);
9
+ if (ref.current === UNINITIALIZED) {
10
+ ref.current = init(initArg);
11
+ }
12
+ return ref;
13
+ }
14
+ //# sourceMappingURL=useRefWithInit.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useRefWithInit.js","sourceRoot":"","sources":["../../../../src/overlays/overlay/hooks/useRefWithInit.ts"],"names":[],"mappings":";AAAA,YAAY,CAAC;;AAwBJ,wCAAc;AAtBvB,iCAAsC;AAEtC,MAAM,aAAa,GAAG,EAAE,CAAC;AAUzB,SAAS,cAAc,CAAC,IAAgC,EAAE,OAAiB;IACzE,MAAM,GAAG,GAAG,IAAA,cAAM,EAAC,aAAoB,CAAC,CAAC;IAEzC,IAAI,GAAG,CAAC,OAAO,KAAK,aAAa,EAAE,CAAC;QAClC,GAAG,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC;IAC9B,CAAC;IAED,OAAO,GAAG,CAAC;AACb,CAAC"}
@@ -0,0 +1,38 @@
1
+ type TransitionStatus = "entering" | "exiting" | "idle" | undefined;
2
+ /**
3
+ * Transition status state machine for components that animate between an
4
+ * `open` boolean and actual mount/unmount. Keeps the element mounted while
5
+ * exit animations run and introduces an optional stable `idle` phase.
6
+ *
7
+ * Adapted from MUI Base + Floating UI examples:
8
+ * - Source: https://github.com/mui/base-ui/blob/6fd69008d83561dbe75ff89acf270f0fac3e0049/packages/react/src/utils/useTransitionStatus.ts
9
+ * - Originally based on https://github.com/floating-ui/floating-ui/blob/7c33a3d0198a9b523d54ae2c37cedb315a309452/packages/react/src/hooks/useTransition.ts
10
+ *
11
+ * States (transitionStatus):
12
+ * - "entering" : just entered (initial frame of enter) OR re-entering to reach "idle".
13
+ * - "idle" : stable open (only when `enableIdleState === true`).
14
+ * - "exiting" : exit animation is running; element still mounted.
15
+ * - undefined : closed (unmounted) OR stable open when idle state is disabled.
16
+ * When `enableIdleState` is false we clear the label after
17
+ * the first frame so styling can rely purely on `mounted`.
18
+ *
19
+ * Distinction:
20
+ * - `mounted` tells you whether to render DOM.
21
+ * - `transitionStatus` tells you which phase-specific classes to apply.
22
+ *
23
+ * Frame separation: state changes that must trigger CSS transitions are
24
+ * scheduled with `requestAnimationFrame` so the browser sees distinct style
25
+ * mutations across frames (avoids missed transitions due to batching).
26
+ *
27
+ * @param open Controls visibility lifecycle.
28
+ * @param enableIdleState Insert a persistent "idle" phase after entering.
29
+ * @param deferExitingState Delay entering the exit phase by one frame to allow
30
+ * measurement / layout work before applying exit styles.
31
+ */
32
+ declare function useTransitionStatus(open: boolean, enableIdleState?: boolean, deferExitingState?: boolean): {
33
+ mounted: boolean;
34
+ setMounted: import("react").Dispatch<import("react").SetStateAction<boolean>>;
35
+ transitionStatus: TransitionStatus;
36
+ };
37
+ export { useTransitionStatus };
38
+ export type { TransitionStatus };
@@ -0,0 +1,118 @@
1
+ "use strict";
2
+ "use client";
3
+ var __importDefault = (this && this.__importDefault) || function (mod) {
4
+ return (mod && mod.__esModule) ? mod : { "default": mod };
5
+ };
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ exports.useTransitionStatus = useTransitionStatus;
8
+ const react_1 = require("react");
9
+ const react_dom_1 = __importDefault(require("react-dom"));
10
+ const util_1 = require("../../../util");
11
+ /**
12
+ * Transition status state machine for components that animate between an
13
+ * `open` boolean and actual mount/unmount. Keeps the element mounted while
14
+ * exit animations run and introduces an optional stable `idle` phase.
15
+ *
16
+ * Adapted from MUI Base + Floating UI examples:
17
+ * - Source: https://github.com/mui/base-ui/blob/6fd69008d83561dbe75ff89acf270f0fac3e0049/packages/react/src/utils/useTransitionStatus.ts
18
+ * - Originally based on https://github.com/floating-ui/floating-ui/blob/7c33a3d0198a9b523d54ae2c37cedb315a309452/packages/react/src/hooks/useTransition.ts
19
+ *
20
+ * States (transitionStatus):
21
+ * - "entering" : just entered (initial frame of enter) OR re-entering to reach "idle".
22
+ * - "idle" : stable open (only when `enableIdleState === true`).
23
+ * - "exiting" : exit animation is running; element still mounted.
24
+ * - undefined : closed (unmounted) OR stable open when idle state is disabled.
25
+ * When `enableIdleState` is false we clear the label after
26
+ * the first frame so styling can rely purely on `mounted`.
27
+ *
28
+ * Distinction:
29
+ * - `mounted` tells you whether to render DOM.
30
+ * - `transitionStatus` tells you which phase-specific classes to apply.
31
+ *
32
+ * Frame separation: state changes that must trigger CSS transitions are
33
+ * scheduled with `requestAnimationFrame` so the browser sees distinct style
34
+ * mutations across frames (avoids missed transitions due to batching).
35
+ *
36
+ * @param open Controls visibility lifecycle.
37
+ * @param enableIdleState Insert a persistent "idle" phase after entering.
38
+ * @param deferExitingState Delay entering the exit phase by one frame to allow
39
+ * measurement / layout work before applying exit styles.
40
+ */
41
+ function useTransitionStatus(open, enableIdleState = false, deferExitingState = false) {
42
+ const [mounted, setMounted] = (0, react_1.useState)(open);
43
+ const [transitionStatus, setTransitionStatus] = (0, react_1.useState)(open && enableIdleState ? "idle" : undefined);
44
+ /* Opening: mount immediately and label as "entering" for the first frame. */
45
+ if (open && !mounted) {
46
+ setMounted(true);
47
+ setTransitionStatus("entering");
48
+ }
49
+ /* Closing (no defer): begin exit animation right away. */
50
+ if (!open &&
51
+ mounted &&
52
+ transitionStatus !== "exiting" &&
53
+ !deferExitingState) {
54
+ setTransitionStatus("exiting");
55
+ }
56
+ /* Cleanup: after unmount post-exit ensure status returns to undefined. */
57
+ if (!open && !mounted && transitionStatus === "exiting") {
58
+ setTransitionStatus(undefined);
59
+ }
60
+ /* Deferred closing: provide one frame to measure / flush layout before exit styles. */
61
+ (0, util_1.useClientLayoutEffect)(() => {
62
+ if (!open &&
63
+ mounted &&
64
+ transitionStatus !== "exiting" &&
65
+ deferExitingState) {
66
+ const frame = requestAnimationFrame(() => {
67
+ setTransitionStatus("exiting");
68
+ });
69
+ return () => {
70
+ cancelAnimationFrame(frame);
71
+ };
72
+ }
73
+ return undefined;
74
+ }, [open, mounted, transitionStatus, deferExitingState]);
75
+ /* Enter (no idle): hold "entering" for one frame, then clear label (stable open). */
76
+ (0, util_1.useClientLayoutEffect)(() => {
77
+ if (!open || enableIdleState) {
78
+ return undefined;
79
+ }
80
+ const frame = requestAnimationFrame(() => {
81
+ react_dom_1.default.flushSync(() => {
82
+ setTransitionStatus(undefined);
83
+ });
84
+ });
85
+ return () => {
86
+ cancelAnimationFrame(frame);
87
+ };
88
+ }, [enableIdleState, open]);
89
+ (0, util_1.useClientLayoutEffect)(() => {
90
+ if (!open || !enableIdleState) {
91
+ return undefined;
92
+ }
93
+ /*
94
+ * We can enter this state by re-opening before exiting-state was finished
95
+ * (open → close → open in quick succession).
96
+ */
97
+ if (open && mounted && transitionStatus !== "idle") {
98
+ setTransitionStatus("entering");
99
+ }
100
+ /**
101
+ * Next frame, after "entering", switch to persistent "idle" state.
102
+ * By delaying to the next frame we ensure any "entering" styles are
103
+ * applied and the transition can run.
104
+ */
105
+ const frame = requestAnimationFrame(() => {
106
+ setTransitionStatus("idle");
107
+ });
108
+ return () => {
109
+ cancelAnimationFrame(frame);
110
+ };
111
+ }, [enableIdleState, open, mounted, setTransitionStatus, transitionStatus]);
112
+ return (0, react_1.useMemo)(() => ({
113
+ mounted,
114
+ setMounted,
115
+ transitionStatus,
116
+ }), [mounted, transitionStatus]);
117
+ }
118
+ //# sourceMappingURL=useTransitionStatus.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useTransitionStatus.js","sourceRoot":"","sources":["../../../../src/overlays/overlay/hooks/useTransitionStatus.ts"],"names":[],"mappings":";AAAA,YAAY,CAAC;;;;;AA+IJ,kDAAmB;AA7I5B,iCAA0C;AAC1C,0DAAiC;AACjC,wCAAsD;AAItD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,SAAS,mBAAmB,CAC1B,IAAa,EACb,kBAA2B,KAAK,EAChC,oBAA6B,KAAK;IAElC,MAAM,CAAC,OAAO,EAAE,UAAU,CAAC,GAAG,IAAA,gBAAQ,EAAC,IAAI,CAAC,CAAC;IAC7C,MAAM,CAAC,gBAAgB,EAAE,mBAAmB,CAAC,GAAG,IAAA,gBAAQ,EACtD,IAAI,IAAI,eAAe,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAC7C,CAAC;IAEF,6EAA6E;IAC7E,IAAI,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;QACrB,UAAU,CAAC,IAAI,CAAC,CAAC;QACjB,mBAAmB,CAAC,UAAU,CAAC,CAAC;IAClC,CAAC;IAED,0DAA0D;IAC1D,IACE,CAAC,IAAI;QACL,OAAO;QACP,gBAAgB,KAAK,SAAS;QAC9B,CAAC,iBAAiB,EAClB,CAAC;QACD,mBAAmB,CAAC,SAAS,CAAC,CAAC;IACjC,CAAC;IAED,0EAA0E;IAC1E,IAAI,CAAC,IAAI,IAAI,CAAC,OAAO,IAAI,gBAAgB,KAAK,SAAS,EAAE,CAAC;QACxD,mBAAmB,CAAC,SAAS,CAAC,CAAC;IACjC,CAAC;IAED,uFAAuF;IACvF,IAAA,4BAAqB,EAAC,GAAG,EAAE;QACzB,IACE,CAAC,IAAI;YACL,OAAO;YACP,gBAAgB,KAAK,SAAS;YAC9B,iBAAiB,EACjB,CAAC;YACD,MAAM,KAAK,GAAG,qBAAqB,CAAC,GAAG,EAAE;gBACvC,mBAAmB,CAAC,SAAS,CAAC,CAAC;YACjC,CAAC,CAAC,CAAC;YAEH,OAAO,GAAG,EAAE;gBACV,oBAAoB,CAAC,KAAK,CAAC,CAAC;YAC9B,CAAC,CAAC;QACJ,CAAC;QAED,OAAO,SAAS,CAAC;IACnB,CAAC,EAAE,CAAC,IAAI,EAAE,OAAO,EAAE,gBAAgB,EAAE,iBAAiB,CAAC,CAAC,CAAC;IAEzD,qFAAqF;IACrF,IAAA,4BAAqB,EAAC,GAAG,EAAE;QACzB,IAAI,CAAC,IAAI,IAAI,eAAe,EAAE,CAAC;YAC7B,OAAO,SAAS,CAAC;QACnB,CAAC;QAED,MAAM,KAAK,GAAG,qBAAqB,CAAC,GAAG,EAAE;YACvC,mBAAQ,CAAC,SAAS,CAAC,GAAG,EAAE;gBACtB,mBAAmB,CAAC,SAAS,CAAC,CAAC;YACjC,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,OAAO,GAAG,EAAE;YACV,oBAAoB,CAAC,KAAK,CAAC,CAAC;QAC9B,CAAC,CAAC;IACJ,CAAC,EAAE,CAAC,eAAe,EAAE,IAAI,CAAC,CAAC,CAAC;IAE5B,IAAA,4BAAqB,EAAC,GAAG,EAAE;QACzB,IAAI,CAAC,IAAI,IAAI,CAAC,eAAe,EAAE,CAAC;YAC9B,OAAO,SAAS,CAAC;QACnB,CAAC;QAED;;;WAGG;QACH,IAAI,IAAI,IAAI,OAAO,IAAI,gBAAgB,KAAK,MAAM,EAAE,CAAC;YACnD,mBAAmB,CAAC,UAAU,CAAC,CAAC;QAClC,CAAC;QAED;;;;WAIG;QACH,MAAM,KAAK,GAAG,qBAAqB,CAAC,GAAG,EAAE;YACvC,mBAAmB,CAAC,MAAM,CAAC,CAAC;QAC9B,CAAC,CAAC,CAAC;QAEH,OAAO,GAAG,EAAE;YACV,oBAAoB,CAAC,KAAK,CAAC,CAAC;QAC9B,CAAC,CAAC;IACJ,CAAC,EAAE,CAAC,eAAe,EAAE,IAAI,EAAE,OAAO,EAAE,mBAAmB,EAAE,gBAAgB,CAAC,CAAC,CAAC;IAE5E,OAAO,IAAA,eAAO,EACZ,GAAG,EAAE,CAAC,CAAC;QACL,OAAO;QACP,UAAU;QACV,gBAAgB;KACjB,CAAC,EACF,CAAC,OAAO,EAAE,gBAAgB,CAAC,CAC5B,CAAC;AACJ,CAAC"}
@@ -71,7 +71,7 @@ exports.ProgressBar = (0, react_1.forwardRef)((_a, ref) => {
71
71
  var { size = "medium", value = 0, valueMax = 100, "aria-labelledby": ariaLabelledBy, "aria-label": ariaLabel, className, simulated } = _a, rest = __rest(_a, ["size", "value", "valueMax", "aria-labelledby", "aria-label", "className", "simulated"]);
72
72
  const { cn } = (0, Theme_1.useRenameCSS)();
73
73
  const translateX = 100 - (Math.round(value) / valueMax) * 100;
74
- const onTimeoutRef = (0, react_1.useRef)();
74
+ const onTimeoutRef = (0, react_1.useRef)(undefined);
75
75
  onTimeoutRef.current = simulated === null || simulated === void 0 ? void 0 : simulated.onTimeout;
76
76
  const translate = (0, i18n_hooks_1.useI18n)("ProgressBar");
77
77
  (0, react_1.useEffect)(() => {
@@ -1 +1 @@
1
- {"version":3,"file":"ProgressBar.js","sourceRoot":"","sources":["../../src/progress-bar/ProgressBar.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ProgressBar.js","sourceRoot":"","sources":["../../src/progress-bar/ProgressBar.tsx"],"names":[],"mappings":"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"}
@@ -19,11 +19,11 @@ export interface ReadMoreProps extends React.ButtonHTMLAttributes<HTMLButtonElem
19
19
  */
20
20
  defaultOpen?: boolean;
21
21
  /**
22
- * Callback for current open-state
22
+ * Callback for current open-state.
23
23
  */
24
24
  onOpenChange?: (open: boolean) => void;
25
25
  /**
26
- * Changes fontsize for content.
26
+ * Changes font size for content.
27
27
  * @default "medium"
28
28
  */
29
29
  size?: "large" | "medium" | "small";
@@ -34,14 +34,7 @@ export interface ReadMoreProps extends React.ButtonHTMLAttributes<HTMLButtonElem
34
34
  * @see 🏷️ {@link ReadMoreProps}
35
35
  *
36
36
  * @example
37
- * // Default
38
37
  * <ReadMore header="Dette regnes som helsemessige begrensninger">
39
- * Med helsemessige begrensninger mener vi funksjonshemming, sykdom...
40
- * </ReadMore>
41
- *
42
- * @example
43
- * // Litt mindre versjon
44
- * <ReadMore size="small" header="Dette regnes som helsemessige begrensninger">
45
38
  * Med helsemessige begrensninger mener vi funksjonshemming, sykdom...
46
39
  * </ReadMore>
47
40
  */
@@ -57,14 +57,7 @@ const useControllableState_1 = require("../util/hooks/useControllableState");
57
57
  * @see 🏷️ {@link ReadMoreProps}
58
58
  *
59
59
  * @example
60
- * // Default
61
60
  * <ReadMore header="Dette regnes som helsemessige begrensninger">
62
- * Med helsemessige begrensninger mener vi funksjonshemming, sykdom...
63
- * </ReadMore>
64
- *
65
- * @example
66
- * // Litt mindre versjon
67
- * <ReadMore size="small" header="Dette regnes som helsemessige begrensninger">
68
61
  * Med helsemessige begrensninger mener vi funksjonshemming, sykdom...
69
62
  * </ReadMore>
70
63
  */
@@ -83,7 +76,7 @@ exports.ReadMore = (0, react_1.forwardRef)((_a, ref) => {
83
76
  }), onClick: (0, composeEventHandlers_1.composeEventHandlers)(onClick, () => _setOpen((x) => !x)), "aria-expanded": _open, "data-state": _open ? "open" : "closed" }),
84
77
  react_1.default.createElement(aksel_icons_1.ChevronDownIcon, { className: cn("navds-read-more__expand-icon"), "aria-hidden": true }),
85
78
  react_1.default.createElement("span", null, header)),
86
- react_1.default.createElement(typography_1.BodyLong, { as: "div", "aria-hidden": !_open, className: cn("navds-read-more__content", {
79
+ react_1.default.createElement(typography_1.BodyLong, { as: "div", tabIndex: 0, className: cn("navds-read-more__content", {
87
80
  "navds-read-more__content--closed": !_open,
88
81
  }), size: typoSize, "data-state": _open ? "open" : "closed" }, children)));
89
82
  });
@@ -1 +1 @@
1
- {"version":3,"file":"ReadMore.js","sourceRoot":"","sources":["../../src/read-more/ReadMore.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,+CAA0C;AAC1C,qDAAsD;AACtD,0CAA8C;AAC9C,8CAAyC;AACzC,uEAAoE;AACpE,6EAA0E;AAiC1E;;;;;;;;;;;;;;;;GAgBG;AACU,QAAA,QAAQ,GAAG,IAAA,kBAAU,EAChC,CACE,EAUC,EACD,GAAG,EACH,EAAE;QAZF,EACE,SAAS,EACT,MAAM,EACN,QAAQ,EACR,IAAI,EACJ,WAAW,GAAG,KAAK,EACnB,OAAO,EACP,IAAI,GAAG,QAAQ,EACf,YAAY,OAEb,EADI,IAAI,cATT,6FAUC,CADQ;IAIT,MAAM,EAAE,EAAE,EAAE,GAAG,IAAA,oBAAY,GAAE,CAAC;IAC9B,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,IAAA,2CAAoB,EAAC;QAC7C,YAAY,EAAE,WAAW;QACzB,KAAK,EAAE,IAAI;QACX,QAAQ,EAAE,YAAY;KACvB,CAAC,CAAC;IAEH,MAAM,QAAQ,GAAG,IAAI,KAAK,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC;IAEvD,OAAO,CACL,uCACE,SAAS,EAAE,EAAE,CACX,iBAAiB,EACjB,oBAAoB,IAAI,EAAE,EAC1B,SAAS,EACT,EAAE,uBAAuB,EAAE,KAAK,EAAE,CACnC,iBACW,KAAK;QAEjB,0DACM,IAAI,IACR,GAAG,EAAE,GAAG,EACR,IAAI,EAAC,QAAQ,EACb,SAAS,EAAE,EAAE,CAAC,yBAAyB,EAAE,kBAAkB,EAAE;gBAC3D,yBAAyB,EAAE,IAAI,KAAK,OAAO;aAC5C,CAAC,EACF,OAAO,EAAE,IAAA,2CAAoB,EAAC,OAAO,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,mBAClD,KAAK,gBACR,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ;YAErC,8BAAC,6BAAe,IACd,SAAS,EAAE,EAAE,CAAC,8BAA8B,CAAC,wBAE7C;YACF,4CAAO,MAAM,CAAQ,CACd;QAET,8BAAC,qBAAQ,IACP,EAAE,EAAC,KAAK,iBACK,CAAC,KAAK,EACnB,SAAS,EAAE,EAAE,CAAC,0BAA0B,EAAE;gBACxC,kCAAkC,EAAE,CAAC,KAAK;aAC3C,CAAC,EACF,IAAI,EAAE,QAAQ,gBACF,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,IAEpC,QAAQ,CACA,CACP,CACP,CAAC;AACJ,CAAC,CACF,CAAC;AAEF,kBAAe,gBAAQ,CAAC"}
1
+ {"version":3,"file":"ReadMore.js","sourceRoot":"","sources":["../../src/read-more/ReadMore.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,+CAA0C;AAC1C,qDAAsD;AACtD,0CAA8C;AAC9C,8CAAyC;AACzC,uEAAoE;AACpE,6EAA0E;AAiC1E;;;;;;;;;GASG;AACU,QAAA,QAAQ,GAAG,IAAA,kBAAU,EAChC,CACE,EAUgB,EAChB,GAAG,EACH,EAAE;QAZF,EACE,SAAS,EACT,MAAM,EACN,QAAQ,EACR,IAAI,EACJ,WAAW,GAAG,KAAK,EACnB,OAAO,EACP,IAAI,GAAG,QAAQ,EACf,YAAY,OAEE,EADX,IAAI,cATT,6FAUC,CADQ;IAIT,MAAM,EAAE,EAAE,EAAE,GAAG,IAAA,oBAAY,GAAE,CAAC;IAC9B,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,IAAA,2CAAoB,EAAC;QAC7C,YAAY,EAAE,WAAW;QACzB,KAAK,EAAE,IAAI;QACX,QAAQ,EAAE,YAAY;KACvB,CAAC,CAAC;IAEH,MAAM,QAAQ,GAAG,IAAI,KAAK,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC;IAEvD,OAAO,CACL,uCACE,SAAS,EAAE,EAAE,CACX,iBAAiB,EACjB,oBAAoB,IAAI,EAAE,EAC1B,SAAS,EACT,EAAE,uBAAuB,EAAE,KAAK,EAAE,CACnC,iBACW,KAAK;QAEjB,0DACM,IAAI,IACR,GAAG,EAAE,GAAG,EACR,IAAI,EAAC,QAAQ,EACb,SAAS,EAAE,EAAE,CAAC,yBAAyB,EAAE,kBAAkB,EAAE;gBAC3D,yBAAyB,EAAE,IAAI,KAAK,OAAO;aAC5C,CAAC,EACF,OAAO,EAAE,IAAA,2CAAoB,EAAC,OAAO,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,mBAClD,KAAK,gBACR,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ;YAErC,8BAAC,6BAAe,IACd,SAAS,EAAE,EAAE,CAAC,8BAA8B,CAAC,wBAE7C;YACF,4CAAO,MAAM,CAAQ,CACd;QAET,8BAAC,qBAAQ,IACP,EAAE,EAAC,KAAK,EACR,QAAQ,EAAE,CAAC,EACX,SAAS,EAAE,EAAE,CAAC,0BAA0B,EAAE;gBACxC,kCAAkC,EAAE,CAAC,KAAK;aAC3C,CAAC,EACF,IAAI,EAAE,QAAQ,gBACF,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,IAEpC,QAAQ,CACA,CACP,CACP,CAAC;AACJ,CAAC,CACF,CAAC;AAEF,kBAAe,gBAAQ,CAAC"}