@nokecy/qc-ui-components 2.0.0-beta.0 → 2.0.0-beta.2

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 (251) hide show
  1. package/dist/cjs/ConfirmPro/index.d.ts +12 -9
  2. package/dist/cjs/ConfirmPro/index.js +11 -34
  3. package/dist/cjs/ag-grid-plus/ag-gridPlus.js +425 -157
  4. package/dist/cjs/ag-grid-plus/context/gridContext.d.ts +12 -1
  5. package/dist/cjs/ag-grid-plus/context/queryFormContext.d.ts +2 -0
  6. package/dist/cjs/ag-grid-plus/context/useSchemeDataFlow.js +8 -0
  7. package/dist/cjs/ag-grid-plus/density.d.ts +25 -0
  8. package/dist/cjs/ag-grid-plus/density.js +52 -0
  9. package/dist/cjs/ag-grid-plus/index.d.ts +1 -0
  10. package/dist/cjs/ag-grid-plus/index.js +7 -0
  11. package/dist/cjs/ag-grid-plus/index.less +43 -0
  12. package/dist/cjs/ag-grid-plus/interface.d.ts +58 -1
  13. package/dist/cjs/ag-grid-plus/interface.js +1 -1
  14. package/dist/cjs/ag-grid-plus/queryForm/index.d.ts +11 -0
  15. package/dist/cjs/ag-grid-plus/queryForm/index.js +62 -10
  16. package/dist/cjs/ag-grid-plus/queryForm/queryForm.d.ts +10 -0
  17. package/dist/cjs/ag-grid-plus/queryForm/queryForm.js +63 -26
  18. package/dist/cjs/ag-grid-plus/queryForm/queryValues.d.ts +9 -0
  19. package/dist/cjs/ag-grid-plus/queryForm/queryValues.js +61 -0
  20. package/dist/cjs/ag-grid-plus/rowColors.d.ts +12 -0
  21. package/dist/cjs/ag-grid-plus/rowColors.js +58 -0
  22. package/dist/cjs/ag-grid-plus/setting/ColumnConfigTable.d.ts +5 -0
  23. package/dist/cjs/ag-grid-plus/setting/ColumnConfigTable.js +14 -5
  24. package/dist/cjs/ag-grid-plus/setting/ColumnSetting.js +108 -76
  25. package/dist/cjs/ag-grid-plus/setting/QuerySchemeManager.js +10 -9
  26. package/dist/cjs/ag-grid-plus/setting/autoColumnMemory.d.ts +37 -0
  27. package/dist/cjs/ag-grid-plus/setting/autoColumnMemory.js +206 -0
  28. package/dist/cjs/ag-grid-plus/setting/columnGroupUtils.d.ts +2 -0
  29. package/dist/cjs/ag-grid-plus/setting/columnGroupUtils.js +19 -1
  30. package/dist/cjs/ag-grid-plus/setting/index.js +5 -14
  31. package/dist/cjs/ag-grid-plus/settingItem/index.d.ts +11 -1
  32. package/dist/cjs/ag-grid-plus/settingItem/index.js +34 -12
  33. package/dist/cjs/ag-grid-plus/shared/EmptyIllustration.d.ts +16 -0
  34. package/dist/cjs/ag-grid-plus/shared/EmptyIllustration.js +87 -0
  35. package/dist/cjs/ag-grid-plus/shared/NoRowsOverlay.js +9 -1
  36. package/dist/cjs/ag-grid-plus/shared/SkeletonOverlay.d.ts +11 -0
  37. package/dist/cjs/ag-grid-plus/shared/SkeletonOverlay.js +40 -0
  38. package/dist/cjs/ag-grid-plus/shared/storage/schemeStorageAdapter.d.ts +1 -1
  39. package/dist/cjs/ag-grid-plus/theme.d.ts +7 -1
  40. package/dist/cjs/ag-grid-plus/theme.js +31 -6
  41. package/dist/cjs/ag-grid-plus/toolBar/OverflowActions.d.ts +16 -0
  42. package/dist/cjs/ag-grid-plus/toolBar/OverflowActions.js +128 -0
  43. package/dist/cjs/ag-grid-plus/toolBar/index.d.ts +3 -1
  44. package/dist/cjs/ag-grid-plus/toolBar/index.js +43 -35
  45. package/dist/cjs/ag-grid-plus/toolBar/leftContent.d.ts +2 -2
  46. package/dist/cjs/ag-grid-plus/toolBar/leftContent.js +2 -2
  47. package/dist/cjs/ag-grid-plus/toolBar/overflow.d.ts +20 -0
  48. package/dist/cjs/ag-grid-plus/toolBar/overflow.js +48 -0
  49. package/dist/cjs/ag-grid-plus/toolBar/style.js +71 -15
  50. package/dist/cjs/ag-grid-plus/types.d.ts +6 -0
  51. package/dist/cjs/ag-grid-plus/utils/agGridCompat.js +12 -3
  52. package/dist/cjs/ag-grid-plus/utils/agGridLicenseNotice.d.ts +7 -0
  53. package/dist/cjs/ag-grid-plus/utils/agGridLicenseNotice.js +105 -0
  54. package/dist/cjs/ag-grid-plus/utils/columnProcessors.d.ts +3 -0
  55. package/dist/cjs/ag-grid-plus/utils/columnProcessors.js +13 -2
  56. package/dist/cjs/ag-grid-plus/utils/constants.d.ts +3 -2
  57. package/dist/cjs/ag-grid-plus/utils/constants.js +3 -2
  58. package/dist/cjs/ag-grid-plus/utils/crossPageSelection.d.ts +21 -0
  59. package/dist/cjs/ag-grid-plus/utils/crossPageSelection.js +58 -0
  60. package/dist/cjs/ag-grid-plus/utils/emptyState.d.ts +2 -0
  61. package/dist/cjs/ag-grid-plus/utils/emptyState.js +9 -5
  62. package/dist/cjs/ag-grid-plus/utils/listKeyboard.d.ts +24 -0
  63. package/dist/cjs/ag-grid-plus/utils/listKeyboard.js +83 -0
  64. package/dist/cjs/ag-grid-plus/utils/pagination.d.ts +26 -0
  65. package/dist/cjs/ag-grid-plus/utils/pagination.js +69 -0
  66. package/dist/cjs/ag-grid-plus/utils/queryDispatch.d.ts +7 -0
  67. package/dist/cjs/ag-grid-plus/utils/queryDispatch.js +17 -0
  68. package/dist/cjs/ag-grid-plus/utils/statusPill.d.ts +25 -0
  69. package/dist/cjs/ag-grid-plus/utils/statusPill.js +196 -0
  70. package/dist/cjs/ag-grid-plus/utils/valueEnumColor.d.ts +6 -1
  71. package/dist/cjs/ag-grid-plus/utils/valueEnumColor.js +13 -9
  72. package/dist/cjs/ag-grid-plus/utils/valueFormat.d.ts +19 -0
  73. package/dist/cjs/ag-grid-plus/utils/valueFormat.js +73 -0
  74. package/dist/cjs/ag-grid-plus/utils.js +3 -2
  75. package/dist/cjs/array-table/arrayAddBtn.d.ts +1 -0
  76. package/dist/cjs/array-table/arrayAddBtn.js +2 -2
  77. package/dist/cjs/array-table/autoHeight.d.ts +18 -0
  78. package/dist/cjs/array-table/autoHeight.js +30 -0
  79. package/dist/cjs/array-table/batchRemove.d.ts +2 -2
  80. package/dist/cjs/array-table/cellEditorMarker.d.ts +18 -0
  81. package/dist/cjs/array-table/cellEditorMarker.js +92 -0
  82. package/dist/cjs/array-table/errorLocator.d.ts +29 -0
  83. package/dist/cjs/array-table/errorLocator.js +101 -0
  84. package/dist/cjs/array-table/hooks.d.ts +52 -4
  85. package/dist/cjs/array-table/hooks.js +251 -18
  86. package/dist/cjs/array-table/index.d.ts +6 -0
  87. package/dist/cjs/array-table/index.js +167 -23
  88. package/dist/cjs/array-table/interface.d.ts +22 -0
  89. package/dist/cjs/array-table/preview.js +39 -5
  90. package/dist/cjs/array-table/rowFeedback.d.ts +2 -2
  91. package/dist/cjs/array-table/rowFeedback.js +8 -8
  92. package/dist/cjs/array-table/summary.d.ts +25 -0
  93. package/dist/cjs/array-table/summary.js +70 -0
  94. package/dist/cjs/array-table/theme.d.ts +35 -5
  95. package/dist/cjs/array-table/theme.js +49 -12
  96. package/dist/cjs/array-table/title.d.ts +3 -0
  97. package/dist/cjs/array-table/title.js +29 -0
  98. package/dist/cjs/array-table/utils.d.ts +2 -1
  99. package/dist/cjs/array-table/utils.js +94 -23
  100. package/dist/cjs/card/pro-card/Card/useLegacyItems.d.ts +1 -1
  101. package/dist/cjs/dateCellEditor/DateCellEditor.d.ts +5 -0
  102. package/dist/cjs/dateCellEditor/DateCellEditor.js +42 -17
  103. package/dist/cjs/deleteConfirm/index.d.ts +14 -0
  104. package/dist/cjs/deleteConfirm/index.js +73 -12
  105. package/dist/cjs/dialogSelect/index.d.ts +19 -0
  106. package/dist/cjs/dialogSelect/index.js +189 -15
  107. package/dist/cjs/dialogSelect/index.less +18 -0
  108. package/dist/cjs/documentPage/documentPage.d.ts +6 -3
  109. package/dist/cjs/documentPage/documentPage.js +23 -8
  110. package/dist/cjs/documentPage/index.d.ts +2 -0
  111. package/dist/cjs/documentPage/index.js +19 -0
  112. package/dist/cjs/documentPage/leaveGuard.d.ts +31 -0
  113. package/dist/cjs/documentPage/leaveGuard.js +91 -0
  114. package/dist/cjs/draggableModal/index.d.ts +24 -1
  115. package/dist/cjs/draggableModal/index.js +36 -6
  116. package/dist/cjs/fullScreenAlert/index.less +10 -10
  117. package/dist/cjs/index.d.ts +3 -0
  118. package/dist/cjs/index.js +22 -0
  119. package/dist/cjs/readPretty/arrayTable.js +5 -1
  120. package/dist/cjs/scanCollect/ScanFeedbackInput.d.ts +26 -0
  121. package/dist/cjs/scanCollect/ScanFeedbackInput.js +113 -0
  122. package/dist/cjs/scanCollect/index.d.ts +4 -0
  123. package/dist/cjs/scanCollect/index.js +14 -0
  124. package/dist/cjs/scanCollect/scanSound.d.ts +15 -0
  125. package/dist/cjs/scanCollect/scanSound.js +91 -0
  126. package/dist/esm/ConfirmPro/index.d.ts +12 -9
  127. package/dist/esm/ConfirmPro/index.js +11 -34
  128. package/dist/esm/ag-grid-plus/ag-gridPlus.js +426 -157
  129. package/dist/esm/ag-grid-plus/context/gridContext.d.ts +12 -1
  130. package/dist/esm/ag-grid-plus/context/queryFormContext.d.ts +2 -0
  131. package/dist/esm/ag-grid-plus/context/useSchemeDataFlow.js +8 -0
  132. package/dist/esm/ag-grid-plus/density.d.ts +25 -0
  133. package/dist/esm/ag-grid-plus/density.js +45 -0
  134. package/dist/esm/ag-grid-plus/index.d.ts +1 -0
  135. package/dist/esm/ag-grid-plus/index.js +3 -0
  136. package/dist/esm/ag-grid-plus/index.less +43 -0
  137. package/dist/esm/ag-grid-plus/interface.d.ts +58 -1
  138. package/dist/esm/ag-grid-plus/interface.js +2 -0
  139. package/dist/esm/ag-grid-plus/queryForm/index.d.ts +11 -0
  140. package/dist/esm/ag-grid-plus/queryForm/index.js +62 -10
  141. package/dist/esm/ag-grid-plus/queryForm/queryForm.d.ts +10 -0
  142. package/dist/esm/ag-grid-plus/queryForm/queryForm.js +64 -26
  143. package/dist/esm/ag-grid-plus/queryForm/queryValues.d.ts +9 -0
  144. package/dist/esm/ag-grid-plus/queryForm/queryValues.js +54 -0
  145. package/dist/esm/ag-grid-plus/rowColors.d.ts +12 -0
  146. package/dist/esm/ag-grid-plus/rowColors.js +50 -0
  147. package/dist/esm/ag-grid-plus/setting/ColumnConfigTable.d.ts +5 -0
  148. package/dist/esm/ag-grid-plus/setting/ColumnConfigTable.js +14 -5
  149. package/dist/esm/ag-grid-plus/setting/ColumnSetting.js +110 -78
  150. package/dist/esm/ag-grid-plus/setting/QuerySchemeManager.js +10 -9
  151. package/dist/esm/ag-grid-plus/setting/autoColumnMemory.d.ts +37 -0
  152. package/dist/esm/ag-grid-plus/setting/autoColumnMemory.js +198 -0
  153. package/dist/esm/ag-grid-plus/setting/columnGroupUtils.d.ts +2 -0
  154. package/dist/esm/ag-grid-plus/setting/columnGroupUtils.js +18 -1
  155. package/dist/esm/ag-grid-plus/setting/index.js +6 -15
  156. package/dist/esm/ag-grid-plus/settingItem/index.d.ts +11 -1
  157. package/dist/esm/ag-grid-plus/settingItem/index.js +35 -13
  158. package/dist/esm/ag-grid-plus/shared/EmptyIllustration.d.ts +16 -0
  159. package/dist/esm/ag-grid-plus/shared/EmptyIllustration.js +82 -0
  160. package/dist/esm/ag-grid-plus/shared/NoRowsOverlay.js +9 -1
  161. package/dist/esm/ag-grid-plus/shared/SkeletonOverlay.d.ts +11 -0
  162. package/dist/esm/ag-grid-plus/shared/SkeletonOverlay.js +34 -0
  163. package/dist/esm/ag-grid-plus/shared/storage/schemeStorageAdapter.d.ts +1 -1
  164. package/dist/esm/ag-grid-plus/theme.d.ts +7 -1
  165. package/dist/esm/ag-grid-plus/theme.js +31 -6
  166. package/dist/esm/ag-grid-plus/toolBar/OverflowActions.d.ts +16 -0
  167. package/dist/esm/ag-grid-plus/toolBar/OverflowActions.js +120 -0
  168. package/dist/esm/ag-grid-plus/toolBar/index.d.ts +3 -1
  169. package/dist/esm/ag-grid-plus/toolBar/index.js +43 -35
  170. package/dist/esm/ag-grid-plus/toolBar/leftContent.d.ts +2 -2
  171. package/dist/esm/ag-grid-plus/toolBar/leftContent.js +2 -2
  172. package/dist/esm/ag-grid-plus/toolBar/overflow.d.ts +20 -0
  173. package/dist/esm/ag-grid-plus/toolBar/overflow.js +41 -0
  174. package/dist/esm/ag-grid-plus/toolBar/style.js +71 -15
  175. package/dist/esm/ag-grid-plus/types.d.ts +6 -0
  176. package/dist/esm/ag-grid-plus/utils/agGridCompat.js +12 -3
  177. package/dist/esm/ag-grid-plus/utils/agGridLicenseNotice.d.ts +7 -0
  178. package/dist/esm/ag-grid-plus/utils/agGridLicenseNotice.js +97 -0
  179. package/dist/esm/ag-grid-plus/utils/columnProcessors.d.ts +3 -0
  180. package/dist/esm/ag-grid-plus/utils/columnProcessors.js +14 -3
  181. package/dist/esm/ag-grid-plus/utils/constants.d.ts +3 -2
  182. package/dist/esm/ag-grid-plus/utils/constants.js +3 -2
  183. package/dist/esm/ag-grid-plus/utils/crossPageSelection.d.ts +21 -0
  184. package/dist/esm/ag-grid-plus/utils/crossPageSelection.js +52 -0
  185. package/dist/esm/ag-grid-plus/utils/emptyState.d.ts +2 -0
  186. package/dist/esm/ag-grid-plus/utils/emptyState.js +9 -5
  187. package/dist/esm/ag-grid-plus/utils/listKeyboard.d.ts +24 -0
  188. package/dist/esm/ag-grid-plus/utils/listKeyboard.js +77 -0
  189. package/dist/esm/ag-grid-plus/utils/pagination.d.ts +26 -0
  190. package/dist/esm/ag-grid-plus/utils/pagination.js +60 -0
  191. package/dist/esm/ag-grid-plus/utils/queryDispatch.d.ts +7 -0
  192. package/dist/esm/ag-grid-plus/utils/queryDispatch.js +11 -0
  193. package/dist/esm/ag-grid-plus/utils/statusPill.d.ts +25 -0
  194. package/dist/esm/ag-grid-plus/utils/statusPill.js +192 -0
  195. package/dist/esm/ag-grid-plus/utils/valueEnumColor.d.ts +6 -1
  196. package/dist/esm/ag-grid-plus/utils/valueEnumColor.js +12 -8
  197. package/dist/esm/ag-grid-plus/utils/valueFormat.d.ts +19 -0
  198. package/dist/esm/ag-grid-plus/utils/valueFormat.js +63 -0
  199. package/dist/esm/ag-grid-plus/utils.js +3 -2
  200. package/dist/esm/array-table/arrayAddBtn.d.ts +1 -0
  201. package/dist/esm/array-table/arrayAddBtn.js +1 -1
  202. package/dist/esm/array-table/autoHeight.d.ts +18 -0
  203. package/dist/esm/array-table/autoHeight.js +25 -0
  204. package/dist/esm/array-table/batchRemove.d.ts +2 -2
  205. package/dist/esm/array-table/cellEditorMarker.d.ts +18 -0
  206. package/dist/esm/array-table/cellEditorMarker.js +84 -0
  207. package/dist/esm/array-table/errorLocator.d.ts +29 -0
  208. package/dist/esm/array-table/errorLocator.js +95 -0
  209. package/dist/esm/array-table/hooks.d.ts +52 -4
  210. package/dist/esm/array-table/hooks.js +251 -17
  211. package/dist/esm/array-table/index.d.ts +6 -0
  212. package/dist/esm/array-table/index.js +170 -25
  213. package/dist/esm/array-table/interface.d.ts +22 -0
  214. package/dist/esm/array-table/preview.js +43 -7
  215. package/dist/esm/array-table/rowFeedback.d.ts +2 -2
  216. package/dist/esm/array-table/rowFeedback.js +8 -8
  217. package/dist/esm/array-table/summary.d.ts +25 -0
  218. package/dist/esm/array-table/summary.js +66 -0
  219. package/dist/esm/array-table/theme.d.ts +35 -5
  220. package/dist/esm/array-table/theme.js +47 -12
  221. package/dist/esm/array-table/title.d.ts +3 -0
  222. package/dist/esm/array-table/title.js +24 -0
  223. package/dist/esm/array-table/utils.d.ts +2 -1
  224. package/dist/esm/array-table/utils.js +93 -22
  225. package/dist/esm/card/pro-card/Card/useLegacyItems.d.ts +1 -1
  226. package/dist/esm/dateCellEditor/DateCellEditor.d.ts +5 -0
  227. package/dist/esm/dateCellEditor/DateCellEditor.js +42 -17
  228. package/dist/esm/deleteConfirm/index.d.ts +14 -0
  229. package/dist/esm/deleteConfirm/index.js +72 -12
  230. package/dist/esm/dialogSelect/index.d.ts +19 -0
  231. package/dist/esm/dialogSelect/index.js +190 -16
  232. package/dist/esm/dialogSelect/index.less +18 -0
  233. package/dist/esm/documentPage/documentPage.d.ts +6 -3
  234. package/dist/esm/documentPage/documentPage.js +23 -8
  235. package/dist/esm/documentPage/index.d.ts +2 -0
  236. package/dist/esm/documentPage/index.js +1 -0
  237. package/dist/esm/documentPage/leaveGuard.d.ts +31 -0
  238. package/dist/esm/documentPage/leaveGuard.js +86 -0
  239. package/dist/esm/draggableModal/index.d.ts +24 -1
  240. package/dist/esm/draggableModal/index.js +35 -5
  241. package/dist/esm/fullScreenAlert/index.less +10 -10
  242. package/dist/esm/index.d.ts +3 -0
  243. package/dist/esm/index.js +2 -0
  244. package/dist/esm/readPretty/arrayTable.js +6 -2
  245. package/dist/esm/scanCollect/ScanFeedbackInput.d.ts +26 -0
  246. package/dist/esm/scanCollect/ScanFeedbackInput.js +107 -0
  247. package/dist/esm/scanCollect/index.d.ts +4 -0
  248. package/dist/esm/scanCollect/index.js +2 -0
  249. package/dist/esm/scanCollect/scanSound.d.ts +15 -0
  250. package/dist/esm/scanCollect/scanSound.js +84 -0
  251. package/package.json +2 -2
