@mlw-packages/react-components 1.10.3 → 1.10.4
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.css +16 -79
- package/dist/index.d.mts +17 -18
- package/dist/index.d.ts +17 -18
- package/dist/index.js +215 -280
- package/dist/index.mjs +215 -280
- package/package.json +2 -2
package/dist/index.mjs
CHANGED
|
@@ -1532,7 +1532,7 @@ var TooltipContentBase = React32.forwardRef(
|
|
|
1532
1532
|
...props,
|
|
1533
1533
|
children: [
|
|
1534
1534
|
props.children,
|
|
1535
|
-
/* @__PURE__ */ jsx(TooltipPrimitive.Arrow, { className: "fill-primary" })
|
|
1535
|
+
/* @__PURE__ */ jsx(TooltipPrimitive.Arrow, { className: "fill-primary h-1.5 w-3" })
|
|
1536
1536
|
]
|
|
1537
1537
|
}
|
|
1538
1538
|
) });
|
|
@@ -2323,7 +2323,7 @@ function ComboboxBase({
|
|
|
2323
2323
|
"aria-disabled": disabled || void 0,
|
|
2324
2324
|
disabled,
|
|
2325
2325
|
className: cn(
|
|
2326
|
-
`flex items-center gap-2 justify-between [&>div]:line-clamp-1 relative h-9 no-active-animation`,
|
|
2326
|
+
`flex items-center gap-2 justify-between [&>div]:line-clamp-1 relative h-9 no-active-animation font-light`,
|
|
2327
2327
|
error && "border-red-500"
|
|
2328
2328
|
),
|
|
2329
2329
|
"data-testid": testIds.trigger ?? "combobox-trigger",
|
|
@@ -2465,7 +2465,7 @@ function Combobox({
|
|
|
2465
2465
|
className: cn(
|
|
2466
2466
|
"truncate",
|
|
2467
2467
|
disabled && "opacity-60 cursor-not-allowed",
|
|
2468
|
-
!selectedItem && "text-
|
|
2468
|
+
!selectedItem && "text-muted-foreground"
|
|
2469
2469
|
),
|
|
2470
2470
|
children: selectedItem?.label ?? placeholder ?? "Selecione uma op\xE7\xE3o..."
|
|
2471
2471
|
}
|
|
@@ -2675,46 +2675,48 @@ function MultiSelectValueBase({
|
|
|
2675
2675
|
if (valueRef.current == null) return;
|
|
2676
2676
|
const containerElement = valueRef.current;
|
|
2677
2677
|
const overflowElement = overflowRef.current;
|
|
2678
|
-
const
|
|
2678
|
+
const badgeItems = containerElement.querySelectorAll(
|
|
2679
2679
|
"[data-selected-item]"
|
|
2680
2680
|
);
|
|
2681
2681
|
if (overflowElement != null) overflowElement.style.display = "none";
|
|
2682
|
-
|
|
2682
|
+
badgeItems.forEach((child) => child.style.removeProperty("display"));
|
|
2683
|
+
if (shouldWrap) {
|
|
2684
|
+
setOverflowAmount(0);
|
|
2685
|
+
return;
|
|
2686
|
+
}
|
|
2683
2687
|
let amount = 0;
|
|
2684
|
-
for (let i =
|
|
2685
|
-
|
|
2686
|
-
|
|
2687
|
-
|
|
2688
|
-
}
|
|
2689
|
-
amount = items2.length - i;
|
|
2688
|
+
for (let i = badgeItems.length - 1; i >= 0; i--) {
|
|
2689
|
+
if (containerElement.scrollWidth <= containerElement.clientWidth) break;
|
|
2690
|
+
const child = badgeItems[i];
|
|
2691
|
+
amount = badgeItems.length - i;
|
|
2690
2692
|
child.style.display = "none";
|
|
2691
|
-
overflowElement
|
|
2693
|
+
if (overflowElement != null) {
|
|
2694
|
+
overflowElement.style.removeProperty("display");
|
|
2695
|
+
}
|
|
2692
2696
|
}
|
|
2693
2697
|
setOverflowAmount(amount);
|
|
2698
|
+
}, [shouldWrap]);
|
|
2699
|
+
useEffect(() => {
|
|
2700
|
+
if (overflowRef.current) {
|
|
2701
|
+
overflowRef.current.style.display = "none";
|
|
2702
|
+
}
|
|
2694
2703
|
}, []);
|
|
2704
|
+
useEffect(() => {
|
|
2705
|
+
checkOverflow();
|
|
2706
|
+
}, [open, shouldWrap, checkOverflow]);
|
|
2695
2707
|
const handleResize = useCallback(
|
|
2696
2708
|
(node) => {
|
|
2697
2709
|
if (node == null) {
|
|
2698
2710
|
valueRef.current = null;
|
|
2699
|
-
|
|
2700
|
-
resizeObserverRef.current.disconnect();
|
|
2701
|
-
resizeObserverRef.current = null;
|
|
2702
|
-
}
|
|
2703
|
-
if (mutationObserverRef.current) {
|
|
2704
|
-
mutationObserverRef.current.disconnect();
|
|
2705
|
-
mutationObserverRef.current = null;
|
|
2706
|
-
}
|
|
2707
|
-
return;
|
|
2708
|
-
}
|
|
2709
|
-
valueRef.current = node;
|
|
2710
|
-
if (resizeObserverRef.current) {
|
|
2711
|
-
resizeObserverRef.current.disconnect();
|
|
2711
|
+
resizeObserverRef.current?.disconnect();
|
|
2712
2712
|
resizeObserverRef.current = null;
|
|
2713
|
-
|
|
2714
|
-
if (mutationObserverRef.current) {
|
|
2715
|
-
mutationObserverRef.current.disconnect();
|
|
2713
|
+
mutationObserverRef.current?.disconnect();
|
|
2716
2714
|
mutationObserverRef.current = null;
|
|
2715
|
+
return;
|
|
2717
2716
|
}
|
|
2717
|
+
valueRef.current = node;
|
|
2718
|
+
resizeObserverRef.current?.disconnect();
|
|
2719
|
+
mutationObserverRef.current?.disconnect();
|
|
2718
2720
|
const mo = new MutationObserver(checkOverflow);
|
|
2719
2721
|
const ro = new ResizeObserver(debounce(checkOverflow, 100));
|
|
2720
2722
|
mutationObserverRef.current = mo;
|
|
@@ -2729,6 +2731,7 @@ function MultiSelectValueBase({
|
|
|
2729
2731
|
},
|
|
2730
2732
|
[checkOverflow]
|
|
2731
2733
|
);
|
|
2734
|
+
const [overflowHovered, setOverflowHovered] = useState(false);
|
|
2732
2735
|
const visibleSelected = [...selectedValues].filter((value) => items.has(value)).sort((a, b) => {
|
|
2733
2736
|
const aNode = items.get(a);
|
|
2734
2737
|
const bNode = items.get(b);
|
|
@@ -2756,7 +2759,7 @@ function MultiSelectValueBase({
|
|
|
2756
2759
|
{
|
|
2757
2760
|
"data-selected-item": true,
|
|
2758
2761
|
size: "sm",
|
|
2759
|
-
className: "group flex items-center gap-1
|
|
2762
|
+
className: "group flex items-center gap-1 border-border shrink-0",
|
|
2760
2763
|
onClick: clickToRemove ? (e) => {
|
|
2761
2764
|
e.stopPropagation();
|
|
2762
2765
|
toggleValue(value);
|
|
@@ -2768,19 +2771,38 @@ function MultiSelectValueBase({
|
|
|
2768
2771
|
},
|
|
2769
2772
|
value
|
|
2770
2773
|
)),
|
|
2771
|
-
/* @__PURE__ */ jsxs(
|
|
2772
|
-
|
|
2773
|
-
|
|
2774
|
-
|
|
2775
|
-
|
|
2776
|
-
|
|
2777
|
-
|
|
2778
|
-
|
|
2779
|
-
"
|
|
2780
|
-
|
|
2781
|
-
|
|
2782
|
-
|
|
2783
|
-
|
|
2774
|
+
overflowAmount > 0 && /* @__PURE__ */ jsx(TooltipProviderBase, { children: /* @__PURE__ */ jsxs(TooltipBase, { open: overflowHovered, children: [
|
|
2775
|
+
/* @__PURE__ */ jsx(TooltipTriggerBase, { asChild: true, children: /* @__PURE__ */ jsx(
|
|
2776
|
+
"div",
|
|
2777
|
+
{
|
|
2778
|
+
ref: overflowRef,
|
|
2779
|
+
className: "inline-flex",
|
|
2780
|
+
onMouseEnter: () => setOverflowHovered(true),
|
|
2781
|
+
onMouseLeave: () => setOverflowHovered(false),
|
|
2782
|
+
children: /* @__PURE__ */ jsxs(Badge, { size: "sm", className: "shrink-0 cursor-default", children: [
|
|
2783
|
+
"+",
|
|
2784
|
+
overflowAmount
|
|
2785
|
+
] })
|
|
2786
|
+
}
|
|
2787
|
+
) }),
|
|
2788
|
+
/* @__PURE__ */ jsxs(TooltipContentBase, { className: "p-2 max-w-xs", children: [
|
|
2789
|
+
/* @__PURE__ */ jsxs("p", { className: "text-xs font-medium text-primary-foreground/60 mb-1.5 px-1", children: [
|
|
2790
|
+
overflowAmount,
|
|
2791
|
+
" item",
|
|
2792
|
+
overflowAmount > 1 ? "s" : "",
|
|
2793
|
+
" oculto",
|
|
2794
|
+
overflowAmount > 1 ? "s" : ""
|
|
2795
|
+
] }),
|
|
2796
|
+
/* @__PURE__ */ jsx("div", { className: "flex flex-wrap gap-1", children: visibleSelected.slice(visibleSelected.length - overflowAmount).map((value) => /* @__PURE__ */ jsx(
|
|
2797
|
+
"span",
|
|
2798
|
+
{
|
|
2799
|
+
className: "inline-flex items-center rounded-md bg-primary-foreground/15 px-2 py-0.5 text-xs font-medium text-primary-foreground",
|
|
2800
|
+
children: typeof items.get(value) === "string" ? items.get(value) : value
|
|
2801
|
+
},
|
|
2802
|
+
value
|
|
2803
|
+
)) })
|
|
2804
|
+
] })
|
|
2805
|
+
] }) })
|
|
2784
2806
|
]
|
|
2785
2807
|
}
|
|
2786
2808
|
);
|
|
@@ -2842,7 +2864,7 @@ function MultiSelectItemBase({
|
|
|
2842
2864
|
...props
|
|
2843
2865
|
}) {
|
|
2844
2866
|
const { toggleValue, selectedValues, onItemAdded } = useMultiSelectContext();
|
|
2845
|
-
const
|
|
2867
|
+
const [hovered, setHovered] = useState(false);
|
|
2846
2868
|
useEffect(() => {
|
|
2847
2869
|
onItemAdded(value, badgeLabel ?? children);
|
|
2848
2870
|
}, [value, children, onItemAdded, badgeLabel]);
|
|
@@ -2854,17 +2876,35 @@ function MultiSelectItemBase({
|
|
|
2854
2876
|
toggleValue(value);
|
|
2855
2877
|
onSelect?.(value);
|
|
2856
2878
|
},
|
|
2857
|
-
children: /* @__PURE__ */ jsxs(
|
|
2858
|
-
/* @__PURE__ */ jsx("span", { className: "
|
|
2859
|
-
|
|
2879
|
+
children: /* @__PURE__ */ jsxs("div", { className: "flex w-full items-center justify-between gap-2", children: [
|
|
2880
|
+
/* @__PURE__ */ jsx("span", { className: "min-w-0 truncate", children }),
|
|
2881
|
+
/* @__PURE__ */ jsx(
|
|
2882
|
+
"div",
|
|
2860
2883
|
{
|
|
2861
|
-
|
|
2862
|
-
|
|
2863
|
-
|
|
2864
|
-
children: /* @__PURE__ */ jsx(
|
|
2884
|
+
className: "relative flex h-4 w-4 shrink-0 items-center justify-center",
|
|
2885
|
+
onMouseEnter: () => setHovered(true),
|
|
2886
|
+
onMouseLeave: () => setHovered(false),
|
|
2887
|
+
children: /* @__PURE__ */ jsx(AnimatePresence, { mode: "wait", children: selectedValues.has(value) && (hovered ? /* @__PURE__ */ jsx(
|
|
2888
|
+
motion.div,
|
|
2889
|
+
{
|
|
2890
|
+
initial: { scale: 0, rotate: -90, opacity: 0 },
|
|
2891
|
+
animate: { scale: 1, rotate: 0, opacity: 1 },
|
|
2892
|
+
transition: { duration: 0.05, ease: "easeOut" },
|
|
2893
|
+
children: /* @__PURE__ */ jsx(XIcon, { className: "size-4 text-destructive" })
|
|
2894
|
+
},
|
|
2895
|
+
"x"
|
|
2896
|
+
) : /* @__PURE__ */ jsx(
|
|
2897
|
+
motion.div,
|
|
2898
|
+
{
|
|
2899
|
+
initial: { scale: 0, rotate: 90, opacity: 0 },
|
|
2900
|
+
animate: { scale: 1, rotate: 0, opacity: 1 },
|
|
2901
|
+
transition: { duration: 0.05, ease: "easeOut" },
|
|
2902
|
+
children: /* @__PURE__ */ jsx(CheckIcon, { className: "size-4" })
|
|
2903
|
+
},
|
|
2904
|
+
"check"
|
|
2905
|
+
)) })
|
|
2865
2906
|
}
|
|
2866
|
-
)
|
|
2867
|
-
children
|
|
2907
|
+
)
|
|
2868
2908
|
] })
|
|
2869
2909
|
}
|
|
2870
2910
|
);
|
|
@@ -3646,14 +3686,14 @@ var CardFooterBase = React32.forwardRef(({ className, testid: dataTestId = "card
|
|
|
3646
3686
|
}
|
|
3647
3687
|
));
|
|
3648
3688
|
CardFooterBase.displayName = "CardFooter";
|
|
3649
|
-
var
|
|
3650
|
-
Image:
|
|
3651
|
-
Document:
|
|
3652
|
-
Spreadsheet:
|
|
3653
|
-
Presentation:
|
|
3654
|
-
Video:
|
|
3655
|
-
Audio:
|
|
3656
|
-
All:
|
|
3689
|
+
var FileAccept = {
|
|
3690
|
+
Image: "image/*",
|
|
3691
|
+
Document: "pdf,doc,docx,txt,rtf",
|
|
3692
|
+
Spreadsheet: "xls,xlsx,csv",
|
|
3693
|
+
Presentation: "ppt,pptx",
|
|
3694
|
+
Video: "video/*",
|
|
3695
|
+
Audio: "audio/*",
|
|
3696
|
+
All: "*"
|
|
3657
3697
|
};
|
|
3658
3698
|
var formatFileSize = (bytes) => {
|
|
3659
3699
|
if (bytes === 0) return "0 Bytes";
|
|
@@ -3662,66 +3702,62 @@ var formatFileSize = (bytes) => {
|
|
|
3662
3702
|
const i = Math.floor(Math.log(bytes) / Math.log(k));
|
|
3663
3703
|
return Math.round(bytes / Math.pow(k, i) * 100) / 100 + " " + sizes[i];
|
|
3664
3704
|
};
|
|
3665
|
-
var getFileExtension = (filename) =>
|
|
3666
|
-
|
|
3705
|
+
var getFileExtension = (filename) => filename.slice((filename.lastIndexOf(".") - 1 >>> 0) + 2);
|
|
3706
|
+
var parseAcceptTokens = (accept) => accept.split(",").map((t) => t.trim().toLowerCase()).filter(Boolean);
|
|
3707
|
+
var validateFileAgainstAccept = (file, accept) => {
|
|
3708
|
+
if (!accept || accept === "*") return true;
|
|
3709
|
+
const tokens = parseAcceptTokens(accept);
|
|
3710
|
+
const ext = getFileExtension(file.name).toLowerCase();
|
|
3711
|
+
const mime = file.type.toLowerCase();
|
|
3712
|
+
return tokens.some((token) => {
|
|
3713
|
+
if (token.endsWith("/*")) return mime.startsWith(token.replace("/*", ""));
|
|
3714
|
+
const tokenExt = token.startsWith(".") ? token.substring(1) : token;
|
|
3715
|
+
if (!token.includes("/")) return ext === tokenExt;
|
|
3716
|
+
return mime === token;
|
|
3717
|
+
});
|
|
3718
|
+
};
|
|
3719
|
+
var formatAcceptForInput = (accept) => {
|
|
3720
|
+
if (!accept || accept === "*") return void 0;
|
|
3721
|
+
return parseAcceptTokens(accept).map((t) => t.includes("/") || t.startsWith(".") ? t : `.${t}`).join(",");
|
|
3667
3722
|
};
|
|
3668
3723
|
var getFileTypeIcon = (file) => {
|
|
3669
3724
|
const extension = getFileExtension(file.name).toLowerCase();
|
|
3670
3725
|
const mimeType = file.type.toLowerCase();
|
|
3671
|
-
if (extension === "pdf" || mimeType === "application/pdf")
|
|
3726
|
+
if (extension === "pdf" || mimeType === "application/pdf")
|
|
3672
3727
|
return /* @__PURE__ */ jsx(FilePdfIcon, { size: 20, className: "text-red-500" });
|
|
3673
|
-
|
|
3674
|
-
if (["doc", "docx"].includes(extension) || mimeType.includes("word")) {
|
|
3728
|
+
if (["doc", "docx"].includes(extension) || mimeType.includes("word"))
|
|
3675
3729
|
return /* @__PURE__ */ jsx(FileDocIcon, { size: 20, className: "text-blue-500" });
|
|
3676
|
-
|
|
3677
|
-
if (["xls", "xlsx"].includes(extension) || mimeType.includes("sheet")) {
|
|
3730
|
+
if (["xls", "xlsx"].includes(extension) || mimeType.includes("sheet"))
|
|
3678
3731
|
return /* @__PURE__ */ jsx(FileXlsIcon, { size: 20, className: "text-green-500" });
|
|
3679
|
-
|
|
3680
|
-
if (["ppt", "pptx"].includes(extension) || mimeType.includes("presentation")) {
|
|
3732
|
+
if (["ppt", "pptx"].includes(extension) || mimeType.includes("presentation"))
|
|
3681
3733
|
return /* @__PURE__ */ jsx(FilePptIcon, { size: 20, className: "text-orange-500" });
|
|
3682
|
-
|
|
3683
|
-
if (extension === "csv" || mimeType === "text/csv") {
|
|
3734
|
+
if (extension === "csv" || mimeType === "text/csv")
|
|
3684
3735
|
return /* @__PURE__ */ jsx(FileCsvIcon, { size: 20, className: "text-green-600" });
|
|
3685
|
-
}
|
|
3686
3736
|
if (["txt", "md", "json", "xml", "js", "ts", "html", "css"].includes(
|
|
3687
3737
|
extension
|
|
3688
|
-
) || mimeType.includes("text"))
|
|
3738
|
+
) || mimeType.includes("text"))
|
|
3689
3739
|
return /* @__PURE__ */ jsx(FileTextIcon, { size: 20, className: "text-gray-500" });
|
|
3690
|
-
|
|
3691
|
-
if (mimeType.startsWith("image/")) {
|
|
3740
|
+
if (mimeType.startsWith("image/"))
|
|
3692
3741
|
return /* @__PURE__ */ jsx(FileImageIcon, { size: 20, className: "text-purple-500" });
|
|
3693
|
-
|
|
3694
|
-
if (mimeType.startsWith("video/")) {
|
|
3742
|
+
if (mimeType.startsWith("video/"))
|
|
3695
3743
|
return /* @__PURE__ */ jsx(FileVideoIcon, { size: 20, className: "text-pink-500" });
|
|
3696
|
-
|
|
3697
|
-
if (mimeType.startsWith("audio/")) {
|
|
3744
|
+
if (mimeType.startsWith("audio/"))
|
|
3698
3745
|
return /* @__PURE__ */ jsx(FileAudioIcon, { size: 20, className: "text-indigo-500" });
|
|
3699
|
-
|
|
3700
|
-
if (["zip", "rar", "7z", "tar", "gz"].includes(extension)) {
|
|
3746
|
+
if (["zip", "rar", "7z", "tar", "gz"].includes(extension))
|
|
3701
3747
|
return /* @__PURE__ */ jsx(FileZipIcon, { size: 20, className: "text-yellow-600" });
|
|
3702
|
-
}
|
|
3703
3748
|
return /* @__PURE__ */ jsx(FileIcon, { size: 20, className: "text-muted-foreground" });
|
|
3704
3749
|
};
|
|
3705
|
-
var createImagePreview = (file) => {
|
|
3706
|
-
|
|
3707
|
-
|
|
3708
|
-
|
|
3709
|
-
|
|
3710
|
-
|
|
3711
|
-
|
|
3712
|
-
reader.onload = (e) => {
|
|
3713
|
-
resolve(e.target?.result);
|
|
3714
|
-
};
|
|
3715
|
-
reader.onerror = () => {
|
|
3716
|
-
resolve(null);
|
|
3717
|
-
};
|
|
3718
|
-
reader.readAsDataURL(file);
|
|
3719
|
-
});
|
|
3720
|
-
};
|
|
3750
|
+
var createImagePreview = (file) => new Promise((resolve) => {
|
|
3751
|
+
if (!file.type.startsWith("image/")) return resolve(null);
|
|
3752
|
+
const reader = new FileReader();
|
|
3753
|
+
reader.onload = (e) => resolve(e.target?.result);
|
|
3754
|
+
reader.onerror = () => resolve(null);
|
|
3755
|
+
reader.readAsDataURL(file);
|
|
3756
|
+
});
|
|
3721
3757
|
var FileUploader = React32.forwardRef(
|
|
3722
3758
|
({
|
|
3723
3759
|
className,
|
|
3724
|
-
accept =
|
|
3760
|
+
accept = "*",
|
|
3725
3761
|
maxSize = 10,
|
|
3726
3762
|
maxFiles = 1,
|
|
3727
3763
|
disabled = false,
|
|
@@ -3744,72 +3780,49 @@ var FileUploader = React32.forwardRef(
|
|
|
3744
3780
|
}, [value]);
|
|
3745
3781
|
React32.useEffect(() => {
|
|
3746
3782
|
return () => {
|
|
3747
|
-
files.forEach((
|
|
3748
|
-
if (
|
|
3749
|
-
URL.revokeObjectURL(file.preview);
|
|
3750
|
-
}
|
|
3783
|
+
files.forEach((f) => {
|
|
3784
|
+
if (f.preview) URL.revokeObjectURL(f.preview);
|
|
3751
3785
|
});
|
|
3752
3786
|
};
|
|
3753
3787
|
}, [files]);
|
|
3754
3788
|
const validateFile = (file) => {
|
|
3755
|
-
|
|
3756
|
-
|
|
3757
|
-
|
|
3758
|
-
|
|
3759
|
-
if (accept.length > 0) {
|
|
3760
|
-
const fileExtension = `.${getFileExtension(file.name)}`;
|
|
3761
|
-
const fileType = file.type;
|
|
3762
|
-
const isAccepted = accept.some((acceptItem) => {
|
|
3763
|
-
if (acceptItem.startsWith(".")) {
|
|
3764
|
-
return fileExtension.toLowerCase() === acceptItem.toLowerCase();
|
|
3765
|
-
}
|
|
3766
|
-
if (acceptItem.endsWith("/*")) {
|
|
3767
|
-
return fileType.startsWith(acceptItem.replace("/*", ""));
|
|
3768
|
-
}
|
|
3769
|
-
return fileType === acceptItem;
|
|
3770
|
-
});
|
|
3771
|
-
if (!isAccepted) {
|
|
3772
|
-
return `Tipo de arquivo n\xE3o permitido. Aceitos: ${accept.join(", ")}`;
|
|
3773
|
-
}
|
|
3774
|
-
}
|
|
3789
|
+
if (file.size > maxSize * 1024 * 1024)
|
|
3790
|
+
return `Arquivo muito grande. M\xE1ximo: ${maxSize}MB`;
|
|
3791
|
+
if (!validateFileAgainstAccept(file, accept))
|
|
3792
|
+
return `Tipo n\xE3o permitido. Aceitos: ${accept}`;
|
|
3775
3793
|
return null;
|
|
3776
3794
|
};
|
|
3777
3795
|
const createFileWithPreview = async (file) => {
|
|
3778
|
-
const
|
|
3779
|
-
|
|
3780
|
-
|
|
3781
|
-
if (error) {
|
|
3782
|
-
fileWithPreview.error = error;
|
|
3783
|
-
}
|
|
3784
|
-
if (file.type.startsWith("image/")) {
|
|
3796
|
+
const f = file;
|
|
3797
|
+
f.id = `${file.name}-${Date.now()}-${Math.random()}`;
|
|
3798
|
+
f.error = validateFile(file) ?? void 0;
|
|
3799
|
+
if (!f.error && file.type.startsWith("image/")) {
|
|
3785
3800
|
try {
|
|
3786
3801
|
const preview = await createImagePreview(file);
|
|
3787
|
-
if (preview)
|
|
3788
|
-
|
|
3789
|
-
|
|
3790
|
-
} catch (error2) {
|
|
3791
|
-
console.warn("Erro ao criar preview da imagem:", error2);
|
|
3802
|
+
if (preview) f.preview = preview;
|
|
3803
|
+
} catch (err) {
|
|
3804
|
+
console.warn("Erro ao criar preview:", err);
|
|
3792
3805
|
}
|
|
3793
3806
|
}
|
|
3794
|
-
return
|
|
3807
|
+
return f;
|
|
3795
3808
|
};
|
|
3796
3809
|
const handleFiles = async (newFiles) => {
|
|
3797
3810
|
if (disabled) return;
|
|
3798
|
-
const
|
|
3799
|
-
const filesToAdd = multiple ? newFiles.slice(0,
|
|
3800
|
-
const
|
|
3801
|
-
filesToAdd.map(
|
|
3811
|
+
const slots = maxFiles - files.length;
|
|
3812
|
+
const filesToAdd = multiple ? newFiles.slice(0, slots) : [newFiles[0]];
|
|
3813
|
+
const processed = await Promise.all(
|
|
3814
|
+
filesToAdd.map(createFileWithPreview)
|
|
3802
3815
|
);
|
|
3803
|
-
const
|
|
3804
|
-
setFiles(
|
|
3805
|
-
onValueChange(
|
|
3816
|
+
const updated = multiple ? [...files, ...processed] : processed;
|
|
3817
|
+
setFiles(updated);
|
|
3818
|
+
onValueChange(updated);
|
|
3806
3819
|
if (onUpload) {
|
|
3807
|
-
const
|
|
3808
|
-
if (
|
|
3820
|
+
const valid = processed.filter((f) => !f.error);
|
|
3821
|
+
if (valid.length > 0) {
|
|
3809
3822
|
try {
|
|
3810
|
-
await onUpload(
|
|
3811
|
-
} catch (
|
|
3812
|
-
console.error("Erro no upload:",
|
|
3823
|
+
await onUpload(valid);
|
|
3824
|
+
} catch (err) {
|
|
3825
|
+
console.error("Erro no upload:", err);
|
|
3813
3826
|
}
|
|
3814
3827
|
}
|
|
3815
3828
|
}
|
|
@@ -3818,17 +3831,12 @@ var FileUploader = React32.forwardRef(
|
|
|
3818
3831
|
e.preventDefault();
|
|
3819
3832
|
e.stopPropagation();
|
|
3820
3833
|
dragCounterRef.current++;
|
|
3821
|
-
if (e.dataTransfer.items
|
|
3822
|
-
setIsDragging(true);
|
|
3823
|
-
}
|
|
3834
|
+
if (e.dataTransfer.items?.length > 0) setIsDragging(true);
|
|
3824
3835
|
};
|
|
3825
3836
|
const handleDragLeave = (e) => {
|
|
3826
3837
|
e.preventDefault();
|
|
3827
3838
|
e.stopPropagation();
|
|
3828
|
-
dragCounterRef.current
|
|
3829
|
-
if (dragCounterRef.current === 0) {
|
|
3830
|
-
setIsDragging(false);
|
|
3831
|
-
}
|
|
3839
|
+
if (--dragCounterRef.current === 0) setIsDragging(false);
|
|
3832
3840
|
};
|
|
3833
3841
|
const handleDragOver = (e) => {
|
|
3834
3842
|
e.preventDefault();
|
|
@@ -3839,43 +3847,19 @@ var FileUploader = React32.forwardRef(
|
|
|
3839
3847
|
e.stopPropagation();
|
|
3840
3848
|
setIsDragging(false);
|
|
3841
3849
|
dragCounterRef.current = 0;
|
|
3842
|
-
if (disabled)
|
|
3843
|
-
const droppedFiles = Array.from(e.dataTransfer.files);
|
|
3844
|
-
handleFiles(droppedFiles);
|
|
3850
|
+
if (!disabled) handleFiles(Array.from(e.dataTransfer.files));
|
|
3845
3851
|
};
|
|
3846
3852
|
const handleInputChange = (e) => {
|
|
3847
|
-
if (e.target.files)
|
|
3848
|
-
const selectedFiles = Array.from(e.target.files);
|
|
3849
|
-
handleFiles(selectedFiles);
|
|
3850
|
-
}
|
|
3853
|
+
if (e.target.files) handleFiles(Array.from(e.target.files));
|
|
3851
3854
|
};
|
|
3852
3855
|
const handleRemoveFile = (fileId) => {
|
|
3853
|
-
const
|
|
3854
|
-
if (
|
|
3855
|
-
|
|
3856
|
-
|
|
3857
|
-
|
|
3858
|
-
setFiles(updatedFiles);
|
|
3859
|
-
onValueChange(updatedFiles);
|
|
3860
|
-
};
|
|
3861
|
-
const handleClick = () => {
|
|
3862
|
-
if (!disabled) {
|
|
3863
|
-
inputRef.current?.click();
|
|
3864
|
-
}
|
|
3856
|
+
const target = files.find((f) => f.id === fileId);
|
|
3857
|
+
if (target?.preview) URL.revokeObjectURL(target.preview);
|
|
3858
|
+
const updated = files.filter((f) => f.id !== fileId);
|
|
3859
|
+
setFiles(updated);
|
|
3860
|
+
onValueChange(updated);
|
|
3865
3861
|
};
|
|
3866
|
-
const
|
|
3867
|
-
const getFormatText = () => {
|
|
3868
|
-
if (accept === FileTypes.All || accept.length === 0)
|
|
3869
|
-
return "Qualquer formato";
|
|
3870
|
-
if (accept === FileTypes.Image) return "Apenas imagens";
|
|
3871
|
-
if (accept === FileTypes.Document) return "Apenas documentos";
|
|
3872
|
-
if (accept === FileTypes.Video) return "Apenas v\xEDdeos";
|
|
3873
|
-
if (accept === FileTypes.Audio) return "Apenas \xE1udio";
|
|
3874
|
-
if (accept === FileTypes.Spreadsheet) return "Apenas planilhas";
|
|
3875
|
-
if (accept === FileTypes.Presentation) return "Apenas apresenta\xE7\xF5es";
|
|
3876
|
-
return "Formatos espec\xEDficos v\xE1lidos";
|
|
3877
|
-
};
|
|
3878
|
-
const defaultSubtext = dropzoneSubtext || `${getFormatText()} (M\xE1x: ${maxSize}MB)`;
|
|
3862
|
+
const defaultSubtext = dropzoneSubtext ?? `${accept === "*" ? "Qualquer formato" : accept} (M\xE1x: ${maxSize}MB)`;
|
|
3879
3863
|
return /* @__PURE__ */ jsx("div", { ref, className: cn("w-full", className), ...props, children: /* @__PURE__ */ jsxs(
|
|
3880
3864
|
motion.div,
|
|
3881
3865
|
{
|
|
@@ -3889,7 +3873,7 @@ var FileUploader = React32.forwardRef(
|
|
|
3889
3873
|
onDragOver: handleDragOver,
|
|
3890
3874
|
onDragLeave: handleDragLeave,
|
|
3891
3875
|
onDrop: handleDrop,
|
|
3892
|
-
onClick:
|
|
3876
|
+
onClick: () => !disabled && inputRef.current?.click(),
|
|
3893
3877
|
whileTap: !disabled ? { scale: 0.99 } : void 0,
|
|
3894
3878
|
animate: isDragging ? {
|
|
3895
3879
|
borderColor: `hsl(var(--primary))`,
|
|
@@ -3900,12 +3884,7 @@ var FileUploader = React32.forwardRef(
|
|
|
3900
3884
|
backgroundColor: `hsl(var(--background))`,
|
|
3901
3885
|
scale: 1
|
|
3902
3886
|
},
|
|
3903
|
-
transition: {
|
|
3904
|
-
type: "spring",
|
|
3905
|
-
stiffness: 300,
|
|
3906
|
-
damping: 25,
|
|
3907
|
-
duration: 0.3
|
|
3908
|
-
},
|
|
3887
|
+
transition: { type: "spring", stiffness: 300, damping: 25 },
|
|
3909
3888
|
children: [
|
|
3910
3889
|
/* @__PURE__ */ jsx(
|
|
3911
3890
|
"input",
|
|
@@ -3913,7 +3892,7 @@ var FileUploader = React32.forwardRef(
|
|
|
3913
3892
|
ref: inputRef,
|
|
3914
3893
|
type: "file",
|
|
3915
3894
|
className: "hidden",
|
|
3916
|
-
accept:
|
|
3895
|
+
accept: formatAcceptForInput(accept),
|
|
3917
3896
|
multiple,
|
|
3918
3897
|
disabled,
|
|
3919
3898
|
onChange: handleInputChange
|
|
@@ -3923,20 +3902,11 @@ var FileUploader = React32.forwardRef(
|
|
|
3923
3902
|
motion.div,
|
|
3924
3903
|
{
|
|
3925
3904
|
animate: isDragging ? { scale: 1.2, rotate: 10 } : { scale: 1, rotate: 0 },
|
|
3926
|
-
transition: {
|
|
3927
|
-
type: "spring",
|
|
3928
|
-
stiffness: 300,
|
|
3929
|
-
damping: 20,
|
|
3930
|
-
duration: 0.3
|
|
3931
|
-
},
|
|
3905
|
+
transition: { type: "spring", stiffness: 300, damping: 20 },
|
|
3932
3906
|
children: /* @__PURE__ */ jsx(
|
|
3933
3907
|
motion.div,
|
|
3934
3908
|
{
|
|
3935
|
-
className:
|
|
3936
|
-
"mb-4 h-16 w-16 text-muted-foreground transition-colors duration-300 drop-shadow-lg flex items-center justify-center",
|
|
3937
|
-
isDragging && "text-primary"
|
|
3938
|
-
),
|
|
3939
|
-
initial: false,
|
|
3909
|
+
className: "mb-4 h-16 w-16 drop-shadow-lg flex items-center justify-center",
|
|
3940
3910
|
animate: {
|
|
3941
3911
|
color: isDragging ? `hsl(var(--primary))` : `hsl(var(--muted-foreground))`
|
|
3942
3912
|
},
|
|
@@ -3966,14 +3936,14 @@ var FileUploader = React32.forwardRef(
|
|
|
3966
3936
|
children: defaultSubtext
|
|
3967
3937
|
}
|
|
3968
3938
|
),
|
|
3969
|
-
showPreview && files.length > 0 && /* @__PURE__ */
|
|
3939
|
+
showPreview && files.length > 0 && /* @__PURE__ */ jsxs(
|
|
3970
3940
|
motion.div,
|
|
3971
3941
|
{
|
|
3972
3942
|
className: "py-2 w-full",
|
|
3973
3943
|
initial: animate ? { opacity: 0, y: 10 } : false,
|
|
3974
3944
|
animate: { opacity: 1, y: 0 },
|
|
3975
3945
|
transition: { delay: 0.3 },
|
|
3976
|
-
children:
|
|
3946
|
+
children: [
|
|
3977
3947
|
/* @__PURE__ */ jsxs("h4", { className: "text-xs font-medium text-muted-foreground pb-0.5", children: [
|
|
3978
3948
|
"Arquivos selecionados (",
|
|
3979
3949
|
files.length,
|
|
@@ -4052,7 +4022,7 @@ var FileUploader = React32.forwardRef(
|
|
|
4052
4022
|
},
|
|
4053
4023
|
file.id
|
|
4054
4024
|
)) }) })
|
|
4055
|
-
]
|
|
4025
|
+
]
|
|
4056
4026
|
}
|
|
4057
4027
|
)
|
|
4058
4028
|
]
|
|
@@ -9906,6 +9876,7 @@ function Select({
|
|
|
9906
9876
|
{
|
|
9907
9877
|
className: cn(
|
|
9908
9878
|
"flex items-center gap-2 justify-between [&>div]:line-clamp-1 [&>span]:line-clamp-1 relative",
|
|
9879
|
+
!selected && "text-muted-foreground",
|
|
9909
9880
|
error && "border-red-500",
|
|
9910
9881
|
className
|
|
9911
9882
|
),
|
|
@@ -14479,6 +14450,7 @@ function MultiSelect({
|
|
|
14479
14450
|
{
|
|
14480
14451
|
className: cn(
|
|
14481
14452
|
"flex items-center gap-2 justify-between hover:bg-muted transition-all duration-150",
|
|
14453
|
+
!selected && "text-muted-foreground",
|
|
14482
14454
|
error && "border-red-500",
|
|
14483
14455
|
className
|
|
14484
14456
|
),
|
|
@@ -16817,7 +16789,7 @@ var IntegrationCard = ({ title, details }) => {
|
|
|
16817
16789
|
}) })
|
|
16818
16790
|
] });
|
|
16819
16791
|
};
|
|
16820
|
-
var TooltipBodyComponent = ({ data, isLoading, connections, isInput, externalSystem }) => /* @__PURE__ */ jsxs("div", { className: "px-3 py-3 space-y-3
|
|
16792
|
+
var TooltipBodyComponent = ({ data, isLoading, connections, isInput, externalSystem }) => /* @__PURE__ */ jsx(ScrollAreaBase, { className: "flex-1", children: /* @__PURE__ */ jsxs("div", { className: "px-3 py-3 space-y-3", children: [
|
|
16821
16793
|
isLoading ? /* @__PURE__ */ jsxs("div", { className: "space-y-1.5", children: [
|
|
16822
16794
|
/* @__PURE__ */ jsx(SkeletonBase, { className: "h-6 w-3/4" }),
|
|
16823
16795
|
/* @__PURE__ */ jsx(SkeletonBase, { className: "h-3.5 w-1/2" })
|
|
@@ -16860,7 +16832,7 @@ var TooltipBodyComponent = ({ data, isLoading, connections, isInput, externalSys
|
|
|
16860
16832
|
conn.id
|
|
16861
16833
|
)) })
|
|
16862
16834
|
] })
|
|
16863
|
-
] });
|
|
16835
|
+
] }) });
|
|
16864
16836
|
var TooltipBody = React32__default.memo(TooltipBodyComponent);
|
|
16865
16837
|
var tooltipVariants3 = {
|
|
16866
16838
|
hidden: {
|
|
@@ -20251,44 +20223,6 @@ var Lens = ({
|
|
|
20251
20223
|
}
|
|
20252
20224
|
);
|
|
20253
20225
|
};
|
|
20254
|
-
var carouselThemes = {
|
|
20255
|
-
malwee: {
|
|
20256
|
-
foreground: "text-[#222222]",
|
|
20257
|
-
primary: "bg-[#0b5430]",
|
|
20258
|
-
primaryForeground: "text-white",
|
|
20259
|
-
muted: "bg-[#f0eacc]",
|
|
20260
|
-
mutedForeground: "text-[#6b665c]",
|
|
20261
|
-
border: "!border-[#0b5430]",
|
|
20262
|
-
font: "font-[family-name:var(--font-playfair)]"
|
|
20263
|
-
},
|
|
20264
|
-
enfim: {
|
|
20265
|
-
foreground: "text-black",
|
|
20266
|
-
primary: "bg-black",
|
|
20267
|
-
primaryForeground: "text-white",
|
|
20268
|
-
muted: "bg-gray-100",
|
|
20269
|
-
mutedForeground: "text-gray-600",
|
|
20270
|
-
border: "!border-black",
|
|
20271
|
-
font: "font-[family-name:var(--font-libre-caslon)]"
|
|
20272
|
-
},
|
|
20273
|
-
carinhoso: {
|
|
20274
|
-
foreground: "text-[#222222]",
|
|
20275
|
-
primary: "bg-[#d9d0c0]",
|
|
20276
|
-
primaryForeground: "text-[#222222]",
|
|
20277
|
-
muted: "bg-[#e2ddd6]",
|
|
20278
|
-
mutedForeground: "text-[#5e5b56]",
|
|
20279
|
-
border: "!border-[#d9d0c0]",
|
|
20280
|
-
font: "font-[family-name:var(--font-josefin)]"
|
|
20281
|
-
},
|
|
20282
|
-
"malwee-kids": {
|
|
20283
|
-
foreground: "text-[#005bbf]",
|
|
20284
|
-
primary: "bg-[#005bbf]",
|
|
20285
|
-
primaryForeground: "text-white",
|
|
20286
|
-
muted: "bg-[#fcf5c2]",
|
|
20287
|
-
mutedForeground: "text-[#004a9e]",
|
|
20288
|
-
border: "!border-[#005bbf]",
|
|
20289
|
-
font: "font-[family-name:var(--font-poppins)]"
|
|
20290
|
-
}
|
|
20291
|
-
};
|
|
20292
20226
|
function CarouselSkeleton({ className }) {
|
|
20293
20227
|
return /* @__PURE__ */ jsx("div", { className: cn("w-full h-full lg:p-10 sm:p-4 p-2", className), children: /* @__PURE__ */ jsx("div", { className: "flex flex-col gap-3 h-full", children: /* @__PURE__ */ jsx("div", { className: "relative overflow-hidden rounded-lg h-full", children: /* @__PURE__ */ jsxs("div", { className: "w-full h-full min-h-[300px] bg-muted rounded-lg overflow-hidden relative", children: [
|
|
20294
20228
|
/* @__PURE__ */ jsx(
|
|
@@ -20369,7 +20303,8 @@ function CarouselBase({
|
|
|
20369
20303
|
zoomEffect = null,
|
|
20370
20304
|
download = false,
|
|
20371
20305
|
isLoading = false,
|
|
20372
|
-
onChange
|
|
20306
|
+
onChange,
|
|
20307
|
+
fernando
|
|
20373
20308
|
}) {
|
|
20374
20309
|
const isMobile = useIsMobile();
|
|
20375
20310
|
const [index, setIndex] = useState(0);
|
|
@@ -20391,9 +20326,6 @@ function CarouselBase({
|
|
|
20391
20326
|
emblaApi.off("reInit", onSelect);
|
|
20392
20327
|
};
|
|
20393
20328
|
}, [emblaApi, onChange]);
|
|
20394
|
-
const currentItem = items[index];
|
|
20395
|
-
const themeKey = currentItem?.theme || "malwee";
|
|
20396
|
-
const currentTheme = carouselThemes[themeKey] || carouselThemes.malwee;
|
|
20397
20329
|
useEffect(() => {
|
|
20398
20330
|
if (!autoPlay || items.length <= 1 || !emblaApi) return;
|
|
20399
20331
|
const interval = setInterval(() => {
|
|
@@ -20405,14 +20337,14 @@ function CarouselBase({
|
|
|
20405
20337
|
if (isDownloading) return;
|
|
20406
20338
|
setIsDownloading(true);
|
|
20407
20339
|
setDownloadSuccess(false);
|
|
20408
|
-
const
|
|
20340
|
+
const currentItem = items[index];
|
|
20409
20341
|
try {
|
|
20410
|
-
const response = await fetch(
|
|
20342
|
+
const response = await fetch(currentItem.url);
|
|
20411
20343
|
const blob = await response.blob();
|
|
20412
20344
|
const url = window.URL.createObjectURL(blob);
|
|
20413
20345
|
const link = document.createElement("a");
|
|
20414
20346
|
link.href = url;
|
|
20415
|
-
link.download =
|
|
20347
|
+
link.download = currentItem.title || "image";
|
|
20416
20348
|
document.body.appendChild(link);
|
|
20417
20349
|
link.click();
|
|
20418
20350
|
document.body.removeChild(link);
|
|
@@ -20448,8 +20380,6 @@ function CarouselBase({
|
|
|
20448
20380
|
transition: { duration: 0.4 },
|
|
20449
20381
|
className: cn(
|
|
20450
20382
|
"w-full lg:p-10 sm:p-4 p-2 transition-colors duration-500",
|
|
20451
|
-
currentTheme.foreground,
|
|
20452
|
-
currentTheme.font,
|
|
20453
20383
|
className
|
|
20454
20384
|
),
|
|
20455
20385
|
style: { width },
|
|
@@ -20503,7 +20433,8 @@ function CarouselBase({
|
|
|
20503
20433
|
onMouseDown: (e) => e.stopPropagation(),
|
|
20504
20434
|
className: cn(
|
|
20505
20435
|
"absolute top-4 right-4 z-50 p-2 rounded-full text-white transition-colors border border-white/10",
|
|
20506
|
-
downloadSuccess ? "bg-green-500 hover:bg-green-600" : "bg-black/50 hover:bg-black/70"
|
|
20436
|
+
downloadSuccess ? "bg-green-500 hover:bg-green-600" : "bg-black/50 hover:bg-black/70",
|
|
20437
|
+
className
|
|
20507
20438
|
),
|
|
20508
20439
|
title: "Download image",
|
|
20509
20440
|
initial: false,
|
|
@@ -20589,9 +20520,10 @@ function CarouselBase({
|
|
|
20589
20520
|
className: cn(
|
|
20590
20521
|
"absolute left-4 top-1/2 -translate-y-1/2 w-10 h-10 rounded-full flex items-center justify-center shadow-lg transition-all z-50",
|
|
20591
20522
|
!emblaApi?.canScrollPrev() ? "opacity-40 cursor-not-allowed" : "hover:scale-110 hover:opacity-100 opacity-70",
|
|
20592
|
-
|
|
20593
|
-
|
|
20523
|
+
"bg-primary text-primary-foreground",
|
|
20524
|
+
className
|
|
20594
20525
|
),
|
|
20526
|
+
style: fernando ? { backgroundColor: fernando } : void 0,
|
|
20595
20527
|
children: /* @__PURE__ */ jsx(
|
|
20596
20528
|
"svg",
|
|
20597
20529
|
{
|
|
@@ -20623,9 +20555,10 @@ function CarouselBase({
|
|
|
20623
20555
|
className: cn(
|
|
20624
20556
|
"absolute right-4 top-1/2 -translate-y-1/2 w-10 h-10 rounded-full flex items-center justify-center shadow-lg transition-all z-50",
|
|
20625
20557
|
!emblaApi?.canScrollNext() ? "opacity-40 cursor-not-allowed" : "hover:scale-110 hover:opacity-100 opacity-70",
|
|
20626
|
-
|
|
20627
|
-
|
|
20558
|
+
"bg-primary text-primary-foreground",
|
|
20559
|
+
className
|
|
20628
20560
|
),
|
|
20561
|
+
style: fernando ? { backgroundColor: fernando } : void 0,
|
|
20629
20562
|
children: /* @__PURE__ */ jsx(
|
|
20630
20563
|
"svg",
|
|
20631
20564
|
{
|
|
@@ -20656,12 +20589,10 @@ function CarouselBase({
|
|
|
20656
20589
|
onMouseDown: (e) => e.stopPropagation(),
|
|
20657
20590
|
className: cn(
|
|
20658
20591
|
"h-2 rounded-full transition-all duration-300",
|
|
20659
|
-
i === index ? cn("w-8
|
|
20660
|
-
|
|
20661
|
-
|
|
20662
|
-
|
|
20663
|
-
)
|
|
20664
|
-
)
|
|
20592
|
+
i === index ? cn("w-8 bg-primary") : cn("w-2 hover:opacity-80 bg-primary opacity-40"),
|
|
20593
|
+
className
|
|
20594
|
+
),
|
|
20595
|
+
style: fernando ? { backgroundColor: fernando } : void 0
|
|
20665
20596
|
},
|
|
20666
20597
|
i
|
|
20667
20598
|
)) })
|
|
@@ -20850,9 +20781,9 @@ function RadialMenu({
|
|
|
20850
20781
|
}
|
|
20851
20782
|
function ControlledCombobox({
|
|
20852
20783
|
items,
|
|
20853
|
-
|
|
20854
|
-
|
|
20855
|
-
|
|
20784
|
+
value,
|
|
20785
|
+
onChange,
|
|
20786
|
+
placeholder = "Selecione uma op\xE7\xE3o",
|
|
20856
20787
|
disabled = false,
|
|
20857
20788
|
keepOpen = false,
|
|
20858
20789
|
searchPlaceholder,
|
|
@@ -20862,7 +20793,6 @@ function ControlledCombobox({
|
|
|
20862
20793
|
labelClassname,
|
|
20863
20794
|
testIds = {},
|
|
20864
20795
|
onClear,
|
|
20865
|
-
hasSelected = false,
|
|
20866
20796
|
hideClear = false,
|
|
20867
20797
|
onSearchChange,
|
|
20868
20798
|
search,
|
|
@@ -20870,6 +20800,11 @@ function ControlledCombobox({
|
|
|
20870
20800
|
loading = false
|
|
20871
20801
|
}) {
|
|
20872
20802
|
const [open, setOpen] = useState(false);
|
|
20803
|
+
const selectedItem = items.find((item) => item.value === value);
|
|
20804
|
+
const renderSelected = selectedItem?.label ?? placeholder;
|
|
20805
|
+
const hasSelected = Boolean(value);
|
|
20806
|
+
const checkIsSelected = (v) => v === value;
|
|
20807
|
+
const handleSelection = (v) => onChange?.(v);
|
|
20873
20808
|
return /* @__PURE__ */ jsxs(
|
|
20874
20809
|
"div",
|
|
20875
20810
|
{
|
|
@@ -20942,9 +20877,9 @@ function ControlledCombobox({
|
|
|
20942
20877
|
{
|
|
20943
20878
|
className: "dark:text-white hover:bg-rsecondary focus:ring-0 focus:outline-none",
|
|
20944
20879
|
"data-testid": testIds.command ?? "combobox-command",
|
|
20945
|
-
filter: onSearchChange ? () => 1 : (
|
|
20946
|
-
const
|
|
20947
|
-
if (
|
|
20880
|
+
filter: onSearchChange ? () => 1 : (itemValue, search2) => {
|
|
20881
|
+
const itemLabel = items.find((item) => item.value === itemValue)?.label || itemValue;
|
|
20882
|
+
if (itemLabel.toLowerCase().includes(search2.toLowerCase()))
|
|
20948
20883
|
return 1;
|
|
20949
20884
|
return 0;
|
|
20950
20885
|
},
|
|
@@ -20976,9 +20911,9 @@ function ControlledCombobox({
|
|
|
20976
20911
|
{
|
|
20977
20912
|
keywords: [item.label],
|
|
20978
20913
|
value: item.value,
|
|
20979
|
-
onSelect: (
|
|
20914
|
+
onSelect: (v) => {
|
|
20980
20915
|
if (disabled) return;
|
|
20981
|
-
handleSelection(
|
|
20916
|
+
handleSelection(v);
|
|
20982
20917
|
if (!keepOpen) setOpen(false);
|
|
20983
20918
|
},
|
|
20984
20919
|
disabled,
|
|
@@ -20995,7 +20930,7 @@ function ControlledCombobox({
|
|
|
20995
20930
|
stiffness: 500,
|
|
20996
20931
|
damping: 30
|
|
20997
20932
|
},
|
|
20998
|
-
className: "ml-auto
|
|
20933
|
+
className: "ml-auto",
|
|
20999
20934
|
children: /* @__PURE__ */ jsx(
|
|
21000
20935
|
CheckIcon,
|
|
21001
20936
|
{
|
|
@@ -21031,4 +20966,4 @@ function ControlledCombobox({
|
|
|
21031
20966
|
);
|
|
21032
20967
|
}
|
|
21033
20968
|
|
|
21034
|
-
export { AddButton, Agenda, AgendaDaysToShow, AgendaDaysToShowAgenda, AgendaView, AlertDialogActionBase, AlertDialogBase, AlertDialogCancelBase, AlertDialogContentBase, AlertDialogDescriptionBase, AlertDialogFooterBase, AlertDialogHeaderBase, AlertDialogOverlayBase, AlertDialogPortalBase, AlertDialogTitleBase, AlertDialogTriggerBase, AvatarBase, AvatarCombobox, AvatarFallbackBase, AvatarImageBase, BackButton, Badge, Beam, BreadcrumbBase, BreadcrumbEllipsisBase, BreadcrumbItemBase, BreadcrumbLinkBase, BreadcrumbListBase, BreadcrumbPageBase, BreadcrumbSeparatorBase, Brush_default as Brush, ButtonBase, ButtonGroupBase, CENTER_INDEX, CalendarBase, CalendarDndProvider, CalendarDndProviderAgenda, CardBase, CardContentBase, CardDescriptionBase, CardFooterBase, CardHeaderBase, CardTitleBase, CarouselBase, ChangeButton, Chart_default as Chart, ChartControls, ChartHeader, ChartTotalLegend_default as ChartTotalLegend, CheckButton, CheckboxBase, CheckboxTree, CloseAllButton_default as CloseAllButton, CloseButton, CodeBlock, CollapsibleBase, CollapsibleContentBase, CollapsibleTriggerBase, Combobox, CommandBase, CommandDebouncedInputBase, CommandDialogBase, CommandEmptyBase, CommandGroupBase, CommandInputBase, CommandItemBase, CommandListBase, CommandSeparatorBase, CommandShortcutBase, ContextMenuBase, ContextMenuCheckboxItemBase, ContextMenuContentBase, ContextMenuGroupBase, ContextMenuItemBase, ContextMenuLabelBase, ContextMenuPortalBase, ContextMenuRadioGroupBase, ContextMenuRadioItemBase, ContextMenuSeparatorBase, ContextMenuShortcutBase, ContextMenuSubBase, ContextMenuSubContentBase, ContextMenuSubTriggerBase, ContextMenuTriggerBase, ControlledCombobox, CopyButton, CopyData, DateTimePicker, DayView, DayViewAgenda, DebouncedInput, DefaultEndHour, DefaultEndHourAgenda, DefaultStartHour, DefaultStartHourAgenda, DestructiveDialog, DialogBase, DialogCloseBase, DialogContentBase, DialogDescriptionBase, DialogFooterBase, DialogHeaderBase, DialogOverlayBase, DialogPortalBase, DialogTitleBase, DialogTriggerBase, DownloadButton, DraggableEvent2 as DraggableEvent, DraggableTooltip_default as DraggableTooltip, DrawerBase, DrawerCloseBase, DrawerContentBase, DrawerDescriptionBase, DrawerFooterBase, DrawerHeaderBase, DrawerOverlayBase, DrawerPortalBase, DrawerTitleBase, DrawerTriggerBase, DropDownMenuBase, DropDownMenuCheckboxItemBase, DropDownMenuContentBase, DropDownMenuGroupBase, DropDownMenuItemBase, DropDownMenuLabelBase, DropDownMenuPortalBase, DropDownMenuRadioGroupBase, DropDownMenuRadioItemBase, DropDownMenuSeparatorBase, DropDownMenuShortcutBase, DropDownMenuSubBase, DropDownMenuSubContentBase, DropDownMenuSubTriggerBase, DropDownMenuTriggerBase, DroppableCell, DroppableCellAgenda, EditButton, EndHour, EndHourAgenda, ErrorMessage_default as ErrorMessage, EventAgenda, EventCalendar, EventDetailModalAgenda, EventDialog, EventGap, EventGapAgenda, EventHeight, EventHeightAgenda, EventItem, EventItemAgenda, EventsPopup, FavoriteButton,
|
|
20969
|
+
export { AddButton, Agenda, AgendaDaysToShow, AgendaDaysToShowAgenda, AgendaView, AlertDialogActionBase, AlertDialogBase, AlertDialogCancelBase, AlertDialogContentBase, AlertDialogDescriptionBase, AlertDialogFooterBase, AlertDialogHeaderBase, AlertDialogOverlayBase, AlertDialogPortalBase, AlertDialogTitleBase, AlertDialogTriggerBase, AvatarBase, AvatarCombobox, AvatarFallbackBase, AvatarImageBase, BackButton, Badge, Beam, BreadcrumbBase, BreadcrumbEllipsisBase, BreadcrumbItemBase, BreadcrumbLinkBase, BreadcrumbListBase, BreadcrumbPageBase, BreadcrumbSeparatorBase, Brush_default as Brush, ButtonBase, ButtonGroupBase, CENTER_INDEX, CalendarBase, CalendarDndProvider, CalendarDndProviderAgenda, CardBase, CardContentBase, CardDescriptionBase, CardFooterBase, CardHeaderBase, CardTitleBase, CarouselBase, ChangeButton, Chart_default as Chart, ChartControls, ChartHeader, ChartTotalLegend_default as ChartTotalLegend, CheckButton, CheckboxBase, CheckboxTree, CloseAllButton_default as CloseAllButton, CloseButton, CodeBlock, CollapsibleBase, CollapsibleContentBase, CollapsibleTriggerBase, Combobox, CommandBase, CommandDebouncedInputBase, CommandDialogBase, CommandEmptyBase, CommandGroupBase, CommandInputBase, CommandItemBase, CommandListBase, CommandSeparatorBase, CommandShortcutBase, ContextMenuBase, ContextMenuCheckboxItemBase, ContextMenuContentBase, ContextMenuGroupBase, ContextMenuItemBase, ContextMenuLabelBase, ContextMenuPortalBase, ContextMenuRadioGroupBase, ContextMenuRadioItemBase, ContextMenuSeparatorBase, ContextMenuShortcutBase, ContextMenuSubBase, ContextMenuSubContentBase, ContextMenuSubTriggerBase, ContextMenuTriggerBase, ControlledCombobox, CopyButton, CopyData, DateTimePicker, DayView, DayViewAgenda, DebouncedInput, DefaultEndHour, DefaultEndHourAgenda, DefaultStartHour, DefaultStartHourAgenda, DestructiveDialog, DialogBase, DialogCloseBase, DialogContentBase, DialogDescriptionBase, DialogFooterBase, DialogHeaderBase, DialogOverlayBase, DialogPortalBase, DialogTitleBase, DialogTriggerBase, DownloadButton, DraggableEvent2 as DraggableEvent, DraggableTooltip_default as DraggableTooltip, DrawerBase, DrawerCloseBase, DrawerContentBase, DrawerDescriptionBase, DrawerFooterBase, DrawerHeaderBase, DrawerOverlayBase, DrawerPortalBase, DrawerTitleBase, DrawerTriggerBase, DropDownMenuBase, DropDownMenuCheckboxItemBase, DropDownMenuContentBase, DropDownMenuGroupBase, DropDownMenuItemBase, DropDownMenuLabelBase, DropDownMenuPortalBase, DropDownMenuRadioGroupBase, DropDownMenuRadioItemBase, DropDownMenuSeparatorBase, DropDownMenuShortcutBase, DropDownMenuSubBase, DropDownMenuSubContentBase, DropDownMenuSubTriggerBase, DropDownMenuTriggerBase, DroppableCell, DroppableCellAgenda, EditButton, EndHour, EndHourAgenda, ErrorMessage_default as ErrorMessage, EventAgenda, EventCalendar, EventDetailModalAgenda, EventDialog, EventGap, EventGapAgenda, EventHeight, EventHeightAgenda, EventItem, EventItemAgenda, EventsPopup, FavoriteButton, FileAccept, FileUploader, FilterButton, HideButton, Highlights_default as Highlights, HorizontalChart_default as HorizontalChart, HorizontalLegend_default as HorizontalLegend, HoverCardBase, HoverCardContentBase, HoverCardTriggerBase, ITEM_HEIGHT, InputBase, InputOTPBase, InputOTPGroupBase, InputOTPSeparatorBase, InputOTPSlotBase, IntegrationCard, IntegrationTooltip_default as IntegrationTooltip, LabelBase_default as LabelBase, Leaderboard, LikeButton, LoadingBase, LockButton, ModalBase, ModalCloseBase, ModalContentBase, ModalDescriptionBase, ModalFooterBase, ModalHeaderBase, ModalOverlayBase, ModalPortalBase, ModalTitleBase, ModalTriggerBase, ModeToggleBase, MonthView, MonthViewAgenda, MoreButton, MultiCombobox, MultiDayOverlay, MultiSelect, MultiSelectBase, MultiSelectContentBase, MultiSelectGroupBase, MultiSelectItemBase, MultiSelectSeparatorBase, MultiSelectTriggerBase, MultiSelectValueBase, NameTooltip, NavigationMenuBase, NavigationMenuContentBase, NavigationMenuIndicatorBase, NavigationMenuItemBase, NavigationMenuLinkBase, NavigationMenuListBase, NavigationMenuTriggerBase, NavigationMenuViewportBase, NoData_default as NoData, NotificationButton, NumericInput, PeriodsDropdown_default as PeriodsDropdown, PopoverAnchorBase, PopoverBase, PopoverContentBase, PopoverTriggerBase, ProgressBase, ProgressCirclesBase, ProgressPanelsBase, ProgressSegmentsBase, RadialMenu, RangePicker, RefreshButton, SaveButton, ScrollAreaBase, ScrollBarBase, SearchButton, Select, SelectBase, SelectContentBase, SelectEmpty, SelectGroupBase, SelectItemBase, SelectLabelBase, SelectScrollDownButtonBase, SelectScrollUpButtonBase, SelectSeparatorBase, SelectTriggerBase, SelectValueBase, SeparatorBase, SettingsButton, SheetBase, SheetCloseBase, SheetContentBase, SheetDescriptionBase, SheetFooterBase, SheetHeaderBase, SheetOverlayBase, SheetPortalBase, SheetTitleBase, SheetTriggerBase, ShowOnly_default as ShowOnly, SidebarBase, SidebarContentBase, SidebarFooterBase, SidebarGroupActionBase, SidebarGroupBase, SidebarGroupContentBase, SidebarGroupLabelBase, SidebarHeaderBase, SidebarInputBase, SidebarInsetBase, SidebarMenuActionBase, SidebarMenuBadgeBase, SidebarMenuBase, SidebarMenuButtonBase, SidebarMenuItemBase, SidebarMenuSkeletonBase, SidebarMenuSubBase, SidebarMenuSubButtonBase, SidebarMenuSubItemBase, SidebarProviderBase, SidebarRailBase, SidebarSeparatorBase, SidebarTriggerBase, SkeletonBase, SlideBase, StartHour, StartHourAgenda, StatusIndicator, SwitchBase, SystemNode, SystemTooltip_default as SystemTooltip, SystemsDiagram, TableBase, TableBodyBase, TableCaptionBase, TableCellBase, TableFooterBase, TableHeadBase, TableHeaderBase, TableRowBase, TabsBase, TabsContentBase, TabsListBase, TabsTriggerBase, TextAreaBase, ThemeProviderBase, TimePicker, TimePickerInput, TimeSeries_default as TimeSeries, Toaster, TooltipBase, TooltipBody, TooltipContentBase, TooltipProviderBase, TooltipSimple_default as TooltipSimple, TooltipTriggerBase, TooltipWithTotal_default as TooltipWithTotal, UndatedEvents, UniversalTooltipRenderer, UnlockButton, UploadButton, UseSideBarBase, VISIBLE_ITEMS, ViewButton, VisibilityButton, WeekCellsHeight, WeekCellsHeightAgenda, WeekView, WeekViewAgenda, YearViewAgenda, adaptDataForTooltip, addHoursToDate, addHoursToDateAgenda, addMinutesToDateAgenda, badgeVariants, buttonVariantsBase, compactTick, computeChartWidth, computeNiceMax, computeYAxisTickWidth, convert12HourTo24Hour, createValueFormatter, createYTickFormatter, detectDataFields, detectXAxis, display12HourValue, formatDurationAgenda, formatDurationAgendaDays, formatFieldName, formatLinePercentage, generateAdditionalColors, generateColorMap, getAgendaEventsForDay, getAgendaEventsForDayAgenda, getAllEventsForDay, getAllEventsForDayAgenda, getArrowByType, getAutoColorAgenda, getBorderRadiusClasses, getBorderRadiusClassesAgenda, getDateByType, getEventColorClasses, getEventColorClassesAgenda, getEventEndDate, getEventStartDate, getEventsForDay, getEventsForDayAgenda, getItems, getMaxDataValue, getMinDataValue, getSpanningEventsForDay, getSpanningEventsForDayAgenda, getValid12Hour, getValidArrow12Hour, getValidArrowHour, getValidArrowMinuteOrSecond, getValidArrowNumber, getValidHour, getValidMinuteOrSecond, getValidNumber, isMultiDayEvent, isMultiDayEventAgenda, isValid12Hour, isValidHour, isValidMinuteOrSecond, niceCeil, normalizeAttendDate, processIntegrationData, processNeo4jData, renderInsideBarLabel, pillLabelRenderer_default as renderPillLabel, resolveChartMargins, resolveContainerPaddingLeft, set12Hours, setDateByType, setHours, setMinutes, setSeconds, sortEvents, sortEventsAgenda, toast, useBiaxial, useCalendarDnd, useCalendarDndAgenda, useChartClick, useChartDimensions, useChartHighlights, useChartLayout, useChartMinMax, useChartTooltips, useCurrentTimeIndicator, useCurrentTimeIndicatorAgenda, useDrag, useEventVisibility, useEventVisibilityAgenda, useIsMobile, useIsTruncated, useOpenTooltipForPeriod, useProcessedData, useSeriesOpacity, useTheme, useTimeSeriesRange, visualForItem };
|