@cfmm/umi-plugins-ui-v2 0.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 (526) hide show
  1. package/README.md +29 -0
  2. package/dist/cjs/components/ActionLogDrawer.tpl +148 -0
  3. package/dist/cjs/components/AddDrawerForm.tpl +38 -0
  4. package/dist/cjs/components/AuthorizeRender.tpl +11 -0
  5. package/dist/cjs/components/Authorized.tpl +39 -0
  6. package/dist/cjs/components/AuthorizedRoute.tpl +33 -0
  7. package/dist/cjs/components/AvatarDropdown.tpl +101 -0
  8. package/dist/cjs/components/CheckPermissions.tpl +100 -0
  9. package/dist/cjs/components/CopyButton.tpl +49 -0
  10. package/dist/cjs/components/CrudTable.tpl +650 -0
  11. package/dist/cjs/components/DicDropDownList.tpl +60 -0
  12. package/dist/cjs/components/DndTabs.tpl +159 -0
  13. package/dist/cjs/components/DndTag.tpl +89 -0
  14. package/dist/cjs/components/DropdownButton.tpl +123 -0
  15. package/dist/cjs/components/DynamicIcon.tpl +73 -0
  16. package/dist/cjs/components/DynamicIconModal.tpl +196 -0
  17. package/dist/cjs/components/EditMultiLangForm.tpl +366 -0
  18. package/dist/cjs/components/ExportPageWrapper.tpl +224 -0
  19. package/dist/cjs/components/FlieListModal.tpl +79 -0
  20. package/dist/cjs/components/FormUpload.tpl +561 -0
  21. package/dist/cjs/components/GlobalFooter.tpl +21 -0
  22. package/dist/cjs/components/GlobalHeader.less +51 -0
  23. package/dist/cjs/components/GlobalHeader.tpl +313 -0
  24. package/dist/cjs/components/HeaderSearch.less +32 -0
  25. package/dist/cjs/components/HeaderSearch.tpl +92 -0
  26. package/dist/cjs/components/HighlightStr.tpl +41 -0
  27. package/dist/cjs/components/ImportDataUpload.tpl +94 -0
  28. package/dist/cjs/components/ImportExecl.less +10 -0
  29. package/dist/cjs/components/ImportExecl.tpl +108 -0
  30. package/dist/cjs/components/KeepAliveDndTabs.tpl +151 -0
  31. package/dist/cjs/components/KeepAliveTabs.less +23 -0
  32. package/dist/cjs/components/KeepAliveTabs.tpl +136 -0
  33. package/dist/cjs/components/Loading.css +19 -0
  34. package/dist/cjs/components/LoadingSvg.tpl +14 -0
  35. package/dist/cjs/components/MenuFooter.css +13 -0
  36. package/dist/cjs/components/MenuFooter.tpl +24 -0
  37. package/dist/cjs/components/MyColorPicker.tpl +19 -0
  38. package/dist/cjs/components/MyFooterToolbar.css +6 -0
  39. package/dist/cjs/components/MyFooterToolbar.tpl +56 -0
  40. package/dist/cjs/components/MyPageContainer.tpl +43 -0
  41. package/dist/cjs/components/MyReactEcharts.tpl +11 -0
  42. package/dist/cjs/components/MySelect.tpl +267 -0
  43. package/dist/cjs/components/MySelectLang.tpl +22 -0
  44. package/dist/cjs/components/MySetps.tpl +85 -0
  45. package/dist/cjs/components/MyTagList.tpl +57 -0
  46. package/dist/cjs/components/MyUpload.less +39 -0
  47. package/dist/cjs/components/MyUpload.tpl +609 -0
  48. package/dist/cjs/components/NoFoundPage.tpl +46 -0
  49. package/dist/cjs/components/PDFWrapper.tpl +96 -0
  50. package/dist/cjs/components/PageLoading.tpl +16 -0
  51. package/dist/cjs/components/PermissionSelect.tpl +230 -0
  52. package/dist/cjs/components/ProFormUTCDatePicker.tpl +20 -0
  53. package/dist/cjs/components/ProFormUTCRangePicker.tpl +20 -0
  54. package/dist/cjs/components/PromiseRender.tpl +93 -0
  55. package/dist/cjs/components/QrCodeModal.tpl +19 -0
  56. package/dist/cjs/components/RandomAvatar.tpl +34 -0
  57. package/dist/cjs/components/RefDrawerForm.tpl +75 -0
  58. package/dist/cjs/components/ReportTable.tpl +336 -0
  59. package/dist/cjs/components/Secured.tpl +66 -0
  60. package/dist/cjs/components/ThemeSwitch.tpl +74 -0
  61. package/dist/cjs/components/TimeTypeSelect.tpl +35 -0
  62. package/dist/cjs/components/TipsTableTitle.tpl +37 -0
  63. package/dist/cjs/components/UTCDatePicker.tpl +107 -0
  64. package/dist/cjs/components/UTCRangePicker.tpl +142 -0
  65. package/dist/cjs/components/UpdateForm.tpl +32 -0
  66. package/dist/cjs/components/UserDisable.tpl +58 -0
  67. package/dist/cjs/components/UserNoPagePermission.tpl +58 -0
  68. package/dist/cjs/components/UserNoPermission.tpl +58 -0
  69. package/dist/cjs/components/ViewTableItemDrawer.tpl +29 -0
  70. package/dist/cjs/components/VolumeFormItem.tpl +59 -0
  71. package/dist/cjs/components/WangEditor.css +53 -0
  72. package/dist/cjs/components/WangEditor.tpl +174 -0
  73. package/dist/cjs/components/WangEditorView.tpl +24 -0
  74. package/dist/cjs/components/fileTypeMap.tpl +96 -0
  75. package/dist/cjs/components/renderAuthorize.tpl +44 -0
  76. package/dist/cjs/context/KeepAliveTabs.tpl +13 -0
  77. package/dist/cjs/context/index.tpl +1 -0
  78. package/dist/cjs/hooks/useAction.tpl +126 -0
  79. package/dist/cjs/hooks/useActionLocales.tpl +108 -0
  80. package/dist/cjs/hooks/useAuthority.tpl +27 -0
  81. package/dist/cjs/hooks/useColumnTitle.tpl +47 -0
  82. package/dist/cjs/hooks/useFormatLocale.tpl +82 -0
  83. package/dist/cjs/hooks/useKeepAliveTabs.tpl +255 -0
  84. package/dist/cjs/hooks/useMatchRoute.tpl +76 -0
  85. package/dist/cjs/hooks/useMemoizedFn.tpl +32 -0
  86. package/dist/cjs/hooks/useOutlet.tpl +20 -0
  87. package/dist/cjs/hooks/usePageExport.tpl +155 -0
  88. package/dist/cjs/hooks/useQueryTableList.tpl +91 -0
  89. package/dist/cjs/hooks/useRouteAuth.tpl +122 -0
  90. package/dist/cjs/index.d.ts +6 -0
  91. package/dist/cjs/index.js +122 -0
  92. package/dist/cjs/locales/en-US.d.ts +163 -0
  93. package/dist/cjs/locales/en-US.js +16 -0
  94. package/dist/cjs/locales/enUS/ActionLogDrawer.d.ts +6 -0
  95. package/dist/cjs/locales/enUS/ActionLogDrawer.js +11 -0
  96. package/dist/cjs/locales/enUS/DynamicIconModal.d.ts +4 -0
  97. package/dist/cjs/locales/enUS/DynamicIconModal.js +9 -0
  98. package/dist/cjs/locales/enUS/EditMultiLangForm.d.ts +16 -0
  99. package/dist/cjs/locales/enUS/EditMultiLangForm.js +21 -0
  100. package/dist/cjs/locales/enUS/File.d.ts +54 -0
  101. package/dist/cjs/locales/enUS/File.js +60 -0
  102. package/dist/cjs/locales/enUS/GlobalFooter.d.ts +4 -0
  103. package/dist/cjs/locales/enUS/GlobalFooter.js +9 -0
  104. package/dist/cjs/locales/enUS/GlobalHeader.d.ts +10 -0
  105. package/dist/cjs/locales/enUS/GlobalHeader.js +15 -0
  106. package/dist/cjs/locales/enUS/MyFooterToolbar.d.ts +5 -0
  107. package/dist/cjs/locales/enUS/MyFooterToolbar.js +10 -0
  108. package/dist/cjs/locales/enUS/PermissionSelect.d.ts +4 -0
  109. package/dist/cjs/locales/enUS/PermissionSelect.js +9 -0
  110. package/dist/cjs/locales/enUS/TimeTypeSelect.d.ts +6 -0
  111. package/dist/cjs/locales/enUS/TimeTypeSelect.js +11 -0
  112. package/dist/cjs/locales/enUS/common.d.ts +74 -0
  113. package/dist/cjs/locales/enUS/common.js +82 -0
  114. package/dist/cjs/locales/enUS/index.d.ts +163 -0
  115. package/dist/cjs/locales/enUS/index.js +25 -0
  116. package/dist/cjs/locales/enUS/pages.d.ts +10 -0
  117. package/dist/cjs/locales/enUS/pages.js +15 -0
  118. package/dist/cjs/locales/th-TH.d.ts +163 -0
  119. package/dist/cjs/locales/th-TH.js +16 -0
  120. package/dist/cjs/locales/zh-CN.d.ts +163 -0
  121. package/dist/cjs/locales/zh-CN.js +16 -0
  122. package/dist/cjs/locales/zh-TW.d.ts +162 -0
  123. package/dist/cjs/locales/zh-TW.js +16 -0
  124. package/dist/cjs/locales/zhCN/ActionLogDrawer.d.ts +6 -0
  125. package/dist/cjs/locales/zhCN/ActionLogDrawer.js +11 -0
  126. package/dist/cjs/locales/zhCN/DynamicIconModal.d.ts +4 -0
  127. package/dist/cjs/locales/zhCN/DynamicIconModal.js +9 -0
  128. package/dist/cjs/locales/zhCN/EditMultiLangForm.d.ts +16 -0
  129. package/dist/cjs/locales/zhCN/EditMultiLangForm.js +21 -0
  130. package/dist/cjs/locales/zhCN/File.d.ts +54 -0
  131. package/dist/cjs/locales/zhCN/File.js +60 -0
  132. package/dist/cjs/locales/zhCN/GlobalFooter.d.ts +4 -0
  133. package/dist/cjs/locales/zhCN/GlobalFooter.js +9 -0
  134. package/dist/cjs/locales/zhCN/GlobalHeader.d.ts +10 -0
  135. package/dist/cjs/locales/zhCN/GlobalHeader.js +15 -0
  136. package/dist/cjs/locales/zhCN/MyFooterToolbar.d.ts +5 -0
  137. package/dist/cjs/locales/zhCN/MyFooterToolbar.js +10 -0
  138. package/dist/cjs/locales/zhCN/PermissionSelect.d.ts +4 -0
  139. package/dist/cjs/locales/zhCN/PermissionSelect.js +9 -0
  140. package/dist/cjs/locales/zhCN/TimeTypeSelect.d.ts +6 -0
  141. package/dist/cjs/locales/zhCN/TimeTypeSelect.js +11 -0
  142. package/dist/cjs/locales/zhCN/common.d.ts +74 -0
  143. package/dist/cjs/locales/zhCN/common.js +82 -0
  144. package/dist/cjs/locales/zhCN/index.d.ts +163 -0
  145. package/dist/cjs/locales/zhCN/index.js +25 -0
  146. package/dist/cjs/locales/zhCN/pages.d.ts +10 -0
  147. package/dist/cjs/locales/zhCN/pages.js +15 -0
  148. package/dist/cjs/locales/zhTW/ActionLogDrawer.d.ts +6 -0
  149. package/dist/cjs/locales/zhTW/ActionLogDrawer.js +11 -0
  150. package/dist/cjs/locales/zhTW/DynamicIconModal.d.ts +4 -0
  151. package/dist/cjs/locales/zhTW/DynamicIconModal.js +9 -0
  152. package/dist/cjs/locales/zhTW/EditMultiLangForm.d.ts +16 -0
  153. package/dist/cjs/locales/zhTW/EditMultiLangForm.js +21 -0
  154. package/dist/cjs/locales/zhTW/File.d.ts +53 -0
  155. package/dist/cjs/locales/zhTW/File.js +59 -0
  156. package/dist/cjs/locales/zhTW/GlobalFooter.d.ts +4 -0
  157. package/dist/cjs/locales/zhTW/GlobalFooter.js +9 -0
  158. package/dist/cjs/locales/zhTW/GlobalHeader.d.ts +10 -0
  159. package/dist/cjs/locales/zhTW/GlobalHeader.js +15 -0
  160. package/dist/cjs/locales/zhTW/MyFooterToolbar.d.ts +5 -0
  161. package/dist/cjs/locales/zhTW/MyFooterToolbar.js +10 -0
  162. package/dist/cjs/locales/zhTW/PermissionSelect.d.ts +4 -0
  163. package/dist/cjs/locales/zhTW/PermissionSelect.js +9 -0
  164. package/dist/cjs/locales/zhTW/TimeTypeSelect.d.ts +6 -0
  165. package/dist/cjs/locales/zhTW/TimeTypeSelect.js +11 -0
  166. package/dist/cjs/locales/zhTW/common.d.ts +74 -0
  167. package/dist/cjs/locales/zhTW/common.js +82 -0
  168. package/dist/cjs/locales/zhTW/index.d.ts +162 -0
  169. package/dist/cjs/locales/zhTW/index.js +25 -0
  170. package/dist/cjs/locales/zhTW/pages.d.ts +10 -0
  171. package/dist/cjs/locales/zhTW/pages.js +15 -0
  172. package/dist/cjs/services/index.tpl +160 -0
  173. package/dist/cjs/types/ActionLogDrawerTypes.d.ts +1 -0
  174. package/dist/cjs/types/ActionLogDrawerTypes.js +7 -0
  175. package/dist/cjs/types/AvatarDropdownTypes.d.ts +1 -0
  176. package/dist/cjs/types/AvatarDropdownTypes.js +7 -0
  177. package/dist/cjs/types/CrudTableTypes.d.ts +1 -0
  178. package/dist/cjs/types/CrudTableTypes.js +7 -0
  179. package/dist/cjs/types/DatePickerTypes.d.ts +1 -0
  180. package/dist/cjs/types/DatePickerTypes.js +7 -0
  181. package/dist/cjs/types/DicDropDownListTypes.d.ts +1 -0
  182. package/dist/cjs/types/DicDropDownListTypes.js +7 -0
  183. package/dist/cjs/types/DndTabsTypes.d.ts +1 -0
  184. package/dist/cjs/types/DndTabsTypes.js +7 -0
  185. package/dist/cjs/types/DndTagTypes.d.ts +1 -0
  186. package/dist/cjs/types/DndTagTypes.js +7 -0
  187. package/dist/cjs/types/DropdownButtonTypes.d.ts +2 -0
  188. package/dist/cjs/types/DropdownButtonTypes.js +8 -0
  189. package/dist/cjs/types/DynamicIconTypes.d.ts +1 -0
  190. package/dist/cjs/types/DynamicIconTypes.js +7 -0
  191. package/dist/cjs/types/EditMultiLangFormTypes.d.ts +1 -0
  192. package/dist/cjs/types/EditMultiLangFormTypes.js +7 -0
  193. package/dist/cjs/types/ExportPageWrapperTypes.d.ts +1 -0
  194. package/dist/cjs/types/ExportPageWrapperTypes.js +7 -0
  195. package/dist/cjs/types/GlobalHeaderTypes.d.ts +1 -0
  196. package/dist/cjs/types/GlobalHeaderTypes.js +7 -0
  197. package/dist/cjs/types/HeaderSearchTypes.d.ts +1 -0
  198. package/dist/cjs/types/HeaderSearchTypes.js +7 -0
  199. package/dist/cjs/types/HighlightStrTypes.d.ts +1 -0
  200. package/dist/cjs/types/HighlightStrTypes.js +7 -0
  201. package/dist/cjs/types/ImportDataUploadTypes.d.ts +1 -0
  202. package/dist/cjs/types/ImportDataUploadTypes.js +7 -0
  203. package/dist/cjs/types/ImportExeclTypes.d.ts +1 -0
  204. package/dist/cjs/types/ImportExeclTypes.js +7 -0
  205. package/dist/cjs/types/KeepAliveTabsTypes.d.ts +1 -0
  206. package/dist/cjs/types/KeepAliveTabsTypes.js +7 -0
  207. package/dist/cjs/types/MenuFooterTypes.d.ts +1 -0
  208. package/dist/cjs/types/MenuFooterTypes.js +7 -0
  209. package/dist/cjs/types/MyFooterToolbarTypes.d.ts +1 -0
  210. package/dist/cjs/types/MyFooterToolbarTypes.js +7 -0
  211. package/dist/cjs/types/MyPageContainerTypes.d.ts +1 -0
  212. package/dist/cjs/types/MyPageContainerTypes.js +7 -0
  213. package/dist/cjs/types/MySelectLangTypes.d.ts +1 -0
  214. package/dist/cjs/types/MySelectLangTypes.js +7 -0
  215. package/dist/cjs/types/MySelectTypes.d.ts +1 -0
  216. package/dist/cjs/types/MySelectTypes.js +7 -0
  217. package/dist/cjs/types/MySetpsTypes.d.ts +1 -0
  218. package/dist/cjs/types/MySetpsTypes.js +7 -0
  219. package/dist/cjs/types/MyTagListTypes.d.ts +1 -0
  220. package/dist/cjs/types/MyTagListTypes.js +7 -0
  221. package/dist/cjs/types/MyUploadTypes.d.ts +1 -0
  222. package/dist/cjs/types/MyUploadTypes.js +7 -0
  223. package/dist/cjs/types/PermissionSelectTypes.d.ts +1 -0
  224. package/dist/cjs/types/PermissionSelectTypes.js +7 -0
  225. package/dist/cjs/types/QrCodeModalTypes.d.ts +1 -0
  226. package/dist/cjs/types/QrCodeModalTypes.js +7 -0
  227. package/dist/cjs/types/RandomAvatarTypes.d.ts +1 -0
  228. package/dist/cjs/types/RandomAvatarTypes.js +7 -0
  229. package/dist/cjs/types/RefDrawerFormTypes.d.ts +1 -0
  230. package/dist/cjs/types/RefDrawerFormTypes.js +7 -0
  231. package/dist/cjs/types/ReportTableTypes.d.ts +1 -0
  232. package/dist/cjs/types/ReportTableTypes.js +7 -0
  233. package/dist/cjs/types/ThemeSwitchTypes.d.ts +1 -0
  234. package/dist/cjs/types/ThemeSwitchTypes.js +7 -0
  235. package/dist/cjs/types/ViewTableItemDrawerTypes.d.ts +1 -0
  236. package/dist/cjs/types/ViewTableItemDrawerTypes.js +7 -0
  237. package/dist/cjs/types/VolumeFormItemTypes.d.ts +1 -0
  238. package/dist/cjs/types/VolumeFormItemTypes.js +7 -0
  239. package/dist/cjs/types/WangEditorTypes.d.ts +1 -0
  240. package/dist/cjs/types/WangEditorTypes.js +7 -0
  241. package/dist/cjs/types/index.d.ts +35 -0
  242. package/dist/cjs/types/index.js +250 -0
  243. package/dist/cjs/types/servicesTypes.d.ts +1 -0
  244. package/dist/cjs/types/servicesTypes.js +7 -0
  245. package/dist/cjs/utils/Authorized.tpl +17 -0
  246. package/dist/cjs/utils/authority.tpl +51 -0
  247. package/dist/cjs/utils/authorityFunction.tpl +17 -0
  248. package/dist/cjs/utils/excelHelper.tpl +825 -0
  249. package/dist/cjs/utils/exportPage.tpl +784 -0
  250. package/dist/cjs/utils/fileHelper.tpl +251 -0
  251. package/dist/cjs/utils/importHelper.tpl +283 -0
  252. package/dist/cjs/utils/utils.tpl +26 -0
  253. package/dist/cjs/utils/xmlRequest.tpl +92 -0
  254. package/dist/cjs/writeTmpFile/index.d.ts +5 -0
  255. package/dist/cjs/writeTmpFile/index.js +34 -0
  256. package/dist/cjs/writeTmpFile/runtime.d.ts +5 -0
  257. package/dist/cjs/writeTmpFile/runtime.js +15 -0
  258. package/dist/cjs/writeTmpFile/writeConstants.d.ts +6 -0
  259. package/dist/cjs/writeTmpFile/writeConstants.js +13 -0
  260. package/dist/cjs/writeTmpFile/writeIndex.d.ts +5 -0
  261. package/dist/cjs/writeTmpFile/writeIndex.js +10 -0
  262. package/dist/cjs/writeTmpFile/writeTypes.d.ts +5 -0
  263. package/dist/cjs/writeTmpFile/writeTypes.js +12 -0
  264. package/dist/esm/components/ActionLogDrawer.tpl +148 -0
  265. package/dist/esm/components/AddDrawerForm.tpl +38 -0
  266. package/dist/esm/components/AuthorizeRender.tpl +11 -0
  267. package/dist/esm/components/Authorized.tpl +39 -0
  268. package/dist/esm/components/AuthorizedRoute.tpl +33 -0
  269. package/dist/esm/components/AvatarDropdown.tpl +101 -0
  270. package/dist/esm/components/CheckPermissions.tpl +100 -0
  271. package/dist/esm/components/CopyButton.tpl +49 -0
  272. package/dist/esm/components/CrudTable.tpl +650 -0
  273. package/dist/esm/components/DicDropDownList.tpl +60 -0
  274. package/dist/esm/components/DndTabs.tpl +159 -0
  275. package/dist/esm/components/DndTag.tpl +89 -0
  276. package/dist/esm/components/DropdownButton.tpl +123 -0
  277. package/dist/esm/components/DynamicIcon.tpl +73 -0
  278. package/dist/esm/components/DynamicIconModal.tpl +196 -0
  279. package/dist/esm/components/EditMultiLangForm.tpl +366 -0
  280. package/dist/esm/components/ExportPageWrapper.tpl +224 -0
  281. package/dist/esm/components/FlieListModal.tpl +79 -0
  282. package/dist/esm/components/FormUpload.tpl +561 -0
  283. package/dist/esm/components/GlobalFooter.tpl +21 -0
  284. package/dist/esm/components/GlobalHeader.less +51 -0
  285. package/dist/esm/components/GlobalHeader.tpl +313 -0
  286. package/dist/esm/components/HeaderSearch.less +32 -0
  287. package/dist/esm/components/HeaderSearch.tpl +92 -0
  288. package/dist/esm/components/HighlightStr.tpl +41 -0
  289. package/dist/esm/components/ImportDataUpload.tpl +94 -0
  290. package/dist/esm/components/ImportExecl.less +10 -0
  291. package/dist/esm/components/ImportExecl.tpl +108 -0
  292. package/dist/esm/components/KeepAliveDndTabs.tpl +151 -0
  293. package/dist/esm/components/KeepAliveTabs.less +23 -0
  294. package/dist/esm/components/KeepAliveTabs.tpl +136 -0
  295. package/dist/esm/components/Loading.css +19 -0
  296. package/dist/esm/components/LoadingSvg.tpl +14 -0
  297. package/dist/esm/components/MenuFooter.css +13 -0
  298. package/dist/esm/components/MenuFooter.tpl +24 -0
  299. package/dist/esm/components/MyColorPicker.tpl +19 -0
  300. package/dist/esm/components/MyFooterToolbar.css +6 -0
  301. package/dist/esm/components/MyFooterToolbar.tpl +56 -0
  302. package/dist/esm/components/MyPageContainer.tpl +43 -0
  303. package/dist/esm/components/MyReactEcharts.tpl +11 -0
  304. package/dist/esm/components/MySelect.tpl +267 -0
  305. package/dist/esm/components/MySelectLang.tpl +22 -0
  306. package/dist/esm/components/MySetps.tpl +85 -0
  307. package/dist/esm/components/MyTagList.tpl +57 -0
  308. package/dist/esm/components/MyUpload.less +39 -0
  309. package/dist/esm/components/MyUpload.tpl +609 -0
  310. package/dist/esm/components/NoFoundPage.tpl +46 -0
  311. package/dist/esm/components/PDFWrapper.tpl +96 -0
  312. package/dist/esm/components/PageLoading.tpl +16 -0
  313. package/dist/esm/components/PermissionSelect.tpl +230 -0
  314. package/dist/esm/components/ProFormUTCDatePicker.tpl +20 -0
  315. package/dist/esm/components/ProFormUTCRangePicker.tpl +20 -0
  316. package/dist/esm/components/PromiseRender.tpl +93 -0
  317. package/dist/esm/components/QrCodeModal.tpl +19 -0
  318. package/dist/esm/components/RandomAvatar.tpl +34 -0
  319. package/dist/esm/components/RefDrawerForm.tpl +75 -0
  320. package/dist/esm/components/ReportTable.tpl +336 -0
  321. package/dist/esm/components/Secured.tpl +66 -0
  322. package/dist/esm/components/ThemeSwitch.tpl +74 -0
  323. package/dist/esm/components/TimeTypeSelect.tpl +35 -0
  324. package/dist/esm/components/TipsTableTitle.tpl +37 -0
  325. package/dist/esm/components/UTCDatePicker.tpl +107 -0
  326. package/dist/esm/components/UTCRangePicker.tpl +142 -0
  327. package/dist/esm/components/UpdateForm.tpl +32 -0
  328. package/dist/esm/components/UserDisable.tpl +58 -0
  329. package/dist/esm/components/UserNoPagePermission.tpl +58 -0
  330. package/dist/esm/components/UserNoPermission.tpl +58 -0
  331. package/dist/esm/components/ViewTableItemDrawer.tpl +29 -0
  332. package/dist/esm/components/VolumeFormItem.tpl +59 -0
  333. package/dist/esm/components/WangEditor.css +53 -0
  334. package/dist/esm/components/WangEditor.tpl +174 -0
  335. package/dist/esm/components/WangEditorView.tpl +24 -0
  336. package/dist/esm/components/fileTypeMap.tpl +96 -0
  337. package/dist/esm/components/renderAuthorize.tpl +44 -0
  338. package/dist/esm/context/KeepAliveTabs.tpl +13 -0
  339. package/dist/esm/context/index.tpl +1 -0
  340. package/dist/esm/hooks/useAction.tpl +126 -0
  341. package/dist/esm/hooks/useActionLocales.tpl +108 -0
  342. package/dist/esm/hooks/useAuthority.tpl +27 -0
  343. package/dist/esm/hooks/useColumnTitle.tpl +47 -0
  344. package/dist/esm/hooks/useFormatLocale.tpl +82 -0
  345. package/dist/esm/hooks/useKeepAliveTabs.tpl +255 -0
  346. package/dist/esm/hooks/useMatchRoute.tpl +76 -0
  347. package/dist/esm/hooks/useMemoizedFn.tpl +32 -0
  348. package/dist/esm/hooks/useOutlet.tpl +20 -0
  349. package/dist/esm/hooks/usePageExport.tpl +155 -0
  350. package/dist/esm/hooks/useQueryTableList.tpl +91 -0
  351. package/dist/esm/hooks/useRouteAuth.tpl +122 -0
  352. package/dist/esm/index.d.ts +6 -0
  353. package/dist/esm/index.js +115 -0
  354. package/dist/esm/locales/en-US.d.ts +163 -0
  355. package/dist/esm/locales/en-US.js +9 -0
  356. package/dist/esm/locales/enUS/ActionLogDrawer.d.ts +6 -0
  357. package/dist/esm/locales/enUS/ActionLogDrawer.js +5 -0
  358. package/dist/esm/locales/enUS/DynamicIconModal.d.ts +4 -0
  359. package/dist/esm/locales/enUS/DynamicIconModal.js +3 -0
  360. package/dist/esm/locales/enUS/EditMultiLangForm.d.ts +16 -0
  361. package/dist/esm/locales/enUS/EditMultiLangForm.js +15 -0
  362. package/dist/esm/locales/enUS/File.d.ts +54 -0
  363. package/dist/esm/locales/enUS/File.js +54 -0
  364. package/dist/esm/locales/enUS/GlobalFooter.d.ts +4 -0
  365. package/dist/esm/locales/enUS/GlobalFooter.js +3 -0
  366. package/dist/esm/locales/enUS/GlobalHeader.d.ts +10 -0
  367. package/dist/esm/locales/enUS/GlobalHeader.js +9 -0
  368. package/dist/esm/locales/enUS/MyFooterToolbar.d.ts +5 -0
  369. package/dist/esm/locales/enUS/MyFooterToolbar.js +4 -0
  370. package/dist/esm/locales/enUS/PermissionSelect.d.ts +4 -0
  371. package/dist/esm/locales/enUS/PermissionSelect.js +3 -0
  372. package/dist/esm/locales/enUS/TimeTypeSelect.d.ts +6 -0
  373. package/dist/esm/locales/enUS/TimeTypeSelect.js +5 -0
  374. package/dist/esm/locales/enUS/common.d.ts +74 -0
  375. package/dist/esm/locales/enUS/common.js +76 -0
  376. package/dist/esm/locales/enUS/index.d.ts +163 -0
  377. package/dist/esm/locales/enUS/index.js +18 -0
  378. package/dist/esm/locales/enUS/pages.d.ts +10 -0
  379. package/dist/esm/locales/enUS/pages.js +9 -0
  380. package/dist/esm/locales/th-TH.d.ts +163 -0
  381. package/dist/esm/locales/th-TH.js +9 -0
  382. package/dist/esm/locales/zh-CN.d.ts +163 -0
  383. package/dist/esm/locales/zh-CN.js +9 -0
  384. package/dist/esm/locales/zh-TW.d.ts +162 -0
  385. package/dist/esm/locales/zh-TW.js +9 -0
  386. package/dist/esm/locales/zhCN/ActionLogDrawer.d.ts +6 -0
  387. package/dist/esm/locales/zhCN/ActionLogDrawer.js +5 -0
  388. package/dist/esm/locales/zhCN/DynamicIconModal.d.ts +4 -0
  389. package/dist/esm/locales/zhCN/DynamicIconModal.js +3 -0
  390. package/dist/esm/locales/zhCN/EditMultiLangForm.d.ts +16 -0
  391. package/dist/esm/locales/zhCN/EditMultiLangForm.js +15 -0
  392. package/dist/esm/locales/zhCN/File.d.ts +54 -0
  393. package/dist/esm/locales/zhCN/File.js +54 -0
  394. package/dist/esm/locales/zhCN/GlobalFooter.d.ts +4 -0
  395. package/dist/esm/locales/zhCN/GlobalFooter.js +3 -0
  396. package/dist/esm/locales/zhCN/GlobalHeader.d.ts +10 -0
  397. package/dist/esm/locales/zhCN/GlobalHeader.js +9 -0
  398. package/dist/esm/locales/zhCN/MyFooterToolbar.d.ts +5 -0
  399. package/dist/esm/locales/zhCN/MyFooterToolbar.js +4 -0
  400. package/dist/esm/locales/zhCN/PermissionSelect.d.ts +4 -0
  401. package/dist/esm/locales/zhCN/PermissionSelect.js +3 -0
  402. package/dist/esm/locales/zhCN/TimeTypeSelect.d.ts +6 -0
  403. package/dist/esm/locales/zhCN/TimeTypeSelect.js +5 -0
  404. package/dist/esm/locales/zhCN/common.d.ts +74 -0
  405. package/dist/esm/locales/zhCN/common.js +76 -0
  406. package/dist/esm/locales/zhCN/index.d.ts +163 -0
  407. package/dist/esm/locales/zhCN/index.js +18 -0
  408. package/dist/esm/locales/zhCN/pages.d.ts +10 -0
  409. package/dist/esm/locales/zhCN/pages.js +9 -0
  410. package/dist/esm/locales/zhTW/ActionLogDrawer.d.ts +6 -0
  411. package/dist/esm/locales/zhTW/ActionLogDrawer.js +5 -0
  412. package/dist/esm/locales/zhTW/DynamicIconModal.d.ts +4 -0
  413. package/dist/esm/locales/zhTW/DynamicIconModal.js +3 -0
  414. package/dist/esm/locales/zhTW/EditMultiLangForm.d.ts +16 -0
  415. package/dist/esm/locales/zhTW/EditMultiLangForm.js +15 -0
  416. package/dist/esm/locales/zhTW/File.d.ts +53 -0
  417. package/dist/esm/locales/zhTW/File.js +53 -0
  418. package/dist/esm/locales/zhTW/GlobalFooter.d.ts +4 -0
  419. package/dist/esm/locales/zhTW/GlobalFooter.js +3 -0
  420. package/dist/esm/locales/zhTW/GlobalHeader.d.ts +10 -0
  421. package/dist/esm/locales/zhTW/GlobalHeader.js +9 -0
  422. package/dist/esm/locales/zhTW/MyFooterToolbar.d.ts +5 -0
  423. package/dist/esm/locales/zhTW/MyFooterToolbar.js +4 -0
  424. package/dist/esm/locales/zhTW/PermissionSelect.d.ts +4 -0
  425. package/dist/esm/locales/zhTW/PermissionSelect.js +3 -0
  426. package/dist/esm/locales/zhTW/TimeTypeSelect.d.ts +6 -0
  427. package/dist/esm/locales/zhTW/TimeTypeSelect.js +5 -0
  428. package/dist/esm/locales/zhTW/common.d.ts +74 -0
  429. package/dist/esm/locales/zhTW/common.js +76 -0
  430. package/dist/esm/locales/zhTW/index.d.ts +162 -0
  431. package/dist/esm/locales/zhTW/index.js +18 -0
  432. package/dist/esm/locales/zhTW/pages.d.ts +10 -0
  433. package/dist/esm/locales/zhTW/pages.js +9 -0
  434. package/dist/esm/services/index.tpl +160 -0
  435. package/dist/esm/types/ActionLogDrawerTypes.d.ts +1 -0
  436. package/dist/esm/types/ActionLogDrawerTypes.js +1 -0
  437. package/dist/esm/types/AvatarDropdownTypes.d.ts +1 -0
  438. package/dist/esm/types/AvatarDropdownTypes.js +1 -0
  439. package/dist/esm/types/CrudTableTypes.d.ts +1 -0
  440. package/dist/esm/types/CrudTableTypes.js +1 -0
  441. package/dist/esm/types/DatePickerTypes.d.ts +1 -0
  442. package/dist/esm/types/DatePickerTypes.js +1 -0
  443. package/dist/esm/types/DicDropDownListTypes.d.ts +1 -0
  444. package/dist/esm/types/DicDropDownListTypes.js +1 -0
  445. package/dist/esm/types/DndTabsTypes.d.ts +1 -0
  446. package/dist/esm/types/DndTabsTypes.js +1 -0
  447. package/dist/esm/types/DndTagTypes.d.ts +1 -0
  448. package/dist/esm/types/DndTagTypes.js +1 -0
  449. package/dist/esm/types/DropdownButtonTypes.d.ts +2 -0
  450. package/dist/esm/types/DropdownButtonTypes.js +2 -0
  451. package/dist/esm/types/DynamicIconTypes.d.ts +1 -0
  452. package/dist/esm/types/DynamicIconTypes.js +1 -0
  453. package/dist/esm/types/EditMultiLangFormTypes.d.ts +1 -0
  454. package/dist/esm/types/EditMultiLangFormTypes.js +1 -0
  455. package/dist/esm/types/ExportPageWrapperTypes.d.ts +1 -0
  456. package/dist/esm/types/ExportPageWrapperTypes.js +1 -0
  457. package/dist/esm/types/GlobalHeaderTypes.d.ts +1 -0
  458. package/dist/esm/types/GlobalHeaderTypes.js +1 -0
  459. package/dist/esm/types/HeaderSearchTypes.d.ts +1 -0
  460. package/dist/esm/types/HeaderSearchTypes.js +1 -0
  461. package/dist/esm/types/HighlightStrTypes.d.ts +1 -0
  462. package/dist/esm/types/HighlightStrTypes.js +1 -0
  463. package/dist/esm/types/ImportDataUploadTypes.d.ts +1 -0
  464. package/dist/esm/types/ImportDataUploadTypes.js +1 -0
  465. package/dist/esm/types/ImportExeclTypes.d.ts +1 -0
  466. package/dist/esm/types/ImportExeclTypes.js +1 -0
  467. package/dist/esm/types/KeepAliveTabsTypes.d.ts +1 -0
  468. package/dist/esm/types/KeepAliveTabsTypes.js +1 -0
  469. package/dist/esm/types/MenuFooterTypes.d.ts +1 -0
  470. package/dist/esm/types/MenuFooterTypes.js +1 -0
  471. package/dist/esm/types/MyFooterToolbarTypes.d.ts +1 -0
  472. package/dist/esm/types/MyFooterToolbarTypes.js +1 -0
  473. package/dist/esm/types/MyPageContainerTypes.d.ts +1 -0
  474. package/dist/esm/types/MyPageContainerTypes.js +1 -0
  475. package/dist/esm/types/MySelectLangTypes.d.ts +1 -0
  476. package/dist/esm/types/MySelectLangTypes.js +1 -0
  477. package/dist/esm/types/MySelectTypes.d.ts +1 -0
  478. package/dist/esm/types/MySelectTypes.js +1 -0
  479. package/dist/esm/types/MySetpsTypes.d.ts +1 -0
  480. package/dist/esm/types/MySetpsTypes.js +1 -0
  481. package/dist/esm/types/MyTagListTypes.d.ts +1 -0
  482. package/dist/esm/types/MyTagListTypes.js +1 -0
  483. package/dist/esm/types/MyUploadTypes.d.ts +1 -0
  484. package/dist/esm/types/MyUploadTypes.js +1 -0
  485. package/dist/esm/types/PermissionSelectTypes.d.ts +1 -0
  486. package/dist/esm/types/PermissionSelectTypes.js +1 -0
  487. package/dist/esm/types/QrCodeModalTypes.d.ts +1 -0
  488. package/dist/esm/types/QrCodeModalTypes.js +1 -0
  489. package/dist/esm/types/RandomAvatarTypes.d.ts +1 -0
  490. package/dist/esm/types/RandomAvatarTypes.js +1 -0
  491. package/dist/esm/types/RefDrawerFormTypes.d.ts +1 -0
  492. package/dist/esm/types/RefDrawerFormTypes.js +1 -0
  493. package/dist/esm/types/ReportTableTypes.d.ts +1 -0
  494. package/dist/esm/types/ReportTableTypes.js +1 -0
  495. package/dist/esm/types/ThemeSwitchTypes.d.ts +1 -0
  496. package/dist/esm/types/ThemeSwitchTypes.js +1 -0
  497. package/dist/esm/types/ViewTableItemDrawerTypes.d.ts +1 -0
  498. package/dist/esm/types/ViewTableItemDrawerTypes.js +1 -0
  499. package/dist/esm/types/VolumeFormItemTypes.d.ts +1 -0
  500. package/dist/esm/types/VolumeFormItemTypes.js +1 -0
  501. package/dist/esm/types/WangEditorTypes.d.ts +1 -0
  502. package/dist/esm/types/WangEditorTypes.js +1 -0
  503. package/dist/esm/types/index.d.ts +35 -0
  504. package/dist/esm/types/index.js +35 -0
  505. package/dist/esm/types/servicesTypes.d.ts +1 -0
  506. package/dist/esm/types/servicesTypes.js +1 -0
  507. package/dist/esm/utils/Authorized.tpl +17 -0
  508. package/dist/esm/utils/authority.tpl +51 -0
  509. package/dist/esm/utils/authorityFunction.tpl +17 -0
  510. package/dist/esm/utils/excelHelper.tpl +825 -0
  511. package/dist/esm/utils/exportPage.tpl +784 -0
  512. package/dist/esm/utils/fileHelper.tpl +251 -0
  513. package/dist/esm/utils/importHelper.tpl +283 -0
  514. package/dist/esm/utils/utils.tpl +26 -0
  515. package/dist/esm/utils/xmlRequest.tpl +92 -0
  516. package/dist/esm/writeTmpFile/index.d.ts +5 -0
  517. package/dist/esm/writeTmpFile/index.js +5 -0
  518. package/dist/esm/writeTmpFile/runtime.d.ts +5 -0
  519. package/dist/esm/writeTmpFile/runtime.js +8 -0
  520. package/dist/esm/writeTmpFile/writeConstants.d.ts +6 -0
  521. package/dist/esm/writeTmpFile/writeConstants.js +7 -0
  522. package/dist/esm/writeTmpFile/writeIndex.d.ts +5 -0
  523. package/dist/esm/writeTmpFile/writeIndex.js +4 -0
  524. package/dist/esm/writeTmpFile/writeTypes.d.ts +5 -0
  525. package/dist/esm/writeTmpFile/writeTypes.js +7 -0
  526. package/package.json +58 -0
