@unifiedsoftware/react-ui 1.0.13 → 1.0.15
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 +104 -1
- package/dist/index.d.ts +104 -1
- package/dist/index.js +703 -123
- package/dist/index.mjs +672 -87
- package/package.json +3 -1
package/dist/index.mjs
CHANGED
|
@@ -429,8 +429,40 @@ var CollapseTrigger = forwardRef11(({ children }, ref) => {
|
|
|
429
429
|
});
|
|
430
430
|
var CollapseTrigger_default = CollapseTrigger;
|
|
431
431
|
|
|
432
|
+
// src/components/Drawer/Drawer.tsx
|
|
433
|
+
import clsx8 from "clsx";
|
|
434
|
+
import { forwardRef as forwardRef12, useRef as useRef4 } from "react";
|
|
435
|
+
import { mergeRefs as mergeRefs2 } from "react-merge-refs";
|
|
436
|
+
import { jsx as jsx10, jsxs as jsxs9 } from "react/jsx-runtime";
|
|
437
|
+
var Drawer = forwardRef12((props, ref) => {
|
|
438
|
+
const { children, className, isOpen, size = "md", position = "left", onClose } = props;
|
|
439
|
+
const nodeRef = useRef4(null);
|
|
440
|
+
const handleClose = () => {
|
|
441
|
+
onClose();
|
|
442
|
+
};
|
|
443
|
+
return /* @__PURE__ */ jsx10(Backdrop_default, { isOpen, onClose: handleClose, children: /* @__PURE__ */ jsx10(Transition_default, { nodeRef, isOpen, name: `${PREFIX_CLS}drawer`, enter: 600, leave: 300, unmountOnExit: true, children: /* @__PURE__ */ jsxs9(
|
|
444
|
+
"div",
|
|
445
|
+
{
|
|
446
|
+
ref: mergeRefs2([ref, nodeRef]),
|
|
447
|
+
className: clsx8(
|
|
448
|
+
`${PREFIX_CLS}drawer`,
|
|
449
|
+
{
|
|
450
|
+
[`${PREFIX_CLS}drawer--${size}`]: size,
|
|
451
|
+
[`${PREFIX_CLS}drawer--${position}`]: position
|
|
452
|
+
},
|
|
453
|
+
className
|
|
454
|
+
),
|
|
455
|
+
children: [
|
|
456
|
+
/* @__PURE__ */ jsx10("div", { className: `${PREFIX_CLS}drawer__overlay` }),
|
|
457
|
+
children
|
|
458
|
+
]
|
|
459
|
+
}
|
|
460
|
+
) }) });
|
|
461
|
+
});
|
|
462
|
+
var Drawer_default = Drawer;
|
|
463
|
+
|
|
432
464
|
// src/components/Menu/Menu.tsx
|
|
433
|
-
import
|
|
465
|
+
import clsx12 from "clsx";
|
|
434
466
|
import { useEffect as useEffect3, useMemo as useMemo3, useState as useState2 } from "react";
|
|
435
467
|
|
|
436
468
|
// src/components/Menu/MenuContext.tsx
|
|
@@ -446,12 +478,12 @@ var useMenu = () => {
|
|
|
446
478
|
var MenuContext_default = MenuContext;
|
|
447
479
|
|
|
448
480
|
// src/components/Menu/MenuGroup.tsx
|
|
449
|
-
import
|
|
481
|
+
import clsx11 from "clsx";
|
|
450
482
|
import { useMemo as useMemo2 } from "react";
|
|
451
483
|
|
|
452
484
|
// src/components/Menu/MenuItem.tsx
|
|
453
|
-
import
|
|
454
|
-
import { forwardRef as
|
|
485
|
+
import clsx9 from "clsx";
|
|
486
|
+
import { forwardRef as forwardRef13, useContext as useContext4, useEffect as useEffect2 } from "react";
|
|
455
487
|
|
|
456
488
|
// src/components/Menu/MenuValueContext.tsx
|
|
457
489
|
import { createContext as createContext3, useContext as useContext3 } from "react";
|
|
@@ -466,8 +498,8 @@ var useMenuItemValue = () => {
|
|
|
466
498
|
var MenuValueContext_default = MenuValueContext;
|
|
467
499
|
|
|
468
500
|
// src/components/Menu/MenuItem.tsx
|
|
469
|
-
import { jsx as
|
|
470
|
-
var MenuItem =
|
|
501
|
+
import { jsx as jsx11, jsxs as jsxs10 } from "react/jsx-runtime";
|
|
502
|
+
var MenuItem = forwardRef13((props, ref) => {
|
|
471
503
|
const _a = props, { as: Component = "div", className, style, value, title, icon, level = 1, disabled, onClick } = _a, rest = __objRest(_a, ["as", "className", "style", "value", "title", "icon", "level", "disabled", "onClick"]);
|
|
472
504
|
const { value: menuValue, originalValue, navMode, onChange, onOpen, onItemSelect } = useMenu();
|
|
473
505
|
const values = useContext4(MenuValueContext_default);
|
|
@@ -485,11 +517,11 @@ var MenuItem = forwardRef12((props, ref) => {
|
|
|
485
517
|
onChange(mergedValues);
|
|
486
518
|
}
|
|
487
519
|
}, [value, originalValue, navMode]);
|
|
488
|
-
return /* @__PURE__ */
|
|
520
|
+
return /* @__PURE__ */ jsxs10(
|
|
489
521
|
Component,
|
|
490
522
|
__spreadProps(__spreadValues({
|
|
491
523
|
ref,
|
|
492
|
-
className:
|
|
524
|
+
className: clsx9(
|
|
493
525
|
`${PREFIX_CLS}menu-item`,
|
|
494
526
|
{
|
|
495
527
|
[`${PREFIX_CLS}menu-item--selected`]: menuValue.includes(value),
|
|
@@ -503,9 +535,9 @@ var MenuItem = forwardRef12((props, ref) => {
|
|
|
503
535
|
onClick: handleClick
|
|
504
536
|
}, rest), {
|
|
505
537
|
children: [
|
|
506
|
-
/* @__PURE__ */
|
|
507
|
-
icon && /* @__PURE__ */
|
|
508
|
-
/* @__PURE__ */
|
|
538
|
+
/* @__PURE__ */ jsx11("div", { className: `${PREFIX_CLS}overlay`, children: /* @__PURE__ */ jsx11("div", { className: `${PREFIX_CLS}overlay__surface` }) }),
|
|
539
|
+
icon && /* @__PURE__ */ jsx11("div", { className: `${PREFIX_CLS}menu-item__icon`, children: icon }),
|
|
540
|
+
/* @__PURE__ */ jsx11("div", { className: `${PREFIX_CLS}menu-item__content`, children: /* @__PURE__ */ jsx11("span", { className: `${PREFIX_CLS}menu-item__title`, children: title }) })
|
|
509
541
|
]
|
|
510
542
|
})
|
|
511
543
|
);
|
|
@@ -514,7 +546,7 @@ MenuItem.displayName = "MenuItem";
|
|
|
514
546
|
var MenuItem_default = MenuItem;
|
|
515
547
|
|
|
516
548
|
// src/components/Menu/MenuSubmenu.tsx
|
|
517
|
-
import
|
|
549
|
+
import clsx10 from "clsx";
|
|
518
550
|
import { useContext as useContext5, useMemo } from "react";
|
|
519
551
|
|
|
520
552
|
// src/components/Menu/utils.ts
|
|
@@ -541,7 +573,7 @@ var addOrRemoveValueInArray = (array, value) => {
|
|
|
541
573
|
};
|
|
542
574
|
|
|
543
575
|
// src/components/Menu/MenuSubmenu.tsx
|
|
544
|
-
import { jsx as
|
|
576
|
+
import { jsx as jsx12, jsxs as jsxs11 } from "react/jsx-runtime";
|
|
545
577
|
var MenuSubmenu = (_a) => {
|
|
546
578
|
var _b = _a, {
|
|
547
579
|
children,
|
|
@@ -571,7 +603,7 @@ var MenuSubmenu = (_a) => {
|
|
|
571
603
|
const content = useMemo(() => {
|
|
572
604
|
return items == null ? void 0 : items.map((_a2, index) => {
|
|
573
605
|
var _b2 = _a2, { type } = _b2, item = __objRest(_b2, ["type"]);
|
|
574
|
-
return type === "item" ? /* @__PURE__ */
|
|
606
|
+
return type === "item" ? /* @__PURE__ */ jsx12(MenuItem_default, __spreadValues({ level: level !== void 0 ? level + 1 : void 0 }, item), index) : type === "submenu" ? /* @__PURE__ */ jsx12(MenuSubmenu, __spreadValues({ level: level !== void 0 ? level + 1 : void 0 }, item), index) : type === "group" ? /* @__PURE__ */ jsx12(MenuGroup_default, __spreadValues({ level: level !== void 0 ? level + 1 : void 0 }, item), index) : /* @__PURE__ */ jsx12(MenuItem_default, __spreadValues({ level: level !== void 0 ? level + 1 : void 0 }, item), index);
|
|
575
607
|
});
|
|
576
608
|
}, [items]);
|
|
577
609
|
const handleClick = (event) => {
|
|
@@ -589,11 +621,11 @@ var MenuSubmenu = (_a) => {
|
|
|
589
621
|
}
|
|
590
622
|
onClick == null ? void 0 : onClick(event);
|
|
591
623
|
};
|
|
592
|
-
return /* @__PURE__ */
|
|
593
|
-
/* @__PURE__ */
|
|
624
|
+
return /* @__PURE__ */ jsx12(MenuValueContext_default.Provider, { value: mergedValues, children: /* @__PURE__ */ jsx12("div", { className: clsx10(`${PREFIX_CLS}menu-submenu`), children: /* @__PURE__ */ jsxs11(Collapse_default, { isOpen, children: [
|
|
625
|
+
/* @__PURE__ */ jsx12(CollapseTrigger_default, { children: /* @__PURE__ */ jsxs11(
|
|
594
626
|
"div",
|
|
595
627
|
__spreadProps(__spreadValues({
|
|
596
|
-
className:
|
|
628
|
+
className: clsx10(
|
|
597
629
|
`${PREFIX_CLS}menu-item`,
|
|
598
630
|
{
|
|
599
631
|
[`${PREFIX_CLS}menu-item--selected`]: menuValue.includes(value) || items && mergedValues.includes(menuValue)
|
|
@@ -606,17 +638,17 @@ var MenuSubmenu = (_a) => {
|
|
|
606
638
|
onClick: handleClick
|
|
607
639
|
}, rest), {
|
|
608
640
|
children: [
|
|
609
|
-
/* @__PURE__ */
|
|
610
|
-
icon && /* @__PURE__ */
|
|
611
|
-
/* @__PURE__ */
|
|
612
|
-
/* @__PURE__ */
|
|
641
|
+
/* @__PURE__ */ jsx12("div", { className: `${PREFIX_CLS}overlay`, children: /* @__PURE__ */ jsx12("div", { className: `${PREFIX_CLS}overlay__surface` }) }),
|
|
642
|
+
icon && /* @__PURE__ */ jsx12("div", { className: `${PREFIX_CLS}menu-item__icon`, children: icon }),
|
|
643
|
+
/* @__PURE__ */ jsx12("div", { className: `${PREFIX_CLS}menu-item__content`, children: /* @__PURE__ */ jsx12("span", { className: `${PREFIX_CLS}menu-item__title`, children: title }) }),
|
|
644
|
+
/* @__PURE__ */ jsx12("div", { className: `${PREFIX_CLS}menu-item__icon`, children: isOpen ? /* @__PURE__ */ jsx12(ChevronUpIcon_default, { className: `${PREFIX_CLS}icon` }) : /* @__PURE__ */ jsx12(ChevronDownIcon_default, { className: `${PREFIX_CLS}icon` }) })
|
|
613
645
|
]
|
|
614
646
|
})
|
|
615
647
|
) }),
|
|
616
|
-
/* @__PURE__ */
|
|
648
|
+
/* @__PURE__ */ jsx12(CollapseContent_default, { children: /* @__PURE__ */ jsx12(
|
|
617
649
|
"ul",
|
|
618
650
|
{
|
|
619
|
-
className:
|
|
651
|
+
className: clsx10(`${PREFIX_CLS}menu`, {
|
|
620
652
|
[`${PREFIX_CLS}menu-open`]: !isOpen
|
|
621
653
|
}),
|
|
622
654
|
children: content || children
|
|
@@ -627,7 +659,7 @@ var MenuSubmenu = (_a) => {
|
|
|
627
659
|
var MenuSubmenu_default = MenuSubmenu;
|
|
628
660
|
|
|
629
661
|
// src/components/Menu/MenuGroup.tsx
|
|
630
|
-
import { Fragment, jsx as
|
|
662
|
+
import { Fragment, jsx as jsx13, jsxs as jsxs12 } from "react/jsx-runtime";
|
|
631
663
|
var MenuGroup = (_a) => {
|
|
632
664
|
var _b = _a, {
|
|
633
665
|
children,
|
|
@@ -649,21 +681,21 @@ var MenuGroup = (_a) => {
|
|
|
649
681
|
const content = useMemo2(() => {
|
|
650
682
|
return items == null ? void 0 : items.map((_a2, index) => {
|
|
651
683
|
var _b2 = _a2, { type } = _b2, item = __objRest(_b2, ["type"]);
|
|
652
|
-
return type === "item" ? /* @__PURE__ */
|
|
684
|
+
return type === "item" ? /* @__PURE__ */ jsx13(MenuItem_default, __spreadValues({}, item), index) : type === "submenu" ? /* @__PURE__ */ jsx13(MenuSubmenu_default, __spreadValues({}, item), index) : /* @__PURE__ */ jsx13(MenuItem_default, __spreadValues({}, item), index);
|
|
653
685
|
});
|
|
654
686
|
}, [items]);
|
|
655
|
-
return /* @__PURE__ */
|
|
656
|
-
/* @__PURE__ */
|
|
687
|
+
return /* @__PURE__ */ jsxs12(Fragment, { children: [
|
|
688
|
+
/* @__PURE__ */ jsxs12(
|
|
657
689
|
"div",
|
|
658
690
|
__spreadProps(__spreadValues({
|
|
659
|
-
className:
|
|
691
|
+
className: clsx11(`${PREFIX_CLS}menu-group`, className),
|
|
660
692
|
style: __spreadValues({
|
|
661
693
|
paddingLeft: level <= 1 ? `var(--${PREFIX_CLS}menu-group-padding-x)` : `calc(${level} * var(--${PREFIX_CLS}menu-group-padding-level))`
|
|
662
694
|
}, style)
|
|
663
695
|
}, rest), {
|
|
664
696
|
children: [
|
|
665
|
-
icon && /* @__PURE__ */
|
|
666
|
-
/* @__PURE__ */
|
|
697
|
+
icon && /* @__PURE__ */ jsx13("div", { className: `${PREFIX_CLS}menu-group__icon`, children: icon }),
|
|
698
|
+
/* @__PURE__ */ jsx13("div", { className: `${PREFIX_CLS}menu-group__content`, children: /* @__PURE__ */ jsx13("span", { className: `${PREFIX_CLS}menu-group__title`, children: title }) })
|
|
667
699
|
]
|
|
668
700
|
})
|
|
669
701
|
),
|
|
@@ -673,7 +705,7 @@ var MenuGroup = (_a) => {
|
|
|
673
705
|
var MenuGroup_default = MenuGroup;
|
|
674
706
|
|
|
675
707
|
// src/components/Menu/Menu.tsx
|
|
676
|
-
import { jsx as
|
|
708
|
+
import { jsx as jsx14 } from "react/jsx-runtime";
|
|
677
709
|
var Menu = (_a) => {
|
|
678
710
|
var _b = _a, {
|
|
679
711
|
children,
|
|
@@ -704,7 +736,7 @@ var Menu = (_a) => {
|
|
|
704
736
|
const content = useMemo3(() => {
|
|
705
737
|
return items == null ? void 0 : items.map((_a3, index) => {
|
|
706
738
|
var _b2 = _a3, { type } = _b2, item = __objRest(_b2, ["type"]);
|
|
707
|
-
return type === "item" ? /* @__PURE__ */
|
|
739
|
+
return type === "item" ? /* @__PURE__ */ jsx14(MenuItem_default, __spreadValues({}, item), index) : type === "submenu" ? /* @__PURE__ */ jsx14(MenuSubmenu_default, __spreadValues({}, item), index) : type === "group" ? /* @__PURE__ */ jsx14(MenuGroup_default, __spreadValues({}, item), index) : /* @__PURE__ */ jsx14(MenuItem_default, __spreadValues({}, item), index);
|
|
708
740
|
});
|
|
709
741
|
}, [items]);
|
|
710
742
|
const handleChange = (value) => {
|
|
@@ -734,7 +766,7 @@ var Menu = (_a) => {
|
|
|
734
766
|
setSelfOpenValues(openValuesProp);
|
|
735
767
|
}
|
|
736
768
|
}, [openValuesProp]);
|
|
737
|
-
return /* @__PURE__ */
|
|
769
|
+
return /* @__PURE__ */ jsx14(
|
|
738
770
|
MenuContext_default.Provider,
|
|
739
771
|
{
|
|
740
772
|
value: {
|
|
@@ -747,7 +779,7 @@ var Menu = (_a) => {
|
|
|
747
779
|
onChange: handleChange,
|
|
748
780
|
onItemSelect: handleItemSelect
|
|
749
781
|
},
|
|
750
|
-
children: /* @__PURE__ */
|
|
782
|
+
children: /* @__PURE__ */ jsx14("div", __spreadProps(__spreadValues({ className: clsx12(`${PREFIX_CLS}menu`) }, rest), { children: content || children }))
|
|
751
783
|
}
|
|
752
784
|
);
|
|
753
785
|
};
|
|
@@ -755,9 +787,9 @@ Menu.displayName = "Menu";
|
|
|
755
787
|
var Menu_default = Menu;
|
|
756
788
|
|
|
757
789
|
// src/components/Tabs/Tab.tsx
|
|
758
|
-
import
|
|
759
|
-
import
|
|
760
|
-
import { forwardRef as
|
|
790
|
+
import clsx13 from "clsx";
|
|
791
|
+
import mergeRefs3 from "merge-refs";
|
|
792
|
+
import { forwardRef as forwardRef14, useEffect as useEffect4, useId, useRef as useRef5 } from "react";
|
|
761
793
|
|
|
762
794
|
// ../../../node_modules/react-icons/lib/esm/iconBase.js
|
|
763
795
|
import React3 from "react";
|
|
@@ -857,8 +889,8 @@ var useTabs = () => {
|
|
|
857
889
|
};
|
|
858
890
|
|
|
859
891
|
// src/components/Tabs/Tab.tsx
|
|
860
|
-
import { jsx as
|
|
861
|
-
var Tab =
|
|
892
|
+
import { jsx as jsx15, jsxs as jsxs13 } from "react/jsx-runtime";
|
|
893
|
+
var Tab = forwardRef14(
|
|
862
894
|
(_a, ref) => {
|
|
863
895
|
var _b = _a, {
|
|
864
896
|
as: Component = "div",
|
|
@@ -879,7 +911,7 @@ var Tab = forwardRef13(
|
|
|
879
911
|
"disabled",
|
|
880
912
|
"onClick"
|
|
881
913
|
]);
|
|
882
|
-
const tabRef =
|
|
914
|
+
const tabRef = useRef5(null);
|
|
883
915
|
const id = useId();
|
|
884
916
|
const value = valueProp != null ? valueProp : id;
|
|
885
917
|
const _a2 = useTabs(), { onClose, registerItem } = _a2, tabs = __objRest(_a2, ["onClose", "registerItem"]);
|
|
@@ -927,11 +959,11 @@ var Tab = forwardRef13(
|
|
|
927
959
|
tabs.previousTabRef.current = tabRef.current;
|
|
928
960
|
}
|
|
929
961
|
}, [value, tabs.value]);
|
|
930
|
-
return /* @__PURE__ */
|
|
962
|
+
return /* @__PURE__ */ jsxs13(
|
|
931
963
|
Component,
|
|
932
964
|
__spreadProps(__spreadValues({
|
|
933
|
-
ref:
|
|
934
|
-
className:
|
|
965
|
+
ref: mergeRefs3(tabRef, ref, (el) => tabs.tabRefs.current[value] = el),
|
|
966
|
+
className: clsx13(
|
|
935
967
|
`${PREFIX_CLS}tab`,
|
|
936
968
|
{ [`${PREFIX_CLS}tab--selected`]: value === tabs.value, [`${PREFIX_CLS}tab--disabled`]: disabled },
|
|
937
969
|
className
|
|
@@ -940,12 +972,12 @@ var Tab = forwardRef13(
|
|
|
940
972
|
onClick: handleClick
|
|
941
973
|
}, rest), {
|
|
942
974
|
children: [
|
|
943
|
-
/* @__PURE__ */
|
|
944
|
-
/* @__PURE__ */
|
|
975
|
+
/* @__PURE__ */ jsx15("div", { className: `${PREFIX_CLS}overlay`, children: /* @__PURE__ */ jsx15("div", { className: `${PREFIX_CLS}overlay__surface` }) }),
|
|
976
|
+
/* @__PURE__ */ jsxs13("div", { className: `${PREFIX_CLS}tab__content`, children: [
|
|
945
977
|
children,
|
|
946
|
-
closable && /* @__PURE__ */
|
|
978
|
+
closable && /* @__PURE__ */ jsx15(Button, { variant: "text", color: "secondary", iconOnly: true, size: "xs", onClick: handleClose, children: /* @__PURE__ */ jsx15(Icon_default, { children: /* @__PURE__ */ jsx15(TbX, {}) }) })
|
|
947
979
|
] }),
|
|
948
|
-
/* @__PURE__ */
|
|
980
|
+
/* @__PURE__ */ jsx15("div", { className: `${PREFIX_CLS}tab__indicator` })
|
|
949
981
|
]
|
|
950
982
|
})
|
|
951
983
|
);
|
|
@@ -953,8 +985,8 @@ var Tab = forwardRef13(
|
|
|
953
985
|
);
|
|
954
986
|
|
|
955
987
|
// src/components/Tabs/Tabs.tsx
|
|
956
|
-
import
|
|
957
|
-
import { useEffect as useEffect5, useRef as
|
|
988
|
+
import clsx14 from "clsx";
|
|
989
|
+
import { useEffect as useEffect5, useRef as useRef6, useState as useState3 } from "react";
|
|
958
990
|
|
|
959
991
|
// src/utils/scroll.ts
|
|
960
992
|
var scrollToItem = (parentElement, currentElement) => {
|
|
@@ -982,7 +1014,7 @@ var scrollToItem = (parentElement, currentElement) => {
|
|
|
982
1014
|
};
|
|
983
1015
|
|
|
984
1016
|
// src/components/Tabs/Tabs.tsx
|
|
985
|
-
import { jsx as
|
|
1017
|
+
import { jsx as jsx16, jsxs as jsxs14 } from "react/jsx-runtime";
|
|
986
1018
|
var Tabs = (_a) => {
|
|
987
1019
|
var _b = _a, {
|
|
988
1020
|
children,
|
|
@@ -1001,9 +1033,9 @@ var Tabs = (_a) => {
|
|
|
1001
1033
|
"onChange",
|
|
1002
1034
|
"onClose"
|
|
1003
1035
|
]);
|
|
1004
|
-
const tabsRef =
|
|
1005
|
-
const tabRefs =
|
|
1006
|
-
const previousTabRef =
|
|
1036
|
+
const tabsRef = useRef6(null);
|
|
1037
|
+
const tabRefs = useRef6({});
|
|
1038
|
+
const previousTabRef = useRef6(null);
|
|
1007
1039
|
const [selfValue, setSelfValue] = useState3(value != null ? value : defaultValue);
|
|
1008
1040
|
const [items, setItems] = useState3([]);
|
|
1009
1041
|
const registerItem = (item) => {
|
|
@@ -1044,59 +1076,610 @@ var Tabs = (_a) => {
|
|
|
1044
1076
|
setSelfValue(item == null ? void 0 : item.value);
|
|
1045
1077
|
}
|
|
1046
1078
|
}, [value, items]);
|
|
1047
|
-
return /* @__PURE__ */
|
|
1079
|
+
return /* @__PURE__ */ jsxs14(
|
|
1048
1080
|
TabsContext.Provider,
|
|
1049
1081
|
{
|
|
1050
1082
|
value: { previousTabRef, tabRefs, value: selfValue, onChange: handleChange, onClose: handleClose, registerItem },
|
|
1051
1083
|
children: [
|
|
1052
|
-
/* @__PURE__ */
|
|
1084
|
+
/* @__PURE__ */ jsx16(
|
|
1053
1085
|
"div",
|
|
1054
1086
|
__spreadProps(__spreadValues({
|
|
1055
1087
|
ref: tabsRef,
|
|
1056
|
-
className:
|
|
1088
|
+
className: clsx14(`${PREFIX_CLS}tabs`, { [`${PREFIX_CLS}tabs--${alignment}`]: alignment }, className)
|
|
1057
1089
|
}, rest), {
|
|
1058
1090
|
children
|
|
1059
1091
|
})
|
|
1060
1092
|
),
|
|
1061
|
-
/* @__PURE__ */
|
|
1093
|
+
/* @__PURE__ */ jsx16("div", { className: `${PREFIX_CLS}divider` })
|
|
1062
1094
|
]
|
|
1063
1095
|
}
|
|
1064
1096
|
);
|
|
1065
1097
|
};
|
|
1066
1098
|
|
|
1067
1099
|
// src/components/Toolbar/Toolbar.tsx
|
|
1068
|
-
import
|
|
1069
|
-
import { Fragment as Fragment2, jsx as
|
|
1100
|
+
import clsx15 from "clsx";
|
|
1101
|
+
import { Fragment as Fragment2, jsx as jsx17, jsxs as jsxs15 } from "react/jsx-runtime";
|
|
1070
1102
|
var Toolbar = (props) => {
|
|
1071
1103
|
const _a = props, { children, className, size = "md", startAction, endAction, title, subtitle } = _a, rest = __objRest(_a, ["children", "className", "size", "startAction", "endAction", "title", "subtitle"]);
|
|
1072
|
-
return /* @__PURE__ */
|
|
1073
|
-
/* @__PURE__ */
|
|
1074
|
-
/* @__PURE__ */
|
|
1075
|
-
startAction && /* @__PURE__ */
|
|
1076
|
-
/* @__PURE__ */
|
|
1077
|
-
title && /* @__PURE__ */
|
|
1078
|
-
subtitle && /* @__PURE__ */
|
|
1104
|
+
return /* @__PURE__ */ jsxs15("div", __spreadProps(__spreadValues({ className: clsx15(`${PREFIX_CLS}toolbar`, { [`${PREFIX_CLS}toolbar--${size}`]: size }, className) }, rest), { children: [
|
|
1105
|
+
/* @__PURE__ */ jsx17("div", { className: `${PREFIX_CLS}outline-b` }),
|
|
1106
|
+
/* @__PURE__ */ jsxs15("div", { className: clsx15(`${PREFIX_CLS}toolbar__container`), children: [
|
|
1107
|
+
startAction && /* @__PURE__ */ jsx17("div", { className: clsx15(`${PREFIX_CLS}toolbar__start-action`), children: startAction }),
|
|
1108
|
+
/* @__PURE__ */ jsx17("div", { className: clsx15(`${PREFIX_CLS}toolbar__content`), children: title || subtitle ? /* @__PURE__ */ jsxs15(Fragment2, { children: [
|
|
1109
|
+
title && /* @__PURE__ */ jsx17("div", { className: clsx15(`${PREFIX_CLS}toolbar__title`), children: title }),
|
|
1110
|
+
subtitle && /* @__PURE__ */ jsx17("div", { className: clsx15(`${PREFIX_CLS}toolbar__subtitle`), children: subtitle })
|
|
1079
1111
|
] }) : children }),
|
|
1080
|
-
endAction && /* @__PURE__ */
|
|
1112
|
+
endAction && /* @__PURE__ */ jsx17("div", { className: clsx15(`${PREFIX_CLS}toolbar__trailing`), children: endAction })
|
|
1081
1113
|
] })
|
|
1082
1114
|
] }));
|
|
1083
1115
|
};
|
|
1084
1116
|
var Toolbar_default = Toolbar;
|
|
1085
1117
|
|
|
1118
|
+
// src/components/Select/SelectClient.tsx
|
|
1119
|
+
import { filterBy } from "@progress/kendo-data-query";
|
|
1120
|
+
import {
|
|
1121
|
+
ComboBox
|
|
1122
|
+
} from "@progress/kendo-react-dropdowns";
|
|
1123
|
+
import { useEffect as useEffect6, useRef as useRef7, useState as useState4 } from "react";
|
|
1124
|
+
import { jsx as jsx18 } from "react/jsx-runtime";
|
|
1125
|
+
var SelectClient = ({
|
|
1126
|
+
value: valueProp,
|
|
1127
|
+
data: propData,
|
|
1128
|
+
filter: filterProp,
|
|
1129
|
+
keyField: keyField2 = "key",
|
|
1130
|
+
textField: textField3 = "text",
|
|
1131
|
+
placeholder,
|
|
1132
|
+
virtual,
|
|
1133
|
+
filterable,
|
|
1134
|
+
disabled,
|
|
1135
|
+
loading,
|
|
1136
|
+
className,
|
|
1137
|
+
onChange,
|
|
1138
|
+
onFilterChange
|
|
1139
|
+
}) => {
|
|
1140
|
+
const [value, setValue] = useState4(valueProp);
|
|
1141
|
+
const [filter, setFilter] = useState4(filterProp);
|
|
1142
|
+
const handleChange = (event) => {
|
|
1143
|
+
const value2 = event.target.value || null;
|
|
1144
|
+
if (valueProp !== void 0) {
|
|
1145
|
+
onChange(value2);
|
|
1146
|
+
} else {
|
|
1147
|
+
setValue(value2);
|
|
1148
|
+
}
|
|
1149
|
+
};
|
|
1150
|
+
const pageSize3 = virtual == null ? void 0 : virtual.pageSize;
|
|
1151
|
+
const filteredData = useRef7([]);
|
|
1152
|
+
const [state, setState] = useState4({
|
|
1153
|
+
skip: 0,
|
|
1154
|
+
total: propData.total,
|
|
1155
|
+
subsetData: propData.items.slice(0, pageSize3)
|
|
1156
|
+
});
|
|
1157
|
+
const handleFilterChange = (event) => {
|
|
1158
|
+
if (pageSize3) {
|
|
1159
|
+
filteredData.current = filterBy(propData.items.slice(), event.filter);
|
|
1160
|
+
const data = filteredData.current.slice(0, pageSize3);
|
|
1161
|
+
setState({
|
|
1162
|
+
subsetData: data,
|
|
1163
|
+
skip: 0,
|
|
1164
|
+
total: filteredData.current.length
|
|
1165
|
+
});
|
|
1166
|
+
}
|
|
1167
|
+
const filter2 = event.filter.value;
|
|
1168
|
+
if (filterProp !== void 0) {
|
|
1169
|
+
onFilterChange == null ? void 0 : onFilterChange(filter2);
|
|
1170
|
+
} else {
|
|
1171
|
+
setFilter(filter2);
|
|
1172
|
+
}
|
|
1173
|
+
};
|
|
1174
|
+
const handlePageChange = (event) => {
|
|
1175
|
+
if (pageSize3) {
|
|
1176
|
+
const skip = event.page.skip;
|
|
1177
|
+
const take = event.page.take;
|
|
1178
|
+
const newSubsetData = filteredData.current.slice(skip, skip + take);
|
|
1179
|
+
setState(__spreadProps(__spreadValues({}, state), { subsetData: newSubsetData, skip }));
|
|
1180
|
+
}
|
|
1181
|
+
};
|
|
1182
|
+
useEffect6(() => {
|
|
1183
|
+
if (valueProp !== void 0) {
|
|
1184
|
+
setValue(valueProp);
|
|
1185
|
+
}
|
|
1186
|
+
}, [valueProp]);
|
|
1187
|
+
useEffect6(() => {
|
|
1188
|
+
setFilter(filterProp);
|
|
1189
|
+
}, [filterProp]);
|
|
1190
|
+
useEffect6(() => {
|
|
1191
|
+
if (pageSize3) {
|
|
1192
|
+
filteredData.current = propData.items.slice();
|
|
1193
|
+
}
|
|
1194
|
+
}, [propData]);
|
|
1195
|
+
return /* @__PURE__ */ jsx18(
|
|
1196
|
+
ComboBox,
|
|
1197
|
+
{
|
|
1198
|
+
value,
|
|
1199
|
+
data: pageSize3 ? state.subsetData : propData.items,
|
|
1200
|
+
placeholder,
|
|
1201
|
+
dataItemKey: keyField2,
|
|
1202
|
+
textField: textField3,
|
|
1203
|
+
filterable,
|
|
1204
|
+
filter,
|
|
1205
|
+
virtual: pageSize3 ? {
|
|
1206
|
+
total: state.total,
|
|
1207
|
+
pageSize: pageSize3,
|
|
1208
|
+
skip: state.skip
|
|
1209
|
+
} : void 0,
|
|
1210
|
+
disabled,
|
|
1211
|
+
loading,
|
|
1212
|
+
className,
|
|
1213
|
+
onChange: handleChange,
|
|
1214
|
+
onFilterChange: handleFilterChange,
|
|
1215
|
+
onPageChange: handlePageChange
|
|
1216
|
+
}
|
|
1217
|
+
);
|
|
1218
|
+
};
|
|
1219
|
+
var SelectClient_default = SelectClient;
|
|
1220
|
+
|
|
1221
|
+
// src/components/Select/SelectServer.tsx
|
|
1222
|
+
import {
|
|
1223
|
+
ComboBox as ComboBox2
|
|
1224
|
+
} from "@progress/kendo-react-dropdowns";
|
|
1225
|
+
import { cloneElement as cloneElement4, useCallback, useEffect as useEffect7, useRef as useRef8, useState as useState5 } from "react";
|
|
1226
|
+
import { jsx as jsx19 } from "react/jsx-runtime";
|
|
1227
|
+
var textField = "ContactName";
|
|
1228
|
+
var emptyItem = { [textField]: "loading ...", CustomerID: 0 };
|
|
1229
|
+
var pageSize = 10;
|
|
1230
|
+
var loadingData = [];
|
|
1231
|
+
while (loadingData.length < pageSize) {
|
|
1232
|
+
loadingData.push(__spreadValues({}, emptyItem));
|
|
1233
|
+
}
|
|
1234
|
+
var SelectServer = ({
|
|
1235
|
+
data: dataProp,
|
|
1236
|
+
value: valueProp,
|
|
1237
|
+
keyField: keyField2 = "key",
|
|
1238
|
+
textField: textField3 = "text",
|
|
1239
|
+
placeholder,
|
|
1240
|
+
virtual,
|
|
1241
|
+
filterable,
|
|
1242
|
+
filter: filterProp = "",
|
|
1243
|
+
disabled,
|
|
1244
|
+
loading,
|
|
1245
|
+
className,
|
|
1246
|
+
onChange,
|
|
1247
|
+
onDataChange,
|
|
1248
|
+
onFilterChange,
|
|
1249
|
+
getData,
|
|
1250
|
+
renderItem
|
|
1251
|
+
}) => {
|
|
1252
|
+
var _a;
|
|
1253
|
+
const dataCaching = useRef8([]);
|
|
1254
|
+
const pendingRequest = useRef8();
|
|
1255
|
+
const requestStarted = useRef8(false);
|
|
1256
|
+
const emptyItem3 = { [keyField2]: 0, [textField3]: "loading ..." };
|
|
1257
|
+
const [loadingData3, setLoadingData] = useState5([]);
|
|
1258
|
+
const [data, setData] = useState5(dataProp.items);
|
|
1259
|
+
const [total, setTotal] = useState5(0);
|
|
1260
|
+
const [value, setValue] = useState5(valueProp);
|
|
1261
|
+
const [filter, setFilter] = useState5(filterProp);
|
|
1262
|
+
const pageSize3 = (_a = virtual == null ? void 0 : virtual.pageSize) != null ? _a : 10;
|
|
1263
|
+
const skipRef = useRef8(0);
|
|
1264
|
+
const resetCach = () => {
|
|
1265
|
+
dataCaching.current.length = 0;
|
|
1266
|
+
};
|
|
1267
|
+
const requestData = useCallback((state) => {
|
|
1268
|
+
const { skip } = state;
|
|
1269
|
+
if (requestStarted.current) {
|
|
1270
|
+
clearTimeout(pendingRequest.current);
|
|
1271
|
+
pendingRequest.current = setTimeout(() => {
|
|
1272
|
+
requestData(state);
|
|
1273
|
+
}, 50);
|
|
1274
|
+
return;
|
|
1275
|
+
}
|
|
1276
|
+
requestStarted.current = true;
|
|
1277
|
+
getData(state).then(({ items, total: total2 }) => {
|
|
1278
|
+
items.forEach((item, index) => {
|
|
1279
|
+
dataCaching.current[index + skip] = item;
|
|
1280
|
+
});
|
|
1281
|
+
if (skip === skipRef.current) {
|
|
1282
|
+
setData(items);
|
|
1283
|
+
setTotal(total2);
|
|
1284
|
+
onDataChange == null ? void 0 : onDataChange({ items, total: total2 });
|
|
1285
|
+
}
|
|
1286
|
+
requestStarted.current = false;
|
|
1287
|
+
}).catch(() => {
|
|
1288
|
+
requestStarted.current = false;
|
|
1289
|
+
});
|
|
1290
|
+
}, []);
|
|
1291
|
+
const handleFilterChange = useCallback((event) => {
|
|
1292
|
+
const filter2 = event.filter.value;
|
|
1293
|
+
if (filterProp !== void 0) {
|
|
1294
|
+
onFilterChange == null ? void 0 : onFilterChange(filter2);
|
|
1295
|
+
} else {
|
|
1296
|
+
setFilter(filter2);
|
|
1297
|
+
}
|
|
1298
|
+
resetCach();
|
|
1299
|
+
requestData({ skip: 0, filter: filter2 });
|
|
1300
|
+
setData(loadingData3);
|
|
1301
|
+
skipRef.current = 0;
|
|
1302
|
+
}, []);
|
|
1303
|
+
const shouldRequestData = useCallback((skip) => {
|
|
1304
|
+
for (let i = 0; i < pageSize3; i++) {
|
|
1305
|
+
if (!dataCaching.current[skip + i]) {
|
|
1306
|
+
return true;
|
|
1307
|
+
}
|
|
1308
|
+
}
|
|
1309
|
+
return false;
|
|
1310
|
+
}, []);
|
|
1311
|
+
const getCachedData = useCallback((skip) => {
|
|
1312
|
+
const data2 = [];
|
|
1313
|
+
for (let i = 0; i < pageSize3; i++) {
|
|
1314
|
+
data2.push(dataCaching.current[i + skip] || emptyItem3);
|
|
1315
|
+
}
|
|
1316
|
+
return data2;
|
|
1317
|
+
}, []);
|
|
1318
|
+
const pageChange = useCallback(
|
|
1319
|
+
(event) => {
|
|
1320
|
+
if (filter !== void 0) {
|
|
1321
|
+
const newSkip = event.page.skip;
|
|
1322
|
+
if (shouldRequestData(newSkip)) {
|
|
1323
|
+
requestData({ skip: newSkip, filter });
|
|
1324
|
+
}
|
|
1325
|
+
const data2 = getCachedData(newSkip);
|
|
1326
|
+
setData(data2);
|
|
1327
|
+
skipRef.current = newSkip;
|
|
1328
|
+
}
|
|
1329
|
+
},
|
|
1330
|
+
[getCachedData, requestData, shouldRequestData, filter]
|
|
1331
|
+
);
|
|
1332
|
+
const handleChange = useCallback((event) => {
|
|
1333
|
+
const value2 = event.target.value;
|
|
1334
|
+
if (value2 && value2[textField3] === emptyItem3[textField3]) {
|
|
1335
|
+
return;
|
|
1336
|
+
}
|
|
1337
|
+
if (valueProp !== void 0) {
|
|
1338
|
+
onChange(value2);
|
|
1339
|
+
} else {
|
|
1340
|
+
setValue(value2);
|
|
1341
|
+
}
|
|
1342
|
+
}, []);
|
|
1343
|
+
const handleItemRender = (li, itemProps) => {
|
|
1344
|
+
const itemChildren = renderItem == null ? void 0 : renderItem(itemProps.dataItem);
|
|
1345
|
+
if (!itemChildren)
|
|
1346
|
+
return cloneElement4(li, li.props);
|
|
1347
|
+
return cloneElement4(li, li.props, itemChildren);
|
|
1348
|
+
};
|
|
1349
|
+
useEffect7(() => {
|
|
1350
|
+
const pageSize4 = 10;
|
|
1351
|
+
const loadingData4 = [];
|
|
1352
|
+
while (loadingData4.length < pageSize4) {
|
|
1353
|
+
loadingData4.push(emptyItem3);
|
|
1354
|
+
}
|
|
1355
|
+
setLoadingData(loadingData4);
|
|
1356
|
+
}, []);
|
|
1357
|
+
useEffect7(() => {
|
|
1358
|
+
if (valueProp !== void 0) {
|
|
1359
|
+
setValue(valueProp);
|
|
1360
|
+
}
|
|
1361
|
+
}, [valueProp]);
|
|
1362
|
+
useEffect7(() => {
|
|
1363
|
+
if (filterProp !== void 0) {
|
|
1364
|
+
setFilter(filterProp);
|
|
1365
|
+
}
|
|
1366
|
+
}, [filterProp]);
|
|
1367
|
+
useEffect7(() => {
|
|
1368
|
+
requestData({ skip: 0, filter });
|
|
1369
|
+
return () => {
|
|
1370
|
+
resetCach();
|
|
1371
|
+
};
|
|
1372
|
+
}, [filter, requestData]);
|
|
1373
|
+
useEffect7(() => {
|
|
1374
|
+
setData(dataProp.items);
|
|
1375
|
+
}, [dataProp]);
|
|
1376
|
+
return /* @__PURE__ */ jsx19(
|
|
1377
|
+
ComboBox2,
|
|
1378
|
+
{
|
|
1379
|
+
data,
|
|
1380
|
+
value,
|
|
1381
|
+
placeholder,
|
|
1382
|
+
dataItemKey: keyField2,
|
|
1383
|
+
textField: textField3,
|
|
1384
|
+
filterable,
|
|
1385
|
+
onFilterChange: handleFilterChange,
|
|
1386
|
+
virtual: {
|
|
1387
|
+
pageSize: pageSize3,
|
|
1388
|
+
skip: skipRef.current,
|
|
1389
|
+
total
|
|
1390
|
+
},
|
|
1391
|
+
disabled,
|
|
1392
|
+
loading,
|
|
1393
|
+
className,
|
|
1394
|
+
onChange: handleChange,
|
|
1395
|
+
onPageChange: pageChange,
|
|
1396
|
+
itemRender: handleItemRender
|
|
1397
|
+
}
|
|
1398
|
+
);
|
|
1399
|
+
};
|
|
1400
|
+
var SelectServer_default = SelectServer;
|
|
1401
|
+
|
|
1402
|
+
// src/components/Select/Select.tsx
|
|
1403
|
+
import { jsx as jsx20 } from "react/jsx-runtime";
|
|
1404
|
+
var Select = (props) => {
|
|
1405
|
+
return props.filterMode === "client" ? /* @__PURE__ */ jsx20(SelectClient_default, __spreadValues({}, props)) : /* @__PURE__ */ jsx20(SelectServer_default, __spreadValues({}, props));
|
|
1406
|
+
};
|
|
1407
|
+
var Select_default = Select;
|
|
1408
|
+
|
|
1409
|
+
// src/components/MultiSelect/MultiSelectClient.tsx
|
|
1410
|
+
import { filterBy as filterBy2 } from "@progress/kendo-data-query";
|
|
1411
|
+
import {
|
|
1412
|
+
MultiSelect
|
|
1413
|
+
} from "@progress/kendo-react-dropdowns";
|
|
1414
|
+
import { useEffect as useEffect8, useRef as useRef9, useState as useState6 } from "react";
|
|
1415
|
+
import { jsx as jsx21 } from "react/jsx-runtime";
|
|
1416
|
+
var textField2 = "text";
|
|
1417
|
+
var keyField = "key";
|
|
1418
|
+
var emptyItem2 = { [textField2]: "loading ...", [keyField]: 0 };
|
|
1419
|
+
var pageSize2 = 10;
|
|
1420
|
+
var loadingData2 = [];
|
|
1421
|
+
while (loadingData2.length < pageSize2) {
|
|
1422
|
+
loadingData2.push(__spreadValues({}, emptyItem2));
|
|
1423
|
+
}
|
|
1424
|
+
var SelectClient2 = ({
|
|
1425
|
+
data: dataProp,
|
|
1426
|
+
value: valueProp,
|
|
1427
|
+
keyField: keyField2 = "key",
|
|
1428
|
+
textField: textField3 = "text",
|
|
1429
|
+
placeholder,
|
|
1430
|
+
virtual,
|
|
1431
|
+
filterable,
|
|
1432
|
+
filter: filterProp,
|
|
1433
|
+
disabled,
|
|
1434
|
+
loading,
|
|
1435
|
+
className,
|
|
1436
|
+
onChange,
|
|
1437
|
+
onFilterChange
|
|
1438
|
+
}) => {
|
|
1439
|
+
const [value, setValue] = useState6(valueProp);
|
|
1440
|
+
const [filter, setFilter] = useState6(filterProp);
|
|
1441
|
+
const handleChange = (event) => {
|
|
1442
|
+
onChange(event.target.value);
|
|
1443
|
+
};
|
|
1444
|
+
const pageSize3 = virtual == null ? void 0 : virtual.pageSize;
|
|
1445
|
+
const filteredData = useRef9([]);
|
|
1446
|
+
const [state, setState] = useState6({
|
|
1447
|
+
skip: 0,
|
|
1448
|
+
total: dataProp.total,
|
|
1449
|
+
subsetData: dataProp.items.slice(0, pageSize3)
|
|
1450
|
+
});
|
|
1451
|
+
const handleFilterChange = (event) => {
|
|
1452
|
+
if (pageSize3) {
|
|
1453
|
+
filteredData.current = filterBy2(dataProp.items.slice(), event.filter);
|
|
1454
|
+
const data = filteredData.current.slice(0, pageSize3);
|
|
1455
|
+
setState({
|
|
1456
|
+
subsetData: data,
|
|
1457
|
+
skip: 0,
|
|
1458
|
+
total: filteredData.current.length
|
|
1459
|
+
});
|
|
1460
|
+
}
|
|
1461
|
+
onFilterChange == null ? void 0 : onFilterChange(event.filter.value);
|
|
1462
|
+
};
|
|
1463
|
+
const pageChange = (event) => {
|
|
1464
|
+
if (pageSize3) {
|
|
1465
|
+
const skip = event.page.skip;
|
|
1466
|
+
const take = event.page.take;
|
|
1467
|
+
const newSubsetData = filteredData.current.slice(skip, skip + take);
|
|
1468
|
+
setState(__spreadProps(__spreadValues({}, state), { subsetData: newSubsetData, skip }));
|
|
1469
|
+
}
|
|
1470
|
+
};
|
|
1471
|
+
useEffect8(() => {
|
|
1472
|
+
setValue(valueProp);
|
|
1473
|
+
}, [valueProp]);
|
|
1474
|
+
useEffect8(() => {
|
|
1475
|
+
setFilter(filterProp);
|
|
1476
|
+
}, [filterProp]);
|
|
1477
|
+
useEffect8(() => {
|
|
1478
|
+
if (pageSize3) {
|
|
1479
|
+
filteredData.current = dataProp.items.slice();
|
|
1480
|
+
}
|
|
1481
|
+
}, [dataProp]);
|
|
1482
|
+
return /* @__PURE__ */ jsx21(
|
|
1483
|
+
MultiSelect,
|
|
1484
|
+
{
|
|
1485
|
+
value,
|
|
1486
|
+
data: pageSize3 ? state.subsetData : dataProp.items,
|
|
1487
|
+
placeholder,
|
|
1488
|
+
dataItemKey: keyField2,
|
|
1489
|
+
textField: textField3,
|
|
1490
|
+
filterable,
|
|
1491
|
+
filter,
|
|
1492
|
+
virtual: pageSize3 ? {
|
|
1493
|
+
total: state.total,
|
|
1494
|
+
pageSize: pageSize3,
|
|
1495
|
+
skip: state.skip
|
|
1496
|
+
} : void 0,
|
|
1497
|
+
disabled,
|
|
1498
|
+
loading,
|
|
1499
|
+
className,
|
|
1500
|
+
onChange: handleChange,
|
|
1501
|
+
onFilterChange: handleFilterChange,
|
|
1502
|
+
onPageChange: pageChange
|
|
1503
|
+
}
|
|
1504
|
+
);
|
|
1505
|
+
};
|
|
1506
|
+
var MultiSelectClient_default = SelectClient2;
|
|
1507
|
+
|
|
1508
|
+
// src/components/MultiSelect/MultiSelectServer.tsx
|
|
1509
|
+
import {
|
|
1510
|
+
MultiSelect as MultiSelect2
|
|
1511
|
+
} from "@progress/kendo-react-dropdowns";
|
|
1512
|
+
import { useCallback as useCallback2, useEffect as useEffect9, useRef as useRef10, useState as useState7 } from "react";
|
|
1513
|
+
import { jsx as jsx22 } from "react/jsx-runtime";
|
|
1514
|
+
var MultiSelectServer = ({
|
|
1515
|
+
data: dataProp,
|
|
1516
|
+
value: valueProp,
|
|
1517
|
+
keyField: keyField2 = "key",
|
|
1518
|
+
textField: textField3 = "text",
|
|
1519
|
+
placeholder,
|
|
1520
|
+
virtual,
|
|
1521
|
+
filterable,
|
|
1522
|
+
filter: filterProp = "",
|
|
1523
|
+
disabled,
|
|
1524
|
+
loading,
|
|
1525
|
+
className,
|
|
1526
|
+
onDataChange,
|
|
1527
|
+
onChange,
|
|
1528
|
+
onFilterChange,
|
|
1529
|
+
getData
|
|
1530
|
+
}) => {
|
|
1531
|
+
var _a;
|
|
1532
|
+
const dataCaching = useRef10([]);
|
|
1533
|
+
const pendingRequest = useRef10();
|
|
1534
|
+
const requestStarted = useRef10(false);
|
|
1535
|
+
const emptyItem3 = { [keyField2]: 0, [textField3]: "loading ..." };
|
|
1536
|
+
const [loadingData3, setLoadingData] = useState7([]);
|
|
1537
|
+
const [data, setData] = useState7(dataProp.items);
|
|
1538
|
+
const [total, setTotal] = useState7(0);
|
|
1539
|
+
const [value, setValue] = useState7(valueProp);
|
|
1540
|
+
const [filter, setFilter] = useState7(filterProp);
|
|
1541
|
+
const pageSize3 = (_a = virtual == null ? void 0 : virtual.pageSize) != null ? _a : 10;
|
|
1542
|
+
const skipRef = useRef10(0);
|
|
1543
|
+
const resetCach = () => {
|
|
1544
|
+
dataCaching.current.length = 0;
|
|
1545
|
+
};
|
|
1546
|
+
const requestData = useCallback2((state) => {
|
|
1547
|
+
if (requestStarted.current) {
|
|
1548
|
+
clearTimeout(pendingRequest.current);
|
|
1549
|
+
pendingRequest.current = setTimeout(() => {
|
|
1550
|
+
requestData(state);
|
|
1551
|
+
}, 50);
|
|
1552
|
+
return;
|
|
1553
|
+
}
|
|
1554
|
+
requestStarted.current = true;
|
|
1555
|
+
getData(state).then(({ items, total: total2 }) => {
|
|
1556
|
+
const { skip } = state;
|
|
1557
|
+
items.forEach((item, index) => {
|
|
1558
|
+
dataCaching.current[index + skip] = item;
|
|
1559
|
+
});
|
|
1560
|
+
if (skip === skipRef.current) {
|
|
1561
|
+
setData(items);
|
|
1562
|
+
setTotal(total2);
|
|
1563
|
+
onDataChange == null ? void 0 : onDataChange({ items, total: total2 });
|
|
1564
|
+
}
|
|
1565
|
+
requestStarted.current = false;
|
|
1566
|
+
}).catch(() => {
|
|
1567
|
+
requestStarted.current = false;
|
|
1568
|
+
});
|
|
1569
|
+
}, []);
|
|
1570
|
+
const handleFilterChange = useCallback2((event) => {
|
|
1571
|
+
const filter2 = event.filter.value;
|
|
1572
|
+
resetCach();
|
|
1573
|
+
requestData({ skip: 0, filter: filter2 });
|
|
1574
|
+
setData(loadingData3);
|
|
1575
|
+
skipRef.current = 0;
|
|
1576
|
+
setFilter(filter2);
|
|
1577
|
+
onFilterChange == null ? void 0 : onFilterChange(filter2);
|
|
1578
|
+
}, []);
|
|
1579
|
+
const shouldRequestData = useCallback2((skip) => {
|
|
1580
|
+
for (let i = 0; i < pageSize3; i++) {
|
|
1581
|
+
if (!dataCaching.current[skip + i]) {
|
|
1582
|
+
return true;
|
|
1583
|
+
}
|
|
1584
|
+
}
|
|
1585
|
+
return false;
|
|
1586
|
+
}, []);
|
|
1587
|
+
const getCachedData = useCallback2((skip) => {
|
|
1588
|
+
const data2 = [];
|
|
1589
|
+
for (let i = 0; i < pageSize3; i++) {
|
|
1590
|
+
data2.push(dataCaching.current[i + skip] || emptyItem3);
|
|
1591
|
+
}
|
|
1592
|
+
return data2;
|
|
1593
|
+
}, []);
|
|
1594
|
+
const pageChange = useCallback2(
|
|
1595
|
+
(event) => {
|
|
1596
|
+
const newSkip = event.page.skip;
|
|
1597
|
+
if (shouldRequestData(newSkip)) {
|
|
1598
|
+
requestData({ skip: newSkip, filter });
|
|
1599
|
+
}
|
|
1600
|
+
const data2 = getCachedData(newSkip);
|
|
1601
|
+
setData(data2);
|
|
1602
|
+
skipRef.current = newSkip;
|
|
1603
|
+
},
|
|
1604
|
+
[getCachedData, requestData, shouldRequestData, filter]
|
|
1605
|
+
);
|
|
1606
|
+
const handleChange = useCallback2((event) => {
|
|
1607
|
+
const value2 = event.target.value;
|
|
1608
|
+
if (value2 && value2[textField3] === emptyItem3[textField3]) {
|
|
1609
|
+
return;
|
|
1610
|
+
}
|
|
1611
|
+
setValue(value2);
|
|
1612
|
+
onChange(value2);
|
|
1613
|
+
}, []);
|
|
1614
|
+
useEffect9(() => {
|
|
1615
|
+
const pageSize4 = 10;
|
|
1616
|
+
const loadingData4 = [];
|
|
1617
|
+
while (loadingData4.length < pageSize4) {
|
|
1618
|
+
loadingData4.push(emptyItem3);
|
|
1619
|
+
}
|
|
1620
|
+
setLoadingData(loadingData4);
|
|
1621
|
+
}, []);
|
|
1622
|
+
useEffect9(() => {
|
|
1623
|
+
setData(dataProp.items);
|
|
1624
|
+
}, [dataProp]);
|
|
1625
|
+
useEffect9(() => {
|
|
1626
|
+
setValue(valueProp);
|
|
1627
|
+
}, [valueProp]);
|
|
1628
|
+
useEffect9(() => {
|
|
1629
|
+
setFilter(filterProp);
|
|
1630
|
+
}, [filterProp]);
|
|
1631
|
+
useEffect9(() => {
|
|
1632
|
+
requestData({ skip: 0, filter });
|
|
1633
|
+
return () => {
|
|
1634
|
+
resetCach();
|
|
1635
|
+
};
|
|
1636
|
+
}, [filter, requestData]);
|
|
1637
|
+
return /* @__PURE__ */ jsx22(
|
|
1638
|
+
MultiSelect2,
|
|
1639
|
+
{
|
|
1640
|
+
data,
|
|
1641
|
+
value,
|
|
1642
|
+
placeholder,
|
|
1643
|
+
dataItemKey: keyField2,
|
|
1644
|
+
textField: textField3,
|
|
1645
|
+
filterable,
|
|
1646
|
+
onFilterChange: handleFilterChange,
|
|
1647
|
+
virtual: {
|
|
1648
|
+
pageSize: pageSize3,
|
|
1649
|
+
skip: skipRef.current,
|
|
1650
|
+
total
|
|
1651
|
+
},
|
|
1652
|
+
disabled,
|
|
1653
|
+
loading,
|
|
1654
|
+
className,
|
|
1655
|
+
onChange: handleChange,
|
|
1656
|
+
onPageChange: pageChange
|
|
1657
|
+
}
|
|
1658
|
+
);
|
|
1659
|
+
};
|
|
1660
|
+
var MultiSelectServer_default = MultiSelectServer;
|
|
1661
|
+
|
|
1662
|
+
// src/components/MultiSelect/MultiSelect.tsx
|
|
1663
|
+
import { jsx as jsx23 } from "react/jsx-runtime";
|
|
1664
|
+
var MultiSelect3 = (props) => {
|
|
1665
|
+
return props.filterMode === "client" ? /* @__PURE__ */ jsx23(MultiSelectClient_default, __spreadValues({}, props)) : /* @__PURE__ */ jsx23(MultiSelectServer_default, __spreadValues({}, props));
|
|
1666
|
+
};
|
|
1667
|
+
var MultiSelect_default = MultiSelect3;
|
|
1668
|
+
|
|
1086
1669
|
// src/hooks/useLocalStorage.tsx
|
|
1087
|
-
import { useCallback, useEffect as
|
|
1670
|
+
import { useCallback as useCallback3, useEffect as useEffect11, useState as useState8 } from "react";
|
|
1088
1671
|
|
|
1089
1672
|
// src/hooks/useEventListener.tsx
|
|
1090
|
-
import { useRef as
|
|
1673
|
+
import { useRef as useRef11 } from "react";
|
|
1091
1674
|
|
|
1092
1675
|
// src/hooks/useIsomorphicLayoutEffect.tsx
|
|
1093
|
-
import { useEffect as
|
|
1094
|
-
var useIsomorphicLayoutEffect = typeof window !== "undefined" ? useLayoutEffect :
|
|
1676
|
+
import { useEffect as useEffect10, useLayoutEffect } from "react";
|
|
1677
|
+
var useIsomorphicLayoutEffect = typeof window !== "undefined" ? useLayoutEffect : useEffect10;
|
|
1095
1678
|
var useIsomorphicLayoutEffect_default = useIsomorphicLayoutEffect;
|
|
1096
1679
|
|
|
1097
1680
|
// src/hooks/useEventListener.tsx
|
|
1098
1681
|
function useEventListener(handler) {
|
|
1099
|
-
const savedHandler =
|
|
1682
|
+
const savedHandler = useRef11(handler);
|
|
1100
1683
|
useIsomorphicLayoutEffect_default(() => {
|
|
1101
1684
|
savedHandler.current = handler;
|
|
1102
1685
|
}, [handler]);
|
|
@@ -1105,7 +1688,7 @@ var useEventListener_default = useEventListener;
|
|
|
1105
1688
|
|
|
1106
1689
|
// src/hooks/useLocalStorage.tsx
|
|
1107
1690
|
function useLocalStorage(key, initialValue) {
|
|
1108
|
-
const readValue =
|
|
1691
|
+
const readValue = useCallback3(() => {
|
|
1109
1692
|
if (typeof window === "undefined") {
|
|
1110
1693
|
return initialValue;
|
|
1111
1694
|
}
|
|
@@ -1117,8 +1700,8 @@ function useLocalStorage(key, initialValue) {
|
|
|
1117
1700
|
return initialValue;
|
|
1118
1701
|
}
|
|
1119
1702
|
}, [initialValue, key]);
|
|
1120
|
-
const [storedValue, setStoredValue] =
|
|
1121
|
-
const setValue =
|
|
1703
|
+
const [storedValue, setStoredValue] = useState8(readValue);
|
|
1704
|
+
const setValue = useCallback3(
|
|
1122
1705
|
(value) => {
|
|
1123
1706
|
if (typeof window == "undefined") {
|
|
1124
1707
|
console.warn(`Tried setting localStorage key \u201C${key}\u201D even though environment is not a client`);
|
|
@@ -1134,10 +1717,10 @@ function useLocalStorage(key, initialValue) {
|
|
|
1134
1717
|
},
|
|
1135
1718
|
[key, storedValue]
|
|
1136
1719
|
);
|
|
1137
|
-
|
|
1720
|
+
useEffect11(() => {
|
|
1138
1721
|
setStoredValue(readValue());
|
|
1139
1722
|
}, []);
|
|
1140
|
-
const handleStorageChange =
|
|
1723
|
+
const handleStorageChange = useCallback3(() => {
|
|
1141
1724
|
setStoredValue(readValue());
|
|
1142
1725
|
}, [readValue]);
|
|
1143
1726
|
useEventListener_default("storage", handleStorageChange);
|
|
@@ -1148,28 +1731,27 @@ function parseJSON(value) {
|
|
|
1148
1731
|
try {
|
|
1149
1732
|
return value === "undefined" ? void 0 : JSON.parse(value != null ? value : "");
|
|
1150
1733
|
} catch (e) {
|
|
1151
|
-
console.log("parsing error on", { value });
|
|
1152
1734
|
return void 0;
|
|
1153
1735
|
}
|
|
1154
1736
|
}
|
|
1155
1737
|
|
|
1156
1738
|
// src/hooks/usePrevious.tsx
|
|
1157
|
-
import { useEffect as
|
|
1739
|
+
import { useEffect as useEffect12, useRef as useRef12 } from "react";
|
|
1158
1740
|
var usePrevious = (value) => {
|
|
1159
|
-
const ref =
|
|
1160
|
-
|
|
1741
|
+
const ref = useRef12();
|
|
1742
|
+
useEffect12(() => {
|
|
1161
1743
|
ref.current = value;
|
|
1162
1744
|
});
|
|
1163
1745
|
return ref.current;
|
|
1164
1746
|
};
|
|
1165
1747
|
|
|
1166
1748
|
// src/hooks/useStep.tsx
|
|
1167
|
-
import { useCallback as
|
|
1749
|
+
import { useCallback as useCallback4, useMemo as useMemo4, useState as useState9 } from "react";
|
|
1168
1750
|
var useStep = (maxStep) => {
|
|
1169
|
-
const [currentStep, setCurrentStep] =
|
|
1751
|
+
const [currentStep, setCurrentStep] = useState9(1);
|
|
1170
1752
|
const canGoToNextStep = useMemo4(() => currentStep + 1 <= maxStep, [currentStep, maxStep]);
|
|
1171
1753
|
const canGoToPrevStep = useMemo4(() => currentStep - 1 >= 1, [currentStep]);
|
|
1172
|
-
const setStep =
|
|
1754
|
+
const setStep = useCallback4(
|
|
1173
1755
|
(step) => {
|
|
1174
1756
|
const newStep = step instanceof Function ? step(currentStep) : step;
|
|
1175
1757
|
if (newStep >= 1 && newStep <= maxStep) {
|
|
@@ -1180,17 +1762,17 @@ var useStep = (maxStep) => {
|
|
|
1180
1762
|
},
|
|
1181
1763
|
[maxStep, currentStep]
|
|
1182
1764
|
);
|
|
1183
|
-
const goToNextStep =
|
|
1765
|
+
const goToNextStep = useCallback4(() => {
|
|
1184
1766
|
if (canGoToNextStep) {
|
|
1185
1767
|
setCurrentStep((step) => step + 1);
|
|
1186
1768
|
}
|
|
1187
1769
|
}, [canGoToNextStep]);
|
|
1188
|
-
const goToPrevStep =
|
|
1770
|
+
const goToPrevStep = useCallback4(() => {
|
|
1189
1771
|
if (canGoToPrevStep) {
|
|
1190
1772
|
setCurrentStep((step) => step - 1);
|
|
1191
1773
|
}
|
|
1192
1774
|
}, [canGoToPrevStep]);
|
|
1193
|
-
const reset =
|
|
1775
|
+
const reset = useCallback4(() => {
|
|
1194
1776
|
setCurrentStep(1);
|
|
1195
1777
|
}, []);
|
|
1196
1778
|
return [
|
|
@@ -1214,6 +1796,7 @@ export {
|
|
|
1214
1796
|
CollapseContent_default as CollapseContent,
|
|
1215
1797
|
CollapseContext_default as CollapseContext,
|
|
1216
1798
|
CollapseTrigger_default as CollapseTrigger,
|
|
1799
|
+
Drawer_default as Drawer,
|
|
1217
1800
|
Icon_default as Icon,
|
|
1218
1801
|
Menu_default as Menu,
|
|
1219
1802
|
MenuContext_default as MenuContext,
|
|
@@ -1221,7 +1804,9 @@ export {
|
|
|
1221
1804
|
MenuItem_default as MenuItem,
|
|
1222
1805
|
MenuSubmenu_default as MenuSubmenu,
|
|
1223
1806
|
MenuValueContext_default as MenuValueContext,
|
|
1807
|
+
MultiSelect_default as MultiSelect,
|
|
1224
1808
|
Portal_default as Portal,
|
|
1809
|
+
Select_default as Select,
|
|
1225
1810
|
Tab,
|
|
1226
1811
|
Tabs,
|
|
1227
1812
|
Toolbar_default as Toolbar,
|