@ithinkdt/ui 4.0.0-38 → 4.0.0-40

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