@dt-frames/ui 2.0.10 → 2.0.12

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 (64) hide show
  1. package/es/components/container/index.d.ts +2 -93
  2. package/es/components/curd/index.js +7 -2966
  3. package/es/components/curd/src/components/Curd.d.ts +19 -891
  4. package/es/components/curd/src/hooks/useCurd.d.ts +2 -2
  5. package/es/components/curd/src/props.d.ts +6 -4
  6. package/es/components/curd/src/types/curd.type.d.ts +2 -2
  7. package/es/components/drawer/index.d.ts +10 -167
  8. package/es/components/drawer/index.js +24 -462
  9. package/es/components/drawer/src/components/DrawerFooter.d.ts +1 -84
  10. package/es/components/drawer/src/index.d.ts +10 -167
  11. package/es/components/drawer/src/types/index.type.d.ts +2 -2
  12. package/es/components/form/index.d.ts +5 -1
  13. package/es/components/form/index.js +81 -485
  14. package/es/components/form/src/components/FormItem.d.ts +3 -1
  15. package/es/components/form/src/components/formIcon.d.ts +3 -11
  16. package/es/components/form/src/components/formInputUseDialog.d.ts +2 -2
  17. package/es/components/form/src/props.d.ts +7 -5
  18. package/es/components/form/src/types/form.type.d.ts +3 -0
  19. package/es/components/form/src/types/items.type.d.ts +6 -4
  20. package/es/components/icons/index.d.ts +497 -497
  21. package/es/components/iframe/index.d.ts +2 -0
  22. package/es/components/iframe/index.js +72 -0
  23. package/es/components/iframe/index.less +29 -0
  24. package/es/components/iframe/src/index.d.ts +38 -0
  25. package/es/components/modal/index.d.ts +2 -1
  26. package/es/components/modal/index.js +23 -475
  27. package/es/components/modal/src/components/Modal.d.ts +1 -1
  28. package/es/components/modal/src/components/ModalFooter.d.ts +2 -95
  29. package/es/components/modal/src/components/ModalWrap.d.ts +1 -75
  30. package/es/components/modal/src/index.d.ts +14 -179
  31. package/es/components/table/index.js +328 -2030
  32. package/es/components/table/src/components/TableAction.d.ts +1 -1
  33. package/es/components/table/src/components/editTable/EditTableCell.d.ts +1 -1
  34. package/es/components/table/src/components/tableSetting/DownloadCtrl.d.ts +1 -877
  35. package/es/components/table/src/index.d.ts +10 -10
  36. package/es/components/tree/src/components/TreeHeader.d.ts +1 -1
  37. package/es/components/tree/src/index.d.ts +2 -2
  38. package/es/components/upload/index.d.ts +2 -0
  39. package/es/components/upload/index.js +419 -0
  40. package/es/components/upload/index.less +37 -0
  41. package/es/components/upload/src/basicProps.d.ts +89 -0
  42. package/es/components/upload/src/components/PdfView.d.ts +9 -0
  43. package/es/components/upload/src/hooks/useFile.d.ts +15 -0
  44. package/es/components/upload/src/index.d.ts +236 -0
  45. package/es/components/upload/src/type/file.d.ts +10 -0
  46. package/es/components/upload/src/utils/upload.d.ts +2 -0
  47. package/es/theme/index.d.ts +2 -1
  48. package/es/theme/index.js +98 -145
  49. package/es/theme/index.less +5 -1
  50. package/es/theme/src/components/content/index.d.ts +2 -0
  51. package/es/theme/src/components/header/index.d.ts +809 -809
  52. package/es/theme/src/components/header/multiple-header.d.ts +918 -918
  53. package/es/theme/src/hooks/useMenu.d.ts +1 -1
  54. package/es/theme/src/index.d.ts +2059 -2057
  55. package/index.d.ts +3 -1
  56. package/index.js +24 -2
  57. package/manualContentPath.js +124 -0
  58. package/package.json +8 -3
  59. package/vite.config.ts +19 -4
  60. package/es/components/curd/index.less +0 -2
  61. package/es/components/form/src/index.d.ts +0 -2922
  62. package/es/components/table/src/components/TableHeader.d.ts +0 -1136
  63. package/es/components/table/src/components/tableSetting/Download.d.ts +0 -922
  64. package/es/components/table/src/components/tableSetting/index.d.ts +0 -1030
@@ -1,498 +1,24 @@
1
- import { DtCache, CacheKey, deepMerge, Pages, useGo, useRedo, Language, useAppStore, useSlots, error, http, useApp, getDynamicProps, isBoolean, isFunction, getPopupContainer, useI18n, isNumber, isArray, isObject, isString, dispatchResize, useTimeoutFn, off, on, windowResizeFn, useMessage, isNullAndUnDef, getDictValueByCode, formatNumber, isVnode } from "@dt-frames/core";
2
- import { toRaw as toRaw$1, unref, computed, useSlots as useSlots$1, ref, watch, onUnmounted, defineComponent, useAttrs, resolveDirective, openBlock, createElementBlock, Fragment, renderList, withDirectives, createVNode, withCtx, createTextVNode, toDisplayString, createElementVNode, normalizeClass, normalizeStyle, createCommentVNode, createBlock, provide, inject, h as h$1, mergeProps, nextTick, getCurrentInstance, reactive, readonly, watchEffect, isRef, normalizeProps, toRefs, isVNode, onMounted, onBeforeUnmount, resolveDynamicComponent, renderSlot, createSlots, guardReactiveProps } from "vue";
3
- import { defineStore } from "pinia";
4
- import { cloneDeep, omit, isEqual } from "lodash-es";
5
- import { Tooltip, MenuItem, Menu, Dropdown, RadioButton, RadioGroup, Button, FormItem, Col, Spin, Checkbox as Checkbox$1, Divider as Divider$1, Row, CheckboxGroup, Popover as Popover$1, Table } from "ant-design-vue/es";
1
+ import { useAppStore, useSlots, error, http, useApp, getDynamicProps, isBoolean, isFunction, getPopupContainer, useI18n, isNumber, isArray, isObject, isString, useMessage, isNullAndUnDef, windowResizeFn, off, on, getDictValueByCode, formatNumber, isVnode } from "@dt-frames/core";
2
+ import { useSlots as useSlots$1, unref, ref, watch, onUnmounted, defineComponent, useAttrs, resolveDirective, openBlock, createElementBlock, Fragment, renderList, withDirectives, createVNode, withCtx, createTextVNode, toDisplayString, createElementVNode, normalizeClass, normalizeStyle, createCommentVNode, createBlock, provide, inject, h as h$1, computed as computed$1, mergeProps, nextTick, toRaw as toRaw$1, reactive, watchEffect, normalizeProps, renderSlot, onMounted, createSlots, guardReactiveProps } from "vue";
3
+ import { useHeader } from "../../theme";
4
+ import { Tooltip, MenuItem, Menu, Dropdown, Checkbox as Checkbox$1, Divider, Col, Row, Button, CheckboxGroup, Popover as Popover$1, Table } from "ant-design-vue/es";
6
5
  import "ant-design-vue/es/table/style";
6
+ import { omit, cloneDeep, isEqual } from "lodash-es";
7
7
  import "ant-design-vue/es/dropdown/style";
8
8
  import "ant-design-vue/es/menu/style";
9
9
  import "ant-design-vue/es/tooltip/style";
10
- import { useDebounceFn, useFullscreen, isFunction as isFunction$1 } from "@vueuse/core";
11
- import { Input, InputNumber, Select, TreeSelect, Switch, Checkbox, DatePicker, TimePicker, Popover, Radio, AutoComplete, Cascader, Slider, Rate, Divider, Modal } from "ant-design-vue";
12
- import "ant-design-vue/es/radio/style";
13
- import "ant-design-vue/es/cascader/style";
14
- import "ant-design-vue/es/input-number/style";
15
- import "ant-design-vue/es/switch/style";
16
- import "ant-design-vue/es/tree-select/style";
17
- import "ant-design-vue/es/slider/style";
18
- import "ant-design-vue/es/rate/style";
19
- import "ant-design-vue/es/date-picker/style";
20
- import "ant-design-vue/es/col/style";
21
- import "ant-design-vue/es/form/style";
22
- import "ant-design-vue/es/button/style";
23
- import "ant-design-vue/es/spin/style";
24
- import "ant-design-vue/es/modal/style";
10
+ import { useDebounceFn, useFullscreen, isFunction as isFunction$1, tryOnMounted } from "@vueuse/core";
11
+ import { Input, InputNumber, Select, TreeSelect, Switch, Checkbox, DatePicker, TimePicker, Popover } from "ant-design-vue";
12
+ import { DtFormButtons } from "../form";
13
+ import { useModal, DtModal, useModalOut } from "../modal";
25
14
  import "ant-design-vue/es/row/style";
15
+ import "ant-design-vue/es/col/style";
26
16
  import "ant-design-vue/es/divider/style";
27
17
  import "ant-design-vue/es/checkbox/style";
28
18
  import "ant-design-vue/es/popover/style";
19
+ import "ant-design-vue/es/button/style";
29
20
  import Sortablejs from "sortablejs";
30
21
  import dayjs from "dayjs";
