@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
@@ -0,0 +1,1612 @@
1
+ import { n as useI18n } from "./use-i18n-Dx7V4KrY.js";
2
+ import { i as vTooltip } from "./directives-DUuJW647.js";
3
+ import { g as useStyle, h as useMergedClsPrefix, n as cB, r as cE, t as c } from "./use-style-DcT-1dj4.js";
4
+ import { Fragment, computed, createTextVNode, createVNode, defineComponent, inject, isVNode, mergeProps, nextTick, reactive, ref, shallowRef, toRaw, toRef, toValue, unref, useTemplateRef, watch, withDirectives } from "vue";
5
+ import { toReactive, unrefElement, until, useCurrentElement, useElementSize, watchDebounced } from "@vueuse/core";
6
+ import { NAvatar, NAvatarGroup, NButton, NCard, NCheckbox, NCheckboxGroup, NDataTable, NDropdown, NEllipsis, NEmpty, NFlex, NForm, NFormItem, NGi, NGrid, NH4, NIcon, NInput, NList, NListItem, NPagination, NPerformantEllipsis, NPopover, NRadio, NRadioButton, NRadioGroup, NSelect, NSpin, NTag, NText, NTooltip, NTransfer, NTree, NTreeSelect, dataTableProps, formProps } from "ithinkdt-ui";
7
+ import { VOverflow, VResizeObserver } from "vueuc";
8
+ import { Sortable } from "sortablejs/modular/sortable.core.esm.js";
9
+ import { pickProps } from "@ithinkdt/common/object";
10
+ import { PAGE_INJECTION, useFormModal } from "@ithinkdt/page";
11
+ import { Sortable as Sortable$1 } from "sortablejs";
12
+ import { flattenTree, walkTree } from "@ithinkdt/common";
13
+ const NCheckboxes = /* @__PURE__ */ defineComponent({
14
+ name: "Checkboxes",
15
+ inheritAttrs: !1,
16
+ props: {
17
+ options: {
18
+ type: Array,
19
+ default: () => []
20
+ },
21
+ vertical: {
22
+ type: Boolean,
23
+ default: !1
24
+ },
25
+ default: {
26
+ type: [
27
+ Boolean,
28
+ String,
29
+ Object
30
+ ],
31
+ default: !1
32
+ },
33
+ gap: {
34
+ type: [
35
+ Number,
36
+ String,
37
+ Array
38
+ ],
39
+ default: void 0
40
+ },
41
+ modelValue: {
42
+ type: Array,
43
+ default: void 0
44
+ },
45
+ labelPadding: {
46
+ type: String,
47
+ default: void 0
48
+ },
49
+ labelField: {
50
+ type: String,
51
+ default: "label"
52
+ },
53
+ valueField: {
54
+ type: String,
55
+ default: "value"
56
+ },
57
+ disabledField: {
58
+ type: String,
59
+ default: "disabled"
60
+ }
61
+ },
62
+ emits: {
63
+ "update:modelValue": () => !0,
64
+ updateModelValue: () => !0
65
+ },
66
+ setup(w, { emit: T, attrs: E }) {
67
+ let { t: D } = useI18n(), O = computed(() => w.default ? w.default === !0 ? D("common.all") : typeof w.default == "string" ? w.default : w.default?.[w.labelField] ?? D("common.all") : ""), k = ref([]);
68
+ watch(() => w.modelValue, (e) => k.value = e, { immediate: !0 });
69
+ let A = (e) => {
70
+ T("update:modelValue", e), T("updateModelValue", e);
71
+ }, M = () => {
72
+ A(k.value?.length === w.options.length ? [] : w.options.map((e) => e[w.valueField]));
73
+ }, N = computed(() => w.options.length > k.value?.length && k.value?.length > 0), P = computed(() => ({ "--n-label-padding": w.labelPadding }));
74
+ return () => {
75
+ let e = createVNode(NCheckboxGroup, mergeProps(E, {
76
+ value: k.value,
77
+ onUpdateValue: A
78
+ }), { default: () => [createVNode(NFlex, {
79
+ size: w.gap ?? (w.vertical ? void 0 : "small"),
80
+ vertical: w.vertical,
81
+ style: !w.default && w.vertical ? { padding: "6px 0 0" } : {}
82
+ }, { default: () => [w.options?.map((e) => createVNode(NCheckbox, {
83
+ value: e[w.valueField],
84
+ disabled: e[w.disabledField],
85
+ style: P.value
86
+ }, { default: () => [e[w.labelField]] }))] })] });
87
+ return w.default ? createVNode(NFlex, {
88
+ size: w.gap ?? (w.vertical ? void 0 : "small"),
89
+ vertical: w.vertical,
90
+ style: w.vertical ? { padding: "6px 0 0" } : {}
91
+ }, { default: () => [createVNode("span", null, [createVNode(NCheckbox, {
92
+ indeterminate: N.value,
93
+ checked: k.value?.length > 0,
94
+ onUpdateChecked: M,
95
+ style: P.value
96
+ }, { default: () => [O.value] })]), e] }) : e;
97
+ };
98
+ }
99
+ }), IHelp = (e) => createVNode("svg", mergeProps({
100
+ xmlns: "http://www.w3.org/2000/svg",
101
+ "xmlns:xlink": "http://www.w3.org/1999/xlink",
102
+ role: "img",
103
+ width: "1em",
104
+ height: "1em",
105
+ viewBox: "0 0 24 24"
106
+ }, e), [createVNode("path", {
107
+ fill: "currentColor",
108
+ d: "M11 18h2v-2h-2v2m1-16A10 10 0 0 0 2 12a10 10 0 0 0 10 10a10 10 0 0 0 10-10A10 10 0 0 0 12 2m0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8s8 3.59 8 8s-3.59 8-8 8m0-14a4 4 0 0 0-4 4h2a2 2 0 0 1 2-2a2 2 0 0 1 2 2c0 2-3 1.75-3 5h2c0-2.25 3-2.5 3-5a4 4 0 0 0-4-4Z"
109
+ }, null)]), ICustom = (e) => createVNode("svg", mergeProps({
110
+ xmlns: "http://www.w3.org/2000/svg",
111
+ "xmlns:xlink": "http://www.w3.org/1999/xlink",
112
+ role: "img",
113
+ width: "1em",
114
+ height: "1em",
115
+ viewBox: "0 0 1024 1024"
116
+ }, e), [createVNode("path", {
117
+ fill: "currentColor",
118
+ d: "m924.8 625.7l-65.5-56c3.1-19 4.7-38.4 4.7-57.8s-1.6-38.8-4.7-57.8l65.5-56a32.03 32.03 0 0 0 9.3-35.2l-.9-2.6a443.74 443.74 0 0 0-79.7-137.9l-1.8-2.1a32.12 32.12 0 0 0-35.1-9.5l-81.3 28.9c-30-24.6-63.5-44-99.7-57.6l-15.7-85a32.05 32.05 0 0 0-25.8-25.7l-2.7-.5c-52.1-9.4-106.9-9.4-159 0l-2.7.5a32.05 32.05 0 0 0-25.8 25.7l-15.8 85.4a351.86 351.86 0 0 0-99 57.4l-81.9-29.1a32 32 0 0 0-35.1 9.5l-1.8 2.1a446.02 446.02 0 0 0-79.7 137.9l-.9 2.6c-4.5 12.5-.8 26.5 9.3 35.2l66.3 56.6c-3.1 18.8-4.6 38-4.6 57.1c0 19.2 1.5 38.4 4.6 57.1L99 625.5a32.03 32.03 0 0 0-9.3 35.2l.9 2.6c18.1 50.4 44.9 96.9 79.7 137.9l1.8 2.1a32.12 32.12 0 0 0 35.1 9.5l81.9-29.1c29.8 24.5 63.1 43.9 99 57.4l15.8 85.4a32.05 32.05 0 0 0 25.8 25.7l2.7.5a449.4 449.4 0 0 0 159 0l2.7-.5a32.05 32.05 0 0 0 25.8-25.7l15.7-85a350 350 0 0 0 99.7-57.6l81.3 28.9a32 32 0 0 0 35.1-9.5l1.8-2.1c34.8-41.1 61.6-87.5 79.7-137.9l.9-2.6c4.5-12.3.8-26.3-9.3-35zM788.3 465.9c2.5 15.1 3.8 30.6 3.8 46.1s-1.3 31-3.8 46.1l-6.6 40.1l74.7 63.9a370.03 370.03 0 0 1-42.6 73.6L721 702.8l-31.4 25.8c-23.9 19.6-50.5 35-79.3 45.8l-38.1 14.3l-17.9 97a377.5 377.5 0 0 1-85 0l-17.9-97.2l-37.8-14.5c-28.5-10.8-55-26.2-78.7-45.7l-31.4-25.9l-93.4 33.2c-17-22.9-31.2-47.6-42.6-73.6l75.5-64.5l-6.5-40c-2.4-14.9-3.7-30.3-3.7-45.5c0-15.3 1.2-30.6 3.7-45.5l6.5-40l-75.5-64.5c11.3-26.1 25.6-50.7 42.6-73.6l93.4 33.2l31.4-25.9c23.7-19.5 50.2-34.9 78.7-45.7l37.9-14.3l17.9-97.2c28.1-3.2 56.8-3.2 85 0l17.9 97l38.1 14.3c28.7 10.8 55.4 26.2 79.3 45.8l31.4 25.8l92.8-32.9c17 22.9 31.2 47.6 42.6 73.6L781.8 426l6.5 39.9zM512 326c-97.2 0-176 78.8-176 176s78.8 176 176 176s176-78.8 176-176s-78.8-176-176-176zm79.2 255.2A111.6 111.6 0 0 1 512 614c-29.9 0-58-11.7-79.2-32.8A111.6 111.6 0 0 1 400 502c0-29.9 11.7-58 32.8-79.2C454 401.6 482.1 390 512 390c29.9 0 58 11.6 79.2 32.8A111.6 111.6 0 0 1 624 502c0 29.9-11.7 58-32.8 79.2z"
119
+ }, null)]), IDrag = (e) => createVNode("svg", mergeProps({
120
+ xmlns: "http://www.w3.org/2000/svg",
121
+ "xmlns:xlink": "http://www.w3.org/1999/xlink",
122
+ role: "img",
123
+ width: "1em",
124
+ height: "1em",
125
+ viewBox: "0 0 1024 1024"
126
+ }, e), [createVNode("path", {
127
+ fill: "currentColor",
128
+ d: "M300 276.497a56 56 0 1 0 56-96.994a56 56 0 0 0-56 96.994Zm0 284a56 56 0 1 0 56-96.994a56 56 0 0 0-56 96.994ZM640 228a56 56 0 1 0 112 0a56 56 0 0 0-112 0Zm0 284a56 56 0 1 0 112 0a56 56 0 0 0-112 0ZM300 844.497a56 56 0 1 0 56-96.994a56 56 0 0 0-56 96.994ZM640 796a56 56 0 1 0 112 0a56 56 0 0 0-112 0Z"
129
+ }, null)]), ILeft = (e) => createVNode("svg", mergeProps({
130
+ xmlns: "http://www.w3.org/2000/svg",
131
+ "xmlns:xlink": "http://www.w3.org/1999/xlink",
132
+ role: "img",
133
+ width: "1em",
134
+ height: "1em",
135
+ viewBox: "0 0 1024 1024"
136
+ }, e), [createVNode("path", {
137
+ fill: "currentColor",
138
+ d: "M326 164h-64c-4.4 0-8 3.6-8 8v688c0 4.4 3.6 8 8 8h64c4.4 0 8-3.6 8-8V172c0-4.4-3.6-8-8-8zm444 72.4V164c0-6.8-7.9-10.5-13.1-6.1L335 512l421.9 354.1c5.2 4.4 13.1.7 13.1-6.1v-72.4c0-9.4-4.2-18.4-11.4-24.5L459.4 512l299.2-251.1c7.2-6.1 11.4-15.1 11.4-24.5z"
139
+ }, null)]), IRight = (e) => createVNode("svg", mergeProps({
140
+ xmlns: "http://www.w3.org/2000/svg",
141
+ "xmlns:xlink": "http://www.w3.org/1999/xlink",
142
+ role: "img",
143
+ width: "1em",
144
+ height: "1em",
145
+ viewBox: "0 0 1024 1024"
146
+ }, e), [createVNode("path", {
147
+ fill: "currentColor",
148
+ d: "M762 164h-64c-4.4 0-8 3.6-8 8v688c0 4.4 3.6 8 8 8h64c4.4 0 8-3.6 8-8V172c0-4.4-3.6-8-8-8zm-508 0v72.4c0 9.5 4.2 18.4 11.4 24.5L564.6 512L265.4 763.1c-7.2 6.1-11.4 15-11.4 24.5V860c0 6.8 7.9 10.5 13.1 6.1L689 512L267.1 157.9A7.95 7.95 0 0 0 254 164z"
149
+ }, null)]), IDown = (e) => createVNode("svg", mergeProps({
150
+ xmlns: "http://www.w3.org/2000/svg",
151
+ "xmlns:xlink": "http://www.w3.org/1999/xlink",
152
+ role: "img",
153
+ width: "1em",
154
+ height: "1em",
155
+ viewBox: "0 0 32 32"
156
+ }, e), [createVNode("path", {
157
+ fill: "currentColor",
158
+ d: "M16 22L6 12l1.4-1.4l8.6 8.6l8.6-8.6L26 12z"
159
+ }, null)]), IUp = (e) => createVNode("svg", mergeProps({
160
+ xmlns: "http://www.w3.org/2000/svg",
161
+ "xmlns:xlink": "http://www.w3.org/1999/xlink",
162
+ role: "img",
163
+ width: "1em",
164
+ height: "1em",
165
+ viewBox: "0 0 32 32"
166
+ }, e), [createVNode("path", {
167
+ fill: "currentColor",
168
+ d: "m16 10l10 10l-1.4 1.4l-8.6-8.6l-8.6 8.6L6 20z"
169
+ }, null)]), ICheck = (e) => createVNode("svg", mergeProps({
170
+ xmlns: "http://www.w3.org/2000/svg",
171
+ "xmlns:xlink": "http://www.w3.org/1999/xlink",
172
+ role: "img",
173
+ width: "1em",
174
+ height: "1em",
175
+ viewBox: "0 0 24 24"
176
+ }, e), [createVNode("path", {
177
+ fill: "currentColor",
178
+ d: "m9.55 18l-5.7-5.7l1.425-1.425L9.55 15.15l9.175-9.175L20.15 7.4z"
179
+ }, null)]), ILanguage = (e) => createVNode("svg", mergeProps({
180
+ xmlns: "http://www.w3.org/2000/svg",
181
+ "xmlns:xlink": "http://www.w3.org/1999/xlink",
182
+ role: "img",
183
+ width: "1em",
184
+ height: "1em",
185
+ viewBox: "0 0 24 24"
186
+ }, e), [createVNode("path", {
187
+ fill: "currentColor",
188
+ d: "M12 22q-2.05 0-3.875-.788t-3.187-2.15t-2.15-3.187T2 12q0-2.075.788-3.887t2.15-3.175t3.187-2.15T12 2q2.075 0 3.888.788t3.174 2.15t2.15 3.175T22 12q0 2.05-.788 3.875t-2.15 3.188t-3.175 2.15T12 22m0-2.05q.65-.9 1.125-1.875T13.9 16h-3.8q.3 1.1.775 2.075T12 19.95m-2.6-.4q-.45-.825-.787-1.713T8.05 16H5.1q.725 1.25 1.813 2.175T9.4 19.55m5.2 0q1.4-.45 2.488-1.375T18.9 16h-2.95q-.225.95-.562 1.838T14.6 19.55M4.25 14h3.4q-.075-.5-.112-.987T7.5 12t.038-1.012T7.65 10h-3.4q-.125.5-.187.988T4 12t.063 1.013t.187.987m5.4 0h4.7q.075-.5.113-.987T14.5 12t-.038-1.012T14.35 10h-4.7q-.075.5-.112.988T9.5 12t.038 1.013t.112.987m6.7 0h3.4q.125-.5.188-.987T20 12t-.062-1.012T19.75 10h-3.4q.075.5.113.988T16.5 12t-.038 1.013t-.112.987m-.4-6h2.95q-.725-1.25-1.812-2.175T14.6 4.45q.45.825.788 1.713T15.95 8M10.1 8h3.8q-.3-1.1-.775-2.075T12 4.05q-.65.9-1.125 1.875T10.1 8m-5 0h2.95q.225-.95.563-1.838T9.4 4.45Q8 4.9 6.912 5.825T5.1 8"
189
+ }, null)]), IMore = (e) => createVNode("svg", mergeProps({
190
+ xmlns: "http://www.w3.org/2000/svg",
191
+ "xmlns:xlink": "http://www.w3.org/1999/xlink",
192
+ role: "img",
193
+ width: "1em",
194
+ height: "1em",
195
+ viewBox: "0 0 20 20"
196
+ }, e), [createVNode("path", {
197
+ fill: "currentColor",
198
+ fillRule: "evenodd",
199
+ d: "M2.5 7.5a2.5 2.5 0 1 1 0 5a2.5 2.5 0 0 1 0-5m15 0a2.5 2.5 0 1 1 0 5a2.5 2.5 0 0 1 0-5m-7.274 0a2.5 2.5 0 1 1 0 5a2.5 2.5 0 0 1 0-5"
200
+ }, null)]), IDept = (e) => createVNode("svg", mergeProps({
201
+ xmlns: "http://www.w3.org/2000/svg",
202
+ "xmlns:xlink": "http://www.w3.org/1999/xlink",
203
+ width: "1em",
204
+ height: "1em",
205
+ viewBox: "0 0 12 12"
206
+ }, e), [createVNode("path", {
207
+ fill: "currentColor",
208
+ d: "M5.5 4.937a2 2 0 1 1 1 0V6h2a1 1 0 0 1 1 1v1.063a2 2 0 1 1-1 0V7h-5v1.063a2 2 0 1 1-1 0V7a1 1 0 0 1 1-1h2zM6 4a1 1 0 1 0 0-2a1 1 0 0 0 0 2m-3 7a1 1 0 1 0 0-2a1 1 0 0 0 0 2m5-1a1 1 0 1 0 2 0a1 1 0 0 0-2 0"
209
+ }, null)]), IGroup = (e) => createVNode("svg", mergeProps({
210
+ xmlns: "http://www.w3.org/2000/svg",
211
+ "xmlns:xlink": "http://www.w3.org/1999/xlink",
212
+ width: "1em",
213
+ height: "1em",
214
+ viewBox: "0 0 24 24"
215
+ }, e), [createVNode("g", {
216
+ fill: "none",
217
+ fillRule: "evenodd"
218
+ }, [createVNode("path", { d: "M24 0v24H0V0zM12.593 23.258l-.011.002l-.071.035l-.02.004l-.014-.004l-.071-.035c-.01-.004-.019-.001-.024.005l-.004.01l-.017.428l.005.02l.01.013l.104.074l.015.004l.012-.004l.104-.074l.012-.016l.004-.017l-.017-.427c-.002-.01-.009-.017-.017-.018m.265-.113l-.013.002l-.185.093l-.01.01l-.003.011l.018.43l.005.012l.008.007l.201.093c.012.004.023 0 .029-.008l.004-.014l-.034-.614c-.003-.012-.01-.02-.02-.022m-.715.002a.023.023 0 0 0-.027.006l-.006.014l-.034.614c0 .012.007.02.017.024l.015-.002l.201-.093l.01-.008l.004-.011l.017-.43l-.003-.012l-.01-.01z" }, null), createVNode("path", {
219
+ fill: "currentColor",
220
+ d: "M13 13a4 4 0 0 1 4 4v2a1 1 0 1 1-2 0v-2a2 2 0 0 0-2-2H6a2 2 0 0 0-2 2v2a1 1 0 1 1-2 0v-2a4 4 0 0 1 4-4zm6 0a3 3 0 0 1 3 3v2a1 1 0 1 1-2 0v-2a1 1 0 0 0-1-1h-1.416a5.02 5.02 0 0 0-1.583-2zM9.5 3a4.5 4.5 0 1 1 0 9a4.5 4.5 0 0 1 0-9M18 6a3 3 0 1 1 0 6a3 3 0 0 1 0-6M9.5 5a2.5 2.5 0 1 0 0 5a2.5 2.5 0 0 0 0-5M18 8a1 1 0 1 0 0 2a1 1 0 0 0 0-2"
221
+ }, null)])]), IAccount = (e) => createVNode("svg", mergeProps({
222
+ xmlns: "http://www.w3.org/2000/svg",
223
+ "xmlns:xlink": "http://www.w3.org/1999/xlink",
224
+ role: "img",
225
+ width: "1em",
226
+ height: "1em",
227
+ viewBox: "0 0 256 256"
228
+ }, e), [createVNode("path", {
229
+ fill: "currentColor",
230
+ d: "M235.4 210a124.2 124.2 0 0 0-61.8-53.2a76 76 0 1 0-91.2 0A124.2 124.2 0 0 0 20.6 210a12 12 0 0 0 20.8 12a100 100 0 0 1 173.2 0a12.1 12.1 0 0 0 10.4 6a11.7 11.7 0 0 0 6-1.6a12 12 0 0 0 4.4-16.4ZM76 96a52 52 0 1 1 52 52a52 52 0 0 1-52-52Z"
231
+ }, null)]), DataActions = /* @__PURE__ */ defineComponent({
232
+ name: "DataActions",
233
+ props: { options: {
234
+ type: Array,
235
+ default: () => []
236
+ } },
237
+ setup(e) {
238
+ let w = ref(), T = !0, E = () => {
239
+ T ? T = !1 : w.value?.sync({ showAllItemsBeforeCalculate: !0 });
240
+ }, D = ref(), O = () => D.value, k = ref(-1), A = (w) => {
241
+ k.value = e.options.length - w;
242
+ }, M = (e) => {
243
+ e || (k.value = -1);
244
+ }, N = () => {}, P = computed(() => k.value === -1 ? [] : e.options.slice(k.value).map((e) => ({
245
+ ...e,
246
+ key: e.text
247
+ }))), F = (e) => createVNode(NButton, {
248
+ type: e.color === "danger" ? "error" : [
249
+ "default",
250
+ "tertiary",
251
+ "primary",
252
+ "info",
253
+ "success",
254
+ "warning",
255
+ "error"
256
+ ].includes(e.color) ? e.color : "primary",
257
+ text: !0
258
+ }, { default: () => [e.text] }), I = (e, w) => {
259
+ w.onClick?.();
260
+ };
261
+ return () => createVNode(VResizeObserver, { onResize: E }, { default: () => [createVNode(VOverflow, {
262
+ ref: w,
263
+ getCounter: O,
264
+ onUpdateCount: A,
265
+ onUpdateOverflow: M,
266
+ updateCounter: N,
267
+ style: "margin-top: 2px"
268
+ }, {
269
+ default: () => e.options.map((e) => createVNode(NButton, {
270
+ quaternary: !0,
271
+ type: e.color === "danger" ? "error" : [
272
+ "default",
273
+ "tertiary",
274
+ "primary",
275
+ "info",
276
+ "success",
277
+ "warning",
278
+ "error"
279
+ ].includes(e.color) ? e.color : "primary",
280
+ size: "small",
281
+ onClick: e.onClick
282
+ }, { default: () => [e.text] })),
283
+ counter: () => createVNode("span", {
284
+ ref: D,
285
+ style: "position: absolute"
286
+ }, [createVNode(NDropdown, {
287
+ options: P.value,
288
+ renderLabel: F,
289
+ onSelect: I
290
+ }, { default: () => [createVNode(NButton, {
291
+ quaternary: !0,
292
+ size: "small"
293
+ }, { default: () => [createVNode(IMore, { style: "font-size: 14px; color: #888" }, null)] })] })])
294
+ })] });
295
+ }
296
+ });
297
+ function _isSlot$6(e) {
298
+ return typeof e == "function" || Object.prototype.toString.call(e) === "[object Object]" && !isVNode(e);
299
+ }
300
+ var DataCustomItem = /* @__PURE__ */ defineComponent({
301
+ name: "DataCustomRow",
302
+ props: {
303
+ label: [String, Function],
304
+ disabled: Boolean,
305
+ hidden: Boolean,
306
+ showFixed: Boolean,
307
+ fixed: [Boolean, String]
308
+ },
309
+ emits: ["update-hidden", "update-fixed"],
310
+ setup(e, { emit: w }) {
311
+ return () => {
312
+ let T;
313
+ return createVNode(NFlex, {
314
+ align: "center",
315
+ wrap: !1,
316
+ size: "small"
317
+ }, { default: () => [
318
+ createVNode(NButton, {
319
+ type: "primary",
320
+ text: !0,
321
+ class: "icon-drag"
322
+ }, { default: () => [createVNode(NIcon, { size: "18" }, { default: () => [createVNode(IDrag, null, null)] })] }),
323
+ createVNode(NCheckbox, {
324
+ checked: !e.hidden,
325
+ disabled: e.disabled,
326
+ onUpdateChecked: (e) => w("update-hidden", !e)
327
+ }, null),
328
+ createVNode(NEllipsis, { style: "flex: 1 1 auto" }, _isSlot$6(T = toValue(e.label)) ? T : { default: () => [T] }),
329
+ e.showFixed ? [createVNode(NButton, {
330
+ text: !0,
331
+ type: e.fixed === "left" ? "primary" : void 0,
332
+ onClick: () => w("update-fixed", e.fixed === "left" ? !1 : "left")
333
+ }, { default: () => [createVNode(NIcon, null, { default: () => [createVNode(ILeft, null, null)] })] }), createVNode(NButton, {
334
+ text: !0,
335
+ type: e.fixed === "right" ? "primary" : void 0,
336
+ onClick: () => w("update-fixed", e.fixed === "right" ? !1 : "right")
337
+ }, { default: () => [createVNode(NIcon, null, { default: () => [createVNode(IRight, null, null)] })] })] : void 0
338
+ ] });
339
+ };
340
+ }
341
+ });
342
+ const DataCustom = /* @__PURE__ */ defineComponent({
343
+ name: "DataCustom",
344
+ props: {
345
+ data: {
346
+ type: Array,
347
+ required: !0
348
+ },
349
+ keyField: {
350
+ type: String,
351
+ default: "key"
352
+ },
353
+ labelField: {
354
+ type: String,
355
+ default: "label"
356
+ },
357
+ fixedField: {
358
+ type: String,
359
+ default: "fixed"
360
+ },
361
+ hiddenField: {
362
+ type: String,
363
+ default: "hidden"
364
+ },
365
+ showFixed: {
366
+ type: Boolean,
367
+ default: !0
368
+ },
369
+ disabledField: {
370
+ type: String,
371
+ default: "disabled"
372
+ },
373
+ visiblityField: {
374
+ type: String,
375
+ default: "visiblity"
376
+ },
377
+ tooltip: [String, Object],
378
+ size: {
379
+ type: Number,
380
+ default: 20
381
+ },
382
+ type: { type: String }
383
+ },
384
+ emits: { custom: () => !0 },
385
+ setup(T, { emit: E }) {
386
+ let { t: D } = useI18n();
387
+ function O(e, w, D) {
388
+ E("custom", {
389
+ key: e[T.keyField],
390
+ [w]: D
391
+ });
392
+ }
393
+ let k = ref();
394
+ return watch(k, (e) => {
395
+ e.$el && Sortable.create(e.$el, {
396
+ animation: 150,
397
+ ghostClass: "ghost",
398
+ handle: ".icon-drag",
399
+ filter: ".disabled",
400
+ onEnd(e) {
401
+ let w = T.data.map((e) => e[T.keyField]), [D] = w.splice(e.oldIndex, 1);
402
+ w.splice(e.newIndex, 0, D), E("custom", w);
403
+ }
404
+ });
405
+ }), () => createVNode(NPopover, {
406
+ trigger: "click",
407
+ scrollable: !0,
408
+ placement: "left-start",
409
+ displayDirective: "show",
410
+ style: "max-height: 400px; width: 240px"
411
+ }, {
412
+ trigger: () => withDirectives(createVNode(NButton, {
413
+ text: !0,
414
+ type: T.type
415
+ }, { default: () => [createVNode(NIcon, { size: T.size }, { default: () => [createVNode(ICustom, null, null)] })] }), [[vTooltip, T.tooltip ?? D("common.page.custom.tooltip")]]),
416
+ default: () => {
417
+ let e, w;
418
+ return createVNode(NFlex, { vertical: !0 }, { default: () => [createVNode(NFlex, { justify: "space-between" }, { default: () => [createVNode("div", { style: "font-weight: bold" }, [T.tooltip ?? D("common.page.custom.tooltip")]), createVNode(NButton, {
419
+ text: !0,
420
+ type: "primary",
421
+ size: "small",
422
+ onClick: () => E("custom", !0)
423
+ }, _isSlot$6(e = D("common.page.custom.reset")) ? e : { default: () => [e] })] }), createVNode(NFlex, {
424
+ ref: k,
425
+ vertical: !0
426
+ }, _isSlot$6(w = T.data.filter((e) => e[T.visiblityField] !== !1).map((e) => createVNode(DataCustomItem, {
427
+ key: e[T.keyField],
428
+ label: e[T.labelField],
429
+ hidden: e[T.hiddenField],
430
+ fixed: e[T.fixedField],
431
+ showFixed: T.showFixed,
432
+ onUpdateHidden: (w) => O(e, "hidden", w),
433
+ onUpdateFixed: (w) => O(e, "fixed", w)
434
+ }, null))) ? w : { default: () => [w] })] });
435
+ }
436
+ });
437
+ }
438
+ });
439
+ function _isSlot$5(e) {
440
+ return typeof e == "function" || Object.prototype.toString.call(e) === "[object Object]" && !isVNode(e);
441
+ }
442
+ const DataForm = /* @__PURE__ */ defineComponent({
443
+ name: "DataForm",
444
+ props: {
445
+ grid: {
446
+ type: Object,
447
+ default: () => ({})
448
+ },
449
+ ...pickProps(formProps, "disabled", "model", "labelWidth", "labelAlign", "showFeedback", "size"),
450
+ readonly: {
451
+ type: Boolean,
452
+ required: !1,
453
+ default: void 0
454
+ },
455
+ items: {
456
+ type: Array,
457
+ required: !0
458
+ },
459
+ validation: {
460
+ type: Object,
461
+ default: () => ({})
462
+ },
463
+ loading: Boolean,
464
+ showColon: Boolean,
465
+ actionAlign: {
466
+ type: String,
467
+ default: "start"
468
+ },
469
+ showAction: {
470
+ type: [Boolean, Object],
471
+ default: void 0
472
+ },
473
+ submitText: {
474
+ type: [
475
+ String,
476
+ Number,
477
+ Object
478
+ ],
479
+ default: void 0
480
+ },
481
+ resetText: {
482
+ type: [
483
+ String,
484
+ Number,
485
+ Object
486
+ ],
487
+ default: void 0
488
+ },
489
+ cancelText: {
490
+ type: [
491
+ String,
492
+ Number,
493
+ Object
494
+ ],
495
+ default: void 0
496
+ },
497
+ showSubmitBtn: {
498
+ type: Boolean,
499
+ required: !1,
500
+ default: !0
501
+ },
502
+ showResetBtn: {
503
+ type: Boolean,
504
+ required: !1,
505
+ default: !0
506
+ },
507
+ showCancelBtn: {
508
+ type: Boolean,
509
+ required: !1,
510
+ default: !1
511
+ },
512
+ submitDisabled: Boolean,
513
+ succeeded: Boolean,
514
+ successText: {
515
+ type: [
516
+ String,
517
+ Number,
518
+ Object
519
+ ],
520
+ default: void 0
521
+ },
522
+ tooltipPlacement: {
523
+ type: String,
524
+ default: "bottom"
525
+ },
526
+ requireMarkPlacement: {
527
+ type: String,
528
+ default: "left"
529
+ },
530
+ labelPlacement: {
531
+ type: String,
532
+ default: "left"
533
+ }
534
+ },
535
+ emits: [
536
+ "submit",
537
+ "reset",
538
+ "cancel"
539
+ ],
540
+ setup(w, { emit: T, slots: E }) {
541
+ let { t: D } = useI18n(), O = (e) => {
542
+ e?.preventDefault?.(), T("submit", { ...toRaw(w.model) }, e);
543
+ }, k = (e) => {
544
+ e?.preventDefault?.(), T("reset");
545
+ }, j = (e) => {
546
+ e?.preventDefault?.(), T("cancel");
547
+ }, N = ref(), P = ref(), { width: F } = useElementSize(useCurrentElement());
548
+ return watchDebounced([N, F], () => {
549
+ P.value = void 0, setTimeout(() => {
550
+ P.value = N.value?.responsiveCols || void 0;
551
+ }, 30);
552
+ }, {
553
+ immediate: !0,
554
+ debounce: 100
555
+ }), () => {
556
+ let { items: e, loading: T, validation: F, showColon: L, showAction: R, actionAlign: z, submitText: B, submitDisabled: V, resetText: H, tooltipPlacement: W, showFeedback: G, labelWidth: K = "7.2em", labelAlign: q = w.labelPlacement === "top" ? "left" : "right", grid: J, succeeded: Y, successText: X = B,...Z } = w, Q = !w.readonly && G !== !1;
557
+ return createVNode(NForm, mergeProps({
558
+ labelWidth: K,
559
+ labelAlign: q,
560
+ onReset: k,
561
+ onSubmit: O,
562
+ showFeedback: Q
563
+ }, Z), { default: () => [createVNode(NGrid, mergeProps({
564
+ ref: N,
565
+ itemResponsive: !0
566
+ }, J, { yGap: Q ? 0 : J?.yGap ?? 24 }), { default: () => {
567
+ let O = 0;
568
+ return createVNode(Fragment, null, [e.map(({ hidden: e, name: T, render: E, label: D, showColon: k, span: A = 6, rowSpan: j, offset: N = 0, tooltip: P, tooltipPlacement: L = w.tooltipPlacement, validationStatus: R = F[T]?.errors?.some((e) => e !== void 0) ? "error" : F[T]?.warnings?.some((e) => e !== void 0) ? "warnings" : F[T] ? "success" : void 0, readonly: z = w.readonly, showRequireMark: B = !z, showTooltipWhenReadonly: V = !1,...H }) => {
569
+ if (e) return;
570
+ O += A;
571
+ let W;
572
+ return W = T[0] === "$" ? E({}) : createVNode(NFormItem, mergeProps({
573
+ path: T,
574
+ validationStatus: R,
575
+ showRequireMark: H.required && B
576
+ }, H), {
577
+ label: () => createVNode(NText, {
578
+ depth: w.readonly ? 3 : 2,
579
+ style: "display: inline-flex; align-items: flex-start; gap: 1px"
580
+ }, { default: () => [
581
+ createVNode("span", null, [toValue(D)]),
582
+ L === "icon" ? createVNode(NTooltip, null, {
583
+ default: () => toValue(P),
584
+ trigger: () => createVNode(NButton, {
585
+ text: !0,
586
+ style: "font-size: 1.25em; opacity: 0.8"
587
+ }, { default: () => [createVNode(NIcon, null, { default: () => [createVNode(IHelp, null, null)] })] })
588
+ }) : void 0,
589
+ w.showColon && k !== !1 ? createVNode("span", { style: "place-self: center" }, [createTextVNode(":")]) : void 0
590
+ ] }),
591
+ default: () => {
592
+ let e, T = createVNode("div", { style: "width: 100%; font-size: calc(1rem - 2px); min-height: 32px; display: flex; align-items: center" }, [E({
593
+ disabled: w.disabled,
594
+ size: w.size,
595
+ readonly: w.readonly
596
+ })]);
597
+ return P && L === "bottom" && (!w.readonly || V) ? createVNode("div", { style: "width: 100%; display: flex; flex-direction: column" }, [T, createVNode(NText, {
598
+ depth: 3,
599
+ style: "font-size: calc(1rem - 3px); margin-top: 6px"
600
+ }, _isSlot$5(e = toValue(P)) ? e : { default: () => [e] })]) : T;
601
+ },
602
+ feedback: () => F[T]?.errors[0] ?? F[T]?.warnings[0]
603
+ }), w.grid === !1 ? W : createVNode(NGi, {
604
+ key: T,
605
+ offset: N,
606
+ span: A,
607
+ style: j ? { gridRowEnd: `span ${j}` } : void 0
608
+ }, _isSlot$5(W) ? W : { default: () => [W] });
609
+ }), R === !1 || w.readonly === !0 && !E.action ? void 0 : createVNode(NGi, mergeProps({
610
+ key: "action",
611
+ span: 2 ** 53 - 1
612
+ }, typeof w.showAction == "object" ? w.showAction : {}), { default: ({ overflow: e }) => E.action ? E.action({
613
+ cols: P.value,
614
+ spans: O,
615
+ overflow: e
616
+ }) : createVNode(NFormItem, {
617
+ label: w.actionAlign === "start" ? " " : void 0,
618
+ showLabel: w.labelPlacement !== "top",
619
+ style: "padding-top: 16px"
620
+ }, { default: () => [createVNode(NFlex, {
621
+ justify: w.actionAlign,
622
+ align: "center"
623
+ }, { default: () => [
624
+ w.showSubmitBtn === !1 ? void 0 : createVNode(NButton, {
625
+ attrType: "submit",
626
+ type: Y ? "success" : "primary",
627
+ disabled: Y || w.disabled || w.submitDisabled || T,
628
+ loading: T
629
+ }, {
630
+ default: () => (Y ? X : B) || D("common.page.form.submitText"),
631
+ icon: () => Y ? createVNode(NIcon, null, { default: () => [createVNode(ICheck, null, null)] }) : void 0
632
+ }),
633
+ w.showResetBtn === !1 ? void 0 : createVNode(NButton, {
634
+ attrType: "reset",
635
+ disabled: w.disabled || T,
636
+ type: w.showCancelBtn ? "primary" : "default",
637
+ secondary: w.showCancelBtn
638
+ }, { default: () => [w.resetText || D("common.page.form.resetText")] }),
639
+ w.showCancelBtn === !1 ? void 0 : createVNode(NButton, {
640
+ attrType: "button",
641
+ disabled: w.disabled || T,
642
+ onClick: j
643
+ }, { default: () => [w.cancelText || D("common.page.form.cancelText")] })
644
+ ] })] }) })]);
645
+ } })] });
646
+ };
647
+ }
648
+ }), DataFilter = /* @__PURE__ */ defineComponent({
649
+ name: "DataFilter",
650
+ props: {
651
+ grid: {
652
+ type: Object,
653
+ default: () => ({})
654
+ },
655
+ ...pickProps(formProps, "disabled", "model"),
656
+ labelWidth: {
657
+ type: [String, Number],
658
+ default: "5em"
659
+ },
660
+ labelPlacement: {
661
+ type: String,
662
+ default: "left"
663
+ },
664
+ items: {
665
+ type: Array,
666
+ required: !0
667
+ },
668
+ loading: {
669
+ type: Boolean,
670
+ required: !1,
671
+ default: !1
672
+ },
673
+ filterOnReset: {
674
+ type: Boolean,
675
+ required: !1,
676
+ default: !0
677
+ },
678
+ filterText: {
679
+ type: String,
680
+ default: void 0
681
+ },
682
+ resetText: {
683
+ type: String,
684
+ default: void 0
685
+ },
686
+ customizable: {
687
+ type: Boolean,
688
+ required: !1,
689
+ default: !0
690
+ },
691
+ collapsible: {
692
+ type: Boolean,
693
+ required: !1,
694
+ default: !0
695
+ },
696
+ defaultCollapsed: {
697
+ type: Boolean,
698
+ required: !1,
699
+ default: !0
700
+ }
701
+ },
702
+ emits: [
703
+ "filter",
704
+ "reset",
705
+ "custom",
706
+ "collapse"
707
+ ],
708
+ setup(w, { expose: T, emit: E }) {
709
+ let { t: D } = useI18n(), O = (e) => {
710
+ E("filter", w.model, e);
711
+ }, k = (e) => {
712
+ E("reset", e), w.filterOnReset && E("filter", w.model, e);
713
+ }, A = ref(w.defaultCollapsed), j = (e) => {
714
+ A.value = e;
715
+ };
716
+ T({ collapse: j });
717
+ let N = reactive({
718
+ span: 6,
719
+ suffix: !0
720
+ });
721
+ return () => {
722
+ let { filterOnReset: e, filterText: T, resetText: P, customizable: F, defaultCollapsed: L, collapsible: R, grid: z,...B } = w;
723
+ return createVNode(DataForm, mergeProps({ grid: {
724
+ cols: "12 768:18 1280:24 1536:30",
725
+ yGap: 20,
726
+ xGap: 8,
727
+ ...z,
728
+ collapsed: A.value
729
+ } }, B, {
730
+ showFeedback: !1,
731
+ showAction: N,
732
+ onSubmit: O,
733
+ onReset: k
734
+ }), { action: ({ cols: e, spans: O }) => (N.suffix = e < O + N.span, createVNode(NFlex, {
735
+ justify: N.suffix ? "end" : "start",
736
+ align: "center"
737
+ }, { default: () => [
738
+ N.suffix ? void 0 : createVNode("span", null, [createTextVNode("\xA0\xA0\xA0\xA0")]),
739
+ createVNode(NButton, {
740
+ attrType: "submit",
741
+ type: "primary",
742
+ disabled: w.disabled,
743
+ loading: w.loading
744
+ }, { default: () => [T || D("common.page.filter.submitText")] }),
745
+ createVNode(NButton, {
746
+ attrType: "reset",
747
+ disabled: w.disabled || w.loading
748
+ }, { default: () => [P || D("common.page.form.resetText")] }),
749
+ F ? createVNode(DataCustom, {
750
+ keyField: "name",
751
+ showFixed: !1,
752
+ data: B.items,
753
+ onCustom: (e) => E("custom", e),
754
+ size: 18,
755
+ type: "primary"
756
+ }, null) : void 0,
757
+ R && N.suffix ? createVNode(NButton, {
758
+ text: !0,
759
+ type: "primary",
760
+ iconPlacement: "right",
761
+ renderIcon: A.value ? IDown : IUp,
762
+ onClick: () => j(!A.value)
763
+ }, { default: () => [A.value ? D("common.page.filter.expand") : D("common.page.filter.collapse")] }) : void 0
764
+ ] })) });
765
+ };
766
+ }
767
+ });
768
+ function _isSlot$4(e) {
769
+ return typeof e == "function" || Object.prototype.toString.call(e) === "[object Object]" && !isVNode(e);
770
+ }
771
+ function useLocaleEdit(w, T, E = 1) {
772
+ let { t: D } = useI18n(), O = ref(!1), k = [], { open: A, reinit: j } = useFormModal({
773
+ title: w,
774
+ showColon: !0,
775
+ submitText: D("common.confirm.defaultOk"),
776
+ items: ({ it: e }) => k.map((w) => e(w.value, w.label, "input", {
777
+ span: 24,
778
+ required: w.required,
779
+ inputProps: {
780
+ readonly: O,
781
+ clearable: !0,
782
+ type: "textarea",
783
+ showCount: !0,
784
+ autosize: {
785
+ minRows: unref(E),
786
+ maxRows: Math.max(unref(E), 5)
787
+ }
788
+ }
789
+ })),
790
+ onSubmit: T
791
+ });
792
+ return {
793
+ open: (e, w = !1) => (O.value = w, A(e)),
794
+ setSupports: (e) => {
795
+ k = e, j();
796
+ }
797
+ };
798
+ }
799
+ const DataLocaleInput = /* @__PURE__ */ defineComponent({
800
+ name: "DataLocaleInput",
801
+ props: {
802
+ label: { type: [
803
+ String,
804
+ Function,
805
+ Number,
806
+ Boolean,
807
+ Object
808
+ ] },
809
+ modelValue: Object,
810
+ supports: {
811
+ type: Array,
812
+ default: () => []
813
+ },
814
+ disabled: {
815
+ type: Boolean,
816
+ default: void 0
817
+ },
818
+ defaultLang: {
819
+ type: String,
820
+ default: "zh-CN"
821
+ },
822
+ showLang: {
823
+ type: String,
824
+ default: void 0
825
+ },
826
+ defaultRows: {
827
+ type: Number,
828
+ default: 1
829
+ }
830
+ },
831
+ emits: ["update:modelValue", "updateModelValue"],
832
+ setup(e, { emit: w }) {
833
+ let T = (T) => {
834
+ T = {
835
+ ...e.modelValue,
836
+ [e.showLang ?? e.defaultLang]: T
837
+ }, w("update:modelValue", T), w("updateModelValue", T);
838
+ }, { open: E, setSupports: D } = useLocaleEdit(computed(() => toValue(e.label)), (e) => {
839
+ w("update:modelValue", e), w("updateModelValue", e);
840
+ }, toRef(e, "defaultRows"));
841
+ watch(() => e.supports, D, { immediate: !0 });
842
+ let O = { suffix: () => createVNode(NButton, {
843
+ quaternary: !0,
844
+ onClick: () => E(e.modelValue, e.disabled),
845
+ style: "--n-padding: 0 8px"
846
+ }, { default: () => [createVNode(NIcon, {
847
+ size: "20",
848
+ depth: "3"
849
+ }, { default: () => [createVNode(ILanguage, null, null)] })] }) }, k = { "--n-padding-right": "0" };
850
+ return () => createVNode(NInput, {
851
+ value: e.modelValue?.[e.showLang ?? e.defaultLang] ?? e.modelValue?.[e.defaultLang],
852
+ onUpdateValue: T,
853
+ disabled: e.disabled,
854
+ clearable: !0,
855
+ style: k,
856
+ type: e.defaultRows > 1 ? "textarea" : "text",
857
+ rows: e.defaultRows
858
+ }, _isSlot$4(O) ? O : { default: () => [O] });
859
+ }
860
+ }), DataPagination = /* @__PURE__ */ defineComponent({
861
+ name: "DataPagination",
862
+ props: {
863
+ total: {
864
+ type: Number,
865
+ default: 0
866
+ },
867
+ currentPage: { type: Number },
868
+ pageSize: { type: Number },
869
+ page: { type: Object },
870
+ pageSizes: {
871
+ type: Array,
872
+ default: () => [
873
+ 10,
874
+ 20,
875
+ 30,
876
+ 50
877
+ ]
878
+ }
879
+ },
880
+ emits: { change: () => !0 },
881
+ setup(w, { emit: T }) {
882
+ let { t: E } = useI18n(), D = (e) => T("change", {
883
+ pageSize: w.pageSize ?? w.page?.pageSize ?? 0,
884
+ currentPage: e
885
+ }), O = (e) => T("change", {
886
+ pageSize: e,
887
+ currentPage: w.currentPage ?? w.page?.currentPage ?? 0
888
+ });
889
+ return () => createVNode(NPagination, {
890
+ page: w.currentPage ?? w.page?.currentPage,
891
+ itemCount: w.total,
892
+ pageSize: w.pageSize ?? w.page?.pageSize,
893
+ onUpdatePage: D,
894
+ onUpdatePageSize: O,
895
+ pageSizes: w.pageSizes,
896
+ showQuickJumper: !0,
897
+ showSizePicker: !0,
898
+ style: "justify-content: flex-end"
899
+ }, {
900
+ prefix: () => E("common.page.pagination.prefix", { total: w.total }),
901
+ suffix: () => E("common.page.pagination.suffix")
902
+ });
903
+ }
904
+ });
905
+ function _isSlot$3(e) {
906
+ return typeof e == "function" || Object.prototype.toString.call(e) === "[object Object]" && !isVNode(e);
907
+ }
908
+ const DataSelection = /* @__PURE__ */ defineComponent({
909
+ name: "DataSelection",
910
+ props: {
911
+ modelValue: {
912
+ type: String,
913
+ required: !0
914
+ },
915
+ count: {
916
+ type: Number,
917
+ default: 0
918
+ }
919
+ },
920
+ emits: {
921
+ "update:modelValue": () => !0,
922
+ clear: () => !0
923
+ },
924
+ setup(w, { emit: T }) {
925
+ let { t: E } = useI18n();
926
+ return () => {
927
+ let e;
928
+ return w.modelValue !== "selection" && w.count === 0 ? createVNode("div", null, null) : createVNode("div", null, [createVNode(NFlex, {
929
+ align: "center",
930
+ "wrap-item": !1
931
+ }, { default: () => [
932
+ createVNode("span", null, [E("common.page.selection.countText", { count: w.count })]),
933
+ createVNode(NButton, {
934
+ text: !0,
935
+ type: "primary",
936
+ onClick: () => {
937
+ T("update:modelValue", w.modelValue === "all" ? "selection" : "all");
938
+ }
939
+ }, { default: () => [w.modelValue === "all" ? E("common.page.selection.view") : E("common.page.selection.back")] }),
940
+ createVNode(NButton, {
941
+ text: !0,
942
+ onClick: () => {
943
+ T("clear"), T("update:modelValue", "all");
944
+ }
945
+ }, _isSlot$3(e = E("common.page.selection.clear")) ? e : { default: () => [e] })
946
+ ] })]);
947
+ };
948
+ }
949
+ });
950
+ function _isSlot$2(e) {
951
+ return typeof e == "function" || Object.prototype.toString.call(e) === "[object Object]" && !isVNode(e);
952
+ }
953
+ function _map(e, T) {
954
+ return (e ?? []).map((e) => {
955
+ let E = {
956
+ csvTitle: e.exportTitle,
957
+ ...e,
958
+ title: () => {
959
+ let T = toValue(e.title), E = T && withDirectives(createVNode("span", null, [T]), [[
960
+ vTooltip,
961
+ () => toValue(e.title),
962
+ void 0,
963
+ { auto: !0 }
964
+ ]]);
965
+ return e.tooltip ? createVNode(NFlex, {
966
+ size: 3,
967
+ wrap: !1,
968
+ inline: !0,
969
+ style: "max-width: 100%"
970
+ }, { default: () => [E, createVNode(NTooltip, null, {
971
+ default: toValue(e.tooltip),
972
+ trigger: () => createVNode(NButton, {
973
+ text: !0,
974
+ style: "font-size: 1.25em; opacity: 0.8"
975
+ }, { default: () => [createVNode(NIcon, null, { default: () => [createVNode(IHelp, null, null)] })] })
976
+ })] }) : E;
977
+ }
978
+ };
979
+ if (e.children?.length) E.children = _map(e.children, T);
980
+ else {
981
+ e.hidden !== !0 && (E.width ??= 100, T.value += Number(E.width));
982
+ let w = e.render ?? ((e) => e);
983
+ e.ellipsis !== !1 && (E.ellipsis = !1, E.render = (...T) => {
984
+ let E = w(...T);
985
+ return createVNode(NPerformantEllipsis, mergeProps({
986
+ expandTrigger: "click",
987
+ lineClamp: 1,
988
+ tooltip: { style: {
989
+ maxWidth: "61.8vw",
990
+ wordBreak: "break-all"
991
+ } }
992
+ }, typeof e.ellipsis == "boolean" ? {} : e.ellipsis), _isSlot$2(E) ? E : { default: () => [E] });
993
+ }, e.ellipsisTooltip === !0 && (E.ellipsisTooltip ??= w)), Object.assign(E, {
994
+ resizable: e.resizable !== !1,
995
+ sorter: e.sortable,
996
+ type: ["selection", "expand"].includes(e.type) ? e.type : void 0,
997
+ disabled: e.selectable ? (w) => e.selectable(w) === !1 : void 0
998
+ });
999
+ }
1000
+ return E.key === "$actions" && (E.cellProps ??= () => ({ style: { padding: "0 2px" } })), E;
1001
+ }).filter((e) => e?.hidden !== !0);
1002
+ }
1003
+ const DataTable = /* @__PURE__ */ defineComponent({
1004
+ name: "DataTable",
1005
+ props: {
1006
+ data: {
1007
+ type: Array,
1008
+ default: () => []
1009
+ },
1010
+ columns: {
1011
+ type: Array,
1012
+ default: () => []
1013
+ },
1014
+ keyField: { type: String },
1015
+ sorter: {
1016
+ type: Object,
1017
+ default: () => ({})
1018
+ },
1019
+ selectedKeys: { type: Array },
1020
+ highlight: {
1021
+ type: [
1022
+ Boolean,
1023
+ String,
1024
+ Number,
1025
+ Object
1026
+ ],
1027
+ default: !0
1028
+ },
1029
+ rowClassName: dataTableProps.rowClassName,
1030
+ rowProps: dataTableProps.rowProps
1031
+ },
1032
+ emits: [
1033
+ "sort",
1034
+ "select",
1035
+ "custom",
1036
+ "highlight"
1037
+ ],
1038
+ setup(e, { slots: w, emit: D, expose: O }) {
1039
+ let { keyField: k } = inject(PAGE_INJECTION), A = useMergedClsPrefix(), M = `${A.value}-datatable`;
1040
+ useStyle("-datatable", style, A);
1041
+ let N = useTemplateRef("table-ref"), F = ({ sortField: e, sortOrder: w } = {}, T) => {
1042
+ e == T?.sortField && w == T?.sortOrder || N.value?.sort(e, w ? w + "end" : !1);
1043
+ };
1044
+ watch(() => ({ ...e.sorter }), F, { deep: !0 });
1045
+ let I = computed(() => {
1046
+ let w = e.keyField || k || "key";
1047
+ return (e) => e[w];
1048
+ }), L = shallowRef({
1049
+ cache: [],
1050
+ scrollToView(...e) {
1051
+ this.cache.push(e);
1052
+ }
1053
+ });
1054
+ until(N).changed().then(() => {
1055
+ F(e.sorter);
1056
+ let w = L.value.cache;
1057
+ L.value = N.value, L.value.scrollToView = (w) => {
1058
+ let T = e.data.findIndex((e) => I.value(e) === w);
1059
+ if (T === -1) return;
1060
+ let E = N.value.$el.querySelector(`.${M}__row-marker:nth-child(${T + 1})`);
1061
+ N.value.scrollTo({
1062
+ top: E.offsetTop,
1063
+ behavior: "smooth"
1064
+ });
1065
+ };
1066
+ for (let e of w) L.value.scrollToView(...e);
1067
+ }), O(toReactive(L));
1068
+ let R = ref(0), V = shallowRef([]);
1069
+ watch(() => e.columns, () => {
1070
+ R.value = 0, V.value = _map(e.columns, R);
1071
+ }, {
1072
+ immediate: !0,
1073
+ deep: 1
1074
+ });
1075
+ let H = ref();
1076
+ watch(() => e.highlight, (e) => {
1077
+ H.value = typeof e == "boolean" ? null : e ?? null;
1078
+ }, { immediate: !0 });
1079
+ let U = computed(() => (w, T) => [
1080
+ e.rowClassName?.(w, T) || "",
1081
+ `${M}__row-marker`,
1082
+ H.value != null && I.value(w) === H.value ? `${M}__row-highlight` : ""
1083
+ ].join(" ")), W = computed(() => (w, T) => {
1084
+ let E = e.rowProps?.(w, T);
1085
+ return {
1086
+ ...E,
1087
+ onClick: (T) => {
1088
+ let O = I.value(w);
1089
+ e.highlight === !0 && (H.value = O), D("highlight", O), E?.onClick?.(T);
1090
+ }
1091
+ };
1092
+ }), q = (w) => {
1093
+ if (e.sorter) {
1094
+ let { sortField: T, sortOrder: E } = e.sorter;
1095
+ if (w?.columnKey == T && (w?.order ? w.order === E + "end" : !E)) return;
1096
+ }
1097
+ D("sort", {
1098
+ sortField: w?.order ? w?.columnKey : void 0,
1099
+ sortOrder: w?.order ? w.order.replace("end", "") : void 0
1100
+ });
1101
+ }, Y = (e) => {
1102
+ D("select", e);
1103
+ }, Z = (e, w, T) => {
1104
+ D("custom", {
1105
+ key: T.key,
1106
+ width: e
1107
+ });
1108
+ };
1109
+ return () => createVNode(NDataTable, {
1110
+ class: M,
1111
+ data: e.data,
1112
+ columns: V.value,
1113
+ rowKey: I.value,
1114
+ tableLayout: "fixed",
1115
+ ref: "table-ref",
1116
+ scrollX: R.value,
1117
+ rowClassName: U.value,
1118
+ rowProps: W.value,
1119
+ checkedRowKeys: e.selectedKeys,
1120
+ onUpdateSorter: q,
1121
+ onUpdateCheckedRowKeys: Y,
1122
+ onUnstableColumnResize: Z
1123
+ }, _isSlot$2(w) ? w : { default: () => [w] });
1124
+ }
1125
+ });
1126
+ var style = /* @__PURE__ */ cB("datatable", [cE("row-highlight", [c("& > td", { backgroundColor: "var(--n-tr-highlight-color, var(--n-merged-border-color)) !important" })])]);
1127
+ function useDataTableDrag(e, { data: w, onSort: T,...E }) {
1128
+ watch([ref(w), e], async ([e, w]) => {
1129
+ if (e.length === 0) return;
1130
+ await nextTick();
1131
+ let D = unrefElement(w)?.querySelector(".n-data-table-base-table-body .n-data-table-tbody");
1132
+ if (!D) return;
1133
+ let O = Sortable$1.create(D, {
1134
+ animation: 150,
1135
+ ...E,
1136
+ onSort(e) {
1137
+ T({
1138
+ from: e.oldIndex,
1139
+ to: e.newIndex
1140
+ });
1141
+ }
1142
+ });
1143
+ return () => {
1144
+ O.destroy();
1145
+ };
1146
+ }, { immediate: !0 });
1147
+ }
1148
+ function _isSlot$1(e) {
1149
+ return typeof e == "function" || Object.prototype.toString.call(e) === "[object Object]" && !isVNode(e);
1150
+ }
1151
+ const NRadios = /* @__PURE__ */ defineComponent({
1152
+ name: "Radios",
1153
+ props: {
1154
+ options: {
1155
+ type: Array,
1156
+ default: () => []
1157
+ },
1158
+ vertical: {
1159
+ type: Boolean,
1160
+ default: !1
1161
+ },
1162
+ type: {
1163
+ type: String,
1164
+ default: "radio"
1165
+ },
1166
+ default: {
1167
+ type: [
1168
+ Boolean,
1169
+ String,
1170
+ Object
1171
+ ],
1172
+ default: !1
1173
+ },
1174
+ padding: {
1175
+ type: String,
1176
+ default: void 0
1177
+ },
1178
+ labelField: {
1179
+ type: String,
1180
+ default: "label"
1181
+ },
1182
+ valueField: {
1183
+ type: String,
1184
+ default: "value"
1185
+ },
1186
+ disabledField: {
1187
+ type: String,
1188
+ default: "disabled"
1189
+ },
1190
+ modelValue: {
1191
+ type: [
1192
+ String,
1193
+ Number,
1194
+ Boolean
1195
+ ],
1196
+ default: void 0
1197
+ }
1198
+ },
1199
+ emits: {
1200
+ "update:modelValue": () => !0,
1201
+ updateModelValue: () => !0
1202
+ },
1203
+ setup(w, { emit: T }) {
1204
+ let { t: E } = useI18n(), D = computed(() => w.default === !1 ? "" : w.default === !0 ? E("common.all") : typeof w.default == "string" ? w.default : w.default?.[w.labelField] ?? E("common.all")), O = computed(() => w.type === "button-primary" ? {
1205
+ "--n-button-color-active": "var(--color-primary)",
1206
+ "--n-button-text-color-active": "var(--color-base)"
1207
+ } : {}), k = (e) => {
1208
+ T("update:modelValue", e), T("updateModelValue", e);
1209
+ };
1210
+ return () => {
1211
+ let e = w.type === "button" ? NRadioButton : NRadio, T = createVNode(Fragment, null, [w.default ? createVNode(e, { value: typeof w.default == "object" ? w.default?.[w.valueField] : null }, { default: () => [D.value] }) : void 0, w.options?.map((T) => {
1212
+ let E = typeof T[w.labelField] == "string" ? T[w.labelField] : T[w.labelField]?.();
1213
+ return createVNode(e, {
1214
+ value: T[w.valueField],
1215
+ disabled: T[w.disabledField],
1216
+ style: w.padding ? {
1217
+ paddingLeft: w.padding,
1218
+ paddingRight: w.padding
1219
+ } : {}
1220
+ }, { default: () => [T.tip ? createVNode(NTooltip, null, {
1221
+ default: () => T.tip,
1222
+ trigger: () => E
1223
+ }) : E] });
1224
+ })]);
1225
+ return createVNode(NRadioGroup, {
1226
+ style: w.vertical ? {
1227
+ ...O.value,
1228
+ padding: "6px 0 0"
1229
+ } : O.value,
1230
+ value: w.modelValue,
1231
+ onUpdateValue: k
1232
+ }, { default: () => [w.type === "radio" ? createVNode(NFlex, {
1233
+ size: w.vertical ? void 0 : "small",
1234
+ vertical: w.vertical
1235
+ }, _isSlot$1(T) ? T : { default: () => [T] }) : T] });
1236
+ };
1237
+ }
1238
+ });
1239
+ function _isSlot(e) {
1240
+ return typeof e == "function" || Object.prototype.toString.call(e) === "[object Object]" && !isVNode(e);
1241
+ }
1242
+ const DtUserDept = /* @__PURE__ */ defineComponent({
1243
+ name: "UserDept",
1244
+ inheritAttrs: !1,
1245
+ props: {
1246
+ users: {
1247
+ type: Array,
1248
+ default: () => []
1249
+ },
1250
+ groups: {
1251
+ type: Array,
1252
+ default: () => []
1253
+ },
1254
+ depts: {
1255
+ type: Array,
1256
+ default: () => []
1257
+ },
1258
+ modelValue: {
1259
+ type: [Array, String],
1260
+ default: void 0
1261
+ },
1262
+ placeholder: {
1263
+ type: String,
1264
+ default: void 0
1265
+ },
1266
+ size: {
1267
+ type: String,
1268
+ default: void 0
1269
+ },
1270
+ type: {
1271
+ type: String,
1272
+ default: "user"
1273
+ },
1274
+ selectType: {
1275
+ type: String,
1276
+ default: "dropdown"
1277
+ },
1278
+ max: {
1279
+ type: Number,
1280
+ default: void 0
1281
+ },
1282
+ multiple: {
1283
+ type: Boolean,
1284
+ default: !1
1285
+ },
1286
+ defaultExpandAll: {
1287
+ type: Boolean,
1288
+ default: !1
1289
+ },
1290
+ filterable: {
1291
+ type: Boolean,
1292
+ default: !1
1293
+ },
1294
+ disabled: {
1295
+ type: Boolean,
1296
+ default: void 0
1297
+ },
1298
+ getUsersByGroup: {
1299
+ type: Function,
1300
+ default: () => []
1301
+ },
1302
+ getUsersByDept: {
1303
+ type: Function,
1304
+ default: () => []
1305
+ }
1306
+ },
1307
+ emits: ["update:modelValue", "updateModelValue"],
1308
+ setup(w, { emit: T, attrs: E }) {
1309
+ let { t: D } = useI18n(), O = computed(() => {
1310
+ if (w.multiple) return w.modelValue || [];
1311
+ let e = w.modelValue?.trim();
1312
+ return e ? [e] : [];
1313
+ }), k = /* @__PURE__ */ new Map(), M = computed(() => (k.clear(), w.users.map((e) => (e = reactive(e), e.label = e.nickname, e.value = e.username, e.type = "user", k.set(e.username, e), e)))), N = shallowRef([]);
1314
+ watch(() => w.depts, (e) => {
1315
+ walkTree(e, (e) => {
1316
+ e.label = e.name, e.value = e.code, e.type = "dept", e.children?.length || delete e.children;
1317
+ }), N.value = flattenTree(e);
1318
+ }, { immediate: !0 });
1319
+ let P = computed(() => [
1320
+ ...w.depts,
1321
+ ...w.groups.map((e) => ({
1322
+ label: e.name,
1323
+ value: e.code,
1324
+ type: "group"
1325
+ })),
1326
+ ...M.value
1327
+ ]), F = ref([]), V = ref(), H = async (e) => {
1328
+ let T = await (e.type === "group" ? w.getUsersByGroup(e.value) : w.getUsersByDept(e.value));
1329
+ for (let e of M.value) e.disabled = !0;
1330
+ V.value = [...e.type === "dept" ? e.children ?? [] : [], ...T.map((e) => {
1331
+ let w = k.get(e.username);
1332
+ return w && (w.disabled = !1), {
1333
+ ...e,
1334
+ label: e.nickname,
1335
+ value: e.username,
1336
+ type: "user"
1337
+ };
1338
+ })];
1339
+ }, U = /* @__PURE__ */ new WeakMap(), W = (e, T, E) => {
1340
+ let O;
1341
+ if (w.type === "dept") return createVNode(NTree, {
1342
+ data: w.depts,
1343
+ keyField: "value",
1344
+ labelField: "name",
1345
+ defaultExpandAll: w.defaultExpandAll,
1346
+ checkable: w.multiple,
1347
+ selectable: !w.multiple,
1348
+ multiple: !1,
1349
+ blockLine: !0,
1350
+ checkOnClick: !0,
1351
+ pattern: E,
1352
+ filter: (e, w) => w.label.includes(e) || w.value.includes(e),
1353
+ checkedKeys: w.multiple ? e : void 0,
1354
+ selectedKeys: w.multiple ? void 0 : e,
1355
+ onUpdateCheckedKeys: (e) => {
1356
+ w.max && e?.length > w.max || T(e);
1357
+ },
1358
+ onUpdateSelectedKeys: (e) => {
1359
+ T(e);
1360
+ }
1361
+ }, null);
1362
+ let k = e ? U.get(e) : /* @__PURE__ */ new Set();
1363
+ if (e && !k && (k = new Set(e), U.set(e, k)), V.value === !1) return createVNode(NSpin, { show: !0 }, null);
1364
+ let j = V.value || P.value;
1365
+ E = E?.trim(), E && (j = j?.filter((e) => e.label.includes(E) || e.value.includes(E)));
1366
+ let N = F.value;
1367
+ return createVNode(Fragment, null, [createVNode("div", { style: "margin: 12px 16px; display: flex; justify-content: space-between; align-items: center" }, [N.length > 0 ? createVNode(Fragment, null, [createVNode("span", { style: "display: flex; align-items: center" }, [
1368
+ N.length >= 2 ? N.at(-2).label : D("common.all"),
1369
+ createVNode("span", { style: "padding: 0 4px" }, [createVNode(IRight, null, null)]),
1370
+ N.at(-1).label
1371
+ ]), createVNode(NButton, {
1372
+ text: !0,
1373
+ type: "warning",
1374
+ onClick: () => {
1375
+ if (N.pop(), V.value = N.length > 0 ? !1 : void 0, N.length > 0) H(N.at(-1));
1376
+ else for (let e of M.value) e.disabled = !1;
1377
+ }
1378
+ }, { default: () => [createVNode(NIcon, null, { default: () => [createVNode(ILeft, null, null)] }), D("common.back")] })]) : createVNode("span", null, [D("common.all")])]), j?.length ? createVNode(NList, {
1379
+ showDivider: !1,
1380
+ style: "padding: 0 16px"
1381
+ }, _isSlot(O = j.map((E) => {
1382
+ let D, O;
1383
+ return createVNode(NListItem, {
1384
+ key: E.type + "_" + E.value,
1385
+ style: "padding: 6px 0"
1386
+ }, { default: () => [E.type === "user" ? w.multiple ? createVNode(NCheckbox, {
1387
+ checked: k.has(E.value) || !1,
1388
+ onUpdateChecked: (D) => {
1389
+ if (D && w.max && e.length >= w.max) return;
1390
+ let O = [...e || []];
1391
+ if (D) O.push(E.value);
1392
+ else {
1393
+ let e = O.indexOf(E.value);
1394
+ O.splice(e, 1);
1395
+ }
1396
+ T(O);
1397
+ },
1398
+ style: "margin-left: 3px"
1399
+ }, _isSlot(D = renderUsers([E], {
1400
+ max: 1,
1401
+ size: 24,
1402
+ placement: "right"
1403
+ })) ? D : { default: () => [D] }) : createVNode(NRadio, {
1404
+ checked: k.has(E.value) || !1,
1405
+ onUpdateChecked: (e) => {
1406
+ T(e ? [E.value] : []);
1407
+ },
1408
+ style: "margin-left: 3px"
1409
+ }, _isSlot(O = renderUsers([E], {
1410
+ max: 1,
1411
+ size: 24,
1412
+ placement: "right"
1413
+ })) ? O : { default: () => [O] }) : createVNode("div", {
1414
+ onClick: () => {
1415
+ V.value = !1, F.value.push(E), H(E);
1416
+ },
1417
+ style: "cursor: pointer; display: flex; align-items: center; gap: 8px"
1418
+ }, [
1419
+ E.type === "dept" ? createVNode(NAvatar, {
1420
+ size: 24,
1421
+ style: "background-color: red"
1422
+ }, { default: () => [createVNode(NIcon, null, { default: () => [createVNode(IDept, null, null)] })] }) : createVNode(NAvatar, {
1423
+ size: 24,
1424
+ style: "background-color: green"
1425
+ }, { default: () => [createVNode(NIcon, null, { default: () => [createVNode(IGroup, null, null)] })] }),
1426
+ createVNode("span", { style: "flex: 1 1 auto" }, [E.label]),
1427
+ createVNode(NIcon, null, { default: () => [createVNode(IRight, null, null)] })
1428
+ ])] });
1429
+ })) ? O : { default: () => [O] }) : createVNode(NEmpty, null, null)]);
1430
+ }, G = () => createVNode(NEmpty, { description: w.placeholder }, null), q = (e, T, E, D, O) => createVNode(NTransfer, mergeProps(e, {
1431
+ key: w.type,
1432
+ options: T,
1433
+ renderSourceList: ({ onCheck: e, pattern: w }) => W(E, e, w),
1434
+ renderTargetList: w.placeholder?.trim() && !w.modelValue?.length ? G : void 0,
1435
+ sourceFilterable: w.filterable,
1436
+ size: w.size,
1437
+ disabled: w.disabled || void 0,
1438
+ value: E,
1439
+ filter: (e, w) => w.label.includes(e) || w.value.includes(e),
1440
+ "onUpdate:value": (e) => {
1441
+ D?.(e);
1442
+ },
1443
+ onUpdateValue: (e) => {
1444
+ O?.(e);
1445
+ }
1446
+ }), null), J = ({ option: e, handleClose: T }) => createVNode(NTag, {
1447
+ type: w.type === "user" ? "primary" : "info",
1448
+ closable: !0,
1449
+ onMousedown: (e) => e.preventDefault(),
1450
+ onClose: (e) => {
1451
+ e.stopPropagation(), T();
1452
+ }
1453
+ }, { default: () => [e.label] }), Y = (e, E = "updateModelValue") => {
1454
+ w.multiple ? T(E, e) : T(E, e?.[0]);
1455
+ }, X = ref(), Z = !1, Q = () => {
1456
+ if (Z) return;
1457
+ Z = !0;
1458
+ let e = shallowRef([...O.value || []]);
1459
+ $dialog({
1460
+ showIcon: !1,
1461
+ title: w.placeholder,
1462
+ style: { width: "700px" },
1463
+ content: () => createVNode("div", { style: { height: "550px" } }, [q({ style: { height: "100%" } }, w.type === "user" ? M.value : N.value, e.value, (w) => e.value = w)]),
1464
+ onOk() {
1465
+ Y(e.value, "update:modelValue"), Y(e.value, "updateModelValue");
1466
+ },
1467
+ onAfterLeave() {
1468
+ nextTick(() => {
1469
+ X.value?.blur(), Z = !1;
1470
+ });
1471
+ }
1472
+ });
1473
+ }, $ = { arrow: () => createVNode(NIcon, null, { default: () => [w.type === "user" ? createVNode(IGroup, null, null) : createVNode(IDept, null, null)] }) };
1474
+ return () => {
1475
+ let e = w.type === "user" ? M.value : N.value;
1476
+ if (w.selectType === "dropdown" && w.type === "dept") return createVNode(NTreeSelect, {
1477
+ options: e,
1478
+ keyField: "value",
1479
+ defaultExpandAll: w.defaultExpandAll,
1480
+ checkable: w.multiple,
1481
+ multiple: w.multiple,
1482
+ filter: (e, w) => w.label.includes(e) || w.value.includes(e),
1483
+ value: w.modelValue,
1484
+ onUpdateValue: (e) => {
1485
+ w.multiple && w.max && e?.length > w.max || T("updateModelValue", e);
1486
+ },
1487
+ "onUpdate:value": (e) => {
1488
+ w.multiple && w.max && e?.length > w.max || T("update:modelValue", e);
1489
+ }
1490
+ }, _isSlot($) ? $ : { default: () => [$] });
1491
+ if (w.selectType === "transfer") return q(E, e, O.value, (e) => Y(e, "update:modelValue"), (e) => Y(e, "updateModelValue"));
1492
+ let D = w.selectType === "dropdown";
1493
+ return createVNode(NSelect, mergeProps(E, {
1494
+ key: w.type,
1495
+ ref: X,
1496
+ show: D ? void 0 : !1,
1497
+ filterable: D ? w.filterable : !1,
1498
+ options: e,
1499
+ multiple: w.multiple,
1500
+ size: w.size,
1501
+ placeholder: w.placeholder,
1502
+ disabled: w.disabled || void 0,
1503
+ value: w.modelValue,
1504
+ renderTag: w.multiple ? J : void 0,
1505
+ onFocus: D ? void 0 : Q,
1506
+ onUpdateValue: (e) => {
1507
+ T("updateModelValue", e);
1508
+ },
1509
+ "onUpdate:value": (e) => {
1510
+ T("update:modelValue", e);
1511
+ }
1512
+ }), _isSlot($) ? $ : { default: () => [$] });
1513
+ };
1514
+ }
1515
+ });
1516
+ function renderUser(e, w, { placement: T, size: E }) {
1517
+ let D = e.nickname.split(" ").at(-1), O = D;
1518
+ return /^[\u4E00-\u9FA5]+$/.test(D) ? O = D.length >= 3 ? D.slice(-2) : D : D.length > 4 && (O = createVNode(NIcon, null, { default: () => [createVNode(IAccount, null, null)] })), createVNode(NPopover, {
1519
+ key: e.username,
1520
+ raw: !0,
1521
+ placement: T
1522
+ }, {
1523
+ default: () => createVNode(NCard, {
1524
+ style: "width: 200px",
1525
+ size: "small"
1526
+ }, { default: () => [createVNode(NH4, null, { default: () => [e.nickname] }), createVNode("span", null, [e.username])] }),
1527
+ trigger: () => {
1528
+ let T = createVNode(NAvatar, {
1529
+ color: "var(--color-primary)",
1530
+ round: !0,
1531
+ size: E,
1532
+ style: w ? {
1533
+ position: "absolute",
1534
+ bottom: -(E - 20) / 2 + "px"
1535
+ } : ""
1536
+ }, _isSlot(O) ? O : { default: () => [O] });
1537
+ return w ? createVNode("div", { style: w ? {
1538
+ display: "inline-block",
1539
+ minWidth: E + "px",
1540
+ height: E + "px"
1541
+ } : "" }, [T, w ? createVNode("span", { style: { marginLeft: E + 6 + "px" } }, [e.nickname]) : void 0]) : T;
1542
+ }
1543
+ });
1544
+ }
1545
+ function renderUsers(e, w = {}) {
1546
+ w.size ||= 24, w.max ||= 4;
1547
+ let { max: T, size: E } = w;
1548
+ return e.length <= 1 ? createVNode("span", { style: "position: relative" }, [e.map((e) => renderUser(e, !0, w))]) : createVNode("span", { style: {
1549
+ display: "inline-block",
1550
+ height: E + "px"
1551
+ } }, [createVNode(NAvatarGroup, {
1552
+ options: e,
1553
+ size: E,
1554
+ max: T || 4,
1555
+ style: "top: -2px"
1556
+ }, {
1557
+ avatar: ({ option: e }) => renderUser(e, !1, w),
1558
+ rest: ({ options: e, rest: w }) => createVNode(NDropdown, {
1559
+ options: e,
1560
+ keyField: "username",
1561
+ labelField: "nickname",
1562
+ renderOption: ({ option: w }) => renderUser(w, !1, e)
1563
+ }, { default: () => [createVNode(NAvatar, null, { default: () => [createTextVNode("+"), w] })] })
1564
+ })]);
1565
+ }
1566
+ const DtDeptRender = /* @__PURE__ */ defineComponent({
1567
+ name: "DeptRender",
1568
+ props: {
1569
+ value: [String, Array],
1570
+ multiple: Boolean,
1571
+ getDeptsByCode: Function
1572
+ },
1573
+ setup(e) {
1574
+ let w = ref([]), T = {};
1575
+ return watch([() => e.modelValue, () => e.multiple], ([E, D]) => {
1576
+ w.value = [];
1577
+ let O = E ? D ? Array.isArray(E) ? E : E.trim() ? E.trim().split(",") : [] : [E] : [], k = [];
1578
+ for (let [e, E] of O.entries()) T[E] || (T[E] = reactive({
1579
+ code: E,
1580
+ name: E
1581
+ }), k.push(E)), w.value[e] = T[E];
1582
+ k.length > 0 && e.getDeptsByCode(k).then((e) => {
1583
+ for (let w of e) Object.assign(T[w.code], w);
1584
+ });
1585
+ }, { immediate: !0 }), () => w.value.map((e) => createVNode(NTag, { key: e.code }, { default: () => [e.name] }));
1586
+ }
1587
+ }), DtUserRender = /* @__PURE__ */ defineComponent({
1588
+ name: "UserRender",
1589
+ props: {
1590
+ value: [String, Array],
1591
+ multiple: Boolean,
1592
+ max: Number,
1593
+ size: Number,
1594
+ placement: String,
1595
+ getUsersByUsername: Function
1596
+ },
1597
+ setup(e) {
1598
+ let w = ref([]), T = {};
1599
+ return watch([() => e.modelValue, () => e.multiple], ([E, D]) => {
1600
+ w.value = [];
1601
+ let O = E ? D ? Array.isArray(E) ? E : E.trim() ? E.trim().split(",") : [] : [E] : [], k = [];
1602
+ for (let [e, E] of O.entries()) T[E] || (T[E] = reactive({
1603
+ code: E,
1604
+ name: E
1605
+ }), k.push(E)), w.value[e] = T[E];
1606
+ k.length > 0 && e.getUsersByUsername(k).then((e) => {
1607
+ for (let w of e) Object.assign(T[w.code], w);
1608
+ });
1609
+ }, { immediate: !0 }), () => renderUsers(w.value, e);
1610
+ }
1611
+ });
1612
+ export { NRadios as a, DataSelection as c, useLocaleEdit as d, DataFilter as f, NCheckboxes as g, DataActions as h, renderUsers as i, DataPagination as l, DataCustom as m, DtUserDept as n, DataTable as o, DataForm as p, DtUserRender as r, useDataTableDrag as s, DtDeptRender as t, DataLocaleInput as u };