@@ -0,0 +1,159 @@
1
+ // @ts-nocheck
2
+ // This file is generated by Umi automatically
3
+ // DO NOT CHANGE IT MANUALLY!
4
+ import type { DragEndEvent, DragStartEvent } from '@dnd-kit/core';
5
+ import {
6
+ closestCenter,
7
+ defaultDropAnimationSideEffects,
8
+ DndContext,
9
+ DragOverlay,
10
+ PointerSensor,
11
+ useSensor,
12
+ } from '@dnd-kit/core';
13
+ import { arrayMove, horizontalListSortingStrategy, SortableContext, useSortable } from '@dnd-kit/sortable';
14
+ import { CSS } from '@dnd-kit/utilities';
15
+ import { Tabs } from 'antd';
16
+ import React, { useCallback, useMemo, useState } from 'react';
17
+ import { DndTabsProps } from "../types";
18
+
19
+ interface DraggableTabPaneProps extends React.HTMLAttributes<HTMLDivElement> {
20
+ 'data-node-key': string;
21
+ 'data-disabled'?: boolean;
22
+ }
23
+
24
+ const DraggableTabNode: React.FC<Readonly<DraggableTabPaneProps>> = (props) => {
25
+ const isDisabled = props['data-disabled'];
26
+
27
+ // 如果禁用拖动,直接返回原始节点
28
+ if (isDisabled) {
29
+ return React.cloneElement(props.children as React.ReactElement, {
30
+ style: {
31
+ ...props.style,
32
+ cursor: 'default',
33
+ },
34
+ });
35
+ }
36
+
37
+ const { attributes, listeners, setNodeRef, transform, transition, isDragging } = useSortable({
38
+ id: props['data-node-key'],
39
+ animateLayoutChanges: () => false, // 禁用布局动画可提高流畅度
40
+ disabled: isDisabled,
41
+ });
42
+
43
+ const style: React.CSSProperties = {
44
+ ...props.style,
45
+ transform: CSS.Translate.toString(transform),
46
+ transition,
47
+ cursor: 'pointer', // 改为指针样式
48
+ opacity: isDragging ? 0.4 : 1, // 拖动时降低透明度
49
+ zIndex: isDragging ? 1 : 0,
50
+ position: 'relative',
51
+ };
52
+
53
+ return React.cloneElement(props.children as React.ReactElement, {
54
+ ref: setNodeRef,
55
+ style,
56
+ ...attributes,
57
+ ...listeners,
58
+ });
59
+ };
60
+
61
+ /**
62
+ * 拖动排序的Tabs组件
63
+ * @param param onDragSorted 拖拽排序后的回调, 修改items回显
64
+ */
65
+ const DndTabs: React.FC<DndTabsProps> = (props) => {
66
+ const { items = [], onDragSorted, disabledKeys = [], ...restProps } = props;
67
+ const [activeId, setActiveId] = useState<string | null>(null);
68
+
69
+ // 创建传感器,优化拖拽体验
70
+ const pointerSensor = useSensor(PointerSensor, {
71
+ activationConstraint: {
72
+ distance: 8,
73
+ },
74
+ });
75
+
76
+ const sensors = useMemo(() => [pointerSensor], [pointerSensor]);
77
+
78
+ // 拖拽开始时的处理
79
+ const handleDragStart = useCallback((event: DragStartEvent) => {
80
+ if (event.active?.id) {
81
+ setActiveId(String(event.active.id));
82
+ }
83
+ }, []);
84
+
85
+ // 拖拽结束时的处理
86
+ const onDragEnd = useCallback(
87
+ (event: DragEndEvent) => {
88
+ setActiveId(null);
89
+
90
+ const { active, over } = event;
91
+ if (active?.id !== over?.id && items?.length && over?.id) {
92
+ const activeIndex = items.findIndex((i) => i.key === active.id);
93
+ const overIndex = items.findIndex((i) => i.key === over.id);
94
+
95
+ if (activeIndex !== -1 && overIndex !== -1) {
96
+ const newItems = arrayMove([...items], activeIndex, overIndex);
97
+ onDragSorted?.(newItems);
98
+ }
99
+ }
100
+ },
101
+ [items, onDragSorted],
102
+ );
103
+
104
+ // 优化的drop动画配置
105
+ const dropAnimation = useMemo(
106
+ () => ({
107
+ sideEffects: defaultDropAnimationSideEffects({
108
+ styles: {
109
+ active: {
110
+ opacity: '0.4',
111
+ },
112
+ },
113
+ }),
114
+ }),
115
+ [],
116
+ );
117
+
118
+ // 预先计算sortable项目的ID列表,排除禁用拖动的项
119
+ const sortableItems = useMemo(
120
+ () => items.filter(item => !disabledKeys.includes(item.key!)).map(i => i.key!),
121
+ [items, disabledKeys]
122
+ );
123
+
124
+ const renderTabBar = useCallback(
125
+ (tabBarProps: any, DefaultTabBar: any) => (
126
+ <DndContext
127
+ sensors={sensors}
128
+ onDragStart={handleDragStart}
129
+ onDragEnd={onDragEnd}
130
+ collisionDetection={closestCenter}
131
+ >
132
+ <SortableContext items={sortableItems} strategy={horizontalListSortingStrategy}>
133
+ <DefaultTabBar {...tabBarProps}>
134
+ {(node: any) => (
135
+ <DraggableTabNode
136
+ {...(node as React.ReactElement<DraggableTabPaneProps>).props}
137
+ key={node.key}
138
+ data-disabled={disabledKeys.includes(node.key)}
139
+ >
140
+ {node}
141
+ </DraggableTabNode>
142
+ )}
143
+ </DefaultTabBar>
144
+ </SortableContext>
145
+ <DragOverlay>
146
+ {activeId && !disabledKeys.includes(activeId) ? (
147
+ <div style={{ opacity: 0.8 }}>{items.find((item) => item.key === activeId)?.label}</div>
148
+ ) : null}
149
+ </DragOverlay>
150
+ </DndContext>
151
+ ),
152
+ [sensors, handleDragStart, onDragEnd, sortableItems, activeId, items, disabledKeys],
153
+ );
154
+
155
+ return <Tabs {...restProps} items={items} renderTabBar={renderTabBar} />;
156
+ };
157
+
158
+ // 使用React.memo优化渲染性能
159
+ export default React.memo(DndTabs);
@@ -0,0 +1,89 @@
1
+ import type { DragEndEvent } from '@dnd-kit/core';
2
+ import { closestCenter, DndContext, PointerSensor, useSensor, useSensors } from '@dnd-kit/core';
3
+ import { arrayMove, horizontalListSortingStrategy, SortableContext, useSortable } from '@dnd-kit/sortable';
4
+ import { Flex, Tag } from 'antd';
5
+ import React from 'react';
6
+ import { DndTagProps, DraggableTagProps } from '../types';
7
+
8
+ const commonStyle: React.CSSProperties = {
9
+ cursor: 'move',
10
+ transition: 'unset', // Prevent element from shaking after drag
11
+ };
12
+
13
+ const DraggableTag = <T extends Array<any>>(props: DraggableTagProps<T>) => {
14
+ const { keyNames, tag, tagProps = {}, itemRender } = props;
15
+ const { id, label } = keyNames;
16
+ const { listeners, transform, transition, isDragging, setNodeRef } = useSortable({ id: String(tag[id]) });
17
+
18
+ const style = transform
19
+ ? {
20
+ ...commonStyle,
21
+ transform: `translate3d(${transform.x}px, ${transform.y}px, 0)`,
22
+ transition: isDragging ? 'unset' : transition, // Improve performance/visual effect when dragging
23
+ }
24
+ : commonStyle;
25
+
26
+ const handleClose = (e: React.MouseEvent<HTMLSpanElement>) => {
27
+ tagProps.onClose?.(e, tag);
28
+ };
29
+
30
+ return itemRender ? (
31
+ <div style={style} ref={setNodeRef} {...listeners}>
32
+ {React.cloneElement(itemRender(tag))}
33
+ </div>
34
+ ) : (
35
+ <Tag {...tagProps} style={style} ref={setNodeRef} {...listeners} onClose={handleClose}>
36
+ {tag[label] as React.ReactNode}
37
+ </Tag>
38
+ );
39
+ };
40
+
41
+ const DndTag = <T extends Array<any>>(props: DndTagProps<T>) => {
42
+ const { keyNames, items, flexProps, tagProps, itemRender, onDragEnd, onBeforeDragEnd } = props;
43
+ const { id } = keyNames;
44
+ const sensors = useSensors(
45
+ useSensor(PointerSensor, {
46
+ // 鼠标激活距离,拖动超过5px才激活,避免覆盖Tag组件的点击(关闭)事件
47
+ activationConstraint: {
48
+ distance: 5,
49
+ },
50
+ }),
51
+ );
52
+
53
+ const handleDragEnd = (event: DragEndEvent) => {
54
+ // 自定义拖动逻辑
55
+ if (onBeforeDragEnd) {
56
+ onBeforeDragEnd(event);
57
+ return;
58
+ }
59
+
60
+ const { active, over } = event;
61
+ if (!over) {
62
+ return;
63
+ }
64
+
65
+ if (active.id !== over.id) {
66
+ // 处理好拖动顺序,返回外部更新items实现排序
67
+ const data = [...items];
68
+ const oldIndex = data.findIndex((item) => String(item[id]) === active.id);
69
+ const newIndex = data.findIndex((item) => String(item[id]) === over.id);
70
+ const newItems = arrayMove(items, oldIndex, newIndex);
71
+
72
+ onDragEnd?.(newItems as T);
73
+ }
74
+ };
75
+
76
+ return (
77
+ <DndContext sensors={sensors} onDragEnd={handleDragEnd} collisionDetection={closestCenter}>
78
+ <SortableContext items={items.map((item) => String(item[id]))} strategy={horizontalListSortingStrategy}>
79
+ <Flex gap="4px 0" wrap {...flexProps}>
80
+ {items.map<React.ReactNode>((item) => (
81
+ <DraggableTag keyNames={keyNames} tag={item} key={String(item[id])} tagProps={tagProps} itemRender={itemRender}/>
82
+ ))}
83
+ </Flex>
84
+ </SortableContext>
85
+ </DndContext>
86
+ );
87
+ };
88
+
89
+ export default React.memo(DndTag) as <T extends Array<any>>(props: DndTagProps<T>) => JSX.Element;
@@ -0,0 +1,123 @@
1
+ import { DeleteOutlined, EditOutlined, EyeOutlined, AlignLeftOutlined } from '@ant-design/icons';
2
+ import { useIntl, useModel } from '@umijs/max';
3
+ import { Dropdown, MenuProps } from 'antd';
4
+ import React from 'react';
5
+ import { getAuthorityFunction } from '../index';
6
+ import { DropdownButtonProps } from '../types';
7
+
8
+ /**
9
+ * 下拉按钮组
10
+ * @param {DropdownButtonProps} props
11
+ */
12
+ const DropdownButton: React.FC<DropdownButtonProps> = (props) => {
13
+ const {
14
+ viewButtonIcon,
15
+ viewButtonTitle,
16
+ editButtonTitle,
17
+ actionLogTitle,
18
+ removeButtonTitle,
19
+ viewAuth,
20
+ editAuth,
21
+ actionLogAuth,
22
+ removeAuth,
23
+ extraButtonList,
24
+ onView,
25
+ onEdit,
26
+ onRemove,
27
+ onActionLog,
28
+ } = props;
29
+
30
+ const { formatMessage } = useIntl();
31
+ let { currentUser = {} } = window.__POWERED_BY_QIANKUN__
32
+ ? useModel('@@qiankunStateFromMaster')
33
+ : useModel('@@initialState')?.initialState;
34
+
35
+ // 判断是布尔值还是其他值,返回布尔值判断是否显示按钮
36
+ const isShowButton = (buttonAuth: string | boolean | undefined): boolean => {
37
+ return typeof buttonAuth === 'boolean' ? buttonAuth : getAuthorityFunction(buttonAuth, currentUser);
38
+ };
39
+
40
+ const defautlTtems: MenuProps['items'] | any = [
41
+ {
42
+ auth: isShowButton(viewAuth),
43
+ key: 'view',
44
+ label: (
45
+ <a onClick={onView}>
46
+ <span style={{ marginRight: 6 }}>{viewButtonIcon ? viewButtonIcon : <EyeOutlined />}</span>
47
+ {viewButtonTitle ? viewButtonTitle : formatMessage({ id: 'cfmmUI.common.button.view', defaultMessage: '查看' })}
48
+ </a>
49
+ ),
50
+ },
51
+ {
52
+ auth: isShowButton(editAuth),
53
+ key: 'edit',
54
+ label: (
55
+ <a onClick={onEdit} key="edit">
56
+ <EditOutlined style={{ marginRight: 6 }} />
57
+ {editButtonTitle ? editButtonTitle : formatMessage({ id: 'cfmmUI.common.button.edit', defaultMessage: '修改' })}
58
+ </a>
59
+ ),
60
+ },
61
+ {
62
+ auth: isShowButton(actionLogAuth),
63
+ key: 'actionLog',
64
+ label: (
65
+ <a onClick={onActionLog} key="actionLog">
66
+ <AlignLeftOutlined style={{ marginRight: 6 }} />
67
+ {actionLogTitle ? actionLogTitle : formatMessage({ id: 'cfmmUI.common.button.actionLog', defaultMessage: '操作记录' })}
68
+ </a>
69
+ ),
70
+ },
71
+ {
72
+ auth: isShowButton(removeAuth),
73
+ key: 'remove',
74
+ danger: true,
75
+ label: (
76
+ <a onClick={onRemove} key="remove">
77
+ <DeleteOutlined style={{ marginRight: 6 }} />
78
+ {removeButtonTitle ? removeButtonTitle : formatMessage({ id: 'cfmmUI.common.button.delete', defaultMessage: '删除' })}
79
+ </a>
80
+ ),
81
+ },
82
+ ];
83
+
84
+ const handleButtonList = () => {
85
+ let renderList = [...defautlTtems];
86
+
87
+ // 将额外的按钮按指定位置放入渲染列表
88
+ if (extraButtonList?.length) {
89
+ extraButtonList.forEach((v, idx) => {
90
+ const item = {
91
+ key: typeof v.auth === 'string' ? v.auth : 'extra-' + idx,
92
+ label: v.label,
93
+ icon: v.icon,
94
+ auth: isShowButton(v.auth),
95
+ };
96
+ if (v.position === 'start') {
97
+ renderList.unshift(item);
98
+ }
99
+ if (v.position === 'end') {
100
+ renderList.push(item);
101
+ }
102
+ if (typeof v.position === 'number') {
103
+ renderList.splice(v.position, 0, item);
104
+ }
105
+ });
106
+ }
107
+
108
+ return renderList.filter((item) => item.auth).map((item) => ({ ...item, auth: undefined }));
109
+ };
110
+
111
+ const items = handleButtonList();
112
+
113
+ if (!items.length) return;
114
+
115
+ return (
116
+ <Dropdown.Button menu={{ items: items.slice(1) }}>
117
+ {items[0].icon}
118
+ {items[0].label}
119
+ </Dropdown.Button>
120
+ );
121
+ };
122
+
123
+ export default React.memo(DropdownButton);
@@ -0,0 +1,73 @@
1
+ import { FrownOutlined, ReloadOutlined } from '@ant-design/icons';
2
+ import { IconComponentProps } from '@ant-design/icons/lib/components/Icon';
3
+ import React, { Suspense, lazy } from 'react';
4
+ import { DynamicIconItemType, DynamicIconNameType, DynamicIconProps } from '../types';
5
+
6
+ const isIcon = (module: Record<DynamicIconNameType, any>, key: DynamicIconNameType) => {
7
+ return (
8
+ typeof module[key] === 'object' &&
9
+ module[key].render &&
10
+ !['default', 'create', 'createFromIconfontCN', 'getTwoToneColor', 'setTwoToneColor'].includes(key)
11
+ );
12
+ };
13
+
14
+ /**
15
+ * 获取antd图标列表
16
+ * @param props IconComponentProps
17
+ */
18
+ export const getAntdIconList = async (props?: IconComponentProps): Promise<DynamicIconItemType[]> => {
19
+ return await import(`@ant-design/icons`)
20
+ .then((module: any) => {
21
+ if (module) {
22
+ return Object.keys(module)
23
+ .filter((key) => isIcon(module, key as DynamicIconNameType))
24
+ .map((iconName) => {
25
+ return {
26
+ value: iconName as DynamicIconNameType,
27
+ label: iconName as DynamicIconNameType,
28
+ icon: React.createElement(module[iconName], { props }),
29
+ };
30
+ });
31
+ }
32
+ return [];
33
+ })
34
+ .catch(() => {
35
+ return [];
36
+ });
37
+ };
38
+
39
+ // 动态引入图标的函数
40
+ const loadIcon = (iconName: DynamicIconNameType) => {
41
+ return lazy(() =>
42
+ import(`@ant-design/icons`).then((module) => {
43
+ if (isIcon(module, iconName)) {
44
+ const IconComponent = (module as Record<DynamicIconNameType, any>)[iconName];
45
+ if (IconComponent) {
46
+ return { default: IconComponent };
47
+ }
48
+ }
49
+
50
+ return {
51
+ default: (props: IconComponentProps) => <FrownOutlined {...props} style={{ color: 'red', ...props.style }} />,
52
+ };
53
+ }),
54
+ );
55
+ };
56
+
57
+ /**
58
+ * 传入antd icon组件的名称,即可动态导入图标
59
+ * @param {DynamicIconNameType} iconName antd icon name
60
+ * @param {IconComponentProps} props antd icon props
61
+ * @returns
62
+ */
63
+ const DynamicIcon: React.FC<DynamicIconProps> = ({ iconName, ...props }) => {
64
+ const IconComponent = loadIcon(iconName);
65
+
66
+ return (
67
+ <Suspense fallback={<ReloadOutlined />}>
68
+ <IconComponent {...props} />
69
+ </Suspense>
70
+ );
71
+ };
72
+
73
+ export default React.memo(DynamicIcon);
@@ -0,0 +1,196 @@
1
+ import { useIntl } from '@umijs/max';
2
+ import { Card, Input, message, Modal, Radio, Tag } from 'antd';
3
+ import { CheckboxOptionType } from 'antd/es/checkbox';
4
+ import React, { useCallback, useEffect, useMemo, useState } from 'react';
5
+ import HighlightStr from './HighlightStr';
6
+ import { getAntdIconList } from './DynamicIcon';
7
+ import { DynamicIconModalProps, DynamicIconItemType } from '../types';
8
+
9
+ const options: CheckboxOptionType[] = [
10
+ { label: 'Outlined', value: 'Outlined' },
11
+ { label: 'Filled', value: 'Filled' },
12
+ { label: 'TwoTone', value: 'TwoTone' },
13
+ ];
14
+
15
+ /**
16
+ * 选择antd图标的弹窗组件
17
+ * @param type 单选/多选
18
+ * @param initValue 初始值[数组]
19
+ * @param localIconList 本地列表
20
+ * @param onOk 点击确认回调
21
+ * @param onDataLoad 获取列表完成,可以拿到列表
22
+ * @param {ModalProps} modalReset modal配置
23
+ */
24
+ const DynamicIconModal: React.FC<DynamicIconModalProps> = (props) => {
25
+ const { type = 'single', localIconList, onOk, onDataLoad, initValue, highlightStrProps, ...reset } = props;
26
+
27
+ const { formatMessage } = useIntl();
28
+ const [allIconList, setAllIconList] = useState<DynamicIconItemType[]>([]);
29
+ const [selectItemList, setSelectItemList] = useState<DynamicIconItemType[]>([]);
30
+ const [searchValue, setSearchValue] = useState<string | null>();
31
+ const [iconType, setIconType] = useState<CheckboxOptionType['value']>('Outlined');
32
+
33
+ // 过滤后的列表
34
+ const iconList = useMemo(() => {
35
+ return allIconList
36
+ .filter((item) => {
37
+ const { value } = item;
38
+ return value.endsWith(iconType) && value?.toLocaleLowerCase().includes(searchValue?.toLocaleLowerCase() || '');
39
+ })
40
+ .map((item) => {
41
+ if (!searchValue) return item;
42
+
43
+ return {
44
+ ...item,
45
+ label: <HighlightStr value={item.value} highlightValue={searchValue} {...highlightStrProps}/>,
46
+ };
47
+ });
48
+ }, [allIconList, searchValue, iconType]);
49
+
50
+ // 初始选中
51
+ const handleSetInitSelect = useCallback((list: DynamicIconItemType[], values?: DynamicIconModalProps['initValue']) => {
52
+ if (!values) return;
53
+ const v = Array.isArray(values) ? values : [values];
54
+ setSelectItemList(() => list.filter((item) => v.some((vv) => vv === item.value)));
55
+ }, []);
56
+
57
+ // 获取icon列表
58
+ const loadAntdIconList = useCallback(async () => {
59
+ const list = await getAntdIconList();
60
+ setAllIconList(list);
61
+ onDataLoad?.(list);
62
+ return list;
63
+ }, []);
64
+
65
+ // 点击选中卡片或者取消选中
66
+ const handleCardClick = useCallback(
67
+ (event: React.MouseEvent<HTMLDivElement>) => {
68
+ const card = (event.target as HTMLElement).closest('[data-icon-value]');
69
+ if (!card) return;
70
+ const value = card.getAttribute('data-icon-value');
71
+
72
+ // 如果已经选中,则取消选中
73
+ const selected = selectItemList.find((item) => item.value === value);
74
+ if (selected) {
75
+ setSelectItemList((selectItemList) => selectItemList.filter((item) => item.value !== selected.value));
76
+ return;
77
+ }
78
+
79
+ const selectedIcon = iconList.find((item) => item.value === value);
80
+ if (!selectedIcon) return;
81
+
82
+ // 处理单选多选逻辑
83
+ if (type === 'single') {
84
+ setSelectItemList([selectedIcon]);
85
+ } else {
86
+ setSelectItemList((selectItemList) => [...selectItemList, selectedIcon]);
87
+ }
88
+ },
89
+ [iconList, selectItemList],
90
+ );
91
+
92
+ // 点击标签关闭按钮取消选中
93
+ const handleRemoveSelectedItem = (value: React.Key) => {
94
+ const list = selectItemList.filter((item) => item.value !== value);
95
+ setSelectItemList(list);
96
+ };
97
+
98
+ // 点击确认
99
+ const handleOk = useCallback(() => {
100
+ if (!selectItemList) {
101
+ message.error(formatMessage({ id: 'cfmmUI.DynamicIconModal.title', defaultMessage: '请选择图标' }));
102
+ return;
103
+ }
104
+ onOk?.(selectItemList, iconList);
105
+ }, [selectItemList, onOk]);
106
+
107
+ // 初始化列表
108
+ useEffect(() => {
109
+ if (localIconList) {
110
+ setAllIconList(localIconList);
111
+ } else {
112
+ loadAntdIconList();
113
+ }
114
+ }, [localIconList]);
115
+
116
+ // 初始化选中
117
+ useEffect(() => {
118
+ if (props.open) {
119
+ handleSetInitSelect(allIconList, initValue);
120
+ } else {
121
+ setSearchValue(null);
122
+ setSelectItemList([]);
123
+ }
124
+ }, [props.open, allIconList]);
125
+
126
+ return (
127
+ <Modal
128
+ width={800}
129
+ zIndex={1001}
130
+ maskClosable={false}
131
+ onOk={handleOk}
132
+ title={formatMessage({ id: 'cfmmUI.DynamicIconModal.title', defaultMessage: '请选择图标' })}
133
+ {...reset}
134
+ >
135
+ <div style={{ display: 'flex' }}>
136
+ <Radio.Group
137
+ style={{ width: 400 }}
138
+ options={options}
139
+ defaultValue={iconType}
140
+ optionType="button"
141
+ buttonStyle="solid"
142
+ onChange={(e) => {
143
+ setIconType(e.target?.value);
144
+ }}
145
+ />
146
+ <Input.Search
147
+ onInput={(e: any) => {
148
+ setSearchValue(e.target?.value);
149
+ }}
150
+ />
151
+ </div>
152
+ <div style={{ marginTop: 10 }}>
153
+ {selectItemList.map((item) => (
154
+ <Tag key={item.value} color="processing" closeIcon onClose={() => handleRemoveSelectedItem(item.value)}>
155
+ {item.label}
156
+ </Tag>
157
+ ))}
158
+ </div>
159
+
160
+ <div
161
+ style={{
162
+ display: 'grid',
163
+ direction: 'ltr',
164
+ gridTemplateColumns: 'repeat(auto-fill, minmax(150px, 1fr))',
165
+ maxHeight: 500,
166
+ gap: 10,
167
+ marginTop: 20,
168
+ overflowY: 'auto',
169
+ }}
170
+ onClick={handleCardClick}
171
+ >
172
+ {iconList.map((item) => {
173
+ const isSelect = selectItemList.find((selectItem) => selectItem.value === item.value);
174
+ return (
175
+ <Card
176
+ key={item.value}
177
+ data-icon-value={item.value} // 添加数据属性用于标识
178
+ style={{
179
+ textAlign: 'center',
180
+ cursor: 'pointer',
181
+ transition: 'all 0.3s',
182
+ backgroundColor: isSelect ? '#1677ff' : '',
183
+ color: isSelect ? '#fff' : '',
184
+ }}
185
+ >
186
+ <div style={{ fontSize: 30 }}>{item.icon}</div>
187
+ <div style={{ fontSize: 12 }}>{item.label}</div>
188
+ </Card>
189
+ );
190
+ })}
191
+ </div>
192
+ </Modal>
193
+ );
194
+ };
195
+
196
+ export default React.memo(DynamicIconModal);