@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.js CHANGED
@@ -67,6 +67,7 @@ __export(src_exports, {
67
67
  CollapseContent: () => CollapseContent_default,
68
68
  CollapseContext: () => CollapseContext_default,
69
69
  CollapseTrigger: () => CollapseTrigger_default,
70
+ Drawer: () => Drawer_default,
70
71
  Icon: () => Icon_default,
71
72
  Menu: () => Menu_default,
72
73
  MenuContext: () => MenuContext_default,
@@ -74,7 +75,9 @@ __export(src_exports, {
74
75
  MenuItem: () => MenuItem_default,
75
76
  MenuSubmenu: () => MenuSubmenu_default,
76
77
  MenuValueContext: () => MenuValueContext_default,
78
+ MultiSelect: () => MultiSelect_default,
77
79
  Portal: () => Portal_default,
80
+ Select: () => Select_default,
78
81
  Tab: () => Tab,
79
82
  Tabs: () => Tabs,
80
83
  Toolbar: () => Toolbar_default,
@@ -488,15 +491,47 @@ var CollapseTrigger = (0, import_react13.forwardRef)(({ children }, ref) => {
488
491
  });
489
492
  var CollapseTrigger_default = CollapseTrigger;
490
493
 
494
+ // src/components/Drawer/Drawer.tsx
495
+ var import_clsx8 = __toESM(require("clsx"));
496
+ var import_react14 = require("react");
497
+ var import_react_merge_refs2 = require("react-merge-refs");
498
+ var import_jsx_runtime11 = require("react/jsx-runtime");
499
+ var Drawer = (0, import_react14.forwardRef)((props, ref) => {
500
+ const { children, className, isOpen, size = "md", position = "left", onClose } = props;
501
+ const nodeRef = (0, import_react14.useRef)(null);
502
+ const handleClose = () => {
503
+ onClose();
504
+ };
505
+ return /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(Backdrop_default, { isOpen, onClose: handleClose, children: /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(Transition_default, { nodeRef, isOpen, name: `${PREFIX_CLS}drawer`, enter: 600, leave: 300, unmountOnExit: true, children: /* @__PURE__ */ (0, import_jsx_runtime11.jsxs)(
506
+ "div",
507
+ {
508
+ ref: (0, import_react_merge_refs2.mergeRefs)([ref, nodeRef]),
509
+ className: (0, import_clsx8.default)(
510
+ `${PREFIX_CLS}drawer`,
511
+ {
512
+ [`${PREFIX_CLS}drawer--${size}`]: size,
513
+ [`${PREFIX_CLS}drawer--${position}`]: position
514
+ },
515
+ className
516
+ ),
517
+ children: [
518
+ /* @__PURE__ */ (0, import_jsx_runtime11.jsx)("div", { className: `${PREFIX_CLS}drawer__overlay` }),
519
+ children
520
+ ]
521
+ }
522
+ ) }) });
523
+ });
524
+ var Drawer_default = Drawer;
525
+
491
526
  // src/components/Menu/Menu.tsx
492
- var import_clsx11 = __toESM(require("clsx"));
493
- var import_react19 = require("react");
527
+ var import_clsx12 = __toESM(require("clsx"));
528
+ var import_react20 = require("react");
494
529
 
495
530
  // src/components/Menu/MenuContext.tsx
496
- var import_react14 = require("react");
497
- var MenuContext = (0, import_react14.createContext)(null);
531
+ var import_react15 = require("react");
532
+ var MenuContext = (0, import_react15.createContext)(null);
498
533
  var useMenu = () => {
499
- const context = (0, import_react14.useContext)(MenuContext);
534
+ const context = (0, import_react15.useContext)(MenuContext);
500
535
  if (!context) {
501
536
  throw new Error("`useMenu` must be used within a `<Menu />`");
502
537
  }
@@ -505,18 +540,18 @@ var useMenu = () => {
505
540
  var MenuContext_default = MenuContext;
506
541
 
507
542
  // src/components/Menu/MenuGroup.tsx
508
- var import_clsx10 = __toESM(require("clsx"));
509
- var import_react18 = require("react");
543
+ var import_clsx11 = __toESM(require("clsx"));
544
+ var import_react19 = require("react");
510
545
 
511
546
  // src/components/Menu/MenuItem.tsx
512
- var import_clsx8 = __toESM(require("clsx"));
513
- var import_react16 = require("react");
547
+ var import_clsx9 = __toESM(require("clsx"));
548
+ var import_react17 = require("react");
514
549
 
515
550
  // src/components/Menu/MenuValueContext.tsx
516
- var import_react15 = require("react");
517
- var MenuValueContext = (0, import_react15.createContext)([]);
551
+ var import_react16 = require("react");
552
+ var MenuValueContext = (0, import_react16.createContext)([]);
518
553
  var useMenuItemValue = () => {
519
- const context = (0, import_react15.useContext)(MenuValueContext);
554
+ const context = (0, import_react16.useContext)(MenuValueContext);
520
555
  if (!context) {
521
556
  throw new Error("`useMenuValue` must be used within a `<MenuValueContext.Provider />`");
522
557
  }
@@ -525,11 +560,11 @@ var useMenuItemValue = () => {
525
560
  var MenuValueContext_default = MenuValueContext;
526
561
 
527
562
  // src/components/Menu/MenuItem.tsx
528
- var import_jsx_runtime11 = require("react/jsx-runtime");
529
- var MenuItem = (0, import_react16.forwardRef)((props, ref) => {
563
+ var import_jsx_runtime12 = require("react/jsx-runtime");
564
+ var MenuItem = (0, import_react17.forwardRef)((props, ref) => {
530
565
  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"]);
531
566
  const { value: menuValue, originalValue, navMode, onChange, onOpen, onItemSelect } = useMenu();
532
- const values = (0, import_react16.useContext)(MenuValueContext_default);
567
+ const values = (0, import_react17.useContext)(MenuValueContext_default);
533
568
  const mergedValues = [...values, value];
534
569
  const handleClick = (event) => {
535
570
  if (value !== void 0) {
@@ -538,17 +573,17 @@ var MenuItem = (0, import_react16.forwardRef)((props, ref) => {
538
573
  onClick == null ? void 0 : onClick(event);
539
574
  onItemSelect == null ? void 0 : onItemSelect(props);
540
575
  };
541
- (0, import_react16.useEffect)(() => {
576
+ (0, import_react17.useEffect)(() => {
542
577
  if (navMode === "automatic" && originalValue.length > 0 && originalValue[originalValue.length - 1] === value) {
543
578
  onOpen(values);
544
579
  onChange(mergedValues);
545
580
  }
546
581
  }, [value, originalValue, navMode]);
547
- return /* @__PURE__ */ (0, import_jsx_runtime11.jsxs)(
582
+ return /* @__PURE__ */ (0, import_jsx_runtime12.jsxs)(
548
583
  Component,
549
584
  __spreadProps(__spreadValues({
550
585
  ref,
551
- className: (0, import_clsx8.default)(
586
+ className: (0, import_clsx9.default)(
552
587
  `${PREFIX_CLS}menu-item`,
553
588
  {
554
589
  [`${PREFIX_CLS}menu-item--selected`]: menuValue.includes(value),
@@ -562,9 +597,9 @@ var MenuItem = (0, import_react16.forwardRef)((props, ref) => {
562
597
  onClick: handleClick
563
598
  }, rest), {
564
599
  children: [
565
- /* @__PURE__ */ (0, import_jsx_runtime11.jsx)("div", { className: `${PREFIX_CLS}overlay`, children: /* @__PURE__ */ (0, import_jsx_runtime11.jsx)("div", { className: `${PREFIX_CLS}overlay__surface` }) }),
566
- icon && /* @__PURE__ */ (0, import_jsx_runtime11.jsx)("div", { className: `${PREFIX_CLS}menu-item__icon`, children: icon }),
567
- /* @__PURE__ */ (0, import_jsx_runtime11.jsx)("div", { className: `${PREFIX_CLS}menu-item__content`, children: /* @__PURE__ */ (0, import_jsx_runtime11.jsx)("span", { className: `${PREFIX_CLS}menu-item__title`, children: title }) })
600
+ /* @__PURE__ */ (0, import_jsx_runtime12.jsx)("div", { className: `${PREFIX_CLS}overlay`, children: /* @__PURE__ */ (0, import_jsx_runtime12.jsx)("div", { className: `${PREFIX_CLS}overlay__surface` }) }),
601
+ icon && /* @__PURE__ */ (0, import_jsx_runtime12.jsx)("div", { className: `${PREFIX_CLS}menu-item__icon`, children: icon }),
602
+ /* @__PURE__ */ (0, import_jsx_runtime12.jsx)("div", { className: `${PREFIX_CLS}menu-item__content`, children: /* @__PURE__ */ (0, import_jsx_runtime12.jsx)("span", { className: `${PREFIX_CLS}menu-item__title`, children: title }) })
568
603
  ]
569
604
  })
570
605
  );
@@ -573,8 +608,8 @@ MenuItem.displayName = "MenuItem";
573
608
  var MenuItem_default = MenuItem;
574
609
 
575
610
  // src/components/Menu/MenuSubmenu.tsx
576
- var import_clsx9 = __toESM(require("clsx"));
577
- var import_react17 = require("react");
611
+ var import_clsx10 = __toESM(require("clsx"));
612
+ var import_react18 = require("react");
578
613
 
579
614
  // src/components/Menu/utils.ts
580
615
  var getOpenValuesByPathname = (pathname) => {
@@ -600,7 +635,7 @@ var addOrRemoveValueInArray = (array, value) => {
600
635
  };
601
636
 
602
637
  // src/components/Menu/MenuSubmenu.tsx
603
- var import_jsx_runtime12 = require("react/jsx-runtime");
638
+ var import_jsx_runtime13 = require("react/jsx-runtime");
604
639
  var MenuSubmenu = (_a) => {
605
640
  var _b = _a, {
606
641
  children,
@@ -624,13 +659,13 @@ var MenuSubmenu = (_a) => {
624
659
  "onClick"
625
660
  ]);
626
661
  const { value: menuValue, openValues, expandMode, onOpen } = useMenu();
627
- const values = (0, import_react17.useContext)(MenuValueContext_default);
662
+ const values = (0, import_react18.useContext)(MenuValueContext_default);
628
663
  const isOpen = openValues.includes(value);
629
664
  const mergedValues = [...values, value];
630
- const content = (0, import_react17.useMemo)(() => {
665
+ const content = (0, import_react18.useMemo)(() => {
631
666
  return items == null ? void 0 : items.map((_a2, index) => {
632
667
  var _b2 = _a2, { type } = _b2, item = __objRest(_b2, ["type"]);
633
- return type === "item" ? /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(MenuItem_default, __spreadValues({ level: level !== void 0 ? level + 1 : void 0 }, item), index) : type === "submenu" ? /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(MenuSubmenu, __spreadValues({ level: level !== void 0 ? level + 1 : void 0 }, item), index) : type === "group" ? /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(MenuGroup_default, __spreadValues({ level: level !== void 0 ? level + 1 : void 0 }, item), index) : /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(MenuItem_default, __spreadValues({ level: level !== void 0 ? level + 1 : void 0 }, item), index);
668
+ return type === "item" ? /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(MenuItem_default, __spreadValues({ level: level !== void 0 ? level + 1 : void 0 }, item), index) : type === "submenu" ? /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(MenuSubmenu, __spreadValues({ level: level !== void 0 ? level + 1 : void 0 }, item), index) : type === "group" ? /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(MenuGroup_default, __spreadValues({ level: level !== void 0 ? level + 1 : void 0 }, item), index) : /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(MenuItem_default, __spreadValues({ level: level !== void 0 ? level + 1 : void 0 }, item), index);
634
669
  });
635
670
  }, [items]);
636
671
  const handleClick = (event) => {
@@ -648,11 +683,11 @@ var MenuSubmenu = (_a) => {
648
683
  }
649
684
  onClick == null ? void 0 : onClick(event);
650
685
  };
651
- return /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(MenuValueContext_default.Provider, { value: mergedValues, children: /* @__PURE__ */ (0, import_jsx_runtime12.jsx)("div", { className: (0, import_clsx9.default)(`${PREFIX_CLS}menu-submenu`), children: /* @__PURE__ */ (0, import_jsx_runtime12.jsxs)(Collapse_default, { isOpen, children: [
652
- /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(CollapseTrigger_default, { children: /* @__PURE__ */ (0, import_jsx_runtime12.jsxs)(
686
+ return /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(MenuValueContext_default.Provider, { value: mergedValues, children: /* @__PURE__ */ (0, import_jsx_runtime13.jsx)("div", { className: (0, import_clsx10.default)(`${PREFIX_CLS}menu-submenu`), children: /* @__PURE__ */ (0, import_jsx_runtime13.jsxs)(Collapse_default, { isOpen, children: [
687
+ /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(CollapseTrigger_default, { children: /* @__PURE__ */ (0, import_jsx_runtime13.jsxs)(
653
688
  "div",
654
689
  __spreadProps(__spreadValues({
655
- className: (0, import_clsx9.default)(
690
+ className: (0, import_clsx10.default)(
656
691
  `${PREFIX_CLS}menu-item`,
657
692
  {
658
693
  [`${PREFIX_CLS}menu-item--selected`]: menuValue.includes(value) || items && mergedValues.includes(menuValue)
@@ -665,17 +700,17 @@ var MenuSubmenu = (_a) => {
665
700
  onClick: handleClick
666
701
  }, rest), {
667
702
  children: [
668
- /* @__PURE__ */ (0, import_jsx_runtime12.jsx)("div", { className: `${PREFIX_CLS}overlay`, children: /* @__PURE__ */ (0, import_jsx_runtime12.jsx)("div", { className: `${PREFIX_CLS}overlay__surface` }) }),
669
- icon && /* @__PURE__ */ (0, import_jsx_runtime12.jsx)("div", { className: `${PREFIX_CLS}menu-item__icon`, children: icon }),
670
- /* @__PURE__ */ (0, import_jsx_runtime12.jsx)("div", { className: `${PREFIX_CLS}menu-item__content`, children: /* @__PURE__ */ (0, import_jsx_runtime12.jsx)("span", { className: `${PREFIX_CLS}menu-item__title`, children: title }) }),
671
- /* @__PURE__ */ (0, import_jsx_runtime12.jsx)("div", { className: `${PREFIX_CLS}menu-item__icon`, children: isOpen ? /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(ChevronUpIcon_default, { className: `${PREFIX_CLS}icon` }) : /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(ChevronDownIcon_default, { className: `${PREFIX_CLS}icon` }) })
703
+ /* @__PURE__ */ (0, import_jsx_runtime13.jsx)("div", { className: `${PREFIX_CLS}overlay`, children: /* @__PURE__ */ (0, import_jsx_runtime13.jsx)("div", { className: `${PREFIX_CLS}overlay__surface` }) }),
704
+ icon && /* @__PURE__ */ (0, import_jsx_runtime13.jsx)("div", { className: `${PREFIX_CLS}menu-item__icon`, children: icon }),
705
+ /* @__PURE__ */ (0, import_jsx_runtime13.jsx)("div", { className: `${PREFIX_CLS}menu-item__content`, children: /* @__PURE__ */ (0, import_jsx_runtime13.jsx)("span", { className: `${PREFIX_CLS}menu-item__title`, children: title }) }),
706
+ /* @__PURE__ */ (0, import_jsx_runtime13.jsx)("div", { className: `${PREFIX_CLS}menu-item__icon`, children: isOpen ? /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(ChevronUpIcon_default, { className: `${PREFIX_CLS}icon` }) : /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(ChevronDownIcon_default, { className: `${PREFIX_CLS}icon` }) })
672
707
  ]
673
708
  })
674
709
  ) }),
675
- /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(CollapseContent_default, { children: /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(
710
+ /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(CollapseContent_default, { children: /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(
676
711
  "ul",
677
712
  {
678
- className: (0, import_clsx9.default)(`${PREFIX_CLS}menu`, {
713
+ className: (0, import_clsx10.default)(`${PREFIX_CLS}menu`, {
679
714
  [`${PREFIX_CLS}menu-open`]: !isOpen
680
715
  }),
681
716
  children: content || children
@@ -686,7 +721,7 @@ var MenuSubmenu = (_a) => {
686
721
  var MenuSubmenu_default = MenuSubmenu;
687
722
 
688
723
  // src/components/Menu/MenuGroup.tsx
689
- var import_jsx_runtime13 = require("react/jsx-runtime");
724
+ var import_jsx_runtime14 = require("react/jsx-runtime");
690
725
  var MenuGroup = (_a) => {
691
726
  var _b = _a, {
692
727
  children,
@@ -705,24 +740,24 @@ var MenuGroup = (_a) => {
705
740
  "level",
706
741
  "items"
707
742
  ]);
708
- const content = (0, import_react18.useMemo)(() => {
743
+ const content = (0, import_react19.useMemo)(() => {
709
744
  return items == null ? void 0 : items.map((_a2, index) => {
710
745
  var _b2 = _a2, { type } = _b2, item = __objRest(_b2, ["type"]);
711
- return type === "item" ? /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(MenuItem_default, __spreadValues({}, item), index) : type === "submenu" ? /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(MenuSubmenu_default, __spreadValues({}, item), index) : /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(MenuItem_default, __spreadValues({}, item), index);
746
+ return type === "item" ? /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(MenuItem_default, __spreadValues({}, item), index) : type === "submenu" ? /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(MenuSubmenu_default, __spreadValues({}, item), index) : /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(MenuItem_default, __spreadValues({}, item), index);
712
747
  });
713
748
  }, [items]);
714
- return /* @__PURE__ */ (0, import_jsx_runtime13.jsxs)(import_jsx_runtime13.Fragment, { children: [
715
- /* @__PURE__ */ (0, import_jsx_runtime13.jsxs)(
749
+ return /* @__PURE__ */ (0, import_jsx_runtime14.jsxs)(import_jsx_runtime14.Fragment, { children: [
750
+ /* @__PURE__ */ (0, import_jsx_runtime14.jsxs)(
716
751
  "div",
717
752
  __spreadProps(__spreadValues({
718
- className: (0, import_clsx10.default)(`${PREFIX_CLS}menu-group`, className),
753
+ className: (0, import_clsx11.default)(`${PREFIX_CLS}menu-group`, className),
719
754
  style: __spreadValues({
720
755
  paddingLeft: level <= 1 ? `var(--${PREFIX_CLS}menu-group-padding-x)` : `calc(${level} * var(--${PREFIX_CLS}menu-group-padding-level))`
721
756
  }, style)
722
757
  }, rest), {
723
758
  children: [
724
- icon && /* @__PURE__ */ (0, import_jsx_runtime13.jsx)("div", { className: `${PREFIX_CLS}menu-group__icon`, children: icon }),
725
- /* @__PURE__ */ (0, import_jsx_runtime13.jsx)("div", { className: `${PREFIX_CLS}menu-group__content`, children: /* @__PURE__ */ (0, import_jsx_runtime13.jsx)("span", { className: `${PREFIX_CLS}menu-group__title`, children: title }) })
759
+ icon && /* @__PURE__ */ (0, import_jsx_runtime14.jsx)("div", { className: `${PREFIX_CLS}menu-group__icon`, children: icon }),
760
+ /* @__PURE__ */ (0, import_jsx_runtime14.jsx)("div", { className: `${PREFIX_CLS}menu-group__content`, children: /* @__PURE__ */ (0, import_jsx_runtime14.jsx)("span", { className: `${PREFIX_CLS}menu-group__title`, children: title }) })
726
761
  ]
727
762
  })
728
763
  ),
@@ -732,7 +767,7 @@ var MenuGroup = (_a) => {
732
767
  var MenuGroup_default = MenuGroup;
733
768
 
734
769
  // src/components/Menu/Menu.tsx
735
- var import_jsx_runtime14 = require("react/jsx-runtime");
770
+ var import_jsx_runtime15 = require("react/jsx-runtime");
736
771
  var Menu = (_a) => {
737
772
  var _b = _a, {
738
773
  children,
@@ -758,12 +793,12 @@ var Menu = (_a) => {
758
793
  "onItemSelect"
759
794
  ]);
760
795
  var _a2;
761
- const [selfValue, setSelfValue] = (0, import_react19.useState)((_a2 = valueProp != null ? valueProp : defaultValue) != null ? _a2 : []);
762
- const [selfOpenValues, setSelfOpenValues] = (0, import_react19.useState)(openValuesProp != null ? openValuesProp : []);
763
- const content = (0, import_react19.useMemo)(() => {
796
+ const [selfValue, setSelfValue] = (0, import_react20.useState)((_a2 = valueProp != null ? valueProp : defaultValue) != null ? _a2 : []);
797
+ const [selfOpenValues, setSelfOpenValues] = (0, import_react20.useState)(openValuesProp != null ? openValuesProp : []);
798
+ const content = (0, import_react20.useMemo)(() => {
764
799
  return items == null ? void 0 : items.map((_a3, index) => {
765
800
  var _b2 = _a3, { type } = _b2, item = __objRest(_b2, ["type"]);
766
- return type === "item" ? /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(MenuItem_default, __spreadValues({}, item), index) : type === "submenu" ? /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(MenuSubmenu_default, __spreadValues({}, item), index) : type === "group" ? /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(MenuGroup_default, __spreadValues({}, item), index) : /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(MenuItem_default, __spreadValues({}, item), index);
801
+ return type === "item" ? /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(MenuItem_default, __spreadValues({}, item), index) : type === "submenu" ? /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(MenuSubmenu_default, __spreadValues({}, item), index) : type === "group" ? /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(MenuGroup_default, __spreadValues({}, item), index) : /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(MenuItem_default, __spreadValues({}, item), index);
767
802
  });
768
803
  }, [items]);
769
804
  const handleChange = (value) => {
@@ -783,17 +818,17 @@ var Menu = (_a) => {
783
818
  const handleItemSelect = (props) => {
784
819
  onItemSelect == null ? void 0 : onItemSelect(props);
785
820
  };
786
- (0, import_react19.useEffect)(() => {
821
+ (0, import_react20.useEffect)(() => {
787
822
  if (valueProp !== void 0 && navMode !== "automatic") {
788
823
  setSelfValue(valueProp);
789
824
  }
790
825
  }, [valueProp]);
791
- (0, import_react19.useEffect)(() => {
826
+ (0, import_react20.useEffect)(() => {
792
827
  if (openValuesProp !== void 0) {
793
828
  setSelfOpenValues(openValuesProp);
794
829
  }
795
830
  }, [openValuesProp]);
796
- return /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(
831
+ return /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(
797
832
  MenuContext_default.Provider,
798
833
  {
799
834
  value: {
@@ -806,7 +841,7 @@ var Menu = (_a) => {
806
841
  onChange: handleChange,
807
842
  onItemSelect: handleItemSelect
808
843
  },
809
- children: /* @__PURE__ */ (0, import_jsx_runtime14.jsx)("div", __spreadProps(__spreadValues({ className: (0, import_clsx11.default)(`${PREFIX_CLS}menu`) }, rest), { children: content || children }))
844
+ children: /* @__PURE__ */ (0, import_jsx_runtime15.jsx)("div", __spreadProps(__spreadValues({ className: (0, import_clsx12.default)(`${PREFIX_CLS}menu`) }, rest), { children: content || children }))
810
845
  }
811
846
  );
812
847
  };
@@ -814,15 +849,15 @@ Menu.displayName = "Menu";
814
849
  var Menu_default = Menu;
815
850
 
816
851
  // src/components/Tabs/Tab.tsx
817
- var import_clsx12 = __toESM(require("clsx"));
852
+ var import_clsx13 = __toESM(require("clsx"));
818
853
  var import_merge_refs = __toESM(require("merge-refs"));
819
- var import_react23 = require("react");
854
+ var import_react24 = require("react");
820
855
 
821
856
  // ../../../node_modules/react-icons/lib/esm/iconBase.js
822
- var import_react21 = __toESM(require("react"));
857
+ var import_react22 = __toESM(require("react"));
823
858
 
824
859
  // ../../../node_modules/react-icons/lib/esm/iconContext.js
825
- var import_react20 = __toESM(require("react"));
860
+ var import_react21 = __toESM(require("react"));
826
861
  var DefaultContext = {
827
862
  color: void 0,
828
863
  size: void 0,
@@ -830,7 +865,7 @@ var DefaultContext = {
830
865
  style: void 0,
831
866
  attr: void 0
832
867
  };
833
- var IconContext = import_react20.default.createContext && import_react20.default.createContext(DefaultContext);
868
+ var IconContext = import_react21.default.createContext && import_react21.default.createContext(DefaultContext);
834
869
 
835
870
  // ../../../node_modules/react-icons/lib/esm/iconBase.js
836
871
  var __assign = function() {
@@ -859,14 +894,14 @@ var __rest = function(s, e) {
859
894
  };
860
895
  function Tree2Element(tree) {
861
896
  return tree && tree.map(function(node, i) {
862
- return import_react21.default.createElement(node.tag, __assign({
897
+ return import_react22.default.createElement(node.tag, __assign({
863
898
  key: i
864
899
  }, node.attr), Tree2Element(node.child));
865
900
  });
866
901
  }
867
902
  function GenIcon(data) {
868
903
  return function(props) {
869
- return import_react21.default.createElement(IconBase, __assign({
904
+ return import_react22.default.createElement(IconBase, __assign({
870
905
  attr: __assign({}, data.attr)
871
906
  }, props), Tree2Element(data.child));
872
907
  };
@@ -880,7 +915,7 @@ function IconBase(props) {
880
915
  className = conf.className;
881
916
  if (props.className)
882
917
  className = (className ? className + " " : "") + props.className;
883
- return import_react21.default.createElement("svg", __assign({
918
+ return import_react22.default.createElement("svg", __assign({
884
919
  stroke: "currentColor",
885
920
  fill: "currentColor",
886
921
  strokeWidth: "0"
@@ -892,9 +927,9 @@ function IconBase(props) {
892
927
  height: computedSize,
893
928
  width: computedSize,
894
929
  xmlns: "http://www.w3.org/2000/svg"
895
- }), title && import_react21.default.createElement("title", null, title), props.children);
930
+ }), title && import_react22.default.createElement("title", null, title), props.children);
896
931
  };
897
- return IconContext !== void 0 ? import_react21.default.createElement(IconContext.Consumer, null, function(conf) {
932
+ return IconContext !== void 0 ? import_react22.default.createElement(IconContext.Consumer, null, function(conf) {
898
933
  return elem(conf);
899
934
  }) : elem(DefaultContext);
900
935
  }
@@ -905,10 +940,10 @@ function TbX(props) {
905
940
  }
906
941
 
907
942
  // src/components/Tabs/TabsContext.ts
908
- var import_react22 = require("react");
909
- var TabsContext = (0, import_react22.createContext)(null);
943
+ var import_react23 = require("react");
944
+ var TabsContext = (0, import_react23.createContext)(null);
910
945
  var useTabs = () => {
911
- const context = (0, import_react22.useContext)(TabsContext);
946
+ const context = (0, import_react23.useContext)(TabsContext);
912
947
  if (!context) {
913
948
  throw new Error("`useTabs` must be used within a `<Tabs />`");
914
949
  }
@@ -916,8 +951,8 @@ var useTabs = () => {
916
951
  };
917
952
 
918
953
  // src/components/Tabs/Tab.tsx
919
- var import_jsx_runtime15 = require("react/jsx-runtime");
920
- var Tab = (0, import_react23.forwardRef)(
954
+ var import_jsx_runtime16 = require("react/jsx-runtime");
955
+ var Tab = (0, import_react24.forwardRef)(
921
956
  (_a, ref) => {
922
957
  var _b = _a, {
923
958
  as: Component = "div",
@@ -938,8 +973,8 @@ var Tab = (0, import_react23.forwardRef)(
938
973
  "disabled",
939
974
  "onClick"
940
975
  ]);
941
- const tabRef = (0, import_react23.useRef)(null);
942
- const id = (0, import_react23.useId)();
976
+ const tabRef = (0, import_react24.useRef)(null);
977
+ const id = (0, import_react24.useId)();
943
978
  const value = valueProp != null ? valueProp : id;
944
979
  const _a2 = useTabs(), { onClose, registerItem } = _a2, tabs = __objRest(_a2, ["onClose", "registerItem"]);
945
980
  const handleClick = (event) => {
@@ -980,17 +1015,17 @@ var Tab = (0, import_react23.forwardRef)(
980
1015
  event.stopPropagation();
981
1016
  onClose(value);
982
1017
  };
983
- (0, import_react23.useEffect)(() => {
1018
+ (0, import_react24.useEffect)(() => {
984
1019
  registerItem({ value, disabled });
985
1020
  if (value === tabs.value) {
986
1021
  tabs.previousTabRef.current = tabRef.current;
987
1022
  }
988
1023
  }, [value, tabs.value]);
989
- return /* @__PURE__ */ (0, import_jsx_runtime15.jsxs)(
1024
+ return /* @__PURE__ */ (0, import_jsx_runtime16.jsxs)(
990
1025
  Component,
991
1026
  __spreadProps(__spreadValues({
992
1027
  ref: (0, import_merge_refs.default)(tabRef, ref, (el) => tabs.tabRefs.current[value] = el),
993
- className: (0, import_clsx12.default)(
1028
+ className: (0, import_clsx13.default)(
994
1029
  `${PREFIX_CLS}tab`,
995
1030
  { [`${PREFIX_CLS}tab--selected`]: value === tabs.value, [`${PREFIX_CLS}tab--disabled`]: disabled },
996
1031
  className
@@ -999,12 +1034,12 @@ var Tab = (0, import_react23.forwardRef)(
999
1034
  onClick: handleClick
1000
1035
  }, rest), {
1001
1036
  children: [
1002
- /* @__PURE__ */ (0, import_jsx_runtime15.jsx)("div", { className: `${PREFIX_CLS}overlay`, children: /* @__PURE__ */ (0, import_jsx_runtime15.jsx)("div", { className: `${PREFIX_CLS}overlay__surface` }) }),
1003
- /* @__PURE__ */ (0, import_jsx_runtime15.jsxs)("div", { className: `${PREFIX_CLS}tab__content`, children: [
1037
+ /* @__PURE__ */ (0, import_jsx_runtime16.jsx)("div", { className: `${PREFIX_CLS}overlay`, children: /* @__PURE__ */ (0, import_jsx_runtime16.jsx)("div", { className: `${PREFIX_CLS}overlay__surface` }) }),
1038
+ /* @__PURE__ */ (0, import_jsx_runtime16.jsxs)("div", { className: `${PREFIX_CLS}tab__content`, children: [
1004
1039
  children,
1005
- closable && /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(Button, { variant: "text", color: "secondary", iconOnly: true, size: "xs", onClick: handleClose, children: /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(Icon_default, { children: /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(TbX, {}) }) })
1040
+ closable && /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(Button, { variant: "text", color: "secondary", iconOnly: true, size: "xs", onClick: handleClose, children: /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(Icon_default, { children: /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(TbX, {}) }) })
1006
1041
  ] }),
1007
- /* @__PURE__ */ (0, import_jsx_runtime15.jsx)("div", { className: `${PREFIX_CLS}tab__indicator` })
1042
+ /* @__PURE__ */ (0, import_jsx_runtime16.jsx)("div", { className: `${PREFIX_CLS}tab__indicator` })
1008
1043
  ]
1009
1044
  })
1010
1045
  );
@@ -1012,8 +1047,8 @@ var Tab = (0, import_react23.forwardRef)(
1012
1047
  );
1013
1048
 
1014
1049
  // src/components/Tabs/Tabs.tsx
1015
- var import_clsx13 = __toESM(require("clsx"));
1016
- var import_react24 = require("react");
1050
+ var import_clsx14 = __toESM(require("clsx"));
1051
+ var import_react25 = require("react");
1017
1052
 
1018
1053
  // src/utils/scroll.ts
1019
1054
  var scrollToItem = (parentElement, currentElement) => {
@@ -1041,7 +1076,7 @@ var scrollToItem = (parentElement, currentElement) => {
1041
1076
  };
1042
1077
 
1043
1078
  // src/components/Tabs/Tabs.tsx
1044
- var import_jsx_runtime16 = require("react/jsx-runtime");
1079
+ var import_jsx_runtime17 = require("react/jsx-runtime");
1045
1080
  var Tabs = (_a) => {
1046
1081
  var _b = _a, {
1047
1082
  children,
@@ -1060,11 +1095,11 @@ var Tabs = (_a) => {
1060
1095
  "onChange",
1061
1096
  "onClose"
1062
1097
  ]);
1063
- const tabsRef = (0, import_react24.useRef)(null);
1064
- const tabRefs = (0, import_react24.useRef)({});
1065
- const previousTabRef = (0, import_react24.useRef)(null);
1066
- const [selfValue, setSelfValue] = (0, import_react24.useState)(value != null ? value : defaultValue);
1067
- const [items, setItems] = (0, import_react24.useState)([]);
1098
+ const tabsRef = (0, import_react25.useRef)(null);
1099
+ const tabRefs = (0, import_react25.useRef)({});
1100
+ const previousTabRef = (0, import_react25.useRef)(null);
1101
+ const [selfValue, setSelfValue] = (0, import_react25.useState)(value != null ? value : defaultValue);
1102
+ const [items, setItems] = (0, import_react25.useState)([]);
1068
1103
  const registerItem = (item) => {
1069
1104
  setItems((prevItems) => {
1070
1105
  const index = prevItems.findIndex((item2) => item2.value);
@@ -1091,71 +1126,614 @@ var Tabs = (_a) => {
1091
1126
  const handleClose = (value2) => {
1092
1127
  onClose == null ? void 0 : onClose(value2);
1093
1128
  };
1094
- (0, import_react24.useEffect)(() => {
1129
+ (0, import_react25.useEffect)(() => {
1095
1130
  if (value !== void 0) {
1096
1131
  setSelfValue(value);
1097
1132
  scrollToTab(value);
1098
1133
  }
1099
1134
  }, [value]);
1100
- (0, import_react24.useEffect)(() => {
1135
+ (0, import_react25.useEffect)(() => {
1101
1136
  if (value === void 0) {
1102
1137
  const item = items.find((tab) => !tab.disabled);
1103
1138
  setSelfValue(item == null ? void 0 : item.value);
1104
1139
  }
1105
1140
  }, [value, items]);
1106
- return /* @__PURE__ */ (0, import_jsx_runtime16.jsxs)(
1141
+ return /* @__PURE__ */ (0, import_jsx_runtime17.jsxs)(
1107
1142
  TabsContext.Provider,
1108
1143
  {
1109
1144
  value: { previousTabRef, tabRefs, value: selfValue, onChange: handleChange, onClose: handleClose, registerItem },
1110
1145
  children: [
1111
- /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(
1146
+ /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(
1112
1147
  "div",
1113
1148
  __spreadProps(__spreadValues({
1114
1149
  ref: tabsRef,
1115
- className: (0, import_clsx13.default)(`${PREFIX_CLS}tabs`, { [`${PREFIX_CLS}tabs--${alignment}`]: alignment }, className)
1150
+ className: (0, import_clsx14.default)(`${PREFIX_CLS}tabs`, { [`${PREFIX_CLS}tabs--${alignment}`]: alignment }, className)
1116
1151
  }, rest), {
1117
1152
  children
1118
1153
  })
1119
1154
  ),
1120
- /* @__PURE__ */ (0, import_jsx_runtime16.jsx)("div", { className: `${PREFIX_CLS}divider` })
1155
+ /* @__PURE__ */ (0, import_jsx_runtime17.jsx)("div", { className: `${PREFIX_CLS}divider` })
1121
1156
  ]
1122
1157
  }
1123
1158
  );
1124
1159
  };
1125
1160
 
1126
1161
  // src/components/Toolbar/Toolbar.tsx
1127
- var import_clsx14 = __toESM(require("clsx"));
1128
- var import_jsx_runtime17 = require("react/jsx-runtime");
1162
+ var import_clsx15 = __toESM(require("clsx"));
1163
+ var import_jsx_runtime18 = require("react/jsx-runtime");
1129
1164
  var Toolbar = (props) => {
1130
1165
  const _a = props, { children, className, size = "md", startAction, endAction, title, subtitle } = _a, rest = __objRest(_a, ["children", "className", "size", "startAction", "endAction", "title", "subtitle"]);
1131
- return /* @__PURE__ */ (0, import_jsx_runtime17.jsxs)("div", __spreadProps(__spreadValues({ className: (0, import_clsx14.default)(`${PREFIX_CLS}toolbar`, { [`${PREFIX_CLS}toolbar--${size}`]: size }, className) }, rest), { children: [
1132
- /* @__PURE__ */ (0, import_jsx_runtime17.jsx)("div", { className: `${PREFIX_CLS}outline-b` }),
1133
- /* @__PURE__ */ (0, import_jsx_runtime17.jsxs)("div", { className: (0, import_clsx14.default)(`${PREFIX_CLS}toolbar__container`), children: [
1134
- startAction && /* @__PURE__ */ (0, import_jsx_runtime17.jsx)("div", { className: (0, import_clsx14.default)(`${PREFIX_CLS}toolbar__start-action`), children: startAction }),
1135
- /* @__PURE__ */ (0, import_jsx_runtime17.jsx)("div", { className: (0, import_clsx14.default)(`${PREFIX_CLS}toolbar__content`), children: title || subtitle ? /* @__PURE__ */ (0, import_jsx_runtime17.jsxs)(import_jsx_runtime17.Fragment, { children: [
1136
- title && /* @__PURE__ */ (0, import_jsx_runtime17.jsx)("div", { className: (0, import_clsx14.default)(`${PREFIX_CLS}toolbar__title`), children: title }),
1137
- subtitle && /* @__PURE__ */ (0, import_jsx_runtime17.jsx)("div", { className: (0, import_clsx14.default)(`${PREFIX_CLS}toolbar__subtitle`), children: subtitle })
1166
+ return /* @__PURE__ */ (0, import_jsx_runtime18.jsxs)("div", __spreadProps(__spreadValues({ className: (0, import_clsx15.default)(`${PREFIX_CLS}toolbar`, { [`${PREFIX_CLS}toolbar--${size}`]: size }, className) }, rest), { children: [
1167
+ /* @__PURE__ */ (0, import_jsx_runtime18.jsx)("div", { className: `${PREFIX_CLS}outline-b` }),
1168
+ /* @__PURE__ */ (0, import_jsx_runtime18.jsxs)("div", { className: (0, import_clsx15.default)(`${PREFIX_CLS}toolbar__container`), children: [
1169
+ startAction && /* @__PURE__ */ (0, import_jsx_runtime18.jsx)("div", { className: (0, import_clsx15.default)(`${PREFIX_CLS}toolbar__start-action`), children: startAction }),
1170
+ /* @__PURE__ */ (0, import_jsx_runtime18.jsx)("div", { className: (0, import_clsx15.default)(`${PREFIX_CLS}toolbar__content`), children: title || subtitle ? /* @__PURE__ */ (0, import_jsx_runtime18.jsxs)(import_jsx_runtime18.Fragment, { children: [
1171
+ title && /* @__PURE__ */ (0, import_jsx_runtime18.jsx)("div", { className: (0, import_clsx15.default)(`${PREFIX_CLS}toolbar__title`), children: title }),
1172
+ subtitle && /* @__PURE__ */ (0, import_jsx_runtime18.jsx)("div", { className: (0, import_clsx15.default)(`${PREFIX_CLS}toolbar__subtitle`), children: subtitle })
1138
1173
  ] }) : children }),
1139
- endAction && /* @__PURE__ */ (0, import_jsx_runtime17.jsx)("div", { className: (0, import_clsx14.default)(`${PREFIX_CLS}toolbar__trailing`), children: endAction })
1174
+ endAction && /* @__PURE__ */ (0, import_jsx_runtime18.jsx)("div", { className: (0, import_clsx15.default)(`${PREFIX_CLS}toolbar__trailing`), children: endAction })
1140
1175
  ] })
1141
1176
  ] }));
1142
1177
  };
1143
1178
  var Toolbar_default = Toolbar;
1144
1179
 
1145
- // src/hooks/useLocalStorage.tsx
1180
+ // src/components/Select/SelectClient.tsx
1181
+ var import_kendo_data_query = require("@progress/kendo-data-query");
1182
+ var import_kendo_react_dropdowns = require("@progress/kendo-react-dropdowns");
1183
+ var import_react26 = require("react");
1184
+ var import_jsx_runtime19 = require("react/jsx-runtime");
1185
+ var SelectClient = ({
1186
+ value: valueProp,
1187
+ data: propData,
1188
+ filter: filterProp,
1189
+ keyField: keyField2 = "key",
1190
+ textField: textField3 = "text",
1191
+ placeholder,
1192
+ virtual,
1193
+ filterable,
1194
+ disabled,
1195
+ loading,
1196
+ className,
1197
+ onChange,
1198
+ onFilterChange
1199
+ }) => {
1200
+ const [value, setValue] = (0, import_react26.useState)(valueProp);
1201
+ const [filter, setFilter] = (0, import_react26.useState)(filterProp);
1202
+ const handleChange = (event) => {
1203
+ const value2 = event.target.value || null;
1204
+ if (valueProp !== void 0) {
1205
+ onChange(value2);
1206
+ } else {
1207
+ setValue(value2);
1208
+ }
1209
+ };
1210
+ const pageSize3 = virtual == null ? void 0 : virtual.pageSize;
1211
+ const filteredData = (0, import_react26.useRef)([]);
1212
+ const [state, setState] = (0, import_react26.useState)({
1213
+ skip: 0,
1214
+ total: propData.total,
1215
+ subsetData: propData.items.slice(0, pageSize3)
1216
+ });
1217
+ const handleFilterChange = (event) => {
1218
+ if (pageSize3) {
1219
+ filteredData.current = (0, import_kendo_data_query.filterBy)(propData.items.slice(), event.filter);
1220
+ const data = filteredData.current.slice(0, pageSize3);
1221
+ setState({
1222
+ subsetData: data,
1223
+ skip: 0,
1224
+ total: filteredData.current.length
1225
+ });
1226
+ }
1227
+ const filter2 = event.filter.value;
1228
+ if (filterProp !== void 0) {
1229
+ onFilterChange == null ? void 0 : onFilterChange(filter2);
1230
+ } else {
1231
+ setFilter(filter2);
1232
+ }
1233
+ };
1234
+ const handlePageChange = (event) => {
1235
+ if (pageSize3) {
1236
+ const skip = event.page.skip;
1237
+ const take = event.page.take;
1238
+ const newSubsetData = filteredData.current.slice(skip, skip + take);
1239
+ setState(__spreadProps(__spreadValues({}, state), { subsetData: newSubsetData, skip }));
1240
+ }
1241
+ };
1242
+ (0, import_react26.useEffect)(() => {
1243
+ if (valueProp !== void 0) {
1244
+ setValue(valueProp);
1245
+ }
1246
+ }, [valueProp]);
1247
+ (0, import_react26.useEffect)(() => {
1248
+ setFilter(filterProp);
1249
+ }, [filterProp]);
1250
+ (0, import_react26.useEffect)(() => {
1251
+ if (pageSize3) {
1252
+ filteredData.current = propData.items.slice();
1253
+ }
1254
+ }, [propData]);
1255
+ return /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(
1256
+ import_kendo_react_dropdowns.ComboBox,
1257
+ {
1258
+ value,
1259
+ data: pageSize3 ? state.subsetData : propData.items,
1260
+ placeholder,
1261
+ dataItemKey: keyField2,
1262
+ textField: textField3,
1263
+ filterable,
1264
+ filter,
1265
+ virtual: pageSize3 ? {
1266
+ total: state.total,
1267
+ pageSize: pageSize3,
1268
+ skip: state.skip
1269
+ } : void 0,
1270
+ disabled,
1271
+ loading,
1272
+ className,
1273
+ onChange: handleChange,
1274
+ onFilterChange: handleFilterChange,
1275
+ onPageChange: handlePageChange
1276
+ }
1277
+ );
1278
+ };
1279
+ var SelectClient_default = SelectClient;
1280
+
1281
+ // src/components/Select/SelectServer.tsx
1282
+ var import_kendo_react_dropdowns2 = require("@progress/kendo-react-dropdowns");
1146
1283
  var import_react27 = require("react");
1284
+ var import_jsx_runtime20 = require("react/jsx-runtime");
1285
+ var textField = "ContactName";
1286
+ var emptyItem = { [textField]: "loading ...", CustomerID: 0 };
1287
+ var pageSize = 10;
1288
+ var loadingData = [];
1289
+ while (loadingData.length < pageSize) {
1290
+ loadingData.push(__spreadValues({}, emptyItem));
1291
+ }
1292
+ var SelectServer = ({
1293
+ data: dataProp,
1294
+ value: valueProp,
1295
+ keyField: keyField2 = "key",
1296
+ textField: textField3 = "text",
1297
+ placeholder,
1298
+ virtual,
1299
+ filterable,
1300
+ filter: filterProp = "",
1301
+ disabled,
1302
+ loading,
1303
+ className,
1304
+ onChange,
1305
+ onDataChange,
1306
+ onFilterChange,
1307
+ getData,
1308
+ renderItem
1309
+ }) => {
1310
+ var _a;
1311
+ const dataCaching = (0, import_react27.useRef)([]);
1312
+ const pendingRequest = (0, import_react27.useRef)();
1313
+ const requestStarted = (0, import_react27.useRef)(false);
1314
+ const emptyItem3 = { [keyField2]: 0, [textField3]: "loading ..." };
1315
+ const [loadingData3, setLoadingData] = (0, import_react27.useState)([]);
1316
+ const [data, setData] = (0, import_react27.useState)(dataProp.items);
1317
+ const [total, setTotal] = (0, import_react27.useState)(0);
1318
+ const [value, setValue] = (0, import_react27.useState)(valueProp);
1319
+ const [filter, setFilter] = (0, import_react27.useState)(filterProp);
1320
+ const pageSize3 = (_a = virtual == null ? void 0 : virtual.pageSize) != null ? _a : 10;
1321
+ const skipRef = (0, import_react27.useRef)(0);
1322
+ const resetCach = () => {
1323
+ dataCaching.current.length = 0;
1324
+ };
1325
+ const requestData = (0, import_react27.useCallback)((state) => {
1326
+ const { skip } = state;
1327
+ if (requestStarted.current) {
1328
+ clearTimeout(pendingRequest.current);
1329
+ pendingRequest.current = setTimeout(() => {
1330
+ requestData(state);
1331
+ }, 50);
1332
+ return;
1333
+ }
1334
+ requestStarted.current = true;
1335
+ getData(state).then(({ items, total: total2 }) => {
1336
+ items.forEach((item, index) => {
1337
+ dataCaching.current[index + skip] = item;
1338
+ });
1339
+ if (skip === skipRef.current) {
1340
+ setData(items);
1341
+ setTotal(total2);
1342
+ onDataChange == null ? void 0 : onDataChange({ items, total: total2 });
1343
+ }
1344
+ requestStarted.current = false;
1345
+ }).catch(() => {
1346
+ requestStarted.current = false;
1347
+ });
1348
+ }, []);
1349
+ const handleFilterChange = (0, import_react27.useCallback)((event) => {
1350
+ const filter2 = event.filter.value;
1351
+ if (filterProp !== void 0) {
1352
+ onFilterChange == null ? void 0 : onFilterChange(filter2);
1353
+ } else {
1354
+ setFilter(filter2);
1355
+ }
1356
+ resetCach();
1357
+ requestData({ skip: 0, filter: filter2 });
1358
+ setData(loadingData3);
1359
+ skipRef.current = 0;
1360
+ }, []);
1361
+ const shouldRequestData = (0, import_react27.useCallback)((skip) => {
1362
+ for (let i = 0; i < pageSize3; i++) {
1363
+ if (!dataCaching.current[skip + i]) {
1364
+ return true;
1365
+ }
1366
+ }
1367
+ return false;
1368
+ }, []);
1369
+ const getCachedData = (0, import_react27.useCallback)((skip) => {
1370
+ const data2 = [];
1371
+ for (let i = 0; i < pageSize3; i++) {
1372
+ data2.push(dataCaching.current[i + skip] || emptyItem3);
1373
+ }
1374
+ return data2;
1375
+ }, []);
1376
+ const pageChange = (0, import_react27.useCallback)(
1377
+ (event) => {
1378
+ if (filter !== void 0) {
1379
+ const newSkip = event.page.skip;
1380
+ if (shouldRequestData(newSkip)) {
1381
+ requestData({ skip: newSkip, filter });
1382
+ }
1383
+ const data2 = getCachedData(newSkip);
1384
+ setData(data2);
1385
+ skipRef.current = newSkip;
1386
+ }
1387
+ },
1388
+ [getCachedData, requestData, shouldRequestData, filter]
1389
+ );
1390
+ const handleChange = (0, import_react27.useCallback)((event) => {
1391
+ const value2 = event.target.value;
1392
+ if (value2 && value2[textField3] === emptyItem3[textField3]) {
1393
+ return;
1394
+ }
1395
+ if (valueProp !== void 0) {
1396
+ onChange(value2);
1397
+ } else {
1398
+ setValue(value2);
1399
+ }
1400
+ }, []);
1401
+ const handleItemRender = (li, itemProps) => {
1402
+ const itemChildren = renderItem == null ? void 0 : renderItem(itemProps.dataItem);
1403
+ if (!itemChildren)
1404
+ return (0, import_react27.cloneElement)(li, li.props);
1405
+ return (0, import_react27.cloneElement)(li, li.props, itemChildren);
1406
+ };
1407
+ (0, import_react27.useEffect)(() => {
1408
+ const pageSize4 = 10;
1409
+ const loadingData4 = [];
1410
+ while (loadingData4.length < pageSize4) {
1411
+ loadingData4.push(emptyItem3);
1412
+ }
1413
+ setLoadingData(loadingData4);
1414
+ }, []);
1415
+ (0, import_react27.useEffect)(() => {
1416
+ if (valueProp !== void 0) {
1417
+ setValue(valueProp);
1418
+ }
1419
+ }, [valueProp]);
1420
+ (0, import_react27.useEffect)(() => {
1421
+ if (filterProp !== void 0) {
1422
+ setFilter(filterProp);
1423
+ }
1424
+ }, [filterProp]);
1425
+ (0, import_react27.useEffect)(() => {
1426
+ requestData({ skip: 0, filter });
1427
+ return () => {
1428
+ resetCach();
1429
+ };
1430
+ }, [filter, requestData]);
1431
+ (0, import_react27.useEffect)(() => {
1432
+ setData(dataProp.items);
1433
+ }, [dataProp]);
1434
+ return /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
1435
+ import_kendo_react_dropdowns2.ComboBox,
1436
+ {
1437
+ data,
1438
+ value,
1439
+ placeholder,
1440
+ dataItemKey: keyField2,
1441
+ textField: textField3,
1442
+ filterable,
1443
+ onFilterChange: handleFilterChange,
1444
+ virtual: {
1445
+ pageSize: pageSize3,
1446
+ skip: skipRef.current,
1447
+ total
1448
+ },
1449
+ disabled,
1450
+ loading,
1451
+ className,
1452
+ onChange: handleChange,
1453
+ onPageChange: pageChange,
1454
+ itemRender: handleItemRender
1455
+ }
1456
+ );
1457
+ };
1458
+ var SelectServer_default = SelectServer;
1459
+
1460
+ // src/components/Select/Select.tsx
1461
+ var import_jsx_runtime21 = require("react/jsx-runtime");
1462
+ var Select = (props) => {
1463
+ return props.filterMode === "client" ? /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(SelectClient_default, __spreadValues({}, props)) : /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(SelectServer_default, __spreadValues({}, props));
1464
+ };
1465
+ var Select_default = Select;
1466
+
1467
+ // src/components/MultiSelect/MultiSelectClient.tsx
1468
+ var import_kendo_data_query2 = require("@progress/kendo-data-query");
1469
+ var import_kendo_react_dropdowns3 = require("@progress/kendo-react-dropdowns");
1470
+ var import_react28 = require("react");
1471
+ var import_jsx_runtime22 = require("react/jsx-runtime");
1472
+ var textField2 = "text";
1473
+ var keyField = "key";
1474
+ var emptyItem2 = { [textField2]: "loading ...", [keyField]: 0 };
1475
+ var pageSize2 = 10;
1476
+ var loadingData2 = [];
1477
+ while (loadingData2.length < pageSize2) {
1478
+ loadingData2.push(__spreadValues({}, emptyItem2));
1479
+ }
1480
+ var SelectClient2 = ({
1481
+ data: dataProp,
1482
+ value: valueProp,
1483
+ keyField: keyField2 = "key",
1484
+ textField: textField3 = "text",
1485
+ placeholder,
1486
+ virtual,
1487
+ filterable,
1488
+ filter: filterProp,
1489
+ disabled,
1490
+ loading,
1491
+ className,
1492
+ onChange,
1493
+ onFilterChange
1494
+ }) => {
1495
+ const [value, setValue] = (0, import_react28.useState)(valueProp);
1496
+ const [filter, setFilter] = (0, import_react28.useState)(filterProp);
1497
+ const handleChange = (event) => {
1498
+ onChange(event.target.value);
1499
+ };
1500
+ const pageSize3 = virtual == null ? void 0 : virtual.pageSize;
1501
+ const filteredData = (0, import_react28.useRef)([]);
1502
+ const [state, setState] = (0, import_react28.useState)({
1503
+ skip: 0,
1504
+ total: dataProp.total,
1505
+ subsetData: dataProp.items.slice(0, pageSize3)
1506
+ });
1507
+ const handleFilterChange = (event) => {
1508
+ if (pageSize3) {
1509
+ filteredData.current = (0, import_kendo_data_query2.filterBy)(dataProp.items.slice(), event.filter);
1510
+ const data = filteredData.current.slice(0, pageSize3);
1511
+ setState({
1512
+ subsetData: data,
1513
+ skip: 0,
1514
+ total: filteredData.current.length
1515
+ });
1516
+ }
1517
+ onFilterChange == null ? void 0 : onFilterChange(event.filter.value);
1518
+ };
1519
+ const pageChange = (event) => {
1520
+ if (pageSize3) {
1521
+ const skip = event.page.skip;
1522
+ const take = event.page.take;
1523
+ const newSubsetData = filteredData.current.slice(skip, skip + take);
1524
+ setState(__spreadProps(__spreadValues({}, state), { subsetData: newSubsetData, skip }));
1525
+ }
1526
+ };
1527
+ (0, import_react28.useEffect)(() => {
1528
+ setValue(valueProp);
1529
+ }, [valueProp]);
1530
+ (0, import_react28.useEffect)(() => {
1531
+ setFilter(filterProp);
1532
+ }, [filterProp]);
1533
+ (0, import_react28.useEffect)(() => {
1534
+ if (pageSize3) {
1535
+ filteredData.current = dataProp.items.slice();
1536
+ }
1537
+ }, [dataProp]);
1538
+ return /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(
1539
+ import_kendo_react_dropdowns3.MultiSelect,
1540
+ {
1541
+ value,
1542
+ data: pageSize3 ? state.subsetData : dataProp.items,
1543
+ placeholder,
1544
+ dataItemKey: keyField2,
1545
+ textField: textField3,
1546
+ filterable,
1547
+ filter,
1548
+ virtual: pageSize3 ? {
1549
+ total: state.total,
1550
+ pageSize: pageSize3,
1551
+ skip: state.skip
1552
+ } : void 0,
1553
+ disabled,
1554
+ loading,
1555
+ className,
1556
+ onChange: handleChange,
1557
+ onFilterChange: handleFilterChange,
1558
+ onPageChange: pageChange
1559
+ }
1560
+ );
1561
+ };
1562
+ var MultiSelectClient_default = SelectClient2;
1563
+
1564
+ // src/components/MultiSelect/MultiSelectServer.tsx
1565
+ var import_kendo_react_dropdowns4 = require("@progress/kendo-react-dropdowns");
1566
+ var import_react29 = require("react");
1567
+ var import_jsx_runtime23 = require("react/jsx-runtime");
1568
+ var MultiSelectServer = ({
1569
+ data: dataProp,
1570
+ value: valueProp,
1571
+ keyField: keyField2 = "key",
1572
+ textField: textField3 = "text",
1573
+ placeholder,
1574
+ virtual,
1575
+ filterable,
1576
+ filter: filterProp = "",
1577
+ disabled,
1578
+ loading,
1579
+ className,
1580
+ onDataChange,
1581
+ onChange,
1582
+ onFilterChange,
1583
+ getData
1584
+ }) => {
1585
+ var _a;
1586
+ const dataCaching = (0, import_react29.useRef)([]);
1587
+ const pendingRequest = (0, import_react29.useRef)();
1588
+ const requestStarted = (0, import_react29.useRef)(false);
1589
+ const emptyItem3 = { [keyField2]: 0, [textField3]: "loading ..." };
1590
+ const [loadingData3, setLoadingData] = (0, import_react29.useState)([]);
1591
+ const [data, setData] = (0, import_react29.useState)(dataProp.items);
1592
+ const [total, setTotal] = (0, import_react29.useState)(0);
1593
+ const [value, setValue] = (0, import_react29.useState)(valueProp);
1594
+ const [filter, setFilter] = (0, import_react29.useState)(filterProp);
1595
+ const pageSize3 = (_a = virtual == null ? void 0 : virtual.pageSize) != null ? _a : 10;
1596
+ const skipRef = (0, import_react29.useRef)(0);
1597
+ const resetCach = () => {
1598
+ dataCaching.current.length = 0;
1599
+ };
1600
+ const requestData = (0, import_react29.useCallback)((state) => {
1601
+ if (requestStarted.current) {
1602
+ clearTimeout(pendingRequest.current);
1603
+ pendingRequest.current = setTimeout(() => {
1604
+ requestData(state);
1605
+ }, 50);
1606
+ return;
1607
+ }
1608
+ requestStarted.current = true;
1609
+ getData(state).then(({ items, total: total2 }) => {
1610
+ const { skip } = state;
1611
+ items.forEach((item, index) => {
1612
+ dataCaching.current[index + skip] = item;
1613
+ });
1614
+ if (skip === skipRef.current) {
1615
+ setData(items);
1616
+ setTotal(total2);
1617
+ onDataChange == null ? void 0 : onDataChange({ items, total: total2 });
1618
+ }
1619
+ requestStarted.current = false;
1620
+ }).catch(() => {
1621
+ requestStarted.current = false;
1622
+ });
1623
+ }, []);
1624
+ const handleFilterChange = (0, import_react29.useCallback)((event) => {
1625
+ const filter2 = event.filter.value;
1626
+ resetCach();
1627
+ requestData({ skip: 0, filter: filter2 });
1628
+ setData(loadingData3);
1629
+ skipRef.current = 0;
1630
+ setFilter(filter2);
1631
+ onFilterChange == null ? void 0 : onFilterChange(filter2);
1632
+ }, []);
1633
+ const shouldRequestData = (0, import_react29.useCallback)((skip) => {
1634
+ for (let i = 0; i < pageSize3; i++) {
1635
+ if (!dataCaching.current[skip + i]) {
1636
+ return true;
1637
+ }
1638
+ }
1639
+ return false;
1640
+ }, []);
1641
+ const getCachedData = (0, import_react29.useCallback)((skip) => {
1642
+ const data2 = [];
1643
+ for (let i = 0; i < pageSize3; i++) {
1644
+ data2.push(dataCaching.current[i + skip] || emptyItem3);
1645
+ }
1646
+ return data2;
1647
+ }, []);
1648
+ const pageChange = (0, import_react29.useCallback)(
1649
+ (event) => {
1650
+ const newSkip = event.page.skip;
1651
+ if (shouldRequestData(newSkip)) {
1652
+ requestData({ skip: newSkip, filter });
1653
+ }
1654
+ const data2 = getCachedData(newSkip);
1655
+ setData(data2);
1656
+ skipRef.current = newSkip;
1657
+ },
1658
+ [getCachedData, requestData, shouldRequestData, filter]
1659
+ );
1660
+ const handleChange = (0, import_react29.useCallback)((event) => {
1661
+ const value2 = event.target.value;
1662
+ if (value2 && value2[textField3] === emptyItem3[textField3]) {
1663
+ return;
1664
+ }
1665
+ setValue(value2);
1666
+ onChange(value2);
1667
+ }, []);
1668
+ (0, import_react29.useEffect)(() => {
1669
+ const pageSize4 = 10;
1670
+ const loadingData4 = [];
1671
+ while (loadingData4.length < pageSize4) {
1672
+ loadingData4.push(emptyItem3);
1673
+ }
1674
+ setLoadingData(loadingData4);
1675
+ }, []);
1676
+ (0, import_react29.useEffect)(() => {
1677
+ setData(dataProp.items);
1678
+ }, [dataProp]);
1679
+ (0, import_react29.useEffect)(() => {
1680
+ setValue(valueProp);
1681
+ }, [valueProp]);
1682
+ (0, import_react29.useEffect)(() => {
1683
+ setFilter(filterProp);
1684
+ }, [filterProp]);
1685
+ (0, import_react29.useEffect)(() => {
1686
+ requestData({ skip: 0, filter });
1687
+ return () => {
1688
+ resetCach();
1689
+ };
1690
+ }, [filter, requestData]);
1691
+ return /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(
1692
+ import_kendo_react_dropdowns4.MultiSelect,
1693
+ {
1694
+ data,
1695
+ value,
1696
+ placeholder,
1697
+ dataItemKey: keyField2,
1698
+ textField: textField3,
1699
+ filterable,
1700
+ onFilterChange: handleFilterChange,
1701
+ virtual: {
1702
+ pageSize: pageSize3,
1703
+ skip: skipRef.current,
1704
+ total
1705
+ },
1706
+ disabled,
1707
+ loading,
1708
+ className,
1709
+ onChange: handleChange,
1710
+ onPageChange: pageChange
1711
+ }
1712
+ );
1713
+ };
1714
+ var MultiSelectServer_default = MultiSelectServer;
1715
+
1716
+ // src/components/MultiSelect/MultiSelect.tsx
1717
+ var import_jsx_runtime24 = require("react/jsx-runtime");
1718
+ var MultiSelect3 = (props) => {
1719
+ return props.filterMode === "client" ? /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(MultiSelectClient_default, __spreadValues({}, props)) : /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(MultiSelectServer_default, __spreadValues({}, props));
1720
+ };
1721
+ var MultiSelect_default = MultiSelect3;
1722
+
1723
+ // src/hooks/useLocalStorage.tsx
1724
+ var import_react32 = require("react");
1147
1725
 
1148
1726
  // src/hooks/useEventListener.tsx
1149
- var import_react26 = require("react");
1727
+ var import_react31 = require("react");
1150
1728
 
1151
1729
  // src/hooks/useIsomorphicLayoutEffect.tsx
1152
- var import_react25 = require("react");
1153
- var useIsomorphicLayoutEffect = typeof window !== "undefined" ? import_react25.useLayoutEffect : import_react25.useEffect;
1730
+ var import_react30 = require("react");
1731
+ var useIsomorphicLayoutEffect = typeof window !== "undefined" ? import_react30.useLayoutEffect : import_react30.useEffect;
1154
1732
  var useIsomorphicLayoutEffect_default = useIsomorphicLayoutEffect;
1155
1733
 
1156
1734
  // src/hooks/useEventListener.tsx
1157
1735
  function useEventListener(handler) {
1158
- const savedHandler = (0, import_react26.useRef)(handler);
1736
+ const savedHandler = (0, import_react31.useRef)(handler);
1159
1737
  useIsomorphicLayoutEffect_default(() => {
1160
1738
  savedHandler.current = handler;
1161
1739
  }, [handler]);
@@ -1164,7 +1742,7 @@ var useEventListener_default = useEventListener;
1164
1742
 
1165
1743
  // src/hooks/useLocalStorage.tsx
1166
1744
  function useLocalStorage(key, initialValue) {
1167
- const readValue = (0, import_react27.useCallback)(() => {
1745
+ const readValue = (0, import_react32.useCallback)(() => {
1168
1746
  if (typeof window === "undefined") {
1169
1747
  return initialValue;
1170
1748
  }
@@ -1176,8 +1754,8 @@ function useLocalStorage(key, initialValue) {
1176
1754
  return initialValue;
1177
1755
  }
1178
1756
  }, [initialValue, key]);
1179
- const [storedValue, setStoredValue] = (0, import_react27.useState)(readValue);
1180
- const setValue = (0, import_react27.useCallback)(
1757
+ const [storedValue, setStoredValue] = (0, import_react32.useState)(readValue);
1758
+ const setValue = (0, import_react32.useCallback)(
1181
1759
  (value) => {
1182
1760
  if (typeof window == "undefined") {
1183
1761
  console.warn(`Tried setting localStorage key \u201C${key}\u201D even though environment is not a client`);
@@ -1193,10 +1771,10 @@ function useLocalStorage(key, initialValue) {
1193
1771
  },
1194
1772
  [key, storedValue]
1195
1773
  );
1196
- (0, import_react27.useEffect)(() => {
1774
+ (0, import_react32.useEffect)(() => {
1197
1775
  setStoredValue(readValue());
1198
1776
  }, []);
1199
- const handleStorageChange = (0, import_react27.useCallback)(() => {
1777
+ const handleStorageChange = (0, import_react32.useCallback)(() => {
1200
1778
  setStoredValue(readValue());
1201
1779
  }, [readValue]);
1202
1780
  useEventListener_default("storage", handleStorageChange);
@@ -1207,28 +1785,27 @@ function parseJSON(value) {
1207
1785
  try {
1208
1786
  return value === "undefined" ? void 0 : JSON.parse(value != null ? value : "");
1209
1787
  } catch (e) {
1210
- console.log("parsing error on", { value });
1211
1788
  return void 0;
1212
1789
  }
1213
1790
  }
1214
1791
 
1215
1792
  // src/hooks/usePrevious.tsx
1216
- var import_react28 = require("react");
1793
+ var import_react33 = require("react");
1217
1794
  var usePrevious = (value) => {
1218
- const ref = (0, import_react28.useRef)();
1219
- (0, import_react28.useEffect)(() => {
1795
+ const ref = (0, import_react33.useRef)();
1796
+ (0, import_react33.useEffect)(() => {
1220
1797
  ref.current = value;
1221
1798
  });
1222
1799
  return ref.current;
1223
1800
  };
1224
1801
 
1225
1802
  // src/hooks/useStep.tsx
1226
- var import_react29 = require("react");
1803
+ var import_react34 = require("react");
1227
1804
  var useStep = (maxStep) => {
1228
- const [currentStep, setCurrentStep] = (0, import_react29.useState)(1);
1229
- const canGoToNextStep = (0, import_react29.useMemo)(() => currentStep + 1 <= maxStep, [currentStep, maxStep]);
1230
- const canGoToPrevStep = (0, import_react29.useMemo)(() => currentStep - 1 >= 1, [currentStep]);
1231
- const setStep = (0, import_react29.useCallback)(
1805
+ const [currentStep, setCurrentStep] = (0, import_react34.useState)(1);
1806
+ const canGoToNextStep = (0, import_react34.useMemo)(() => currentStep + 1 <= maxStep, [currentStep, maxStep]);
1807
+ const canGoToPrevStep = (0, import_react34.useMemo)(() => currentStep - 1 >= 1, [currentStep]);
1808
+ const setStep = (0, import_react34.useCallback)(
1232
1809
  (step) => {
1233
1810
  const newStep = step instanceof Function ? step(currentStep) : step;
1234
1811
  if (newStep >= 1 && newStep <= maxStep) {
@@ -1239,17 +1816,17 @@ var useStep = (maxStep) => {
1239
1816
  },
1240
1817
  [maxStep, currentStep]
1241
1818
  );
1242
- const goToNextStep = (0, import_react29.useCallback)(() => {
1819
+ const goToNextStep = (0, import_react34.useCallback)(() => {
1243
1820
  if (canGoToNextStep) {
1244
1821
  setCurrentStep((step) => step + 1);
1245
1822
  }
1246
1823
  }, [canGoToNextStep]);
1247
- const goToPrevStep = (0, import_react29.useCallback)(() => {
1824
+ const goToPrevStep = (0, import_react34.useCallback)(() => {
1248
1825
  if (canGoToPrevStep) {
1249
1826
  setCurrentStep((step) => step - 1);
1250
1827
  }
1251
1828
  }, [canGoToPrevStep]);
1252
- const reset = (0, import_react29.useCallback)(() => {
1829
+ const reset = (0, import_react34.useCallback)(() => {
1253
1830
  setCurrentStep(1);
1254
1831
  }, []);
1255
1832
  return [
@@ -1274,6 +1851,7 @@ var useStep = (maxStep) => {
1274
1851
  CollapseContent,
1275
1852
  CollapseContext,
1276
1853
  CollapseTrigger,
1854
+ Drawer,
1277
1855
  Icon,
1278
1856
  Menu,
1279
1857
  MenuContext,
@@ -1281,7 +1859,9 @@ var useStep = (maxStep) => {
1281
1859
  MenuItem,
1282
1860
  MenuSubmenu,
1283
1861
  MenuValueContext,
1862
+ MultiSelect,
1284
1863
  Portal,
1864
+ Select,
1285
1865
  Tab,
1286
1866
  Tabs,
1287
1867
  Toolbar,