hy-dispatch-ui-v3 0.1.6 → 0.2.0

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 (160) hide show
  1. package/README.md +47 -0
  2. package/dist/tailwind.css +349 -4
  3. package/es/components/appAudioPlayer/appAudioPlayer.vue.mjs +462 -0
  4. package/es/components/appAudioPlayer/index.mjs +6 -0
  5. package/es/components/appAudioPlayer/js/index.mjs +327 -0
  6. package/es/components/appAudioPlayer/style/appAudioPlayer.scss +319 -0
  7. package/es/components/appButton/style/appButton.scss +0 -1
  8. package/es/components/appConfigProvider/appConfigProvider.vue.mjs +22 -1
  9. package/es/components/appCutter/appCutter.vue.mjs +202 -129
  10. package/es/components/appDatePicker/appDatePicker.vue.mjs +1 -1
  11. package/es/components/appForm/appForm.vue.mjs +132 -209
  12. package/es/components/appForm/cpns/appFormItem.vue.mjs +312 -0
  13. package/es/components/appForm/cpns/arrayItem.vue.mjs +305 -0
  14. package/es/components/appForm/cpns/extraItem.vue.mjs +140 -0
  15. package/es/components/appForm/js/index.mjs +46 -24
  16. package/es/components/appForm/js/useAppForm.mjs +30 -6
  17. package/es/components/appForm/style/appForm.scss +53 -0
  18. package/es/components/appIcon/appIcon.vue.mjs +2 -1
  19. package/es/components/appIconBox/style/appIconBox.scss +0 -1
  20. package/es/components/appInput/appInput.vue.mjs +99 -0
  21. package/es/components/appInput/index.mjs +6 -0
  22. package/es/components/appMenu/appMenu.vue.mjs +129 -0
  23. package/es/components/appMenu/index.mjs +6 -0
  24. package/es/components/appMenu/style/appMenu.scss +145 -0
  25. package/es/components/appOrgCascader/appOrgCascader.vue.mjs +14 -10
  26. package/es/components/appSearch/appSearch.vue.mjs +55 -211
  27. package/es/components/appSearch/cpns/appSearchItem.vue.mjs +238 -0
  28. package/es/components/appSearch/js/index.mjs +20 -8
  29. package/es/components/appSearch/js/useAppSearch.mjs +10 -5
  30. package/es/components/appSearch/style/appSearch.scss +10 -0
  31. package/es/components/appTable/appTable.vue.mjs +312 -158
  32. package/es/components/appTable/cpns/columnSelect.vue.mjs +151 -156
  33. package/es/components/appTable/cpns/columnSelectItem.vue2.mjs +104 -110
  34. package/es/components/appTable/cpns/headerItem.vue.mjs +98 -0
  35. package/es/components/appTable/cpns/virtualTable.vue.mjs +560 -0
  36. package/es/components/appTable/js/index.mjs +46 -20
  37. package/es/components/appTable/js/search.mjs +1 -2
  38. package/es/components/appTable/js/useAppTable.mjs +58 -14
  39. package/es/components/appTable/style/appTable.scss +16 -0
  40. package/es/components/appTooltip/appTooltip.vue.mjs +24 -13
  41. package/es/components/appTree/appTree.vue.mjs +304 -0
  42. package/es/components/appTree/index.mjs +6 -0
  43. package/es/components/appTree/js/index.mjs +531 -0
  44. package/es/components/appUserAvatar/appUserAvatar.vue.mjs +9 -8
  45. package/es/components/appUserAvatar/style/appUserAvatar.scss +0 -1
  46. package/es/components/appVideoPlayer/appVideoPlayer.vue.mjs +647 -0
  47. package/es/components/appVideoPlayer/cpns/mediaLoading.vue.mjs +35 -0
  48. package/es/components/appVideoPlayer/index.mjs +6 -0
  49. package/es/components/appVideoPlayer/js/index.mjs +426 -0
  50. package/es/components/appVideoPlayer/style/appVideoPlayer.scss +275 -0
  51. package/es/components/appVideoPlayer/style/mediaLoading.scss +62 -0
  52. package/es/components/index.mjs +5 -0
  53. package/es/hooks/index.mjs +3 -0
  54. package/es/hooks/useApi.mjs +4 -4
  55. package/es/hooks/useAudioPlayerConfig.mjs +12 -0
  56. package/es/hooks/useGlobalConfig.mjs +18 -7
  57. package/es/hooks/useLocale.mjs +3 -11
  58. package/es/hooks/useMixins.mjs +1 -1
  59. package/es/hooks/usePermissionMap.mjs +12 -0
  60. package/es/hooks/useUserAvatarMap.mjs +2 -3
  61. package/es/hooks/useVideoPlayerConfig.mjs +12 -0
  62. package/es/index.mjs +14 -4
  63. package/es/locale/en.mjs +52 -3
  64. package/es/locale/zh_CN.mjs +48 -3
  65. package/es/make-installer.mjs +2 -0
  66. package/es/static/hy-svg-icons.js +462 -0
  67. package/es/static/protocolcheck.js +247 -0
  68. package/es/style/element/element.scss +9 -0
  69. package/es/style/element/index.scss +6 -3
  70. package/es/style/index.scss +11 -0
  71. package/es/style/theme.scss +73 -0
  72. package/es/utils/date.mjs +25 -1
  73. package/es/utils/file.mjs +5 -4
  74. package/es/utils/form.mjs +52 -0
  75. package/es/utils/handler.mjs +22 -2
  76. package/es/utils/index.mjs +6 -4
  77. package/es/utils/is.mjs +23 -2
  78. package/es/utils/loadScript.mjs +33 -0
  79. package/es/version.mjs +1 -1
  80. package/lib/components/appAudioPlayer/appAudioPlayer.vue.js +466 -0
  81. package/lib/components/appAudioPlayer/index.js +11 -0
  82. package/lib/components/appAudioPlayer/js/index.js +329 -0
  83. package/lib/components/appAudioPlayer/style/appAudioPlayer.scss +319 -0
  84. package/lib/components/appButton/style/appButton.scss +0 -1
  85. package/lib/components/appConfigProvider/appConfigProvider.vue.js +22 -1
  86. package/lib/components/appCutter/appCutter.vue.js +201 -128
  87. package/lib/components/appDatePicker/appDatePicker.vue.js +1 -1
  88. package/lib/components/appForm/appForm.vue.js +129 -206
  89. package/lib/components/appForm/cpns/appFormItem.vue.js +316 -0
  90. package/lib/components/appForm/cpns/arrayItem.vue.js +309 -0
  91. package/lib/components/appForm/cpns/extraItem.vue.js +144 -0
  92. package/lib/components/appForm/js/index.js +48 -23
  93. package/lib/components/appForm/js/useAppForm.js +30 -6
  94. package/lib/components/appForm/style/appForm.scss +53 -0
  95. package/lib/components/appIcon/appIcon.vue.js +2 -1
  96. package/lib/components/appIconBox/style/appIconBox.scss +0 -1
  97. package/lib/components/appInput/appInput.vue.js +103 -0
  98. package/lib/components/appInput/index.js +11 -0
  99. package/lib/components/appMenu/appMenu.vue.js +133 -0
  100. package/lib/components/appMenu/index.js +11 -0
  101. package/lib/components/appMenu/style/appMenu.scss +145 -0
  102. package/lib/components/appOrgCascader/appOrgCascader.vue.js +14 -10
  103. package/lib/components/appSearch/appSearch.vue.js +51 -207
  104. package/lib/components/appSearch/cpns/appSearchItem.vue.js +242 -0
  105. package/lib/components/appSearch/js/index.js +20 -7
  106. package/lib/components/appSearch/js/useAppSearch.js +10 -5
  107. package/lib/components/appSearch/style/appSearch.scss +10 -0
  108. package/lib/components/appTable/appTable.vue.js +319 -165
  109. package/lib/components/appTable/cpns/columnSelect.vue.js +151 -156
  110. package/lib/components/appTable/cpns/columnSelectItem.vue2.js +105 -111
  111. package/lib/components/appTable/cpns/headerItem.vue.js +102 -0
  112. package/lib/components/appTable/cpns/virtualTable.vue.js +564 -0
  113. package/lib/components/appTable/js/index.js +47 -19
  114. package/lib/components/appTable/js/search.js +1 -2
  115. package/lib/components/appTable/js/useAppTable.js +57 -13
  116. package/lib/components/appTable/style/appTable.scss +16 -0
  117. package/lib/components/appTooltip/appTooltip.vue.js +23 -12
  118. package/lib/components/appTree/appTree.vue.js +308 -0
  119. package/lib/components/appTree/index.js +11 -0
  120. package/lib/components/appTree/js/index.js +533 -0
  121. package/lib/components/appUserAvatar/appUserAvatar.vue.js +9 -8
  122. package/lib/components/appUserAvatar/style/appUserAvatar.scss +0 -1
  123. package/lib/components/appVideoPlayer/appVideoPlayer.vue.js +651 -0
  124. package/lib/components/appVideoPlayer/cpns/mediaLoading.vue.js +39 -0
  125. package/lib/components/appVideoPlayer/index.js +11 -0
  126. package/lib/components/appVideoPlayer/js/index.js +429 -0
  127. package/lib/components/appVideoPlayer/style/appVideoPlayer.scss +275 -0
  128. package/lib/components/appVideoPlayer/style/mediaLoading.scss +62 -0
  129. package/lib/components/index.js +42 -32
  130. package/lib/hooks/index.js +9 -0
  131. package/lib/hooks/useApi.js +4 -4
  132. package/lib/hooks/useAudioPlayerConfig.js +15 -0
  133. package/lib/hooks/useGlobalConfig.js +18 -7
  134. package/lib/hooks/useLocale.js +3 -11
  135. package/lib/hooks/useMixins.js +1 -1
  136. package/lib/hooks/usePermissionMap.js +15 -0
  137. package/lib/hooks/useUserAvatarMap.js +1 -2
  138. package/lib/hooks/useVideoPlayerConfig.js +15 -0
  139. package/lib/index.js +62 -33
  140. package/lib/locale/en.js +52 -3
  141. package/lib/locale/zh_CN.js +48 -3
  142. package/lib/make-installer.js +2 -0
  143. package/lib/static/hy-svg-icons.js +459 -8
  144. package/lib/static/protocolcheck.js +249 -0
  145. package/lib/style/element/element.scss +9 -0
  146. package/lib/style/element/index.scss +6 -3
  147. package/lib/style/index.scss +11 -0
  148. package/lib/style/theme.scss +73 -0
  149. package/lib/utils/date.js +25 -0
  150. package/lib/utils/file.js +4 -4
  151. package/lib/utils/form.js +57 -0
  152. package/lib/utils/handler.js +22 -1
  153. package/lib/utils/index.js +11 -1
  154. package/lib/utils/is.js +23 -1
  155. package/lib/utils/loadScript.js +37 -0
  156. package/lib/version.js +1 -1
  157. package/package.json +12 -10
  158. package/es/config/index.mjs +0 -1
  159. package/es/static/hy-svg-icons.mjs +0 -11
  160. package/lib/config/index.js +0 -2