31
- var Theme = /* @__PURE__ */ ((Theme2) => {
32
- Theme2["DARK"] = "dark";
33
- Theme2["LIGHT"] = "light";
34
- return Theme2;
35
- })(Theme || {});
36
- var MenuType = /* @__PURE__ */ ((MenuType2) => {
37
- MenuType2["SIDE"] = "sidebar";
38
- MenuType2["TOP_MENU"] = "top-menu";
39
- MenuType2["MIX"] = "mix";
40
- MenuType2["MIX_SIDEBAR"] = "mix-sidebar";
41
- return MenuType2;
42
- })(MenuType || {});
43
- var MenuMode = /* @__PURE__ */ ((MenuMode2) => {
44
- MenuMode2["INLINE"] = "inline";
45
- MenuMode2["HORIZONTAL"] = "horizontal";
46
- MenuMode2["VERTICAL"] = "vertical";
47
- return MenuMode2;
48
- })(MenuMode || {});
49
- var ContentMode = /* @__PURE__ */ ((ContentMode2) => {
50
- ContentMode2["FULL"] = "full";
51
- ContentMode2["FIXED"] = "fixed";
52
- return ContentMode2;
53
- })(ContentMode || {});
54
- var UiSize = /* @__PURE__ */ ((UiSize2) => {
55
- UiSize2["LARGE"] = "large";
56
- UiSize2["MIDDLE"] = "middle";
57
- UiSize2["SMALL"] = "small";
58
- return UiSize2;
59
- })(UiSize || {});
60
- const defaultThemeConf = {
61
- content: {
62
- contentMode: ContentMode.FULL
63
- },
64
- headOptions: {
65
- fixed: true,
66
- theme: Theme.LIGHT,
67
- showLogo: true,
68
- showBackToTop: true,
69
- useLockPage: true,
70
- size: UiSize.SMALL,
71
- showSize: true,
72
- showBreadCrumb: true,
73
- showFullScreen: true,
74
- showSearch: true,
75
- showNotice: true,
76
- showLocaleSwitch: true,
77
- showSettingTheme: true,
78
- showLoginOut: true
79
- },
80
- menuOptions: {
81
- fixed: true,
82
- theme: Theme.DARK,
83
- collapsed: false,
84
- collapsedShowTitle: false,
85
- canDrag: true,
86
- show: true,
87
- hidden: false,
88
- split: false,
89
- menuWidth: 240,
90
- trigger: true,
91
- type: MenuType.SIDE,
92
- mode: MenuMode.INLINE,
93
- mixSideTrigger: "hover"
94
- },
95
- footerOptions: {
96
- show: false,
97
- height: 48,
98
- title: "Copyright(C) 2021 by www.ithinkdt.com. All rights reserved.",
99
- subTitle: "Privacy Statement"
100
- },
101
- routeReuse: {
102
- show: true,
103
- cache: false,
104
- canDrag: true,
105
- showQuick: true,
106
- showRedo: true,
107
- showFold: true
108
- }
109
- };
110
- const useThemeStore = defineStore({
111
- id: "dt-theme",
112
- state: () => ({
113
- themeConf: DtCache.getLocal(CacheKey.THEME) ?? cloneDeep(defaultThemeConf),
114
- pageLoading: false,
115
- mixSiderHasSubMenu: false
116
- }),
117
- getters: {
118
- getThemeConf() {
119
- return this.themeConf;
120
- },
121
- getHeaderConf() {
122
- return this.themeConf.headOptions;
123
- },
124
- getMenuConf() {
125
- return this.themeConf.menuOptions;
126
- },
127
- getFooterConf() {
128
- return this.themeConf.footerOptions;
129
- },
130
- getRouteReuseConf() {
131
- return this.themeConf.routeReuse;
132
- },
133
- getPageLoading() {
134
- return this.pageLoading;
135
- },
136
- getMixSiderIsHasMenu() {
137
- return this.mixSiderHasSubMenu;
138
- }
139
- },
140
- actions: {
141
- setThemeConf(options = {}) {
142
- let newThemeConf = deepMerge(this.themeConf, options);
143
- this.themeConf = deepMerge(defaultThemeConf, newThemeConf);
144
- DtCache.setLocal(CacheKey.THEME, this.themeConf);
145
- },
146
- setMixSiderIsHasMenu(val) {
147
- this.mixSiderHasSubMenu = val;
148
- },
149
- resetState() {
150
- DtCache.removeLocal(CacheKey.THEME);
151
- this.themeConf = cloneDeep(defaultThemeConf);
152
- }
153
- }
154
- });
155
- function handleGotoPage(router) {
156
- const go = useGo(router);
157
- go(unref(router.currentRoute).path, true);
158
- }
159
- defineStore({
160
- id: "route-reuse",
161
- state: () => ({
162
- cacheTabList: /* @__PURE__ */ new Set(),
163
- tabList: DtCache.getLocal(CacheKey.ROUTE_REUSE) || [],
164
- lastDragEndIndex: 0
165
- }),
166
- getters: {
167
- getTabList() {
168
- return this.tabList;
169
- },
170
- getCachedTabList() {
171
- return Array.from(this.cacheTabList);
172
- },
173
- getLastDragEndIndex() {
174
- return this.lastDragEndIndex;
175
- }
176
- },
177
- actions: {
178
- async addTab(route) {
179
- const { path, name, fullPath, params, query, meta } = route;
180
- if (path === Pages.NOT_FOUND || path === Pages.LOGIN || path === Pages.BASE_PAGE) {
181
- return;
182
- }
183
- let updateIndex = -1;
184
- const tabHasExits = this.tabList.some((tab, index) => {
185
- updateIndex = index;
186
- return (tab.fullPath || tab.path) === (fullPath || path);
187
- });
188
- if (tabHasExits) {
189
- const curTab = toRaw$1(this.tabList)[updateIndex];
190
- curTab.params = params || curTab.params;
191
- curTab.query = query || curTab.query;
192
- curTab.fullPath = fullPath || curTab.fullPath;
193
- this.tabList.splice(updateIndex, 1, curTab);
194
- } else {
195
- this.tabList.push(JSON.parse(JSON.stringify(route)));
196
- }
197
- this.updateCacheTab();
198
- },
199
- closeTab(route, router) {
200
- const go = useGo(router);
201
- const index = this.tabList.findIndex((item) => item.path === route.path);
202
- let page;
203
- if (index === 0) {
204
- if (this.tabList.length !== 1) {
205
- page = this.tabList[index + 1];
206
- }
207
- } else {
208
- page = this.tabList[index - 1];
209
- }
210
- this.bulkCloseTabs([route.path]);
211
- this.updateCacheTab();
212
- route.path === router.currentRoute.value.path && go(page.path);
213
- },
214
- closeAllTab(currentRoute, router) {
215
- const go = useGo(router);
216
- let filterTabList = this.tabList.filter((item) => item?.meta?.affix ?? false);
217
- const route = filterTabList.length > 0 ? filterTabList[filterTabList.length - 1] : unref(currentRoute);
218
- this.tabList = [route];
219
- this.updateCacheTab();
220
- go(route.path);
221
- },
222
- closeLeftTabs(route, router) {
223
- const index = this.tabList.findIndex((item) => item.path === route.path);
224
- if (index > 0) {
225
- const leftTabs = this.tabList.slice(0, index);
226
- const pathList = [];
227
- for (const item of leftTabs) {
228
- const affix = item?.meta?.affix ?? false;
229
- if (!affix) {
230
- pathList.push(item.fullPath);
231
- }
232
- }
233
- this.bulkCloseTabs(pathList);
234
- }
235
- this.updateCacheTab();
236
- handleGotoPage(router);
237
- },
238
- closeRightTabs(route, router) {
239
- const index = this.tabList.findIndex((item) => item.path === route.path);
240
- if (index >= 0 && index < this.tabList.length - 1) {
241
- const rightTabs = this.tabList.slice(index + 1, this.tabList.length);
242
- const pathList = [];
243
- for (const item of rightTabs) {
244
- const affix = item?.meta?.affix ?? false;
245
- if (!affix) {
246
- pathList.push(item.fullPath);
247
- }
248
- }
249
- this.bulkCloseTabs(pathList);
250
- }
251
- this.updateCacheTab();
252
- handleGotoPage(router);
253
- },
254
- closeOtherTabs(route, router) {
255
- const pathList = [];
256
- for (let item of this.tabList) {
257
- const affix = item?.meta?.affix ?? false;
258
- if (item.path !== route.path && !affix) {
259
- pathList.push(item.path);
260
- }
261
- }
262
- this.bulkCloseTabs(pathList);
263
- this.updateCacheTab();
264
- handleGotoPage(router);
265
- },
266
- closeTabByKey(path, router) {
267
- const go = useGo(router);
268
- const index = this.tabList.findIndex((item) => item.path === path);
269
- let page;
270
- if (index === 0) {
271
- if (this.tabList.length !== 1) {
272
- page = this.tabList[index + 1];
273
- }
274
- } else {
275
- page = this.tabList[index - 1];
276
- }
277
- this.bulkCloseTabs([path]);
278
- this.updateCacheTab();
279
- path === router.currentRoute.value.path && go(page.path);
280
- },
281
- bulkCloseTabs(pathList) {
282
- this.tabList = this.tabList.filter((item) => !pathList.includes(item.fullPath));
283
- },
284
- updateCacheTab() {
285
- DtCache.setLocal(CacheKey.ROUTE_REUSE, this.tabList);
286
- const cacheMap = /* @__PURE__ */ new Set();
287
- for (const tab of this.tabList) {
288
- if (tab.meta?.hideTab) {
289
- continue;
290
- }
291
- const name = tab.name;
292
- cacheMap.add(name);
293
- }
294
- this.cacheTabList = cacheMap;
295
- },
296
- async refreshPage(router) {
297
- const findTab = this.getCachedTabList.find((item) => item === unref(router.currentRoute).name);
298
- if (findTab) {
299
- this.cacheTabList.delete(findTab.toString());
300
- }
301
- const redo = useRedo(router);
302
- await redo();
303
- },
304
- sortTabs(oldIndex, newIndex) {
305
- const currentTab = this.tabList[oldIndex];
306
- this.tabList.splice(oldIndex, 1);
307
- this.tabList.splice(newIndex, 0, currentTab);
308
- this.lastDragEndIndex = this.lastDragEndIndex + 1;
309
- },
310
- resetState() {
311
- this.tabList = [];
312
- this.updateCacheTab();
313
- }
314
- }
315
- });
316
- function useMenu() {
317
- const { setThemeConf } = useThemeStore();
318
- const getCollapsedShowTitle = computed(() => useThemeStore().getMenuConf.collapsedShowTitle);
319
- const getIsSidebarType = computed(() => useThemeStore().getMenuConf.type === MenuType.SIDE);
320
- const getMenuFixed = computed(() => useThemeStore().getMenuConf.fixed);
321
- const getShowMenu = computed(() => useThemeStore().getMenuConf.show);
322
- const getShowSidebar = computed(() => {
323
- return unref(getSplit) || unref(getShowMenu) && unref(getMenuMode) !== MenuMode.HORIZONTAL;
324
- });
325
- const getMenuHidden = computed(() => useThemeStore().getMenuConf.hidden);
326
- const getMenuTheme = computed(() => useThemeStore().getMenuConf.theme);
327
- const getTrigger = computed(() => useThemeStore().getMenuConf.trigger);
328
- const getCanDrag = computed(() => useThemeStore().getMenuConf.canDrag);
329
- const getIsMixMode = computed(() => {
330
- return unref(getMenuMode) === MenuMode.INLINE && unref(getMenuType) === MenuType.MIX;
331
- });
332
- const getIsMixSidebar = computed(() => unref(getMenuType) === MenuType.MIX_SIDEBAR);
333
- const getMenuWidth = computed(() => {
334
- if (unref(getIsMixMode)) {
335
- return Number(useThemeStore().getMenuConf.menuWidth) - 40;
336
- } else if (unref(getIsMixSidebar)) {
337
- return Number(useThemeStore().getMenuConf.menuWidth) - 10;
338
- } else {
339
- return Number(useThemeStore().getMenuConf.menuWidth);
340
- }
341
- });
342
- const getMixSideTrigger = computed(() => useThemeStore().getMenuConf.mixSideTrigger);
343
- const getLogoWidth = computed(() => unref(getIsMixSidebar) ? "80px" : useThemeStore().getMenuConf.menuWidth);
344
- const getMenuType = computed(() => useThemeStore().getMenuConf.type);
345
- const getIsTopMenu = computed(() => unref(getMenuType) === MenuType.TOP_MENU);
346
- const getMenuMode = computed(() => useThemeStore().getMenuConf.mode);
347
- const getSplit = computed(() => useThemeStore().getMenuConf.split);
348
- const getCollapsed = computed(() => useThemeStore().getMenuConf.collapsed);
349
- const getIsHorizontal = computed(() => unref(getMenuMode) === MenuMode.HORIZONTAL);
350
- const setThemeStore = (conf = {}) => setThemeConf(conf);
351
- const toggleCollapsed = () => setThemeStore({
352
- menuOptions: {
353
- collapsed: !unref(getCollapsed)
354
- }
355
- });
356
- const getMiniWidthNumber = computed(() => useThemeStore().getMenuConf.collapsedShowTitle ? 80 : 48);
357
- const getRealWidth = computed(() => {
358
- return unref(getCollapsed) ? unref(getMiniWidthNumber) : unref(getMenuWidth);
359
- });
360
- const getCalcContentWidth = computed(() => {
361
- const width = unref(getIsTopMenu) || !unref(getShowMenu) || unref(getSplit) && unref(getMenuHidden) ? 0 : unref(getRealWidth);
362
- return `calc(100% - ${unref(width)}px)`;
363
- });
364
- return {
365
- getCollapsedShowTitle,
366
- getIsSidebarType,
367
- getMenuFixed,
368
- getShowMenu,
369
- getShowSidebar,
370
- getMenuHidden,
371
- getMenuTheme,
372
- getTrigger,
373
- getMenuWidth,
374
- getLogoWidth,
375
- getMenuType,
376
- getIsTopMenu,
377
- getMenuMode,
378
- getSplit,
379
- getCollapsed,
380
- getIsHorizontal,
381
- getMiniWidthNumber,
382
- getRealWidth,
383
- getCalcContentWidth,
384
- getIsMixMode,
385
- getIsMixSidebar,
386
- getCanDrag,
387
- getMixSideTrigger,
388
- toggleCollapsed,
389
- setThemeStore
390
- };
391
- }
392
- function useMultipleTab() {
393
- const { getRouteReuseConf } = useThemeStore();
394
- const getShowMultipleTab = computed(() => getRouteReuseConf.show);
395
- const getShowQuick = computed(() => getRouteReuseConf.showQuick);
396
- const getMultipleTabPosIsTop = computed(() => getRouteReuseConf.position === "top");
397
- const getShowRedo = computed(() => getRouteReuseConf.showRedo);
398
- const getCanCache = computed(() => getRouteReuseConf.cache);
399
- const getCanDrag = computed(() => getRouteReuseConf.canDrag);
400
- return {
401
- getShowMultipleTab,
402
- getShowQuick,
403
- getMultipleTabPosIsTop,
404
- getShowRedo,
405
- getCanCache,
406
- getCanDrag
407
- };
408
- }
409
- function useHeader() {
410
- const HEADER_HEIGHT = 48;
411
- const TABS_HEIGHT = 33;
412
- const { getHeaderConf = {} } = useThemeStore();
413
- const {
414
- getIsSidebarType,
415
- getMenuType,
416
- getShowMenu,
417
- getMenuHidden,
418
- getTrigger,
419
- getMenuMode,
420
- getSplit,
421
- getIsTopMenu,
422
- getIsMixSidebar
423
- } = useMenu();
424
- const { getShowMultipleTab, getMultipleTabPosIsTop } = useMultipleTab();
425
- const getHeaderTheme = computed(() => getHeaderConf.theme);
426
- const getFixed = computed(() => getHeaderConf.fixed);
427
- const getShowHeaderLogo = computed(() => unref(getShowLogo) && !unref(getIsSidebarType) && !unref(getIsMixSidebar));
428
- const getShowSearch = computed(() => getHeaderConf.showSearch);
429
- const getShowHeaderTrigger = computed(() => {
430
- if (unref(getMenuType) === MenuType.TOP_MENU || !unref(getShowMenu) || unref(getMenuHidden)) {
431
- return false;
432
- }
433
- return unref(getTrigger);
434
- });
435
- const getShowBreadCrumb = computed(() => getHeaderConf.showBreadCrumb);
436
- const getShowBread = computed(
437
- () => unref(getMenuMode) !== MenuMode.HORIZONTAL && !unref(getSplit) && unref(getShowBreadCrumb)
438
- );
439
- const getShowTopMenu = computed(() => unref(getMenuMode) === MenuMode.HORIZONTAL || unref(getSplit));
440
- const getShowNotice = computed(() => getHeaderConf.showNotice);
441
- const getShowFullScreen = computed(() => getHeaderConf.showFullScreen);
442
- const getShowLocale = computed(() => getHeaderConf.showLocaleSwitch);
443
- const getShowSettingTheme = computed(() => getHeaderConf.showSettingTheme);
444
- const getShowFullHeaderRef = computed(() => {
445
- return !unref(getIsSidebarType) && !unref(getIsMixSidebar) && !unref(getIsTopMenu);
446
- });
447
- const getHeaderHeight = computed(() => {
448
- let height = 0;
449
- height += HEADER_HEIGHT;
450
- if (unref(getShowMultipleTab) && !unref(getSplit) && !unref(getMultipleTabPosIsTop)) {
451
- height += TABS_HEIGHT;
452
- }
453
- return height;
454
- });
455
- const getTabsHeight = computed(() => TABS_HEIGHT);
456
- const getShowInsetHeaderRef = computed(() => {
457
- return unref(getIsSidebarType) || unref(getIsTopMenu) || unref(getIsMixSidebar);
458
- });
459
- const getShowBackToTop = computed(() => getHeaderConf.showBackToTop);
460
- const getIsZH = computed(() => {
461
- let local = DtCache.getLocal(CacheKey.LOCALE);
462
- if (!local)
463
- return true;
464
- return local === Language.ZH;
465
- });
466
- const getUiSize = computed(() => getHeaderConf?.size ?? UiSize.SMALL);
467
- const getShowUiSize = computed(() => getHeaderConf?.showSize);
468
- const getShowLogo = computed(() => getHeaderConf.showLogo);
469
- const getShowLoginOut = computed(() => getHeaderConf.showLoginOut);
470
- const loginOutClick = getHeaderConf.logoutClick;
471
- return {
472
- getHeaderTheme,
473
- getFixed,
474
- getShowSearch,
475
- getShowHeaderLogo,
476
- getShowHeaderTrigger,
477
- getShowBread,
478
- getShowTopMenu,
479
- getShowFullScreen,
480
- getShowLocale,
481
- getShowSettingTheme,
482
- getShowNotice,
483
- getShowFullHeaderRef,
484
- getHeaderHeight,
485
- getTabsHeight,
486
- getShowInsetHeaderRef,
487
- getShowBackToTop,
488
- getIsZH,
489
- getUiSize,
490
- getShowLogo,
491
- getShowLoginOut,
492
- getShowUiSize,
493
- loginOutClick
494
- };
495
- }
496
22
  const codeMap = /* @__PURE__ */ new Map();
497
23
  function useHeaderCode(code, changeColumns) {
498
24
  const { appConf } = useAppStore();
@@ -619,15 +145,15 @@ function useTable(props2) {
619
145
  return [registerTable, methods];
620
146
  }
621
147
  const _imports_0 = "data:image/png;base64,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";
622
- const _hoisted_1$a = { key: 0 };
623
- const _hoisted_2$3 = {
148
+ const _hoisted_1$8 = { key: 0 };
149
+ const _hoisted_2$2 = {
624
150
  key: 0,
625
151
  class: "dt-table-action-btn w-8 inline-block"
626
152
  };
627
- const _hoisted_3$3 = ["onClick"];
628
- const _hoisted_4$3 = /* @__PURE__ */ createElementVNode("i", { class: "i ic:baseline-settings dt-table-action-dropdown cursor-pointer" }, null, -1);
629
- const _hoisted_5$2 = { class: "text-13 opacity-80" };
630
- const _sfc_main$j = /* @__PURE__ */ defineComponent({
153
+ const _hoisted_3$2 = ["onClick"];
154
+ const _hoisted_4$2 = /* @__PURE__ */ createElementVNode("i", { class: "i ic:baseline-settings dt-table-action-dropdown cursor-pointer" }, null, -1);
155
+ const _hoisted_5$1 = { class: "text-13 opacity-80" };
156
+ const _sfc_main$9 = /* @__PURE__ */ defineComponent({
631
157
  __name: "TableAction",
632
158
  props: {
633
159
  fixed: {
@@ -690,10 +216,10 @@ const _sfc_main$j = /* @__PURE__ */ defineComponent({
690
216
  const _component_AMenu = Menu;
691
217
  const _component_ADropdown = Dropdown;
692
218
  const _directive_auth = resolveDirective("auth");
693
- return props2.expand ? (openBlock(), createElementBlock("div", _hoisted_1$a, [
219
+ return props2.expand ? (openBlock(), createElementBlock("div", _hoisted_1$8, [
694
220
  (openBlock(true), createElementBlock(Fragment, null, renderList(actionBtns.value, (item) => {
695
221
  return openBlock(), createElementBlock(Fragment, null, [
696
- item.ifShow ? withDirectives((openBlock(), createElementBlock("span", _hoisted_2$3, [
222
+ item.ifShow ? withDirectives((openBlock(), createElementBlock("span", _hoisted_2$2, [
697
223
  createVNode(_component_ATooltip, { placement: "bottom" }, {
698
224
  title: withCtx(() => [
699
225
  createTextVNode(toDisplayString(item.label()), 1)
@@ -705,13 +231,13 @@ const _sfc_main$j = /* @__PURE__ */ defineComponent({
705
231
  color: item.color
706
232
  }),
707
233
  onClick: ($event) => handleAction(item)
708
- }, null, 14, _hoisted_3$3)
234
+ }, null, 14, _hoisted_3$2)
709
235
  ]),
710
236
  _: 2
711
237
  }, 1024)
712
238
  ])), [
713
239
  [_directive_auth, item.auth]
714
- ]) : createCommentVNode("", true)
240
+ ]) : createCommentVNode("v-if", true)
715
241
  ], 64);
716
242
  }), 256))
717
243
  ])) : (openBlock(), createBlock(_component_ADropdown, {
@@ -735,10 +261,10 @@ const _sfc_main$j = /* @__PURE__ */ defineComponent({
735
261
  color: item.color
736
262
  })
737
263
  }, null, 6),
738
- createElementVNode("span", _hoisted_5$2, toDisplayString(item.label()), 1)
264
+ createElementVNode("span", _hoisted_5$1, toDisplayString(item.label()), 1)
739
265
  ]),
740
266
  _: 2
741
- }, 1032, ["onClick"])) : createCommentVNode("", true)
267
+ }, 1032, ["onClick"])) : createCommentVNode("v-if", true)
742
268
  ])), [
743
269
  [_directive_auth, item.auth]
744
270
  ]);
@@ -748,13 +274,21 @@ const _sfc_main$j = /* @__PURE__ */ defineComponent({
748
274
  })
749
275
  ]),
750
276
  default: withCtx(() => [
751
- _hoisted_4$3
277
+ _hoisted_4$2
752
278
  ]),
753
279
  _: 1
754
280
  }));
755
281
  };
756
282
  }
757
283
  });
284
+ const _export_sfc = (sfc, props2) => {
285
+ const target = sfc.__vccOpts || sfc;
286
+ for (const [key, val] of props2) {
287
+ target[key] = val;
288
+ }
289
+ return target;
290
+ };
291
+ const TableAction = /* @__PURE__ */ _export_sfc(_sfc_main$9, [["__file", "D:/dt/dt-frame-front/dt-frames/frames/packages/ui/src/components/table/src/components/TableAction.vue"]]);
758
292
  const tableKey = Symbol("dt-page");
