@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,258 @@
1
+ function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
2
+ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
3
+ function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
4
+ function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : String(i); }
5
+ function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != _typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
6
+ 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); }
7
+ function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }
8
+ function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
9
+ function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter); }
10
+ function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }
11
+ function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }
12
+ 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); }
13
+ 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; }
14
+ // ============================================================
15
+ // 批量编辑工具函数
16
+ // ============================================================
17
+
18
+ /** 叶子列类型 */
19
+
20
+ /** 规则类型标签映射 */
21
+ export var typeLabelMap = {
22
+ value: '固定值填充',
23
+ replace: '查找替换',
24
+ sequence: '序列生成'
25
+ };
26
+
27
+ /**
28
+ * 扁平化列(处理列组 children)
29
+ */
30
+ export var flattenColumns = function flattenColumns(cols) {
31
+ var result = [];
32
+ var _iterator = _createForOfIteratorHelper(cols),
33
+ _step;
34
+ try {
35
+ for (_iterator.s(); !(_step = _iterator.n()).done;) {
36
+ var col = _step.value;
37
+ if ('children' in col && col.children) {
38
+ result.push.apply(result, _toConsumableArray(flattenColumns(col.children)));
39
+ } else {
40
+ result.push(col);
41
+ }
42
+ }
43
+ } catch (err) {
44
+ _iterator.e(err);
45
+ } finally {
46
+ _iterator.f();
47
+ }
48
+ return result;
49
+ };
50
+
51
+ /** 生成唯一规则 ID */
52
+ export var createRuleId = function createRuleId() {
53
+ return "rule_".concat(Date.now(), "_").concat(Math.random().toString(36).slice(2, 8));
54
+ };
55
+
56
+ /** 判断值是否为空 */
57
+ var isEmptyValue = function isEmptyValue(v) {
58
+ return v === undefined || v === null || v === '' || Array.isArray(v) && v.length === 0;
59
+ };
60
+
61
+ /** 创建空规则 */
62
+ export var createEmptyRule = function createEmptyRule(columns) {
63
+ var _ref, _first$dataIndex;
64
+ var flat = flattenColumns(columns);
65
+ var first = flat[0];
66
+ return {
67
+ id: createRuleId(),
68
+ fieldKey: String((_ref = (_first$dataIndex = first === null || first === void 0 ? void 0 : first.dataIndex) !== null && _first$dataIndex !== void 0 ? _first$dataIndex : first === null || first === void 0 ? void 0 : first.key) !== null && _ref !== void 0 ? _ref : ''),
69
+ type: 'value',
70
+ value: undefined,
71
+ mode: 'overwrite'
72
+ };
73
+ };
74
+
75
+ /**
76
+ * 从列上获取 EditableConfig
77
+ */
78
+ var getColumnEditableConfig = function getColumnEditableConfig(col) {
79
+ if (!col) return null;
80
+ var ed = col.editable;
81
+ if (ed === true) return {};
82
+ if (ed && _typeof(ed) === 'object') return ed;
83
+ return null;
84
+ };
85
+
86
+ /**
87
+ * 判断字段是否为数字/文本类型(支持序列生成)
88
+ */
89
+ var isNumericOrTextField = function isNumericOrTextField(col) {
90
+ var editableConfig = getColumnEditableConfig(col);
91
+ if (editableConfig) {
92
+ return editableConfig.type === 'input' || editableConfig.type === 'number';
93
+ }
94
+ return true; // 默认认为是文本
95
+ };
96
+
97
+ /**
98
+ * 应用批量编辑规则到数据
99
+ *
100
+ * @param rows 完整数据数组
101
+ * @param selectedRowKeys 选中的行 key 集合
102
+ * @param getRowKey 行 key 获取函数
103
+ * @param columns 列配置
104
+ * @param rules 批量编辑规则数组(按顺序执行)
105
+ * @returns 更新后的数据数组
106
+ */
107
+ export var applyBatchRules = function applyBatchRules(rows, selectedRowKeys, getRowKey, columns, rules) {
108
+ var selectedKeySet = new Set(selectedRowKeys);
109
+ var flatCols = flattenColumns(columns);
110
+ var colMap = new Map();
111
+ flatCols.forEach(function (col) {
112
+ var _col$dataIndex;
113
+ var key = String((_col$dataIndex = col.dataIndex) !== null && _col$dataIndex !== void 0 ? _col$dataIndex : col.key);
114
+ if (key) colMap.set(key, col);
115
+ });
116
+ var sequenceCounter = 0;
117
+ return rows.map(function (row, i) {
118
+ if (!selectedKeySet.has(getRowKey(row, i))) return row;
119
+ var next = _objectSpread({}, row);
120
+ rules.forEach(function (rule) {
121
+ var col = colMap.get(rule.fieldKey);
122
+ if (!col) return;
123
+ if (rule.type === 'value') {
124
+ if (rule.mode === 'overwrite' || isEmptyValue(next[rule.fieldKey])) {
125
+ next[rule.fieldKey] = rule.value;
126
+ }
127
+ } else if (rule.type === 'replace') {
128
+ var current = next[rule.fieldKey];
129
+ var normalize = function normalize(v) {
130
+ return v === undefined || v === null ? '' : String(v);
131
+ };
132
+ var oldStr = normalize(rule.oldValue);
133
+ var editableConfig = getColumnEditableConfig(col);
134
+ var isSelectField = (editableConfig === null || editableConfig === void 0 ? void 0 : editableConfig.type) === 'select';
135
+ if (isSelectField) {
136
+ if (Array.isArray(current)) {
137
+ var shouldReplace = current.some(function (item) {
138
+ return normalize(item) === oldStr;
139
+ });
140
+ if (shouldReplace) {
141
+ var newValueEmpty = isEmptyValue(rule.newValue);
142
+ next[rule.fieldKey] = newValueEmpty ? current.filter(function (item) {
143
+ return normalize(item) !== oldStr;
144
+ }) : current.map(function (item) {
145
+ return normalize(item) === oldStr ? rule.newValue : item;
146
+ });
147
+ }
148
+ } else if (normalize(current) === oldStr) {
149
+ next[rule.fieldKey] = rule.newValue;
150
+ }
151
+ } else {
152
+ var curStr = normalize(current);
153
+ var matched = false;
154
+ if (rule.matchMode === 'contains') {
155
+ matched = oldStr !== '' && curStr.includes(oldStr);
156
+ } else {
157
+ matched = curStr === oldStr;
158
+ }
159
+ if (matched) {
160
+ if (rule.matchMode === 'contains' && oldStr !== '') {
161
+ next[rule.fieldKey] = curStr.split(oldStr).join(normalize(rule.newValue));
162
+ } else {
163
+ next[rule.fieldKey] = rule.newValue;
164
+ }
165
+ }
166
+ }
167
+ } else if (rule.type === 'sequence') {
168
+ if (!isNumericOrTextField(col)) return;
169
+ var num = rule.start + sequenceCounter * rule.step;
170
+ var numStr = rule.digitWidth ? String(num).padStart(rule.digitWidth, '0') : String(num);
171
+ var _editableConfig = getColumnEditableConfig(col);
172
+ var isNumberField = (_editableConfig === null || _editableConfig === void 0 ? void 0 : _editableConfig.type) === 'number';
173
+ next[rule.fieldKey] = isNumberField ? num : "".concat(rule.prefix).concat(numStr);
174
+ }
175
+ });
176
+ sequenceCounter += 1;
177
+ return next;
178
+ });
179
+ };
180
+
181
+ /**
182
+ * 字段切换时规范化规则
183
+ */
184
+ export var normalizeRuleOnFieldChange = function normalizeRuleOnFieldChange(rule, nextFieldKey, columns) {
185
+ var flatCols = flattenColumns(columns);
186
+ var col = flatCols.find(function (c) {
187
+ var _c$dataIndex;
188
+ return String((_c$dataIndex = c.dataIndex) !== null && _c$dataIndex !== void 0 ? _c$dataIndex : c.key) === nextFieldKey;
189
+ });
190
+ if (rule.type === 'sequence' && !isNumericOrTextField(col)) {
191
+ return {
192
+ id: rule.id,
193
+ fieldKey: nextFieldKey,
194
+ type: 'value',
195
+ value: undefined,
196
+ mode: 'overwrite'
197
+ };
198
+ }
199
+ return _objectSpread(_objectSpread({}, rule), {}, {
200
+ fieldKey: nextFieldKey
201
+ });
202
+ };
203
+
204
+ /**
205
+ * 规则类型切换时重置规则
206
+ */
207
+ export var resetRuleByType = function resetRuleByType(rule, nextType) {
208
+ if (nextType === 'value') {
209
+ return {
210
+ id: rule.id,
211
+ fieldKey: rule.fieldKey,
212
+ type: 'value',
213
+ value: undefined,
214
+ mode: 'overwrite'
215
+ };
216
+ }
217
+ if (nextType === 'replace') {
218
+ return {
219
+ id: rule.id,
220
+ fieldKey: rule.fieldKey,
221
+ type: 'replace',
222
+ oldValue: undefined,
223
+ newValue: undefined,
224
+ matchMode: 'exact'
225
+ };
226
+ }
227
+ return {
228
+ id: rule.id,
229
+ fieldKey: rule.fieldKey,
230
+ type: 'sequence',
231
+ prefix: '',
232
+ start: 1,
233
+ step: 1,
234
+ digitWidth: undefined
235
+ };
236
+ };
237
+
238
+ /**
239
+ * 获取可批量编辑的列(有 dataIndex 且可编辑的列)
240
+ */
241
+ export var getBatchEditableColumns = function getBatchEditableColumns(columns) {
242
+ return flattenColumns(columns).filter(function (col) {
243
+ if (!col.dataIndex && col.dataIndex !== 0) return false;
244
+ return true;
245
+ });
246
+ };
247
+
248
+ /**
249
+ * 判断字段是否支持序列生成
250
+ */
251
+ export var isSequenceSupported = function isSequenceSupported(columns, fieldKey) {
252
+ var flatCols = flattenColumns(columns);
253
+ var col = flatCols.find(function (c) {
254
+ var _c$dataIndex2;
255
+ return String((_c$dataIndex2 = c.dataIndex) !== null && _c$dataIndex2 !== void 0 ? _c$dataIndex2 : c.key) === fieldKey;
256
+ });
257
+ return isNumericOrTextField(col);
258
+ };
@@ -0,0 +1,32 @@
1
+ import * as React from 'react';
2
+ import type { EditableConfig } from '../../interface';
3
+ /**
4
+ * 内置编辑器的统一 props 接口
5
+ */
6
+ export interface BuiltinEditorProps {
7
+ /** 当前值 */
8
+ value: unknown;
9
+ /** 值变化回调(接收纯值,非 event) */
10
+ onChange: (value: unknown) => void;
11
+ /** focus 回调 */
12
+ onFocus: () => void;
13
+ /** blur 回调 */
14
+ onBlur: () => void;
15
+ /** antd status: 'error' 时显示红色边框 */
16
+ status?: 'error' | '';
17
+ /** placeholder */
18
+ placeholder?: string;
19
+ /** 完整的 editable 配置(用于读取 options、props 等) */
20
+ config: EditableConfig;
21
+ }
22
+ /**
23
+ * 渲染内置编辑器
24
+ *
25
+ * 根据 config.type 从注册表中查找对应的编辑器组件并渲染。
26
+ * 如果 type 未注册,回退到 Input。
27
+ */
28
+ export declare function renderBuiltinEditor(props: BuiltinEditorProps): React.ReactElement;
29
+ /**
30
+ * 判断给定的 type 是否为内置编辑器类型
31
+ */
32
+ export declare function isBuiltinEditor(type: string | undefined): boolean;
@@ -0,0 +1,165 @@
1
+ function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
2
+ import * as React from 'react';
3
+ import { Input, InputNumber, Select, Switch } from 'antd';
4
+
5
+ /**
6
+ * 内置编辑器的统一 props 接口
7
+ */
8
+
9
+ // ============================================================
10
+ // Input 编辑器
11
+ // ============================================================
12
+ var InputEditor = function InputEditor(_ref) {
13
+ var value = _ref.value,
14
+ _onChange = _ref.onChange,
15
+ onFocus = _ref.onFocus,
16
+ onBlur = _ref.onBlur,
17
+ status = _ref.status,
18
+ placeholder = _ref.placeholder,
19
+ config = _ref.config;
20
+ return /*#__PURE__*/React.createElement(Input, _extends({
21
+ value: value,
22
+ onChange: function onChange(e) {
23
+ return _onChange(e.target.value);
24
+ },
25
+ onFocus: onFocus,
26
+ onBlur: onBlur,
27
+ status: status || undefined,
28
+ placeholder: placeholder,
29
+ style: {
30
+ width: '100%'
31
+ }
32
+ }, config.props));
33
+ };
34
+
35
+ // ============================================================
36
+ // Textarea 编辑器
37
+ // ============================================================
38
+ var TextareaEditor = function TextareaEditor(_ref2) {
39
+ var value = _ref2.value,
40
+ _onChange2 = _ref2.onChange,
41
+ onFocus = _ref2.onFocus,
42
+ onBlur = _ref2.onBlur,
43
+ status = _ref2.status,
44
+ placeholder = _ref2.placeholder,
45
+ config = _ref2.config;
46
+ return /*#__PURE__*/React.createElement(Input.TextArea, _extends({
47
+ value: value,
48
+ onChange: function onChange(e) {
49
+ return _onChange2(e.target.value);
50
+ },
51
+ onFocus: onFocus,
52
+ onBlur: onBlur,
53
+ status: status || undefined,
54
+ placeholder: placeholder,
55
+ style: {
56
+ width: '100%'
57
+ },
58
+ autoSize: {
59
+ minRows: 1,
60
+ maxRows: 3
61
+ }
62
+ }, config.props));
63
+ };
64
+
65
+ // ============================================================
66
+ // Number 编辑器
67
+ // ============================================================
68
+ var NumberEditor = function NumberEditor(_ref3) {
69
+ var value = _ref3.value,
70
+ _onChange3 = _ref3.onChange,
71
+ onFocus = _ref3.onFocus,
72
+ onBlur = _ref3.onBlur,
73
+ status = _ref3.status,
74
+ placeholder = _ref3.placeholder,
75
+ config = _ref3.config;
76
+ return /*#__PURE__*/React.createElement(InputNumber, _extends({
77
+ value: value,
78
+ onChange: function onChange(val) {
79
+ return _onChange3(val !== null && val !== void 0 ? val : undefined);
80
+ },
81
+ onFocus: onFocus,
82
+ onBlur: onBlur,
83
+ status: status || undefined,
84
+ placeholder: placeholder,
85
+ style: {
86
+ width: '100%'
87
+ }
88
+ }, config.props));
89
+ };
90
+
91
+ // ============================================================
92
+ // Select 编辑器
93
+ // ============================================================
94
+ var SelectEditor = function SelectEditor(_ref4) {
95
+ var value = _ref4.value,
96
+ onChange = _ref4.onChange,
97
+ onFocus = _ref4.onFocus,
98
+ onBlur = _ref4.onBlur,
99
+ status = _ref4.status,
100
+ placeholder = _ref4.placeholder,
101
+ config = _ref4.config;
102
+ return /*#__PURE__*/React.createElement(Select, _extends({
103
+ value: value,
104
+ onChange: onChange,
105
+ onFocus: onFocus,
106
+ onBlur: onBlur,
107
+ status: status || undefined,
108
+ placeholder: placeholder,
109
+ style: {
110
+ width: '100%'
111
+ },
112
+ options: config.options
113
+ }, config.props));
114
+ };
115
+
116
+ // ============================================================
117
+ // Switch 编辑器
118
+ // ============================================================
119
+ var SwitchEditor = function SwitchEditor(_ref5) {
120
+ var value = _ref5.value,
121
+ onChange = _ref5.onChange,
122
+ onFocus = _ref5.onFocus,
123
+ onBlur = _ref5.onBlur,
124
+ config = _ref5.config;
125
+ return /*#__PURE__*/React.createElement(Switch, _extends({
126
+ checked: !!value,
127
+ onChange: onChange
128
+ // `onFocus`/`onBlur` are forwarded by Switch at runtime but missing from
129
+ // `SwitchProps`; pass them via spread (spread props skip excess checks).
130
+ ,
131
+ onFocus: onFocus,
132
+ onBlur: onBlur
133
+ }, config.props));
134
+ };
135
+
136
+ // ============================================================
137
+ // 编辑器注册表
138
+ // ============================================================
139
+ var editorRegistry = {
140
+ input: InputEditor,
141
+ textarea: TextareaEditor,
142
+ number: NumberEditor,
143
+ select: SelectEditor,
144
+ switch: SwitchEditor
145
+ };
146
+
147
+ /**
148
+ * 渲染内置编辑器
149
+ *
150
+ * 根据 config.type 从注册表中查找对应的编辑器组件并渲染。
151
+ * 如果 type 未注册,回退到 Input。
152
+ */
153
+ export function renderBuiltinEditor(props) {
154
+ var _editorRegistry, _config$type;
155
+ var config = props.config;
156
+ var Editor = (_editorRegistry = editorRegistry[(_config$type = config.type) !== null && _config$type !== void 0 ? _config$type : 'input']) !== null && _editorRegistry !== void 0 ? _editorRegistry : InputEditor;
157
+ return /*#__PURE__*/React.createElement(Editor, props);
158
+ }
159
+
160
+ /**
161
+ * 判断给定的 type 是否为内置编辑器类型
162
+ */
163
+ export function isBuiltinEditor(type) {
164
+ return !!type && type in editorRegistry;
165
+ }
@@ -0,0 +1,11 @@
1
+ export type { EditableErrors, EditableValidateResult, } from '../../interface';
2
+ export { default as BatchEditModal } from './BatchEditModal';
3
+ export type { BatchEditModalProps, BatchEditMode, BatchRule, BatchRuleBase, BatchRuleType, ReplaceBatchRule, ReplaceMatchMode, SequenceBatchRule, ValueBatchRule, } from './batchEditTypes';
4
+ export { applyBatchRules, getBatchEditableColumns, isSequenceSupported, typeLabelMap, } from './batchEditUtils';
5
+ export { default as EditableCell } from './EditableCell';
6
+ export type { EditableContextValue } from './EditableContext';
7
+ export { default as EditableContext } from './EditableContext';
8
+ export { default as useBatchRules } from './useBatchRules';
9
+ export { default as useEditable } from './useEditable';
10
+ export type { UseEditableOptions } from './useEditable';
11
+ export { parseEditableConfig } from './useEditable';
@@ -0,0 +1,10 @@
1
+ // Re-export types that now live in interface.ts for backward compatibility
2
+
3
+ // 批量编辑
4
+ export { default as BatchEditModal } from "./BatchEditModal";
5
+ export { applyBatchRules, getBatchEditableColumns, isSequenceSupported, typeLabelMap } from "./batchEditUtils";
6
+ export { default as EditableCell } from "./EditableCell";
7
+ export { default as EditableContext } from "./EditableContext";
8
+ export { default as useBatchRules } from "./useBatchRules";
9
+ export { default as useEditable } from "./useEditable";
10
+ export { parseEditableConfig } from "./useEditable";
@@ -0,0 +1,17 @@
1
+ import type { ColumnsType } from '../../interface';
2
+ import type { BatchRule } from './batchEditTypes';
3
+ /**
4
+ * 批量编辑规则管理 hook
5
+ *
6
+ * - 打开时自动创建一条空规则
7
+ * - 支持规则的增删改、上下移动
8
+ * - 字段切换时自动规范化规则类型
9
+ */
10
+ declare function useBatchRules(open: boolean, columns: ColumnsType): {
11
+ rules: BatchRule[];
12
+ moveRule: (id: string, direction: "up" | "down") => void;
13
+ updateRule: (id: string, patch: Partial<BatchRule>) => void;
14
+ removeRule: (id: string) => void;
15
+ addRule: () => void;
16
+ };
17
+ export default useBatchRules;
@@ -0,0 +1,96 @@
1
+ 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); }
2
+ function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
3
+ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
4
+ function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
5
+ function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : String(i); }
6
+ function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != _typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
7
+ function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }
8
+ function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
9
+ function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter); }
10
+ function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }
11
+ function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
12
+ 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."); }
13
+ 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); }
14
+ 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; }
15
+ 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; } }
16
+ function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
17
+ import * as React from 'react';
18
+ import { createEmptyRule, normalizeRuleOnFieldChange, resetRuleByType } from "./batchEditUtils";
19
+
20
+ /**
21
+ * 批量编辑规则管理 hook
22
+ *
23
+ * - 打开时自动创建一条空规则
24
+ * - 支持规则的增删改、上下移动
25
+ * - 字段切换时自动规范化规则类型
26
+ */
27
+ function useBatchRules(open, columns) {
28
+ var _React$useState = React.useState([]),
29
+ _React$useState2 = _slicedToArray(_React$useState, 2),
30
+ rules = _React$useState2[0],
31
+ setRules = _React$useState2[1];
32
+
33
+ // 仅在 open 由 false → true 跳变时初始化规则;
34
+ // open 期间 columns 引用变化(父组件重渲染)不得重置用户已配置的规则
35
+ var prevOpenRef = React.useRef(false);
36
+ React.useEffect(function () {
37
+ var justOpened = open && !prevOpenRef.current;
38
+ prevOpenRef.current = open;
39
+ if (justOpened) {
40
+ setRules(columns.length > 0 ? [createEmptyRule(columns)] : []);
41
+ }
42
+ }, [open, columns]);
43
+ var moveRule = React.useCallback(function (id, direction) {
44
+ setRules(function (prev) {
45
+ var idx = prev.findIndex(function (r) {
46
+ return r.id === id;
47
+ });
48
+ if (idx < 0) return prev;
49
+ var target = direction === 'up' ? idx - 1 : idx + 1;
50
+ if (target < 0 || target >= prev.length) return prev;
51
+ var next = _toConsumableArray(prev);
52
+ var _ref = [next[target], next[idx]];
53
+ next[idx] = _ref[0];
54
+ next[target] = _ref[1];
55
+ return next;
56
+ });
57
+ }, []);
58
+ var updateRule = React.useCallback(function (id, patch) {
59
+ setRules(function (prev) {
60
+ return prev.map(function (r) {
61
+ if (r.id !== id) return r;
62
+
63
+ // 字段切换
64
+ if (patch.fieldKey && patch.fieldKey !== r.fieldKey) {
65
+ return normalizeRuleOnFieldChange(r, patch.fieldKey, columns);
66
+ }
67
+
68
+ // 规则类型切换
69
+ if (patch.type && patch.type !== r.type) {
70
+ return resetRuleByType(r, patch.type);
71
+ }
72
+ return _objectSpread(_objectSpread({}, r), patch);
73
+ });
74
+ });
75
+ }, [columns]);
76
+ var removeRule = React.useCallback(function (id) {
77
+ setRules(function (prev) {
78
+ return prev.filter(function (r) {
79
+ return r.id !== id;
80
+ });
81
+ });
82
+ }, []);
83
+ var addRule = React.useCallback(function () {
84
+ setRules(function (prev) {
85
+ return columns.length > 0 ? [].concat(_toConsumableArray(prev), [createEmptyRule(columns)]) : prev;
86
+ });
87
+ }, [columns]);
88
+ return {
89
+ rules: rules,
90
+ moveRule: moveRule,
91
+ updateRule: updateRule,
92
+ removeRule: removeRule,
93
+ addRule: addRule
94
+ };
95
+ }
96
+ export default useBatchRules;
@@ -0,0 +1,51 @@
1
+ import * as React from 'react';
2
+ import type { ColumnsType, EditableConfig, EditableErrors, EditableValidateResult } from '../../interface';
3
+ import type { AnyObject } from '../../../_util/type';
4
+ import type { EditableContextValue } from './EditableContext';
5
+ /** 错误集合类型 — 从 interface.ts 重新导出保持兼容 */
6
+ export type { EditableErrors, EditableValidateResult };
7
+ /** 重新导出,保持 index.ts 的 API 不变 */
8
+ export type { EditableContextValue } from './EditableContext';
9
+ export interface UseEditableOptions {
10
+ /** 列配置(含 editable 配置) */
11
+ columns: ColumnsType;
12
+ /** 数据源 */
13
+ data: AnyObject[];
14
+ /** 值变化回调 */
15
+ onChange?: (data: AnyObject[]) => void;
16
+ /** 校验完成回调 */
17
+ onValidate?: (result: EditableValidateResult) => void;
18
+ /** 行 key 获取函数 */
19
+ getRowKey?: (record: AnyObject, index: number) => React.Key;
20
+ /** 树形子数据字段名(用于在 children 中定位记录) */
21
+ childrenColumnName?: string;
22
+ /** 滚动到行(rowKey 定位;rowIndex 为无 key 时的降级下标) */
23
+ scrollToRow?: (rowKey: React.Key, rowIndex: number) => void;
24
+ /** 是否启用编辑 */
25
+ enabled?: boolean;
26
+ }
27
+ /**
28
+ * 解析列的 editable 配置
29
+ */
30
+ export declare function parseEditableConfig(editable: boolean | EditableConfig | undefined, globalEnabled?: boolean): {
31
+ enabled: boolean;
32
+ config: EditableConfig | null;
33
+ };
34
+ /**
35
+ * useEditable hook
36
+ *
37
+ * 管理表格的可编辑状态、校验、错误展示
38
+ *
39
+ * 性能优化:
40
+ * - flatColumns 通过 useMemo 缓存,避免每次 onCellChange / validateCell 都重新扁平化
41
+ * - colMap 缓存 dataIndex → column 映射,O(1) 查找
42
+ */
43
+ declare function useEditable({ columns, data, onChange, onValidate, getRowKey, childrenColumnName, scrollToRow, }: UseEditableOptions): {
44
+ contextValue: EditableContextValue;
45
+ errors: Map<string, string[]>;
46
+ validateCell: (rowKey: React.Key | undefined, dataIndex: string | number, value: any, record: AnyObject, rowIndex?: number) => Promise<void>;
47
+ validateAll: (validateData?: AnyObject[]) => Promise<EditableValidateResult>;
48
+ resetErrors: () => void;
49
+ onCellChange: (rowKey: React.Key | undefined, dataIndex: string | number, value: any, record: AnyObject, rowIndex: number) => void;
50
+ };
51
+ export default useEditable;