@@ -0,0 +1,102 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ var vue = require('vue');
6
+ var elementPlus = require('element-plus');
7
+ var iconsVue = require('@element-plus/icons-vue');
8
+
9
+ const _sfc_main = {
10
+ __name: "headerItem",
11
+ props: {
12
+ type: {
13
+ type: String,
14
+ default: "default"
15
+ },
16
+ column: {
17
+ type: Object,
18
+ default: () => ({})
19
+ },
20
+ filterModel: {
21
+ Object,
22
+ default: () => ({})
23
+ }
24
+ },
25
+ emits: ["search"],
26
+ setup(__props, { emit: __emit }) {
27
+ const props = __props;
28
+ const emits = __emit;
29
+ const columnSort = vue.computed(() => {
30
+ return props.column.sort;
31
+ });
32
+ function isSortActive(prop, order) {
33
+ return props.filterModel.sortBy === prop && props.filterModel.orderSort === order;
34
+ }
35
+ function onSortHandler(prop, order) {
36
+ if (props.filterModel.orderSort === "asc") {
37
+ if (props.filterModel.sortBy === prop) {
38
+ if (order) {
39
+ props.filterModel.orderSort = order === "asc" ? null : order;
40
+ } else {
41
+ props.filterModel.orderSort = null;
42
+ props.filterModel.sortBy = null;
43
+ }
44
+ } else {
45
+ props.filterModel.orderSort = order || "desc";
46
+ props.filterModel.sortBy = prop;
47
+ }
48
+ } else if (props.filterModel.orderSort === "desc") {
49
+ if (props.filterModel.sortBy === prop) {
50
+ if (order) {
51
+ props.filterModel.orderSort = order === "desc" ? null : order;
52
+ } else {
53
+ props.filterModel.orderSort = "asc";
54
+ }
55
+ } else {
56
+ props.filterModel.orderSort = order || "desc";
57
+ props.filterModel.sortBy = prop;
58
+ }
59
+ } else {
60
+ props.filterModel.orderSort = order || "desc";
61
+ props.filterModel.sortBy = prop;
62
+ }
63
+ emits("search");
64
+ }
65
+ return (_ctx, _cache) => {
66
+ return columnSort.value.show ? (vue.openBlock(), vue.createElementBlock("div", {
67
+ key: 0,
68
+ class: "w-full relative cursor-pointer",
69
+ onClick: ($event) => onSortHandler(columnSort.value.prop, null)
70
+ }, [
71
+ vue.createElementVNode("div", { class: "flex flex-col absolute top-1/2 -left-1 transform -translate-y-1/2 -translate-x-full" }, [
72
+ vue.createVNode(vue.unref(elementPlus.ElIcon), {
73
+ size: "8",
74
+ color: isSortActive(columnSort.value.prop, "asc") ? "rgba(var(--hy-theme))" : "rgba(var(--hy-auxiliary))",
75
+ onClick: vue.withModifiers(($event) => onSortHandler(columnSort.value.prop, "asc"), ["stop"])
76
+ }, {
77
+ default: vue.withCtx(() => [
78
+ vue.createVNode(vue.unref(iconsVue.ArrowUpBold))
79
+ ]),
80
+ _: 1
81
+ /* STABLE */
82
+ }, 8, ["color", "onClick"]),
83
+ vue.createVNode(vue.unref(elementPlus.ElIcon), {
84
+ size: "8",
85
+ color: isSortActive(columnSort.value.prop, "desc") ? "rgba(var(--hy-theme))" : "rgba(var(--hy-auxiliary))",
86
+ class: "-mt-0.5",
87
+ onClick: vue.withModifiers(($event) => onSortHandler(columnSort.value.prop, "desc"), ["stop"])
88
+ }, {
89
+ default: vue.withCtx(() => [
90
+ vue.createVNode(vue.unref(iconsVue.ArrowDownBold))
91
+ ]),
92
+ _: 1
93
+ /* STABLE */
94
+ }, 8, ["color", "onClick"])
95
+ ]),
96
+ vue.renderSlot(_ctx.$slots, "default")
97
+ ], 8, ["onClick"])) : vue.renderSlot(_ctx.$slots, "default", { key: 1 });
98
+ };
99
+ }
100
+ };
101
+
102
+ exports.default = _sfc_main;
@@ -0,0 +1,564 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ var vue = require('vue');
6
+ var elementPlus = require('element-plus');
7
+ var iconsVue = require('@element-plus/icons-vue');
8
+ var index = require('../js/index.js');
9
+ var headerItem = require('./headerItem.vue.js');
10
+ var index$2 = require('../../appIcon/index.js');
11
+ var useLocale = require('../../../hooks/useLocale.js');
12
+ var is = require('../../../utils/is.js');
13
+ var index$1 = require('../../appTooltip/index.js');
14
+
15
+ const _sfc_main = {
16
+ __name: "virtualTable",
17
+ props: {
18
+ rowKey: {
19
+ type: [String, Number]
20
+ },
21
+ width: {
22
+ type: Number
23
+ },
24
+ height: {
25
+ type: Number
26
+ },
27
+ data: {
28
+ type: Array,
29
+ default: () => []
30
+ },
31
+ columns: {
32
+ type: Array,
33
+ default: () => []
34
+ },
35
+ columnsEditable: {
36
+ type: Object,
37
+ default: () => ({})
38
+ },
39
+ showHeader: {
40
+ type: Boolean,
41
+ default: true
42
+ },
43
+ isShowAllSelect: {
44
+ type: Boolean,
45
+ default: true
46
+ },
47
+ filterModel: {
48
+ type: Object,
49
+ default: () => ({})
50
+ },
51
+ onRowClick: {
52
+ type: Function
53
+ },
54
+ onRowContextmenu: {
55
+ type: Function
56
+ }
57
+ },
58
+ emits: ["search", "select", "select-all"],
59
+ setup(__props, { expose: __expose, emit: __emit }) {
60
+ const props = __props;
61
+ const emits = __emit;
62
+ const { t } = useLocale.useLocale();
63
+ const expandedKeys = vue.ref([]);
64
+ const expandedMap = vue.computed(() => {
65
+ return expandedKeys.value.reduce((keyMap, key, index) => {
66
+ keyMap.set(key, index);
67
+ return keyMap;
68
+ }, /* @__PURE__ */ new Map());
69
+ });
70
+ const avgWidth = vue.computed(() => {
71
+ const { total, totalWidth } = props.columns.reduce(
72
+ ({ total: total2, totalWidth: totalWidth2 }, column) => {
73
+ if (props.columnsEditable[column.prop]?.checked) {
74
+ if (is.isNumber(column.width) && column.width > 0) {
75
+ totalWidth2 += column.width;
76
+ } else {
77
+ total2++;
78
+ }
79
+ }
80
+ return { total: total2, totalWidth: totalWidth2 };
81
+ },
82
+ { total: 0, totalWidth: 0 }
83
+ );
84
+ if (totalWidth >= props.width) return 80;
85
+ const avg = Math.floor((props.width - totalWidth) / total);
86
+ return avg < 80 ? 80 : avg;
87
+ });
88
+ const tableColumns = vue.computed(() => {
89
+ return props.columns.filter((column) => {
90
+ return props.columnsEditable[column.prop]?.checked;
91
+ }).map((column) => {
92
+ return { ...column, width: column.width || avgWidth.value };
93
+ });
94
+ });
95
+ const selectionColumn = vue.computed(() => {
96
+ return props.columns.find((item) => item.type === "selection");
97
+ });
98
+ const expandColumn = vue.computed(() => {
99
+ return props.columns.find((item) => item.type === "expand");
100
+ });
101
+ const isExpandTable = vue.computed(() => {
102
+ return expandColumn.value?.expandType === "expand";
103
+ });
104
+ const dataSource = vue.computed(() => {
105
+ if (!isExpandTable.value) return props.data;
106
+ return props.data.map((item) => ({
107
+ ...item,
108
+ children: item.children?.length ? item.children : [{ id: /* @__PURE__ */ Symbol("expandKey"), rowType: "expand" }]
109
+ }));
110
+ });
111
+ const dataSourceMap = vue.computed(() => {
112
+ return generateDataSourceMap(dataSource.value);
113
+ });
114
+ function getRowKey(row) {
115
+ return row[props.rowKey];
116
+ }
117
+ function generateDataSourceMap(list, dataMap = /* @__PURE__ */ new Map()) {
118
+ return (list || []).reduce((dataMap2, data) => {
119
+ if (data.children) {
120
+ generateDataSourceMap(data.children, dataMap2);
121
+ }
122
+ if (data?.rowType !== "expand") {
123
+ dataMap2.set(getRowKey(data), data);
124
+ }
125
+ return dataMap2;
126
+ }, dataMap);
127
+ }
128
+ function columnIndexHandler({ column, row, $index, cellIndex }) {
129
+ if (is.isFunction(column.index)) {
130
+ return column.index($index);
131
+ }
132
+ return $index + 1;
133
+ }
134
+ function onRowClickHandler(options) {
135
+ options = is.isArray(options)[0] ? options[0] : options;
136
+ if (!options) return;
137
+ const { rowData: row, event } = options;
138
+ const target = event?.target;
139
+ const classList = [
140
+ ...target?.classList || [],
141
+ ...target?.parentNode?.classList || [],
142
+ ...target?.parentNode?.parentNode?.classList || []
143
+ ];
144
+ if (classList.some((item) => item === "hy-el-table-v2__expand-icon")) {
145
+ return;
146
+ }
147
+ if (row.rowType === "expand") return;
148
+ if (!props.onRowClick) return;
149
+ props.onRowClick(row, void 0, event);
150
+ }
151
+ function onContextmenuHandler(options) {
152
+ options = is.isArray(options)[0] ? options[0] : options;
153
+ if (!options) return;
154
+ const { rowData: row, event } = options;
155
+ if (row.rowType === "expand") return;
156
+ if (!props.onRowContextmenu) return;
157
+ props.onRowContextmenu(row, void 0, event);
158
+ }
159
+ const isAllChecked = vue.ref(false);
160
+ const selectedMap = vue.ref(/* @__PURE__ */ new Map());
161
+ const indeterminateKeys = vue.ref(/* @__PURE__ */ new Set());
162
+ function isSelectable(row) {
163
+ const column = selectionColumn.value;
164
+ if (!is.isFunction(column?.selectable)) return true;
165
+ return column.selectable(row);
166
+ }
167
+ function switchCheckHandler(row) {
168
+ if (!isSelectable(row)) return;
169
+ toggleRowSelection(row);
170
+ emits("select", Array.from(selectedMap.value.values()), row);
171
+ }
172
+ function toggleRowSelection(row, selected) {
173
+ const key = getRowKey(row);
174
+ if (!dataSourceMap.value.has(key)) {
175
+ throw Error(`toggleRowSelection\uFF1A\u627E\u4E0D\u5230\u3010${getRowKey(row)}\u3011`);
176
+ }
177
+ const checkedNodeMap = new Map(selectedMap.value);
178
+ const isChecked = is.isBoolean(selected) ? selected : !checkedNodeMap.has(key);
179
+ const toggle = (node, checked) => {
180
+ const nodeKey = getRowKey(node);
181
+ if (isSelectable(node)) {
182
+ if (checked) {
183
+ checkedNodeMap.set(nodeKey, node);
184
+ } else {
185
+ checkedNodeMap.delete(nodeKey);
186
+ }
187
+ }
188
+ const children = node.children;
189
+ if (children) {
190
+ children.forEach((childNode) => {
191
+ toggle(childNode, checked);
192
+ });
193
+ }
194
+ };
195
+ toggle(row, isChecked);
196
+ const result = generateIndeterminate(dataSource.value, checkedNodeMap);
197
+ isAllChecked.value = result.allChecked;
198
+ selectedMap.value = result.checkedNodeMap;
199
+ indeterminateKeys.value = result.indeterminateKeys;
200
+ }
201
+ function toggleAllSelection() {
202
+ if (isAllChecked.value) {
203
+ isAllChecked.value = false;
204
+ selectedMap.value.clear();
205
+ } else {
206
+ let checkedNodeMap = /* @__PURE__ */ new Map();
207
+ isAllChecked.value = true;
208
+ for (let [key, value] of dataSourceMap.value) {
209
+ if (isSelectable(value)) {
210
+ checkedNodeMap.set(key, value);
211
+ }
212
+ }
213
+ selectedMap.value = checkedNodeMap;
214
+ }
215
+ indeterminateKeys.value.clear();
216
+ emits("select-all", Array.from(selectedMap.value.values()));
217
+ }
218
+ function generateIndeterminate(list, checkedNodeMap = /* @__PURE__ */ new Map()) {
219
+ const handler = (list2, checkedNodeMap2 = /* @__PURE__ */ new Map(), indeterminateKeys3 = /* @__PURE__ */ new Set()) => {
220
+ let allChecked2 = true, hasChecked = false;
221
+ for (let i = 0; i < list2.length; i++) {
222
+ const node = list2[i];
223
+ const nodeKey = getRowKey(node);
224
+ if (node.children?.length) {
225
+ const result = handler(node.children, checkedNodeMap2, indeterminateKeys3);
226
+ if (isSelectable(node)) {
227
+ allChecked2 = allChecked2 && result.allChecked;
228
+ hasChecked = hasChecked || result.hasChecked;
229
+ if (result.allChecked) {
230
+ checkedNodeMap2.set(nodeKey, node);
231
+ } else {
232
+ checkedNodeMap2.delete(nodeKey, node);
233
+ if (result.hasChecked) {
234
+ indeterminateKeys3.add(nodeKey);
235
+ }
236
+ }
237
+ }
238
+ } else {
239
+ const isChecked = checkedNodeMap2.has(nodeKey);
240
+ allChecked2 = allChecked2 && isChecked;
241
+ hasChecked = hasChecked || isChecked;
242
+ }
243
+ }
244
+ return { allChecked: allChecked2, hasChecked };
245
+ };
246
+ const indeterminateKeys2 = /* @__PURE__ */ new Set();
247
+ const { allChecked } = handler(list, checkedNodeMap, indeterminateKeys2);
248
+ return { checkedNodeMap, indeterminateKeys: indeterminateKeys2, allChecked };
249
+ }
250
+ __expose({
251
+ toggleRowSelection,
252
+ toggleAllSelection,
253
+ toggleRowExpansion(row, expanded) {
254
+ const index = expandedMap.value.get(getRowKey(row));
255
+ const isExpanded = is.isBoolean(expanded) ? expanded : !is.isNumber(index);
256
+ if (isExpanded) {
257
+ if (!is.isNumber(index)) {
258
+ expandedKeys.value.push(getRowKey(row));
259
+ }
260
+ } else {
261
+ if (is.isNumber(index)) {
262
+ expandedKeys.value.splice(index, 1);
263
+ }
264
+ }
265
+ },
266
+ clearSelection: () => {
267
+ isAllChecked.value = false;
268
+ selectedMap.value.clear();
269
+ indeterminateKeys.value.clear();
270
+ }
271
+ });
272
+ return (_ctx, _cache) => {
273
+ return vue.openBlock(), vue.createBlock(vue.unref(elementPlus.ElTableV2), {
274
+ "expanded-row-keys": expandedKeys.value,
275
+ "onUpdate:expandedRowKeys": ($event) => expandedKeys.value = $event,
276
+ "row-key": __props.rowKey,
277
+ data: dataSource.value,
278
+ columns: tableColumns.value,
279
+ width: __props.width,
280
+ height: __props.height,
281
+ "header-height": __props.showHeader ? 44 : 0,
282
+ "expand-column-key": expandColumn.value?.key,
283
+ fixed: "",
284
+ "row-event-handlers": {
285
+ onClick: onRowClickHandler,
286
+ onContextmenu: onContextmenuHandler
287
+ }
288
+ }, {
289
+ "header-cell": vue.withCtx(({ column, columnIndex: $index }) => [
290
+ vue.createVNode(headerItem.default, {
291
+ type: "virtual",
292
+ column,
293
+ "filter-model": __props.filterModel,
294
+ onSearch: () => emits("search")
295
+ }, {
296
+ default: vue.withCtx(() => [
297
+ vue.renderSlot(_ctx.$slots, column.headerSlot, vue.normalizeProps(vue.guardReactiveProps({ column, $index })), () => [
298
+ column.type === "selection" ? (vue.openBlock(), vue.createElementBlock(
299
+ vue.Fragment,
300
+ { key: 0 },
301
+ [
302
+ __props.isShowAllSelect ? (vue.openBlock(), vue.createBlock(vue.unref(elementPlus.ElCheckbox), {
303
+ key: 0,
304
+ "model-value": isAllChecked.value,
305
+ indeterminate: !isAllChecked.value && !!selectedMap.value.size,
306
+ onClick: vue.withModifiers(toggleAllSelection, ["stop"])
307
+ }, null, 8, ["model-value", "indeterminate"])) : vue.createCommentVNode("v-if", true)
308
+ ],
309
+ 64
310
+ /* STABLE_FRAGMENT */
311
+ )) : !vue.unref(is.isEmpty)(vue.unref(index.renderHeaderHandler)(column, { column, $index })) ? (vue.openBlock(), vue.createBlock(vue.unref(index$1.AppTooltip), {
312
+ key: 1,
313
+ "over-line": 1,
314
+ content: vue.unref(index.renderHeaderHandler)(column, { column, $index })
315
+ }, null, 8, ["content"])) : vue.createCommentVNode("v-if", true)
316
+ ])
317
+ ]),
318
+ _: 2
319
+ /* DYNAMIC */
320
+ }, 1032, ["column", "filter-model", "onSearch"])
321
+ ]),
322
+ cell: vue.withCtx(({ column, columnIndex: cellIndex, rowData: row, rowIndex: $index }) => [
323
+ column.type === "expand" && isExpandTable.value ? (vue.openBlock(), vue.createElementBlock(
324
+ vue.Fragment,
325
+ { key: 0 },
326
+ [],
327
+ 64
328
+ /* STABLE_FRAGMENT */
329
+ )) : column.type === "selection" ? (vue.openBlock(), vue.createBlock(vue.unref(elementPlus.ElCheckbox), {
330
+ key: 1,
331
+ "model-value": selectedMap.value.has(getRowKey(row)),
332
+ indeterminate: indeterminateKeys.value.has(getRowKey(row)),
333
+ disabled: !isSelectable(row),
334
+ onClick: vue.withModifiers(($event) => switchCheckHandler(row), ["stop"])
335
+ }, null, 8, ["model-value", "indeterminate", "disabled", "onClick"])) : column?.slot ? vue.renderSlot(_ctx.$slots, column?.slot, vue.normalizeProps(vue.mergeProps({ key: 2 }, { column, row, $index, cellIndex }))) : column.type === "index" ? (vue.openBlock(), vue.createElementBlock(
336
+ vue.Fragment,
337
+ { key: 3 },
338
+ [
339
+ vue.createTextVNode(
340
+ vue.toDisplayString(columnIndexHandler({ column, row, $index, cellIndex })),
341
+ 1
342
+ /* TEXT */
343
+ )
344
+ ],
345
+ 64
346
+ /* STABLE_FRAGMENT */
347
+ )) : column.type === "operator" ? (vue.openBlock(), vue.createElementBlock("div", {
348
+ key: 4,
349
+ class: "w-full flex items-center justify-between text-main",
350
+ onClick: vue.withModifiers(() => {
351
+ }, ["stop"]),
352
+ onContextmenu: vue.withModifiers(() => {
353
+ }, ["stop"])
354
+ }, [
355
+ (vue.openBlock(true), vue.createElementBlock(
356
+ vue.Fragment,
357
+ null,
358
+ vue.renderList(vue.unref(index.operatorFilterHandler)(
359
+ column,
360
+ { column, row, $index, cellIndex },
361
+ "default"
362
+ ), (citem, cindex) => {
363
+ return vue.openBlock(), vue.createBlock(vue.unref(index$1.AppTooltip), {
364
+ key: cindex,
365
+ "is-always": "",
366
+ content: citem.label
367
+ }, {
368
+ default: vue.withCtx(() => [
369
+ vue.createElementVNode("div", {
370
+ class: vue.normalizeClass(["w-[40px] h-[48px] inline-flex flex-col items-center justify-center text-xs hover:font-bold border border-transparent hover:border-theme hover:shadow-[0px_0px_5px_0px_rgba(var(--hy-theme),0.5)] rounded box-border cursor-pointer", citem.className]),
371
+ onClick: ($event) => vue.unref(index.operatorClickHandler)(
372
+ cindex,
373
+ column,
374
+ { column, row, $index, cellIndex },
375
+ "default"
376
+ )
377
+ }, [
378
+ vue.createVNode(vue.unref(index$2.AppIcon), {
379
+ "svg-name": citem.svgName,
380
+ "class-name": "!w-4 !h-4"
381
+ }, null, 8, ["svg-name"]),
382
+ citem.subLabel ? (vue.openBlock(), vue.createElementBlock(
383
+ "div",
384
+ {
385
+ key: 0,
386
+ class: "mt-1 whitespace-nowrap"
387
+ },
388
+ vue.toDisplayString(citem.subLabel),
389
+ 1
390
+ /* TEXT */
391
+ )) : (vue.openBlock(), vue.createElementBlock("div", {
392
+ key: 1,
393
+ class: "mt-1 whitespace-nowrap"
394
+ }, "\xA0"))
395
+ ], 10, ["onClick"])
396
+ ]),
397
+ _: 2
398
+ /* DYNAMIC */
399
+ }, 1032, ["content"]);
400
+ }),
401
+ 128
402
+ /* KEYED_FRAGMENT */
403
+ )),
404
+ vue.unref(index.operatorFilterHandler)(
405
+ column,
406
+ { column, row, $index, cellIndex },
407
+ "more"
408
+ )?.length ? (vue.openBlock(), vue.createBlock(vue.unref(elementPlus.ElDropdown), {
409
+ key: 0,
410
+ ref: "operatorDropdownRef",
411
+ trigger: "click",
412
+ "popper-style": "min-width: 150px",
413
+ placement: "bottom",
414
+ onCommand: ($event) => vue.unref(index.operatorClickHandler)(
415
+ $event,
416
+ column,
417
+ { column, row, $index, cellIndex },
418
+ "more"
419
+ )
420
+ }, {
421
+ dropdown: vue.withCtx(() => [
422
+ vue.createVNode(
423
+ vue.unref(elementPlus.ElDropdownMenu),
424
+ null,
425
+ {
426
+ default: vue.withCtx(() => [
427
+ (vue.openBlock(true), vue.createElementBlock(
428
+ vue.Fragment,
429
+ null,
430
+ vue.renderList(vue.unref(index.operatorFilterHandler)(
431
+ column,
432
+ { column, row, $index, cellIndex },
433
+ "more"
434
+ ), (citem, cindex) => {
435
+ return vue.openBlock(), vue.createBlock(vue.unref(elementPlus.ElDropdownItem), {
436
+ key: cindex,
437
+ command: cindex,
438
+ disabled: vue.unref(index.operatorDisabledHandler)(citem, {
439
+ column,
440
+ row,
441
+ $index,
442
+ cellIndex
443
+ })
444
+ }, {
445
+ default: vue.withCtx(() => [
446
+ vue.createElementVNode("span", null, [
447
+ vue.createElementVNode(
448
+ "span",
449
+ null,
450
+ vue.toDisplayString(citem.label),
451
+ 1
452
+ /* TEXT */
453
+ ),
454
+ vue.unref(index.operatorDisabledHandler)(citem, {
455
+ column,
456
+ row,
457
+ $index,
458
+ cellIndex
459
+ }) ? (vue.openBlock(), vue.createElementBlock(
460
+ "span",
461
+ {
462
+ key: 0,
463
+ class: "text-xs leading-1"
464
+ },
465
+ "\uFF08" + vue.toDisplayString(vue.unref(index.operatorDisableTextdHandler)(citem, {
466
+ column,
467
+ row,
468
+ $index,
469
+ cellIndex
470
+ })) + "\uFF09",
471
+ 1
472
+ /* TEXT */
473
+ )) : vue.createCommentVNode("v-if", true)
474
+ ])
475
+ ]),
476
+ _: 2
477
+ /* DYNAMIC */
478
+ }, 1032, ["command", "disabled"]);
479
+ }),
480
+ 128
481
+ /* KEYED_FRAGMENT */
482
+ ))
483
+ ]),
484
+ _: 2
485
+ /* DYNAMIC */
486
+ },
487
+ 1024
488
+ /* DYNAMIC_SLOTS */
489
+ )
490
+ ]),
491
+ default: vue.withCtx(() => [
492
+ vue.createElementVNode("span", null, [
493
+ vue.createVNode(vue.unref(index$1.AppTooltip), {
494
+ "is-always": "",
495
+ content: vue.unref(t)("table.moreOperations")
496
+ }, {
497
+ default: vue.withCtx(() => [
498
+ vue.createElementVNode("div", { class: "w-[40px] h-[48px] inline-flex flex-col items-center justify-center text-main text-xs hover:font-bold border border-transparent hover:border-theme hover:shadow-[0px_0px_5px_0px_rgba(var(--hy-theme),0.5)] rounded box-border cursor-pointer" }, [
499
+ vue.createElementVNode("div", { class: "w-4 h-4" }, [
500
+ vue.createVNode(vue.unref(elementPlus.ElIcon), {
501
+ size: "16",
502
+ color: "rgba(var(--hy-main))"
503
+ }, {
504
+ default: vue.withCtx(() => [
505
+ vue.createVNode(vue.unref(iconsVue.MoreFilled))
506
+ ]),
507
+ _: 1
508
+ /* STABLE */
509
+ })
510
+ ]),
511
+ vue.createElementVNode(
512
+ "div",
513
+ { class: "mt-1" },
514
+ vue.toDisplayString(vue.unref(t)("table.more")),
515
+ 1
516
+ /* TEXT */
517
+ )
518
+ ])
519
+ ]),
520
+ _: 1
521
+ /* STABLE */
522
+ }, 8, ["content"])
523
+ ])
524
+ ]),
525
+ _: 2
526
+ /* DYNAMIC */
527
+ }, 1032, ["onCommand"])) : vue.createCommentVNode("v-if", true)
528
+ ], 40, ["onClick", "onContextmenu"])) : ["default", "expand"].includes(column.type) ? (vue.openBlock(), vue.createElementBlock(
529
+ vue.Fragment,
530
+ { key: 5 },
531
+ [
532
+ !vue.unref(is.isEmpty)(
533
+ vue.unref(index.renderContentHandler)(column, { column, row, $index, cellIndex })
534
+ ) ? (vue.openBlock(), vue.createBlock(vue.unref(index$1.AppTooltip), {
535
+ key: 0,
536
+ "over-line": 2,
537
+ content: vue.unref(index.renderContentHandler)(column, { column, row, $index, cellIndex })
538
+ }, null, 8, ["content"])) : (vue.openBlock(), vue.createElementBlock("span", {
539
+ key: 1,
540
+ class: "text-auxiliary"
541
+ }, "- -"))
542
+ ],
543
+ 64
544
+ /* STABLE_FRAGMENT */
545
+ )) : vue.createCommentVNode("v-if", true)
546
+ ]),
547
+ row: vue.withCtx(({ cells, depth, expanded, rowData: row }) => [
548
+ depth > 0 && isExpandTable.value ? vue.renderSlot(_ctx.$slots, expandColumn.value.slot, {
549
+ key: 0,
550
+ row,
551
+ expanded: expandedMap.value.has(getRowKey(row))
552
+ }) : (vue.openBlock(), vue.createBlock(vue.resolveDynamicComponent(() => cells), { key: 1 }))
553
+ ]),
554
+ empty: vue.withCtx(() => [
555
+ vue.renderSlot(_ctx.$slots, "empty")
556
+ ]),
557
+ _: 3
558
+ /* FORWARDED */
559
+ }, 8, ["expanded-row-keys", "onUpdate:expandedRowKeys", "row-key", "data", "columns", "width", "height", "header-height", "expand-column-key", "row-event-handlers"]);
560
+ };
561
+ }
562
+ };
563
+
564
+ exports.default = _sfc_main;