@ithinkdt/ui 4.0.0-19 → 4.0.0-200

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 (60) hide show
  1. package/auto-imports.js +1 -1
  2. package/dist/components-BoVUU6GJ.js +1736 -0
  3. package/dist/components.js +5 -0
  4. package/dist/directives-DUuJW647.js +183 -0
  5. package/dist/directives.js +3 -0
  6. package/dist/index.js +1224 -0
  7. package/dist/page.js +519 -0
  8. package/dist/use-i18n-Dx7V4KrY.js +6 -0
  9. package/dist/use-style-DcT-1dj4.js +29 -0
  10. package/dist/use-style.js +2 -0
  11. package/{src → esm}/components.d.ts +63 -17
  12. package/esm/components.js +1 -0
  13. package/{src → esm}/design.d.ts +9 -0
  14. package/esm/directives.js +1 -0
  15. package/esm/index.js +1 -0
  16. package/{src → esm}/page.d.ts +43 -26
  17. package/esm/page.js +1 -0
  18. package/esm/use-style.js +1 -0
  19. package/locale.d.ts +4 -0
  20. package/package.json +31 -28
  21. package/unocss-preset.d.ts +5 -0
  22. package/unocss-preset.js +163 -0
  23. package/src/components/Checkboxes.jsx +0 -130
  24. package/src/components/DataActions.jsx +0 -105
  25. package/src/components/DataCustom.jsx +0 -172
  26. package/src/components/DataFilter.jsx +0 -113
  27. package/src/components/DataForm.jsx +0 -264
  28. package/src/components/DataLocaleInput.jsx +0 -121
  29. package/src/components/DataPagination.jsx +0 -62
  30. package/src/components/DataSelection.jsx +0 -57
  31. package/src/components/DataTable.jsx +0 -255
  32. package/src/components/Radios.jsx +0 -134
  33. package/src/components/UserDept.jsx +0 -643
  34. package/src/components/assets.jsx +0 -274
  35. package/src/components/index.js +0 -11
  36. package/src/design/Account.jsx +0 -152
  37. package/src/design/Appearance.jsx +0 -89
  38. package/src/design/Breadcrumb.jsx +0 -67
  39. package/src/design/Fullscreen.jsx +0 -65
  40. package/src/design/Language.jsx +0 -45
  41. package/src/design/Layout.jsx +0 -241
  42. package/src/design/Logo.jsx +0 -92
  43. package/src/design/Menu.jsx +0 -133
  44. package/src/design/MultiTabs.jsx +0 -501
  45. package/src/design/Notification.jsx +0 -311
  46. package/src/design/common.jsx +0 -21
  47. package/src/design/index.js +0 -10
  48. package/src/directives/index.js +0 -2
  49. package/src/directives/spin.js +0 -181
  50. package/src/directives/tooltip.jsx +0 -121
  51. package/src/index.js +0 -18
  52. package/src/page.jsx +0 -628
  53. package/src/use-i18n.js +0 -8
  54. package/src/use-style.js +0 -58
  55. package/src/utils.js +0 -20
  56. package/unocss.d.ts +0 -5
  57. package/unocss.js +0 -95
  58. /package/{src → esm}/directives.d.ts +0 -0
  59. /package/{src → esm}/index.d.ts +0 -0
  60. /package/{src → esm}/use-style.d.ts +0 -0
