@krosoft/react 0.0.293 → 0.0.295
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +3 -0
- package/dist/{AppActions-CpbkO_3O.js → AppActions-NdUYh2ii.js} +2 -2
- package/dist/{AppSubTitle-BOVTZlUB.js → AppSubTitle-CunCNtvJ.js} +1 -1
- package/dist/ErrorAlert-0L-Dwqu8.js +37 -0
- package/dist/GenericForm-CLgO9HuL.js +311 -0
- package/dist/{ImageInput-BPNEywyf.js → ImageInput-DYGqUTBi.js} +2 -2
- package/dist/MultiSelect-CXnF_D0R.js +146 -0
- package/dist/SearchInput-DDcL_q7h.js +318 -0
- package/dist/{cards-BBgGXmYa.js → cards-BB6V8VWw.js} +1 -1
- package/dist/components/core/cards/index.js +1 -1
- package/dist/components/core/dialogs/AppDialog.d.ts +40 -6
- package/dist/components/core/dialogs/AppDialog.d.ts.map +1 -1
- package/dist/components/core/dialogs/FormDialog.d.ts +8 -1
- package/dist/components/core/dialogs/FormDialog.d.ts.map +1 -1
- package/dist/components/core/dialogs/index.d.ts +1 -1
- package/dist/components/core/dialogs/index.d.ts.map +1 -1
- package/dist/components/core/dialogs/index.js +3 -3
- package/dist/components/core/filters/FilterField.d.ts.map +1 -1
- package/dist/components/core/filters/FilterPills.d.ts +1 -1
- package/dist/components/core/filters/TableFilter.d.ts.map +1 -1
- package/dist/components/core/filters/index.d.ts +0 -1
- package/dist/components/core/filters/index.d.ts.map +1 -1
- package/dist/components/core/filters/index.js +138 -255
- package/dist/components/core/forms/GenericForm.d.ts +4 -3
- package/dist/components/core/forms/GenericForm.d.ts.map +1 -1
- package/dist/components/core/forms/index.js +1 -1
- package/dist/components/core/index.js +22 -22
- package/dist/components/core/inputs/MultiSelect.d.ts +20 -8
- package/dist/components/core/inputs/MultiSelect.d.ts.map +1 -1
- package/dist/components/core/inputs/SingleSelect.d.ts +32 -0
- package/dist/components/core/inputs/SingleSelect.d.ts.map +1 -0
- package/dist/components/core/inputs/index.d.ts +3 -2
- package/dist/components/core/inputs/index.d.ts.map +1 -1
- package/dist/components/core/inputs/index.js +5 -5
- package/dist/components/core/language/index.js +1 -1
- package/dist/components/core/layouts/index.js +6 -6
- package/dist/components/core/navbar/index.js +1 -1
- package/dist/components/core/states/ErrorAlert.d.ts +5 -2
- package/dist/components/core/states/ErrorAlert.d.ts.map +1 -1
- package/dist/components/core/states/index.js +2 -2
- package/dist/components/core/table/index.js +3 -3
- package/dist/components/core/tabs/index.js +4 -4
- package/dist/components/core/theme/index.js +1 -1
- package/dist/components/index.js +24 -24
- package/dist/components/ui/button.d.ts.map +1 -1
- package/dist/components/ui/index.js +4 -4
- package/dist/dialogs-DVHdqXlO.js +217 -0
- package/dist/{inputs-CUNf48Vk.js → inputs-DG8o5DMW.js} +3 -3
- package/dist/{language-DOGOdjzx.js → language-BvPG7v7d.js} +2 -2
- package/dist/{navbar-CCHGdEzE.js → navbar-CU6zaS92.js} +2 -2
- package/dist/{select-DmLScQKX.js → select-CsXmG_sJ.js} +1 -1
- package/dist/{sheet-DQTOen4V.js → sheet-4VOGdoiW.js} +1 -1
- package/dist/{states-BQK9jqS4.js → states-C4MdmAbW.js} +1 -1
- package/dist/tailwind/index.d.ts +5 -0
- package/dist/tailwind/index.d.ts.map +1 -1
- package/dist/tailwind/index.js +5 -0
- package/dist/{theme-q2uzluEd.js → theme-uTxCKUip.js} +2 -2
- package/dist/{tooltip-BmZ9Bfou.js → tooltip-CWdde1-y.js} +1 -1
- package/dist/{ui-D8Pg34YW.js → ui-rJqnHWNK.js} +3 -3
- package/package.json +1 -1
- package/dist/ErrorAlert-L2s8Dd1_.js +0 -27
- package/dist/GenericForm-BdKwapAz.js +0 -309
- package/dist/MultiSelect-O4JP5fRO.js +0 -129
- package/dist/SearchInput-BSIjKB_9.js +0 -259
- package/dist/components/core/filters/SearchableFilterPill.d.ts +0 -17
- package/dist/components/core/filters/SearchableFilterPill.d.ts.map +0 -1
- package/dist/components/core/inputs/SearchableSelect.d.ts +0 -28
- package/dist/components/core/inputs/SearchableSelect.d.ts.map +0 -1
- package/dist/dialogs-BxyPBIc6.js +0 -207
|
@@ -1,259 +0,0 @@
|
|
|
1
|
-
import { t as e } from "./tailwind.helper-CJaRYBmL.js";
|
|
2
|
-
import { r as t, t as n } from "./i18n-d2p0RJo9.js";
|
|
3
|
-
import { En as r } from "./ui-D8Pg34YW.js";
|
|
4
|
-
import { o as i, s as a } from "./tooltip-BmZ9Bfou.js";
|
|
5
|
-
import { C as o, S as s, _ as c, b as l, g as u, h as d, m as f, p, x as m, y as h } from "./sheet-DQTOen4V.js";
|
|
6
|
-
import * as g from "react";
|
|
7
|
-
import { useEffect as _, useMemo as v, useRef as y, useState as b } from "react";
|
|
8
|
-
import { jsx as x, jsxs as S } from "react/jsx-runtime";
|
|
9
|
-
import { CalendarIcon as C, CheckIcon as w, ChevronDownIcon as T, PlusIcon as E, SearchIcon as D, XIcon as O } from "lucide-react";
|
|
10
|
-
import { format as k } from "date-fns";
|
|
11
|
-
//#region src/components/core/inputs/DatePicker.tsx
|
|
12
|
-
var A = ({ date: n, onDateChange: i, placeholder: o }) => {
|
|
13
|
-
let s = t(), [c, l] = b(!1), u = y(null);
|
|
14
|
-
return _(() => {
|
|
15
|
-
if (!c) return;
|
|
16
|
-
let e = (e) => {
|
|
17
|
-
u.current !== null && !u.current.contains(e.target) && l(!1);
|
|
18
|
-
};
|
|
19
|
-
return document.addEventListener("mousedown", e), () => {
|
|
20
|
-
document.removeEventListener("mousedown", e);
|
|
21
|
-
};
|
|
22
|
-
}, [c]), /* @__PURE__ */ S("div", {
|
|
23
|
-
ref: u,
|
|
24
|
-
className: "relative w-full",
|
|
25
|
-
children: [/* @__PURE__ */ S(a, {
|
|
26
|
-
variant: "outline",
|
|
27
|
-
type: "button",
|
|
28
|
-
onClick: () => {
|
|
29
|
-
l((e) => !e);
|
|
30
|
-
},
|
|
31
|
-
className: e("w-full justify-start text-left font-normal focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2", c && "ring-2 ring-ring ring-offset-2", n === void 0 && "text-muted-foreground"),
|
|
32
|
-
children: [/* @__PURE__ */ x(C, { className: "mr-2 size-4 shrink-0" }), n === void 0 ? /* @__PURE__ */ x("span", { children: o }) : k(n, "dd/MM/yyyy", { locale: s })]
|
|
33
|
-
}), c ? /* @__PURE__ */ x("div", {
|
|
34
|
-
className: "absolute left-0 top-[calc(100%+4px)] z-[100] rounded-surface border bg-popover text-popover-foreground shadow-md animate-in fade-in-0 zoom-in-95 slide-in-from-top-2",
|
|
35
|
-
children: /* @__PURE__ */ x(r, {
|
|
36
|
-
mode: "single",
|
|
37
|
-
locale: s,
|
|
38
|
-
defaultMonth: n,
|
|
39
|
-
selected: n,
|
|
40
|
-
onSelect: (e) => {
|
|
41
|
-
i(e), l(!1);
|
|
42
|
-
}
|
|
43
|
-
})
|
|
44
|
-
}) : null]
|
|
45
|
-
});
|
|
46
|
-
}, j = (e) => e ? {
|
|
47
|
-
from: e.from,
|
|
48
|
-
to: e.to
|
|
49
|
-
} : void 0, M = ({ value: i, onChange: o, placeholder: s, className: c }) => {
|
|
50
|
-
let { t: l } = n(), u = t(), [m, h] = g.useState(!1), [_, v] = g.useState(j(i));
|
|
51
|
-
return g.useEffect(() => {
|
|
52
|
-
m && v(j(i));
|
|
53
|
-
}, [m, i]), /* @__PURE__ */ x("div", {
|
|
54
|
-
className: e("grid gap-2", c),
|
|
55
|
-
children: /* @__PURE__ */ S(p, {
|
|
56
|
-
open: m,
|
|
57
|
-
onOpenChange: h,
|
|
58
|
-
children: [/* @__PURE__ */ x(d, {
|
|
59
|
-
asChild: !0,
|
|
60
|
-
children: /* @__PURE__ */ S(a, {
|
|
61
|
-
id: "date",
|
|
62
|
-
variant: "outline",
|
|
63
|
-
className: e("w-[300px] justify-start text-left font-normal", !i?.from && "text-muted-foreground"),
|
|
64
|
-
children: [
|
|
65
|
-
/* @__PURE__ */ x(C, { className: "mr-2 size-4" }),
|
|
66
|
-
((e) => e?.from ? !e.to || e.from.getTime() === e.to.getTime() ? k(e.from, "dd MMM yyyy", { locale: u }) : `${k(e.from, "dd MMM yyyy", { locale: u })} - ${k(e.to, "dd MMM yyyy", { locale: u })}` : s ?? l("date.pickPeriod"))(i),
|
|
67
|
-
i?.from && /* @__PURE__ */ x(a, {
|
|
68
|
-
type: "button",
|
|
69
|
-
variant: "ghost",
|
|
70
|
-
size: "icon",
|
|
71
|
-
"aria-label": l("date.clearPeriod"),
|
|
72
|
-
className: "ml-auto h-5 w-5 opacity-50 hover:opacity-100",
|
|
73
|
-
onClick: (e) => {
|
|
74
|
-
e.stopPropagation(), o(void 0), h(!1);
|
|
75
|
-
},
|
|
76
|
-
children: /* @__PURE__ */ x(O, { className: "size-4" })
|
|
77
|
-
})
|
|
78
|
-
]
|
|
79
|
-
})
|
|
80
|
-
}), /* @__PURE__ */ S(f, {
|
|
81
|
-
className: "w-auto p-0",
|
|
82
|
-
align: "start",
|
|
83
|
-
side: "bottom",
|
|
84
|
-
sideOffset: 4,
|
|
85
|
-
children: [/* @__PURE__ */ x(r, {
|
|
86
|
-
mode: "range",
|
|
87
|
-
resetOnSelect: !0,
|
|
88
|
-
defaultMonth: _?.from,
|
|
89
|
-
selected: _,
|
|
90
|
-
onSelect: v,
|
|
91
|
-
numberOfMonths: 2,
|
|
92
|
-
locale: u,
|
|
93
|
-
className: "pointer-events-auto p-3"
|
|
94
|
-
}), /* @__PURE__ */ S("div", {
|
|
95
|
-
className: "flex items-center justify-between border-t border-border px-3 py-2",
|
|
96
|
-
children: [/* @__PURE__ */ x(a, {
|
|
97
|
-
variant: "ghost",
|
|
98
|
-
size: "sm",
|
|
99
|
-
onClick: () => {
|
|
100
|
-
v(void 0);
|
|
101
|
-
},
|
|
102
|
-
children: l("actions.clear")
|
|
103
|
-
}), /* @__PURE__ */ S("div", {
|
|
104
|
-
className: "flex gap-2",
|
|
105
|
-
children: [/* @__PURE__ */ x(a, {
|
|
106
|
-
variant: "ghost",
|
|
107
|
-
size: "sm",
|
|
108
|
-
onClick: () => {
|
|
109
|
-
v(j(i)), h(!1);
|
|
110
|
-
},
|
|
111
|
-
children: l("actions.cancel")
|
|
112
|
-
}), /* @__PURE__ */ x(a, {
|
|
113
|
-
size: "sm",
|
|
114
|
-
onClick: () => {
|
|
115
|
-
o(_), h(!1);
|
|
116
|
-
},
|
|
117
|
-
children: l("actions.apply")
|
|
118
|
-
})]
|
|
119
|
-
})]
|
|
120
|
-
})]
|
|
121
|
-
})]
|
|
122
|
-
})
|
|
123
|
-
});
|
|
124
|
-
}, N = ({ options: t = [], value: r, onChange: a, onClear: u, onCreate: g, placeholder: _, searchPlaceholder: y, emptyLabel: C, createLabel: D, disabled: k = !1, modal: A = !0, className: j }) => {
|
|
125
|
-
let { t: M } = n(), [N, P] = b(!1), [F, I] = b(""), L = r !== void 0 && r !== "", R = v(() => L ? t.find((e) => e.value === r) : void 0, [
|
|
126
|
-
L,
|
|
127
|
-
t,
|
|
128
|
-
r
|
|
129
|
-
]), z = L ? R?.label ?? r : void 0, B = F.trim(), V = g !== void 0 && B !== "" && !t.some((e) => e.label.toLowerCase() === B.toLowerCase()), H = (e) => {
|
|
130
|
-
P(e), e || I("");
|
|
131
|
-
}, U = (e) => {
|
|
132
|
-
a(e), H(!1);
|
|
133
|
-
};
|
|
134
|
-
return /* @__PURE__ */ S(p, {
|
|
135
|
-
open: N,
|
|
136
|
-
onOpenChange: H,
|
|
137
|
-
modal: A,
|
|
138
|
-
children: [/* @__PURE__ */ x(d, {
|
|
139
|
-
asChild: !0,
|
|
140
|
-
children: /* @__PURE__ */ S("button", {
|
|
141
|
-
type: "button",
|
|
142
|
-
role: "combobox",
|
|
143
|
-
"aria-expanded": N,
|
|
144
|
-
disabled: k,
|
|
145
|
-
className: e(i, "w-full", "data-[state=open]:ring-2 data-[state=open]:ring-ring data-[state=open]:ring-offset-2", !L && "text-muted-foreground", j),
|
|
146
|
-
children: [/* @__PURE__ */ S("span", {
|
|
147
|
-
className: "flex items-center truncate",
|
|
148
|
-
children: [
|
|
149
|
-
R?.color && /* @__PURE__ */ x("span", {
|
|
150
|
-
className: "mr-2 size-2.5 shrink-0 rounded-full",
|
|
151
|
-
style: { backgroundColor: R.color }
|
|
152
|
-
}),
|
|
153
|
-
/* @__PURE__ */ x("span", {
|
|
154
|
-
className: "truncate",
|
|
155
|
-
children: z ?? _ ?? M("select.placeholder")
|
|
156
|
-
}),
|
|
157
|
-
R?.description !== void 0 && /* @__PURE__ */ S("span", {
|
|
158
|
-
className: "ml-1 truncate text-muted-foreground",
|
|
159
|
-
children: [
|
|
160
|
-
"(",
|
|
161
|
-
R.description,
|
|
162
|
-
")"
|
|
163
|
-
]
|
|
164
|
-
})
|
|
165
|
-
]
|
|
166
|
-
}), /* @__PURE__ */ S("div", {
|
|
167
|
-
className: "flex items-center gap-1",
|
|
168
|
-
children: [u && L && !k && /* @__PURE__ */ x("span", {
|
|
169
|
-
role: "button",
|
|
170
|
-
tabIndex: -1,
|
|
171
|
-
onClick: (e) => {
|
|
172
|
-
e.stopPropagation();
|
|
173
|
-
},
|
|
174
|
-
onPointerDown: (e) => {
|
|
175
|
-
e.preventDefault(), e.stopPropagation(), u();
|
|
176
|
-
},
|
|
177
|
-
className: "text-muted-foreground hover:text-foreground",
|
|
178
|
-
children: /* @__PURE__ */ x(O, { className: "size-4" })
|
|
179
|
-
}), /* @__PURE__ */ x(T, { className: e("size-4 shrink-0 opacity-50 transition-transform", N && "rotate-180") })]
|
|
180
|
-
})]
|
|
181
|
-
})
|
|
182
|
-
}), /* @__PURE__ */ x(f, {
|
|
183
|
-
className: "w-[var(--radix-popover-trigger-width)] p-0",
|
|
184
|
-
align: "start",
|
|
185
|
-
children: /* @__PURE__ */ S(c, {
|
|
186
|
-
filter: (e, t, n) => +!!(n ?? []).join(" ").toLowerCase().includes(t.trim().toLowerCase()),
|
|
187
|
-
children: [/* @__PURE__ */ x(m, {
|
|
188
|
-
placeholder: y ?? M("search.placeholder"),
|
|
189
|
-
value: F,
|
|
190
|
-
onValueChange: I
|
|
191
|
-
}), /* @__PURE__ */ S(o, { children: [!V && /* @__PURE__ */ x(h, { children: C ?? M("states.noResult") }), /* @__PURE__ */ S(l, { children: [t.map((t) => /* @__PURE__ */ S(s, {
|
|
192
|
-
value: t.value,
|
|
193
|
-
keywords: [t.label, t.description ?? ""],
|
|
194
|
-
onSelect: () => {
|
|
195
|
-
U(t.value);
|
|
196
|
-
},
|
|
197
|
-
children: [
|
|
198
|
-
/* @__PURE__ */ x(w, { className: e("mr-2 size-4 shrink-0", r === t.value ? "opacity-100" : "opacity-0") }),
|
|
199
|
-
t.color !== void 0 && /* @__PURE__ */ x("span", {
|
|
200
|
-
className: "mr-2 size-2.5 shrink-0 rounded-full",
|
|
201
|
-
style: { backgroundColor: t.color }
|
|
202
|
-
}),
|
|
203
|
-
/* @__PURE__ */ x("span", {
|
|
204
|
-
className: "truncate",
|
|
205
|
-
children: t.label
|
|
206
|
-
}),
|
|
207
|
-
t.description !== void 0 && /* @__PURE__ */ S("span", {
|
|
208
|
-
className: "ml-1 truncate text-muted-foreground",
|
|
209
|
-
children: [
|
|
210
|
-
"(",
|
|
211
|
-
t.description,
|
|
212
|
-
")"
|
|
213
|
-
]
|
|
214
|
-
})
|
|
215
|
-
]
|
|
216
|
-
}, t.value)), V && /* @__PURE__ */ S(s, {
|
|
217
|
-
forceMount: !0,
|
|
218
|
-
value: "__create__",
|
|
219
|
-
onSelect: () => {
|
|
220
|
-
g?.(B), H(!1);
|
|
221
|
-
},
|
|
222
|
-
children: [/* @__PURE__ */ x(E, { className: "mr-2 size-4 shrink-0" }), /* @__PURE__ */ x("span", {
|
|
223
|
-
className: "truncate",
|
|
224
|
-
children: D ? D(B) : M("select.create", { search: B })
|
|
225
|
-
})]
|
|
226
|
-
})] })] })]
|
|
227
|
-
})
|
|
228
|
-
})]
|
|
229
|
-
});
|
|
230
|
-
}, P = ({ searchQuery: t, search: r, placeholder: i, onSearch: a, onSubmit: o, onClear: s, className: c }) => {
|
|
231
|
-
let { t: l } = n(), d = t ?? r ?? "";
|
|
232
|
-
return /* @__PURE__ */ S("div", {
|
|
233
|
-
className: e("relative h-fit w-full md:w-64", c),
|
|
234
|
-
children: [
|
|
235
|
-
/* @__PURE__ */ x(D, { className: "absolute left-3 top-1/2 transform -translate-y-1/2 text-muted-foreground w-4 h-4" }),
|
|
236
|
-
/* @__PURE__ */ x(u, {
|
|
237
|
-
placeholder: i ?? l("search.placeholder"),
|
|
238
|
-
value: d,
|
|
239
|
-
onChange: (e) => {
|
|
240
|
-
a(e.target.value);
|
|
241
|
-
},
|
|
242
|
-
className: "pl-8",
|
|
243
|
-
onKeyDown: (e) => {
|
|
244
|
-
e.key === "Enter" && o !== void 0 && (e.preventDefault(), o());
|
|
245
|
-
}
|
|
246
|
-
}),
|
|
247
|
-
d === "" ? null : /* @__PURE__ */ x("button", {
|
|
248
|
-
onClick: () => {
|
|
249
|
-
a(""), s !== void 0 && s();
|
|
250
|
-
},
|
|
251
|
-
className: "absolute right-3 top-1/2 -translate-y-1/2 text-gray-500 hover:text-gray-700",
|
|
252
|
-
type: "button",
|
|
253
|
-
children: /* @__PURE__ */ x(O, { className: "size-4" })
|
|
254
|
-
})
|
|
255
|
-
]
|
|
256
|
-
});
|
|
257
|
-
};
|
|
258
|
-
//#endregion
|
|
259
|
-
export { A as i, N as n, M as r, P as t };
|
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
export interface FilterOption {
|
|
2
|
-
value: string;
|
|
3
|
-
label: string;
|
|
4
|
-
color?: string;
|
|
5
|
-
}
|
|
6
|
-
export declare function SearchableFilterPill<T extends string>({ labelKey, options, selected, onToggle, onClear, onSelectAll, searchable, searchPlaceholder, className, }: {
|
|
7
|
-
labelKey: string;
|
|
8
|
-
options: FilterOption[];
|
|
9
|
-
selected: T[];
|
|
10
|
-
onToggle: (value: T) => void;
|
|
11
|
-
onClear?: () => void;
|
|
12
|
-
onSelectAll?: (values: T[]) => void;
|
|
13
|
-
searchable?: boolean;
|
|
14
|
-
searchPlaceholder?: string;
|
|
15
|
-
className?: string;
|
|
16
|
-
}): React.ReactElement;
|
|
17
|
-
//# sourceMappingURL=SearchableFilterPill.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"SearchableFilterPill.d.ts","sourceRoot":"","sources":["../../../../src/components/core/filters/SearchableFilterPill.tsx"],"names":[],"mappings":"AAMA,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,wBAAgB,oBAAoB,CAAC,CAAC,SAAS,MAAM,EAAE,EACrD,QAAQ,EACR,OAAO,EACP,QAAQ,EACR,QAAQ,EACR,OAAO,EACP,WAAW,EACX,UAAkB,EAClB,iBAAiB,EACjB,SAAiC,GAClC,EAAE;IACD,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,YAAY,EAAE,CAAC;IACxB,QAAQ,EAAE,CAAC,EAAE,CAAC;IACd,QAAQ,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,IAAI,CAAC;IAC7B,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,WAAW,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,EAAE,KAAK,IAAI,CAAC;IACpC,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,GAAG,KAAK,CAAC,YAAY,CA4IrB"}
|
|
@@ -1,28 +0,0 @@
|
|
|
1
|
-
import React from "react";
|
|
2
|
-
import type { SelectOption } from "@krosoft/core/types";
|
|
3
|
-
export interface SearchableSelectOption extends SelectOption {
|
|
4
|
-
/** Texte secondaire affiché en gris à côté du libellé (ex. le groupe d'un tenant). Inclus dans la recherche. */
|
|
5
|
-
description?: string;
|
|
6
|
-
}
|
|
7
|
-
interface SearchableSelectProps {
|
|
8
|
-
options?: SearchableSelectOption[];
|
|
9
|
-
value: string | undefined;
|
|
10
|
-
onChange: (value: string) => void;
|
|
11
|
-
onClear?: () => void;
|
|
12
|
-
/** Fourni : propose de créer une option quand la saisie ne correspond à aucun libellé existant. */
|
|
13
|
-
onCreate?: (label: string) => void;
|
|
14
|
-
placeholder?: string;
|
|
15
|
-
searchPlaceholder?: string;
|
|
16
|
-
emptyLabel?: string;
|
|
17
|
-
createLabel?: (search: string) => string;
|
|
18
|
-
disabled?: boolean;
|
|
19
|
-
/**
|
|
20
|
-
* Panneau rendu en modal (défaut, comme le `Select`). À laisser tel quel dans une boîte de
|
|
21
|
-
* dialogue : sans ça, le `Dialog` neutralise les clics sur le panneau porté dans le portail.
|
|
22
|
-
*/
|
|
23
|
-
modal?: boolean;
|
|
24
|
-
className?: string;
|
|
25
|
-
}
|
|
26
|
-
export declare const SearchableSelect: ({ options, value, onChange, onClear, onCreate, placeholder, searchPlaceholder, emptyLabel, createLabel, disabled, modal, className, }: SearchableSelectProps) => React.ReactElement;
|
|
27
|
-
export {};
|
|
28
|
-
//# sourceMappingURL=SearchableSelect.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"SearchableSelect.d.ts","sourceRoot":"","sources":["../../../../src/components/core/inputs/SearchableSelect.tsx"],"names":[],"mappings":"AACA,OAAO,KAA4B,MAAM,OAAO,CAAC;AAejD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAExD,MAAM,WAAW,sBAAuB,SAAQ,YAAY;IAC1D,gHAAgH;IAChH,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,UAAU,qBAAqB;IAC7B,OAAO,CAAC,EAAE,sBAAsB,EAAE,CAAC;IACnC,KAAK,EAAE,MAAM,GAAG,SAAS,CAAC;IAC1B,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAClC,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,mGAAmG;IACnG,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACnC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,MAAM,CAAC;IACzC,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB;;;OAGG;IACH,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,eAAO,MAAM,gBAAgB,GAAI,uIAa9B,qBAAqB,KAAG,KAAK,CAAC,YAiHhC,CAAC"}
|
package/dist/dialogs-BxyPBIc6.js
DELETED
|
@@ -1,207 +0,0 @@
|
|
|
1
|
-
import { t as e } from "./i18n-d2p0RJo9.js";
|
|
2
|
-
import { Bn as t, Gn as n, Hn as r, I as i, Kn as a, Un as o, Wn as s, qn as c } from "./ui-D8Pg34YW.js";
|
|
3
|
-
import { n as l, t as u } from "./alert-REQGK9bR.js";
|
|
4
|
-
import { s as d } from "./tooltip-BmZ9Bfou.js";
|
|
5
|
-
import { E as f, O as p, P as m, j as h, k as g } from "./sheet-DQTOen4V.js";
|
|
6
|
-
import { t as _ } from "./GenericForm-BdKwapAz.js";
|
|
7
|
-
import { t as v } from "./ErrorAlert-L2s8Dd1_.js";
|
|
8
|
-
import { useEffect as y, useState as b } from "react";
|
|
9
|
-
import { Fragment as x, jsx as S, jsxs as C } from "react/jsx-runtime";
|
|
10
|
-
import { AlertCircleIcon as w, Pen as T, Save as E, X as D } from "lucide-react";
|
|
11
|
-
//#region src/components/core/dialogs/AppDialog.tsx
|
|
12
|
-
function O({ open: t, onOpenChange: n, config: r, isLoading: a, error: o, children: s }) {
|
|
13
|
-
let { t: c } = e(), { title: _, description: v, icon: y, maxWidth: b = "sm:max-w-xl", actions: x } = r;
|
|
14
|
-
return /* @__PURE__ */ S(f, {
|
|
15
|
-
open: t,
|
|
16
|
-
onOpenChange: n,
|
|
17
|
-
children: /* @__PURE__ */ C(p, {
|
|
18
|
-
className: `${b} max-h-[100dvh] sm:max-h-[90vh] border-0 shadow-2xl p-0 flex flex-col overflow-hidden`,
|
|
19
|
-
children: [
|
|
20
|
-
a === !0 ? /* @__PURE__ */ S("div", {
|
|
21
|
-
className: "absolute top-0 left-0 right-0 z-10",
|
|
22
|
-
children: /* @__PURE__ */ S(i, {
|
|
23
|
-
indeterminate: !0,
|
|
24
|
-
className: "h-1 rounded-none"
|
|
25
|
-
})
|
|
26
|
-
}) : null,
|
|
27
|
-
/* @__PURE__ */ C(h, {
|
|
28
|
-
className: "bg-gradient-to-r from-slate-900 to-purple-700 p-4 sm:p-6 sm:rounded-t-surface shrink-0",
|
|
29
|
-
children: [/* @__PURE__ */ C(m, {
|
|
30
|
-
className: "text-xl sm:text-2xl font-bold flex items-center gap-2 text-white",
|
|
31
|
-
children: [y === void 0 ? null : /* @__PURE__ */ S("div", {
|
|
32
|
-
className: "p-2 bg-white/20 rounded-control",
|
|
33
|
-
children: /* @__PURE__ */ S(y, { className: "size-4 text-white" })
|
|
34
|
-
}), c(_)]
|
|
35
|
-
}), v !== void 0 && v !== "" ? /* @__PURE__ */ S(g, {
|
|
36
|
-
className: "text-indigo-100 text-base",
|
|
37
|
-
children: c(v)
|
|
38
|
-
}) : null]
|
|
39
|
-
}),
|
|
40
|
-
o == null ? null : /* @__PURE__ */ S("div", {
|
|
41
|
-
className: "px-6 ",
|
|
42
|
-
children: /* @__PURE__ */ C(u, {
|
|
43
|
-
variant: "destructive",
|
|
44
|
-
className: "max-w-full",
|
|
45
|
-
children: [/* @__PURE__ */ S(w, { className: "size-4" }), /* @__PURE__ */ S(l, {
|
|
46
|
-
className: "break-words overflow-wrap-anywhere max-w-full",
|
|
47
|
-
children: o.message
|
|
48
|
-
})]
|
|
49
|
-
})
|
|
50
|
-
}),
|
|
51
|
-
/* @__PURE__ */ S("div", {
|
|
52
|
-
className: "flex-1 overflow-y-auto px-4 sm:px-6 py-4",
|
|
53
|
-
children: s
|
|
54
|
-
}),
|
|
55
|
-
x !== void 0 && x.length > 0 ? /* @__PURE__ */ S("div", {
|
|
56
|
-
className: "sm:rounded-b-surface border-t border-gray-200 dark:border-gray-700 shrink-0 p-4 sm:p-6 light:bg-gradient-to-r light:from-gray-50 light:to-gray-100 dark:bg-gray-950",
|
|
57
|
-
children: /* @__PURE__ */ S("div", {
|
|
58
|
-
className: "flex justify-end gap-3",
|
|
59
|
-
children: x.map((e, t) => /* @__PURE__ */ C(d, {
|
|
60
|
-
variant: e.variant ?? "default",
|
|
61
|
-
onClick: e.onClick,
|
|
62
|
-
disabled: e.disabled === !0 || a === !0,
|
|
63
|
-
children: [e.icon === void 0 ? null : /* @__PURE__ */ S(e.icon, { className: "size-4" }), c(e.label)]
|
|
64
|
-
}, t))
|
|
65
|
-
})
|
|
66
|
-
}) : null
|
|
67
|
-
]
|
|
68
|
-
})
|
|
69
|
-
});
|
|
70
|
-
}
|
|
71
|
-
//#endregion
|
|
72
|
-
//#region src/components/core/dialogs/FormDialog.tsx
|
|
73
|
-
function k({ open: t, onOpenChange: n, data: r, title: i, headerBadge: a, schema: o, onSave: s, customFooter: c, defaultEditing: l = !1, footerActions: u = !0, saveLabel: f = "Sauvegarder", cancelLabel: p, hideSaveIcon: m = !1, maxWidth: h = "sm:max-w-4xl", isLoading: g = !1 }) {
|
|
74
|
-
let { t: v } = e(), [w, k] = b(l), [A, j] = b(!1), [M, N] = b(null);
|
|
75
|
-
if (y(() => {
|
|
76
|
-
t && k(l);
|
|
77
|
-
}, [t, l]), r == null) return null;
|
|
78
|
-
let P = () => {
|
|
79
|
-
w ? s !== void 0 && M && M() : k(!0);
|
|
80
|
-
}, F = () => {
|
|
81
|
-
k(!1);
|
|
82
|
-
}, I = () => {
|
|
83
|
-
s !== void 0 && M && M();
|
|
84
|
-
}, L = async (e) => {
|
|
85
|
-
if (s) {
|
|
86
|
-
j(!0);
|
|
87
|
-
try {
|
|
88
|
-
await s(e), k(!1);
|
|
89
|
-
} catch (e) {
|
|
90
|
-
console.error(e);
|
|
91
|
-
} finally {
|
|
92
|
-
j(!1);
|
|
93
|
-
}
|
|
94
|
-
}
|
|
95
|
-
}, R = [];
|
|
96
|
-
s !== void 0 && (w ? (p !== "" && R.push({
|
|
97
|
-
label: p ?? v("actions.cancel"),
|
|
98
|
-
onClick: F,
|
|
99
|
-
variant: "outline",
|
|
100
|
-
disabled: A || g,
|
|
101
|
-
icon: D
|
|
102
|
-
}), R.push({
|
|
103
|
-
label: A ? "Enregistrement..." : f,
|
|
104
|
-
onClick: I,
|
|
105
|
-
variant: "default",
|
|
106
|
-
disabled: A || g,
|
|
107
|
-
icon: m ? void 0 : E
|
|
108
|
-
})) : R.push({
|
|
109
|
-
label: v("actions.edit"),
|
|
110
|
-
onClick: P,
|
|
111
|
-
variant: "outline",
|
|
112
|
-
icon: T
|
|
113
|
-
}));
|
|
114
|
-
let z = {
|
|
115
|
-
title: i(r),
|
|
116
|
-
maxWidth: h,
|
|
117
|
-
actions: u ? R : []
|
|
118
|
-
};
|
|
119
|
-
return /* @__PURE__ */ S(O, {
|
|
120
|
-
open: t,
|
|
121
|
-
onOpenChange: (e) => {
|
|
122
|
-
n(e), e || F();
|
|
123
|
-
},
|
|
124
|
-
config: z,
|
|
125
|
-
isLoading: A || g,
|
|
126
|
-
children: /* @__PURE__ */ C("div", { children: [
|
|
127
|
-
a === void 0 ? null : /* @__PURE__ */ S("div", {
|
|
128
|
-
className: "mb-4",
|
|
129
|
-
children: a(r)
|
|
130
|
-
}),
|
|
131
|
-
/* @__PURE__ */ S(_, {
|
|
132
|
-
schema: o,
|
|
133
|
-
initialData: r,
|
|
134
|
-
disabled: !w,
|
|
135
|
-
onSubmit: (e) => {
|
|
136
|
-
L(e);
|
|
137
|
-
},
|
|
138
|
-
renderActions: !1,
|
|
139
|
-
onRegisterSubmit: (e) => {
|
|
140
|
-
N(() => e);
|
|
141
|
-
},
|
|
142
|
-
isLoading: A || g
|
|
143
|
-
}),
|
|
144
|
-
c === void 0 ? null : c(r),
|
|
145
|
-
s !== void 0 && !u ? /* @__PURE__ */ S("div", {
|
|
146
|
-
className: "flex justify-end gap-2 border-t pt-4 mt-6",
|
|
147
|
-
children: w ? /* @__PURE__ */ C(x, { children: [p === "" ? null : /* @__PURE__ */ C(d, {
|
|
148
|
-
onClick: F,
|
|
149
|
-
variant: "outline",
|
|
150
|
-
size: "sm",
|
|
151
|
-
disabled: A || g,
|
|
152
|
-
children: [/* @__PURE__ */ S(D, { className: "size-4 mr-2" }), p ?? v("actions.cancel")]
|
|
153
|
-
}), /* @__PURE__ */ C(d, {
|
|
154
|
-
onClick: I,
|
|
155
|
-
size: "sm",
|
|
156
|
-
disabled: A || g,
|
|
157
|
-
className: "text-white",
|
|
158
|
-
children: [m ? null : /* @__PURE__ */ S(E, { className: "size-4 mr-2" }), A ? "Enregistrement..." : f]
|
|
159
|
-
})] }) : /* @__PURE__ */ C(d, {
|
|
160
|
-
onClick: P,
|
|
161
|
-
variant: "outline",
|
|
162
|
-
size: "sm",
|
|
163
|
-
children: [/* @__PURE__ */ S(T, { className: "size-4 mr-2" }), "Modifier"]
|
|
164
|
-
})
|
|
165
|
-
}) : null
|
|
166
|
-
] })
|
|
167
|
-
});
|
|
168
|
-
}
|
|
169
|
-
//#endregion
|
|
170
|
-
//#region src/components/core/dialogs/ConfirmationDialog.tsx
|
|
171
|
-
function A({ isLoading: i, error: l, config: u, destructive: f = !1 }) {
|
|
172
|
-
let { t: p } = e();
|
|
173
|
-
return u ? /* @__PURE__ */ S(t, {
|
|
174
|
-
open: u.isOpen,
|
|
175
|
-
onOpenChange: (e) => {
|
|
176
|
-
!e && !i && u.onClose();
|
|
177
|
-
},
|
|
178
|
-
children: /* @__PURE__ */ C(o, { children: [
|
|
179
|
-
/* @__PURE__ */ C(a, { children: [
|
|
180
|
-
/* @__PURE__ */ C(c, {
|
|
181
|
-
className: u.titleClassName,
|
|
182
|
-
children: [u.icon && /* @__PURE__ */ S(u.icon, { className: "size-4" }), p(u.title)]
|
|
183
|
-
}),
|
|
184
|
-
u.headerClassName && /* @__PURE__ */ S(a, { className: u.headerClassName }),
|
|
185
|
-
/* @__PURE__ */ S(s, { children: p(u.description) }),
|
|
186
|
-
u.itemName && /* @__PURE__ */ S(s, { children: /* @__PURE__ */ S("span", {
|
|
187
|
-
className: "font-semibold block my-2",
|
|
188
|
-
children: u.itemName
|
|
189
|
-
}) })
|
|
190
|
-
] }),
|
|
191
|
-
/* @__PURE__ */ S(v, { error: l instanceof Error ? null : l }),
|
|
192
|
-
/* @__PURE__ */ C(n, { children: [/* @__PURE__ */ S(r, {
|
|
193
|
-
disabled: i,
|
|
194
|
-
children: p("common.buttons.cancel")
|
|
195
|
-
}), /* @__PURE__ */ S(d, {
|
|
196
|
-
onClick: (e) => {
|
|
197
|
-
e.preventDefault(), u.onConfirm();
|
|
198
|
-
},
|
|
199
|
-
disabled: i,
|
|
200
|
-
className: f ? "bg-destructive text-destructive-foreground hover:bg-destructive/90" : "",
|
|
201
|
-
children: i ? p(u.loadingKey || "common.buttons.loading") : u.confirmKey
|
|
202
|
-
})] })
|
|
203
|
-
] })
|
|
204
|
-
}) : null;
|
|
205
|
-
}
|
|
206
|
-
//#endregion
|
|
207
|
-
export { k as n, O as r, A as t };
|