@dt-frames/ui 2.0.24 → 4.0.1

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 (667) hide show
  1. package/dist/es/_virtual/preload-helper.mjs +1 -0
  2. package/dist/es/assets/node_modules/.pnpm/nprogress@0.2.0/node_modules/nprogress/nprogress-BgDCIyLK.css +1 -0
  3. package/dist/es/components/drawer/index.d.ts +5 -0
  4. package/dist/es/components/drawer/index.mjs +1 -0
  5. package/dist/es/components/drawer/src/hooks/useDrawer.d.ts +3 -0
  6. package/dist/es/components/drawer/src/index.d.ts +20 -0
  7. package/dist/es/components/drawer/src/types/index.d.ts +208 -0
  8. package/dist/es/components/drawer/src/types/index.ts +223 -0
  9. package/dist/es/components/drawer/styles/index.scss +0 -0
  10. package/dist/es/components/form/index.d.ts +9 -0
  11. package/dist/es/components/form/index.mjs +1 -0
  12. package/dist/es/components/form/src/conponents/FormButtons.d.ts +29 -0
  13. package/dist/es/components/form/src/conponents/FormItems.d.ts +19 -0
  14. package/dist/es/components/form/src/conponents/RadioGroup.d.ts +10 -0
  15. package/dist/es/components/form/src/conponents/componentMap.d.ts +4 -0
  16. package/dist/es/components/form/src/hooks/useForm.d.ts +8 -0
  17. package/dist/es/components/form/src/hooks/useFormActions.d.ts +32 -0
  18. package/dist/es/components/form/src/hooks/useFormEvent.d.ts +29 -0
  19. package/dist/es/components/form/src/hooks/useFormValues.d.ts +13 -0
  20. package/dist/es/components/form/src/index.d.ts +493 -0
  21. package/dist/es/components/form/src/types/form.d.ts +355 -0
  22. package/dist/es/components/form/src/types/form.ts +391 -0
  23. package/dist/es/components/form/src/types/item.d.ts +3036 -0
  24. package/dist/es/components/form/src/types/item.ts +3169 -0
  25. package/{es/components/form/src/hooks/helper.d.ts → dist/es/components/form/src/utils/index.d.ts} +7 -5
  26. package/dist/es/components/form/styles/index.scss +10 -0
  27. package/dist/es/components/hover-card/index.d.ts +7 -0
  28. package/dist/es/components/hover-card/index.mjs +1 -0
  29. package/dist/es/components/hover-card/src/hover-card-content.d.ts +24 -0
  30. package/dist/es/components/hover-card/src/hover-card-trigger.d.ts +18 -0
  31. package/dist/es/components/hover-card/src/hover-card.d.ts +22 -0
  32. package/dist/es/components/icon/index.d.ts +4 -0
  33. package/dist/es/components/icon/index.mjs +1 -0
  34. package/dist/es/components/icon/src/index.d.ts +31 -0
  35. package/dist/es/components/icon/src/types/index.d.ts +6 -0
  36. package/dist/es/components/icon-picker/index.d.ts +4 -0
  37. package/dist/es/components/icon-picker/index.mjs +9 -0
  38. package/dist/es/components/icon-picker/src/components/IconPicker.d.ts +23 -0
  39. package/dist/es/components/icon-picker/src/components/SelectIcon.d.ts +39 -0
  40. package/dist/es/components/icon-picker/src/icon.d.ts +13 -0
  41. package/dist/es/components/icon-picker/src/index.d.ts +27 -0
  42. package/dist/es/components/icon-picker/styles/index.scss +0 -0
  43. package/dist/es/components/iframe/index.d.ts +4 -0
  44. package/dist/es/components/iframe/index.mjs +1 -0
  45. package/dist/es/components/iframe/src/index.d.ts +46 -0
  46. package/dist/es/components/modal/index.d.ts +7 -0
  47. package/dist/es/components/modal/index.mjs +1 -0
  48. package/dist/es/components/modal/src/components/Header.d.ts +8 -0
  49. package/dist/es/components/modal/src/hooks/useModal.d.ts +24 -0
  50. package/dist/es/components/modal/src/index.d.ts +822 -0
  51. package/dist/es/components/modal/src/types/modal.d.ts +246 -0
  52. package/dist/es/components/modal/src/types/modal.ts +265 -0
  53. package/dist/es/components/modal/styles/index.scss +8 -0
  54. package/dist/es/components/table/index.d.ts +9 -0
  55. package/dist/es/components/table/index.mjs +1 -0
  56. package/dist/es/components/table/src/components/Pagination.d.ts +15 -0
  57. package/dist/es/components/table/src/components/TableAction.d.ts +18 -0
  58. package/dist/es/components/table/src/components/TableHeader.d.ts +28 -0
  59. package/dist/es/components/table/src/components/TableLoading.d.ts +2 -0
  60. package/dist/es/components/table/src/components/tableSetting/Column.d.ts +222 -0
  61. package/dist/es/components/table/src/components/tableSetting/Download.d.ts +6 -0
  62. package/dist/es/components/table/src/components/tableSetting/DownloadCtrl.d.ts +2 -0
  63. package/dist/es/components/table/src/components/tableSetting/Fullscreen.d.ts +2 -0
  64. package/dist/es/components/table/src/components/tableSetting/Search.d.ts +5 -0
  65. package/dist/es/components/table/src/components/tableSetting/index.d.ts +7 -0
  66. package/dist/es/components/table/src/hooks/useColumns.d.ts +18 -0
  67. package/dist/es/components/table/src/hooks/useDataSource.d.ts +17 -0
  68. package/dist/es/components/table/src/hooks/useLoading.d.ts +7 -0
  69. package/dist/es/components/table/src/hooks/usePagination.d.ts +9 -0
  70. package/dist/es/components/table/src/hooks/useRowSelection.d.ts +7 -0
  71. package/dist/es/components/table/src/hooks/useTable.d.ts +3 -0
  72. package/dist/es/components/table/src/hooks/useTableIns.d.ts +12 -0
  73. package/dist/es/components/table/src/index.d.ts +775 -0
  74. package/dist/es/components/table/src/types/pagination.d.ts +100 -0
  75. package/dist/es/components/table/src/types/pagination.ts +102 -0
  76. package/dist/es/components/table/src/types/table.d.ts +632 -0
  77. package/dist/es/components/table/src/types/table.ts +668 -0
  78. package/dist/es/components/table/styles/index.scss +66 -0
  79. package/dist/es/components/tree/index.d.ts +7 -0
  80. package/dist/es/components/tree/index.mjs +1 -0
  81. package/dist/es/components/tree/src/components/ContextMenu.d.ts +80 -0
  82. package/dist/es/components/tree/src/components/TreeHeader.d.ts +31 -0
  83. package/dist/es/components/tree/src/hooks/useContextMenu.d.ts +11 -0
  84. package/dist/es/components/tree/src/hooks/useTree.d.ts +2 -0
  85. package/dist/es/components/tree/src/index.d.ts +116 -0
  86. package/dist/es/components/tree/src/types/index.d.ts +758 -0
  87. package/dist/es/components/tree/src/types/index.ts +788 -0
  88. package/dist/es/components/tree/styles/index.scss +15 -0
  89. package/dist/es/components/upload/assets/docx-preview-BLYEK_jf.js +38 -0
  90. package/dist/es/components/upload/assets/index-CUsgWuYW.css +1 -0
  91. package/dist/es/components/upload/assets/nprogress-BgDCIyLK.css +1 -0
  92. package/dist/es/components/upload/index.d.ts +6 -0
  93. package/dist/es/components/upload/index.mjs +1 -0
  94. package/dist/es/components/upload/src/components/PdfView.d.ts +2 -0
  95. package/dist/es/components/upload/src/components/WordView.d.ts +4 -0
  96. package/dist/es/components/upload/src/hooks/useFile.d.ts +14 -0
  97. package/dist/es/components/upload/src/index.d.ts +23 -0
  98. package/dist/es/components/upload/src/types/index.d.ts +229 -0
  99. package/dist/es/components/upload/src/utils/index.d.ts +15 -0
  100. package/dist/es/components/upload/styles/index.scss +0 -0
  101. package/dist/es/components/virtual-list/index.d.ts +4 -0
  102. package/dist/es/components/virtual-list/index.mjs +1 -0
  103. package/dist/es/components/virtual-list/src/index.d.ts +32 -0
  104. package/dist/es/components/virtual-list/src/types/index.d.ts +26 -0
  105. package/dist/es/components/virtual-list/styles/index.scss +0 -0
  106. package/dist/es/components/vxe-table/index.d.ts +7 -0
  107. package/dist/es/components/vxe-table/index.mjs +1 -0
  108. package/dist/es/components/vxe-table/src/components/Header.d.ts +28 -0
  109. package/dist/es/components/vxe-table/src/components/Pagination.d.ts +15 -0
  110. package/dist/es/components/vxe-table/src/components/RenderCell.d.ts +10 -0
  111. package/dist/es/components/vxe-table/src/components/TableAction.d.ts +18 -0
  112. package/dist/es/components/vxe-table/src/components/tableSetting/Column.d.ts +222 -0
  113. package/dist/es/components/vxe-table/src/components/tableSetting/Download.d.ts +6 -0
  114. package/dist/es/components/vxe-table/src/components/tableSetting/DownloadCtrl.d.ts +2 -0
  115. package/dist/es/components/vxe-table/src/components/tableSetting/Fullscreen.d.ts +2 -0
  116. package/dist/es/components/vxe-table/src/components/tableSetting/index.d.ts +7 -0
  117. package/dist/es/components/vxe-table/src/helper/index.d.ts +7 -0
  118. package/dist/es/components/vxe-table/src/hooks/useColumns.d.ts +5 -0
  119. package/dist/es/components/vxe-table/src/hooks/usePagination.d.ts +7 -0
  120. package/dist/es/components/vxe-table/src/hooks/useTableIns.d.ts +15 -0
  121. package/dist/es/components/vxe-table/src/hooks/useVxeTable.d.ts +2 -0
  122. package/dist/es/components/vxe-table/src/index.d.ts +155 -0
  123. package/dist/es/components/vxe-table/src/types/index.d.ts +181 -0
  124. package/dist/es/components/vxe-table/src/types/pagination.d.ts +100 -0
  125. package/dist/es/components/vxe-table/src/types/table.d.ts +25 -0
  126. package/dist/es/components/vxe-table/src/utils/index.d.ts +5 -0
  127. package/dist/es/components/vxe-table/styles/index.scss +6 -0
  128. package/dist/es/hooks/useCurd.d.ts +4 -0
  129. package/dist/es/hooks/useCurd.mjs +1 -0
  130. package/dist/es/hooks/useDownload.d.ts +9 -0
  131. package/dist/es/hooks/useDownload.mjs +1 -0
  132. package/dist/es/hooks/useSource.d.ts +10 -0
  133. package/dist/es/hooks/useSource.mjs +1 -0
  134. package/dist/es/index.d.ts +11 -0
  135. package/dist/es/index.mjs +1 -0
  136. package/dist/es/init/config.d.ts +6 -0
  137. package/dist/es/init/config.mjs +1 -0
  138. package/dist/es/init/index.d.ts +11 -0
  139. package/dist/es/init/index.mjs +1 -0
  140. package/dist/es/init/types/appConf.d.ts +331 -0
  141. package/dist/es/init/vxeTable.d.ts +5 -0
  142. package/dist/es/layout/assets/avator-uscRzRXF.png +0 -0
  143. package/dist/es/layout/index.d.ts +11 -0
  144. package/dist/es/layout/index.mjs +3 -0
  145. package/dist/es/layout/src/components/LayoutContent.d.ts +22 -0
  146. package/dist/es/layout/src/components/LayoutFooter.d.ts +23 -0
  147. package/dist/es/layout/src/components/LayoutHeader.d.ts +49 -0
  148. package/dist/es/layout/src/components/LayoutSidebar.d.ts +116 -0
  149. package/dist/es/layout/src/components/LayoutTabbar.d.ts +20 -0
  150. package/dist/es/layout/src/components/content/Content.d.ts +2 -0
  151. package/dist/es/layout/src/components/footer/CopyRight.d.ts +15 -0
  152. package/dist/es/layout/src/components/header/ArrowRight.d.ts +2 -0
  153. package/dist/es/layout/src/components/header/Breadcrumb.d.ts +13 -0
  154. package/dist/es/layout/src/components/header/FullScreen.d.ts +2 -0
  155. package/dist/es/layout/src/components/header/GlobalSearch.d.ts +417 -0
  156. package/dist/es/layout/src/components/header/Header.d.ts +22 -0
  157. package/dist/es/layout/src/components/header/IconButton.d.ts +29 -0
  158. package/dist/es/layout/src/components/header/LanguageToggle.d.ts +8 -0
  159. package/dist/es/layout/src/components/header/Logo.d.ts +54 -0
  160. package/dist/es/layout/src/components/header/User.d.ts +2 -0
  161. package/dist/es/layout/src/components/header/perferences/block/block.d.ts +22 -0
  162. package/dist/es/layout/src/components/header/perferences/block/component/CheckboxItem.d.ts +38 -0
  163. package/dist/es/layout/src/components/header/perferences/block/component/InputItem.d.ts +35 -0
  164. package/dist/es/layout/src/components/header/perferences/block/component/NumberItem.d.ts +36 -0
  165. package/dist/es/layout/src/components/header/perferences/block/component/SelectItem.d.ts +35 -0
  166. package/dist/es/layout/src/components/header/perferences/block/component/SwitchItem.d.ts +33 -0
  167. package/dist/es/layout/src/components/header/perferences/block/component/ToggleItem.d.ts +32 -0
  168. package/dist/es/layout/src/components/header/perferences/block/general/Animation.d.ts +18 -0
  169. package/dist/es/layout/src/components/header/perferences/block/general/General.d.ts +18 -0
  170. package/dist/es/layout/src/components/header/perferences/block/layout/Breadcrumb.d.ts +24 -0
  171. package/dist/es/layout/src/components/header/perferences/block/layout/Content.d.ts +9 -0
  172. package/dist/es/layout/src/components/header/perferences/block/layout/Copyright.d.ts +27 -0
  173. package/dist/es/layout/src/components/header/perferences/block/layout/Footer.d.ts +12 -0
  174. package/dist/es/layout/src/components/header/perferences/block/layout/Header.d.ts +19 -0
  175. package/dist/es/layout/src/components/header/perferences/block/layout/Layout.d.ts +10 -0
  176. package/dist/es/layout/src/components/header/perferences/block/layout/Navigation.d.ts +19 -0
  177. package/dist/es/layout/src/components/header/perferences/block/layout/Sidebar.d.ts +35 -0
  178. package/dist/es/layout/src/components/header/perferences/block/layout/Tabbar.d.ts +39 -0
  179. package/dist/es/layout/src/components/header/perferences/block/layout/Widget.d.ts +33 -0
  180. package/dist/es/layout/src/components/header/perferences/block/shortcut-keys/Global.d.ts +18 -0
  181. package/dist/es/layout/src/components/header/perferences/block/theme/BuiltinTheme.d.ts +16 -0
  182. package/dist/es/layout/src/components/header/perferences/block/theme/ColorMode.d.ts +12 -0
  183. package/dist/es/layout/src/components/header/perferences/block/theme/Radius.d.ts +9 -0
  184. package/dist/es/layout/src/components/header/perferences/block/theme/Theme.d.ts +15 -0
  185. package/dist/es/layout/src/components/header/perferences/icons/content-compact.d.ts +2 -0
  186. package/dist/es/layout/src/components/header/perferences/icons/full-content.d.ts +2 -0
  187. package/dist/es/layout/src/components/header/perferences/icons/header-mixed-nav.d.ts +2 -0
  188. package/dist/es/layout/src/components/header/perferences/icons/header-nav.d.ts +2 -0
  189. package/dist/es/layout/src/components/header/perferences/icons/header-sidebar-nav.d.ts +2 -0
  190. package/dist/es/layout/src/components/header/perferences/icons/index.d.ts +10 -0
  191. package/dist/es/layout/src/components/header/perferences/icons/mixed-nav.d.ts +2 -0
  192. package/dist/es/layout/src/components/header/perferences/icons/sidebar-mixed-nav.d.ts +2 -0
  193. package/dist/es/layout/src/components/header/perferences/icons/sidebar-nav.d.ts +2 -0
  194. package/dist/es/layout/src/components/header/perferences/preferences-button.d.ts +6 -0
  195. package/dist/es/layout/src/components/header/perferences/preferences-drawer.d.ts +223 -0
  196. package/dist/es/layout/src/components/header/perferences/preferences.d.ts +27 -0
  197. package/dist/es/layout/src/components/lockscreen/Lockscreen.d.ts +2 -0
  198. package/{es/theme/src/components/header/components/lock → dist/es/layout/src/components/lockscreen}/Recharge.d.ts +4 -6
  199. package/dist/es/layout/src/components/lockscreen/lockscreen.store.d.ts +9 -0
  200. package/dist/es/layout/src/components/lockscreen/useBattery.d.ts +16 -0
  201. package/dist/es/layout/src/components/lockscreen/useTime.d.ts +3 -0
  202. package/dist/es/layout/src/components/menu/ExtraMenu.d.ts +11 -0
  203. package/dist/es/layout/src/components/menu/Menu.d.ts +12 -0
  204. package/dist/es/layout/src/components/menu/MixedMenu.d.ts +11 -0
  205. package/dist/es/layout/src/components/menu/SidebarCollapseButton.d.ts +9 -0
  206. package/dist/es/layout/src/components/menu/SidebarFixedButton.d.ts +9 -0
  207. package/dist/es/layout/src/components/menu/basic-menu/BasicMenu.d.ts +37 -0
  208. package/dist/es/layout/src/components/menu/basic-menu/CollapseTransition.d.ts +17 -0
  209. package/dist/es/layout/src/components/menu/basic-menu/HoverCard.d.ts +29 -0
  210. package/dist/es/layout/src/components/menu/basic-menu/Menu.d.ts +5 -0
  211. package/dist/es/layout/src/components/menu/basic-menu/MenuBadge.d.ts +6 -0
  212. package/dist/es/layout/src/components/menu/basic-menu/MenuBadgeDot.d.ts +10 -0
  213. package/dist/es/layout/src/components/menu/basic-menu/MenuItem.d.ts +28 -0
  214. package/dist/es/layout/src/components/menu/basic-menu/NoramalMenu.d.ts +14 -0
  215. package/dist/es/layout/src/components/menu/basic-menu/SubMenu.d.ts +6 -0
  216. package/dist/es/layout/src/components/menu/basic-menu/SubMenuCom.d.ts +25 -0
  217. package/dist/es/layout/src/components/menu/basic-menu/SubMenuContent.d.ts +27 -0
  218. package/dist/es/layout/src/components/menu/basic-menu/index.d.ts +2 -0
  219. package/dist/es/layout/src/components/menu/basic-menu/type.d.ts +127 -0
  220. package/dist/es/layout/src/components/menu/hooks/useMenu.d.ts +9 -0
  221. package/dist/es/layout/src/components/menu/hooks/useMenuScroll.d.ts +9 -0
  222. package/dist/es/layout/src/components/tabbar/Tabbar.d.ts +6 -0
  223. package/dist/es/layout/src/components/tabbar/hooks/useTab.d.ts +25 -0
  224. package/dist/es/layout/src/components/tabbar/hooks/useTabbar.d.ts +15 -0
  225. package/dist/es/layout/src/components/tabbar/hooks/useTabsDrag.d.ts +8 -0
  226. package/dist/es/layout/src/components/tabbar/hooks/useTabsViewScroll.d.ts +11 -0
  227. package/dist/es/layout/src/components/tabbar/tabsView/TabsContent.d.ts +959 -0
  228. package/dist/es/layout/src/components/tabbar/tabsView/ToolScreen.d.ts +9 -0
  229. package/dist/es/layout/src/components/tabbar/tabsView/ToolsMore.d.ts +6 -0
  230. package/dist/es/layout/src/components/tabbar/tabsView/types.d.ts +68 -0
  231. package/dist/es/layout/src/const/constants.d.ts +13 -0
  232. package/dist/es/layout/src/const/preferences.config.d.ts +8 -0
  233. package/dist/es/layout/src/hooks/useContext.d.ts +6 -0
  234. package/dist/es/layout/src/hooks/useDesignTokens.d.ts +1 -0
  235. package/dist/es/layout/src/hooks/useExtraMenu.d.ts +12 -0
  236. package/dist/es/layout/src/hooks/useLayoutStyle.d.ts +36 -0
  237. package/dist/es/layout/src/hooks/useMenu.d.ts +4 -0
  238. package/dist/es/layout/src/hooks/useMixedMenu.d.ts +13 -0
  239. package/dist/es/layout/src/hooks/useNavigation.d.ts +5 -0
  240. package/dist/es/layout/src/hooks/useTheme.d.ts +34 -0
  241. package/dist/es/layout/src/index.d.ts +28 -0
  242. package/dist/es/layout/src/layout.d.ts +71 -0
  243. package/dist/es/layout/src/stores/preferences.store.d.ts +66 -0
  244. package/dist/es/layout/src/stores/useTabbar.store.d.ts +185 -0
  245. package/dist/es/layout/src/types/basic.type.d.ts +5 -0
  246. package/dist/es/layout/src/types/menu.type.d.ts +102 -0
  247. package/dist/es/layout/src/types/perferences.type.d.ts +287 -0
  248. package/dist/es/layout/src/types/route.type.d.ts +109 -0
  249. package/dist/es/layout/src/utils/color.d.ts +19 -0
  250. package/dist/es/layout/src/utils/css.d.ts +14 -0
  251. package/dist/es/layout/src/utils/diff.d.ts +6 -0
  252. package/dist/es/layout/src/utils/dom.d.ts +6 -0
  253. package/dist/es/layout/src/utils/letter.d.ts +20 -0
  254. package/dist/es/layout/src/utils/menu.d.ts +20 -0
  255. package/dist/es/layout/styles/css/animation.css +299 -0
  256. package/dist/es/layout/styles/css/dark.css +232 -0
  257. package/dist/es/layout/styles/css/default.css +174 -0
  258. package/dist/es/layout/styles/css/uncss.css +109 -0
  259. package/dist/es/layout/styles/index.scss +871 -0
  260. package/dist/es/lib/components/drawer/index.d.ts +5 -0
  261. package/dist/es/lib/components/drawer/src/hooks/useDrawer.d.ts +3 -0
  262. package/dist/es/lib/components/drawer/src/types/index.d.ts +208 -0
  263. package/dist/es/lib/components/form/index.d.ts +9 -0
  264. package/dist/es/lib/components/form/src/conponents/componentMap.d.ts +4 -0
  265. package/dist/es/lib/components/form/src/hooks/useForm.d.ts +8 -0
  266. package/dist/es/lib/components/form/src/hooks/useFormActions.d.ts +32 -0
  267. package/dist/es/lib/components/form/src/hooks/useFormEvent.d.ts +29 -0
  268. package/dist/es/lib/components/form/src/hooks/useFormValues.d.ts +13 -0
  269. package/dist/es/lib/components/form/src/types/form.d.ts +355 -0
  270. package/dist/es/lib/components/form/src/types/item.d.ts +3170 -0
  271. package/dist/es/lib/components/form/src/utils/index.d.ts +16 -0
  272. package/dist/es/lib/components/hover-card/index.d.ts +7 -0
  273. package/dist/es/lib/components/icon/index.d.ts +4 -0
  274. package/dist/es/lib/components/icon-picker/index.d.ts +4 -0
  275. package/dist/es/lib/components/icon-picker/src/icon.d.ts +13 -0
  276. package/dist/es/lib/components/iframe/index.d.ts +4 -0
  277. package/dist/es/lib/components/modal/index.d.ts +7 -0
  278. package/dist/es/lib/components/modal/src/hooks/useModal.d.ts +24 -0
  279. package/dist/es/lib/components/modal/src/types/modal.d.ts +246 -0
  280. package/dist/es/lib/components/table/index.d.ts +9 -0
  281. package/dist/es/lib/components/table/src/hooks/useColumns.d.ts +18 -0
  282. package/dist/es/lib/components/table/src/hooks/useDataSource.d.ts +17 -0
  283. package/dist/es/lib/components/table/src/hooks/useLoading.d.ts +7 -0
  284. package/dist/es/lib/components/table/src/hooks/usePagination.d.ts +9 -0
  285. package/dist/es/lib/components/table/src/hooks/useRowSelection.d.ts +7 -0
  286. package/dist/es/lib/components/table/src/hooks/useTable.d.ts +3 -0
  287. package/dist/es/lib/components/table/src/hooks/useTableIns.d.ts +12 -0
  288. package/dist/es/lib/components/table/src/types/pagination.d.ts +100 -0
  289. package/dist/es/lib/components/table/src/types/table.d.ts +632 -0
  290. package/dist/es/lib/components/tree/index.d.ts +7 -0
  291. package/dist/es/lib/components/tree/src/enums/index.d.ts +6 -0
  292. package/dist/es/lib/components/tree/src/hooks/useContextMenu.d.ts +11 -0
  293. package/dist/es/lib/components/tree/src/hooks/useTree.d.ts +2 -0
  294. package/dist/es/lib/components/tree/src/types/index.d.ts +758 -0
  295. package/dist/es/lib/components/upload/index.d.ts +4 -0
  296. package/dist/es/lib/components/upload/src/hooks/useFile.d.ts +14 -0
  297. package/dist/es/lib/components/upload/src/types/index.d.ts +88 -0
  298. package/dist/es/lib/components/upload/src/utils/index.d.ts +15 -0
  299. package/dist/es/lib/components/virtual-list/index.d.ts +4 -0
  300. package/dist/es/lib/components/virtual-list/src/types/index.d.ts +26 -0
  301. package/dist/es/lib/components/vxe-table/index.d.ts +7 -0
  302. package/dist/es/lib/components/vxe-table/src/helper/index.d.ts +7 -0
  303. package/dist/es/lib/components/vxe-table/src/hooks/useColumns.d.ts +5 -0
  304. package/dist/es/lib/components/vxe-table/src/hooks/usePagination.d.ts +7 -0
  305. package/dist/es/lib/components/vxe-table/src/hooks/useTableIns.d.ts +15 -0
  306. package/dist/es/lib/components/vxe-table/src/hooks/useVxeTable.d.ts +2 -0
  307. package/dist/es/lib/components/vxe-table/src/types/index.d.ts +181 -0
  308. package/dist/es/lib/components/vxe-table/src/types/pagination.d.ts +100 -0
  309. package/dist/es/lib/components/vxe-table/src/types/table.d.ts +25 -0
  310. package/dist/es/lib/components/vxe-table/src/utils/index.d.ts +5 -0
  311. package/dist/es/lib/hooks/useCurd.d.ts +4 -0
  312. package/dist/es/lib/hooks/useDownload.d.ts +9 -0
  313. package/dist/es/lib/hooks/useSource.d.ts +10 -0
  314. package/dist/es/lib/index.d.ts +10 -0
  315. package/dist/es/lib/init/config.d.ts +6 -0
  316. package/dist/es/lib/init/index.d.ts +11 -0
  317. package/dist/es/lib/init/types/appConf.d.ts +331 -0
  318. package/dist/es/lib/init/vxeTable.d.ts +9 -0
  319. package/dist/es/lib/layout/index.d.ts +11 -0
  320. package/dist/es/lib/layout/src/components/header/perferences/icons/index.d.ts +10 -0
  321. package/dist/es/lib/layout/src/components/lockscreen/lockscreen.store.d.ts +9 -0
  322. package/{es/theme/src/components/header/components/lock → dist/es/lib/layout/src/components/lockscreen}/useBattery.d.ts +5 -0
  323. package/dist/es/lib/layout/src/components/lockscreen/useTime.d.ts +3 -0
  324. package/dist/es/lib/layout/src/components/menu/basic-menu/index.d.ts +2 -0
  325. package/dist/es/lib/layout/src/components/menu/basic-menu/type.d.ts +127 -0
  326. package/dist/es/lib/layout/src/components/menu/hooks/useMenu.d.ts +9 -0
  327. package/dist/es/lib/layout/src/components/menu/hooks/useMenuScroll.d.ts +9 -0
  328. package/dist/es/lib/layout/src/components/tabbar/hooks/useTab.d.ts +25 -0
  329. package/dist/es/lib/layout/src/components/tabbar/hooks/useTabbar.d.ts +15 -0
  330. package/dist/es/lib/layout/src/components/tabbar/hooks/useTabsDrag.d.ts +8 -0
  331. package/dist/es/lib/layout/src/components/tabbar/hooks/useTabsViewScroll.d.ts +11 -0
  332. package/dist/es/lib/layout/src/components/tabbar/tabsView/types.d.ts +68 -0
  333. package/dist/es/lib/layout/src/const/constants.d.ts +13 -0
  334. package/dist/es/lib/layout/src/const/preferences.config.d.ts +8 -0
  335. package/dist/es/lib/layout/src/hooks/useContext.d.ts +6 -0
  336. package/dist/es/lib/layout/src/hooks/useDesignTokens.d.ts +1 -0
  337. package/dist/es/lib/layout/src/hooks/useExtraMenu.d.ts +12 -0
  338. package/dist/es/lib/layout/src/hooks/useLayoutStyle.d.ts +36 -0
  339. package/dist/es/lib/layout/src/hooks/useMenu.d.ts +4 -0
  340. package/dist/es/lib/layout/src/hooks/useMixedMenu.d.ts +13 -0
  341. package/dist/es/lib/layout/src/hooks/useNavigation.d.ts +5 -0
  342. package/dist/es/lib/layout/src/hooks/useTheme.d.ts +34 -0
  343. package/dist/es/lib/layout/src/stores/preferences.store.d.ts +66 -0
  344. package/dist/es/lib/layout/src/stores/useTabbar.store.d.ts +185 -0
  345. package/dist/es/lib/layout/src/types/basic.type.d.ts +5 -0
  346. package/dist/es/lib/layout/src/types/menu.type.d.ts +102 -0
  347. package/dist/es/lib/layout/src/types/perferences.type.d.ts +287 -0
  348. package/dist/es/lib/layout/src/types/route.type.d.ts +109 -0
  349. package/dist/es/lib/layout/src/utils/color.d.ts +19 -0
  350. package/dist/es/lib/layout/src/utils/css.d.ts +14 -0
  351. package/dist/es/lib/layout/src/utils/diff.d.ts +6 -0
  352. package/dist/es/lib/layout/src/utils/dom.d.ts +6 -0
  353. package/dist/es/lib/layout/src/utils/letter.d.ts +20 -0
  354. package/dist/es/lib/layout/src/utils/menu.d.ts +20 -0
  355. package/dist/es/lib/router/goPage.d.ts +1 -0
  356. package/dist/es/lib/router/guard.d.ts +3 -0
  357. package/dist/es/lib/router/index.d.ts +8 -0
  358. package/dist/es/lib/stores/access.store.d.ts +59 -0
  359. package/dist/es/lib/stores/app.store.d.ts +11 -0
  360. package/dist/es/lib/stores/auth.store.d.ts +35 -0
  361. package/dist/es/lib/stores/user.store.d.ts +19 -0
  362. package/dist/es/lib/types/curd.type.d.ts +55 -0
  363. package/dist/es/lib/types/source.type.d.ts +177 -0
  364. package/dist/es/lib/types/user.type.d.ts +32 -0
  365. package/dist/es/lib/utils/api.d.ts +2 -0
  366. package/dist/es/lib/utils/index.d.ts +4 -0
  367. package/dist/es/lib/utils/namespace.d.ts +17 -0
  368. package/dist/es/lib/utils/progress.d.ts +11 -0
  369. package/dist/es/lib/utils/useAuth.d.ts +3 -0
  370. package/dist/es/lib/utils/withInstall.d.ts +4 -0
  371. package/dist/es/mock/userInfo.d.ts +13 -0
  372. package/dist/es/mock/userInfo.mjs +1 -0
  373. package/dist/es/pages/iframe.d.ts +4 -0
  374. package/dist/es/pages/iframe.vue.mjs +1 -0
  375. package/dist/es/pages/iframe.vue2.mjs +1 -0
  376. package/dist/es/pages/init-project.d.ts +2 -0
  377. package/dist/es/pages/init-project.vue.mjs +1 -0
  378. package/dist/es/pages/init-project.vue2.mjs +1 -0
  379. package/dist/es/pages/not-found.d.ts +2 -0
  380. package/dist/es/pages/not-found.vue.mjs +1 -0
  381. package/dist/es/pages/not-found.vue2.mjs +1 -0
  382. package/dist/es/router/goPage.d.ts +1 -0
  383. package/dist/es/router/goPage.mjs +1 -0
  384. package/dist/es/router/guard.d.ts +3 -0
  385. package/dist/es/router/guard.mjs +1 -0
  386. package/dist/es/router/index.d.ts +8 -0
  387. package/dist/es/router/index.mjs +2 -0
  388. package/dist/es/src/index.d.ts +34 -0
  389. package/dist/es/src/types/index.d.ts +6 -0
  390. package/dist/es/stores/access.store.d.ts +59 -0
  391. package/dist/es/stores/access.store.mjs +1 -0
  392. package/dist/es/stores/app.store.d.ts +11 -0
  393. package/dist/es/stores/app.store.mjs +1 -0
  394. package/dist/es/stores/auth.store.d.ts +35 -0
  395. package/dist/es/stores/auth.store.mjs +1 -0
  396. package/dist/es/stores/user.store.d.ts +19 -0
  397. package/dist/es/stores/user.store.mjs +1 -0
  398. package/dist/es/types/curd.type.d.ts +55 -0
  399. package/dist/es/types/source.type.d.ts +177 -0
  400. package/dist/es/types/user.type.d.ts +32 -0
  401. package/dist/es/utils/api.d.ts +2 -0
  402. package/dist/es/utils/index.d.ts +4 -0
  403. package/dist/es/utils/namespace.d.ts +17 -0
  404. package/dist/es/utils/namespace.mjs +1 -0
  405. package/dist/es/utils/progress.d.ts +11 -0
  406. package/dist/es/utils/progress.mjs +2 -0
  407. package/dist/es/utils/useAuth.d.ts +3 -0
  408. package/dist/es/utils/withInstall.d.ts +4 -0
  409. package/dist/es/utils/withInstall.mjs +1 -0
  410. package/dist/es/vite.config.d.ts +30 -0
  411. package/index.d.ts +83 -13
  412. package/index.ts +16 -0
  413. package/package.json +91 -65
  414. package/README.md +0 -18
  415. package/es/assets/data/icons/actions.d.ts +0 -1
  416. package/es/assets/data/icons/actions.ts +0 -423
  417. package/es/assets/data/icons/code.d.ts +0 -1
  418. package/es/assets/data/icons/code.ts +0 -10
  419. package/es/assets/data/icons/commuticate.d.ts +0 -1
  420. package/es/assets/data/icons/commuticate.ts +0 -182
  421. package/es/assets/data/icons/currency.d.ts +0 -1
  422. package/es/assets/data/icons/currency.ts +0 -44
  423. package/es/assets/data/icons/devices.d.ts +0 -1
  424. package/es/assets/data/icons/devices.ts +0 -126
  425. package/es/assets/data/icons/edit.d.ts +0 -1
  426. package/es/assets/data/icons/edit.ts +0 -163
  427. package/es/assets/data/icons/file.d.ts +0 -1
  428. package/es/assets/data/icons/file.ts +0 -99
  429. package/es/assets/data/icons/math.d.ts +0 -1
  430. package/es/assets/data/icons/math.ts +0 -53
  431. package/es/assets/data/icons/message.d.ts +0 -1
  432. package/es/assets/data/icons/message.ts +0 -68
  433. package/es/assets/data/icons/navigate.d.ts +0 -1
  434. package/es/assets/data/icons/navigate.ts +0 -181
  435. package/es/assets/data/icons/other.d.ts +0 -1
  436. package/es/assets/data/icons/other.ts +0 -324
  437. package/es/assets/data/index.d.ts +0 -4
  438. package/es/assets/data/index.ts +0 -58
  439. package/es/assets/icons/iconfont.css +0 -7266
  440. package/es/assets/icons/iconfont.eot +0 -0
  441. package/es/assets/icons/iconfont.svg +0 -5445
  442. package/es/assets/icons/iconfont.ttf +0 -0
  443. package/es/assets/icons/iconfont.woff +0 -0
  444. package/es/assets/icons/iconfont.woff2 +0 -0
  445. package/es/assets/imgs/header/avatar.png +0 -0
  446. package/es/assets/imgs/logo/logo.png +0 -0
  447. package/es/assets/imgs/table/empty.png +0 -0
  448. package/es/assets/imgs/tree/forder-open.svg +0 -1
  449. package/es/assets/imgs/tree/forder.svg +0 -1
  450. package/es/assets/locales/en.d.ts +0 -103
  451. package/es/assets/locales/en.ts +0 -103
  452. package/es/assets/locales/index.d.ts +0 -2
  453. package/es/assets/locales/index.ts +0 -5
  454. package/es/assets/locales/zh.d.ts +0 -104
  455. package/es/assets/locales/zh.ts +0 -104
  456. package/es/components/container/index.d.ts +0 -94
  457. package/es/components/container/index.js +0 -290
  458. package/es/components/container/index.less +0 -64
  459. package/es/components/container/src/components/bar.d.ts +0 -14
  460. package/es/components/container/src/components/scroll-bar.d.ts +0 -70
  461. package/es/components/container/src/hooks/scroll.d.ts +0 -10
  462. package/es/components/container/src/scroll-container.d.ts +0 -76
  463. package/es/components/container/src/slot-container.d.ts +0 -20
  464. package/es/components/container/src/types/scroll.type.d.ts +0 -22
  465. package/es/components/container/src/utils/scroll.d.ts +0 -5
  466. package/es/components/curd/index.d.ts +0 -2
  467. package/es/components/curd/index.js +0 -216
  468. package/es/components/curd/src/components/Curd.d.ts +0 -384
  469. package/es/components/curd/src/hooks/useCurd.d.ts +0 -110
  470. package/es/components/curd/src/props.d.ts +0 -188
  471. package/es/components/curd/src/types/curd.type.d.ts +0 -13
  472. package/es/components/drawer/index.d.ts +0 -7881
  473. package/es/components/drawer/index.js +0 -397
  474. package/es/components/drawer/index.less +0 -16
  475. package/es/components/drawer/src/components/DrawerFooter.d.ts +0 -56
  476. package/es/components/drawer/src/components/DrawerHeader.d.ts +0 -11
  477. package/es/components/drawer/src/hooks/useDrawer.d.ts +0 -3
  478. package/es/components/drawer/src/index.d.ts +0 -7881
  479. package/es/components/drawer/src/props.d.ts +0 -64
  480. package/es/components/drawer/src/types/index.type.d.ts +0 -50
  481. package/es/components/form/index.d.ts +0 -7
  482. package/es/components/form/index.js +0 -1600
  483. package/es/components/form/index.less +0 -361
  484. package/es/components/form/src/components/FormButtons.d.ts +0 -3157
  485. package/es/components/form/src/components/FormItem.d.ts +0 -158
  486. package/es/components/form/src/components/componentMap.d.ts +0 -4
  487. package/es/components/form/src/components/formIcon.d.ts +0 -14
  488. package/es/components/form/src/components/formInputUseDialog.d.ts +0 -17
  489. package/es/components/form/src/components/index.d.ts +0 -4
  490. package/es/components/form/src/components/radioButton.d.ts +0 -34
  491. package/es/components/form/src/enums/index.d.ts +0 -7
  492. package/es/components/form/src/hooks/useForm.d.ts +0 -6
  493. package/es/components/form/src/hooks/useFormActions.d.ts +0 -12
  494. package/es/components/form/src/hooks/useFormEvent.d.ts +0 -25
  495. package/es/components/form/src/hooks/useFormValue.d.ts +0 -3
  496. package/es/components/form/src/hooks/useFormValues.d.ts +0 -11
  497. package/es/components/form/src/hooks/useLabelWidth.d.ts +0 -6
  498. package/es/components/form/src/props.d.ts +0 -127
  499. package/es/components/form/src/types/actions.type.d.ts +0 -15
  500. package/es/components/form/src/types/form.type.d.ts +0 -80
  501. package/es/components/form/src/types/items.type.d.ts +0 -417
  502. package/es/components/icons/index.d.ts +0 -497
  503. package/es/components/icons/index.js +0 -1969
  504. package/es/components/icons/index.less +0 -47
  505. package/es/components/icons/src/pick-icon.d.ts +0 -455
  506. package/es/components/icons/src/svg-icon.d.ts +0 -44
  507. package/es/components/iframe/index.d.ts +0 -2
  508. package/es/components/iframe/index.js +0 -72
  509. package/es/components/iframe/index.less +0 -29
  510. package/es/components/iframe/src/index.d.ts +0 -38
  511. package/es/components/modal/index.d.ts +0 -4
  512. package/es/components/modal/index.js +0 -646
  513. package/es/components/modal/index.less +0 -82
  514. package/es/components/modal/src/components/CloseIcon.d.ts +0 -40
  515. package/es/components/modal/src/components/Modal.d.ts +0 -108
  516. package/es/components/modal/src/components/ModalFooter.d.ts +0 -62
  517. package/es/components/modal/src/components/ModalWrap.d.ts +0 -79
  518. package/es/components/modal/src/hooks/useDrag.d.ts +0 -7
  519. package/es/components/modal/src/hooks/useFullScreen.d.ts +0 -6
  520. package/es/components/modal/src/hooks/useModal.d.ts +0 -5
  521. package/es/components/modal/src/index.d.ts +0 -543
  522. package/es/components/modal/src/props.d.ts +0 -101
  523. package/es/components/modal/src/types/modal.type.d.ts +0 -17
  524. package/es/components/source/hooks/useDownload.d.ts +0 -8
  525. package/es/components/source/hooks/useSource.d.ts +0 -57
  526. package/es/components/source/index.d.ts +0 -2
  527. package/es/components/source/index.js +0 -419
  528. package/es/components/source/types/source.type.d.ts +0 -35
  529. package/es/components/source/utils/index.d.ts +0 -8
  530. package/es/components/table/index.d.ts +0 -3
  531. package/es/components/table/index.js +0 -2445
  532. package/es/components/table/index.less +0 -280
  533. package/es/components/table/src/components/TableAction.d.ts +0 -83
  534. package/es/components/table/src/components/TableRender.d.ts +0 -17
  535. package/es/components/table/src/components/editTable/CellComponent.d.ts +0 -22
  536. package/es/components/table/src/components/editTable/EditTableCell.d.ts +0 -94
  537. package/es/components/table/src/components/editTable/componentMap.d.ts +0 -4
  538. package/es/components/table/src/components/editTable/index.d.ts +0 -9
  539. package/es/components/table/src/components/editTable/props.d.ts +0 -27
  540. package/es/components/table/src/components/tableSetting/Column.d.ts +0 -69
  541. package/es/components/table/src/components/tableSetting/DownloadCtrl.d.ts +0 -22
  542. package/es/components/table/src/components/tableSetting/Fullscreen.d.ts +0 -22
  543. package/es/components/table/src/enums/table.enum.d.ts +0 -5
  544. package/es/components/table/src/hooks/useColumns.d.ts +0 -14
  545. package/es/components/table/src/hooks/useCustomRow.d.ts +0 -20
  546. package/es/components/table/src/hooks/useDataSource.d.ts +0 -15
  547. package/es/components/table/src/hooks/useHeader.d.ts +0 -8
  548. package/es/components/table/src/hooks/useHeaderCode.d.ts +0 -3
  549. package/es/components/table/src/hooks/useLoading.d.ts +0 -6
  550. package/es/components/table/src/hooks/usePagination.d.ts +0 -7
  551. package/es/components/table/src/hooks/useRow.d.ts +0 -5
  552. package/es/components/table/src/hooks/useRowSelection.d.ts +0 -12
  553. package/es/components/table/src/hooks/useTable.d.ts +0 -9
  554. package/es/components/table/src/hooks/useTableInstance.d.ts +0 -16
  555. package/es/components/table/src/hooks/useTableScroll.d.ts +0 -13
  556. package/es/components/table/src/index.d.ts +0 -625
  557. package/es/components/table/src/props.d.ts +0 -180
  558. package/es/components/table/src/types/actions.type.d.ts +0 -21
  559. package/es/components/table/src/types/header.type.d.ts +0 -23
  560. package/es/components/table/src/types/table.type.d.ts +0 -104
  561. package/es/components/tree/index.d.ts +0 -2
  562. package/es/components/tree/index.js +0 -1203
  563. package/es/components/tree/index.less +0 -200
  564. package/es/components/tree/src/basicProps.d.ts +0 -190
  565. package/es/components/tree/src/components/ContextMenu.d.ts +0 -70
  566. package/es/components/tree/src/components/TreeHeader.d.ts +0 -98
  567. package/es/components/tree/src/hooks/useContextMenu.d.ts +0 -2
  568. package/es/components/tree/src/hooks/useTree.d.ts +0 -15
  569. package/es/components/tree/src/index.d.ts +0 -6617
  570. package/es/components/tree/src/type/menu.d.ts +0 -36
  571. package/es/components/tree/src/type/tree.d.ts +0 -50
  572. package/es/components/tree/src/utils/tree.d.ts +0 -7
  573. package/es/components/upload/index.d.ts +0 -4
  574. package/es/components/upload/index.js +0 -655
  575. package/es/components/upload/index.less +0 -83
  576. package/es/components/upload/src/basicProps.d.ts +0 -91
  577. package/es/components/upload/src/components/PdfView.d.ts +0 -9
  578. package/es/components/upload/src/components/WordView.d.ts +0 -7
  579. package/es/components/upload/src/hooks/useFile.d.ts +0 -17
  580. package/es/components/upload/src/index.d.ts +0 -258
  581. package/es/components/upload/src/type/file.d.ts +0 -17
  582. package/es/components/upload/src/utils/fileSize.d.ts +0 -1
  583. package/es/components/upload/src/utils/upload.d.ts +0 -2
  584. package/es/directives/icon.d.ts +0 -2
  585. package/es/directives/index.d.ts +0 -7
  586. package/es/directives/index.js +0 -2015
  587. package/es/directives/permission.d.ts +0 -2
  588. package/es/global.d.ts +0 -7
  589. package/es/index.d.ts +0 -1
  590. package/es/index.js +0 -4
  591. package/es/theme/index.d.ts +0 -12
  592. package/es/theme/index.js +0 -4024
  593. package/es/theme/index.less +0 -1003
  594. package/es/theme/src/components/content/index.d.ts +0 -31
  595. package/es/theme/src/components/feature/back-top.d.ts +0 -5
  596. package/es/theme/src/components/feature/index.d.ts +0 -7
  597. package/es/theme/src/components/footer/index.d.ts +0 -31
  598. package/es/theme/src/components/header/components/bread-crumb.d.ts +0 -6
  599. package/es/theme/src/components/header/components/fullscreen.d.ts +0 -5
  600. package/es/theme/src/components/header/components/index.d.ts +0 -11
  601. package/es/theme/src/components/header/components/lang-picker.d.ts +0 -23
  602. package/es/theme/src/components/header/components/lock/Lockscreen.d.ts +0 -85
  603. package/es/theme/src/components/header/components/lock/index.d.ts +0 -2
  604. package/es/theme/src/components/header/components/lock/useTime.d.ts +0 -7
  605. package/es/theme/src/components/header/components/logo.d.ts +0 -55
  606. package/es/theme/src/components/header/components/menu-filter.d.ts +0 -22
  607. package/es/theme/src/components/header/components/notify.d.ts +0 -22
  608. package/es/theme/src/components/header/components/setting-theme.d.ts +0 -223
  609. package/es/theme/src/components/header/components/size.d.ts +0 -21
  610. package/es/theme/src/components/header/components/theme-drawer/feature.d.ts +0 -138
  611. package/es/theme/src/components/header/components/theme-drawer/index.d.ts +0 -3
  612. package/es/theme/src/components/header/components/theme-drawer/menu-type.d.ts +0 -16
  613. package/es/theme/src/components/header/components/theme-drawer/select.d.ts +0 -58
  614. package/es/theme/src/components/header/components/theme-drawer/switch.d.ts +0 -49
  615. package/es/theme/src/components/header/components/trigger.d.ts +0 -10
  616. package/es/theme/src/components/header/components/user-info.d.ts +0 -44
  617. package/es/theme/src/components/header/helper/change-theme.d.ts +0 -13
  618. package/es/theme/src/components/header/helper/menu-tree.d.ts +0 -4
  619. package/es/theme/src/components/header/index.d.ts +0 -551
  620. package/es/theme/src/components/header/multiple-header.d.ts +0 -660
  621. package/es/theme/src/components/sider/components/basic-menu/basic-menu-item.d.ts +0 -62
  622. package/es/theme/src/components/sider/components/basic-menu/basic-menu.d.ts +0 -207
  623. package/es/theme/src/components/sider/components/basic-menu/basic-sub-menu-item.d.ts +0 -127
  624. package/es/theme/src/components/sider/components/basic-menu/menu-item-content.d.ts +0 -26
  625. package/es/theme/src/components/sider/components/drag-bar.d.ts +0 -14
  626. package/es/theme/src/components/sider/components/layout-menu.d.ts +0 -22
  627. package/es/theme/src/components/sider/components/props.d.ts +0 -69
  628. package/es/theme/src/components/sider/components/sider-trigger.d.ts +0 -17
  629. package/es/theme/src/components/sider/helper/sider.d.ts +0 -12
  630. package/es/theme/src/components/sider/helper/split-menu.d.ts +0 -10
  631. package/es/theme/src/components/sider/index.d.ts +0 -235
  632. package/es/theme/src/components/sider/mix-sider.d.ts +0 -167
  633. package/es/theme/src/components/tabs/components/TabContent.d.ts +0 -36
  634. package/es/theme/src/components/tabs/components/TabRedo.d.ts +0 -23
  635. package/es/theme/src/components/tabs/components/index.d.ts +0 -3
  636. package/es/theme/src/components/tabs/hooks/useMultifyTabs.d.ts +0 -7
  637. package/es/theme/src/components/tabs/hooks/useTabDropdown.d.ts +0 -8
  638. package/es/theme/src/components/tabs/hooks/useTabs.d.ts +0 -10
  639. package/es/theme/src/components/tabs/index.d.ts +0 -86
  640. package/es/theme/src/components/tabs/types/tabs.type.d.ts +0 -7
  641. package/es/theme/src/enums/index.d.ts +0 -1
  642. package/es/theme/src/enums/theme.enum.d.ts +0 -34
  643. package/es/theme/src/hooks/index.d.ts +0 -6
  644. package/es/theme/src/hooks/useDragLine.d.ts +0 -2
  645. package/es/theme/src/hooks/useHeader.d.ts +0 -26
  646. package/es/theme/src/hooks/useMenu.d.ts +0 -29
  647. package/es/theme/src/hooks/useMultifyTab.d.ts +0 -8
  648. package/es/theme/src/hooks/useOpenKeys.d.ts +0 -7
  649. package/es/theme/src/hooks/useTheme.d.ts +0 -9
  650. package/es/theme/src/index.d.ts +0 -1630
  651. package/es/theme/src/setting/theme.setting.d.ts +0 -2
  652. package/es/theme/src/stores/index.d.ts +0 -3
  653. package/es/theme/src/stores/lockscreen.store.d.ts +0 -7
  654. package/es/theme/src/stores/routeReuse.store.d.ts +0 -25
  655. package/es/theme/src/stores/theme.store.d.ts +0 -19
  656. package/es/theme/src/types/index.d.ts +0 -3
  657. package/es/theme/src/types/menu.type.d.ts +0 -15
  658. package/es/theme/src/types/theme.type.d.ts +0 -62
  659. package/es/theme/transition.less +0 -105
  660. package/es/utils/withInstall.d.ts +0 -4
  661. package/index.js +0 -62
  662. package/manualContentPath.js +0 -138
  663. package/tailwind.config.cjs +0 -11
  664. package/tsconfig.json +0 -42
  665. package/tsconfig.node.json +0 -9
  666. package/vite.config.ts +0 -68
  667. /package/{es → dist/es}/components/tree/src/enums/index.d.ts +0 -0