@@ -15,17 +15,22 @@ var _columnGroup = require("./columnGroup");
15
15
  var _indexColumn = require("./indexColumn");
16
16
  var _gridSequence = require("../shared/gridSequence");
17
17
  var _rowIdentity = require("./rowIdentity");
18
+ var _summary = require("./summary");
18
19
  var _hooks = require("./hooks");
20
+ var _arrayAddBtn = _interopRequireWildcard(require("./arrayAddBtn"));
19
21
  var _arrayBase = _interopRequireDefault(require("./arrayBase"));
20
- var _arrayAddBtn = _interopRequireDefault(require("./arrayAddBtn"));
21
22
  var _preview = _interopRequireDefault(require("./preview"));
22
23
  var _antd = require("antd");
23
24
  var _index = _interopRequireDefault(require("../ag-grid-plus/setting/index"));
24
25
  var _columnGroupUtils = require("../ag-grid-plus/setting/columnGroupUtils");
25
26
  var _theme = require("./theme");
26
27
  var _fixedGuard = require("./fixedGuard");
28
+ var _autoHeight = require("./autoHeight");
29
+ var _title = require("./title");
27
30
  var _rowFeedback = require("./rowFeedback");
28
31
  var _index2 = require("../ag-grid-plus/index");
32
+ var _formilyAntd = require("@nokecy/formily-antd");
33
+ var _errorLocator = require("./errorLocator");
29
34
  var _jsxRuntime = require("react/jsx-runtime");
