@ithinkdt/ui 4.0.0-6 → 4.0.0-600

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