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