@dt-frames/ui 2.0.3 → 2.0.5

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 (141) hide show
  1. package/es/assets/locales/en.ts +1 -1
  2. package/es/components/curd/index.js +346 -331
  3. package/es/components/curd/src/components/Curd.d.ts +0 -8
  4. package/es/components/curd/src/props.d.ts +0 -4
  5. package/es/components/drawer/index.d.ts +1 -1
  6. package/es/components/drawer/index.js +27 -27
  7. package/es/components/drawer/src/index.d.ts +2 -3
  8. package/es/components/form/index.d.ts +0 -33
  9. package/es/components/form/index.js +72 -36
  10. package/es/components/form/index.less +212 -9
  11. package/es/components/form/src/components/FormItem.d.ts +3 -7
  12. package/es/components/form/src/components/formIcon.d.ts +14 -14
  13. package/es/components/form/src/components/formInputUseDialog.d.ts +8 -8
  14. package/es/components/form/src/enums/index.d.ts +1 -1
  15. package/es/components/form/src/index.d.ts +0 -25
  16. package/es/components/form/src/props.d.ts +2 -6
  17. package/es/components/form/src/types/form.type.d.ts +1 -1
  18. package/es/components/icons/index.less +5 -0
  19. package/es/components/modal/index.js +35 -34
  20. package/es/components/modal/index.less +10 -0
  21. package/es/components/modal/src/components/ModalFooter.d.ts +3 -3
  22. package/es/components/modal/src/index.d.ts +9 -9
  23. package/es/components/source/hooks/useSource.d.ts +14 -0
  24. package/es/components/source/index.js +72 -31
  25. package/es/components/source/types/source.type.d.ts +5 -8
  26. package/es/components/table/index.js +418 -305
  27. package/es/components/table/index.less +62 -14
  28. package/es/components/table/src/components/TableAction.d.ts +1 -1
  29. package/es/components/table/src/index.d.ts +30 -10
  30. package/es/components/table/src/props.d.ts +12 -4
  31. package/es/components/table/src/types/table.type.d.ts +4 -5
  32. package/es/components/tree/index.d.ts +2 -0
  33. package/es/components/tree/index.js +1087 -0
  34. package/es/components/tree/index.less +119 -0
  35. package/es/components/tree/src/basicProps.d.ts +146 -0
  36. package/es/components/tree/src/components/ContextMenu.d.ts +64 -0
  37. package/es/components/tree/src/components/TreeHeader.d.ts +98 -0
  38. package/es/components/tree/src/enums/index.d.ts +6 -0
  39. package/es/components/tree/src/hooks/useContextMenu.d.ts +2 -0
  40. package/es/components/tree/src/hooks/useTree.d.ts +14 -0
  41. package/es/components/tree/src/index.d.ts +6526 -0
  42. package/es/components/tree/src/type/menu.d.ts +33 -0
  43. package/es/components/tree/src/type/tree.d.ts +55 -0
  44. package/es/components/tree/src/utils/tree.d.ts +5 -0
  45. package/es/packages/ui/src/assets/locales/en.d.ts +101 -0
  46. package/es/packages/ui/src/assets/locales/index.d.ts +2 -0
  47. package/es/packages/ui/src/assets/locales/zh.d.ts +103 -0
  48. package/es/packages/ui/src/components/container/index.d.ts +94 -0
  49. package/es/packages/ui/src/components/container/src/components/bar.d.ts +14 -0
  50. package/es/packages/ui/src/components/container/src/components/scroll-bar.d.ts +70 -0
  51. package/es/packages/ui/src/components/container/src/hooks/scroll.d.ts +10 -0
  52. package/es/packages/ui/src/components/container/src/scroll-container.d.ts +76 -0
  53. package/es/packages/ui/src/components/container/src/slot-container.d.ts +20 -0
  54. package/es/packages/ui/src/components/container/src/types/scroll.type.d.ts +22 -0
  55. package/es/packages/ui/src/components/container/src/utils/scroll.d.ts +5 -0
  56. package/es/packages/ui/src/global.d.ts +7 -0
  57. package/es/packages/ui/src/theme/index.d.ts +10 -0
  58. package/es/packages/ui/src/theme/src/components/content/index.d.ts +27 -0
  59. package/es/packages/ui/src/theme/src/components/feature/back-top.d.ts +5 -0
  60. package/es/packages/ui/src/theme/src/components/feature/index.d.ts +7 -0
  61. package/es/packages/ui/src/theme/src/components/footer/index.d.ts +31 -0
  62. package/es/packages/ui/src/theme/src/components/header/components/bread-crumb.d.ts +6 -0
  63. package/es/packages/ui/src/theme/src/components/header/components/fullscreen.d.ts +5 -0
  64. package/es/packages/ui/src/theme/src/components/header/components/index.d.ts +11 -0
  65. package/es/packages/ui/src/theme/src/components/header/components/lang-picker.d.ts +23 -0
  66. package/es/packages/ui/src/theme/src/components/header/components/logo.d.ts +56 -0
  67. package/es/packages/ui/src/theme/src/components/header/components/menu-filter.d.ts +22 -0
  68. package/es/packages/ui/src/theme/src/components/header/components/notify.d.ts +24 -0
  69. package/es/packages/ui/src/theme/src/components/header/components/setting-theme.d.ts +223 -0
  70. package/es/packages/ui/src/theme/src/components/header/components/size.d.ts +282 -0
  71. package/es/packages/ui/src/theme/src/components/header/components/theme-drawer/feature.d.ts +138 -0
  72. package/es/packages/ui/src/theme/src/components/header/components/theme-drawer/index.d.ts +3 -0
  73. package/es/packages/ui/src/theme/src/components/header/components/theme-drawer/menu-type.d.ts +16 -0
  74. package/es/packages/ui/src/theme/src/components/header/components/theme-drawer/select.d.ts +58 -0
  75. package/es/packages/ui/src/theme/src/components/header/components/theme-drawer/switch.d.ts +49 -0
  76. package/es/packages/ui/src/theme/src/components/header/components/trigger.d.ts +10 -0
  77. package/es/packages/ui/src/theme/src/components/header/components/user-info.d.ts +37 -0
  78. package/es/packages/ui/src/theme/src/components/header/helper/change-theme.d.ts +13 -0
  79. package/es/packages/ui/src/theme/src/components/header/helper/menu-tree.d.ts +4 -0
  80. package/es/packages/ui/src/theme/src/components/header/index.d.ts +720 -0
  81. package/es/packages/ui/src/theme/src/components/header/multiple-header.d.ts +806 -0
  82. package/es/packages/ui/src/theme/src/components/sider/components/basic-menu/basic-menu-item.d.ts +62 -0
  83. package/es/packages/ui/src/theme/src/components/sider/components/basic-menu/basic-menu.d.ts +207 -0
  84. package/es/packages/ui/src/theme/src/components/sider/components/basic-menu/basic-sub-menu-item.d.ts +127 -0
  85. package/es/packages/ui/src/theme/src/components/sider/components/basic-menu/menu-item-content.d.ts +26 -0
  86. package/es/packages/ui/src/theme/src/components/sider/components/drag-bar.d.ts +14 -0
  87. package/es/packages/ui/src/theme/src/components/sider/components/layout-menu.d.ts +22 -0
  88. package/es/packages/ui/src/theme/src/components/sider/components/props.d.ts +69 -0
  89. package/es/packages/ui/src/theme/src/components/sider/components/sider-trigger.d.ts +17 -0
  90. package/es/packages/ui/src/theme/src/components/sider/helper/sider.d.ts +12 -0
  91. package/es/packages/ui/src/theme/src/components/sider/helper/split-menu.d.ts +10 -0
  92. package/es/packages/ui/src/theme/src/components/sider/index.d.ts +235 -0
  93. package/es/packages/ui/src/theme/src/components/sider/mix-sider.d.ts +167 -0
  94. package/es/packages/ui/src/theme/src/components/tabs/components/TabContent.d.ts +6 -0
  95. package/es/packages/ui/src/theme/src/components/tabs/components/TabRedo.d.ts +21 -0
  96. package/es/packages/ui/src/theme/src/components/tabs/components/index.d.ts +3 -0
  97. package/es/packages/ui/src/theme/src/components/tabs/hooks/useMultifyTabs.d.ts +7 -0
  98. package/es/packages/ui/src/theme/src/components/tabs/hooks/useTabDropdown.d.ts +6 -0
  99. package/es/packages/ui/src/theme/src/components/tabs/index.d.ts +63 -0
  100. package/es/packages/ui/src/theme/src/components/tabs/types/tabs.type.d.ts +7 -0
  101. package/es/packages/ui/src/theme/src/enums/index.d.ts +1 -0
  102. package/es/packages/ui/src/theme/src/enums/theme.enum.d.ts +34 -0
  103. package/es/packages/ui/src/theme/src/hooks/index.d.ts +6 -0
  104. package/es/packages/ui/src/theme/src/hooks/useDragLine.d.ts +2 -0
  105. package/es/packages/ui/src/theme/src/hooks/useHeader.d.ts +25 -0
  106. package/es/packages/ui/src/theme/src/hooks/useMenu.d.ts +29 -0
  107. package/es/packages/ui/src/theme/src/hooks/useMultifyTab.d.ts +8 -0
  108. package/es/packages/ui/src/theme/src/hooks/useOpenKeys.d.ts +7 -0
  109. package/es/packages/ui/src/theme/src/hooks/useTheme.d.ts +9 -0
  110. package/es/packages/ui/src/theme/src/index.d.ts +1851 -0
  111. package/es/packages/ui/src/theme/src/setting/theme.setting.d.ts +2 -0
  112. package/es/packages/ui/src/theme/src/stores/index.d.ts +3 -0
  113. package/es/packages/ui/src/theme/src/stores/routeReuse.store.d.ts +23 -0
  114. package/es/packages/ui/src/theme/src/stores/theme.store.d.ts +18 -0
  115. package/es/packages/ui/src/theme/src/types/index.d.ts +3 -0
  116. package/es/packages/ui/src/theme/src/types/menu.type.d.ts +15 -0
  117. package/es/packages/ui/src/theme/src/types/theme.type.d.ts +62 -0
  118. package/es/packages/ui/src/utils/withInstall.d.ts +4 -0
  119. package/es/theme/index.d.ts +2 -1
  120. package/es/theme/index.js +898 -683
  121. package/es/theme/index.less +205 -0
  122. package/es/theme/src/components/header/components/logo.d.ts +22 -0
  123. package/es/theme/src/components/header/components/size.d.ts +5 -5
  124. package/es/theme/src/components/header/helper/menu-tree.d.ts +1 -0
  125. package/es/theme/src/components/header/index.d.ts +92 -5
  126. package/es/theme/src/components/header/multiple-header.d.ts +94 -7
  127. package/es/theme/src/components/sider/components/drag-bar.d.ts +1 -1
  128. package/es/theme/src/components/sider/components/sider-trigger.d.ts +0 -1
  129. package/es/theme/src/components/sider/index.d.ts +169 -3
  130. package/es/theme/src/components/sider/mix-sider.d.ts +168 -0
  131. package/es/theme/src/enums/theme.enum.d.ts +2 -1
  132. package/es/theme/src/hooks/useMenu.d.ts +5 -3
  133. package/es/theme/src/hooks/useMultifyTab.d.ts +1 -0
  134. package/es/theme/src/index.d.ts +356 -15
  135. package/es/theme/src/stores/theme.store.d.ts +3 -0
  136. package/es/theme/src/types/theme.type.d.ts +2 -0
  137. package/index.d.ts +2 -1
  138. package/index.js +6 -2
  139. package/package.json +4 -4
  140. package/tsconfig.json +1 -0
  141. package/vite.config.ts +1 -0
@@ -1,5 +1,5 @@
1
- import { DtCache, CacheKey, deepMerge, Pages, useGo, useRedo, Language, useAppStore, useSlots as useSlots$1, 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 as computed$1, ref as ref$1, 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 as getCurrentInstance$1, reactive, readonly, watchEffect, isRef, normalizeProps, guardReactiveProps, toRefs, isVNode, onMounted as onMounted$1, resolveDynamicComponent, renderSlot, createSlots, useSlots as useSlots$2 } from "vue";
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, guardReactiveProps, toRefs, isVNode, onMounted, onBeforeUnmount, resolveDynamicComponent, renderSlot, createSlots } from "vue";
3
3
  import { defineStore } from "pinia";
4
4
  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";
5
5
  import "ant-design-vue/es/table/style";
@@ -8,12 +8,20 @@ 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
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";
11
+ import { Input, InputNumber, Select, TreeSelect, Switch, Checkbox, DatePicker, TimePicker, Popover, Radio, AutoComplete, Cascader, Slider, Rate, Divider, Modal as Modal$1 } from "ant-design-vue";
12
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";
13
20
  import "ant-design-vue/es/col/style";
14
21
  import "ant-design-vue/es/form/style";
15
22
  import "ant-design-vue/es/button/style";
16
23
  import "ant-design-vue/es/spin/style";
24
+ import "ant-design-vue/es/modal/style";
17
25
  import "ant-design-vue/es/row/style";
18
26
  import "ant-design-vue/es/divider/style";
19
27
  import "ant-design-vue/es/checkbox/style";
@@ -29,6 +37,7 @@ var MenuType = /* @__PURE__ */ ((MenuType2) => {
29
37
  MenuType2["SIDE"] = "sidebar";
30
38
  MenuType2["TOP_MENU"] = "top-menu";
31
39
  MenuType2["MIX"] = "mix";
40
+ MenuType2["MIX_SIDEBAR"] = "mix-sidebar";
32
41
  return MenuType2;
33
42
  })(MenuType || {});
