@helpwave/hightide 0.12.5 → 0.12.7
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/index.d.mts +64 -34
- package/dist/index.d.ts +64 -34
- package/dist/index.js +336 -258
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +445 -368
- package/dist/index.mjs.map +1 -1
- package/dist/style/globals.css +190 -121
- package/dist/style/uncompiled/theme/colors/component.css +7 -0
- package/dist/style/uncompiled/theme/colors/semantic.css +4 -4
- package/dist/style/uncompiled/theme/components/app-page.css +2 -2
- package/dist/style/uncompiled/theme/components/avatar.css +12 -3
- package/dist/style/uncompiled/theme/components/button.css +1 -0
- package/dist/style/uncompiled/theme/components/card.css +16 -5
- package/dist/style/uncompiled/theme/components/checkbox.css +1 -7
- package/dist/style/uncompiled/theme/components/date-time-input.css +4 -0
- package/dist/style/uncompiled/theme/components/general.css +1 -0
- package/dist/style/uncompiled/theme/components/icon-button.css +1 -0
- package/dist/style/uncompiled/theme/components/switch.css +5 -1
- package/dist/style/uncompiled/theme/components/table.css +5 -1
- package/dist/style/uncompiled/theme/components/vertical-navigation.css +3 -2
- package/dist/style/uncompiled/utitlity/coloring.css +4 -8
- package/dist/style/uncompiled/utitlity/focus.css +14 -6
- package/package.json +1 -1
package/dist/index.mjs
CHANGED
|
@@ -6998,6 +6998,125 @@ function Visibility({ children, isVisible }) {
|
|
|
6998
6998
|
return /* @__PURE__ */ jsx3(Fragment, { children: isVisible && children });
|
|
6999
6999
|
}
|
|
7000
7000
|
|
|
7001
|
+
// src/components/display-and-visualization/Avatar.tsx
|
|
7002
|
+
import { jsx as jsx4, jsxs as jsxs3 } from "react/jsx-runtime";
|
|
7003
|
+
import { createElement } from "react";
|
|
7004
|
+
var Avatar = ({
|
|
7005
|
+
image: initialImage,
|
|
7006
|
+
name,
|
|
7007
|
+
size = "md",
|
|
7008
|
+
...props
|
|
7009
|
+
}) => {
|
|
7010
|
+
const [hasError, setHasError] = useState(false);
|
|
7011
|
+
const [hasLoaded, setHasLoaded] = useState(false);
|
|
7012
|
+
const [image, setImage] = useState(initialImage);
|
|
7013
|
+
const displayName = useMemo(() => {
|
|
7014
|
+
const maxLetters = size === "sm" ? 1 : 2;
|
|
7015
|
+
return (name ?? "").split(" ").filter((_, index) => index < maxLetters).map((value) => value[0]).join("").toUpperCase();
|
|
7016
|
+
}, [name, size]);
|
|
7017
|
+
const isShowingImage = !!image && (!hasError || !hasLoaded);
|
|
7018
|
+
useEffect(() => {
|
|
7019
|
+
if (initialImage?.avatarUrl !== image?.avatarUrl) {
|
|
7020
|
+
setHasError(false);
|
|
7021
|
+
setHasLoaded(false);
|
|
7022
|
+
}
|
|
7023
|
+
setImage(initialImage);
|
|
7024
|
+
}, [image?.avatarUrl, initialImage]);
|
|
7025
|
+
return /* @__PURE__ */ jsxs3(
|
|
7026
|
+
"div",
|
|
7027
|
+
{
|
|
7028
|
+
...props,
|
|
7029
|
+
"data-name": "avatar",
|
|
7030
|
+
"data-size": size ?? void 0,
|
|
7031
|
+
children: [
|
|
7032
|
+
/* @__PURE__ */ jsx4(Visibility, { isVisible: isShowingImage, children: /* @__PURE__ */ jsx4(
|
|
7033
|
+
"img",
|
|
7034
|
+
{
|
|
7035
|
+
src: image?.avatarUrl,
|
|
7036
|
+
alt: image?.alt,
|
|
7037
|
+
"data-name": "avatar-image",
|
|
7038
|
+
onLoad: () => setHasLoaded(true),
|
|
7039
|
+
onError: () => setHasError(true),
|
|
7040
|
+
"data-error": hasError ? "" : void 0,
|
|
7041
|
+
"data-loaded": hasLoaded ? "" : void 0
|
|
7042
|
+
},
|
|
7043
|
+
image?.avatarUrl
|
|
7044
|
+
) }),
|
|
7045
|
+
name ? displayName : /* @__PURE__ */ jsx4(UserIcon, {})
|
|
7046
|
+
]
|
|
7047
|
+
}
|
|
7048
|
+
);
|
|
7049
|
+
};
|
|
7050
|
+
var AvatarGroup = ({
|
|
7051
|
+
avatars,
|
|
7052
|
+
showTotalNumber = true,
|
|
7053
|
+
size = "md",
|
|
7054
|
+
...props
|
|
7055
|
+
}) => {
|
|
7056
|
+
const maxShownProfiles = 5;
|
|
7057
|
+
const displayedProfiles = avatars.length < maxShownProfiles ? avatars : avatars.slice(0, maxShownProfiles);
|
|
7058
|
+
const notDisplayedProfiles = avatars.length - maxShownProfiles;
|
|
7059
|
+
const group = /* @__PURE__ */ jsx4("div", { className: "avatar-group-container", children: displayedProfiles.map((avatar, index) => /* @__PURE__ */ createElement(
|
|
7060
|
+
Avatar,
|
|
7061
|
+
{
|
|
7062
|
+
...avatar,
|
|
7063
|
+
key: index,
|
|
7064
|
+
size,
|
|
7065
|
+
"data-group": ""
|
|
7066
|
+
}
|
|
7067
|
+
)) });
|
|
7068
|
+
return /* @__PURE__ */ jsxs3(
|
|
7069
|
+
"div",
|
|
7070
|
+
{
|
|
7071
|
+
...props,
|
|
7072
|
+
"data-name": props["data-name"] ?? "avatar-group",
|
|
7073
|
+
"data-size": size ?? void 0,
|
|
7074
|
+
children: [
|
|
7075
|
+
group,
|
|
7076
|
+
showTotalNumber && notDisplayedProfiles > 0 && /* @__PURE__ */ jsx4(
|
|
7077
|
+
"span",
|
|
7078
|
+
{
|
|
7079
|
+
"data-name": "avatar-group-more",
|
|
7080
|
+
"data-size": size,
|
|
7081
|
+
children: `+ ${notDisplayedProfiles}`
|
|
7082
|
+
}
|
|
7083
|
+
)
|
|
7084
|
+
]
|
|
7085
|
+
}
|
|
7086
|
+
);
|
|
7087
|
+
};
|
|
7088
|
+
var AvatarWithStatus = ({
|
|
7089
|
+
status = "unknown",
|
|
7090
|
+
className,
|
|
7091
|
+
size = "md",
|
|
7092
|
+
...avatarProps
|
|
7093
|
+
}) => {
|
|
7094
|
+
return /* @__PURE__ */ jsxs3(
|
|
7095
|
+
"div",
|
|
7096
|
+
{
|
|
7097
|
+
className: clsx3(className),
|
|
7098
|
+
"data-name": "avatar-with-status",
|
|
7099
|
+
"data-size": size ?? void 0,
|
|
7100
|
+
children: [
|
|
7101
|
+
/* @__PURE__ */ jsx4(Avatar, { ...avatarProps, size }),
|
|
7102
|
+
/* @__PURE__ */ jsx4(
|
|
7103
|
+
"div",
|
|
7104
|
+
{
|
|
7105
|
+
"data-name": "avatar-with-status-dot",
|
|
7106
|
+
"data-size": size ?? void 0,
|
|
7107
|
+
"data-status": status
|
|
7108
|
+
}
|
|
7109
|
+
)
|
|
7110
|
+
]
|
|
7111
|
+
}
|
|
7112
|
+
);
|
|
7113
|
+
};
|
|
7114
|
+
|
|
7115
|
+
// src/components/display-and-visualization/Card.tsx
|
|
7116
|
+
import { forwardRef, useCallback } from "react";
|
|
7117
|
+
import clsx4 from "clsx";
|
|
7118
|
+
import { ChevronRight, ExternalLink } from "lucide-react";
|
|
7119
|
+
|
|
7001
7120
|
// src/utils/array.ts
|
|
7002
7121
|
var equalSizeGroups = (array, groupSize) => {
|
|
7003
7122
|
if (groupSize <= 0) {
|
|
@@ -7263,130 +7382,24 @@ var PropsUtil = {
|
|
|
7263
7382
|
mergeProps
|
|
7264
7383
|
};
|
|
7265
7384
|
|
|
7266
|
-
// src/components/display-and-visualization/Avatar.tsx
|
|
7267
|
-
import { jsx as jsx4, jsxs as jsxs3 } from "react/jsx-runtime";
|
|
7268
|
-
import { createElement } from "react";
|
|
7269
|
-
var Avatar = ({
|
|
7270
|
-
image: initialImage,
|
|
7271
|
-
name,
|
|
7272
|
-
size = "md",
|
|
7273
|
-
...props
|
|
7274
|
-
}) => {
|
|
7275
|
-
const [hasError, setHasError] = useState(false);
|
|
7276
|
-
const [hasLoaded, setHasLoaded] = useState(false);
|
|
7277
|
-
const [image, setImage] = useState(initialImage);
|
|
7278
|
-
const displayName = useMemo(() => {
|
|
7279
|
-
const maxLetters = size === "sm" ? 1 : 2;
|
|
7280
|
-
return (name ?? "").split(" ").filter((_, index) => index < maxLetters).map((value) => value[0]).join("").toUpperCase();
|
|
7281
|
-
}, [name, size]);
|
|
7282
|
-
const isShowingImage = !!image && (!hasError || !hasLoaded);
|
|
7283
|
-
useEffect(() => {
|
|
7284
|
-
if (initialImage?.avatarUrl !== image?.avatarUrl) {
|
|
7285
|
-
setHasError(false);
|
|
7286
|
-
setHasLoaded(false);
|
|
7287
|
-
}
|
|
7288
|
-
setImage(initialImage);
|
|
7289
|
-
}, [image?.avatarUrl, initialImage]);
|
|
7290
|
-
return /* @__PURE__ */ jsxs3(
|
|
7291
|
-
"div",
|
|
7292
|
-
{
|
|
7293
|
-
...props,
|
|
7294
|
-
"data-name": props["data-name"] ?? "avatar",
|
|
7295
|
-
"data-size": props["data-size"] ?? size ?? void 0,
|
|
7296
|
-
children: [
|
|
7297
|
-
/* @__PURE__ */ jsx4(Visibility, { isVisible: isShowingImage, children: /* @__PURE__ */ jsx4(
|
|
7298
|
-
"img",
|
|
7299
|
-
{
|
|
7300
|
-
src: image?.avatarUrl,
|
|
7301
|
-
alt: image?.alt,
|
|
7302
|
-
"data-name": "avatar-image",
|
|
7303
|
-
onLoad: () => setHasLoaded(true),
|
|
7304
|
-
onError: () => setHasError(true),
|
|
7305
|
-
"data-error": hasError ? "" : void 0,
|
|
7306
|
-
"data-loaded": hasLoaded ? "" : void 0
|
|
7307
|
-
},
|
|
7308
|
-
image?.avatarUrl
|
|
7309
|
-
) }),
|
|
7310
|
-
name ? displayName : /* @__PURE__ */ jsx4(UserIcon, {})
|
|
7311
|
-
]
|
|
7312
|
-
}
|
|
7313
|
-
);
|
|
7314
|
-
};
|
|
7315
|
-
var AvatarGroup = ({
|
|
7316
|
-
avatars,
|
|
7317
|
-
showTotalNumber = true,
|
|
7318
|
-
size = "md",
|
|
7319
|
-
...props
|
|
7320
|
-
}) => {
|
|
7321
|
-
const maxShownProfiles = 5;
|
|
7322
|
-
const displayedProfiles = avatars.length < maxShownProfiles ? avatars : avatars.slice(0, maxShownProfiles);
|
|
7323
|
-
const notDisplayedProfiles = avatars.length - maxShownProfiles;
|
|
7324
|
-
const group = /* @__PURE__ */ jsx4("div", { className: "avatar-group-container", children: displayedProfiles.map((avatar, index) => /* @__PURE__ */ createElement(
|
|
7325
|
-
Avatar,
|
|
7326
|
-
{
|
|
7327
|
-
...avatar,
|
|
7328
|
-
key: index,
|
|
7329
|
-
size,
|
|
7330
|
-
"data-group": ""
|
|
7331
|
-
}
|
|
7332
|
-
)) });
|
|
7333
|
-
return /* @__PURE__ */ jsxs3(
|
|
7334
|
-
"div",
|
|
7335
|
-
{
|
|
7336
|
-
...props,
|
|
7337
|
-
"data-name": props["data-name"] ?? "avatar-group",
|
|
7338
|
-
"data-size": size ?? void 0,
|
|
7339
|
-
children: [
|
|
7340
|
-
group,
|
|
7341
|
-
showTotalNumber && notDisplayedProfiles > 0 && /* @__PURE__ */ jsx4(
|
|
7342
|
-
"span",
|
|
7343
|
-
{
|
|
7344
|
-
"data-name": "avatar-group-more",
|
|
7345
|
-
"data-size": size,
|
|
7346
|
-
children: `+ ${notDisplayedProfiles}`
|
|
7347
|
-
}
|
|
7348
|
-
)
|
|
7349
|
-
]
|
|
7350
|
-
}
|
|
7351
|
-
);
|
|
7352
|
-
};
|
|
7353
|
-
var AvatarWithStatus = ({
|
|
7354
|
-
isOnline,
|
|
7355
|
-
className,
|
|
7356
|
-
size = "md",
|
|
7357
|
-
...avatarProps
|
|
7358
|
-
}) => {
|
|
7359
|
-
return /* @__PURE__ */ jsxs3(
|
|
7360
|
-
"div",
|
|
7361
|
-
{
|
|
7362
|
-
className: clsx3(className),
|
|
7363
|
-
"data-name": "avatar-with-status",
|
|
7364
|
-
"data-size": size ?? void 0,
|
|
7365
|
-
children: [
|
|
7366
|
-
/* @__PURE__ */ jsx4(Avatar, { ...avatarProps, size }),
|
|
7367
|
-
/* @__PURE__ */ jsx4(
|
|
7368
|
-
"div",
|
|
7369
|
-
{
|
|
7370
|
-
"data-name": "avatar-with-status-dot",
|
|
7371
|
-
"data-size": size ?? void 0,
|
|
7372
|
-
"data-online": PropsUtil.dataAttributes.bool(isOnline),
|
|
7373
|
-
"aria-label": isOnline ? "Online" : "Offline"
|
|
7374
|
-
}
|
|
7375
|
-
)
|
|
7376
|
-
]
|
|
7377
|
-
}
|
|
7378
|
-
);
|
|
7379
|
-
};
|
|
7380
|
-
|
|
7381
7385
|
// src/components/display-and-visualization/Card.tsx
|
|
7382
|
-
import {
|
|
7383
|
-
|
|
7384
|
-
|
|
7385
|
-
|
|
7386
|
+
import { Fragment as Fragment2, jsx as jsx5, jsxs as jsxs4 } from "react/jsx-runtime";
|
|
7387
|
+
function CardHeaderContent({ title, description, leading, trailing }) {
|
|
7388
|
+
return /* @__PURE__ */ jsxs4(Fragment2, { children: [
|
|
7389
|
+
leading != null && /* @__PURE__ */ jsx5("span", { "data-name": "card-leading", children: leading }),
|
|
7390
|
+
/* @__PURE__ */ jsxs4("div", { "data-name": "card-content", children: [
|
|
7391
|
+
/* @__PURE__ */ jsx5("span", { "data-name": "card-title", children: title }),
|
|
7392
|
+
/* @__PURE__ */ jsx5(Visibility, { isVisible: !!description, children: /* @__PURE__ */ jsx5("span", { "data-name": "card-description", children: description }) })
|
|
7393
|
+
] }),
|
|
7394
|
+
trailing != null && /* @__PURE__ */ jsx5("span", { "data-name": "card-trailing", children: trailing })
|
|
7395
|
+
] });
|
|
7396
|
+
}
|
|
7386
7397
|
var Card = ({
|
|
7387
7398
|
title,
|
|
7388
7399
|
description,
|
|
7389
7400
|
size = "md",
|
|
7401
|
+
leading,
|
|
7402
|
+
trailing,
|
|
7390
7403
|
children,
|
|
7391
7404
|
className,
|
|
7392
7405
|
...props
|
|
@@ -7399,8 +7412,15 @@ var Card = ({
|
|
|
7399
7412
|
"data-name": props["data-name"] ?? "card",
|
|
7400
7413
|
"data-size": size,
|
|
7401
7414
|
children: [
|
|
7402
|
-
/* @__PURE__ */ jsx5("
|
|
7403
|
-
|
|
7415
|
+
/* @__PURE__ */ jsx5("div", { "data-name": "card-header", children: /* @__PURE__ */ jsx5(
|
|
7416
|
+
CardHeaderContent,
|
|
7417
|
+
{
|
|
7418
|
+
title,
|
|
7419
|
+
description,
|
|
7420
|
+
leading,
|
|
7421
|
+
trailing
|
|
7422
|
+
}
|
|
7423
|
+
) }),
|
|
7404
7424
|
children
|
|
7405
7425
|
]
|
|
7406
7426
|
}
|
|
@@ -7410,7 +7430,8 @@ var ActionCard = forwardRef(function ActionCard2({
|
|
|
7410
7430
|
title,
|
|
7411
7431
|
description,
|
|
7412
7432
|
size = "md",
|
|
7413
|
-
|
|
7433
|
+
leading,
|
|
7434
|
+
trailing,
|
|
7414
7435
|
disabled = false,
|
|
7415
7436
|
children,
|
|
7416
7437
|
className,
|
|
@@ -7446,13 +7467,15 @@ var ActionCard = forwardRef(function ActionCard2({
|
|
|
7446
7467
|
role: onClick ? "button" : void 0,
|
|
7447
7468
|
tabIndex: onClick && !disabled ? 0 : void 0,
|
|
7448
7469
|
children: [
|
|
7449
|
-
/* @__PURE__ */
|
|
7450
|
-
|
|
7451
|
-
|
|
7452
|
-
|
|
7453
|
-
|
|
7454
|
-
|
|
7455
|
-
|
|
7470
|
+
/* @__PURE__ */ jsx5("div", { "data-name": "card-header", children: /* @__PURE__ */ jsx5(
|
|
7471
|
+
CardHeaderContent,
|
|
7472
|
+
{
|
|
7473
|
+
title,
|
|
7474
|
+
description,
|
|
7475
|
+
leading,
|
|
7476
|
+
trailing
|
|
7477
|
+
}
|
|
7478
|
+
) }),
|
|
7456
7479
|
children
|
|
7457
7480
|
]
|
|
7458
7481
|
}
|
|
@@ -7462,6 +7485,7 @@ var NavigationCard = forwardRef(function NavigationCard2({
|
|
|
7462
7485
|
title,
|
|
7463
7486
|
description,
|
|
7464
7487
|
size = "md",
|
|
7488
|
+
leading,
|
|
7465
7489
|
href,
|
|
7466
7490
|
isExternal = false,
|
|
7467
7491
|
children,
|
|
@@ -7507,10 +7531,14 @@ var NavigationCard = forwardRef(function NavigationCard2({
|
|
|
7507
7531
|
tabIndex: 0,
|
|
7508
7532
|
children: [
|
|
7509
7533
|
/* @__PURE__ */ jsxs4("div", { "data-name": "card-header", children: [
|
|
7510
|
-
/* @__PURE__ */
|
|
7511
|
-
|
|
7512
|
-
|
|
7513
|
-
|
|
7534
|
+
/* @__PURE__ */ jsx5(
|
|
7535
|
+
CardHeaderContent,
|
|
7536
|
+
{
|
|
7537
|
+
title,
|
|
7538
|
+
description,
|
|
7539
|
+
leading
|
|
7540
|
+
}
|
|
7541
|
+
),
|
|
7514
7542
|
/* @__PURE__ */ jsx5(
|
|
7515
7543
|
"a",
|
|
7516
7544
|
{
|
|
@@ -8126,7 +8154,7 @@ var ProcessModelTerminalNode = ({
|
|
|
8126
8154
|
};
|
|
8127
8155
|
|
|
8128
8156
|
// src/components/display-and-visualization/process-model/ProcessModelCanvas.tsx
|
|
8129
|
-
import { Fragment as
|
|
8157
|
+
import { Fragment as Fragment3, jsx as jsx13, jsxs as jsxs8 } from "react/jsx-runtime";
|
|
8130
8158
|
function defaultRenderActivityIcon(node) {
|
|
8131
8159
|
if (node.activityIcon === "check") {
|
|
8132
8160
|
return /* @__PURE__ */ jsx13(Check, { size: 15, strokeWidth: 2, className: "process-model-activity-node-icon-svg" });
|
|
@@ -8186,7 +8214,7 @@ var ProcessModelCanvas = ({
|
|
|
8186
8214
|
"data-base-sw": String(sw)
|
|
8187
8215
|
}
|
|
8188
8216
|
),
|
|
8189
|
-
edge.label ? /* @__PURE__ */ jsxs8(
|
|
8217
|
+
edge.label ? /* @__PURE__ */ jsxs8(Fragment3, { children: [
|
|
8190
8218
|
/* @__PURE__ */ jsx13(
|
|
8191
8219
|
"rect",
|
|
8192
8220
|
{
|
|
@@ -12944,7 +12972,7 @@ var IconButton = forwardRef13(function IconButton2({
|
|
|
12944
12972
|
});
|
|
12945
12973
|
|
|
12946
12974
|
// src/components/layout/Carousel.tsx
|
|
12947
|
-
import { Fragment as
|
|
12975
|
+
import { Fragment as Fragment4, jsx as jsx31, jsxs as jsxs17 } from "react/jsx-runtime";
|
|
12948
12976
|
var CarouselContext = createContext8(null);
|
|
12949
12977
|
var useCarouselContext = () => {
|
|
12950
12978
|
const context = useContext9(CarouselContext);
|
|
@@ -13249,7 +13277,7 @@ var Carousel = ({
|
|
|
13249
13277
|
children: children[currentIndex]
|
|
13250
13278
|
}
|
|
13251
13279
|
),
|
|
13252
|
-
arrows && /* @__PURE__ */ jsxs17(
|
|
13280
|
+
arrows && /* @__PURE__ */ jsxs17(Fragment4, { children: [
|
|
13253
13281
|
/* @__PURE__ */ jsx31(
|
|
13254
13282
|
IconButton,
|
|
13255
13283
|
{
|
|
@@ -13567,7 +13595,7 @@ function InfiniteScroll({
|
|
|
13567
13595
|
}
|
|
13568
13596
|
|
|
13569
13597
|
// src/components/layout/MarkdownInterpreter.tsx
|
|
13570
|
-
import { Fragment as
|
|
13598
|
+
import { Fragment as Fragment5, jsx as jsx36 } from "react/jsx-runtime";
|
|
13571
13599
|
var astNodeInserterType = ["helpwave", "newline"];
|
|
13572
13600
|
var ASTNodeInterpreter = ({
|
|
13573
13601
|
node,
|
|
@@ -13588,7 +13616,7 @@ var ASTNodeInterpreter = ({
|
|
|
13588
13616
|
node: value
|
|
13589
13617
|
},
|
|
13590
13618
|
index
|
|
13591
|
-
)) }) : /* @__PURE__ */ jsx36(
|
|
13619
|
+
)) }) : /* @__PURE__ */ jsx36(Fragment5, { children: node.children.map((value, index) => /* @__PURE__ */ jsx36(ASTNodeInterpreter, { node: value }, index)) });
|
|
13592
13620
|
case "bold":
|
|
13593
13621
|
return /* @__PURE__ */ jsx36("b", { children: node.children.map((value, index) => /* @__PURE__ */ jsx36(ASTNodeInterpreter, { node: value }, index)) });
|
|
13594
13622
|
case "italic":
|
|
@@ -14113,11 +14141,11 @@ var VerticalDivider = ({
|
|
|
14113
14141
|
|
|
14114
14142
|
// src/components/layout/app/AppPage.tsx
|
|
14115
14143
|
import clsx15 from "clsx";
|
|
14116
|
-
import { useCallback as useCallback28, useMemo as useMemo22, useRef as useRef25, useState as
|
|
14144
|
+
import { useCallback as useCallback28, useMemo as useMemo22, useRef as useRef25, useState as useState23 } from "react";
|
|
14117
14145
|
import { MenuIcon, X } from "lucide-react";
|
|
14118
14146
|
|
|
14119
14147
|
// src/components/layout/navigation/navigation-menus/NavigationContext.tsx
|
|
14120
|
-
import { createContext as createContext11, useCallback as useCallback26, useContext as useContext12, useEffect as useEffect28, useMemo as useMemo21, useRef as useRef23 } from "react";
|
|
14148
|
+
import { createContext as createContext11, useCallback as useCallback26, useContext as useContext12, useEffect as useEffect28, useMemo as useMemo21, useRef as useRef23, useState as useState22 } from "react";
|
|
14121
14149
|
|
|
14122
14150
|
// src/hooks/useTreeNavigation.ts
|
|
14123
14151
|
import { useCallback as useCallback25, useEffect as useEffect27, useMemo as useMemo20, useState as useState21 } from "react";
|
|
@@ -14139,6 +14167,22 @@ function buildTreeIndex(nodes) {
|
|
|
14139
14167
|
roots: [...nodes]
|
|
14140
14168
|
};
|
|
14141
14169
|
}
|
|
14170
|
+
function resolveTreeNodePath(nodes, id) {
|
|
14171
|
+
if (id == null) return null;
|
|
14172
|
+
const entry = buildTreeIndex(nodes).byId.get(id);
|
|
14173
|
+
return entry?.path ?? null;
|
|
14174
|
+
}
|
|
14175
|
+
function flattenAllItems(nodes, expandedIds, path = []) {
|
|
14176
|
+
const result = [];
|
|
14177
|
+
for (const node of nodes) {
|
|
14178
|
+
const currentPath = [...path, node.id];
|
|
14179
|
+
const hasChildren = node.items.length > 0;
|
|
14180
|
+
const expanded = hasChildren && expandedIds.has(node.id);
|
|
14181
|
+
result.push({ id: node.id, path: currentPath, expanded });
|
|
14182
|
+
result.push(...flattenAllItems(node.items, expandedIds, currentPath));
|
|
14183
|
+
}
|
|
14184
|
+
return result;
|
|
14185
|
+
}
|
|
14142
14186
|
function flattenVisibleItems(nodes, expandedIds, path = []) {
|
|
14143
14187
|
const result = [];
|
|
14144
14188
|
for (const node of nodes) {
|
|
@@ -14175,11 +14219,11 @@ function isAncestorOf(ancestorId, descendantPath) {
|
|
|
14175
14219
|
const index = descendantPath.indexOf(ancestorId);
|
|
14176
14220
|
return index >= 0 && index < descendantPath.length - 1;
|
|
14177
14221
|
}
|
|
14178
|
-
function pruneExpandedIds(expandedIds,
|
|
14179
|
-
if (!onlyOneExpandedTree ||
|
|
14222
|
+
function pruneExpandedIds(expandedIds, focusedPath, onlyOneExpandedTree, index) {
|
|
14223
|
+
if (!onlyOneExpandedTree || focusedPath == null) {
|
|
14180
14224
|
return new Set(expandedIds);
|
|
14181
14225
|
}
|
|
14182
|
-
const pathSet = new Set(
|
|
14226
|
+
const pathSet = new Set(focusedPath);
|
|
14183
14227
|
const pruned = /* @__PURE__ */ new Set();
|
|
14184
14228
|
for (const id of expandedIds) {
|
|
14185
14229
|
if (!pathSet.has(id)) continue;
|
|
@@ -14190,77 +14234,80 @@ function pruneExpandedIds(expandedIds, activePath, onlyOneExpandedTree, index) {
|
|
|
14190
14234
|
}
|
|
14191
14235
|
return pruned;
|
|
14192
14236
|
}
|
|
14193
|
-
function
|
|
14237
|
+
function syncExpansionForFocused(expandedIds, focusedPath, onlyOneExpandedTree, index) {
|
|
14194
14238
|
const next = new Set(expandedIds);
|
|
14195
|
-
for (const id of getExpandableAncestorIds(
|
|
14239
|
+
for (const id of getExpandableAncestorIds(focusedPath, index)) {
|
|
14196
14240
|
next.add(id);
|
|
14197
14241
|
}
|
|
14198
|
-
return pruneExpandedIds(next,
|
|
14242
|
+
return pruneExpandedIds(next, focusedPath, onlyOneExpandedTree, index);
|
|
14199
14243
|
}
|
|
14200
14244
|
function useTreeNavigation({
|
|
14201
14245
|
nodes,
|
|
14202
|
-
|
|
14203
|
-
|
|
14204
|
-
|
|
14246
|
+
focusedId: controlledFocusedId,
|
|
14247
|
+
onFocusedIdChange,
|
|
14248
|
+
initialFocusedId,
|
|
14205
14249
|
onlyOneExpandedTree = false
|
|
14206
14250
|
}) {
|
|
14207
14251
|
const index = useMemo20(() => buildTreeIndex(nodes), [nodes]);
|
|
14208
|
-
const [
|
|
14209
|
-
value:
|
|
14210
|
-
onValueChange:
|
|
14211
|
-
defaultValue:
|
|
14252
|
+
const [focusedId, setFocusedId] = useControlledState({
|
|
14253
|
+
value: controlledFocusedId,
|
|
14254
|
+
onValueChange: onFocusedIdChange,
|
|
14255
|
+
defaultValue: initialFocusedId ?? null
|
|
14212
14256
|
});
|
|
14213
|
-
const
|
|
14214
|
-
if (
|
|
14215
|
-
if (index.byId.has(
|
|
14257
|
+
const resolvedFocusedId = useMemo20(() => {
|
|
14258
|
+
if (focusedId == null) return null;
|
|
14259
|
+
if (index.byId.has(focusedId)) return focusedId;
|
|
14216
14260
|
return null;
|
|
14217
|
-
}, [
|
|
14261
|
+
}, [focusedId, index]);
|
|
14218
14262
|
const [expandedIds, setExpandedIds] = useState21(() => /* @__PURE__ */ new Set());
|
|
14219
14263
|
useEffect27(() => {
|
|
14220
|
-
if (
|
|
14221
|
-
const entry = index.byId.get(
|
|
14264
|
+
if (resolvedFocusedId == null) return;
|
|
14265
|
+
const entry = index.byId.get(resolvedFocusedId);
|
|
14222
14266
|
if (entry == null) return;
|
|
14223
|
-
setExpandedIds((prev) =>
|
|
14224
|
-
}, [
|
|
14225
|
-
const
|
|
14267
|
+
setExpandedIds((prev) => syncExpansionForFocused(prev, entry.path, onlyOneExpandedTree, index));
|
|
14268
|
+
}, [resolvedFocusedId, onlyOneExpandedTree, index]);
|
|
14269
|
+
const visibleItems = useMemo20(() => {
|
|
14226
14270
|
return flattenVisibleItems(nodes, expandedIds);
|
|
14227
14271
|
}, [nodes, expandedIds]);
|
|
14228
|
-
const
|
|
14229
|
-
|
|
14230
|
-
|
|
14231
|
-
|
|
14272
|
+
const allItems = useMemo20(() => {
|
|
14273
|
+
return flattenAllItems(nodes, expandedIds);
|
|
14274
|
+
}, [nodes, expandedIds]);
|
|
14275
|
+
const focusedItem = useMemo20(() => {
|
|
14276
|
+
if (resolvedFocusedId == null) return null;
|
|
14277
|
+
return allItems.find((item) => item.id === resolvedFocusedId) ?? null;
|
|
14278
|
+
}, [allItems, resolvedFocusedId]);
|
|
14232
14279
|
const navigateTo = useCallback25((id) => {
|
|
14233
14280
|
const entry = index.byId.get(id);
|
|
14234
14281
|
if (entry == null) {
|
|
14235
14282
|
console.warn(`Attempted to navigate to node ${id} that does not exist`);
|
|
14236
14283
|
return;
|
|
14237
14284
|
}
|
|
14238
|
-
|
|
14285
|
+
setFocusedId(id);
|
|
14239
14286
|
setExpandedIds((prev) => {
|
|
14240
|
-
const next2 =
|
|
14287
|
+
const next2 = syncExpansionForFocused(prev, entry.path, onlyOneExpandedTree, index);
|
|
14241
14288
|
return next2;
|
|
14242
14289
|
});
|
|
14243
|
-
}, [index, onlyOneExpandedTree,
|
|
14290
|
+
}, [index, onlyOneExpandedTree, setFocusedId]);
|
|
14244
14291
|
const expand = useCallback25((id, options) => {
|
|
14245
14292
|
const entry = index.byId.get(id);
|
|
14246
14293
|
if (entry == null || entry.node.items.length === 0) return;
|
|
14247
14294
|
if (options?.isFocusing) {
|
|
14248
|
-
|
|
14295
|
+
setFocusedId(id);
|
|
14249
14296
|
}
|
|
14250
14297
|
setExpandedIds((prev) => {
|
|
14251
14298
|
const next2 = new Set(prev);
|
|
14252
14299
|
next2.add(id);
|
|
14253
|
-
const
|
|
14254
|
-
return pruneExpandedIds(next2,
|
|
14300
|
+
const focusedPath = options?.isFocusing ? entry.path : resolvedFocusedId != null ? index.byId.get(resolvedFocusedId)?.path ?? null : null;
|
|
14301
|
+
return pruneExpandedIds(next2, focusedPath, onlyOneExpandedTree, index);
|
|
14255
14302
|
});
|
|
14256
|
-
}, [index, onlyOneExpandedTree,
|
|
14303
|
+
}, [index, onlyOneExpandedTree, resolvedFocusedId, setFocusedId]);
|
|
14257
14304
|
const collapse = useCallback25((id, options) => {
|
|
14258
|
-
if (!options?.isFocusing &&
|
|
14259
|
-
const
|
|
14260
|
-
if (
|
|
14305
|
+
if (!options?.isFocusing && resolvedFocusedId != null) {
|
|
14306
|
+
const focusedEntry = index.byId.get(resolvedFocusedId);
|
|
14307
|
+
if (focusedEntry != null && isAncestorOf(id, focusedEntry.path)) return;
|
|
14261
14308
|
}
|
|
14262
14309
|
if (options?.isFocusing) {
|
|
14263
|
-
|
|
14310
|
+
setFocusedId(id);
|
|
14264
14311
|
}
|
|
14265
14312
|
const descendantIds = getDescendantIds(index, id);
|
|
14266
14313
|
setExpandedIds((prev) => {
|
|
@@ -14271,12 +14318,12 @@ function useTreeNavigation({
|
|
|
14271
14318
|
}
|
|
14272
14319
|
return next2;
|
|
14273
14320
|
});
|
|
14274
|
-
}, [index,
|
|
14321
|
+
}, [index, resolvedFocusedId, setFocusedId]);
|
|
14275
14322
|
const toggleExpansion = useCallback25((id, options) => {
|
|
14276
14323
|
const entry = index.byId.get(id);
|
|
14277
14324
|
if (entry == null || entry.node.items.length === 0) return;
|
|
14278
14325
|
if (options?.isFocusing) {
|
|
14279
|
-
|
|
14326
|
+
setFocusedId(id);
|
|
14280
14327
|
setExpandedIds((prev) => {
|
|
14281
14328
|
if (prev.has(id)) {
|
|
14282
14329
|
const next3 = new Set(prev);
|
|
@@ -14301,44 +14348,45 @@ function useTreeNavigation({
|
|
|
14301
14348
|
} else {
|
|
14302
14349
|
expand(id);
|
|
14303
14350
|
}
|
|
14304
|
-
}, [index, expandedIds, expand, collapse, onlyOneExpandedTree,
|
|
14351
|
+
}, [index, expandedIds, expand, collapse, onlyOneExpandedTree, setFocusedId]);
|
|
14305
14352
|
const next = useCallback25(() => {
|
|
14306
|
-
if (
|
|
14307
|
-
if (
|
|
14308
|
-
navigateTo(
|
|
14353
|
+
if (visibleItems.length === 0) return;
|
|
14354
|
+
if (resolvedFocusedId == null) {
|
|
14355
|
+
navigateTo(visibleItems[0].id);
|
|
14309
14356
|
return;
|
|
14310
14357
|
}
|
|
14311
|
-
const currentIndex =
|
|
14358
|
+
const currentIndex = visibleItems.findIndex((item) => item.id === resolvedFocusedId);
|
|
14312
14359
|
const startIndex = currentIndex < 0 ? 0 : currentIndex;
|
|
14313
|
-
if (startIndex <
|
|
14314
|
-
navigateTo(
|
|
14360
|
+
if (startIndex < visibleItems.length - 1) {
|
|
14361
|
+
navigateTo(visibleItems[startIndex + 1].id);
|
|
14315
14362
|
return;
|
|
14316
14363
|
}
|
|
14317
|
-
}, [
|
|
14364
|
+
}, [visibleItems, resolvedFocusedId, navigateTo]);
|
|
14318
14365
|
const previous = useCallback25(() => {
|
|
14319
|
-
if (
|
|
14320
|
-
if (
|
|
14321
|
-
navigateTo(
|
|
14366
|
+
if (visibleItems.length === 0) return;
|
|
14367
|
+
if (resolvedFocusedId == null) {
|
|
14368
|
+
navigateTo(visibleItems[visibleItems.length - 1].id);
|
|
14322
14369
|
return;
|
|
14323
14370
|
}
|
|
14324
|
-
const currentIndex =
|
|
14325
|
-
const startIndex = currentIndex < 0 ?
|
|
14371
|
+
const currentIndex = visibleItems.findIndex((item) => item.id === resolvedFocusedId);
|
|
14372
|
+
const startIndex = currentIndex < 0 ? visibleItems.length - 1 : currentIndex;
|
|
14326
14373
|
if (startIndex > 0) {
|
|
14327
|
-
navigateTo(
|
|
14374
|
+
navigateTo(visibleItems[startIndex - 1].id);
|
|
14328
14375
|
return;
|
|
14329
14376
|
}
|
|
14330
|
-
}, [
|
|
14377
|
+
}, [visibleItems, resolvedFocusedId, navigateTo]);
|
|
14331
14378
|
const first = useCallback25(() => {
|
|
14332
|
-
if (
|
|
14333
|
-
navigateTo(
|
|
14334
|
-
}, [
|
|
14379
|
+
if (visibleItems.length === 0) return;
|
|
14380
|
+
navigateTo(visibleItems[0].id);
|
|
14381
|
+
}, [visibleItems, navigateTo]);
|
|
14335
14382
|
const last = useCallback25(() => {
|
|
14336
|
-
if (
|
|
14337
|
-
navigateTo(
|
|
14338
|
-
}, [
|
|
14383
|
+
if (visibleItems.length === 0) return;
|
|
14384
|
+
navigateTo(visibleItems[visibleItems.length - 1].id);
|
|
14385
|
+
}, [visibleItems, navigateTo]);
|
|
14339
14386
|
return useMemo20(() => ({
|
|
14340
|
-
|
|
14341
|
-
|
|
14387
|
+
visibleItems,
|
|
14388
|
+
allItems,
|
|
14389
|
+
focusedItem,
|
|
14342
14390
|
navigateTo,
|
|
14343
14391
|
expand,
|
|
14344
14392
|
collapse,
|
|
@@ -14347,7 +14395,7 @@ function useTreeNavigation({
|
|
|
14347
14395
|
previous,
|
|
14348
14396
|
first,
|
|
14349
14397
|
last
|
|
14350
|
-
}), [
|
|
14398
|
+
}), [visibleItems, allItems, focusedItem, navigateTo, expand, collapse, toggleExpansion, next, previous, first, last]);
|
|
14351
14399
|
}
|
|
14352
14400
|
|
|
14353
14401
|
// src/components/layout/navigation/navigation-menus/NavigationContext.tsx
|
|
@@ -14355,22 +14403,41 @@ import { jsx as jsx40 } from "react/jsx-runtime";
|
|
|
14355
14403
|
var NavigationContext = createContext11(null);
|
|
14356
14404
|
function NavigationProvider({
|
|
14357
14405
|
children,
|
|
14358
|
-
|
|
14406
|
+
activeId = null,
|
|
14407
|
+
...treeOptions
|
|
14359
14408
|
}) {
|
|
14360
|
-
const navigation = useTreeNavigation(
|
|
14409
|
+
const navigation = useTreeNavigation({
|
|
14410
|
+
...treeOptions,
|
|
14411
|
+
initialFocusedId: treeOptions.initialFocusedId ?? activeId ?? treeOptions.nodes[0]?.id ?? null
|
|
14412
|
+
});
|
|
14361
14413
|
const itemRefs = useRef23(/* @__PURE__ */ new Map());
|
|
14362
|
-
const
|
|
14414
|
+
const [hasNavigatedToActiveId, setHasNavigatedToActiveId] = useState22(false);
|
|
14415
|
+
useEffect28(() => {
|
|
14416
|
+
if (activeId == null || hasNavigatedToActiveId) return;
|
|
14417
|
+
const navigationItem = navigation.allItems.find((item) => item.id === activeId);
|
|
14418
|
+
if (navigationItem == null) return;
|
|
14419
|
+
navigation.navigateTo(activeId);
|
|
14420
|
+
setHasNavigatedToActiveId(true);
|
|
14421
|
+
}, [activeId, navigation, navigation.navigateTo, navigation.allItems, hasNavigatedToActiveId]);
|
|
14422
|
+
const focusedId = useMemo21(() => {
|
|
14423
|
+
return navigation.focusedItem?.id ?? navigation.visibleItems[0]?.id ?? null;
|
|
14424
|
+
}, [navigation.focusedItem, navigation.visibleItems]);
|
|
14425
|
+
const activePath = useMemo21(() => {
|
|
14426
|
+
return resolveTreeNodePath(treeOptions.nodes, activeId);
|
|
14427
|
+
}, [treeOptions.nodes, activeId]);
|
|
14363
14428
|
const itemStateById = useMemo21(() => {
|
|
14364
14429
|
const map = /* @__PURE__ */ new Map();
|
|
14365
|
-
for (const item of navigation.
|
|
14430
|
+
for (const item of navigation.allItems) {
|
|
14366
14431
|
map.set(item.id, {
|
|
14367
14432
|
expanded: item.expanded,
|
|
14368
14433
|
isFocused: focusedId === item.id,
|
|
14434
|
+
isActive: activeId === item.id,
|
|
14435
|
+
isOnActivePath: activePath?.includes(item.id) ?? false,
|
|
14369
14436
|
path: item.path
|
|
14370
14437
|
});
|
|
14371
14438
|
}
|
|
14372
14439
|
return map;
|
|
14373
|
-
}, [navigation.
|
|
14440
|
+
}, [navigation.allItems, focusedId, activeId, activePath]);
|
|
14374
14441
|
const getItemState = useCallback26((id) => {
|
|
14375
14442
|
return itemStateById.get(id) ?? null;
|
|
14376
14443
|
}, [itemStateById]);
|
|
@@ -14386,9 +14453,12 @@ function NavigationProvider({
|
|
|
14386
14453
|
itemRefs.current.get(focusedId)?.focus();
|
|
14387
14454
|
}, [focusedId]);
|
|
14388
14455
|
const value = useMemo21(() => ({
|
|
14389
|
-
|
|
14456
|
+
focusedItem: navigation.focusedItem,
|
|
14390
14457
|
focusedId,
|
|
14391
|
-
|
|
14458
|
+
activeId,
|
|
14459
|
+
activePath,
|
|
14460
|
+
visibleItems: navigation.visibleItems,
|
|
14461
|
+
allItems: navigation.allItems,
|
|
14392
14462
|
getItemState,
|
|
14393
14463
|
navigateTo: navigation.navigateTo,
|
|
14394
14464
|
expand: navigation.expand,
|
|
@@ -14400,8 +14470,9 @@ function NavigationProvider({
|
|
|
14400
14470
|
toggleExpansion: navigation.toggleExpansion,
|
|
14401
14471
|
registerItemRef
|
|
14402
14472
|
}), [
|
|
14403
|
-
navigation.
|
|
14404
|
-
navigation.
|
|
14473
|
+
navigation.focusedItem,
|
|
14474
|
+
navigation.visibleItems,
|
|
14475
|
+
navigation.allItems,
|
|
14405
14476
|
navigation.navigateTo,
|
|
14406
14477
|
navigation.expand,
|
|
14407
14478
|
navigation.collapse,
|
|
@@ -14411,6 +14482,8 @@ function NavigationProvider({
|
|
|
14411
14482
|
navigation.last,
|
|
14412
14483
|
navigation.toggleExpansion,
|
|
14413
14484
|
focusedId,
|
|
14485
|
+
activeId,
|
|
14486
|
+
activePath,
|
|
14414
14487
|
getItemState,
|
|
14415
14488
|
registerItemRef
|
|
14416
14489
|
]);
|
|
@@ -14543,32 +14616,19 @@ function VerticalNavigationItem({
|
|
|
14543
14616
|
const handleHeaderActivate = useCallback27(() => {
|
|
14544
14617
|
toggleExpansion(id, { isFocusing: true });
|
|
14545
14618
|
}, [id, toggleExpansion]);
|
|
14546
|
-
const handleLeafActivate = useCallback27((
|
|
14547
|
-
if (event.target.closest('[data-name="vertical-navigation-item-link"]')) return;
|
|
14619
|
+
const handleLeafActivate = useCallback27(() => {
|
|
14548
14620
|
navigateTo(id);
|
|
14549
|
-
|
|
14550
|
-
|
|
14551
|
-
|
|
14552
|
-
|
|
14553
|
-
href: url,
|
|
14554
|
-
target: "_blank",
|
|
14555
|
-
rel: "noopener noreferrer",
|
|
14556
|
-
"data-name": "vertical-navigation-item-link",
|
|
14557
|
-
tabIndex: -1,
|
|
14558
|
-
children: [
|
|
14559
|
-
label,
|
|
14560
|
-
/* @__PURE__ */ jsx41(ExternalLink2, { className: "vertical-navigation-item-link-external-icon" })
|
|
14561
|
-
]
|
|
14562
|
-
}
|
|
14563
|
-
) : /* @__PURE__ */ jsx41(
|
|
14564
|
-
"a",
|
|
14565
|
-
{
|
|
14566
|
-
href: url,
|
|
14567
|
-
"data-name": "vertical-navigation-item-link",
|
|
14568
|
-
tabIndex: -1,
|
|
14569
|
-
children: label
|
|
14621
|
+
if (url == null) return;
|
|
14622
|
+
if (external) {
|
|
14623
|
+
window.open(url, "_blank", "noopener,noreferrer");
|
|
14624
|
+
return;
|
|
14570
14625
|
}
|
|
14571
|
-
|
|
14626
|
+
window.location.assign(url);
|
|
14627
|
+
}, [external, id, navigateTo, url]);
|
|
14628
|
+
const labelContent = url == null ? label : external ? /* @__PURE__ */ jsxs23("span", { "data-name": "vertical-navigation-item-link", children: [
|
|
14629
|
+
label,
|
|
14630
|
+
/* @__PURE__ */ jsx41(ExternalLink2, { className: "vertical-navigation-item-link-external-icon" })
|
|
14631
|
+
] }) : /* @__PURE__ */ jsx41("span", { "data-name": "vertical-navigation-item-link", children: label });
|
|
14572
14632
|
if (!hasChildren) {
|
|
14573
14633
|
return /* @__PURE__ */ jsx41(
|
|
14574
14634
|
"li",
|
|
@@ -14646,12 +14706,12 @@ function VerticalNavigationTree({
|
|
|
14646
14706
|
}
|
|
14647
14707
|
|
|
14648
14708
|
// src/components/layout/app/AppPage.tsx
|
|
14649
|
-
import { Fragment as
|
|
14709
|
+
import { Fragment as Fragment6, jsx as jsx43, jsxs as jsxs24 } from "react/jsx-runtime";
|
|
14650
14710
|
var AppSidebar = ({ isOpen = false, onClose, children, ...props }) => {
|
|
14651
14711
|
const translation = useHightideTranslation();
|
|
14652
14712
|
const { zIndex } = useOverlayRegistry({ isActive: isOpen });
|
|
14653
14713
|
const ref = useRef25(null);
|
|
14654
|
-
return /* @__PURE__ */ jsxs24(
|
|
14714
|
+
return /* @__PURE__ */ jsxs24(Fragment6, { children: [
|
|
14655
14715
|
isOpen && /* @__PURE__ */ jsx43(
|
|
14656
14716
|
"div",
|
|
14657
14717
|
{
|
|
@@ -14706,22 +14766,49 @@ var AppPageSidebarWithNavigation = ({
|
|
|
14706
14766
|
footer,
|
|
14707
14767
|
navigationItems,
|
|
14708
14768
|
contentOverwrite,
|
|
14709
|
-
|
|
14769
|
+
initialFocusedId,
|
|
14770
|
+
focusedId,
|
|
14771
|
+
onFocusedIdChange,
|
|
14772
|
+
activeId,
|
|
14710
14773
|
...props
|
|
14711
14774
|
}) => {
|
|
14712
14775
|
return /* @__PURE__ */ jsx43(AppSidebar, { ...props, children: /* @__PURE__ */ jsxs24("div", { className: "app-page-sidebar-with-navigation", children: [
|
|
14713
14776
|
header && /* @__PURE__ */ jsx43("div", { className: "app-page-sidebar-with-navigation-header", children: header }),
|
|
14714
|
-
navigationItems && !contentOverwrite && /* @__PURE__ */ jsx43("div", { className: "app-page-sidebar-with-navigation-scroll", children: /* @__PURE__ */ jsx43(
|
|
14777
|
+
navigationItems && !contentOverwrite && /* @__PURE__ */ jsx43("div", { className: "app-page-sidebar-with-navigation-scroll", children: /* @__PURE__ */ jsx43(
|
|
14778
|
+
VerticalNavigationTree,
|
|
14779
|
+
{
|
|
14780
|
+
items: navigationItems,
|
|
14781
|
+
initialFocusedId,
|
|
14782
|
+
focusedId,
|
|
14783
|
+
onFocusedIdChange,
|
|
14784
|
+
activeId
|
|
14785
|
+
}
|
|
14786
|
+
) }),
|
|
14715
14787
|
contentOverwrite && /* @__PURE__ */ jsx43("div", { className: "app-page-sidebar-with-navigation-scroll", children: contentOverwrite }),
|
|
14716
14788
|
footer && /* @__PURE__ */ jsx43("div", { className: "app-page-sidebar-with-navigation-footer", children: footer })
|
|
14717
14789
|
] }) });
|
|
14718
14790
|
};
|
|
14791
|
+
function findActiveIdByUrl(items, activeUrl) {
|
|
14792
|
+
for (const item of items) {
|
|
14793
|
+
if (item.url === activeUrl) return item.id;
|
|
14794
|
+
if (item.items != null) {
|
|
14795
|
+
const found = findActiveIdByUrl(item.items, activeUrl);
|
|
14796
|
+
if (found != null) return found;
|
|
14797
|
+
}
|
|
14798
|
+
}
|
|
14799
|
+
return null;
|
|
14800
|
+
}
|
|
14719
14801
|
var AppPage = ({ children, headerActions, sidebarProps, ...props }) => {
|
|
14720
14802
|
const translation = useHightideTranslation();
|
|
14721
|
-
const [isSidebarOpen, setIsSidebarOpen] =
|
|
14803
|
+
const [isSidebarOpen, setIsSidebarOpen] = useState23(false);
|
|
14804
|
+
const resolvedActiveId = useMemo22(() => {
|
|
14805
|
+
if (sidebarProps.activeId !== void 0) return sidebarProps.activeId;
|
|
14806
|
+
if (sidebarProps.activeUrl == null || sidebarProps.items == null) return null;
|
|
14807
|
+
return findActiveIdByUrl(sidebarProps.items, sidebarProps.activeUrl);
|
|
14808
|
+
}, [sidebarProps.activeId, sidebarProps.activeUrl, sidebarProps.items]);
|
|
14722
14809
|
const toNavigationItems = useCallback28((items) => {
|
|
14723
14810
|
return items?.map((item) => {
|
|
14724
|
-
const isActive =
|
|
14811
|
+
const isActive = item.id === resolvedActiveId;
|
|
14725
14812
|
return {
|
|
14726
14813
|
id: item.id,
|
|
14727
14814
|
label: /* @__PURE__ */ jsxs24("span", { className: "app-page-navigation-item-label", "data-active-page": isActive ? "" : void 0, children: [
|
|
@@ -14733,25 +14820,10 @@ var AppPage = ({ children, headerActions, sidebarProps, ...props }) => {
|
|
|
14733
14820
|
items: toNavigationItems(item.items)
|
|
14734
14821
|
};
|
|
14735
14822
|
}) ?? void 0;
|
|
14736
|
-
}, [
|
|
14823
|
+
}, [resolvedActiveId]);
|
|
14737
14824
|
const navigationItems = useMemo22(() => toNavigationItems(
|
|
14738
14825
|
sidebarProps.items
|
|
14739
14826
|
), [sidebarProps.items, toNavigationItems]);
|
|
14740
|
-
const initialActiveId = useMemo22(() => {
|
|
14741
|
-
if (sidebarProps.initialActiveId) return sidebarProps.initialActiveId;
|
|
14742
|
-
if (!navigationItems) return void 0;
|
|
14743
|
-
const findActiveId = (items) => {
|
|
14744
|
-
for (const item of items) {
|
|
14745
|
-
if (item.url === sidebarProps.activeUrl) return item.id;
|
|
14746
|
-
if (item.items) {
|
|
14747
|
-
const found = findActiveId(item.items);
|
|
14748
|
-
if (found) return found;
|
|
14749
|
-
}
|
|
14750
|
-
}
|
|
14751
|
-
return void 0;
|
|
14752
|
-
};
|
|
14753
|
-
return findActiveId(navigationItems);
|
|
14754
|
-
}, [navigationItems, sidebarProps.activeUrl, sidebarProps.initialActiveId]);
|
|
14755
14827
|
return /* @__PURE__ */ jsxs24(
|
|
14756
14828
|
"div",
|
|
14757
14829
|
{
|
|
@@ -14768,7 +14840,10 @@ var AppPage = ({ children, headerActions, sidebarProps, ...props }) => {
|
|
|
14768
14840
|
footer: sidebarProps.footer,
|
|
14769
14841
|
navigationItems,
|
|
14770
14842
|
contentOverwrite: sidebarProps.contentOverwrite,
|
|
14771
|
-
|
|
14843
|
+
initialFocusedId: sidebarProps.initialFocusedId,
|
|
14844
|
+
focusedId: sidebarProps.focusedId,
|
|
14845
|
+
onFocusedIdChange: sidebarProps.onFocusedIdChange,
|
|
14846
|
+
activeId: resolvedActiveId
|
|
14772
14847
|
}
|
|
14773
14848
|
),
|
|
14774
14849
|
/* @__PURE__ */ jsxs24("div", { "data-name": "app-page-content", children: [
|
|
@@ -15107,7 +15182,7 @@ import { MonitorCog, MoonIcon, SunIcon } from "lucide-react";
|
|
|
15107
15182
|
import clsx18 from "clsx";
|
|
15108
15183
|
|
|
15109
15184
|
// src/global-contexts/ThemeContext.tsx
|
|
15110
|
-
import { createContext as createContext13, useCallback as useCallback30, useContext as useContext15, useEffect as useEffect29, useMemo as useMemo25, useState as
|
|
15185
|
+
import { createContext as createContext13, useCallback as useCallback30, useContext as useContext15, useEffect as useEffect29, useMemo as useMemo25, useState as useState24 } from "react";
|
|
15111
15186
|
import { jsx as jsx50 } from "react/jsx-runtime";
|
|
15112
15187
|
var themes = ["light", "dark", "system"];
|
|
15113
15188
|
var ThemeUtil = {
|
|
@@ -15121,7 +15196,7 @@ var ThemeProvider = ({ children, theme, initialTheme }) => {
|
|
|
15121
15196
|
deleteValue: deleteStoredTheme
|
|
15122
15197
|
} = useStorage({ key: "theme", defaultValue: "system" });
|
|
15123
15198
|
const { config } = useHightideConfig();
|
|
15124
|
-
const [themePreference, setThemePreference] =
|
|
15199
|
+
const [themePreference, setThemePreference] = useState24("system");
|
|
15125
15200
|
const resolvedTheme = useMemo25(() => {
|
|
15126
15201
|
if (theme && theme !== "system") {
|
|
15127
15202
|
return theme;
|
|
@@ -15213,7 +15288,6 @@ var ThemeSelect = ({ ...props }) => {
|
|
|
15213
15288
|
{
|
|
15214
15289
|
value: theme,
|
|
15215
15290
|
onEditComplete: (value) => {
|
|
15216
|
-
console.log("onEditComplete", value);
|
|
15217
15291
|
props.onEditComplete?.(value);
|
|
15218
15292
|
setTheme(value);
|
|
15219
15293
|
},
|
|
@@ -15459,7 +15533,7 @@ var ErrorComponent = ({
|
|
|
15459
15533
|
};
|
|
15460
15534
|
|
|
15461
15535
|
// src/components/layout/loading/LoadingAndErrorComponent.tsx
|
|
15462
|
-
import { useState as
|
|
15536
|
+
import { useState as useState25 } from "react";
|
|
15463
15537
|
|
|
15464
15538
|
// src/components/layout/loading/LoadingContainer.tsx
|
|
15465
15539
|
import { clsx as clsx20 } from "clsx";
|
|
@@ -15470,7 +15544,7 @@ var LoadingContainer = ({ className }) => {
|
|
|
15470
15544
|
|
|
15471
15545
|
// src/components/layout/loading/LoadingAndErrorComponent.tsx
|
|
15472
15546
|
import { clsx as clsx21 } from "clsx";
|
|
15473
|
-
import { Fragment as
|
|
15547
|
+
import { Fragment as Fragment7, jsx as jsx58 } from "react/jsx-runtime";
|
|
15474
15548
|
var LoadingAndErrorComponent = ({
|
|
15475
15549
|
children,
|
|
15476
15550
|
isLoading = false,
|
|
@@ -15480,8 +15554,8 @@ var LoadingAndErrorComponent = ({
|
|
|
15480
15554
|
minimumLoadingDuration = 200,
|
|
15481
15555
|
className
|
|
15482
15556
|
}) => {
|
|
15483
|
-
const [isInMinimumLoading, setIsInMinimumLoading] =
|
|
15484
|
-
const [hasUsedMinimumLoading, setHasUsedMinimumLoading] =
|
|
15557
|
+
const [isInMinimumLoading, setIsInMinimumLoading] = useState25(false);
|
|
15558
|
+
const [hasUsedMinimumLoading, setHasUsedMinimumLoading] = useState25(false);
|
|
15485
15559
|
if (minimumLoadingDuration && !isInMinimumLoading && !hasUsedMinimumLoading) {
|
|
15486
15560
|
setIsInMinimumLoading(true);
|
|
15487
15561
|
setTimeout(() => {
|
|
@@ -15490,12 +15564,12 @@ var LoadingAndErrorComponent = ({
|
|
|
15490
15564
|
}, minimumLoadingDuration);
|
|
15491
15565
|
}
|
|
15492
15566
|
if (isLoading || minimumLoadingDuration && isInMinimumLoading) {
|
|
15493
|
-
return /* @__PURE__ */ jsx58(
|
|
15567
|
+
return /* @__PURE__ */ jsx58(Fragment7, { children: loadingComponent ?? /* @__PURE__ */ jsx58(LoadingContainer, { className }) });
|
|
15494
15568
|
}
|
|
15495
15569
|
if (hasError) {
|
|
15496
|
-
return /* @__PURE__ */ jsx58(
|
|
15570
|
+
return /* @__PURE__ */ jsx58(Fragment7, { children: errorComponent ?? /* @__PURE__ */ jsx58(LoadingContainer, { className: clsx21("bg-negative", className) }) });
|
|
15497
15571
|
}
|
|
15498
|
-
return /* @__PURE__ */ jsx58(
|
|
15572
|
+
return /* @__PURE__ */ jsx58(Fragment7, { children });
|
|
15499
15573
|
};
|
|
15500
15574
|
|
|
15501
15575
|
// src/components/layout/loading/LoadingAnimation.tsx
|
|
@@ -15546,9 +15620,9 @@ var BreadCrumbs = ({ crumbs }) => {
|
|
|
15546
15620
|
var import_link2 = __toESM(require_link2());
|
|
15547
15621
|
import { Menu as MenuIcon2, XIcon } from "lucide-react";
|
|
15548
15622
|
import { useEffect as useEffect30 } from "react";
|
|
15549
|
-
import { useCallback as useCallback31, useId as useId14, useRef as useRef28, useState as
|
|
15623
|
+
import { useCallback as useCallback31, useId as useId14, useRef as useRef28, useState as useState26 } from "react";
|
|
15550
15624
|
import clsx23 from "clsx";
|
|
15551
|
-
import { Fragment as
|
|
15625
|
+
import { Fragment as Fragment8, jsx as jsx61, jsxs as jsxs34 } from "react/jsx-runtime";
|
|
15552
15626
|
function isSubItem(item) {
|
|
15553
15627
|
return "items" in item && Array.isArray(item.items);
|
|
15554
15628
|
}
|
|
@@ -15558,7 +15632,7 @@ var NavigationItemWithSubItem = ({
|
|
|
15558
15632
|
horizontalAlignment = "center",
|
|
15559
15633
|
...options
|
|
15560
15634
|
}) => {
|
|
15561
|
-
const [isOpen, setOpen] =
|
|
15635
|
+
const [isOpen, setOpen] = useState26(false);
|
|
15562
15636
|
const containerRef = useRef28(null);
|
|
15563
15637
|
const triggerRef = useRef28(null);
|
|
15564
15638
|
const id = useId14();
|
|
@@ -15576,7 +15650,7 @@ var NavigationItemWithSubItem = ({
|
|
|
15576
15650
|
}
|
|
15577
15651
|
}, []);
|
|
15578
15652
|
const { zIndex } = useOverlayRegistry();
|
|
15579
|
-
return /* @__PURE__ */ jsxs34(
|
|
15653
|
+
return /* @__PURE__ */ jsxs34(Fragment8, { children: [
|
|
15580
15654
|
/* @__PURE__ */ jsxs34(
|
|
15581
15655
|
"button",
|
|
15582
15656
|
{
|
|
@@ -15635,7 +15709,7 @@ var NavigationItemList = ({ items, ...restProps }) => {
|
|
|
15635
15709
|
};
|
|
15636
15710
|
var Navigation = ({ ...props }) => {
|
|
15637
15711
|
const translation = useHightideTranslation();
|
|
15638
|
-
const [isMobileOpen, setIsMobileOpen] =
|
|
15712
|
+
const [isMobileOpen, setIsMobileOpen] = useState26(false);
|
|
15639
15713
|
const id = useId14();
|
|
15640
15714
|
const menuRef = useRef28(null);
|
|
15641
15715
|
useEffect30(() => {
|
|
@@ -15653,7 +15727,7 @@ var Navigation = ({ ...props }) => {
|
|
|
15653
15727
|
/* @__PURE__ */ jsx61(
|
|
15654
15728
|
IconButton,
|
|
15655
15729
|
{
|
|
15656
|
-
tooltip: translation("
|
|
15730
|
+
tooltip: translation("menu"),
|
|
15657
15731
|
coloringStyle: "text",
|
|
15658
15732
|
color: "neutral",
|
|
15659
15733
|
onClick: () => setIsMobileOpen(true),
|
|
@@ -15706,7 +15780,7 @@ var Navigation = ({ ...props }) => {
|
|
|
15706
15780
|
// src/components/layout/navigation/Pagination.tsx
|
|
15707
15781
|
import { ChevronFirst, ChevronLast, ChevronLeft as ChevronLeft2, ChevronRight as ChevronRight3 } from "lucide-react";
|
|
15708
15782
|
import clsx24 from "clsx";
|
|
15709
|
-
import { useEffect as useEffect31, useState as
|
|
15783
|
+
import { useEffect as useEffect31, useState as useState27 } from "react";
|
|
15710
15784
|
import { jsx as jsx62, jsxs as jsxs35 } from "react/jsx-runtime";
|
|
15711
15785
|
var Pagination = ({
|
|
15712
15786
|
pageIndex,
|
|
@@ -15715,7 +15789,7 @@ var Pagination = ({
|
|
|
15715
15789
|
...props
|
|
15716
15790
|
}) => {
|
|
15717
15791
|
const translation = useHightideTranslation();
|
|
15718
|
-
const [value, setValue] =
|
|
15792
|
+
const [value, setValue] = useState27((pageIndex + 1).toString());
|
|
15719
15793
|
const noPages = pageCount === 0;
|
|
15720
15794
|
const onFirstPage = pageIndex === 0 && !noPages;
|
|
15721
15795
|
const onLastPage = pageIndex === pageCount - 1;
|
|
@@ -15942,7 +16016,7 @@ function PopUpOpener({ children }) {
|
|
|
15942
16016
|
}
|
|
15943
16017
|
|
|
15944
16018
|
// src/components/layout/popup/PopUpRoot.tsx
|
|
15945
|
-
import { useId as useId15, useMemo as useMemo28, useState as
|
|
16019
|
+
import { useId as useId15, useMemo as useMemo28, useState as useState28 } from "react";
|
|
15946
16020
|
import { jsx as jsx64 } from "react/jsx-runtime";
|
|
15947
16021
|
function PopUpRoot({
|
|
15948
16022
|
children,
|
|
@@ -15959,7 +16033,7 @@ function PopUpRoot({
|
|
|
15959
16033
|
onValueChange: onIsOpenChange,
|
|
15960
16034
|
defaultValue: initialIsOpen
|
|
15961
16035
|
});
|
|
15962
|
-
const [triggerRef, setTriggerRef] =
|
|
16036
|
+
const [triggerRef, setTriggerRef] = useState28(null);
|
|
15963
16037
|
const popUpId = useMemo28(() => popUpIdOverwrite ?? `pop-up-${generatedPopUpId}`, [popUpIdOverwrite, generatedPopUpId]);
|
|
15964
16038
|
const triggerId = useMemo28(() => triggerIdOverwrite ?? `pop-up-trigger-${generatedTriggerId}`, [triggerIdOverwrite, generatedTriggerId]);
|
|
15965
16039
|
const contextValue = useMemo28(() => ({
|
|
@@ -16149,7 +16223,7 @@ var FillerCell = ({ ...props }) => {
|
|
|
16149
16223
|
};
|
|
16150
16224
|
|
|
16151
16225
|
// src/components/layout/table/TableProvider.tsx
|
|
16152
|
-
import { useCallback as useCallback33, useEffect as useEffect33, useLayoutEffect as useLayoutEffect6, useMemo as useMemo29, useRef as useRef30, useState as
|
|
16226
|
+
import { useCallback as useCallback33, useEffect as useEffect33, useLayoutEffect as useLayoutEffect6, useMemo as useMemo29, useRef as useRef30, useState as useState29 } from "react";
|
|
16153
16227
|
|
|
16154
16228
|
// src/components/layout/table/TableContext.tsx
|
|
16155
16229
|
import { createContext as createContext15, useContext as useContext17 } from "react";
|
|
@@ -17236,9 +17310,9 @@ var TableProvider = ({
|
|
|
17236
17310
|
}) => {
|
|
17237
17311
|
const onRowClickStable = useEventCallbackStabilizer(onRowClick);
|
|
17238
17312
|
const onFillerRowClickStable = useEventCallbackStabilizer(onFillerRowClick);
|
|
17239
|
-
const [registeredColumns, setRegisteredColumns] =
|
|
17313
|
+
const [registeredColumns, setRegisteredColumns] = useState29([]);
|
|
17240
17314
|
const containerRef = useRef30(null);
|
|
17241
|
-
const [, setTableState] =
|
|
17315
|
+
const [, setTableState] = useState29({
|
|
17242
17316
|
columnSizing: {},
|
|
17243
17317
|
columnOrder: [],
|
|
17244
17318
|
columnFilters: [],
|
|
@@ -17263,7 +17337,7 @@ var TableProvider = ({
|
|
|
17263
17337
|
pageSize: 10
|
|
17264
17338
|
}
|
|
17265
17339
|
});
|
|
17266
|
-
const [targetWidth, setTargetWidth] =
|
|
17340
|
+
const [targetWidth, setTargetWidth] = useState29(void 0);
|
|
17267
17341
|
useLayoutEffect6(() => {
|
|
17268
17342
|
const width = containerRef.current?.getBoundingClientRect().width;
|
|
17269
17343
|
setTargetWidth(width !== void 0 ? Math.floor(width) : void 0);
|
|
@@ -17525,15 +17599,15 @@ var TableSortButton = ({
|
|
|
17525
17599
|
|
|
17526
17600
|
// src/components/layout/table/TableFilterButton.tsx
|
|
17527
17601
|
import { FilterIcon } from "lucide-react";
|
|
17528
|
-
import { useEffect as useEffect46, useId as useId20, useMemo as useMemo39, useRef as useRef39, useState as
|
|
17602
|
+
import { useEffect as useEffect46, useId as useId20, useMemo as useMemo39, useRef as useRef39, useState as useState38 } from "react";
|
|
17529
17603
|
import { flexRender as flexRender2 } from "@tanstack/react-table";
|
|
17530
17604
|
|
|
17531
17605
|
// src/components/user-interaction/data/FilterPopUp.tsx
|
|
17532
17606
|
import { Check as Check3, TrashIcon } from "lucide-react";
|
|
17533
|
-
import { forwardRef as forwardRef25, useEffect as useEffect45, useId as useId19, useMemo as useMemo38, useState as
|
|
17607
|
+
import { forwardRef as forwardRef25, useEffect as useEffect45, useId as useId19, useMemo as useMemo38, useState as useState37 } from "react";
|
|
17534
17608
|
|
|
17535
17609
|
// src/components/user-interaction/input/DateTimeInput.tsx
|
|
17536
|
-
import { forwardRef as forwardRef20, useCallback as useCallback36, useEffect as useEffect39, useId as useId16, useImperativeHandle as useImperativeHandle11, useMemo as useMemo34, useRef as useRef35, useState as
|
|
17610
|
+
import { forwardRef as forwardRef20, useCallback as useCallback36, useEffect as useEffect39, useId as useId16, useImperativeHandle as useImperativeHandle11, useMemo as useMemo34, useRef as useRef35, useState as useState34 } from "react";
|
|
17537
17611
|
import { CalendarIcon, X as X4 } from "lucide-react";
|
|
17538
17612
|
import clsx31 from "clsx";
|
|
17539
17613
|
|
|
@@ -17721,7 +17795,7 @@ var TimePicker = ({
|
|
|
17721
17795
|
};
|
|
17722
17796
|
|
|
17723
17797
|
// src/components/user-interaction/date/DatePicker.tsx
|
|
17724
|
-
import { useState as
|
|
17798
|
+
import { useState as useState31 } from "react";
|
|
17725
17799
|
import { ArrowDown, ArrowUp, Calendar, ChevronDown as ChevronDown4 } from "lucide-react";
|
|
17726
17800
|
import clsx29 from "clsx";
|
|
17727
17801
|
|
|
@@ -17847,7 +17921,7 @@ var DayPicker = ({
|
|
|
17847
17921
|
};
|
|
17848
17922
|
|
|
17849
17923
|
// src/components/user-interaction/date/YearMonthPicker.tsx
|
|
17850
|
-
import { memo, useCallback as useCallback35, useEffect as useEffect36, useMemo as useMemo32, useRef as useRef33, useState as
|
|
17924
|
+
import { memo, useCallback as useCallback35, useEffect as useEffect36, useMemo as useMemo32, useRef as useRef33, useState as useState30 } from "react";
|
|
17851
17925
|
import clsx28 from "clsx";
|
|
17852
17926
|
import { jsx as jsx73, jsxs as jsxs42 } from "react/jsx-runtime";
|
|
17853
17927
|
var YearRow = memo(function YearRow2({
|
|
@@ -17860,7 +17934,7 @@ var YearRow = memo(function YearRow2({
|
|
|
17860
17934
|
}) {
|
|
17861
17935
|
const ref = useRef33(null);
|
|
17862
17936
|
const isSelectedYear = selectedMonthIndex !== void 0;
|
|
17863
|
-
const [isExpanded, setIsExpanded] =
|
|
17937
|
+
const [isExpanded, setIsExpanded] = useState30(false);
|
|
17864
17938
|
useEffect36(() => {
|
|
17865
17939
|
if (isSelectedYear) {
|
|
17866
17940
|
ref.current?.scrollIntoView({ behavior: "smooth", block: "nearest" });
|
|
@@ -17990,15 +18064,15 @@ var DatePicker = ({
|
|
|
17990
18064
|
onValueChange,
|
|
17991
18065
|
defaultValue: initialValue
|
|
17992
18066
|
});
|
|
17993
|
-
const [displayedMonth, setDisplayedMonth] =
|
|
17994
|
-
const [displayMode, setDisplayMode] =
|
|
18067
|
+
const [displayedMonth, setDisplayedMonth] = useState31(new Date(value.getFullYear(), value.getMonth(), 1));
|
|
18068
|
+
const [displayMode, setDisplayMode] = useState31(initialDisplay);
|
|
17995
18069
|
return /* @__PURE__ */ jsxs43("div", { className: clsx29("flex-col-3", className), children: [
|
|
17996
18070
|
/* @__PURE__ */ jsxs43("div", { className: "flex-row-2 items-center justify-between", children: [
|
|
17997
18071
|
/* @__PURE__ */ jsxs43(
|
|
17998
18072
|
Button,
|
|
17999
18073
|
{
|
|
18000
18074
|
size: "sm",
|
|
18001
|
-
|
|
18075
|
+
color: "neutral",
|
|
18002
18076
|
className: clsx29("flex-row-1 items-center cursor-pointer select-none", {
|
|
18003
18077
|
"text-disabled": displayMode !== "day"
|
|
18004
18078
|
}),
|
|
@@ -18153,8 +18227,8 @@ var DateTimePicker = ({
|
|
|
18153
18227
|
};
|
|
18154
18228
|
|
|
18155
18229
|
// src/components/user-interaction/date/DateTimePickerDialog.tsx
|
|
18156
|
-
import { useEffect as useEffect37, useState as
|
|
18157
|
-
import { Fragment as
|
|
18230
|
+
import { useEffect as useEffect37, useState as useState32 } from "react";
|
|
18231
|
+
import { Fragment as Fragment9, jsx as jsx76, jsxs as jsxs45 } from "react/jsx-runtime";
|
|
18158
18232
|
var DateTimePickerDialog = ({
|
|
18159
18233
|
initialValue = null,
|
|
18160
18234
|
value,
|
|
@@ -18181,11 +18255,11 @@ var DateTimePickerDialog = ({
|
|
|
18181
18255
|
onValueChange,
|
|
18182
18256
|
defaultValue: initialValue
|
|
18183
18257
|
});
|
|
18184
|
-
const [pickerState, setPickerState] =
|
|
18258
|
+
const [pickerState, setPickerState] = useState32(state ?? /* @__PURE__ */ new Date());
|
|
18185
18259
|
useEffect37(() => {
|
|
18186
18260
|
setPickerState(state ?? /* @__PURE__ */ new Date());
|
|
18187
18261
|
}, [state]);
|
|
18188
|
-
return /* @__PURE__ */ jsxs45(
|
|
18262
|
+
return /* @__PURE__ */ jsxs45(Fragment9, { children: [
|
|
18189
18263
|
/* @__PURE__ */ jsx76("div", { className: "flex-row-2 justify-center w-full py-1", children: /* @__PURE__ */ jsx76(
|
|
18190
18264
|
"span",
|
|
18191
18265
|
{
|
|
@@ -18256,7 +18330,7 @@ var DateTimePickerDialog = ({
|
|
|
18256
18330
|
};
|
|
18257
18331
|
|
|
18258
18332
|
// src/components/user-interaction/input/DateTimeField.tsx
|
|
18259
|
-
import { forwardRef as forwardRef19, useEffect as useEffect38, useLayoutEffect as useLayoutEffect7, useMemo as useMemo33, useRef as useRef34, useState as
|
|
18333
|
+
import { forwardRef as forwardRef19, useEffect as useEffect38, useLayoutEffect as useLayoutEffect7, useMemo as useMemo33, useRef as useRef34, useState as useState33 } from "react";
|
|
18260
18334
|
import clsx30 from "clsx";
|
|
18261
18335
|
|
|
18262
18336
|
// src/components/user-interaction/input/dateTimeSegments.ts
|
|
@@ -18563,11 +18637,11 @@ var DateTimeField = forwardRef19(function DateTimeField2({
|
|
|
18563
18637
|
[locale, mode, precision, is24Hour]
|
|
18564
18638
|
);
|
|
18565
18639
|
const editableTypes = useMemo33(() => editableTypesOf(layout), [layout]);
|
|
18566
|
-
const [editState, setEditState] =
|
|
18640
|
+
const [editState, setEditState] = useState33(() => ({
|
|
18567
18641
|
values: value ? decomposeDate(value, layout, is24Hour) : {},
|
|
18568
18642
|
buffer: null
|
|
18569
18643
|
}));
|
|
18570
|
-
const [focusedType, setFocusedType] =
|
|
18644
|
+
const [focusedType, setFocusedType] = useState33(null);
|
|
18571
18645
|
const editStateRef = useRef34(editState);
|
|
18572
18646
|
editStateRef.current = editState;
|
|
18573
18647
|
const segmentRefs = useRef34(/* @__PURE__ */ new Map());
|
|
@@ -18813,13 +18887,13 @@ var DateTimeInput = forwardRef20(function DateTimeInput2({
|
|
|
18813
18887
|
const translation = useHightideTranslation();
|
|
18814
18888
|
const { timeZone: contextTimeZone } = useLocale();
|
|
18815
18889
|
const timeZone = timeZoneOverride ?? contextTimeZone;
|
|
18816
|
-
const [isOpen, setIsOpen] =
|
|
18890
|
+
const [isOpen, setIsOpen] = useState34(false);
|
|
18817
18891
|
const [state, setState] = useControlledState({
|
|
18818
18892
|
value,
|
|
18819
18893
|
onValueChange,
|
|
18820
18894
|
defaultValue: initialValue
|
|
18821
18895
|
});
|
|
18822
|
-
const [dialogValue, setDialogValue] =
|
|
18896
|
+
const [dialogValue, setDialogValue] = useState34(state);
|
|
18823
18897
|
const changeOpenWrapper = useCallback36((isOpen2) => {
|
|
18824
18898
|
onDialogOpeningChange?.(isOpen2);
|
|
18825
18899
|
setIsOpen(isOpen2);
|
|
@@ -18848,6 +18922,9 @@ var DateTimeInput = forwardRef20(function DateTimeInput2({
|
|
|
18848
18922
|
const focusField = () => {
|
|
18849
18923
|
fieldRef.current?.querySelector('[data-name="date-time-segment"]')?.focus();
|
|
18850
18924
|
};
|
|
18925
|
+
const hasClear = !required && allowClear && !readOnly && !disabled && state !== null;
|
|
18926
|
+
const hasTimePicker = !readOnly;
|
|
18927
|
+
const hasActions = hasClear || hasTimePicker || actions.length > 0;
|
|
18851
18928
|
return /* @__PURE__ */ jsxs46("div", { ...containerProps, className: clsx31("relative w-full", containerProps?.className), children: [
|
|
18852
18929
|
/* @__PURE__ */ jsxs46(
|
|
18853
18930
|
"div",
|
|
@@ -18865,6 +18942,7 @@ var DateTimeInput = forwardRef20(function DateTimeInput2({
|
|
|
18865
18942
|
className: clsx31("cursor-text", props.className),
|
|
18866
18943
|
"data-name": props["data-name"] ?? "date-time-input",
|
|
18867
18944
|
"data-value": PropsUtil.dataAttributes.bool(!!state),
|
|
18945
|
+
"data-has-actions": PropsUtil.dataAttributes.bool(hasActions),
|
|
18868
18946
|
...PropsUtil.dataAttributes.interactionStates({ disabled, readOnly, invalid, required }),
|
|
18869
18947
|
...PropsUtil.aria.interactionStates({ disabled, readOnly, invalid, required }, props),
|
|
18870
18948
|
children: [
|
|
@@ -18883,13 +18961,12 @@ var DateTimeInput = forwardRef20(function DateTimeInput2({
|
|
|
18883
18961
|
onValueChange: (next) => setState(fromZoned(next)),
|
|
18884
18962
|
onEditComplete: (next) => onEditComplete?.(fromZoned(next)),
|
|
18885
18963
|
"aria-labelledby": props["aria-labelledby"],
|
|
18886
|
-
"aria-describedby": props["aria-describedby"]
|
|
18887
|
-
className: "grow"
|
|
18964
|
+
"aria-describedby": props["aria-describedby"]
|
|
18888
18965
|
}
|
|
18889
18966
|
),
|
|
18890
18967
|
/* @__PURE__ */ jsxs46("div", { className: "flex-row-1 items-center", children: [
|
|
18891
18968
|
actions,
|
|
18892
|
-
/* @__PURE__ */ jsx78(Visibility, { isVisible:
|
|
18969
|
+
/* @__PURE__ */ jsx78(Visibility, { isVisible: hasClear, children: /* @__PURE__ */ jsx78(
|
|
18893
18970
|
IconButton,
|
|
18894
18971
|
{
|
|
18895
18972
|
tooltip: translation("clearValue"),
|
|
@@ -18903,7 +18980,7 @@ var DateTimeInput = forwardRef20(function DateTimeInput2({
|
|
|
18903
18980
|
children: /* @__PURE__ */ jsx78(X4, { className: "size-5" })
|
|
18904
18981
|
}
|
|
18905
18982
|
) }),
|
|
18906
|
-
/* @__PURE__ */ jsx78(Visibility, { isVisible:
|
|
18983
|
+
/* @__PURE__ */ jsx78(Visibility, { isVisible: hasTimePicker, children: /* @__PURE__ */ jsx78(
|
|
18907
18984
|
IconButton,
|
|
18908
18985
|
{
|
|
18909
18986
|
tooltip: translation("sDateTimeSelect", { datetimeMode: mode }),
|
|
@@ -18977,7 +19054,7 @@ var DateTimeInput = forwardRef20(function DateTimeInput2({
|
|
|
18977
19054
|
import { forwardRef as forwardRef24 } from "react";
|
|
18978
19055
|
|
|
18979
19056
|
// src/components/user-interaction/MultiSelect/MultiSelectRoot.tsx
|
|
18980
|
-
import { useCallback as useCallback39, useEffect as useEffect41, useId as useId17, useMemo as useMemo37, useState as
|
|
19057
|
+
import { useCallback as useCallback39, useEffect as useEffect41, useId as useId17, useMemo as useMemo37, useState as useState36 } from "react";
|
|
18981
19058
|
|
|
18982
19059
|
// src/components/user-interaction/MultiSelect/MultiSelectContext.tsx
|
|
18983
19060
|
import { createContext as createContext16, useContext as useContext18 } from "react";
|
|
@@ -18993,7 +19070,7 @@ import {
|
|
|
18993
19070
|
useCallback as useCallback38,
|
|
18994
19071
|
useEffect as useEffect40,
|
|
18995
19072
|
useMemo as useMemo36,
|
|
18996
|
-
useState as
|
|
19073
|
+
useState as useState35
|
|
18997
19074
|
} from "react";
|
|
18998
19075
|
|
|
18999
19076
|
// src/hooks/useMultiSelection.ts
|
|
@@ -19046,8 +19123,8 @@ function useMultiSelect({
|
|
|
19046
19123
|
initialIsOpen = false,
|
|
19047
19124
|
typeAheadResetMs = 500
|
|
19048
19125
|
}) {
|
|
19049
|
-
const [isOpen, setIsOpen] =
|
|
19050
|
-
const [searchQuery, setSearchQuery] =
|
|
19126
|
+
const [isOpen, setIsOpen] = useState35(initialIsOpen);
|
|
19127
|
+
const [searchQuery, setSearchQuery] = useState35("");
|
|
19051
19128
|
const selectionOptions = useMemo36(
|
|
19052
19129
|
() => options.map((o) => ({ id: o.id, disabled: o.disabled })),
|
|
19053
19130
|
[options]
|
|
@@ -19221,10 +19298,10 @@ function MultiSelectRoot({
|
|
|
19221
19298
|
readOnly = false,
|
|
19222
19299
|
required = false
|
|
19223
19300
|
}) {
|
|
19224
|
-
const [triggerRef, setTriggerRef] =
|
|
19225
|
-
const [options, setOptions] =
|
|
19301
|
+
const [triggerRef, setTriggerRef] = useState36(null);
|
|
19302
|
+
const [options, setOptions] = useState36([]);
|
|
19226
19303
|
const generatedId = useId17();
|
|
19227
|
-
const [ids, setIds] =
|
|
19304
|
+
const [ids, setIds] = useState36({
|
|
19228
19305
|
trigger: "multi-select-" + generatedId,
|
|
19229
19306
|
content: "multi-select-content-" + generatedId,
|
|
19230
19307
|
listbox: "multi-select-listbox-" + generatedId,
|
|
@@ -19961,8 +20038,8 @@ var DateFilterPopUp = forwardRef25(function DateFilterPopUp2({
|
|
|
19961
20038
|
return suggestion;
|
|
19962
20039
|
}, [value]);
|
|
19963
20040
|
const parameter = value?.parameter ?? {};
|
|
19964
|
-
const [temporaryMinDateValue, setTemporaryMinDateValue] =
|
|
19965
|
-
const [temporaryMaxDateValue, setTemporaryMaxDateValue] =
|
|
20041
|
+
const [temporaryMinDateValue, setTemporaryMinDateValue] = useState37(null);
|
|
20042
|
+
const [temporaryMaxDateValue, setTemporaryMaxDateValue] = useState37(null);
|
|
19966
20043
|
const needsRangeInput = operator === "between" || operator === "notBetween";
|
|
19967
20044
|
const needsParameterInput = operator !== "isUndefined" && operator !== "isNotUndefined";
|
|
19968
20045
|
return /* @__PURE__ */ jsxs52(
|
|
@@ -20103,8 +20180,8 @@ var DatetimeFilterPopUp = forwardRef25(function DatetimeFilterPopUp2({
|
|
|
20103
20180
|
return suggestion;
|
|
20104
20181
|
}, [value]);
|
|
20105
20182
|
const parameter = value?.parameter ?? {};
|
|
20106
|
-
const [temporaryMinDateValue, setTemporaryMinDateValue] =
|
|
20107
|
-
const [temporaryMaxDateValue, setTemporaryMaxDateValue] =
|
|
20183
|
+
const [temporaryMinDateValue, setTemporaryMinDateValue] = useState37(null);
|
|
20184
|
+
const [temporaryMaxDateValue, setTemporaryMaxDateValue] = useState37(null);
|
|
20108
20185
|
const needsRangeInput = operator === "between" || operator === "notBetween";
|
|
20109
20186
|
const needsParameterInput = operator !== "isUndefined" && operator !== "isNotUndefined";
|
|
20110
20187
|
return /* @__PURE__ */ jsxs52(
|
|
@@ -20426,7 +20503,7 @@ var FilterPopUp = forwardRef25(function FilterPopUp2({
|
|
|
20426
20503
|
});
|
|
20427
20504
|
|
|
20428
20505
|
// src/components/layout/table/TableFilterButton.tsx
|
|
20429
|
-
import { Fragment as
|
|
20506
|
+
import { Fragment as Fragment10, jsx as jsx85, jsxs as jsxs53 } from "react/jsx-runtime";
|
|
20430
20507
|
var TableFilterButton = ({
|
|
20431
20508
|
filterType,
|
|
20432
20509
|
header
|
|
@@ -20434,11 +20511,11 @@ var TableFilterButton = ({
|
|
|
20434
20511
|
const translation = useHightideTranslation();
|
|
20435
20512
|
const column = header.column;
|
|
20436
20513
|
const columnFilterValue = column.getFilterValue();
|
|
20437
|
-
const [filterValue, setFilterValue] =
|
|
20514
|
+
const [filterValue, setFilterValue] = useState38(columnFilterValue);
|
|
20438
20515
|
const hasFilter = !!filterValue;
|
|
20439
20516
|
const anchorRef = useRef39(null);
|
|
20440
20517
|
const containerRef = useRef39(null);
|
|
20441
|
-
const [isOpen, setIsOpen] =
|
|
20518
|
+
const [isOpen, setIsOpen] = useState38(false);
|
|
20442
20519
|
const id = useId20();
|
|
20443
20520
|
const ids = useMemo39(() => ({
|
|
20444
20521
|
button: `table-filter-button-${id}`,
|
|
@@ -20453,7 +20530,7 @@ var TableFilterButton = ({
|
|
|
20453
20530
|
if (isTagsFilter && !hasTagsMetaData) {
|
|
20454
20531
|
return null;
|
|
20455
20532
|
}
|
|
20456
|
-
return /* @__PURE__ */ jsxs53(
|
|
20533
|
+
return /* @__PURE__ */ jsxs53(Fragment10, { children: [
|
|
20457
20534
|
/* @__PURE__ */ jsxs53(
|
|
20458
20535
|
IconButton,
|
|
20459
20536
|
{
|
|
@@ -20567,7 +20644,7 @@ var DataTypeUtils = {
|
|
|
20567
20644
|
};
|
|
20568
20645
|
|
|
20569
20646
|
// src/components/layout/table/TableHeader.tsx
|
|
20570
|
-
import { Fragment as
|
|
20647
|
+
import { Fragment as Fragment11, jsx as jsx87, jsxs as jsxs54 } from "react/jsx-runtime";
|
|
20571
20648
|
var TableHeader = ({ isSticky = false }) => {
|
|
20572
20649
|
const { table } = useTableStateWithoutSizingContext();
|
|
20573
20650
|
const handleResizeMove = useCallback41((e) => {
|
|
@@ -20612,7 +20689,7 @@ var TableHeader = ({ isSticky = false }) => {
|
|
|
20612
20689
|
window.removeEventListener("pointerup", handleResizeEnd);
|
|
20613
20690
|
};
|
|
20614
20691
|
}, [handleResizeEnd, handleResizeMove, table]);
|
|
20615
|
-
return /* @__PURE__ */ jsxs54(
|
|
20692
|
+
return /* @__PURE__ */ jsxs54(Fragment11, { children: [
|
|
20616
20693
|
table.getHeaderGroups().map((headerGroup) => /* @__PURE__ */ jsx87(TableStateContext.Consumer, { children: ({ sizeVars }) => /* @__PURE__ */ jsx87("colgroup", { style: sizeVars, children: headerGroup.headers.map((header) => /* @__PURE__ */ jsx87(
|
|
20617
20694
|
"col",
|
|
20618
20695
|
{
|
|
@@ -20633,7 +20710,7 @@ var TableHeader = ({ isSticky = false }) => {
|
|
|
20633
20710
|
"data-name": "table-header-cell",
|
|
20634
20711
|
className: clsx35("group/table-header-cell", header.column.columnDef.meta?.className),
|
|
20635
20712
|
children: [
|
|
20636
|
-
/* @__PURE__ */ jsx87(Visibility, { isVisible: !header.isPlaceholder, children: /* @__PURE__ */ jsxs54("div", { className: "
|
|
20713
|
+
/* @__PURE__ */ jsx87(Visibility, { isVisible: !header.isPlaceholder, children: /* @__PURE__ */ jsxs54("div", { className: "table-header-cell-content", children: [
|
|
20637
20714
|
/* @__PURE__ */ jsx87(Visibility, { isVisible: header.column.getCanSort(), children: /* @__PURE__ */ jsx87(
|
|
20638
20715
|
TableSortButton,
|
|
20639
20716
|
{
|
|
@@ -20703,7 +20780,7 @@ var TableHeader = ({ isSticky = false }) => {
|
|
|
20703
20780
|
};
|
|
20704
20781
|
|
|
20705
20782
|
// src/components/layout/table/VirtualizedTableBody.tsx
|
|
20706
|
-
import { useEffect as useEffect48, useRef as useRef40, useState as
|
|
20783
|
+
import { useEffect as useEffect48, useRef as useRef40, useState as useState39 } from "react";
|
|
20707
20784
|
import { flexRender as flexRender4 } from "@tanstack/react-table";
|
|
20708
20785
|
import { useVirtualizer, useWindowVirtualizer } from "@tanstack/react-virtual";
|
|
20709
20786
|
import clsx36 from "clsx";
|
|
@@ -20717,8 +20794,8 @@ var VirtualizedTableBody = ({
|
|
|
20717
20794
|
const { containerRef } = useTableContainerContext();
|
|
20718
20795
|
const rows = table.getRowModel().rows;
|
|
20719
20796
|
const bodyRef = useRef40(null);
|
|
20720
|
-
const [isMounted, setIsMounted] =
|
|
20721
|
-
const [scrollMargin, setScrollMargin] =
|
|
20797
|
+
const [isMounted, setIsMounted] = useState39(false);
|
|
20798
|
+
const [scrollMargin, setScrollMargin] = useState39(0);
|
|
20722
20799
|
useEffect48(() => setIsMounted(true), []);
|
|
20723
20800
|
useEffect48(() => {
|
|
20724
20801
|
if (scroll !== "window") return;
|
|
@@ -21032,7 +21109,7 @@ var TableWithSelection = ({
|
|
|
21032
21109
|
};
|
|
21033
21110
|
|
|
21034
21111
|
// src/components/layout/table/TableColumn.tsx
|
|
21035
|
-
import { memo as memo2, useEffect as useEffect49, useMemo as useMemo41, useState as
|
|
21112
|
+
import { memo as memo2, useEffect as useEffect49, useMemo as useMemo41, useState as useState40 } from "react";
|
|
21036
21113
|
import { jsx as jsx94 } from "react/jsx-runtime";
|
|
21037
21114
|
var TableColumnComponent = ({
|
|
21038
21115
|
filterType,
|
|
@@ -21044,7 +21121,7 @@ var TableColumnComponent = ({
|
|
|
21044
21121
|
"TableColumn: For filterType === multiTags or singleTag, filterData.tags must be set.",
|
|
21045
21122
|
(filterType === "multiTags" || filterType === "singleTag") && props.meta?.filterData?.tags === void 0
|
|
21046
21123
|
);
|
|
21047
|
-
const [column] =
|
|
21124
|
+
const [column] = useState40({
|
|
21048
21125
|
...props,
|
|
21049
21126
|
filterFn
|
|
21050
21127
|
});
|
|
@@ -21070,7 +21147,7 @@ var TableColumn = (props) => {
|
|
|
21070
21147
|
// src/components/layout/table/TableColumnSwitcher.tsx
|
|
21071
21148
|
import { useMemo as useMemo42, useRef as useRef41, useId as useId21 } from "react";
|
|
21072
21149
|
import { ChevronUp as ChevronUp3, ChevronDown as ChevronDown5, ChevronLeft as ChevronLeft5, ChevronRight as ChevronRight6, Eye, EyeOff, Pin, PinOff, Columns3Cog } from "lucide-react";
|
|
21073
|
-
import { Fragment as
|
|
21150
|
+
import { Fragment as Fragment12, jsx as jsx95, jsxs as jsxs60 } from "react/jsx-runtime";
|
|
21074
21151
|
var TableColumnSwitcherPopUp = ({ ...props }) => {
|
|
21075
21152
|
const { table } = useTableStateWithoutSizingContext();
|
|
21076
21153
|
const translation = useHightideTranslation();
|
|
@@ -21233,7 +21310,7 @@ var TableColumnSwitcherPopUp = ({ ...props }) => {
|
|
|
21233
21310
|
const canMoveUp = index > 0 && !isPinned && !prevIsPinned;
|
|
21234
21311
|
const canMoveDown = index < columns.length - 1 && !isPinned && !nextIsPinned;
|
|
21235
21312
|
return /* @__PURE__ */ jsxs60("div", { className: "flex-row-2 items-center justify-between gap-2 w-full", children: [
|
|
21236
|
-
/* @__PURE__ */ jsx95("div", { className: "flex-row-2 gap-1", children: isPinned ? /* @__PURE__ */ jsxs60(
|
|
21313
|
+
/* @__PURE__ */ jsx95("div", { className: "flex-row-2 gap-1", children: isPinned ? /* @__PURE__ */ jsxs60(Fragment12, { children: [
|
|
21237
21314
|
/* @__PURE__ */ jsx95(
|
|
21238
21315
|
IconButton,
|
|
21239
21316
|
{
|
|
@@ -21258,7 +21335,7 @@ var TableColumnSwitcherPopUp = ({ ...props }) => {
|
|
|
21258
21335
|
children: /* @__PURE__ */ jsx95(ChevronRight6, { className: "size-4" })
|
|
21259
21336
|
}
|
|
21260
21337
|
)
|
|
21261
|
-
] }) : /* @__PURE__ */ jsxs60(
|
|
21338
|
+
] }) : /* @__PURE__ */ jsxs60(Fragment12, { children: [
|
|
21262
21339
|
/* @__PURE__ */ jsx95(
|
|
21263
21340
|
IconButton,
|
|
21264
21341
|
{
|
|
@@ -21285,7 +21362,7 @@ var TableColumnSwitcherPopUp = ({ ...props }) => {
|
|
|
21285
21362
|
)
|
|
21286
21363
|
] }) }),
|
|
21287
21364
|
/* @__PURE__ */ jsx95("div", { className: "flex-1 typography-label-lg", children: getColumnHeader(columnId) }),
|
|
21288
|
-
/* @__PURE__ */ jsxs60(
|
|
21365
|
+
/* @__PURE__ */ jsxs60(Fragment12, { children: [
|
|
21289
21366
|
/* @__PURE__ */ jsx95(Visibility, { isVisible: enableHiding, children: /* @__PURE__ */ jsx95(
|
|
21290
21367
|
IconButton,
|
|
21291
21368
|
{
|
|
@@ -21346,7 +21423,7 @@ var TableColumnSwitcher = ({ buttonProps, ...props }) => {
|
|
|
21346
21423
|
import { forwardRef as forwardRef28 } from "react";
|
|
21347
21424
|
|
|
21348
21425
|
// src/components/user-interaction/Combobox/ComboboxRoot.tsx
|
|
21349
|
-
import { useCallback as useCallback45, useId as useId22, useMemo as useMemo44, useState as
|
|
21426
|
+
import { useCallback as useCallback45, useId as useId22, useMemo as useMemo44, useState as useState41 } from "react";
|
|
21350
21427
|
|
|
21351
21428
|
// src/components/user-interaction/Combobox/ComboboxContext.tsx
|
|
21352
21429
|
import { createContext as createContext18, useContext as useContext20 } from "react";
|
|
@@ -21432,10 +21509,10 @@ function ComboboxRoot({
|
|
|
21432
21509
|
onItemClick,
|
|
21433
21510
|
...hookProps
|
|
21434
21511
|
}) {
|
|
21435
|
-
const [options, setOptions] =
|
|
21436
|
-
const [listRef, setListRef] =
|
|
21512
|
+
const [options, setOptions] = useState41([]);
|
|
21513
|
+
const [listRef, setListRef] = useState41(null);
|
|
21437
21514
|
const generatedId = useId22();
|
|
21438
|
-
const [ids, setIds] =
|
|
21515
|
+
const [ids, setIds] = useState41({
|
|
21439
21516
|
trigger: `combobox-${generatedId}`,
|
|
21440
21517
|
listbox: `combobox-${generatedId}-listbox`
|
|
21441
21518
|
});
|
|
@@ -21743,7 +21820,7 @@ var ComboboxOption = forwardRef29(function ComboboxOption2({
|
|
|
21743
21820
|
ComboboxOption.displayName = "ComboboxOption";
|
|
21744
21821
|
|
|
21745
21822
|
// src/components/user-interaction/CopyToClipboardWrapper.tsx
|
|
21746
|
-
import { useState as
|
|
21823
|
+
import { useState as useState42 } from "react";
|
|
21747
21824
|
import { clsx as clsx41 } from "clsx";
|
|
21748
21825
|
|
|
21749
21826
|
// src/utils/writeToClipboard.ts
|
|
@@ -21766,7 +21843,7 @@ var CopyToClipboardWrapper = ({
|
|
|
21766
21843
|
...props
|
|
21767
21844
|
}) => {
|
|
21768
21845
|
const translation = useHightideTranslation();
|
|
21769
|
-
const [isShowingConfirmation, setIsShowingConfirmation] =
|
|
21846
|
+
const [isShowingConfirmation, setIsShowingConfirmation] = useState42(false);
|
|
21770
21847
|
return /* @__PURE__ */ jsxs63(
|
|
21771
21848
|
TooltipRoot,
|
|
21772
21849
|
{
|
|
@@ -21815,9 +21892,9 @@ var CopyToClipboardWrapper = ({
|
|
|
21815
21892
|
};
|
|
21816
21893
|
|
|
21817
21894
|
// src/components/user-interaction/Menu.tsx
|
|
21818
|
-
import { useCallback as useCallback47, useRef as useRef44, useState as
|
|
21895
|
+
import { useCallback as useCallback47, useRef as useRef44, useState as useState43 } from "react";
|
|
21819
21896
|
import clsx42 from "clsx";
|
|
21820
|
-
import { Fragment as
|
|
21897
|
+
import { Fragment as Fragment13, jsx as jsx102, jsxs as jsxs64 } from "react/jsx-runtime";
|
|
21821
21898
|
var MenuItem = ({
|
|
21822
21899
|
children,
|
|
21823
21900
|
onClick,
|
|
@@ -21842,14 +21919,14 @@ var Menu = ({
|
|
|
21842
21919
|
...props
|
|
21843
21920
|
}) => {
|
|
21844
21921
|
const triggerRef = useRef44(null);
|
|
21845
|
-
const [isOpen, setIsOpen] =
|
|
21922
|
+
const [isOpen, setIsOpen] = useState43(false);
|
|
21846
21923
|
const bag = {
|
|
21847
21924
|
isOpen,
|
|
21848
21925
|
close: () => setIsOpen(false),
|
|
21849
21926
|
toggleOpen: () => setIsOpen((prevState) => !prevState),
|
|
21850
21927
|
disabled
|
|
21851
21928
|
};
|
|
21852
|
-
return /* @__PURE__ */ jsxs64(
|
|
21929
|
+
return /* @__PURE__ */ jsxs64(Fragment13, { children: [
|
|
21853
21930
|
trigger(bag, useCallback47((el) => triggerRef.current = el, [])),
|
|
21854
21931
|
/* @__PURE__ */ jsx102(
|
|
21855
21932
|
PopUp,
|
|
@@ -21985,7 +22062,7 @@ var MultiSelectChipDisplay = forwardRef30(
|
|
|
21985
22062
|
);
|
|
21986
22063
|
|
|
21987
22064
|
// src/components/user-interaction/ScrollPicker.tsx
|
|
21988
|
-
import { useCallback as useCallback48, useEffect as useEffect53, useState as
|
|
22065
|
+
import { useCallback as useCallback48, useEffect as useEffect53, useState as useState44 } from "react";
|
|
21989
22066
|
import clsx43 from "clsx";
|
|
21990
22067
|
import { jsx as jsx104, jsxs as jsxs66 } from "react/jsx-runtime";
|
|
21991
22068
|
var up = 1;
|
|
@@ -22006,7 +22083,7 @@ var ScrollPicker = ({
|
|
|
22006
22083
|
transition,
|
|
22007
22084
|
items,
|
|
22008
22085
|
lastTimeStamp
|
|
22009
|
-
}, setAnimation] =
|
|
22086
|
+
}, setAnimation] = useState44({
|
|
22010
22087
|
targetIndex: selectedIndex,
|
|
22011
22088
|
currentIndex: disabled ? selectedIndex : 0,
|
|
22012
22089
|
velocity: 0,
|
|
@@ -22327,9 +22404,9 @@ var TextareaWithHeadline = ({
|
|
|
22327
22404
|
};
|
|
22328
22405
|
|
|
22329
22406
|
// src/components/user-interaction/data/FilterList.tsx
|
|
22330
|
-
import { useMemo as useMemo45, useState as
|
|
22407
|
+
import { useMemo as useMemo45, useState as useState45 } from "react";
|
|
22331
22408
|
import { PlusIcon } from "lucide-react";
|
|
22332
|
-
import { Fragment as
|
|
22409
|
+
import { Fragment as Fragment14, jsx as jsx107, jsxs as jsxs68 } from "react/jsx-runtime";
|
|
22333
22410
|
var FilterList = ({ value, onValueChange, availableItems }) => {
|
|
22334
22411
|
const translation = useHightideTranslation();
|
|
22335
22412
|
const filterValueToLabel = useFilterValueTranslation();
|
|
@@ -22339,7 +22416,7 @@ var FilterList = ({ value, onValueChange, availableItems }) => {
|
|
|
22339
22416
|
acc[item.id] = item;
|
|
22340
22417
|
return acc;
|
|
22341
22418
|
}, {}), [availableItems]);
|
|
22342
|
-
const [editState, setEditState] =
|
|
22419
|
+
const [editState, setEditState] = useState45(void 0);
|
|
22343
22420
|
const valueWithEditState = useMemo45(() => {
|
|
22344
22421
|
let foundEditValue = false;
|
|
22345
22422
|
for (const item of value) {
|
|
@@ -22404,7 +22481,7 @@ var FilterList = ({ value, onValueChange, availableItems }) => {
|
|
|
22404
22481
|
}
|
|
22405
22482
|
},
|
|
22406
22483
|
children: [
|
|
22407
|
-
/* @__PURE__ */ jsx107(PopUpOpener, { children: ({ toggleOpen, props }) => /* @__PURE__ */ jsx107(Button, { ...props, onClick: toggleOpen, color: "primary", coloringStyle: "tonal-outline", size: "sm", children: item.activeLabelBuilder ? item.activeLabelBuilder(columnFilter.value) : /* @__PURE__ */ jsxs68(
|
|
22484
|
+
/* @__PURE__ */ jsx107(PopUpOpener, { children: ({ toggleOpen, props }) => /* @__PURE__ */ jsx107(Button, { ...props, onClick: toggleOpen, color: "primary", coloringStyle: "tonal-outline", size: "sm", children: item.activeLabelBuilder ? item.activeLabelBuilder(columnFilter.value) : /* @__PURE__ */ jsxs68(Fragment14, { children: [
|
|
22408
22485
|
/* @__PURE__ */ jsx107("span", { className: "font-bold", children: item.label }),
|
|
22409
22486
|
filterValueToLabel(columnFilter.value, { tags: item.tags })
|
|
22410
22487
|
] }) }) }),
|
|
@@ -22637,7 +22714,7 @@ var TimeDisplay = ({
|
|
|
22637
22714
|
};
|
|
22638
22715
|
|
|
22639
22716
|
// src/components/user-interaction/input/FlexibleDateTimeInput.tsx
|
|
22640
|
-
import { forwardRef as forwardRef32, useState as
|
|
22717
|
+
import { forwardRef as forwardRef32, useState as useState46 } from "react";
|
|
22641
22718
|
import { ClockFading, ClockPlus } from "lucide-react";
|
|
22642
22719
|
import { jsx as jsx110 } from "react/jsx-runtime";
|
|
22643
22720
|
var FlexibleDateTimeInput = forwardRef32(function FlexibleDateTimeInput2({
|
|
@@ -22662,7 +22739,7 @@ var FlexibleDateTimeInput = forwardRef32(function FlexibleDateTimeInput2({
|
|
|
22662
22739
|
const zoned = (date) => DateUtils.toZonedDate(date, timeZone);
|
|
22663
22740
|
const unzoned = (date) => DateUtils.fromZonedDate(date, timeZone);
|
|
22664
22741
|
const hasFixedTime = (date) => DateUtils.sameTime(zoned(date), fixedTime, true, true);
|
|
22665
|
-
const [mode, setMode] =
|
|
22742
|
+
const [mode, setMode] = useState46(() => {
|
|
22666
22743
|
if (value && !hasFixedTime(value)) {
|
|
22667
22744
|
return "dateTime";
|
|
22668
22745
|
}
|
|
@@ -22708,7 +22785,7 @@ var FlexibleDateTimeInput = forwardRef32(function FlexibleDateTimeInput2({
|
|
|
22708
22785
|
|
|
22709
22786
|
// src/components/user-interaction/input/InsideLabelInput.tsx
|
|
22710
22787
|
import { useId as useId25 } from "react";
|
|
22711
|
-
import { forwardRef as forwardRef33, useState as
|
|
22788
|
+
import { forwardRef as forwardRef33, useState as useState47 } from "react";
|
|
22712
22789
|
import clsx46 from "clsx";
|
|
22713
22790
|
import { jsx as jsx111, jsxs as jsxs70 } from "react/jsx-runtime";
|
|
22714
22791
|
var InsideLabelInput = forwardRef33(function InsideLabelInput2({
|
|
@@ -22724,7 +22801,7 @@ var InsideLabelInput = forwardRef33(function InsideLabelInput2({
|
|
|
22724
22801
|
onValueChange,
|
|
22725
22802
|
defaultValue: initialValue
|
|
22726
22803
|
});
|
|
22727
|
-
const [isFocused, setIsFocused] =
|
|
22804
|
+
const [isFocused, setIsFocused] = useState47(false);
|
|
22728
22805
|
const generatedId = useId25();
|
|
22729
22806
|
const id = customId ?? generatedId;
|
|
22730
22807
|
return /* @__PURE__ */ jsxs70("div", { className: clsx46("relative"), children: [
|
|
@@ -22814,7 +22891,7 @@ var SearchBar = ({
|
|
|
22814
22891
|
};
|
|
22815
22892
|
|
|
22816
22893
|
// src/components/user-interaction/input/ToggleableInput.tsx
|
|
22817
|
-
import { forwardRef as forwardRef34, useEffect as useEffect54, useImperativeHandle as useImperativeHandle15, useRef as useRef46, useState as
|
|
22894
|
+
import { forwardRef as forwardRef34, useEffect as useEffect54, useImperativeHandle as useImperativeHandle15, useRef as useRef46, useState as useState48 } from "react";
|
|
22818
22895
|
import { Pencil } from "lucide-react";
|
|
22819
22896
|
import clsx48 from "clsx";
|
|
22820
22897
|
import { jsx as jsx113, jsxs as jsxs72 } from "react/jsx-runtime";
|
|
@@ -22831,7 +22908,7 @@ var ToggleableInput = forwardRef34(function ToggleableInput2({
|
|
|
22831
22908
|
onValueChange,
|
|
22832
22909
|
defaultValue: initialValue
|
|
22833
22910
|
});
|
|
22834
|
-
const [isEditing, setIsEditing] =
|
|
22911
|
+
const [isEditing, setIsEditing] = useState48(initialState !== "display");
|
|
22835
22912
|
const innerRef = useRef46(null);
|
|
22836
22913
|
useImperativeHandle15(forwardedRef, () => innerRef.current);
|
|
22837
22914
|
useEffect54(() => {
|
|
@@ -22877,7 +22954,7 @@ import { Check as Check6 } from "lucide-react";
|
|
|
22877
22954
|
// src/components/user-interaction/properties/PropertyBase.tsx
|
|
22878
22955
|
import clsx49 from "clsx";
|
|
22879
22956
|
import { AlertTriangle, Trash, X as X5 } from "lucide-react";
|
|
22880
|
-
import { Fragment as
|
|
22957
|
+
import { Fragment as Fragment15, jsx as jsx114, jsxs as jsxs73 } from "react/jsx-runtime";
|
|
22881
22958
|
var PropertyBase = ({
|
|
22882
22959
|
name,
|
|
22883
22960
|
children,
|
|
@@ -22896,7 +22973,7 @@ var PropertyBase = ({
|
|
|
22896
22973
|
const isClearEnabled = allowClear && !readOnly;
|
|
22897
22974
|
const isRemoveEnabled = allowRemove && !readOnly;
|
|
22898
22975
|
const showActionsContainer = isClearEnabled || isRemoveEnabled;
|
|
22899
|
-
const renderActionButtons = () => /* @__PURE__ */ jsxs73(
|
|
22976
|
+
const renderActionButtons = () => /* @__PURE__ */ jsxs73(Fragment15, { children: [
|
|
22900
22977
|
isClearEnabled && /* @__PURE__ */ jsx114(
|
|
22901
22978
|
IconButton,
|
|
22902
22979
|
{
|
|
@@ -23057,6 +23134,7 @@ var DateProperty = ({
|
|
|
23057
23134
|
onValueChange,
|
|
23058
23135
|
onEditComplete,
|
|
23059
23136
|
"data-name": "property-input",
|
|
23137
|
+
className: "flex-row-4 pr-0",
|
|
23060
23138
|
"data-invalid": PropsUtil.dataAttributes.bool(invalid)
|
|
23061
23139
|
}
|
|
23062
23140
|
)
|
|
@@ -23282,14 +23360,14 @@ var PolymorphicSlot = forwardRef35(function PolymorphicSlot2({
|
|
|
23282
23360
|
});
|
|
23283
23361
|
|
|
23284
23362
|
// src/components/utils/Transition.tsx
|
|
23285
|
-
import { useEffect as useEffect55, useState as
|
|
23363
|
+
import { useEffect as useEffect55, useState as useState49 } from "react";
|
|
23286
23364
|
function Transition({
|
|
23287
23365
|
children,
|
|
23288
23366
|
show,
|
|
23289
23367
|
includeAnimation = true
|
|
23290
23368
|
}) {
|
|
23291
|
-
const [isOpen, setIsOpen] =
|
|
23292
|
-
const [isTransitioning, setIsTransitioning] =
|
|
23369
|
+
const [isOpen, setIsOpen] = useState49(show);
|
|
23370
|
+
const [isTransitioning, setIsTransitioning] = useState49(!isOpen);
|
|
23293
23371
|
const isUsingReducedMotion = typeof window !== "undefined" && typeof window.matchMedia === "function" ? window.matchMedia("(prefers-reduced-motion: reduce)").matches : true;
|
|
23294
23372
|
useEffect55(() => {
|
|
23295
23373
|
setIsOpen(show);
|
|
@@ -23397,11 +23475,11 @@ var useFocusOnceVisible = (ref, disable = false) => {
|
|
|
23397
23475
|
};
|
|
23398
23476
|
|
|
23399
23477
|
// src/hooks/focus/useIsMounted.ts
|
|
23400
|
-
import { useEffect as useEffect58, useLayoutEffect as useLayoutEffect8, useState as
|
|
23478
|
+
import { useEffect as useEffect58, useLayoutEffect as useLayoutEffect8, useState as useState50 } from "react";
|
|
23401
23479
|
var isClient = typeof window !== "undefined" && typeof document !== "undefined";
|
|
23402
23480
|
var useIsomorphicEffect = isClient ? useLayoutEffect8 : useEffect58;
|
|
23403
23481
|
var useIsMounted = () => {
|
|
23404
|
-
const [isMounted, setIsMounted] =
|
|
23482
|
+
const [isMounted, setIsMounted] = useState50(false);
|
|
23405
23483
|
useIsomorphicEffect(() => {
|
|
23406
23484
|
setIsMounted(true);
|
|
23407
23485
|
return () => {
|
|
@@ -23453,9 +23531,9 @@ function useLogUnstableDependencies(name, value) {
|
|
|
23453
23531
|
}
|
|
23454
23532
|
|
|
23455
23533
|
// src/hooks/useOverwritableState.ts
|
|
23456
|
-
import { useEffect as useEffect60, useState as
|
|
23534
|
+
import { useEffect as useEffect60, useState as useState51 } from "react";
|
|
23457
23535
|
var useOverwritableState = (overwriteValue, onChange) => {
|
|
23458
|
-
const [state, setState] =
|
|
23536
|
+
const [state, setState] = useState51(overwriteValue);
|
|
23459
23537
|
useEffect60(() => {
|
|
23460
23538
|
setState(overwriteValue);
|
|
23461
23539
|
}, [overwriteValue]);
|
|
@@ -23539,7 +23617,6 @@ var useSwipeGesture = ({
|
|
|
23539
23617
|
const listenTouch = inputMode === "touch" || inputMode === "both";
|
|
23540
23618
|
const listenMouse = inputMode === "mouse" || inputMode === "both";
|
|
23541
23619
|
const onGestureStart = (x, y, eventTarget) => {
|
|
23542
|
-
console.log("onGestureStart", x, y);
|
|
23543
23620
|
if (!isWithinStartRegion(x, y)) return;
|
|
23544
23621
|
const scrollableParent = findScrollableParent(eventTarget);
|
|
23545
23622
|
gestureEndRef.current = null;
|
|
@@ -23552,7 +23629,6 @@ var useSwipeGesture = ({
|
|
|
23552
23629
|
isScrollingRef.current = !!scrollableParent;
|
|
23553
23630
|
};
|
|
23554
23631
|
const onGestureMove = (x, y, eventTarget) => {
|
|
23555
|
-
console.log("onGestureMove", x, y);
|
|
23556
23632
|
const scrollableParent = findScrollableParent(eventTarget);
|
|
23557
23633
|
const currentScrollY = scrollableParent?.scrollTop ?? window.scrollY;
|
|
23558
23634
|
gestureEndRef.current = {
|
|
@@ -23669,13 +23745,13 @@ var useSwipeGesture = ({
|
|
|
23669
23745
|
};
|
|
23670
23746
|
|
|
23671
23747
|
// src/hooks/useUpdatingDateString.ts
|
|
23672
|
-
import { useEffect as useEffect62, useState as
|
|
23748
|
+
import { useEffect as useEffect62, useState as useState52 } from "react";
|
|
23673
23749
|
var useUpdatingDateString = ({ absoluteFormat = "dateTime", localeOverride, is24HourFormat: is24HourFormatOverride, timeZone: timeZoneOverride, date }) => {
|
|
23674
23750
|
const { locale: contextLocale, is24HourFormat: contextIs24HourFormat, timeZone: contextTimeZone } = useLocale();
|
|
23675
23751
|
const locale = localeOverride ?? contextLocale;
|
|
23676
23752
|
const is24HourFormat = is24HourFormatOverride ?? contextIs24HourFormat ?? true;
|
|
23677
23753
|
const timeZone = timeZoneOverride ?? contextTimeZone;
|
|
23678
|
-
const [dateAndTimeStrings, setDateAndTimeStrings] =
|
|
23754
|
+
const [dateAndTimeStrings, setDateAndTimeStrings] = useState52({
|
|
23679
23755
|
compareDate: date,
|
|
23680
23756
|
absolute: DateUtils.formatAbsolute(date, locale, absoluteFormat, { is24HourFormat, timeZone }),
|
|
23681
23757
|
relative: DateUtils.formatRelative(date, locale)
|
|
@@ -24272,6 +24348,7 @@ export {
|
|
|
24272
24348
|
processModelLibrary,
|
|
24273
24349
|
range,
|
|
24274
24350
|
resolveSetState,
|
|
24351
|
+
resolveTreeNodePath,
|
|
24275
24352
|
segmentBounds,
|
|
24276
24353
|
segmentPlaceholder,
|
|
24277
24354
|
setDayPeriod,
|