@ithinkdt/ui 4.0.14 → 4.0.16

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/esm/page.js CHANGED
@@ -1 +1,652 @@
1
- export * from '../dist/page.js'
1
+ import { n as e } from "./use-i18n-D1TTDOML.js";
2
+ import { DataForm as t, DtDeptRender as n, DtUserDept as r, DtUserRender as i, NCheckboxes as a, NRadios as o } from "./components.js";
3
+ import { computed as s, createVNode as c, defineAsyncComponent as l, defineComponent as u, h as d, isVNode as f, mergeProps as p, nextTick as m, ref as h, renderSlot as g, shallowRef as _, toValue as v, unref as y } from "vue";
4
+ import { until as b, useClipboard as x } from "@vueuse/core";
5
+ import { NButton as S, NCheckbox as C, NColorPicker as w, NDrawer as T, NDrawerContent as E, NFlex as D, NIcon as O, NInput as k, NInputNumber as A, NModal as j, NScrollbar as M, NSelect as N, NText as P, NUpload as F, useMessage as I } from "ithinkdt-ui";
6
+ import { nanoid as L } from "nanoid";
7
+ import { format as R } from "date-fns";
8
+ import { useFormItem as z } from "ithinkdt-ui/es/_mixins";
9
+ import { useModal as B } from "@ithinkdt/page";
10
+ import { isNullish as V } from "@ithinkdt/common";
11
+ import { useDict as H, useDictMap as U } from "@ithinkdt/common/dict";
12
+ //#region src/page-util.js
13
+ var W = (e) => Object.fromEntries(Object.entries(e || {}).map(([e, t]) => [e, y(t)]));
14
+ //#endregion
15
+ //#region src/page-description.jsx
16
+ function G(e) {
17
+ return typeof e == "function" || Object.prototype.toString.call(e) === "[object Object]" && !f(e);
18
+ }
19
+ function K({ getDeptsByCode: e, getUsersByUsername: t, getFileInfos: r, previewFileUrl: a }) {
20
+ let o = (e) => (t, n, { params: r = {} }) => {
21
+ if (t != null) return R(t, r.formatter ?? e);
22
+ }, s = (e = {}) => c("svg", p({
23
+ xmlns: "http://www.w3.org/2000/svg",
24
+ width: "1em",
25
+ height: "1em",
26
+ viewBox: "0 0 32 32"
27
+ }, e), [c("circle", {
28
+ cx: "16",
29
+ cy: "16",
30
+ r: "8",
31
+ fill: "currentColor"
32
+ }, null)]), l = (e = {}) => c("svg", p({
33
+ xmlns: "http://www.w3.org/2000/svg",
34
+ width: "1em",
35
+ height: "1em",
36
+ viewBox: "0 0 24 24"
37
+ }, e), [c("path", {
38
+ fill: "currentColor",
39
+ d: "M12 9a3 3 0 0 1 3 3a3 3 0 0 1-3 3a3 3 0 0 1-3-3a3 3 0 0 1 3-3m0-4.5c5 0 9.27 3.11 11 7.5c-1.73 4.39-6 7.5-11 7.5S2.73 16.39 1 12c1.73-4.39 6-7.5 11-7.5M3.18 12a9.821 9.821 0 0 0 17.64 0a9.821 9.821 0 0 0-17.64 0"
40
+ }, null)]), u = (e) => c("svg", p({
41
+ xmlns: "http://www.w3.org/2000/svg",
42
+ width: "1em",
43
+ height: "1em",
44
+ viewBox: "0 0 24 24"
45
+ }, e), [c("path", {
46
+ fill: "currentColor",
47
+ d: "M19 21H8V7h11m0-2H8a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h11a2 2 0 0 0 2-2V7a2 2 0 0 0-2-2m-3-4H4a2 2 0 0 0-2 2v14h2V3h12z"
48
+ }, null)]), d = (e) => c("svg", p({
49
+ xmlns: "http://www.w3.org/2000/svg",
50
+ width: "1em",
51
+ height: "1em",
52
+ viewBox: "0 0 24 24"
53
+ }, e), [c("path", {
54
+ fill: "currentColor",
55
+ d: "M20 12a8 8 0 0 1-8 8a8 8 0 0 1-8-8a8 8 0 0 1 8-8c.76 0 1.5.11 2.2.31l1.57-1.57A9.8 9.8 0 0 0 12 2A10 10 0 0 0 2 12a10 10 0 0 0 10 10a10 10 0 0 0 10-10M7.91 10.08L6.5 11.5L11 16L21 6l-1.41-1.42L11 13.17z"
56
+ }, null)]);
57
+ return {
58
+ longtext: () => {
59
+ let e = h(), t = h(), n = h(), { open: r } = B({
60
+ type: "drawer",
61
+ resizable: !0,
62
+ content: () => c("div", null, [c("span", null, [e.value])]),
63
+ width: t,
64
+ footer: () => n.value?.() ?? null,
65
+ maskClosable: !0
66
+ }), { copy: i, copied: a } = x({ legacy: !0 }), o = (t, n, o) => {
67
+ if (!n) return r(t);
68
+ let s = () => {
69
+ o ? o(e.value) : i(e.value);
70
+ };
71
+ return r(() => c("div", { style: "display: flex; align-items: center; justify-content: space-between; margin-right: 4px;" }, [v(t), a.value ? c(S, {
72
+ quaternary: !0,
73
+ size: "tiny",
74
+ type: "success"
75
+ }, { icon: () => c(O, { size: 18 }, { default: () => [c(d, null, null)] }) }) : c(S, {
76
+ quaternary: !0,
77
+ size: "tiny",
78
+ onClick: s
79
+ }, { icon: () => c(O, { size: 16 }, { default: () => [c(u, null, null)] }) })]));
80
+ };
81
+ return {
82
+ renderer: (r, i, { params: a = {} }, { label: s }) => c("div", { style: "white-space: nowrap; overflow: hidden; display: flex; gap: 8px; align-items: center; justify-content: space-between" }, [c("div", { style: "flex: 1 1 auto; overflow: hidden; text-overflow: ellipsis; white-space: nowrap;" }, [r]), c(S, {
83
+ type: "info",
84
+ text: !0,
85
+ style: "position: sticky; right: 0; z-index: 2",
86
+ onClick: a.showText ? () => a.showText(r) : () => {
87
+ e.value = a.formatText ? a.formatText(r) : r, t.value = a.drawerWidth ?? 600, n.value = () => a.drawerFooter?.(r, i), o(a.title || s, a.copyable !== !1, a.onCopy);
88
+ }
89
+ }, { default: () => [c(O, { size: 18 }, { default: () => [c(l, null, null)] })] })]),
90
+ default: { table: { ellipsis: !1 } }
91
+ };
92
+ },
93
+ date: () => ({
94
+ renderer: o("yyyy-MM-dd"),
95
+ default: { table: {
96
+ width: 140,
97
+ align: "center",
98
+ sortable: !0
99
+ } }
100
+ }),
101
+ datetime: () => ({
102
+ renderer: o("yyyy-MM-dd HH:mm:ss"),
103
+ default: { table: {
104
+ width: 174,
105
+ align: "center",
106
+ sortable: !0
107
+ } }
108
+ }),
109
+ dict: () => {
110
+ let e, t, n;
111
+ return (r, i, { params: a = {} }) => {
112
+ if (r == null) return;
113
+ let { dictType: o, options: l, multiple: u, statusMap: d } = W(a);
114
+ if (l ? t !== l && (t = l, n = new Map(l.map((e) => [e[a.valueField || "value"], e]))) : e !== o && (e = o, !n && e && (n = U(e))), !u) {
115
+ if (r = r.toString(), d && r in d) {
116
+ let e = d[r] ?? "default";
117
+ return [
118
+ "primary",
119
+ "success",
120
+ "warning",
121
+ "danger"
122
+ ].includes(e) && (e = `var(--color-${e})`), c("span", { style: "position: relative; padding-left: 1.25em" }, [c(s, { style: `color: ${e}; position: absolute;left: 0; top: 1.5px` }, null), c("span", null, [n.get(r)?.[a.labelField || "label"] ?? r ?? ""])]);
123
+ }
124
+ return n.get(r)?.[a.labelField || "label"] ?? r ?? "";
125
+ }
126
+ return r?.map((e) => n.get(e?.toString())?.[a.labelField || "label"] ?? e?.toString() ?? "").join(", ") ?? "";
127
+ };
128
+ },
129
+ number: () => ({
130
+ renderer: (e, t, { params: n = {} }) => {
131
+ if (e != null) {
132
+ switch (n.percent && (e = Number(e) * 100), "number") {
133
+ case typeof n.fixed:
134
+ e = e.toFixed(n.fixed);
135
+ break;
136
+ case typeof n.round:
137
+ e = e.toFixed(n.round).replace(/0+$/, "");
138
+ break;
139
+ case typeof n.precision:
140
+ e = e.toPrecision(n.precision);
141
+ break;
142
+ }
143
+ return n?.separator ? Number(e).toLocaleString() : e;
144
+ }
145
+ },
146
+ default: { table: {
147
+ width: 100,
148
+ align: "right",
149
+ sortable: !0
150
+ } }
151
+ }),
152
+ email: () => (e) => c("a", { href: `mailto:${e}` }, [e]),
153
+ url: () => (e) => c("a", { href: e }, [e]),
154
+ color: () => (e) => c(w, {
155
+ value: e,
156
+ disabled: !0,
157
+ size: "small"
158
+ }, null),
159
+ image: () => (e, t, { params: n = {} }) => {
160
+ let r;
161
+ if (e) return c(D, {
162
+ gap: "8",
163
+ wrap: !0
164
+ }, G(r = (Array.isArray(e) ? e : n?.multiple ? e.split(",") : [e]).map((e) => a(e)).map((e) => c("img", {
165
+ key: e,
166
+ src: e,
167
+ style: "max-height: 32px; max-width: 100px; object-fit: contain"
168
+ }, null))) ? r : { default: () => [r] });
169
+ },
170
+ file: () => {
171
+ let e = L();
172
+ return (t, n, { params: i = {} }) => {
173
+ let a;
174
+ if (t) return n.__file_urls ??= {}, n.__file_urls[e] || r(Array.isArray(t) ? t : i?.multiple ? t.split(",") : [t]).then((t) => {
175
+ n.__file_urls[e] = t;
176
+ }), c(D, {
177
+ gap: "8",
178
+ wrap: !0
179
+ }, G(a = (n.__file_urls[e] || []).map((e) => c("a", {
180
+ key: e.id,
181
+ href: e.url,
182
+ target: "_blank",
183
+ rel: "noreferrer",
184
+ style: "max-width: 100px; text-overflow: ellipsis; overflow: hidden; white-space: nowrap; display: inline-block"
185
+ }, [e.name]))) ? a : { default: () => [a] });
186
+ };
187
+ },
188
+ dept: () => (t, r, { params: i = {} }) => {
189
+ if (t) return c(n, {
190
+ value: t,
191
+ multiple: i?.multiple,
192
+ getDeptsByCode: e
193
+ }, null);
194
+ },
195
+ user: () => {
196
+ let e = { style: "padding-block: 0" };
197
+ return {
198
+ renderer: (e, n, { params: r = {} }) => {
199
+ if (e) return c(i, {
200
+ value: e,
201
+ multiple: r?.multiple,
202
+ getUsersByUsername: t
203
+ }, null);
204
+ },
205
+ default: { table: {
206
+ width: 150,
207
+ ellipsis: !1,
208
+ align: "center",
209
+ cellProps: () => e
210
+ } }
211
+ };
212
+ }
213
+ };
214
+ }
215
+ //#endregion
216
+ //#region src/page-form.jsx
217
+ function q(e) {
218
+ return typeof e == "function" || Object.prototype.toString.call(e) === "[object Object]" && !f(e);
219
+ }
220
+ var J = /* @__PURE__ */ l(() => import("ithinkdt-ui/es/date-picker/index.mjs").then((e) => e.NDatePicker)), Y = /* @__PURE__ */ u({
221
+ name: "SimpleUpload",
222
+ props: {
223
+ type: {
224
+ type: String,
225
+ default: "file"
226
+ },
227
+ size: {
228
+ type: String,
229
+ default: "medium"
230
+ },
231
+ multiple: {
232
+ type: Boolean,
233
+ default: !1
234
+ },
235
+ max: {
236
+ type: Number,
237
+ default: void 0
238
+ },
239
+ accept: {
240
+ type: String,
241
+ default: void 0
242
+ },
243
+ maxSize: {
244
+ type: Number,
245
+ default: void 0
246
+ },
247
+ disabled: {
248
+ type: Boolean,
249
+ default: void 0
250
+ },
251
+ fileList: {
252
+ type: Array,
253
+ default: () => []
254
+ },
255
+ onUpdateFileList: { type: [Array, Function] },
256
+ uploadFile: { type: Function }
257
+ },
258
+ setup(t, { slots: n, expose: r }) {
259
+ let { t: i } = e();
260
+ Y.t = i;
261
+ let a = z(t), o = I(), l = s(() => t.customRequest || (({ file: e, onProgress: n, onFinish: r, onError: i }) => {
262
+ t.uploadFile(e.file, (e) => n({ percent: e })).then((t) => {
263
+ e.file.fileId = t, r();
264
+ }).catch((e) => {
265
+ o.error(e.message), i(e);
266
+ });
267
+ })), u = h();
268
+ r({ submit() {
269
+ return b(u).toBeTruthy().then((e) => e.submit());
270
+ } });
271
+ let d = (e) => {
272
+ if (e) for (let n of e) n.size > t.maxSize * 1024 && (n.status = "error");
273
+ t.onUpdateFileList?.(e), m(() => a.nTriggerFormChange());
274
+ };
275
+ return () => {
276
+ let { type: e, onUpdateFileList: r, ...o } = t;
277
+ return c(F, p(o, {
278
+ ref: u,
279
+ customRequest: l.value,
280
+ listType: e === "image" ? "image-card" : "text",
281
+ accept: o.accept ?? e === "image" ? "image/*" : void 0,
282
+ "onUpdate:fileList": d
283
+ }), {
284
+ default: e === "image" ? void 0 : () => {
285
+ let e;
286
+ return c(S, {
287
+ disabled: a.mergedDisabledRef.value,
288
+ size: a.mergedSizeRef.value
289
+ }, q(e = i("common.page.form.selectFileText")) ? e : { default: () => [e] });
290
+ },
291
+ ...n
292
+ });
293
+ };
294
+ }
295
+ });
296
+ function X({ getUserGroups: e, getUsersByGroup: t, getDeptsByCode: n, getUsersByDept: s, getUsersByUsername: l, uploadFile: u, getFileInfos: f }) {
297
+ let m = (e) => e, v = (e) => V(e) ? e : String(e), x = (e) => V(e) ? e : Number(e);
298
+ return {
299
+ input: () => ({ slots: e, props: t }, { modelValue: n, "onUpdate:modelValue": r, required: i, readonly: a, ...o }) => a ? c(P, {
300
+ depth: 2,
301
+ style: "line-height: 1.25"
302
+ }, { default: () => [n ?? ""] }) : (t = W(t), d(k, p({ clearable: !0 }, t, o, {
303
+ value: n,
304
+ "onUpdate:value": r
305
+ }), e)),
306
+ number: () => {
307
+ let e, t;
308
+ return ({ slots: n, props: r }, { modelValue: i, "onUpdate:modelValue": a, required: o, readonly: s, ...l }) => {
309
+ if (s) return c(P, {
310
+ depth: 2,
311
+ style: "line-height: 1.25"
312
+ }, { default: () => [i ?? ""] });
313
+ let { valueType: u = "number", ...f } = W(r), m = u === "string" ? x(i) : i;
314
+ return e = a, u === "string" && !t && (t = (t, ...n) => {
315
+ e(v(t), ...n);
316
+ }), d(A, p({ clearable: !0 }, f, l, {
317
+ value: m,
318
+ "onUpdate:value": u === "string" ? t : e
319
+ }), n);
320
+ };
321
+ },
322
+ select: () => {
323
+ let e, t, n, r, i, a;
324
+ return ({ slots: o, props: s }, { modelValue: l, "onUpdate:modelValue": u, required: f, readonly: g, ..._ }) => {
325
+ let { dictType: b, options: S, valueType: C = "string", ...w } = W(s), T = C === "number" ? v : m, E, D, O;
326
+ S ? typeof S == "function" ? (E = !0, n ??= h(!1), D = (e) => {
327
+ n.value = !0, Promise.resolve(S(e.trim())).then((e) => {
328
+ t = e;
329
+ }).finally(() => {
330
+ n.value = !1;
331
+ });
332
+ }, O = () => {
333
+ D("");
334
+ }, O()) : (n = void 0, t = S) : (n = void 0, e !== b && (e = b, !t && e && (t = H(e))));
335
+ let k = w.multiple ? l?.map(T) : T(l);
336
+ if (g) if (w.multiple) {
337
+ let e;
338
+ return c(P, {
339
+ depth: 2,
340
+ style: "line-height: 1.25"
341
+ }, q(e = (k?.map((e) => y(t)?.find((t) => t[w.valueField || "value"] === e)) ?? []).map((e, t, n) => {
342
+ let r = e ? w.renderLabel ? w.renderLabel(e) ?? "" : e[w.labelField || "label"] ?? "" : k[t] ?? "";
343
+ return c("span", { key: e ? e[w.valueField || "value"] : k[t] ?? "" }, [r, t < n.length - 1 ? ", " : ""]);
344
+ })) ? e : { default: () => [e] });
345
+ } else {
346
+ let e = y(t)?.find((e) => e[w.valueField || "value"] === k);
347
+ return c(P, {
348
+ depth: 2,
349
+ style: "line-height: 1.25"
350
+ }, { default: () => [e ? w.renderLabel ? w.renderLabel(e) ?? "" : e[w.labelField || "label"] ?? "" : k ?? ""] });
351
+ }
352
+ return r = w.multiple, i = u, C === "number" && !a && (a = (e, ...t) => {
353
+ i(r ? e?.map(x) : x(e), ...t);
354
+ }), d(N, p({
355
+ clearable: !0,
356
+ filterable: y(t)?.length > 9,
357
+ loading: n?.value || t?.loading,
358
+ remote: E,
359
+ onSearch: D,
360
+ onClear: O
361
+ }, w, _, {
362
+ options: y(t),
363
+ value: k,
364
+ "onUpdate:value": C === "number" ? a : i
365
+ }), o);
366
+ };
367
+ },
368
+ checkbox: () => ({ slots: e, props: t }, { modelValue: n, "onUpdate:modelValue": r, required: i, readonly: a, ...o }) => {
369
+ if (t = W(t), a) {
370
+ let r = n === (t.checkedValue ?? !0) ? g(e, "checked", void 0, () => [c(C, { checked: !0 }, null)]) : g(e, "unchecked", void 0, () => [c(C, { disabled: !0 }, null)]);
371
+ return c(P, {
372
+ depth: 2,
373
+ style: "line-height: 1.25"
374
+ }, q(r) ? r : { default: () => [r] });
375
+ }
376
+ return d(C, p(t, o, {
377
+ checked: n,
378
+ "onUpdate:checked": r
379
+ }), e);
380
+ },
381
+ checkboxes: () => {
382
+ let e, t, n, r;
383
+ return ({ props: i }, { modelValue: o, "onUpdate:modelValue": s, required: l, readonly: u, ...f }) => {
384
+ let { dictType: h, options: g, valueType: _ = "string", ...y } = W(i), b = _ === "number" ? v : m;
385
+ g ? t = g : e !== h && (e = h, !t && e && (t = H(e)));
386
+ let S = o?.map(b) ?? [];
387
+ if (u) {
388
+ let e;
389
+ return c(P, {
390
+ depth: 2,
391
+ style: "line-height: 2.4"
392
+ }, q(e = (S?.map((e) => t?.find((t) => t[y.valueField || "value"] === e)) ?? []).map((e, t, n) => {
393
+ let r = e ? e[y.labelField ?? "label"] ?? "" : S[t] ?? "";
394
+ return c("span", { key: e ? e[y.valueField ?? "value"] : S[t] ?? "" }, [r, t < n.length - 1 ? ", " : ""]);
395
+ })) ? e : { default: () => [e] });
396
+ }
397
+ return n = s, _ === "number" && !r && (r = (e, ...t) => {
398
+ n(e?.map(x), ...t);
399
+ }), d(a, p(y, f, {
400
+ options: t,
401
+ modelValue: S,
402
+ "onUpdate:modelValue": _ === "number" ? r : n
403
+ }));
404
+ };
405
+ },
406
+ radios: () => {
407
+ let e, t, n, r;
408
+ return ({ props: i }, { modelValue: a, "onUpdate:modelValue": s, required: l, readonly: u, ...f }) => {
409
+ let { dictType: h, options: g, valueType: _ = "string", ...y } = W(i), b = _ === "number" ? v : m;
410
+ g ? t = g : e !== h && (e = h, !t && e && (t = H(e)));
411
+ let S = b(a);
412
+ if (u) {
413
+ let e = t?.find((e) => e[y.valueField ?? "value"] === S);
414
+ return c(P, {
415
+ depth: 2,
416
+ style: "line-height: 1.25"
417
+ }, { default: () => [e ? e[y.labelField ?? "label"] ?? "" : S ?? ""] });
418
+ }
419
+ return n = s, _ === "number" && !r && (r = (e, ...t) => {
420
+ n(x(e), ...t);
421
+ }), d(o, p(y, f, {
422
+ options: t,
423
+ modelValue: S,
424
+ "onUpdate:modelValue": _ === "number" ? r : n
425
+ }));
426
+ };
427
+ },
428
+ datepicker: () => ({ slots: e, props: t }, { modelValue: n, "onUpdate:modelValue": r, required: i, readonly: a, ...o }) => {
429
+ let { type: s = "date", format: l = s.startsWith("datetime") ? "yyyy-MM-dd HH:mm:ss" : "yyyy-MM-dd", ...u } = W(t);
430
+ return a ? s.endsWith("range") ? c(P, {
431
+ depth: 2,
432
+ style: "line-height: 1.25"
433
+ }, { default: () => [n ? `${n[0] ? R(n[0], l) : ""} ~ ${n[1] ? R(n[1], l) : ""}` : ""] }) : c(P, {
434
+ depth: 2,
435
+ style: "line-height: 1.25"
436
+ }, { default: () => [n ? R(n, l) : ""] }) : d(J, p({
437
+ actions: null,
438
+ updateValueOnClose: !0,
439
+ closeOnSelect: !0,
440
+ clearable: !0
441
+ }, u, o, {
442
+ type: s,
443
+ format: l,
444
+ value: n,
445
+ "onUpdate:value": r
446
+ }), e);
447
+ },
448
+ file: () => ({ slots: e, props: t }, { modelValue: n, "onUpdate:modelValue": r, required: i, readonly: a, ...o }) => {
449
+ if (t = W(t), a) {
450
+ let e;
451
+ return console.warn("[file] 原则上此组建不应该显示在详情中"), n?.length ? c(D, {
452
+ gap: "8",
453
+ vertical: !0
454
+ }, q(e = n.map((e) => c("a", {
455
+ key: e.id,
456
+ href: e.url,
457
+ target: "_blank",
458
+ rel: "noreferrer",
459
+ style: "max-width: 100px; text-overflow: ellipsis; overflow: hidden; white-space: nowrap; display: inline-block"
460
+ }, [e.name]))) ? e : { default: () => [e] }) : void 0;
461
+ }
462
+ return d(Y, p(t, o, {
463
+ defaultUpload: !1,
464
+ uploadFile: u,
465
+ fileList: n,
466
+ onUpdateFileList: r
467
+ }), e);
468
+ },
469
+ upload: () => {
470
+ let e = null, t = /* @__PURE__ */ new Map(), n = /* @__PURE__ */ new Map(), r = _([]), i = 0, a = (e) => {
471
+ let t = ++i;
472
+ r.value = e.map((e) => n.get(e)).filter(Boolean);
473
+ let a = e.filter((e) => !n.has(e));
474
+ Promise.resolve(a.length > 0 ? f(a) : []).then((a) => {
475
+ if (t === i) {
476
+ r.value = e.map((e) => n.get(e) || a.find((t) => t.id === e)), n.clear();
477
+ for (let e of r.value) n.set(e.id, e);
478
+ }
479
+ });
480
+ }, o, s;
481
+ return {
482
+ renderer: ({ slots: i, props: l }, { modelValue: f, "onUpdate:modelValue": m, required: h, readonly: g, ...v }) => {
483
+ let y = W(l);
484
+ if (s = y.maxSize, o = y.ref ??= _(), e !== f && (e = f, a(f?.split(",") ?? [])), g) {
485
+ let e;
486
+ return r.value.length === 0 ? void 0 : c(D, {
487
+ gap: "8",
488
+ vertical: !0,
489
+ style: "padding: 6px 0"
490
+ }, q(e = r.value.map((e) => c("a", {
491
+ key: e.id,
492
+ href: e.url,
493
+ target: "_blank",
494
+ rel: "noreferrer",
495
+ title: e.name,
496
+ download: e.name,
497
+ style: "max-width: 100%; text-overflow: ellipsis; overflow: hidden; white-space: nowrap; display: inline-block"
498
+ }, [e.name]))) ? e : { default: () => [e] });
499
+ }
500
+ return d(Y, p(y, v, {
501
+ uploadFile: u,
502
+ fileList: r.value,
503
+ onUpdateFileList: (e = []) => {
504
+ n.clear();
505
+ for (let r of e) r.file?.fileId && t.set(r.id, r.file.fileId), r.file?.fileId ? n.set(r.file.fileId, r) : n.set(r.id, r);
506
+ r.value = e, m(r.value.map((e) => t.get(e.id) || e.id).join(",") || null);
507
+ }
508
+ }), i);
509
+ },
510
+ beforeSubmit: async () => {
511
+ if (await o?.value?.submit(), await b(r).toMatch((e) => e.every((e) => !["pending", "uploading"].includes(e.status))), r.value.some((e) => e.size > s * 1024)) return Y.t("common.page.form.validate.fileSizeExceeded", { maxSize: s });
512
+ if (r.value.some((e) => e.status === "error")) return Y.t("common.page.form.validate.fileErrorMessage");
513
+ }
514
+ };
515
+ },
516
+ user: () => {
517
+ let a, o, u;
518
+ return ({ slots: f, props: m }, { modelValue: h, "onUpdate:modelValue": g, required: v, readonly: y, ...b }) => {
519
+ let x = W(m);
520
+ return a || (a = _([]), o = _([]), u = _([]), l().then((e) => {
521
+ a.value = e;
522
+ }), e().then((e) => {
523
+ o.value = e;
524
+ }), n().then((e) => {
525
+ u.value = e;
526
+ })), y ? c(i, {
527
+ value: h,
528
+ multiple: x.multiple,
529
+ getUsersByUsername: l,
530
+ renderInfo: x.renderInfo
531
+ }, null) : d(r, p({
532
+ type: "user",
533
+ users: a.value,
534
+ depts: u.value,
535
+ groups: o.value,
536
+ getUsersByDept: s,
537
+ getUsersByGroup: t
538
+ }, x, b, {
539
+ renderUserInfo: x.renderInfo,
540
+ modelValue: h,
541
+ "onUpdate:modelValue": g
542
+ }), f);
543
+ };
544
+ }
545
+ };
546
+ }
547
+ //#endregion
548
+ //#region src/page.jsx
549
+ function Z(e) {
550
+ return typeof e == "function" || Object.prototype.toString.call(e) === "[object Object]" && !f(e);
551
+ }
552
+ function Q() {
553
+ return () => ({ items: e, model: n, handleSubmit: r, reset: i, validation: a, readonly: o, inModal: s, showFeedback: l, cols: u, showColon: d, labelWidth: f, labelAlign: p, labelPlacement: m, showRequireMark: h, requireMarkPlacement: g }) => c(t, {
554
+ readonly: o,
555
+ model: n,
556
+ items: e,
557
+ validation: a,
558
+ showColon: y(d) ?? !0,
559
+ labelWidth: y(f),
560
+ labelAlign: y(p),
561
+ labelPlacement: y(m),
562
+ showRequireMark: y(h),
563
+ requireMarkPlacement: y(g),
564
+ showFeedback: y(l) ?? !0,
565
+ showAction: !1,
566
+ grid: { cols: y(u) },
567
+ onSubmit: r,
568
+ onReset: i,
569
+ style: s ? "padding-right: 2rem; padding-top: 1rem" : void 0
570
+ }, null);
571
+ }
572
+ function $() {
573
+ let e = (e) => typeof e == "number" ? `${e}px` : e, t = {
574
+ maxHeight: "calc(100vh - 130px)",
575
+ display: "flex",
576
+ flexDirection: "column"
577
+ }, n = { content: !0 };
578
+ return () => ({ type: r = "dialog", visible: i, title: a, content: o, footer: s, placement: l, resizable: u, draggable: d, closeOnEsc: f, closable: m, showMask: h, maskClosable: g, width: _, height: v, style: y, onClose: b, onCancel: x, onConfirm: C, onAfterClose: w, onAfterOpen: O, confirmText: k, confirmDisabled: A, confirmLoading: N, cancelText: P, cancelDisabled: F, cancelLoading: I, nativeScrollbar: L, ...R }) => {
579
+ let z = s ? () => s : s === null ? null : () => c(D, {
580
+ justify: "end",
581
+ gap: "16"
582
+ }, { default: () => [P === null ? void 0 : c(S, {
583
+ onClick: x,
584
+ disabled: F,
585
+ loading: I,
586
+ style: "min-width: 60px"
587
+ }, Z(P) ? P : { default: () => [P] }), k === null ? void 0 : c(S, {
588
+ type: "primary",
589
+ onClick: C,
590
+ disabled: A,
591
+ loading: N,
592
+ style: "min-width: 60px"
593
+ }, Z(k) ? k : { default: () => [k] })] });
594
+ if (r === "dialog") {
595
+ let { style: r } = p({ style: {
596
+ width: e(_ ?? 520),
597
+ height: e(v)
598
+ } }, { style: y });
599
+ return c(j, p({
600
+ show: i,
601
+ preset: "card",
602
+ title: () => a,
603
+ maskClosable: g ?? !1,
604
+ closeOnEsc: f,
605
+ closable: m,
606
+ onClose: b,
607
+ segmented: n,
608
+ size: "small",
609
+ onAfterEnter: O,
610
+ onAfterLeave: w,
611
+ onUpdateShow: b,
612
+ draggable: d ?? !0,
613
+ style: r,
614
+ contentStyle: t
615
+ }, R), {
616
+ default: () => c(M, {
617
+ abstract: !0,
618
+ style: "display: flex; flex-direction: column"
619
+ }, Z(o) ? o : { default: () => [o] }),
620
+ action: z
621
+ });
622
+ }
623
+ let { bodyContentClass: B, bodyContentStyle: V, ...H } = R;
624
+ return c(T, p({
625
+ show: i,
626
+ trapFocus: !1,
627
+ closeOnEsc: f,
628
+ showMask: h,
629
+ maskClosable: g,
630
+ resizable: u,
631
+ placement: l,
632
+ width: u ? void 0 : _ ?? 440,
633
+ defaultWidth: u ? _ ?? 440 : void 0,
634
+ height: v,
635
+ onUpdateShow: b,
636
+ onAfterEnter: O,
637
+ onAfterLeave: w,
638
+ style: y
639
+ }, H), { default: () => [c(E, {
640
+ closable: m,
641
+ nativeScrollbar: L ?? !1,
642
+ bodyContentClass: B,
643
+ bodyContentStyle: V
644
+ }, {
645
+ default: () => o,
646
+ header: () => a,
647
+ footer: z
648
+ })] });
649
+ };
650
+ }
651
+ //#endregion
652
+ export { K as createDescriptionHelper, Q as createFormHelper, X as createFormItemHelper, $ as createModalHelper };
package/esm/use-style.js CHANGED
@@ -1 +1,31 @@
1
- export { c, cB, cE, cM, default, useClsPrefix } from '../dist/use-style.js'
1
+ import { useMergedClsPrefix as e } from "ithinkdt-ui/es/_mixins/use-config";
2
+ import t from "ithinkdt-ui/es/_mixins/use-style";
3
+ import { c as n, cB as r, cE as i, cM as a } from "ithinkdt-ui/es/_utils/cssr/index";
4
+ //#region src/use-style.js
5
+ function o(n, r, i, a) {
6
+ return i ??= e(), t(n, r, i, a), i;
7
+ }
8
+ var s = { width: "100%" }, c = { height: "100%" }, l = {
9
+ ...s,
10
+ ...c
11
+ }, u = { display: "flex" }, d = {
12
+ ...u,
13
+ flexDirection: "column"
14
+ }, f = {
15
+ ...u,
16
+ alignItems: "center"
17
+ }, p = {
18
+ ...u,
19
+ justifyContent: "center"
20
+ }, m = {
21
+ ...u,
22
+ justifyContent: "space-between"
23
+ }, h = {
24
+ ...f,
25
+ ...p
26
+ }, g = (e) => ({
27
+ ...u,
28
+ gap: e
29
+ });
30
+ //#endregion
31
+ export { n as c, r as cB, i as cE, a as cM, o as default, u as flex, f as flexAlignCenter, h as flexCenter, d as flexDirCol, g as flexGap, p as flexJustifyCenter, m as flexJustifySB, c as fullHeight, l as fullWH, s as fullWidth, e as useClsPrefix };