30
35
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
31
36
  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); }
@@ -49,10 +54,13 @@ var additionRowDefaults = function additionRowDefaults(value) {
49
54
 
50
55
  //@ts-ignore
51
56
  var ArrayTableInner = (0, _formilyReact.observer)(function (props) {
52
- var _props$fixedColumnsMa, _ref, _addition$props$title, _addition$props, _addition$schema, _addition$props$metho, _addition$props3, _addition$props4;
57
+ var _props$fixedColumnsMa, _ref3, _addition$props$title, _addition$props, _addition$schema, _addition$props$metho, _addition$props3, _addition$props4;
53
58
  var height = props.height,
54
59
  gridKey = props.gridKey;
55
60
  var arrayTableTheme = (0, _theme.useArrayTableTheme)(true);
61
+ var _useArrayTableMetrics = (0, _theme.useArrayTableMetrics)(),
62
+ rowHeight = _useArrayTableMetrics.rowHeight,
63
+ headerHeight = _useArrayTableMetrics.headerHeight;
56
64
 
57
65
  // 【新增】运行时验证 gridKey
58
66
  if (!gridKey) {
@@ -117,18 +125,31 @@ var ArrayTableInner = (0, _formilyReact.observer)(function (props) {
117
125
 
118
126
  // 有行内错误文字的行撑高,错误文字完整显示在输入框下方(任意行,含最后一行)。
119
127
  // 错误行集合由 Formily 事件驱动更新(不在渲染期读错误,避免订阅整张字段表);行集合变化后让 AG-Grid 重算行高。@author nokecy
120
- var _useFeedbackRows = (0, _rowFeedback.useFeedbackRows)(field),
128
+ var _useFeedbackRows = (0, _rowFeedback.useFeedbackRows)(field, _formilyAntd.FormLayout.useFormLayout().feedbackLayout),
121
129
  feedbackRowsRef = _useFeedbackRows.rowsRef,
122
130
  feedbackSignature = _useFeedbackRows.signature;
123
131
  var getRowHeight = (0, _react.useCallback)(function (params) {
124
- return params.data && feedbackRowsRef.current.has(params.data) ? _theme.ARRAY_TABLE_ROW_HEIGHT + _rowFeedback.ROW_FEEDBACK_EXTRA_HEIGHT : _theme.ARRAY_TABLE_ROW_HEIGHT;
125
- }, []);
132
+ return params.data && feedbackRowsRef.current.has(params.data) ? rowHeight + _rowFeedback.ROW_FEEDBACK_EXTRA_HEIGHT : rowHeight;
133
+ }, [rowHeight]);
134
+ var isAutoHeight = height === 'auto';
135
+ var autoGridHeight = isAutoHeight ? (0, _autoHeight.calcAutoGridHeight)({
136
+ rowCount: dataSource.length,
137
+ rowHeight: rowHeight,
138
+ headerHeight: headerHeight,
139
+ hasSummary: !!props.summary,
140
+ feedbackRows: feedbackSignature ? feedbackSignature.split(',').length : 0,
141
+ minRows: props.minRows,
142
+ maxRows: props.maxRows
143
+ }) : undefined;
144
+ // 密度切换时行高基数变了,AG-Grid 不会自己重算已布局的行。
126
145
  (0, _react.useEffect)(function () {
127
146
  gridApiState === null || gridApiState === void 0 || gridApiState.resetRowHeights();
128
- }, [feedbackSignature, gridApiState]);
147
+ }, [feedbackSignature, gridApiState, rowHeight]);
129
148
 
130
149
  // 使用自定义 hooks
131
- var _useCellFocus = (0, _hooks.useCellFocus)(),
150
+ var _useCellFocus = (0, _hooks.useCellFocus)({
151
+ openDateOnKeyboard: props.openDateOnKeyboard
152
+ }),
132
153
  focusInputInCell = _useCellFocus.focusInputInCell,
133
154
  scheduleCellFocus = _useCellFocus.scheduleCellFocus,
134
155
  beginFocusRequest = _useCellFocus.beginFocusRequest;
@@ -196,9 +217,21 @@ var ArrayTableInner = (0, _formilyReact.observer)(function (props) {
196
217
 
197
218
  // 交给 AgGridReact 的列定义:按 x-component-props.headerGroup 把相邻同组的列合并成列组(多级表头)。
198
219
  // stableColumnDefs 保持扁平,懒列识别、列方案还原等内部逻辑仍用它;只有喂给 AG-Grid 的这一份带分组。@author nokecy
199
- var gridColumnDefs = (0, _react.useMemo)(function () {
220
+ var groupedColumnDefs = (0, _react.useMemo)(function () {
200
221
  return (0, _columnGroup.groupColumnDefs)(stableColumnDefs);
201
222
  }, [stableColumnDefs]);
223
+ // 合计行:渲染所需的 summary / 行数据经 ref 取最新值,列定义只在是否启用合计变化时重建。@author nokecy
224
+ var summaryRef = (0, _react.useRef)(props.summary);
225
+ summaryRef.current = props.summary;
226
+ var hasSummary = !!props.summary;
227
+ var gridColumnDefs = (0, _react.useMemo)(function () {
228
+ return hasSummary ? (0, _summary.withSummaryCells)(groupedColumnDefs, function () {
229
+ return summaryRef.current;
230
+ }, function () {
231
+ var _ref;
232
+ return (_ref = field.value) !== null && _ref !== void 0 ? _ref : [];
233
+ }) : groupedColumnDefs;
234
+ }, [groupedColumnDefs, hasSummary, field]);
202
235
 
203
236
  // 懒挂载:把激活态 Set 通过 AG-Grid context 暴露给 LazyAgField(引用稳定,原地 mutate)。@author nokecy
204
237
  var gridContext = (0, _react.useMemo)(function () {
@@ -280,9 +313,116 @@ var ArrayTableInner = (0, _formilyReact.observer)(function (props) {
280
313
  applyFixedGuard(gridApiState);
281
314
  }, [applyFixedGuard, gridApiState]);
282
315
 
316
+ // 末格 Tab 新增行:新行要等 rowData 更新进入 AG 行模型后才能聚焦,待办存在 ref 里由 onRowDataUpdated 兑现。
317
+ // 不能在 push 之后按定时器猜时机,也不能让同一次 Tab 的 onCellKeyDown 再发起落焦(会取消这里的请求)。@author nokecy
318
+ var pendingAddFocusRef = (0, _react.useRef)(null);
319
+ var flushPendingAddFocus = function flushPendingAddFocus(api) {
320
+ var pending = pendingAddFocusRef.current;
321
+ if (!pending || !api) return;
322
+ if ((0, _hooks.focusAddedRow)({
323
+ api: api,
324
+ root: ref,
325
+ pending: pending,
326
+ beginFocusRequest: beginFocusRequest,
327
+ focusInputInCell: focusInputInCell,
328
+ activateCell: activateCell
329
+ })) {
330
+ pendingAddFocusRef.current = null;
331
+ }
332
+ };
283
333
  // 键盘导航 hook 需要 activateCell(导航进懒列时先挂载再聚焦),故置于其后。@author nokecy
284
- var _useKeyboardNavigatio = (0, _hooks.useKeyboardNavigation)(ref, dataSource, focusInputInCell, activateCell, beginFocusRequest),
334
+ var _useKeyboardNavigatio = (0, _hooks.useKeyboardNavigation)(ref, dataSource, focusInputInCell, activateCell, beginFocusRequest, function () {
335
+ return pendingAddFocusRef.current != null;
336
+ }),
285
337
  handleCellKeyDown = _useKeyboardNavigatio.handleCellKeyDown;
338
+ (0, _hooks.useCellEscapeRevert)(ref);
339
+ // Tab 跳过序号/勾选列;开启 tabAddsRow 时,末格 Tab 新增一行并落焦到新行首个可编辑格。@author nokecy
340
+ var tabAddsRow = props.tabAddsRow !== false;
341
+ var tabAddRowRef = (0, _react.useRef)(function () {});
342
+ tabAddRowRef.current = function () {
343
+ var _api$getAllDisplayedC, _api$getAllDisplayedC2;
344
+ if (field.pattern !== 'editable' || field.disabled) return;
345
+ var api = apiRef.current;
346
+ // 新行的首个可编辑格:跳过序号/勾选列、只读展示列、拖拽手柄列。
347
+ var colId = ((_api$getAllDisplayedC = api === null || api === void 0 || (_api$getAllDisplayedC2 = api.getAllDisplayedColumns) === null || _api$getAllDisplayedC2 === void 0 ? void 0 : _api$getAllDisplayedC2.call(api)) !== null && _api$getAllDisplayedC !== void 0 ? _api$getAllDisplayedC : []).filter(function (c) {
348
+ var _c$getColDef, _c$getColDef2;
349
+ var def = (_c$getColDef = (_c$getColDef2 = c.getColDef) === null || _c$getColDef2 === void 0 ? void 0 : _c$getColDef2.call(c)) !== null && _c$getColDef !== void 0 ? _c$getColDef : {};
350
+ return c.getColId() !== _indexColumn.ARRAY_TABLE_INDEX_FIELD && c.getColId() !== 'ag-Grid-SelectionColumn' && def.cellRenderer !== _utils.LazyReadOnlyText && def.rowDrag !== true;
351
+ }).map(function (c) {
352
+ return c.getColId();
353
+ })[0];
354
+ field.push((0, _arrayAddBtn.getDefaultValue)(undefined, schema));
355
+ var newIndex = (Array.isArray(field.value) ? field.value.length : 1) - 1;
356
+ addedIndexRef.current = newIndex;
357
+ setIsAdd(true);
358
+ if (!api || !colId) return;
359
+ var addedRow = Array.isArray(field.value) ? field.value[newIndex] : undefined;
360
+ if (addedRow == null || _typeof(addedRow) !== 'object') return;
361
+ var pending = {
362
+ rowId: (0, _rowIdentity.getArrayTableRowId)(addedRow, rowIdMapRef.current),
363
+ colId: colId
364
+ };
365
+ pendingAddFocusRef.current = pending;
366
+ // 兜底:行更新事件之外再试一次,并保证待办不会一直挂着屏蔽 Tab 落焦。
367
+ setTimeout(function () {
368
+ if (pendingAddFocusRef.current !== pending) return;
369
+ flushPendingAddFocus(apiRef.current);
370
+ if (pendingAddFocusRef.current === pending) pendingAddFocusRef.current = null;
371
+ }, 300);
372
+ };
373
+ // 提交校验失败时,把表内最靠前的错误格滚到可见、激活并聚焦(定位器注册到 form-error-focus,与表外错误一起按页面位置排序)。
374
+ // 定位器只注册一次,用到的最新状态经 ref 读取。@author nokecy
375
+ var errorLocatorColumns = function errorLocatorColumns() {
376
+ return sources.filter(function (s) {
377
+ return (!s.display || s.display === 'visible') && (0, _utils.isColumnComponent)(s.schema);
378
+ }).map(function (s) {
379
+ var _findDataFieldSchema, _s$columnProps$header2, _s$columnProps4, _s$columnProps5;
380
+ return {
381
+ colId: s.name,
382
+ dataName: (_findDataFieldSchema = (0, _utils.findDataFieldSchema)(s.schema, s.name)) === null || _findDataFieldSchema === void 0 ? void 0 : _findDataFieldSchema.name,
383
+ title: (_s$columnProps$header2 = (_s$columnProps4 = s.columnProps) === null || _s$columnProps4 === void 0 ? void 0 : _s$columnProps4.headerName) !== null && _s$columnProps$header2 !== void 0 ? _s$columnProps$header2 : (_s$columnProps5 = s.columnProps) === null || _s$columnProps5 === void 0 ? void 0 : _s$columnProps5.title
384
+ };
385
+ });
386
+ };
387
+ var errorLocatorDepsRef = (0, _react.useRef)(null);
388
+ errorLocatorDepsRef.current = {
389
+ field: field,
390
+ getContainer: function getContainer() {
391
+ return ref.current;
392
+ },
393
+ getApi: function getApi() {
394
+ return apiRef.current;
395
+ },
396
+ getColumns: errorLocatorColumns,
397
+ getRowId: function getRowId(row) {
398
+ return (0, _rowIdentity.getArrayTableRowId)(row, rowIdMapRef.current);
399
+ },
400
+ focus: function focus(_ref2) {
401
+ var rowIndex = _ref2.rowIndex,
402
+ colId = _ref2.colId;
403
+ return apiRef.current ? (0, _hooks.focusGridCell)({
404
+ api: apiRef.current,
405
+ root: ref,
406
+ rowIndex: rowIndex,
407
+ colId: colId,
408
+ beginFocusRequest: beginFocusRequest,
409
+ focusInputInCell: focusInputInCell,
410
+ activateCell: activateCell,
411
+ ensureColumnVisible: true
412
+ }) : Promise.resolve(undefined);
413
+ }
414
+ };
415
+ (0, _react.useEffect)(function () {
416
+ return (0, _formilyAntd.registerErrorLocator)(function (form, root) {
417
+ var deps = errorLocatorDepsRef.current;
418
+ return deps ? (0, _errorLocator.createArrayTableErrorLocator)(deps)(form, root) : undefined;
419
+ });
420
+ }, [field]);
421
+ var tabToNextCell = (0, _react.useMemo)(function () {
422
+ return (0, _hooks.createTabToNextCell)(tabAddsRow ? function () {
423
+ return tabAddRowRef.current();
424
+ } : undefined);
425
+ }, [tabAddsRow]);
286
426
 
287
427
  /**
288
428
  * 方案自动加载
@@ -363,11 +503,6 @@ var ArrayTableInner = (0, _formilyReact.observer)(function (props) {
363
503
  }).then(function () {
364
504
  if (cancelled || !gridApiState) return;
365
505
 
366
- // 3. 应用过滤器(在列状态稳定后执行)
367
- if (currentScheme.filterModel) {
368
- gridApiState.setFilterModel(currentScheme.filterModel);
369
- }
370
-
371
506
  // 【关键修复】记录已应用的方案状态(ID + updatedAt)
372
507
  lastAppliedSchemeRef.current = {
373
508
  id: currentScheme.id,
@@ -388,7 +523,7 @@ var ArrayTableInner = (0, _formilyReact.observer)(function (props) {
388
523
  children: /*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
389
524
  ref: ref,
390
525
  style: {
391
- height: height ? height : 400,
526
+ height: isAutoHeight ? undefined : height ? height : 400,
392
527
  display: 'flex',
393
528
  flexDirection: 'column'
394
529
  },
@@ -410,8 +545,10 @@ var ArrayTableInner = (0, _formilyReact.observer)(function (props) {
410
545
  style: {
411
546
  marginBottom: 5
412
547
  },
413
- children: [addition ? /*#__PURE__*/(0, _jsxRuntime.jsx)(_arrayAddBtn.default, _objectSpread(_objectSpread({}, addition.props), {}, {
414
- title: (_ref = (_addition$props$title = (_addition$props = addition.props) === null || _addition$props === void 0 ? void 0 : _addition$props.title) !== null && _addition$props$title !== void 0 ? _addition$props$title : (_addition$schema = addition.schema) === null || _addition$schema === void 0 ? void 0 : _addition$schema.title) !== null && _ref !== void 0 ? _ref : '新增'
548
+ children: [props.title ? /*#__PURE__*/(0, _jsxRuntime.jsx)(_title.ArrayTableTitle, {
549
+ children: props.title
550
+ }) : null, addition ? /*#__PURE__*/(0, _jsxRuntime.jsx)(_arrayAddBtn.default, _objectSpread(_objectSpread({}, addition.props), {}, {
551
+ title: (_ref3 = (_addition$props$title = (_addition$props = addition.props) === null || _addition$props === void 0 ? void 0 : _addition$props.title) !== null && _addition$props$title !== void 0 ? _addition$props$title : (_addition$schema = addition.schema) === null || _addition$schema === void 0 ? void 0 : _addition$schema.title) !== null && _ref3 !== void 0 ? _ref3 : '新增'
415
552
  // 新增行总是回到数组顺序,避免当前列排序把空白新行插到旧明细前面;
416
553
  // 先让表格滚到新行,再调用 Addition 节点上自己写的 onAdd,两者都生效。@author nokecy
417
554
  ,
@@ -457,7 +594,10 @@ var ArrayTableInner = (0, _formilyReact.observer)(function (props) {
457
594
  })]
458
595
  })]
459
596
  }), /*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
460
- style: {
597
+ style: isAutoHeight ? {
598
+ flex: 'none',
599
+ height: autoGridHeight
600
+ } : {
461
601
  flex: 1,
462
602
  minHeight: 0
463
603
  }
@@ -506,6 +646,7 @@ var ArrayTableInner = (0, _formilyReact.observer)(function (props) {
506
646
  maintainColumnOrder: true
507
647
  },
508
648
  onCellKeyDown: handleCellKeyDown,
649
+ tabToNextCell: tabToNextCell,
509
650
  onCellClicked: function onCellClicked(event) {
510
651
  var _event$column$getColI, _event$column, _event$colDef, _event$event;
511
652
  // 懒挂载:点击懒列存量格时先激活挂树,等挂载完成再聚焦进编辑;否则沿用原即时聚焦。@author nokecy
@@ -526,7 +667,7 @@ var ArrayTableInner = (0, _formilyReact.observer)(function (props) {
526
667
  if (event.api.getDisplayedRowAtIndex(rowIndex) !== node) return false;
527
668
  var focused = event.api.getFocusedCell();
528
669
  return (focused === null || focused === void 0 ? void 0 : focused.rowIndex) === rowIndex && (focused === null || focused === void 0 ? void 0 : focused.column.getColId()) === colId;
529
- });
670
+ }, justActivated ? 'pointer-activated' : 'pointer');
530
671
  },
531
672
  onRowDragMove: handleRowDragMove,
532
673
  onRowDataUpdated: function onRowDataUpdated(e) {
@@ -546,6 +687,7 @@ var ArrayTableInner = (0, _formilyReact.observer)(function (props) {
546
687
  addedIndexRef.current = undefined;
547
688
  setIsAdd(false);
548
689
  }
690
+ flushPendingAddFocus(e.api);
549
691
  (_props$onRowDataUpdat = props.onRowDataUpdated) === null || _props$onRowDataUpdat === void 0 || _props$onRowDataUpdat.call(props, e);
550
692
  },
551
693
  rowDragManaged: true,
@@ -569,8 +711,8 @@ var ArrayTableInner = (0, _formilyReact.observer)(function (props) {
569
711
  ' <span data-ref="eSortAsc" class="ag-header-icon ag-sort-ascending-icon"></span>' + ' <span data-ref="eSortDesc" class="ag-header-icon ag-sort-descending-icon"></span>' + ' <span data-ref="eSortNone" class="ag-header-icon ag-sort-none-icon"></span>' + " </div>" + "</div>"
570
712
  }
571
713
  },
572
- getRowId: function getRowId(_ref2) {
573
- var data = _ref2.data;
714
+ getRowId: function getRowId(_ref4) {
715
+ var data = _ref4.data;
574
716
  return (0, _rowIdentity.getArrayTableRowId)(data, rowIdMapRef.current);
575
717
  }
576
718
  // rowDragEntireRow={true}
@@ -590,11 +732,13 @@ var ArrayTableInner = (0, _formilyReact.observer)(function (props) {
590
732
  });
591
733
  (_props$onSortChanged = props.onSortChanged) === null || _props$onSortChanged === void 0 || _props$onSortChanged.call(props, event);
592
734
  },
593
- rowHeight: _theme.ARRAY_TABLE_ROW_HEIGHT,
735
+ rowHeight: rowHeight,
736
+ headerHeight: headerHeight,
594
737
  getRowHeight: getRowHeight,
595
738
  pagination: false,
596
739
  columnDefs: gridColumnDefs,
597
- rowData: dataSource
740
+ rowData: dataSource,
741
+ pinnedBottomRowData: hasSummary ? _summary.ARRAY_TABLE_SUMMARY_ROW : undefined
598
742
  })
599
743
  }), sources.map(function (column, key) {
600
744
  //专门用来承接对Column的状态管理
@@ -3,6 +3,7 @@ import { FieldDisplayTypes, GeneralField } from "@nokecy/formily-core";
3
3
  import { Schema } from "@nokecy/formily-json-schema";
4
4
  import { AgGridReactProps } from "ag-grid-react";
5
5
  import React from "react";
6
+ import type { ArrayTableSummary } from "./summary";
6
7
  /**
7
8
  * ArrayTable.Column 的 x-component-props 里 qc-ui 自己认的扩展属性;
8
9
  * 其余属性(width、headerName、pinned 等)按 AG-Grid 列定义处理。
@@ -42,8 +43,15 @@ interface ObservableColumnSource {
42
43
  }
43
44
  /** 公共明细表格的业务属性。@author nokecy */
44
45
  export type ArrayTableProps = AgGridReactProps & {
46
+ /** 数字为固定高度;'auto' 按行数自适应(受 minRows / maxRows 限制),默认 400 */
45
47
  height?: number | string;
48
+ /** height='auto' 时至少显示的行数,默认 1 */
49
+ minRows?: number;
50
+ /** height='auto' 时最多显示的行数,超出后内部滚动,默认 10 */
51
+ maxRows?: number;
46
52
  gridKey: string;
53
+ /** 工具栏左侧的区域标题(带主色竖条),与「新增」同一行,不再另起一行占空间 */
54
+ title?: React.ReactNode;
47
55
  onRowDrag?: boolean;
48
56
  disabled?: boolean;
49
57
  /** 默认对配置标准删除入口的可编辑明细开放批量删除;false 可显式关闭。 */
@@ -55,6 +63,20 @@ export type ArrayTableProps = AgGridReactProps & {
55
63
  * 显式写的 pinned 不受影响。传 1 或 Infinity 关闭保护。
56
64
  */
57
65
  fixedColumnsMaxRatio?: number;
66
+ /**
67
+ * 末行最后一格按 Tab 时新增一行并把焦点落到新行首个可编辑格(规范 §7.6.3),默认 true。
68
+ * 传 `false` 保持旧行为(焦点离开表格)。Shift+Tab、非末格不受影响。
69
+ */
70
+ tabAddsRow?: boolean;
71
+ /**
72
+ * 键盘(Tab/Enter/方向键)到达日期格时自动展开日期面板,默认 false:与演示一致,鼠标点击展开、键盘到达保持收起。
73
+ */
74
+ openDateOnKeyboard?: boolean;
75
+ /**
76
+ * 合计行:固定在表尾,键为列的 field,值为固定内容或 `(rows) => 内容`。
77
+ * 明细变化时自动重算;序号、勾选列和未列出的列该格留空。
78
+ */
79
+ summary?: ArrayTableSummary;
58
80
  };
59
81
  /** ArrayTable 自己认的属性(其余按 AgGridReact 属性处理) */
60
82
  type ArrayTableOwnProps = Omit<ArrayTableProps, keyof AgGridReactProps>;
@@ -4,20 +4,27 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.default = void 0;
7
+ var _autoHeight = require("./autoHeight");
8
+ var _title = require("./title");
7
9
  var _react = _interopRequireDefault(require("react"));
8
10
  var _formilyReact = require("@nokecy/formily-react");
9
11
  var _utils = require("./utils");
10
12
  var _index = require("../ag-grid-plus/index");
11
13
  var _theme = require("./theme");
14
+ var _summary = require("./summary");
12
15
  var _indexColumn = require("./indexColumn");
13
16
  var _gridSequence = require("../shared/gridSequence");
14
17
  var _jsxRuntime = require("react/jsx-runtime");
15
18
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
19
+ /** AgGridPlus 外层卡片的内边距与间隙(实测 24px),自适应高度要把它算进外框,否则最后一行被裁掉 */var PREVIEW_CHROME_HEIGHT = 24;
16
20
  //@ts-ignore
17
21
  var ArrayTable = function ArrayTable(props) {
18
22
  var _buildArrayTableColum;
19
23
  var height = props.height;
20
24
  var arrayTablePreviewTheme = (0, _theme.useArrayTableTheme)();
25
+ var _useArrayTableMetrics = (0, _theme.useArrayTableMetrics)(),
26
+ rowHeight = _useArrayTableMetrics.rowHeight,
27
+ headerHeight = _useArrayTableMetrics.headerHeight;
21
28
  var field = (0, _formilyReact.useField)();
22
29
  var dataSource = Array.isArray(field.value) ? field.value.slice() : [];
23
30
  var sources = (0, _utils.useArrayTableSources)();
@@ -27,9 +34,17 @@ var ArrayTable = function ArrayTable(props) {
27
34
  if (showDefaultIndex) {
28
35
  columns.unshift((0, _indexColumn.makeIndexColumn)());
29
36
  }
30
- return /*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
37
+ var title = props.title;
38
+ var grid = /*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
31
39
  style: {
32
- height: height ? height : 400
40
+ height: height === 'auto' ? PREVIEW_CHROME_HEIGHT + (0, _autoHeight.calcAutoGridHeight)({
41
+ rowCount: dataSource.length,
42
+ rowHeight: rowHeight,
43
+ headerHeight: headerHeight,
44
+ hasSummary: !!props.summary,
45
+ minRows: props.minRows,
46
+ maxRows: props.maxRows
47
+ }) : height ? height : 400
33
48
  },
34
49
  children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_index.AgGridPlus, {
35
50
  gridOptions: {
@@ -41,9 +56,12 @@ var ArrayTable = function ArrayTable(props) {
41
56
  return data._id || data.id;
42
57
  },
43
58
  hideTool: true,
59
+ hidePagination: true,
60
+ headerFilter: false,
44
61
  search: false,
45
62
  theme: arrayTablePreviewTheme,
46
- rowHeight: _theme.ARRAY_TABLE_ROW_HEIGHT,
63
+ rowHeight: rowHeight,
64
+ headerHeight: headerHeight,
47
65
  onGridReady: function onGridReady(event) {
48
66
  var _props$onGridReady;
49
67
  (0, _gridSequence.installDisplaySequenceOrder)(event.api);
@@ -67,9 +85,25 @@ var ArrayTable = function ArrayTable(props) {
67
85
  });
68
86
  }
69
87
  },
70
- columnDefs: columns,
71
- rowData: dataSource
88
+ columnDefs: props.summary ? (0, _summary.withSummaryCells)(columns, function () {
89
+ return props.summary;
90
+ }, function () {
91
+ return dataSource;
92
+ }) : columns,
93
+ rowData: dataSource,
94
+ pinnedBottomRowData: props.summary ? _summary.ARRAY_TABLE_SUMMARY_ROW : undefined
72
95
  })
73
96
  });
97
+ // 预览态没有工具栏,标题单独占一行;标题行高度不算进网格高度
98
+ return title ? /*#__PURE__*/(0, _jsxRuntime.jsxs)("div", {
99
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
100
+ style: {
101
+ marginBottom: 5
102
+ },
103
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_title.ArrayTableTitle, {
104
+ children: title
105
+ })
106
+ }), grid]
107
+ }) : grid;
74
108
  };
75
109
  var _default = exports.default = ArrayTable;
@@ -12,7 +12,7 @@ export declare const ROW_FEEDBACK_EXTRA_HEIGHT = 24;
12
12
  * 这里读的是整张字段表(queryFeedbacks 会遍历数组下所有字段),不要在组件渲染期间调用——
13
13
  * 渲染期读它会让组件订阅字段表,每创建一个字段就重渲一次。请用 useFeedbackRows。@author nokecy
14
14
  */
15
- export declare const collectFeedbackRows: (arrayField: ArrayField) => Set<object>;
15
+ export declare const collectFeedbackRows: (arrayField: ArrayField, defaultLayout?: string) => Set<object>;
16
16
  /**
17
17
  * 订阅数组下字段的校验反馈,返回「有行内错误文字的行」。
18
18
  *
@@ -20,7 +20,7 @@ export declare const collectFeedbackRows: (arrayField: ArrayField) => Set<object
20
20
  * 合并成一次(下一个宏任务)重算;行集合变化才触发重渲。rows 供 AG-Grid 的 getRowHeight 同步读取,
21
21
  * signature(有错误的行下标)变化时调用方让网格重算行高。@author nokecy
22
22
  */
23
- export declare const useFeedbackRows: (arrayField: ArrayField) => {
23
+ export declare const useFeedbackRows: (arrayField: ArrayField, defaultLayout?: string) => {
24
24
  rowsRef: import("react").RefObject<Set<object>>;
25
25
  signature: string;
26
26
  };
@@ -22,8 +22,8 @@ function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len
22
22
  */
23
23
  var ROW_FEEDBACK_EXTRA_HEIGHT = exports.ROW_FEEDBACK_EXTRA_HEIGHT = 24;
24
24
 
25
- /** 这些反馈布局的错误不占行内位置(浮层 / 不显示),不需要撑高行 */
26
- var OUT_OF_FLOW_LAYOUTS = new Set(['popover', 'none']);
25
+ /** 这些反馈布局的错误不占行内位置(浮层 / 不显示 / terse 紧凑浮层),不需要撑高行 */
26
+ var OUT_OF_FLOW_LAYOUTS = new Set(['popover', 'none', 'terse']);
27
27
 
28
28
  /**
29
29
  * 找出当前有「行内错误文字」的行:返回这些行的数据对象(与 AG-Grid rowData 里的元素同一引用)。
@@ -32,7 +32,7 @@ var OUT_OF_FLOW_LAYOUTS = new Set(['popover', 'none']);
32
32
  * 这里读的是整张字段表(queryFeedbacks 会遍历数组下所有字段),不要在组件渲染期间调用——
33
33
  * 渲染期读它会让组件订阅字段表,每创建一个字段就重渲一次。请用 useFeedbackRows。@author nokecy
34
34
  */
35
- var collectFeedbackRows = exports.collectFeedbackRows = function collectFeedbackRows(arrayField) {
35
+ var collectFeedbackRows = exports.collectFeedbackRows = function collectFeedbackRows(arrayField, defaultLayout) {
36
36
  var rows = new Set();
37
37
  var form = arrayField === null || arrayField === void 0 ? void 0 : arrayField.form;
38
38
  var value = arrayField === null || arrayField === void 0 ? void 0 : arrayField.value;
@@ -46,12 +46,12 @@ var collectFeedbackRows = exports.collectFeedbackRows = function collectFeedback
46
46
  _step;
47
47
  try {
48
48
  for (_iterator.s(); !(_step = _iterator.n()).done;) {
49
- var _feedback$path$segmen, _feedback$path, _feedback$path2, _feedback$path2$toStr, _feedback$path3, _form$query$take;
49
+ var _feedback$path$segmen, _feedback$path, _feedback$path2, _feedback$path2$toStr, _feedback$path3, _form$query$take$deco, _form$query$take;
50
50
  var feedback = _step.value;
51
51
  var index = Number((_feedback$path$segmen = (_feedback$path = feedback.path) === null || _feedback$path === void 0 || (_feedback$path = _feedback$path.segments) === null || _feedback$path === void 0 ? void 0 : _feedback$path[baseLength]) !== null && _feedback$path$segmen !== void 0 ? _feedback$path$segmen : (_feedback$path2 = feedback.path) === null || _feedback$path2 === void 0 || (_feedback$path2$toStr = (_feedback$path3 = _feedback$path2).toString) === null || _feedback$path2$toStr === void 0 ? void 0 : _feedback$path2$toStr.call(_feedback$path3).split('.')[baseLength]);
52
52
  var row = value[index];
53
53
  if (!Number.isInteger(index) || row == null || _typeof(row) !== 'object') continue;
54
- var layout = (_form$query$take = form.query(feedback.address).take()) === null || _form$query$take === void 0 || (_form$query$take = _form$query$take.decoratorProps) === null || _form$query$take === void 0 ? void 0 : _form$query$take.feedbackLayout;
54
+ var layout = (_form$query$take$deco = (_form$query$take = form.query(feedback.address).take()) === null || _form$query$take === void 0 || (_form$query$take = _form$query$take.decoratorProps) === null || _form$query$take === void 0 ? void 0 : _form$query$take.feedbackLayout) !== null && _form$query$take$deco !== void 0 ? _form$query$take$deco : defaultLayout;
55
55
  if (OUT_OF_FLOW_LAYOUTS.has(layout)) continue;
56
56
  rows.add(row);
57
57
  }
@@ -70,7 +70,7 @@ var collectFeedbackRows = exports.collectFeedbackRows = function collectFeedback
70
70
  * 合并成一次(下一个宏任务)重算;行集合变化才触发重渲。rows 供 AG-Grid 的 getRowHeight 同步读取,
71
71
  * signature(有错误的行下标)变化时调用方让网格重算行高。@author nokecy
72
72
  */
73
- var useFeedbackRows = exports.useFeedbackRows = function useFeedbackRows(arrayField) {
73
+ var useFeedbackRows = exports.useFeedbackRows = function useFeedbackRows(arrayField, defaultLayout) {
74
74
  var rowsRef = (0, _react.useRef)(new Set());
75
75
  var _useState = (0, _react.useState)(''),
76
76
  _useState2 = _slicedToArray(_useState, 2),
@@ -86,7 +86,7 @@ var useFeedbackRows = exports.useFeedbackRows = function useFeedbackRows(arrayFi
86
86
  if (timer !== undefined) clearTimeout(timer);
87
87
  timer = setTimeout(function () {
88
88
  timer = undefined;
89
- var rows = collectFeedbackRows(arrayField);
89
+ var rows = collectFeedbackRows(arrayField, defaultLayout);
90
90
  rowsRef.current = rows;
91
91
  var value = Array.isArray(arrayField.value) ? arrayField.value : [];
92
92
  var next = value.flatMap(function (row, index) {
@@ -107,7 +107,7 @@ var useFeedbackRows = exports.useFeedbackRows = function useFeedbackRows(arrayFi
107
107
  if (timer !== undefined) clearTimeout(timer);
108
108
  form.removeEffects(id);
109
109
  };
110
- }, [arrayField]);
110
+ }, [arrayField, defaultLayout]);
111
111
  return {
112
112
  rowsRef: rowsRef,
113
113
  signature: signature
@@ -0,0 +1,25 @@
1
+ import React from 'react';
2
+ import type { ColDef } from 'ag-grid-community';
3
+ /**
4
+ * 合计行(固定在表尾,不随滚动,不参与排序、勾选、序号)。
5
+ * 键是列的 field(ArrayTable.Column 的 dataIndex / 内层字段名),值是固定内容,或由当前全部明细行算出内容的函数;
6
+ * 函数在 Observer 里执行,明细任何字段变化都会重算。没有写到的列该格留空。
7
+ *
8
+ * @author nokecy
9
+ */
10
+ export type ArrayTableSummary = Record<string, React.ReactNode | ((rows: any[]) => React.ReactNode)>;
11
+ /** 合计行的承载数据;AG-Grid 要求固定行有数据对象才会渲染单元格 */
12
+ export declare const ARRAY_TABLE_SUMMARY_ROW: {
13
+ __arrayTableSummary: boolean;
14
+ }[];
15
+ type SummaryCellParams = {
16
+ colDef?: ColDef;
17
+ getSummary: () => ArrayTableSummary | undefined;
18
+ getRows: () => any[];
19
+ };
20
+ /**
21
+ * 给列定义补上「固定行用合计渲染」的选择器,普通行仍走列原有的渲染器。
22
+ * 用 cellRendererSelector 而不是替换 cellRenderer:列上依赖 cellRenderer 身份的逻辑(懒挂载识别等)不受影响。
23
+ */
24
+ export declare const withSummaryCells: (columns: ColDef[], getSummary: SummaryCellParams['getSummary'], getRows: SummaryCellParams['getRows']) => ColDef[];
25
+ export {};
@@ -0,0 +1,70 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.withSummaryCells = exports.ARRAY_TABLE_SUMMARY_ROW = void 0;
7
+ var _react = _interopRequireDefault(require("react"));
8
+ var _formilyReact = require("@nokecy/formily-react");
9
+ var _jsxRuntime = require("react/jsx-runtime");
10
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
11
+ 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); }
12
+ 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; }
13
+ 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; }
14
+ 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; }
15
+ function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : String(i); }
16
+ 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); } /**
17
+ * 合计行(固定在表尾,不随滚动,不参与排序、勾选、序号)。
18
+ * 键是列的 field(ArrayTable.Column 的 dataIndex / 内层字段名),值是固定内容,或由当前全部明细行算出内容的函数;
19
+ * 函数在 Observer 里执行,明细任何字段变化都会重算。没有写到的列该格留空。
20
+ *
21
+ * @author nokecy
22
+ */
23
+ /** 合计行的承载数据;AG-Grid 要求固定行有数据对象才会渲染单元格 */
24
+ var ARRAY_TABLE_SUMMARY_ROW = exports.ARRAY_TABLE_SUMMARY_ROW = [{
25
+ __arrayTableSummary: true
26
+ }];
27
+ var SummaryCell = function SummaryCell(_ref) {
28
+ var colDef = _ref.colDef,
29
+ getSummary = _ref.getSummary,
30
+ getRows = _ref.getRows;
31
+ var key = colDef === null || colDef === void 0 ? void 0 : colDef.field;
32
+ if (!key) return null;
33
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)(_formilyReact.Observer, {
34
+ children: function children() {
35
+ var _getSummary;
36
+ var item = (_getSummary = getSummary()) === null || _getSummary === void 0 ? void 0 : _getSummary[key];
37
+ var content = typeof item === 'function' ? item(getRows()) : item;
38
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)(_jsxRuntime.Fragment, {
39
+ children: content == null ? null : /*#__PURE__*/(0, _jsxRuntime.jsx)("span", {
40
+ "data-array-table-summary": key,
41
+ children: content
42
+ })
43
+ });
44
+ }
45
+ });
46
+ };
47
+
48
+ /**
49
+ * 给列定义补上「固定行用合计渲染」的选择器,普通行仍走列原有的渲染器。
50
+ * 用 cellRendererSelector 而不是替换 cellRenderer:列上依赖 cellRenderer 身份的逻辑(懒挂载识别等)不受影响。
51
+ */
52
+ var withSummaryCells = exports.withSummaryCells = function withSummaryCells(columns, getSummary, getRows) {
53
+ return columns.map(function (col) {
54
+ if (Array.isArray(col.children)) return _objectSpread(_objectSpread({}, col), {}, {
55
+ children: withSummaryCells(col.children, getSummary, getRows)
56
+ });
57
+ return _objectSpread(_objectSpread({}, col), {}, {
58
+ cellRendererSelector: function cellRendererSelector(params) {
59
+ var _params$node, _col$cellRendererSele;
60
+ return (_params$node = params.node) !== null && _params$node !== void 0 && _params$node.rowPinned ? {
61
+ component: SummaryCell,
62
+ params: {
63
+ getSummary: getSummary,
64
+ getRows: getRows
65
+ }
66
+ } : (_col$cellRendererSele = col.cellRendererSelector) === null || _col$cellRendererSele === void 0 ? void 0 : _col$cellRendererSele.call(col, params);
67
+ }
68
+ });
69
+ });
70
+ };