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