34
43
  var MenuMode = /* @__PURE__ */ ((MenuMode2) => {
@@ -80,7 +89,8 @@ const defaultThemeConf = {
80
89
  menuWidth: 240,
81
90
  trigger: true,
82
91
  type: MenuType.SIDE,
83
- mode: MenuMode.INLINE
92
+ mode: MenuMode.INLINE,
93
+ mixSideTrigger: "hover"
84
94
  },
85
95
  footerOptions: {
86
96
  show: false,
@@ -101,7 +111,8 @@ const useThemeStore = defineStore({
101
111
  id: "dt-theme",
102
112
  state: () => ({
103
113
  themeConf: DtCache.getLocal(CacheKey.THEME) ?? defaultThemeConf,
104
- pageLoading: false
114
+ pageLoading: false,
115
+ mixSiderHasSubMenu: false
105
116
  }),
106
117
  getters: {
107
118
  getThemeConf() {
@@ -121,6 +132,9 @@ const useThemeStore = defineStore({
121
132
  },
122
133
  getPageLoading() {
123
134
  return this.pageLoading;
135
+ },
136
+ getMixSiderIsHasMenu() {
137
+ return this.mixSiderHasSubMenu;
124
138
  }
125
139
  },
126
140
  actions: {
@@ -128,6 +142,9 @@ const useThemeStore = defineStore({
128
142
  let newThemeConf = deepMerge(this.themeConf, options);
129
143
  this.themeConf = deepMerge(defaultThemeConf, newThemeConf);
130
144
  DtCache.setLocal(CacheKey.THEME, this.themeConf);
145
+ },
146
+ setMixSiderIsHasMenu(val) {
147
+ this.mixSiderHasSubMenu = val;
131
148
  }
132
149
  }
133
150
  });
@@ -156,8 +173,8 @@ defineStore({
156
173
  return;
157
174
  }
158
175
  let updateIndex = -1;
159
- const tabHasExits = this.tabList.some((tab, index) => {
160
- updateIndex = index;
176
+ const tabHasExits = this.tabList.some((tab, index2) => {
177
+ updateIndex = index2;
161
178
  return (tab.fullPath || tab.path) === (fullPath || path);
162
179
  });
163
180
  if (tabHasExits) {
@@ -173,14 +190,14 @@ defineStore({
173
190
  },
174
191
  closeTab(path, router) {
175
192
  const go = useGo(router);
176
- const index = this.tabList.findIndex((item) => item.path === path);
193
+ const index2 = this.tabList.findIndex((item) => item.path === path);
177
194
  let page;
178
- if (index === 0) {
195
+ if (index2 === 0) {
179
196
  if (this.tabList.length !== 1) {
180
- page = this.tabList[index + 1];
197
+ page = this.tabList[index2 + 1];
181
198
  }
182
199
  } else {
183
- page = this.tabList[index - 1];
200
+ page = this.tabList[index2 - 1];
184
201
  }
185
202
  this.bulkCloseTabs([path]);
186
203
  this.updateCacheTab();
@@ -195,9 +212,9 @@ defineStore({
195
212
  go(route.path);
196
213
  },
197
214
  closeLeftTabs(path) {
198
- const index = this.tabList.findIndex((item) => item.path === path);
199
- if (index > 0) {
200
- const leftTabs = this.tabList.slice(0, index);
215
+ const index2 = this.tabList.findIndex((item) => item.path === path);
216
+ if (index2 > 0) {
217
+ const leftTabs = this.tabList.slice(0, index2);
201
218
  const pathList = [];
202
219
  for (const item of leftTabs) {
203
220
  const affix = item?.meta?.affix ?? false;
@@ -210,9 +227,9 @@ defineStore({
210
227
  this.updateCacheTab();
211
228
  },
212
229
  closeRightTabs(path) {
213
- const index = this.tabList.findIndex((item) => item.path === path);
214
- if (index >= 0 && index < this.tabList.length - 1) {
215
- const rightTabs = this.tabList.slice(index + 1, this.tabList.length);
230
+ const index2 = this.tabList.findIndex((item) => item.path === path);
231
+ if (index2 >= 0 && index2 < this.tabList.length - 1) {
232
+ const rightTabs = this.tabList.slice(index2 + 1, this.tabList.length);
216
233
  const pathList = [];
217
234
  for (const item of rightTabs) {
218
235
  const affix = item?.meta?.affix ?? false;
@@ -269,39 +286,49 @@ defineStore({
269
286
  });
270
287
  function useMenu() {
271
288
  const { getMenuConf, setThemeConf } = useThemeStore();
272
- const getCollapsedShowTitle = computed$1(() => getMenuConf.collapsedShowTitle);
273
- const getIsSidebarType = computed$1(() => getMenuConf.type === MenuType.SIDE);
274
- const getMenuFixed = computed$1(() => getMenuConf.fixed);
275
- const getShowMenu = computed$1(() => getMenuConf.show);
276
- const getShowSidebar = computed$1(() => {
289
+ const getCollapsedShowTitle = computed(() => getMenuConf.collapsedShowTitle);
290
+ const getIsSidebarType = computed(() => getMenuConf.type === MenuType.SIDE);
291
+ const getMenuFixed = computed(() => getMenuConf.fixed);
292
+ const getShowMenu = computed(() => getMenuConf.show);
293
+ const getShowSidebar = computed(() => {
277
294
  return unref(getSplit) || unref(getShowMenu) && unref(getMenuMode) !== MenuMode.HORIZONTAL;
278
295
  });
279
- const getMenuHidden = computed$1(() => getMenuConf.hidden);
280
- const getMenuTheme = computed$1(() => getMenuConf.theme);
281
- const getTrigger = computed$1(() => getMenuConf.trigger);
282
- const getCanDrag = computed$1(() => getMenuConf.canDrag);
283
- const getIsMixMode = computed$1(() => {
296
+ const getMenuHidden = computed(() => getMenuConf.hidden);
297
+ const getMenuTheme = computed(() => getMenuConf.theme);
298
+ const getTrigger = computed(() => getMenuConf.trigger);
299
+ const getCanDrag = computed(() => getMenuConf.canDrag);
300
+ const getIsMixMode = computed(() => {
284
301
  return unref(getMenuMode) === MenuMode.INLINE && unref(getMenuType) === MenuType.MIX;
285
302
  });
286
- const getMenuWidth = computed$1(() => unref(getIsMixMode) ? Number(getMenuConf.menuWidth) - 40 : getMenuConf.menuWidth);
287
- const getLogoWidth = computed$1(() => getMenuConf.menuWidth);
288
- const getMenuType = computed$1(() => getMenuConf.type);
289
- const getIsTopMenu = computed$1(() => unref(getMenuType) === MenuType.TOP_MENU);
290
- const getMenuMode = computed$1(() => getMenuConf.mode);
291
- const getSplit = computed$1(() => getMenuConf.split);
292
- const getCollapsed = computed$1(() => getMenuConf.collapsed);
293
- const getIsHorizontal = computed$1(() => unref(getMenuMode) === MenuMode.HORIZONTAL);
303
+ const getIsMixSidebar = computed(() => unref(getMenuType) === MenuType.MIX_SIDEBAR);
304
+ const getMenuWidth = computed(() => {
305
+ if (unref(getIsMixMode)) {
306
+ return Number(getMenuConf.menuWidth) - 40;
307
+ } else if (unref(getIsMixSidebar)) {
308
+ return Number(getMenuConf.menuWidth) - 10;
309
+ } else {
310
+ return Number(getMenuConf.menuWidth);
311
+ }
312
+ });
313
+ const getMixSideTrigger = computed(() => getMenuConf.mixSideTrigger);
314
+ const getLogoWidth = computed(() => unref(getIsMixSidebar) ? "80px" : getMenuConf.menuWidth);
315
+ const getMenuType = computed(() => getMenuConf.type);
316
+ const getIsTopMenu = computed(() => unref(getMenuType) === MenuType.TOP_MENU);
317
+ const getMenuMode = computed(() => getMenuConf.mode);
318
+ const getSplit = computed(() => getMenuConf.split);
319
+ const getCollapsed = computed(() => getMenuConf.collapsed);
320
+ const getIsHorizontal = computed(() => unref(getMenuMode) === MenuMode.HORIZONTAL);
294
321
  const setThemeStore = (conf = {}) => setThemeConf(conf);
295
322
  const toggleCollapsed = () => setThemeStore({
296
323
  menuOptions: {
297
324
  collapsed: !unref(getCollapsed)
298
325
  }
299
326
  });
300
- const getMiniWidthNumber = computed$1(() => getMenuConf.collapsedShowTitle ? 80 : 48);
301
- const getRealWidth = computed$1(() => {
327
+ const getMiniWidthNumber = computed(() => getMenuConf.collapsedShowTitle ? 80 : 48);
328
+ const getRealWidth = computed(() => {
302
329
  return unref(getCollapsed) ? unref(getMiniWidthNumber) : unref(getMenuWidth);
303
330
  });
304
- const getCalcContentWidth = computed$1(() => {
331
+ const getCalcContentWidth = computed(() => {
305
332
  const width = unref(getIsTopMenu) || !unref(getShowMenu) || unref(getSplit) && unref(getMenuHidden) ? 0 : unref(getRealWidth);
306
333
  return `calc(100% - ${unref(width)}px)`;
307
334
  });
@@ -326,21 +353,25 @@ function useMenu() {
326
353
  getRealWidth,
327
354
  getCalcContentWidth,
328
355
  getIsMixMode,
356
+ getIsMixSidebar,
329
357
  getCanDrag,
358
+ getMixSideTrigger,
330
359
  toggleCollapsed,
331
360
  setThemeStore
332
361
  };
333
362
  }
334
363
  function useMultipleTab() {
335
364
  const { getRouteReuseConf } = useThemeStore();
336
- const getShowMultipleTab = computed$1(() => getRouteReuseConf.show);
337
- const getShowQuick = computed$1(() => getRouteReuseConf.showQuick);
338
- const getShowRedo = computed$1(() => getRouteReuseConf.showRedo);
339
- const getCanCache = computed$1(() => getRouteReuseConf.cache);
340
- const getCanDrag = computed$1(() => getRouteReuseConf.canDrag);
365
+ const getShowMultipleTab = computed(() => getRouteReuseConf.show);
366
+ const getShowQuick = computed(() => getRouteReuseConf.showQuick);
367
+ const getMultipleTabPosIsTop = computed(() => getRouteReuseConf.position === "top");
368
+ const getShowRedo = computed(() => getRouteReuseConf.showRedo);
369
+ const getCanCache = computed(() => getRouteReuseConf.cache);
370
+ const getCanDrag = computed(() => getRouteReuseConf.canDrag);
341
371
  return {
342
372
  getShowMultipleTab,
343
373
  getShowQuick,
374
+ getMultipleTabPosIsTop,
344
375
  getShowRedo,
345
376
  getCanCache,
346
377
  getCanDrag
@@ -359,54 +390,54 @@ function useHeader() {
359
390
  getMenuMode,
360
391
  getSplit,
361
392
  getIsTopMenu,
362
- getIsMixMode
393
+ getIsMixSidebar
363
394
  } = useMenu();
364
- const { getShowMultipleTab } = useMultipleTab();
365
- const getHeaderTheme = computed$1(() => getHeaderConf.theme);
366
- const getFixed = computed$1(() => getHeaderConf.fixed);
367
- const getShowHeaderLogo = computed$1(() => unref(getShowLogo) && !unref(getIsSidebarType));
368
- const getShowSearch = computed$1(() => getHeaderConf.showSearch);
369
- const getShowHeaderTrigger = computed$1(() => {
395
+ const { getShowMultipleTab, getMultipleTabPosIsTop } = useMultipleTab();
396
+ const getHeaderTheme = computed(() => getHeaderConf.theme);
397
+ const getFixed = computed(() => getHeaderConf.fixed);
398
+ const getShowHeaderLogo = computed(() => unref(getShowLogo) && !unref(getIsSidebarType) && !unref(getIsMixSidebar));
399
+ const getShowSearch = computed(() => getHeaderConf.showSearch);
400
+ const getShowHeaderTrigger = computed(() => {
370
401
  if (unref(getMenuType) === MenuType.TOP_MENU || !unref(getShowMenu) || unref(getMenuHidden)) {
371
402
  return false;
372
403
  }
373
404
  return unref(getTrigger);
374
405
  });
375
- const getShowBreadCrumb = computed$1(() => getHeaderConf.showBreadCrumb);
376
- const getShowBread = computed$1(
406
+ const getShowBreadCrumb = computed(() => getHeaderConf.showBreadCrumb);
407
+ const getShowBread = computed(
377
408
  () => unref(getMenuMode) !== MenuMode.HORIZONTAL && !unref(getSplit) && unref(getShowBreadCrumb)
378
409
  );
379
- const getShowTopMenu = computed$1(() => unref(getMenuMode) === MenuMode.HORIZONTAL || unref(getSplit));
380
- const getShowNotice = computed$1(() => getHeaderConf.showNotice);
381
- const getShowFullScreen = computed$1(() => getHeaderConf.showFullScreen);
382
- const getShowLocale = computed$1(() => getHeaderConf.showLocaleSwitch);
383
- const getShowSettingTheme = computed$1(() => getHeaderConf.showSettingTheme);
384
- const getShowFullHeaderRef = computed$1(() => {
385
- return !unref(getIsSidebarType) && !unref(getIsTopMenu);
410
+ const getShowTopMenu = computed(() => unref(getMenuMode) === MenuMode.HORIZONTAL || unref(getSplit));
411
+ const getShowNotice = computed(() => getHeaderConf.showNotice);
412
+ const getShowFullScreen = computed(() => getHeaderConf.showFullScreen);
413
+ const getShowLocale = computed(() => getHeaderConf.showLocaleSwitch);
414
+ const getShowSettingTheme = computed(() => getHeaderConf.showSettingTheme);
415
+ const getShowFullHeaderRef = computed(() => {
416
+ return !unref(getIsSidebarType) && !unref(getIsMixSidebar) && !unref(getIsTopMenu);
386
417
  });
387
- const getHeaderHeight = computed$1(() => {
418
+ const getHeaderHeight = computed(() => {
388
419
  let height = 0;
389
420
  height += HEADER_HEIGHT;
390
- if (unref(getShowMultipleTab) && !unref(getSplit)) {
421
+ if (unref(getShowMultipleTab) && !unref(getSplit) && !unref(getMultipleTabPosIsTop)) {
391
422
  height += TABS_HEIGHT;
392
423
  }
393
424
  return height;
394
425
  });
395
- const getTabsHeight = computed$1(() => TABS_HEIGHT);
396
- const getShowInsetHeaderRef = computed$1(() => {
397
- return unref(getIsSidebarType) || unref(getIsTopMenu);
426
+ const getTabsHeight = computed(() => TABS_HEIGHT);
427
+ const getShowInsetHeaderRef = computed(() => {
428
+ return unref(getIsSidebarType) || unref(getIsTopMenu) || unref(getIsMixSidebar);
398
429
  });
399
- const getShowBackToTop = computed$1(() => getHeaderConf.showBackToTop);
400
- const getIsZH = computed$1(() => {
430
+ const getShowBackToTop = computed(() => getHeaderConf.showBackToTop);
431
+ const getIsZH = computed(() => {
401
432
  let local = DtCache.getLocal(CacheKey.LOCALE);
402
433
  if (!local)
403
434
  return true;
404
435
  return local === Language.ZH;
405
436
  });
406
- const getUiSize = computed$1(() => getHeaderConf?.size ?? UiSize.SMALL);
407
- const getShowUiSize = computed$1(() => getHeaderConf?.showSize);
408
- const getShowLogo = computed$1(() => getHeaderConf.showLogo);
409
- const getShowLoginOut = computed$1(() => getHeaderConf.showLoginOut);
437
+ const getUiSize = computed(() => getHeaderConf?.size ?? UiSize.SMALL);
438
+ const getShowUiSize = computed(() => getHeaderConf?.showSize);
439
+ const getShowLogo = computed(() => getHeaderConf.showLogo);
440
+ const getShowLoginOut = computed(() => getHeaderConf.showLoginOut);
410
441
  const loginOutClick = getHeaderConf.logoutClick;
411
442
  return {
412
443
  getHeaderTheme,
@@ -437,8 +468,8 @@ const codeMap = /* @__PURE__ */ new Map();
437
468
  function useHeaderCode(code, changeColumns) {
438
469
  const { appConf } = useAppStore();
439
470
  const { getIsZH } = useHeader();
440
- useSlots$1();
441
471
  useSlots();
472
+ useSlots$1();
442
473
  if (!appConf.pages.queryColumnApi) {
443
474
  error("\u8BF7\u5728init.config.ts\u4E2D\u914D\u7F6EqueryColumnApi\uFF01");
444
475
  return;
@@ -480,7 +511,7 @@ function useHeaderCode(code, changeColumns) {
480
511
  let obj = {
481
512
  title: unref(getIsZH) ? it.cloumnName : it.cloumnEngName,
482
513
  dataIndex: it.cloumnCode,
483
- sorter: it.ifOrder,
514
+ sorter: Boolean(it.ifOrder),
484
515
  align: getAlign(it.textAlign),
485
516
  show: Boolean(it.ifDisplay),
486
517
  defaultHidden: !Boolean(it.ifDisplay)
@@ -497,8 +528,8 @@ function useHeaderCode(code, changeColumns) {
497
528
  getColumns();
498
529
  }
499
530
  function useTable(props2) {
500
- const tableRef = ref$1(null);
501
- const loadedRef = ref$1(false);
531
+ const tableRef = ref(null);
532
+ const loadedRef = ref(false);
502
533
  let stopWatch;
503
534
  function registerTable(instance) {
504
535
  const { isProd } = useApp();
@@ -558,14 +589,14 @@ function useTable(props2) {
558
589
  };
559
590
  return [registerTable, methods];
560
591
  }
561
- const _imports_0 = "data:image/png;base64,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";
562
- const _hoisted_1$b = {
592
+ const _hoisted_1$b = { key: 0 };
593
+ const _hoisted_2$3 = {
563
594
  key: 0,
564
- class: "dt-table-action-btn"
595
+ class: "dt-table-action-btn w-8 inline-block"
565
596
  };
566
- const _hoisted_2$3 = ["onClick"];
567
- const _hoisted_3$3 = /* @__PURE__ */ createElementVNode("i", { class: "i ic:baseline-settings dt-table-action-dropdown cursor-pointer" }, null, -1);
568
- const _hoisted_4$3 = { class: "text-13 opacity-80" };
597
+ const _hoisted_3$3 = ["onClick"];
598
+ const _hoisted_4$3 = /* @__PURE__ */ createElementVNode("i", { class: "i ic:baseline-settings dt-table-action-dropdown cursor-pointer" }, null, -1);
599
+ const _hoisted_5$2 = { class: "text-13 opacity-80" };
569
600
  const _sfc_main$k = /* @__PURE__ */ defineComponent({
570
601
  __name: "TableAction",
571
602
  props: {
@@ -597,7 +628,7 @@ const _sfc_main$k = /* @__PURE__ */ defineComponent({
597
628
  },
598
629
  setup(__props) {
599
630
  const props2 = __props;
600
- const actionBtns = ref$1([]);
631
+ const actionBtns = ref([]);
601
632
  function handleAction(it) {
602
633
  if (isFunction(it.onClick)) {
603
634
  it.onClick({
@@ -616,7 +647,9 @@ const _sfc_main$k = /* @__PURE__ */ defineComponent({
616
647
  actionBtns.value = [...btns].map((it) => {
617
648
  return {
618
649
  ...it,
619
- ifShow: isBoolean(it.show) ? it.show : isFunction(it.show) ? it.show(props2.record) : true
650
+ ifShow: isBoolean(it.show) ? it.show : isFunction(it.show) ? it.show(props2.record) : true,
651
+ icon: () => isFunction(it.icon) ? it.icon(props2.record) : it.icon,
652
+ label: () => isFunction(it.label) ? it.label(props2.record) : it.label
620
653
  };
621
654
  });
622
655
  },
@@ -630,29 +663,31 @@ const _sfc_main$k = /* @__PURE__ */ defineComponent({
630
663
  const _component_AMenu = Menu;
631
664
  const _component_ADropdown = Dropdown;
632
665
  const _directive_auth = resolveDirective("auth");
633
- return props2.expand ? (openBlock(true), createElementBlock(Fragment, { key: 0 }, renderList(actionBtns.value, (item) => {
634
- return openBlock(), createElementBlock(Fragment, null, [
635
- item.ifShow ? withDirectives((openBlock(), createElementBlock("span", _hoisted_1$b, [
636
- createVNode(_component_ATooltip, { placement: "bottom" }, {
637
- title: withCtx(() => [
638
- createTextVNode(toDisplayString(item.name), 1)
639
- ]),
640
- default: withCtx(() => [
641
- createElementVNode("i", {
642
- class: normalizeClass(["i cursor-pointer", item.icon]),
643
- style: normalizeStyle({
644
- color: item.color
645
- }),
646
- onClick: ($event) => handleAction(item)
647
- }, null, 14, _hoisted_2$3)
648
- ]),
649
- _: 2
650
- }, 1024)
651
- ])), [
652
- [_directive_auth, item.auth]
653
- ]) : createCommentVNode("", true)
654
- ], 64);
655
- }), 256)) : (openBlock(), createBlock(_component_ADropdown, {
666
+ return props2.expand ? (openBlock(), createElementBlock("div", _hoisted_1$b, [
667
+ (openBlock(true), createElementBlock(Fragment, null, renderList(actionBtns.value, (item) => {
668
+ return openBlock(), createElementBlock(Fragment, null, [
669
+ item.ifShow ? withDirectives((openBlock(), createElementBlock("span", _hoisted_2$3, [
670
+ createVNode(_component_ATooltip, { placement: "bottom" }, {
671
+ title: withCtx(() => [
672
+ createTextVNode(toDisplayString(item.label()), 1)
673
+ ]),
674
+ default: withCtx(() => [
675
+ createElementVNode("i", {
676
+ class: normalizeClass(["i cursor-pointer", item.icon()]),
677
+ style: normalizeStyle({
678
+ color: item.color
679
+ }),
680
+ onClick: ($event) => handleAction(item)
681
+ }, null, 14, _hoisted_3$3)
682
+ ]),
683
+ _: 2
684
+ }, 1024)
685
+ ])), [
686
+ [_directive_auth, item.auth]
687
+ ]) : createCommentVNode("v-if", true)
688
+ ], 64);
689
+ }), 256))
690
+ ])) : (openBlock(), createBlock(_component_ADropdown, {
656
691
  key: 1,
657
692
  getPopupContainer: getPopupContainer$1,
658
693
  trigger: ["click"]
@@ -668,15 +703,15 @@ const _sfc_main$k = /* @__PURE__ */ defineComponent({
668
703
  }, {
669
704
  default: withCtx(() => [
670
705
  createElementVNode("i", {
671
- class: normalizeClass(["i text-base opacity-80 pr-2", item.icon]),
706
+ class: normalizeClass(["i text-base opacity-80 pr-2", item.icon()]),
672
707
  style: normalizeStyle({
673
708
  color: item.color
674
709
  })
675
710
  }, null, 6),
676
- createElementVNode("span", _hoisted_4$3, toDisplayString(item.name), 1)
711
+ createElementVNode("span", _hoisted_5$2, toDisplayString(item.label()), 1)
677
712
  ]),
678
713
  _: 2
679
- }, 1032, ["onClick"])) : createCommentVNode("", true)
714
+ }, 1032, ["onClick"])) : createCommentVNode("v-if", true)
680
715
  ])), [
681
716
  [_directive_auth, item.auth]
682
717
  ]);
@@ -686,13 +721,21 @@ const _sfc_main$k = /* @__PURE__ */ defineComponent({
686
721
  })
687
722
  ]),
688
723
  default: withCtx(() => [
689
- _hoisted_3$3
724
+ _hoisted_4$3
690
725
  ]),
691
726
  _: 1
692
727
  }));
693
728
  };
694
729
  }
695
730
  });
731
+ const _export_sfc = (sfc, props2) => {
732
+ const target = sfc.__vccOpts || sfc;
733
+ for (const [key, val] of props2) {
734
+ target[key] = val;
735
+ }
736
+ return target;
737
+ };
738
+ const TableAction = /* @__PURE__ */ _export_sfc(_sfc_main$k, [["__file", "D:/dt/dt-frame-front/dt-frames/frames/packages/ui/src/components/table/src/components/TableAction.vue"]]);
696
739
  const tableKey = Symbol("dt-page");
697
740
  function createTableInstance(instance) {
698
741
  provide(tableKey, instance);
@@ -757,18 +800,18 @@ const _sfc_main$j = /* @__PURE__ */ defineComponent({
757
800
  const { t } = useI18n("UI");
758
801
  const { editRule, align = "left" } = props2.column;
759
802
  const table = getTableInstance();
760
- const ruleMessage = ref$1("");
761
- const ruleVisible = ref$1(false);
762
- const optionsRef = ref$1([]);
763
- const currentValueRef = ref$1(props2.value);
764
- const getComponent = computed$1(() => props2.column?.editComponent || "Input");
765
- const getRuleVisible = computed$1(() => {
803
+ const ruleMessage = ref("");
804
+ const ruleVisible = ref(false);
805
+ const optionsRef = ref([]);
806
+ const currentValueRef = ref(props2.value);
807
+ const getComponent = computed(() => props2.column?.editComponent || "Input");
808
+ const getRuleVisible = computed(() => {
766
809
  return unref(ruleMessage) && unref(ruleVisible);
767
810
  });
768
- const getWrapperClass = computed$1(() => {
811
+ const getWrapperClass = computed(() => {
769
812
  return `edit-cell-align-${align}`;
770
813
  });
771
- const getIsCheckComp = computed$1(() => {
814
+ const getIsCheckComp = computed(() => {
772
815
  const component = unref(getComponent);
773
816
  return ["Checkbox", "Switch"].includes(component);
774
817
  });
@@ -781,15 +824,15 @@ const _sfc_main$j = /* @__PURE__ */ defineComponent({
781
824
  const setTableValue = () => {
782
825
  props2.record[props2.column.dataIndex] = unref(currentValueRef);
783
826
  };
784
- const getComponentProps = computed$1(() => {
827
+ const getComponentProps = computed(() => {
785
828
  const isCheckValue = unref(getIsCheckComp);
786
829
  const valueField = isCheckValue ? "checked" : "value";
787
830
  const val = unref(currentValueRef);
788
831
  const value = isCheckValue ? isNumber(val) && isBoolean(val) ? val : !!val : val;
789
832
  let compProps = props2.column?.editComponentProps ?? {};
790
- const { record, column, index } = props2;
833
+ const { record, column, index: index2 } = props2;
791
834
  if (isFunction(compProps)) {
792
- compProps = compProps({ text: val, record, column, index }) ?? {};
835
+ compProps = compProps({ text: val, record, column, index: index2 }) ?? {};
793
836
  }
794
837
  if (unref(getComponent) === "InputNumber") {
795
838
  compProps = {
@@ -869,8 +912,9 @@ const _sfc_main$j = /* @__PURE__ */ defineComponent({
869
912
  };
870
913
  }
871
914
  });
915
+ const EditableCell = /* @__PURE__ */ _export_sfc(_sfc_main$j, [["__file", "D:/dt/dt-frame-front/dt-frames/frames/packages/ui/src/components/table/src/components/editTable/EditTableCell.vue"]]);
872
916
  function renderEditCell(column) {
873
- return ({ text: value, record, index }) => {
917
+ return ({ text: value, record, index: index2 }) => {
874
918
  record.onValid = async () => {
875
919
  if (isArray(record?.validCbs)) {
876
920
  const validFns = (record?.validCbs || []).map((fn) => fn());
@@ -898,11 +942,11 @@ function renderEditCell(column) {
898
942
  }
899
943
  return true;
900
944
  };
901
- return h(_sfc_main$j, {
945
+ return h(EditableCell, {
902
946
  value,
903
947
  record,
904
948
  column,
905
- index
949
+ index: index2
906
950
  });
907
951
  };
908
952
  }
@@ -959,15 +1003,15 @@ function handleIndexColumn(propsRef, getPaginationRef, columns) {
959
1003
  width: unref(getIsZH) ? 50 : 70,
960
1004
  title: t("NUMBER"),
961
1005
  align: "center",
962
- customRender: ({ index }) => {
1006
+ customRender: ({ index: index2 }) => {
963
1007
  const getPagination = unref(getPaginationRef);
964
1008
  const { appConf } = useAppStore();
965
1009
  const { defaultPageSize } = appConf.ui.table;
966
1010
  if (isBoolean(getPagination)) {
967
- return `${index + 1}`;
1011
+ return `${index2 + 1}`;
968
1012
  }
969
1013
  const { current = 1, pageSize = defaultPageSize } = getPagination;
970
- return ((current < 1 ? 1 : current) - 1) * pageSize + index + 1;
1014
+ return ((current < 1 ? 1 : current) - 1) * pageSize + index2 + 1;
971
1015
  },
972
1016
  ...isFixedLeft ? {
973
1017
  fixed: "left"
@@ -976,36 +1020,42 @@ function handleIndexColumn(propsRef, getPaginationRef, columns) {
976
1020
  });
977
1021
  }
978
1022
  function handleActionColumn(propsRef, columns) {
1023
+ const { appConf } = useAppStore();
979
1024
  const { getIsZH } = useHeader();
980
1025
  const { t } = useI18n("UI");
981
- const { operations = [
982
- { name: t("EDIT"), icon: "mdi:text-box-edit-outline", onClick: unref(propsRef).onUpdate },
983
- { name: t("DELETE"), icon: "mdi:delete-outline", onClick: unref(propsRef).onDelete }
984
- ] } = unref(propsRef);
985
- if (!operations || isObject(operations) && !operations?.btns || isArray(operations) && !operations)
1026
+ let defaultButtons = [
1027
+ { label: t("EDIT"), icon: "mdi:text-box-edit-outline", onClick: unref(propsRef).onUpdate },
1028
+ { label: t("DELETE"), icon: "mdi:delete-outline", onClick: unref(propsRef).onDelete, color: "#ed6f6f" }
1029
+ ];
1030
+ const { operations = defaultButtons, expandMethodIcon = false } = unref(propsRef);
1031
+ if (!operations || isObject(operations) && operations?.btns && !operations?.btns?.length || isArray(operations) && !operations.length)
986
1032
  return;
987
1033
  const hasIndex = columns.findIndex((column) => column.flag === ACTION_COLUMN);
988
1034
  if (hasIndex === -1) {
989
- let column = isObject(operations) ? operations : isArray(operations) ? { btns: operations } : {};
990
- let expand = column.expand ? column.expand : false;
1035
+ let column = isObject(operations) ? {
1036
+ expand: appConf?.ui?.table?.expandActions,
1037
+ btns: defaultButtons,
1038
+ ...operations
1039
+ } : isArray(operations) ? { expand: appConf?.ui?.table?.expandActions, btns: operations } : {};
1040
+ let expand = column.expand ? column.expand : expandMethodIcon;
991
1041
  let columnObj = {
992
1042
  fixed: "right",
993
1043
  title: t("ACTIONS"),
994
1044
  align: "center",
995
1045
  expand,
996
- width: `${expand ? column.btns.length * 30 + 40 : unref(getIsZH) ? 70 : 90}px`,
1046
+ width: `${expand ? column.btns.length * 34 + 40 : unref(getIsZH) ? 70 : 90}px`,
997
1047
  ...column,
998
1048
  flag: ACTION_COLUMN
999
1049
  };
1000
1050
  columns.push({
1001
1051
  ...columnObj,
1002
- customRender: ({ record, index }) => {
1052
+ customRender: ({ record, index: index2 }) => {
1003
1053
  return h$1(
1004
- _sfc_main$k,
1054
+ TableAction,
1005
1055
  omit({
1006
1056
  ...columnObj,
1007
1057
  record,
1008
- index
1058
+ index: index2
1009
1059
  }, "align")
1010
1060
  );
1011
1061
  }
@@ -1038,16 +1088,17 @@ function sortFixedColumn(columns) {
1038
1088
  function useColumns(propsRef, getPaginationRef, tableElRef) {
1039
1089
  const columnsRef = ref(unref(propsRef).columns);
1040
1090
  let cacheColumns = unref(propsRef).columns;
1041
- const getColumnsRef = computed$1(() => {
1091
+ const { appConf } = useAppStore();
1092
+ const getColumnsRef = computed(() => {
1042
1093
  const columns = cloneDeep(unref(columnsRef));
1043
1094
  const { ellipsis } = unref(propsRef);
1044
- columns.forEach((it, index) => {
1095
+ columns.forEach((it, index2) => {
1045
1096
  it.class = it.class ?? "";
1046
1097
  if (!it.class.split(" ").includes("__column")) {
1047
1098
  it.class = `${it.class} __column`;
1048
1099
  }
1049
1100
  const { customRender, render } = it;
1050
- if (it.sorter) {
1101
+ if (it.sorter && isBoolean(it.sorter) && appConf?.ui?.table?.multipleSorter) {
1051
1102
  it.sorter = {
1052
1103
  multiple: Number(it.sorter)
1053
1104
  };
@@ -1061,7 +1112,7 @@ function useColumns(propsRef, getPaginationRef, tableElRef) {
1061
1112
  handleActionColumn(propsRef, columns);
1062
1113
  return columns;
1063
1114
  });
1064
- const getViewColumns = computed$1(() => {
1115
+ const getViewColumns = computed(() => {
1065
1116
  const viewColumns = sortFixedColumn(unref(getColumnsRef));
1066
1117
  const columns = cloneDeep(viewColumns);
1067
1118
  return columns.filter((column) => isIfShow(column)).map((column) => {
@@ -1078,7 +1129,7 @@ function useColumns(propsRef, getPaginationRef, tableElRef) {
1078
1129
  useDebounceFn(addResize, 100);
1079
1130
  function addResize() {
1080
1131
  const { resizable, minWidth = 50, maxWidth = 700 } = unref(propsRef);
1081
- let els = unref(tableElRef)?.$el.querySelectorAll(".__column"), allWidth = 0, columnAllWidth = 0, noWidthNum = 0, avgWidth = 0;
1132
+ let els = unref(tableElRef)?.$el.querySelectorAll(".__column"), allWidth = 0, columnAllWidth = 0, noWidthNum = 0, avgWidth = 0, scrollBarW = 10;
1082
1133
  for (let i = 0; i < els?.length; i++) {
1083
1134
  allWidth += els[i].offsetWidth ?? 0;
1084
1135
  }
@@ -1091,9 +1142,9 @@ function useColumns(propsRef, getPaginationRef, tableElRef) {
1091
1142
  }
1092
1143
  }
1093
1144
  });
1094
- avgWidth = (allWidth - columnAllWidth) / noWidthNum;
1145
+ avgWidth = (allWidth - columnAllWidth - scrollBarW) / noWidthNum;
1095
1146
  columnsRef.value.forEach((it) => {
1096
- it.width = it.width || avgWidth - 1;
1147
+ it.width = it.width || Math.round(avgWidth);
1097
1148
  if (Reflect.has(it, "resizable") ? !!it.resizable : resizable) {
1098
1149
  it.resizable = true;
1099
1150
  it.minWidth = it.minWidth || minWidth;
@@ -1175,7 +1226,7 @@ function useColumns(propsRef, getPaginationRef, tableElRef) {
1175
1226
  };
1176
1227
  }
1177
1228
  function useCustomRow(propsRef, { setSelectedRowKeys, getSelectedRowKeys, clearSelectedRowKeys, emits }) {
1178
- const customRow = (record, index) => {
1229
+ const customRow = (record, index2) => {
1179
1230
  return {
1180
1231
  onClick: (e) => {
1181
1232
  e?.stopPropagation();
@@ -1229,19 +1280,19 @@ function useCustomRow(propsRef, { setSelectedRowKeys, getSelectedRowKeys, clearS
1229
1280
  }
1230
1281
  }
1231
1282
  handleClick();
1232
- emits("row-click", record, index, e);
1283
+ emits("row-click", record, index2, e);
1233
1284
  },
1234
1285
  onDblclick: (event) => {
1235
- emits("row-dbClick", record, index, event);
1286
+ emits("row-dbClick", record, index2, event);
1236
1287
  },
1237
1288
  onContextmenu: (event) => {
1238
- emits("row-contextmenu", record, index, event);
1289
+ emits("row-contextmenu", record, index2, event);
1239
1290
  },
1240
1291
  onMouseenter: (event) => {
1241
- emits("row-mouseenter", record, index, event);
1292
+ emits("row-mouseenter", record, index2, event);
1242
1293
  },
1243
1294
  onMouseleave: (event) => {
1244
- emits("row-mouseleave", record, index, event);
1295
+ emits("row-mouseleave", record, index2, event);
1245
1296
  }
1246
1297
  };
1247
1298
  };
@@ -1254,7 +1305,7 @@ function useDataSource(propsRef, {
1254
1305
  setPagination,
1255
1306
  clearSelectedRowKeys
1256
1307
  }) {
1257
- const dataSourceRef = ref$1([]);
1308
+ const dataSourceRef = ref([]);
1258
1309
  watch(
1259
1310
  () => unref(propsRef).dataSource,
1260
1311
  (dataSource) => {
@@ -1264,7 +1315,7 @@ function useDataSource(propsRef, {
1264
1315
  immediate: true
1265
1316
  }
1266
1317
  );
1267
- const getDataSourceRef = computed$1(() => {
1318
+ const getDataSourceRef = computed(() => {
1268
1319
  return unref(dataSourceRef);
1269
1320
  });
1270
1321
  function handleTableChange(pagination, filters, sorter) {
@@ -1337,7 +1388,7 @@ function useDataSource(propsRef, {
1337
1388
  };
1338
1389
  }
1339
1390
  function useFormValue(props2, key = "value", changeEvent = "change", emitData) {
1340
- const instance = getCurrentInstance$1();
1391
+ const instance = getCurrentInstance();
1341
1392
  const emit = instance?.emit;
1342
1393
  const innerState = reactive({
1343
1394
  value: props2[key]
@@ -1352,7 +1403,7 @@ function useFormValue(props2, key = "value", changeEvent = "change", emitData) {
1352
1403
  watchEffect(() => {
1353
1404
  innerState.value = props2[key];
1354
1405
  });
1355
- const state = computed$1({
1406
+ const state = computed({
1356
1407
  get() {
1357
1408
  return innerState.value;
1358
1409
  },
@@ -1382,7 +1433,7 @@ const _sfc_main$i = /* @__PURE__ */ defineComponent({
1382
1433
  const props2 = __props;
1383
1434
  const attrs = useAttrs();
1384
1435
  const [state] = useFormValue(props2);
1385
- const getOptions = computed$1(() => {
1436
+ const getOptions = computed(() => {
1386
1437
  const { options } = props2;
1387
1438
  if (!options || options?.length === 0)
1388
1439
  return [];
@@ -1418,13 +1469,14 @@ const _sfc_main$i = /* @__PURE__ */ defineComponent({
1418
1469
  };
1419
1470
  }
1420
1471
  });
1472
+ const RadioButtonGroup = /* @__PURE__ */ _export_sfc(_sfc_main$i, [["__file", "D:/dt/dt-frame-front/dt-frames/frames/packages/ui/src/components/form/src/components/radioButton.vue"]]);
1421
1473
  const _hoisted_1$9 = { class: "input-with-dialog" };
1422
1474
  const _sfc_main$h = /* @__PURE__ */ defineComponent({
1423
1475
  __name: "formInputUseDialog",
1424
1476
  setup(__props) {
1425
1477
  const { t } = useI18n("UI");
1426
1478
  const attrs = useAttrs();
1427
- const bindProps = computed$1(() => {
1479
+ const bindProps = computed(() => {
1428
1480
  return {
1429
1481
  ...omit(attrs, [
1430
1482
  "formValues"
@@ -1453,14 +1505,15 @@ const _sfc_main$h = /* @__PURE__ */ defineComponent({
1453
1505
  key: 0,
1454
1506
  class: "i mdi:close-circle",
1455
1507
  onClick: clearProps
1456
- })) : createCommentVNode("", true)
1508
+ })) : createCommentVNode("v-if", true)
1457
1509
  ]);
1458
1510
  };
1459
1511
  }
1460
1512
  });
1513
+ const DtFormInputDialog = /* @__PURE__ */ _export_sfc(_sfc_main$h, [["__file", "D:/dt/dt-frame-front/dt-frames/frames/packages/ui/src/components/form/src/components/formInputUseDialog.vue"]]);
1461
1514
  const components = {
1462
1515
  Input,
1463
- InputWithDialog: _sfc_main$h,
1516
+ InputWithDialog: DtFormInputDialog,
1464
1517
  InputTextArea: Input.TextArea,
1465
1518
  InputSearch: Input.Search,
1466
1519
  InputGroup: Input.Group,
@@ -1469,7 +1522,7 @@ const components = {
1469
1522
  TreeSelect,
1470
1523
  Radio,
1471
1524
  RadioGroup: Radio.Group,
1472
- RadioButtonGroup: _sfc_main$i,
1525
+ RadioButtonGroup,
1473
1526
  Checkbox,
1474
1527
  CheckboxGroup: Checkbox.Group,
1475
1528
  AutoComplete,
@@ -1534,12 +1587,12 @@ const _sfc_main$g = /* @__PURE__ */ defineComponent({
1534
1587
  setup(__props, { emit: emits }) {
1535
1588
  const props2 = __props;
1536
1589
  const { t } = useI18n();
1537
- const advancedRef = ref$1(props2.isAdvanced);
1590
+ const advancedRef = ref(props2.isAdvanced);
1538
1591
  let key = 0;
1539
- const showAdvanceRef = computed$1(() => {
1592
+ const showAdvanceRef = computed(() => {
1540
1593
  return props2.mode === "search" ? props2.showAdvancedButton : false;
1541
1594
  });
1542
- const colOpt = computed$1(() => {
1595
+ const colOpt = computed(() => {
1543
1596
  let style = {
1544
1597
  textAlign: "right"
1545
1598
  };
@@ -1550,7 +1603,7 @@ const _sfc_main$g = /* @__PURE__ */ defineComponent({
1550
1603
  }
1551
1604
  return { style };
1552
1605
  });
1553
- const getAdvanceClass = computed$1(() => {
1606
+ const getAdvanceClass = computed(() => {
1554
1607
  return [
1555
1608
  "basic-arrow",
1556
1609
  { "basic-arrow--active": !advancedRef.value }
@@ -1601,9 +1654,9 @@ const _sfc_main$g = /* @__PURE__ */ defineComponent({
1601
1654
  (openBlock(true), createElementBlock(Fragment, null, renderList(__props.buttonList, (button) => {
1602
1655
  return openBlock(), createElementBlock(Fragment, null, [
1603
1656
  (button.show === void 0 ? true : button.show) ? withDirectives((openBlock(), createBlock(_component_AButton, {
1657
+ class: normalizeClass(["items-center", button.class]),
1604
1658
  type: button.type,
1605
- class: normalizeClass(button.class),
1606
- loading: button.loading?.value,
1659
+ loading: button.loading,
1607
1660
  disabled: button.disabled,
1608
1661
  key: unref(key),
1609
1662
  onClick: ($event) => handleBtnClick(button)
@@ -1611,18 +1664,18 @@ const _sfc_main$g = /* @__PURE__ */ defineComponent({
1611
1664
  icon: withCtx(() => [
1612
1665
  button.preIcon ? withDirectives((openBlock(), createElementBlock("span", _hoisted_1$8, null, 512)), [
1613
1666
  [_directive_icon, button.preIcon]
1614
- ]) : createCommentVNode("", true)
1667
+ ]) : createCommentVNode("v-if", true)
1615
1668
  ]),
1616
1669
  default: withCtx(() => [
1617
- createTextVNode(" " + toDisplayString(unref(t)(button.name)) + " ", 1),
1670
+ createTextVNode(" " + toDisplayString(unref(t)(button.label)) + " ", 1),
1618
1671
  button.postIcon ? withDirectives((openBlock(), createElementBlock("span", _hoisted_2$2, null, 512)), [
1619
1672
  [_directive_icon, button.postIcon]
1620
- ]) : createCommentVNode("", true)
1673
+ ]) : createCommentVNode("v-if", true)
1621
1674
  ]),
1622
1675
  _: 2
1623
1676
  }, 1032, ["type", "class", "loading", "disabled", "onClick"])), [
1624
1677
  [_directive_auth, button.auth]
1625
- ]) : createCommentVNode("", true)
1678
+ ]) : createCommentVNode("v-if", true)
1626
1679
  ], 64);
1627
1680
  }), 256)),
1628
1681
  unref(showAdvanceRef) ? (openBlock(), createBlock(_component_AButton, {
@@ -1632,29 +1685,31 @@ const _sfc_main$g = /* @__PURE__ */ defineComponent({
1632
1685
  onClick: toggleAdvanced
1633
1686
  }, {
1634
1687
  default: withCtx(() => [
1688
+ createCommentVNode(" \u6536\u8D77 | \u5C55\u5F00 "),
1635
1689
  createElementVNode("span", _hoisted_3$2, toDisplayString(advancedRef.value ? unref(t)("UI.ADVANCED") : unref(t)("UI.EXPAND")), 1),
1636
1690
  createElementVNode("span", {
1637
1691
  class: normalizeClass(unref(getAdvanceClass))
1638
1692
  }, _hoisted_5$1, 2)
1639
1693
  ]),
1640
1694
  _: 1
1641
- })) : createCommentVNode("", true)
1695
+ })) : createCommentVNode("v-if", true)
1642
1696
  ]),
1643
1697
  _: 1
1644
1698
  }, 8, ["style"])
1645
1699
  ]),
1646
1700
  _: 1
1647
- }, 16)) : createCommentVNode("", true);
1701
+ }, 16)) : createCommentVNode("v-if", true);
1648
1702
  };
1649
1703
  }
1650
1704
  });
1705
+ const DtFormButtons = /* @__PURE__ */ _export_sfc(_sfc_main$g, [["__file", "D:/dt/dt-frame-front/dt-frames/frames/packages/ui/src/components/form/src/components/FormButtons.vue"]]);
1651
1706
  const _hoisted_1$7 = { key: 0 };
1652
1707
  const _sfc_main$f = /* @__PURE__ */ defineComponent({
1653
1708
  __name: "Fullscreen",
1654
1709
  setup(__props) {
1655
1710
  const { t } = useI18n("UI");
1656
1711
  const table = getTableInstance();
1657
- const wrapEl = ref$1(null);
1712
+ const wrapEl = ref(null);
1658
1713
  const { toggle, isFullscreen } = useFullscreen(wrapEl);
1659
1714
  watch(
1660
1715
  () => table.tableElRef.value,
@@ -1675,7 +1730,7 @@ const _sfc_main$f = /* @__PURE__ */ defineComponent({
1675
1730
  const _component_ATooltip = Tooltip;
1676
1731
  return openBlock(), createBlock(_component_ATooltip, { placement: "top" }, {
1677
1732
  title: withCtx(() => [
1678
- !unref(isFullscreen) ? (openBlock(), createElementBlock("span", _hoisted_1$7, toDisplayString(unref(t)("FULLSCREEN")), 1)) : createCommentVNode("", true)
1733
+ !unref(isFullscreen) ? (openBlock(), createElementBlock("span", _hoisted_1$7, toDisplayString(unref(t)("FULLSCREEN")), 1)) : createCommentVNode("v-if", true)
1679
1734
  ]),
1680
1735
  default: withCtx(() => [
1681
1736
  createElementVNode("span", {
@@ -1692,13 +1747,14 @@ const _sfc_main$f = /* @__PURE__ */ defineComponent({
1692
1747
  };
1693
1748
  }
1694
1749
  });
1750
+ const FullscreenSetting = /* @__PURE__ */ _export_sfc(_sfc_main$f, [["__file", "D:/dt/dt-frame-front/dt-frames/frames/packages/ui/src/components/table/src/components/tableSetting/Fullscreen.vue"]]);
1695
1751
  const orgDialogProp = reactive({});
1696
1752
  const cbTransfer = reactive({});
1697
1753
  const dataTransfer = reactive({});
1698
1754
  function useModalOut() {
1699
- const modal = ref$1(null);
1700
- const loaded = ref$1(true);
1701
- const uid = ref$1(null);
1755
+ const modal = ref(null);
1756
+ const loaded = ref(true);
1757
+ const uid = ref(null);
1702
1758
  const { isProd } = useApp();
1703
1759
  function register(modalMethod, uuid) {
1704
1760
  if (!getCurrentInstance()) {
@@ -1736,7 +1792,7 @@ function useModalOut() {
1736
1792
  },
1737
1793
  openModal: (params, afterClose) => {
1738
1794
  const id = unref(uid);
1739
- dataTransfer[id] = isObject(params) ? { ...toRaw(params) } : params;
1795
+ dataTransfer[id] = isObject(params) ? { ...toRaw$1(params) } : params;
1740
1796
  getInstance()?.setModalProps({
1741
1797
  footer: [],
1742
1798
  defaultFullscreen: false,
@@ -1756,9 +1812,9 @@ function useModalOut() {
1756
1812
  return [register, methods];
1757
1813
  }
1758
1814
  function useModal(props2, setModalData) {
1759
- const modalInstanceRef = ref$1(null);
1815
+ const modalInstanceRef = ref(null);
1760
1816
  const currentInstance = getCurrentInstance();
1761
- const uidRef = ref$1(null);
1817
+ const uidRef = ref(null);
1762
1818
  const { isProd } = useApp();
1763
1819
  const getInstance = () => {
1764
1820
  const instance = unref(modalInstanceRef);
@@ -1774,7 +1830,7 @@ function useModal(props2, setModalData) {
1774
1830
  uidRef.value = uuid;
1775
1831
  modalInstanceRef.value = modalInstance;
1776
1832
  currentInstance?.emit("register", modalInstance, uuid);
1777
- orgDialogProp[uuid] = toRaw(props2);
1833
+ orgDialogProp[uuid] = toRaw$1(props2);
1778
1834
  modalInstance.setModalProps(props2);
1779
1835
  };
1780
1836
  watchEffect(() => {
@@ -1984,7 +2040,7 @@ const _sfc_main$e = {
1984
2040
  });
1985
2041
  const {
1986
2042
  extendSlots
1987
- } = useSlots$1();
2043
+ } = useSlots();
1988
2044
  const onCancel = (e) => emit("cancel", e);
1989
2045
  return () => {
1990
2046
  let _slot;
@@ -1996,12 +2052,13 @@ const _sfc_main$e = {
1996
2052
  };
1997
2053
  if (!propsData?.visible)
1998
2054
  return null;
1999
- return createVNode(Modal, propsData, _isSlot(_slot = extendSlots(slots)) ? _slot : {
2055
+ return createVNode(Modal$1, propsData, _isSlot(_slot = extendSlots(slots)) ? _slot : {
2000
2056
  default: () => [_slot]
2001
2057
  });
2002
2058
  };
2003
2059
  }
2004
2060
  };
2061
+ const Modal = /* @__PURE__ */ _export_sfc(_sfc_main$e, [["__file", "D:/dt/dt-frame-front/dt-frames/frames/packages/ui/src/components/modal/src/components/Modal.vue"]]);
2005
2062
  const _sfc_main$d = /* @__PURE__ */ defineComponent({
2006
2063
  __name: "CloseIcon",
2007
2064
  props: {
@@ -2012,7 +2069,7 @@ const _sfc_main$d = /* @__PURE__ */ defineComponent({
2012
2069
  setup(__props, { emit }) {
2013
2070
  const props2 = __props;
2014
2071
  const { t } = useI18n("UI");
2015
- const getClass = computed$1(() => {
2072
+ const getClass = computed(() => {
2016
2073
  return [
2017
2074
  "dt-basic-modal-close",
2018
2075
  `dt-basic-modal-close--custom`,
@@ -2060,7 +2117,7 @@ const _sfc_main$d = /* @__PURE__ */ defineComponent({
2060
2117
  ]),
2061
2118
  _: 1
2062
2119
  }, 8, ["title"]))
2063
- ], 64)) : createCommentVNode("", true),
2120
+ ], 64)) : createCommentVNode("v-if", true),
2064
2121
  createElementVNode("i", {
2065
2122
  class: "i mdi:close h-14 w-10 pr-4",
2066
2123
  onClick: handleCancel
@@ -2069,6 +2126,7 @@ const _sfc_main$d = /* @__PURE__ */ defineComponent({
2069
2126
  };
2070
2127
  }
2071
2128
  });
2129
+ const CloseIcon = /* @__PURE__ */ _export_sfc(_sfc_main$d, [["__file", "D:/dt/dt-frame-front/dt-frames/frames/packages/ui/src/components/modal/src/components/CloseIcon.vue"]]);
2072
2130
  const isServer = typeof window === "undefined";
2073
2131
  const BAR_MAP = {
2074
2132
  vertical: {
@@ -2137,14 +2195,14 @@ const Bar = defineComponent({
2137
2195
  move: Number
2138
2196
  },
2139
2197
  setup(props2) {
2140
- const instance = getCurrentInstance$1();
2141
- const thumb = ref$1();
2198
+ const instance = getCurrentInstance();
2199
+ const thumb = ref();
2142
2200
  const wrap = inject("scroll-bar-wrap", {});
2143
- const bar = computed$1(() => {
2201
+ const bar = computed(() => {
2144
2202
  return BAR_MAP[props2.vertical ? "vertical" : "horizontal"];
2145
2203
  });
2146
- const barStore = ref$1({});
2147
- const cursorDown = ref$1();
2204
+ const barStore = ref({});
2205
+ const cursorDown = ref();
2148
2206
  const clickThumbHandler = (e) => {
2149
2207
  if (e.ctrlKey || e.button === 2) {
2150
2208
  return;
@@ -2232,14 +2290,14 @@ const _sfc_main$c = /* @__PURE__ */ defineComponent({
2232
2290
  },
2233
2291
  setup(__props) {
2234
2292
  const props2 = __props;
2235
- const sizeWidth = ref$1("0");
2236
- const sizeHeight = ref$1("0");
2237
- const moveX = ref$1(0);
2238
- const moveY = ref$1(0);
2239
- const wrap = ref$1();
2240
- const resize = ref$1();
2293
+ const sizeWidth = ref("0");
2294
+ const sizeHeight = ref("0");
2295
+ const moveX = ref(0);
2296
+ const moveY = ref(0);
2297
+ const wrap = ref();
2298
+ const resize = ref();
2241
2299
  provide("scroll-bar-wrap", wrap);
2242
- const style = computed$1(() => {
2300
+ const style = computed(() => {
2243
2301
  let rsStyle = {};
2244
2302
  if (Array.isArray(props2.wrapStyle)) {
2245
2303
  props2.wrapStyle.forEach((it) => {
@@ -2261,7 +2319,7 @@ const _sfc_main$c = /* @__PURE__ */ defineComponent({
2261
2319
  sizeHeight.value = heightPercentage < 100 ? heightPercentage + "%" : "";
2262
2320
  sizeWidth.value = widthPercentage < 100 ? widthPercentage + "%" : "";
2263
2321
  };
2264
- onMounted$1(() => {
2322
+ onMounted(() => {
2265
2323
  nextTick(update);
2266
2324
  if (!props2.noresize) {
2267
2325
  addResizeListener(unref(resize), update);
@@ -2310,12 +2368,13 @@ const _sfc_main$c = /* @__PURE__ */ defineComponent({
2310
2368
  };
2311
2369
  }
2312
2370
  });
2371
+ const ScrollBar = /* @__PURE__ */ _export_sfc(_sfc_main$c, [["__file", "D:/dt/dt-frame-front/dt-frames/frames/packages/ui/src/components/container/src/components/scroll-bar.vue"]]);
2313
2372
  const _sfc_main$b = /* @__PURE__ */ defineComponent({
2314
2373
  __name: "scroll-container",
2315
2374
  setup(__props) {
2316
2375
  const scrollbarRef = ref(null);
2317
2376
  return (_ctx, _cache) => {
2318
- return openBlock(), createBlock(_sfc_main$c, mergeProps({
2377
+ return openBlock(), createBlock(ScrollBar, mergeProps({
2319
2378
  ref_key: "scrollbarRef",
2320
2379
  ref: scrollbarRef
2321
2380
  }, _ctx.$attrs, { class: "w-full h-full" }), {
@@ -2327,6 +2386,7 @@ const _sfc_main$b = /* @__PURE__ */ defineComponent({
2327
2386
  };
2328
2387
  }
2329
2388
  });
2389
+ const ScrollContainer = /* @__PURE__ */ _export_sfc(_sfc_main$b, [["__file", "D:/dt/dt-frame-front/dt-frames/frames/packages/ui/src/components/container/src/scroll-container.vue"]]);
2330
2390
  const _sfc_main$a = /* @__PURE__ */ defineComponent({
2331
2391
  __name: "slot-container",
2332
2392
  props: {
@@ -2339,20 +2399,21 @@ const _sfc_main$a = /* @__PURE__ */ defineComponent({
2339
2399
  },
2340
2400
  setup(__props) {
2341
2401
  const props2 = __props;
2342
- const Container = h("div", [props2.template(props2.data)]);
2402
+ const Container = h$1("div", [props2.template(props2.data)]);
2343
2403
  return (_ctx, _cache) => {
2344
2404
  return openBlock(), createBlock(unref(Container));
2345
2405
  };
2346
2406
  }
2347
2407
  });
2408
+ const SlotContainer = /* @__PURE__ */ _export_sfc(_sfc_main$a, [["__file", "D:/dt/dt-frame-front/dt-frames/frames/packages/ui/src/components/container/src/slot-container.vue"]]);
2348
2409
  const withInstall = (comp) => {
2349
2410
  comp.install = (app) => {
2350
2411
  app.component(comp.name, comp);
2351
2412
  };
2352
2413
  return comp;
2353
2414
  };
2354
- const DtScrollContainer = withInstall(_sfc_main$b);
2355
- withInstall(_sfc_main$a);
2415
+ const DtScrollContainer = withInstall(ScrollContainer);
2416
+ withInstall(SlotContainer);
2356
2417
  const _sfc_main$9 = /* @__PURE__ */ defineComponent({
2357
2418
  __name: "ModalWrap",
2358
2419
  props: {
@@ -2367,12 +2428,12 @@ const _sfc_main$9 = /* @__PURE__ */ defineComponent({
2367
2428
  emits: ["ext-height", "height-change"],
2368
2429
  setup(__props, { emit: emits }) {
2369
2430
  const props2 = __props;
2370
- const wrapperRef = ref$1(null);
2371
- const wrapRef = ref$1(null);
2372
- const realHeightRef = ref$1(0);
2373
- const minRealHeightRef = ref$1(0);
2431
+ const wrapperRef = ref(null);
2432
+ const wrapRef = ref(null);
2433
+ const realHeightRef = ref(0);
2434
+ const minRealHeightRef = ref(0);
2374
2435
  let realHeight = 0;
2375
- const wrapStyle = computed$1(() => {
2436
+ const wrapStyle = computed(() => {
2376
2437
  return {
2377
2438
  minHeight: `${props2.minHeight}px`,
2378
2439
  [props2.fullScreen ? "height" : "maxHeight"]: `${unref(realHeightRef)}px`
@@ -2386,10 +2447,10 @@ const _sfc_main$9 = /* @__PURE__ */ defineComponent({
2386
2447
  const wrapperRefDom = unref(wrapperRef);
2387
2448
  if (!wrapperRefDom)
2388
2449
  return;
2389
- const bodyDom = wrapperRefDom.$el.parentElement;
2450
+ const bodyDom = wrapperRefDom.$el.parentElement.parentElement.parentElement;
2390
2451
  if (!bodyDom)
2391
2452
  return;
2392
- bodyDom.style.padding = "0";
2453
+ bodyDom.style.padding = props2.useWrapper ? "24px" : "0";
2393
2454
  await nextTick();
2394
2455
  const modalDom = bodyDom.parentElement && bodyDom.parentElement.parentElement;
2395
2456
  return modalDom;
@@ -2459,6 +2520,7 @@ const _sfc_main$9 = /* @__PURE__ */ defineComponent({
2459
2520
  };
2460
2521
  }
2461
2522
  });
2523
+ const ModalWrapper = /* @__PURE__ */ _export_sfc(_sfc_main$9, [["__file", "D:/dt/dt-frame-front/dt-frames/frames/packages/ui/src/components/modal/src/components/ModalWrap.vue"]]);
2462
2524
  const _sfc_main$8 = /* @__PURE__ */ defineComponent({
2463
2525
  __name: "ModalFooter",
2464
2526
  props: {
@@ -2475,12 +2537,12 @@ const _sfc_main$8 = /* @__PURE__ */ defineComponent({
2475
2537
  setup(__props, { emit: emits }) {
2476
2538
  const props2 = __props;
2477
2539
  const { t } = useI18n("UI");
2478
- const buttonList = computed$1(() => {
2540
+ const buttonList = computed(() => {
2479
2541
  if (props2.buttons && props2.buttons.length)
2480
2542
  return props2.buttons;
2481
2543
  let buttonActions = [
2482
- { t: "\u4FDD\u5B58", name: props2.okText || t("SAVE"), preIcon: "mdi:content-save", type: "primary", flag: "OK" },
2483
- { t: "\u5173\u95ED", name: props2.cancelText || t("CLOSE"), preIcon: "mdi:close", flag: "CANCEL" }
2544
+ { t: "\u4FDD\u5B58", label: props2.okText || t("SAVE"), preIcon: "mdi:content-save", type: "primary", flag: "OK" },
2545
+ { t: "\u5173\u95ED", label: props2.cancelText || t("CLOSE"), preIcon: "mdi:close", flag: "CANCEL" }
2484
2546
  ];
2485
2547
  if (!props2.showSave)
2486
2548
  buttonActions = buttonActions.filter((btn) => btn.flag !== "OK");
@@ -2501,7 +2563,7 @@ const _sfc_main$8 = /* @__PURE__ */ defineComponent({
2501
2563
  return (_ctx, _cache) => {
2502
2564
  return openBlock(), createElementBlock(Fragment, null, [
2503
2565
  renderSlot(_ctx.$slots, "appendFooter"),
2504
- createVNode(_sfc_main$g, {
2566
+ createVNode(DtFormButtons, {
2505
2567
  mode: "dialog",
2506
2568
  buttonList: unref(buttonList),
2507
2569
  onHandleMethod: _cache[0] || (_cache[0] = ($event) => handleMethod($event))
@@ -2510,9 +2572,10 @@ const _sfc_main$8 = /* @__PURE__ */ defineComponent({
2510
2572
  };
2511
2573
  }
2512
2574
  });
2575
+ const ModalFooter = /* @__PURE__ */ _export_sfc(_sfc_main$8, [["__file", "D:/dt/dt-frame-front/dt-frames/frames/packages/ui/src/components/modal/src/components/ModalFooter.vue"]]);
2513
2576
  function useFullScreen(wrapClassName) {
2514
- const fullScreenRef = ref$1(false);
2515
- const getWrapClassName = computed$1(() => {
2577
+ const fullScreenRef = ref(false);
2578
+ const getWrapClassName = computed(() => {
2516
2579
  const clsName = unref(wrapClassName) || "";
2517
2580
  const cls = unref(fullScreenRef) ? `fullscreen-modal ${clsName} ` : unref(clsName);
2518
2581
  return `dt-modal ${cls}`;
@@ -2534,17 +2597,17 @@ const _sfc_main$7 = /* @__PURE__ */ defineComponent({
2534
2597
  emits: ["visible-change", "height-change", "cancel", "save", "register", "update:visible"],
2535
2598
  setup(__props, { emit: emits }) {
2536
2599
  const props2 = __props;
2537
- const visibleRef = ref$1(false);
2538
- const propsRef = ref$1();
2539
- const modalWrapperRef = ref$1(null);
2540
- const { getWrapClassName, toggleFullScreen, fullScreenRef } = useFullScreen(computed$1(() => unref(propsRef)?.wrapClassName));
2541
- const getMergeProps = computed$1(() => {
2600
+ const visibleRef = ref(false);
2601
+ const propsRef = ref();
2602
+ const modalWrapperRef = ref(null);
2603
+ const { getWrapClassName, toggleFullScreen, fullScreenRef } = useFullScreen(computed(() => unref(propsRef)?.wrapClassName));
2604
+ const getMergeProps = computed(() => {
2542
2605
  return {
2543
2606
  ...props2,
2544
2607
  ...unref(propsRef)
2545
2608
  };
2546
2609
  });
2547
- const getBindValue = computed$1(() => {
2610
+ const getBindValue = computed(() => {
2548
2611
  const bindValue = {
2549
2612
  ...unref(getMergeProps),
2550
2613
  ...unref(propsRef),
@@ -2557,12 +2620,12 @@ const _sfc_main$7 = /* @__PURE__ */ defineComponent({
2557
2620
  }
2558
2621
  return omit(bindValue, omitArr);
2559
2622
  });
2560
- const getWrapperHeight = computed$1(() => {
2623
+ const getWrapperHeight = computed(() => {
2561
2624
  if (unref(fullScreenRef))
2562
2625
  return void 0;
2563
2626
  return unref(getBindValue).height;
2564
2627
  });
2565
- const modalFooterHeight = computed$1(() => {
2628
+ const modalFooterHeight = computed(() => {
2566
2629
  if (isArray(props2.footer)) {
2567
2630
  return (unref(propsRef)?.footer).length ? 0 : void 0;
2568
2631
  }
@@ -2628,14 +2691,14 @@ const _sfc_main$7 = /* @__PURE__ */ defineComponent({
2628
2691
  });
2629
2692
  return (_ctx, _cache) => {
2630
2693
  const _component_ASpin = Spin;
2631
- return openBlock(), createBlock(_sfc_main$e, mergeProps(unref(getBindValue), { onCancel: handleCancel }), createSlots({
2694
+ return openBlock(), createBlock(Modal, mergeProps(unref(getBindValue), { onCancel: handleCancel }), createSlots({
2632
2695
  default: withCtx(() => [
2633
2696
  createVNode(_component_ASpin, {
2634
2697
  spinning: unref(getBindValue).loading,
2635
2698
  tip: unref(getBindValue).loadingTip
2636
2699
  }, {
2637
2700
  default: withCtx(() => [
2638
- createVNode(_sfc_main$9, mergeProps({
2701
+ createVNode(ModalWrapper, mergeProps({
2639
2702
  useWrapper: unref(getBindValue).useWrapper,
2640
2703
  fullScreen: unref(fullScreenRef),
2641
2704
  ref_key: "modalWrapperRef",
@@ -2659,7 +2722,7 @@ const _sfc_main$7 = /* @__PURE__ */ defineComponent({
2659
2722
  !_ctx.$slots.closeIcon ? {
2660
2723
  name: "closeIcon",
2661
2724
  fn: withCtx(() => [
2662
- createVNode(_sfc_main$d, {
2725
+ createVNode(CloseIcon, {
2663
2726
  canFullscreen: unref(getBindValue).canFullscreen,
2664
2727
  fullScreen: unref(fullScreenRef),
2665
2728
  onCancel: handleCancel,
@@ -2678,7 +2741,7 @@ const _sfc_main$7 = /* @__PURE__ */ defineComponent({
2678
2741
  !_ctx.$slots.footer ? {
2679
2742
  name: "footer",
2680
2743
  fn: withCtx(() => [
2681
- createVNode(_sfc_main$8, {
2744
+ createVNode(ModalFooter, {
2682
2745
  buttons: propsRef.value?.footer,
2683
2746
  showSave: unref(getBindValue).showOkBtn,
2684
2747
  showCancel: unref(getBindValue).showCancelBtn,
@@ -2711,6 +2774,7 @@ const _sfc_main$7 = /* @__PURE__ */ defineComponent({
2711
2774
  };
2712
2775
  }
2713
2776
  });
2777
+ const DtModal = /* @__PURE__ */ _export_sfc(_sfc_main$7, [["__file", "D:/dt/dt-frame-front/dt-frames/frames/packages/ui/src/components/modal/src/index.vue"]]);
2714
2778
  const _hoisted_1$5 = { class: "column-select" };
2715
2779
  const _sfc_main$6 = /* @__PURE__ */ defineComponent({
2716
2780
  __name: "DownloadCtrl",
@@ -2721,7 +2785,7 @@ const _sfc_main$6 = /* @__PURE__ */ defineComponent({
2721
2785
  indeterminate: false,
2722
2786
  checkAll: false
2723
2787
  });
2724
- const modalData = ref$1([]);
2788
+ const modalData = ref([]);
2725
2789
  const onCheckAllChange = (e) => {
2726
2790
  modalData.value?.map((it) => it.show = e.target.checked);
2727
2791
  };
@@ -2762,7 +2826,7 @@ const _sfc_main$6 = /* @__PURE__ */ defineComponent({
2762
2826
  const _component_ADivider = Divider$1;
2763
2827
  const _component_ACol = Col;
2764
2828
  const _component_ARow = Row;
2765
- return openBlock(), createBlock(unref(_sfc_main$7), {
2829
+ return openBlock(), createBlock(unref(DtModal), {
2766
2830
  onRegister: unref(registerDialog),
2767
2831
  onSave: save
2768
2832
  }, {
@@ -2782,7 +2846,7 @@ const _sfc_main$6 = /* @__PURE__ */ defineComponent({
2782
2846
  createVNode(_component_ADivider, { dashed: "" }),
2783
2847
  createVNode(_component_ARow, null, {
2784
2848
  default: withCtx(() => [
2785
- (openBlock(true), createElementBlock(Fragment, null, renderList(modalData.value, (it, index) => {
2849
+ (openBlock(true), createElementBlock(Fragment, null, renderList(modalData.value, (it, index2) => {
2786
2850
  return openBlock(), createBlock(_component_ACol, { span: 8 }, {
2787
2851
  default: withCtx(() => [
2788
2852
  createVNode(_component_ACheckbox, {
@@ -2808,17 +2872,29 @@ const _sfc_main$6 = /* @__PURE__ */ defineComponent({
2808
2872
  };
2809
2873
  }
2810
2874
  });
2811
- const _hoisted_1$4 = /* @__PURE__ */ createElementVNode("i", { class: "i ic:baseline-download w-7 leading-7 text-center cursor-pointer" }, null, -1);
2875
+ 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"]]);
2876
+ const _hoisted_1$4 = /* @__PURE__ */ createElementVNode("span", { class: "flex" }, [
2877
+ /* @__PURE__ */ createElementVNode("i", { class: "i ic:baseline-download w-7 leading-7 text-center cursor-pointer" })
2878
+ ], -1);
2812
2879
  const _sfc_main$5 = /* @__PURE__ */ defineComponent({
2813
2880
  __name: "Download",
2814
2881
  props: {
2815
- onlyBackDowonload: Boolean,
2816
- onlyFrontDownload: Boolean
2882
+ download: {
2883
+ type: [Boolean, Object]
2884
+ }
2817
2885
  },
2818
2886
  setup(__props) {
2887
+ const props2 = __props;
2819
2888
  const table = getTableInstance();
2820
2889
  const [registerDialog, { openModal }] = useModalOut();
2890
+ const { appConf } = useAppStore();
2821
2891
  const { t } = useI18n("UI");
2892
+ const isInclude = (type) => {
2893
+ return isBoolean(props2.download) && props2.download && appConf?.ui?.table?.exportTable.includes(type) || isArray(props2.download) && props2.download.includes(type);
2894
+ };
2895
+ const showCurrentDownload = computed(() => isInclude("current"));
2896
+ const showSelectedDownload = computed(() => isInclude("select"));
2897
+ const showBackDownload = computed(() => isInclude("all"));
2822
2898
  function handleTitleClick({ key }) {
2823
2899
  const { onDownload, columns: allColumns, dataSource } = unref(table.getBind);
2824
2900
  const excludesFlag = ["ACTION", "CHECKBOX", "RADIO"];
@@ -2849,24 +2925,24 @@ const _sfc_main$5 = /* @__PURE__ */ defineComponent({
2849
2925
  overlay: withCtx(() => [
2850
2926
  createVNode(_component_AMenu, { onClick: handleTitleClick }, {
2851
2927
  default: withCtx(() => [
2852
- !__props.onlyBackDowonload ? (openBlock(), createBlock(_component_AMenuItem, { key: "current" }, {
2928
+ unref(showCurrentDownload) ? (openBlock(), createBlock(_component_AMenuItem, { key: "current" }, {
2853
2929
  default: withCtx(() => [
2854
2930
  createElementVNode("span", null, toDisplayString(unref(t)("EXPORT_CURRENT_PAGE")), 1)
2855
2931
  ]),
2856
2932
  _: 1
2857
- })) : createCommentVNode("", true),
2858
- !__props.onlyBackDowonload ? (openBlock(), createBlock(_component_AMenuItem, { key: "select" }, {
2933
+ })) : createCommentVNode("v-if", true),
2934
+ unref(showSelectedDownload) ? (openBlock(), createBlock(_component_AMenuItem, { key: "select" }, {
2859
2935
  default: withCtx(() => [
2860
2936
  createElementVNode("span", null, toDisplayString(unref(t)("EXPORT_SELECT_COLUMN")), 1)
2861
2937
  ]),
2862
2938
  _: 1
2863
- })) : createCommentVNode("", true),
2864
- !__props.onlyFrontDownload ? (openBlock(), createBlock(_component_AMenuItem, { key: "all" }, {
2939
+ })) : createCommentVNode("v-if", true),
2940
+ unref(showBackDownload) ? (openBlock(), createBlock(_component_AMenuItem, { key: "all" }, {
2865
2941
  default: withCtx(() => [
2866
2942
  createElementVNode("span", null, toDisplayString(unref(t)("EXPORT_ALL")), 1)
2867
2943
  ]),
2868
2944
  _: 1
2869
- })) : createCommentVNode("", true)
2945
+ })) : createCommentVNode("v-if", true)
2870
2946
  ]),
2871
2947
  _: 1
2872
2948
  })
@@ -2876,13 +2952,14 @@ const _sfc_main$5 = /* @__PURE__ */ defineComponent({
2876
2952
  ]),
2877
2953
  _: 1
2878
2954
  }, 8, ["getPopupContainer"]),
2879
- createVNode(_sfc_main$6, { onRegister: unref(registerDialog) }, null, 8, ["onRegister"])
2955
+ createVNode(DownloadCtrl, { onRegister: unref(registerDialog) }, null, 8, ["onRegister"])
2880
2956
  ]),
2881
2957
  _: 1
2882
2958
  });
2883
2959
  };
2884
2960
  }
2885
2961
  });
2962
+ 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"]]);
2886
2963
  const _hoisted_1$3 = /* @__PURE__ */ createElementVNode("i", { class: "i ant-design:drag-outlined drag-icon cursor-pointer" }, null, -1);
2887
2964
  const _hoisted_2$1 = ["onClick"];
2888
2965
  const _hoisted_3$1 = ["onClick"];
@@ -2899,13 +2976,13 @@ const _sfc_main$4 = /* @__PURE__ */ defineComponent({
2899
2976
  const table = getTableInstance();
2900
2977
  const defaultRowSelection = omit(table.getRowSelection(), "selectedRowKeys");
2901
2978
  let inited = false;
2902
- const cachePlainOptions = ref$1([]);
2903
- const plainOptions = ref$1([]);
2904
- const plainSortOptions = ref$1([]);
2905
- const columnListRef = ref$1(null);
2906
- const checkIndex = ref$1(false);
2907
- const checkSelect = ref$1(false);
2908
- const getValues = computed$1(() => {
2979
+ const cachePlainOptions = ref([]);
2980
+ const plainOptions = ref([]);
2981
+ const plainSortOptions = ref([]);
2982
+ const columnListRef = ref(null);
2983
+ const checkIndex = ref(false);
2984
+ const checkSelect = ref(false);
2985
+ const getValues = computed(() => {
2909
2986
  return unref(table?.getBind);
2910
2987
  });
2911
2988
  let sortable;
@@ -2915,7 +2992,7 @@ const _sfc_main$4 = /* @__PURE__ */ defineComponent({
2915
2992
  checkedList: [],
2916
2993
  defaultCheckList: []
2917
2994
  });
2918
- const indeterminate = computed$1(() => {
2995
+ const indeterminate = computed(() => {
2919
2996
  let len = plainOptions.value.length;
2920
2997
  let checkedLen = state.checkedList.length;
2921
2998
  unref(checkIndex) && checkedLen--;
@@ -3025,9 +3102,9 @@ const _sfc_main$4 = /* @__PURE__ */ defineComponent({
3025
3102
  return;
3026
3103
  const columns = getColumns();
3027
3104
  const isFixed = item.fixed === fixed ? false : fixed;
3028
- const index = columns.findIndex((col) => col.dataIndex === item.dataIndex);
3029
- if (index !== -1) {
3030
- columns[index].fixed = isFixed;
3105
+ const index2 = columns.findIndex((col) => col.dataIndex === item.dataIndex);
3106
+ if (index2 !== -1) {
3107
+ columns[index2].fixed = isFixed;
3031
3108
  }
3032
3109
  item.fixed = isFixed;
3033
3110
  if (isFixed && !item.width) {
@@ -3218,6 +3295,7 @@ const _sfc_main$4 = /* @__PURE__ */ defineComponent({
3218
3295
  };
3219
3296
  }
3220
3297
  });
3298
+ 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"]]);
3221
3299
  const _hoisted_1$2 = { class: "flex dt-table-setting" };
3222
3300
  const _sfc_main$3 = /* @__PURE__ */ defineComponent({
3223
3301
  __name: "index",
@@ -3230,7 +3308,7 @@ const _sfc_main$3 = /* @__PURE__ */ defineComponent({
3230
3308
  emits: ["columns-change"],
3231
3309
  setup(__props, { emit: emits }) {
3232
3310
  const props2 = __props;
3233
- const getSetting = computed$1(() => {
3311
+ const getSetting = computed(() => {
3234
3312
  return {
3235
3313
  download: true,
3236
3314
  setting: true,
@@ -3243,16 +3321,17 @@ const _sfc_main$3 = /* @__PURE__ */ defineComponent({
3243
3321
  }
3244
3322
  return (_ctx, _cache) => {
3245
3323
  return openBlock(), createElementBlock("div", _hoisted_1$2, [
3246
- unref(getSetting).download ? (openBlock(), createBlock(_sfc_main$5, normalizeProps(mergeProps({ key: 0 }, unref(getSetting))), null, 16)) : createCommentVNode("", true),
3247
- unref(getSetting).setting ? (openBlock(), createBlock(_sfc_main$4, {
3324
+ unref(getSetting).download ? (openBlock(), createBlock(Download, normalizeProps(mergeProps({ key: 0 }, unref(getSetting))), null, 16)) : createCommentVNode("v-if", true),
3325
+ unref(getSetting).setting ? (openBlock(), createBlock(ColumnSetting, {
3248
3326
  key: 1,
3249
3327
  onColumnsChange: handleColumnChange
3250
- })) : createCommentVNode("", true),
3251
- unref(getSetting).fullscreen ? (openBlock(), createBlock(_sfc_main$f, { key: 2 })) : createCommentVNode("", true)
3328
+ })) : createCommentVNode("v-if", true),
3329
+ unref(getSetting).fullscreen ? (openBlock(), createBlock(FullscreenSetting, { key: 2 })) : createCommentVNode("v-if", true)
3252
3330
  ]);
3253
3331
  };
3254
3332
  }
3255
3333
  });
3334
+ 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"]]);
3256
3335
  const _hoisted_1$1 = { class: "dt-table-header" };
3257
3336
  const _hoisted_2 = { class: "flex flex-row justify-between" };
3258
3337
  const _hoisted_3 = { class: "flex flex-row flex-1" };
@@ -3284,33 +3363,34 @@ const _sfc_main$2 = /* @__PURE__ */ defineComponent({
3284
3363
  return openBlock(), createElementBlock("div", _hoisted_1$1, [
3285
3364
  createElementVNode("div", _hoisted_2, [
3286
3365
  createElementVNode("div", _hoisted_3, [
3287
- unref(getActionsProps)?.buttonList.length ? (openBlock(), createBlock(unref(_sfc_main$g), normalizeProps(mergeProps({ key: 0 }, unref(getActionsProps))), null, 16)) : createCommentVNode("", true),
3366
+ unref(getActionsProps)?.buttonList.length ? (openBlock(), createBlock(unref(DtFormButtons), normalizeProps(mergeProps({ key: 0 }, unref(getActionsProps))), null, 16)) : createCommentVNode("v-if", true),
3288
3367
  renderSlot(_ctx.$slots, "toolbar")
3289
3368
  ]),
3290
3369
  __props.tableSetting ? (openBlock(), createElementBlock("div", _hoisted_4, [
3291
- createVNode(_sfc_main$3, { setting: __props.tableSetting }, null, 8, ["setting"])
3292
- ])) : createCommentVNode("", true)
3370
+ createVNode(DtTableSetting, { setting: __props.tableSetting }, null, 8, ["setting"])
3371
+ ])) : createCommentVNode("v-if", true)
3293
3372
  ]),
3294
3373
  _ctx.$slots.headerTop ? (openBlock(), createElementBlock("div", _hoisted_5, [
3295
3374
  renderSlot(_ctx.$slots, "headerTop")
3296
- ])) : createCommentVNode("", true)
3375
+ ])) : createCommentVNode("v-if", true)
3297
3376
  ]);
3298
3377
  };
3299
3378
  }
3300
3379
  });
3380
+ 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"]]);
3301
3381
  function useTableHeader(propsRef, slots, handlers) {
3302
3382
  const { t } = useI18n("UI");
3303
3383
  const getHeaderProps = computed(() => {
3304
3384
  const TABLE_TOOLS = [
3305
- { t: "\u65B0\u589E", name: t("ADD"), preIcon: "mdi:plus", type: "primary", onClick: unref(propsRef).onAdd },
3306
- { t: "\u5220\u9664", name: t("DELETE"), preIcon: "mdi:delete-outline", onClick: unref(propsRef).onDeletes }
3385
+ { t: "\u65B0\u589E", label: t("ADD"), preIcon: "mdi:plus", type: "primary", onClick: unref(propsRef).onAdd },
3386
+ { t: "\u5220\u9664", label: t("DELETE"), preIcon: "mdi:delete-outline", onClick: unref(propsRef).onDeletes }
3307
3387
  ];
3308
3388
  const { tableSetting, toolbar = TABLE_TOOLS } = unref(propsRef);
3309
- const { getSlot } = useSlots$1();
3389
+ const { getSlot } = useSlots();
3310
3390
  const hideTitle = (!toolbar || !toolbar.filter((it) => it.show ?? true).length) && !slots.toolbar && !slots.headerTop && !tableSetting;
3311
3391
  return {
3312
3392
  title: hideTitle ? null : () => h$1(
3313
- _sfc_main$2,
3393
+ TableHeader,
3314
3394
  {
3315
3395
  tableSetting,
3316
3396
  toolbar,
@@ -3332,7 +3412,7 @@ function useTableHeader(propsRef, slots, handlers) {
3332
3412
  };
3333
3413
  }
3334
3414
  function useLoading(props2) {
3335
- const getLoading = ref$1(false);
3415
+ const getLoading = ref(false);
3336
3416
  watch(
3337
3417
  () => unref(props2)?.loading,
3338
3418
  (v) => getLoading.value = v
@@ -3347,7 +3427,7 @@ function useLoading(props2) {
3347
3427
  }
3348
3428
  function usePagination(props2) {
3349
3429
  const { t } = useI18n("UI");
3350
- const paginationRef = ref$1();
3430
+ const paginationRef = ref();
3351
3431
  const { getUiSize } = useHeader();
3352
3432
  watch(
3353
3433
  () => unref(props2).pagination,
@@ -3360,7 +3440,7 @@ function usePagination(props2) {
3360
3440
  }
3361
3441
  }
3362
3442
  );
3363
- const getPaginationInfo = computed$1(() => {
3443
+ const getPaginationInfo = computed(() => {
3364
3444
  const { appConf } = useAppStore();
3365
3445
  let { pagination } = unref(props2);
3366
3446
  if (isBoolean(pagination) && !pagination) {
@@ -3411,10 +3491,10 @@ const DEFAULT_CONFIG = {
3411
3491
  pid: "pid"
3412
3492
  };
3413
3493
  function useRowSelection(propsRef, emit) {
3414
- const selectedRowKeysRef = ref$1([]);
3415
- const selectedRowRef = ref$1([]);
3416
- const getRowSelectionRef = computed$1(() => {
3417
- const { rowSelection, showCheckboxColumn } = unref(propsRef);
3494
+ const selectedRowKeysRef = ref([]);
3495
+ const selectedRowRef = ref([]);
3496
+ const getRowSelectionRef = computed(() => {
3497
+ const { rowSelection, showCheckboxColumn, checkStrictly } = unref(propsRef);
3418
3498
  if (!rowSelection && !showCheckboxColumn)
3419
3499
  return null;
3420
3500
  if (isBoolean(showCheckboxColumn)) {
@@ -3425,6 +3505,7 @@ function useRowSelection(propsRef, emit) {
3425
3505
  }
3426
3506
  }
3427
3507
  return {
3508
+ checkStrictly,
3428
3509
  selectedRowKeys: unref(selectedRowKeysRef),
3429
3510
  onChange: (selectedRowKeys) => setSelectedRowKeys(selectedRowKeys),
3430
3511
  ...omit(rowSelection, ["onChange"])
@@ -3501,17 +3582,17 @@ function useRowSelection(propsRef, emit) {
3501
3582
  };
3502
3583
  }
3503
3584
  function useTableScroll(propsRef, tableElRef, columnsRef, rowSelectionRef) {
3504
- const tableHeightRef = ref$1(0), filterSource = ref$1([]);
3505
- ref$1(null);
3585
+ const tableHeightRef = ref(0), filterSource = ref([]);
3586
+ ref(null);
3506
3587
  let footerEl, bodyEl;
3507
3588
  const debounceRedoHeight = useDebounceFn(redoHeight, 100);
3508
3589
  windowResizeFn(calcTableHeight, 280);
3509
- const getCanResize = computed$1(() => {
3590
+ const getCanResize = computed(() => {
3510
3591
  const { canResize, scroll } = unref(propsRef);
3511
3592
  return canResize && !(scroll || {}).y;
3512
3593
  });
3513
3594
  watch(
3514
- () => propsRef.value.dataSource,
3595
+ () => [unref(getCanResize), propsRef.value.dataSource],
3515
3596
  (v) => {
3516
3597
  debounceRedoHeight();
3517
3598
  },
@@ -3527,10 +3608,14 @@ function useTableScroll(propsRef, tableElRef, columnsRef, rowSelectionRef) {
3527
3608
  tableHeightRef.value = height;
3528
3609
  }
3529
3610
  async function calcTableHeight() {
3530
- const { pagination, virtual } = unref(propsRef);
3611
+ const { pagination, virtual, canResize, dataSource } = unref(propsRef);
3612
+ if (!canResize) {
3613
+ filterSource.value = [...toRaw$1(unref(dataSource))];
3614
+ }
3531
3615
  const table = unref(tableElRef);
3616
+ if (!table)
3617
+ return;
3532
3618
  const tableEl = table?.$el;
3533
- const tableData = unref(propsRef).dataSource;
3534
3619
  if (!tableEl)
3535
3620
  return;
3536
3621
  if (!bodyEl) {
@@ -3551,7 +3636,8 @@ function useTableScroll(propsRef, tableElRef, columnsRef, rowSelectionRef) {
3551
3636
  !tableEl.classList.contains("hide-scrollbar-x") && tableEl.classList.add("hide-scrollbar-x");
3552
3637
  }
3553
3638
  bodyEl.style.height = "unset";
3554
- if (!unref(getCanResize) || !unref(tableData) || tableData.length === 0)
3639
+ const tableData = unref(propsRef).dataSource;
3640
+ if (!unref(getCanResize) || !unref(tableData))
3555
3641
  return;
3556
3642
  await nextTick();
3557
3643
  let headerHeight = 0, paginationHeight = 2, footerHeight = 0, titleHeight = tableEl.querySelector(".ant-table-title")?.offsetHeight ?? 0, marginHeight = 15;
@@ -3577,13 +3663,17 @@ function useTableScroll(propsRef, tableElRef, columnsRef, rowSelectionRef) {
3577
3663
  paginationHeight = -8;
3578
3664
  }
3579
3665
  const tableHeight = table?.$el?.offsetHeight ?? 0;
3666
+ if (tableData.length === 0)
3667
+ paginationHeight = 5;
3580
3668
  let height = tableHeight - paginationHeight - footerHeight - headerHeight - titleHeight - marginHeight;
3581
3669
  height = Math.max(height, 167);
3582
3670
  setHeight(height);
3583
3671
  bodyEl.style.height = `${height}px`;
3672
+ if (tableData.length === 0)
3673
+ return;
3584
3674
  filterSource.value = unref(propsRef)?.dataSource;
3585
3675
  }
3586
- const getScrollX = computed$1(() => {
3676
+ const getScrollX = computed(() => {
3587
3677
  let width = 0;
3588
3678
  if (unref(rowSelectionRef)) {
3589
3679
  width += 32;
@@ -3597,17 +3687,21 @@ function useTableScroll(propsRef, tableElRef, columnsRef, rowSelectionRef) {
3597
3687
  const tableWidth = table?.$el?.offsetWidth ?? 0;
3598
3688
  return tableWidth > width ? "100%" : width;
3599
3689
  });
3600
- const getScrollRef = computed$1(() => {
3690
+ const hideScrollX = computed(() => {
3691
+ let operations = unref(propsRef).operations;
3692
+ return !operations || isObject(operations) && operations?.btns && !operations?.btns?.length || isArray(operations) && !operations.length;
3693
+ });
3694
+ const getScrollRef = computed(() => {
3601
3695
  const tableHeight = unref(tableHeightRef);
3602
3696
  const { canResize, scroll } = unref(propsRef);
3603
3697
  return {
3604
- x: unref(getScrollX),
3605
- y: tableHeight,
3698
+ x: unref(hideScrollX) ? null : unref(getScrollX),
3699
+ y: canResize ? tableHeight : null,
3606
3700
  scrollToFirstRowOnChange: false,
3607
3701
  ...scroll
3608
3702
  };
3609
3703
  });
3610
- onMounted$1(() => {
3704
+ onMounted(() => {
3611
3705
  calcTableHeight();
3612
3706
  nextTick(() => debounceRedoHeight());
3613
3707
  });
@@ -3617,14 +3711,14 @@ function useTableScroll(propsRef, tableElRef, columnsRef, rowSelectionRef) {
3617
3711
  };
3618
3712
  }
3619
3713
  function useRows(propsRef) {
3620
- function getRowClassName(record, index) {
3714
+ function getRowClassName(record, index2) {
3621
3715
  const { striped, rowClassName } = unref(propsRef);
3622
3716
  const classNames = [];
3623
3717
  if (striped) {
3624
- classNames.push(index % 2 === 1 ? "table-striped" : "");
3718
+ classNames.push(index2 % 2 === 1 ? "table-striped" : "");
3625
3719
  }
3626
3720
  if (rowClassName && isFunction(rowClassName)) {
3627
- classNames.push(rowClassName(record, index));
3721
+ classNames.push(rowClassName(record, index2));
3628
3722
  }
3629
3723
  return classNames.join(" ");
3630
3724
  }
@@ -3641,7 +3735,7 @@ const _sfc_main$1 = {
3641
3735
  name: "TableRender",
3642
3736
  props,
3643
3737
  setup(props2, {}) {
3644
- let renderText = ref$1(null);
3738
+ let renderText = ref(null);
3645
3739
  watch(() => [props2.record, props2.column], (v) => {
3646
3740
  if (v) {
3647
3741
  renderCell();
@@ -3654,7 +3748,7 @@ const _sfc_main$1 = {
3654
3748
  const {
3655
3749
  column,
3656
3750
  record,
3657
- index
3751
+ index: index2
3658
3752
  } = props2;
3659
3753
  const {
3660
3754
  render,
@@ -3696,7 +3790,7 @@ const _sfc_main$1 = {
3696
3790
  });
3697
3791
  }
3698
3792
  } else if (isFunction(render)) {
3699
- let afterRenderData = render(record, index, text);
3793
+ let afterRenderData = render(record, index2, text);
3700
3794
  if (afterRenderData.__v_isRef) {
3701
3795
  renderText = afterRenderData;
3702
3796
  } else if (afterRenderData["setup"]) {
@@ -3714,15 +3808,16 @@ const _sfc_main$1 = {
3714
3808
  return () => createVNode("span", null, [unref(renderText)]);
3715
3809
  }
3716
3810
  };
3811
+ 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"]]);
3717
3812
  const DEFAULT_SORT_FN = (sortInfo) => {
3718
3813
  const { field, order } = sortInfo;
3719
3814
  return field && order ? { field, order } : {};
3720
3815
  };
3721
3816
  const TableProps = {
3817
+ autoFetch: { type: Boolean, default: false },
3722
3818
  clickToSelectRow: { type: Boolean, default: false },
3723
3819
  tableSetting: { type: [Boolean, Object], default: () => ({}) },
3724
3820
  striped: { type: Boolean, default: true },
3725
- canColDrag: { type: Boolean, default: true },
3726
3821
  clearSelectOnPageChange: { type: Boolean, default: false },
3727
3822
  resizable: { type: Boolean, default: true },
3728
3823
  minWidth: { type: Number },
@@ -3791,6 +3886,10 @@ const TableProps = {
3791
3886
  type: Boolean,
3792
3887
  default: false
3793
3888
  },
3889
+ checkStrictly: {
3890
+ type: Boolean,
3891
+ default: false
3892
+ },
3794
3893
  operations: {
3795
3894
  type: Object
3796
3895
  },
@@ -3800,6 +3899,11 @@ const TableProps = {
3800
3899
  registerInstance: {
3801
3900
  type: Function
3802
3901
  },
3902
+ onSearch: {
3903
+ type: Function,
3904
+ default: (params) => {
3905
+ }
3906
+ },
3803
3907
  onAdd: {
3804
3908
  type: Function,
3805
3909
  default: (params) => ({})
@@ -3817,7 +3921,7 @@ const TableProps = {
3817
3921
  default: (params) => ({})
3818
3922
  }
3819
3923
  };
3820
- const _hoisted_1 = /* @__PURE__ */ createElementVNode("img", { src: _imports_0 }, null, -1);
3924
+ const _hoisted_1 = ["src"];
3821
3925
  const _sfc_main = /* @__PURE__ */ defineComponent({
3822
3926
  __name: "index",
3823
3927
  props: TableProps,
@@ -3834,15 +3938,15 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
3834
3938
  ],
3835
3939
  setup(__props, { emit: emits }) {
3836
3940
  const props2 = __props;
3837
- const tableElRef = ref$1(null);
3941
+ const tableElRef = ref(null);
3838
3942
  const attrs = useAttrs();
3839
- const slots = useSlots$2();
3840
- const innerPropsRef = ref$1();
3841
- const getProps = computed$1(() => {
3943
+ const slots = useSlots$1();
3944
+ const innerPropsRef = ref();
3945
+ const getProps = computed(() => {
3842
3946
  return { ...props2, ...unref(innerPropsRef) };
3843
3947
  });
3844
3948
  const { getRowClassName } = useRows(getProps);
3845
- const tableCls = computed$1(() => {
3949
+ const tableCls = computed(() => {
3846
3950
  return [
3847
3951
  "dt-table",
3848
3952
  "box-border",
@@ -3884,15 +3988,15 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
3884
3988
  clearSelectedRowKeys
3885
3989
  }
3886
3990
  );
3887
- const getBind = computed$1(() => {
3991
+ const getBind = computed(() => {
3888
3992
  return {
3889
3993
  ...attrs,
3890
3994
  ...unref(getProps),
3891
3995
  ...unref(getHeaderProps),
3892
3996
  scroll: unref(getScrollRef),
3893
3997
  loading: unref(getLoading),
3894
- dataSource: toRaw(unref(filterSource)),
3895
- pagination: toRaw(unref(getPaginationInfo)),
3998
+ dataSource: toRaw$1(unref(filterSource)),
3999
+ pagination: toRaw$1(unref(getPaginationInfo)),
3896
4000
  rowSelection: unref(getRowSelectionRef),
3897
4001
  rowKey: unref(getProps).rowKey,
3898
4002
  columns: unref(getViewColumns),
@@ -3942,6 +4046,10 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
3942
4046
  if (unref(innerPropsRef)?.registerInstance) {
3943
4047
  unref(innerPropsRef)?.registerInstance(tableAction);
3944
4048
  }
4049
+ onMounted(() => {
4050
+ if (unref(getProps).autoFetch)
4051
+ unref(getProps)?.onSearch({});
4052
+ });
3945
4053
  return (_ctx, _cache) => {
3946
4054
  const _component_ATable = Table;
3947
4055
  return openBlock(), createBlock(_component_ATable, mergeProps({
@@ -3951,17 +4059,21 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
3951
4059
  rowClassName: unref(getRowClassName),
3952
4060
  onChange: unref(handleTableChange)
3953
4061
  }), createSlots({
3954
- bodyCell: withCtx(({ column, record, index }) => [
3955
- _ctx.$slots.bodyCell ? renderSlot(_ctx.$slots, "bodyCell", normalizeProps(mergeProps({ key: 0 }, { column, record, index }))) : createCommentVNode("", true),
3956
- column?.render && !_ctx.$slots.bodyCell ? (openBlock(), createBlock(_sfc_main$1, {
4062
+ bodyCell: withCtx(({ column, record, index: index2 }) => [
4063
+ _ctx.$slots.bodyCell ? renderSlot(_ctx.$slots, "bodyCell", normalizeProps(mergeProps({ key: 0 }, { column, record, index: index2 }))) : createCommentVNode("v-if", true),
4064
+ 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 "),
4065
+ column?.render && !_ctx.$slots.bodyCell ? (openBlock(), createBlock(TableRender, {
3957
4066
  key: 1,
3958
4067
  column,
3959
4068
  record,
3960
- index
3961
- }, null, 8, ["column", "record", "index"])) : createCommentVNode("", true)
4069
+ index: index2
4070
+ }, null, 8, ["column", "record", "index"])) : createCommentVNode("v-if", true)
3962
4071
  ]),
3963
4072
  emptyText: withCtx(() => [
3964
- _hoisted_1
4073
+ createElementVNode("img", {
4074
+ src: "/node_modules/@dt-frames/ui/es/assets/imgs/table/empty.png",
4075
+ class: "w-72 m-auto my-5"
4076
+ }, null, 8, _hoisted_1)
3965
4077
  ]),
3966
4078
  _: 2
3967
4079
  }, [
@@ -3977,7 +4089,8 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
3977
4089
  };
3978
4090
  }
3979
4091
  });
4092
+ const index = /* @__PURE__ */ _export_sfc(_sfc_main, [["__file", "D:/dt/dt-frame-front/dt-frames/frames/packages/ui/src/components/table/src/index.vue"]]);
3980
4093
  export {
3981
- _sfc_main as DtTable,
4094
+ index as DtTable,
3982
4095
  useTable
3983
4096
  };