lecom-ui 5.4.30 → 5.4.32
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/README.md +1 -1
- package/dist/components/Combobox/Combobox.js +42 -178
- package/dist/components/DataTable/DataTable.js +2 -2
- package/dist/components/DataTable/DataTable.utils.js +1 -1
- package/dist/components/DataTable/Table.js +1 -1
- package/dist/components/Header/SearchInput.js +1 -4
- package/dist/components/Input/Input.js +2 -2
- package/dist/components/Layout/Layout.js +0 -3
- package/dist/components/MultiSelect/MultiSelect.js +118 -206
- package/dist/components/Pagination/Pagination.js +5 -20
- package/dist/components/ScrollArea/ScrollArea.js +1 -1
- package/dist/components/TagInput/TagInput.js +12 -36
- package/dist/i18n/locales/en_us.js +2 -4
- package/dist/i18n/locales/es_es.js +2 -4
- package/dist/i18n/locales/pt_br.js +2 -4
- package/dist/index.d.ts +4 -9
- package/dist/plugin/extend.js +79 -79
- package/dist/plugin/fontFaces.js +172 -172
- package/dist/plugin/general.js +12 -12
- package/dist/plugin/pluginDev.cjs +5 -5
- package/dist/plugin/pluginNext.cjs +5 -5
- package/dist/plugin/pluginNextTurbo.cjs +5 -5
- package/dist/plugin/pluginVite.cjs +5 -5
- package/dist/plugin/template.js +31 -31
- package/dist/plugin/typographies.js +152 -152
- package/dist/plugin/varsTheme.js +79 -79
- package/dist/style.min.css +1 -1
- package/package.json +1 -1
- package/dist/components/Collapse/Collapse.js +0 -94
- package/dist/components/CustomIcon/Icons/CadastroFacil.js +0 -23
- package/dist/components/CustomIcon/Icons/LogoLecom.js +0 -30
- package/dist/components/CustomIcon/Icons/LogoLecomBrand.js +0 -23
- package/dist/components/CustomIcon/Icons/ModoTeste.js +0 -23
- package/dist/components/CustomIcon/Icons/Rpa.js +0 -23
- package/dist/components/CustomIcon/Icons/SairModoTeste.js +0 -31
- package/dist/components/IconHandler/IconHandler.js +0 -99
|
@@ -56,16 +56,13 @@ const MultiSelect = React.forwardRef(
|
|
|
56
56
|
allowTypoDistance = 0,
|
|
57
57
|
groupedOptions,
|
|
58
58
|
classNameContent,
|
|
59
|
-
size = "medium"
|
|
60
|
-
disabled = false
|
|
59
|
+
size = "medium"
|
|
61
60
|
}, ref) => {
|
|
62
61
|
const { t } = useTranslation();
|
|
63
62
|
const [selectedValues, setSelectedValues] = React.useState(value);
|
|
64
63
|
const [isPopoverOpen, setIsPopoverOpen] = React.useState(false);
|
|
65
64
|
const [query, setQuery] = React.useState("");
|
|
66
|
-
const [dynamicMaxCount, setDynamicMaxCount] = React.useState(
|
|
67
|
-
selectedValues.length || 1
|
|
68
|
-
);
|
|
65
|
+
const [dynamicMaxCount, setDynamicMaxCount] = React.useState(selectedValues.length || 1);
|
|
69
66
|
const buttonRef = React.useRef(null);
|
|
70
67
|
React.useEffect(() => {
|
|
71
68
|
const shallowEqual = (a, b) => {
|
|
@@ -343,10 +340,7 @@ const MultiSelect = React.forwardRef(
|
|
|
343
340
|
if (!node.children || node.children.length === 0) {
|
|
344
341
|
return [node.value];
|
|
345
342
|
}
|
|
346
|
-
return [
|
|
347
|
-
node.value,
|
|
348
|
-
...node.children.flatMap((c) => collectAllValues(c))
|
|
349
|
-
];
|
|
343
|
+
return [node.value, ...node.children.flatMap((c) => collectAllValues(c))];
|
|
350
344
|
}
|
|
351
345
|
};
|
|
352
346
|
const isNodeFullySelected = (node) => {
|
|
@@ -520,60 +514,40 @@ const MultiSelect = React.forwardRef(
|
|
|
520
514
|
transition-all duration-300 outline-none
|
|
521
515
|
[&_svg]:pointer-events-auto`,
|
|
522
516
|
maxCount === void 0 && TRIGGER_HEIGHT_CLASSES[size],
|
|
523
|
-
disabled && "opacity-50 cursor-not-allowed pointer-events-none",
|
|
524
517
|
className
|
|
525
518
|
),
|
|
526
|
-
"aria-expanded": isPopoverOpen
|
|
527
|
-
disabled
|
|
519
|
+
"aria-expanded": isPopoverOpen
|
|
528
520
|
},
|
|
529
521
|
selectedValues.length > 0 ? /* @__PURE__ */ React.createElement("div", { className: "flex justify-between items-center w-full" }, /* @__PURE__ */ React.createElement("div", { className: "flex flex-wrap items-center gap-1" }, selectedValues.slice(0, dynamicMaxCount).map((value2) => {
|
|
530
|
-
const selectedOption = options.find(
|
|
531
|
-
(option) => option.value === value2
|
|
532
|
-
);
|
|
522
|
+
const selectedOption = options.find((option) => option.value === value2);
|
|
533
523
|
const label = findTreeLabel(value2) || selectedOption?.label || value2;
|
|
534
524
|
const prefix = selectedOption?.prefix;
|
|
535
|
-
return /* @__PURE__ */ React.createElement(
|
|
536
|
-
|
|
525
|
+
return /* @__PURE__ */ React.createElement(Tag, { key: value2, color: "blue", className: "focus:ring-0 flex items-center gap-2 max-w-[15.625rem]" }, /* @__PURE__ */ React.createElement("div", { className: "flex items-center gap-2 truncate min-w-0" }, prefix && /* @__PURE__ */ React.createElement(
|
|
526
|
+
Typography,
|
|
537
527
|
{
|
|
538
|
-
|
|
539
|
-
|
|
540
|
-
className: "focus:ring-0 flex items-center gap-2 max-w-[15.625rem]"
|
|
528
|
+
className: "flex items-center flex-shrink-0 [&_svg]:text-blue-600",
|
|
529
|
+
textColor: "text-blue-600"
|
|
541
530
|
},
|
|
542
|
-
|
|
543
|
-
|
|
544
|
-
|
|
545
|
-
|
|
546
|
-
|
|
547
|
-
|
|
548
|
-
|
|
549
|
-
|
|
550
|
-
|
|
551
|
-
|
|
552
|
-
|
|
553
|
-
|
|
554
|
-
|
|
555
|
-
|
|
556
|
-
|
|
557
|
-
|
|
558
|
-
!disabled && /* @__PURE__ */ React.createElement(
|
|
559
|
-
X,
|
|
560
|
-
{
|
|
561
|
-
className: "h-4 w-4 cursor-pointer flex-shrink-0",
|
|
562
|
-
onClick: (event) => {
|
|
563
|
-
event.stopPropagation();
|
|
564
|
-
toggleOption(value2);
|
|
565
|
-
}
|
|
531
|
+
prefix
|
|
532
|
+
), /* @__PURE__ */ React.createElement(
|
|
533
|
+
Typography,
|
|
534
|
+
{
|
|
535
|
+
variant: getFontVariant(size),
|
|
536
|
+
textColor: "text-blue-600",
|
|
537
|
+
className: "truncate"
|
|
538
|
+
},
|
|
539
|
+
label
|
|
540
|
+
)), /* @__PURE__ */ React.createElement(
|
|
541
|
+
X,
|
|
542
|
+
{
|
|
543
|
+
className: "h-4 w-4 cursor-pointer flex-shrink-0",
|
|
544
|
+
onClick: (event) => {
|
|
545
|
+
event.stopPropagation();
|
|
546
|
+
toggleOption(value2);
|
|
566
547
|
}
|
|
567
|
-
|
|
568
|
-
);
|
|
569
|
-
}), selectedValues.length > dynamicMaxCount && /* @__PURE__ */ React.createElement(Tag, { color: "blue", className: "focus:ring-0" }, /* @__PURE__ */ React.createElement(
|
|
570
|
-
Typography,
|
|
571
|
-
{
|
|
572
|
-
variant: getFontVariant(size),
|
|
573
|
-
className: "text-blue-600"
|
|
574
|
-
},
|
|
575
|
-
`+ ${selectedValues.length - dynamicMaxCount}`
|
|
576
|
-
))), /* @__PURE__ */ React.createElement("div", { className: "flex items-center justify-between" }, !disabled && /* @__PURE__ */ React.createElement(React.Fragment, null, /* @__PURE__ */ React.createElement(
|
|
548
|
+
}
|
|
549
|
+
));
|
|
550
|
+
}), selectedValues.length > dynamicMaxCount && /* @__PURE__ */ React.createElement(Tag, { color: "blue", className: "focus:ring-0" }, /* @__PURE__ */ React.createElement(Typography, { variant: getFontVariant(size), className: "text-blue-600" }, `+ ${selectedValues.length - dynamicMaxCount}`))), /* @__PURE__ */ React.createElement("div", { className: "flex items-center justify-between" }, /* @__PURE__ */ React.createElement(
|
|
577
551
|
X,
|
|
578
552
|
{
|
|
579
553
|
className: "h-4 w-4 cursor-pointer text-grey-800",
|
|
@@ -588,11 +562,11 @@ const MultiSelect = React.forwardRef(
|
|
|
588
562
|
orientation: "vertical",
|
|
589
563
|
className: "flex min-h-4 mx-1 h-full"
|
|
590
564
|
}
|
|
591
|
-
)
|
|
565
|
+
), isPopoverOpen ? /* @__PURE__ */ React.createElement(ChevronUp, { className: "h-4 w-4 cursor-pointer text-grey-800" }) : /* @__PURE__ */ React.createElement(ChevronDown, { className: "h-4 w-4 cursor-pointer text-grey-800" }))) : /* @__PURE__ */ React.createElement("div", { className: "flex items-center justify-between w-full mx-auto" }, /* @__PURE__ */ React.createElement(
|
|
592
566
|
Typography,
|
|
593
567
|
{
|
|
594
568
|
variant: getFontVariant(size),
|
|
595
|
-
className: "text-grey-
|
|
569
|
+
className: "text-grey-800 mx-3"
|
|
596
570
|
},
|
|
597
571
|
placeholder
|
|
598
572
|
), isPopoverOpen ? /* @__PURE__ */ React.createElement(ChevronUp, { className: "h-4 cursor-pointer text-grey-800 mx-2" }) : /* @__PURE__ */ React.createElement(ChevronDown, { className: "h-4 cursor-pointer text-grey-800 mx-2" }))
|
|
@@ -609,155 +583,114 @@ const MultiSelect = React.forwardRef(
|
|
|
609
583
|
align: "start",
|
|
610
584
|
onEscapeKeyDown: () => setIsPopoverOpen(false)
|
|
611
585
|
},
|
|
612
|
-
!isTree && /* @__PURE__ */ React.createElement(
|
|
613
|
-
|
|
586
|
+
!isTree && /* @__PURE__ */ React.createElement(Command, { shouldFilter: false, className: SEARCH_INPUT_CLASSES[size] }, /* @__PURE__ */ React.createElement(
|
|
587
|
+
CommandInput,
|
|
588
|
+
{
|
|
589
|
+
placeholder: treeSearchPlaceholder || t("multiSelect.search"),
|
|
590
|
+
onKeyDown: handleInputKeyDown,
|
|
591
|
+
value: query,
|
|
592
|
+
onValueChange: (v) => setQuery(v)
|
|
593
|
+
}
|
|
594
|
+
), /* @__PURE__ */ React.createElement(CommandList, null, /* @__PURE__ */ React.createElement(CommandGroup, null, (effectiveOptions.length === 0 || query && filteredOptions.length === 0) && /* @__PURE__ */ React.createElement(CommandEmpty, { className: cn("p-4 text-center text-grey-800", getFontVariant(size)) }, t("multiSelect.empty")), !query && effectiveOptions.length > 0 && /* @__PURE__ */ React.createElement(
|
|
595
|
+
CommandItem,
|
|
614
596
|
{
|
|
615
|
-
|
|
616
|
-
|
|
597
|
+
key: "all",
|
|
598
|
+
onSelect: toggleAll,
|
|
599
|
+
className: "cursor-pointer"
|
|
617
600
|
},
|
|
618
601
|
/* @__PURE__ */ React.createElement(
|
|
619
|
-
|
|
620
|
-
{
|
|
621
|
-
placeholder: treeSearchPlaceholder || t("multiSelect.search"),
|
|
622
|
-
onKeyDown: handleInputKeyDown,
|
|
623
|
-
value: query,
|
|
624
|
-
onValueChange: (v) => setQuery(v)
|
|
625
|
-
}
|
|
626
|
-
),
|
|
627
|
-
/* @__PURE__ */ React.createElement(CommandList, null, /* @__PURE__ */ React.createElement(CommandGroup, null, (effectiveOptions.length === 0 || query && filteredOptions.length === 0) && /* @__PURE__ */ React.createElement(
|
|
628
|
-
CommandEmpty,
|
|
602
|
+
"div",
|
|
629
603
|
{
|
|
630
604
|
className: cn(
|
|
631
|
-
"
|
|
632
|
-
|
|
605
|
+
"flex h-4 w-4 items-center justify-center rounded-sm border border-grey-800",
|
|
606
|
+
selectedValues.length > 0 ? "bg-blue-600 border-blue-600 text-primary-foreground" : "opacity-50 [&_svg]:invisible"
|
|
633
607
|
)
|
|
634
608
|
},
|
|
635
|
-
|
|
636
|
-
),
|
|
609
|
+
selectedValues.length === effectiveOptions.length ? /* @__PURE__ */ React.createElement(Check, { className: "!h-3 !w-3 !text-white", strokeWidth: 3 }) : /* @__PURE__ */ React.createElement(Minus, { className: "!h-3 !w-3 !text-white", strokeWidth: 3 })
|
|
610
|
+
),
|
|
611
|
+
/* @__PURE__ */ React.createElement(
|
|
612
|
+
Typography,
|
|
613
|
+
{
|
|
614
|
+
variant: getFontVariant(size),
|
|
615
|
+
className: "text-grey-800"
|
|
616
|
+
},
|
|
617
|
+
selectAllLabel ?? t("multiSelect.selectAll")
|
|
618
|
+
)
|
|
619
|
+
), isGrouped ? Object.entries(groupedOptions).map(
|
|
620
|
+
([categoryName, categoryOptions]) => {
|
|
621
|
+
const filtered = categoryOptions.filter(
|
|
622
|
+
(opt) => !query || effectiveOptions.some(
|
|
623
|
+
(eff) => eff.value === opt.value && filteredOptions.some(
|
|
624
|
+
(filt) => filt.value === opt.value
|
|
625
|
+
)
|
|
626
|
+
)
|
|
627
|
+
);
|
|
628
|
+
if (!filtered.length) return null;
|
|
629
|
+
return /* @__PURE__ */ React.createElement("div", { key: categoryName }, /* @__PURE__ */ React.createElement("div", { className: "px-2 py-2 text-xs font-medium text-muted-foreground" }, categoryName), filtered.map((option) => {
|
|
630
|
+
const isSelected = selectedValues.includes(
|
|
631
|
+
option.value
|
|
632
|
+
);
|
|
633
|
+
return /* @__PURE__ */ React.createElement(
|
|
634
|
+
CommandItem,
|
|
635
|
+
{
|
|
636
|
+
key: option.value,
|
|
637
|
+
onSelect: () => toggleOption(option.value),
|
|
638
|
+
className: "cursor-pointer"
|
|
639
|
+
},
|
|
640
|
+
/* @__PURE__ */ React.createElement(
|
|
641
|
+
"div",
|
|
642
|
+
{
|
|
643
|
+
className: cn(
|
|
644
|
+
"flex h-4 w-4 items-center justify-center rounded-sm border-2 border-grey-400 flex-shrink-0",
|
|
645
|
+
isSelected ? "bg-blue-600 border-blue-600 text-primary-foreground" : "opacity-50 [&_svg]:invisible"
|
|
646
|
+
)
|
|
647
|
+
},
|
|
648
|
+
/* @__PURE__ */ React.createElement(Check, { className: "!h-3 !w-3 !text-white", strokeWidth: 3 })
|
|
649
|
+
),
|
|
650
|
+
/* @__PURE__ */ React.createElement("div", { className: "flex items-center gap-2 truncate min-w-0" }, option.prefix && /* @__PURE__ */ React.createElement(Typography, { className: "flex items-center flex-shrink-0" }, option.prefix), /* @__PURE__ */ React.createElement(
|
|
651
|
+
Typography,
|
|
652
|
+
{
|
|
653
|
+
variant: getFontVariant(size),
|
|
654
|
+
className: "text-grey-800 truncate overflow-hidden",
|
|
655
|
+
title: option.label
|
|
656
|
+
},
|
|
657
|
+
highlight(option.label, query)
|
|
658
|
+
))
|
|
659
|
+
);
|
|
660
|
+
}));
|
|
661
|
+
}
|
|
662
|
+
) : filteredOptions.map((option) => {
|
|
663
|
+
const isSelected = selectedValues.includes(
|
|
664
|
+
option.value
|
|
665
|
+
);
|
|
666
|
+
return /* @__PURE__ */ React.createElement(
|
|
637
667
|
CommandItem,
|
|
638
668
|
{
|
|
639
|
-
key:
|
|
640
|
-
onSelect:
|
|
669
|
+
key: option.value,
|
|
670
|
+
onSelect: () => toggleOption(option.value),
|
|
641
671
|
className: "cursor-pointer"
|
|
642
672
|
},
|
|
643
673
|
/* @__PURE__ */ React.createElement(
|
|
644
674
|
"div",
|
|
645
675
|
{
|
|
646
676
|
className: cn(
|
|
647
|
-
"flex h-4 w-4 items-center justify-center rounded-sm border border-grey-800",
|
|
648
|
-
|
|
677
|
+
"flex h-4 w-4 items-center justify-center rounded-sm border border-grey-800 flex-shrink-0",
|
|
678
|
+
isSelected ? "bg-blue-600 border-blue-600 text-primary-foreground" : "opacity-50 [&_svg]:invisible"
|
|
649
679
|
)
|
|
650
680
|
},
|
|
651
|
-
|
|
652
|
-
Check,
|
|
653
|
-
{
|
|
654
|
-
className: "!h-3 !w-3 !text-white",
|
|
655
|
-
strokeWidth: 3
|
|
656
|
-
}
|
|
657
|
-
) : /* @__PURE__ */ React.createElement(
|
|
658
|
-
Minus,
|
|
659
|
-
{
|
|
660
|
-
className: "!h-3 !w-3 !text-white",
|
|
661
|
-
strokeWidth: 3
|
|
662
|
-
}
|
|
663
|
-
)
|
|
681
|
+
/* @__PURE__ */ React.createElement(Check, { className: "!h-3 !w-3 !text-white", strokeWidth: 3 })
|
|
664
682
|
),
|
|
665
|
-
/* @__PURE__ */ React.createElement(
|
|
683
|
+
/* @__PURE__ */ React.createElement("div", { className: "flex items-center gap-2 truncate min-w-0" }, option.prefix && /* @__PURE__ */ React.createElement(Typography, { className: "flex items-center flex-shrink-0" }, option.prefix), /* @__PURE__ */ React.createElement(
|
|
666
684
|
Typography,
|
|
667
685
|
{
|
|
668
686
|
variant: getFontVariant(size),
|
|
669
|
-
className: "text-grey-800"
|
|
670
|
-
|
|
671
|
-
selectAllLabel ?? t("multiSelect.selectAll")
|
|
672
|
-
)
|
|
673
|
-
), isGrouped ? Object.entries(groupedOptions).map(
|
|
674
|
-
([categoryName, categoryOptions]) => {
|
|
675
|
-
const filtered = categoryOptions.filter(
|
|
676
|
-
(opt) => !query || effectiveOptions.some(
|
|
677
|
-
(eff) => eff.value === opt.value && filteredOptions.some(
|
|
678
|
-
(filt) => filt.value === opt.value
|
|
679
|
-
)
|
|
680
|
-
)
|
|
681
|
-
);
|
|
682
|
-
if (!filtered.length) return null;
|
|
683
|
-
return /* @__PURE__ */ React.createElement("div", { key: categoryName }, /* @__PURE__ */ React.createElement("div", { className: "px-2 py-2 text-xs font-medium text-muted-foreground" }, categoryName), filtered.map((option) => {
|
|
684
|
-
const isSelected = selectedValues.includes(
|
|
685
|
-
option.value
|
|
686
|
-
);
|
|
687
|
-
return /* @__PURE__ */ React.createElement(
|
|
688
|
-
CommandItem,
|
|
689
|
-
{
|
|
690
|
-
key: option.value,
|
|
691
|
-
onSelect: () => toggleOption(option.value),
|
|
692
|
-
className: "cursor-pointer"
|
|
693
|
-
},
|
|
694
|
-
/* @__PURE__ */ React.createElement(
|
|
695
|
-
"div",
|
|
696
|
-
{
|
|
697
|
-
className: cn(
|
|
698
|
-
"flex h-4 w-4 items-center justify-center rounded-sm border-2 border-grey-400 flex-shrink-0",
|
|
699
|
-
isSelected ? "bg-blue-600 border-blue-600 text-primary-foreground" : "opacity-50 [&_svg]:invisible"
|
|
700
|
-
)
|
|
701
|
-
},
|
|
702
|
-
/* @__PURE__ */ React.createElement(
|
|
703
|
-
Check,
|
|
704
|
-
{
|
|
705
|
-
className: "!h-3 !w-3 !text-white",
|
|
706
|
-
strokeWidth: 3
|
|
707
|
-
}
|
|
708
|
-
)
|
|
709
|
-
),
|
|
710
|
-
/* @__PURE__ */ React.createElement("div", { className: "flex items-center gap-2 truncate min-w-0" }, option.prefix && /* @__PURE__ */ React.createElement(Typography, { className: "flex items-center flex-shrink-0" }, option.prefix), /* @__PURE__ */ React.createElement(
|
|
711
|
-
Typography,
|
|
712
|
-
{
|
|
713
|
-
variant: getFontVariant(size),
|
|
714
|
-
className: "text-grey-800 truncate overflow-hidden",
|
|
715
|
-
title: option.label
|
|
716
|
-
},
|
|
717
|
-
highlight(option.label, query)
|
|
718
|
-
))
|
|
719
|
-
);
|
|
720
|
-
}));
|
|
721
|
-
}
|
|
722
|
-
) : filteredOptions.map((option) => {
|
|
723
|
-
const isSelected = selectedValues.includes(
|
|
724
|
-
option.value
|
|
725
|
-
);
|
|
726
|
-
return /* @__PURE__ */ React.createElement(
|
|
727
|
-
CommandItem,
|
|
728
|
-
{
|
|
729
|
-
key: option.value,
|
|
730
|
-
onSelect: () => toggleOption(option.value),
|
|
731
|
-
className: "cursor-pointer"
|
|
687
|
+
className: "text-grey-800 truncate overflow-hidden",
|
|
688
|
+
title: option.label
|
|
732
689
|
},
|
|
733
|
-
|
|
734
|
-
|
|
735
|
-
|
|
736
|
-
|
|
737
|
-
"flex h-4 w-4 items-center justify-center rounded-sm border border-grey-800 flex-shrink-0",
|
|
738
|
-
isSelected ? "bg-blue-600 border-blue-600 text-primary-foreground" : "opacity-50 [&_svg]:invisible"
|
|
739
|
-
)
|
|
740
|
-
},
|
|
741
|
-
/* @__PURE__ */ React.createElement(
|
|
742
|
-
Check,
|
|
743
|
-
{
|
|
744
|
-
className: "!h-3 !w-3 !text-white",
|
|
745
|
-
strokeWidth: 3
|
|
746
|
-
}
|
|
747
|
-
)
|
|
748
|
-
),
|
|
749
|
-
/* @__PURE__ */ React.createElement("div", { className: "flex items-center gap-2 truncate min-w-0" }, option.prefix && /* @__PURE__ */ React.createElement(Typography, { className: "flex items-center flex-shrink-0" }, option.prefix), /* @__PURE__ */ React.createElement(
|
|
750
|
-
Typography,
|
|
751
|
-
{
|
|
752
|
-
variant: getFontVariant(size),
|
|
753
|
-
className: "text-grey-800 truncate overflow-hidden",
|
|
754
|
-
title: option.label
|
|
755
|
-
},
|
|
756
|
-
highlight(option.label, query)
|
|
757
|
-
))
|
|
758
|
-
);
|
|
759
|
-
})))
|
|
760
|
-
),
|
|
690
|
+
highlight(option.label, query)
|
|
691
|
+
))
|
|
692
|
+
);
|
|
693
|
+
})))),
|
|
761
694
|
isTree && /* @__PURE__ */ React.createElement("div", { className: "min-w-[260px] max-h-80 overflow-hidden flex flex-col" }, treeSearch && /* @__PURE__ */ React.createElement("div", { className: "px-1 pt-2 pb-0 border-b border-grey-300 flex-shrink-0" }, /* @__PURE__ */ React.createElement("div", { className: "relative" }, /* @__PURE__ */ React.createElement(
|
|
762
695
|
"svg",
|
|
763
696
|
{
|
|
@@ -812,19 +745,7 @@ const MultiSelect = React.forwardRef(
|
|
|
812
745
|
acc += treeSelectionStrategy === "all" ? 1 + countAll(n.children) : countAll(n.children);
|
|
813
746
|
}
|
|
814
747
|
return acc;
|
|
815
|
-
}(treeOptions) ? /* @__PURE__ */ React.createElement(
|
|
816
|
-
Check,
|
|
817
|
-
{
|
|
818
|
-
className: "!h-3 !w-3 !text-white",
|
|
819
|
-
strokeWidth: 3
|
|
820
|
-
}
|
|
821
|
-
) : /* @__PURE__ */ React.createElement(
|
|
822
|
-
Minus,
|
|
823
|
-
{
|
|
824
|
-
className: "!h-3 !w-3 !text-white",
|
|
825
|
-
strokeWidth: 3
|
|
826
|
-
}
|
|
827
|
-
)
|
|
748
|
+
}(treeOptions) ? /* @__PURE__ */ React.createElement(Check, { className: "!h-3 !w-3 !text-white", strokeWidth: 3 }) : /* @__PURE__ */ React.createElement(Minus, { className: "!h-3 !w-3 !text-white", strokeWidth: 3 })
|
|
828
749
|
),
|
|
829
750
|
/* @__PURE__ */ React.createElement(
|
|
830
751
|
Typography,
|
|
@@ -834,16 +755,7 @@ const MultiSelect = React.forwardRef(
|
|
|
834
755
|
},
|
|
835
756
|
selectAllLabel ?? t("multiSelect.selectAll")
|
|
836
757
|
)
|
|
837
|
-
), !treeOptions || treeOptions.length === 0 || treeQuery && displayedTree.length === 0 ? /* @__PURE__ */ React.createElement(
|
|
838
|
-
"div",
|
|
839
|
-
{
|
|
840
|
-
className: cn(
|
|
841
|
-
"p-4 text-center text-grey-800",
|
|
842
|
-
getFontVariant(size)
|
|
843
|
-
)
|
|
844
|
-
},
|
|
845
|
-
t("multiSelect.empty")
|
|
846
|
-
) : renderTree(displayedTree)))
|
|
758
|
+
), !treeOptions || treeOptions.length === 0 || treeQuery && displayedTree.length === 0 ? /* @__PURE__ */ React.createElement("div", { className: cn("p-4 text-center text-grey-800", getFontVariant(size)) }, t("multiSelect.empty")) : renderTree(displayedTree)))
|
|
847
759
|
)
|
|
848
760
|
);
|
|
849
761
|
}
|
|
@@ -145,8 +145,7 @@ const PaginationPerPage = ({
|
|
|
145
145
|
className,
|
|
146
146
|
onChangePerPage,
|
|
147
147
|
perPage,
|
|
148
|
-
totalRowsSelected = 0
|
|
149
|
-
maxSelection
|
|
148
|
+
totalRowsSelected = 0
|
|
150
149
|
}) => {
|
|
151
150
|
const { t } = useTranslation();
|
|
152
151
|
const perPageOptions = [
|
|
@@ -166,12 +165,6 @@ const PaginationPerPage = ({
|
|
|
166
165
|
if (!onChangePerPage) {
|
|
167
166
|
return null;
|
|
168
167
|
}
|
|
169
|
-
const getSelectedText = () => {
|
|
170
|
-
if (maxSelection === 1 && totalRowsSelected === 1) {
|
|
171
|
-
return `${totalRowsSelected} ${t("pagination.selectedItemSingular")}`;
|
|
172
|
-
}
|
|
173
|
-
return `${totalRowsSelected} ${t("pagination.selectedProcess")}`;
|
|
174
|
-
};
|
|
175
168
|
return /* @__PURE__ */ React.createElement("div", { className: cn("flex items-center gap-4", className) }, /* @__PURE__ */ React.createElement(DropdownMenu, null, /* @__PURE__ */ React.createElement(DropdownMenuTrigger, { asChild: true }, /* @__PURE__ */ React.createElement(Button, { size: "small", color: "grey", variant: "outlined" }, /* @__PURE__ */ React.createElement("span", { className: "max-md:hidden" }, t("pagination.show")), " ", perPage, /* @__PURE__ */ React.createElement(ChevronDown, { size: 20 }))), /* @__PURE__ */ React.createElement(DropdownMenuContent, { side: "top", align: "center" }, perPageOptions.map((option) => /* @__PURE__ */ React.createElement(
|
|
176
169
|
DropdownMenuItem,
|
|
177
170
|
{
|
|
@@ -181,7 +174,7 @@ const PaginationPerPage = ({
|
|
|
181
174
|
}
|
|
182
175
|
},
|
|
183
176
|
option.value.toString()
|
|
184
|
-
)))), totalRowsSelected > 0 && /* @__PURE__ */ React.createElement(Typography, { variant: "heading-xxsmall-600", textColor: "text-grey-800" },
|
|
177
|
+
)))), totalRowsSelected > 0 && /* @__PURE__ */ React.createElement(Typography, { variant: "heading-xxsmall-600", textColor: "text-grey-800" }, totalRowsSelected, " ", t("pagination.selectedProcess")));
|
|
185
178
|
};
|
|
186
179
|
PaginationPerPage.displayName = "PaginationPerPage";
|
|
187
180
|
const Pagination = ({
|
|
@@ -192,8 +185,7 @@ const Pagination = ({
|
|
|
192
185
|
onChangePerPage,
|
|
193
186
|
className,
|
|
194
187
|
activeColor,
|
|
195
|
-
showPerPageSelector = true
|
|
196
|
-
maxSelection
|
|
188
|
+
showPerPageSelector = true
|
|
197
189
|
}) => {
|
|
198
190
|
const { t } = useTranslation();
|
|
199
191
|
const mapPaginationItem = (item) => {
|
|
@@ -223,12 +215,6 @@ const Pagination = ({
|
|
|
223
215
|
};
|
|
224
216
|
return React.createElement(mappedComponents[item.type], componentProps);
|
|
225
217
|
};
|
|
226
|
-
const getSelectedText = () => {
|
|
227
|
-
if (maxSelection === 1 && totalRowsSelected === 1) {
|
|
228
|
-
return `${totalRowsSelected} ${t("pagination.selectedItemSingular")}`;
|
|
229
|
-
}
|
|
230
|
-
return `${totalRowsSelected} ${t("pagination.selectedProcess")}`;
|
|
231
|
-
};
|
|
232
218
|
return /* @__PURE__ */ React.createElement(
|
|
233
219
|
"div",
|
|
234
220
|
{
|
|
@@ -239,11 +225,10 @@ const Pagination = ({
|
|
|
239
225
|
{
|
|
240
226
|
onChangePerPage,
|
|
241
227
|
perPage,
|
|
242
|
-
totalRowsSelected
|
|
243
|
-
maxSelection
|
|
228
|
+
totalRowsSelected
|
|
244
229
|
}
|
|
245
230
|
),
|
|
246
|
-
!showPerPageSelector && totalRowsSelected > 0 && /* @__PURE__ */ React.createElement(Typography, { variant: "heading-xxsmall-600", textColor: "text-grey-800" },
|
|
231
|
+
!showPerPageSelector && totalRowsSelected > 0 && /* @__PURE__ */ React.createElement(Typography, { variant: "heading-xxsmall-600", textColor: "text-grey-800" }, totalRowsSelected, " ", t("pagination.selectedProcess")),
|
|
247
232
|
/* @__PURE__ */ React.createElement("nav", { role: "navigation", "aria-label": "pagination" }, /* @__PURE__ */ React.createElement(PaginationContent, null, itemsPage.map((item) => /* @__PURE__ */ React.createElement(PaginationItem, { key: item.id }, mapPaginationItem(item)))))
|
|
248
233
|
);
|
|
249
234
|
};
|
|
@@ -27,7 +27,7 @@ const ScrollBar = React.forwardRef(({ className, orientation = "vertical", ...pr
|
|
|
27
27
|
),
|
|
28
28
|
...props
|
|
29
29
|
},
|
|
30
|
-
/* @__PURE__ */ React.createElement(ScrollAreaPrimitive.ScrollAreaThumb, { className: "relative flex-1 rounded-full bg-border
|
|
30
|
+
/* @__PURE__ */ React.createElement(ScrollAreaPrimitive.ScrollAreaThumb, { className: "relative flex-1 rounded-full bg-border" })
|
|
31
31
|
));
|
|
32
32
|
ScrollBar.displayName = ScrollAreaPrimitive.ScrollAreaScrollbar.displayName;
|
|
33
33
|
|
|
@@ -13,31 +13,15 @@ function TagItem({ item, onRemove, readOnly }) {
|
|
|
13
13
|
},
|
|
14
14
|
[item.value, onRemove]
|
|
15
15
|
);
|
|
16
|
-
return /* @__PURE__ */ React.createElement(
|
|
17
|
-
|
|
16
|
+
return /* @__PURE__ */ React.createElement(Tag, { "data-tag": "true", color: "blue", className: "max-w-[15.625rem] h-6 !px-2 !py-0.5" }, /* @__PURE__ */ React.createElement(Typography, { variant: "body-small-400", className: "text-blue-600 truncate p-0" }, item.label), !readOnly && /* @__PURE__ */ React.createElement(
|
|
17
|
+
X,
|
|
18
18
|
{
|
|
19
|
-
"
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
{
|
|
26
|
-
variant: "body-small-400",
|
|
27
|
-
className: "text-blue-600 truncate p-0"
|
|
28
|
-
},
|
|
29
|
-
item.label
|
|
30
|
-
),
|
|
31
|
-
!readOnly && /* @__PURE__ */ React.createElement(
|
|
32
|
-
X,
|
|
33
|
-
{
|
|
34
|
-
className: "w-4 h-4 cursor-pointer flex-shrink-0",
|
|
35
|
-
onClick: handleRemove,
|
|
36
|
-
"aria-label": `Remover ${item.label}`,
|
|
37
|
-
tabIndex: 0
|
|
38
|
-
}
|
|
39
|
-
)
|
|
40
|
-
);
|
|
19
|
+
className: "w-4 h-4 cursor-pointer flex-shrink-0",
|
|
20
|
+
onClick: handleRemove,
|
|
21
|
+
"aria-label": `Remover ${item.label}`,
|
|
22
|
+
tabIndex: 0
|
|
23
|
+
}
|
|
24
|
+
));
|
|
41
25
|
}
|
|
42
26
|
function HiddenCountTag({ count }) {
|
|
43
27
|
return /* @__PURE__ */ React.createElement(Tag, { color: "blue", "data-tag": "true" }, /* @__PURE__ */ React.createElement(Typography, { variant: "body-small-400", className: "text-blue-600" }, "+", count));
|
|
@@ -85,8 +69,7 @@ function useDynamicMaxCount(ref, value, maxDisplayCount) {
|
|
|
85
69
|
const [maxLines, setMaxLines] = React.useState(null);
|
|
86
70
|
const hasCalculatedMaxLines = React.useRef(false);
|
|
87
71
|
React.useEffect(() => {
|
|
88
|
-
if (hasCalculatedMaxLines.current || !ref.current || value.length === 0)
|
|
89
|
-
return;
|
|
72
|
+
if (hasCalculatedMaxLines.current || !ref.current || value.length === 0) return;
|
|
90
73
|
const calculateMaxLines = () => {
|
|
91
74
|
if (!ref.current) {
|
|
92
75
|
setTimeout(calculateMaxLines, 10);
|
|
@@ -100,10 +83,7 @@ function useDynamicMaxCount(ref, value, maxDisplayCount) {
|
|
|
100
83
|
const TAG_HEIGHT = 24;
|
|
101
84
|
const CONTAINER_PADDING_VERTICAL = 4;
|
|
102
85
|
const availableHeight = containerHeight - CONTAINER_PADDING_VERTICAL * 2;
|
|
103
|
-
const calculatedMaxLines = Math.max(
|
|
104
|
-
1,
|
|
105
|
-
Math.floor(availableHeight / TAG_HEIGHT)
|
|
106
|
-
);
|
|
86
|
+
const calculatedMaxLines = Math.max(1, Math.floor(availableHeight / TAG_HEIGHT));
|
|
107
87
|
setMaxLines(calculatedMaxLines);
|
|
108
88
|
hasCalculatedMaxLines.current = true;
|
|
109
89
|
};
|
|
@@ -146,11 +126,7 @@ function useDynamicMaxCount(ref, value, maxDisplayCount) {
|
|
|
146
126
|
setDynamicMaxCount(value.length);
|
|
147
127
|
return;
|
|
148
128
|
}
|
|
149
|
-
const count = simulateTagLayout(
|
|
150
|
-
estimatedWidths,
|
|
151
|
-
availableWidth,
|
|
152
|
-
maxLines
|
|
153
|
-
);
|
|
129
|
+
const count = simulateTagLayout(estimatedWidths, availableWidth, maxLines);
|
|
154
130
|
setDynamicMaxCount(count);
|
|
155
131
|
};
|
|
156
132
|
const rafId = requestAnimationFrame(() => {
|
|
@@ -216,7 +192,7 @@ function TagInput(props) {
|
|
|
216
192
|
style: containerStyles,
|
|
217
193
|
...restProps
|
|
218
194
|
},
|
|
219
|
-
value.length === 0 && /* @__PURE__ */ React.createElement(Typography, { variant: "body-small-400", className: "text-grey-
|
|
195
|
+
value.length === 0 && /* @__PURE__ */ React.createElement(Typography, { variant: "body-small-400", className: "text-grey-400" }, placeholder),
|
|
220
196
|
displayTags.map((item) => /* @__PURE__ */ React.createElement(
|
|
221
197
|
TagItem,
|
|
222
198
|
{
|
|
@@ -9,8 +9,7 @@ const language = {
|
|
|
9
9
|
},
|
|
10
10
|
pagination: {
|
|
11
11
|
show: "Show:",
|
|
12
|
-
selectedProcess: "
|
|
13
|
-
selectedItemSingular: "item selected"
|
|
12
|
+
selectedProcess: "selected process"
|
|
14
13
|
},
|
|
15
14
|
upload: {
|
|
16
15
|
label: "Drag and drop the file here or click to select it.",
|
|
@@ -21,8 +20,7 @@ const language = {
|
|
|
21
20
|
search: "Type to search",
|
|
22
21
|
empty: "No results found",
|
|
23
22
|
selectAll: "Select all",
|
|
24
|
-
placeholder: "Select"
|
|
25
|
-
create: "Create"
|
|
23
|
+
placeholder: "Select"
|
|
26
24
|
}
|
|
27
25
|
}
|
|
28
26
|
};
|
|
@@ -9,8 +9,7 @@ const language = {
|
|
|
9
9
|
},
|
|
10
10
|
pagination: {
|
|
11
11
|
show: "Mostrar:",
|
|
12
|
-
selectedProcess: "Item(s) seleccionado(s)"
|
|
13
|
-
selectedItemSingular: "item seleccionado"
|
|
12
|
+
selectedProcess: "Item(s) seleccionado(s)"
|
|
14
13
|
},
|
|
15
14
|
upload: {
|
|
16
15
|
label: "Arrastre y suelte el archivo aqu\xED o haga clic para seleccionarlo.",
|
|
@@ -21,8 +20,7 @@ const language = {
|
|
|
21
20
|
search: "Tipo a buscar",
|
|
22
21
|
empty: "No se han encontrado resultados",
|
|
23
22
|
selectAll: "Seleccionar todo",
|
|
24
|
-
placeholder: "Seleccionar"
|
|
25
|
-
create: "Crear"
|
|
23
|
+
placeholder: "Seleccionar"
|
|
26
24
|
}
|
|
27
25
|
}
|
|
28
26
|
};
|
|
@@ -9,8 +9,7 @@ const language = {
|
|
|
9
9
|
},
|
|
10
10
|
pagination: {
|
|
11
11
|
show: "Mostrar:",
|
|
12
|
-
selectedProcess: "Item(s) selecionado(s)"
|
|
13
|
-
selectedItemSingular: "item selecionado"
|
|
12
|
+
selectedProcess: "Item(s) selecionado(s)"
|
|
14
13
|
},
|
|
15
14
|
upload: {
|
|
16
15
|
label: "Arraste e solte o arquivo aqui ou clique para selecion\xE1-lo.",
|
|
@@ -21,8 +20,7 @@ const language = {
|
|
|
21
20
|
search: "Digite para pesquisar",
|
|
22
21
|
empty: "Nenhum resultado encontrado",
|
|
23
22
|
selectAll: "Selecionar tudo",
|
|
24
|
-
placeholder: "Selecione"
|
|
25
|
-
create: "Criar"
|
|
23
|
+
placeholder: "Selecione"
|
|
26
24
|
}
|
|
27
25
|
}
|
|
28
26
|
};
|