@g4rcez/components 3.0.1 → 3.0.2
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/MotionConfigContext-C7MqlSdv.js +2713 -0
- package/dist/MotionConfigContext-C7MqlSdv.js.map +1 -0
- package/dist/autocomplete-Boida9R7.js +375 -0
- package/dist/autocomplete-Boida9R7.js.map +1 -0
- package/dist/calendar-BswV66Nx.js +1719 -0
- package/dist/calendar-BswV66Nx.js.map +1 -0
- package/dist/chevron-down-BBFYYzZq.js +6 -0
- package/dist/chevron-down-BBFYYzZq.js.map +1 -0
- package/dist/chevron-right-DvXGOiS_.js +6 -0
- package/dist/chevron-right-DvXGOiS_.js.map +1 -0
- package/dist/circle-check-big-3M5lhTxx.js +9 -0
- package/dist/circle-check-big-3M5lhTxx.js.map +1 -0
- package/dist/components/core/button.js +76 -0
- package/dist/components/core/button.js.map +1 -0
- package/dist/components/core/tag.js +67 -0
- package/dist/components/core/tag.js.map +1 -0
- package/dist/components/display/alert.js +94 -0
- package/dist/components/display/alert.js.map +1 -0
- package/dist/components/display/calendar.js +15 -0
- package/dist/components/display/calendar.js.map +1 -0
- package/dist/components/display/card.js +84 -0
- package/dist/components/display/card.js.map +1 -0
- package/dist/components/display/list.js +93 -0
- package/dist/components/display/list.js.map +1 -0
- package/dist/components/display/notifications.js +15 -0
- package/dist/components/display/notifications.js.map +1 -0
- package/dist/components/display/stats.js +16 -0
- package/dist/components/display/stats.js.map +1 -0
- package/dist/components/display/tabs.js +12 -0
- package/dist/components/display/tabs.js.map +1 -0
- package/dist/components/display/timeline.js +29 -0
- package/dist/components/display/timeline.js.map +1 -0
- package/dist/components/floating/dropdown.js +58 -0
- package/dist/components/floating/dropdown.js.map +1 -0
- package/dist/components/floating/expand.js +41 -0
- package/dist/components/floating/expand.js.map +1 -0
- package/dist/components/floating/menu.js +177 -0
- package/dist/components/floating/menu.js.map +1 -0
- package/dist/components/floating/modal.js +297 -0
- package/dist/components/floating/modal.js.map +1 -0
- package/dist/components/floating/tooltip.js +73 -0
- package/dist/components/floating/tooltip.js.map +1 -0
- package/dist/components/form/autocomplete.js +16 -0
- package/dist/components/form/autocomplete.js.map +1 -0
- package/dist/components/form/checkbox.js +44 -0
- package/dist/components/form/checkbox.js.map +1 -0
- package/dist/components/form/date-picker.js +12 -0
- package/dist/components/form/date-picker.js.map +1 -0
- package/dist/components/form/file-upload.js +11 -0
- package/dist/components/form/file-upload.js.map +1 -0
- package/dist/components/form/form.js +8 -0
- package/dist/components/form/form.js.map +1 -0
- package/dist/components/form/input.js +5 -0
- package/dist/components/form/input.js.map +1 -0
- package/dist/components/form/radiobox.js +30 -0
- package/dist/components/form/radiobox.js.map +1 -0
- package/dist/components/form/select.js +106 -0
- package/dist/components/form/select.js.map +1 -0
- package/dist/components/form/switch.js +65 -0
- package/dist/components/form/switch.js.map +1 -0
- package/dist/components/form/task-list.js +68 -0
- package/dist/components/form/task-list.js.map +1 -0
- package/dist/components/form/transfer-list.js +55 -0
- package/dist/components/form/transfer-list.js.map +1 -0
- package/dist/components/table/table.js +10 -0
- package/dist/components/table/table.js.map +1 -0
- package/dist/constants-r-AHn273.js +6 -0
- package/dist/constants-r-AHn273.js.map +1 -0
- package/dist/context-BFXNJVn2.js +161 -0
- package/dist/context-BFXNJVn2.js.map +1 -0
- package/dist/createLucideIcon-CP-mMPfa.js +76 -0
- package/dist/createLucideIcon-CP-mMPfa.js.map +1 -0
- package/dist/date-picker-BxPTdZPy.js +1598 -0
- package/dist/date-picker-BxPTdZPy.js.map +1 -0
- package/dist/dom-Dl8XH0CK.js +2833 -0
- package/dist/dom-Dl8XH0CK.js.map +1 -0
- package/dist/file-CBCP85VI.js +15 -0
- package/dist/file-CBCP85VI.js.map +1 -0
- package/dist/file-upload-BB6BdGcE.js +3118 -0
- package/dist/file-upload-BB6BdGcE.js.map +1 -0
- package/dist/floating-ui.react-DycKASR0.js +3706 -0
- package/dist/floating-ui.react-DycKASR0.js.map +1 -0
- package/dist/fns-D2eyJKd5.js +33 -0
- package/dist/fns-D2eyJKd5.js.map +1 -0
- package/dist/index-0YMC-_Lt.js +20 -0
- package/dist/index-0YMC-_Lt.js.map +1 -0
- package/dist/index-BJ1ayTam.js +126 -0
- package/dist/index-BJ1ayTam.js.map +1 -0
- package/dist/index-BtlhELJ3.js +3416 -0
- package/dist/index-BtlhELJ3.js.map +1 -0
- package/dist/index-ChfR6F8d.js +1590 -0
- package/dist/index-ChfR6F8d.js.map +1 -0
- package/dist/index-DE4shK8D.js +215 -0
- package/dist/index-DE4shK8D.js.map +1 -0
- package/dist/index-DJSMaZR4.js +35 -0
- package/dist/index-DJSMaZR4.js.map +1 -0
- package/dist/index-t1qLJTt5.js +351 -0
- package/dist/index-t1qLJTt5.js.map +1 -0
- package/dist/index.esm-BaIwleSE.js +343 -0
- package/dist/index.esm-BaIwleSE.js.map +1 -0
- package/dist/index.js +8049 -27
- package/dist/index.js.map +1 -1
- package/dist/info-N5jWZg2A.js +10 -0
- package/dist/info-N5jWZg2A.js.map +1 -0
- package/dist/input-CoJoHIhd.js +441 -0
- package/dist/input-CoJoHIhd.js.map +1 -0
- package/dist/input-field-DTeIrwpK.js +146 -0
- package/dist/input-field-DTeIrwpK.js.map +1 -0
- package/dist/notifications-NPuFDsBp.js +2550 -0
- package/dist/notifications-NPuFDsBp.js.map +1 -0
- package/dist/polymorph-B5n9fs_K.js +10 -0
- package/dist/polymorph-B5n9fs_K.js.map +1 -0
- package/dist/proxy-BZcQiBrp.js +2495 -0
- package/dist/proxy-BZcQiBrp.js.map +1 -0
- package/dist/skeleton-D75GFBV6.js +10 -0
- package/dist/skeleton-D75GFBV6.js.map +1 -0
- package/dist/slot-CQW8ZzBb.js +79 -0
- package/dist/slot-CQW8ZzBb.js.map +1 -0
- package/dist/styles/common.js +29 -0
- package/dist/styles/dark.js +214 -0
- package/dist/styles/design-tokens.js +98 -0
- package/dist/styles/light.js +214 -0
- package/dist/styles/theme.js +4 -0
- package/dist/styles/theme.types.js +1 -0
- package/dist/tabs-ccIA7vMo.js +106 -0
- package/dist/tabs-ccIA7vMo.js.map +1 -0
- package/dist/triangle-alert-CHMhQ6yd.js +16 -0
- package/dist/triangle-alert-CHMhQ6yd.js.map +1 -0
- package/dist/use-motion-value-eGwNuWuw.js +14 -0
- package/dist/use-motion-value-eGwNuWuw.js.map +1 -0
- package/dist/use-stable-ref-CYh-YkID.js +11 -0
- package/dist/use-stable-ref-CYh-YkID.js.map +1 -0
- package/dist/use-translations-BwLKTrZv.js +10 -0
- package/dist/use-translations-BwLKTrZv.js.map +1 -0
- package/dist/x-B9bYxG31.js +9 -0
- package/dist/x-B9bYxG31.js.map +1 -0
- package/package.json +3 -4
- package/dist/index.mjs +0 -37108
- package/dist/index.mjs.map +0 -1
- package/dist/index.umd.js +0 -28
- package/dist/index.umd.js.map +0 -1
|
@@ -0,0 +1,375 @@
|
|
|
1
|
+
import { jsx as f, jsxs as z } from "react/jsx-runtime";
|
|
2
|
+
import { u as He, o as Ye, m as $e, g as ze, b as Ve, h as Oe, c as Pe, d as Ze, i as _e, j as Ue, F as Be, l as We } from "./floating-ui.react-DycKASR0.js";
|
|
3
|
+
import { useRef as E, useState as x, useEffect as S, forwardRef as G, Fragment as je } from "react";
|
|
4
|
+
import { flushSync as ie } from "react-dom";
|
|
5
|
+
import { Y as Ke } from "./index-BtlhELJ3.js";
|
|
6
|
+
import { h as Qe, o as qe, I as T, g as ce, i as Ge, c as ue, m as Je, f as Xe } from "./dom-Dl8XH0CK.js";
|
|
7
|
+
import { i as q, c as et, s as de } from "./fns-D2eyJKd5.js";
|
|
8
|
+
import { u as tt } from "./use-translations-BwLKTrZv.js";
|
|
9
|
+
import { I as nt } from "./input-field-DTeIrwpK.js";
|
|
10
|
+
import { m as J, A as rt } from "./proxy-BZcQiBrp.js";
|
|
11
|
+
import { C as lt } from "./chevron-down-BBFYYzZq.js";
|
|
12
|
+
const fe = () => window.matchMedia("@media (pointer: coarse)"), ot = () => {
|
|
13
|
+
const t = E(q() ? null : fe()), [n, a] = x(q() ? !1 : t.current?.matches ?? !1);
|
|
14
|
+
return S(() => {
|
|
15
|
+
(t.current === null ? fe() : t.current).addEventListener("change", (l) => a(l.matches));
|
|
16
|
+
}, []), n;
|
|
17
|
+
}, at = (t, n = "overflow-hidden") => {
|
|
18
|
+
const a = E(null), o = ot(), l = E(q() ? "" : document.documentElement.style.overflowY);
|
|
19
|
+
return S(() => {
|
|
20
|
+
if (!(a.current === null && !t) && n !== "block-only" && n === "overflow-hidden")
|
|
21
|
+
if (t) {
|
|
22
|
+
if (l.current = document.documentElement.style.overflowY, document.documentElement.style.overflowY = "hidden", o || et()) return;
|
|
23
|
+
document.documentElement.style.padding = Qe(document.documentElement) ? "0 15px 0 0" : "";
|
|
24
|
+
} else
|
|
25
|
+
document.documentElement.style.padding = "", document.documentElement.style.overflowY = l.current;
|
|
26
|
+
}, [t, o, n]), S(() => {
|
|
27
|
+
if (!t) return;
|
|
28
|
+
const i = new AbortController(), u = document.documentElement, s = (m) => {
|
|
29
|
+
const d = a.current;
|
|
30
|
+
if (d && d.contains(m.target)) {
|
|
31
|
+
const y = d.getBoundingClientRect(), k = d.style.height ? Number(qe(d.style.height)) : null, H = T.number(k) ? k : y.height, R = d.scrollHeight <= H;
|
|
32
|
+
return H === d.scrollHeight ? t ? m.preventDefault() : void 0 : R ? void 0 : t ? m.preventDefault() : void 0;
|
|
33
|
+
}
|
|
34
|
+
return m.currentTarget === document.documentElement, t ? m.preventDefault() : void 0;
|
|
35
|
+
};
|
|
36
|
+
return u.addEventListener("wheel", s, { signal: i.signal, passive: !1 }), u.addEventListener("scroll", s, { signal: i.signal, passive: !1 }), () => {
|
|
37
|
+
i.abort();
|
|
38
|
+
};
|
|
39
|
+
}, [t]), a;
|
|
40
|
+
}, st = (t, n) => {
|
|
41
|
+
t = String(t).toLocaleLowerCase(), n = String(n).toLocaleLowerCase();
|
|
42
|
+
const a = n[0], o = t.split("").map((u, s) => u === a ? s : !1).filter((u) => u !== !1);
|
|
43
|
+
if (o.length === 0)
|
|
44
|
+
return null;
|
|
45
|
+
const l = [];
|
|
46
|
+
if (o.forEach((u) => {
|
|
47
|
+
let s = u + 1;
|
|
48
|
+
const m = [u];
|
|
49
|
+
for (let d = 1; d < n.length; d++) {
|
|
50
|
+
const y = n[d];
|
|
51
|
+
if (s = t.indexOf(y, s), s === -1)
|
|
52
|
+
return;
|
|
53
|
+
m.push(s), s++;
|
|
54
|
+
}
|
|
55
|
+
l.push(m);
|
|
56
|
+
}), l.length === 0)
|
|
57
|
+
return null;
|
|
58
|
+
const i = l.sort((u, s) => {
|
|
59
|
+
if (u.length === 1)
|
|
60
|
+
return u[0] - s[0];
|
|
61
|
+
const m = u[u.length - 1] - u[0], d = s[s.length - 1] - s[0];
|
|
62
|
+
return m - d;
|
|
63
|
+
})[0];
|
|
64
|
+
return t === n ? 1 : i.length > 1 ? 2 + (i[i.length - 1] - i[0]) : 2 + i[0];
|
|
65
|
+
}, me = (t, n, a) => {
|
|
66
|
+
const o = t.split(n).filter(Boolean);
|
|
67
|
+
let l = a;
|
|
68
|
+
for (const i of o) {
|
|
69
|
+
if (l == null)
|
|
70
|
+
return l;
|
|
71
|
+
l = l[i];
|
|
72
|
+
}
|
|
73
|
+
return l;
|
|
74
|
+
}, ge = { basic: /[,[\]]+?/, extend: /[,[\].]+?/ }, he = (t, n) => {
|
|
75
|
+
const a = me(n, ge.basic, t);
|
|
76
|
+
return a !== void 0 && a !== t ? a : me(n, ge.extend, t);
|
|
77
|
+
}, pe = (t) => t.replace(/[^0-9]/g, ""), V = (t) => t.normalize("NFD").replace(/[\u0300-\u036f]/g, ""), ve = (t, n, a, o = "FUZZY") => o === "CONTAINS" ? t.includes(n) : o === "EQUAL" ? t === n : o === "CONTAINS_NUMBERS" ? pe(t).includes(pe(n)) : o === "STARTS_WITH" ? t.startsWith(n) : o === "ENDS_WITH" ? t.endsWith(n) : o === "FUZZY" ? st(t, n) !== null : !1, it = (t, n, a, o = "FUZZY") => Array.isArray(n) ? n.some((l) => ve(t, l, a, o)) : ve(t, n, a, o), ct = (t, n, a) => {
|
|
78
|
+
if (a.length === 0)
|
|
79
|
+
return t;
|
|
80
|
+
const o = /* @__PURE__ */ new Map(), l = a.map((i) => ({ ...i, value: T.array(i.value) ? i.value.map(V) : V(`${i.value}`) }));
|
|
81
|
+
return t.forEach((i) => {
|
|
82
|
+
const u = he(i, n);
|
|
83
|
+
l.forEach((s) => {
|
|
84
|
+
const m = he(i, s.key);
|
|
85
|
+
if (!m) return;
|
|
86
|
+
const d = V(`${s.value}`.toLocaleLowerCase()).trim(), y = V(`${m}`.toLocaleLowerCase()).trim();
|
|
87
|
+
if (it(y, d, s.score, s.match))
|
|
88
|
+
return void o.set(u, i);
|
|
89
|
+
T.function(s.ifNotMatch) && s.ifNotMatch(d, y) && o.set(u, i);
|
|
90
|
+
});
|
|
91
|
+
}), Array.from(o.values());
|
|
92
|
+
}, ut = (t) => /* @__PURE__ */ f(je, { children: t.children }), dt = {
|
|
93
|
+
duration: 200,
|
|
94
|
+
open: { transform: "scaleY(1)", opacity: 1 },
|
|
95
|
+
close: { transform: "scaleY(0)", opacity: 0 },
|
|
96
|
+
initial: { transform: "scaleY(0)", opacity: 0.2 }
|
|
97
|
+
}, ft = [], mt = G(function(n, a) {
|
|
98
|
+
return /* @__PURE__ */ f(J.ul, { ...n, ref: a, className: "max-h-96 w-full overscroll-contain rounded-lg", children: /* @__PURE__ */ f(rt, { children: n.children }) });
|
|
99
|
+
}), gt = G(function({ item: n, context: a, ...o }, l) {
|
|
100
|
+
return /* @__PURE__ */ f(J.li, { ...o, ref: l, className: "first:rounded-t-lg last:rounded-t-lg" });
|
|
101
|
+
}), ht = { List: mt, Item: gt }, L = 40, St = G(
|
|
102
|
+
({
|
|
103
|
+
left: t,
|
|
104
|
+
error: n,
|
|
105
|
+
right: a,
|
|
106
|
+
loading: o,
|
|
107
|
+
options: l,
|
|
108
|
+
container: i,
|
|
109
|
+
rightLabel: u,
|
|
110
|
+
interactive: s,
|
|
111
|
+
emptyMessage: m,
|
|
112
|
+
optionalText: d,
|
|
113
|
+
labelClassName: y,
|
|
114
|
+
feedback: k = null,
|
|
115
|
+
hideLeft: H = !1,
|
|
116
|
+
required: R = !1,
|
|
117
|
+
dynamicOption: X = !1,
|
|
118
|
+
...c
|
|
119
|
+
}, be) => {
|
|
120
|
+
const we = E(null), ee = E(null), O = E(null), P = c.value ?? c.defaultValue ?? "", te = tt(), [ne, D] = x(() => Math.min(320, L * l.length)), [w, A] = x(!1), [C, F] = x(""), [I, Z] = x(P), [ye, _] = x(() => l.find((e) => e.value === P)?.label ?? P), [v, Y] = x(null), re = E(ft), Ce = at(w, "block-only"), le = X && C !== "" ? [
|
|
121
|
+
{
|
|
122
|
+
value: C,
|
|
123
|
+
label: C,
|
|
124
|
+
"data-dynamic": "true"
|
|
125
|
+
},
|
|
126
|
+
...l
|
|
127
|
+
] : l, oe = () => ie(() => A(!0)), xe = C ? ct(le, "value", [
|
|
128
|
+
{ key: "value", value: C },
|
|
129
|
+
{ key: "label", value: C }
|
|
130
|
+
]) : le, U = () => {
|
|
131
|
+
A(!1), D(0);
|
|
132
|
+
}, g = xe.filter((e) => e.hidden !== !0), Ee = X ? void 0 : `^(${l.map((e) => `${de(e.value)}${e.label ? "|" + de(e.label) : ""}`).join("|")})$`, { x: Ie, y: Ne, strategy: Le, refs: b, context: M, placement: ae } = He({
|
|
133
|
+
open: w,
|
|
134
|
+
transform: !0,
|
|
135
|
+
onOpenChange: A,
|
|
136
|
+
placement: "bottom-start",
|
|
137
|
+
whileElementsMounted: Ve,
|
|
138
|
+
middleware: [
|
|
139
|
+
Ye(4),
|
|
140
|
+
$e({ allowedPlacements: ["top-start", "bottom-start"], alignment: "start" }),
|
|
141
|
+
ze({
|
|
142
|
+
padding: 10,
|
|
143
|
+
elementContext: "reference",
|
|
144
|
+
apply(e) {
|
|
145
|
+
const h = e.elements.floating.querySelector("ul")?.getBoundingClientRect().height || 0, p = ce(b.reference.current, window.innerHeight), K = Math.min(h < L ? p : h, p, e.availableHeight), Q = g.length === 0 ? L : Math.min(K, p, h), $ = `${ee.current?.getBoundingClientRect().width || p}px`;
|
|
146
|
+
Object.assign(e.elements.floating.style, { width: $, maxWidth: $, height: Q });
|
|
147
|
+
}
|
|
148
|
+
})
|
|
149
|
+
]
|
|
150
|
+
}), Se = Oe(M, dt), { getReferenceProps: ke, getFloatingProps: Re, getItemProps: De } = Pe([
|
|
151
|
+
Ze(M, { role: "listbox" }),
|
|
152
|
+
_e(M),
|
|
153
|
+
Ue(M, {
|
|
154
|
+
cols: 0,
|
|
155
|
+
listRef: re,
|
|
156
|
+
loop: !0,
|
|
157
|
+
virtual: !0,
|
|
158
|
+
allowEscape: !0,
|
|
159
|
+
activeIndex: v,
|
|
160
|
+
selectedIndex: v,
|
|
161
|
+
focusItemOnOpen: "auto",
|
|
162
|
+
openOnArrowKeyDown: !0,
|
|
163
|
+
scrollItemIntoView: !0
|
|
164
|
+
})
|
|
165
|
+
]);
|
|
166
|
+
S(() => {
|
|
167
|
+
if (c.value) {
|
|
168
|
+
const e = l.find((r) => r.value === c.value);
|
|
169
|
+
e && (_(e.label ?? e.value), Z(c.value));
|
|
170
|
+
}
|
|
171
|
+
}, [c.value, l.length]), S(() => {
|
|
172
|
+
if (!w) return D(0);
|
|
173
|
+
const e = b.reference;
|
|
174
|
+
if (e.current === null) return;
|
|
175
|
+
const r = ce(e.current, window.innerHeight);
|
|
176
|
+
setTimeout(() => D(Math.min(r, g.length * L)), 100);
|
|
177
|
+
}, [C, w, b.reference, g.length]), S(() => {
|
|
178
|
+
const e = b.reference.current;
|
|
179
|
+
if (e)
|
|
180
|
+
return Ge(e);
|
|
181
|
+
}, []);
|
|
182
|
+
const B = (e, r) => {
|
|
183
|
+
Z(e.value);
|
|
184
|
+
const h = b.reference.current;
|
|
185
|
+
if (!h) return;
|
|
186
|
+
h?.setAttribute("data-value", e.value), h.value = e.value;
|
|
187
|
+
const p = new Event("change", { bubbles: !1, cancelable: !0 });
|
|
188
|
+
h.dispatchEvent(p), c.onChange && c.onChange(p), _(e.label ?? ""), U(), F(""), Y(r);
|
|
189
|
+
}, Ae = (e) => {
|
|
190
|
+
const r = e.target.value;
|
|
191
|
+
return F(r), !w && r === "" ? A(!0) : (e.target.name = c.name || "", r ? A(!0) : c.onChange?.(e));
|
|
192
|
+
}, Fe = () => {
|
|
193
|
+
oe(), F(""), b.reference.current?.focus();
|
|
194
|
+
}, Me = () => {
|
|
195
|
+
Y((e) => e === null ? 0 : e), oe(), F("");
|
|
196
|
+
}, Te = () => {
|
|
197
|
+
b.reference.current?.setAttribute("data-value", ""), F(""), Z(""), _(""), Xe(b.reference.current), U();
|
|
198
|
+
}, N = c.id || c.name, W = `${N}-shadow`, j = g.length === 0, se = ae === "top" || ae === "top-start";
|
|
199
|
+
return /* @__PURE__ */ z(
|
|
200
|
+
nt,
|
|
201
|
+
{
|
|
202
|
+
...c,
|
|
203
|
+
left: t,
|
|
204
|
+
error: n,
|
|
205
|
+
ref: ee,
|
|
206
|
+
form: c.form,
|
|
207
|
+
loading: o,
|
|
208
|
+
name: c.name,
|
|
209
|
+
feedback: w && se ? c.title : k,
|
|
210
|
+
hideLeft: H,
|
|
211
|
+
required: R,
|
|
212
|
+
title: c.title,
|
|
213
|
+
container: i,
|
|
214
|
+
rightLabel: u,
|
|
215
|
+
interactive: s,
|
|
216
|
+
id: W,
|
|
217
|
+
optionalText: d,
|
|
218
|
+
componentName: "autocomplete",
|
|
219
|
+
labelClassName: y,
|
|
220
|
+
placeholder: c.placeholder,
|
|
221
|
+
right: /* @__PURE__ */ z("span", { className: "flex items-center gap-0.5", children: [
|
|
222
|
+
a,
|
|
223
|
+
/* @__PURE__ */ z("button", { type: "button", className: "p-2 transition-colors link:text-primary md:p-1", onClick: Fe, children: [
|
|
224
|
+
/* @__PURE__ */ f(lt, { size: 20 }),
|
|
225
|
+
/* @__PURE__ */ f("span", { className: "sr-only", children: te.inputCaretDown })
|
|
226
|
+
] }),
|
|
227
|
+
I ? /* @__PURE__ */ f("button", { type: "button", onClick: Te, className: "p-2 transition-colors link:text-danger md:p-1", children: /* @__PURE__ */ f("svg", { width: "15", height: "15", viewBox: "0 0 15 15", fill: "none", xmlns: "http://www.w3.org/2000/svg", children: /* @__PURE__ */ f(
|
|
228
|
+
"path",
|
|
229
|
+
{
|
|
230
|
+
d: "M11.7816 4.03157C12.0062 3.80702 12.0062 3.44295 11.7816 3.2184C11.5571 2.99385 11.193 2.99385 10.9685 3.2184L7.50005 6.68682L4.03164 3.2184C3.80708 2.99385 3.44301 2.99385 3.21846 3.2184C2.99391 3.44295 2.99391 3.80702 3.21846 4.03157L6.68688 7.49999L3.21846 10.9684C2.99391 11.193 2.99391 11.557 3.21846 11.7816C3.44301 12.0061 3.80708 12.0061 4.03164 11.7816L7.50005 8.31316L10.9685 11.7816C11.193 12.0061 11.5571 12.0061 11.7816 11.7816C12.0062 11.557 12.0062 11.193 11.7816 10.9684L8.31322 7.49999L11.7816 4.03157Z",
|
|
231
|
+
fill: "currentColor",
|
|
232
|
+
fillRule: "evenodd",
|
|
233
|
+
clipRule: "evenodd"
|
|
234
|
+
}
|
|
235
|
+
) }) }) : null
|
|
236
|
+
] }),
|
|
237
|
+
children: [
|
|
238
|
+
/* @__PURE__ */ f(
|
|
239
|
+
"input",
|
|
240
|
+
{
|
|
241
|
+
"data-shadow": "true",
|
|
242
|
+
...ke({
|
|
243
|
+
...c,
|
|
244
|
+
onFocus: Me,
|
|
245
|
+
pattern: Ee,
|
|
246
|
+
onChange: Ae,
|
|
247
|
+
id: W,
|
|
248
|
+
name: W,
|
|
249
|
+
ref: b.setReference,
|
|
250
|
+
onClick: (e) => e.currentTarget.focus(),
|
|
251
|
+
onKeyDown(e) {
|
|
252
|
+
if (e.key === "Escape")
|
|
253
|
+
return e.currentTarget.blur(), U();
|
|
254
|
+
if (w) {
|
|
255
|
+
if (e.key === "ArrowDown") {
|
|
256
|
+
let r = T.number(v) ? v + 1 : 0;
|
|
257
|
+
return r > g.length - 1 && (r = 0), O.current?.scrollIntoView({ index: r }), Y(r);
|
|
258
|
+
}
|
|
259
|
+
if (e.key === "ArrowUp") {
|
|
260
|
+
let r = T.number(v) ? v - 1 : g.length - 1;
|
|
261
|
+
return r < 0 && (r = g.length - 1), O.current?.scrollIntoView({ index: r }), Y(r);
|
|
262
|
+
}
|
|
263
|
+
if (e.key === "Enter") {
|
|
264
|
+
if (v !== null && g[v])
|
|
265
|
+
return e.preventDefault(), B(g[v], v);
|
|
266
|
+
if (g.length === 1)
|
|
267
|
+
return e.preventDefault(), B(g[0], 0);
|
|
268
|
+
}
|
|
269
|
+
}
|
|
270
|
+
}
|
|
271
|
+
}),
|
|
272
|
+
"data-value": I,
|
|
273
|
+
"data-error": !!n,
|
|
274
|
+
"data-name": N,
|
|
275
|
+
"data-target": N,
|
|
276
|
+
required: R,
|
|
277
|
+
value: w ? C : l.length === 0 ? "" : ye || I,
|
|
278
|
+
"aria-autocomplete": "list",
|
|
279
|
+
autoComplete: "off",
|
|
280
|
+
className: ue(
|
|
281
|
+
"input placeholder-input-mask group h-input-height w-full flex-1",
|
|
282
|
+
"rounded-md bg-transparent px-input-x py-input-y text-foreground",
|
|
283
|
+
"outline-none transition-colors focus:ring-2 focus:ring-inset focus:ring-primary",
|
|
284
|
+
"group-error:text-danger group-error:placeholder-input-mask-error",
|
|
285
|
+
"text-base group-focus-within:border-primary group-hover:border-primary",
|
|
286
|
+
c.className
|
|
287
|
+
)
|
|
288
|
+
}
|
|
289
|
+
),
|
|
290
|
+
/* @__PURE__ */ f(
|
|
291
|
+
"input",
|
|
292
|
+
{
|
|
293
|
+
id: N,
|
|
294
|
+
name: N,
|
|
295
|
+
type: "hidden",
|
|
296
|
+
"data-origin": N,
|
|
297
|
+
ref: be,
|
|
298
|
+
required: R,
|
|
299
|
+
defaultValue: c.value || I || void 0
|
|
300
|
+
}
|
|
301
|
+
),
|
|
302
|
+
/* @__PURE__ */ f(Be, { preserveTabOrder: !0, children: w ? /* @__PURE__ */ f(We, { modal: !0, guards: !0, returnFocus: !1, context: M, initialFocus: -1, visuallyHiddenDismiss: !0, children: /* @__PURE__ */ z(
|
|
303
|
+
J.div,
|
|
304
|
+
{
|
|
305
|
+
...Re({
|
|
306
|
+
ref: Je(Ce, b.setFloating),
|
|
307
|
+
style: { ...Se.styles, left: Ie, top: Ne ?? 0, position: Le, height: "auto" }
|
|
308
|
+
}),
|
|
309
|
+
initial: !1,
|
|
310
|
+
"data-floating": "true",
|
|
311
|
+
animate: { height: j ? "auto" : ne },
|
|
312
|
+
className: ue(
|
|
313
|
+
"shadow-floating isolate z-floating m-0 max-h-80 origin-[top_center] list-none overscroll-contain rounded-b-lg rounded-t-lg border border-floating-border bg-floating-background p-0 text-foreground ease-in-out",
|
|
314
|
+
se ? "origin-[bottom_center]" : "origin-[top_center]"
|
|
315
|
+
),
|
|
316
|
+
onAnimationComplete: () => {
|
|
317
|
+
if (!w) return D(0);
|
|
318
|
+
const r = b.floating.current.querySelectorAll("li").item(0), h = (r ? r.getBoundingClientRect().height : L) * g.length;
|
|
319
|
+
return ie(() => D(h + 2));
|
|
320
|
+
},
|
|
321
|
+
children: [
|
|
322
|
+
j ? /* @__PURE__ */ f("div", { role: "option", className: "w-full border-b border-tooltip-border", children: /* @__PURE__ */ f("span", { className: "flex w-full justify-between p-2 text-left text-disabled", children: m || te.autocompleteEmpty }) }) : null,
|
|
323
|
+
/* @__PURE__ */ f(
|
|
324
|
+
Ke,
|
|
325
|
+
{
|
|
326
|
+
overscan: 40,
|
|
327
|
+
ref: O,
|
|
328
|
+
hidden: j,
|
|
329
|
+
data: g,
|
|
330
|
+
style: { height: ne },
|
|
331
|
+
defaultItemHeight: L,
|
|
332
|
+
components: ht,
|
|
333
|
+
scrollerRef: (e) => {
|
|
334
|
+
we.current = e;
|
|
335
|
+
},
|
|
336
|
+
className: "border-floating max-h-full overscroll-contain rounded-lg bg-floating-background p-0 text-foreground",
|
|
337
|
+
itemContent: (e, r) => {
|
|
338
|
+
const h = r.Render ?? ut, p = I === r.value || I === r.label, K = v === e, Q = r.label ?? r.value;
|
|
339
|
+
return /* @__PURE__ */ f(
|
|
340
|
+
"button",
|
|
341
|
+
{
|
|
342
|
+
"data-value": r.value,
|
|
343
|
+
...De({
|
|
344
|
+
ref: ($) => {
|
|
345
|
+
re.current[e] = $;
|
|
346
|
+
},
|
|
347
|
+
role: "option",
|
|
348
|
+
type: "button",
|
|
349
|
+
"aria-checked": p,
|
|
350
|
+
"aria-current": p,
|
|
351
|
+
"aria-selected": p,
|
|
352
|
+
"aria-busy": r.disabled,
|
|
353
|
+
onClick: () => B(r, e),
|
|
354
|
+
className: `cursor-pointer min-h-10 hover:bg-floating-hover w-full p-2 text-left ${p ? "bg-primary-hover text-primary-foreground" : ""} ${K ? "bg-floating-hover text-floating-foreground" : ""}`
|
|
355
|
+
}),
|
|
356
|
+
children: /* @__PURE__ */ f(h, { ...c, label: r.label, value: r.value, children: Q })
|
|
357
|
+
}
|
|
358
|
+
);
|
|
359
|
+
}
|
|
360
|
+
}
|
|
361
|
+
)
|
|
362
|
+
]
|
|
363
|
+
}
|
|
364
|
+
) }) : null })
|
|
365
|
+
]
|
|
366
|
+
}
|
|
367
|
+
);
|
|
368
|
+
}
|
|
369
|
+
);
|
|
370
|
+
export {
|
|
371
|
+
St as A,
|
|
372
|
+
ct as f,
|
|
373
|
+
at as u
|
|
374
|
+
};
|
|
375
|
+
//# sourceMappingURL=autocomplete-Boida9R7.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"autocomplete-Boida9R7.js","sources":["../src/hooks/use-is-coarse-device.ts","../src/hooks/use-remove-scroll.ts","../src/lib/fzf.ts","../src/components/form/autocomplete.tsx"],"sourcesContent":["import { useEffect, useRef, useState } from \"react\";\nimport { isSsr } from \"../lib/fns\";\n\nconst getCoarse = () => window.matchMedia(\"@media (pointer: coarse)\");\n\nexport const useIsCoarseDevice = (): boolean => {\n const ref = useRef(isSsr() ? null : getCoarse());\n const [isCoarse, setIsCoarse] = useState<boolean>(isSsr() ? false : (ref.current?.matches ?? false));\n useEffect(() => {\n const coerse = ref.current === null ? getCoarse() : ref.current;\n coerse.addEventListener(\"change\", (e) => setIsCoarse(e.matches));\n }, []);\n\n return isCoarse;\n};\n","import { useEffect, useRef } from \"react\";\nimport { Is, onlyNumbers } from \"sidekicker\";\nimport { hasVerticalScroll } from \"../lib/dom\";\nimport { isMobile, isSsr } from \"../lib/fns\";\nimport { useIsCoarseDevice } from \"./use-is-coarse-device\";\n\ntype ScrollRemoveStyle = \"overflow-hidden\" | \"block-only\";\n\nexport const useRemoveScroll = <T extends HTMLElement>(remove: boolean, removeStyle: ScrollRemoveStyle = \"overflow-hidden\") => {\n const ref = useRef<T | null>(null);\n const isCoarseDevice = useIsCoarseDevice();\n const prev = useRef(isSsr() ? \"\" : document.documentElement.style.overflowY);\n\n useEffect(() => {\n if (ref.current === null && !remove) return;\n if (removeStyle === \"block-only\") return;\n if (removeStyle === \"overflow-hidden\") {\n if (remove) {\n prev.current = document.documentElement.style.overflowY;\n document.documentElement.style.overflowY = \"hidden\";\n if (isCoarseDevice || isMobile()) return;\n document.documentElement.style.padding = hasVerticalScroll(document.documentElement) ? \"0 15px 0 0\" : \"\";\n } else {\n document.documentElement.style.padding = \"\";\n document.documentElement.style.overflowY = prev.current;\n }\n }\n }, [remove, isCoarseDevice, removeStyle]);\n\n useEffect(() => {\n if (!remove) return;\n const controller = new AbortController();\n const html = document.documentElement;\n const removeScroll = (e: Event) => {\n const el = ref.current;\n if (el) {\n if (el.contains(e.target as HTMLElement)) {\n const rect = el.getBoundingClientRect();\n const realHeight = el.style.height ? Number(onlyNumbers(el.style.height)) : null;\n const scrollable = Is.number(realHeight) ? realHeight : rect.height;\n const hasScroll = el.scrollHeight <= scrollable;\n if (scrollable === el.scrollHeight) return remove ? e.preventDefault() : undefined;\n if (hasScroll) return;\n return remove ? e.preventDefault() : undefined;\n }\n }\n if (e.currentTarget === document.documentElement) {\n return remove ? e.preventDefault() : undefined;\n }\n return remove ? e.preventDefault() : undefined;\n };\n html.addEventListener(\"wheel\", removeScroll, { signal: controller.signal, passive: false });\n html.addEventListener(\"scroll\", removeScroll, { signal: controller.signal, passive: false });\n return () => {\n controller.abort();\n };\n }, [remove]);\n\n return ref;\n};\n","import { Is } from \"sidekicker\";\nimport { Any, Walk } from \"../types\";\n\nexport const fuzzyMatch = (text: string, search: string): number | null => {\n text = String(text).toLocaleLowerCase();\n search = String(search).toLocaleLowerCase();\n const firstChar = search[0];\n const firstCharIndexes = text\n .split(\"\")\n .map((char, index) => (char === firstChar ? index : false))\n .filter((index): index is number => index !== false);\n\n if (firstCharIndexes.length === 0) {\n return null;\n }\n const matchedIndexes: number[][] = [];\n firstCharIndexes.forEach((startingIndex) => {\n let index = startingIndex + 1;\n const indexes = [startingIndex];\n for (let i = 1; i < search.length; i++) {\n const letter = search[i]!;\n index = text.indexOf(letter, index);\n\n if (index === -1) {\n return;\n }\n indexes.push(index);\n index++;\n }\n matchedIndexes.push(indexes);\n });\n\n if (matchedIndexes.length === 0) {\n return null;\n }\n const bestMatch = matchedIndexes.sort((a, b) => {\n if (a.length === 1) {\n return a[0]! - b[0]!;\n }\n const aSpread = a[a.length - 1]! - a[0]!;\n const bSpread = b[b.length - 1]! - b[0]!;\n\n return aSpread - bSpread;\n })[0]!;\n if (text === search) {\n return 1;\n } else if (bestMatch.length > 1) {\n return 2 + (bestMatch[bestMatch.length - 1]! - bestMatch[0]!);\n }\n return 2 + bestMatch[0]!;\n};\n\nexport type Match = \"EQUAL\" | \"CONTAINS\" | \"CONTAINS_NUMBERS\" | \"STARTS_WITH\" | \"ENDS_WITH\" | \"FUZZY\";\n\nexport type MatchValue<T> = {\n match?: Match;\n score?: number;\n key: Walk<T>;\n value: string | string[];\n ifNotMatch?: (value: string, source: string) => boolean;\n};\n\nexport type Matcher<T> = { match?: Match; key: Walk<T> };\n\nconst travel = (path: string, regexp: RegExp, obj: any): any => {\n const keys = path.split(regexp).filter(Boolean);\n let res = obj;\n for (const key of keys) {\n if (res === null || res === undefined) {\n return res;\n }\n res = res[key];\n }\n return res;\n};\n\nconst regexPaths = { basic: /[,[\\]]+?/, extend: /[,[\\].]+?/ };\n\nconst path = <T extends Any, V>(obj: T, path: Walk<T>): V => {\n const result = travel(path as string, regexPaths.basic, obj);\n if (result !== undefined && result !== obj) return result;\n return travel(path as string, regexPaths.extend, obj);\n};\n\nconst onlyNumbers = (str: string) => str.replace(/[^0-9]/g, \"\");\n\nconst diacritics = (input: string): string => input.normalize(\"NFD\").replace(/[\\u0300-\\u036f]/g, \"\");\n\nconst strCompare = (text: string, value: string, _?: number, match: Match = \"FUZZY\"): boolean => {\n if (match === \"CONTAINS\") {\n return text.includes(value);\n }\n if (match === \"EQUAL\") {\n return text === value;\n }\n if (match === \"CONTAINS_NUMBERS\") {\n return onlyNumbers(text).includes(onlyNumbers(value));\n }\n if (match === \"STARTS_WITH\") {\n return text.startsWith(value);\n }\n if (match === \"ENDS_WITH\") {\n return text.endsWith(value);\n }\n if (match === \"FUZZY\") {\n const r = fuzzyMatch(text, value);\n return r !== null;\n }\n return false;\n};\n\nconst compare = (search: string, value: string | string[], defaultScore?: number, match: Match = \"FUZZY\"): boolean =>\n Array.isArray(value) ? value.some((x) => strCompare(search, x, defaultScore, match)) : strCompare(search, value, defaultScore, match);\n\nexport const fzf = <T extends Any, ID extends Walk<T>>(items: T[], id: ID, keys: MatchValue<T>[]) => {\n if (keys.length === 0) {\n return items;\n }\n const map = new Map<ID, T>();\n const remap = keys.map((x) => {\n return { ...x, value: Is.array(x.value) ? x.value.map(diacritics) : diacritics(`${x.value}`) };\n });\n items.forEach((item) => {\n const idVal = path<T, ID>(item, id);\n remap.forEach((filter) => {\n const searchValue = path(item, filter.key);\n if (!searchValue) return;\n const target = diacritics(`${filter.value}`.toLocaleLowerCase()).trim();\n const search = diacritics(`${searchValue}`.toLocaleLowerCase()).trim();\n if (compare(search, target, filter.score, filter.match)) {\n return void map.set(idVal, item);\n }\n if (Is.function(filter.ifNotMatch)) {\n const result = filter.ifNotMatch(target, search);\n if (result) map.set(idVal, item);\n }\n });\n });\n return Array.from(map.values());\n};\n","\"use client\";\nimport {\n autoPlacement,\n autoUpdate,\n FloatingFocusManager,\n FloatingPortal,\n offset,\n size,\n useDismiss,\n useFloating,\n useInteractions,\n useListNavigation,\n useRole,\n useTransitionStyles,\n} from \"@floating-ui/react\";\nimport { ChevronDown } from \"lucide-react\";\nimport { AnimatePresence, motion } from \"motion/react\";\nimport React, { forwardRef, Fragment, type PropsWithChildren, useEffect, useRef, useState } from \"react\";\nimport { flushSync } from \"react-dom\";\nimport { Virtuoso, type VirtuosoHandle } from \"react-virtuoso\";\nimport { Is } from \"sidekicker\";\nimport { useRemoveScroll } from \"../../hooks/use-remove-scroll\";\nimport { useTranslations } from \"../../hooks/use-translations\";\nimport { css, dispatchInput, getRemainingSize, initializeInputDataset, mergeRefs } from \"../../lib/dom\";\nimport { safeRegex } from \"../../lib/fns\";\nimport { fzf } from \"../../lib/fzf\";\nimport { Label } from \"../../types\";\nimport { InputField, InputFieldProps } from \"./input-field\";\nimport { type OptionProps } from \"./select\";\n\nexport type AutocompleteItemProps = OptionProps & { Render?: React.FC<OptionProps> };\n\nexport type AutocompleteProps = Omit<InputFieldProps<\"input\">, \"value\"> & {\n title?: string;\n value?: string;\n emptyMessage?: Label;\n dynamicOption?: boolean;\n options: AutocompleteItemProps[];\n};\n\nconst Frag = (props: PropsWithChildren) => <Fragment>{props.children}</Fragment>;\n\nconst transitionStyles = {\n duration: 200,\n open: { transform: \"scaleY(1)\", opacity: 1 },\n close: { transform: \"scaleY(0)\", opacity: 0 },\n initial: { transform: \"scaleY(0)\", opacity: 0.2 },\n} as const;\n\nconst emptyRef: any[] = [];\n\nconst List = forwardRef(function VirtualList(props: any, ref: any) {\n return (\n <motion.ul {...props} ref={ref as any} className=\"max-h-96 w-full overscroll-contain rounded-lg\">\n <AnimatePresence>{props.children}</AnimatePresence>\n </motion.ul>\n );\n});\n\nconst Item = forwardRef(function VirtualItem({ item, context, ...props }: any, ref: any) {\n return <motion.li {...props} ref={ref as any} className=\"first:rounded-t-lg last:rounded-t-lg\" />;\n});\n\nconst components = { List, Item };\n\nconst MIN_SIZE = 40;\n\nexport const Autocomplete = forwardRef<HTMLInputElement, AutocompleteProps>(\n (\n {\n left,\n error,\n right,\n loading,\n options,\n container,\n rightLabel,\n interactive,\n emptyMessage,\n optionalText,\n labelClassName,\n feedback = null,\n hideLeft = false,\n required = false,\n dynamicOption = false,\n ...props\n }: AutocompleteProps,\n externalRef\n ) => {\n const scroller = useRef<HTMLElement | null>(null);\n const fieldset = useRef<HTMLFieldSetElement>(null);\n const virtuoso = useRef<VirtuosoHandle | null>(null);\n const defaults = props.value ?? props.defaultValue ?? \"\";\n const translation = useTranslations();\n const [h, setH] = useState(() => Math.min(320, MIN_SIZE * options.length));\n const [open, setOpen] = useState(false);\n const [shadow, setShadow] = useState(\"\");\n const [value, setValue] = useState(defaults);\n const [label, setLabel] = useState(() => options.find((x) => x.value === defaults)?.label ?? defaults);\n const [index, setIndex] = useState<number | null>(null);\n const listRef = useRef<Array<HTMLElement | null>>(emptyRef);\n const removeScrollRef = useRemoveScroll(open, \"block-only\");\n const innerOptions: AutocompleteItemProps[] =\n dynamicOption && shadow !== \"\"\n ? [\n {\n value: shadow,\n label: shadow,\n \"data-dynamic\": \"true\",\n },\n ...options,\n ]\n : options;\n\n const openDropdown = () => flushSync(() => setOpen(true));\n\n const list = shadow\n ? fzf(innerOptions, \"value\", [\n { key: \"value\", value: shadow },\n { key: \"label\", value: shadow },\n ])\n : innerOptions;\n\n const setClosed = () => {\n setOpen(false);\n setH(0);\n };\n\n const displayList = list.filter((x) => x.hidden !== true);\n\n const pattern = dynamicOption\n ? undefined\n : `^(${options.map((x) => `${safeRegex(x.value)}${x.label ? \"|\" + safeRegex(x.label) : \"\"}`).join(\"|\")})$`;\n\n const { x, y, strategy, refs, context, placement } = useFloating<HTMLInputElement>({\n open,\n transform: true,\n onOpenChange: setOpen,\n placement: \"bottom-start\",\n whileElementsMounted: autoUpdate,\n middleware: [\n offset(4),\n autoPlacement({ allowedPlacements: [\"top-start\", \"bottom-start\"], alignment: \"start\" }),\n size({\n padding: 10,\n elementContext: \"reference\",\n apply(args) {\n const ul = args.elements.floating.querySelector(\"ul\");\n const fullSize = ul?.getBoundingClientRect().height || 0;\n const DEFAULT_SIZE = getRemainingSize(refs.reference!.current as HTMLElement, window.innerHeight);\n const maxH = Math.min(fullSize < MIN_SIZE ? DEFAULT_SIZE : fullSize, DEFAULT_SIZE, args.availableHeight);\n const size = displayList.length === 0 ? MIN_SIZE : Math.min(maxH, DEFAULT_SIZE, fullSize);\n const mw = `${fieldset.current?.getBoundingClientRect().width || DEFAULT_SIZE}px`;\n Object.assign(args.elements.floating.style, { width: mw, maxWidth: mw, height: size });\n },\n }),\n ],\n });\n const transitions = useTransitionStyles(context, transitionStyles);\n const { getReferenceProps, getFloatingProps, getItemProps } = useInteractions([\n useRole(context, { role: \"listbox\" }),\n useDismiss(context),\n useListNavigation(context, {\n cols: 0,\n listRef,\n loop: true,\n virtual: true,\n allowEscape: true,\n activeIndex: index,\n selectedIndex: index,\n focusItemOnOpen: \"auto\",\n openOnArrowKeyDown: true,\n scrollItemIntoView: true,\n }),\n ]);\n\n useEffect(() => {\n if (props.value) {\n const item = options.find((x) => x.value === props.value);\n if (item) {\n setLabel(item.label ?? item.value);\n setValue(props.value);\n }\n }\n }, [props.value, options.length]);\n\n useEffect(() => {\n if (!open) return setH(0);\n const inputRef = refs.reference;\n if (inputRef.current === null) return;\n const s = getRemainingSize(inputRef.current as HTMLElement, window.innerHeight);\n setTimeout(() => setH(Math.min(s, displayList.length * MIN_SIZE)), 100);\n }, [shadow, open, refs.reference, displayList.length]);\n\n useEffect(() => {\n const input = refs.reference.current as HTMLInputElement;\n if (!input) return;\n return initializeInputDataset(input);\n }, []);\n\n const onSelect = (opt: AutocompleteItemProps, i: number) => {\n setValue(opt.value);\n const input = refs.reference.current as HTMLInputElement;\n if (!input) return;\n input?.setAttribute(\"data-value\", opt.value);\n input.value = opt.value;\n const event = new Event(\"change\", { bubbles: false, cancelable: true });\n input.dispatchEvent(event);\n if (props.onChange) props.onChange(event as any);\n setLabel(opt.label ?? \"\");\n setClosed();\n setShadow(\"\");\n setIndex(i);\n };\n\n const onChange = (event: React.ChangeEvent<HTMLInputElement>) => {\n const value = event.target.value;\n setShadow(value);\n if (!open && value === \"\") return setOpen(true);\n event.target.name = props.name || \"\";\n return value ? setOpen(true) : props.onChange?.(event);\n };\n\n const onCaretDownClick = () => {\n openDropdown();\n setShadow(\"\");\n (refs.reference.current as HTMLInputElement)?.focus();\n };\n\n const onFocus = () => {\n setIndex((prev) => (prev === null ? 0 : prev));\n openDropdown();\n setShadow(\"\");\n };\n\n const onClose = () => {\n (refs.reference.current as HTMLInputElement)?.setAttribute(\"data-value\", \"\");\n setShadow(\"\");\n setValue(\"\");\n setLabel(\"\");\n dispatchInput(refs.reference.current as HTMLInputElement);\n setClosed();\n };\n\n const id = props.id || props.name;\n\n const shadowId = `${id}-shadow`;\n\n const isEmpty = displayList.length === 0;\n\n const isTopPlacement = placement === \"top\" || placement === \"top-start\";\n\n return (\n <InputField\n {...(props as any)}\n left={left}\n error={error}\n ref={fieldset}\n form={props.form}\n loading={loading}\n name={props.name}\n feedback={open && isTopPlacement ? props.title : feedback}\n hideLeft={hideLeft}\n required={required}\n title={props.title}\n container={container}\n rightLabel={rightLabel}\n interactive={interactive}\n id={shadowId}\n optionalText={optionalText}\n componentName=\"autocomplete\"\n labelClassName={labelClassName}\n placeholder={props.placeholder}\n right={\n <span className=\"flex items-center gap-0.5\">\n {right}\n <button type=\"button\" className=\"p-2 transition-colors link:text-primary md:p-1\" onClick={onCaretDownClick}>\n <ChevronDown size={20} />\n <span className=\"sr-only\">{translation.inputCaretDown}</span>\n </button>\n {value ? (\n <button type=\"button\" onClick={onClose} className=\"p-2 transition-colors link:text-danger md:p-1\">\n <svg width=\"15\" height=\"15\" viewBox=\"0 0 15 15\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n d=\"M11.7816 4.03157C12.0062 3.80702 12.0062 3.44295 11.7816 3.2184C11.5571 2.99385 11.193 2.99385 10.9685 3.2184L7.50005 6.68682L4.03164 3.2184C3.80708 2.99385 3.44301 2.99385 3.21846 3.2184C2.99391 3.44295 2.99391 3.80702 3.21846 4.03157L6.68688 7.49999L3.21846 10.9684C2.99391 11.193 2.99391 11.557 3.21846 11.7816C3.44301 12.0061 3.80708 12.0061 4.03164 11.7816L7.50005 8.31316L10.9685 11.7816C11.193 12.0061 11.5571 12.0061 11.7816 11.7816C12.0062 11.557 12.0062 11.193 11.7816 10.9684L8.31322 7.49999L11.7816 4.03157Z\"\n fill=\"currentColor\"\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n />\n </svg>\n </button>\n ) : null}\n </span>\n }\n >\n <input\n data-shadow=\"true\"\n {...(getReferenceProps({\n ...props,\n onFocus,\n pattern,\n onChange,\n id: shadowId,\n name: shadowId,\n ref: refs.setReference,\n onClick: (e: React.MouseEvent<HTMLInputElement>) => e.currentTarget.focus(),\n onKeyDown(event: React.KeyboardEvent<HTMLInputElement>) {\n if (event.key === \"Escape\") {\n event.currentTarget.blur();\n return setClosed();\n }\n if (!open) return;\n if (event.key === \"ArrowDown\") {\n let next = Is.number(index) ? index + 1 : 0;\n if (next > displayList.length - 1) next = 0;\n virtuoso.current?.scrollIntoView({ index: next });\n return setIndex(next);\n }\n if (event.key === \"ArrowUp\") {\n let next = Is.number(index) ? index! - 1 : displayList.length - 1;\n if (next < 0) next = displayList.length - 1;\n virtuoso.current?.scrollIntoView({ index: next });\n return setIndex(next);\n }\n if (event.key === \"Enter\") {\n if (index !== null && displayList[index]) {\n event.preventDefault();\n return onSelect(displayList[index], index);\n }\n if (displayList.length === 1) {\n event.preventDefault();\n return onSelect(displayList[0], 0);\n }\n }\n },\n } as any) as any)}\n data-value={value}\n data-error={!!error}\n data-name={id}\n data-target={id}\n required={required}\n value={open ? shadow : options.length === 0 ? \"\" : label || value}\n aria-autocomplete=\"list\"\n autoComplete=\"off\"\n className={css(\n \"input placeholder-input-mask group h-input-height w-full flex-1\",\n \"rounded-md bg-transparent px-input-x py-input-y text-foreground\",\n \"outline-none transition-colors focus:ring-2 focus:ring-inset focus:ring-primary\",\n \"group-error:text-danger group-error:placeholder-input-mask-error\",\n \"text-base group-focus-within:border-primary group-hover:border-primary\",\n props.className\n )}\n />\n <input\n id={id}\n name={id}\n type=\"hidden\"\n data-origin={id}\n ref={externalRef}\n required={required}\n defaultValue={props.value || value || undefined}\n />\n <FloatingPortal preserveTabOrder>\n {open ? (\n <FloatingFocusManager modal guards returnFocus={false} context={context} initialFocus={-1} visuallyHiddenDismiss>\n <motion.div\n {...getFloatingProps({\n ref: mergeRefs(removeScrollRef as any, refs.setFloating as any) as any,\n style: { ...transitions.styles, left: x, top: y ?? 0, position: strategy, height: \"auto\" },\n })}\n initial={false}\n data-floating=\"true\"\n animate={{ height: isEmpty ? \"auto\" : h }}\n className={css(\n \"shadow-floating isolate z-floating m-0 max-h-80 origin-[top_center] list-none overscroll-contain rounded-b-lg rounded-t-lg border border-floating-border bg-floating-background p-0 text-foreground ease-in-out\",\n isTopPlacement ? \"origin-[bottom_center]\" : \"origin-[top_center]\"\n )}\n onAnimationComplete={() => {\n if (!open) return setH(0);\n const ul = refs.floating.current as HTMLElement;\n const li = ul.querySelectorAll(\"li\").item(0);\n const sum = (li ? li.getBoundingClientRect().height : MIN_SIZE) * displayList.length;\n return flushSync(() => setH(sum + 2));\n }}\n >\n {isEmpty ? (\n <div role=\"option\" className=\"w-full border-b border-tooltip-border\">\n <span className=\"flex w-full justify-between p-2 text-left text-disabled\">\n {emptyMessage || translation.autocompleteEmpty}\n </span>\n </div>\n ) : null}\n <Virtuoso\n overscan={40}\n ref={virtuoso}\n hidden={isEmpty}\n data={displayList}\n style={{ height: h }}\n defaultItemHeight={MIN_SIZE}\n components={components as any}\n scrollerRef={(e) => void (scroller.current = e as HTMLElement)}\n className=\"border-floating max-h-full overscroll-contain rounded-lg bg-floating-background p-0 text-foreground\"\n itemContent={(i, option) => {\n const Label = (option.Render as React.FC<any>) ?? Frag;\n const active = value === option.value || value === option.label;\n const selected = index === i;\n const children = option.label ?? option.value;\n return (\n <button\n data-value={option.value}\n {...getItemProps({\n ref: (node) => void (listRef.current[i] = node) as any,\n role: \"option\",\n type: \"button\",\n \"aria-checked\": active,\n \"aria-current\": active,\n \"aria-selected\": active,\n \"aria-busy\": option.disabled,\n onClick: () => onSelect(option, i),\n className: `cursor-pointer min-h-10 hover:bg-floating-hover w-full p-2 text-left ${active ? \"bg-primary-hover text-primary-foreground\" : \"\"} ${selected ? \"bg-floating-hover text-floating-foreground\" : \"\"}`,\n })}\n >\n <Label {...props} label={option.label} value={option.value} children={children} />\n </button>\n );\n }}\n />\n </motion.div>\n </FloatingFocusManager>\n ) : null}\n </FloatingPortal>\n </InputField>\n );\n }\n);\n"],"names":["getCoarse","useIsCoarseDevice","ref","useRef","isSsr","isCoarse","setIsCoarse","useState","useEffect","e","useRemoveScroll","remove","removeStyle","isCoarseDevice","prev","isMobile","hasVerticalScroll","controller","html","removeScroll","el","rect","realHeight","onlyNumbers","scrollable","Is","hasScroll","fuzzyMatch","text","search","firstChar","firstCharIndexes","char","index","matchedIndexes","startingIndex","indexes","i","letter","bestMatch","a","b","aSpread","bSpread","travel","path","regexp","obj","keys","res","key","regexPaths","result","str","diacritics","input","strCompare","value","_","match","compare","defaultScore","x","fzf","items","id","map","remap","item","idVal","filter","searchValue","target","Frag","props","jsx","Fragment","transitionStyles","emptyRef","List","forwardRef","motion","AnimatePresence","Item","context","components","MIN_SIZE","Autocomplete","left","error","right","loading","options","container","rightLabel","interactive","emptyMessage","optionalText","labelClassName","feedback","hideLeft","required","dynamicOption","externalRef","scroller","fieldset","virtuoso","defaults","translation","useTranslations","h","setH","open","setOpen","shadow","setShadow","setValue","label","setLabel","setIndex","listRef","removeScrollRef","innerOptions","openDropdown","flushSync","list","setClosed","displayList","pattern","safeRegex","y","strategy","refs","placement","useFloating","autoUpdate","offset","autoPlacement","size","args","fullSize","DEFAULT_SIZE","getRemainingSize","maxH","mw","transitions","useTransitionStyles","getReferenceProps","getFloatingProps","getItemProps","useInteractions","useRole","useDismiss","useListNavigation","inputRef","s","initializeInputDataset","onSelect","opt","event","onChange","onCaretDownClick","onFocus","onClose","dispatchInput","shadowId","isEmpty","isTopPlacement","jsxs","InputField","ChevronDown","next","css","FloatingPortal","FloatingFocusManager","mergeRefs","li","sum","Virtuoso","option","Label","active","selected","children","node"],"mappings":"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"}
|