@@ -0,0 +1,1736 @@
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, useDialog } 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 { useFormItem } from "ithinkdt-ui/es/_mixins";
11
+ import { PAGE_INJECTION, useFormModal } from "@ithinkdt/page";
12
+ import { Sortable as Sortable$1 } from "sortablejs";
13
+ import useLocale from "ithinkdt-ui/es/_mixins/use-locale.mjs";
14
+ import { flattenTree, walkTree } from "@ithinkdt/common";
15
+ const NCheckboxes = /* @__PURE__ */ defineComponent({
16
+ name: "Checkboxes",
17
+ inheritAttrs: !1,
18
+ props: {
19
+ options: {
20
+ type: Array,
21
+ default: () => []
22
+ },
23
+ vertical: {
24
+ type: Boolean,
25
+ default: !1
26
+ },
27
+ default: {
28
+ type: [
29
+ Boolean,
30
+ String,
31
+ Object
32
+ ],
33
+ default: !1
34
+ },
35
+ gap: {
36
+ type: [
37
+ Number,
38
+ String,
39
+ Array
40
+ ],
41
+ default: void 0
42
+ },
43
+ modelValue: {
44
+ type: Array,
45
+ default: void 0
46
+ },
47
+ labelPadding: {
48
+ type: String,
49
+ default: void 0
50
+ },
51
+ labelField: {
52
+ type: String,
53
+ default: "label"
54
+ },
55
+ valueField: {
56
+ type: String,
57
+ default: "value"
58
+ },
59
+ disabledField: {
60
+ type: String,
61
+ default: "disabled"
62
+ }
63
+ },
64
+ emits: {
65
+ "update:modelValue": () => !0,
66
+ updateModelValue: () => !0
67
+ },
68
+ setup(v, { emit: y, attrs: b }) {
69
+ let { t: x } = useI18n(), S = computed(() => v.default ? v.default === !0 ? x("common.all") : typeof v.default == "string" ? v.default : v.default?.[v.labelField] ?? x("common.all") : ""), C = ref([]);
70
+ watch(() => v.modelValue, (e) => C.value = e, { immediate: !0 });
71
+ let w = (e) => {
72
+ y("update:modelValue", e), y("updateModelValue", e);
73
+ }, E = () => {
74
+ w(C.value?.length === v.options.length ? [] : v.options.map((e) => e[v.valueField]));
75
+ }, D = computed(() => v.options.length > C.value?.length && C.value?.length > 0), O = computed(() => ({ "--n-label-padding": v.labelPadding }));
76
+ return () => {
77
+ let e = createVNode(NCheckboxGroup, mergeProps(b, {
78
+ value: C.value,
79
+ onUpdateValue: w
80
+ }), { default: () => [createVNode(NFlex, {
81
+ size: v.gap ?? (v.vertical ? void 0 : "small"),
82
+ vertical: v.vertical,
83
+ style: !v.default && v.vertical ? { padding: "6px 0 0" } : {}
84
+ }, { default: () => [v.options?.map((e) => createVNode(NCheckbox, {
85
+ value: e[v.valueField],
86
+ disabled: e[v.disabledField],
87
+ style: O.value
88
+ }, { default: () => [e[v.labelField]] }))] })] });
89
+ return v.default ? createVNode(NFlex, {
90
+ size: v.gap ?? (v.vertical ? void 0 : "small"),
91
+ vertical: v.vertical,
92
+ style: v.vertical ? { padding: "6px 0 0" } : {}
93
+ }, { default: () => [createVNode("span", null, [createVNode(NCheckbox, {
94
+ indeterminate: D.value,
95
+ checked: C.value?.length > 0,
96
+ onUpdateChecked: E,
97
+ style: O.value
98
+ }, { default: () => [S.value] })]), e] }) : e;
99
+ };
100
+ }
101
+ }), IHelp = (e) => createVNode("svg", mergeProps({
102
+ xmlns: "http://www.w3.org/2000/svg",
103
+ "xmlns:xlink": "http://www.w3.org/1999/xlink",
104
+ role: "img",
105
+ width: "1em",
106
+ height: "1em",
107
+ viewBox: "0 0 24 24"
108
+ }, e), [createVNode("path", {
109
+ fill: "currentColor",
110
+ 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"
111
+ }, null)]), ICustom = (e) => createVNode("svg", mergeProps({
112
+ xmlns: "http://www.w3.org/2000/svg",
113
+ "xmlns:xlink": "http://www.w3.org/1999/xlink",
114
+ role: "img",
115
+ width: "1em",
116
+ height: "1em",
117
+ viewBox: "0 0 1024 1024"
118
+ }, e), [createVNode("path", {
119
+ fill: "currentColor",
120
+ 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"
121
+ }, null)]), IDrag = (e) => createVNode("svg", mergeProps({
122
+ xmlns: "http://www.w3.org/2000/svg",
123
+ "xmlns:xlink": "http://www.w3.org/1999/xlink",
124
+ role: "img",
125
+ width: "1em",
126
+ height: "1em",
127
+ viewBox: "0 0 1024 1024"
128
+ }, e), [createVNode("path", {
129
+ fill: "currentColor",
130
+ 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"
131
+ }, null)]), ILeft2 = (e) => createVNode("svg", mergeProps({
132
+ xmlns: "http://www.w3.org/2000/svg",
133
+ "xmlns:xlink": "http://www.w3.org/1999/xlink",
134
+ role: "img",
135
+ width: "1em",
136
+ height: "1em",
137
+ viewBox: "0 0 1024 1024"
138
+ }, e), [createVNode("path", {
139
+ fill: "currentColor",
140
+ 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"
141
+ }, null)]), IRight2 = (e) => createVNode("svg", mergeProps({
142
+ xmlns: "http://www.w3.org/2000/svg",
143
+ "xmlns:xlink": "http://www.w3.org/1999/xlink",
144
+ role: "img",
145
+ width: "1em",
146
+ height: "1em",
147
+ viewBox: "0 0 1024 1024"
148
+ }, e), [createVNode("path", {
149
+ fill: "currentColor",
150
+ 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"
151
+ }, null)]), ILeft = (e) => createVNode("svg", mergeProps({
152
+ xmlns: "http://www.w3.org/2000/svg",
153
+ "xmlns:xlink": "http://www.w3.org/1999/xlink",
154
+ role: "img",
155
+ width: "1em",
156
+ height: "1em",
157
+ viewBox: "0 0 24 24"
158
+ }, e), [createVNode("path", {
159
+ fill: "currentColor",
160
+ d: "M15.41 16.58L10.83 12l4.58-4.59L14 6l-6 6l6 6z"
161
+ }, null)]), IRight = (e) => createVNode("svg", mergeProps({
162
+ xmlns: "http://www.w3.org/2000/svg",
163
+ "xmlns:xlink": "http://www.w3.org/1999/xlink",
164
+ role: "img",
165
+ width: "1em",
166
+ height: "1em",
167
+ viewBox: "0 0 24 24"
168
+ }, e), [createVNode("path", {
169
+ fill: "currentColor",
170
+ d: "M8.59 16.58L13.17 12L8.59 7.41L10 6l6 6l-6 6z"
171
+ }, null)]), IDown = (e) => createVNode("svg", mergeProps({
172
+ xmlns: "http://www.w3.org/2000/svg",
173
+ "xmlns:xlink": "http://www.w3.org/1999/xlink",
174
+ role: "img",
175
+ width: "1em",
176
+ height: "1em",
177
+ viewBox: "0 0 32 32"
178
+ }, e), [createVNode("path", {
179
+ fill: "currentColor",
180
+ d: "M16 22L6 12l1.4-1.4l8.6 8.6l8.6-8.6L26 12z"
181
+ }, null)]), IUp = (e) => createVNode("svg", mergeProps({
182
+ xmlns: "http://www.w3.org/2000/svg",
183
+ "xmlns:xlink": "http://www.w3.org/1999/xlink",
184
+ role: "img",
185
+ width: "1em",
186
+ height: "1em",
187
+ viewBox: "0 0 32 32"
188
+ }, e), [createVNode("path", {
189
+ fill: "currentColor",
190
+ d: "m16 10l10 10l-1.4 1.4l-8.6-8.6l-8.6 8.6L6 20z"
191
+ }, null)]), ICheck = (e) => createVNode("svg", mergeProps({
192
+ xmlns: "http://www.w3.org/2000/svg",
193
+ "xmlns:xlink": "http://www.w3.org/1999/xlink",
194
+ role: "img",
195
+ width: "1em",
196
+ height: "1em",
197
+ viewBox: "0 0 24 24"
198
+ }, e), [createVNode("path", {
199
+ fill: "currentColor",
200
+ d: "m9.55 18l-5.7-5.7l1.425-1.425L9.55 15.15l9.175-9.175L20.15 7.4z"
201
+ }, null)]), ILanguage = (e) => createVNode("svg", mergeProps({
202
+ xmlns: "http://www.w3.org/2000/svg",
203
+ "xmlns:xlink": "http://www.w3.org/1999/xlink",
204
+ role: "img",
205
+ width: "1em",
206
+ height: "1em",
207
+ viewBox: "0 0 24 24"
208
+ }, e), [createVNode("path", {
209
+ fill: "currentColor",
210
+ 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"
211
+ }, null)]), IMore = (e) => createVNode("svg", mergeProps({
212
+ xmlns: "http://www.w3.org/2000/svg",
213
+ "xmlns:xlink": "http://www.w3.org/1999/xlink",
214
+ role: "img",
215
+ width: "1em",
216
+ height: "1em",
217
+ viewBox: "0 0 20 20"
218
+ }, e), [createVNode("path", {
219
+ fill: "currentColor",
220
+ fillRule: "evenodd",
221
+ 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"
222
+ }, null)]), IDept = (e) => createVNode("svg", mergeProps({
223
+ xmlns: "http://www.w3.org/2000/svg",
224
+ "xmlns:xlink": "http://www.w3.org/1999/xlink",
225
+ width: "1em",
226
+ height: "1em",
227
+ viewBox: "0 0 12 12"
228
+ }, e), [createVNode("path", {
229
+ fill: "currentColor",
230
+ 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"
231
+ }, null)]), IGroup = (e) => createVNode("svg", mergeProps({
232
+ xmlns: "http://www.w3.org/2000/svg",
233
+ "xmlns:xlink": "http://www.w3.org/1999/xlink",
234
+ width: "1em",
235
+ height: "1em",
236
+ viewBox: "0 0 24 24"
237
+ }, e), [createVNode("g", {
238
+ fill: "none",
239
+ fillRule: "evenodd"
240
+ }, [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", {
241
+ fill: "currentColor",
242
+ 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"
243
+ }, null)])]), IAccount = (e) => createVNode("svg", mergeProps({
244
+ xmlns: "http://www.w3.org/2000/svg",
245
+ "xmlns:xlink": "http://www.w3.org/1999/xlink",
246
+ role: "img",
247
+ width: "1em",
248
+ height: "1em",
249
+ viewBox: "0 0 256 256"
250
+ }, e), [createVNode("path", {
251
+ fill: "currentColor",
252
+ 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"
253
+ }, null)]), IClose = (e) => createVNode("svg", mergeProps({
254
+ xmlns: "http://www.w3.org/2000/svg",
255
+ "xmlns:xlink": "http://www.w3.org/1999/xlink",
256
+ role: "img",
257
+ width: "1em",
258
+ height: "1em",
259
+ viewBox: "0 0 24 24"
260
+ }, e), [createVNode("path", {
261
+ fill: "currentColor",
262
+ d: "m6.4 18.308l-.708-.708l5.6-5.6l-5.6-5.6l.708-.708l5.6 5.6l5.6-5.6l.708.708l-5.6 5.6l5.6 5.6l-.708.708l-5.6-5.6z"
263
+ }, null)]), DataActions = /* @__PURE__ */ defineComponent({
264
+ name: "DataActions",
265
+ props: { options: {
266
+ type: Array,
267
+ default: () => []
268
+ } },
269
+ setup(e) {
270
+ let v = ref(), y = !0, b = () => {
271
+ y ? y = !1 : v.value?.sync({ showAllItemsBeforeCalculate: !0 });
272
+ }, x = ref(), S = () => x.value, C = ref(-1), w = (v) => {
273
+ C.value = e.options.length - v;
274
+ }, E = (e) => {
275
+ e || (C.value = -1);
276
+ }, D = () => {}, O = computed(() => C.value === -1 ? [] : e.options.slice(C.value).map((e) => ({
277
+ ...e,
278
+ key: e.text
279
+ }))), k = (e) => createVNode(NButton, {
280
+ type: e.color === "danger" ? "error" : [
281
+ "default",
282
+ "tertiary",
283
+ "primary",
284
+ "info",
285
+ "success",
286
+ "warning",
287
+ "error"
288
+ ].includes(e.color) ? e.color : "primary",
289
+ text: !0
290
+ }, { default: () => [e.text] }), A = (e, v) => {
291
+ v.onClick?.();
292
+ };
293
+ return () => createVNode(VResizeObserver, { onResize: b }, { default: () => [createVNode(VOverflow, {
294
+ ref: v,
295
+ getCounter: S,
296
+ onUpdateCount: w,
297
+ onUpdateOverflow: E,
298
+ updateCounter: D,
299
+ style: "margin-top: 2px"
300
+ }, {
301
+ default: () => e.options.map((e) => createVNode(NButton, {
302
+ quaternary: !0,
303
+ type: e.color === "danger" ? "error" : [
304
+ "default",
305
+ "tertiary",
306
+ "primary",
307
+ "info",
308
+ "success",
309
+ "warning",
310
+ "error"
311
+ ].includes(e.color) ? e.color : "primary",
312
+ size: "small",
313
+ onClick: e.onClick
314
+ }, { default: () => [e.text] })),
315
+ counter: () => createVNode("span", {
316
+ ref: x,
317
+ style: "position: absolute"
318
+ }, [createVNode(NDropdown, {
319
+ options: O.value,
320
+ renderLabel: k,
321
+ onSelect: A
322
+ }, { default: () => [createVNode(NButton, {
323
+ quaternary: !0,
324
+ size: "small"
325
+ }, { default: () => [createVNode(IMore, { style: "font-size: 14px; color: #888" }, null)] })] })])
326
+ })] });
327
+ }
328
+ });
329
+ function _isSlot$6(e) {
330
+ return typeof e == "function" || Object.prototype.toString.call(e) === "[object Object]" && !isVNode(e);
331
+ }
332
+ var DataCustomItem = /* @__PURE__ */ defineComponent({
333
+ name: "DataCustomRow",
334
+ props: {
335
+ label: [String, Function],
336
+ disabled: Boolean,
337
+ hidden: Boolean,
338
+ showFixed: Boolean,
339
+ fixed: [Boolean, String]
340
+ },
341
+ emits: ["update-hidden", "update-fixed"],
342
+ setup(e, { emit: v }) {
343
+ return () => {
344
+ let y;
345
+ return createVNode(NFlex, {
346
+ align: "center",
347
+ wrap: !1,
348
+ size: "small"
349
+ }, { default: () => [
350
+ createVNode(NButton, {
351
+ type: "primary",
352
+ text: !0,
353
+ class: "icon-drag"
354
+ }, { default: () => [createVNode(NIcon, { size: "18" }, { default: () => [createVNode(IDrag, null, null)] })] }),
355
+ createVNode(NCheckbox, {
356
+ checked: !e.hidden,
357
+ disabled: e.disabled,
358
+ onUpdateChecked: (e) => v("update-hidden", !e)
359
+ }, null),
360
+ createVNode(NEllipsis, { style: "flex: 1 1 auto" }, _isSlot$6(y = toValue(e.label)) ? y : { default: () => [y] }),
361
+ e.showFixed ? [createVNode(NButton, {
362
+ text: !0,
363
+ type: e.fixed === "left" ? "primary" : void 0,
364
+ onClick: () => v("update-fixed", e.fixed === "left" ? !1 : "left")
365
+ }, { default: () => [createVNode(NIcon, null, { default: () => [createVNode(ILeft2, null, null)] })] }), createVNode(NButton, {
366
+ text: !0,
367
+ type: e.fixed === "right" ? "primary" : void 0,
368
+ onClick: () => v("update-fixed", e.fixed === "right" ? !1 : "right")
369
+ }, { default: () => [createVNode(NIcon, null, { default: () => [createVNode(IRight2, null, null)] })] })] : void 0
370
+ ] });
371
+ };
372
+ }
373
+ });
374
+ const DataCustom = /* @__PURE__ */ defineComponent({
375
+ name: "DataCustom",
376
+ props: {
377
+ data: {
378
+ type: Array,
379
+ required: !0
380
+ },
381
+ keyField: {
382
+ type: String,
383
+ default: "key"
384
+ },
385
+ labelField: {
386
+ type: String,
387
+ default: "label"
388
+ },
389
+ fixedField: {
390
+ type: String,
391
+ default: "fixed"
392
+ },
393
+ hiddenField: {
394
+ type: String,
395
+ default: "hidden"
396
+ },
397
+ showFixed: {
398
+ type: Boolean,
399
+ default: !0
400
+ },
401
+ disabledField: {
402
+ type: String,
403
+ default: "disabled"
404
+ },
405
+ visiblityField: {
406
+ type: String,
407
+ default: "visiblity"
408
+ },
409
+ tooltip: [String, Object],
410
+ size: {
411
+ type: Number,
412
+ default: 20
413
+ },
414
+ type: { type: String }
415
+ },
416
+ emits: { custom: () => !0 },
417
+ setup(y, { emit: b }) {
418
+ let { t: x } = useI18n();
419
+ function S(e, v, x) {
420
+ b("custom", {
421
+ key: e[y.keyField],
422
+ [v]: x
423
+ });
424
+ }
425
+ let C = ref();
426
+ return watch(C, (e) => {
427
+ e.$el && Sortable.create(e.$el, {
428
+ animation: 150,
429
+ ghostClass: "ghost",
430
+ handle: ".icon-drag",
431
+ filter: ".disabled",
432
+ onEnd(e) {
433
+ let v = y.data.map((e) => e[y.keyField]), [x] = v.splice(e.oldIndex, 1);
434
+ v.splice(e.newIndex, 0, x), b("custom", v);
435
+ }
436
+ });
437
+ }), () => createVNode(NPopover, {
438
+ trigger: "click",
439
+ scrollable: !0,
440
+ placement: "left-start",
441
+ displayDirective: "show",
442
+ style: "max-height: 400px; width: 240px"
443
+ }, {
444
+ trigger: () => withDirectives(createVNode(NButton, {
445
+ text: !0,
446
+ type: y.type
447
+ }, { default: () => [createVNode(NIcon, { size: y.size }, { default: () => [createVNode(ICustom, null, null)] })] }), [[vTooltip, y.tooltip ?? x("common.page.custom.tooltip")]]),
448
+ default: () => {
449
+ let e, v;
450
+ return createVNode(NFlex, { vertical: !0 }, { default: () => [createVNode(NFlex, { justify: "space-between" }, { default: () => [createVNode("div", { style: "font-weight: bold" }, [y.tooltip ?? x("common.page.custom.tooltip")]), createVNode(NButton, {
451
+ text: !0,
452
+ type: "primary",
453
+ size: "small",
454
+ onClick: () => b("custom", !0)
455
+ }, _isSlot$6(e = x("common.page.custom.reset")) ? e : { default: () => [e] })] }), createVNode(NFlex, {
456
+ ref: C,
457
+ vertical: !0
458
+ }, _isSlot$6(v = y.data.filter((e) => e[y.visiblityField] !== !1).map((e) => createVNode(DataCustomItem, {
459
+ key: e[y.keyField],
460
+ label: e[y.labelField],
461
+ hidden: e[y.hiddenField],
462
+ fixed: e[y.fixedField],
463
+ showFixed: y.showFixed,
464
+ onUpdateHidden: (v) => S(e, "hidden", v),
465
+ onUpdateFixed: (v) => S(e, "fixed", v)
466
+ }, null))) ? v : { default: () => [v] })] });
467
+ }
468
+ });
469
+ }
470
+ }), dataFormActionsProps = {
471
+ size: {
472
+ type: String,
473
+ default: void 0
474
+ },
475
+ gap: {
476
+ type: Number,
477
+ default: void 0
478
+ },
479
+ submitText: {
480
+ type: [
481
+ String,
482
+ Number,
483
+ Object
484
+ ],
485
+ default: void 0
486
+ },
487
+ resetText: {
488
+ type: [
489
+ String,
490
+ Number,
491
+ Object
492
+ ],
493
+ default: void 0
494
+ },
495
+ cancelText: {
496
+ type: [
497
+ String,
498
+ Number,
499
+ Object
500
+ ],
501
+ default: void 0
502
+ },
503
+ showSubmitBtn: {
504
+ type: Boolean,
505
+ required: !1,
506
+ default: !0
507
+ },
508
+ showResetBtn: {
509
+ type: Boolean,
510
+ required: !1,
511
+ default: !0
512
+ },
513
+ showCancelBtn: {
514
+ type: Boolean,
515
+ required: !1,
516
+ default: !1
517
+ },
518
+ submitDisabled: Boolean,
519
+ submitLoading: Boolean,
520
+ succeeded: {
521
+ type: Boolean,
522
+ default: void 0
523
+ },
524
+ successText: {
525
+ type: [
526
+ String,
527
+ Number,
528
+ Object
529
+ ],
530
+ default: void 0
531
+ },
532
+ failureText: {
533
+ type: [
534
+ String,
535
+ Number,
536
+ Object
537
+ ],
538
+ default: void 0
539
+ },
540
+ nativeButtonType: Boolean
541
+ }, DataFormActions = /* @__PURE__ */ defineComponent({
542
+ name: "DataFormActions",
543
+ props: dataFormActionsProps,
544
+ emits: [
545
+ "submit",
546
+ "reset",
547
+ "cancel"
548
+ ],
549
+ setup(v, { emit: y, slots: b }) {
550
+ let { t: x } = useI18n(), S = () => {
551
+ y("submit");
552
+ }, C = () => {
553
+ y("reset");
554
+ }, w = () => {
555
+ y("cancel");
556
+ }, { mergedDisabledRef: T, mergedSizeRef: E } = useFormItem(v);
557
+ return () => {
558
+ let e = E.value, y = T.value, { gap: D = e === "small" ? 8 : e === "medium" ? 12 : 16, submitText: O, resetText: k, cancelText: A, submitDisabled: j, submitLoading: M, showSubmitBtn: N, showResetBtn: P, showCancelBtn: F, succeeded: I, successText: L = O, failureText: R = O, nativeButtonType: z } = v;
559
+ return createVNode(NFlex, { size: D === void 0 ? e : D }, { default: () => [
560
+ b.prefix?.(),
561
+ N === !1 ? void 0 : createVNode(NButton, {
562
+ attrType: z ? "submit" : "button",
563
+ size: e,
564
+ type: I ? "success" : I === !1 ? "error" : "primary",
565
+ disabled: I !== void 0 || y || j || M,
566
+ loading: M,
567
+ onClick: z ? void 0 : S
568
+ }, {
569
+ default: () => (I ? L : I === !1 ? R : O) || x("common.page.form.submitText"),
570
+ icon: () => I ? createVNode(NIcon, null, { default: () => [createVNode(ICheck, null, null)] }) : I === !1 ? createVNode(NIcon, null, { default: () => [createVNode(IClose, null, null)] }) : void 0
571
+ }),
572
+ P === !1 ? void 0 : createVNode(NButton, {
573
+ size: E.value,
574
+ attrType: z ? "reset" : "button",
575
+ disabled: y || M || I,
576
+ type: F ? "primary" : "default",
577
+ secondary: F,
578
+ onClick: z ? void 0 : C
579
+ }, { default: () => [k || x("common.page.form.resetText")] }),
580
+ F === !1 || I ? void 0 : createVNode(NButton, {
581
+ attrType: "button",
582
+ disabled: y || M,
583
+ onClick: w
584
+ }, { default: () => [A || x("common.page.form.cancelText")] }),
585
+ b.suffix?.()
586
+ ] });
587
+ };
588
+ }
589
+ });
590
+ function _isSlot$5(e) {
591
+ return typeof e == "function" || Object.prototype.toString.call(e) === "[object Object]" && !isVNode(e);
592
+ }
593
+ const DataForm = /* @__PURE__ */ defineComponent({
594
+ name: "DataForm",
595
+ props: {
596
+ grid: {
597
+ type: Object,
598
+ default: () => ({})
599
+ },
600
+ ...pickProps(formProps, "disabled", "model", "labelWidth", "labelAlign", "showFeedback", "size"),
601
+ ...pickProps(dataFormActionsProps, "submitText", "resetText", "cancelText", "showSubmitBtn", "showResetBtn", "showCancelBtn", "submitDisabled", "succeeded", "successText", "failureText"),
602
+ readonly: {
603
+ type: Boolean,
604
+ required: !1,
605
+ default: void 0
606
+ },
607
+ items: {
608
+ type: Array,
609
+ required: !0
610
+ },
611
+ validation: {
612
+ type: Object,
613
+ default: () => ({})
614
+ },
615
+ loading: Boolean,
616
+ showColon: Boolean,
617
+ tooltipPlacement: {
618
+ type: String,
619
+ default: "bottom"
620
+ },
621
+ requireMarkPlacement: {
622
+ type: String,
623
+ default: "left"
624
+ },
625
+ labelPlacement: {
626
+ type: String,
627
+ default: "left"
628
+ },
629
+ showAction: {
630
+ type: [Boolean, Object],
631
+ default: void 0
632
+ },
633
+ actionAlign: {
634
+ type: String,
635
+ default: "center"
636
+ },
637
+ actionJustify: {
638
+ type: String,
639
+ default: "start"
640
+ },
641
+ actionGap: {
642
+ type: String,
643
+ default: void 0
644
+ }
645
+ },
646
+ emits: [
647
+ "submit",
648
+ "reset",
649
+ "cancel"
650
+ ],
651
+ setup(e, { emit: v, slots: y }) {
652
+ let b = (y) => {
653
+ y?.preventDefault?.(), v("submit", { ...toRaw(e.model) }, y);
654
+ }, x = (e) => {
655
+ e?.preventDefault?.(), v("reset");
656
+ }, S = (e) => {
657
+ e?.preventDefault?.(), v("cancel");
658
+ }, C = ref(), T = ref(), { width: D } = useElementSize(useCurrentElement());
659
+ return watchDebounced([C, D], () => {
660
+ T.value = void 0, setTimeout(() => {
661
+ T.value = C.value?.responsiveCols || void 0;
662
+ }, 30);
663
+ }, {
664
+ immediate: !0,
665
+ debounce: 100
666
+ }), () => {
667
+ let { items: v, loading: D, validation: O, showColon: k, tooltipPlacement: j, showFeedback: M, labelWidth: N = "7.2em", labelAlign: P = e.labelPlacement === "top" ? "left" : "right", grid: F, showAction: I, showSubmitBtn: R, showResetBtn: z, showCancelBtn: B, actionAlign: V, actionJustify: H, actionGap: U, submitDisabled: W, submitText: G, resetText: K, cancelText: q, succeeded: J, successText: Y, failureText: X,...Z } = e, Q = !e.readonly && M !== !1;
668
+ return createVNode(NForm, mergeProps({
669
+ labelWidth: N,
670
+ labelAlign: P,
671
+ onReset: x,
672
+ onSubmit: b,
673
+ showFeedback: Q
674
+ }, Z), { default: () => [createVNode(NGrid, mergeProps({
675
+ ref: C,
676
+ itemResponsive: !0
677
+ }, F, { yGap: Q ? 0 : F?.yGap ?? 24 }), { default: () => {
678
+ let b = 0;
679
+ return createVNode(Fragment, null, [v.map(({ hidden: v, name: y, render: x, label: S, showColon: C, span: w = 6, rowSpan: T, offset: D = 0, tooltip: k, tooltipPlacement: j = e.tooltipPlacement, validationStatus: M = O[y]?.errors?.some((e) => e !== void 0) ? "error" : O[y]?.warnings?.some((e) => e !== void 0) ? "warnings" : O[y] ? "success" : void 0, readonly: N = e.readonly, showRequireMark: P = !N, showTooltipWhenReadonly: F = !1,...I }) => {
680
+ if (v) return;
681
+ b += w;
682
+ let R;
683
+ return R = y[0] === "$" ? x({}) : createVNode(NFormItem, mergeProps({
684
+ path: y,
685
+ validationStatus: M,
686
+ showRequireMark: I.required && P
687
+ }, I), {
688
+ label: () => createVNode(NText, {
689
+ depth: e.readonly ? 3 : 2,
690
+ style: "display: inline-flex; align-items: flex-start; gap: 1px"
691
+ }, { default: () => [
692
+ createVNode("span", null, [toValue(S)]),
693
+ j === "icon" ? createVNode(NTooltip, null, {
694
+ default: () => toValue(k),
695
+ trigger: () => createVNode(NButton, {
696
+ text: !0,
697
+ style: "font-size: 1.25em; opacity: 0.8"
698
+ }, { default: () => [createVNode(NIcon, null, { default: () => [createVNode(IHelp, null, null)] })] })
699
+ }) : void 0,
700
+ e.showColon && C !== !1 ? createVNode("span", { style: "place-self: center" }, [createTextVNode(":")]) : void 0
701
+ ] }),
702
+ default: () => {
703
+ let v, y = createVNode("div", { style: "width: 100%; font-size: calc(1rem - 2px); min-height: 32px; display: flex; align-items: center" }, [x({
704
+ disabled: e.disabled,
705
+ size: e.size,
706
+ readonly: e.readonly
707
+ })]);
708
+ return k && j === "bottom" && (!e.readonly || F) ? createVNode("div", { style: "width: 100%; display: flex; flex-direction: column" }, [y, createVNode(NText, {
709
+ depth: 3,
710
+ style: "font-size: calc(1rem - 3px); margin-top: 6px"
711
+ }, _isSlot$5(v = toValue(k)) ? v : { default: () => [v] })]) : y;
712
+ },
713
+ feedback: () => O[y]?.errors[0] ?? O[y]?.warnings[0]
714
+ }), e.grid === !1 ? R : createVNode(NGi, {
715
+ key: y,
716
+ offset: D,
717
+ span: w,
718
+ style: T ? { gridRowEnd: `span ${T}` } : void 0
719
+ }, _isSlot$5(R) ? R : { default: () => [R] });
720
+ }), I === !1 || e.readonly === !0 && !y.action ? void 0 : createVNode(NGi, mergeProps({
721
+ key: "action",
722
+ span: 2 ** 53 - 1
723
+ }, typeof e.showAction == "object" ? e.showAction : {}), { default: ({ overflow: v }) => y.action ? y.action({
724
+ cols: T.value,
725
+ spans: b,
726
+ overflow: v
727
+ }) : createVNode(NFormItem, {
728
+ label: H === "start" ? " " : void 0,
729
+ showLabel: e.labelPlacement !== "top",
730
+ style: "padding-top: 16px"
731
+ }, { default: () => [createVNode(DataFormActions, {
732
+ align: V,
733
+ justify: H,
734
+ gap: U,
735
+ showSubmitBtn: R,
736
+ showResetBtn: z,
737
+ showCancelBtn: B,
738
+ submitText: G,
739
+ resetText: K,
740
+ cancelText: q,
741
+ submitDisabled: W,
742
+ submitloading: D,
743
+ succeeded: J,
744
+ successText: Y,
745
+ failureText: X,
746
+ nativeButtonType: !0,
747
+ onCancel: S
748
+ }, {
749
+ prefix: () => y.actionPrefix?.(),
750
+ suffix: () => y.actionSuffix?.()
751
+ })] }) })]);
752
+ } })] });
753
+ };
754
+ }
755
+ }), DataFilter = /* @__PURE__ */ defineComponent({
756
+ name: "DataFilter",
757
+ props: {
758
+ grid: {
759
+ type: Object,
760
+ default: () => ({})
761
+ },
762
+ ...pickProps(formProps, "disabled", "model"),
763
+ labelWidth: {
764
+ type: [String, Number],
765
+ default: "5em"
766
+ },
767
+ labelPlacement: {
768
+ type: String,
769
+ default: "left"
770
+ },
771
+ items: {
772
+ type: Array,
773
+ required: !0
774
+ },
775
+ loading: {
776
+ type: Boolean,
777
+ required: !1,
778
+ default: !1
779
+ },
780
+ filterOnReset: {
781
+ type: Boolean,
782
+ required: !1,
783
+ default: !0
784
+ },
785
+ filterText: {
786
+ type: String,
787
+ default: void 0
788
+ },
789
+ resetText: {
790
+ type: String,
791
+ default: void 0
792
+ },
793
+ customizable: {
794
+ type: Boolean,
795
+ required: !1,
796
+ default: !0
797
+ },
798
+ collapsible: {
799
+ type: Boolean,
800
+ required: !1,
801
+ default: !0
802
+ },
803
+ defaultCollapsed: {
804
+ type: Boolean,
805
+ required: !1,
806
+ default: !0
807
+ }
808
+ },
809
+ emits: [
810
+ "filter",
811
+ "reset",
812
+ "custom",
813
+ "collapse"
814
+ ],
815
+ setup(v, { expose: y, emit: b }) {
816
+ let { t: x } = useI18n(), S = (e) => {
817
+ b("filter", v.model, e);
818
+ }, C = (e) => {
819
+ b("reset", e), v.filterOnReset && b("filter", v.model, e);
820
+ }, w = ref(v.defaultCollapsed), T = (e) => {
821
+ w.value = e;
822
+ };
823
+ y({ collapse: T });
824
+ let D = reactive({
825
+ span: 6,
826
+ suffix: !0
827
+ });
828
+ return () => {
829
+ let { filterOnReset: e, filterText: y, resetText: O, customizable: k, defaultCollapsed: j, collapsible: M, grid: N,...P } = v;
830
+ return createVNode(DataForm, mergeProps({ grid: {
831
+ cols: "12 768:18 1280:24 1536:30",
832
+ yGap: 20,
833
+ xGap: 8,
834
+ ...N,
835
+ collapsed: w.value
836
+ } }, P, {
837
+ showFeedback: !1,
838
+ showAction: D,
839
+ onSubmit: S,
840
+ onReset: C
841
+ }), { action: ({ cols: e, spans: S }) => (D.suffix = e < S + D.span, createVNode(NFlex, {
842
+ justify: D.suffix ? "end" : "start",
843
+ align: "center"
844
+ }, { default: () => [
845
+ D.suffix ? void 0 : createVNode("span", null, [createTextVNode("\xA0\xA0\xA0\xA0")]),
846
+ createVNode(NButton, {
847
+ attrType: "submit",
848
+ type: "primary",
849
+ disabled: v.disabled,
850
+ loading: v.loading
851
+ }, { default: () => [y || x("common.page.filter.submitText")] }),
852
+ createVNode(NButton, {
853
+ attrType: "reset",
854
+ disabled: v.disabled || v.loading
855
+ }, { default: () => [O || x("common.page.form.resetText")] }),
856
+ k ? createVNode(DataCustom, {
857
+ keyField: "name",
858
+ showFixed: !1,
859
+ data: P.items,
860
+ onCustom: (e) => b("custom", e),
861
+ size: 18,
862
+ type: "primary"
863
+ }, null) : void 0,
864
+ M && D.suffix ? createVNode(NButton, {
865
+ text: !0,
866
+ type: "primary",
867
+ iconPlacement: "right",
868
+ renderIcon: w.value ? IDown : IUp,
869
+ onClick: () => T(!w.value)
870
+ }, { default: () => [w.value ? x("common.page.filter.expand") : x("common.page.filter.collapse")] }) : void 0
871
+ ] })) });
872
+ };
873
+ }
874
+ });
875
+ function _isSlot$4(e) {
876
+ return typeof e == "function" || Object.prototype.toString.call(e) === "[object Object]" && !isVNode(e);
877
+ }
878
+ function useLocaleEdit(v, y, b = 1) {
879
+ let { t: x } = useI18n(), S = ref(!1), C = [], { open: w, reinit: T } = useFormModal({
880
+ title: v,
881
+ showColon: !0,
882
+ submitText: x("common.confirm.defaultOk"),
883
+ items: ({ it: e }) => C.map((v) => e(v.value, v.label, "input", {
884
+ span: 24,
885
+ required: v.required,
886
+ inputProps: {
887
+ readonly: S,
888
+ clearable: !0,
889
+ type: "textarea",
890
+ showCount: !0,
891
+ autosize: {
892
+ minRows: unref(b),
893
+ maxRows: Math.max(unref(b), 5)
894
+ }
895
+ }
896
+ })),
897
+ onSubmit: y
898
+ });
899
+ return {
900
+ open: (e, v = !1) => (S.value = v, w(e)),
901
+ setSupports: (e) => {
902
+ C = e, T();
903
+ }
904
+ };
905
+ }
906
+ const DataLocaleInput = /* @__PURE__ */ defineComponent({
907
+ name: "DataLocaleInput",
908
+ props: {
909
+ label: { type: [
910
+ String,
911
+ Function,
912
+ Number,
913
+ Boolean,
914
+ Object
915
+ ] },
916
+ modelValue: Object,
917
+ supports: {
918
+ type: Array,
919
+ default: () => []
920
+ },
921
+ disabled: {
922
+ type: Boolean,
923
+ default: void 0
924
+ },
925
+ defaultLang: {
926
+ type: String,
927
+ default: "zh-CN"
928
+ },
929
+ showLang: {
930
+ type: String,
931
+ default: void 0
932
+ },
933
+ defaultRows: {
934
+ type: Number,
935
+ default: 1
936
+ }
937
+ },
938
+ emits: ["update:modelValue", "updateModelValue"],
939
+ setup(e, { emit: v }) {
940
+ let y = (y) => {
941
+ y = {
942
+ ...e.modelValue,
943
+ [e.showLang ?? e.defaultLang]: y
944
+ }, v("update:modelValue", y), v("updateModelValue", y);
945
+ }, { open: b, setSupports: x } = useLocaleEdit(computed(() => toValue(e.label)), (e) => {
946
+ v("update:modelValue", e), v("updateModelValue", e);
947
+ }, toRef(e, "defaultRows"));
948
+ watch(() => e.supports, x, { immediate: !0 });
949
+ let S = { suffix: () => createVNode(NButton, {
950
+ quaternary: !0,
951
+ onClick: () => b(e.modelValue, e.disabled),
952
+ style: "--n-padding: 0 8px"
953
+ }, { default: () => [createVNode(NIcon, {
954
+ size: "20",
955
+ depth: "3"
956
+ }, { default: () => [createVNode(ILanguage, null, null)] })] }) }, C = { "--n-padding-right": "0" };
957
+ return () => createVNode(NInput, {
958
+ value: e.modelValue?.[e.showLang ?? e.defaultLang] ?? e.modelValue?.[e.defaultLang],
959
+ onUpdateValue: y,
960
+ disabled: e.disabled,
961
+ clearable: !0,
962
+ style: C,
963
+ type: e.defaultRows > 1 ? "textarea" : "text",
964
+ rows: e.defaultRows
965
+ }, _isSlot$4(S) ? S : { default: () => [S] });
966
+ }
967
+ }), DataPagination = /* @__PURE__ */ defineComponent({
968
+ name: "DataPagination",
969
+ props: {
970
+ total: {
971
+ type: Number,
972
+ default: 0
973
+ },
974
+ currentPage: { type: Number },
975
+ pageSize: { type: Number },
976
+ page: { type: Object },
977
+ pageSizes: {
978
+ type: Array,
979
+ default: () => [
980
+ 10,
981
+ 20,
982
+ 30,
983
+ 50
984
+ ]
985
+ }
986
+ },
987
+ emits: { change: () => !0 },
988
+ setup(v, { emit: y }) {
989
+ let { t: b } = useI18n(), x = (e) => y("change", {
990
+ pageSize: v.pageSize ?? v.page?.pageSize ?? 0,
991
+ currentPage: e
992
+ }), S = (e) => y("change", {
993
+ pageSize: e,
994
+ currentPage: v.currentPage ?? v.page?.currentPage ?? 0
995
+ });
996
+ return () => createVNode(NPagination, {
997
+ page: v.currentPage ?? v.page?.currentPage,
998
+ itemCount: v.total,
999
+ pageSize: v.pageSize ?? v.page?.pageSize,
1000
+ onUpdatePage: x,
1001
+ onUpdatePageSize: S,
1002
+ pageSizes: v.pageSizes,
1003
+ showQuickJumper: !0,
1004
+ showSizePicker: !0,
1005
+ style: "justify-content: flex-end"
1006
+ }, {
1007
+ prefix: () => b("common.page.pagination.prefix", { total: v.total }),
1008
+ suffix: () => b("common.page.pagination.suffix")
1009
+ });
1010
+ }
1011
+ });
1012
+ function _isSlot$3(e) {
1013
+ return typeof e == "function" || Object.prototype.toString.call(e) === "[object Object]" && !isVNode(e);
1014
+ }
1015
+ const DataSelection = /* @__PURE__ */ defineComponent({
1016
+ name: "DataSelection",
1017
+ props: {
1018
+ modelValue: {
1019
+ type: String,
1020
+ required: !0
1021
+ },
1022
+ count: {
1023
+ type: Number,
1024
+ default: 0
1025
+ }
1026
+ },
1027
+ emits: {
1028
+ "update:modelValue": () => !0,
1029
+ clear: () => !0
1030
+ },
1031
+ setup(v, { emit: y }) {
1032
+ let { t: b } = useI18n();
1033
+ return () => {
1034
+ let e;
1035
+ return v.modelValue !== "selection" && v.count === 0 ? createVNode("div", null, null) : createVNode("div", null, [createVNode(NFlex, {
1036
+ align: "center",
1037
+ "wrap-item": !1
1038
+ }, { default: () => [
1039
+ createVNode("span", null, [b("common.page.selection.countText", { count: v.count })]),
1040
+ createVNode(NButton, {
1041
+ text: !0,
1042
+ type: "primary",
1043
+ onClick: () => {
1044
+ y("update:modelValue", v.modelValue === "all" ? "selection" : "all");
1045
+ }
1046
+ }, { default: () => [v.modelValue === "all" ? b("common.page.selection.view") : b("common.page.selection.back")] }),
1047
+ createVNode(NButton, {
1048
+ text: !0,
1049
+ onClick: () => {
1050
+ y("clear"), y("update:modelValue", "all");
1051
+ }
1052
+ }, _isSlot$3(e = b("common.page.selection.clear")) ? e : { default: () => [e] })
1053
+ ] })]);
1054
+ };
1055
+ }
1056
+ });
1057
+ function _isSlot$2(e) {
1058
+ return typeof e == "function" || Object.prototype.toString.call(e) === "[object Object]" && !isVNode(e);
1059
+ }
1060
+ function _map(e, y) {
1061
+ return (e ?? []).map((e) => {
1062
+ let b = {
1063
+ csvTitle: e.exportTitle,
1064
+ ...e,
1065
+ title: () => {
1066
+ let y = toValue(e.title), b = y && withDirectives(createVNode("span", null, [y]), [[
1067
+ vTooltip,
1068
+ () => toValue(e.title),
1069
+ void 0,
1070
+ { auto: !0 }
1071
+ ]]);
1072
+ return e.tooltip ? createVNode(NFlex, {
1073
+ size: 3,
1074
+ wrap: !1,
1075
+ inline: !0,
1076
+ style: "max-width: 100%"
1077
+ }, { default: () => [b, createVNode(NTooltip, null, {
1078
+ default: toValue(e.tooltip),
1079
+ trigger: () => createVNode(NButton, {
1080
+ text: !0,
1081
+ style: "font-size: 1.25em; opacity: 0.8"
1082
+ }, { default: () => [createVNode(NIcon, null, { default: () => [createVNode(IHelp, null, null)] })] })
1083
+ })] }) : b;
1084
+ }
1085
+ };
1086
+ if (e.children?.length) b.children = _map(e.children, y);
1087
+ else {
1088
+ e.hidden !== !0 && (b.width ??= 100, y.value += Number(b.width));
1089
+ let v = e.render ?? ((e) => e);
1090
+ e.ellipsis !== !1 && (b.ellipsis = !1, b.render = (...y) => {
1091
+ let b = v(...y);
1092
+ return createVNode(NPerformantEllipsis, mergeProps({
1093
+ expandTrigger: "click",
1094
+ lineClamp: 1,
1095
+ tooltip: { style: {
1096
+ maxWidth: "61.8vw",
1097
+ wordBreak: "break-all"
1098
+ } }
1099
+ }, typeof e.ellipsis == "boolean" ? {} : e.ellipsis), _isSlot$2(b) ? b : { default: () => [b] });
1100
+ }, e.ellipsisTooltip === !0 && (b.ellipsisTooltip ??= v)), Object.assign(b, {
1101
+ resizable: e.resizable !== !1,
1102
+ sorter: e.sortable,
1103
+ type: ["selection", "expand"].includes(e.type) ? e.type : void 0,
1104
+ disabled: e.selectable ? (v) => e.selectable(v) === !1 : void 0
1105
+ });
1106
+ }
1107
+ return b.key === "$actions" && (b.cellProps ??= () => ({ style: { padding: "0 2px" } })), b;
1108
+ }).filter((e) => e?.hidden !== !0);
1109
+ }
1110
+ const DataTable = /* @__PURE__ */ defineComponent({
1111
+ name: "DataTable",
1112
+ props: {
1113
+ data: {
1114
+ type: Array,
1115
+ default: () => []
1116
+ },
1117
+ columns: {
1118
+ type: Array,
1119
+ default: () => []
1120
+ },
1121
+ keyField: { type: String },
1122
+ sorter: {
1123
+ type: Object,
1124
+ default: () => ({})
1125
+ },
1126
+ selectedKeys: { type: Array },
1127
+ highlight: {
1128
+ type: [
1129
+ Boolean,
1130
+ String,
1131
+ Number,
1132
+ Object
1133
+ ],
1134
+ default: !0
1135
+ },
1136
+ rowClassName: dataTableProps.rowClassName,
1137
+ rowProps: dataTableProps.rowProps
1138
+ },
1139
+ emits: [
1140
+ "sort",
1141
+ "select",
1142
+ "custom",
1143
+ "highlight"
1144
+ ],
1145
+ setup(e, { slots: v, emit: x, expose: S }) {
1146
+ let { keyField: C } = inject(PAGE_INJECTION), w = useMergedClsPrefix(), E = `${w.value}-datatable`;
1147
+ useStyle("-datatable", style, w);
1148
+ let D = useTemplateRef("table-ref"), k = ({ sortField: e, sortOrder: v } = {}, y) => {
1149
+ e == y?.sortField && v == y?.sortOrder || D.value?.sort(e, v ? v + "end" : !1);
1150
+ };
1151
+ watch(() => ({ ...e.sorter }), k, { deep: !0 });
1152
+ let A = computed(() => {
1153
+ let v = e.keyField || C || "key";
1154
+ return (e) => e[v];
1155
+ }), j = shallowRef({
1156
+ cache: [],
1157
+ scrollToView(...e) {
1158
+ this.cache.push(e);
1159
+ }
1160
+ });
1161
+ until(D).changed().then(() => {
1162
+ k(e.sorter);
1163
+ let v = j.value.cache;
1164
+ j.value = D.value, j.value.scrollToView = (v) => {
1165
+ let y = e.data.findIndex((e) => A.value(e) === v);
1166
+ if (y === -1) return;
1167
+ let b = D.value.$el.querySelector(`.${E}__row-marker:nth-child(${y + 1})`);
1168
+ D.value.scrollTo({
1169
+ top: b.offsetTop,
1170
+ behavior: "smooth"
1171
+ });
1172
+ };
1173
+ for (let e of v) j.value.scrollToView(...e);
1174
+ }), S(toReactive(j));
1175
+ let M = ref(0), F = shallowRef([]);
1176
+ watch(() => e.columns, () => {
1177
+ M.value = 0, F.value = _map(e.columns, M);
1178
+ }, {
1179
+ immediate: !0,
1180
+ deep: 1
1181
+ });
1182
+ let I = ref();
1183
+ watch(() => e.highlight, (e) => {
1184
+ I.value = typeof e == "boolean" ? null : e ?? null;
1185
+ }, { immediate: !0 });
1186
+ let L = computed(() => (v, y) => [
1187
+ e.rowClassName?.(v, y) || "",
1188
+ `${E}__row-marker`,
1189
+ I.value != null && A.value(v) === I.value ? `${E}__row-highlight` : ""
1190
+ ].join(" ")), R = computed(() => (v, y) => {
1191
+ let b = e.rowProps?.(v, y);
1192
+ return {
1193
+ ...b,
1194
+ onClick: (y) => {
1195
+ let S = A.value(v);
1196
+ e.highlight === !0 && (I.value = S), x("highlight", S), b?.onClick?.(y);
1197
+ }
1198
+ };
1199
+ }), V = (v) => {
1200
+ if (e.sorter) {
1201
+ let { sortField: y, sortOrder: b } = e.sorter;
1202
+ if (v?.columnKey == y && (v?.order ? v.order === b + "end" : !b)) return;
1203
+ }
1204
+ x("sort", {
1205
+ sortField: v?.order ? v?.columnKey : void 0,
1206
+ sortOrder: v?.order ? v.order.replace("end", "") : void 0
1207
+ });
1208
+ }, U = (e) => {
1209
+ x("select", e);
1210
+ }, G = (e, v, y) => {
1211
+ x("custom", {
1212
+ key: y.key,
1213
+ width: e
1214
+ });
1215
+ };
1216
+ return () => createVNode(NDataTable, {
1217
+ class: E,
1218
+ data: e.data,
1219
+ columns: F.value,
1220
+ rowKey: A.value,
1221
+ tableLayout: "fixed",
1222
+ ref: "table-ref",
1223
+ scrollX: M.value,
1224
+ rowClassName: L.value,
1225
+ rowProps: R.value,
1226
+ checkedRowKeys: e.selectedKeys,
1227
+ onUpdateSorter: V,
1228
+ onUpdateCheckedRowKeys: U,
1229
+ onUnstableColumnResize: G
1230
+ }, _isSlot$2(v) ? v : { default: () => [v] });
1231
+ }
1232
+ });
1233
+ var style = /* @__PURE__ */ cB("datatable", [cE("row-highlight", [c("& > td", { backgroundColor: "var(--n-tr-highlight-color, var(--n-merged-border-color)) !important" })])]);
1234
+ function useDataTableDrag(e, { data: v, onSort: y,...b }) {
1235
+ watch([ref(v), e], async ([e, v]) => {
1236
+ if (e.length === 0) return;
1237
+ await nextTick();
1238
+ let x = unrefElement(v)?.querySelector(".n-data-table-base-table-body .n-data-table-tbody");
1239
+ if (!x) return;
1240
+ let S = Sortable$1.create(x, {
1241
+ animation: 150,
1242
+ ...b,
1243
+ onSort(e) {
1244
+ y({
1245
+ from: e.oldIndex,
1246
+ to: e.newIndex
1247
+ });
1248
+ }
1249
+ });
1250
+ return () => {
1251
+ S.destroy();
1252
+ };
1253
+ }, { immediate: !0 });
1254
+ }
1255
+ function _isSlot$1(e) {
1256
+ return typeof e == "function" || Object.prototype.toString.call(e) === "[object Object]" && !isVNode(e);
1257
+ }
1258
+ const NRadios = /* @__PURE__ */ defineComponent({
1259
+ name: "Radios",
1260
+ props: {
1261
+ options: {
1262
+ type: Array,
1263
+ default: () => []
1264
+ },
1265
+ vertical: {
1266
+ type: Boolean,
1267
+ default: !1
1268
+ },
1269
+ type: {
1270
+ type: String,
1271
+ default: "radio"
1272
+ },
1273
+ default: {
1274
+ type: [
1275
+ Boolean,
1276
+ String,
1277
+ Object
1278
+ ],
1279
+ default: !1
1280
+ },
1281
+ padding: {
1282
+ type: String,
1283
+ default: void 0
1284
+ },
1285
+ labelField: {
1286
+ type: String,
1287
+ default: "label"
1288
+ },
1289
+ valueField: {
1290
+ type: String,
1291
+ default: "value"
1292
+ },
1293
+ disabledField: {
1294
+ type: String,
1295
+ default: "disabled"
1296
+ },
1297
+ modelValue: {
1298
+ type: [
1299
+ String,
1300
+ Number,
1301
+ Boolean
1302
+ ],
1303
+ default: void 0
1304
+ }
1305
+ },
1306
+ emits: {
1307
+ "update:modelValue": () => !0,
1308
+ updateModelValue: () => !0
1309
+ },
1310
+ setup(v, { emit: y }) {
1311
+ let { t: b } = useI18n(), x = computed(() => v.default === !1 ? "" : v.default === !0 ? b("common.all") : typeof v.default == "string" ? v.default : v.default?.[v.labelField] ?? b("common.all")), S = computed(() => v.type === "button-primary" ? {
1312
+ "--n-button-color-active": "var(--color-primary)",
1313
+ "--n-button-text-color-active": "var(--color-base)"
1314
+ } : {}), C = (e) => {
1315
+ y("update:modelValue", e), y("updateModelValue", e);
1316
+ };
1317
+ return () => {
1318
+ let e = v.type === "button" ? NRadioButton : NRadio, y = createVNode(Fragment, null, [v.default ? createVNode(e, { value: typeof v.default == "object" ? v.default?.[v.valueField] : null }, { default: () => [x.value] }) : void 0, v.options?.map((y) => {
1319
+ let b = typeof y[v.labelField] == "string" ? y[v.labelField] : y[v.labelField]?.();
1320
+ return createVNode(e, {
1321
+ value: y[v.valueField],
1322
+ disabled: y[v.disabledField],
1323
+ style: v.padding ? {
1324
+ paddingLeft: v.padding,
1325
+ paddingRight: v.padding
1326
+ } : {}
1327
+ }, { default: () => [y.tip ? createVNode(NTooltip, null, {
1328
+ default: () => y.tip,
1329
+ trigger: () => b
1330
+ }) : b] });
1331
+ })]);
1332
+ return createVNode(NRadioGroup, {
1333
+ style: v.vertical ? {
1334
+ ...S.value,
1335
+ padding: "6px 0 0"
1336
+ } : S.value,
1337
+ value: v.modelValue,
1338
+ onUpdateValue: C
1339
+ }, { default: () => [v.type === "radio" ? createVNode(NFlex, {
1340
+ size: v.vertical ? void 0 : "small",
1341
+ vertical: v.vertical
1342
+ }, _isSlot$1(y) ? y : { default: () => [y] }) : y] });
1343
+ };
1344
+ }
1345
+ });
1346
+ function _isSlot(e) {
1347
+ return typeof e == "function" || Object.prototype.toString.call(e) === "[object Object]" && !isVNode(e);
1348
+ }
1349
+ const DtUserDept = /* @__PURE__ */ defineComponent({
1350
+ name: "UserDept",
1351
+ inheritAttrs: !1,
1352
+ props: {
1353
+ users: {
1354
+ type: Array,
1355
+ default: () => []
1356
+ },
1357
+ groups: {
1358
+ type: Array,
1359
+ default: () => []
1360
+ },
1361
+ depts: {
1362
+ type: Array,
1363
+ default: () => []
1364
+ },
1365
+ modelValue: {
1366
+ type: [Array, String],
1367
+ default: void 0
1368
+ },
1369
+ placeholder: {
1370
+ type: String,
1371
+ default: void 0
1372
+ },
1373
+ size: {
1374
+ type: String,
1375
+ default: void 0
1376
+ },
1377
+ type: {
1378
+ type: String,
1379
+ default: "user"
1380
+ },
1381
+ selectType: {
1382
+ type: String,
1383
+ default: "dropdown"
1384
+ },
1385
+ max: {
1386
+ type: Number,
1387
+ default: void 0
1388
+ },
1389
+ multiple: {
1390
+ type: Boolean,
1391
+ default: !1
1392
+ },
1393
+ defaultExpandAll: {
1394
+ type: Boolean,
1395
+ default: !1
1396
+ },
1397
+ filterable: {
1398
+ type: Boolean,
1399
+ default: !1
1400
+ },
1401
+ disabled: {
1402
+ type: Boolean,
1403
+ default: void 0
1404
+ },
1405
+ getUsersByGroup: {
1406
+ type: Function,
1407
+ default: () => []
1408
+ },
1409
+ getUsersByDept: {
1410
+ type: Function,
1411
+ default: () => []
1412
+ },
1413
+ valueField: { type: String }
1414
+ },
1415
+ emits: ["update:modelValue", "updateModelValue"],
1416
+ setup(v, { emit: y, attrs: b }) {
1417
+ let { t: x } = useI18n(), { localeRef: S } = useLocale("Popconfirm"), C = computed(() => v.valueField || (v.type === "user" ? "username" : "code")), E = computed(() => {
1418
+ if (v.multiple) return v.modelValue || [];
1419
+ let e = v.modelValue?.trim();
1420
+ return e ? [e] : [];
1421
+ }), D = /* @__PURE__ */ new Map(), O = computed(() => (D.clear(), v.users.map((e) => (e = reactive(e), e.label = e.nickname + e.username, e.value = e[C.value], e.type = "user", D.set(e[C.value], e), e)))), k = shallowRef([]);
1422
+ watch(() => v.depts, (e) => {
1423
+ walkTree(e, (e) => {
1424
+ e.label = e.name, e.value = e[C.value], e.type = "dept", e.children?.length || delete e.children;
1425
+ }), k.value = flattenTree(e);
1426
+ }, { immediate: !0 });
1427
+ let F = computed(() => [
1428
+ ...v.depts,
1429
+ ...v.groups.map((e) => ({
1430
+ label: e.name,
1431
+ value: e.code,
1432
+ type: "group"
1433
+ })),
1434
+ ...O.value
1435
+ ]), I = ref([]), L = ref(), R = async (e) => {
1436
+ let y = await (e.type === "group" ? v.getUsersByGroup(e.value) : v.getUsersByDept(e.value));
1437
+ for (let e of O.value) e.disabled = !0;
1438
+ L.value = [...e.type === "dept" ? e.children ?? [] : [], ...y.map((e) => {
1439
+ let v = D.get(e[C.value]);
1440
+ return v && (v.disabled = !1), {
1441
+ ...e,
1442
+ label: e.nickname + e.username,
1443
+ value: e[C.value],
1444
+ type: "user"
1445
+ };
1446
+ })];
1447
+ }, z = /* @__PURE__ */ new WeakMap(), V = (e, y, b) => {
1448
+ let S;
1449
+ if (v.type === "dept") return createVNode(NTree, {
1450
+ data: v.depts,
1451
+ keyField: "value",
1452
+ labelField: "name",
1453
+ defaultExpandAll: v.defaultExpandAll,
1454
+ checkable: v.multiple,
1455
+ selectable: !v.multiple,
1456
+ multiple: !1,
1457
+ blockLine: !0,
1458
+ checkOnClick: !0,
1459
+ pattern: b,
1460
+ filter: (e, v) => v.label.includes(e) || v.value.includes(e),
1461
+ checkedKeys: v.multiple ? e : void 0,
1462
+ selectedKeys: v.multiple ? void 0 : e,
1463
+ onUpdateCheckedKeys: (e) => {
1464
+ v.max && e?.length > v.max || y(e);
1465
+ },
1466
+ onUpdateSelectedKeys: (e) => {
1467
+ y(e);
1468
+ }
1469
+ }, null);
1470
+ let C = e ? z.get(e) : /* @__PURE__ */ new Set();
1471
+ if (e && !C && (C = new Set(e), z.set(e, C)), L.value === !1) return createVNode(NSpin, { show: !0 }, null);
1472
+ let T = L.value || F.value;
1473
+ b = b?.trim(), b && (T = T?.filter((e) => e.label.includes(b) || e.value.includes(b)));
1474
+ let E = I.value;
1475
+ return createVNode(Fragment, null, [createVNode("div", { style: "margin: 12px 16px; display: flex; justify-content: space-between; align-items: center" }, [E.length > 0 ? createVNode(Fragment, null, [createVNode("span", { style: "display: flex; align-items: center" }, [
1476
+ E.length >= 2 ? E.at(-2).label : x("common.all"),
1477
+ createVNode("span", { style: "padding: 0 4px" }, [createVNode(IRight, null, null)]),
1478
+ E.at(-1).label
1479
+ ]), createVNode(NButton, {
1480
+ text: !0,
1481
+ type: "warning",
1482
+ onClick: () => {
1483
+ if (E.pop(), L.value = E.length > 0 ? !1 : void 0, E.length > 0) R(E.at(-1));
1484
+ else for (let e of O.value) e.disabled = !1;
1485
+ }
1486
+ }, { default: () => [createVNode(NIcon, null, { default: () => [createVNode(ILeft, null, null)] }), x("common.back")] })]) : createVNode("span", null, [x("common.all")])]), T?.length ? createVNode(NList, {
1487
+ showDivider: !1,
1488
+ style: "padding: 0 16px"
1489
+ }, _isSlot(S = T.map((b) => {
1490
+ let x, S;
1491
+ return createVNode(NListItem, {
1492
+ key: b.type + "_" + b.value,
1493
+ style: "padding: 6px 0"
1494
+ }, { default: () => [b.type === "user" ? v.multiple ? createVNode(NCheckbox, {
1495
+ checked: C.has(b.value) || !1,
1496
+ onUpdateChecked: (x) => {
1497
+ if (x && v.max && e.length >= v.max) return;
1498
+ let S = [...e || []];
1499
+ if (x) S.push(b.value);
1500
+ else {
1501
+ let e = S.indexOf(b.value);
1502
+ S.splice(e, 1);
1503
+ }
1504
+ y(S);
1505
+ },
1506
+ style: "margin-left: 3px"
1507
+ }, _isSlot(x = renderUsers([b], {
1508
+ max: 1,
1509
+ size: 24,
1510
+ placement: "right",
1511
+ tooltip: !1,
1512
+ username: !0
1513
+ })) ? x : { default: () => [x] }) : createVNode(NRadio, {
1514
+ checked: C.has(b.value) || !1,
1515
+ onUpdateChecked: (e) => {
1516
+ y(e ? [b.value] : []);
1517
+ },
1518
+ style: "margin-left: 3px;"
1519
+ }, _isSlot(S = renderUsers([b], {
1520
+ max: 1,
1521
+ size: 24,
1522
+ placement: "right",
1523
+ tooltip: !1,
1524
+ username: !0
1525
+ })) ? S : { default: () => [S] }) : createVNode("div", {
1526
+ onClick: () => {
1527
+ L.value = !1, I.value.push(b), R(b);
1528
+ },
1529
+ style: "cursor: pointer; display: flex; align-items: center; gap: 8px"
1530
+ }, [
1531
+ b.type === "dept" ? createVNode(NAvatar, {
1532
+ size: 24,
1533
+ style: "background-color: red"
1534
+ }, { default: () => [createVNode(NIcon, null, { default: () => [createVNode(IDept, null, null)] })] }) : createVNode(NAvatar, {
1535
+ size: 24,
1536
+ style: "background-color: green"
1537
+ }, { default: () => [createVNode(NIcon, null, { default: () => [createVNode(IGroup, null, null)] })] }),
1538
+ createVNode("span", { style: "flex: 1 1 auto" }, [b.label]),
1539
+ createVNode(NIcon, null, { default: () => [createVNode(IRight, null, null)] })
1540
+ ])] });
1541
+ })) ? S : { default: () => [S] }) : createVNode(NEmpty, null, null)]);
1542
+ }, H = () => createVNode(NEmpty, { description: v.placeholder }, null), U = ({ option: e }) => e.type === "user" ? createVNode("span", null, [e.nickname, createVNode("span", { style: {
1543
+ opacity: .4,
1544
+ marginLeft: "8px"
1545
+ } }, [e.username])]) : createVNode("span", null, [e.label]), W = (e, y, b, x, S) => createVNode(NTransfer, mergeProps(e, {
1546
+ key: v.type,
1547
+ options: y,
1548
+ renderSourceList: ({ onCheck: e, pattern: v }) => V(b, e, v),
1549
+ renderTargetList: v.placeholder?.trim() && !v.modelValue?.length ? H : void 0,
1550
+ renderTargetLabel: U,
1551
+ sourceFilterable: v.filterable,
1552
+ size: v.size,
1553
+ disabled: v.disabled || void 0,
1554
+ value: b,
1555
+ filter: (e, v) => v.label.includes(e) || v.value.includes(e),
1556
+ "onUpdate:value": (e) => {
1557
+ x?.(e);
1558
+ },
1559
+ onUpdateValue: (e) => {
1560
+ S?.(e);
1561
+ }
1562
+ }), null), G = ({ option: e, handleClose: y }) => createVNode(NTag, {
1563
+ type: v.type === "user" ? "primary" : "info",
1564
+ closable: !0,
1565
+ onMousedown: (e) => e.preventDefault(),
1566
+ onClose: (e) => {
1567
+ e.stopPropagation(), y();
1568
+ }
1569
+ }, { default: () => [e.label] }), K = (e, b = "updateModelValue") => {
1570
+ v.multiple ? y(b, e) : y(b, e?.[0]);
1571
+ }, q = ref(), Y = !1, X = useDialog(), Q = () => {
1572
+ if (Y) return;
1573
+ Y = !0;
1574
+ let e = shallowRef([...E.value || []]);
1575
+ X.create({
1576
+ showIcon: !1,
1577
+ title: v.placeholder,
1578
+ style: { width: "700px" },
1579
+ content: () => createVNode("div", { style: { height: "550px" } }, [W({ style: { height: "100%" } }, v.type === "user" ? O.value : k.value, e.value, (v) => e.value = v)]),
1580
+ positiveText: S.value.positiveText,
1581
+ negativeText: S.value.negativeText,
1582
+ onPositiveClick() {
1583
+ K(e.value, "update:modelValue"), K(e.value, "updateModelValue");
1584
+ },
1585
+ onAfterLeave() {
1586
+ nextTick(() => {
1587
+ q.value?.blur(), Y = !1;
1588
+ });
1589
+ }
1590
+ });
1591
+ }, $ = { arrow: () => createVNode(NIcon, null, { default: () => [v.type === "user" ? createVNode(IGroup, null, null) : createVNode(IDept, null, null)] }) };
1592
+ return () => {
1593
+ let e = v.type === "user" ? O.value : k.value;
1594
+ if (v.selectType === "dropdown" && v.type === "dept") return createVNode(NTreeSelect, {
1595
+ options: e,
1596
+ keyField: "value",
1597
+ defaultExpandAll: v.defaultExpandAll,
1598
+ checkable: v.multiple,
1599
+ multiple: v.multiple,
1600
+ filter: (e, v) => v.label.includes(e) || v.value.includes(e),
1601
+ value: v.modelValue,
1602
+ onUpdateValue: (e) => {
1603
+ v.multiple && v.max && e?.length > v.max || y("updateModelValue", e);
1604
+ },
1605
+ "onUpdate:value": (e) => {
1606
+ v.multiple && v.max && e?.length > v.max || y("update:modelValue", e);
1607
+ }
1608
+ }, _isSlot($) ? $ : { default: () => [$] });
1609
+ if (v.selectType === "transfer") return W(b, e, E.value, (e) => K(e, "update:modelValue"), (e) => K(e, "updateModelValue"));
1610
+ let x = v.selectType === "dropdown";
1611
+ return createVNode(NSelect, mergeProps(b, {
1612
+ key: v.type,
1613
+ ref: q,
1614
+ show: x ? void 0 : !1,
1615
+ filterable: x ? v.filterable : !1,
1616
+ options: e,
1617
+ multiple: v.multiple,
1618
+ size: v.size,
1619
+ placeholder: v.placeholder,
1620
+ disabled: v.disabled || void 0,
1621
+ value: v.modelValue,
1622
+ renderTag: v.multiple ? G : void 0,
1623
+ onFocus: x ? void 0 : Q,
1624
+ onUpdateValue: (e) => {
1625
+ y("updateModelValue", e);
1626
+ },
1627
+ "onUpdate:value": (e) => {
1628
+ y("update:modelValue", e);
1629
+ }
1630
+ }), _isSlot($) ? $ : { default: () => [$] });
1631
+ };
1632
+ }
1633
+ });
1634
+ function renderUser(e, v, { placement: y, size: b, tooltip: x = !0, username: S = !1 }) {
1635
+ let C = e.nickname.split(" ").at(-1), T = C;
1636
+ return /^[\u4E00-\u9FA5]+$/.test(C) ? T = C.length >= 3 ? C.slice(-2) : C : C.length > 4 && (T = createVNode(NIcon, null, { default: () => [createVNode(IAccount, null, null)] })), createVNode(NPopover, {
1637
+ key: e.username,
1638
+ raw: !0,
1639
+ placement: y,
1640
+ disabled: x === !1
1641
+ }, {
1642
+ default: () => createVNode(NCard, {
1643
+ style: "width: 200px",
1644
+ size: "small"
1645
+ }, { default: () => [createVNode(NH4, null, { default: () => [e.nickname] }), createVNode("span", null, [e.username])] }),
1646
+ trigger: () => {
1647
+ let y = createVNode(NAvatar, {
1648
+ color: "var(--color-primary)",
1649
+ round: !0,
1650
+ size: b,
1651
+ style: v ? {
1652
+ position: "absolute",
1653
+ bottom: -(b - 16) / 2 + "px"
1654
+ } : ""
1655
+ }, _isSlot(T) ? T : { default: () => [T] });
1656
+ return v ? createVNode("div", { style: v ? {
1657
+ display: "inline-flex",
1658
+ itemsAlign: "center",
1659
+ whiteSpace: "nowrap",
1660
+ minWidth: b + "px",
1661
+ height: b + "px"
1662
+ } : "" }, [y, v ? createVNode(Fragment, null, [createVNode("span", { style: { marginLeft: b + 6 + "px" } }, [e.nickname]), S ? createVNode("span", { style: {
1663
+ marginLeft: "8px",
1664
+ opacity: .4
1665
+ } }, [e.username]) : void 0]) : void 0]) : y;
1666
+ }
1667
+ });
1668
+ }
1669
+ function renderUsers(e, v = {}) {
1670
+ v.size ||= 24, v.max ||= 4;
1671
+ let { max: y, size: b } = v;
1672
+ return e.length <= 1 ? createVNode("span", { style: "position: relative" }, [e.map((e) => renderUser(e, !0, v))]) : createVNode("span", { style: {
1673
+ display: "inline-block",
1674
+ height: b + "px"
1675
+ } }, [createVNode(NAvatarGroup, {
1676
+ options: e,
1677
+ size: b,
1678
+ max: y || 4,
1679
+ style: "top: -2px"
1680
+ }, {
1681
+ avatar: ({ option: e }) => renderUser(e, !1, v),
1682
+ rest: ({ options: e, rest: v }) => createVNode(NDropdown, {
1683
+ options: e,
1684
+ keyField: "username",
1685
+ labelField: "nickname",
1686
+ renderOption: ({ option: v }) => renderUser(v, !1, e)
1687
+ }, { default: () => [createVNode(NAvatar, null, { default: () => [createTextVNode("+"), v] })] })
1688
+ })]);
1689
+ }
1690
+ const DtDeptRender = /* @__PURE__ */ defineComponent({
1691
+ name: "DeptRender",
1692
+ props: {
1693
+ value: [String, Array],
1694
+ multiple: Boolean,
1695
+ getDeptsByCode: Function
1696
+ },
1697
+ setup(e) {
1698
+ let v = ref([]), y = {};
1699
+ return watch([() => e.modelValue, () => e.multiple], ([b, x]) => {
1700
+ v.value = [];
1701
+ let S = b ? x ? Array.isArray(b) ? b : b.trim() ? b.trim().split(",") : [] : [b] : [], C = [];
1702
+ for (let [e, b] of S.entries()) y[b] || (y[b] = reactive({
1703
+ code: b,
1704
+ name: b
1705
+ }), C.push(b)), v.value[e] = y[b];
1706
+ C.length > 0 && e.getDeptsByCode(C).then((e) => {
1707
+ for (let v of e) Object.assign(y[v.code], v);
1708
+ });
1709
+ }, { immediate: !0 }), () => v.value.map((e) => createVNode(NTag, { key: e.code }, { default: () => [e.name] }));
1710
+ }
1711
+ }), DtUserRender = /* @__PURE__ */ defineComponent({
1712
+ name: "UserRender",
1713
+ props: {
1714
+ value: [String, Array],
1715
+ multiple: Boolean,
1716
+ max: Number,
1717
+ size: Number,
1718
+ placement: String,
1719
+ getUsersByUsername: Function
1720
+ },
1721
+ setup(e) {
1722
+ let v = ref([]), y = {};
1723
+ return watch([() => e.modelValue, () => e.multiple], ([b, x]) => {
1724
+ v.value = [];
1725
+ let S = b ? x ? Array.isArray(b) ? b : b.trim() ? b.trim().split(",") : [] : [b] : [], C = [];
1726
+ for (let [e, b] of S.entries()) y[b] || (y[b] = reactive({
1727
+ code: b,
1728
+ name: b
1729
+ }), C.push(b)), v.value[e] = y[b];
1730
+ C.length > 0 && e.getUsersByUsername(C).then((e) => {
1731
+ for (let v of e) Object.assign(y[v.code], v);
1732
+ });
1733
+ }, { immediate: !0 }), () => renderUsers(v.value, e);
1734
+ }
1735
+ });
1736
+ export { DataActions as _, NRadios as a, DataSelection as c, useLocaleEdit as d, DataFilter as f, DataCustom as g, dataFormActionsProps as h, renderUsers as i, DataPagination as l, DataFormActions as m, DtUserDept as n, DataTable as o, DataForm as p, DtUserRender as r, useDataTableDrag as s, DtDeptRender as t, DataLocaleInput as u, NCheckboxes as v };