@@ -1,2445 +0,0 @@
1
- import { useAppStore, useSlots, error, http, useApp, getDynamicProps, DtCache, CacheKey, isBoolean, isFunction, getPopupContainer, useI18n, isNumber, isArray, isObject, isString, useMessage, isNullAndUnDef, windowResizeFn, off, on, getDictValueByCode, formatNumber, isVnode } from "@dt-frames/core";
2
- import { useSlots as useSlots$1, unref, ref, watch, onUnmounted, defineComponent, computed, useAttrs, resolveDirective, openBlock, createElementBlock, normalizeClass, Fragment, renderList, withDirectives, createTextVNode, toDisplayString, createCommentVNode, createBlock, withCtx, createVNode, createElementVNode, normalizeStyle, provide, inject, h, mergeProps, toRaw as toRaw$1, nextTick, reactive, watchEffect, normalizeProps, renderSlot, onMounted, createSlots, guardReactiveProps } from "vue";
3
- import { useHeader } from "../../theme";
4
- import { MenuItem, Menu, Dropdown, Tooltip, Checkbox as Checkbox$1, Divider, Col, Row, Button, CheckboxGroup, Popover as Popover$1, Table } from "ant-design-vue/es";
5
- import "ant-design-vue/es/table/style";
6
- import { takeRight, omit, cloneDeep, isEqual } from "lodash-es";
7
- import "ant-design-vue/es/tooltip/style";
8
- import "ant-design-vue/es/dropdown/style";
9
- import "ant-design-vue/es/menu/style";
10
- import { Input, InputNumber, Select, TreeSelect, Switch, Checkbox, DatePicker, TimePicker, Popover, Tag } from "ant-design-vue";
11
- import { DtFormButtons } from "../form";
12
- import { useFullscreen, useDebounceFn, useThrottleFn, tryOnMounted } from "@vueuse/core";
13
- import { useModal, DtModal, useModalOut } from "../modal";
14
- import "ant-design-vue/es/row/style";
15
- import "ant-design-vue/es/col/style";
16
- import "ant-design-vue/es/divider/style";
17
- import "ant-design-vue/es/checkbox/style";
18
- import "ant-design-vue/es/popover/style";
19
- import "ant-design-vue/es/button/style";
20
- import Sortablejs from "sortablejs";
21
- import dayjs from "dayjs";
22
- const codeMap = /* @__PURE__ */ new Map();
23
- function useHeaderCode(code, changeColumns) {
24
- const { appConf } = useAppStore();
25
- const { getIsZH } = useHeader();
26
- useSlots();
27
- useSlots$1();
28
- if (!appConf.pages.queryColumnApi) {
29
- error("\u8BF7\u5728init.config.ts\u4E2D\u914D\u7F6EqueryColumnApi\uFF01");
30
- return;
31
- }
32
- const getAlign = (key) => key === 0 ? "center" : key === 2 ? "right" : "left";
33
- const renderCell = (type, slot, ctx) => {
34
- switch (type) {
35
- case 0:
36
- return { date: ctx };
37
- case 1:
38
- return { dict: ctx };
39
- case 5:
40
- return { percent: ctx };
41
- case 7:
42
- if (!appConf.structure[ctx]) {
43
- error(`\u672A\u627E\u5230structure: ${ctx} !`);
44
- return {};
45
- }
46
- return { dict: { ...appConf.structure[ctx], struCode: ctx } };
47
- case 11:
48
- return { number: ctx };
49
- }
50
- };
51
- function getColumns() {
52
- if (codeMap.get(code)) {
53
- changeColumns(codeMap.get(code));
54
- return;
55
- }
56
- http.post(
57
- appConf.pages.queryColumnApi,
58
- { tableCode: code }
59
- ).then((rsp) => {
60
- handleData(rsp);
61
- });
62
- }
63
- function handleData(data) {
64
- let rows = [];
65
- data.forEach((it) => {
66
- let obj = {
67
- title: unref(getIsZH) ? it.cloumnName : it.cloumnEngName,
68
- dataIndex: it.cloumnCode,
69
- sorter: Boolean(it.ifOrder),
70
- align: getAlign(it.textAlign),
71
- show: Boolean(it.ifDisplay),
72
- defaultHidden: !Boolean(it.ifDisplay)
73
- };
74
- if (it.cloumnType !== void 0)
75
- obj.render = renderCell(it.cloumnType, it.slot, it.dictCode);
76
- if (it.width)
77
- obj.width = Number(it.width);
78
- rows.push(obj);
79
- });
80
- codeMap.set(code, rows);
81
- changeColumns(rows);
82
- }
83
- getColumns();
84
- }
85
- function useTable(props2) {
86
- const tableRef = ref(null);
87
- const loadedRef = ref(false);
88
- let stopWatch;
89
- function registerTable(instance) {
90
- const { isProd } = useApp();
91
- if (unref(loadedRef) && unref(isProd) && instance === unref(tableRef))
92
- return;
93
- if (props2?.columnCode) {
94
- useHeaderCode(
95
- props2.columnCode,
96
- (columns) => {
97
- props2.columns = columns;
98
- instance.setProps(getDynamicProps(props2));
99
- }
100
- );
101
- }
102
- tableRef.value = instance;
103
- loadedRef.value = true;
104
- stopWatch?.();
105
- stopWatch = watch(
106
- () => props2,
107
- () => {
108
- props2 && instance.setProps(getDynamicProps(props2));
109
- },
110
- {
111
- immediate: true,
112
- deep: true
113
- }
114
- );
115
- onUnmounted(() => {
116
- tableRef.value = null;
117
- loadedRef.value = null;
118
- });
119
- }
120
- function getTableInstance2() {
121
- const table = unref(tableRef);
122
- if (!table) {
123
- error("\u6CA1\u6709table\u8868\u5355\u5B9E\u4F8B");
124
- }
125
- return table;
126
- }
127
- const methods = {
128
- setProps: (props22) => getTableInstance2().setProps(props22),
129
- setLoading: (loading) => getTableInstance2().setLoading(loading),
130
- clearSelectedRowKeys: () => getTableInstance2().clearSelectedRowKeys(),
131
- getSelectRows: () => getTableInstance2().getSelectRows(),
132
- getSelectedRowKeys: () => getTableInstance2().getSelectedRowKeys(),
133
- setSelectedRowKeys: (keys) => getTableInstance2().setSelectedRowKeys(keys),
134
- getRowSelection: () => toRaw(getTableInstance2().getRowSelection()),
135
- getColumns: (opt) => toRaw(getTableInstance2().getColumns(opt)),
136
- setColumns: (columns) => getTableInstance2().setColumns(columns),
137
- setColumnsByDataIndex: (dataIndex, value) => {
138
- return getTableInstance2().setColumnsByDataIndex(dataIndex, value);
139
- },
140
- getCacheColumns: () => toRaw(getTableInstance2().getCacheColumns()),
141
- findTableDataRecord: (rowKey) => getTableInstance2().findTableDataRecord(rowKey),
142
- updateTableDataRecord: (rowKey, record) => getTableInstance2().updateTableDataRecord(rowKey, record),
143
- getPagination: () => getTableInstance2().getPagination()
144
- };
145
- return [registerTable, methods];
146
- }
147
- const _imports_0 = "data:image/png;base64,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";
148
- const _hoisted_1$8 = ["onClick"];
149
- const _hoisted_2$3 = {
150
- key: 0,
151
- class: "dt-table-action-btn w-8 inline-block"
152
- };
153
- const _hoisted_3$2 = { key: 0 };
154
- const _hoisted_4$2 = { class: "text-13 opacity-80" };
155
- const _hoisted_5$1 = { class: "dt-table-action-btn w-8 inline-block" };
156
- const _hoisted_6 = ["onClick"];
157
- const _hoisted_7 = /* @__PURE__ */ createElementVNode("i", { class: "i ic:baseline-settings dt-table-action-dropdown cursor-pointer" }, null, -1);
158
- const _hoisted_8 = { class: "text-13 opacity-80" };
159
- const _sfc_main$9 = /* @__PURE__ */ defineComponent({
160
- __name: "TableAction",
161
- props: {
162
- fixed: {
163
- type: String,
164
- default: "right"
165
- },
166
- expand: {
167
- type: Boolean,
168
- default: false
169
- },
170
- expandNum: {
171
- type: Number
172
- },
173
- width: {
174
- type: String,
175
- default: "70px"
176
- },
177
- btns: {
178
- type: Array,
179
- default: () => []
180
- },
181
- flag: {
182
- type: String
183
- },
184
- record: {
185
- type: Object,
186
- default: {}
187
- },
188
- index: {
189
- type: Number
190
- },
191
- authPrefix: {
192
- type: String
193
- }
194
- },
195
- setup(__props) {
196
- const props2 = __props;
197
- const { getIsZH } = useHeader();
198
- const actionBtns = ref([]);
199
- const getAuth = (auth) => {
200
- const { authPrefix } = props2;
201
- if (auth && auth.includes(":")) {
202
- return auth;
203
- } else if (authPrefix && auth) {
204
- return `${authPrefix}:${auth}`;
205
- }
206
- return auth ?? null;
207
- };
208
- const { appConf } = useAppStore();
209
- const getExpandNum = computed(() => {
210
- return props2.expandNum || appConf?.ui?.table?.expandNum;
211
- });
212
- const showMore = computed(() => {
213
- if (!unref(getExpandNum)) {
214
- return false;
215
- }
216
- let allAuths = DtCache.getLocal(CacheKey.AUTHS);
217
- let remainBtnNum = unref(actionBtns).length - unref(getExpandNum);
218
- let remainBtn = takeRight(unref(actionBtns), remainBtnNum);
219
- return remainBtn.filter((it) => {
220
- if (it.ifShow) {
221
- return it.auth ? allAuths.includes(getAuth(it.auth)) : true;
222
- }
223
- return false;
224
- }).length;
225
- });
226
- function handleAction(it) {
227
- if (isFunction(it.onClick)) {
228
- it.onClick(props2.record, props2.index);
229
- }
230
- }
231
- const attrs = useAttrs();
232
- function getPopupContainer$1() {
233
- return isFunction(attrs.getPopupContainer) ? attrs.getPopupContainer() : getPopupContainer();
234
- }
235
- const getLabel = (it, record) => {
236
- const label = isFunction(it.label) ? it.label(record) : it.label;
237
- const enLabel = isFunction(it.enLabel) ? it.enLabel(record) : it.enLabel;
238
- if (!unref(getIsZH)) {
239
- return enLabel || label;
240
- }
241
- return label;
242
- };
243
- watch(
244
- () => [
245
- unref(props2.btns),
246
- unref(props2.record)
247
- ],
248
- ([btns]) => {
249
- actionBtns.value = btns.map((it) => {
250
- return {
251
- ...it,
252
- ifShow: isBoolean(it.show) ? it.show : isFunction(it.show) ? it.show(props2.record) : true,
253
- icon: () => isFunction(it.icon) ? it.icon(props2.record) : it.icon,
254
- label: () => getLabel(it, props2.record)
255
- };
256
- });
257
- },
258
- {
259
- immediate: true,
260
- deep: true
261
- }
262
- );
263
- return (_ctx, _cache) => {
264
- const _component_AMenuItem = MenuItem;
265
- const _component_AMenu = Menu;
266
- const _component_ADropdown = Dropdown;
267
- const _component_ATooltip = Tooltip;
268
- const _directive_auth = resolveDirective("auth");
269
- return props2.expand ? (openBlock(), createElementBlock("div", {
270
- key: 0,
271
- class: normalizeClass(unref(getExpandNum) ? "dt-expand-has-collapse" : "")
272
- }, [
273
- (openBlock(true), createElementBlock(Fragment, null, renderList(actionBtns.value, (item, index) => {
274
- return openBlock(), createElementBlock(Fragment, null, [
275
- item.ifShow ? (openBlock(), createElementBlock(Fragment, { key: 0 }, [
276
- unref(getExpandNum) ? (openBlock(), createElementBlock(Fragment, { key: 0 }, [
277
- index < unref(getExpandNum) ? withDirectives((openBlock(), createElementBlock("span", {
278
- key: 0,
279
- class: "dt-table-action-btn w-8 inline-block",
280
- onClick: ($event) => handleAction(item)
281
- }, [
282
- createTextVNode(toDisplayString(item.label()), 1)
283
- ], 8, _hoisted_1$8)), [
284
- [_directive_auth, getAuth(item.auth)]
285
- ]) : createCommentVNode("", true),
286
- index >= unref(getExpandNum) && index === actionBtns.value.length - 1 ? (openBlock(), createBlock(_component_ADropdown, {
287
- key: 1,
288
- "get-popup-container": getPopupContainer$1,
289
- trigger: ["click"],
290
- destroyPopupOnHide: true
291
- }, {
292
- overlay: withCtx(() => [
293
- createVNode(_component_AMenu, { class: "dt-action-select flex flex-col" }, {
294
- default: withCtx(() => [
295
- (openBlock(true), createElementBlock(Fragment, null, renderList(actionBtns.value, (item1, index1) => {
296
- return openBlock(), createElementBlock(Fragment, null, [
297
- index1 >= unref(getExpandNum) && item1.ifShow ? withDirectives((openBlock(), createElementBlock("span", _hoisted_3$2, [
298
- createVNode(_component_AMenuItem, {
299
- onClick: ($event) => handleAction(item1)
300
- }, {
301
- default: withCtx(() => [
302
- createElementVNode("span", _hoisted_4$2, toDisplayString(item1.label()), 1)
303
- ]),
304
- _: 2
305
- }, 1032, ["onClick"])
306
- ])), [
307
- [_directive_auth, getAuth(item1.auth)]
308
- ]) : createCommentVNode("", true)
309
- ], 64);
310
- }), 256))
311
- ]),
312
- _: 1
313
- })
314
- ]),
315
- default: withCtx(() => [
316
- unref(showMore) ? (openBlock(), createElementBlock("span", _hoisted_2$3, " \u66F4\u591A ")) : createCommentVNode("", true)
317
- ]),
318
- _: 1
319
- })) : createCommentVNode("", true)
320
- ], 64)) : (openBlock(), createBlock(_component_ATooltip, {
321
- key: 1,
322
- placement: "bottom"
323
- }, {
324
- title: withCtx(() => [
325
- createTextVNode(toDisplayString(item.label()), 1)
326
- ]),
327
- default: withCtx(() => [
328
- createElementVNode("span", _hoisted_5$1, [
329
- createElementVNode("i", {
330
- class: normalizeClass(["i cursor-pointer", item.icon()]),
331
- style: normalizeStyle({
332
- color: item.color
333
- }),
334
- onClick: ($event) => handleAction(item)
335
- }, null, 14, _hoisted_6)
336
- ])
337
- ]),
338
- _: 2
339
- }, 1024))
340
- ], 64)) : createCommentVNode("", true)
341
- ], 64);
342
- }), 256))
343
- ], 2)) : (openBlock(), createBlock(_component_ADropdown, {
344
- key: 1,
345
- "get-popup-container": getPopupContainer$1,
346
- trigger: ["click"]
347
- }, {
348
- overlay: withCtx(() => [
349
- createVNode(_component_AMenu, { class: "dt-action-select flex flex-col" }, {
350
- default: withCtx(() => [
351
- (openBlock(true), createElementBlock(Fragment, null, renderList(actionBtns.value, (item) => {
352
- return withDirectives((openBlock(), createElementBlock("span", null, [
353
- item.ifShow ? (openBlock(), createBlock(_component_AMenuItem, {
354
- key: 0,
355
- onClick: ($event) => handleAction(item)
356
- }, {
357
- default: withCtx(() => [
358
- createElementVNode("i", {
359
- class: normalizeClass(["i text-base opacity-80 pr-2", item.icon()]),
360
- style: normalizeStyle({
361
- color: item.color
362
- })
363
- }, null, 6),
364
- createElementVNode("span", _hoisted_8, toDisplayString(item.label()), 1)
365
- ]),
366
- _: 2
367
- }, 1032, ["onClick"])) : createCommentVNode("", true)
368
- ])), [
369
- [_directive_auth, getAuth(item.auth)]
370
- ]);
371
- }), 256))
372
- ]),
373
- _: 1
374
- })
375
- ]),
376
- default: withCtx(() => [
377
- _hoisted_7
378
- ]),
379
- _: 1
380
- }));
381
- };
382
- }
383
- });
384
- const tableKey = Symbol("dt-page");
385
- function createTableInstance(instance) {
386
- provide(tableKey, instance);
387
- }
388
- function getTableInstance() {
389
- return inject(tableKey);
390
- }
391
- const componentMap = /* @__PURE__ */ new Map();
392
- componentMap.set("Input", Input);
393
- componentMap.set("InputNumber", InputNumber);
394
- componentMap.set("Select", Select);
395
- componentMap.set("TreeSelect", TreeSelect);
396
- componentMap.set("Switch", Switch);
397
- componentMap.set("Checkbox", Checkbox);
398
- componentMap.set("DatePicker", DatePicker);
399
- componentMap.set("TimePicker", TimePicker);
400
- const CellComponent = ({
401
- component = "Input",
402
- rule = true,
403
- ruleMessage,
404
- popoverVisible,
405
- getPopupContainer: getPopupContainer2
406
- }, { attrs }) => {
407
- const Comp = componentMap.get(component);
408
- const DefaultComp = h(Comp, attrs);
409
- if (!rule)
410
- return DefaultComp;
411
- return h(
412
- Popover,
413
- {
414
- overlayClassName: "edit-cell-rule-popover",
415
- visible: !!popoverVisible,
416
- ...getPopupContainer2 ? { getPopupContainer: getPopupContainer2 } : {}
417
- },
418
- {
419
- default: () => DefaultComp,
420
- content: () => ruleMessage
421
- }
422
- );
423
- };
424
- const basicProps = {
425
- value: {
426
- type: [String, Number, Boolean, Object],
427
- default: ""
428
- },
429
- record: {
430
- type: Object
431
- },
432
- column: {
433
- type: Object,
434
- default: () => ({})
435
- },
436
- index: Number
437
- };
438
- const _hoisted_1$7 = { class: "editable-cell" };
439
- const _sfc_main$8 = /* @__PURE__ */ defineComponent({
440
- __name: "EditTableCell",
441
- props: basicProps,
442
- setup(__props) {
443
- const props2 = __props;
444
- const { getUiSize } = useHeader();
445
- const { t } = useI18n("UI");
446
- const { editRule, align = "left" } = props2.column;
447
- const table = getTableInstance();
448
- const ruleMessage = ref("");
449
- const ruleVisible = ref(false);
450
- const optionsRef = ref([]);
451
- const currentValueRef = ref(props2.value);
452
- const getComponent = computed(() => props2.column?.editComponent || "Input");
453
- const getRuleVisible = computed(() => {
454
- return unref(ruleMessage) && unref(ruleVisible);
455
- });
456
- const getWrapperClass = computed(() => {
457
- return `edit-cell-align-${align}`;
458
- });
459
- const getIsCheckComp = computed(() => {
460
- const component = unref(getComponent);
461
- return ["Checkbox", "Switch"].includes(component);
462
- });
463
- const createPlaceholderMessage = (component) => {
464
- if (component.includes("Input")) {
465
- return t("PLEASE_INPUT");
466
- }
467
- return t("PLEASE_SELECT");
468
- };
469
- const setTableValue = () => {
470
- props2.record[props2.column.dataIndex] = unref(currentValueRef);
471
- };
472
- const getComponentProps = computed(() => {
473
- const isCheckValue = unref(getIsCheckComp);
474
- const valueField = isCheckValue ? "checked" : "value";
475
- const val = unref(currentValueRef);
476
- let compProps = props2.column?.editComponentProps ?? {};
477
- const { record, column, index } = props2;
478
- if (isFunction(compProps)) {
479
- compProps = compProps({ text: val, record, column, index }) ?? {};
480
- }
481
- if (unref(getComponent) === "InputNumber") {
482
- compProps = {
483
- formatter: (value) => `${value}`.replace(/[1-9]\d{0,2}(?=(\d{3})+$)/g, "$&,"),
484
- parser: (value) => value.replace(/\$\s?|(,*)/g, ""),
485
- ...compProps
486
- };
487
- }
488
- return {
489
- size: "small",
490
- dropdownClassName: unref(getUiSize),
491
- getPopupContainer: () => document.body,
492
- placeholder: createPlaceholderMessage(unref(getComponent)),
493
- ...compProps,
494
- [valueField]: val
495
- };
496
- });
497
- async function handleChange(e) {
498
- const component = unref(getComponent);
499
- if (component === "Checkbox") {
500
- currentValueRef.value = e.target.checked;
501
- } else if (e?.target && Reflect.has(e.target, "value")) {
502
- currentValueRef.value = e.target.value;
503
- } else {
504
- currentValueRef.value = e;
505
- }
506
- const onChange = unref(getComponentProps)?.onChange;
507
- if (onChange && isFunction(onChange))
508
- onChange(...arguments, props2);
509
- setTableValue();
510
- table.emits?.("edit-change", {
511
- column: props2.column,
512
- value: unref(currentValueRef),
513
- record: toRaw$1(props2.record),
514
- index: props2.index
515
- });
516
- handleSubmitRule();
517
- }
518
- async function handleSubmitRule() {
519
- const { column, record } = props2;
520
- const { editRule: editRule2 } = column;
521
- const currentValue = unref(currentValueRef);
522
- if (editRule2) {
523
- if (isBoolean(editRule2) && !currentValue && !isNumber(currentValue)) {
524
- ruleVisible.value = true;
525
- const component = unref(getComponent);
526
- ruleMessage.value = createPlaceholderMessage(component);
527
- return false;
528
- }
529
- if (isFunction(editRule2)) {
530
- const res = await editRule2(currentValue, record);
531
- if (!!res) {
532
- ruleMessage.value = res;
533
- ruleVisible.value = true;
534
- return false;
535
- }
536
- }
537
- }
538
- ruleMessage.value = "";
539
- return true;
540
- }
541
- function handleOptionsChange(options) {
542
- optionsRef.value = options;
543
- }
544
- return (_ctx, _cache) => {
545
- return openBlock(), createElementBlock("div", _hoisted_1$7, [
546
- createVNode(unref(CellComponent), mergeProps({ ref: "elRef" }, unref(omit)(unref(getComponentProps), "onChange"), {
547
- component: _ctx.column?.editComponent,
548
- popoverVisible: unref(getRuleVisible),
549
- rule: unref(editRule),
550
- ruleMessage: ruleMessage.value,
551
- class: unref(getWrapperClass),
552
- onChange: handleChange,
553
- onOptionsChange: handleOptionsChange
554
- }), null, 16, ["component", "popoverVisible", "rule", "ruleMessage", "class"])
555
- ]);
556
- };
557
- }
558
- });
559
- function renderEditCell(column) {
560
- return ({ text: value, record, index }) => {
561
- record.onValid = async () => {
562
- if (isArray(record?.validCbs)) {
563
- const validFns = (record?.validCbs || []).map((fn) => fn());
564
- const res = await Promise.all(validFns);
565
- return res.every((item) => !!item);
566
- }
567
- return false;
568
- };
569
- record.onEdit = async (edit, submit = false) => {
570
- if (!submit) {
571
- record.editable = edit;
572
- }
573
- if (!edit && submit) {
574
- if (!await record.onValid())
575
- return false;
576
- const res = await record.onSubmitEdit?.();
577
- if (res) {
578
- record.editable = false;
579
- return true;
580
- }
581
- return false;
582
- }
583
- if (!edit && !submit) {
584
- record.onCancelEdit?.();
585
- }
586
- return true;
587
- };
588
- return h(_sfc_main$8, {
589
- value,
590
- record,
591
- column,
592
- index
593
- });
594
- };
595
- }
596
- const INDEX_FLAG = "INDEX";
597
- const ACTION_COLUMN = "ACTION";
598
- function handleItem(item, ellipsis) {
599
- const { appConf } = useAppStore();
600
- const { align } = appConf.ui.table;
601
- const { key, dataIndex, children } = item;
602
- item.align = item.align || align;
603
- if (ellipsis) {
604
- if (!key) {
605
- item.key = dataIndex && dataIndex.toString();
606
- }
607
- if (!isBoolean(item.ellipsis)) {
608
- item = Object.assign(item, {
609
- ellipsis
610
- });
611
- }
612
- }
613
- if (children && children.length) {
614
- handleChildren(children, !!ellipsis);
615
- }
616
- }
617
- function handleChildren(children, ellipsis) {
618
- if (!children) {
619
- return;
620
- }
621
- children.forEach((item) => {
622
- const { children: children2 } = item;
623
- handleItem(item, ellipsis);
624
- handleChildren(children2, ellipsis);
625
- });
626
- }
627
- function handleIndexColumn(propsRef, getPaginationRef, columns) {
628
- const { getIsZH } = useHeader();
629
- const { t } = useI18n("UI");
630
- const { showIndexColumn, indexColumnProps, isTreeTable, virtual } = unref(propsRef);
631
- let pushIndexColumns = false;
632
- if (unref(isTreeTable)) {
633
- return;
634
- }
635
- columns.forEach(() => {
636
- const indIndex = columns.findIndex((column) => column.flag === INDEX_FLAG);
637
- if (showIndexColumn) {
638
- pushIndexColumns = indIndex === -1;
639
- } else if (!showIndexColumn && indIndex !== -1) {
640
- columns.splice(indIndex, 1);
641
- }
642
- });
643
- if (!pushIndexColumns) {
644
- return;
645
- }
646
- const isFixedLeft = columns.some((item) => item.fixed === "left");
647
- columns.unshift({
648
- flag: INDEX_FLAG,
649
- width: unref(getIsZH) ? 50 : 70,
650
- title: t("NUMBER"),
651
- align: "center",
652
- customRender: ({ index, renderIndex, record }) => {
653
- if (virtual && record?.index) {
654
- return record?.index;
655
- }
656
- const getPagination = unref(getPaginationRef);
657
- const { appConf } = useAppStore();
658
- const { defaultPageSize } = appConf.ui.table;
659
- if (isBoolean(getPagination)) {
660
- return `${index + 1}`;
661
- }
662
- const { current = 1, pageSize = defaultPageSize } = getPagination;
663
- return ((current < 1 ? 1 : current) - 1) * pageSize + index + 1;
664
- },
665
- ...isFixedLeft ? {
666
- fixed: "left"
667
- } : {},
668
- ...indexColumnProps
669
- });
670
- }
671
- function handleActionColumn(propsRef, columns) {
672
- const { appConf } = useAppStore();
673
- const { getIsZH } = useHeader();
674
- const { t } = useI18n("UI");
675
- const defaultButtons = [
676
- {
677
- label: t("EDIT"),
678
- icon: "mdi:text-box-edit-outline",
679
- onClick: (row, index) => {
680
- unref(propsRef).onOpenUpdateDialog(row, index, unref(propsRef).rowKey);
681
- }
682
- },
683
- {
684
- label: t("DELETE"),
685
- icon: "mdi:delete-outline",
686
- onClick: unref(propsRef).onDelete,
687
- color: "#ed6f6f"
688
- }
689
- ];
690
- const { operations = defaultButtons, expandActions = false, authPrefix } = unref(propsRef);
691
- if (!operations || isObject(operations) && operations?.btns && !operations?.btns?.length || isArray(operations) && !operations.length) {
692
- return;
693
- }
694
- const hasIndex = columns.findIndex((column) => column.flag === ACTION_COLUMN);
695
- if (hasIndex === -1) {
696
- const column = isObject(operations) ? {
697
- expand: appConf?.ui?.table?.expandActions,
698
- btns: defaultButtons,
699
- ...operations
700
- } : isArray(operations) ? { expand: appConf?.ui?.table?.expandActions, btns: operations } : {};
701
- const expand = column.expand ? column.expand : expandActions;
702
- const expandNum = (isObject(operations) ? operations.expandNum : appConf?.ui?.table?.expandNum) || null;
703
- const allAuths = DtCache.getLocal(CacheKey.AUTHS);
704
- const getAuth = (auth) => {
705
- if (auth && auth.includes(":")) {
706
- return auth;
707
- } else if (authPrefix && auth) {
708
- return `${authPrefix}:${auth}`;
709
- }
710
- return auth ?? null;
711
- };
712
- const getWidth = () => {
713
- let w = 0;
714
- if (expand) {
715
- if (expandNum) {
716
- let showMore = false;
717
- column.btns.forEach((btn, index) => {
718
- if (index < expandNum && (btn.auth && allAuths.includes(getAuth(btn.auth)) || !btn.auth)) {
719
- w += (unref(getIsZH) ? btn.label.length : btn.enLabel.length) * 14 + 8;
720
- } else if (btn.auth && allAuths.includes(getAuth(btn.auth)) || !btn.auth) {
721
- showMore = true;
722
- }
723
- });
724
- w += (showMore ? 36 : 0) + 30;
725
- } else {
726
- w = column.btns.length * 32 + 20;
727
- }
728
- } else {
729
- w = unref(getIsZH) ? 70 : 90;
730
- }
731
- return w;
732
- };
733
- const columnObj = {
734
- fixed: "right",
735
- title: t("ACTIONS"),
736
- align: "center",
737
- expand,
738
- width: `${getWidth()}px`,
739
- ...column,
740
- flag: ACTION_COLUMN
741
- };
742
- columns.push({
743
- ...columnObj,
744
- customRender: ({ record, index }) => {
745
- return h(
746
- _sfc_main$9,
747
- omit(
748
- {
749
- ...columnObj,
750
- authPrefix,
751
- record,
752
- index
753
- },
754
- "align"
755
- )
756
- );
757
- }
758
- });
759
- }
760
- }
761
- function sortFixedColumn(columns) {
762
- const fixedLeftColumn = [];
763
- const fixedRightColumn = [];
764
- const defaultColumn = [];
765
- for (const column of columns) {
766
- if (column.defaultHidden) {
767
- continue;
768
- }
769
- if (column.fixed === "left") {
770
- fixedLeftColumn.push(column);
771
- continue;
772
- }
773
- if (column.fixed === "right") {
774
- fixedRightColumn.push(column);
775
- continue;
776
- }
777
- defaultColumn.push(column);
778
- }
779
- return [...fixedLeftColumn, ...defaultColumn, ...fixedRightColumn];
780
- }
781
- function useColumns(propsRef, getPaginationRef, tableElRef) {
782
- const columnsRef = ref(unref(propsRef).columns);
783
- let cacheColumns = unref(propsRef).columns;
784
- const { appConf } = useAppStore();
785
- const getColumnsRef = computed(() => {
786
- const columns = cloneDeep(unref(columnsRef));
787
- const { ellipsis } = unref(propsRef);
788
- columns.forEach((it) => {
789
- it.class = it.class ?? "";
790
- if (!it.class.split(" ").includes("__column")) {
791
- it.class = `${it.class} __column`;
792
- }
793
- const { customRender, render } = it;
794
- if (it.sorter && isBoolean(it.sorter) && appConf?.ui?.table?.multipleSorter) {
795
- it.sorter = {
796
- multiple: Number(it.sorter)
797
- };
798
- }
799
- handleItem(
800
- it,
801
- Reflect.has(it, "ellipsis") ? !!it.ellipsis : !!ellipsis && !render && !customRender
802
- );
803
- });
804
- handleIndexColumn(propsRef, getPaginationRef, columns);
805
- handleActionColumn(propsRef, columns);
806
- return columns;
807
- });
808
- const getViewColumns = computed(() => {
809
- const viewColumns = sortFixedColumn(unref(getColumnsRef));
810
- const columns = cloneDeep(viewColumns);
811
- return columns.filter((column) => isIfShow(column)).map((column) => {
812
- if (column.edit) {
813
- column.customRender = renderEditCell(column);
814
- }
815
- return column;
816
- });
817
- });
818
- function isIfShow(column) {
819
- const ifShow = column.show;
820
- return isBoolean(ifShow) ? ifShow : isFunction(ifShow) ? ifShow(column) : true;
821
- }
822
- function addResize() {
823
- const { resizable, minWidth = 50, maxWidth = 700 } = unref(propsRef);
824
- const els = unref(tableElRef)?.$el.querySelectorAll(".__column"), scrollBarW = 10;
825
- let allWidth = 0, columnAllWidth = 0, noWidthNum = 0, avgWidth = 0;
826
- for (let i = 0; i < els?.length; i++) {
827
- allWidth += els[i].offsetWidth ?? 0;
828
- }
829
- columnsRef.value.forEach((it) => {
830
- if (isIfShow(it)) {
831
- if (it.width) {
832
- columnAllWidth += parseInt(`${it.width}`);
833
- } else {
834
- noWidthNum++;
835
- }
836
- }
837
- });
838
- avgWidth = (allWidth - columnAllWidth - scrollBarW) / noWidthNum;
839
- columnsRef.value.forEach((it) => {
840
- it.width = it.width || Math.round(avgWidth);
841
- if (Reflect.has(it, "resizable") ? !!it.resizable : resizable) {
842
- it.resizable = true;
843
- it.minWidth = it.minWidth || minWidth;
844
- it.maxWidth = it.maxWidth || maxWidth;
845
- }
846
- });
847
- }
848
- function getColumns(opt) {
849
- const { ignoreIndex, ignoreAction, sort } = opt || {};
850
- let columns = toRaw$1(unref(getColumnsRef));
851
- if (ignoreIndex) {
852
- columns = columns.filter((it) => it.flag !== INDEX_FLAG);
853
- }
854
- if (ignoreAction) {
855
- columns = columns.filter((it) => it.flag !== ACTION_COLUMN);
856
- }
857
- if (sort) {
858
- columns = sortFixedColumn(columns);
859
- }
860
- return columns;
861
- }
862
- function setColumns(columnList = []) {
863
- const columns = cloneDeep(columnList);
864
- if (!isArray(columns) || !columns.length) {
865
- columnsRef.value = [];
866
- return;
867
- }
868
- const cacheKeys = cacheColumns.map((item) => item.dataIndex);
869
- if (!isString(columns[0])) {
870
- columnsRef.value = columns;
871
- } else {
872
- const columnKeys = columns;
873
- const newColumns = [];
874
- cacheColumns.forEach((it) => {
875
- newColumns.push({
876
- ...it,
877
- show: true,
878
- defaultHidden: !columnKeys.includes(it.dataIndex || it.key)
879
- });
880
- });
881
- if (!isEqual(cacheKeys, columns)) {
882
- newColumns.sort((prev, next) => {
883
- return columnKeys.indexOf(prev.dataIndex) - columnKeys.indexOf(next.dataIndex);
884
- });
885
- }
886
- columnsRef.value = newColumns;
887
- cacheColumns = [...newColumns];
888
- }
889
- }
890
- function setColumnsByDataIndex(dataIndex, value) {
891
- if (!dataIndex || !value) {
892
- return;
893
- }
894
- cacheColumns.forEach((item) => {
895
- if (item.dataIndex === dataIndex) {
896
- Object.assign(item, value);
897
- }
898
- });
899
- columnsRef.value = [...cacheColumns];
900
- }
901
- function getCacheColumns() {
902
- return cacheColumns;
903
- }
904
- watch(
905
- () => unref(propsRef).columns,
906
- (columns) => {
907
- columnsRef.value = columns;
908
- cacheColumns = columns.filter((it) => !it.flag) ?? [];
909
- nextTick(() => addResize());
910
- }
911
- );
912
- return {
913
- getViewColumns,
914
- getColumnsRef,
915
- getColumns,
916
- setColumns,
917
- setColumnsByDataIndex,
918
- getCacheColumns
919
- };
920
- }
921
- function useCustomRow(propsRef, { setSelectedRowKeys, getSelectedRowKeys, clearSelectedRowKeys, emits }) {
922
- const customRow = (record, index) => {
923
- return {
924
- onClick: (e) => {
925
- e?.stopPropagation();
926
- function handleClick() {
927
- const { rowSelection, rowKey, clickToSelectRow } = unref(propsRef);
928
- if (!rowSelection) {
929
- return;
930
- }
931
- const keys = getSelectedRowKeys();
932
- const key = record[rowKey];
933
- if (!key) {
934
- return;
935
- }
936
- const isCheckbox = rowSelection.type === "checkbox";
937
- const isRadio = rowSelection.type === "radio";
938
- if (clickToSelectRow) {
939
- if (isCheckbox) {
940
- if (keys.includes(key)) {
941
- setSelectedRowKeys(keys.filter((it) => it !== key));
942
- } else {
943
- setSelectedRowKeys([...keys, key]);
944
- }
945
- }
946
- if (isRadio) {
947
- setSelectedRowKeys([key]);
948
- }
949
- return;
950
- }
951
- if (isCheckbox) {
952
- const td = e.composedPath?.().find((dom) => dom.tagName === "TD");
953
- if (!td) {
954
- return;
955
- }
956
- const checkBox = td.querySelector("input[type=checkbox]");
957
- if (!checkBox || checkBox.hasAttribute("disabled")) {
958
- return;
959
- }
960
- if (!keys.includes(key)) {
961
- setSelectedRowKeys([...keys, key]);
962
- return;
963
- }
964
- const keyIndex = keys.findIndex((item) => item === key);
965
- keys.splice(keyIndex, 1);
966
- setSelectedRowKeys(keys);
967
- return;
968
- }
969
- if (isRadio) {
970
- if (!keys.includes(key)) {
971
- if (keys.length) {
972
- clearSelectedRowKeys();
973
- }
974
- setSelectedRowKeys([key]);
975
- return;
976
- }
977
- clearSelectedRowKeys();
978
- }
979
- }
980
- handleClick();
981
- emits("row-click", record, index, e);
982
- },
983
- onDblclick: (event) => {
984
- emits("row-dbClick", record, index, event);
985
- },
986
- onContextmenu: (event) => {
987
- emits("row-contextmenu", record, index, event);
988
- },
989
- onMouseenter: (event) => {
990
- emits("row-mouseenter", record, index, event);
991
- },
992
- onMouseleave: (event) => {
993
- emits("row-mouseleave", record, index, event);
994
- }
995
- };
996
- };
997
- return {
998
- customRow
999
- };
1000
- }
1001
- function useDataSource(propsRef, { getPaginationInfo, setPagination, clearSelectedRowKeys }) {
1002
- const dataSourceRef = ref([]);
1003
- watch(
1004
- () => unref(propsRef).dataSource,
1005
- (dataSource) => {
1006
- dataSource && (dataSourceRef.value = dataSource);
1007
- },
1008
- {
1009
- immediate: true
1010
- }
1011
- );
1012
- const getDataSourceRef = computed(() => {
1013
- return unref(dataSourceRef);
1014
- });
1015
- function handleTableChange(pagination, filters, sorter) {
1016
- const { sortFn, filterFn, onTableChange: onTableChange2, clearSelectOnPageChange } = unref(propsRef);
1017
- const { appConf: appConf2 } = useAppStore();
1018
- const { current = 1, pageSize = appConf2.ui.table.defaultPageSize } = pagination;
1019
- if (clearSelectOnPageChange) {
1020
- clearSelectedRowKeys();
1021
- }
1022
- setPagination(pagination);
1023
- const params = {};
1024
- if (sorter && isFunction(sortFn)) {
1025
- params.sortInfo = sortFn(sorter);
1026
- }
1027
- if (filters && isFunction(filterFn)) {
1028
- params.filterInfo = filterFn(filters);
1029
- }
1030
- return onTableChange2({
1031
- pagination: {
1032
- current,
1033
- pageSize
1034
- },
1035
- sort: sorter,
1036
- filter: toRaw$1(unref(params.filterInfo)),
1037
- showBtnLoading: false
1038
- });
1039
- }
1040
- const { defSort, onTableChange } = unref(propsRef);
1041
- const { appConf } = useAppStore();
1042
- onTableChange(
1043
- {
1044
- pagination: {
1045
- current: 1,
1046
- pageSize: appConf.ui.table.defaultPageSize
1047
- },
1048
- sort: defSort,
1049
- filter: null,
1050
- showBtnLoading: false
1051
- },
1052
- false
1053
- );
1054
- function updateTableDataRecord(rowKey, record) {
1055
- const row = findTableDataRecord(rowKey);
1056
- if (row) {
1057
- for (const field in record) {
1058
- row[field] = record[field];
1059
- }
1060
- return row;
1061
- }
1062
- }
1063
- function findTableDataRecord(rowKey) {
1064
- if (!dataSourceRef.value || dataSourceRef.value.length == 0 || !rowKey) {
1065
- return;
1066
- }
1067
- const { childrenColumnName = "children" } = unref(propsRef);
1068
- const findRow = (array) => {
1069
- let ret;
1070
- array.some(function iter(r) {
1071
- if (Reflect.has(r, unref(propsRef).rowKey) && r[unref(propsRef).rowKey] === rowKey) {
1072
- ret = r;
1073
- return true;
1074
- }
1075
- return r[childrenColumnName] && r[childrenColumnName].some(iter);
1076
- });
1077
- return ret;
1078
- };
1079
- return findRow(dataSourceRef.value);
1080
- }
1081
- return {
1082
- getDataSourceRef,
1083
- handleTableChange,
1084
- updateTableDataRecord,
1085
- findTableDataRecord
1086
- };
1087
- }
1088
- const _hoisted_1$6 = { key: 0 };
1089
- const _sfc_main$7 = /* @__PURE__ */ defineComponent({
1090
- __name: "Fullscreen",
1091
- setup(__props) {
1092
- const { t } = useI18n("UI");
1093
- const table = getTableInstance();
1094
- const wrapEl = ref(null);
1095
- const { toggle, isFullscreen } = useFullscreen(wrapEl);
1096
- watch(
1097
- () => table.tableElRef.value,
1098
- (v) => {
1099
- const getParent = (el) => {
1100
- if (!el || !el.parentNode)
1101
- return null;
1102
- if (el.parentNode.className?.indexOf("dt-layout-content") !== -1) {
1103
- wrapEl.value = el.parentNode;
1104
- } else {
1105
- getParent(el.parentNode);
1106
- }
1107
- };
1108
- getParent(v.$el);
1109
- }
1110
- );
1111
- return (_ctx, _cache) => {
1112
- const _component_ATooltip = Tooltip;
1113
- return openBlock(), createBlock(_component_ATooltip, { placement: "top" }, {
1114
- title: withCtx(() => [
1115
- !unref(isFullscreen) ? (openBlock(), createElementBlock("span", _hoisted_1$6, toDisplayString(unref(t)("FULLSCREEN")), 1)) : createCommentVNode("", true)
1116
- ]),
1117
- default: withCtx(() => [
1118
- createElementVNode("span", {
1119
- class: "flex",
1120
- onClick: _cache[0] || (_cache[0] = (...args) => unref(toggle) && unref(toggle)(...args))
1121
- }, [
1122
- createElementVNode("i", {
1123
- class: normalizeClass(["i w-7 leading-7 text-center cursor-pointer", unref(isFullscreen) ? "ic:baseline-fullscreen-exit" : "ic:baseline-fullscreen"])
1124
- }, null, 2)
1125
- ])
1126
- ]),
1127
- _: 1
1128
- });
1129
- };
1130
- }
1131
- });
1132
- const _hoisted_1$5 = { class: "column-select" };
1133
- const _sfc_main$6 = /* @__PURE__ */ defineComponent({
1134
- __name: "DownloadCtrl",
1135
- setup(__props) {
1136
- const { t } = useI18n("UI");
1137
- const { message } = useMessage();
1138
- const state = reactive({
1139
- indeterminate: false,
1140
- checkAll: false
1141
- });
1142
- const modalData = ref([]);
1143
- const onCheckAllChange = (e) => {
1144
- modalData.value?.map((it) => it.show = e.target.checked);
1145
- };
1146
- const [registerDialog, { closeModal }] = useModal(
1147
- {
1148
- width: "60%",
1149
- title: t("SETTING_EXPORT_COLUMN")
1150
- },
1151
- (data) => {
1152
- modalData.value = data;
1153
- }
1154
- );
1155
- function save() {
1156
- let columns = unref(modalData)?.filter((it) => it.show);
1157
- if (!columns.length) {
1158
- message.error(t("NO_EXPORT_COLUMN"));
1159
- return;
1160
- }
1161
- closeModal(columns);
1162
- }
1163
- watch(
1164
- () => unref(modalData),
1165
- (v) => {
1166
- if (isArray(v)) {
1167
- let showLens = v.filter((it) => it.show).length;
1168
- Object.assign(state, {
1169
- checkAll: showLens === v.length,
1170
- indeterminate: showLens !== v.length && showLens > 0
1171
- });
1172
- }
1173
- },
1174
- {
1175
- deep: true
1176
- }
1177
- );
1178
- return (_ctx, _cache) => {
1179
- const _component_ACheckbox = Checkbox$1;
1180
- const _component_ADivider = Divider;
1181
- const _component_ACol = Col;
1182
- const _component_ARow = Row;
1183
- return openBlock(), createBlock(unref(DtModal), {
1184
- onRegister: unref(registerDialog),
1185
- onSave: save
1186
- }, {
1187
- default: withCtx(() => [
1188
- createElementVNode("div", _hoisted_1$5, [
1189
- createVNode(_component_ACheckbox, {
1190
- checked: state.checkAll,
1191
- "onUpdate:checked": _cache[0] || (_cache[0] = ($event) => state.checkAll = $event),
1192
- indeterminate: state.indeterminate,
1193
- onChange: onCheckAllChange
1194
- }, {
1195
- default: withCtx(() => [
1196
- createTextVNode(toDisplayString(unref(t)("SELECT_ALL")), 1)
1197
- ]),
1198
- _: 1
1199
- }, 8, ["checked", "indeterminate"]),
1200
- createVNode(_component_ADivider, { dashed: "" }),
1201
- createVNode(_component_ARow, null, {
1202
- default: withCtx(() => [
1203
- (openBlock(true), createElementBlock(Fragment, null, renderList(modalData.value, (it, index) => {
1204
- return openBlock(), createBlock(_component_ACol, { span: 8 }, {
1205
- default: withCtx(() => [
1206
- createVNode(_component_ACheckbox, {
1207
- checked: it.show,
1208
- "onUpdate:checked": ($event) => it.show = $event
1209
- }, {
1210
- default: withCtx(() => [
1211
- createTextVNode(toDisplayString(it.title), 1)
1212
- ]),
1213
- _: 2
1214
- }, 1032, ["checked", "onUpdate:checked"])
1215
- ]),
1216
- _: 2
1217
- }, 1024);
1218
- }), 256))
1219
- ]),
1220
- _: 1
1221
- })
1222
- ])
1223
- ]),
1224
- _: 1
1225
- }, 8, ["onRegister"]);
1226
- };
1227
- }
1228
- });
1229
- const _hoisted_1$4 = /* @__PURE__ */ createElementVNode("span", { class: "flex" }, [
1230
- /* @__PURE__ */ createElementVNode("i", { class: "i ic:baseline-download w-7 leading-7 text-center cursor-pointer" })
1231
- ], -1);
1232
- const _sfc_main$5 = /* @__PURE__ */ defineComponent({
1233
- __name: "Download",
1234
- props: {
1235
- download: {
1236
- type: [Boolean, Object]
1237
- }
1238
- },
1239
- setup(__props) {
1240
- const props2 = __props;
1241
- const table = getTableInstance();
1242
- const [registerDialog, { openModal }] = useModalOut();
1243
- const { appConf } = useAppStore();
1244
- const getPopupContainer$1 = () => document.getElementById("dt-layout-content") || getPopupContainer();
1245
- const { t } = useI18n("UI");
1246
- const isInclude = (type) => {
1247
- return isBoolean(props2.download) && props2.download && appConf?.ui?.table?.exportTable.includes(type) || isArray(props2.download) && props2.download.includes(type);
1248
- };
1249
- const showCurrentDownload = computed(() => isInclude("current"));
1250
- const showSelectedDownload = computed(() => isInclude("select"));
1251
- const showBackDownload = computed(() => isInclude("all"));
1252
- function handleTitleClick({ key }) {
1253
- const { onDownload, columns: allColumns, dataSource } = unref(table.getBind);
1254
- const excludesFlag = ["ACTION", "CHECKBOX", "RADIO"];
1255
- const columns = allColumns.filter((it) => !excludesFlag.includes(it.flag));
1256
- openModal(columns, (selectColumns) => {
1257
- onDownload({
1258
- type: key,
1259
- columns: selectColumns,
1260
- rows: key === "select" ? table.getSelectRows() : key === "current" ? dataSource : []
1261
- });
1262
- });
1263
- }
1264
- return (_ctx, _cache) => {
1265
- const _component_AMenuItem = MenuItem;
1266
- const _component_AMenu = Menu;
1267
- const _component_ADropdown = Dropdown;
1268
- const _component_ATooltip = Tooltip;
1269
- return openBlock(), createBlock(_component_ATooltip, { placement: "top" }, {
1270
- title: withCtx(() => [
1271
- createElementVNode("span", null, toDisplayString(unref(t)("EXPORT")), 1)
1272
- ]),
1273
- default: withCtx(() => [
1274
- createVNode(_component_ADropdown, {
1275
- placement: "bottom",
1276
- trigger: ["click"],
1277
- getPopupContainer: getPopupContainer$1
1278
- }, {
1279
- overlay: withCtx(() => [
1280
- createVNode(_component_AMenu, { onClick: handleTitleClick }, {
1281
- default: withCtx(() => [
1282
- unref(showCurrentDownload) ? (openBlock(), createBlock(_component_AMenuItem, { key: "current" }, {
1283
- default: withCtx(() => [
1284
- createElementVNode("span", null, toDisplayString(unref(t)("EXPORT_CURRENT_PAGE")), 1)
1285
- ]),
1286
- _: 1
1287
- })) : createCommentVNode("", true),
1288
- unref(showSelectedDownload) ? (openBlock(), createBlock(_component_AMenuItem, { key: "select" }, {
1289
- default: withCtx(() => [
1290
- createElementVNode("span", null, toDisplayString(unref(t)("EXPORT_SELECT_COLUMN")), 1)
1291
- ]),
1292
- _: 1
1293
- })) : createCommentVNode("", true),
1294
- unref(showBackDownload) ? (openBlock(), createBlock(_component_AMenuItem, { key: "all" }, {
1295
- default: withCtx(() => [
1296
- createElementVNode("span", null, toDisplayString(unref(t)("EXPORT_ALL")), 1)
1297
- ]),
1298
- _: 1
1299
- })) : createCommentVNode("", true)
1300
- ]),
1301
- _: 1
1302
- })
1303
- ]),
1304
- default: withCtx(() => [
1305
- _hoisted_1$4
1306
- ]),
1307
- _: 1
1308
- }),
1309
- createVNode(_sfc_main$6, { onRegister: unref(registerDialog) }, null, 8, ["onRegister"])
1310
- ]),
1311
- _: 1
1312
- });
1313
- };
1314
- }
1315
- });
1316
- const _hoisted_1$3 = /* @__PURE__ */ createElementVNode("i", { class: "i ant-design:drag-outlined drag-icon cursor-pointer" }, null, -1);
1317
- const _hoisted_2$2 = ["onClick"];
1318
- const _hoisted_3$1 = ["onClick"];
1319
- const _hoisted_4$1 = /* @__PURE__ */ createElementVNode("i", { class: "i ant-design:setting-outlined w-7 leading-7 text-center cursor-pointer" }, null, -1);
1320
- const _sfc_main$4 = /* @__PURE__ */ defineComponent({
1321
- __name: "Column",
1322
- emits: [
1323
- "columns-change"
1324
- ],
1325
- setup(__props, { emit: emits }) {
1326
- const { t } = useI18n("UI");
1327
- const attrs = useAttrs();
1328
- const prefixCls = "column-setting";
1329
- const table = getTableInstance();
1330
- const defaultRowSelection = omit(table.getRowSelection(), "selectedRowKeys");
1331
- let inited = false;
1332
- const cachePlainOptions = ref([]);
1333
- const plainOptions = ref([]);
1334
- const plainSortOptions = ref([]);
1335
- const columnListRef = ref(null);
1336
- const checkIndex = ref(false);
1337
- const checkSelect = ref(false);
1338
- const getValues = computed(() => {
1339
- return unref(table?.getBind);
1340
- });
1341
- let sortable;
1342
- let sortableOrder = [];
1343
- const state = reactive({
1344
- checkAll: true,
1345
- checkedList: [],
1346
- defaultCheckList: []
1347
- });
1348
- const indeterminate = computed(() => {
1349
- let len = plainOptions.value.length;
1350
- let checkedLen = state.checkedList.length;
1351
- unref(checkIndex) && checkedLen--;
1352
- return checkedLen > 0 && checkedLen < len;
1353
- });
1354
- watchEffect(() => {
1355
- const columns = table.getColumns();
1356
- if (columns && columns.length) {
1357
- init();
1358
- }
1359
- });
1360
- watchEffect(() => {
1361
- const values = unref(getValues);
1362
- checkIndex.value = !!values.showIndexColumn;
1363
- checkSelect.value = !!values.rowSelection;
1364
- });
1365
- function handleVisibleChange() {
1366
- if (inited)
1367
- return;
1368
- nextTick(() => {
1369
- const columnListEl = unref(columnListRef);
1370
- if (!columnListEl)
1371
- return;
1372
- const el = columnListEl.$el;
1373
- if (!el)
1374
- return;
1375
- sortable = Sortablejs.create(unref(el), {
1376
- animation: 500,
1377
- delay: 400,
1378
- delayOnTouchOnly: true,
1379
- handle: ".drag-icon ",
1380
- onEnd: (evt) => {
1381
- const { oldIndex, newIndex } = evt;
1382
- if (isNullAndUnDef(oldIndex) || isNullAndUnDef(newIndex) || oldIndex === newIndex) {
1383
- return;
1384
- }
1385
- const columns = cloneDeep(plainSortOptions.value);
1386
- if (oldIndex > newIndex) {
1387
- columns.splice(newIndex, 0, columns[oldIndex]);
1388
- columns.splice(oldIndex + 1, 1);
1389
- } else {
1390
- columns.splice(newIndex + 1, 0, columns[oldIndex]);
1391
- columns.splice(oldIndex, 1);
1392
- }
1393
- plainSortOptions.value = columns;
1394
- setColumns(
1395
- columns.map((col) => col.value).filter((value) => state.checkedList.includes(value))
1396
- );
1397
- }
1398
- });
1399
- sortableOrder = sortable.toArray();
1400
- inited = true;
1401
- });
1402
- }
1403
- function onCheckAllChange(e) {
1404
- const checkList = plainOptions.value.map((item) => item.value);
1405
- if (e.target.checked) {
1406
- state.checkedList = checkList;
1407
- setColumns(checkList);
1408
- } else {
1409
- state.checkedList = [];
1410
- setColumns([]);
1411
- }
1412
- }
1413
- function handleIndexCheckChange(e) {
1414
- table.setProps({
1415
- showIndexColumn: e.target.checked
1416
- });
1417
- }
1418
- function handleSelectCheckChange(e) {
1419
- table.setProps({
1420
- rowSelection: e.target.checked ? defaultRowSelection : null
1421
- });
1422
- }
1423
- function onChange(checkedList) {
1424
- const len = plainSortOptions.value.length;
1425
- state.checkAll = checkedList.length === len;
1426
- const sortList = unref(plainSortOptions).map((item) => item.value);
1427
- checkedList.sort((prev, next) => {
1428
- return sortList.indexOf(prev) - sortList.indexOf(next);
1429
- });
1430
- setColumns(checkedList);
1431
- }
1432
- function reset() {
1433
- state.checkedList = [...state.defaultCheckList];
1434
- state.checkAll = true;
1435
- plainOptions.value = unref(cachePlainOptions);
1436
- plainSortOptions.value = unref(cachePlainOptions);
1437
- setColumns(table.getCacheColumns());
1438
- sortable.sort(sortableOrder);
1439
- }
1440
- function getColumns() {
1441
- return table.getColumns({
1442
- ignoreIndex: true,
1443
- ignoreAction: true
1444
- }).reduce((ret, it) => {
1445
- ret.push({
1446
- label: it.title,
1447
- value: it.dataIndex || it.title,
1448
- ...it
1449
- });
1450
- return ret;
1451
- }, []);
1452
- }
1453
- function handleColumnFixed(item, fixed) {
1454
- if (!state.checkedList.includes(item.dataIndex))
1455
- return;
1456
- const columns = getColumns();
1457
- const isFixed = item.fixed === fixed ? false : fixed;
1458
- const index = columns.findIndex((col) => col.dataIndex === item.dataIndex);
1459
- if (index !== -1) {
1460
- columns[index].fixed = isFixed;
1461
- }
1462
- item.fixed = isFixed;
1463
- if (isFixed && !item.width) {
1464
- item.width = 100;
1465
- }
1466
- table.setColumnsByDataIndex?.(item.dataIndex, { fixed: isFixed });
1467
- setColumns(columns);
1468
- }
1469
- function setColumns(columns) {
1470
- table.setColumns(columns);
1471
- const data = unref(plainSortOptions).map((col) => {
1472
- const visable = columns.findIndex(
1473
- (c) => c === col.value || typeof c !== "string" && c.dataIndex === col.value
1474
- ) !== -1;
1475
- return { dataIndex: col.value, fixed: col.fixed, visable };
1476
- });
1477
- emits("columns-change", data);
1478
- }
1479
- function init() {
1480
- const columns = getColumns();
1481
- const checkList = table.getColumns({ ignoreAction: true }).map((it) => it.defaultHidden ? "" : it.dataIndex || it.title).filter(Boolean);
1482
- if (!plainOptions.value.length) {
1483
- plainOptions.value = columns;
1484
- plainSortOptions.value = columns;
1485
- cachePlainOptions.value = cloneDeep(columns);
1486
- state.defaultCheckList = checkList;
1487
- } else {
1488
- unref(plainOptions).forEach(
1489
- (it) => it.fixed === columns.find((col) => col.dataIndex === it.dataIndex)?.fixed
1490
- );
1491
- }
1492
- state.isInit = true;
1493
- state.checkedList = checkList;
1494
- }
1495
- function getPopupContainer$1() {
1496
- return isFunction(attrs.getPopupContainer) ? attrs.getPopupContainer() : document.getElementById("dt-layout-content") || getPopupContainer();
1497
- }
1498
- return (_ctx, _cache) => {
1499
- const _component_ACheckbox = Checkbox$1;
1500
- const _component_AButton = Button;
1501
- const _component_ATooltip = Tooltip;
1502
- const _component_ADivider = Divider;
1503
- const _component_ACheckboxGroup = CheckboxGroup;
1504
- const _component_APopover = Popover$1;
1505
- return openBlock(), createBlock(_component_ATooltip, { placement: "top" }, {
1506
- title: withCtx(() => [
1507
- createElementVNode("span", null, toDisplayString(unref(t)("COLUMN_CONTROL")), 1)
1508
- ]),
1509
- default: withCtx(() => [
1510
- createVNode(_component_APopover, {
1511
- placement: "bottomLeft",
1512
- trigger: "click",
1513
- overlayClassName: `${prefixCls}__cloumn-list`,
1514
- onVisibleChange: handleVisibleChange,
1515
- getPopupContainer: getPopupContainer$1
1516
- }, {
1517
- title: withCtx(() => [
1518
- createElementVNode("div", {
1519
- class: normalizeClass(`${prefixCls}__popover-title flex`)
1520
- }, [
1521
- createVNode(_component_ACheckbox, {
1522
- indeterminate: unref(indeterminate),
1523
- checked: state.checkAll,
1524
- "onUpdate:checked": _cache[0] || (_cache[0] = ($event) => state.checkAll = $event),
1525
- onChange: onCheckAllChange
1526
- }, {
1527
- default: withCtx(() => [
1528
- createTextVNode(toDisplayString(unref(t)("COLUMN_SHOW")), 1)
1529
- ]),
1530
- _: 1
1531
- }, 8, ["indeterminate", "checked"]),
1532
- createVNode(_component_ACheckbox, {
1533
- checked: checkIndex.value,
1534
- "onUpdate:checked": _cache[1] || (_cache[1] = ($event) => checkIndex.value = $event),
1535
- onChange: handleIndexCheckChange
1536
- }, {
1537
- default: withCtx(() => [
1538
- createTextVNode(toDisplayString(unref(t)("INDEX")), 1)
1539
- ]),
1540
- _: 1
1541
- }, 8, ["checked"]),
1542
- createVNode(_component_ACheckbox, {
1543
- checked: checkSelect.value,
1544
- "onUpdate:checked": _cache[2] || (_cache[2] = ($event) => checkSelect.value = $event),
1545
- onChange: handleSelectCheckChange,
1546
- disabled: !unref(defaultRowSelection)
1547
- }, {
1548
- default: withCtx(() => [
1549
- createTextVNode(toDisplayString(unref(t)("CHECKBOX")), 1)
1550
- ]),
1551
- _: 1
1552
- }, 8, ["checked", "disabled"]),
1553
- createVNode(_component_AButton, {
1554
- type: "link",
1555
- onClick: reset
1556
- }, {
1557
- default: withCtx(() => [
1558
- createTextVNode(toDisplayString(unref(t)("RESET")), 1)
1559
- ]),
1560
- _: 1
1561
- })
1562
- ], 2)
1563
- ]),
1564
- content: withCtx(() => [
1565
- createVNode(_component_ACheckboxGroup, {
1566
- value: state.checkedList,
1567
- "onUpdate:value": _cache[3] || (_cache[3] = ($event) => state.checkedList = $event),
1568
- onChange,
1569
- ref_key: "columnListRef",
1570
- ref: columnListRef
1571
- }, {
1572
- default: withCtx(() => [
1573
- (openBlock(true), createElementBlock(Fragment, null, renderList(plainOptions.value, (item) => {
1574
- return openBlock(), createElementBlock("div", {
1575
- key: item.value,
1576
- class: normalizeClass(`${prefixCls}__check-item flex pt-1 pr-4 pb-2 items-center`)
1577
- }, [
1578
- _hoisted_1$3,
1579
- createVNode(_component_ACheckbox, {
1580
- value: item.value
1581
- }, {
1582
- default: withCtx(() => [
1583
- createTextVNode(toDisplayString(item.label), 1)
1584
- ]),
1585
- _: 2
1586
- }, 1032, ["value"]),
1587
- createVNode(_component_ATooltip, {
1588
- placement: "bottomLeft",
1589
- mouseLeaveDelay: 0.4,
1590
- getPopupContainer: getPopupContainer$1
1591
- }, {
1592
- title: withCtx(() => [
1593
- createTextVNode(toDisplayString(unref(t)("FIXED_TO_LEFT")), 1)
1594
- ]),
1595
- default: withCtx(() => [
1596
- createElementVNode("span", {
1597
- class: normalizeClass({
1598
- disabled: !state.checkedList.includes(item.value),
1599
- active: item.fixed === "left"
1600
- })
1601
- }, [
1602
- createElementVNode("i", {
1603
- class: normalizeClass(["i mdi:arrow-collapse-left cursor-pointer", `${prefixCls}__fixed-left`]),
1604
- onClick: ($event) => handleColumnFixed(item, "left")
1605
- }, null, 10, _hoisted_2$2)
1606
- ], 2)
1607
- ]),
1608
- _: 2
1609
- }, 1032, ["mouseLeaveDelay"]),
1610
- createVNode(_component_ADivider, { type: "vertical" }),
1611
- createVNode(_component_ATooltip, {
1612
- placement: "bottomLeft",
1613
- mouseLeaveDelay: 0.4,
1614
- getPopupContainer: getPopupContainer$1
1615
- }, {
1616
- title: withCtx(() => [
1617
- createTextVNode(toDisplayString(unref(t)("FIXED_TO_RIGHT")), 1)
1618
- ]),
1619
- default: withCtx(() => [
1620
- createElementVNode("span", {
1621
- class: normalizeClass({
1622
- disabled: !state.checkedList.includes(item.value),
1623
- active: item.fixed === "right"
1624
- })
1625
- }, [
1626
- createElementVNode("i", {
1627
- class: normalizeClass(["i mdi:arrow-collapse-right cursor-pointer", `${prefixCls}__fixed-right`]),
1628
- onClick: ($event) => handleColumnFixed(item, "right")
1629
- }, null, 10, _hoisted_3$1)
1630
- ], 2)
1631
- ]),
1632
- _: 2
1633
- }, 1032, ["mouseLeaveDelay"])
1634
- ], 2);
1635
- }), 128))
1636
- ]),
1637
- _: 1
1638
- }, 8, ["value"])
1639
- ]),
1640
- default: withCtx(() => [
1641
- _hoisted_4$1
1642
- ]),
1643
- _: 1
1644
- }, 8, ["overlayClassName"])
1645
- ]),
1646
- _: 1
1647
- });
1648
- };
1649
- }
1650
- });
1651
- const _hoisted_1$2 = { class: "flex dt-table-setting" };
1652
- const _sfc_main$3 = /* @__PURE__ */ defineComponent({
1653
- __name: "index",
1654
- props: {
1655
- setting: {
1656
- type: Object,
1657
- default: () => ({})
1658
- }
1659
- },
1660
- emits: ["columns-change"],
1661
- setup(__props, { emit: emits }) {
1662
- const props2 = __props;
1663
- const getSetting = computed(() => {
1664
- return {
1665
- download: true,
1666
- setting: true,
1667
- fullscreen: true,
1668
- ...props2.setting
1669
- };
1670
- });
1671
- function handleColumnChange(data) {
1672
- emits("columns-change", data);
1673
- }
1674
- return (_ctx, _cache) => {
1675
- return openBlock(), createElementBlock("div", _hoisted_1$2, [
1676
- unref(getSetting).download ? (openBlock(), createBlock(_sfc_main$5, normalizeProps(mergeProps({ key: 0 }, unref(getSetting))), null, 16)) : createCommentVNode("", true),
1677
- unref(getSetting).setting ? (openBlock(), createBlock(_sfc_main$4, {
1678
- key: 1,
1679
- onColumnsChange: handleColumnChange
1680
- })) : createCommentVNode("", true),
1681
- unref(getSetting).fullscreen ? (openBlock(), createBlock(_sfc_main$7, { key: 2 })) : createCommentVNode("", true)
1682
- ]);
1683
- };
1684
- }
1685
- });
1686
- const _hoisted_1$1 = { class: "dt-table-header" };
1687
- const _hoisted_2$1 = { class: "flex flex-row justify-between" };
1688
- const _hoisted_3 = { class: "flex flex-row flex-1" };
1689
- const _hoisted_4 = { key: 0 };
1690
- const _hoisted_5 = {
1691
- key: 0,
1692
- class: "border dt-table-header-top text-12 bg-gray-100 mt-1 py-1 px-3 border-dashed"
1693
- };
1694
- const _sfc_main$2 = /* @__PURE__ */ defineComponent({
1695
- __name: "TableHeader",
1696
- props: {
1697
- tableSetting: {
1698
- type: [Object, Boolean]
1699
- },
1700
- toolbar: {
1701
- type: Array,
1702
- default: () => []
1703
- },
1704
- authPrefix: {
1705
- type: String
1706
- }
1707
- },
1708
- setup(__props) {
1709
- const props2 = __props;
1710
- const getActionsProps = {
1711
- mode: "dialog",
1712
- showAdvancedButton: false,
1713
- show: true,
1714
- buttonList: props2.toolbar,
1715
- authPrefix: props2.authPrefix
1716
- };
1717
- return (_ctx, _cache) => {
1718
- return openBlock(), createElementBlock("div", _hoisted_1$1, [
1719
- createElementVNode("div", _hoisted_2$1, [
1720
- createElementVNode("div", _hoisted_3, [
1721
- unref(getActionsProps)?.buttonList.length ? (openBlock(), createBlock(unref(DtFormButtons), normalizeProps(mergeProps({ key: 0 }, unref(getActionsProps))), null, 16)) : createCommentVNode("", true),
1722
- renderSlot(_ctx.$slots, "toolbar")
1723
- ]),
1724
- __props.tableSetting ? (openBlock(), createElementBlock("div", _hoisted_4, [
1725
- createVNode(_sfc_main$3, { setting: __props.tableSetting }, null, 8, ["setting"])
1726
- ])) : createCommentVNode("", true)
1727
- ]),
1728
- _ctx.$slots.headerTop ? (openBlock(), createElementBlock("div", _hoisted_5, [
1729
- renderSlot(_ctx.$slots, "headerTop")
1730
- ])) : createCommentVNode("", true)
1731
- ]);
1732
- };
1733
- }
1734
- });
1735
- function useTableHeader(propsRef, slots, handlers) {
1736
- const { t } = useI18n("UI");
1737
- const getHeaderProps = computed(() => {
1738
- const TABLE_TOOLS = [
1739
- { t: "\u65B0\u589E", label: t("ADD"), preIcon: "mdi:plus", type: "primary", auth: "add", onClick: unref(propsRef).onOPenAddDialog },
1740
- { t: "\u5220\u9664", label: t("DELETE"), preIcon: "mdi:delete-outline", auth: "delete", onClick: unref(propsRef).onDeletes }
1741
- ];
1742
- const { tableSetting, toolbar = TABLE_TOOLS, authPrefix } = unref(propsRef);
1743
- const { getSlot } = useSlots();
1744
- const hideTitle = (!toolbar || !toolbar.filter((it) => it.show ?? true).length) && !slots.toolbar && !slots.headerTop && !tableSetting;
1745
- return {
1746
- title: hideTitle ? null : () => h(
1747
- _sfc_main$2,
1748
- {
1749
- tableSetting,
1750
- toolbar,
1751
- authPrefix,
1752
- onColumnsChange: handlers.onColumnsChange
1753
- },
1754
- {
1755
- ...slots.toolbar ? {
1756
- toolbar: () => getSlot(slots, "toolbar")
1757
- } : {},
1758
- ...slots.headerTop ? {
1759
- headerTop: () => getSlot(slots, "headerTop")
1760
- } : {}
1761
- }
1762
- )
1763
- };
1764
- });
1765
- return {
1766
- getHeaderProps
1767
- };
1768
- }
1769
- function useLoading(props2) {
1770
- const getLoading = ref(false);
1771
- watch(
1772
- () => unref(props2)?.loading,
1773
- (v) => getLoading.value = v
1774
- );
1775
- function setLoading(loading) {
1776
- getLoading.value = loading;
1777
- }
1778
- return {
1779
- getLoading,
1780
- setLoading
1781
- };
1782
- }
1783
- function usePagination(props2) {
1784
- const { t } = useI18n("UI");
1785
- const paginationRef = ref();
1786
- const { getUiSize } = useHeader();
1787
- watch(
1788
- () => unref(props2).pagination,
1789
- (pagination) => {
1790
- if (!isBoolean(pagination) && pagination) {
1791
- paginationRef.value = {
1792
- ...unref(paginationRef),
1793
- ...pagination ?? {}
1794
- };
1795
- }
1796
- }
1797
- );
1798
- const getPaginationInfo = computed(() => {
1799
- const { appConf } = useAppStore();
1800
- let { pagination } = unref(props2);
1801
- if (isBoolean(pagination) && !pagination) {
1802
- return false;
1803
- }
1804
- if (!pagination) {
1805
- pagination = {
1806
- pageSize: appConf.ui.table.defaultPageSize,
1807
- current: 1
1808
- };
1809
- }
1810
- const { defaultPageSize, pageSizeOptions } = {
1811
- ...appConf.ui.table,
1812
- ...pagination
1813
- };
1814
- return {
1815
- current: 1,
1816
- pageSize: defaultPageSize,
1817
- defaultPageSize,
1818
- showTotal: (total, range) => t("TOTAL_PAGE", { total }),
1819
- showSizeChanger: true,
1820
- pageSizeOptions,
1821
- showQuickJumper: true,
1822
- class: `dt-pagination dt-pagination-${unref(getUiSize)}`,
1823
- ...isBoolean(pagination) ? {} : pagination,
1824
- ...unref(paginationRef)
1825
- };
1826
- });
1827
- function setPagination(info) {
1828
- const paginationInfo = unref(getPaginationInfo);
1829
- paginationRef.value = {
1830
- ...!isBoolean(paginationInfo) ? paginationInfo : {},
1831
- ...info
1832
- };
1833
- }
1834
- function getPagination() {
1835
- return unref(getPaginationInfo);
1836
- }
1837
- return {
1838
- getPaginationInfo,
1839
- setPagination,
1840
- getPagination
1841
- };
1842
- }
1843
- const DEFAULT_CONFIG = {
1844
- id: "id",
1845
- children: "children",
1846
- pid: "pid"
1847
- };
1848
- function useRowSelection(propsRef, emit) {
1849
- const selectedRowKeysRef = ref([]);
1850
- const selectedRowRef = ref([]);
1851
- const getRowSelectionRef = computed(() => {
1852
- const { rowSelection, showCheckboxColumn, checkStrictly } = unref(propsRef);
1853
- if (!rowSelection && !showCheckboxColumn) {
1854
- return null;
1855
- }
1856
- if (isBoolean(showCheckboxColumn)) {
1857
- if (showCheckboxColumn && rowSelection) {
1858
- rowSelection.type = "checkbox";
1859
- } else {
1860
- return null;
1861
- }
1862
- }
1863
- return {
1864
- checkStrictly,
1865
- selectedRowKeys: unref(selectedRowKeysRef),
1866
- onChange: (selectedRowKeys) => setSelectedRowKeys(selectedRowKeys),
1867
- ...omit(rowSelection, ["onChange"])
1868
- };
1869
- });
1870
- function findeNodeAll(tree, func, config = {}) {
1871
- const _config = Object.assign({}, DEFAULT_CONFIG, config), result = [], list = [...tree];
1872
- for (const node of list) {
1873
- func(node) && result.push(node);
1874
- node[_config?.children] && list.push(...node[_config?.children]);
1875
- }
1876
- return result;
1877
- }
1878
- function setSelectedRowKeys(rowKeys) {
1879
- selectedRowKeysRef.value = rowKeys;
1880
- const allSelectedRows = findeNodeAll(
1881
- toRaw$1(unref(propsRef).dataSource).concat(toRaw$1(unref(selectedRowRef))),
1882
- (item) => rowKeys.includes(item[unref(propsRef).rowKey]),
1883
- {
1884
- children: propsRef.value.childrenColumnName ?? "children"
1885
- }
1886
- );
1887
- const trueSelectedRows = [];
1888
- rowKeys.forEach((key) => {
1889
- const found = allSelectedRows.find((item) => item[unref(propsRef).rowKey] === key);
1890
- found && trueSelectedRows.push(found);
1891
- });
1892
- selectedRowRef.value = trueSelectedRows;
1893
- }
1894
- function clearSelectedRowKeys() {
1895
- selectedRowKeysRef.value = [];
1896
- selectedRowRef.value = [];
1897
- }
1898
- function getRowSelection() {
1899
- return unref(getRowSelectionRef);
1900
- }
1901
- function getSelectedRowKeys() {
1902
- return unref(selectedRowKeysRef);
1903
- }
1904
- function getSelectRows() {
1905
- return unref(selectedRowRef);
1906
- }
1907
- watch(
1908
- () => unref(propsRef).rowSelection?.selectedRowKeys,
1909
- (v) => {
1910
- setSelectedRowKeys(v);
1911
- }
1912
- );
1913
- watch(
1914
- () => unref(selectedRowKeysRef),
1915
- () => {
1916
- nextTick(() => {
1917
- const { rowSelection } = unref(propsRef);
1918
- if (rowSelection) {
1919
- const { onChange } = rowSelection;
1920
- if (onChange && isFunction(onChange)) {
1921
- onChange(getSelectedRowKeys(), getSelectRows());
1922
- }
1923
- }
1924
- emit("selection-change", {
1925
- keys: getSelectedRowKeys(),
1926
- rows: getSelectRows()
1927
- });
1928
- });
1929
- },
1930
- { deep: true }
1931
- );
1932
- return {
1933
- getRowSelectionRef,
1934
- clearSelectedRowKeys,
1935
- getRowSelection,
1936
- getSelectedRowKeys,
1937
- getSelectRows,
1938
- setSelectedRowKeys
1939
- };
1940
- }
1941
- var TABLE_SIZE_HEIGHT = /* @__PURE__ */ ((TABLE_SIZE_HEIGHT2) => {
1942
- TABLE_SIZE_HEIGHT2[TABLE_SIZE_HEIGHT2["large"] = 56] = "large";
1943
- TABLE_SIZE_HEIGHT2[TABLE_SIZE_HEIGHT2["middle"] = 47] = "middle";
1944
- TABLE_SIZE_HEIGHT2[TABLE_SIZE_HEIGHT2["small"] = 32] = "small";
1945
- return TABLE_SIZE_HEIGHT2;
1946
- })(TABLE_SIZE_HEIGHT || {});
1947
- function useTableScroll(propsRef, tableElRef, columnsRef, rowSelectionRef) {
1948
- const filterSource = ref([]);
1949
- let bodyEl;
1950
- const debounceRedoHeight = useDebounceFn(redoHeight, 100);
1951
- windowResizeFn(debounceRedoHeight, 280);
1952
- watch(
1953
- () => propsRef.value.dataSource,
1954
- () => {
1955
- debounceRedoHeight();
1956
- },
1957
- {
1958
- deep: true,
1959
- flush: "post"
1960
- }
1961
- );
1962
- function redoHeight() {
1963
- const { virtual, dataSource } = unref(propsRef);
1964
- virtual ? calcTableScroll() : filterSource.value = dataSource.map((row) => new Proxy(row, {}));
1965
- }
1966
- const getScrollX = computed(() => {
1967
- let width = 0;
1968
- if (unref(rowSelectionRef)) {
1969
- width += 32;
1970
- }
1971
- const NORMAL_WIDTH = 120;
1972
- const columns = unref(columnsRef).filter((item) => !item.defaultHidden);
1973
- columns.forEach((item) => {
1974
- width += Number.parseInt(item.width) || NORMAL_WIDTH;
1975
- });
1976
- const table = unref(tableElRef);
1977
- const tableWidth = table?.$el?.offsetWidth ?? 0;
1978
- return tableWidth > width ? "100%" : width;
1979
- });
1980
- const hideScrollX = computed(() => {
1981
- const operations = unref(propsRef).operations;
1982
- return !operations || isObject(operations) && operations?.btns && !operations?.btns?.length || isArray(operations) && !operations.length;
1983
- });
1984
- const getScrollRef = computed(() => {
1985
- const { scroll } = unref(propsRef);
1986
- return {
1987
- x: unref(hideScrollX) ? null : unref(getScrollX),
1988
- y: "100%",
1989
- scrollToFirstRowOnChange: false,
1990
- ...scroll
1991
- };
1992
- });
1993
- async function calcTableScroll() {
1994
- const tableEl = unref(tableElRef)?.$el;
1995
- bodyEl = tableEl.querySelector(".ant-table-body");
1996
- const { getUiSize } = useHeader();
1997
- const rowHeight = TABLE_SIZE_HEIGHT[unref(getUiSize)];
1998
- const itemSize = Math.ceil(bodyEl.offsetHeight / rowHeight);
1999
- createScrollWrap(bodyEl, rowHeight * itemSize * 3);
2000
- calcScroll(bodyEl, rowHeight, itemSize);
2001
- const fn = useThrottleFn(() => calcScroll(bodyEl, rowHeight, itemSize), 10);
2002
- tryOnMounted(() => off(bodyEl, "scroll", fn));
2003
- on(bodyEl, "scroll", fn);
2004
- }
2005
- function createScrollWrap(el, prefixH) {
2006
- const data = unref(propsRef)?.dataSource?.length;
2007
- const { getUiSize } = useHeader();
2008
- const rowHeight = TABLE_SIZE_HEIGHT[unref(getUiSize)];
2009
- const scrollWrap = el.querySelector(".tableScrollWrap");
2010
- const wrapHeight = data * rowHeight - prefixH + "px";
2011
- if (scrollWrap) {
2012
- scrollWrap.style.height = wrapHeight;
2013
- } else {
2014
- const div = document.createElement("div");
2015
- div.className = "tableScrollWrap";
2016
- div.style.height = wrapHeight;
2017
- el.insertBefore(div, el.querySelector("table")[0]);
2018
- }
2019
- }
2020
- const t = ref(null);
2021
- function calcScroll(el, itemH, itemSize) {
2022
- cancelAnimationFrame(unref(t));
2023
- t.value = requestAnimationFrame(() => {
2024
- const scrollTop = el.scrollTop;
2025
- const maxIndex = Math.round(scrollTop / itemH) + itemSize * 2;
2026
- const minIndex = Math.round(scrollTop / itemH) - itemSize;
2027
- if (minIndex < 0) {
2028
- bodyEl.querySelector("table").style.transform = "translateY(0px)";
2029
- filterSource.value = unref(propsRef)?.dataSource.slice(0, itemSize * 3);
2030
- } else {
2031
- bodyEl.querySelector("table").style.transform = `translateY(${minIndex * itemH}px)`;
2032
- filterSource.value = unref(propsRef)?.dataSource.slice(minIndex, maxIndex);
2033
- }
2034
- });
2035
- }
2036
- return {
2037
- getScrollRef,
2038
- filterSource
2039
- };
2040
- }
2041
- function useRows(propsRef) {
2042
- function getRowClassName(record, index) {
2043
- const { striped, rowClassName } = unref(propsRef);
2044
- const classNames = [];
2045
- if (striped) {
2046
- classNames.push(index % 2 === 1 ? "table-striped" : "");
2047
- }
2048
- if (rowClassName && isFunction(rowClassName)) {
2049
- classNames.push(rowClassName(record, index));
2050
- }
2051
- return classNames.join(" ");
2052
- }
2053
- return {
2054
- getRowClassName
2055
- };
2056
- }
2057
- const props = {
2058
- column: Object,
2059
- record: Object,
2060
- index: Number
2061
- };
2062
- const _sfc_main$1 = {
2063
- name: "TableRender",
2064
- props,
2065
- setup(props2, {}) {
2066
- let renderText = ref(null);
2067
- watch(() => [props2.record, props2.column], (v) => {
2068
- if (v) {
2069
- renderCell();
2070
- }
2071
- }, {
2072
- immediate: true,
2073
- deep: true
2074
- });
2075
- function renderCell() {
2076
- const {
2077
- column,
2078
- record,
2079
- index
2080
- } = props2;
2081
- const {
2082
- render,
2083
- dataIndex
2084
- } = column;
2085
- const text = record[dataIndex.toString()];
2086
- if (isObject(render)) {
2087
- const {
2088
- dict,
2089
- date,
2090
- number,
2091
- percent,
2092
- struc,
2093
- tag,
2094
- link
2095
- } = render;
2096
- if (struc) {
2097
- const {
2098
- appConf
2099
- } = useAppStore();
2100
- let apiStruc = appConf.structure[struc];
2101
- if (!apiStruc) {
2102
- error(`${struc}\u672A\u5728structure\u4E2D\u914D\u7F6E`);
2103
- } else {
2104
- renderText = computed(() => getDictValueByCode(text, apiStruc));
2105
- }
2106
- } else if (dict) {
2107
- renderText = computed(() => getDictValueByCode(text, dict));
2108
- } else if (date) {
2109
- renderText.value = (text && dayjs(text).format(date || "YYYY-MM-DD")) ?? "";
2110
- } else if (number) {
2111
- renderText.value = formatNumber(text, number);
2112
- } else if (percent) {
2113
- renderText.value = formatNumber((text || 0) * 100, percent) + "%";
2114
- } else if (tag && isFunction(tag)) {
2115
- renderText.value = createVNode(Tag, {
2116
- "color": tag(record).color
2117
- }, {
2118
- default: () => [tag(record).text]
2119
- });
2120
- } else if (link) {
2121
- let txt = link.text ?? text;
2122
- renderText.value = createVNode("a", {
2123
- "class": "primary-color-link",
2124
- "onClick": () => link(record, index)
2125
- }, [txt]);
2126
- } else if (isVnode(render)) {
2127
- renderText.value = createVNode(Fragment, null, [createTextVNode(" "), render, createTextVNode(" ")]);
2128
- } else if (render.setup) {
2129
- renderText.value = createVNode(render, {
2130
- ...record,
2131
- text
2132
- });
2133
- }
2134
- } else if (isFunction(render)) {
2135
- let afterRenderData = render(record, index, text);
2136
- if (afterRenderData.__v_isRef) {
2137
- renderText = afterRenderData;
2138
- } else if (afterRenderData.setup) {
2139
- renderText.value = createVNode(afterRenderData, {
2140
- ...record,
2141
- text
2142
- });
2143
- } else {
2144
- renderText.value = isVnode(afterRenderData) ? createVNode(Fragment, null, [afterRenderData]) : afterRenderData;
2145
- }
2146
- } else {
2147
- renderText.value = unref(text);
2148
- }
2149
- }
2150
- return () => createVNode("span", null, [unref(renderText)]);
2151
- }
2152
- };
2153
- const DEFAULT_SORT_FN = (sortInfo) => {
2154
- const { field, order } = sortInfo;
2155
- return field && order ? { field, order } : {};
2156
- };
2157
- const TableProps = {
2158
- autoFetch: { type: Boolean, default: false },
2159
- authPrefix: { type: String },
2160
- clickToSelectRow: { type: Boolean, default: false },
2161
- tableSetting: { type: [Boolean, Object], default: () => ({}) },
2162
- striped: { type: Boolean, default: true },
2163
- clearSelectOnPageChange: { type: Boolean, default: false },
2164
- resizable: { type: Boolean, default: true },
2165
- minWidth: { type: Number },
2166
- maxWidth: { type: Number },
2167
- virtual: { type: Boolean, default: false },
2168
- sortFn: { type: Function, default: DEFAULT_SORT_FN },
2169
- defSort: { type: Object, default: null },
2170
- filterFn: {
2171
- type: Function,
2172
- default: (data) => {
2173
- return data;
2174
- }
2175
- },
2176
- rowKey: {
2177
- type: [String, Number],
2178
- default: "id"
2179
- },
2180
- columnCode: { type: String, default: "" },
2181
- columns: { type: [Array], default: () => [] },
2182
- slotsTemplate: { type: Object, default: () => ({}) },
2183
- showIndexColumn: { type: Boolean, default: false },
2184
- showCheckboxColumn: { type: Boolean, default: true },
2185
- expandActions: { type: Boolean, default: false },
2186
- ellipsis: { type: Boolean, default: true },
2187
- dataSource: { type: Array, default: null },
2188
- bordered: { type: Boolean, default: true },
2189
- pagination: {
2190
- type: [Object, Boolean],
2191
- default: null
2192
- },
2193
- loading: { type: Boolean, default: false },
2194
- rowClassName: { type: Function },
2195
- scroll: {
2196
- type: Object,
2197
- default: {}
2198
- },
2199
- onTableChange: {
2200
- type: Function,
2201
- default: () => ({})
2202
- },
2203
- onDownload: {
2204
- type: Function,
2205
- default: (excelData) => ({})
2206
- },
2207
- rowSelection: {
2208
- type: Object,
2209
- default: {
2210
- type: "checkbox",
2211
- fixed: true
2212
- }
2213
- },
2214
- customRow: {
2215
- type: Function,
2216
- default: () => ({})
2217
- },
2218
- childrenColumnName: {
2219
- type: String,
2220
- default: "children"
2221
- },
2222
- indexColumnProps: {
2223
- type: [Array],
2224
- default: () => []
2225
- },
2226
- isTreeTable: {
2227
- type: Boolean,
2228
- default: false
2229
- },
2230
- checkStrictly: {
2231
- type: Boolean,
2232
- default: false
2233
- },
2234
- operations: {
2235
- type: Object
2236
- },
2237
- toolbar: {
2238
- type: Array
2239
- },
2240
- registerInstance: {
2241
- type: Function
2242
- },
2243
- onSearch: {
2244
- type: Function,
2245
- default: (params) => {
2246
- }
2247
- },
2248
- onOPenAddDialog: {
2249
- type: Function,
2250
- default: (params) => ({})
2251
- },
2252
- onOpenUpdateDialog: {
2253
- type: Function,
2254
- default: (row, index) => ({})
2255
- },
2256
- onDelete: {
2257
- type: Function,
2258
- default: (row, index) => ({})
2259
- },
2260
- onDeletes: {
2261
- type: Function,
2262
- default: (params) => ({})
2263
- }
2264
- };
2265
- const _hoisted_1 = /* @__PURE__ */ createElementVNode("img", {
2266
- src: _imports_0,
2267
- class: "w-72 m-auto my-5"
2268
- }, null, -1);
2269
- const _hoisted_2 = /* @__PURE__ */ createElementVNode("span", { class: "block -mt-10" }, "\u62B1\u6B49, \u627E\u4E0D\u5230\u60A8\u60F3\u8981\u7684\u6570\u636E~", -1);
2270
- const _sfc_main = /* @__PURE__ */ defineComponent({
2271
- __name: "index",
2272
- props: TableProps,
2273
- emits: [
2274
- "register",
2275
- "selection-change",
2276
- "columns-change",
2277
- "row-click",
2278
- "row-dbClick",
2279
- "row-contextmenu",
2280
- "row-mouseenter",
2281
- "row-mouseleave",
2282
- "edit-change"
2283
- ],
2284
- setup(__props, { emit: emits }) {
2285
- const props2 = __props;
2286
- const tableElRef = ref(null);
2287
- const attrs = useAttrs();
2288
- const slots = useSlots$1();
2289
- const innerPropsRef = ref();
2290
- const getProps = computed(() => {
2291
- return { ...props2, ...unref(innerPropsRef) };
2292
- });
2293
- const { getRowClassName } = useRows(getProps);
2294
- const tableCls = computed(() => {
2295
- return ["dt-table", "box-border", { "dt-table-no-pagation": !unref(getProps).pagination }];
2296
- });
2297
- const { getLoading, setLoading } = useLoading(getProps);
2298
- const { getPaginationInfo, setPagination, getPagination } = usePagination(getProps);
2299
- const {
2300
- getViewColumns,
2301
- getColumnsRef,
2302
- getColumns,
2303
- setColumns,
2304
- setColumnsByDataIndex,
2305
- getCacheColumns
2306
- } = useColumns(getProps, getPaginationInfo, tableElRef);
2307
- const {
2308
- getRowSelectionRef,
2309
- clearSelectedRowKeys,
2310
- getRowSelection,
2311
- getSelectRows,
2312
- getSelectedRowKeys,
2313
- setSelectedRowKeys
2314
- } = useRowSelection(getProps, emits);
2315
- const { getScrollRef, filterSource } = useTableScroll(
2316
- getProps,
2317
- tableElRef,
2318
- getColumnsRef,
2319
- getRowSelectionRef
2320
- );
2321
- const handlers = {
2322
- onColumnsChange: (data) => {
2323
- emits("columns-change", data);
2324
- unref(getProps).onColumnsChange?.(data);
2325
- }
2326
- };
2327
- const { getHeaderProps } = useTableHeader(getProps, slots, handlers);
2328
- const { customRow } = useCustomRow(getProps, {
2329
- setSelectedRowKeys,
2330
- getSelectedRowKeys,
2331
- clearSelectedRowKeys,
2332
- emits
2333
- });
2334
- const { handleTableChange, findTableDataRecord, updateTableDataRecord } = useDataSource(
2335
- getProps,
2336
- {
2337
- getPaginationInfo,
2338
- setPagination,
2339
- clearSelectedRowKeys
2340
- }
2341
- );
2342
- const getBind = computed(() => {
2343
- return {
2344
- ...attrs,
2345
- ...unref(getProps),
2346
- ...unref(getHeaderProps),
2347
- scroll: unref(getScrollRef),
2348
- loading: unref(getLoading),
2349
- dataSource: toRaw$1(unref(filterSource)),
2350
- pagination: toRaw$1(unref(getPaginationInfo)),
2351
- rowSelection: unref(getRowSelectionRef),
2352
- rowKey: unref(getProps).rowKey,
2353
- columns: unref(getViewColumns),
2354
- tableLayout: "fixed",
2355
- class: unref(tableCls),
2356
- customRow,
2357
- onChange: handleTableChange,
2358
- onResizeColumn: (w, col) => {
2359
- col.width = w;
2360
- setColumnsByDataIndex(col.dataIndex, col);
2361
- }
2362
- };
2363
- });
2364
- function setProps(props22) {
2365
- let allProps = {
2366
- ...unref(innerPropsRef),
2367
- ...props22
2368
- };
2369
- if (isObject(props22.tableSetting)) {
2370
- let historyTableSetting = unref(innerPropsRef)?.tableSetting;
2371
- allProps.tableSetting = {
2372
- ...isBoolean(historyTableSetting) ? {} : historyTableSetting,
2373
- ...props22.tableSetting
2374
- };
2375
- }
2376
- innerPropsRef.value = allProps;
2377
- }
2378
- const tableAction = {
2379
- setProps,
2380
- setLoading,
2381
- clearSelectedRowKeys,
2382
- getSelectRows,
2383
- getSelectedRowKeys,
2384
- setSelectedRowKeys,
2385
- getRowSelection,
2386
- getColumns,
2387
- setColumns,
2388
- setColumnsByDataIndex,
2389
- getCacheColumns,
2390
- findTableDataRecord,
2391
- updateTableDataRecord,
2392
- getPagination,
2393
- emits
2394
- };
2395
- createTableInstance({ ...tableAction, tableElRef, getBind, getProps });
2396
- emits("register", tableAction);
2397
- if (unref(innerPropsRef)?.registerInstance) {
2398
- unref(innerPropsRef)?.registerInstance(tableAction);
2399
- }
2400
- onMounted(() => {
2401
- if (unref(getProps).autoFetch) {
2402
- unref(getProps)?.onSearch({});
2403
- }
2404
- });
2405
- return (_ctx, _cache) => {
2406
- const _component_ATable = Table;
2407
- return openBlock(), createBlock(_component_ATable, mergeProps({
2408
- ref_key: "tableElRef",
2409
- ref: tableElRef
2410
- }, unref(getBind), {
2411
- "row-class-name": unref(getRowClassName),
2412
- onChange: unref(handleTableChange)
2413
- }), createSlots({
2414
- bodyCell: withCtx(({ column, record, index }) => [
2415
- _ctx.$slots.bodyCell ? renderSlot(_ctx.$slots, "bodyCell", normalizeProps(mergeProps({ key: 0 }, { column, record, index }))) : createCommentVNode("", true),
2416
- column.slot ? renderSlot(_ctx.$slots, column.slot, normalizeProps(mergeProps({ key: 1 }, { column, record, index }))) : createCommentVNode("", true),
2417
- column?.render && !column.slot && !_ctx.$slots.bodyCell ? (openBlock(), createBlock(_sfc_main$1, {
2418
- key: 2,
2419
- column,
2420
- record,
2421
- index
2422
- }, null, 8, ["column", "record", "index"])) : createCommentVNode("", true)
2423
- ]),
2424
- emptyText: withCtx(() => [
2425
- _hoisted_1,
2426
- _hoisted_2
2427
- ]),
2428
- _: 2
2429
- }, [
2430
- renderList(Object.keys(_ctx.$slots), (item) => {
2431
- return {
2432
- name: item,
2433
- fn: withCtx((data) => [
2434
- renderSlot(_ctx.$slots, item, normalizeProps(guardReactiveProps(data || {})))
2435
- ])
2436
- };
2437
- })
2438
- ]), 1040, ["row-class-name", "onChange"]);
2439
- };
2440
- }
2441
- });
2442
- export {
2443
- _sfc_main as DtTable,
2444
- useTable
2445
- };