@dtjoy/dt-design 1.1.2 → 1.1.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (538) hide show
  1. package/README.md +161 -141
  2. package/dist/dt-design.min.css +1 -0
  3. package/dist/dt-design.min.js +1 -0
  4. package/es/_util/context/createContextSelector.d.ts +28 -0
  5. package/es/_util/context/createContextSelector.js +110 -0
  6. package/es/_util/context/immutable.d.ts +10 -0
  7. package/es/_util/context/immutable.js +84 -0
  8. package/es/_util/context/index.d.ts +3 -0
  9. package/es/_util/context/index.js +3 -0
  10. package/es/_util/easings.d.ts +1 -0
  11. package/es/_util/gapSize.d.ts +3 -0
  12. package/es/_util/getScroll.d.ts +3 -0
  13. package/{esm → es}/_util/getScroll.js +1 -1
  14. package/es/_util/hooks/index.d.ts +11 -0
  15. package/es/_util/hooks/index.js +11 -0
  16. package/es/_util/hooks/useBreakpoint.d.ts +5 -0
  17. package/es/_util/hooks/useBreakpoint.js +75 -0
  18. package/es/_util/hooks/useCssVar.d.ts +3 -0
  19. package/es/_util/hooks/useCssVar.js +28 -0
  20. package/es/_util/hooks/useEvent.d.ts +1 -0
  21. package/es/_util/hooks/useEvent.js +1 -0
  22. package/es/_util/hooks/useForceUpdate.d.ts +2 -0
  23. package/es/_util/hooks/useLayoutEffect.d.ts +1 -0
  24. package/es/_util/hooks/useLayoutEffect.js +1 -0
  25. package/es/_util/hooks/useMultipleSelect.d.ts +2 -0
  26. package/es/_util/hooks/useMultipleSelect.js +37 -0
  27. package/es/_util/hooks/useOrientation.d.ts +2 -0
  28. package/es/_util/hooks/useProxyImperativeHandle.d.ts +4 -0
  29. package/{esm → es}/_util/hooks/useProxyImperativeHandle.js +10 -3
  30. package/es/_util/hooks/useSyncState.d.ts +3 -0
  31. package/es/_util/hooks/useTimeoutLock.d.ts +1 -0
  32. package/es/_util/hooks/useTimeoutLock.js +26 -0
  33. package/es/_util/index.d.ts +11 -0
  34. package/{esm → es}/_util/index.js +9 -1
  35. package/es/_util/is.d.ts +5 -0
  36. package/es/_util/is.js +16 -0
  37. package/es/_util/rcUtil.d.ts +17 -0
  38. package/es/_util/rcUtil.js +58 -0
  39. package/es/_util/scrollTo.d.ts +10 -0
  40. package/{esm → es}/_util/scrollTo.js +1 -1
  41. package/es/_util/scrollbar.d.ts +1 -0
  42. package/es/_util/scrollbar.js +32 -0
  43. package/es/_util/type.d.ts +53 -0
  44. package/es/_util/validate.d.ts +2 -0
  45. package/es/_util/validate.js +10 -0
  46. package/es/_util/warning.d.ts +31 -0
  47. package/{esm → es}/_util/warning.js +5 -6
  48. package/es/block-header/index.d.ts +58 -0
  49. package/{esm/blockHeader → es/block-header}/index.js +1 -1
  50. package/es/block-header/style/index.d.ts +2 -0
  51. package/{lib/blockHeader → es/block-header}/style/index.less +167 -143
  52. package/es/button/index.d.ts +10 -0
  53. package/{esm → es}/button/index.js +16 -4
  54. package/es/button/style/index.d.ts +2 -0
  55. package/{esm → es}/button/style/index.less +62 -59
  56. package/{esm → es}/button/style/mixin.less +40 -39
  57. package/es/collapsible/index.d.ts +102 -0
  58. package/{esm → es}/collapsible/index.js +3 -2
  59. package/es/collapsible/style/index.d.ts +1 -0
  60. package/{esm → es}/collapsible/style/index.less +24 -24
  61. package/es/collapsible-action-items/index.d.ts +24 -0
  62. package/{esm/collapsibleActionItems → es/collapsible-action-items}/index.js +21 -19
  63. package/es/collapsible-action-items/style/index.d.ts +2 -0
  64. package/{lib/collapsibleActionItems → es/collapsible-action-items}/style/index.less +7 -7
  65. package/es/flex/index.d.ts +7 -0
  66. package/{esm → es}/flex/index.js +3 -3
  67. package/es/flex/interface.d.ts +16 -0
  68. package/es/flex/style/index.d.ts +2 -0
  69. package/{esm → es}/flex/style/index.less +80 -76
  70. package/es/flex/utils.d.ts +7 -0
  71. package/es/form-list/index.d.ts +87 -0
  72. package/{esm/formList → es/form-list}/index.js +18 -8
  73. package/es/form-list/style/index.d.ts +2 -0
  74. package/{esm/formList → es/form-list}/style/index.less +45 -45
  75. package/es/index.d.ts +26 -0
  76. package/es/index.js +21 -0
  77. package/es/overflow-list/index.d.ts +43 -0
  78. package/{esm/overflowList → es/overflow-list}/index.js +37 -9
  79. package/es/overflow-list/style/index.d.ts +2 -0
  80. package/{esm/overflowList → es/overflow-list}/style/index.less +9 -9
  81. package/es/resize/index.d.ts +9 -0
  82. package/es/resize-observer/index.d.ts +45 -0
  83. package/{esm/resizeObserver → es/resize-observer}/index.js +8 -8
  84. package/es/splitter/Panel.d.ts +7 -0
  85. package/{esm → es}/splitter/Panel.js +12 -4
  86. package/es/splitter/SplitBar.d.ts +28 -0
  87. package/{esm → es}/splitter/SplitBar.js +82 -80
  88. package/es/splitter/Splitter.d.ts +5 -0
  89. package/{esm → es}/splitter/Splitter.js +52 -23
  90. package/es/splitter/hooks/sizeUtil.d.ts +3 -0
  91. package/{esm → es}/splitter/hooks/sizeUtil.js +1 -1
  92. package/es/splitter/hooks/useDragListeners.d.ts +14 -0
  93. package/es/splitter/hooks/useDragListeners.js +107 -0
  94. package/es/splitter/hooks/useItems.d.ts +20 -0
  95. package/es/splitter/hooks/useOrientation.d.ts +2 -0
  96. package/es/splitter/hooks/useOrientation.js +6 -0
  97. package/es/splitter/hooks/useResizable.d.ts +13 -0
  98. package/{esm → es}/splitter/hooks/useResizable.js +5 -2
  99. package/es/splitter/hooks/useResize.d.ts +6 -0
  100. package/{esm → es}/splitter/hooks/useResize.js +10 -3
  101. package/es/splitter/hooks/useSizes.d.ts +4 -0
  102. package/{esm → es}/splitter/hooks/useSizes.js +5 -6
  103. package/es/splitter/index.d.ts +9 -0
  104. package/es/splitter/interface.d.ts +45 -0
  105. package/es/splitter/style/index.d.ts +2 -0
  106. package/es/splitter/style/index.less +349 -0
  107. package/es/status-tag/index.d.ts +29 -0
  108. package/{esm/statusTag → es/status-tag}/index.js +1 -1
  109. package/es/status-tag/style/index.d.ts +2 -0
  110. package/{lib/statusTag → es/status-tag}/style/index.less +70 -70
  111. package/{esm/statusTag → es/status-tag}/style/mixin.less +48 -39
  112. package/es/style/index.d.ts +1 -0
  113. package/{esm → es}/style/index.less +1 -1
  114. package/es/style/themes/index.less +2 -0
  115. package/{esm → es}/style/themes/variable.less +5 -5
  116. package/es/table/Column.d.ts +2 -0
  117. package/es/table/Column.js +1 -0
  118. package/es/table/ColumnGroup.d.ts +2 -0
  119. package/es/table/ColumnGroup.js +1 -0
  120. package/es/table/InternalTable.d.ts +43 -0
  121. package/es/table/InternalTable.js +816 -0
  122. package/es/table/Table.d.ts +19 -0
  123. package/es/table/Table.js +30 -0
  124. package/es/table/TableMeasureRowContext.d.ts +3 -0
  125. package/es/table/TableMeasureRowContext.js +3 -0
  126. package/es/table/components/Body/BodyRow.d.ts +37 -0
  127. package/es/table/components/Body/BodyRow.js +182 -0
  128. package/es/table/components/Body/ExpandedRow.d.ts +15 -0
  129. package/es/table/components/Body/ExpandedRow.js +51 -0
  130. package/es/table/components/Body/MeasureCell.d.ts +8 -0
  131. package/es/table/components/Body/MeasureCell.js +33 -0
  132. package/es/table/components/Body/MeasureRow.d.ts +10 -0
  133. package/es/table/components/Body/MeasureRow.js +54 -0
  134. package/es/table/components/Body/index.d.ts +11 -0
  135. package/es/table/components/Body/index.js +123 -0
  136. package/es/table/components/Cell/index.d.ts +39 -0
  137. package/es/table/components/Cell/index.js +196 -0
  138. package/es/table/components/Cell/useCellRender.d.ts +3 -0
  139. package/es/table/components/Cell/useCellRender.js +69 -0
  140. package/es/table/components/Cell/useHoverState.d.ts +2 -0
  141. package/es/table/components/Cell/useHoverState.js +13 -0
  142. package/es/table/components/ColGroup.d.ts +9 -0
  143. package/es/table/components/ColGroup.js +53 -0
  144. package/es/table/components/ExpandIcon.d.ts +12 -0
  145. package/es/table/components/ExpandIcon.js +27 -0
  146. package/es/table/components/FixedHolder/index.d.ts +27 -0
  147. package/es/table/components/FixedHolder/index.js +186 -0
  148. package/es/table/components/Footer/Cell.d.ts +11 -0
  149. package/es/table/components/Footer/Cell.js +47 -0
  150. package/es/table/components/Footer/Row.d.ts +8 -0
  151. package/es/table/components/Footer/Row.js +10 -0
  152. package/es/table/components/Footer/Summary.d.ts +14 -0
  153. package/es/table/components/Footer/Summary.js +12 -0
  154. package/es/table/components/Footer/SummaryContext.d.ts +11 -0
  155. package/es/table/components/Footer/SummaryContext.js +3 -0
  156. package/es/table/components/Footer/index.d.ts +16 -0
  157. package/es/table/components/Footer/index.js +31 -0
  158. package/es/table/components/Header/Header.d.ts +10 -0
  159. package/es/table/components/Header/Header.js +110 -0
  160. package/es/table/components/Header/HeaderRow.d.ts +19 -0
  161. package/es/table/components/Header/HeaderRow.js +63 -0
  162. package/es/table/components/Panel.d.ts +7 -0
  163. package/es/table/components/Panel.js +11 -0
  164. package/es/table/components/RcTable.d.ts +114 -0
  165. package/es/table/components/RcTable.js +757 -0
  166. package/es/table/components/VirtualTable.d.ts +5 -0
  167. package/es/table/components/VirtualTable.js +12 -0
  168. package/es/table/components/VirtualTableBody/BodyGrid.d.ts +13 -0
  169. package/es/table/components/VirtualTableBody/BodyGrid.js +307 -0
  170. package/es/table/components/VirtualTableBody/BodyLine.d.ts +14 -0
  171. package/es/table/components/VirtualTableBody/BodyLine.js +116 -0
  172. package/es/table/components/VirtualTableBody/VirtualCell.d.ts +26 -0
  173. package/es/table/components/VirtualTableBody/VirtualCell.js +118 -0
  174. package/es/table/components/VirtualTableBody/context.d.ts +13 -0
  175. package/es/table/components/VirtualTableBody/context.js +3 -0
  176. package/es/table/components/VirtualTableBody/index.d.ts +16 -0
  177. package/es/table/components/VirtualTableBody/index.js +102 -0
  178. package/es/table/constant.d.ts +2 -0
  179. package/es/table/constant.js +2 -0
  180. package/es/table/features/columns/Column.d.ts +7 -0
  181. package/es/table/features/columns/Column.js +4 -0
  182. package/es/table/features/columns/ColumnGroup.d.ts +9 -0
  183. package/es/table/features/columns/ColumnGroup.js +4 -0
  184. package/es/table/features/columns/index.d.ts +8 -0
  185. package/es/table/features/columns/index.js +6 -0
  186. package/es/table/features/columns/useColumns.d.ts +31 -0
  187. package/es/table/features/columns/useColumns.js +227 -0
  188. package/es/table/features/columns/useFilledColumns.d.ts +4 -0
  189. package/es/table/features/columns/useFilledColumns.js +34 -0
  190. package/es/table/features/columns/useTitleColumns.d.ts +4 -0
  191. package/es/table/features/columns/useTitleColumns.js +26 -0
  192. package/es/table/features/columns/useWidthColumns.d.ts +5 -0
  193. package/es/table/features/columns/useWidthColumns.js +75 -0
  194. package/es/table/features/editable/BatchEditModal.d.ts +4 -0
  195. package/es/table/features/editable/BatchEditModal.js +786 -0
  196. package/es/table/features/editable/EditableCell.d.ts +42 -0
  197. package/es/table/features/editable/EditableCell.js +294 -0
  198. package/es/table/features/editable/EditableContext.d.ts +33 -0
  199. package/es/table/features/editable/EditableContext.js +20 -0
  200. package/es/table/features/editable/batchEditTypes.d.ts +55 -0
  201. package/es/table/features/editable/batchEditTypes.js +1 -0
  202. package/es/table/features/editable/batchEditUtils.d.ts +44 -0
  203. package/es/table/features/editable/batchEditUtils.js +258 -0
  204. package/es/table/features/editable/builtinEditors.d.ts +32 -0
  205. package/es/table/features/editable/builtinEditors.js +165 -0
  206. package/es/table/features/editable/index.d.ts +11 -0
  207. package/es/table/features/editable/index.js +10 -0
  208. package/es/table/features/editable/useBatchRules.d.ts +17 -0
  209. package/es/table/features/editable/useBatchRules.js +96 -0
  210. package/es/table/features/editable/useEditable.d.ts +51 -0
  211. package/es/table/features/editable/useEditable.js +693 -0
  212. package/es/table/features/expand/expandUtil.d.ts +5 -0
  213. package/es/table/features/expand/expandUtil.js +47 -0
  214. package/es/table/features/expand/index.d.ts +2 -0
  215. package/es/table/features/expand/index.js +2 -0
  216. package/es/table/features/expand/useExpand.d.ts +10 -0
  217. package/es/table/features/expand/useExpand.js +90 -0
  218. package/es/table/features/filter/FilterDropdown.d.ts +31 -0
  219. package/es/table/features/filter/FilterDropdown.js +494 -0
  220. package/es/table/features/filter/FilterSearch.d.ts +12 -0
  221. package/es/table/features/filter/FilterSearch.js +24 -0
  222. package/es/table/features/filter/FilterWrapper.d.ts +8 -0
  223. package/es/table/features/filter/FilterWrapper.js +23 -0
  224. package/es/table/features/filter/index.d.ts +4 -0
  225. package/es/table/features/filter/index.js +4 -0
  226. package/es/table/features/filter/useFilter.d.ts +22 -0
  227. package/es/table/features/filter/useFilter.js +240 -0
  228. package/es/table/features/fixed/fixUtil.d.ts +21 -0
  229. package/es/table/features/fixed/fixUtil.js +69 -0
  230. package/es/table/features/fixed/index.d.ts +4 -0
  231. package/es/table/features/fixed/index.js +4 -0
  232. package/es/table/features/fixed/offsetUtil.d.ts +4 -0
  233. package/es/table/features/fixed/offsetUtil.js +13 -0
  234. package/es/table/features/fixed/useFixedInfo.d.ts +2 -0
  235. package/es/table/features/fixed/useFixedInfo.js +16 -0
  236. package/es/table/features/fixed/useStickyOffsets.d.ts +6 -0
  237. package/es/table/features/fixed/useStickyOffsets.js +29 -0
  238. package/es/table/features/hover/index.d.ts +1 -0
  239. package/es/table/features/hover/index.js +1 -0
  240. package/es/table/features/hover/useHover.d.ts +2 -0
  241. package/es/table/features/hover/useHover.js +22 -0
  242. package/es/table/features/pagination/index.d.ts +1 -0
  243. package/es/table/features/pagination/index.js +1 -0
  244. package/es/table/features/pagination/usePagination.d.ts +5 -0
  245. package/es/table/features/pagination/usePagination.js +89 -0
  246. package/es/table/features/resize/ResizeHandle.d.ts +22 -0
  247. package/es/table/features/resize/ResizeHandle.js +99 -0
  248. package/es/table/features/resize/index.d.ts +5 -0
  249. package/es/table/features/resize/index.js +3 -0
  250. package/es/table/features/resize/transformResizableColumns.d.ts +11 -0
  251. package/es/table/features/resize/transformResizableColumns.js +52 -0
  252. package/es/table/features/resize/useResize.d.ts +52 -0
  253. package/es/table/features/resize/useResize.js +586 -0
  254. package/es/table/features/selection/index.d.ts +1 -0
  255. package/es/table/features/selection/index.js +1 -0
  256. package/es/table/features/selection/useSelection.d.ts +20 -0
  257. package/es/table/features/selection/useSelection.js +579 -0
  258. package/es/table/features/sort/index.d.ts +1 -0
  259. package/es/table/features/sort/index.js +1 -0
  260. package/es/table/features/sort/useSorter.d.ts +21 -0
  261. package/es/table/features/sort/useSorter.js +372 -0
  262. package/es/table/features/sticky/index.d.ts +2 -0
  263. package/es/table/features/sticky/index.js +2 -0
  264. package/es/table/features/sticky/stickyScrollBar.d.ts +12 -0
  265. package/es/table/features/sticky/stickyScrollBar.js +203 -0
  266. package/es/table/features/sticky/useSticky.d.ts +10 -0
  267. package/es/table/features/sticky/useSticky.js +34 -0
  268. package/es/table/features/summary/index.d.ts +1 -0
  269. package/es/table/features/summary/index.js +1 -0
  270. package/es/table/features/virtual/index.d.ts +2 -0
  271. package/es/table/features/virtual/index.js +2 -0
  272. package/es/table/features/virtual/useFlattenRecords.d.ts +19 -0
  273. package/es/table/features/virtual/useFlattenRecords.js +55 -0
  274. package/es/table/features/virtual/useFrame.d.ts +7 -0
  275. package/es/table/features/virtual/useFrame.js +67 -0
  276. package/es/table/immutableHelper.d.ts +9 -0
  277. package/es/table/immutableHelper.js +36 -0
  278. package/es/table/index.d.ts +24 -0
  279. package/es/table/index.js +23 -0
  280. package/es/table/interface.d.ts +438 -0
  281. package/es/table/interface.js +56 -0
  282. package/es/table/shared/context/PerfContext.d.ts +6 -0
  283. package/es/table/shared/context/PerfContext.js +6 -0
  284. package/es/table/shared/context/TableContext.d.ts +51 -0
  285. package/es/table/shared/context/TableContext.js +8 -0
  286. package/es/table/shared/hooks/useContainerWidth.d.ts +1 -0
  287. package/es/table/shared/hooks/useContainerWidth.js +14 -0
  288. package/es/table/shared/hooks/useLazyKVMap.d.ts +4 -0
  289. package/es/table/shared/hooks/useLazyKVMap.js +30 -0
  290. package/es/table/shared/hooks/useRenderTimes.d.ts +5 -0
  291. package/es/table/shared/hooks/useRenderTimes.js +39 -0
  292. package/es/table/shared/hooks/useRowInfo.d.ts +11 -0
  293. package/es/table/shared/hooks/useRowInfo.js +73 -0
  294. package/es/table/shared/utils/legacyUtil.d.ts +5 -0
  295. package/es/table/shared/utils/legacyUtil.js +30 -0
  296. package/es/table/shared/utils/util.d.ts +6 -0
  297. package/es/table/shared/utils/util.js +26 -0
  298. package/es/table/shared/utils/valueUtil.d.ts +8 -0
  299. package/es/table/shared/utils/valueUtil.js +29 -0
  300. package/es/table/style/base.less +164 -0
  301. package/es/table/style/bordered.less +83 -0
  302. package/es/table/style/editable.less +50 -0
  303. package/es/table/style/ellipsis.less +33 -0
  304. package/es/table/style/empty.less +16 -0
  305. package/es/table/style/expand.less +123 -0
  306. package/es/table/style/filter.less +34 -0
  307. package/es/table/style/fixed.less +85 -0
  308. package/es/table/style/index.d.ts +3 -0
  309. package/es/table/style/index.js +3 -0
  310. package/es/table/style/index.less +19 -0
  311. package/es/table/style/pagination.less +29 -0
  312. package/es/table/style/radius.less +64 -0
  313. package/es/table/style/resize.less +78 -0
  314. package/es/table/style/rtl.less +52 -0
  315. package/es/table/style/selection.less +63 -0
  316. package/es/table/style/size.less +54 -0
  317. package/es/table/style/sorter.less +99 -0
  318. package/es/table/style/sticky.less +45 -0
  319. package/es/table/style/summary.less +23 -0
  320. package/es/table/style/variables.less +80 -0
  321. package/es/table/style/virtual.less +95 -0
  322. package/lib/_util/context/createContextSelector.js +120 -0
  323. package/lib/_util/context/immutable.js +92 -0
  324. package/lib/_util/context/index.js +41 -0
  325. package/lib/_util/easings.js +1 -1
  326. package/lib/_util/getScroll.js +6 -6
  327. package/lib/_util/hooks/index.js +82 -5
  328. package/lib/_util/hooks/useBreakpoint.js +85 -0
  329. package/lib/_util/hooks/useCssVar.js +37 -0
  330. package/lib/_util/hooks/useEvent.js +13 -0
  331. package/lib/_util/hooks/useForceUpdate.js +5 -4
  332. package/lib/_util/hooks/useLayoutEffect.js +13 -0
  333. package/lib/_util/hooks/useMultipleSelect.js +43 -0
  334. package/lib/_util/hooks/useOrientation.js +7 -8
  335. package/lib/_util/hooks/useProxyImperativeHandle.js +18 -14
  336. package/lib/_util/hooks/useSyncState.js +19 -9
  337. package/lib/_util/hooks/useTimeoutLock.js +35 -0
  338. package/lib/_util/index.js +101 -1
  339. package/lib/_util/is.js +22 -0
  340. package/lib/_util/rcUtil.js +134 -0
  341. package/lib/_util/scrollTo.js +22 -18
  342. package/lib/_util/scrollbar.js +38 -0
  343. package/lib/_util/validate.js +17 -0
  344. package/lib/_util/warning.js +25 -27
  345. package/lib/block-header/index.js +141 -0
  346. package/{esm/blockHeader → lib/block-header}/style/index.less +167 -143
  347. package/lib/button/index.js +24 -9
  348. package/lib/button/style/index.less +62 -59
  349. package/lib/button/style/mixin.less +40 -39
  350. package/lib/collapsible/index.js +210 -169
  351. package/lib/collapsible/style/index.less +24 -24
  352. package/lib/collapsible-action-items/index.js +83 -0
  353. package/{esm/collapsibleActionItems → lib/collapsible-action-items}/style/index.less +7 -7
  354. package/lib/flex/index.js +43 -34
  355. package/lib/flex/style/index.less +80 -76
  356. package/lib/flex/utils.js +23 -23
  357. package/lib/form-list/index.js +163 -0
  358. package/lib/{formList → form-list}/style/index.less +45 -45
  359. package/lib/index.js +41 -63
  360. package/lib/overflow-list/index.js +203 -0
  361. package/lib/{overflowList → overflow-list}/style/index.less +9 -9
  362. package/lib/resize/index.js +13 -13
  363. package/lib/resize-observer/index.js +182 -0
  364. package/lib/splitter/Panel.js +36 -25
  365. package/lib/splitter/SplitBar.js +151 -134
  366. package/lib/splitter/Splitter.js +141 -89
  367. package/lib/splitter/hooks/sizeUtil.js +50 -33
  368. package/lib/splitter/hooks/useDragListeners.js +114 -0
  369. package/lib/splitter/hooks/useItems.js +27 -20
  370. package/lib/splitter/hooks/useOrientation.js +12 -0
  371. package/lib/splitter/hooks/useResizable.js +32 -30
  372. package/lib/splitter/hooks/useResize.js +76 -45
  373. package/lib/splitter/hooks/useSizes.js +55 -30
  374. package/lib/splitter/index.js +1 -1
  375. package/lib/splitter/style/index.less +349 -312
  376. package/lib/status-tag/index.js +131 -0
  377. package/{esm/statusTag → lib/status-tag}/style/index.less +70 -70
  378. package/lib/{statusTag → status-tag}/style/mixin.less +48 -39
  379. package/lib/style/index.less +1 -1
  380. package/lib/style/themes/index.less +2 -2
  381. package/lib/style/themes/variable.less +5 -5
  382. package/lib/table/Column.js +13 -0
  383. package/lib/table/ColumnGroup.js +13 -0
  384. package/lib/table/InternalTable.js +824 -0
  385. package/lib/table/Table.js +40 -0
  386. package/lib/table/TableMeasureRowContext.js +10 -0
  387. package/lib/table/components/Body/BodyRow.js +192 -0
  388. package/lib/table/components/Body/ExpandedRow.js +61 -0
  389. package/lib/table/components/Body/MeasureCell.js +43 -0
  390. package/lib/table/components/Body/MeasureRow.js +64 -0
  391. package/lib/table/components/Body/index.js +133 -0
  392. package/lib/table/components/Cell/index.js +205 -0
  393. package/lib/table/components/Cell/useCellRender.js +78 -0
  394. package/lib/table/components/Cell/useHoverState.js +20 -0
  395. package/lib/table/components/ColGroup.js +62 -0
  396. package/lib/table/components/ExpandIcon.js +35 -0
  397. package/lib/table/components/FixedHolder/index.js +195 -0
  398. package/lib/table/components/Footer/Cell.js +57 -0
  399. package/lib/table/components/Footer/Row.js +19 -0
  400. package/lib/table/components/Footer/Summary.js +19 -0
  401. package/lib/table/components/Footer/SummaryContext.js +12 -0
  402. package/lib/table/components/Footer/index.js +41 -0
  403. package/lib/table/components/Header/Header.js +120 -0
  404. package/lib/table/components/Header/HeaderRow.js +72 -0
  405. package/lib/table/components/Panel.js +20 -0
  406. package/lib/table/components/RcTable.js +764 -0
  407. package/lib/table/components/VirtualTable.js +18 -0
  408. package/lib/table/components/VirtualTableBody/BodyGrid.js +316 -0
  409. package/lib/table/components/VirtualTableBody/BodyLine.js +125 -0
  410. package/lib/table/components/VirtualTableBody/VirtualCell.js +128 -0
  411. package/lib/table/components/VirtualTableBody/context.js +9 -0
  412. package/lib/table/components/VirtualTableBody/index.js +111 -0
  413. package/lib/table/constant.js +8 -0
  414. package/lib/table/features/columns/Column.js +10 -0
  415. package/lib/table/features/columns/ColumnGroup.js +10 -0
  416. package/lib/table/features/columns/index.js +57 -0
  417. package/lib/table/features/columns/useColumns.js +237 -0
  418. package/lib/table/features/columns/useFilledColumns.js +42 -0
  419. package/lib/table/features/columns/useTitleColumns.js +34 -0
  420. package/lib/table/features/columns/useWidthColumns.js +83 -0
  421. package/lib/table/features/editable/BatchEditModal.js +794 -0
  422. package/lib/table/features/editable/EditableCell.js +303 -0
  423. package/lib/table/features/editable/EditableContext.js +28 -0
  424. package/lib/table/features/editable/batchEditTypes.js +5 -0
  425. package/lib/table/features/editable/batchEditUtils.js +264 -0
  426. package/lib/table/features/editable/builtinEditors.js +174 -0
  427. package/lib/table/features/editable/index.js +75 -0
  428. package/lib/table/features/editable/useBatchRules.js +103 -0
  429. package/lib/table/features/editable/useEditable.js +701 -0
  430. package/lib/table/features/expand/expandUtil.js +57 -0
  431. package/lib/table/features/expand/index.js +32 -0
  432. package/lib/table/features/expand/useExpand.js +99 -0
  433. package/lib/table/features/filter/FilterDropdown.js +504 -0
  434. package/lib/table/features/filter/FilterSearch.js +34 -0
  435. package/lib/table/features/filter/FilterWrapper.js +32 -0
  436. package/lib/table/features/filter/index.js +49 -0
  437. package/lib/table/features/filter/useFilter.js +254 -0
  438. package/lib/table/features/fixed/fixUtil.js +75 -0
  439. package/lib/table/features/fixed/index.js +34 -0
  440. package/lib/table/features/fixed/offsetUtil.js +19 -0
  441. package/lib/table/features/fixed/useFixedInfo.js +26 -0
  442. package/lib/table/features/fixed/useStickyOffsets.js +35 -0
  443. package/lib/table/features/hover/index.js +13 -0
  444. package/lib/table/features/hover/useHover.js +31 -0
  445. package/lib/table/features/pagination/index.js +27 -0
  446. package/lib/table/features/pagination/usePagination.js +96 -0
  447. package/lib/table/features/resize/ResizeHandle.js +109 -0
  448. package/lib/table/features/resize/index.js +27 -0
  449. package/lib/table/features/resize/transformResizableColumns.js +61 -0
  450. package/lib/table/features/resize/useResize.js +595 -0
  451. package/lib/table/features/selection/index.js +39 -0
  452. package/lib/table/features/selection/useSelection.js +588 -0
  453. package/lib/table/features/sort/index.js +21 -0
  454. package/lib/table/features/sort/useSorter.js +381 -0
  455. package/lib/table/features/sticky/index.js +20 -0
  456. package/lib/table/features/sticky/stickyScrollBar.js +212 -0
  457. package/lib/table/features/sticky/useSticky.js +43 -0
  458. package/lib/table/features/summary/index.js +13 -0
  459. package/lib/table/features/virtual/index.js +26 -0
  460. package/lib/table/features/virtual/useFlattenRecords.js +64 -0
  461. package/lib/table/features/virtual/useFrame.js +74 -0
  462. package/lib/table/immutableHelper.js +46 -0
  463. package/lib/table/index.js +124 -0
  464. package/lib/table/interface.js +60 -0
  465. package/lib/table/shared/context/PerfContext.js +15 -0
  466. package/lib/table/shared/context/TableContext.js +13 -0
  467. package/lib/table/shared/hooks/useContainerWidth.js +20 -0
  468. package/lib/table/shared/hooks/useLazyKVMap.js +39 -0
  469. package/lib/table/shared/hooks/useRenderTimes.js +49 -0
  470. package/lib/table/shared/hooks/useRowInfo.js +80 -0
  471. package/lib/table/shared/utils/legacyUtil.js +38 -0
  472. package/lib/table/shared/utils/util.js +34 -0
  473. package/lib/table/shared/utils/valueUtil.js +37 -0
  474. package/lib/table/style/base.less +164 -0
  475. package/lib/table/style/bordered.less +83 -0
  476. package/lib/table/style/editable.less +50 -0
  477. package/lib/table/style/ellipsis.less +33 -0
  478. package/lib/table/style/empty.less +16 -0
  479. package/lib/table/style/expand.less +123 -0
  480. package/lib/table/style/filter.less +34 -0
  481. package/lib/table/style/fixed.less +85 -0
  482. package/lib/table/style/index.js +5 -0
  483. package/lib/table/style/index.less +19 -0
  484. package/lib/table/style/pagination.less +29 -0
  485. package/lib/table/style/radius.less +64 -0
  486. package/lib/table/style/resize.less +78 -0
  487. package/lib/table/style/rtl.less +52 -0
  488. package/lib/table/style/selection.less +63 -0
  489. package/lib/table/style/size.less +54 -0
  490. package/lib/table/style/sorter.less +99 -0
  491. package/lib/table/style/sticky.less +45 -0
  492. package/lib/table/style/summary.less +23 -0
  493. package/lib/table/style/variables.less +80 -0
  494. package/lib/table/style/virtual.less +95 -0
  495. package/package.json +147 -152
  496. package/esm/_util/extendsObject.js +0 -17
  497. package/esm/_util/hooks/index.js +0 -4
  498. package/esm/_util/isNonNullable.js +0 -4
  499. package/esm/index.js +0 -22
  500. package/esm/splitter/style/index.less +0 -312
  501. package/esm/style/mixins/index.less +0 -0
  502. package/esm/style/themes/index.less +0 -2
  503. package/lib/_util/extendsObject.js +0 -20
  504. package/lib/_util/isNonNullable.js +0 -10
  505. package/lib/blockHeader/index.js +0 -121
  506. package/lib/collapsibleActionItems/index.js +0 -68
  507. package/lib/formList/index.js +0 -130
  508. package/lib/overflowList/index.js +0 -144
  509. package/lib/resizeObserver/index.js +0 -137
  510. package/lib/statusTag/index.js +0 -125
  511. package/lib/style/mixins/index.less +0 -0
  512. /package/{esm → es}/_util/easings.js +0 -0
  513. /package/{esm → es}/_util/gapSize.js +0 -0
  514. /package/{esm → es}/_util/hooks/useForceUpdate.js +0 -0
  515. /package/{esm → es}/_util/hooks/useOrientation.js +0 -0
  516. /package/{esm → es}/_util/hooks/useSyncState.js +0 -0
  517. /package/{esm → es}/_util/type.js +0 -0
  518. /package/{esm/blockHeader → es/block-header}/style/index.js +0 -0
  519. /package/{esm → es}/button/style/index.js +0 -0
  520. /package/{esm → es}/collapsible/style/index.js +0 -0
  521. /package/{esm/collapsibleActionItems → es/collapsible-action-items}/style/index.js +0 -0
  522. /package/{esm → es}/flex/interface.js +0 -0
  523. /package/{esm → es}/flex/style/index.js +0 -0
  524. /package/{esm → es}/flex/utils.js +0 -0
  525. /package/{esm/formList → es/form-list}/style/index.js +0 -0
  526. /package/{esm/overflowList → es/overflow-list}/style/index.js +0 -0
  527. /package/{esm → es}/resize/index.js +0 -0
  528. /package/{esm → es}/splitter/hooks/useItems.js +0 -0
  529. /package/{esm → es}/splitter/index.js +0 -0
  530. /package/{esm → es}/splitter/interface.js +0 -0
  531. /package/{esm → es}/splitter/style/index.js +0 -0
  532. /package/{esm/statusTag → es/status-tag}/style/index.js +0 -0
  533. /package/{esm → es}/style/index.js +0 -0
  534. /package/lib/{blockHeader → block-header}/style/index.js +0 -0
  535. /package/lib/{collapsibleActionItems → collapsible-action-items}/style/index.js +0 -0
  536. /package/lib/{formList → form-list}/style/index.js +0 -0
  537. /package/lib/{overflowList → overflow-list}/style/index.js +0 -0
  538. /package/lib/{statusTag → status-tag}/style/index.js +0 -0
