@dbcdk/react-components 0.0.98 → 0.0.102
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.
- package/dist/components/accordion/Accordion.d.ts +3 -1
- package/dist/components/accordion/components/AccordionRow.d.ts +3 -1
- package/dist/components/card/Card.d.ts +2 -0
- package/dist/components/headline/Headline.d.ts +2 -1
- package/dist/components/inline-status/InlineStatus.d.ts +11 -0
- package/dist/components/page/Page.d.ts +3 -1
- package/dist/components/page-layout/components/{layout-footer/LayoutFooter.d.ts → footer/Footer.d.ts} +5 -4
- package/dist/components/segmented-progress-bar/SegmentedProgressBar.d.ts +2 -1
- package/dist/index.cjs +630 -547
- package/dist/index.css +216 -70
- package/dist/index.d.ts +2 -1
- package/dist/index.js +180 -98
- package/dist/styles/styles.css +7 -3
- package/dist/styles/themes/dbc/colors.css +14 -9
- package/dist/styles.css +7 -3
- package/dist/tanstack.cjs +114 -114
- package/dist/tanstack.css +12 -8
- package/dist/tanstack.js +34 -34
- package/package.json +1 -1
- package/dist/components/page-layout/components/page-layout-hero/PageLayoutHero.d.ts +0 -1
package/dist/index.cjs
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var
|
|
3
|
+
var React19 = require('react');
|
|
4
4
|
var jsxRuntime = require('react/jsx-runtime');
|
|
5
5
|
var lucideReact = require('lucide-react');
|
|
6
6
|
var reactDom = require('react-dom');
|
|
@@ -23,7 +23,7 @@ function _interopNamespace(e) {
|
|
|
23
23
|
return Object.freeze(n);
|
|
24
24
|
}
|
|
25
25
|
|
|
26
|
-
var
|
|
26
|
+
var React19__namespace = /*#__PURE__*/_interopNamespace(React19);
|
|
27
27
|
|
|
28
28
|
// src/components/stack/Stack.module.css
|
|
29
29
|
var Stack_default = {
|
|
@@ -43,7 +43,7 @@ var Stack_default = {
|
|
|
43
43
|
mobileJustifyBetween: "Stack_mobileJustifyBetween",
|
|
44
44
|
mobileWrap: "Stack_mobileWrap"
|
|
45
45
|
};
|
|
46
|
-
var Stack =
|
|
46
|
+
var Stack = React19.forwardRef(function Stack2({
|
|
47
47
|
as,
|
|
48
48
|
direction,
|
|
49
49
|
gap,
|
|
@@ -82,7 +82,7 @@ var Stack = React20.forwardRef(function Stack2({
|
|
|
82
82
|
var Tooltip_default = {
|
|
83
83
|
bubble: "Tooltip_bubble"
|
|
84
84
|
};
|
|
85
|
-
var TooltipContext =
|
|
85
|
+
var TooltipContext = React19.createContext(null);
|
|
86
86
|
var VIEWPORT_PADDING = 8;
|
|
87
87
|
var SHOW_DELAY_MS = 500;
|
|
88
88
|
function clamp(n, min, max) {
|
|
@@ -134,9 +134,9 @@ function shallowEqualActive(a, b) {
|
|
|
134
134
|
return a.id === b.id && a.open === b.open && a.content === b.content && a.placement === b.placement && a.offset === b.offset && a.triggerEl === b.triggerEl;
|
|
135
135
|
}
|
|
136
136
|
function TooltipProvider({ children }) {
|
|
137
|
-
const [active, setActive] =
|
|
138
|
-
const showTimerRef =
|
|
139
|
-
const show =
|
|
137
|
+
const [active, setActive] = React19.useState(null);
|
|
138
|
+
const showTimerRef = React19.useRef(null);
|
|
139
|
+
const show = React19.useCallback((next) => {
|
|
140
140
|
if (showTimerRef.current) clearTimeout(showTimerRef.current);
|
|
141
141
|
showTimerRef.current = setTimeout(() => {
|
|
142
142
|
showTimerRef.current = null;
|
|
@@ -146,7 +146,7 @@ function TooltipProvider({ children }) {
|
|
|
146
146
|
});
|
|
147
147
|
}, SHOW_DELAY_MS);
|
|
148
148
|
}, []);
|
|
149
|
-
const hide =
|
|
149
|
+
const hide = React19.useCallback((id) => {
|
|
150
150
|
if (showTimerRef.current) {
|
|
151
151
|
clearTimeout(showTimerRef.current);
|
|
152
152
|
showTimerRef.current = null;
|
|
@@ -156,34 +156,34 @@ function TooltipProvider({ children }) {
|
|
|
156
156
|
return null;
|
|
157
157
|
});
|
|
158
158
|
}, []);
|
|
159
|
-
const update =
|
|
159
|
+
const update = React19.useCallback((id, patch) => {
|
|
160
160
|
setActive((curr) => {
|
|
161
161
|
if (!curr || curr.id !== id) return curr;
|
|
162
162
|
const proposed = { ...curr, ...patch };
|
|
163
163
|
return shallowEqualActive(curr, proposed) ? curr : proposed;
|
|
164
164
|
});
|
|
165
165
|
}, []);
|
|
166
|
-
const value =
|
|
166
|
+
const value = React19.useMemo(() => ({ show, hide, update, active }), [show, hide, update, active]);
|
|
167
167
|
return /* @__PURE__ */ jsxRuntime.jsxs(TooltipContext.Provider, { value, children: [
|
|
168
168
|
children,
|
|
169
169
|
/* @__PURE__ */ jsxRuntime.jsx(TooltipLayer, {})
|
|
170
170
|
] });
|
|
171
171
|
}
|
|
172
172
|
function TooltipLayer() {
|
|
173
|
-
const ctx =
|
|
173
|
+
const ctx = React19.useContext(TooltipContext);
|
|
174
174
|
const active = ctx == null ? void 0 : ctx.active;
|
|
175
|
-
const bubbleRef =
|
|
176
|
-
const [mounted, setMounted] =
|
|
177
|
-
const [open, setOpen] =
|
|
178
|
-
const [visible, setVisible] =
|
|
179
|
-
const [placement, setPlacement] =
|
|
180
|
-
const [pos, setPos] =
|
|
181
|
-
const lastPlacementRef =
|
|
182
|
-
const lastPosRef =
|
|
183
|
-
const lastActiveIdRef =
|
|
184
|
-
const rafRef =
|
|
185
|
-
|
|
186
|
-
const recompute =
|
|
175
|
+
const bubbleRef = React19.useRef(null);
|
|
176
|
+
const [mounted, setMounted] = React19.useState(false);
|
|
177
|
+
const [open, setOpen] = React19.useState(false);
|
|
178
|
+
const [visible, setVisible] = React19.useState(false);
|
|
179
|
+
const [placement, setPlacement] = React19.useState("top");
|
|
180
|
+
const [pos, setPos] = React19.useState({ top: 0, left: 0 });
|
|
181
|
+
const lastPlacementRef = React19.useRef("top");
|
|
182
|
+
const lastPosRef = React19.useRef({ top: 0, left: 0 });
|
|
183
|
+
const lastActiveIdRef = React19.useRef(null);
|
|
184
|
+
const rafRef = React19.useRef(null);
|
|
185
|
+
React19.useEffect(() => setMounted(true), []);
|
|
186
|
+
const recompute = React19.useCallback(() => {
|
|
187
187
|
if (!(active == null ? void 0 : active.open)) return;
|
|
188
188
|
const trigger = active.triggerEl;
|
|
189
189
|
const bubble = bubbleRef.current;
|
|
@@ -232,13 +232,13 @@ function TooltipLayer() {
|
|
|
232
232
|
}
|
|
233
233
|
if (!visible) setVisible(true);
|
|
234
234
|
}, [active == null ? void 0 : active.open, active == null ? void 0 : active.triggerEl, active == null ? void 0 : active.placement, active == null ? void 0 : active.offset, visible]);
|
|
235
|
-
|
|
235
|
+
React19.useEffect(() => {
|
|
236
236
|
const nextOpen = !!(active == null ? void 0 : active.open);
|
|
237
237
|
setOpen((prev) => prev === nextOpen ? prev : nextOpen);
|
|
238
238
|
if (nextOpen) setVisible(false);
|
|
239
239
|
if (!nextOpen) lastActiveIdRef.current = null;
|
|
240
240
|
}, [active == null ? void 0 : active.open]);
|
|
241
|
-
|
|
241
|
+
React19.useLayoutEffect(() => {
|
|
242
242
|
var _a;
|
|
243
243
|
const id = (_a = active == null ? void 0 : active.id) != null ? _a : null;
|
|
244
244
|
if (!id) return;
|
|
@@ -255,7 +255,7 @@ function TooltipLayer() {
|
|
|
255
255
|
}
|
|
256
256
|
};
|
|
257
257
|
}, [active == null ? void 0 : active.id, recompute]);
|
|
258
|
-
|
|
258
|
+
React19.useLayoutEffect(() => {
|
|
259
259
|
if (!open) return;
|
|
260
260
|
if (rafRef.current) cancelAnimationFrame(rafRef.current);
|
|
261
261
|
rafRef.current = requestAnimationFrame(recompute);
|
|
@@ -276,7 +276,7 @@ function TooltipLayer() {
|
|
|
276
276
|
ro.disconnect();
|
|
277
277
|
};
|
|
278
278
|
}, [open, recompute, active == null ? void 0 : active.triggerEl]);
|
|
279
|
-
|
|
279
|
+
React19.useEffect(() => {
|
|
280
280
|
if (!open || !active) return;
|
|
281
281
|
const onKeyDown = (e) => {
|
|
282
282
|
if (e.key === "Escape") ctx.hide(active.id);
|
|
@@ -308,7 +308,7 @@ function TooltipLayer() {
|
|
|
308
308
|
|
|
309
309
|
// src/components/overlay/tooltip/useTooltipTrigger.tsx
|
|
310
310
|
function useTooltipTrigger(options) {
|
|
311
|
-
const ctx =
|
|
311
|
+
const ctx = React19.useContext(TooltipContext);
|
|
312
312
|
if (!ctx) throw new Error("useTooltipTrigger must be used within <TooltipProvider>.");
|
|
313
313
|
const {
|
|
314
314
|
content,
|
|
@@ -321,21 +321,21 @@ function useTooltipTrigger(options) {
|
|
|
321
321
|
focusOpenMode = "focus-visible",
|
|
322
322
|
closeOnPointerDown = true
|
|
323
323
|
} = options;
|
|
324
|
-
const id =
|
|
325
|
-
const triggerElRef =
|
|
324
|
+
const id = React19.useId();
|
|
325
|
+
const triggerElRef = React19.useRef(null);
|
|
326
326
|
const isControlled = open !== void 0;
|
|
327
|
-
const [uncontrolledOpen, setUncontrolledOpen] =
|
|
327
|
+
const [uncontrolledOpen, setUncontrolledOpen] = React19.useState(defaultOpen);
|
|
328
328
|
const isOpen = isControlled ? !!open : uncontrolledOpen;
|
|
329
|
-
const openTimer =
|
|
330
|
-
const closeTimer =
|
|
329
|
+
const openTimer = React19.useRef(null);
|
|
330
|
+
const closeTimer = React19.useRef(null);
|
|
331
331
|
const clearTimers = () => {
|
|
332
332
|
if (openTimer.current) window.clearTimeout(openTimer.current);
|
|
333
333
|
if (closeTimer.current) window.clearTimeout(closeTimer.current);
|
|
334
334
|
openTimer.current = null;
|
|
335
335
|
closeTimer.current = null;
|
|
336
336
|
};
|
|
337
|
-
const lastSentRef =
|
|
338
|
-
const show =
|
|
337
|
+
const lastSentRef = React19.useRef(null);
|
|
338
|
+
const show = React19.useCallback(() => {
|
|
339
339
|
if (!content) return;
|
|
340
340
|
ctx.show({
|
|
341
341
|
id,
|
|
@@ -346,17 +346,17 @@ function useTooltipTrigger(options) {
|
|
|
346
346
|
});
|
|
347
347
|
lastSentRef.current = { content, placement, offset };
|
|
348
348
|
}, [ctx, id, content, placement, offset]);
|
|
349
|
-
const hide =
|
|
349
|
+
const hide = React19.useCallback(() => {
|
|
350
350
|
ctx.hide(id);
|
|
351
351
|
}, [ctx, id]);
|
|
352
|
-
|
|
352
|
+
React19.useEffect(() => {
|
|
353
353
|
if (!isOpen) {
|
|
354
354
|
hide();
|
|
355
355
|
return;
|
|
356
356
|
}
|
|
357
357
|
show();
|
|
358
358
|
}, [isOpen, show, hide]);
|
|
359
|
-
|
|
359
|
+
React19.useEffect(() => {
|
|
360
360
|
var _a;
|
|
361
361
|
if (!isOpen) return;
|
|
362
362
|
if (((_a = ctx.active) == null ? void 0 : _a.id) !== id) return;
|
|
@@ -426,7 +426,6 @@ var Button_default = {
|
|
|
426
426
|
rounded: "Button_rounded",
|
|
427
427
|
link: "Button_link",
|
|
428
428
|
icon: "Button_icon",
|
|
429
|
-
xs: "Button_xs",
|
|
430
429
|
sm: "Button_sm",
|
|
431
430
|
lg: "Button_lg",
|
|
432
431
|
fullWidth: "Button_fullWidth",
|
|
@@ -437,7 +436,8 @@ var Button_default = {
|
|
|
437
436
|
active: "Button_active",
|
|
438
437
|
success: "Button_success",
|
|
439
438
|
danger: "Button_danger",
|
|
440
|
-
inline: "Button_inline"
|
|
439
|
+
inline: "Button_inline",
|
|
440
|
+
xs: "Button_xs"
|
|
441
441
|
};
|
|
442
442
|
function cx(...parts) {
|
|
443
443
|
return parts.filter(Boolean).join(" ");
|
|
@@ -451,7 +451,7 @@ function mergeRefs(...refs) {
|
|
|
451
451
|
}
|
|
452
452
|
};
|
|
453
453
|
}
|
|
454
|
-
var Button =
|
|
454
|
+
var Button = React19__namespace.forwardRef(function Button2({
|
|
455
455
|
variant = "outlined",
|
|
456
456
|
shape = "default",
|
|
457
457
|
size = "md",
|
|
@@ -480,8 +480,8 @@ var Button = React20__namespace.forwardRef(function Button2({
|
|
|
480
480
|
userClassName
|
|
481
481
|
);
|
|
482
482
|
const tooltipEnabled = Boolean(tooltip);
|
|
483
|
-
const childRef = isLink &&
|
|
484
|
-
const mergedRef =
|
|
483
|
+
const childRef = isLink && React19__namespace.isValidElement(children) ? (_a = children.ref) != null ? _a : null : null;
|
|
484
|
+
const mergedRef = React19__namespace.useMemo(() => mergeRefs(childRef, ref), [childRef, ref]);
|
|
485
485
|
const { triggerProps, id: tooltipId } = useTooltipTrigger({
|
|
486
486
|
content: tooltipEnabled ? tooltip : null,
|
|
487
487
|
placement: tooltipPlacement,
|
|
@@ -498,7 +498,7 @@ var Button = React20__namespace.forwardRef(function Button2({
|
|
|
498
498
|
loading && /* @__PURE__ */ jsxRuntime.jsx("span", { style: { display: "flex", opacity: 0.5 }, className: "spin", children: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.LoaderCircle, {}) })
|
|
499
499
|
] });
|
|
500
500
|
let buttonEl;
|
|
501
|
-
if (isLink &&
|
|
501
|
+
if (isLink && React19__namespace.isValidElement(children)) {
|
|
502
502
|
const childClassName = typeof children.props.className === "string" ? children.props.className : "";
|
|
503
503
|
const { disabled, onClick, ...linkButtonProps } = buttonProps;
|
|
504
504
|
const handleClick = (e) => {
|
|
@@ -508,7 +508,7 @@ var Button = React20__namespace.forwardRef(function Button2({
|
|
|
508
508
|
}
|
|
509
509
|
onClick == null ? void 0 : onClick(e);
|
|
510
510
|
};
|
|
511
|
-
buttonEl =
|
|
511
|
+
buttonEl = React19__namespace.cloneElement(children, {
|
|
512
512
|
...linkButtonProps,
|
|
513
513
|
ref: mergedRef,
|
|
514
514
|
className: cx(childClassName, computedClassName, Button_default.buttonLink),
|
|
@@ -691,11 +691,11 @@ function getDeviceSize(width) {
|
|
|
691
691
|
return "desktop";
|
|
692
692
|
}
|
|
693
693
|
function useDeviceSize() {
|
|
694
|
-
const [deviceSize, setDeviceSize] =
|
|
694
|
+
const [deviceSize, setDeviceSize] = React19.useState(() => {
|
|
695
695
|
if (typeof window === "undefined") return "desktop";
|
|
696
696
|
return getDeviceSize(window.innerWidth);
|
|
697
697
|
});
|
|
698
|
-
|
|
698
|
+
React19.useEffect(() => {
|
|
699
699
|
const mediaQueries = [
|
|
700
700
|
window.matchMedia(`(max-width: ${BREAKPOINTS.tablet - 1}px)`),
|
|
701
701
|
window.matchMedia(
|
|
@@ -804,7 +804,8 @@ function Headline({
|
|
|
804
804
|
icon,
|
|
805
805
|
tone,
|
|
806
806
|
variant,
|
|
807
|
-
allowWrap = true
|
|
807
|
+
allowWrap = true,
|
|
808
|
+
id
|
|
808
809
|
}) {
|
|
809
810
|
const Tag = `h${size}`;
|
|
810
811
|
const containerClassName = [Headline_default.headlineContainer, tone ? Headline_default[`tone-${tone}`] : ""].filter(Boolean).join(" ");
|
|
@@ -820,6 +821,7 @@ function Headline({
|
|
|
820
821
|
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
821
822
|
Tag,
|
|
822
823
|
{
|
|
824
|
+
id,
|
|
823
825
|
style: {
|
|
824
826
|
"--font-weight": weight,
|
|
825
827
|
"--marker-color": severity ? SeverityBgColor[severity] : void 0
|
|
@@ -888,7 +890,7 @@ function parseMinWidthPx(minWidth, elForEm) {
|
|
|
888
890
|
}
|
|
889
891
|
return 0;
|
|
890
892
|
}
|
|
891
|
-
var Popover =
|
|
893
|
+
var Popover = React19.forwardRef(function Popover2({
|
|
892
894
|
trigger: Trigger,
|
|
893
895
|
children,
|
|
894
896
|
open,
|
|
@@ -908,39 +910,39 @@ var Popover = React20.forwardRef(function Popover2({
|
|
|
908
910
|
anchorRef,
|
|
909
911
|
overlayRef
|
|
910
912
|
}, ref) {
|
|
911
|
-
const internalId =
|
|
913
|
+
const internalId = React19.useId();
|
|
912
914
|
const resolvedContentId = contentId != null ? contentId : `popover-${internalId}`;
|
|
913
915
|
const isControlled = open !== void 0;
|
|
914
|
-
const [uncontrolledOpen, setUncontrolledOpen] =
|
|
916
|
+
const [uncontrolledOpen, setUncontrolledOpen] = React19.useState(defaultOpen);
|
|
915
917
|
const isOpen = isControlled ? !!open : uncontrolledOpen;
|
|
916
|
-
const [pos, setPos] =
|
|
917
|
-
const [positioned, setPositioned] =
|
|
918
|
-
const [triggerWidth, setTriggerWidth] =
|
|
919
|
-
const containerRef =
|
|
920
|
-
const contentRef =
|
|
921
|
-
const triggerElRef =
|
|
922
|
-
const lastCloseReasonRef =
|
|
923
|
-
const [mounted, setMounted] =
|
|
924
|
-
|
|
925
|
-
const setOpen =
|
|
918
|
+
const [pos, setPos] = React19.useState({ top: 0, left: 0 });
|
|
919
|
+
const [positioned, setPositioned] = React19.useState(false);
|
|
920
|
+
const [triggerWidth, setTriggerWidth] = React19.useState(null);
|
|
921
|
+
const containerRef = React19.useRef(null);
|
|
922
|
+
const contentRef = React19.useRef(null);
|
|
923
|
+
const triggerElRef = React19.useRef(null);
|
|
924
|
+
const lastCloseReasonRef = React19.useRef("unknown");
|
|
925
|
+
const [mounted, setMounted] = React19.useState(false);
|
|
926
|
+
React19.useEffect(() => setMounted(true), []);
|
|
927
|
+
const setOpen = React19.useCallback(
|
|
926
928
|
(next) => {
|
|
927
929
|
if (!isControlled) setUncontrolledOpen(next);
|
|
928
930
|
onOpenChange == null ? void 0 : onOpenChange(next);
|
|
929
931
|
},
|
|
930
932
|
[isControlled, onOpenChange]
|
|
931
933
|
);
|
|
932
|
-
const openPopover =
|
|
934
|
+
const openPopover = React19.useCallback(() => {
|
|
933
935
|
setPositioned(false);
|
|
934
936
|
setOpen(true);
|
|
935
937
|
}, [setOpen]);
|
|
936
|
-
const closePopover =
|
|
938
|
+
const closePopover = React19.useCallback(
|
|
937
939
|
(reason = "api") => {
|
|
938
940
|
lastCloseReasonRef.current = reason;
|
|
939
941
|
setOpen(false);
|
|
940
942
|
},
|
|
941
943
|
[setOpen]
|
|
942
944
|
);
|
|
943
|
-
const togglePopover =
|
|
945
|
+
const togglePopover = React19.useCallback(
|
|
944
946
|
(e) => {
|
|
945
947
|
var _a, _b;
|
|
946
948
|
triggerElRef.current = (_b = (_a = anchorRef == null ? void 0 : anchorRef.current) != null ? _a : e.currentTarget) != null ? _b : containerRef.current;
|
|
@@ -949,7 +951,7 @@ var Popover = React20.forwardRef(function Popover2({
|
|
|
949
951
|
},
|
|
950
952
|
[isOpen, closePopover, openPopover, anchorRef]
|
|
951
953
|
);
|
|
952
|
-
|
|
954
|
+
React19.useImperativeHandle(
|
|
953
955
|
ref,
|
|
954
956
|
() => ({
|
|
955
957
|
close: () => closePopover("api"),
|
|
@@ -958,7 +960,7 @@ var Popover = React20.forwardRef(function Popover2({
|
|
|
958
960
|
}),
|
|
959
961
|
[closePopover, openPopover, isOpen]
|
|
960
962
|
);
|
|
961
|
-
const computeAndSetPosition =
|
|
963
|
+
const computeAndSetPosition = React19.useCallback(() => {
|
|
962
964
|
var _a, _b;
|
|
963
965
|
const content = contentRef.current;
|
|
964
966
|
if (!content) return;
|
|
@@ -1023,11 +1025,11 @@ var Popover = React20.forwardRef(function Popover2({
|
|
|
1023
1025
|
setPos({ top: clampedTop, left: clampedLeft });
|
|
1024
1026
|
setPositioned(true);
|
|
1025
1027
|
}, [anchorRef, edgeBuffer, viewportPadding, minWidth, matchTriggerWidth]);
|
|
1026
|
-
|
|
1028
|
+
React19.useLayoutEffect(() => {
|
|
1027
1029
|
if (!isOpen) return;
|
|
1028
1030
|
computeAndSetPosition();
|
|
1029
1031
|
}, [isOpen, computeAndSetPosition]);
|
|
1030
|
-
|
|
1032
|
+
React19.useEffect(() => {
|
|
1031
1033
|
var _a, _b, _c;
|
|
1032
1034
|
if (!isOpen) return;
|
|
1033
1035
|
const content = contentRef.current;
|
|
@@ -1067,7 +1069,7 @@ var Popover = React20.forwardRef(function Popover2({
|
|
|
1067
1069
|
resizeObserver == null ? void 0 : resizeObserver.disconnect();
|
|
1068
1070
|
};
|
|
1069
1071
|
}, [isOpen, closePopover, computeAndSetPosition, autoFocusContent, anchorRef]);
|
|
1070
|
-
|
|
1072
|
+
React19.useEffect(() => {
|
|
1071
1073
|
var _a, _b;
|
|
1072
1074
|
if (isOpen) return;
|
|
1073
1075
|
if (!returnFocus) return;
|
|
@@ -1075,7 +1077,7 @@ var Popover = React20.forwardRef(function Popover2({
|
|
|
1075
1077
|
(_b = (_a = triggerElRef.current) == null ? void 0 : _a.focus) == null ? void 0 : _b.call(_a);
|
|
1076
1078
|
}, [isOpen, returnFocus]);
|
|
1077
1079
|
const icon = isOpen ? /* @__PURE__ */ jsxRuntime.jsx(lucideReact.ChevronUp, { className: "dbc-muted-text", size: 20 }) : /* @__PURE__ */ jsxRuntime.jsx(lucideReact.ChevronDown, { className: "dbc-muted-text", size: 20 });
|
|
1078
|
-
const setOverlayRef =
|
|
1080
|
+
const setOverlayRef = React19__namespace.useCallback(
|
|
1079
1081
|
(node) => {
|
|
1080
1082
|
assignRef(overlayRef, node);
|
|
1081
1083
|
},
|
|
@@ -1143,10 +1145,10 @@ function NavBar({
|
|
|
1143
1145
|
activeLink,
|
|
1144
1146
|
size
|
|
1145
1147
|
}) {
|
|
1146
|
-
const [mobileOpen, setMobileOpen] =
|
|
1148
|
+
const [mobileOpen, setMobileOpen] = React19.useState(false);
|
|
1147
1149
|
const deviceSize = useDeviceSize();
|
|
1148
1150
|
const isMobile = deviceSize === "mobile";
|
|
1149
|
-
const navRef =
|
|
1151
|
+
const navRef = React19.useRef(null);
|
|
1150
1152
|
const navLinks = items == null ? void 0 : items.filter((i) => i.enabled !== false).map((item, id) => {
|
|
1151
1153
|
const { component: Component, label, icon, href, active, external } = item;
|
|
1152
1154
|
const isActive = activeLink ? href === activeLink : Boolean(active);
|
|
@@ -1259,12 +1261,12 @@ function Avatar({
|
|
|
1259
1261
|
"--text": SeverityTextColor[color],
|
|
1260
1262
|
"--size": fullWidth ? "100%" : sizes[size]
|
|
1261
1263
|
};
|
|
1262
|
-
const pathId =
|
|
1264
|
+
const pathId = React19__namespace.useId();
|
|
1263
1265
|
const renderImage = () => {
|
|
1264
1266
|
if (image) {
|
|
1265
|
-
if (
|
|
1267
|
+
if (React19__namespace.isValidElement(image)) {
|
|
1266
1268
|
const mergedClass = [image.props.className, Avatar_default.image].filter(Boolean).join(" ");
|
|
1267
|
-
return
|
|
1269
|
+
return React19__namespace.cloneElement(image, { className: mergedClass });
|
|
1268
1270
|
}
|
|
1269
1271
|
return /* @__PURE__ */ jsxRuntime.jsx("span", { className: Avatar_default.imageSlot, children: image });
|
|
1270
1272
|
}
|
|
@@ -1436,9 +1438,9 @@ function Checkbox({
|
|
|
1436
1438
|
id,
|
|
1437
1439
|
"data-cy": dataCy
|
|
1438
1440
|
}) {
|
|
1439
|
-
const [internal, setInternal] =
|
|
1441
|
+
const [internal, setInternal] = React19.useState(false);
|
|
1440
1442
|
const isChecked = controlled != null ? controlled : internal;
|
|
1441
|
-
const generatedId =
|
|
1443
|
+
const generatedId = React19.useId();
|
|
1442
1444
|
const controlId = id != null ? id : `checkbox-${generatedId}`;
|
|
1443
1445
|
const toggle = (e) => {
|
|
1444
1446
|
if (disabled) return;
|
|
@@ -1527,7 +1529,7 @@ function RadioButton({
|
|
|
1527
1529
|
id,
|
|
1528
1530
|
"data-cy": dataCy
|
|
1529
1531
|
}) {
|
|
1530
|
-
const generatedId =
|
|
1532
|
+
const generatedId = React19.useId();
|
|
1531
1533
|
const controlId = id != null ? id : `radio-${generatedId}`;
|
|
1532
1534
|
const isChecked = selectedValue !== void 0 ? selectedValue === value : Boolean(checked);
|
|
1533
1535
|
const content = /* @__PURE__ */ jsxRuntime.jsxs("span", { className: RadioButtons_default.container, "data-cy": dataCy, children: [
|
|
@@ -1587,9 +1589,9 @@ var INTERACTIVE_SELECTOR = 'a:not([disabled]), button:not([disabled]), [tabindex
|
|
|
1587
1589
|
function getMenuItems(el) {
|
|
1588
1590
|
return Array.from(el.querySelectorAll(INTERACTIVE_SELECTOR));
|
|
1589
1591
|
}
|
|
1590
|
-
var MenuBase =
|
|
1592
|
+
var MenuBase = React19__namespace.forwardRef(
|
|
1591
1593
|
({ children, className, itemRole = "menuitem", gap, onKeyDown, ...props }, ref) => {
|
|
1592
|
-
const internalRef =
|
|
1594
|
+
const internalRef = React19__namespace.useRef(null);
|
|
1593
1595
|
const handleKeyDown = (e) => {
|
|
1594
1596
|
const ul = internalRef.current;
|
|
1595
1597
|
if (!ul) return;
|
|
@@ -1632,16 +1634,16 @@ var MenuBase = React20__namespace.forwardRef(
|
|
|
1632
1634
|
}
|
|
1633
1635
|
);
|
|
1634
1636
|
MenuBase.displayName = "Menu";
|
|
1635
|
-
var isInteractiveEl = (el) =>
|
|
1637
|
+
var isInteractiveEl = (el) => React19__namespace.isValidElement(el) && (typeof el.type === "string" ? el.type === "a" || el.type === "button" : true);
|
|
1636
1638
|
function applyMenuItemPropsToElement(child, opts) {
|
|
1637
1639
|
var _a, _b, _c, _d;
|
|
1638
1640
|
const { active, selected, disabled, role, tabIndex = 0, className } = opts;
|
|
1639
1641
|
const childClass = [Menu_default.item, active ? Menu_default.active : "", selected ? Menu_default.selected : ""].filter(Boolean).join(" ");
|
|
1640
|
-
const nextImmediate =
|
|
1642
|
+
const nextImmediate = React19__namespace.cloneElement(child, {
|
|
1641
1643
|
className: [child.props.className, Menu_default.interactiveChild, className].filter(Boolean).join(" ")
|
|
1642
1644
|
});
|
|
1643
1645
|
if (typeof child.type === "string" && (child.type === "a" || child.type === "button")) {
|
|
1644
|
-
return
|
|
1646
|
+
return React19__namespace.cloneElement(child, {
|
|
1645
1647
|
role: (_a = child.props.role) != null ? _a : role,
|
|
1646
1648
|
tabIndex: (_b = child.props.tabIndex) != null ? _b : tabIndex,
|
|
1647
1649
|
"aria-selected": selected || void 0,
|
|
@@ -1650,7 +1652,7 @@ function applyMenuItemPropsToElement(child, opts) {
|
|
|
1650
1652
|
...child.type === "button" ? { disabled } : {}
|
|
1651
1653
|
});
|
|
1652
1654
|
}
|
|
1653
|
-
return
|
|
1655
|
+
return React19__namespace.cloneElement(nextImmediate, {
|
|
1654
1656
|
role: (_c = nextImmediate.props.role) != null ? _c : role,
|
|
1655
1657
|
tabIndex: (_d = nextImmediate.props.tabIndex) != null ? _d : tabIndex,
|
|
1656
1658
|
"aria-selected": selected || void 0,
|
|
@@ -1659,7 +1661,7 @@ function applyMenuItemPropsToElement(child, opts) {
|
|
|
1659
1661
|
disabled
|
|
1660
1662
|
});
|
|
1661
1663
|
}
|
|
1662
|
-
var MenuItem =
|
|
1664
|
+
var MenuItem = React19__namespace.forwardRef(
|
|
1663
1665
|
({ children, active, selected, disabled, className, itemRole, variant, ...liProps }, ref) => {
|
|
1664
1666
|
const resolvedRole = itemRole != null ? itemRole : "menuitem";
|
|
1665
1667
|
const isBordered = variant === "bordered";
|
|
@@ -1697,7 +1699,7 @@ var MenuItem = React20__namespace.forwardRef(
|
|
|
1697
1699
|
}
|
|
1698
1700
|
);
|
|
1699
1701
|
MenuItem.displayName = "Menu.Item";
|
|
1700
|
-
var MenuCheckItem =
|
|
1702
|
+
var MenuCheckItem = React19__namespace.forwardRef(
|
|
1701
1703
|
({
|
|
1702
1704
|
label,
|
|
1703
1705
|
checked,
|
|
@@ -1763,7 +1765,7 @@ var MenuCheckItem = React20__namespace.forwardRef(
|
|
|
1763
1765
|
}
|
|
1764
1766
|
);
|
|
1765
1767
|
MenuCheckItem.displayName = "Menu.CheckItem";
|
|
1766
|
-
var MenuRadioItem =
|
|
1768
|
+
var MenuRadioItem = React19__namespace.forwardRef(
|
|
1767
1769
|
({ name, value, checked, disabled, label, onValueChange, className, ...liProps }, ref) => {
|
|
1768
1770
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
1769
1771
|
"li",
|
|
@@ -1803,7 +1805,7 @@ var MenuRadioItem = React20__namespace.forwardRef(
|
|
|
1803
1805
|
}
|
|
1804
1806
|
);
|
|
1805
1807
|
MenuRadioItem.displayName = "Menu.RadioItem";
|
|
1806
|
-
var MenuSeparator =
|
|
1808
|
+
var MenuSeparator = React19__namespace.forwardRef(
|
|
1807
1809
|
({ className, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
1808
1810
|
"li",
|
|
1809
1811
|
{
|
|
@@ -1815,7 +1817,7 @@ var MenuSeparator = React20__namespace.forwardRef(
|
|
|
1815
1817
|
)
|
|
1816
1818
|
);
|
|
1817
1819
|
MenuSeparator.displayName = "Menu.Separator";
|
|
1818
|
-
var MenuHeader =
|
|
1820
|
+
var MenuHeader = React19__namespace.forwardRef(
|
|
1819
1821
|
({ className, children, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
1820
1822
|
"li",
|
|
1821
1823
|
{
|
|
@@ -1945,9 +1947,9 @@ function Chip({
|
|
|
1945
1947
|
selected = false,
|
|
1946
1948
|
onClose
|
|
1947
1949
|
}) {
|
|
1948
|
-
const [chipWidth, setChipWidth] =
|
|
1949
|
-
const chipRef =
|
|
1950
|
-
|
|
1950
|
+
const [chipWidth, setChipWidth] = React19.useState(void 0);
|
|
1951
|
+
const chipRef = React19.useRef(null);
|
|
1952
|
+
React19.useEffect(() => {
|
|
1951
1953
|
if (chipRef.current) {
|
|
1952
1954
|
setChipWidth(`${chipRef.current.offsetWidth}px`);
|
|
1953
1955
|
}
|
|
@@ -2427,8 +2429,8 @@ function getFirstEnabledId(items) {
|
|
|
2427
2429
|
}
|
|
2428
2430
|
function normalizeFromChildren(children) {
|
|
2429
2431
|
const items = [];
|
|
2430
|
-
|
|
2431
|
-
if (!
|
|
2432
|
+
React19.Children.forEach(children, (child) => {
|
|
2433
|
+
if (!React19.isValidElement(child)) return;
|
|
2432
2434
|
const t = child.type;
|
|
2433
2435
|
if ((t == null ? void 0 : t.__TABS_SLOT__) !== "Item") return;
|
|
2434
2436
|
const props = child.props;
|
|
@@ -2458,24 +2460,24 @@ function Tabs({
|
|
|
2458
2460
|
loading = false,
|
|
2459
2461
|
children
|
|
2460
2462
|
}) {
|
|
2461
|
-
const uid =
|
|
2462
|
-
const sourceTabs =
|
|
2463
|
+
const uid = React19.useId();
|
|
2464
|
+
const sourceTabs = React19.useMemo(() => {
|
|
2463
2465
|
if (tabs && tabs.length) return tabs;
|
|
2464
2466
|
return normalizeFromChildren(children);
|
|
2465
2467
|
}, [tabs, children]);
|
|
2466
|
-
const visibleTabs =
|
|
2468
|
+
const visibleTabs = React19.useMemo(() => sourceTabs.filter((t) => !t.hidden), [sourceTabs]);
|
|
2467
2469
|
const isControlled = value !== void 0;
|
|
2468
|
-
const [internalValue, setInternalValue] =
|
|
2470
|
+
const [internalValue, setInternalValue] = React19.useState(() => {
|
|
2469
2471
|
return defaultValue != null ? defaultValue : getFirstEnabledId(visibleTabs);
|
|
2470
2472
|
});
|
|
2471
2473
|
const currentValue = isControlled ? value : internalValue;
|
|
2472
|
-
const activeIndex =
|
|
2474
|
+
const activeIndex = React19.useMemo(() => {
|
|
2473
2475
|
if (!visibleTabs.length) return -1;
|
|
2474
2476
|
const idx = visibleTabs.findIndex((t) => t.id === currentValue);
|
|
2475
2477
|
return idx >= 0 ? idx : 0;
|
|
2476
2478
|
}, [visibleTabs, currentValue]);
|
|
2477
2479
|
const activeTab = activeIndex >= 0 ? visibleTabs[activeIndex] : void 0;
|
|
2478
|
-
const setValue =
|
|
2480
|
+
const setValue = React19.useCallback(
|
|
2479
2481
|
(nextId) => {
|
|
2480
2482
|
const idx = visibleTabs.findIndex((t) => t.id === nextId);
|
|
2481
2483
|
const tab = idx >= 0 ? visibleTabs[idx] : void 0;
|
|
@@ -2485,7 +2487,7 @@ function Tabs({
|
|
|
2485
2487
|
},
|
|
2486
2488
|
[visibleTabs, isControlled, onValueChange]
|
|
2487
2489
|
);
|
|
2488
|
-
|
|
2490
|
+
React19.useEffect(() => {
|
|
2489
2491
|
if (!visibleTabs.length) return;
|
|
2490
2492
|
const current = currentValue;
|
|
2491
2493
|
const stillValid = visibleTabs.some((t) => t.id === current && !t.disabled);
|
|
@@ -2494,7 +2496,7 @@ function Tabs({
|
|
|
2494
2496
|
if (next === void 0) return;
|
|
2495
2497
|
setValue(next);
|
|
2496
2498
|
}, [visibleTabs, currentValue, setValue]);
|
|
2497
|
-
const onKeyDownTab =
|
|
2499
|
+
const onKeyDownTab = React19.useCallback(
|
|
2498
2500
|
(e, index) => {
|
|
2499
2501
|
var _a;
|
|
2500
2502
|
const enabled = visibleTabs.filter((t) => !t.disabled);
|
|
@@ -2531,7 +2533,7 @@ function Tabs({
|
|
|
2531
2533
|
"div",
|
|
2532
2534
|
{
|
|
2533
2535
|
className: [Tabs_default.headerContainer, disableTopPadding ? Tabs_default.disableTopPadding : ""].filter(Boolean).join(" "),
|
|
2534
|
-
children: /* @__PURE__ */ jsxRuntime.jsx(Headline, { disableMargin: true, size:
|
|
2536
|
+
children: /* @__PURE__ */ jsxRuntime.jsx(Headline, { disableMargin: true, size: 1, subheader, addition, children: header })
|
|
2535
2537
|
}
|
|
2536
2538
|
) : null,
|
|
2537
2539
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: `${Tabs_default.tabs} ${Tabs_default[variant]} ${panelStyle ? Tabs_default.panelStyle : ""}`, children: [
|
|
@@ -2587,9 +2589,9 @@ function CollapsibleHeadline({
|
|
|
2587
2589
|
weight = 400,
|
|
2588
2590
|
...headlineProps
|
|
2589
2591
|
}) {
|
|
2590
|
-
const generatedId =
|
|
2592
|
+
const generatedId = React19.useId();
|
|
2591
2593
|
const panelId = controls != null ? controls : generatedId;
|
|
2592
|
-
const [internalExpanded, setInternalExpanded] =
|
|
2594
|
+
const [internalExpanded, setInternalExpanded] = React19.useState(() => {
|
|
2593
2595
|
if (!storageKey || typeof window === "undefined") return expanded != null ? expanded : true;
|
|
2594
2596
|
const stored = localStorage.getItem(storageKey);
|
|
2595
2597
|
return stored !== null ? stored === "true" : expanded != null ? expanded : true;
|
|
@@ -2673,8 +2675,8 @@ function getSlotName(el) {
|
|
|
2673
2675
|
function splitSlots(children) {
|
|
2674
2676
|
const slots = {};
|
|
2675
2677
|
const rest = [];
|
|
2676
|
-
|
|
2677
|
-
if (!
|
|
2678
|
+
React19.Children.forEach(children, (child) => {
|
|
2679
|
+
if (!React19.isValidElement(child)) {
|
|
2678
2680
|
if (child != null) rest.push(child);
|
|
2679
2681
|
return;
|
|
2680
2682
|
}
|
|
@@ -2783,12 +2785,12 @@ function Hyperlink(props) {
|
|
|
2783
2785
|
inline ? "" : Hyperlink_default.block
|
|
2784
2786
|
);
|
|
2785
2787
|
if (asChild) {
|
|
2786
|
-
const child =
|
|
2787
|
-
if (!
|
|
2788
|
+
const child = React19__namespace.Children.only(children);
|
|
2789
|
+
if (!React19__namespace.isValidElement(child)) {
|
|
2788
2790
|
throw new Error("Hyperlink with asChild expects a single valid React element as its child.");
|
|
2789
2791
|
}
|
|
2790
2792
|
const childProps = (_a = child.props) != null ? _a : {};
|
|
2791
|
-
return
|
|
2793
|
+
return React19__namespace.cloneElement(child, {
|
|
2792
2794
|
...childProps,
|
|
2793
2795
|
...rest,
|
|
2794
2796
|
className: cx2(childProps.className, linkClassName),
|
|
@@ -2823,15 +2825,15 @@ function Hyperlink(props) {
|
|
|
2823
2825
|
);
|
|
2824
2826
|
}
|
|
2825
2827
|
|
|
2826
|
-
// src/components/page-layout/components/
|
|
2827
|
-
var
|
|
2828
|
-
footer: "
|
|
2829
|
-
inner: "
|
|
2830
|
-
brand: "
|
|
2831
|
-
logoRow: "
|
|
2832
|
-
meta: "
|
|
2833
|
-
part: "
|
|
2834
|
-
links: "
|
|
2828
|
+
// src/components/page-layout/components/footer/Footer.module.css
|
|
2829
|
+
var Footer_default = {
|
|
2830
|
+
footer: "Footer_footer",
|
|
2831
|
+
inner: "Footer_inner",
|
|
2832
|
+
brand: "Footer_brand",
|
|
2833
|
+
logoRow: "Footer_logoRow",
|
|
2834
|
+
meta: "Footer_meta",
|
|
2835
|
+
part: "Footer_part",
|
|
2836
|
+
links: "Footer_links"};
|
|
2835
2837
|
var DEFAULT_META_PARTS = [
|
|
2836
2838
|
"Tempovej 7-11",
|
|
2837
2839
|
"DK-2750 Ballerup",
|
|
@@ -2843,23 +2845,23 @@ var DEFAULT_LINKS = [
|
|
|
2843
2845
|
label: "Kundeservice",
|
|
2844
2846
|
href: "https://kundeservice.dbc.dk",
|
|
2845
2847
|
external: true
|
|
2846
|
-
},
|
|
2847
|
-
{
|
|
2848
|
-
label: "Cookies",
|
|
2849
|
-
href: "/cookies"
|
|
2850
2848
|
}
|
|
2851
2849
|
];
|
|
2852
|
-
function
|
|
2850
|
+
function Footer({
|
|
2853
2851
|
links = DEFAULT_LINKS,
|
|
2854
2852
|
metaParts = DEFAULT_META_PARTS,
|
|
2853
|
+
version,
|
|
2855
2854
|
extraLinks
|
|
2856
2855
|
}) {
|
|
2857
|
-
|
|
2858
|
-
|
|
2859
|
-
|
|
2860
|
-
|
|
2856
|
+
const displayMetaParts = version && metaParts.length > 0 ? metaParts.map(
|
|
2857
|
+
(part, index) => index === metaParts.length - 1 ? `${part} \xB7 ${version}` : part
|
|
2858
|
+
) : metaParts;
|
|
2859
|
+
return /* @__PURE__ */ jsxRuntime.jsx("footer", { className: Footer_default.footer, children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: Footer_default.inner, children: [
|
|
2860
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: Footer_default.brand, children: [
|
|
2861
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: Footer_default.logoRow, children: /* @__PURE__ */ jsxRuntime.jsx(Logo, {}) }),
|
|
2862
|
+
/* @__PURE__ */ jsxRuntime.jsx("address", { className: Footer_default.meta, children: displayMetaParts.map((part) => /* @__PURE__ */ jsxRuntime.jsx("span", { className: Footer_default.part, children: part }, part)) })
|
|
2861
2863
|
] }),
|
|
2862
|
-
/* @__PURE__ */ jsxRuntime.jsxs("nav", { className:
|
|
2864
|
+
/* @__PURE__ */ jsxRuntime.jsxs("nav", { className: Footer_default.links, "aria-label": "Footer navigation", children: [
|
|
2863
2865
|
extraLinks && extraLinks.length > 0 && (extraLinks == null ? void 0 : extraLinks.map((link, index) => /* @__PURE__ */ jsxRuntime.jsx("span", { children: link }, index))),
|
|
2864
2866
|
links.map((link) => /* @__PURE__ */ jsxRuntime.jsx("span", { children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
2865
2867
|
Hyperlink,
|
|
@@ -2937,7 +2939,7 @@ function mergeRefs2(...refs) {
|
|
|
2937
2939
|
}
|
|
2938
2940
|
};
|
|
2939
2941
|
}
|
|
2940
|
-
var Input =
|
|
2942
|
+
var Input = React19.forwardRef(function Input2({
|
|
2941
2943
|
label,
|
|
2942
2944
|
error,
|
|
2943
2945
|
helpText,
|
|
@@ -2971,10 +2973,10 @@ var Input = React20.forwardRef(function Input2({
|
|
|
2971
2973
|
endAdornment,
|
|
2972
2974
|
...inputProps
|
|
2973
2975
|
}, ref) {
|
|
2974
|
-
const inputRef =
|
|
2975
|
-
const reactId =
|
|
2976
|
+
const inputRef = React19.useRef(null);
|
|
2977
|
+
const reactId = React19.useId();
|
|
2976
2978
|
const inputId = id != null ? id : `input-${reactId}`;
|
|
2977
|
-
|
|
2979
|
+
React19.useEffect(() => {
|
|
2978
2980
|
var _a;
|
|
2979
2981
|
if (autoFocus) (_a = inputRef.current) == null ? void 0 : _a.focus();
|
|
2980
2982
|
}, [autoFocus]);
|
|
@@ -3107,7 +3109,7 @@ var SearchBox_default = {
|
|
|
3107
3109
|
suggestionCell: "SearchBox_suggestionCell",
|
|
3108
3110
|
suggestionRowActive: "SearchBox_suggestionRowActive"
|
|
3109
3111
|
};
|
|
3110
|
-
var SearchBox =
|
|
3112
|
+
var SearchBox = React19.forwardRef(function SearchBoxInner({
|
|
3111
3113
|
inputWidth,
|
|
3112
3114
|
maxWidth,
|
|
3113
3115
|
inputSize,
|
|
@@ -3134,24 +3136,24 @@ var SearchBox = React20.forwardRef(function SearchBoxInner({
|
|
|
3134
3136
|
...rest
|
|
3135
3137
|
}, ref) {
|
|
3136
3138
|
const isControlled = value !== void 0;
|
|
3137
|
-
const [draft, setDraft] =
|
|
3138
|
-
const [searchQuery, setSearchQuery] =
|
|
3139
|
-
const [activeIndex, setActiveIndex] =
|
|
3140
|
-
const popoverRef =
|
|
3141
|
-
const internalInputRef =
|
|
3142
|
-
|
|
3139
|
+
const [draft, setDraft] = React19.useState(() => isControlled ? String(value != null ? value : "") : "");
|
|
3140
|
+
const [searchQuery, setSearchQuery] = React19.useState("");
|
|
3141
|
+
const [activeIndex, setActiveIndex] = React19.useState(null);
|
|
3142
|
+
const popoverRef = React19.useRef(null);
|
|
3143
|
+
const internalInputRef = React19.useRef(null);
|
|
3144
|
+
React19.useEffect(() => {
|
|
3143
3145
|
if (typeof ref === "function") {
|
|
3144
3146
|
ref(internalInputRef.current);
|
|
3145
3147
|
} else if (ref) {
|
|
3146
3148
|
ref.current = internalInputRef.current;
|
|
3147
3149
|
}
|
|
3148
3150
|
}, [ref]);
|
|
3149
|
-
|
|
3151
|
+
React19.useEffect(() => {
|
|
3150
3152
|
if (!isControlled) return;
|
|
3151
3153
|
const next = String(value != null ? value : "");
|
|
3152
3154
|
if (next !== draft) setDraft(next);
|
|
3153
3155
|
}, [value]);
|
|
3154
|
-
|
|
3156
|
+
React19.useEffect(() => {
|
|
3155
3157
|
if (!onSearch) return;
|
|
3156
3158
|
if (!debounce) {
|
|
3157
3159
|
setSearchQuery(draft);
|
|
@@ -3164,7 +3166,7 @@ var SearchBox = React20.forwardRef(function SearchBoxInner({
|
|
|
3164
3166
|
}, debounceMs);
|
|
3165
3167
|
return () => clearTimeout(handler);
|
|
3166
3168
|
}, [draft, onSearch, debounce, debounceMs]);
|
|
3167
|
-
|
|
3169
|
+
React19.useEffect(() => {
|
|
3168
3170
|
function handleKeyDown(event) {
|
|
3169
3171
|
var _a;
|
|
3170
3172
|
if (event.key === "k" && (event.metaKey || event.ctrlKey)) {
|
|
@@ -3177,14 +3179,14 @@ var SearchBox = React20.forwardRef(function SearchBoxInner({
|
|
|
3177
3179
|
return () => window.removeEventListener("keydown", handleKeyDown);
|
|
3178
3180
|
}
|
|
3179
3181
|
}, [enableHotkey]);
|
|
3180
|
-
const handleChange =
|
|
3182
|
+
const handleChange = React19__namespace.default.useCallback(
|
|
3181
3183
|
(e) => {
|
|
3182
3184
|
setDraft(e.target.value);
|
|
3183
3185
|
onChange == null ? void 0 : onChange(e);
|
|
3184
3186
|
},
|
|
3185
3187
|
[onChange]
|
|
3186
3188
|
);
|
|
3187
|
-
const handleSelect =
|
|
3189
|
+
const handleSelect = React19__namespace.default.useCallback(
|
|
3188
3190
|
(item) => {
|
|
3189
3191
|
onSelect == null ? void 0 : onSelect(item);
|
|
3190
3192
|
reset();
|
|
@@ -3198,16 +3200,16 @@ var SearchBox = React20.forwardRef(function SearchBoxInner({
|
|
|
3198
3200
|
setActiveIndex(null);
|
|
3199
3201
|
(_a = popoverRef.current) == null ? void 0 : _a.close();
|
|
3200
3202
|
}
|
|
3201
|
-
const handleClear =
|
|
3203
|
+
const handleClear = React19__namespace.default.useCallback(() => {
|
|
3202
3204
|
var _a;
|
|
3203
3205
|
reset();
|
|
3204
3206
|
onSearch == null ? void 0 : onSearch("");
|
|
3205
3207
|
(_a = internalInputRef.current) == null ? void 0 : _a.focus();
|
|
3206
3208
|
}, [onSearch]);
|
|
3207
|
-
|
|
3209
|
+
React19.useEffect(() => {
|
|
3208
3210
|
setActiveIndex(null);
|
|
3209
3211
|
}, [result]);
|
|
3210
|
-
const inputField =
|
|
3212
|
+
const inputField = React19.useMemo(() => {
|
|
3211
3213
|
var _a;
|
|
3212
3214
|
const inputProps = {
|
|
3213
3215
|
...rest,
|
|
@@ -3384,8 +3386,8 @@ function applyTheme(id) {
|
|
|
3384
3386
|
document.documentElement.dataset.theme = id;
|
|
3385
3387
|
}
|
|
3386
3388
|
function useTheme(initialTheme = "system") {
|
|
3387
|
-
const [theme, setTheme] =
|
|
3388
|
-
|
|
3389
|
+
const [theme, setTheme] = React19.useState(null);
|
|
3390
|
+
React19.useEffect(() => {
|
|
3389
3391
|
const themeFromDataAttributes = getTheme();
|
|
3390
3392
|
let resolved = isThemeVariant(themeFromDataAttributes) ? themeFromDataAttributes : initialTheme;
|
|
3391
3393
|
const fromCookie = getCookie(STORAGE_KEY);
|
|
@@ -3403,7 +3405,7 @@ function useTheme(initialTheme = "system") {
|
|
|
3403
3405
|
setTheme(resolved);
|
|
3404
3406
|
persistTheme(resolved);
|
|
3405
3407
|
}, [initialTheme]);
|
|
3406
|
-
const switchTheme =
|
|
3408
|
+
const switchTheme = React19.useCallback((id) => {
|
|
3407
3409
|
applyTheme(id);
|
|
3408
3410
|
setTheme(id);
|
|
3409
3411
|
persistTheme(id);
|
|
@@ -3449,6 +3451,10 @@ function Panel({
|
|
|
3449
3451
|
var Card_default = {
|
|
3450
3452
|
outerContainer: "Card_outerContainer",
|
|
3451
3453
|
container: "Card_container",
|
|
3454
|
+
elevationNone: "Card_elevationNone",
|
|
3455
|
+
elevationXs: "Card_elevationXs",
|
|
3456
|
+
elevationSm: "Card_elevationSm",
|
|
3457
|
+
elevationMd: "Card_elevationMd",
|
|
3452
3458
|
variantDefault: "Card_variantDefault",
|
|
3453
3459
|
variantSubtle: "Card_variantSubtle",
|
|
3454
3460
|
sm: "Card_sm",
|
|
@@ -3576,6 +3582,7 @@ function CardImpl({
|
|
|
3576
3582
|
loading = false,
|
|
3577
3583
|
variant = "default",
|
|
3578
3584
|
size = "md",
|
|
3585
|
+
elevation = "sm",
|
|
3579
3586
|
headerMarker = true,
|
|
3580
3587
|
headerIcon,
|
|
3581
3588
|
headerAddition,
|
|
@@ -3592,6 +3599,7 @@ function CardImpl({
|
|
|
3592
3599
|
width,
|
|
3593
3600
|
headlineSize = 4
|
|
3594
3601
|
}) {
|
|
3602
|
+
var _a;
|
|
3595
3603
|
const outerStyle = width ? {
|
|
3596
3604
|
["--width"]: `${width}%`,
|
|
3597
3605
|
["--gap-share"]: getGapShare(width)
|
|
@@ -3599,6 +3607,7 @@ function CardImpl({
|
|
|
3599
3607
|
const mediaStyle = mediaWidth ? { ["--card-media-width"]: `${mediaWidth}px` } : void 0;
|
|
3600
3608
|
const innerPlacementClass = getInnerPlacementClass(imgPlacement, Card_default);
|
|
3601
3609
|
const variantClass = getVariantClass(variant, Card_default);
|
|
3610
|
+
const elevationClass = (_a = Card_default[`elevation${elevation.charAt(0).toUpperCase()}${elevation.slice(1)}`]) != null ? _a : Card_default.elevationSm;
|
|
3602
3611
|
const hasHeader = !!title || !!headerMeta;
|
|
3603
3612
|
const showSection = !loading && (showSectionDivider || !!sectionTitle);
|
|
3604
3613
|
const showBody = !loading && !!children;
|
|
@@ -3636,7 +3645,7 @@ function CardImpl({
|
|
|
3636
3645
|
] })
|
|
3637
3646
|
] });
|
|
3638
3647
|
const cardContent = link ? /* @__PURE__ */ jsxRuntime.jsx(Hyperlink, { children: link }) : inner;
|
|
3639
|
-
return /* @__PURE__ */ jsxRuntime.jsx("div", { className: `${Card_default.outerContainer} ${Card_default[size]}`, style: outerStyle, children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: `${Card_default.container} ${variantClass}`, children: cardContent }) });
|
|
3648
|
+
return /* @__PURE__ */ jsxRuntime.jsx("div", { className: `${Card_default.outerContainer} ${Card_default[size]}`, style: outerStyle, children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: `${Card_default.container} ${variantClass} ${elevationClass}`, children: cardContent }) });
|
|
3640
3649
|
}
|
|
3641
3650
|
var Card = Object.assign(CardImpl, {
|
|
3642
3651
|
Meta: CardMeta,
|
|
@@ -3682,7 +3691,8 @@ var Page_default = {
|
|
|
3682
3691
|
disableTopPadding: "Page_disableTopPadding",
|
|
3683
3692
|
headerMain: "Page_headerMain",
|
|
3684
3693
|
content: "Page_content",
|
|
3685
|
-
|
|
3694
|
+
contentLoading: "Page_contentLoading",
|
|
3695
|
+
contentBox: "Page_contentBox"
|
|
3686
3696
|
};
|
|
3687
3697
|
|
|
3688
3698
|
// src/components/breadcrumbs/Breadcrumbs.module.css
|
|
@@ -3693,7 +3703,7 @@ function Breadcrumbs({
|
|
|
3693
3703
|
items,
|
|
3694
3704
|
...navProps
|
|
3695
3705
|
}) {
|
|
3696
|
-
return /* @__PURE__ */ jsxRuntime.jsx("nav", { className: Breadcrumbs_default.breadcrumbs, "aria-label": "breadcrumb", ...navProps, children: /* @__PURE__ */ jsxRuntime.jsx("ul", { children: items.map((item, index) => /* @__PURE__ */ jsxRuntime.jsxs(
|
|
3706
|
+
return /* @__PURE__ */ jsxRuntime.jsx("nav", { className: Breadcrumbs_default.breadcrumbs, "aria-label": "breadcrumb", ...navProps, children: /* @__PURE__ */ jsxRuntime.jsx("ul", { children: items.map((item, index) => /* @__PURE__ */ jsxRuntime.jsxs(React19.Fragment, { children: [
|
|
3697
3707
|
/* @__PURE__ */ jsxRuntime.jsxs("li", { children: [
|
|
3698
3708
|
item.icon && item.icon,
|
|
3699
3709
|
item.onClick ? /* @__PURE__ */ jsxRuntime.jsx("button", { onClick: item.onClick, children: item.label }) : /* @__PURE__ */ jsxRuntime.jsx("span", { children: item.label })
|
|
@@ -3709,12 +3719,14 @@ function Page({
|
|
|
3709
3719
|
headerAddition,
|
|
3710
3720
|
breadcrumbs,
|
|
3711
3721
|
disableContentBox,
|
|
3722
|
+
contentBox = false,
|
|
3712
3723
|
disableTopPadding = true,
|
|
3713
3724
|
maxWidth,
|
|
3714
3725
|
containScrolling = false,
|
|
3715
3726
|
children,
|
|
3716
3727
|
loading = false
|
|
3717
3728
|
}) {
|
|
3729
|
+
const showContentBox = contentBox && !disableContentBox;
|
|
3718
3730
|
const maxWidthClass = maxWidth ? Page_default[`maxWidth${maxWidth.charAt(0).toUpperCase()}${maxWidth.slice(1)}`] : "";
|
|
3719
3731
|
const hasHeadline = Boolean(header || subheader || headerAddition);
|
|
3720
3732
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
@@ -3728,7 +3740,7 @@ function Page({
|
|
|
3728
3740
|
Headline,
|
|
3729
3741
|
{
|
|
3730
3742
|
disableMargin: true,
|
|
3731
|
-
size:
|
|
3743
|
+
size: 1,
|
|
3732
3744
|
severity,
|
|
3733
3745
|
icon: headerIcon,
|
|
3734
3746
|
subheader,
|
|
@@ -3737,7 +3749,13 @@ function Page({
|
|
|
3737
3749
|
}
|
|
3738
3750
|
) : null
|
|
3739
3751
|
] }) }),
|
|
3740
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
3752
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
3753
|
+
"div",
|
|
3754
|
+
{
|
|
3755
|
+
className: `${Page_default.content} ${loading ? Page_default.contentLoading : ""} ${showContentBox ? Page_default.contentBox : ""}`,
|
|
3756
|
+
children: loading ? /* @__PURE__ */ jsxRuntime.jsx(SkeletonLoader, { type: "squares", rows: 1, columns: 1 }) : children
|
|
3757
|
+
}
|
|
3758
|
+
)
|
|
3741
3759
|
]
|
|
3742
3760
|
}
|
|
3743
3761
|
);
|
|
@@ -3793,18 +3811,18 @@ function Pagination({
|
|
|
3793
3811
|
showFirstLast = true,
|
|
3794
3812
|
showGoToPage = true
|
|
3795
3813
|
}) {
|
|
3796
|
-
const popoverRef =
|
|
3797
|
-
const pageSizeRef =
|
|
3798
|
-
const formatNumber =
|
|
3799
|
-
const totalPages =
|
|
3814
|
+
const popoverRef = React19.useRef(null);
|
|
3815
|
+
const pageSizeRef = React19.useRef(null);
|
|
3816
|
+
const formatNumber = React19.useCallback((value) => value.toLocaleString(NUMBER_LOCALE), []);
|
|
3817
|
+
const totalPages = React19.useMemo(
|
|
3800
3818
|
() => Math.max(1, Math.ceil(itemsCount / Math.max(1, take))),
|
|
3801
3819
|
[itemsCount, take]
|
|
3802
3820
|
);
|
|
3803
|
-
const currentPage =
|
|
3821
|
+
const currentPage = React19.useMemo(() => {
|
|
3804
3822
|
const p = Math.floor(skip / Math.max(1, take)) + 1;
|
|
3805
3823
|
return Math.min(Math.max(1, p), totalPages);
|
|
3806
3824
|
}, [skip, take, totalPages]);
|
|
3807
|
-
const emit =
|
|
3825
|
+
const emit = React19.useCallback(
|
|
3808
3826
|
(page, nextTake = take) => {
|
|
3809
3827
|
const nextTotalPages = Math.max(1, Math.ceil(itemsCount / Math.max(1, nextTake)));
|
|
3810
3828
|
const clampedPage = Math.min(Math.max(1, page), nextTotalPages);
|
|
@@ -3818,21 +3836,21 @@ function Pagination({
|
|
|
3818
3836
|
},
|
|
3819
3837
|
[onPageChange, take, itemsCount]
|
|
3820
3838
|
);
|
|
3821
|
-
const firstPage =
|
|
3822
|
-
const lastPage =
|
|
3823
|
-
const prevPage =
|
|
3824
|
-
const nextPage =
|
|
3825
|
-
const goToPage =
|
|
3839
|
+
const firstPage = React19.useCallback(() => emit(1), [emit]);
|
|
3840
|
+
const lastPage = React19.useCallback(() => emit(totalPages), [emit, totalPages]);
|
|
3841
|
+
const prevPage = React19.useCallback(() => emit(currentPage - 1), [emit, currentPage]);
|
|
3842
|
+
const nextPage = React19.useCallback(() => emit(currentPage + 1), [emit, currentPage]);
|
|
3843
|
+
const goToPage = React19.useCallback((page) => emit(page), [emit]);
|
|
3826
3844
|
const canPrev = currentPage > 1;
|
|
3827
3845
|
const canNext = currentPage < totalPages;
|
|
3828
|
-
const rangeLabel =
|
|
3846
|
+
const rangeLabel = React19.useMemo(() => {
|
|
3829
3847
|
if (itemsCount <= 0) return "0 af 0";
|
|
3830
3848
|
const first = skip + 1;
|
|
3831
3849
|
const last = Math.min(skip + take, itemsCount);
|
|
3832
3850
|
return `${formatNumber(first)}\u2013${formatNumber(last)} af ${formatNumber(itemsCount)}`;
|
|
3833
3851
|
}, [formatNumber, itemsCount, skip, take]);
|
|
3834
|
-
const pages =
|
|
3835
|
-
const handlePageSizeChange =
|
|
3852
|
+
const pages = React19.useMemo(() => Array.from({ length: totalPages }, (_, i) => i + 1), [totalPages]);
|
|
3853
|
+
const handlePageSizeChange = React19.useCallback((size) => emit(1, size), [emit]);
|
|
3836
3854
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: Pagination_default.container, children: [
|
|
3837
3855
|
showFirstLast && /* @__PURE__ */ jsxRuntime.jsx(
|
|
3838
3856
|
Button,
|
|
@@ -3925,11 +3943,11 @@ function Pagination({
|
|
|
3925
3943
|
)
|
|
3926
3944
|
] });
|
|
3927
3945
|
}
|
|
3928
|
-
var useIsomorphicLayoutEffect = typeof window !== "undefined" ?
|
|
3946
|
+
var useIsomorphicLayoutEffect = typeof window !== "undefined" ? React19.useLayoutEffect : React19.useEffect;
|
|
3929
3947
|
function useViewportFill(ref, { bottomOffset = 0, min = 120, includeMarginTop = false, watchRef } = {}) {
|
|
3930
|
-
const [maxHeight, setMaxHeight] =
|
|
3931
|
-
const raf =
|
|
3932
|
-
const measure =
|
|
3948
|
+
const [maxHeight, setMaxHeight] = React19.useState(min);
|
|
3949
|
+
const raf = React19.useRef(null);
|
|
3950
|
+
const measure = React19.useCallback(() => {
|
|
3933
3951
|
if (typeof window === "undefined" || !ref.current) return;
|
|
3934
3952
|
const el = ref.current;
|
|
3935
3953
|
const rect = el.getBoundingClientRect();
|
|
@@ -3941,7 +3959,7 @@ function useViewportFill(ref, { bottomOffset = 0, min = 120, includeMarginTop =
|
|
|
3941
3959
|
const next = Math.max(min, Math.floor(window.innerHeight - bottomOffset - top));
|
|
3942
3960
|
setMaxHeight((prev) => prev === next ? prev : next);
|
|
3943
3961
|
}, [ref, bottomOffset, min, includeMarginTop]);
|
|
3944
|
-
const scheduleMeasure =
|
|
3962
|
+
const scheduleMeasure = React19.useCallback(() => {
|
|
3945
3963
|
if (typeof window === "undefined") return;
|
|
3946
3964
|
if (raf.current != null) {
|
|
3947
3965
|
cancelAnimationFrame(raf.current);
|
|
@@ -3954,7 +3972,7 @@ function useViewportFill(ref, { bottomOffset = 0, min = 120, includeMarginTop =
|
|
|
3954
3972
|
useIsomorphicLayoutEffect(() => {
|
|
3955
3973
|
measure();
|
|
3956
3974
|
}, [measure]);
|
|
3957
|
-
|
|
3975
|
+
React19.useEffect(() => {
|
|
3958
3976
|
var _a;
|
|
3959
3977
|
if (typeof window === "undefined" || !ref.current) return;
|
|
3960
3978
|
const target = ref.current;
|
|
@@ -3987,7 +4005,7 @@ function useViewportFill(ref, { bottomOffset = 0, min = 120, includeMarginTop =
|
|
|
3987
4005
|
}
|
|
3988
4006
|
};
|
|
3989
4007
|
}, [ref, watchRef, scheduleMeasure]);
|
|
3990
|
-
const style =
|
|
4008
|
+
const style = React19.useMemo(
|
|
3991
4009
|
() => ({
|
|
3992
4010
|
maxHeight,
|
|
3993
4011
|
overflow: "auto"
|
|
@@ -4172,7 +4190,7 @@ function useTableRowInteractions({
|
|
|
4172
4190
|
onRowClick,
|
|
4173
4191
|
onRowSelect
|
|
4174
4192
|
}) {
|
|
4175
|
-
const handleRowClick =
|
|
4193
|
+
const handleRowClick = React19.useCallback(
|
|
4176
4194
|
(e) => {
|
|
4177
4195
|
var _a;
|
|
4178
4196
|
const target = e.target;
|
|
@@ -4189,7 +4207,7 @@ function useTableRowInteractions({
|
|
|
4189
4207
|
},
|
|
4190
4208
|
[canSelect, isSelected, onRowClick, onRowSelect, row, rowId]
|
|
4191
4209
|
);
|
|
4192
|
-
const handleRowKeyDown =
|
|
4210
|
+
const handleRowKeyDown = React19.useCallback(
|
|
4193
4211
|
(e) => {
|
|
4194
4212
|
if (!onRowClick) return;
|
|
4195
4213
|
if (!shouldToggleOnKey(e.key)) return;
|
|
@@ -4306,7 +4324,7 @@ function TableRow({
|
|
|
4306
4324
|
columns.map((column) => {
|
|
4307
4325
|
var _a2, _b, _c, _d;
|
|
4308
4326
|
const allowWrap = shouldAllowWrap(column.allowWrap, isSelected, viewMode);
|
|
4309
|
-
|
|
4327
|
+
column.allowOverflow;
|
|
4310
4328
|
const cellValue = getCellDisplayValue(row, column);
|
|
4311
4329
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
4312
4330
|
"td",
|
|
@@ -4326,7 +4344,7 @@ function TableRow({
|
|
|
4326
4344
|
className: Table_default.cellContent,
|
|
4327
4345
|
"data-align": (_c = column.align) != null ? _c : "left",
|
|
4328
4346
|
"data-vertical-align": (_d = column.verticalAlign) != null ? _d : "top",
|
|
4329
|
-
children:
|
|
4347
|
+
children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: Table_default.cellValueEllipsis, children: cellValue })
|
|
4330
4348
|
}
|
|
4331
4349
|
)
|
|
4332
4350
|
},
|
|
@@ -4561,10 +4579,10 @@ function Table({
|
|
|
4561
4579
|
onPageChange,
|
|
4562
4580
|
...rest
|
|
4563
4581
|
}) {
|
|
4564
|
-
const visibleColumns =
|
|
4565
|
-
const selectionInputName =
|
|
4566
|
-
const internalTableRootRef =
|
|
4567
|
-
const tableRootRefWrapper =
|
|
4582
|
+
const visibleColumns = React19.useMemo(() => getVisibleColumns(columns), [columns]);
|
|
4583
|
+
const selectionInputName = React19.useId();
|
|
4584
|
+
const internalTableRootRef = React19.useRef(null);
|
|
4585
|
+
const tableRootRefWrapper = React19.useRef(tableRootRef);
|
|
4568
4586
|
const hasSelection = Boolean(selectedRows && onRowSelect);
|
|
4569
4587
|
const hasPagination = Boolean(onPageChange && (loading || data.length > 0));
|
|
4570
4588
|
const paginationOffset = hasPagination ? 72 : 0;
|
|
@@ -4574,7 +4592,7 @@ function Table({
|
|
|
4574
4592
|
});
|
|
4575
4593
|
const fillViewportActive = fillViewport && containScrolling && maxHeight >= 500;
|
|
4576
4594
|
const stickyTop = stickyHeader === "app-header" ? "var(--app-header-height, 60px)" : typeof stickyHeader === "number" ? `${stickyHeader}px` : void 0;
|
|
4577
|
-
const setTableRootRef =
|
|
4595
|
+
const setTableRootRef = React19.useCallback((node) => {
|
|
4578
4596
|
internalTableRootRef.current = node;
|
|
4579
4597
|
if (typeof tableRootRefWrapper.current === "function") {
|
|
4580
4598
|
tableRootRefWrapper.current(node);
|
|
@@ -4582,7 +4600,7 @@ function Table({
|
|
|
4582
4600
|
tableRootRefWrapper.current.current = node;
|
|
4583
4601
|
}
|
|
4584
4602
|
}, []);
|
|
4585
|
-
const handlePageChange =
|
|
4603
|
+
const handlePageChange = React19.useCallback(
|
|
4586
4604
|
(e) => {
|
|
4587
4605
|
onPageChange == null ? void 0 : onPageChange(e);
|
|
4588
4606
|
},
|
|
@@ -4756,10 +4774,10 @@ var Textarea = function Textarea2({
|
|
|
4756
4774
|
...rest
|
|
4757
4775
|
}) {
|
|
4758
4776
|
const HEIGHT_BUFFER_PX = 2;
|
|
4759
|
-
const generatedId =
|
|
4777
|
+
const generatedId = React19.useId();
|
|
4760
4778
|
const textareaId = id != null ? id : `textarea-${generatedId}`;
|
|
4761
|
-
const textareaRef =
|
|
4762
|
-
const syncHeight =
|
|
4779
|
+
const textareaRef = React19.useRef(null);
|
|
4780
|
+
const syncHeight = React19.useCallback(
|
|
4763
4781
|
(textarea) => {
|
|
4764
4782
|
if (!adjustHeight) return;
|
|
4765
4783
|
textarea.style.height = "auto";
|
|
@@ -4767,12 +4785,12 @@ var Textarea = function Textarea2({
|
|
|
4767
4785
|
},
|
|
4768
4786
|
[adjustHeight]
|
|
4769
4787
|
);
|
|
4770
|
-
|
|
4788
|
+
React19.useLayoutEffect(() => {
|
|
4771
4789
|
const textarea = textareaRef.current;
|
|
4772
4790
|
if (!textarea) return;
|
|
4773
4791
|
syncHeight(textarea);
|
|
4774
4792
|
}, [syncHeight, value, rows]);
|
|
4775
|
-
const onInput =
|
|
4793
|
+
const onInput = React19.useCallback(
|
|
4776
4794
|
(e) => {
|
|
4777
4795
|
const textarea = e.currentTarget;
|
|
4778
4796
|
syncHeight(textarea);
|
|
@@ -4780,7 +4798,7 @@ var Textarea = function Textarea2({
|
|
|
4780
4798
|
},
|
|
4781
4799
|
[inputChanged, syncHeight]
|
|
4782
4800
|
);
|
|
4783
|
-
const inputField =
|
|
4801
|
+
const inputField = React19.useMemo(
|
|
4784
4802
|
() => /* @__PURE__ */ jsxRuntime.jsx(
|
|
4785
4803
|
"textarea",
|
|
4786
4804
|
{
|
|
@@ -4901,7 +4919,7 @@ var findExpandableParentChain = (targetHref, items) => {
|
|
|
4901
4919
|
};
|
|
4902
4920
|
return (_a = dfs(items, [])) != null ? _a : [];
|
|
4903
4921
|
};
|
|
4904
|
-
var SidebarContext =
|
|
4922
|
+
var SidebarContext = React19.createContext({
|
|
4905
4923
|
defaultExpanded: null,
|
|
4906
4924
|
expandedItems: /* @__PURE__ */ new Set(),
|
|
4907
4925
|
activeQuery: "",
|
|
@@ -4939,20 +4957,20 @@ function SidebarProvider({
|
|
|
4939
4957
|
initialCollapsed = false,
|
|
4940
4958
|
initialSidebarCollapsed
|
|
4941
4959
|
}) {
|
|
4942
|
-
const [defaultExpanded, setDefaultExpanded] =
|
|
4943
|
-
const [activeQuery, setActiveQuery] =
|
|
4944
|
-
const [wrapItemText, setWrapItemText] =
|
|
4945
|
-
const [areItemsCollapsed, setItemsCollapsed] =
|
|
4946
|
-
const [activeHref, setActiveHref] =
|
|
4947
|
-
const [expandedItems, setExpandedItems] =
|
|
4948
|
-
const itemsRef =
|
|
4949
|
-
|
|
4960
|
+
const [defaultExpanded, setDefaultExpanded] = React19.useState(null);
|
|
4961
|
+
const [activeQuery, setActiveQuery] = React19.useState(initialQuery != null ? initialQuery : "");
|
|
4962
|
+
const [wrapItemText, setWrapItemText] = React19.useState(false);
|
|
4963
|
+
const [areItemsCollapsed, setItemsCollapsed] = React19.useState(initialCollapsed);
|
|
4964
|
+
const [activeHref, setActiveHref] = React19.useState("");
|
|
4965
|
+
const [expandedItems, setExpandedItems] = React19.useState(/* @__PURE__ */ new Set());
|
|
4966
|
+
const itemsRef = React19.useRef(items);
|
|
4967
|
+
React19.useEffect(() => {
|
|
4950
4968
|
itemsRef.current = items;
|
|
4951
4969
|
}, [items]);
|
|
4952
|
-
const [isSidebarCollapsed, setSidebarCollapsed] =
|
|
4970
|
+
const [isSidebarCollapsed, setSidebarCollapsed] = React19.useState(
|
|
4953
4971
|
initialSidebarCollapsed != null ? initialSidebarCollapsed : false
|
|
4954
4972
|
);
|
|
4955
|
-
|
|
4973
|
+
React19.useEffect(() => {
|
|
4956
4974
|
if (initialSidebarCollapsed !== void 0) return;
|
|
4957
4975
|
try {
|
|
4958
4976
|
const stored = window.localStorage.getItem(SIDEBAR_COLLAPSED_STORAGE_KEY);
|
|
@@ -4964,10 +4982,10 @@ function SidebarProvider({
|
|
|
4964
4982
|
}
|
|
4965
4983
|
setSidebarCollapsed(getBreakpoint(window.innerWidth) === "small");
|
|
4966
4984
|
}, []);
|
|
4967
|
-
const triggerExpandAll =
|
|
4968
|
-
const resetExpandAll =
|
|
4969
|
-
const setActiveLink =
|
|
4970
|
-
const expandItem =
|
|
4985
|
+
const triggerExpandAll = React19.useCallback(() => setDefaultExpanded(true), []);
|
|
4986
|
+
const resetExpandAll = React19.useCallback(() => setDefaultExpanded(null), []);
|
|
4987
|
+
const setActiveLink = React19.useCallback((href) => setActiveHref(href), []);
|
|
4988
|
+
const expandItem = React19.useCallback((href) => {
|
|
4971
4989
|
const h = normalizeHref(href);
|
|
4972
4990
|
setExpandedItems((prev) => {
|
|
4973
4991
|
if (prev.has(h)) return prev;
|
|
@@ -4976,7 +4994,7 @@ function SidebarProvider({
|
|
|
4976
4994
|
return next;
|
|
4977
4995
|
});
|
|
4978
4996
|
}, []);
|
|
4979
|
-
const collapseItem =
|
|
4997
|
+
const collapseItem = React19.useCallback((href) => {
|
|
4980
4998
|
const h = normalizeHref(href);
|
|
4981
4999
|
setExpandedItems((prev) => {
|
|
4982
5000
|
if (!prev.has(h)) return prev;
|
|
@@ -4985,11 +5003,11 @@ function SidebarProvider({
|
|
|
4985
5003
|
return next;
|
|
4986
5004
|
});
|
|
4987
5005
|
}, []);
|
|
4988
|
-
const isExpanded =
|
|
5006
|
+
const isExpanded = React19.useCallback(
|
|
4989
5007
|
(href) => expandedItems.has(normalizeHref(href)),
|
|
4990
5008
|
[expandedItems]
|
|
4991
5009
|
);
|
|
4992
|
-
|
|
5010
|
+
React19.useEffect(() => {
|
|
4993
5011
|
if (!activeHref) return;
|
|
4994
5012
|
const currentItems = itemsRef.current;
|
|
4995
5013
|
const parents = findExpandableParentChain(activeHref, currentItems);
|
|
@@ -5007,7 +5025,7 @@ function SidebarProvider({
|
|
|
5007
5025
|
return changed ? next : prev;
|
|
5008
5026
|
});
|
|
5009
5027
|
}, [activeHref]);
|
|
5010
|
-
const filteredItems =
|
|
5028
|
+
const filteredItems = React19.useMemo(() => {
|
|
5011
5029
|
return activeQuery ? nestedFiltering(items, {
|
|
5012
5030
|
keys: ["label", "tags"],
|
|
5013
5031
|
includeParents: true,
|
|
@@ -5015,21 +5033,21 @@ function SidebarProvider({
|
|
|
5015
5033
|
query: activeQuery
|
|
5016
5034
|
}) : items;
|
|
5017
5035
|
}, [items, activeQuery]);
|
|
5018
|
-
const persistCollapsed =
|
|
5036
|
+
const persistCollapsed = React19.useCallback((collapsed) => {
|
|
5019
5037
|
if (typeof window === "undefined") return;
|
|
5020
5038
|
try {
|
|
5021
5039
|
window.localStorage.setItem(SIDEBAR_COLLAPSED_STORAGE_KEY, JSON.stringify(collapsed));
|
|
5022
5040
|
} catch {
|
|
5023
5041
|
}
|
|
5024
5042
|
}, []);
|
|
5025
|
-
const handleSidebarCollapseChange =
|
|
5043
|
+
const handleSidebarCollapseChange = React19.useCallback(
|
|
5026
5044
|
(collapsed) => {
|
|
5027
5045
|
setSidebarCollapsed(collapsed);
|
|
5028
5046
|
persistCollapsed(collapsed);
|
|
5029
5047
|
},
|
|
5030
5048
|
[persistCollapsed]
|
|
5031
5049
|
);
|
|
5032
|
-
|
|
5050
|
+
React19.useEffect(() => {
|
|
5033
5051
|
if (typeof window === "undefined") return;
|
|
5034
5052
|
let lastBreakpoint = getBreakpoint(window.innerWidth);
|
|
5035
5053
|
const onResize = () => {
|
|
@@ -5041,7 +5059,7 @@ function SidebarProvider({
|
|
|
5041
5059
|
window.addEventListener("resize", onResize);
|
|
5042
5060
|
return () => window.removeEventListener("resize", onResize);
|
|
5043
5061
|
}, []);
|
|
5044
|
-
const value =
|
|
5062
|
+
const value = React19.useMemo(
|
|
5045
5063
|
() => ({
|
|
5046
5064
|
defaultExpanded: activeQuery ? true : defaultExpanded,
|
|
5047
5065
|
expandedItems,
|
|
@@ -5086,7 +5104,7 @@ function SidebarProvider({
|
|
|
5086
5104
|
return /* @__PURE__ */ jsxRuntime.jsx(SidebarContext.Provider, { value, children });
|
|
5087
5105
|
}
|
|
5088
5106
|
function useSidebar() {
|
|
5089
|
-
return
|
|
5107
|
+
return React19.useContext(SidebarContext);
|
|
5090
5108
|
}
|
|
5091
5109
|
|
|
5092
5110
|
// src/components/sidebar/components/expandable-sidebar-item/ExpandableSidebarItem.module.css
|
|
@@ -5171,7 +5189,7 @@ function SidebarItemContent({
|
|
|
5171
5189
|
const shouldTruncate = truncateLabel && !wrapItemText && !activeQuery;
|
|
5172
5190
|
const highlightTerms = activeQuery.trim().split(/\s+/).filter(Boolean);
|
|
5173
5191
|
const renderedLabel = typeof label === "string" && highlightTerms.length > 0 ? getHighlightedSegments(label, highlightTerms).map(
|
|
5174
|
-
(segment, index) => segment.matched ? /* @__PURE__ */ jsxRuntime.jsx("mark", { className: "dbc-highlight", children: segment.text }, `${segment.text}-${index}`) : /* @__PURE__ */ jsxRuntime.jsx(
|
|
5192
|
+
(segment, index) => segment.matched ? /* @__PURE__ */ jsxRuntime.jsx("mark", { className: "dbc-highlight", children: segment.text }, `${segment.text}-${index}`) : /* @__PURE__ */ jsxRuntime.jsx(React19__namespace.default.Fragment, { children: segment.text }, `${segment.text}-${index}`)
|
|
5175
5193
|
) : label;
|
|
5176
5194
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
5177
5195
|
"span",
|
|
@@ -5236,21 +5254,21 @@ function ExpandableSidebarItem({
|
|
|
5236
5254
|
collapseItem,
|
|
5237
5255
|
isExpanded
|
|
5238
5256
|
} = useSidebar();
|
|
5239
|
-
const [closing, setClosing] =
|
|
5257
|
+
const [closing, setClosing] = React19.useState(false);
|
|
5240
5258
|
const ready = true;
|
|
5241
|
-
const expanded =
|
|
5242
|
-
|
|
5259
|
+
const expanded = React19.useMemo(() => isExpanded(href), [href, isExpanded]);
|
|
5260
|
+
React19.useEffect(() => {
|
|
5243
5261
|
if (defaultExpanded === null) return;
|
|
5244
5262
|
if (defaultExpanded) expandItem(href);
|
|
5245
5263
|
else collapseItem(href);
|
|
5246
5264
|
}, [defaultExpanded, expandItem, collapseItem, href]);
|
|
5247
|
-
const handleAnimationEnd =
|
|
5265
|
+
const handleAnimationEnd = React19.useCallback(() => {
|
|
5248
5266
|
if (closing) {
|
|
5249
5267
|
collapseItem(href);
|
|
5250
5268
|
setClosing(false);
|
|
5251
5269
|
}
|
|
5252
5270
|
}, [closing, ready, collapseItem, href]);
|
|
5253
|
-
const toggleAccordion =
|
|
5271
|
+
const toggleAccordion = React19.useCallback(
|
|
5254
5272
|
(e, onlyExpand = false) => {
|
|
5255
5273
|
e == null ? void 0 : e.preventDefault();
|
|
5256
5274
|
e == null ? void 0 : e.stopPropagation();
|
|
@@ -5332,7 +5350,7 @@ function ExpandableSidebarItem({
|
|
|
5332
5350
|
}
|
|
5333
5351
|
function SidebarItems({ activeLink }) {
|
|
5334
5352
|
const { filteredItems, setActiveLink, isSidebarCollapsed } = useSidebar();
|
|
5335
|
-
|
|
5353
|
+
React19.useEffect(() => {
|
|
5336
5354
|
setActiveLink(activeLink != null ? activeLink : "");
|
|
5337
5355
|
}, [activeLink, setActiveLink]);
|
|
5338
5356
|
const renderItem = (item, key) => {
|
|
@@ -5387,7 +5405,7 @@ var SidenavFiltering = ({
|
|
|
5387
5405
|
wrapItemText,
|
|
5388
5406
|
setWrapItemText
|
|
5389
5407
|
} = useSidebar();
|
|
5390
|
-
const searchBoxRef =
|
|
5408
|
+
const searchBoxRef = React19__namespace.default.useRef(null);
|
|
5391
5409
|
const handleSearch = (value) => {
|
|
5392
5410
|
setActiveQuery == null ? void 0 : setActiveQuery(value);
|
|
5393
5411
|
};
|
|
@@ -5512,28 +5530,28 @@ function SidebarContainer({
|
|
|
5512
5530
|
storageKey
|
|
5513
5531
|
}) {
|
|
5514
5532
|
const { isSidebarCollapsed, handleSidebarCollapseChange } = useSidebar();
|
|
5515
|
-
const [sidebarWidth, setSidebarWidth] =
|
|
5516
|
-
const [manualWidth, setManualWidth] =
|
|
5517
|
-
const [isResizing, setIsResizing] =
|
|
5518
|
-
const [ariaMaxWidth, setAriaMaxWidth] =
|
|
5519
|
-
const containerRef =
|
|
5520
|
-
const draggingRef =
|
|
5521
|
-
const pointerIdRef =
|
|
5522
|
-
const startXRef =
|
|
5523
|
-
const startWidthRef =
|
|
5524
|
-
const maxWidthRef =
|
|
5525
|
-
const getMaxWidth =
|
|
5533
|
+
const [sidebarWidth, setSidebarWidth] = React19.useState(defaultWidth);
|
|
5534
|
+
const [manualWidth, setManualWidth] = React19.useState(null);
|
|
5535
|
+
const [isResizing, setIsResizing] = React19.useState(false);
|
|
5536
|
+
const [ariaMaxWidth, setAriaMaxWidth] = React19.useState(void 0);
|
|
5537
|
+
const containerRef = React19.useRef(null);
|
|
5538
|
+
const draggingRef = React19.useRef(false);
|
|
5539
|
+
const pointerIdRef = React19.useRef(null);
|
|
5540
|
+
const startXRef = React19.useRef(0);
|
|
5541
|
+
const startWidthRef = React19.useRef(0);
|
|
5542
|
+
const maxWidthRef = React19.useRef(Infinity);
|
|
5543
|
+
const getMaxWidth = React19.useCallback(() => {
|
|
5526
5544
|
const viewportWidth = typeof window !== "undefined" ? window.innerWidth || document.documentElement.clientWidth : Infinity;
|
|
5527
5545
|
return Math.max(minWidth, viewportWidth - minWidth);
|
|
5528
5546
|
}, [minWidth]);
|
|
5529
|
-
|
|
5547
|
+
React19.useEffect(() => {
|
|
5530
5548
|
if (!storageKey) return;
|
|
5531
5549
|
const stored = readStoredWidth(storageKey);
|
|
5532
5550
|
if (stored === null) return;
|
|
5533
5551
|
setManualWidth(stored);
|
|
5534
5552
|
setSidebarWidth(stored);
|
|
5535
5553
|
}, [storageKey]);
|
|
5536
|
-
|
|
5554
|
+
React19.useEffect(() => {
|
|
5537
5555
|
if (!storageKey) return;
|
|
5538
5556
|
if (manualWidth === null) {
|
|
5539
5557
|
removeStoredWidth(storageKey);
|
|
@@ -5541,20 +5559,20 @@ function SidebarContainer({
|
|
|
5541
5559
|
}
|
|
5542
5560
|
writeStoredWidth(storageKey, manualWidth);
|
|
5543
5561
|
}, [manualWidth, storageKey]);
|
|
5544
|
-
|
|
5562
|
+
React19.useEffect(() => {
|
|
5545
5563
|
setAriaMaxWidth(getMaxWidth());
|
|
5546
5564
|
}, [getMaxWidth]);
|
|
5547
|
-
|
|
5565
|
+
React19.useEffect(() => {
|
|
5548
5566
|
return () => {
|
|
5549
5567
|
document.body.style.cursor = "";
|
|
5550
5568
|
document.body.style.userSelect = "";
|
|
5551
5569
|
};
|
|
5552
5570
|
}, []);
|
|
5553
|
-
const updateWidth =
|
|
5571
|
+
const updateWidth = React19.useCallback((nextWidth) => {
|
|
5554
5572
|
setManualWidth(nextWidth);
|
|
5555
5573
|
setSidebarWidth(nextWidth);
|
|
5556
5574
|
}, []);
|
|
5557
|
-
const onResizePointerDown =
|
|
5575
|
+
const onResizePointerDown = React19.useCallback(
|
|
5558
5576
|
(e) => {
|
|
5559
5577
|
const maxWidth = getMaxWidth();
|
|
5560
5578
|
if (maxWidth === null) return;
|
|
@@ -5570,7 +5588,7 @@ function SidebarContainer({
|
|
|
5570
5588
|
},
|
|
5571
5589
|
[getMaxWidth, sidebarWidth]
|
|
5572
5590
|
);
|
|
5573
|
-
const onResizePointerMove =
|
|
5591
|
+
const onResizePointerMove = React19.useCallback(
|
|
5574
5592
|
(e) => {
|
|
5575
5593
|
if (!draggingRef.current) return;
|
|
5576
5594
|
if (pointerIdRef.current !== null && e.pointerId !== pointerIdRef.current) return;
|
|
@@ -5579,7 +5597,7 @@ function SidebarContainer({
|
|
|
5579
5597
|
},
|
|
5580
5598
|
[minWidth, updateWidth]
|
|
5581
5599
|
);
|
|
5582
|
-
const endResizeDrag =
|
|
5600
|
+
const endResizeDrag = React19.useCallback(() => {
|
|
5583
5601
|
if (!draggingRef.current) return;
|
|
5584
5602
|
draggingRef.current = false;
|
|
5585
5603
|
pointerIdRef.current = null;
|
|
@@ -5587,11 +5605,11 @@ function SidebarContainer({
|
|
|
5587
5605
|
document.body.style.cursor = "";
|
|
5588
5606
|
document.body.style.userSelect = "";
|
|
5589
5607
|
}, []);
|
|
5590
|
-
const resetWidth =
|
|
5608
|
+
const resetWidth = React19.useCallback(() => {
|
|
5591
5609
|
setManualWidth(null);
|
|
5592
5610
|
setSidebarWidth(clamp2(defaultWidth, minWidth, getMaxWidth()));
|
|
5593
5611
|
}, [defaultWidth, getMaxWidth, minWidth]);
|
|
5594
|
-
const onKeyDown =
|
|
5612
|
+
const onKeyDown = React19.useCallback(
|
|
5595
5613
|
(e) => {
|
|
5596
5614
|
const maxWidth = getMaxWidth();
|
|
5597
5615
|
const step = e.shiftKey ? 32 : 8;
|
|
@@ -5606,7 +5624,7 @@ function SidebarContainer({
|
|
|
5606
5624
|
},
|
|
5607
5625
|
[getMaxWidth, minWidth, sidebarWidth, updateWidth]
|
|
5608
5626
|
);
|
|
5609
|
-
const containerStyle =
|
|
5627
|
+
const containerStyle = React19.useMemo(
|
|
5610
5628
|
() => ({
|
|
5611
5629
|
"--sidebar-width": `${sidebarWidth}px`
|
|
5612
5630
|
}),
|
|
@@ -5708,14 +5726,14 @@ function useListNavigation({
|
|
|
5708
5726
|
typeaheadTimeoutMs = 500,
|
|
5709
5727
|
getInitialActiveIndex
|
|
5710
5728
|
}) {
|
|
5711
|
-
const optionRefs =
|
|
5712
|
-
const typeaheadRef =
|
|
5713
|
-
const typeaheadTimeoutRef =
|
|
5714
|
-
const normalizedLabels =
|
|
5729
|
+
const optionRefs = React19.useRef([]);
|
|
5730
|
+
const typeaheadRef = React19.useRef("");
|
|
5731
|
+
const typeaheadTimeoutRef = React19.useRef(null);
|
|
5732
|
+
const normalizedLabels = React19.useMemo(
|
|
5715
5733
|
() => options.map((option) => getLabel(option).trim().toLocaleLowerCase()),
|
|
5716
5734
|
[options, getLabel]
|
|
5717
5735
|
);
|
|
5718
|
-
const getDefaultInitialIndex =
|
|
5736
|
+
const getDefaultInitialIndex = React19.useCallback(
|
|
5719
5737
|
(items) => {
|
|
5720
5738
|
if (items.length === 0) return -1;
|
|
5721
5739
|
if (getInitialActiveIndex) {
|
|
@@ -5727,65 +5745,65 @@ function useListNavigation({
|
|
|
5727
5745
|
},
|
|
5728
5746
|
[getInitialActiveIndex, searchable]
|
|
5729
5747
|
);
|
|
5730
|
-
const [activeIndex, setActiveIndex] =
|
|
5731
|
-
const clearTypeahead =
|
|
5748
|
+
const [activeIndex, setActiveIndex] = React19.useState(() => getDefaultInitialIndex(options));
|
|
5749
|
+
const clearTypeahead = React19.useCallback(() => {
|
|
5732
5750
|
typeaheadRef.current = "";
|
|
5733
5751
|
if (typeaheadTimeoutRef.current) {
|
|
5734
5752
|
clearTimeout(typeaheadTimeoutRef.current);
|
|
5735
5753
|
typeaheadTimeoutRef.current = null;
|
|
5736
5754
|
}
|
|
5737
5755
|
}, []);
|
|
5738
|
-
const focusActiveOption =
|
|
5756
|
+
const focusActiveOption = React19.useCallback(() => {
|
|
5739
5757
|
var _a;
|
|
5740
5758
|
if (activeIndex < 0 || options.length === 0) return;
|
|
5741
5759
|
(_a = optionRefs.current[activeIndex]) == null ? void 0 : _a.focus();
|
|
5742
5760
|
}, [activeIndex, options.length]);
|
|
5743
|
-
const resetActiveIndex =
|
|
5761
|
+
const resetActiveIndex = React19.useCallback(() => {
|
|
5744
5762
|
setActiveIndex(getDefaultInitialIndex(options));
|
|
5745
5763
|
}, [getDefaultInitialIndex, options]);
|
|
5746
|
-
|
|
5764
|
+
React19.useEffect(() => {
|
|
5747
5765
|
return () => {
|
|
5748
5766
|
if (typeaheadTimeoutRef.current) clearTimeout(typeaheadTimeoutRef.current);
|
|
5749
5767
|
};
|
|
5750
5768
|
}, []);
|
|
5751
|
-
|
|
5769
|
+
React19.useEffect(() => {
|
|
5752
5770
|
setActiveIndex((current) => {
|
|
5753
5771
|
if (options.length === 0) return -1;
|
|
5754
5772
|
if (current < 0) return current;
|
|
5755
5773
|
return Math.min(current, options.length - 1);
|
|
5756
5774
|
});
|
|
5757
5775
|
}, [options]);
|
|
5758
|
-
|
|
5776
|
+
React19.useEffect(() => {
|
|
5759
5777
|
optionRefs.current = optionRefs.current.slice(0, options.length);
|
|
5760
5778
|
}, [options.length]);
|
|
5761
|
-
|
|
5779
|
+
React19.useEffect(() => {
|
|
5762
5780
|
if (!isOpen || !focusActiveOptionOnOpen) return;
|
|
5763
5781
|
if (searchable && document.activeElement === (searchInputRef == null ? void 0 : searchInputRef.current)) return;
|
|
5764
5782
|
focusActiveOption();
|
|
5765
5783
|
}, [activeIndex, focusActiveOption, focusActiveOptionOnOpen, isOpen, searchable, searchInputRef]);
|
|
5766
|
-
const moveNext =
|
|
5784
|
+
const moveNext = React19.useCallback(() => {
|
|
5767
5785
|
if (options.length === 0) return;
|
|
5768
5786
|
setActiveIndex((index) => {
|
|
5769
5787
|
if (index < 0) return 0;
|
|
5770
5788
|
return Math.min(index + 1, options.length - 1);
|
|
5771
5789
|
});
|
|
5772
5790
|
}, [options.length]);
|
|
5773
|
-
const movePrev =
|
|
5791
|
+
const movePrev = React19.useCallback(() => {
|
|
5774
5792
|
if (options.length === 0) return;
|
|
5775
5793
|
setActiveIndex((index) => {
|
|
5776
5794
|
if (index < 0) return options.length - 1;
|
|
5777
5795
|
return Math.max(index - 1, 0);
|
|
5778
5796
|
});
|
|
5779
5797
|
}, [options.length]);
|
|
5780
|
-
const moveFirst =
|
|
5798
|
+
const moveFirst = React19.useCallback(() => {
|
|
5781
5799
|
if (options.length === 0) return;
|
|
5782
5800
|
setActiveIndex(0);
|
|
5783
5801
|
}, [options.length]);
|
|
5784
|
-
const moveLast =
|
|
5802
|
+
const moveLast = React19.useCallback(() => {
|
|
5785
5803
|
if (options.length === 0) return;
|
|
5786
5804
|
setActiveIndex(options.length - 1);
|
|
5787
5805
|
}, [options.length]);
|
|
5788
|
-
const findTypeaheadMatch =
|
|
5806
|
+
const findTypeaheadMatch = React19.useCallback(
|
|
5789
5807
|
(query, startIndex) => {
|
|
5790
5808
|
if (!query || options.length === 0) return -1;
|
|
5791
5809
|
const normalizedQuery = query.trim().toLocaleLowerCase();
|
|
@@ -5800,7 +5818,7 @@ function useListNavigation({
|
|
|
5800
5818
|
},
|
|
5801
5819
|
[normalizedLabels, options.length]
|
|
5802
5820
|
);
|
|
5803
|
-
const handleTypeahead =
|
|
5821
|
+
const handleTypeahead = React19.useCallback(
|
|
5804
5822
|
(key) => {
|
|
5805
5823
|
const nextBuffer = `${typeaheadRef.current}${key.toLocaleLowerCase()}`;
|
|
5806
5824
|
const repeatedChar = new Set(nextBuffer).size === 1;
|
|
@@ -5822,7 +5840,7 @@ function useListNavigation({
|
|
|
5822
5840
|
},
|
|
5823
5841
|
[activeIndex, findTypeaheadMatch, isOpen, onOpenChange, typeaheadTimeoutMs]
|
|
5824
5842
|
);
|
|
5825
|
-
const handleKeyDown =
|
|
5843
|
+
const handleKeyDown = React19.useCallback(
|
|
5826
5844
|
(e) => {
|
|
5827
5845
|
var _a;
|
|
5828
5846
|
const isSearchInputTarget = searchable && e.target === (searchInputRef == null ? void 0 : searchInputRef.current);
|
|
@@ -5944,12 +5962,12 @@ function MultiSelect({
|
|
|
5944
5962
|
searchPlaceholder = "S\xF8g",
|
|
5945
5963
|
emptyMessage = "Ingen resultater"
|
|
5946
5964
|
}) {
|
|
5947
|
-
const selectedSet =
|
|
5948
|
-
const popoverRef =
|
|
5949
|
-
const searchInputRef =
|
|
5950
|
-
const [open, setOpen] =
|
|
5951
|
-
const [searchQuery, setSearchQuery] =
|
|
5952
|
-
const filteredOptions =
|
|
5965
|
+
const selectedSet = React19.useMemo(() => new Set(selectedValues), [selectedValues]);
|
|
5966
|
+
const popoverRef = React19.useRef(null);
|
|
5967
|
+
const searchInputRef = React19.useRef(null);
|
|
5968
|
+
const [open, setOpen] = React19.useState(false);
|
|
5969
|
+
const [searchQuery, setSearchQuery] = React19.useState("");
|
|
5970
|
+
const filteredOptions = React19.useMemo(() => {
|
|
5953
5971
|
const normalizedQuery = searchQuery.trim().toLocaleLowerCase();
|
|
5954
5972
|
if (!normalizedQuery) return options;
|
|
5955
5973
|
return options.filter((option) => option.label.toLocaleLowerCase().includes(normalizedQuery));
|
|
@@ -5973,7 +5991,7 @@ function MultiSelect({
|
|
|
5973
5991
|
return selectedIndex >= 0 ? selectedIndex : 0;
|
|
5974
5992
|
}
|
|
5975
5993
|
});
|
|
5976
|
-
|
|
5994
|
+
React19.useEffect(() => {
|
|
5977
5995
|
var _a;
|
|
5978
5996
|
if (!open || !searchable) return;
|
|
5979
5997
|
(_a = searchInputRef.current) == null ? void 0 : _a.focus();
|
|
@@ -6280,14 +6298,14 @@ function Typeahead({
|
|
|
6280
6298
|
enableHotkey = false
|
|
6281
6299
|
}) {
|
|
6282
6300
|
var _a, _b;
|
|
6283
|
-
const rootRef =
|
|
6284
|
-
const triggerWrapperRef =
|
|
6285
|
-
const inputRef =
|
|
6286
|
-
const popoverContentRef =
|
|
6287
|
-
const interactingWithOptionsRef =
|
|
6288
|
-
const justClearedRef =
|
|
6289
|
-
const locallyClearedRef =
|
|
6290
|
-
const listboxId =
|
|
6301
|
+
const rootRef = React19.useRef(null);
|
|
6302
|
+
const triggerWrapperRef = React19.useRef(null);
|
|
6303
|
+
const inputRef = React19.useRef(null);
|
|
6304
|
+
const popoverContentRef = React19.useRef(null);
|
|
6305
|
+
const interactingWithOptionsRef = React19.useRef(false);
|
|
6306
|
+
const justClearedRef = React19.useRef(false);
|
|
6307
|
+
const locallyClearedRef = React19.useRef(false);
|
|
6308
|
+
const listboxId = React19.useId();
|
|
6291
6309
|
const {
|
|
6292
6310
|
onFocus: inputPropsOnFocus,
|
|
6293
6311
|
onBlur: inputPropsOnBlur,
|
|
@@ -6298,28 +6316,28 @@ function Typeahead({
|
|
|
6298
6316
|
endAdornment: inputPropsEndAdornment,
|
|
6299
6317
|
...passthroughInputProps
|
|
6300
6318
|
} = inputProps != null ? inputProps : {};
|
|
6301
|
-
const selectedOption =
|
|
6319
|
+
const selectedOption = React19.useMemo(() => {
|
|
6302
6320
|
var _a2;
|
|
6303
6321
|
if (mode === "multi") return null;
|
|
6304
6322
|
return (_a2 = options.find((option) => option.value === selectedValue)) != null ? _a2 : null;
|
|
6305
6323
|
}, [options, selectedValue, mode]);
|
|
6306
|
-
const selectedOptions =
|
|
6324
|
+
const selectedOptions = React19.useMemo(() => {
|
|
6307
6325
|
if (mode !== "multi" || !Array.isArray(selectedValue)) return [];
|
|
6308
6326
|
return options.filter((option) => selectedValue.includes(option.value));
|
|
6309
6327
|
}, [options, selectedValue, mode]);
|
|
6310
|
-
const [open, setOpen] =
|
|
6311
|
-
const [inputValue, setInputValue] =
|
|
6328
|
+
const [open, setOpen] = React19.useState(false);
|
|
6329
|
+
const [inputValue, setInputValue] = React19.useState(
|
|
6312
6330
|
mode === "multi" ? "" : (_a = selectedOption == null ? void 0 : selectedOption.label) != null ? _a : ""
|
|
6313
6331
|
);
|
|
6314
|
-
const [query, setQuery] =
|
|
6315
|
-
const [activeIndex, setActiveIndex] =
|
|
6316
|
-
const [hideSelectedHighlight, setHideSelectedHighlight] =
|
|
6317
|
-
const clearJustClearedAfterEventCycle =
|
|
6332
|
+
const [query, setQuery] = React19.useState("");
|
|
6333
|
+
const [activeIndex, setActiveIndex] = React19.useState(-1);
|
|
6334
|
+
const [hideSelectedHighlight, setHideSelectedHighlight] = React19.useState(false);
|
|
6335
|
+
const clearJustClearedAfterEventCycle = React19__namespace.useCallback(() => {
|
|
6318
6336
|
requestAnimationFrame(() => {
|
|
6319
6337
|
justClearedRef.current = false;
|
|
6320
6338
|
});
|
|
6321
6339
|
}, []);
|
|
6322
|
-
const getSelectedValueChipLabel =
|
|
6340
|
+
const getSelectedValueChipLabel = React19__namespace.useCallback(
|
|
6323
6341
|
(option) => {
|
|
6324
6342
|
switch (multiSelectedValueChipContent) {
|
|
6325
6343
|
case "value":
|
|
@@ -6346,7 +6364,7 @@ function Typeahead({
|
|
|
6346
6364
|
);
|
|
6347
6365
|
}
|
|
6348
6366
|
}
|
|
6349
|
-
const commitSelection =
|
|
6367
|
+
const commitSelection = React19__namespace.useCallback(
|
|
6350
6368
|
(option) => {
|
|
6351
6369
|
var _a2, _b2;
|
|
6352
6370
|
locallyClearedRef.current = false;
|
|
@@ -6404,12 +6422,12 @@ function Typeahead({
|
|
|
6404
6422
|
const usesCountAdornment = mode === "multi" && multiValueDisplayMode === "count" && selectedOptions.length > 0;
|
|
6405
6423
|
const resolvedInputSize = (_b = inputSize != null ? inputSize : inputProps == null ? void 0 : inputProps.inputSize) != null ? _b : "md";
|
|
6406
6424
|
const shouldFitContent = fitContent && mode === "single";
|
|
6407
|
-
const [fittedWidthPx, setFittedWidthPx] =
|
|
6408
|
-
const visibleSingleValueText =
|
|
6425
|
+
const [fittedWidthPx, setFittedWidthPx] = React19.useState(null);
|
|
6426
|
+
const visibleSingleValueText = React19.useMemo(() => {
|
|
6409
6427
|
if (!shouldFitContent) return "";
|
|
6410
6428
|
return inputValue || (selectedOption == null ? void 0 : selectedOption.label) || placeholder || "";
|
|
6411
6429
|
}, [shouldFitContent, inputValue, selectedOption, placeholder]);
|
|
6412
|
-
|
|
6430
|
+
React19.useLayoutEffect(() => {
|
|
6413
6431
|
if (!shouldFitContent) return;
|
|
6414
6432
|
const input = inputRef.current;
|
|
6415
6433
|
if (!input) return;
|
|
@@ -6443,13 +6461,13 @@ function Typeahead({
|
|
|
6443
6461
|
inputPropsStartAdornment,
|
|
6444
6462
|
inputPropsEndAdornment
|
|
6445
6463
|
]);
|
|
6446
|
-
const measuredRootWidth =
|
|
6464
|
+
const measuredRootWidth = React19.useMemo(() => {
|
|
6447
6465
|
if (!shouldFitContent) return void 0;
|
|
6448
6466
|
if (fittedWidthPx == null) return minWidth != null ? minWidth : "120px";
|
|
6449
6467
|
return `${fittedWidthPx}px`;
|
|
6450
6468
|
}, [shouldFitContent, fittedWidthPx, minWidth]);
|
|
6451
6469
|
const shouldStretchInput = fullWidth || shouldFitContent;
|
|
6452
|
-
|
|
6470
|
+
React19.useEffect(() => {
|
|
6453
6471
|
if (!enableHotkey) return;
|
|
6454
6472
|
function handleKeyDown2(event) {
|
|
6455
6473
|
var _a2;
|
|
@@ -6461,7 +6479,7 @@ function Typeahead({
|
|
|
6461
6479
|
window.addEventListener("keydown", handleKeyDown2);
|
|
6462
6480
|
return () => window.removeEventListener("keydown", handleKeyDown2);
|
|
6463
6481
|
}, [enableHotkey]);
|
|
6464
|
-
|
|
6482
|
+
React19.useEffect(() => {
|
|
6465
6483
|
var _a2;
|
|
6466
6484
|
if (justClearedRef.current || locallyClearedRef.current) return;
|
|
6467
6485
|
if (mode === "multi") {
|
|
@@ -6471,7 +6489,7 @@ function Typeahead({
|
|
|
6471
6489
|
setInputValue((_a2 = selectedOption == null ? void 0 : selectedOption.label) != null ? _a2 : "");
|
|
6472
6490
|
}
|
|
6473
6491
|
}, [selectedOption, mode]);
|
|
6474
|
-
const getSelectedIndex =
|
|
6492
|
+
const getSelectedIndex = React19__namespace.useCallback(
|
|
6475
6493
|
(items) => {
|
|
6476
6494
|
if (items.length === 0) return -1;
|
|
6477
6495
|
if (locallyClearedRef.current) return 0;
|
|
@@ -6485,7 +6503,7 @@ function Typeahead({
|
|
|
6485
6503
|
},
|
|
6486
6504
|
[mode, selectedValue]
|
|
6487
6505
|
);
|
|
6488
|
-
|
|
6506
|
+
React19.useEffect(() => {
|
|
6489
6507
|
setActiveIndex((current) => {
|
|
6490
6508
|
if (filteredOptions.length === 0) return -1;
|
|
6491
6509
|
if (locallyClearedRef.current) return 0;
|
|
@@ -6493,13 +6511,13 @@ function Typeahead({
|
|
|
6493
6511
|
return Math.min(current, filteredOptions.length - 1);
|
|
6494
6512
|
});
|
|
6495
6513
|
}, [filteredOptions, getSelectedIndex]);
|
|
6496
|
-
|
|
6514
|
+
React19.useEffect(() => {
|
|
6497
6515
|
var _a2, _b2;
|
|
6498
6516
|
if (!open || activeIndex < 0) return;
|
|
6499
6517
|
const activeEl = (_a2 = document.getElementById(listboxId)) == null ? void 0 : _a2.querySelector(`#${CSS.escape(`${listboxId}-option-${activeIndex}`)}`);
|
|
6500
6518
|
(_b2 = activeEl == null ? void 0 : activeEl.scrollIntoView) == null ? void 0 : _b2.call(activeEl, { block: "nearest" });
|
|
6501
6519
|
}, [open, activeIndex, filteredOptions, listboxId]);
|
|
6502
|
-
const getFocusableElements =
|
|
6520
|
+
const getFocusableElements = React19__namespace.useCallback(() => {
|
|
6503
6521
|
const selector = [
|
|
6504
6522
|
"a[href]",
|
|
6505
6523
|
"button:not([disabled])",
|
|
@@ -6523,12 +6541,12 @@ function Typeahead({
|
|
|
6523
6541
|
}
|
|
6524
6542
|
return focusables;
|
|
6525
6543
|
}, []);
|
|
6526
|
-
const isFocusWithinTypeahead =
|
|
6544
|
+
const isFocusWithinTypeahead = React19__namespace.useCallback((target) => {
|
|
6527
6545
|
var _a2, _b2;
|
|
6528
6546
|
if (!(target instanceof Node)) return false;
|
|
6529
6547
|
return Boolean(((_a2 = rootRef.current) == null ? void 0 : _a2.contains(target)) || ((_b2 = popoverContentRef.current) == null ? void 0 : _b2.contains(target)));
|
|
6530
6548
|
}, []);
|
|
6531
|
-
const handleTabKeyDown =
|
|
6549
|
+
const handleTabKeyDown = React19__namespace.useCallback(
|
|
6532
6550
|
(event) => {
|
|
6533
6551
|
var _a2, _b2, _c;
|
|
6534
6552
|
if (event.key !== "Tab" || !open) return;
|
|
@@ -6602,23 +6620,23 @@ function Typeahead({
|
|
|
6602
6620
|
setOpen(false);
|
|
6603
6621
|
setActiveIndex(-1);
|
|
6604
6622
|
};
|
|
6605
|
-
const openWithAllOptions =
|
|
6623
|
+
const openWithAllOptions = React19__namespace.useCallback(() => {
|
|
6606
6624
|
if (justClearedRef.current) return;
|
|
6607
6625
|
setQuery("");
|
|
6608
6626
|
setOpen(true);
|
|
6609
6627
|
setActiveIndex(getSelectedIndex(options));
|
|
6610
6628
|
}, [getSelectedIndex, options]);
|
|
6611
|
-
const openWithCurrentFilter =
|
|
6629
|
+
const openWithCurrentFilter = React19__namespace.useCallback(() => {
|
|
6612
6630
|
if (justClearedRef.current) return;
|
|
6613
6631
|
setOpen(true);
|
|
6614
6632
|
setActiveIndex(getSelectedIndex(filteredOptions));
|
|
6615
6633
|
}, [getSelectedIndex, filteredOptions]);
|
|
6616
|
-
const prepareSingleSearchInput =
|
|
6634
|
+
const prepareSingleSearchInput = React19__namespace.useCallback(() => {
|
|
6617
6635
|
if (mode !== "single" || !selectedOption || justClearedRef.current) return;
|
|
6618
6636
|
setInputValue("");
|
|
6619
6637
|
setQuery("");
|
|
6620
6638
|
}, [mode, selectedOption]);
|
|
6621
|
-
const handleOpen =
|
|
6639
|
+
const handleOpen = React19__namespace.useCallback(() => {
|
|
6622
6640
|
if (justClearedRef.current) return;
|
|
6623
6641
|
if (mode === "single" && selectedOption && !locallyClearedRef.current) {
|
|
6624
6642
|
prepareSingleSearchInput();
|
|
@@ -6627,7 +6645,7 @@ function Typeahead({
|
|
|
6627
6645
|
}
|
|
6628
6646
|
openWithCurrentFilter();
|
|
6629
6647
|
}, [mode, selectedOption, prepareSingleSearchInput, openWithAllOptions, openWithCurrentFilter]);
|
|
6630
|
-
const handleTriggerMouseDown =
|
|
6648
|
+
const handleTriggerMouseDown = React19__namespace.useCallback(
|
|
6631
6649
|
(e) => {
|
|
6632
6650
|
var _a2;
|
|
6633
6651
|
inputPropsOnMouseDown == null ? void 0 : inputPropsOnMouseDown(e);
|
|
@@ -6668,7 +6686,7 @@ function Typeahead({
|
|
|
6668
6686
|
filteredOptions
|
|
6669
6687
|
]
|
|
6670
6688
|
);
|
|
6671
|
-
const handleChevronMouseDown =
|
|
6689
|
+
const handleChevronMouseDown = React19__namespace.useCallback(
|
|
6672
6690
|
(e) => {
|
|
6673
6691
|
var _a2, _b2;
|
|
6674
6692
|
e.preventDefault();
|
|
@@ -7006,9 +7024,9 @@ function OperatorDropdown({
|
|
|
7006
7024
|
size = "sm",
|
|
7007
7025
|
disabled
|
|
7008
7026
|
}) {
|
|
7009
|
-
const popRef =
|
|
7010
|
-
const [activeIndex, setActiveIndex] =
|
|
7011
|
-
|
|
7027
|
+
const popRef = React19.useRef(null);
|
|
7028
|
+
const [activeIndex, setActiveIndex] = React19.useState(() => Math.max(0, operators.indexOf(value)));
|
|
7029
|
+
React19.useEffect(() => {
|
|
7012
7030
|
setActiveIndex(Math.max(0, operators.indexOf(value)));
|
|
7013
7031
|
}, [operators, value]);
|
|
7014
7032
|
const handleSelect = (op) => {
|
|
@@ -7074,19 +7092,19 @@ function FilterField({
|
|
|
7074
7092
|
...inputProps
|
|
7075
7093
|
}) {
|
|
7076
7094
|
var _a, _b, _c, _d;
|
|
7077
|
-
const filterFieldRef =
|
|
7078
|
-
const ops =
|
|
7095
|
+
const filterFieldRef = React19.useRef(null);
|
|
7096
|
+
const ops = React19.useMemo(() => operators != null ? operators : DEFAULT_TEXT_OPERATORS, [operators]);
|
|
7079
7097
|
const shouldAutoFitTypeahead = control === "select" && single && !width;
|
|
7080
|
-
const [selectedOperator, setSelectedOperator] =
|
|
7098
|
+
const [selectedOperator, setSelectedOperator] = React19.useState(operator);
|
|
7081
7099
|
const active = isFilterActive(value);
|
|
7082
|
-
|
|
7100
|
+
React19.useEffect(() => {
|
|
7083
7101
|
if (ops.includes(operator)) {
|
|
7084
7102
|
setSelectedOperator(operator);
|
|
7085
7103
|
}
|
|
7086
7104
|
}, [operator, ops]);
|
|
7087
|
-
const [localValue, setLocalValue] =
|
|
7088
|
-
const debounceRef =
|
|
7089
|
-
const pendingValueRef =
|
|
7105
|
+
const [localValue, setLocalValue] = React19.useState(value != null ? value : "");
|
|
7106
|
+
const debounceRef = React19.useRef(null);
|
|
7107
|
+
const pendingValueRef = React19.useRef(null);
|
|
7090
7108
|
const emit = (next) => {
|
|
7091
7109
|
var _a2, _b2;
|
|
7092
7110
|
const nextOperator = (_a2 = next.operator) != null ? _a2 : selectedOperator;
|
|
@@ -7132,7 +7150,7 @@ function FilterField({
|
|
|
7132
7150
|
pendingValueRef.current = control === "input" ? localValue : typeof value === "string" ? value : null;
|
|
7133
7151
|
emit({ operator: op });
|
|
7134
7152
|
};
|
|
7135
|
-
|
|
7153
|
+
React19.useEffect(() => {
|
|
7136
7154
|
if (control !== "input") return;
|
|
7137
7155
|
const incoming = value != null ? value : "";
|
|
7138
7156
|
const pending = pendingValueRef.current;
|
|
@@ -7146,7 +7164,7 @@ function FilterField({
|
|
|
7146
7164
|
setLocalValue(incoming);
|
|
7147
7165
|
}
|
|
7148
7166
|
}, [value, control, localValue]);
|
|
7149
|
-
|
|
7167
|
+
React19.useEffect(() => {
|
|
7150
7168
|
return () => {
|
|
7151
7169
|
clearDebounce();
|
|
7152
7170
|
};
|
|
@@ -7267,26 +7285,26 @@ function Select({
|
|
|
7267
7285
|
disabled,
|
|
7268
7286
|
minWidth
|
|
7269
7287
|
}) {
|
|
7270
|
-
const generatedId =
|
|
7288
|
+
const generatedId = React19.useId();
|
|
7271
7289
|
const controlId = id != null ? id : `select-${generatedId}`;
|
|
7272
7290
|
const describedById = `${controlId}-desc`;
|
|
7273
7291
|
const listboxId = `${controlId}-listbox`;
|
|
7274
|
-
const popoverRef =
|
|
7275
|
-
const optionRefs =
|
|
7276
|
-
const typeaheadRef =
|
|
7277
|
-
const typeaheadTimeoutRef =
|
|
7278
|
-
const selectedIndex =
|
|
7292
|
+
const popoverRef = React19.useRef(null);
|
|
7293
|
+
const optionRefs = React19.useRef([]);
|
|
7294
|
+
const typeaheadRef = React19.useRef("");
|
|
7295
|
+
const typeaheadTimeoutRef = React19.useRef(null);
|
|
7296
|
+
const selectedIndex = React19.useMemo(
|
|
7279
7297
|
() => options.findIndex((o) => o.value === selectedValue),
|
|
7280
7298
|
[options, selectedValue]
|
|
7281
7299
|
);
|
|
7282
|
-
const [activeIndex, setActiveIndex] =
|
|
7283
|
-
const [open, setOpen] =
|
|
7284
|
-
|
|
7300
|
+
const [activeIndex, setActiveIndex] = React19.useState(selectedIndex >= 0 ? selectedIndex : 0);
|
|
7301
|
+
const [open, setOpen] = React19.useState(false);
|
|
7302
|
+
React19.useEffect(() => {
|
|
7285
7303
|
return () => {
|
|
7286
7304
|
if (typeaheadTimeoutRef.current) clearTimeout(typeaheadTimeoutRef.current);
|
|
7287
7305
|
};
|
|
7288
7306
|
}, []);
|
|
7289
|
-
|
|
7307
|
+
React19.useEffect(() => {
|
|
7290
7308
|
var _a;
|
|
7291
7309
|
if (!open) return;
|
|
7292
7310
|
(_a = optionRefs.current[activeIndex]) == null ? void 0 : _a.focus();
|
|
@@ -7559,6 +7577,14 @@ var SegmentedProgressBar_default = {
|
|
|
7559
7577
|
progressCenterLabel: "SegmentedProgressBar_progressCenterLabel",
|
|
7560
7578
|
emptySegments: "SegmentedProgressBar_emptySegments"
|
|
7561
7579
|
};
|
|
7580
|
+
var sizeTokenMap = {
|
|
7581
|
+
"2xs": "var(--component-size-2xs)",
|
|
7582
|
+
xxs: "var(--component-size-xxs)",
|
|
7583
|
+
xs: "var(--component-size-xs)",
|
|
7584
|
+
sm: "var(--component-size-sm)",
|
|
7585
|
+
md: "var(--component-size-md)",
|
|
7586
|
+
lg: "var(--component-size-lg)"
|
|
7587
|
+
};
|
|
7562
7588
|
function SegmentWithTooltip({
|
|
7563
7589
|
seg,
|
|
7564
7590
|
index,
|
|
@@ -7598,9 +7624,9 @@ var SegmentedProgressBar = ({
|
|
|
7598
7624
|
segments,
|
|
7599
7625
|
total,
|
|
7600
7626
|
showRemainder = true,
|
|
7601
|
-
remainderSeverity = "
|
|
7627
|
+
remainderSeverity = "missing",
|
|
7602
7628
|
centerLabel,
|
|
7603
|
-
|
|
7629
|
+
size = "sm",
|
|
7604
7630
|
rounded = true,
|
|
7605
7631
|
trackColor,
|
|
7606
7632
|
tooltipPlacement = "top",
|
|
@@ -7638,7 +7664,8 @@ var SegmentedProgressBar = ({
|
|
|
7638
7664
|
className: SegmentedProgressBar_default.progressBar,
|
|
7639
7665
|
"data-rounded": rounded ? "true" : "false",
|
|
7640
7666
|
style: {
|
|
7641
|
-
height:
|
|
7667
|
+
["--progress-height"]: sizeTokenMap[size],
|
|
7668
|
+
height: sizeTokenMap[size],
|
|
7642
7669
|
background: trackColor != null ? trackColor : "var(--color-bg-surface-subtle)"
|
|
7643
7670
|
},
|
|
7644
7671
|
children: [
|
|
@@ -7880,7 +7907,7 @@ function defaultFormatRange(s, e, opts) {
|
|
|
7880
7907
|
return "";
|
|
7881
7908
|
}
|
|
7882
7909
|
var cx4 = (...classes) => classes.filter(Boolean).join(" ");
|
|
7883
|
-
var DateTimePicker =
|
|
7910
|
+
var DateTimePicker = React19.forwardRef(function DateTimePicker2({
|
|
7884
7911
|
mode = "single",
|
|
7885
7912
|
value,
|
|
7886
7913
|
onChange,
|
|
@@ -7897,12 +7924,12 @@ var DateTimePicker = React20.forwardRef(function DateTimePicker2({
|
|
|
7897
7924
|
formatRange = defaultFormatRange,
|
|
7898
7925
|
onOpenChange
|
|
7899
7926
|
}, _ref) {
|
|
7900
|
-
const popRef =
|
|
7927
|
+
const popRef = React19.useRef(null);
|
|
7901
7928
|
const onChangeRange = onChange;
|
|
7902
7929
|
const onChangeIso = onChange;
|
|
7903
7930
|
const onChangeDateOnly = onChange;
|
|
7904
|
-
const todayLocal =
|
|
7905
|
-
const initialAnchor =
|
|
7931
|
+
const todayLocal = React19.useMemo(() => /* @__PURE__ */ new Date(), []);
|
|
7932
|
+
const initialAnchor = React19.useMemo(() => {
|
|
7906
7933
|
if (mode === "single") {
|
|
7907
7934
|
if (typeof value === "string") {
|
|
7908
7935
|
const d = enableTime ? localDateFromIso(value) : localDateFromDateOnly(value);
|
|
@@ -7917,13 +7944,13 @@ var DateTimePicker = React20.forwardRef(function DateTimePicker2({
|
|
|
7917
7944
|
}
|
|
7918
7945
|
return todayLocal;
|
|
7919
7946
|
}, [mode, value, enableTime, todayLocal]);
|
|
7920
|
-
const [monthAnchor, setMonthAnchor] =
|
|
7921
|
-
|
|
7922
|
-
const [timeHH, setTimeHH] =
|
|
7923
|
-
const [timeMM, setTimeMM] =
|
|
7947
|
+
const [monthAnchor, setMonthAnchor] = React19.useState(initialAnchor);
|
|
7948
|
+
React19.useEffect(() => setMonthAnchor(initialAnchor), [initialAnchor]);
|
|
7949
|
+
const [timeHH, setTimeHH] = React19.useState(todayLocal.getHours());
|
|
7950
|
+
const [timeMM, setTimeMM] = React19.useState(
|
|
7924
7951
|
Math.floor(todayLocal.getMinutes() / timeStep) * timeStep
|
|
7925
7952
|
);
|
|
7926
|
-
|
|
7953
|
+
React19.useEffect(() => {
|
|
7927
7954
|
if (mode === "single" && enableTime && typeof value === "string") {
|
|
7928
7955
|
const d = localDateFromIso(value);
|
|
7929
7956
|
if (!d) return;
|
|
@@ -7931,46 +7958,46 @@ var DateTimePicker = React20.forwardRef(function DateTimePicker2({
|
|
|
7931
7958
|
setTimeMM(Math.floor(d.getMinutes() / timeStep) * timeStep);
|
|
7932
7959
|
}
|
|
7933
7960
|
}, [mode, enableTime, value, timeStep]);
|
|
7934
|
-
const [hoverUTC, setHoverUTC] =
|
|
7935
|
-
const cellsUTC =
|
|
7961
|
+
const [hoverUTC, setHoverUTC] = React19.useState(null);
|
|
7962
|
+
const cellsUTC = React19.useMemo(
|
|
7936
7963
|
() => buildMonthGrid(monthAnchor, weekStartsOn),
|
|
7937
7964
|
[monthAnchor, weekStartsOn]
|
|
7938
7965
|
);
|
|
7939
|
-
const monthStartUTC =
|
|
7966
|
+
const monthStartUTC = React19.useMemo(
|
|
7940
7967
|
() => startOfMonthUTC(toUTCDateOnlyFromLocal(monthAnchor)),
|
|
7941
7968
|
[monthAnchor]
|
|
7942
7969
|
);
|
|
7943
|
-
const monthEndUTC =
|
|
7970
|
+
const monthEndUTC = React19.useMemo(
|
|
7944
7971
|
() => endOfMonthUTC(toUTCDateOnlyFromLocal(monthAnchor)),
|
|
7945
7972
|
[monthAnchor]
|
|
7946
7973
|
);
|
|
7947
|
-
const weekdayFmt =
|
|
7948
|
-
const monthFmt =
|
|
7974
|
+
const weekdayFmt = React19.useMemo(() => new Intl.DateTimeFormat(locale, { weekday: "short" }), [locale]);
|
|
7975
|
+
const monthFmt = React19.useMemo(
|
|
7949
7976
|
() => new Intl.DateTimeFormat(locale, { month: "long", year: "numeric" }),
|
|
7950
7977
|
[locale]
|
|
7951
7978
|
);
|
|
7952
|
-
const selectedUTC_single =
|
|
7979
|
+
const selectedUTC_single = React19.useMemo(() => {
|
|
7953
7980
|
if (mode !== "single") return null;
|
|
7954
7981
|
if (typeof value !== "string") return null;
|
|
7955
7982
|
const d = enableTime ? localDateFromIso(value) : localDateFromDateOnly(value);
|
|
7956
7983
|
if (!d) return null;
|
|
7957
7984
|
return toUTCDateOnlyFromLocal(d);
|
|
7958
7985
|
}, [mode, value, enableTime]);
|
|
7959
|
-
const selectedUTC_start =
|
|
7986
|
+
const selectedUTC_start = React19.useMemo(() => {
|
|
7960
7987
|
if (mode !== "range") return null;
|
|
7961
7988
|
const v = value;
|
|
7962
7989
|
if (!(v == null ? void 0 : v.start)) return null;
|
|
7963
7990
|
const d = localDateFromDateOnly(v.start);
|
|
7964
7991
|
return d ? toUTCDateOnlyFromLocal(d) : null;
|
|
7965
7992
|
}, [mode, value]);
|
|
7966
|
-
const selectedUTC_end =
|
|
7993
|
+
const selectedUTC_end = React19.useMemo(() => {
|
|
7967
7994
|
if (mode !== "range") return null;
|
|
7968
7995
|
const v = value;
|
|
7969
7996
|
if (!(v == null ? void 0 : v.end)) return null;
|
|
7970
7997
|
const d = localDateFromDateOnly(v.end);
|
|
7971
7998
|
return d ? toUTCDateOnlyFromLocal(d) : null;
|
|
7972
7999
|
}, [mode, value]);
|
|
7973
|
-
const isDisabledUTC =
|
|
8000
|
+
const isDisabledUTC = React19.useCallback(
|
|
7974
8001
|
(utcDay) => {
|
|
7975
8002
|
if (min && utcDay < toUTCDateOnlyFromLocal(min)) return true;
|
|
7976
8003
|
if (max && utcDay > toUTCDateOnlyFromLocal(max)) return true;
|
|
@@ -7978,7 +8005,7 @@ var DateTimePicker = React20.forwardRef(function DateTimePicker2({
|
|
|
7978
8005
|
},
|
|
7979
8006
|
[min, max]
|
|
7980
8007
|
);
|
|
7981
|
-
const selectDay =
|
|
8008
|
+
const selectDay = React19.useCallback(
|
|
7982
8009
|
(utcDay) => {
|
|
7983
8010
|
var _a, _b;
|
|
7984
8011
|
if (isDisabledUTC(utcDay)) return;
|
|
@@ -8030,8 +8057,8 @@ var DateTimePicker = React20.forwardRef(function DateTimePicker2({
|
|
|
8030
8057
|
d.setDate(d.getDate() + n);
|
|
8031
8058
|
return d;
|
|
8032
8059
|
}
|
|
8033
|
-
const gridRef =
|
|
8034
|
-
|
|
8060
|
+
const gridRef = React19.useRef(null);
|
|
8061
|
+
React19.useEffect(() => {
|
|
8035
8062
|
const el = gridRef.current;
|
|
8036
8063
|
if (!el) return;
|
|
8037
8064
|
const onKey = (e) => {
|
|
@@ -8083,12 +8110,12 @@ var DateTimePicker = React20.forwardRef(function DateTimePicker2({
|
|
|
8083
8110
|
el.addEventListener("keydown", onKey);
|
|
8084
8111
|
return () => el.removeEventListener("keydown", onKey);
|
|
8085
8112
|
}, [monthAnchor]);
|
|
8086
|
-
const hours =
|
|
8087
|
-
const minutes =
|
|
8113
|
+
const hours = React19.useMemo(() => Array.from({ length: 24 }, (_, i) => i), []);
|
|
8114
|
+
const minutes = React19.useMemo(
|
|
8088
8115
|
() => Array.from({ length: Math.floor(60 / (timeStep || 1)) }, (_, i) => i * (timeStep || 1)),
|
|
8089
8116
|
[timeStep]
|
|
8090
8117
|
);
|
|
8091
|
-
const formatted =
|
|
8118
|
+
const formatted = React19.useMemo(() => {
|
|
8092
8119
|
if (mode === "single") {
|
|
8093
8120
|
if (typeof value !== "string") return "";
|
|
8094
8121
|
const d = enableTime ? localDateFromIso(value) : localDateFromDateOnly(value);
|
|
@@ -8104,12 +8131,12 @@ var DateTimePicker = React20.forwardRef(function DateTimePicker2({
|
|
|
8104
8131
|
if (ee) return `\u2013 ${ee}`;
|
|
8105
8132
|
return "";
|
|
8106
8133
|
}, [mode, value, enableTime]);
|
|
8107
|
-
const [text, setText] =
|
|
8108
|
-
const [dirty, setDirty] =
|
|
8109
|
-
|
|
8134
|
+
const [text, setText] = React19.useState(formatted);
|
|
8135
|
+
const [dirty, setDirty] = React19.useState(false);
|
|
8136
|
+
React19.useEffect(() => {
|
|
8110
8137
|
if (!dirty) setText(formatted);
|
|
8111
8138
|
}, [formatted, dirty]);
|
|
8112
|
-
const commitTypedValue =
|
|
8139
|
+
const commitTypedValue = React19.useCallback(() => {
|
|
8113
8140
|
if (!text.trim()) {
|
|
8114
8141
|
if (mode === "single") {
|
|
8115
8142
|
if (enableTime) onChangeIso(null);
|
|
@@ -8147,7 +8174,7 @@ var DateTimePicker = React20.forwardRef(function DateTimePicker2({
|
|
|
8147
8174
|
setDirty(false);
|
|
8148
8175
|
}
|
|
8149
8176
|
}, [text, mode, enableTime, onChangeDateOnly, onChangeIso, onChangeRange]);
|
|
8150
|
-
const emitTimeChange =
|
|
8177
|
+
const emitTimeChange = React19.useCallback(
|
|
8151
8178
|
(nextHH, nextMM) => {
|
|
8152
8179
|
if (mode !== "single" || !enableTime) return;
|
|
8153
8180
|
if (typeof value !== "string") return;
|
|
@@ -8165,7 +8192,7 @@ var DateTimePicker = React20.forwardRef(function DateTimePicker2({
|
|
|
8165
8192
|
},
|
|
8166
8193
|
[mode, enableTime, value, onChangeIso]
|
|
8167
8194
|
);
|
|
8168
|
-
const clear =
|
|
8195
|
+
const clear = React19.useCallback(() => {
|
|
8169
8196
|
if (mode === "single") {
|
|
8170
8197
|
if (enableTime) onChangeIso(null);
|
|
8171
8198
|
else onChangeDateOnly(null);
|
|
@@ -8415,19 +8442,19 @@ function Modal({
|
|
|
8415
8442
|
dataCy,
|
|
8416
8443
|
width
|
|
8417
8444
|
}) {
|
|
8418
|
-
const titleId =
|
|
8419
|
-
const dialogRef =
|
|
8420
|
-
const lastActiveElementRef =
|
|
8421
|
-
const [mounted, setMounted] =
|
|
8422
|
-
const onRequestCloseRef =
|
|
8423
|
-
|
|
8445
|
+
const titleId = React19.useId();
|
|
8446
|
+
const dialogRef = React19.useRef(null);
|
|
8447
|
+
const lastActiveElementRef = React19.useRef(null);
|
|
8448
|
+
const [mounted, setMounted] = React19.useState(false);
|
|
8449
|
+
const onRequestCloseRef = React19.useRef(onRequestClose);
|
|
8450
|
+
React19.useEffect(() => {
|
|
8424
8451
|
onRequestCloseRef.current = onRequestClose;
|
|
8425
8452
|
}, [onRequestClose]);
|
|
8426
|
-
|
|
8453
|
+
React19.useEffect(() => {
|
|
8427
8454
|
setMounted(true);
|
|
8428
8455
|
}, []);
|
|
8429
|
-
const wasOpenRef =
|
|
8430
|
-
|
|
8456
|
+
const wasOpenRef = React19.useRef(false);
|
|
8457
|
+
React19.useEffect(() => {
|
|
8431
8458
|
var _a;
|
|
8432
8459
|
const wasOpen = wasOpenRef.current;
|
|
8433
8460
|
wasOpenRef.current = isOpen;
|
|
@@ -8519,7 +8546,7 @@ function Modal({
|
|
|
8519
8546
|
tabIndex: -1,
|
|
8520
8547
|
children: [
|
|
8521
8548
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: Modal_default.header, children: [
|
|
8522
|
-
header && /* @__PURE__ */ jsxRuntime.jsx(Headline, { severity, size:
|
|
8549
|
+
header && /* @__PURE__ */ jsxRuntime.jsx(Headline, { severity, size: 2, disableMargin: true, subheader, children: header }),
|
|
8523
8550
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
8524
8551
|
Button,
|
|
8525
8552
|
{
|
|
@@ -8559,28 +8586,28 @@ function Modal({
|
|
|
8559
8586
|
document.body
|
|
8560
8587
|
);
|
|
8561
8588
|
}
|
|
8562
|
-
var ModalContext =
|
|
8589
|
+
var ModalContext = React19.createContext(void 0);
|
|
8563
8590
|
function ModalProvider({ children }) {
|
|
8564
|
-
const [isOpen, setIsOpen] =
|
|
8565
|
-
const [config, setConfig] =
|
|
8566
|
-
const [mounted, setMounted] =
|
|
8567
|
-
|
|
8591
|
+
const [isOpen, setIsOpen] = React19.useState(false);
|
|
8592
|
+
const [config, setConfig] = React19.useState(null);
|
|
8593
|
+
const [mounted, setMounted] = React19.useState(false);
|
|
8594
|
+
React19.useEffect(() => {
|
|
8568
8595
|
setMounted(true);
|
|
8569
8596
|
}, []);
|
|
8570
|
-
const [isLoading, setIsLoading] =
|
|
8571
|
-
const markAsLoading =
|
|
8572
|
-
const pendingResolverRef =
|
|
8573
|
-
const resolvePending =
|
|
8597
|
+
const [isLoading, setIsLoading] = React19.useState(false);
|
|
8598
|
+
const markAsLoading = React19.useCallback((loading = true) => setIsLoading(loading), []);
|
|
8599
|
+
const pendingResolverRef = React19.useRef(null);
|
|
8600
|
+
const resolvePending = React19.useCallback((value) => {
|
|
8574
8601
|
if (pendingResolverRef.current) {
|
|
8575
8602
|
pendingResolverRef.current(value);
|
|
8576
8603
|
pendingResolverRef.current = null;
|
|
8577
8604
|
}
|
|
8578
8605
|
}, []);
|
|
8579
|
-
const closeModal =
|
|
8606
|
+
const closeModal = React19.useCallback(() => {
|
|
8580
8607
|
setIsOpen(false);
|
|
8581
8608
|
setIsLoading(false);
|
|
8582
8609
|
}, []);
|
|
8583
|
-
const openModal =
|
|
8610
|
+
const openModal = React19.useCallback(
|
|
8584
8611
|
(newConfig) => {
|
|
8585
8612
|
resolvePending(false);
|
|
8586
8613
|
setConfig(newConfig);
|
|
@@ -8588,13 +8615,13 @@ function ModalProvider({ children }) {
|
|
|
8588
8615
|
},
|
|
8589
8616
|
[resolvePending]
|
|
8590
8617
|
);
|
|
8591
|
-
const handleRequestClose =
|
|
8618
|
+
const handleRequestClose = React19.useCallback(() => {
|
|
8592
8619
|
var _a;
|
|
8593
8620
|
(_a = config == null ? void 0 : config.onRequestClose) == null ? void 0 : _a.call(config);
|
|
8594
8621
|
resolvePending(false);
|
|
8595
8622
|
closeModal();
|
|
8596
8623
|
}, [config, closeModal, resolvePending]);
|
|
8597
|
-
const confirm =
|
|
8624
|
+
const confirm = React19.useCallback(
|
|
8598
8625
|
(confirmConfig) => {
|
|
8599
8626
|
return new Promise((resolve) => {
|
|
8600
8627
|
resolvePending(false);
|
|
@@ -8642,7 +8669,7 @@ function ModalProvider({ children }) {
|
|
|
8642
8669
|
return modalNode;
|
|
8643
8670
|
}
|
|
8644
8671
|
function useModal() {
|
|
8645
|
-
const ctx =
|
|
8672
|
+
const ctx = React19.useContext(ModalContext);
|
|
8646
8673
|
if (!ctx) throw new Error("useModal must be used within a ModalProvider");
|
|
8647
8674
|
return ctx;
|
|
8648
8675
|
}
|
|
@@ -8721,13 +8748,13 @@ function Toast({
|
|
|
8721
8748
|
}
|
|
8722
8749
|
);
|
|
8723
8750
|
}
|
|
8724
|
-
var ToastContext =
|
|
8751
|
+
var ToastContext = React19.createContext(void 0);
|
|
8725
8752
|
function ToastProvider({
|
|
8726
8753
|
children,
|
|
8727
8754
|
defaultDuration: defaultDuration2 = 4e3
|
|
8728
8755
|
}) {
|
|
8729
|
-
const [toasts, setToasts] =
|
|
8730
|
-
const timeouts =
|
|
8756
|
+
const [toasts, setToasts] = React19.useState([]);
|
|
8757
|
+
const timeouts = React19.useRef(/* @__PURE__ */ new Map());
|
|
8731
8758
|
const clearTimeoutForId = (id) => {
|
|
8732
8759
|
const timeoutId = timeouts.current.get(id);
|
|
8733
8760
|
if (timeoutId) {
|
|
@@ -8735,11 +8762,11 @@ function ToastProvider({
|
|
|
8735
8762
|
timeouts.current.delete(id);
|
|
8736
8763
|
}
|
|
8737
8764
|
};
|
|
8738
|
-
const hideToast =
|
|
8765
|
+
const hideToast = React19.useCallback((id) => {
|
|
8739
8766
|
clearTimeoutForId(id);
|
|
8740
8767
|
setToasts((prev) => prev.filter((t) => t.id !== id));
|
|
8741
8768
|
}, []);
|
|
8742
|
-
const scheduleAutoDismiss =
|
|
8769
|
+
const scheduleAutoDismiss = React19.useCallback(
|
|
8743
8770
|
(toast) => {
|
|
8744
8771
|
var _a;
|
|
8745
8772
|
const duration = (_a = toast.duration) != null ? _a : defaultDuration2;
|
|
@@ -8752,7 +8779,7 @@ function ToastProvider({
|
|
|
8752
8779
|
},
|
|
8753
8780
|
[defaultDuration2, hideToast]
|
|
8754
8781
|
);
|
|
8755
|
-
const showToast =
|
|
8782
|
+
const showToast = React19.useCallback(
|
|
8756
8783
|
(config) => {
|
|
8757
8784
|
var _a, _b, _c;
|
|
8758
8785
|
const id = (_c = (_b = config.id) != null ? _b : (_a = crypto.randomUUID) == null ? void 0 : _a.call(crypto)) != null ? _c : `${Date.now()}-${Math.random()}`;
|
|
@@ -8763,12 +8790,12 @@ function ToastProvider({
|
|
|
8763
8790
|
},
|
|
8764
8791
|
[scheduleAutoDismiss]
|
|
8765
8792
|
);
|
|
8766
|
-
const clearToasts =
|
|
8793
|
+
const clearToasts = React19.useCallback(() => {
|
|
8767
8794
|
timeouts.current.forEach((timeoutId) => window.clearTimeout(timeoutId));
|
|
8768
8795
|
timeouts.current.clear();
|
|
8769
8796
|
setToasts([]);
|
|
8770
8797
|
}, []);
|
|
8771
|
-
|
|
8798
|
+
React19.useEffect(
|
|
8772
8799
|
() => () => {
|
|
8773
8800
|
timeouts.current.forEach((timeoutId) => window.clearTimeout(timeoutId));
|
|
8774
8801
|
timeouts.current.clear();
|
|
@@ -8801,14 +8828,14 @@ function ToastProvider({
|
|
|
8801
8828
|
] });
|
|
8802
8829
|
}
|
|
8803
8830
|
function useToast() {
|
|
8804
|
-
const ctx =
|
|
8831
|
+
const ctx = React19.useContext(ToastContext);
|
|
8805
8832
|
if (!ctx) {
|
|
8806
8833
|
throw new Error("useToast must be used within a ToastProvider");
|
|
8807
8834
|
}
|
|
8808
8835
|
return ctx;
|
|
8809
8836
|
}
|
|
8810
8837
|
function useOptionalToast() {
|
|
8811
|
-
return
|
|
8838
|
+
return React19.useContext(ToastContext);
|
|
8812
8839
|
}
|
|
8813
8840
|
|
|
8814
8841
|
// src/components/attribute-chip/AttributeChip.module.css
|
|
@@ -8831,7 +8858,7 @@ function AttributeChip({
|
|
|
8831
8858
|
/* @__PURE__ */ jsxRuntime.jsx("span", { className: AttributeChip_default.value, children: loading ? "\u2014" : value == null ? void 0 : value.toString() })
|
|
8832
8859
|
] });
|
|
8833
8860
|
}
|
|
8834
|
-
var SplitPaneContext =
|
|
8861
|
+
var SplitPaneContext = React19__namespace.default.createContext(null);
|
|
8835
8862
|
function clamp3(n, min, max) {
|
|
8836
8863
|
return Math.max(min, Math.min(max, n));
|
|
8837
8864
|
}
|
|
@@ -8858,7 +8885,7 @@ function removeStoredSize(key) {
|
|
|
8858
8885
|
}
|
|
8859
8886
|
}
|
|
8860
8887
|
function useSplitPaneContext() {
|
|
8861
|
-
const ctx =
|
|
8888
|
+
const ctx = React19__namespace.default.useContext(SplitPaneContext);
|
|
8862
8889
|
if (!ctx) throw new Error("SplitPane components must be used within <SplitPane />");
|
|
8863
8890
|
return ctx;
|
|
8864
8891
|
}
|
|
@@ -8870,10 +8897,10 @@ function SplitPaneProvider({
|
|
|
8870
8897
|
minSecondarySize,
|
|
8871
8898
|
storageKey
|
|
8872
8899
|
}) {
|
|
8873
|
-
const containerRef =
|
|
8874
|
-
const [primarySize, setPrimarySize] =
|
|
8875
|
-
const [manualPrimarySize, setManualPrimarySize] =
|
|
8876
|
-
const getMaxPrimary =
|
|
8900
|
+
const containerRef = React19.useRef(null);
|
|
8901
|
+
const [primarySize, setPrimarySize] = React19.useState(initialPrimarySize);
|
|
8902
|
+
const [manualPrimarySize, setManualPrimarySize] = React19.useState(null);
|
|
8903
|
+
const getMaxPrimary = React19.useCallback(() => {
|
|
8877
8904
|
const el = containerRef.current;
|
|
8878
8905
|
if (!el) return null;
|
|
8879
8906
|
const rect = el.getBoundingClientRect();
|
|
@@ -8881,14 +8908,14 @@ function SplitPaneProvider({
|
|
|
8881
8908
|
if (!Number.isFinite(total) || total <= 0) return null;
|
|
8882
8909
|
return Math.max(minPrimarySize, total - minSecondarySize);
|
|
8883
8910
|
}, [direction, minPrimarySize, minSecondarySize]);
|
|
8884
|
-
|
|
8911
|
+
React19.useEffect(() => {
|
|
8885
8912
|
if (!storageKey) return;
|
|
8886
8913
|
const stored = readStoredSize(storageKey);
|
|
8887
8914
|
if (stored === null) return;
|
|
8888
8915
|
setManualPrimarySize(stored);
|
|
8889
8916
|
setPrimarySize(stored);
|
|
8890
8917
|
}, [storageKey]);
|
|
8891
|
-
|
|
8918
|
+
React19.useEffect(() => {
|
|
8892
8919
|
const el = containerRef.current;
|
|
8893
8920
|
if (!el) return;
|
|
8894
8921
|
if (typeof ResizeObserver === "undefined") return;
|
|
@@ -8903,7 +8930,7 @@ function SplitPaneProvider({
|
|
|
8903
8930
|
ro.observe(el);
|
|
8904
8931
|
return () => ro.disconnect();
|
|
8905
8932
|
}, [getMaxPrimary, initialPrimarySize, manualPrimarySize]);
|
|
8906
|
-
|
|
8933
|
+
React19.useEffect(() => {
|
|
8907
8934
|
if (!storageKey) return;
|
|
8908
8935
|
if (manualPrimarySize === null) {
|
|
8909
8936
|
removeStoredSize(storageKey);
|
|
@@ -8911,11 +8938,11 @@ function SplitPaneProvider({
|
|
|
8911
8938
|
}
|
|
8912
8939
|
writeStoredSize(storageKey, manualPrimarySize);
|
|
8913
8940
|
}, [manualPrimarySize, storageKey]);
|
|
8914
|
-
const handleSizeChange =
|
|
8941
|
+
const handleSizeChange = React19.useCallback((newSize) => {
|
|
8915
8942
|
setManualPrimarySize(newSize);
|
|
8916
8943
|
setPrimarySize(newSize);
|
|
8917
8944
|
}, []);
|
|
8918
|
-
const resetDefault =
|
|
8945
|
+
const resetDefault = React19.useCallback(() => {
|
|
8919
8946
|
setManualPrimarySize(null);
|
|
8920
8947
|
const maxPrimary = getMaxPrimary();
|
|
8921
8948
|
if (maxPrimary === null) {
|
|
@@ -8924,7 +8951,7 @@ function SplitPaneProvider({
|
|
|
8924
8951
|
}
|
|
8925
8952
|
setPrimarySize(clamp3(initialPrimarySize, minPrimarySize, maxPrimary));
|
|
8926
8953
|
}, [getMaxPrimary, initialPrimarySize, minPrimarySize]);
|
|
8927
|
-
const value =
|
|
8954
|
+
const value = React19.useMemo(
|
|
8928
8955
|
() => ({
|
|
8929
8956
|
direction,
|
|
8930
8957
|
primarySize,
|
|
@@ -8987,7 +9014,7 @@ function SplitPaneContainer({
|
|
|
8987
9014
|
gutterSize
|
|
8988
9015
|
}) {
|
|
8989
9016
|
const { direction, primarySize, containerRef } = useSplitPaneContext();
|
|
8990
|
-
const style =
|
|
9017
|
+
const style = React19.useMemo(
|
|
8991
9018
|
() => ({
|
|
8992
9019
|
"--split-pane-primary-size": `${primarySize}px`,
|
|
8993
9020
|
"--split-pane-gutter": `${gutterSize}px`
|
|
@@ -9022,16 +9049,16 @@ function SplitPaneGutter() {
|
|
|
9022
9049
|
containerRef,
|
|
9023
9050
|
resetDefault
|
|
9024
9051
|
} = useSplitPaneContext();
|
|
9025
|
-
const draggingRef =
|
|
9026
|
-
const pointerIdRef =
|
|
9027
|
-
const startPosRef =
|
|
9028
|
-
const startSizeRef =
|
|
9029
|
-
const maxPrimaryRef =
|
|
9030
|
-
const getClientPos =
|
|
9052
|
+
const draggingRef = React19.useRef(false);
|
|
9053
|
+
const pointerIdRef = React19.useRef(null);
|
|
9054
|
+
const startPosRef = React19.useRef(0);
|
|
9055
|
+
const startSizeRef = React19.useRef(primarySize);
|
|
9056
|
+
const maxPrimaryRef = React19.useRef(Infinity);
|
|
9057
|
+
const getClientPos = React19.useCallback(
|
|
9031
9058
|
(e) => direction === "horizontal" ? e.clientX : e.clientY,
|
|
9032
9059
|
[direction]
|
|
9033
9060
|
);
|
|
9034
|
-
const computeClamp =
|
|
9061
|
+
const computeClamp = React19.useCallback(() => {
|
|
9035
9062
|
const el = containerRef.current;
|
|
9036
9063
|
if (!el) return { maxPrimary: Infinity, total: 0 };
|
|
9037
9064
|
const rect = el.getBoundingClientRect();
|
|
@@ -9039,7 +9066,7 @@ function SplitPaneGutter() {
|
|
|
9039
9066
|
const maxPrimary2 = Math.max(minPrimarySize, total - minSecondarySize);
|
|
9040
9067
|
return { maxPrimary: maxPrimary2, total };
|
|
9041
9068
|
}, [containerRef, direction, minPrimarySize, minSecondarySize]);
|
|
9042
|
-
const onPointerDown =
|
|
9069
|
+
const onPointerDown = React19.useCallback(
|
|
9043
9070
|
(e) => {
|
|
9044
9071
|
const el = containerRef.current;
|
|
9045
9072
|
if (!el) return;
|
|
@@ -9055,7 +9082,7 @@ function SplitPaneGutter() {
|
|
|
9055
9082
|
},
|
|
9056
9083
|
[computeClamp, containerRef, direction, getClientPos, primarySize]
|
|
9057
9084
|
);
|
|
9058
|
-
const onPointerMove =
|
|
9085
|
+
const onPointerMove = React19.useCallback(
|
|
9059
9086
|
(e) => {
|
|
9060
9087
|
if (!draggingRef.current) return;
|
|
9061
9088
|
if (pointerIdRef.current !== null && e.pointerId !== pointerIdRef.current) return;
|
|
@@ -9066,16 +9093,16 @@ function SplitPaneGutter() {
|
|
|
9066
9093
|
},
|
|
9067
9094
|
[getClientPos, minPrimarySize, setPrimarySize]
|
|
9068
9095
|
);
|
|
9069
|
-
const endDrag =
|
|
9096
|
+
const endDrag = React19.useCallback(() => {
|
|
9070
9097
|
if (!draggingRef.current) return;
|
|
9071
9098
|
draggingRef.current = false;
|
|
9072
9099
|
pointerIdRef.current = null;
|
|
9073
9100
|
document.body.style.cursor = "";
|
|
9074
9101
|
document.body.style.userSelect = "";
|
|
9075
9102
|
}, []);
|
|
9076
|
-
const onPointerUp =
|
|
9077
|
-
const onPointerCancel =
|
|
9078
|
-
const onKeyDown =
|
|
9103
|
+
const onPointerUp = React19.useCallback(() => endDrag(), [endDrag]);
|
|
9104
|
+
const onPointerCancel = React19.useCallback(() => endDrag(), [endDrag]);
|
|
9105
|
+
const onKeyDown = React19.useCallback(
|
|
9079
9106
|
(e) => {
|
|
9080
9107
|
const { maxPrimary: maxPrimary2 } = computeClamp();
|
|
9081
9108
|
const step = e.shiftKey ? 32 : 8;
|
|
@@ -9129,7 +9156,7 @@ function MetaBar({ items, separator = "\u2022" }) {
|
|
|
9129
9156
|
(item) => item.value !== null && item.value !== void 0 && item.value !== ""
|
|
9130
9157
|
);
|
|
9131
9158
|
if (visibleItems.length === 0) return null;
|
|
9132
|
-
return /* @__PURE__ */ jsxRuntime.jsx("div", { className: MetaBar_default.meta, children: visibleItems.map((item, index) => /* @__PURE__ */ jsxRuntime.jsxs(
|
|
9159
|
+
return /* @__PURE__ */ jsxRuntime.jsx("div", { className: MetaBar_default.meta, children: visibleItems.map((item, index) => /* @__PURE__ */ jsxRuntime.jsxs(React19.Fragment, { children: [
|
|
9133
9160
|
/* @__PURE__ */ jsxRuntime.jsxs("span", { className: item.muted === false ? MetaBar_default.itemDefault : MetaBar_default.itemMuted, children: [
|
|
9134
9161
|
item.label && /* @__PURE__ */ jsxRuntime.jsxs("span", { children: [
|
|
9135
9162
|
item.label,
|
|
@@ -9180,7 +9207,7 @@ function CopyButton(props) {
|
|
|
9180
9207
|
disabled,
|
|
9181
9208
|
...rest
|
|
9182
9209
|
} = props;
|
|
9183
|
-
const [copied, setCopied] =
|
|
9210
|
+
const [copied, setCopied] = React19.useState(false);
|
|
9184
9211
|
const toast = useOptionalToast();
|
|
9185
9212
|
const buttonLabel = children;
|
|
9186
9213
|
const icon = disableIcon ? null : copied ? /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Check, {}) : /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Copy, {});
|
|
@@ -9297,7 +9324,7 @@ function getTextContent(node) {
|
|
|
9297
9324
|
if (node == null || typeof node === "boolean") return "";
|
|
9298
9325
|
if (typeof node === "string" || typeof node === "number") return String(node);
|
|
9299
9326
|
if (Array.isArray(node)) return node.map(getTextContent).join("");
|
|
9300
|
-
if (
|
|
9327
|
+
if (React19.isValidElement(node)) return getTextContent(node.props.children);
|
|
9301
9328
|
return "";
|
|
9302
9329
|
}
|
|
9303
9330
|
function CodeBlock({
|
|
@@ -9311,15 +9338,15 @@ function CodeBlock({
|
|
|
9311
9338
|
}) {
|
|
9312
9339
|
const text = typeof code === "string" ? code : void 0;
|
|
9313
9340
|
const hasChildren2 = children !== void 0 && children !== null;
|
|
9314
|
-
const [isWrapped, setIsWrapped] =
|
|
9315
|
-
const copy =
|
|
9341
|
+
const [isWrapped, setIsWrapped] = React19.useState(wrap);
|
|
9342
|
+
const copy = React19.useMemo(
|
|
9316
9343
|
() => {
|
|
9317
9344
|
var _a;
|
|
9318
9345
|
return (_a = copyText != null ? copyText : text) != null ? _a : getTextContent(children);
|
|
9319
9346
|
},
|
|
9320
9347
|
[copyText, text, children]
|
|
9321
9348
|
);
|
|
9322
|
-
const lines =
|
|
9349
|
+
const lines = React19.useMemo(
|
|
9323
9350
|
() => smart && !hasChildren2 && typeof text === "string" ? text.split("\n") : null,
|
|
9324
9351
|
[smart, hasChildren2, text]
|
|
9325
9352
|
);
|
|
@@ -9480,7 +9507,7 @@ function collectInitiallyExpandedNodeIds(value, defaultExpandedDepth, expandAll,
|
|
|
9480
9507
|
}
|
|
9481
9508
|
function HighlightedText({ text, query }) {
|
|
9482
9509
|
return getHighlightedSegments(text, query).map(
|
|
9483
|
-
(segment, index) => segment.matched ? /* @__PURE__ */ jsxRuntime.jsx("mark", { className: "dbc-highlight", children: segment.text }, `${segment.text}-${index}`) : /* @__PURE__ */ jsxRuntime.jsx(
|
|
9510
|
+
(segment, index) => segment.matched ? /* @__PURE__ */ jsxRuntime.jsx("mark", { className: "dbc-highlight", children: segment.text }, `${segment.text}-${index}`) : /* @__PURE__ */ jsxRuntime.jsx(React19.Fragment, { children: segment.text }, `${segment.text}-${index}`)
|
|
9484
9511
|
);
|
|
9485
9512
|
}
|
|
9486
9513
|
|
|
@@ -9630,8 +9657,8 @@ function JsonNode({
|
|
|
9630
9657
|
);
|
|
9631
9658
|
}
|
|
9632
9659
|
function useClipboardStatus() {
|
|
9633
|
-
const [copiedId, setCopiedId] =
|
|
9634
|
-
|
|
9660
|
+
const [copiedId, setCopiedId] = React19.useState(null);
|
|
9661
|
+
React19.useEffect(() => {
|
|
9635
9662
|
if (!copiedId) return;
|
|
9636
9663
|
const timer = window.setTimeout(() => setCopiedId(null), 1400);
|
|
9637
9664
|
return () => window.clearTimeout(timer);
|
|
@@ -9649,18 +9676,18 @@ function JsonViewer({
|
|
|
9649
9676
|
className,
|
|
9650
9677
|
maxHeight
|
|
9651
9678
|
}) {
|
|
9652
|
-
const [queryInput, setQueryInput] =
|
|
9653
|
-
const [query, setQuery] =
|
|
9679
|
+
const [queryInput, setQueryInput] = React19.useState("");
|
|
9680
|
+
const [query, setQuery] = React19.useState("");
|
|
9654
9681
|
const normalizedQuery = normalizeSearch(query);
|
|
9655
|
-
const inputId =
|
|
9682
|
+
const inputId = React19.useId();
|
|
9656
9683
|
const { copiedId, setCopiedId } = useClipboardStatus();
|
|
9657
|
-
|
|
9684
|
+
React19.useEffect(() => {
|
|
9658
9685
|
const timeoutId = window.setTimeout(() => {
|
|
9659
9686
|
setQuery(queryInput);
|
|
9660
9687
|
}, searchDebounceMs);
|
|
9661
9688
|
return () => window.clearTimeout(timeoutId);
|
|
9662
9689
|
}, [queryInput, searchDebounceMs]);
|
|
9663
|
-
const safeValue =
|
|
9690
|
+
const safeValue = React19.useMemo(() => {
|
|
9664
9691
|
if (isJsonValue(value)) return value;
|
|
9665
9692
|
return {
|
|
9666
9693
|
unsupported: {
|
|
@@ -9669,12 +9696,12 @@ function JsonViewer({
|
|
|
9669
9696
|
}
|
|
9670
9697
|
};
|
|
9671
9698
|
}, [value]);
|
|
9672
|
-
const matches =
|
|
9699
|
+
const matches = React19.useMemo(
|
|
9673
9700
|
() => normalizedQuery ? collectSearchMatches(safeValue, normalizedQuery) : /* @__PURE__ */ new Map(),
|
|
9674
9701
|
[normalizedQuery, safeValue]
|
|
9675
9702
|
);
|
|
9676
|
-
const allExpandableNodeIds =
|
|
9677
|
-
const [expandedNodeIds, setExpandedNodeIds] =
|
|
9703
|
+
const allExpandableNodeIds = React19.useMemo(() => collectExpandableNodeIds(safeValue), [safeValue]);
|
|
9704
|
+
const [expandedNodeIds, setExpandedNodeIds] = React19.useState(
|
|
9678
9705
|
() => new Set(collectInitiallyExpandedNodeIds(safeValue, defaultExpandedDepth, expandAll))
|
|
9679
9706
|
);
|
|
9680
9707
|
const hasResults = normalizedQuery ? matches.size > 0 : true;
|
|
@@ -9813,10 +9840,10 @@ function useTimeDuration({
|
|
|
9813
9840
|
liveUpdate = false,
|
|
9814
9841
|
formatDuration = defaultDuration
|
|
9815
9842
|
}) {
|
|
9816
|
-
const [hydrated, setHydrated] =
|
|
9817
|
-
const [tick, setTick] =
|
|
9818
|
-
|
|
9819
|
-
|
|
9843
|
+
const [hydrated, setHydrated] = React19.useState(false);
|
|
9844
|
+
const [tick, setTick] = React19.useState(0);
|
|
9845
|
+
React19.useEffect(() => setHydrated(true), []);
|
|
9846
|
+
React19.useEffect(() => {
|
|
9820
9847
|
if (!liveUpdate) return;
|
|
9821
9848
|
if (end && end.getTime() <= Date.now()) return;
|
|
9822
9849
|
const timer = setInterval(() => {
|
|
@@ -9827,17 +9854,17 @@ function useTimeDuration({
|
|
|
9827
9854
|
}, 1e3);
|
|
9828
9855
|
return () => clearInterval(timer);
|
|
9829
9856
|
}, [liveUpdate, end]);
|
|
9830
|
-
const started =
|
|
9857
|
+
const started = React19.useMemo(() => {
|
|
9831
9858
|
if (!start) return fallback;
|
|
9832
9859
|
if (!hydrated) return fallback;
|
|
9833
9860
|
return new Intl.DateTimeFormat("da-DK", dateFormat).format(start);
|
|
9834
9861
|
}, [start, hydrated, fallback, dateFormat]);
|
|
9835
|
-
const ended =
|
|
9862
|
+
const ended = React19.useMemo(() => {
|
|
9836
9863
|
if (!end) return fallback;
|
|
9837
9864
|
if (!hydrated) return fallback;
|
|
9838
9865
|
return new Intl.DateTimeFormat("da-DK", dateFormat).format(end);
|
|
9839
9866
|
}, [end, hydrated, fallback, dateFormat]);
|
|
9840
|
-
const duration =
|
|
9867
|
+
const duration = React19.useMemo(() => {
|
|
9841
9868
|
if (!start || !hydrated) return fallback;
|
|
9842
9869
|
const now = Date.now();
|
|
9843
9870
|
if (!end) {
|
|
@@ -9893,12 +9920,12 @@ function useSorting({
|
|
|
9893
9920
|
resetOnDataChange = false
|
|
9894
9921
|
}) {
|
|
9895
9922
|
const isControlled = state != null;
|
|
9896
|
-
const [uncontrolled, setUncontrolled] =
|
|
9923
|
+
const [uncontrolled, setUncontrolled] = React19.useState(() => ({
|
|
9897
9924
|
sortBy,
|
|
9898
9925
|
sortDirection
|
|
9899
9926
|
}));
|
|
9900
9927
|
const sortState = isControlled ? state : uncontrolled;
|
|
9901
|
-
const setSort =
|
|
9928
|
+
const setSort = React19.useCallback(
|
|
9902
9929
|
(next) => {
|
|
9903
9930
|
var _a, _b;
|
|
9904
9931
|
const normalized = {
|
|
@@ -9910,8 +9937,8 @@ function useSorting({
|
|
|
9910
9937
|
},
|
|
9911
9938
|
[isControlled, onStateChange]
|
|
9912
9939
|
);
|
|
9913
|
-
const clearSort =
|
|
9914
|
-
const onSortChange =
|
|
9940
|
+
const clearSort = React19.useCallback(() => setSort({ sortBy: null, sortDirection: null }), [setSort]);
|
|
9941
|
+
const onSortChange = React19.useCallback(
|
|
9915
9942
|
(e) => {
|
|
9916
9943
|
var _a, _b;
|
|
9917
9944
|
const nextSortBy = (_a = e.sortBy) != null ? _a : null;
|
|
@@ -9931,8 +9958,8 @@ function useSorting({
|
|
|
9931
9958
|
},
|
|
9932
9959
|
[allowUnsort, clearSort, setSort, sortState]
|
|
9933
9960
|
);
|
|
9934
|
-
const didInitRef =
|
|
9935
|
-
|
|
9961
|
+
const didInitRef = React19.useRef(false);
|
|
9962
|
+
React19.useEffect(() => {
|
|
9936
9963
|
if (!resetOnDataChange) return;
|
|
9937
9964
|
if (!didInitRef.current) {
|
|
9938
9965
|
didInitRef.current = true;
|
|
@@ -9940,7 +9967,7 @@ function useSorting({
|
|
|
9940
9967
|
}
|
|
9941
9968
|
clearSort();
|
|
9942
9969
|
}, [resetOnDataChange, data]);
|
|
9943
|
-
const sortedData =
|
|
9970
|
+
const sortedData = React19.useMemo(() => {
|
|
9944
9971
|
const { sortBy: sb, sortDirection: dir } = sortState;
|
|
9945
9972
|
if (!sb || !dir) return data;
|
|
9946
9973
|
const custom = columnComparators[sb];
|
|
@@ -9952,7 +9979,7 @@ function useSorting({
|
|
|
9952
9979
|
};
|
|
9953
9980
|
return stableSort(data, cmp);
|
|
9954
9981
|
}, [data, sortState, columnComparators, nulls]);
|
|
9955
|
-
const setSortRef =
|
|
9982
|
+
const setSortRef = React19.useRef(setSort);
|
|
9956
9983
|
setSortRef.current = setSort;
|
|
9957
9984
|
return {
|
|
9958
9985
|
sortedData,
|
|
@@ -9996,8 +10023,8 @@ function usePagination({
|
|
|
9996
10023
|
storageKey
|
|
9997
10024
|
}) {
|
|
9998
10025
|
const isControlled = state != null;
|
|
9999
|
-
const [hydrated, setHydrated] =
|
|
10000
|
-
const [uncontrolled, setUncontrolled] =
|
|
10026
|
+
const [hydrated, setHydrated] = React19.useState(() => !storageKey || isControlled);
|
|
10027
|
+
const [uncontrolled, setUncontrolled] = React19.useState(() => {
|
|
10001
10028
|
var _a;
|
|
10002
10029
|
const initial = normalizePaginationState({
|
|
10003
10030
|
skip,
|
|
@@ -10008,7 +10035,7 @@ function usePagination({
|
|
|
10008
10035
|
}
|
|
10009
10036
|
return (_a = safeParsePaginationState(window.localStorage.getItem(storageKey))) != null ? _a : initial;
|
|
10010
10037
|
});
|
|
10011
|
-
|
|
10038
|
+
React19.useEffect(() => {
|
|
10012
10039
|
if (typeof window === "undefined") return;
|
|
10013
10040
|
if (isControlled || !storageKey) {
|
|
10014
10041
|
setHydrated(true);
|
|
@@ -10019,8 +10046,8 @@ function usePagination({
|
|
|
10019
10046
|
setUncontrolled(stored != null ? stored : fallback);
|
|
10020
10047
|
setHydrated(true);
|
|
10021
10048
|
}, [isControlled, storageKey, skip, take]);
|
|
10022
|
-
const didInitRef =
|
|
10023
|
-
|
|
10049
|
+
const didInitRef = React19.useRef(false);
|
|
10050
|
+
React19.useEffect(() => {
|
|
10024
10051
|
if (isControlled) return;
|
|
10025
10052
|
if (storageKey) return;
|
|
10026
10053
|
if (!didInitRef.current) {
|
|
@@ -10040,7 +10067,7 @@ function usePagination({
|
|
|
10040
10067
|
totalCount === 0 ? 0 : Math.floor((totalCount - 1) / safeTake) * safeTake
|
|
10041
10068
|
);
|
|
10042
10069
|
const safeSkip = clamp5(Math.max(0, paginationState.skip), 0, maxSkip);
|
|
10043
|
-
const setPagination =
|
|
10070
|
+
const setPagination = React19.useCallback(
|
|
10044
10071
|
(next) => {
|
|
10045
10072
|
const normalized = normalizePaginationState(next);
|
|
10046
10073
|
if (isControlled) {
|
|
@@ -10051,7 +10078,7 @@ function usePagination({
|
|
|
10051
10078
|
},
|
|
10052
10079
|
[isControlled, onStateChange]
|
|
10053
10080
|
);
|
|
10054
|
-
const onPageChange =
|
|
10081
|
+
const onPageChange = React19.useCallback(
|
|
10055
10082
|
(pageEvent) => {
|
|
10056
10083
|
const nextTake = Math.max(1, pageEvent.take);
|
|
10057
10084
|
const nextSkip = Math.max(0, (pageEvent.page - 1) * nextTake);
|
|
@@ -10059,25 +10086,25 @@ function usePagination({
|
|
|
10059
10086
|
},
|
|
10060
10087
|
[setPagination]
|
|
10061
10088
|
);
|
|
10062
|
-
const resetPage =
|
|
10089
|
+
const resetPage = React19.useCallback(() => {
|
|
10063
10090
|
setPagination({ skip: 0, take: safeTake });
|
|
10064
10091
|
}, [setPagination, safeTake]);
|
|
10065
|
-
|
|
10092
|
+
React19.useEffect(() => {
|
|
10066
10093
|
if (!resetOnDataChange) return;
|
|
10067
10094
|
if (!hydrated) return;
|
|
10068
10095
|
resetPage();
|
|
10069
10096
|
}, [resetOnDataChange, data, hydrated]);
|
|
10070
|
-
const paginatedData =
|
|
10097
|
+
const paginatedData = React19.useMemo(() => {
|
|
10071
10098
|
return data.slice(safeSkip, safeSkip + safeTake);
|
|
10072
10099
|
}, [data, safeSkip, safeTake]);
|
|
10073
|
-
const page =
|
|
10074
|
-
|
|
10100
|
+
const page = React19.useMemo(() => Math.floor(safeSkip / safeTake) + 1, [safeSkip, safeTake]);
|
|
10101
|
+
React19.useEffect(() => {
|
|
10075
10102
|
if (isControlled) return;
|
|
10076
10103
|
if (safeSkip !== paginationState.skip) {
|
|
10077
10104
|
setUncontrolled((prev) => ({ ...prev, skip: safeSkip }));
|
|
10078
10105
|
}
|
|
10079
10106
|
}, [isControlled, safeSkip, paginationState.skip]);
|
|
10080
|
-
|
|
10107
|
+
React19.useEffect(() => {
|
|
10081
10108
|
if (typeof window === "undefined") return;
|
|
10082
10109
|
if (isControlled || !storageKey) return;
|
|
10083
10110
|
if (!hydrated) return;
|
|
@@ -10123,11 +10150,11 @@ function useTableData({
|
|
|
10123
10150
|
state: pagination == null ? void 0 : pagination.state,
|
|
10124
10151
|
onStateChange: pagination == null ? void 0 : pagination.onStateChange
|
|
10125
10152
|
});
|
|
10126
|
-
|
|
10153
|
+
React19.useEffect(() => {
|
|
10127
10154
|
if (!resetPageOnSortChange) return;
|
|
10128
10155
|
p.resetPage();
|
|
10129
10156
|
}, [resetPageOnSortChange, s.sortState.sortBy, s.sortState.sortDirection]);
|
|
10130
|
-
const rows =
|
|
10157
|
+
const rows = React19.useMemo(() => p.paginatedData, [p.paginatedData]);
|
|
10131
10158
|
return {
|
|
10132
10159
|
rows,
|
|
10133
10160
|
totalCount: s.sortedData.length,
|
|
@@ -10175,17 +10202,17 @@ function useTableSelection({
|
|
|
10175
10202
|
storage = "session"
|
|
10176
10203
|
}) {
|
|
10177
10204
|
const resolvedInitialSelectedIds = initialSelectedIds != null ? initialSelectedIds : EMPTY_IDS;
|
|
10178
|
-
const [selectedIds, setSelectedIds] =
|
|
10179
|
-
const [hydrated, setHydrated] =
|
|
10180
|
-
const lastWrittenRef =
|
|
10181
|
-
const itemsById =
|
|
10205
|
+
const [selectedIds, setSelectedIds] = React19.useState(resolvedInitialSelectedIds);
|
|
10206
|
+
const [hydrated, setHydrated] = React19.useState(false);
|
|
10207
|
+
const lastWrittenRef = React19.useRef(null);
|
|
10208
|
+
const itemsById = React19.useMemo(() => {
|
|
10182
10209
|
const map = /* @__PURE__ */ new Map();
|
|
10183
10210
|
for (const item of items) {
|
|
10184
10211
|
map.set(getId(item), item);
|
|
10185
10212
|
}
|
|
10186
10213
|
return map;
|
|
10187
10214
|
}, [items, getId]);
|
|
10188
|
-
|
|
10215
|
+
React19.useEffect(() => {
|
|
10189
10216
|
if (typeof window === "undefined") return;
|
|
10190
10217
|
const storageApi = storage === "local" ? window.localStorage : window.sessionStorage;
|
|
10191
10218
|
if (!storageKey) {
|
|
@@ -10202,7 +10229,7 @@ function useTableSelection({
|
|
|
10202
10229
|
lastWrittenRef.current = serializeIds(next);
|
|
10203
10230
|
setHydrated(true);
|
|
10204
10231
|
}, [storage, storageKey, resolvedInitialSelectedIds]);
|
|
10205
|
-
|
|
10232
|
+
React19.useEffect(() => {
|
|
10206
10233
|
if (!pruneToItems) return;
|
|
10207
10234
|
const visibleIds = new Set(Array.from(itemsById.keys()));
|
|
10208
10235
|
setSelectedIds((prev) => {
|
|
@@ -10215,7 +10242,7 @@ function useTableSelection({
|
|
|
10215
10242
|
return areSetsEqual(prev, next) ? prev : next;
|
|
10216
10243
|
});
|
|
10217
10244
|
}, [pruneToItems, itemsById]);
|
|
10218
|
-
const selectedItemMap =
|
|
10245
|
+
const selectedItemMap = React19.useMemo(() => {
|
|
10219
10246
|
const map = /* @__PURE__ */ new Map();
|
|
10220
10247
|
for (const id of selectedIds) {
|
|
10221
10248
|
const item = itemsById.get(id);
|
|
@@ -10223,13 +10250,13 @@ function useTableSelection({
|
|
|
10223
10250
|
}
|
|
10224
10251
|
return map;
|
|
10225
10252
|
}, [selectedIds, itemsById]);
|
|
10226
|
-
const selectedItems =
|
|
10227
|
-
const allSelected =
|
|
10253
|
+
const selectedItems = React19.useMemo(() => Array.from(selectedItemMap.values()), [selectedItemMap]);
|
|
10254
|
+
const allSelected = React19.useMemo(() => {
|
|
10228
10255
|
if (items.length === 0) return false;
|
|
10229
10256
|
return items.every((item) => selectedIds.has(getId(item)));
|
|
10230
10257
|
}, [items, selectedIds, getId]);
|
|
10231
|
-
const anySelected =
|
|
10232
|
-
|
|
10258
|
+
const anySelected = React19.useMemo(() => selectedIds.size > 0, [selectedIds]);
|
|
10259
|
+
React19.useEffect(() => {
|
|
10233
10260
|
if (!hydrated) return;
|
|
10234
10261
|
if (typeof window === "undefined") return;
|
|
10235
10262
|
if (storageKey) {
|
|
@@ -10242,7 +10269,7 @@ function useTableSelection({
|
|
|
10242
10269
|
}
|
|
10243
10270
|
onSelectionChange == null ? void 0 : onSelectionChange({ selectedIds, selectedItems });
|
|
10244
10271
|
}, [hydrated, onSelectionChange, selectedIds, selectedItems, storage, storageKey]);
|
|
10245
|
-
const toggleId =
|
|
10272
|
+
const toggleId = React19.useCallback(
|
|
10246
10273
|
(id, selected) => {
|
|
10247
10274
|
setSelectedIds((prev) => {
|
|
10248
10275
|
const next = new Set(prev);
|
|
@@ -10260,22 +10287,22 @@ function useTableSelection({
|
|
|
10260
10287
|
},
|
|
10261
10288
|
[selectionMode]
|
|
10262
10289
|
);
|
|
10263
|
-
const toggleItem =
|
|
10290
|
+
const toggleItem = React19.useCallback(
|
|
10264
10291
|
(item) => {
|
|
10265
10292
|
toggleId(getId(item));
|
|
10266
10293
|
},
|
|
10267
10294
|
[toggleId, getId]
|
|
10268
10295
|
);
|
|
10269
|
-
const selectOnly =
|
|
10296
|
+
const selectOnly = React19.useCallback((id) => {
|
|
10270
10297
|
setSelectedIds((prev) => {
|
|
10271
10298
|
const next = /* @__PURE__ */ new Set([id]);
|
|
10272
10299
|
return areSetsEqual(prev, next) ? prev : next;
|
|
10273
10300
|
});
|
|
10274
10301
|
}, []);
|
|
10275
|
-
const clearSelection =
|
|
10302
|
+
const clearSelection = React19.useCallback(() => {
|
|
10276
10303
|
setSelectedIds((prev) => prev.size === 0 ? prev : /* @__PURE__ */ new Set());
|
|
10277
10304
|
}, []);
|
|
10278
|
-
const toggleAll =
|
|
10305
|
+
const toggleAll = React19.useCallback(
|
|
10279
10306
|
(selected) => {
|
|
10280
10307
|
if (!selected) {
|
|
10281
10308
|
clearSelection();
|
|
@@ -10333,7 +10360,7 @@ function ChipMultiToggle({
|
|
|
10333
10360
|
type = "rounded",
|
|
10334
10361
|
dataCy
|
|
10335
10362
|
}) {
|
|
10336
|
-
const selectedSet =
|
|
10363
|
+
const selectedSet = React19__namespace.default.useMemo(() => new Set(selectedValues), [selectedValues]);
|
|
10337
10364
|
const isNoneSelected = allTogglesNone && selectedSet.has(noneValue);
|
|
10338
10365
|
const isAllSelected = showAllOption && !isNoneSelected && selectedSet.size === 0;
|
|
10339
10366
|
const toggleValue = (value) => {
|
|
@@ -10451,8 +10478,8 @@ function CheckboxGroup({
|
|
|
10451
10478
|
"data-cy": dataCy
|
|
10452
10479
|
}) {
|
|
10453
10480
|
var _a, _b;
|
|
10454
|
-
const selectedSet =
|
|
10455
|
-
const enabledValues =
|
|
10481
|
+
const selectedSet = React19.useMemo(() => new Set(selectedValues), [selectedValues]);
|
|
10482
|
+
const enabledValues = React19.useMemo(
|
|
10456
10483
|
() => options.filter((o) => !(disabled || o.disabled)).map((o) => o.value),
|
|
10457
10484
|
[options, disabled]
|
|
10458
10485
|
);
|
|
@@ -10583,15 +10610,15 @@ function SidePanel({
|
|
|
10583
10610
|
detailsHeaderAddition,
|
|
10584
10611
|
...props
|
|
10585
10612
|
}) {
|
|
10586
|
-
const [mounted, setMounted] =
|
|
10587
|
-
const [shouldRender, setShouldRender] =
|
|
10588
|
-
const [isActive, setIsActive] =
|
|
10589
|
-
const panelRef =
|
|
10590
|
-
|
|
10591
|
-
|
|
10613
|
+
const [mounted, setMounted] = React19.useState(false);
|
|
10614
|
+
const [shouldRender, setShouldRender] = React19.useState(isOpen);
|
|
10615
|
+
const [isActive, setIsActive] = React19.useState(false);
|
|
10616
|
+
const panelRef = React19.useRef(null);
|
|
10617
|
+
React19.useEffect(() => setMounted(true), []);
|
|
10618
|
+
React19.useEffect(() => {
|
|
10592
10619
|
if (isOpen) setShouldRender(true);
|
|
10593
10620
|
}, [isOpen]);
|
|
10594
|
-
|
|
10621
|
+
React19.useEffect(() => {
|
|
10595
10622
|
if (!isOpen) return;
|
|
10596
10623
|
const handleKeyDown = (e) => {
|
|
10597
10624
|
if (e.key === "Escape") {
|
|
@@ -10604,7 +10631,7 @@ function SidePanel({
|
|
|
10604
10631
|
document.removeEventListener("keydown", handleKeyDown);
|
|
10605
10632
|
};
|
|
10606
10633
|
}, [isOpen, onClose]);
|
|
10607
|
-
|
|
10634
|
+
React19.useEffect(() => {
|
|
10608
10635
|
if (!shouldRender) return;
|
|
10609
10636
|
if (!isOpen) {
|
|
10610
10637
|
setIsActive(false);
|
|
@@ -10613,7 +10640,7 @@ function SidePanel({
|
|
|
10613
10640
|
const raf = requestAnimationFrame(() => setIsActive(true));
|
|
10614
10641
|
return () => cancelAnimationFrame(raf);
|
|
10615
10642
|
}, [isOpen, shouldRender]);
|
|
10616
|
-
|
|
10643
|
+
React19.useEffect(() => {
|
|
10617
10644
|
if (!shouldRender) return;
|
|
10618
10645
|
const el = panelRef.current;
|
|
10619
10646
|
if (!el) return;
|
|
@@ -10682,7 +10709,7 @@ function SidePanel({
|
|
|
10682
10709
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
10683
10710
|
Headline,
|
|
10684
10711
|
{
|
|
10685
|
-
size:
|
|
10712
|
+
size: 2,
|
|
10686
10713
|
disableMargin: true,
|
|
10687
10714
|
severity,
|
|
10688
10715
|
marker: showHeaderMarker,
|
|
@@ -10721,7 +10748,7 @@ function SidePanel({
|
|
|
10721
10748
|
);
|
|
10722
10749
|
}
|
|
10723
10750
|
function useSidePanel(initialOpen = false) {
|
|
10724
|
-
const [isOpen, setIsOpen] =
|
|
10751
|
+
const [isOpen, setIsOpen] = React19.useState(initialOpen);
|
|
10725
10752
|
const openSidePanel = () => setIsOpen(true);
|
|
10726
10753
|
const closeSidePanel = () => setIsOpen(false);
|
|
10727
10754
|
return {
|
|
@@ -10780,7 +10807,7 @@ function Tooltip({
|
|
|
10780
10807
|
delayOpenMs,
|
|
10781
10808
|
delayCloseMs
|
|
10782
10809
|
});
|
|
10783
|
-
const rootClass =
|
|
10810
|
+
const rootClass = React19.useMemo(
|
|
10784
10811
|
() => ["TooltipContainer", className].filter(Boolean).join(" "),
|
|
10785
10812
|
[className]
|
|
10786
10813
|
);
|
|
@@ -10804,7 +10831,7 @@ function RadioButtonGroup({
|
|
|
10804
10831
|
direction = "column",
|
|
10805
10832
|
"data-cy": dataCy
|
|
10806
10833
|
}) {
|
|
10807
|
-
const generated =
|
|
10834
|
+
const generated = React19.useId();
|
|
10808
10835
|
const groupName = name != null ? name : `radio-group-${generated}`;
|
|
10809
10836
|
const content = /* @__PURE__ */ jsxRuntime.jsx(
|
|
10810
10837
|
"div",
|
|
@@ -10876,22 +10903,22 @@ function IntervalSelect({
|
|
|
10876
10903
|
dataCy,
|
|
10877
10904
|
disabled
|
|
10878
10905
|
}) {
|
|
10879
|
-
const generatedId =
|
|
10906
|
+
const generatedId = React19.useId();
|
|
10880
10907
|
const controlId = id != null ? id : `interval-select-${generatedId}`;
|
|
10881
10908
|
const describedById = `${controlId}-desc`;
|
|
10882
10909
|
const listboxId = `${controlId}-listbox`;
|
|
10883
|
-
const popoverRef =
|
|
10884
|
-
const optionRefs =
|
|
10885
|
-
const selectedIndex =
|
|
10910
|
+
const popoverRef = React19.useRef(null);
|
|
10911
|
+
const optionRefs = React19.useRef([]);
|
|
10912
|
+
const selectedIndex = React19.useMemo(
|
|
10886
10913
|
() => options.findIndex((o) => o.minutesAgo === selectedValue),
|
|
10887
10914
|
[options, selectedValue]
|
|
10888
10915
|
);
|
|
10889
|
-
const [activeIndex, setActiveIndex] =
|
|
10890
|
-
|
|
10916
|
+
const [activeIndex, setActiveIndex] = React19.useState(selectedIndex >= 0 ? selectedIndex : 0);
|
|
10917
|
+
React19.useEffect(() => {
|
|
10891
10918
|
var _a;
|
|
10892
10919
|
(_a = optionRefs.current[activeIndex]) == null ? void 0 : _a.focus();
|
|
10893
10920
|
}, [activeIndex]);
|
|
10894
|
-
const selected =
|
|
10921
|
+
const selected = React19.useMemo(
|
|
10895
10922
|
() => {
|
|
10896
10923
|
var _a;
|
|
10897
10924
|
return (_a = options.find((o) => o.minutesAgo === selectedValue)) != null ? _a : null;
|
|
@@ -11042,6 +11069,7 @@ function IntervalSelect({
|
|
|
11042
11069
|
// src/components/accordion/Accordion.module.css
|
|
11043
11070
|
var Accordion_default = {
|
|
11044
11071
|
container: "Accordion_container",
|
|
11072
|
+
outlined: "Accordion_outlined",
|
|
11045
11073
|
sm: "Accordion_sm",
|
|
11046
11074
|
md: "Accordion_md",
|
|
11047
11075
|
lg: "Accordion_lg"
|
|
@@ -11058,13 +11086,14 @@ var AccordionRow_default = {
|
|
|
11058
11086
|
panel: "AccordionRow_panel",
|
|
11059
11087
|
animate: "AccordionRow_animate",
|
|
11060
11088
|
noAnimate: "AccordionRow_noAnimate",
|
|
11061
|
-
content: "AccordionRow_content"
|
|
11089
|
+
content: "AccordionRow_content",
|
|
11090
|
+
item: "AccordionRow_item"
|
|
11062
11091
|
};
|
|
11063
11092
|
function useCollapsibleHeight(isOpen, shouldAnimate) {
|
|
11064
|
-
const innerRef =
|
|
11065
|
-
const [height, setHeight] =
|
|
11066
|
-
const prevIsOpenRef =
|
|
11067
|
-
|
|
11093
|
+
const innerRef = React19.useRef(null);
|
|
11094
|
+
const [height, setHeight] = React19.useState("0px");
|
|
11095
|
+
const prevIsOpenRef = React19.useRef(isOpen);
|
|
11096
|
+
React19.useLayoutEffect(() => {
|
|
11068
11097
|
var _a, _b;
|
|
11069
11098
|
const el = innerRef.current;
|
|
11070
11099
|
if (!el) return;
|
|
@@ -11101,7 +11130,9 @@ function AccordionRow({
|
|
|
11101
11130
|
item,
|
|
11102
11131
|
isOpen,
|
|
11103
11132
|
onToggle,
|
|
11104
|
-
shouldAnimate = true
|
|
11133
|
+
shouldAnimate = true,
|
|
11134
|
+
headlineSize = 4,
|
|
11135
|
+
variant = "default"
|
|
11105
11136
|
}) {
|
|
11106
11137
|
const isDisabled = !!item.disabled;
|
|
11107
11138
|
const buttonId = `${uid}-acc-btn-${index}`;
|
|
@@ -11129,8 +11160,8 @@ function AccordionRow({
|
|
|
11129
11160
|
Headline,
|
|
11130
11161
|
{
|
|
11131
11162
|
disableMargin: true,
|
|
11132
|
-
size:
|
|
11133
|
-
weight: 500,
|
|
11163
|
+
size: headlineSize,
|
|
11164
|
+
weight: variant === "outlined" ? 400 : 500,
|
|
11134
11165
|
severity: item.severity,
|
|
11135
11166
|
subheader: item.subheader,
|
|
11136
11167
|
allowWrap: isOpen,
|
|
@@ -11169,6 +11200,7 @@ function Accordion({
|
|
|
11169
11200
|
items,
|
|
11170
11201
|
mode = "single",
|
|
11171
11202
|
size = "md",
|
|
11203
|
+
variant = "default",
|
|
11172
11204
|
defaultOpenIndex = null,
|
|
11173
11205
|
defaultOpenIndexes = [],
|
|
11174
11206
|
openIndex,
|
|
@@ -11176,28 +11208,28 @@ function Accordion({
|
|
|
11176
11208
|
onOpenIndexChange,
|
|
11177
11209
|
onOpenIndexesChange
|
|
11178
11210
|
}) {
|
|
11179
|
-
const uid =
|
|
11211
|
+
const uid = React19.useId();
|
|
11180
11212
|
const isControlled = mode === "single" ? openIndex !== void 0 : openIndexes !== void 0;
|
|
11181
|
-
const
|
|
11182
|
-
|
|
11183
|
-
|
|
11213
|
+
const [hasMounted, setHasMounted] = React19.useState(false);
|
|
11214
|
+
React19.useEffect(() => {
|
|
11215
|
+
setHasMounted(true);
|
|
11184
11216
|
}, []);
|
|
11185
|
-
const [internalSingle, setInternalSingle] =
|
|
11217
|
+
const [internalSingle, setInternalSingle] = React19.useState(
|
|
11186
11218
|
mode === "single" ? defaultOpenIndex : null
|
|
11187
11219
|
);
|
|
11188
|
-
const [internalMultiple, setInternalMultiple] =
|
|
11220
|
+
const [internalMultiple, setInternalMultiple] = React19.useState(() => {
|
|
11189
11221
|
if (mode !== "multiple") return [];
|
|
11190
11222
|
if (defaultOpenIndexes === "all") return items.map((_, i) => i);
|
|
11191
11223
|
return normalizeMultiple(defaultOpenIndexes);
|
|
11192
11224
|
});
|
|
11193
|
-
const currentOpenIndexes =
|
|
11225
|
+
const currentOpenIndexes = React19.useMemo(() => {
|
|
11194
11226
|
if (mode === "single") {
|
|
11195
11227
|
const current = isControlled ? openIndex != null ? openIndex : null : internalSingle;
|
|
11196
11228
|
return current === null ? [] : [current];
|
|
11197
11229
|
}
|
|
11198
11230
|
return isControlled ? normalizeMultiple(openIndexes) : internalMultiple;
|
|
11199
11231
|
}, [mode, isControlled, openIndex, openIndexes, internalSingle, internalMultiple]);
|
|
11200
|
-
const openSet =
|
|
11232
|
+
const openSet = React19.useMemo(() => new Set(currentOpenIndexes), [currentOpenIndexes]);
|
|
11201
11233
|
function commit(nextIndexes) {
|
|
11202
11234
|
if (mode === "single") {
|
|
11203
11235
|
const next = nextIndexes.length ? nextIndexes[0] : null;
|
|
@@ -11226,18 +11258,26 @@ function Accordion({
|
|
|
11226
11258
|
if (isOpen) commit(currentOpenIndexes.filter((i) => i !== index));
|
|
11227
11259
|
else commit([...currentOpenIndexes, index]);
|
|
11228
11260
|
}
|
|
11229
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
11230
|
-
|
|
11261
|
+
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
11262
|
+
"div",
|
|
11231
11263
|
{
|
|
11232
|
-
|
|
11233
|
-
|
|
11234
|
-
|
|
11235
|
-
|
|
11236
|
-
|
|
11237
|
-
|
|
11238
|
-
|
|
11239
|
-
|
|
11240
|
-
|
|
11264
|
+
className: [Accordion_default.container, Accordion_default[size], variant !== "default" ? Accordion_default[variant] : ""].filter(Boolean).join(" "),
|
|
11265
|
+
children: items.map((item, i) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
11266
|
+
AccordionRow,
|
|
11267
|
+
{
|
|
11268
|
+
uid,
|
|
11269
|
+
index: i,
|
|
11270
|
+
item,
|
|
11271
|
+
isOpen: openSet.has(i),
|
|
11272
|
+
onToggle: toggle,
|
|
11273
|
+
shouldAnimate: hasMounted,
|
|
11274
|
+
headlineSize: size === "sm" ? 4 : 3,
|
|
11275
|
+
variant
|
|
11276
|
+
},
|
|
11277
|
+
i
|
|
11278
|
+
))
|
|
11279
|
+
}
|
|
11280
|
+
);
|
|
11241
11281
|
}
|
|
11242
11282
|
var EmptyIllustration = () => /* @__PURE__ */ jsxRuntime.jsxs(
|
|
11243
11283
|
"svg",
|
|
@@ -12451,7 +12491,7 @@ function StatePage({
|
|
|
12451
12491
|
children,
|
|
12452
12492
|
actions
|
|
12453
12493
|
}) {
|
|
12454
|
-
const illustration =
|
|
12494
|
+
const illustration = React19.useMemo(() => {
|
|
12455
12495
|
switch (type) {
|
|
12456
12496
|
case "error":
|
|
12457
12497
|
return /* @__PURE__ */ jsxRuntime.jsx(ErrorIllustration, {});
|
|
@@ -12487,14 +12527,14 @@ function StickyFooterLayout({
|
|
|
12487
12527
|
className
|
|
12488
12528
|
}) {
|
|
12489
12529
|
const pad = `var(${chromePaddingVar})`;
|
|
12490
|
-
const contentColRef =
|
|
12491
|
-
const footerOverlayRef =
|
|
12492
|
-
const [dock, setDock] =
|
|
12530
|
+
const contentColRef = React19.useRef(null);
|
|
12531
|
+
const footerOverlayRef = React19.useRef(null);
|
|
12532
|
+
const [dock, setDock] = React19.useState({
|
|
12493
12533
|
left: 0,
|
|
12494
12534
|
width: typeof maxWidth === "number" ? maxWidth : 550
|
|
12495
12535
|
});
|
|
12496
|
-
const [overlayHeight, setOverlayHeight] =
|
|
12497
|
-
|
|
12536
|
+
const [overlayHeight, setOverlayHeight] = React19.useState(0);
|
|
12537
|
+
React19.useLayoutEffect(() => {
|
|
12498
12538
|
const el = contentColRef.current;
|
|
12499
12539
|
if (!el) return;
|
|
12500
12540
|
const measure = () => {
|
|
@@ -12510,7 +12550,7 @@ function StickyFooterLayout({
|
|
|
12510
12550
|
window.removeEventListener("resize", measure);
|
|
12511
12551
|
};
|
|
12512
12552
|
}, []);
|
|
12513
|
-
|
|
12553
|
+
React19.useLayoutEffect(() => {
|
|
12514
12554
|
const el = footerOverlayRef.current;
|
|
12515
12555
|
if (!el) return;
|
|
12516
12556
|
const measure = () => setOverlayHeight(el.getBoundingClientRect().height);
|
|
@@ -12738,6 +12778,48 @@ function Alert({
|
|
|
12738
12778
|
);
|
|
12739
12779
|
}
|
|
12740
12780
|
|
|
12781
|
+
// src/components/inline-status/InlineStatus.module.css
|
|
12782
|
+
var InlineStatus_default = {
|
|
12783
|
+
container: "InlineStatus_container",
|
|
12784
|
+
fullWidth: "InlineStatus_fullWidth",
|
|
12785
|
+
leading: "InlineStatus_leading",
|
|
12786
|
+
body: "InlineStatus_body",
|
|
12787
|
+
sm: "InlineStatus_sm",
|
|
12788
|
+
md: "InlineStatus_md",
|
|
12789
|
+
neutral: "InlineStatus_neutral",
|
|
12790
|
+
success: "InlineStatus_success",
|
|
12791
|
+
warning: "InlineStatus_warning",
|
|
12792
|
+
error: "InlineStatus_error",
|
|
12793
|
+
info: "InlineStatus_info",
|
|
12794
|
+
brand: "InlineStatus_brand"
|
|
12795
|
+
};
|
|
12796
|
+
function InlineStatus({
|
|
12797
|
+
children,
|
|
12798
|
+
severity = "neutral",
|
|
12799
|
+
customIcon,
|
|
12800
|
+
disableIcon = false,
|
|
12801
|
+
fullWidth = false,
|
|
12802
|
+
size = "sm"
|
|
12803
|
+
}) {
|
|
12804
|
+
const hasLeading = Boolean(customIcon) || !disableIcon;
|
|
12805
|
+
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
12806
|
+
"div",
|
|
12807
|
+
{
|
|
12808
|
+
className: [
|
|
12809
|
+
InlineStatus_default.container,
|
|
12810
|
+
InlineStatus_default[severity],
|
|
12811
|
+
InlineStatus_default[size],
|
|
12812
|
+
fullWidth ? InlineStatus_default.fullWidth : "",
|
|
12813
|
+
hasLeading ? InlineStatus_default.hasLeading : ""
|
|
12814
|
+
].filter(Boolean).join(" "),
|
|
12815
|
+
children: [
|
|
12816
|
+
hasLeading ? /* @__PURE__ */ jsxRuntime.jsx("span", { className: InlineStatus_default.leading, children: customIcon != null ? customIcon : /* @__PURE__ */ jsxRuntime.jsx(Icon, { severity }) }) : null,
|
|
12817
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { className: InlineStatus_default.body, children })
|
|
12818
|
+
]
|
|
12819
|
+
}
|
|
12820
|
+
);
|
|
12821
|
+
}
|
|
12822
|
+
|
|
12741
12823
|
exports.Accordion = Accordion;
|
|
12742
12824
|
exports.Alert = Alert;
|
|
12743
12825
|
exports.AppHeader = AppHeader;
|
|
@@ -12761,16 +12843,17 @@ exports.DateTimePicker = DateTimePicker;
|
|
|
12761
12843
|
exports.Divider = Divider;
|
|
12762
12844
|
exports.FadeOverlay = FadeOverlay;
|
|
12763
12845
|
exports.FilterField = FilterField;
|
|
12846
|
+
exports.Footer = Footer;
|
|
12764
12847
|
exports.Grid = Grid;
|
|
12765
12848
|
exports.GridItem = GridItem;
|
|
12766
12849
|
exports.Headline = Headline;
|
|
12767
12850
|
exports.Hyperlink = Hyperlink;
|
|
12768
12851
|
exports.Icon = Icon;
|
|
12852
|
+
exports.InlineStatus = InlineStatus;
|
|
12769
12853
|
exports.Input = Input;
|
|
12770
12854
|
exports.InputContainer = InputContainer;
|
|
12771
12855
|
exports.IntervalSelect = IntervalSelect;
|
|
12772
12856
|
exports.JsonViewer = JsonViewer;
|
|
12773
|
-
exports.LayoutFooter = LayoutFooter;
|
|
12774
12857
|
exports.Menu = Menu;
|
|
12775
12858
|
exports.MetaBar = MetaBar;
|
|
12776
12859
|
exports.Modal = Modal;
|