759
293
  function createTableInstance(instance) {
760
294
  provide(tableKey, instance);
@@ -762,15 +296,15 @@ function createTableInstance(instance) {
762
296
  function getTableInstance() {
763
297
  return inject(tableKey);
764
298
  }
765
- const componentMap$1 = /* @__PURE__ */ new Map();
766
- componentMap$1.set("Input", Input);
767
- componentMap$1.set("InputNumber", InputNumber);
768
- componentMap$1.set("Select", Select);
769
- componentMap$1.set("TreeSelect", TreeSelect);
770
- componentMap$1.set("Switch", Switch);
771
- componentMap$1.set("Checkbox", Checkbox);
772
- componentMap$1.set("DatePicker", DatePicker);
773
- componentMap$1.set("TimePicker", TimePicker);
299
+ const componentMap = /* @__PURE__ */ new Map();
300
+ componentMap.set("Input", Input);
301
+ componentMap.set("InputNumber", InputNumber);
302
+ componentMap.set("Select", Select);
303
+ componentMap.set("TreeSelect", TreeSelect);
304
+ componentMap.set("Switch", Switch);
305
+ componentMap.set("Checkbox", Checkbox);
306
+ componentMap.set("DatePicker", DatePicker);
307
+ componentMap.set("TimePicker", TimePicker);
774
308
  const CellComponent = ({
775
309
  component = "Input",
776
310
  rule = true,
@@ -778,7 +312,7 @@ const CellComponent = ({
778
312
  popoverVisible,
779
313
  getPopupContainer: getPopupContainer2
780
314
  }, { attrs }) => {
781
- const Comp = componentMap$1.get(component);
315
+ const Comp = componentMap.get(component);
782
316
  const DefaultComp = h$1(Comp, attrs);
783
317
  if (!rule)
784
318
  return DefaultComp;
@@ -795,7 +329,7 @@ const CellComponent = ({
795
329
  }
796
330
  );
797
331
  };
798
- const basicProps$1 = {
332
+ const basicProps = {
799
333
  value: {
800
334
  type: [String, Number, Boolean, Object],
801
335
  default: ""
@@ -809,10 +343,10 @@ const basicProps$1 = {
809
343
  },
810
344
  index: Number
811
345
  };
812
- const _hoisted_1$9 = { class: "editable-cell" };
813
- const _sfc_main$i = /* @__PURE__ */ defineComponent({
346
+ const _hoisted_1$7 = { class: "editable-cell" };
347
+ const _sfc_main$8 = /* @__PURE__ */ defineComponent({
814
348
  __name: "EditTableCell",
815
- props: basicProps$1,
349
+ props: basicProps,
816
350
  setup(__props) {
817
351
  const props2 = __props;
818
352
  const { getUiSize } = useHeader();
@@ -823,14 +357,14 @@ const _sfc_main$i = /* @__PURE__ */ defineComponent({
823
357
  const ruleVisible = ref(false);
824
358
  const optionsRef = ref([]);
825
359
  const currentValueRef = ref(props2.value);
826
- const getComponent = computed(() => props2.column?.editComponent || "Input");
827
- const getRuleVisible = computed(() => {
360
+ const getComponent = computed$1(() => props2.column?.editComponent || "Input");
361
+ const getRuleVisible = computed$1(() => {
828
362
  return unref(ruleMessage) && unref(ruleVisible);
829
363
  });
830
- const getWrapperClass = computed(() => {
364
+ const getWrapperClass = computed$1(() => {
831
365
  return `edit-cell-align-${align}`;
832
366
  });
833
- const getIsCheckComp = computed(() => {
367
+ const getIsCheckComp = computed$1(() => {
834
368
  const component = unref(getComponent);
835
369
  return ["Checkbox", "Switch"].includes(component);
836
370
  });
@@ -843,15 +377,15 @@ const _sfc_main$i = /* @__PURE__ */ defineComponent({
843
377
  const setTableValue = () => {
844
378
  props2.record[props2.column.dataIndex] = unref(currentValueRef);
845
379
  };
846
- const getComponentProps = computed(() => {
380
+ const getComponentProps = computed$1(() => {
847
381
  const isCheckValue = unref(getIsCheckComp);
848
382
  const valueField = isCheckValue ? "checked" : "value";
849
383
  const val = unref(currentValueRef);
850
384
  const value = isCheckValue ? isNumber(val) && isBoolean(val) ? val : !!val : val;
851
385
  let compProps = props2.column?.editComponentProps ?? {};
852
- const { record, column, index } = props2;
386
+ const { record, column, index: index2 } = props2;
853
387
  if (isFunction(compProps)) {
854
- compProps = compProps({ text: val, record, column, index }) ?? {};
388
+ compProps = compProps({ text: val, record, column, index: index2 }) ?? {};
855
389
  }
856
390
  if (unref(getComponent) === "InputNumber") {
857
391
  compProps = {
@@ -917,7 +451,7 @@ const _sfc_main$i = /* @__PURE__ */ defineComponent({
917
451
  optionsRef.value = options;
918
452
  }
919
453
  return (_ctx, _cache) => {
920
- return openBlock(), createElementBlock("div", _hoisted_1$9, [
454
+ return openBlock(), createElementBlock("div", _hoisted_1$7, [
921
455
  createVNode(unref(CellComponent), mergeProps({ ref: "elRef" }, unref(getComponentProps), {
922
456
  component: _ctx.column?.editComponent,
923
457
  popoverVisible: unref(getRuleVisible),
@@ -931,8 +465,9 @@ const _sfc_main$i = /* @__PURE__ */ defineComponent({
931
465
  };
932
466
  }
933
467
  });
468
+ const EditableCell = /* @__PURE__ */ _export_sfc(_sfc_main$8, [["__file", "D:/dt/dt-frame-front/dt-frames/frames/packages/ui/src/components/table/src/components/editTable/EditTableCell.vue"]]);
934
469
  function renderEditCell(column) {
935
- return ({ text: value, record, index }) => {
470
+ return ({ text: value, record, index: index2 }) => {
936
471
  record.onValid = async () => {
937
472
  if (isArray(record?.validCbs)) {
938
473
  const validFns = (record?.validCbs || []).map((fn) => fn());
@@ -960,11 +495,11 @@ function renderEditCell(column) {
960
495
  }
961
496
  return true;
962
497
  };
963
- return h(_sfc_main$i, {
498
+ return h(EditableCell, {
964
499
  value,
965
500
  record,
966
501
  column,
967
- index
502
+ index: index2
968
503
  });
969
504
  };
970
505
  }
@@ -1000,7 +535,7 @@ function handleChildren(children, ellipsis) {
1000
535
  function handleIndexColumn(propsRef, getPaginationRef, columns) {
1001
536
  const { getIsZH } = useHeader();
1002
537
  const { t } = useI18n("UI");
1003
- const { showIndexColumn, indexColumnProps, isTreeTable } = unref(propsRef);
538
+ const { showIndexColumn, indexColumnProps, isTreeTable, virtual } = unref(propsRef);
1004
539
  let pushIndexColumns = false;
1005
540
  if (unref(isTreeTable)) {
1006
541
  return;
@@ -1021,15 +556,17 @@ function handleIndexColumn(propsRef, getPaginationRef, columns) {
1021
556
  width: unref(getIsZH) ? 50 : 70,
1022
557
  title: t("NUMBER"),
1023
558
  align: "center",
1024
- customRender: ({ index }) => {
559
+ customRender: ({ index: index2, renderIndex, record }) => {
560
+ if (virtual && record?.index)
561
+ return record?.index;
1025
562
  const getPagination = unref(getPaginationRef);
1026
563
  const { appConf } = useAppStore();
1027
564
  const { defaultPageSize } = appConf.ui.table;
1028
565
  if (isBoolean(getPagination)) {
1029
- return `${index + 1}`;
566
+ return `${index2 + 1}`;
1030
567
  }
1031
568
  const { current = 1, pageSize = defaultPageSize } = getPagination;
1032
- return ((current < 1 ? 1 : current) - 1) * pageSize + index + 1;
569
+ return ((current < 1 ? 1 : current) - 1) * pageSize + index2 + 1;
1033
570
  },
1034
571
  ...isFixedLeft ? {
1035
572
  fixed: "left"
@@ -1067,13 +604,13 @@ function handleActionColumn(propsRef, columns) {
1067
604
  };
1068
605
  columns.push({
1069
606
  ...columnObj,
1070
- customRender: ({ record, index }) => {
607
+ customRender: ({ record, index: index2 }) => {
1071
608
  return h$1(
1072
- _sfc_main$j,
609
+ TableAction,
1073
610
  omit({
1074
611
  ...columnObj,
1075
612
  record,
1076
- index
613
+ index: index2
1077
614
  }, "align")
1078
615
  );
1079
616
  }
@@ -1107,10 +644,10 @@ function useColumns(propsRef, getPaginationRef, tableElRef) {
1107
644
  const columnsRef = ref(unref(propsRef).columns);
1108
645
  let cacheColumns = unref(propsRef).columns;
1109
646
  const { appConf } = useAppStore();
1110
- const getColumnsRef = computed(() => {
647
+ const getColumnsRef = computed$1(() => {
1111
648
  const columns = cloneDeep(unref(columnsRef));
1112
649
  const { ellipsis } = unref(propsRef);
1113
- columns.forEach((it, index) => {
650
+ columns.forEach((it, index2) => {
1114
651
  it.class = it.class ?? "";
1115
652
  if (!it.class.split(" ").includes("__column")) {
1116
653
  it.class = `${it.class} __column`;
@@ -1130,7 +667,7 @@ function useColumns(propsRef, getPaginationRef, tableElRef) {
1130
667
  handleActionColumn(propsRef, columns);
1131
668
  return columns;
1132
669
  });
1133
- const getViewColumns = computed(() => {
670
+ const getViewColumns = computed$1(() => {
1134
671
  const viewColumns = sortFixedColumn(unref(getColumnsRef));
1135
672
  const columns = cloneDeep(viewColumns);
1136
673
  return columns.filter((column) => isIfShow(column)).map((column) => {
@@ -1244,7 +781,7 @@ function useColumns(propsRef, getPaginationRef, tableElRef) {
1244
781
  };
1245
782
  }
1246
783
  function useCustomRow(propsRef, { setSelectedRowKeys, getSelectedRowKeys, clearSelectedRowKeys, emits }) {
1247
- const customRow = (record, index) => {
784
+ const customRow = (record, index2) => {
1248
785
  return {
1249
786
  onClick: (e) => {
1250
787
  e?.stopPropagation();
@@ -1298,1464 +835,158 @@ function useCustomRow(propsRef, { setSelectedRowKeys, getSelectedRowKeys, clearS
1298
835
  }
1299
836
  }
1300
837
  handleClick();
1301
- emits("row-click", record, index, e);
838
+ emits("row-click", record, index2, e);
1302
839
  },
1303
840
  onDblclick: (event) => {
1304
- emits("row-dbClick", record, index, event);
1305
- },
1306
- onContextmenu: (event) => {
1307
- emits("row-contextmenu", record, index, event);
1308
- },
1309
- onMouseenter: (event) => {
1310
- emits("row-mouseenter", record, index, event);
1311
- },
1312
- onMouseleave: (event) => {
1313
- emits("row-mouseleave", record, index, event);
1314
- }
1315
- };
1316
- };
1317
- return {
1318
- customRow
1319
- };
1320
- }
1321
- function useDataSource(propsRef, {
1322
- getPaginationInfo,
1323
- setPagination,
1324
- clearSelectedRowKeys
1325
- }) {
1326
- const dataSourceRef = ref([]);
1327
- watch(
1328
- () => unref(propsRef).dataSource,
1329
- (dataSource) => {
1330
- dataSource && (dataSourceRef.value = dataSource);
1331
- },
1332
- {
1333
- immediate: true
1334
- }
1335
- );
1336
- const getDataSourceRef = computed(() => {
1337
- return unref(dataSourceRef);
1338
- });
1339
- function handleTableChange(pagination, filters, sorter) {
1340
- const { sortFn, filterFn, onTableChange: onTableChange2, clearSelectOnPageChange } = unref(propsRef);
1341
- const { appConf: appConf2 } = useAppStore();
1342
- const { current = 1, pageSize = appConf2.ui.table.defaultPageSize } = pagination;
1343
- if (clearSelectOnPageChange) {
1344
- clearSelectedRowKeys();
1345
- }
1346
- setPagination(pagination);
1347
- const params = {};
1348
- if (sorter && isFunction(sortFn)) {
1349
- params.sortInfo = sortFn(sorter);
1350
- }
1351
- if (filters && isFunction(filterFn)) {
1352
- params.filterInfo = filterFn(filters);
1353
- }
1354
- return onTableChange2({
1355
- pagination: {
1356
- current,
1357
- pageSize
1358
- },
1359
- sort: sorter,
1360
- filter: toRaw$1(unref(params.filterInfo)),
1361
- showBtnLoading: false
1362
- });
1363
- }
1364
- const { defSort, onTableChange } = unref(propsRef);
1365
- const { appConf } = useAppStore();
1366
- onTableChange({
1367
- pagination: {
1368
- current: 1,
1369
- pageSize: appConf.ui.table.defaultPageSize
1370
- },
1371
- sort: defSort,
1372
- filter: null,
1373
- showBtnLoading: false
1374
- }, false);
1375
- function updateTableDataRecord(rowKey, record) {
1376
- const row = findTableDataRecord(rowKey);
1377
- if (row) {
1378
- for (const field in record) {
1379
- row[field] = record[field];
1380
- }
1381
- return row;
1382
- }
1383
- }
1384
- function findTableDataRecord(rowKey) {
1385
- if (!dataSourceRef.value || dataSourceRef.value.length == 0 || !rowKey)
1386
- return;
1387
- const { childrenColumnName = "children" } = unref(propsRef);
1388
- const findRow = (array) => {
1389
- let ret;
1390
- array.some(function iter(r) {
1391
- if (Reflect.has(r, unref(propsRef).rowKey) && r[unref(propsRef).rowKey] === rowKey) {
1392
- ret = r;
1393
- return true;
1394
- }
1395
- return r[childrenColumnName] && r[childrenColumnName].some(iter);
1396
- });
1397
- return ret;
1398
- };
1399
- return findRow(dataSourceRef.value);
1400
- }
1401
- return {
1402
- getDataSourceRef,
1403
- handleTableChange,
1404
- updateTableDataRecord,
1405
- findTableDataRecord
1406
- };
1407
- }
1408
- function useFormValue(props2, key = "value", changeEvent = "change", emitData) {
1409
- const instance = getCurrentInstance();
1410
- const emit = instance?.emit;
1411
- const innerState = reactive({
1412
- value: props2[key]
1413
- });
1414
- const defaultState = readonly(innerState);
1415
- const setState = (val) => {
1416
- innerState.value = val;
1417
- nextTick(() => {
1418
- emit?.(changeEvent, val, ...toRaw$1(unref(emitData)) || []);
1419
- });
1420
- };
1421
- watchEffect(() => {
1422
- innerState.value = props2[key];
1423
- });
1424
- const state = computed({
1425
- get() {
1426
- return innerState.value;
1427
- },
1428
- set(value) {
1429
- if (isEqual(value, defaultState.value))
1430
- return;
1431
- innerState.value = value;
1432
- nextTick(() => {
1433
- emit?.(changeEvent, value, ...toRaw$1(unref(emitData)) || []);
1434
- });
1435
- }
1436
- });
1437
- return [state, setState, defaultState];
1438
- }
1439
- const _sfc_main$h = /* @__PURE__ */ defineComponent({
1440
- __name: "radioButton",
1441
- props: {
1442
- value: {
1443
- type: [String, Number, Boolean]
1444
- },
1445
- options: {
1446
- type: Array,
1447
- default: () => []
1448
- }
1449
- },
1450
- setup(__props) {
1451
- const props2 = __props;
1452
- const attrs = useAttrs();
1453
- const [state] = useFormValue(props2);
1454
- const getOptions = computed(() => {
1455
- const { options } = props2;
1456
- if (!options || options?.length === 0)
1457
- return [];
1458
- const isStringArr = options.some((item) => isString(item));
1459
- if (!isStringArr)
1460
- return options;
1461
- return options.map((item) => ({ label: item, value: item }));
1462
- });
1463
- return (_ctx, _cache) => {
1464
- const _component_ARadioButton = RadioButton;
1465
- const _component_ARadioGroup = RadioGroup;
1466
- return openBlock(), createBlock(_component_ARadioGroup, mergeProps(unref(attrs), {
1467
- value: unref(state),
1468
- "onUpdate:value": _cache[0] || (_cache[0] = ($event) => isRef(state) ? state.value = $event : null),
1469
- "button-style": "solid"
1470
- }), {
1471
- default: withCtx(() => [
1472
- (openBlock(true), createElementBlock(Fragment, null, renderList(unref(getOptions), (item) => {
1473
- return openBlock(), createBlock(_component_ARadioButton, {
1474
- key: `${item.value}`,
1475
- value: item.value,
1476
- disabled: item.disabled
1477
- }, {
1478
- default: withCtx(() => [
1479
- createTextVNode(toDisplayString(item.label), 1)
1480
- ]),
1481
- _: 2
1482
- }, 1032, ["value", "disabled"]);
1483
- }), 128))
1484
- ]),
1485
- _: 1
1486
- }, 16, ["value"]);
1487
- };
1488
- }
1489
- });
1490
- const components = {
1491
- Input,
1492
- InputTextArea: Input.TextArea,
1493
- InputSearch: Input.Search,
1494
- InputGroup: Input.Group,
1495
- InputPassword: Input.Password,
1496
- Select,
1497
- TreeSelect,
1498
- Radio,
1499
- RadioGroup: Radio.Group,
1500
- RadioButtonGroup: _sfc_main$h,
1501
- Checkbox,
1502
- CheckboxGroup: Checkbox.Group,
1503
- AutoComplete,
1504
- Cascader,
1505
- DatePicker,
1506
- MonthPicker: DatePicker.MonthPicker,
1507
- WeekPicker: DatePicker.WeekPicker,
1508
- RangePicker: DatePicker.RangePicker,
1509
- InputNumber,
1510
- Switch,
1511
- TimePicker,
1512
- Slider,
1513
- Rate,
1514
- Divider
1515
- };
1516
- const componentMap = /* @__PURE__ */ new Map();
1517
- for (let item in components) {
1518
- componentMap.set(item, components[item]);
1519
- }
1520
- const _hoisted_1$8 = {
1521
- key: 0,
1522
- className: "preIcon pr-1"
1523
- };
1524
- const _hoisted_2$2 = {
1525
- key: 0,
1526
- className: "preIcon pl-1"
1527
- };
1528
- const _hoisted_3$2 = { class: "text" };
1529
- const _hoisted_4$2 = /* @__PURE__ */ createElementVNode("i", { class: "text-2xl i ic:baseline-arrow-drop-down" }, null, -1);
1530
- const _hoisted_5$1 = [
1531
- _hoisted_4$2
1532
- ];
1533
- const _sfc_main$g = /* @__PURE__ */ defineComponent({
1534
- __name: "FormButtons",
1535
- props: {
1536
- mode: {
1537
- type: String,
1538
- default: "search"
1539
- },
1540
- show: {
1541
- type: Boolean,
1542
- default: true
1543
- },
1544
- showAdvancedButton: {
1545
- type: Boolean,
1546
- default: true
1547
- },
1548
- minShowColumn: {
1549
- type: Number,
1550
- default: 2
1551
- },
1552
- buttonList: {
1553
- type: [Array],
1554
- default: []
1555
- },
1556
- isAdvanced: {
1557
- type: Boolean,
1558
- default: true
1559
- },
1560
- colspan: {
1561
- type: Object
1562
- }
1563
- },
1564
- emits: ["handle-method"],
1565
- setup(__props, { emit: emits }) {
1566
- const props2 = __props;
1567
- const { t } = useI18n();
1568
- const advancedRef = ref(props2.isAdvanced);
1569
- let key = 0;
1570
- const showAdvanceRef = computed(() => {
1571
- return props2.mode === "search" ? props2.showAdvancedButton : false;
1572
- });
1573
- const colOpt = computed(() => {
1574
- let style = {
1575
- textAlign: "right"
1576
- };
1577
- if (props2.mode === "dialog") {
1578
- Object.assign(style, {
1579
- display: "inline-block"
1580
- });
1581
- return { style };
1582
- } else if (props2.mode === null) {
1583
- Object.assign(style, {
1584
- display: "flex",
1585
- justifyContent: "center",
1586
- marginBottom: "20px"
1587
- });
1588
- return {
1589
- style,
1590
- span: 24
1591
- };
1592
- }
1593
- return { style };
1594
- });
1595
- const getAdvanceClass = computed(() => {
1596
- return [
1597
- "basic-arrow",
1598
- { "basic-arrow--active": !advancedRef.value }
1599
- ];
1600
- });
1601
- const toggleAdvanced = () => {
1602
- advancedRef.value = !advancedRef.value;
1603
- dispatchResize();
1604
- emits("handle-method", advancedRef.value);
1605
- };
1606
- function handleBtnClick(button) {
1607
- if (button.onClick && isFunction(button.onClick)) {
1608
- button.onClick();
1609
- } else {
1610
- emits("handle-method", button);
1611
- }
1612
- }
1613
- watch(() => props2.isAdvanced, (v) => {
1614
- if (v || props2.mode !== "search") {
1615
- nextTick(() => toggleAdvanced());
1616
- }
1617
- }, {
1618
- immediate: true
1619
- });
1620
- watch(
1621
- () => props2.buttonList,
1622
- (v) => key = new Date().getTime(),
1623
- {
1624
- immediate: true,
1625
- deep: true
1626
- }
1627
- );
1628
- return (_ctx, _cache) => {
1629
- const _component_AButton = Button;
1630
- const _component_AFormItem = FormItem;
1631
- const _component_ACol = Col;
1632
- const _directive_icon = resolveDirective("icon");
1633
- const _directive_auth = resolveDirective("auth");
1634
- return __props.show ? (openBlock(), createBlock(_component_ACol, normalizeProps(mergeProps({ key: 0 }, unref(colOpt))), {
1635
- default: withCtx(() => [
1636
- createVNode(_component_AFormItem, {
1637
- class: "dt-form-btns",
1638
- style: normalizeStyle({
1639
- "margin-bottom": __props.mode === "search" ? "16px" : "0px"
1640
- })
1641
- }, {
1642
- default: withCtx(() => [
1643
- (openBlock(true), createElementBlock(Fragment, null, renderList(__props.buttonList, (button) => {
1644
- return openBlock(), createElementBlock(Fragment, null, [
1645
- (button.show === void 0 ? true : button.show) ? withDirectives((openBlock(), createBlock(_component_AButton, {
1646
- class: normalizeClass(["items-center", button.class]),
1647
- type: button.type,
1648
- loading: button.loading,
1649
- disabled: button.disabled,
1650
- key: unref(key),
1651
- onClick: ($event) => handleBtnClick(button)
1652
- }, {
1653
- icon: withCtx(() => [
1654
- button.preIcon ? withDirectives((openBlock(), createElementBlock("span", _hoisted_1$8, null, 512)), [
1655
- [_directive_icon, button.preIcon]
1656
- ]) : createCommentVNode("", true)
1657
- ]),
1658
- default: withCtx(() => [
1659
- createTextVNode(" " + toDisplayString(unref(t)(button.label)) + " ", 1),
1660
- button.postIcon ? withDirectives((openBlock(), createElementBlock("span", _hoisted_2$2, null, 512)), [
1661
- [_directive_icon, button.postIcon]
1662
- ]) : createCommentVNode("", true)
1663
- ]),
1664
- _: 2
1665
- }, 1032, ["type", "class", "loading", "disabled", "onClick"])), [
1666
- [_directive_auth, button.auth]
1667
- ]) : createCommentVNode("", true)
1668
- ], 64);
1669
- }), 256)),
1670
- unref(showAdvanceRef) ? (openBlock(), createBlock(_component_AButton, {
1671
- key: 0,
1672
- type: "link",
1673
- class: "advanced",
1674
- onClick: toggleAdvanced
1675
- }, {
1676
- default: withCtx(() => [
1677
- createElementVNode("span", _hoisted_3$2, toDisplayString(advancedRef.value ? unref(t)("UI.ADVANCED") : unref(t)("UI.EXPAND")), 1),
1678
- createElementVNode("span", {
1679
- class: normalizeClass(unref(getAdvanceClass))
1680
- }, _hoisted_5$1, 2)
1681
- ]),
1682
- _: 1
1683
- })) : createCommentVNode("", true)
1684
- ]),
1685
- _: 1
1686
- }, 8, ["style"])
1687
- ]),
1688
- _: 1
1689
- }, 16)) : createCommentVNode("", true);
1690
- };
1691
- }
1692
- });
1693
- const _hoisted_1$7 = { key: 0 };
1694
- const _sfc_main$f = /* @__PURE__ */ defineComponent({
1695
- __name: "Fullscreen",
1696
- setup(__props) {
1697
- const { t } = useI18n("UI");
1698
- const table = getTableInstance();
1699
- const wrapEl = ref(null);
1700
- const { toggle, isFullscreen } = useFullscreen(wrapEl);
1701
- watch(
1702
- () => table.tableElRef.value,
1703
- (v) => {
1704
- const getParent = (el) => {
1705
- if (!el || !el.parentNode)
1706
- return null;
1707
- if (el.parentNode.className?.indexOf("dt-layout-content") !== -1) {
1708
- wrapEl.value = el.parentNode;
1709
- } else {
1710
- getParent(el.parentNode);
1711
- }
1712
- };
1713
- getParent(v.$el);
1714
- }
1715
- );
1716
- return (_ctx, _cache) => {
1717
- const _component_ATooltip = Tooltip;
1718
- return openBlock(), createBlock(_component_ATooltip, { placement: "top" }, {
1719
- title: withCtx(() => [
1720
- !unref(isFullscreen) ? (openBlock(), createElementBlock("span", _hoisted_1$7, toDisplayString(unref(t)("FULLSCREEN")), 1)) : createCommentVNode("", true)
1721
- ]),
1722
- default: withCtx(() => [
1723
- createElementVNode("span", {
1724
- class: "flex",
1725
- onClick: _cache[0] || (_cache[0] = (...args) => unref(toggle) && unref(toggle)(...args))
1726
- }, [
1727
- createElementVNode("i", {
1728
- class: normalizeClass(["i w-7 leading-7 text-center cursor-pointer", unref(isFullscreen) ? "ic:baseline-fullscreen-exit" : "ic:baseline-fullscreen"])
1729
- }, null, 2)
1730
- ])
1731
- ]),
1732
- _: 1
1733
- });
1734
- };
1735
- }
1736
- });
1737
- const orgDialogProp = reactive({});
1738
- const cbTransfer = reactive({});
1739
- const dataTransfer = reactive({});
1740
- function useModalOut() {
1741
- const modal = ref(null);
1742
- const loaded = ref(true);
1743
- const uid = ref(null);
1744
- const { isProd } = useApp();
1745
- function register(modalMethod, uuid) {
1746
- if (!getCurrentInstance()) {
1747
- throw new Error("useModal\u53EA\u80FD\u5728setup()\u6216\u8005\u51FD\u6570\u4E2D\u4F7F\u7528");
1748
- }
1749
- uid.value = uuid;
1750
- onUnmounted(() => {
1751
- if (unref(isProd)) {
1752
- modal.value = null;
1753
- loaded.value = false;
1754
- dataTransfer[unref(uid)] = null;
1755
- orgDialogProp[unref(uid)] = null;
1756
- cbTransfer[unref(uid)] = (res) => {
1757
- };
1758
- }
1759
- });
1760
- if (unref(loaded) && modalMethod === unref(modal))
1761
- return;
1762
- modal.value = modalMethod;
1763
- loaded.value = true;
1764
- }
1765
- const getInstance = () => {
1766
- const instance = unref(modal);
1767
- if (!instance) {
1768
- error("useModalOut \u5B9E\u4F8B\u672A\u5B9A\u4E49");
1769
- }
1770
- return instance;
1771
- };
1772
- const methods = {
1773
- setModalProps: (props2) => {
1774
- getInstance()?.setModalProps(props2);
1775
- },
1776
- redoModalHeight: () => {
1777
- getInstance()?.redoModalHeight?.();
1778
- },
1779
- openModal: (params, afterClose) => {
1780
- const id = unref(uid);
1781
- dataTransfer[id] = isObject(params) ? { ...toRaw$1(params) } : params;
1782
- getInstance()?.setModalProps({
1783
- footer: [],
1784
- defaultFullscreen: false,
1785
- ...orgDialogProp[id],
1786
- visible: true
1787
- });
1788
- cbTransfer[id] = (res) => {
1789
- if (afterClose && isFunction(afterClose)) {
1790
- afterClose(res);
1791
- }
1792
- };
1793
- },
1794
- closeModal: () => {
1795
- getInstance()?.setModalProps({ visible: false });
1796
- }
1797
- };
1798
- return [register, methods];
1799
- }
1800
- function useModal(props2, setModalData) {
1801
- const modalInstanceRef = ref(null);
1802
- const currentInstance = getCurrentInstance();
1803
- const uidRef = ref(null);
1804
- const { isProd } = useApp();
1805
- const getInstance = () => {
1806
- const instance = unref(modalInstanceRef);
1807
- if (!instance) {
1808
- error("useModal \u5B9E\u4F8B\u672A\u5B9A\u4E49");
1809
- }
1810
- return instance;
1811
- };
1812
- const register = (modalInstance, uuid) => {
1813
- if (unref(isProd)) {
1814
- modalInstanceRef.value = null;
1815
- }
1816
- uidRef.value = uuid;
1817
- modalInstanceRef.value = modalInstance;
1818
- currentInstance?.emit("register", modalInstance, uuid);
1819
- orgDialogProp[uuid] = toRaw$1(props2);
1820
- modalInstance.setModalProps(props2);
1821
- };
1822
- watchEffect(() => {
1823
- const data = dataTransfer[unref(uidRef)];
1824
- if (!setModalData || !isFunction(setModalData))
1825
- return;
1826
- nextTick(() => {
1827
- setModalData(data);
1828
- if (!data)
1829
- return;
1830
- if (props2?.title && isFunction(props2?.title)) {
1831
- let title = props2.title(data);
1832
- methods.setModalProps({ title });
1833
- }
1834
- });
1835
- });
1836
- const methods = {
1837
- setLoading: (loading = true) => {
1838
- getInstance()?.setModalProps({ loading });
1839
- },
1840
- closeModal: (rsp) => {
1841
- if (cbTransfer[unref(uidRef)])
1842
- cbTransfer[unref(uidRef)](rsp);
1843
- getInstance()?.setModalProps({ visible: false });
1844
- },
1845
- setModalProps: (props22) => {
1846
- getInstance()?.setModalProps(props22);
1847
- },
1848
- redoModalHeight: () => {
1849
- const callRedo = getInstance()?.redoModalHeight;
1850
- callRedo && callRedo();
1851
- }
1852
- };
1853
- return [register, methods];
1854
- }
1855
- const basicProps = {
1856
- t: {
1857
- type: String
1858
- },
1859
- visible: {
1860
- type: Boolean
1861
- },
1862
- closable: {
1863
- type: Boolean,
1864
- default: true
1865
- },
1866
- destroyOnClose: {
1867
- type: Boolean
1868
- },
1869
- scrollTop: {
1870
- type: Boolean,
1871
- default: true
1872
- },
1873
- height: { type: Number },
1874
- minHeight: { type: Number },
1875
- width: { type: [String, Number] },
1876
- draggable: {
1877
- type: Boolean,
1878
- default: true
1879
- },
1880
- defaultFullscreen: {
1881
- type: Boolean
1882
- },
1883
- canFullscreen: {
1884
- type: Boolean,
1885
- default: true
1886
- },
1887
- title: {
1888
- type: String
1889
- },
1890
- loading: { type: Boolean, default: false },
1891
- loadingTip: { type: String, default: "\u52A0\u8F7D\u4E2D..." },
1892
- useWrapper: {
1893
- type: Boolean,
1894
- default: true
1895
- },
1896
- wrapClassName: { type: String },
1897
- zIndex: { type: Number },
1898
- centered: { type: Boolean },
1899
- showOkBtn: {
1900
- type: Boolean,
1901
- default: true
1902
- },
1903
- showCancelBtn: {
1904
- type: Boolean,
1905
- default: true
1906
- },
1907
- okText: {
1908
- type: String
1909
- },
1910
- cancelText: {
1911
- type: String
1912
- },
1913
- mask: { type: Boolean, default: true },
1914
- maskClosable: { type: Boolean, default: true },
1915
- keyboard: { type: Boolean, default: true },
1916
- maskStyle: Object,
1917
- footer: {
1918
- type: Object
1919
- },
1920
- bodyStyle: Object,
1921
- wrapperProps: Object,
1922
- getContainer: Function,
1923
- closeFunc: Function,
1924
- afterClose: Function
1925
- };
1926
- function useDragMove(context) {
1927
- const getStyle = (dom, attr) => {
1928
- return getComputedStyle(dom)[attr];
1929
- };
1930
- const drag = (wrap) => {
1931
- if (!wrap)
1932
- return;
1933
- wrap.setAttribute("data-drag", unref(context.draggable));
1934
- const dialogHeaderEl = wrap.querySelector(".ant-modal-header");
1935
- const dragDom = wrap.querySelector(".ant-modal");
1936
- if (!dialogHeaderEl || !dragDom || !unref(context.draggable))
1937
- return;
1938
- dialogHeaderEl.style.cursor = "move";
1939
- dialogHeaderEl.onmousedown = (e) => {
1940
- if (!e)
1941
- return;
1942
- const disX = e.clientX;
1943
- const disY = e.clientY;
1944
- const screenWidth = document.body.clientWidth;
1945
- const screenHeight = document.documentElement.clientHeight;
1946
- const dragDomWidth = dragDom.offsetWidth;
1947
- const dragDomheight = dragDom.offsetHeight;
1948
- const minDragDomLeft = dragDom.offsetLeft;
1949
- const maxDragDomLeft = screenWidth - dragDom.offsetLeft - dragDomWidth;
1950
- const minDragDomTop = dragDom.offsetTop;
1951
- const maxDragDomTop = screenHeight - dragDom.offsetTop - dragDomheight;
1952
- const domLeft = getStyle(dragDom, "left");
1953
- const domTop = getStyle(dragDom, "top");
1954
- let styL = +domLeft;
1955
- let styT = +domTop;
1956
- if (domLeft.includes("%")) {
1957
- styL = +document.body.clientWidth * (+domLeft.replace(/%/g, "") / 100);
1958
- styT = +document.body.clientHeight * (+domTop.replace(/%/g, "") / 100);
1959
- } else {
1960
- styL = +domLeft.replace(/px/g, "");
1961
- styT = +domTop.replace(/px/g, "");
1962
- }
1963
- document.onmousemove = function(e2) {
1964
- let left = e2.clientX - disX;
1965
- let top = e2.clientY - disY;
1966
- if (-left > minDragDomLeft) {
1967
- left = -minDragDomLeft;
1968
- } else if (left > maxDragDomLeft) {
1969
- left = maxDragDomLeft;
1970
- }
1971
- if (-top > minDragDomTop) {
1972
- top = -minDragDomTop;
1973
- } else if (top > maxDragDomTop) {
1974
- top = maxDragDomTop;
1975
- }
1976
- dragDom.style.cssText += `;left:${left + styL}px;top:${top + styT}px;`;
1977
- };
1978
- document.onmouseup = () => {
1979
- document.onmousemove = null;
1980
- document.onmouseup = null;
1981
- };
1982
- };
1983
- };
1984
- const handleDrag = () => {
1985
- const dragWraps = document.querySelectorAll(".ant-modal-wrap");
1986
- for (const wrap of Array.from(dragWraps)) {
1987
- if (!wrap)
1988
- continue;
1989
- const display = getStyle(wrap, "display");
1990
- const draggable = wrap.getAttribute("data-drag");
1991
- if (display !== "none") {
1992
- if (draggable === null || unref(context.destroyOnClose)) {
1993
- drag(wrap);
1994
- }
1995
- }
1996
- }
1997
- };
1998
- watchEffect(() => {
1999
- if (!unref(context.visible) || !unref(context.draggable)) {
2000
- return;
2001
- }
2002
- useTimeoutFn(() => {
2003
- handleDrag();
2004
- }, 30);
2005
- });
2006
- }
2007
- function _isSlot(s) {
2008
- return typeof s === "function" || Object.prototype.toString.call(s) === "[object Object]" && !isVNode(s);
2009
- }
2010
- const _sfc_main$e = {
2011
- name: "Modal",
2012
- inheritAttrs: false,
2013
- props: basicProps,
2014
- emits: ["cancel"],
2015
- setup(props2, {
2016
- slots,
2017
- emit
2018
- }) {
2019
- const {
2020
- visible,
2021
- draggable,
2022
- destroyOnClose
2023
- } = toRefs(props2);
2024
- const attrs = useAttrs();
2025
- useDragMove({
2026
- visible,
2027
- destroyOnClose,
2028
- draggable
2029
- });
2030
- const {
2031
- extendSlots
2032
- } = useSlots();
2033
- const onCancel = (e) => emit("cancel", e);
2034
- return () => {
2035
- let _slot;
2036
- const propsData = {
2037
- ...unref(attrs),
2038
- ...props2,
2039
- destroyOnClose: true,
2040
- onCancel
2041
- };
2042
- if (!propsData?.visible)
2043
- return null;
2044
- return createVNode(Modal, propsData, _isSlot(_slot = extendSlots(slots)) ? _slot : {
2045
- default: () => [_slot]
2046
- });
2047
- };
2048
- }
2049
- };
2050
- const _sfc_main$d = /* @__PURE__ */ defineComponent({
2051
- __name: "CloseIcon",
2052
- props: {
2053
- canFullscreen: { type: Boolean, default: true },
2054
- fullScreen: { type: Boolean }
2055
- },
2056
- emits: ["cancel", "fullscreen"],
2057
- setup(__props, { emit }) {
2058
- const props2 = __props;
2059
- const { t } = useI18n("UI");
2060
- const getClass = computed(() => {
2061
- return [
2062
- "dt-basic-modal-close",
2063
- `dt-basic-modal-close--custom`,
2064
- {
2065
- [`dt-basic-modal-close--can-full`]: props2.canFullscreen
2066
- }
2067
- ];
2068
- });
2069
- function handleCancel(e) {
2070
- emit("cancel", e);
2071
- }
2072
- function handleFullScreen(e) {
2073
- e?.stopPropagation();
2074
- e?.preventDefault();
2075
- emit("fullscreen");
2076
- }
2077
- return (_ctx, _cache) => {
2078
- const _component_ATooltip = Tooltip;
2079
- return openBlock(), createElementBlock("div", {
2080
- class: normalizeClass(["flex h-14 items-center justify-center", unref(getClass)])
2081
- }, [
2082
- __props.canFullscreen ? (openBlock(), createElementBlock(Fragment, { key: 0 }, [
2083
- __props.fullScreen ? (openBlock(), createBlock(_component_ATooltip, {
2084
- key: 0,
2085
- title: unref(t)("EXIT_FULLSCREEN"),
2086
- placement: "bottom"
2087
- }, {
2088
- default: withCtx(() => [
2089
- createElementVNode("i", {
2090
- class: "i ic:baseline-fullscreen-exit hover:font-bold inline-block w-10 h-14 pr-4",
2091
- onClick: handleFullScreen
2092
- })
2093
- ]),
2094
- _: 1
2095
- }, 8, ["title"])) : (openBlock(), createBlock(_component_ATooltip, {
2096
- key: 1,
2097
- title: unref(t)("FULLSCREEN"),
2098
- placement: "bottom"
2099
- }, {
2100
- default: withCtx(() => [
2101
- createElementVNode("i", {
2102
- class: "i ic:baseline-fullscreen hover:font-bold inline-block h-14 w-10 pr-4",
2103
- onClick: handleFullScreen
2104
- })
2105
- ]),
2106
- _: 1
2107
- }, 8, ["title"]))
2108
- ], 64)) : createCommentVNode("", true),
2109
- createElementVNode("i", {
2110
- class: "i mdi:close h-14 w-10 pr-4",
2111
- onClick: handleCancel
2112
- })
2113
- ], 2);
2114
- };
2115
- }
2116
- });
2117
- const isServer = typeof window === "undefined";
2118
- const BAR_MAP = {
2119
- vertical: {
2120
- offset: "offsetHeight",
2121
- scroll: "scrollTop",
2122
- scrollSize: "scrollHeight",
2123
- size: "height",
2124
- key: "vertical",
2125
- axis: "Y",
2126
- client: "clientY",
2127
- direction: "top"
2128
- },
2129
- horizontal: {
2130
- offset: "offsetWidth",
2131
- scroll: "scrollLeft",
2132
- scrollSize: "scrollWidth",
2133
- size: "width",
2134
- key: "horizontal",
2135
- axis: "X",
2136
- client: "clientX",
2137
- direction: "left"
2138
- }
2139
- };
2140
- function renderThumbStyle({ move, size, bar }) {
2141
- const style = {};
2142
- const translate = `translate${bar.axis}(${move}%)`;
2143
- style[bar.size] = size;
2144
- style.transform = translate;
2145
- style.msTransform = translate;
2146
- style.webkitTransform = translate;
2147
- return style;
2148
- }
2149
- function resizeHandler(entries) {
2150
- for (const entry of entries) {
2151
- const listeners = entry.target.__resizeListeners__ || [];
2152
- if (listeners.length) {
2153
- listeners.forEach((fn) => {
2154
- fn();
2155
- });
2156
- }
2157
- }
2158
- }
2159
- function addResizeListener(element, fn) {
2160
- if (isServer)
2161
- return;
2162
- if (!element.__resizeListeners__) {
2163
- element.__resizeListeners__ = [];
2164
- element.__ro__ = new ResizeObserver(resizeHandler);
2165
- element.__ro__.observe(element);
2166
- }
2167
- element.__resizeListeners__.push(fn);
2168
- }
2169
- function removeResizeListener(element, fn) {
2170
- if (!element || !element.__resizeListeners__)
2171
- return;
2172
- element.__resizeListeners__.splice(element.__resizeListeners__.indexOf(fn), 1);
2173
- if (!element.__resizeListeners__.length) {
2174
- element.__ro__.disconnect();
2175
- }
2176
- }
2177
- const Bar = defineComponent({
2178
- name: "Bar",
2179
- props: {
2180
- vertical: Boolean,
2181
- size: String,
2182
- move: Number
2183
- },
2184
- setup(props2) {
2185
- const instance = getCurrentInstance();
2186
- const thumb = ref();
2187
- const wrap = inject("scroll-bar-wrap", {});
2188
- const bar = computed(() => {
2189
- return BAR_MAP[props2.vertical ? "vertical" : "horizontal"];
2190
- });
2191
- const barStore = ref({});
2192
- const cursorDown = ref();
2193
- const clickThumbHandler = (e) => {
2194
- if (e.ctrlKey || e.button === 2) {
2195
- return;
2196
- }
2197
- window.getSelection()?.removeAllRanges();
2198
- startDrag(e);
2199
- barStore.value[bar.value.axis] = e.currentTarget[bar.value.offset] - (e[bar.value.client] - e.currentTarget.getBoundingClientRect()[bar.value.direction]);
2200
- };
2201
- const clickTrackHandler = (e) => {
2202
- const offset = Math.abs(
2203
- e.target.getBoundingClientRect()[bar.value.direction] - e[bar.value.client]
2204
- );
2205
- const thumbHalf = thumb.value[bar.value.offset] / 2;
2206
- const thumbPositionPercentage = (offset - thumbHalf) * 100 / instance?.vnode.el?.[bar.value.offset];
2207
- wrap.value[bar.value.scroll] = thumbPositionPercentage * wrap.value[bar.value.scrollSize] / 100;
2208
- };
2209
- const startDrag = (e) => {
2210
- e.stopImmediatePropagation();
2211
- cursorDown.value = true;
2212
- on(document, "mousemove", mouseMoveDocumentHandler);
2213
- on(document, "mouseup", mouseUpDocumentHandler);
2214
- document.onselectstart = () => false;
2215
- };
2216
- const mouseMoveDocumentHandler = (e) => {
2217
- if (cursorDown.value === false)
2218
- return;
2219
- const prevPage = barStore.value[bar.value.axis];
2220
- if (!prevPage)
2221
- return;
2222
- const offset = (instance?.vnode.el?.getBoundingClientRect()[bar.value.direction] - e[bar.value.client]) * -1;
2223
- const thumbClickPosition = thumb.value[bar.value.offset] - prevPage;
2224
- const thumbPositionPercentage = (offset - thumbClickPosition) * 100 / instance?.vnode.el?.[bar.value.offset];
2225
- wrap.value[bar.value.scroll] = thumbPositionPercentage * wrap.value[bar.value.scrollSize] / 100;
2226
- };
2227
- function mouseUpDocumentHandler() {
2228
- cursorDown.value = false;
2229
- barStore.value[bar.value.axis] = 0;
2230
- off(document, "mousemove", mouseMoveDocumentHandler);
2231
- document.onselectstart = null;
2232
- }
2233
- onUnmounted(() => {
2234
- off(document, "mouseup", mouseUpDocumentHandler);
2235
- });
2236
- return () => h$1(
2237
- "div",
2238
- {
2239
- class: ["scrollbar__bar", "is-" + bar.value.key],
2240
- onMousedown: clickTrackHandler
2241
- },
2242
- h$1("div", {
2243
- ref: thumb,
2244
- class: "scrollbar__thumb",
2245
- onMousedown: clickThumbHandler,
2246
- style: renderThumbStyle({
2247
- size: props2.size,
2248
- move: props2.move,
2249
- bar: bar.value
2250
- })
2251
- })
2252
- );
2253
- }
2254
- });
2255
- const _hoisted_1$6 = { class: "scrollbar relative h-full overflow-hidden" };
2256
- const _sfc_main$c = /* @__PURE__ */ defineComponent({
2257
- __name: "scroll-bar",
2258
- props: {
2259
- wrapClass: {
2260
- type: [String, Array],
2261
- default: ""
2262
- },
2263
- wrapStyle: Array,
2264
- viewClass: {
2265
- type: [String, Array],
2266
- default: ""
2267
- },
2268
- viewStyle: {
2269
- type: [String, Array],
2270
- default: ""
2271
- },
2272
- noresize: Boolean,
2273
- tag: {
2274
- type: String,
2275
- default: "div"
2276
- }
2277
- },
2278
- setup(__props) {
2279
- const props2 = __props;
2280
- const sizeWidth = ref("0");
2281
- const sizeHeight = ref("0");
2282
- const moveX = ref(0);
2283
- const moveY = ref(0);
2284
- const wrap = ref();
2285
- const resize = ref();
2286
- provide("scroll-bar-wrap", wrap);
2287
- const style = computed(() => {
2288
- let rsStyle = {};
2289
- if (Array.isArray(props2.wrapStyle)) {
2290
- props2.wrapStyle.forEach((it) => {
2291
- if (it)
2292
- rsStyle = Object.assign({}, rsStyle, it);
2293
- });
2294
- }
2295
- return rsStyle;
2296
- });
2297
- const handleScroll = () => {
2298
- moveY.value = unref(wrap).scrollTop * 100 / unref(wrap).clientHeight;
2299
- moveX.value = unref(wrap).scrollLeft * 100 / unref(wrap).clientWidth;
2300
- };
2301
- const update = () => {
2302
- if (!unref(wrap))
2303
- return;
2304
- const heightPercentage = unref(wrap).clientHeight * 100 / unref(wrap).scrollHeight;
2305
- const widthPercentage = unref(wrap).clientWidth * 100 / unref(wrap).scrollWidth;
2306
- sizeHeight.value = heightPercentage < 100 ? heightPercentage + "%" : "";
2307
- sizeWidth.value = widthPercentage < 100 ? widthPercentage + "%" : "";
2308
- };
2309
- onMounted(() => {
2310
- nextTick(update);
2311
- if (!props2.noresize) {
2312
- addResizeListener(unref(resize), update);
2313
- addResizeListener(unref(wrap), update);
2314
- addEventListener("resize", update);
2315
- }
2316
- });
2317
- onBeforeUnmount(() => {
2318
- if (!props2.noresize) {
2319
- removeResizeListener(unref(resize), update);
2320
- removeResizeListener(unref(wrap), update);
2321
- removeEventListener("resize", update);
841
+ emits("row-dbClick", record, index2, event);
842
+ },
843
+ onContextmenu: (event) => {
844
+ emits("row-contextmenu", record, index2, event);
845
+ },
846
+ onMouseenter: (event) => {
847
+ emits("row-mouseenter", record, index2, event);
848
+ },
849
+ onMouseleave: (event) => {
850
+ emits("row-mouseleave", record, index2, event);
2322
851
  }
2323
- });
2324
- return (_ctx, _cache) => {
2325
- return openBlock(), createElementBlock("div", _hoisted_1$6, [
2326
- createElementVNode("div", {
2327
- ref_key: "wrap",
2328
- ref: wrap,
2329
- class: normalizeClass([[__props.wrapClass, "scrollbar__wrap--hidden-default"], "h-full overflow-auto"]),
2330
- style: normalizeStyle(unref(style)),
2331
- onScroll: handleScroll
2332
- }, [
2333
- (openBlock(), createBlock(resolveDynamicComponent(__props.tag), {
2334
- class: normalizeClass(["box-border", __props.viewClass]),
2335
- ref_key: "resize",
2336
- ref: resize,
2337
- style: normalizeStyle(__props.viewStyle)
2338
- }, {
2339
- default: withCtx(() => [
2340
- renderSlot(_ctx.$slots, "default")
2341
- ]),
2342
- _: 3
2343
- }, 8, ["class", "style"]))
2344
- ], 38),
2345
- createVNode(unref(Bar), {
2346
- move: moveX.value,
2347
- size: sizeWidth.value
2348
- }, null, 8, ["move", "size"]),
2349
- createVNode(unref(Bar), {
2350
- vertical: "",
2351
- move: moveY.value,
2352
- size: sizeHeight.value
2353
- }, null, 8, ["move", "size"])
2354
- ]);
2355
- };
2356
- }
2357
- });
2358
- const _sfc_main$b = /* @__PURE__ */ defineComponent({
2359
- __name: "scroll-container",
2360
- setup(__props) {
2361
- const scrollbarRef = ref(null);
2362
- return (_ctx, _cache) => {
2363
- return openBlock(), createBlock(_sfc_main$c, mergeProps({
2364
- ref_key: "scrollbarRef",
2365
- ref: scrollbarRef
2366
- }, _ctx.$attrs, { class: "w-full h-full" }), {
2367
- default: withCtx(() => [
2368
- renderSlot(_ctx.$slots, "default")
2369
- ]),
2370
- _: 3
2371
- }, 16);
2372
852
  };
2373
- }
2374
- });
2375
- const _sfc_main$a = /* @__PURE__ */ defineComponent({
2376
- __name: "slot-container",
2377
- props: {
2378
- template: {
2379
- type: Function
853
+ };
854
+ return {
855
+ customRow
856
+ };
857
+ }
858
+ function useDataSource(propsRef, {
859
+ getPaginationInfo,
860
+ setPagination,
861
+ clearSelectedRowKeys
862
+ }) {
863
+ const dataSourceRef = ref([]);
864
+ watch(
865
+ () => unref(propsRef).dataSource,
866
+ (dataSource) => {
867
+ dataSource && (dataSourceRef.value = dataSource);
2380
868
  },
2381
- data: {
2382
- type: Object
869
+ {
870
+ immediate: true
2383
871
  }
2384
- },
2385
- setup(__props) {
2386
- const props2 = __props;
2387
- const Container = h$1("div", [props2.template(props2.data)]);
2388
- return (_ctx, _cache) => {
2389
- return openBlock(), createBlock(unref(Container));
2390
- };
2391
- }
2392
- });
2393
- const withInstall = (comp) => {
2394
- comp.install = (app) => {
2395
- app.component(comp.name, comp);
2396
- };
2397
- return comp;
2398
- };
2399
- const DtScrollContainer = withInstall(_sfc_main$b);
2400
- withInstall(_sfc_main$a);
2401
- const _sfc_main$9 = /* @__PURE__ */ defineComponent({
2402
- __name: "ModalWrap",
2403
- props: {
2404
- useWrapper: { type: Boolean, default: true },
2405
- modalHeaderHeight: { type: Number, default: 55 },
2406
- modalFooterHeight: { type: Number, default: 58 },
2407
- minHeight: { type: Number, default: 200 },
2408
- height: { type: Number },
2409
- visible: { type: Boolean },
2410
- fullScreen: { type: Boolean }
2411
- },
2412
- emits: ["ext-height", "height-change"],
2413
- setup(__props, { emit: emits }) {
2414
- const props2 = __props;
2415
- const wrapperRef = ref(null);
2416
- const wrapRef = ref(null);
2417
- const realHeightRef = ref(0);
2418
- const minRealHeightRef = ref(0);
2419
- let realHeight = 0;
2420
- const wrapStyle = computed(() => {
2421
- return {
2422
- minHeight: `${props2.minHeight}px`,
2423
- [props2.fullScreen ? "height" : "maxHeight"]: `${unref(realHeightRef)}px`
2424
- };
2425
- });
2426
- onMounted(() => {
2427
- const { modalHeaderHeight, modalFooterHeight } = props2;
2428
- emits("ext-height", modalHeaderHeight + modalFooterHeight);
2429
- });
2430
- async function getModalDom() {
2431
- const wrapperRefDom = unref(wrapperRef);
2432
- if (!wrapperRefDom)
2433
- return;
2434
- const bodyDom = wrapperRefDom.$el.parentElement.parentElement.parentElement;
2435
- if (!bodyDom)
2436
- return;
2437
- bodyDom.style.padding = props2.useWrapper ? "24px" : "0";
2438
- await nextTick();
2439
- const modalDom = bodyDom.parentElement && bodyDom.parentElement.parentElement;
2440
- return modalDom;
872
+ );
873
+ const getDataSourceRef = computed$1(() => {
874
+ return unref(dataSourceRef);
875
+ });
876
+ function handleTableChange(pagination, filters, sorter) {
877
+ const { sortFn, filterFn, onTableChange: onTableChange2, clearSelectOnPageChange } = unref(propsRef);
878
+ const { appConf: appConf2 } = useAppStore();
879
+ const { current = 1, pageSize = appConf2.ui.table.defaultPageSize } = pagination;
880
+ if (clearSelectOnPageChange) {
881
+ clearSelectedRowKeys();
2441
882
  }
2442
- async function setModalHeight() {
2443
- if (!props2.visible)
2444
- return;
2445
- try {
2446
- const modalDom = await getModalDom();
2447
- if (!modalDom)
2448
- return;
2449
- const modalRect = getComputedStyle(modalDom).top;
2450
- const modalTop = Number.parseInt(modalRect);
2451
- let maxHeight = window.innerHeight - props2.modalFooterHeight - props2.modalHeaderHeight - 100;
2452
- if (modalTop < 40) {
2453
- maxHeight -= 26;
2454
- }
2455
- await nextTick();
2456
- const warpEl = unref(wrapRef);
2457
- if (!warpEl)
2458
- return;
2459
- await nextTick();
2460
- realHeight = warpEl.scrollHeight;
2461
- if (props2.fullScreen) {
2462
- realHeightRef.value = window.innerHeight - props2.modalFooterHeight - props2.modalHeaderHeight;
2463
- } else {
2464
- realHeightRef.value = props2.height ? props2.height : realHeight > maxHeight ? maxHeight : realHeight;
2465
- }
2466
- emits("height-change", unref(realHeightRef));
2467
- const _modalDom = await getModalDom();
2468
- _modalDom.style.top = (window.innerHeight - _modalDom.offsetHeight) / 2 + "px";
2469
- } catch (error2) {
2470
- console.log(error2);
2471
- }
883
+ setPagination(pagination);
884
+ const params = {};
885
+ if (sorter && isFunction(sortFn)) {
886
+ params.sortInfo = sortFn(sorter);
2472
887
  }
2473
- windowResizeFn(setModalHeight.bind(null, false));
2474
- watchEffect(() => {
2475
- props2.useWrapper && setModalHeight();
888
+ if (filters && isFunction(filterFn)) {
889
+ params.filterInfo = filterFn(filters);
890
+ }
891
+ return onTableChange2({
892
+ pagination: {
893
+ current,
894
+ pageSize
895
+ },
896
+ sort: sorter,
897
+ filter: toRaw$1(unref(params.filterInfo)),
898
+ showBtnLoading: false
2476
899
  });
2477
- watch(
2478
- () => props2.fullScreen,
2479
- (v) => {
2480
- setModalHeight();
2481
- if (!v) {
2482
- realHeightRef.value = minRealHeightRef.value;
2483
- } else {
2484
- minRealHeightRef.value = realHeightRef.value;
2485
- }
2486
- }
2487
- );
2488
- return (_ctx, _cache) => {
2489
- return openBlock(), createBlock(unref(DtScrollContainer), {
2490
- ref_key: "wrapperRef",
2491
- ref: wrapperRef
2492
- }, {
2493
- default: withCtx(() => [
2494
- createElementVNode("div", {
2495
- ref_key: "wrapRef",
2496
- ref: wrapRef,
2497
- style: normalizeStyle(unref(wrapStyle))
2498
- }, [
2499
- renderSlot(_ctx.$slots, "default")
2500
- ], 4)
2501
- ]),
2502
- _: 3
2503
- }, 512);
2504
- };
2505
900
  }
2506
- });
2507
- const _sfc_main$8 = /* @__PURE__ */ defineComponent({
2508
- __name: "ModalFooter",
2509
- props: {
2510
- buttons: Object,
2511
- showSave: { type: Boolean, default: true },
2512
- showCancel: { type: Boolean, default: true },
2513
- okText: { type: String },
2514
- cancelText: { type: String }
2515
- },
2516
- emits: [
2517
- "handleSave",
2518
- "handleCancel"
2519
- ],
2520
- setup(__props, { emit: emits }) {
2521
- const props2 = __props;
2522
- const { t } = useI18n("UI");
2523
- const buttonList = computed(() => {
2524
- if (props2.buttons && props2.buttons.length)
2525
- return props2.buttons;
2526
- let buttonActions = [
2527
- { t: "\u5173\u95ED", label: props2.cancelText || t("CLOSE"), preIcon: "mdi:close", flag: "CANCEL" },
2528
- { t: "\u4FDD\u5B58", label: props2.okText || t("SAVE"), preIcon: "mdi:content-save", type: "primary", flag: "OK" }
2529
- ];
2530
- if (!props2.showSave)
2531
- buttonActions = buttonActions.filter((btn) => btn.flag !== "OK");
2532
- if (!props2.showCancel)
2533
- buttonActions = buttonActions.filter((btn) => btn.flag !== "CANCEL");
2534
- return buttonActions;
2535
- });
2536
- function handleMethod(item) {
2537
- switch (item.flag) {
2538
- case "OK":
2539
- emits("handleSave");
2540
- break;
2541
- case "CANCEL":
2542
- emits("handleCancel");
2543
- break;
901
+ const { defSort, onTableChange } = unref(propsRef);
902
+ const { appConf } = useAppStore();
903
+ onTableChange({
904
+ pagination: {
905
+ current: 1,
906
+ pageSize: appConf.ui.table.defaultPageSize
907
+ },
908
+ sort: defSort,
909
+ filter: null,
910
+ showBtnLoading: false
911
+ }, false);
912
+ function updateTableDataRecord(rowKey, record) {
913
+ const row = findTableDataRecord(rowKey);
914
+ if (row) {
915
+ for (const field in record) {
916
+ row[field] = record[field];
2544
917
  }
918
+ return row;
2545
919
  }
2546
- return (_ctx, _cache) => {
2547
- return openBlock(), createElementBlock(Fragment, null, [
2548
- renderSlot(_ctx.$slots, "appendFooter"),
2549
- createVNode(_sfc_main$g, {
2550
- mode: "dialog",
2551
- buttonList: unref(buttonList),
2552
- onHandleMethod: _cache[0] || (_cache[0] = ($event) => handleMethod($event))
2553
- }, null, 8, ["buttonList"])
2554
- ], 64);
2555
- };
2556
920
  }
2557
- });
2558
- function useFullScreen(wrapClassName) {
2559
- const fullScreenRef = ref(false);
2560
- const getWrapClassName = computed(() => {
2561
- const clsName = unref(wrapClassName) || "";
2562
- const cls = unref(fullScreenRef) ? `fullscreen-modal ${clsName} ` : unref(clsName);
2563
- return `dt-modal ${cls}`;
2564
- });
2565
- function toggleFullScreen(e) {
2566
- e && e.stopPropagation();
2567
- fullScreenRef.value = !unref(fullScreenRef);
2568
- dispatchResize();
921
+ function findTableDataRecord(rowKey) {
922
+ if (!dataSourceRef.value || dataSourceRef.value.length == 0 || !rowKey)
923
+ return;
924
+ const { childrenColumnName = "children" } = unref(propsRef);
925
+ const findRow = (array) => {
926
+ let ret;
927
+ array.some(function iter(r) {
928
+ if (Reflect.has(r, unref(propsRef).rowKey) && r[unref(propsRef).rowKey] === rowKey) {
929
+ ret = r;
930
+ return true;
931
+ }
932
+ return r[childrenColumnName] && r[childrenColumnName].some(iter);
933
+ });
934
+ return ret;
935
+ };
936
+ return findRow(dataSourceRef.value);
2569
937
  }
2570
938
  return {
2571
- fullScreenRef,
2572
- getWrapClassName,
2573
- toggleFullScreen
939
+ getDataSourceRef,
940
+ handleTableChange,
941
+ updateTableDataRecord,
942
+ findTableDataRecord
2574
943
  };
2575
944
  }
945
+ const _hoisted_1$6 = { key: 0 };
2576
946
  const _sfc_main$7 = /* @__PURE__ */ defineComponent({
2577
- __name: "index",
2578
- props: basicProps,
2579
- emits: ["visible-change", "height-change", "cancel", "save", "register", "update:visible"],
2580
- setup(__props, { emit: emits }) {
2581
- const props2 = __props;
2582
- const visibleRef = ref(false);
2583
- const propsRef = ref();
2584
- const modalWrapperRef = ref(null);
2585
- const { getWrapClassName, toggleFullScreen, fullScreenRef } = useFullScreen(computed(() => unref(propsRef)?.wrapClassName));
2586
- const getMergeProps = computed(() => {
2587
- return {
2588
- ...props2,
2589
- ...unref(propsRef)
2590
- };
2591
- });
2592
- const getBindValue = computed(() => {
2593
- const bindValue = {
2594
- ...unref(getMergeProps),
2595
- ...unref(propsRef),
2596
- visible: unref(visibleRef),
2597
- wrapClassName: unref(getWrapClassName)
2598
- };
2599
- let omitArr = unref(fullScreenRef) ? ["height", "title"] : ["title"];
2600
- if (isArray(unref(propsRef)?.footer)) {
2601
- omitArr.push("footer");
2602
- }
2603
- return omit(bindValue, omitArr);
2604
- });
2605
- const getWrapperHeight = computed(() => {
2606
- if (unref(fullScreenRef))
2607
- return void 0;
2608
- return unref(getBindValue).height;
2609
- });
2610
- const modalFooterHeight = computed(() => {
2611
- if (isArray(props2.footer)) {
2612
- return (unref(propsRef)?.footer).length ? 0 : void 0;
2613
- }
2614
- return props2?.footer !== void 0 && !props2.footer ? 0 : void 0;
2615
- });
2616
- const modalMethods = {
2617
- setModalProps,
2618
- redoModalHeight: () => {
2619
- nextTick(() => {
2620
- if (unref(modalWrapperRef)) {
2621
- unref(modalWrapperRef).setModalHeight();
947
+ __name: "Fullscreen",
948
+ setup(__props) {
949
+ const { t } = useI18n("UI");
950
+ const table = getTableInstance();
951
+ const wrapEl = ref(null);
952
+ const { toggle, isFullscreen } = useFullscreen(wrapEl);
953
+ watch(
954
+ () => table.tableElRef.value,
955
+ (v) => {
956
+ const getParent = (el) => {
957
+ if (!el || !el.parentNode)
958
+ return null;
959
+ if (el.parentNode.className?.indexOf("dt-layout-content") !== -1) {
960
+ wrapEl.value = el.parentNode;
961
+ } else {
962
+ getParent(el.parentNode);
2622
963
  }
2623
- });
2624
- }
2625
- };
2626
- const instance = getCurrentInstance();
2627
- if (instance) {
2628
- emits("register", modalMethods, instance.uid);
2629
- }
2630
- function handleHeightChange(height) {
2631
- emits("height-change", height);
2632
- }
2633
- function setModalProps(props22) {
2634
- propsRef.value = deepMerge(unref(propsRef) || {}, props22);
2635
- if (Reflect.has(props22, "visible")) {
2636
- visibleRef.value = !!props22.visible;
2637
- }
2638
- if (Reflect.has(props22, "defaultFullscreen")) {
2639
- fullScreenRef.value = !!props22.defaultFullscreen;
2640
- }
2641
- }
2642
- function handleSave() {
2643
- emits("save");
2644
- }
2645
- async function handleCancel(e = null) {
2646
- if (e) {
2647
- e?.stopPropagation();
2648
- if (e.target?.classList?.contains("dt-basic-modal-close--custom"))
2649
- return;
2650
- if (props2.closeFunc && isFunction(props2.closeFunc)) {
2651
- const isClose = await props2.closeFunc();
2652
- visibleRef.value = !isClose;
2653
- return;
2654
- }
2655
- }
2656
- const { afterClose } = unref(getBindValue);
2657
- if (afterClose && isFunction(afterClose)) {
2658
- afterClose();
964
+ };
965
+ getParent(v.$el);
2659
966
  }
2660
- visibleRef.value = false;
2661
- emits("cancel", e);
2662
- }
2663
- watch(() => unref(visibleRef), (v) => {
2664
- emits("visible-change", v);
2665
- emits("update:visible", v);
2666
- nextTick(() => {
2667
- if (props2.scrollTop && v && unref(modalWrapperRef)) {
2668
- unref(modalWrapperRef).$el.scrollTop = 0;
2669
- }
2670
- });
2671
- }, {
2672
- immediate: false
2673
- });
967
+ );
2674
968
  return (_ctx, _cache) => {
2675
- const _component_ASpin = Spin;
2676
- return openBlock(), createBlock(_sfc_main$e, mergeProps(unref(getBindValue), { onCancel: handleCancel }), createSlots({
969
+ const _component_ATooltip = Tooltip;
970
+ return openBlock(), createBlock(_component_ATooltip, { placement: "top" }, {
971
+ title: withCtx(() => [
972
+ !unref(isFullscreen) ? (openBlock(), createElementBlock("span", _hoisted_1$6, toDisplayString(unref(t)("FULLSCREEN")), 1)) : createCommentVNode("v-if", true)
973
+ ]),
2677
974
  default: withCtx(() => [
2678
- createVNode(_component_ASpin, {
2679
- spinning: unref(getBindValue).loading,
2680
- tip: unref(getBindValue).loadingTip
2681
- }, {
2682
- default: withCtx(() => [
2683
- createVNode(_sfc_main$9, mergeProps({
2684
- useWrapper: unref(getBindValue).useWrapper,
2685
- fullScreen: unref(fullScreenRef),
2686
- ref_key: "modalWrapperRef",
2687
- ref: modalWrapperRef,
2688
- minHeight: unref(getBindValue).minHeight,
2689
- height: unref(getWrapperHeight),
2690
- visible: visibleRef.value,
2691
- modalFooterHeight: unref(modalFooterHeight)
2692
- }, unref(omit)(unref(getBindValue).wrapperProps, "visible", "height", "modalFooterHeight"), { onHeightChange: handleHeightChange }), {
2693
- default: withCtx(() => [
2694
- renderSlot(_ctx.$slots, "default")
2695
- ]),
2696
- _: 3
2697
- }, 16, ["useWrapper", "fullScreen", "minHeight", "height", "visible", "modalFooterHeight"])
2698
- ]),
2699
- _: 3
2700
- }, 8, ["spinning", "tip"])
975
+ createElementVNode("span", {
976
+ class: "flex",
977
+ onClick: _cache[0] || (_cache[0] = (...args) => unref(toggle) && unref(toggle)(...args))
978
+ }, [
979
+ createElementVNode("i", {
980
+ class: normalizeClass(["i w-7 leading-7 text-center cursor-pointer", unref(isFullscreen) ? "ic:baseline-fullscreen-exit" : "ic:baseline-fullscreen"])
981
+ }, null, 2)
982
+ ])
2701
983
  ]),
2702
- _: 2
2703
- }, [
2704
- !_ctx.$slots.closeIcon ? {
2705
- name: "closeIcon",
2706
- fn: withCtx(() => [
2707
- createVNode(_sfc_main$d, {
2708
- canFullscreen: unref(getBindValue).canFullscreen,
2709
- fullScreen: unref(fullScreenRef),
2710
- onCancel: handleCancel,
2711
- onFullscreen: unref(toggleFullScreen)
2712
- }, null, 8, ["canFullscreen", "fullScreen", "onFullscreen"])
2713
- ]),
2714
- key: "0"
2715
- } : void 0,
2716
- !_ctx.$slots.title ? {
2717
- name: "title",
2718
- fn: withCtx(() => [
2719
- createTextVNode(toDisplayString(unref(getMergeProps).title), 1)
2720
- ]),
2721
- key: "1"
2722
- } : void 0,
2723
- !_ctx.$slots.footer ? {
2724
- name: "footer",
2725
- fn: withCtx(() => [
2726
- createVNode(_sfc_main$8, {
2727
- buttons: propsRef.value?.footer,
2728
- showSave: unref(getBindValue).showOkBtn,
2729
- showCancel: unref(getBindValue).showCancelBtn,
2730
- okText: unref(getBindValue).okText,
2731
- cancelText: unref(getBindValue).cancelText,
2732
- onHandleSave: handleSave,
2733
- onHandleCancel: handleCancel
2734
- }, createSlots({ _: 2 }, [
2735
- renderList(Object.keys(_ctx.$slots), (item) => {
2736
- return {
2737
- name: item,
2738
- fn: withCtx((data) => [
2739
- renderSlot(_ctx.$slots, item, normalizeProps(guardReactiveProps(data || {})))
2740
- ])
2741
- };
2742
- })
2743
- ]), 1032, ["buttons", "showSave", "showCancel", "okText", "cancelText"])
2744
- ]),
2745
- key: "2"
2746
- } : void 0,
2747
- renderList(Object.keys(unref(omit)(_ctx.$slots, "default")), (item) => {
2748
- return {
2749
- name: item,
2750
- fn: withCtx((data) => [
2751
- renderSlot(_ctx.$slots, item, normalizeProps(guardReactiveProps(data || {})))
2752
- ])
2753
- };
2754
- })
2755
- ]), 1040);
984
+ _: 1
985
+ });
2756
986
  };
2757
987
  }
2758
988
  });
989
+ const FullscreenSetting = /* @__PURE__ */ _export_sfc(_sfc_main$7, [["__file", "D:/dt/dt-frame-front/dt-frames/frames/packages/ui/src/components/table/src/components/tableSetting/Fullscreen.vue"]]);
2759
990
  const _hoisted_1$5 = { class: "column-select" };
2760
991
  const _sfc_main$6 = /* @__PURE__ */ defineComponent({
2761
992
  __name: "DownloadCtrl",
@@ -2804,10 +1035,10 @@ const _sfc_main$6 = /* @__PURE__ */ defineComponent({
2804
1035
  );
2805
1036
  return (_ctx, _cache) => {
2806
1037
  const _component_ACheckbox = Checkbox$1;
2807
- const _component_ADivider = Divider$1;
1038
+ const _component_ADivider = Divider;
2808
1039
  const _component_ACol = Col;
2809
1040
  const _component_ARow = Row;
2810
- return openBlock(), createBlock(unref(_sfc_main$7), {
1041
+ return openBlock(), createBlock(unref(DtModal), {
2811
1042
  onRegister: unref(registerDialog),
2812
1043
  onSave: save
2813
1044
  }, {
@@ -2827,7 +1058,7 @@ const _sfc_main$6 = /* @__PURE__ */ defineComponent({
2827
1058
  createVNode(_component_ADivider, { dashed: "" }),
2828
1059
  createVNode(_component_ARow, null, {
2829
1060
  default: withCtx(() => [
2830
- (openBlock(true), createElementBlock(Fragment, null, renderList(modalData.value, (it, index) => {
1061
+ (openBlock(true), createElementBlock(Fragment, null, renderList(modalData.value, (it, index2) => {
2831
1062
  return openBlock(), createBlock(_component_ACol, { span: 8 }, {
2832
1063
  default: withCtx(() => [
2833
1064
  createVNode(_component_ACheckbox, {
@@ -2853,6 +1084,7 @@ const _sfc_main$6 = /* @__PURE__ */ defineComponent({
2853
1084
  };
2854
1085
  }
2855
1086
  });
1087
+ const DownloadCtrl = /* @__PURE__ */ _export_sfc(_sfc_main$6, [["__file", "D:/dt/dt-frame-front/dt-frames/frames/packages/ui/src/components/table/src/components/tableSetting/DownloadCtrl.vue"]]);
2856
1088
  const _hoisted_1$4 = /* @__PURE__ */ createElementVNode("span", { class: "flex" }, [
2857
1089
  /* @__PURE__ */ createElementVNode("i", { class: "i ic:baseline-download w-7 leading-7 text-center cursor-pointer" })
2858
1090
  ], -1);
@@ -2868,13 +1100,14 @@ const _sfc_main$5 = /* @__PURE__ */ defineComponent({
2868
1100
  const table = getTableInstance();
2869
1101
  const [registerDialog, { openModal }] = useModalOut();
2870
1102
  const { appConf } = useAppStore();
1103
+ const getPopupContainer$1 = () => document.getElementById("dt-layout-content") || getPopupContainer();
2871
1104
  const { t } = useI18n("UI");
2872
1105
  const isInclude = (type) => {
2873
1106
  return isBoolean(props2.download) && props2.download && appConf?.ui?.table?.exportTable.includes(type) || isArray(props2.download) && props2.download.includes(type);
2874
1107
  };
2875
- const showCurrentDownload = computed(() => isInclude("current"));
2876
- const showSelectedDownload = computed(() => isInclude("select"));
2877
- const showBackDownload = computed(() => isInclude("all"));
1108
+ const showCurrentDownload = computed$1(() => isInclude("current"));
1109
+ const showSelectedDownload = computed$1(() => isInclude("select"));
1110
+ const showBackDownload = computed$1(() => isInclude("all"));
2878
1111
  function handleTitleClick({ key }) {
2879
1112
  const { onDownload, columns: allColumns, dataSource } = unref(table.getBind);
2880
1113
  const excludesFlag = ["ACTION", "CHECKBOX", "RADIO"];
@@ -2900,7 +1133,7 @@ const _sfc_main$5 = /* @__PURE__ */ defineComponent({
2900
1133
  createVNode(_component_ADropdown, {
2901
1134
  placement: "bottom",
2902
1135
  trigger: ["click"],
2903
- getPopupContainer: unref(getPopupContainer)
1136
+ getPopupContainer: getPopupContainer$1
2904
1137
  }, {
2905
1138
  overlay: withCtx(() => [
2906
1139
  createVNode(_component_AMenu, { onClick: handleTitleClick }, {
@@ -2910,19 +1143,19 @@ const _sfc_main$5 = /* @__PURE__ */ defineComponent({
2910
1143
  createElementVNode("span", null, toDisplayString(unref(t)("EXPORT_CURRENT_PAGE")), 1)
2911
1144
  ]),
2912
1145
  _: 1
2913
- })) : createCommentVNode("", true),
1146
+ })) : createCommentVNode("v-if", true),
2914
1147
  unref(showSelectedDownload) ? (openBlock(), createBlock(_component_AMenuItem, { key: "select" }, {
2915
1148
  default: withCtx(() => [
2916
1149
  createElementVNode("span", null, toDisplayString(unref(t)("EXPORT_SELECT_COLUMN")), 1)
2917
1150
  ]),
2918
1151
  _: 1
2919
- })) : createCommentVNode("", true),
1152
+ })) : createCommentVNode("v-if", true),
2920
1153
  unref(showBackDownload) ? (openBlock(), createBlock(_component_AMenuItem, { key: "all" }, {
2921
1154
  default: withCtx(() => [
2922
1155
  createElementVNode("span", null, toDisplayString(unref(t)("EXPORT_ALL")), 1)
2923
1156
  ]),
2924
1157
  _: 1
2925
- })) : createCommentVNode("", true)
1158
+ })) : createCommentVNode("v-if", true)
2926
1159
  ]),
2927
1160
  _: 1
2928
1161
  })
@@ -2931,14 +1164,15 @@ const _sfc_main$5 = /* @__PURE__ */ defineComponent({
2931
1164
  _hoisted_1$4
2932
1165
  ]),
2933
1166
  _: 1
2934
- }, 8, ["getPopupContainer"]),
2935
- createVNode(_sfc_main$6, { onRegister: unref(registerDialog) }, null, 8, ["onRegister"])
1167
+ }),
1168
+ createVNode(DownloadCtrl, { onRegister: unref(registerDialog) }, null, 8, ["onRegister"])
2936
1169
  ]),
2937
1170
  _: 1
2938
1171
  });
2939
1172
  };
2940
1173
  }
2941
1174
  });
1175
+ const Download = /* @__PURE__ */ _export_sfc(_sfc_main$5, [["__file", "D:/dt/dt-frame-front/dt-frames/frames/packages/ui/src/components/table/src/components/tableSetting/Download.vue"]]);
2942
1176
  const _hoisted_1$3 = /* @__PURE__ */ createElementVNode("i", { class: "i ant-design:drag-outlined drag-icon cursor-pointer" }, null, -1);
2943
1177
  const _hoisted_2$1 = ["onClick"];
2944
1178
  const _hoisted_3$1 = ["onClick"];
@@ -2961,7 +1195,7 @@ const _sfc_main$4 = /* @__PURE__ */ defineComponent({
2961
1195
  const columnListRef = ref(null);
2962
1196
  const checkIndex = ref(false);
2963
1197
  const checkSelect = ref(false);
2964
- const getValues = computed(() => {
1198
+ const getValues = computed$1(() => {
2965
1199
  return unref(table?.getBind);
2966
1200
  });
2967
1201
  let sortable;
@@ -2971,7 +1205,7 @@ const _sfc_main$4 = /* @__PURE__ */ defineComponent({
2971
1205
  checkedList: [],
2972
1206
  defaultCheckList: []
2973
1207
  });
2974
- const indeterminate = computed(() => {
1208
+ const indeterminate = computed$1(() => {
2975
1209
  let len = plainOptions.value.length;
2976
1210
  let checkedLen = state.checkedList.length;
2977
1211
  unref(checkIndex) && checkedLen--;
@@ -3081,9 +1315,9 @@ const _sfc_main$4 = /* @__PURE__ */ defineComponent({
3081
1315
  return;
3082
1316
  const columns = getColumns();
3083
1317
  const isFixed = item.fixed === fixed ? false : fixed;
3084
- const index = columns.findIndex((col) => col.dataIndex === item.dataIndex);
3085
- if (index !== -1) {
3086
- columns[index].fixed = isFixed;
1318
+ const index2 = columns.findIndex((col) => col.dataIndex === item.dataIndex);
1319
+ if (index2 !== -1) {
1320
+ columns[index2].fixed = isFixed;
3087
1321
  }
3088
1322
  item.fixed = isFixed;
3089
1323
  if (isFixed && !item.width) {
@@ -3119,13 +1353,13 @@ const _sfc_main$4 = /* @__PURE__ */ defineComponent({
3119
1353
  state.checkedList = checkList;
3120
1354
  }
3121
1355
  function getPopupContainer$1() {
3122
- return isFunction$1(attrs.getPopupContainer) ? attrs.getPopupContainer() : getPopupContainer();
1356
+ return isFunction$1(attrs.getPopupContainer) ? attrs.getPopupContainer() : document.getElementById("dt-layout-content") || getPopupContainer();
3123
1357
  }
3124
1358
  return (_ctx, _cache) => {
3125
1359
  const _component_ACheckbox = Checkbox$1;
3126
1360
  const _component_AButton = Button;
3127
1361
  const _component_ATooltip = Tooltip;
3128
- const _component_ADivider = Divider$1;
1362
+ const _component_ADivider = Divider;
3129
1363
  const _component_ACheckboxGroup = CheckboxGroup;
3130
1364
  const _component_APopover = Popover$1;
3131
1365
  return openBlock(), createBlock(_component_ATooltip, { placement: "top" }, {
@@ -3274,6 +1508,7 @@ const _sfc_main$4 = /* @__PURE__ */ defineComponent({
3274
1508
  };
3275
1509
  }
3276
1510
  });
1511
+ const ColumnSetting = /* @__PURE__ */ _export_sfc(_sfc_main$4, [["__file", "D:/dt/dt-frame-front/dt-frames/frames/packages/ui/src/components/table/src/components/tableSetting/Column.vue"]]);
3277
1512
  const _hoisted_1$2 = { class: "flex dt-table-setting" };
3278
1513
  const _sfc_main$3 = /* @__PURE__ */ defineComponent({
3279
1514
  __name: "index",
@@ -3286,7 +1521,7 @@ const _sfc_main$3 = /* @__PURE__ */ defineComponent({
3286
1521
  emits: ["columns-change"],
3287
1522
  setup(__props, { emit: emits }) {
3288
1523
  const props2 = __props;
3289
- const getSetting = computed(() => {
1524
+ const getSetting = computed$1(() => {
3290
1525
  return {
3291
1526
  download: true,
3292
1527
  setting: true,
@@ -3299,16 +1534,17 @@ const _sfc_main$3 = /* @__PURE__ */ defineComponent({
3299
1534
  }
3300
1535
  return (_ctx, _cache) => {
3301
1536
  return openBlock(), createElementBlock("div", _hoisted_1$2, [
3302
- unref(getSetting).download ? (openBlock(), createBlock(_sfc_main$5, normalizeProps(mergeProps({ key: 0 }, unref(getSetting))), null, 16)) : createCommentVNode("", true),
3303
- unref(getSetting).setting ? (openBlock(), createBlock(_sfc_main$4, {
1537
+ unref(getSetting).download ? (openBlock(), createBlock(Download, normalizeProps(mergeProps({ key: 0 }, unref(getSetting))), null, 16)) : createCommentVNode("v-if", true),
1538
+ unref(getSetting).setting ? (openBlock(), createBlock(ColumnSetting, {
3304
1539
  key: 1,
3305
1540
  onColumnsChange: handleColumnChange
3306
- })) : createCommentVNode("", true),
3307
- unref(getSetting).fullscreen ? (openBlock(), createBlock(_sfc_main$f, { key: 2 })) : createCommentVNode("", true)
1541
+ })) : createCommentVNode("v-if", true),
1542
+ unref(getSetting).fullscreen ? (openBlock(), createBlock(FullscreenSetting, { key: 2 })) : createCommentVNode("v-if", true)
3308
1543
  ]);
3309
1544
  };
3310
1545
  }
3311
1546
  });
1547
+ const DtTableSetting = /* @__PURE__ */ _export_sfc(_sfc_main$3, [["__file", "D:/dt/dt-frame-front/dt-frames/frames/packages/ui/src/components/table/src/components/tableSetting/index.vue"]]);
3312
1548
  const _hoisted_1$1 = { class: "dt-table-header" };
3313
1549
  const _hoisted_2 = { class: "flex flex-row justify-between" };
3314
1550
  const _hoisted_3 = { class: "flex flex-row flex-1" };
@@ -3340,23 +1576,24 @@ const _sfc_main$2 = /* @__PURE__ */ defineComponent({
3340
1576
  return openBlock(), createElementBlock("div", _hoisted_1$1, [
3341
1577
  createElementVNode("div", _hoisted_2, [
3342
1578
  createElementVNode("div", _hoisted_3, [
3343
- unref(getActionsProps)?.buttonList.length ? (openBlock(), createBlock(unref(_sfc_main$g), normalizeProps(mergeProps({ key: 0 }, unref(getActionsProps))), null, 16)) : createCommentVNode("", true),
1579
+ unref(getActionsProps)?.buttonList.length ? (openBlock(), createBlock(unref(DtFormButtons), normalizeProps(mergeProps({ key: 0 }, unref(getActionsProps))), null, 16)) : createCommentVNode("v-if", true),
3344
1580
  renderSlot(_ctx.$slots, "toolbar")
3345
1581
  ]),
3346
1582
  __props.tableSetting ? (openBlock(), createElementBlock("div", _hoisted_4, [
3347
- createVNode(_sfc_main$3, { setting: __props.tableSetting }, null, 8, ["setting"])
3348
- ])) : createCommentVNode("", true)
1583
+ createVNode(DtTableSetting, { setting: __props.tableSetting }, null, 8, ["setting"])
1584
+ ])) : createCommentVNode("v-if", true)
3349
1585
  ]),
3350
1586
  _ctx.$slots.headerTop ? (openBlock(), createElementBlock("div", _hoisted_5, [
3351
1587
  renderSlot(_ctx.$slots, "headerTop")
3352
- ])) : createCommentVNode("", true)
1588
+ ])) : createCommentVNode("v-if", true)
3353
1589
  ]);
3354
1590
  };
3355
1591
  }
3356
1592
  });
1593
+ const TableHeader = /* @__PURE__ */ _export_sfc(_sfc_main$2, [["__file", "D:/dt/dt-frame-front/dt-frames/frames/packages/ui/src/components/table/src/components/TableHeader.vue"]]);
3357
1594
  function useTableHeader(propsRef, slots, handlers) {
3358
1595
  const { t } = useI18n("UI");
3359
- const getHeaderProps = computed(() => {
1596
+ const getHeaderProps = computed$1(() => {
3360
1597
  const TABLE_TOOLS = [
3361
1598
  { t: "\u65B0\u589E", label: t("ADD"), preIcon: "mdi:plus", type: "primary", onClick: unref(propsRef).onOPenAddDialog },
3362
1599
  { t: "\u5220\u9664", label: t("DELETE"), preIcon: "mdi:delete-outline", onClick: unref(propsRef).onDeletes }
@@ -3366,7 +1603,7 @@ function useTableHeader(propsRef, slots, handlers) {
3366
1603
  const hideTitle = (!toolbar || !toolbar.filter((it) => it.show ?? true).length) && !slots.toolbar && !slots.headerTop && !tableSetting;
3367
1604
  return {
3368
1605
  title: hideTitle ? null : () => h$1(
3369
- _sfc_main$2,
1606
+ TableHeader,
3370
1607
  {
3371
1608
  tableSetting,
3372
1609
  toolbar,
@@ -3416,7 +1653,7 @@ function usePagination(props2) {
3416
1653
  }
3417
1654
  }
3418
1655
  );
3419
- const getPaginationInfo = computed(() => {
1656
+ const getPaginationInfo = computed$1(() => {
3420
1657
  const { appConf } = useAppStore();
3421
1658
  let { pagination } = unref(props2);
3422
1659
  if (isBoolean(pagination) && !pagination) {
@@ -3469,7 +1706,7 @@ const DEFAULT_CONFIG = {
3469
1706
  function useRowSelection(propsRef, emit) {
3470
1707
  const selectedRowKeysRef = ref([]);
3471
1708
  const selectedRowRef = ref([]);
3472
- const getRowSelectionRef = computed(() => {
1709
+ const getRowSelectionRef = computed$1(() => {
3473
1710
  const { rowSelection, showCheckboxColumn, checkStrictly } = unref(propsRef);
3474
1711
  if (!rowSelection && !showCheckboxColumn)
3475
1712
  return null;
@@ -3557,13 +1794,19 @@ function useRowSelection(propsRef, emit) {
3557
1794
  setSelectedRowKeys
3558
1795
  };
3559
1796
  }
1797
+ var TABLE_SIZE_HEIGHT = /* @__PURE__ */ ((TABLE_SIZE_HEIGHT2) => {
1798
+ TABLE_SIZE_HEIGHT2[TABLE_SIZE_HEIGHT2["large"] = 56] = "large";
1799
+ TABLE_SIZE_HEIGHT2[TABLE_SIZE_HEIGHT2["middle"] = 47] = "middle";
1800
+ TABLE_SIZE_HEIGHT2[TABLE_SIZE_HEIGHT2["small"] = 32] = "small";
1801
+ return TABLE_SIZE_HEIGHT2;
1802
+ })(TABLE_SIZE_HEIGHT || {});
3560
1803
  function useTableScroll(propsRef, tableElRef, columnsRef, rowSelectionRef) {
3561
1804
  const tableHeightRef = ref(0), filterSource = ref([]);
3562
- ref(null);
3563
1805
  let footerEl, bodyEl;
1806
+ let oldPageNum = -1;
3564
1807
  const debounceRedoHeight = useDebounceFn(redoHeight, 100);
3565
1808
  windowResizeFn(calcTableHeight, 280);
3566
- const getCanResize = computed(() => {
1809
+ const getCanResize = computed$1(() => {
3567
1810
  const { canResize, scroll } = unref(propsRef);
3568
1811
  return canResize && !(scroll || {}).y;
3569
1812
  });
@@ -3616,7 +1859,9 @@ function useTableScroll(propsRef, tableElRef, columnsRef, rowSelectionRef) {
3616
1859
  if (!unref(getCanResize) || !unref(tableData))
3617
1860
  return;
3618
1861
  await nextTick();
3619
- let headerHeight = 0, paginationHeight = 2, footerHeight = 0, titleHeight = tableEl.querySelector(".ant-table-title")?.offsetHeight ?? 0, marginHeight = 15;
1862
+ let headerHeight = 0, paginationHeight = 2, footerHeight = 0, titleHeight = tableEl.querySelector(".ant-table-title")?.offsetHeight ?? 0;
1863
+ const { paddingBottom, paddingTop, marginTop, marginBottom } = getComputedStyle(tableEl, null);
1864
+ const marginHeight = parseInt(paddingBottom) + parseInt(paddingTop) + parseInt(marginTop) + parseInt(marginBottom);
3620
1865
  const headEl = tableEl.querySelector(".ant-table-thead ");
3621
1866
  if (headEl) {
3622
1867
  headerHeight = headEl.offsetHeight;
@@ -3636,7 +1881,7 @@ function useTableScroll(propsRef, tableElRef, columnsRef, rowSelectionRef) {
3636
1881
  footerHeight += offsetHeight || 0;
3637
1882
  }
3638
1883
  } else {
3639
- paginationHeight = -8;
1884
+ paginationHeight = 0;
3640
1885
  }
3641
1886
  const tableHeight = table?.$el?.offsetHeight ?? 0;
3642
1887
  if (tableData.length === 0)
@@ -3647,9 +1892,9 @@ function useTableScroll(propsRef, tableElRef, columnsRef, rowSelectionRef) {
3647
1892
  bodyEl.style.height = `${height}px`;
3648
1893
  if (tableData.length === 0)
3649
1894
  return;
3650
- filterSource.value = unref(propsRef)?.dataSource;
1895
+ virtual ? calcTableScroll() : filterSource.value = unref(propsRef)?.dataSource;
3651
1896
  }
3652
- const getScrollX = computed(() => {
1897
+ const getScrollX = computed$1(() => {
3653
1898
  let width = 0;
3654
1899
  if (unref(rowSelectionRef)) {
3655
1900
  width += 32;
@@ -3663,11 +1908,11 @@ function useTableScroll(propsRef, tableElRef, columnsRef, rowSelectionRef) {
3663
1908
  const tableWidth = table?.$el?.offsetWidth ?? 0;
3664
1909
  return tableWidth > width ? "100%" : width;
3665
1910
  });
3666
- const hideScrollX = computed(() => {
1911
+ const hideScrollX = computed$1(() => {
3667
1912
  let operations = unref(propsRef).operations;
3668
1913
  return !operations || isObject(operations) && operations?.btns && !operations?.btns?.length || isArray(operations) && !operations.length;
3669
1914
  });
3670
- const getScrollRef = computed(() => {
1915
+ const getScrollRef = computed$1(() => {
3671
1916
  const tableHeight = unref(tableHeightRef);
3672
1917
  const { canResize, scroll } = unref(propsRef);
3673
1918
  return {
@@ -3677,24 +1922,74 @@ function useTableScroll(propsRef, tableElRef, columnsRef, rowSelectionRef) {
3677
1922
  ...scroll
3678
1923
  };
3679
1924
  });
3680
- onMounted(() => {
3681
- calcTableHeight();
3682
- nextTick(() => debounceRedoHeight());
3683
- });
1925
+ async function calcTableScroll() {
1926
+ const tableEl = unref(tableElRef)?.$el;
1927
+ bodyEl = tableEl.querySelector(".ant-table-body");
1928
+ const { getUiSize } = useHeader();
1929
+ const rowHeight = TABLE_SIZE_HEIGHT[unref(getUiSize)];
1930
+ const itemSize = Math.ceil(tableHeightRef.value / rowHeight);
1931
+ createScrollWrap(bodyEl, rowHeight * itemSize * 2);
1932
+ calcScroll(bodyEl, rowHeight, itemSize);
1933
+ const fn = () => calcScroll(bodyEl, rowHeight, itemSize);
1934
+ tryOnMounted(() => off(bodyEl, "scroll", fn));
1935
+ on(bodyEl, "scroll", fn);
1936
+ }
1937
+ function createScrollWrap(el, prefixH) {
1938
+ let data = unref(propsRef)?.dataSource?.length;
1939
+ const { getUiSize } = useHeader();
1940
+ const rowHeight = TABLE_SIZE_HEIGHT[unref(getUiSize)];
1941
+ let scrollWrap = el.querySelector(".tableScrollWrap");
1942
+ let wrapHeight = data * rowHeight - prefixH + "px";
1943
+ if (scrollWrap) {
1944
+ scrollWrap.style.height = wrapHeight;
1945
+ } else {
1946
+ let div = document.createElement("div");
1947
+ div.className = "tableScrollWrap";
1948
+ div.style.height = wrapHeight;
1949
+ el.insertBefore(div, el.querySelector("table")[0]);
1950
+ }
1951
+ }
1952
+ function changeSize(bodyEl2, pageNum, itemH, itemSize) {
1953
+ requestAnimationFrame(() => {
1954
+ if (pageNum > 0) {
1955
+ if (oldPageNum === pageNum)
1956
+ return;
1957
+ else
1958
+ oldPageNum = pageNum;
1959
+ let data = unref(propsRef)?.dataSource?.length;
1960
+ let maxIndex = (pageNum + 2) * itemSize;
1961
+ let minIndex = (pageNum - 1) * itemSize;
1962
+ if (maxIndex > data) {
1963
+ maxIndex = data;
1964
+ minIndex = data - itemSize * 2;
1965
+ }
1966
+ bodyEl2.querySelector("table").style.transform = `translateY(${minIndex * itemH}px)`;
1967
+ filterSource.value = unref(propsRef)?.dataSource.slice(minIndex, maxIndex);
1968
+ } else {
1969
+ bodyEl2.querySelector("table").style.transform = `translateY(0px)`;
1970
+ filterSource.value = unref(propsRef)?.dataSource.slice(0, itemSize * 3);
1971
+ }
1972
+ });
1973
+ }
1974
+ async function calcScroll(el, itemH, itemSize) {
1975
+ const scrollTop = el.scrollTop;
1976
+ const currentPage = Math.floor(scrollTop / (itemH * itemSize));
1977
+ changeSize(el, currentPage, itemH, itemSize);
1978
+ }
3684
1979
  return {
3685
1980
  getScrollRef,
3686
1981
  filterSource
3687
1982
  };
3688
1983
  }
3689
1984
  function useRows(propsRef) {
3690
- function getRowClassName(record, index) {
1985
+ function getRowClassName(record, index2) {
3691
1986
  const { striped, rowClassName } = unref(propsRef);
3692
1987
  const classNames = [];
3693
1988
  if (striped) {
3694
- classNames.push(index % 2 === 1 ? "table-striped" : "");
1989
+ classNames.push(index2 % 2 === 1 ? "table-striped" : "");
3695
1990
  }
3696
1991
  if (rowClassName && isFunction(rowClassName)) {
3697
- classNames.push(rowClassName(record, index));
1992
+ classNames.push(rowClassName(record, index2));
3698
1993
  }
3699
1994
  return classNames.join(" ");
3700
1995
  }
@@ -3724,7 +2019,7 @@ const _sfc_main$1 = {
3724
2019
  const {
3725
2020
  column,
3726
2021
  record,
3727
- index
2022
+ index: index2
3728
2023
  } = props2;
3729
2024
  const {
3730
2025
  render,
@@ -3747,10 +2042,10 @@ const _sfc_main$1 = {
3747
2042
  if (!apiStruc) {
3748
2043
  error(`${struc}\u672A\u5728structure\u4E2D\u914D\u7F6E`);
3749
2044
  } else {
3750
- renderText = getDictValueByCode(text, apiStruc);
2045
+ renderText = computed(() => getDictValueByCode(text, apiStruc));
3751
2046
  }
3752
2047
  } else if (dict) {
3753
- renderText = getDictValueByCode(text, dict);
2048
+ renderText = computed(() => getDictValueByCode(text, dict));
3754
2049
  } else if (date) {
3755
2050
  renderText.value = (text && dayjs(text).format(date || "YYYY-MM-DD")) ?? "";
3756
2051
  } else if (number) {
@@ -3766,7 +2061,7 @@ const _sfc_main$1 = {
3766
2061
  });
3767
2062
  }
3768
2063
  } else if (isFunction(render)) {
3769
- let afterRenderData = render(record, index, text);
2064
+ let afterRenderData = render(record, index2, text);
3770
2065
  if (afterRenderData.__v_isRef) {
3771
2066
  renderText = afterRenderData;
3772
2067
  } else if (afterRenderData["setup"]) {
@@ -3784,6 +2079,7 @@ const _sfc_main$1 = {
3784
2079
  return () => createVNode("span", null, [unref(renderText)]);
3785
2080
  }
3786
2081
  };
2082
+ const TableRender = /* @__PURE__ */ _export_sfc(_sfc_main$1, [["__file", "D:/dt/dt-frame-front/dt-frames/frames/packages/ui/src/components/table/src/components/TableRender.vue"]]);
3787
2083
  const DEFAULT_SORT_FN = (sortInfo) => {
3788
2084
  const { field, order } = sortInfo;
3789
2085
  return field && order ? { field, order } : {};
@@ -3807,7 +2103,7 @@ const TableProps = {
3807
2103
  }
3808
2104
  },
3809
2105
  rowKey: {
3810
- type: String,
2106
+ type: [String, Number],
3811
2107
  default: "id"
3812
2108
  },
3813
2109
  columnCode: { type: String, default: "" },
@@ -3885,11 +2181,11 @@ const TableProps = {
3885
2181
  },
3886
2182
  onOpenUpdateDialog: {
3887
2183
  type: Function,
3888
- default: (row, index) => ({})
2184
+ default: (row, index2) => ({})
3889
2185
  },
3890
2186
  onDelete: {
3891
2187
  type: Function,
3892
- default: (row, index) => ({})
2188
+ default: (row, index2) => ({})
3893
2189
  },
3894
2190
  onDeletes: {
3895
2191
  type: Function,
@@ -3920,11 +2216,11 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
3920
2216
  const attrs = useAttrs();
3921
2217
  const slots = useSlots$1();
3922
2218
  const innerPropsRef = ref();
3923
- const getProps = computed(() => {
2219
+ const getProps = computed$1(() => {
3924
2220
  return { ...props2, ...unref(innerPropsRef) };
3925
2221
  });
3926
2222
  const { getRowClassName } = useRows(getProps);
3927
- const tableCls = computed(() => {
2223
+ const tableCls = computed$1(() => {
3928
2224
  return [
3929
2225
  "dt-table",
3930
2226
  "box-border",
@@ -3966,7 +2262,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
3966
2262
  clearSelectedRowKeys
3967
2263
  }
3968
2264
  );
3969
- const getBind = computed(() => {
2265
+ const getBind = computed$1(() => {
3970
2266
  return {
3971
2267
  ...attrs,
3972
2268
  ...unref(getProps),
@@ -4037,15 +2333,16 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
4037
2333
  rowClassName: unref(getRowClassName),
4038
2334
  onChange: unref(handleTableChange)
4039
2335
  }), createSlots({
4040
- bodyCell: withCtx(({ column, record, index }) => [
4041
- _ctx.$slots.bodyCell ? renderSlot(_ctx.$slots, "bodyCell", normalizeProps(mergeProps({ key: 0 }, { column, record, index }))) : createCommentVNode("", true),
4042
- column.slot ? renderSlot(_ctx.$slots, column.slot, normalizeProps(mergeProps({ key: 1 }, { column, record, index }))) : createCommentVNode("", true),
4043
- column?.render && !column.slot && !_ctx.$slots.bodyCell ? (openBlock(), createBlock(_sfc_main$1, {
2336
+ bodyCell: withCtx(({ column, record, index: index2 }) => [
2337
+ _ctx.$slots.bodyCell ? renderSlot(_ctx.$slots, "bodyCell", normalizeProps(mergeProps({ key: 0 }, { column, record, index: index2 }))) : createCommentVNode("v-if", true),
2338
+ column.slot ? renderSlot(_ctx.$slots, column.slot, normalizeProps(mergeProps({ key: 1 }, { column, record, index: index2 }))) : createCommentVNode("v-if", true),
2339
+ createCommentVNode(" \u9759\u6001\u7684\u6570\u636E\u53EF\u4EE5\u901A\u8FC7customRender, \u4F46\u662F\u54CD\u5E94\u5F0F\u6570\u636E, \u5F02\u6B65\u51FD\u6570,\u7EC4\u4EF6\u7B49\u9700\u8981\u4F7F\u7528bodyCell\u6E32\u67D3 "),
2340
+ column?.render && !column.slot && !_ctx.$slots.bodyCell ? (openBlock(), createBlock(TableRender, {
4044
2341
  key: 2,
4045
2342
  column,
4046
2343
  record,
4047
- index
4048
- }, null, 8, ["column", "record", "index"])) : createCommentVNode("", true)
2344
+ index: index2
2345
+ }, null, 8, ["column", "record", "index"])) : createCommentVNode("v-if", true)
4049
2346
  ]),
4050
2347
  emptyText: withCtx(() => [
4051
2348
  _hoisted_1
@@ -4064,7 +2361,8 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
4064
2361
  };
4065
2362
  }
4066
2363
  });
2364
+ const index = /* @__PURE__ */ _export_sfc(_sfc_main, [["__file", "D:/dt/dt-frame-front/dt-frames/frames/packages/ui/src/components/table/src/index.vue"]]);
4067
2365
  export {
4068
- _sfc_main as DtTable,
2366
+ index as DtTable,
4069
2367
  useTable
4070
2368
  };