@@ -0,0 +1,786 @@
1
+ function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
2
+ function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
3
+ function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
4
+ function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }
5
+ function _iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t.return && (u = t.return(), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }
6
+ function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
7
+ function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
8
+ import * as React from 'react';
9
+ import { PlusOutlined } from '@ant-design/icons';
10
+ import { Alert, Button, Input, InputNumber, Modal, Radio, Select, Space } from 'antd';
11
+ import { applyBatchRules, getBatchEditableColumns, isSequenceSupported, typeLabelMap } from "./batchEditUtils";
12
+ import useBatchRules from "./useBatchRules";
13
+
14
+ // ============================================================
15
+ // 辅助函数
16
+ // ============================================================
17
+
18
+ /** 叶子列类型 */
19
+
20
+ /** Select 选项类型 */
21
+
22
+ var buildFieldOptions = function buildFieldOptions(columns) {
23
+ return columns.map(function (c) {
24
+ var _c$dataIndex, _c$dataIndex2;
25
+ return {
26
+ label: typeof c.title === 'string' ? c.title : String((_c$dataIndex = c.dataIndex) !== null && _c$dataIndex !== void 0 ? _c$dataIndex : c.key),
27
+ value: String((_c$dataIndex2 = c.dataIndex) !== null && _c$dataIndex2 !== void 0 ? _c$dataIndex2 : c.key)
28
+ };
29
+ });
30
+ };
31
+ var buildTypeOptions = function buildTypeOptions(fieldKey, columns) {
32
+ var options = [{
33
+ label: '固定值填充',
34
+ value: 'value'
35
+ }, {
36
+ label: '查找替换',
37
+ value: 'replace'
38
+ }];
39
+ if (isSequenceSupported(columns, fieldKey)) {
40
+ options.push({
41
+ label: '序列生成',
42
+ value: 'sequence'
43
+ });
44
+ }
45
+ return options;
46
+ };
47
+ var getColumnByFieldKey = function getColumnByFieldKey(columns, fieldKey) {
48
+ return columns.find(function (c) {
49
+ var _c$dataIndex3;
50
+ return String((_c$dataIndex3 = c.dataIndex) !== null && _c$dataIndex3 !== void 0 ? _c$dataIndex3 : c.key) === fieldKey;
51
+ });
52
+ };
53
+ var getEditorType = function getEditorType(columns, fieldKey) {
54
+ var _ed$type;
55
+ var col = getColumnByFieldKey(columns, fieldKey);
56
+ if (!col) return 'input';
57
+ var ed = col.editable;
58
+ if (ed && _typeof(ed) === 'object') return (_ed$type = ed.type) !== null && _ed$type !== void 0 ? _ed$type : 'input';
59
+ return 'input';
60
+ };
61
+ var getFieldOptions = function getFieldOptions(columns, fieldKey) {
62
+ var col = getColumnByFieldKey(columns, fieldKey);
63
+ if (!col) return [];
64
+ var ed = col.editable;
65
+ if (ed && _typeof(ed) === 'object') return ed.options || [];
66
+ return [];
67
+ };
68
+
69
+ // ============================================================
70
+ // 规则表单子组件
71
+ // ============================================================
72
+
73
+ var ValueRuleForm = function ValueRuleForm(_ref) {
74
+ var rule = _ref.rule,
75
+ columns = _ref.columns,
76
+ onUpdate = _ref.onUpdate;
77
+ var editorType = getEditorType(columns, rule.fieldKey);
78
+ var fieldOpts = getFieldOptions(columns, rule.fieldKey);
79
+ return /*#__PURE__*/React.createElement("div", {
80
+ style: {
81
+ display: 'flex',
82
+ gap: 12,
83
+ marginBottom: 8
84
+ }
85
+ }, /*#__PURE__*/React.createElement("div", {
86
+ style: {
87
+ flex: 1
88
+ }
89
+ }, /*#__PURE__*/React.createElement("label", {
90
+ htmlFor: "value-".concat(rule.id),
91
+ style: {
92
+ display: 'block',
93
+ fontSize: 12,
94
+ color: '#8c8c8c',
95
+ marginBottom: 4
96
+ }
97
+ }, "\u586B\u5145\u503C"), editorType === 'select' ? /*#__PURE__*/React.createElement(Select, {
98
+ id: "value-".concat(rule.id),
99
+ style: {
100
+ width: '100%'
101
+ },
102
+ value: rule.value,
103
+ onChange: function onChange(v) {
104
+ return onUpdate(rule.id, {
105
+ value: v
106
+ });
107
+ },
108
+ options: fieldOpts,
109
+ placeholder: "\u9009\u62E9\u586B\u5145\u503C",
110
+ allowClear: true
111
+ }) : editorType === 'number' ? /*#__PURE__*/React.createElement(InputNumber, {
112
+ id: "value-".concat(rule.id),
113
+ style: {
114
+ width: '100%'
115
+ },
116
+ value: rule.value,
117
+ onChange: function onChange(v) {
118
+ return onUpdate(rule.id, {
119
+ value: v !== null && v !== void 0 ? v : undefined
120
+ });
121
+ },
122
+ placeholder: "\u8F93\u5165\u586B\u5145\u503C"
123
+ }) : /*#__PURE__*/React.createElement(Input, {
124
+ id: "value-".concat(rule.id),
125
+ value: rule.value,
126
+ onChange: function onChange(e) {
127
+ return onUpdate(rule.id, {
128
+ value: e.target.value
129
+ });
130
+ },
131
+ placeholder: "\u8F93\u5165\u586B\u5145\u503C"
132
+ })), /*#__PURE__*/React.createElement("div", {
133
+ style: {
134
+ width: 200
135
+ }
136
+ }, /*#__PURE__*/React.createElement("label", {
137
+ htmlFor: "mode-".concat(rule.id),
138
+ style: {
139
+ display: 'block',
140
+ fontSize: 12,
141
+ color: '#8c8c8c',
142
+ marginBottom: 4
143
+ }
144
+ }, "\u586B\u5145\u65B9\u5F0F"), /*#__PURE__*/React.createElement(Radio.Group, {
145
+ id: "mode-".concat(rule.id),
146
+ value: rule.mode,
147
+ onChange: function onChange(e) {
148
+ return onUpdate(rule.id, {
149
+ mode: e.target.value
150
+ });
151
+ }
152
+ }, /*#__PURE__*/React.createElement(Radio, {
153
+ value: "overwrite"
154
+ }, "\u8986\u76D6"), /*#__PURE__*/React.createElement(Radio, {
155
+ value: "fillEmpty"
156
+ }, "\u4EC5\u586B\u7A7A"))));
157
+ };
158
+ var ReplaceRuleForm = function ReplaceRuleForm(_ref2) {
159
+ var rule = _ref2.rule,
160
+ columns = _ref2.columns,
161
+ data = _ref2.data,
162
+ selectedRowKeys = _ref2.selectedRowKeys,
163
+ getRowKey = _ref2.getRowKey,
164
+ onUpdate = _ref2.onUpdate;
165
+ var editorType = getEditorType(columns, rule.fieldKey);
166
+ var fieldOpts = getFieldOptions(columns, rule.fieldKey);
167
+ var isSelect = editorType === 'select';
168
+ var distinctValues = React.useMemo(function () {
169
+ var keySet = new Set(selectedRowKeys);
170
+ var set = new Set();
171
+ data.forEach(function (row, i) {
172
+ if (!keySet.has(getRowKey(row, i))) return;
173
+ var v = row[rule.fieldKey];
174
+ if (v === undefined || v === null) {
175
+ set.add('');
176
+ } else if (Array.isArray(v)) {
177
+ v.forEach(function (item) {
178
+ return set.add(item);
179
+ });
180
+ } else {
181
+ set.add(v);
182
+ }
183
+ });
184
+ return Array.from(set).slice(0, 50);
185
+ }, [data, selectedRowKeys, rule.fieldKey, getRowKey]);
186
+ var oldValueOptions = distinctValues.map(function (v) {
187
+ return {
188
+ label: v === '' ? '(空)' : String(v),
189
+ value: v
190
+ };
191
+ });
192
+ return /*#__PURE__*/React.createElement(React.Fragment, null, !isSelect && /*#__PURE__*/React.createElement("div", {
193
+ style: {
194
+ marginBottom: 8
195
+ }
196
+ }, /*#__PURE__*/React.createElement("label", {
197
+ htmlFor: "match-".concat(rule.id),
198
+ style: {
199
+ display: 'block',
200
+ fontSize: 12,
201
+ color: '#8c8c8c',
202
+ marginBottom: 4
203
+ }
204
+ }, "\u5339\u914D\u65B9\u5F0F"), /*#__PURE__*/React.createElement(Radio.Group, {
205
+ id: "match-".concat(rule.id),
206
+ value: rule.matchMode,
207
+ onChange: function onChange(e) {
208
+ return onUpdate(rule.id, {
209
+ matchMode: e.target.value
210
+ });
211
+ }
212
+ }, /*#__PURE__*/React.createElement(Radio, {
213
+ value: "exact"
214
+ }, "\u7CBE\u786E\u5339\u914D"), /*#__PURE__*/React.createElement(Radio, {
215
+ value: "contains"
216
+ }, "\u5305\u542B\u5339\u914D"))), /*#__PURE__*/React.createElement("div", {
217
+ style: {
218
+ display: 'flex',
219
+ gap: 12,
220
+ marginBottom: 8
221
+ }
222
+ }, /*#__PURE__*/React.createElement("div", {
223
+ style: {
224
+ flex: 1
225
+ }
226
+ }, /*#__PURE__*/React.createElement("label", {
227
+ htmlFor: "old-".concat(rule.id),
228
+ style: {
229
+ display: 'block',
230
+ fontSize: 12,
231
+ color: '#8c8c8c',
232
+ marginBottom: 4
233
+ }
234
+ }, "\u67E5\u627E\u5185\u5BB9"), /*#__PURE__*/React.createElement(Select, {
235
+ id: "old-".concat(rule.id),
236
+ style: {
237
+ width: '100%'
238
+ },
239
+ showSearch: true,
240
+ value: rule.oldValue,
241
+ onChange: function onChange(v) {
242
+ return onUpdate(rule.id, {
243
+ oldValue: v
244
+ });
245
+ },
246
+ options: oldValueOptions,
247
+ placeholder: "\u9009\u62E9\u67E5\u627E\u503C",
248
+ allowClear: true
249
+ })), /*#__PURE__*/React.createElement("div", {
250
+ style: {
251
+ flex: 1
252
+ }
253
+ }, /*#__PURE__*/React.createElement("label", {
254
+ htmlFor: "new-".concat(rule.id),
255
+ style: {
256
+ display: 'block',
257
+ fontSize: 12,
258
+ color: '#8c8c8c',
259
+ marginBottom: 4
260
+ }
261
+ }, "\u66FF\u6362\u4E3A"), isSelect ? /*#__PURE__*/React.createElement(Select, {
262
+ id: "new-".concat(rule.id),
263
+ style: {
264
+ width: '100%'
265
+ },
266
+ value: rule.newValue,
267
+ onChange: function onChange(v) {
268
+ return onUpdate(rule.id, {
269
+ newValue: v
270
+ });
271
+ },
272
+ options: fieldOpts,
273
+ placeholder: "\u9009\u62E9\u66FF\u6362\u503C",
274
+ allowClear: true
275
+ }) : editorType === 'number' ? /*#__PURE__*/React.createElement(InputNumber, {
276
+ id: "new-".concat(rule.id),
277
+ style: {
278
+ width: '100%'
279
+ },
280
+ value: rule.newValue,
281
+ onChange: function onChange(v) {
282
+ return onUpdate(rule.id, {
283
+ newValue: v !== null && v !== void 0 ? v : undefined
284
+ });
285
+ },
286
+ placeholder: "\u66FF\u6362\u4E3A"
287
+ }) : /*#__PURE__*/React.createElement(Input, {
288
+ id: "new-".concat(rule.id),
289
+ value: rule.newValue,
290
+ onChange: function onChange(e) {
291
+ return onUpdate(rule.id, {
292
+ newValue: e.target.value
293
+ });
294
+ },
295
+ placeholder: "\u66FF\u6362\u4E3A"
296
+ }))));
297
+ };
298
+ var SequenceRuleForm = function SequenceRuleForm(_ref3) {
299
+ var rule = _ref3.rule,
300
+ columns = _ref3.columns,
301
+ onUpdate = _ref3.onUpdate;
302
+ var editorType = getEditorType(columns, rule.fieldKey);
303
+ var isNumberField = editorType === 'number';
304
+ var seqPreview = React.useMemo(function () {
305
+ var samples = [];
306
+ for (var i = 0; i < 3; i++) {
307
+ var num = rule.start + i * rule.step;
308
+ var numStr = rule.digitWidth ? String(num).padStart(rule.digitWidth, '0') : String(num);
309
+ samples.push(isNumberField ? numStr : "".concat(rule.prefix).concat(numStr));
310
+ }
311
+ return samples.join('、');
312
+ }, [rule, isNumberField]);
313
+ return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement("div", {
314
+ style: {
315
+ display: 'flex',
316
+ gap: 12,
317
+ marginBottom: 8,
318
+ flexWrap: 'wrap'
319
+ }
320
+ }, !isNumberField && /*#__PURE__*/React.createElement("div", {
321
+ style: {
322
+ flex: '1 1 120px',
323
+ minWidth: 120
324
+ }
325
+ }, /*#__PURE__*/React.createElement("label", {
326
+ htmlFor: "prefix-".concat(rule.id),
327
+ style: {
328
+ display: 'block',
329
+ fontSize: 12,
330
+ color: '#8c8c8c',
331
+ marginBottom: 4
332
+ }
333
+ }, "\u524D\u7F00"), /*#__PURE__*/React.createElement(Input, {
334
+ id: "prefix-".concat(rule.id),
335
+ placeholder: "\u5982 ELE_",
336
+ value: rule.prefix,
337
+ onChange: function onChange(e) {
338
+ return onUpdate(rule.id, {
339
+ prefix: e.target.value
340
+ });
341
+ }
342
+ })), /*#__PURE__*/React.createElement("div", {
343
+ style: {
344
+ flex: '1 1 100px',
345
+ minWidth: 100
346
+ }
347
+ }, /*#__PURE__*/React.createElement("label", {
348
+ htmlFor: "start-".concat(rule.id),
349
+ style: {
350
+ display: 'block',
351
+ fontSize: 12,
352
+ color: '#8c8c8c',
353
+ marginBottom: 4
354
+ }
355
+ }, "\u8D77\u59CB\u503C"), /*#__PURE__*/React.createElement(InputNumber, {
356
+ id: "start-".concat(rule.id),
357
+ style: {
358
+ width: '100%'
359
+ },
360
+ min: 0,
361
+ value: rule.start,
362
+ onChange: function onChange(v) {
363
+ return onUpdate(rule.id, {
364
+ start: v !== null && v !== void 0 ? v : 0
365
+ });
366
+ }
367
+ })), /*#__PURE__*/React.createElement("div", {
368
+ style: {
369
+ flex: '1 1 100px',
370
+ minWidth: 100
371
+ }
372
+ }, /*#__PURE__*/React.createElement("label", {
373
+ htmlFor: "step-".concat(rule.id),
374
+ style: {
375
+ display: 'block',
376
+ fontSize: 12,
377
+ color: '#8c8c8c',
378
+ marginBottom: 4
379
+ }
380
+ }, "\u6B65\u957F"), /*#__PURE__*/React.createElement(InputNumber, {
381
+ id: "step-".concat(rule.id),
382
+ style: {
383
+ width: '100%'
384
+ },
385
+ min: 1,
386
+ value: rule.step,
387
+ onChange: function onChange(v) {
388
+ return onUpdate(rule.id, {
389
+ step: v !== null && v !== void 0 ? v : 1
390
+ });
391
+ }
392
+ })), /*#__PURE__*/React.createElement("div", {
393
+ style: {
394
+ flex: '1 1 100px',
395
+ minWidth: 100
396
+ }
397
+ }, /*#__PURE__*/React.createElement("label", {
398
+ htmlFor: "digit-".concat(rule.id),
399
+ style: {
400
+ display: 'block',
401
+ fontSize: 12,
402
+ color: '#8c8c8c',
403
+ marginBottom: 4
404
+ }
405
+ }, "\u4F4D\u6570\u8865\u96F6"), /*#__PURE__*/React.createElement(InputNumber, {
406
+ id: "digit-".concat(rule.id),
407
+ style: {
408
+ width: '100%'
409
+ },
410
+ min: 1,
411
+ placeholder: "\u4E0D\u8865\u96F6",
412
+ value: rule.digitWidth,
413
+ onChange: function onChange(v) {
414
+ return onUpdate(rule.id, {
415
+ digitWidth: v !== null && v !== void 0 ? v : undefined
416
+ });
417
+ }
418
+ }))), /*#__PURE__*/React.createElement("div", {
419
+ style: {
420
+ padding: '6px 10px',
421
+ background: '#f6f8fa',
422
+ borderRadius: 4,
423
+ fontSize: 12,
424
+ color: '#595959'
425
+ }
426
+ }, "\u9884\u89C8\uFF1A", seqPreview));
427
+ };
428
+
429
+ // ============================================================
430
+ // 规则编辑器
431
+ // ============================================================
432
+
433
+ var RuleEditor = function RuleEditor(_ref4) {
434
+ var rule = _ref4.rule,
435
+ idx = _ref4.idx,
436
+ columns = _ref4.columns,
437
+ data = _ref4.data,
438
+ selectedRowKeys = _ref4.selectedRowKeys,
439
+ getRowKey = _ref4.getRowKey,
440
+ totalRules = _ref4.totalRules,
441
+ onMove = _ref4.onMove,
442
+ onUpdate = _ref4.onUpdate,
443
+ onRemove = _ref4.onRemove;
444
+ var fieldOptions = buildFieldOptions(columns);
445
+ var typeOptions = buildTypeOptions(rule.fieldKey, columns);
446
+ var renderBody = function renderBody() {
447
+ if (rule.type === 'value') {
448
+ return /*#__PURE__*/React.createElement(ValueRuleForm, {
449
+ rule: rule,
450
+ columns: columns,
451
+ onUpdate: onUpdate
452
+ });
453
+ }
454
+ if (rule.type === 'replace') {
455
+ return /*#__PURE__*/React.createElement(ReplaceRuleForm, {
456
+ rule: rule,
457
+ columns: columns,
458
+ data: data,
459
+ selectedRowKeys: selectedRowKeys,
460
+ getRowKey: getRowKey,
461
+ onUpdate: onUpdate
462
+ });
463
+ }
464
+ return /*#__PURE__*/React.createElement(SequenceRuleForm, {
465
+ rule: rule,
466
+ columns: columns,
467
+ onUpdate: onUpdate
468
+ });
469
+ };
470
+ return /*#__PURE__*/React.createElement("div", {
471
+ style: {
472
+ border: '1px solid #f0f0f0',
473
+ borderRadius: 6,
474
+ padding: 12,
475
+ marginBottom: 8
476
+ }
477
+ }, /*#__PURE__*/React.createElement("div", {
478
+ style: {
479
+ display: 'flex',
480
+ justifyContent: 'space-between',
481
+ alignItems: 'center',
482
+ marginBottom: 8
483
+ }
484
+ }, /*#__PURE__*/React.createElement(Space, null, /*#__PURE__*/React.createElement("span", {
485
+ style: {
486
+ display: 'inline-flex',
487
+ alignItems: 'center',
488
+ justifyContent: 'center',
489
+ width: 22,
490
+ height: 22,
491
+ borderRadius: '50%',
492
+ background: '#1890ff',
493
+ color: '#fff',
494
+ fontSize: 12,
495
+ fontWeight: 600
496
+ }
497
+ }, idx + 1), /*#__PURE__*/React.createElement("span", {
498
+ style: {
499
+ fontSize: 13,
500
+ fontWeight: 500
501
+ }
502
+ }, typeLabelMap[rule.type])), /*#__PURE__*/React.createElement(Space, {
503
+ size: 4
504
+ }, /*#__PURE__*/React.createElement(Button, {
505
+ type: "text",
506
+ size: "small",
507
+ disabled: idx === 0,
508
+ onClick: function onClick() {
509
+ return onMove(rule.id, 'up');
510
+ }
511
+ }, "\u4E0A\u79FB"), /*#__PURE__*/React.createElement(Button, {
512
+ type: "text",
513
+ size: "small",
514
+ disabled: idx === totalRules - 1,
515
+ onClick: function onClick() {
516
+ return onMove(rule.id, 'down');
517
+ }
518
+ }, "\u4E0B\u79FB"), totalRules > 1 && /*#__PURE__*/React.createElement(Button, {
519
+ type: "text",
520
+ danger: true,
521
+ size: "small",
522
+ onClick: function onClick() {
523
+ return onRemove(rule.id);
524
+ }
525
+ }, "\u5220\u9664"))), /*#__PURE__*/React.createElement("div", {
526
+ style: {
527
+ display: 'flex',
528
+ gap: 12,
529
+ marginBottom: 8
530
+ }
531
+ }, /*#__PURE__*/React.createElement("div", {
532
+ style: {
533
+ flex: 1
534
+ }
535
+ }, /*#__PURE__*/React.createElement("label", {
536
+ htmlFor: "field-".concat(rule.id),
537
+ style: {
538
+ display: 'block',
539
+ fontSize: 12,
540
+ color: '#8c8c8c',
541
+ marginBottom: 4
542
+ }
543
+ }, "\u76EE\u6807\u5B57\u6BB5"), /*#__PURE__*/React.createElement(Select, {
544
+ id: "field-".concat(rule.id),
545
+ style: {
546
+ width: '100%'
547
+ },
548
+ value: rule.fieldKey,
549
+ onChange: function onChange(v) {
550
+ return onUpdate(rule.id, {
551
+ fieldKey: v
552
+ });
553
+ },
554
+ options: fieldOptions
555
+ })), /*#__PURE__*/React.createElement("div", {
556
+ style: {
557
+ flex: 1
558
+ }
559
+ }, /*#__PURE__*/React.createElement("label", {
560
+ htmlFor: "type-".concat(rule.id),
561
+ style: {
562
+ display: 'block',
563
+ fontSize: 12,
564
+ color: '#8c8c8c',
565
+ marginBottom: 4
566
+ }
567
+ }, "\u89C4\u5219\u7C7B\u578B"), /*#__PURE__*/React.createElement(Select, {
568
+ id: "type-".concat(rule.id),
569
+ style: {
570
+ width: '100%'
571
+ },
572
+ value: rule.type,
573
+ onChange: function onChange(v) {
574
+ return onUpdate(rule.id, {
575
+ type: v
576
+ });
577
+ },
578
+ options: typeOptions
579
+ }))), renderBody());
580
+ };
581
+
582
+ // ============================================================
583
+ // 主组件
584
+ // ============================================================
585
+
586
+ var BatchEditModal = function BatchEditModal(_ref5) {
587
+ var open = _ref5.open,
588
+ columns = _ref5.columns,
589
+ selectedRowKeys = _ref5.selectedRowKeys,
590
+ data = _ref5.data,
591
+ getRowKey = _ref5.getRowKey,
592
+ onCancel = _ref5.onCancel,
593
+ onApply = _ref5.onApply;
594
+ var availableColumns = React.useMemo(function () {
595
+ return getBatchEditableColumns(columns);
596
+ }, [columns]);
597
+ var _useBatchRules = useBatchRules(open, availableColumns),
598
+ rules = _useBatchRules.rules,
599
+ moveRule = _useBatchRules.moveRule,
600
+ updateRule = _useBatchRules.updateRule,
601
+ removeRule = _useBatchRules.removeRule,
602
+ addRule = _useBatchRules.addRule;
603
+ var _React$useState = React.useState(null),
604
+ _React$useState2 = _slicedToArray(_React$useState, 2),
605
+ previewData = _React$useState2[0],
606
+ setPreviewData = _React$useState2[1];
607
+ React.useEffect(function () {
608
+ if (open) {
609
+ setPreviewData(null);
610
+ }
611
+ }, [open]);
612
+ var selectedCount = selectedRowKeys.length;
613
+ var handleApply = function handleApply() {
614
+ var newData = applyBatchRules(data, selectedRowKeys, getRowKey, columns, rules);
615
+ onApply(newData);
616
+ };
617
+ var handlePreview = function handlePreview() {
618
+ var newData = applyBatchRules(data, selectedRowKeys, getRowKey, columns, rules);
619
+ setPreviewData(newData);
620
+ };
621
+ var previewRows = React.useMemo(function () {
622
+ if (!previewData) return [];
623
+ var keySet = new Set(selectedRowKeys);
624
+ return data.map(function (row, i) {
625
+ return {
626
+ row: row,
627
+ index: i,
628
+ key: getRowKey(row, i)
629
+ };
630
+ }).filter(function (item) {
631
+ return keySet.has(item.key);
632
+ }).slice(0, 10).map(function (item) {
633
+ return {
634
+ index: item.index,
635
+ before: item.row,
636
+ after: previewData[item.index]
637
+ };
638
+ });
639
+ }, [previewData, data, selectedRowKeys, getRowKey]);
640
+ return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(Modal, {
641
+ title: "\u6279\u91CF\u7F16\u8F91",
642
+ open: open,
643
+ onCancel: onCancel,
644
+ width: 720,
645
+ destroyOnClose: true,
646
+ zIndex: 1000,
647
+ footer: [/*#__PURE__*/React.createElement(Button, {
648
+ key: "cancel",
649
+ onClick: onCancel
650
+ }, "\u53D6\u6D88"), /*#__PURE__*/React.createElement(Button, {
651
+ key: "preview",
652
+ onClick: handlePreview,
653
+ disabled: rules.length === 0 || selectedCount === 0
654
+ }, "\u6548\u679C\u9884\u89C8"), /*#__PURE__*/React.createElement(Button, {
655
+ key: "ok",
656
+ type: "primary",
657
+ onClick: handleApply,
658
+ disabled: rules.length === 0 || selectedCount === 0
659
+ }, "\u786E\u8BA4\u5E94\u7528")]
660
+ }, /*#__PURE__*/React.createElement("div", {
661
+ style: {
662
+ marginBottom: 12,
663
+ padding: '8px 12px',
664
+ background: '#e6f7ff',
665
+ borderRadius: 4,
666
+ fontSize: 13
667
+ }
668
+ }, "\u5DF2\u9009\u62E9 ", /*#__PURE__*/React.createElement("strong", null, selectedCount), " \u884C\u6570\u636E\uFF0C\u5171\u8BBE\u7F6E ", /*#__PURE__*/React.createElement("strong", null, rules.length), ' ', "\u6761\u89C4\u5219\u3002 \u89C4\u5219\u6309\u4ECE\u4E0A\u5230\u4E0B\u7684\u987A\u5E8F\u4F9D\u6B21\u6267\u884C\u3002"), /*#__PURE__*/React.createElement("div", null, availableColumns.length === 0 && /*#__PURE__*/React.createElement(Alert, {
669
+ message: "\u6CA1\u6709\u53EF\u6279\u91CF\u7F16\u8F91\u7684\u5B57\u6BB5",
670
+ type: "info",
671
+ showIcon: true
672
+ }), rules.map(function (rule, idx) {
673
+ return /*#__PURE__*/React.createElement(RuleEditor, {
674
+ key: rule.id,
675
+ rule: rule,
676
+ idx: idx,
677
+ columns: availableColumns,
678
+ data: data,
679
+ selectedRowKeys: selectedRowKeys,
680
+ getRowKey: getRowKey,
681
+ totalRules: rules.length,
682
+ onMove: moveRule,
683
+ onUpdate: updateRule,
684
+ onRemove: removeRule
685
+ });
686
+ }), /*#__PURE__*/React.createElement(Button, {
687
+ type: "dashed",
688
+ block: true,
689
+ icon: /*#__PURE__*/React.createElement(PlusOutlined, null),
690
+ disabled: availableColumns.length === 0,
691
+ onClick: addRule,
692
+ style: {
693
+ marginTop: 4
694
+ }
695
+ }, "\u6DFB\u52A0\u89C4\u5219"))), /*#__PURE__*/React.createElement(Modal, {
696
+ title: "\u6279\u91CF\u7F16\u8F91\u6548\u679C\u9884\u89C8",
697
+ open: !!previewData,
698
+ onCancel: function onCancel() {
699
+ return setPreviewData(null);
700
+ },
701
+ onOk: function onOk() {
702
+ return setPreviewData(null);
703
+ },
704
+ width: 640,
705
+ zIndex: 1100,
706
+ footer: [/*#__PURE__*/React.createElement(Button, {
707
+ key: "close",
708
+ onClick: function onClick() {
709
+ return setPreviewData(null);
710
+ }
711
+ }, "\u5173\u95ED")]
712
+ }, previewRows.length > 0 && /*#__PURE__*/React.createElement("div", {
713
+ style: {
714
+ maxHeight: 400,
715
+ overflow: 'auto'
716
+ }
717
+ }, /*#__PURE__*/React.createElement("table", {
718
+ style: {
719
+ width: '100%',
720
+ borderCollapse: 'collapse',
721
+ fontSize: 13
722
+ }
723
+ }, /*#__PURE__*/React.createElement("thead", null, /*#__PURE__*/React.createElement("tr", null, /*#__PURE__*/React.createElement("th", {
724
+ style: {
725
+ border: '1px solid #f0f0f0',
726
+ padding: '6px 8px',
727
+ textAlign: 'left'
728
+ }
729
+ }, "\u884C\u53F7"), rules.map(function (r) {
730
+ var col = availableColumns.find(function (c) {
731
+ var _c$dataIndex4;
732
+ return String((_c$dataIndex4 = c.dataIndex) !== null && _c$dataIndex4 !== void 0 ? _c$dataIndex4 : c.key) === r.fieldKey;
733
+ });
734
+ return /*#__PURE__*/React.createElement("th", {
735
+ key: r.id,
736
+ style: {
737
+ border: '1px solid #f0f0f0',
738
+ padding: '6px 8px',
739
+ textAlign: 'left'
740
+ }
741
+ }, typeof (col === null || col === void 0 ? void 0 : col.title) === 'string' ? col.title : r.fieldKey);
742
+ }))), /*#__PURE__*/React.createElement("tbody", null, previewRows.map(function (item) {
743
+ return /*#__PURE__*/React.createElement("tr", {
744
+ key: item.index
745
+ }, /*#__PURE__*/React.createElement("td", {
746
+ style: {
747
+ border: '1px solid #f0f0f0',
748
+ padding: '6px 8px'
749
+ }
750
+ }, item.index + 1), rules.map(function (r) {
751
+ var _item$before, _item$after;
752
+ var before = (_item$before = item.before) === null || _item$before === void 0 ? void 0 : _item$before[r.fieldKey];
753
+ var after = (_item$after = item.after) === null || _item$after === void 0 ? void 0 : _item$after[r.fieldKey];
754
+ var changed = JSON.stringify(before) !== JSON.stringify(after);
755
+ return /*#__PURE__*/React.createElement("td", {
756
+ key: r.id,
757
+ style: {
758
+ border: '1px solid #f0f0f0',
759
+ padding: '6px 8px',
760
+ background: changed ? '#f6ffed' : undefined
761
+ }
762
+ }, changed ? /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement("span", {
763
+ style: {
764
+ textDecoration: 'line-through',
765
+ color: '#999'
766
+ }
767
+ }, before === undefined || before === null ? '—' : String(before)), ' → ', /*#__PURE__*/React.createElement("span", {
768
+ style: {
769
+ color: '#52c41a',
770
+ fontWeight: 500
771
+ }
772
+ }, after === undefined || after === null ? '—' : String(after))) : /*#__PURE__*/React.createElement("span", null, before === undefined || before === null ? '—' : String(before)));
773
+ }));
774
+ })))), previewRows.length === 0 && /*#__PURE__*/React.createElement(Alert, {
775
+ message: "\u6CA1\u6709\u9009\u4E2D\u7684\u884C\u6216\u89C4\u5219\u4E3A\u7A7A",
776
+ type: "info",
777
+ showIcon: true
778
+ }), selectedRowKeys.length > 10 && /*#__PURE__*/React.createElement("div", {
779
+ style: {
780
+ marginTop: 8,
781
+ fontSize: 12,
782
+ color: '#8c8c8c'
783
+ }
784
+ }, "\u4EC5\u5C55\u793A\u524D 10 \u884C\uFF0C\u5171 ", selectedRowKeys.length, " \u884C")));
785
+ };
786
+ export default BatchEditModal;