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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (243) 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 +422 -156
  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.less +36 -0
  10. package/dist/cjs/ag-grid-plus/interface.d.ts +58 -1
  11. package/dist/cjs/ag-grid-plus/interface.js +1 -1
  12. package/dist/cjs/ag-grid-plus/queryForm/index.d.ts +11 -0
  13. package/dist/cjs/ag-grid-plus/queryForm/index.js +62 -10
  14. package/dist/cjs/ag-grid-plus/queryForm/queryForm.d.ts +10 -0
  15. package/dist/cjs/ag-grid-plus/queryForm/queryForm.js +63 -26
  16. package/dist/cjs/ag-grid-plus/queryForm/queryValues.d.ts +9 -0
  17. package/dist/cjs/ag-grid-plus/queryForm/queryValues.js +61 -0
  18. package/dist/cjs/ag-grid-plus/rowColors.d.ts +12 -0
  19. package/dist/cjs/ag-grid-plus/rowColors.js +58 -0
  20. package/dist/cjs/ag-grid-plus/setting/ColumnConfigTable.d.ts +5 -0
  21. package/dist/cjs/ag-grid-plus/setting/ColumnConfigTable.js +14 -5
  22. package/dist/cjs/ag-grid-plus/setting/ColumnSetting.js +108 -76
  23. package/dist/cjs/ag-grid-plus/setting/QuerySchemeManager.js +10 -9
  24. package/dist/cjs/ag-grid-plus/setting/autoColumnMemory.d.ts +37 -0
  25. package/dist/cjs/ag-grid-plus/setting/autoColumnMemory.js +206 -0
  26. package/dist/cjs/ag-grid-plus/setting/columnGroupUtils.d.ts +2 -0
  27. package/dist/cjs/ag-grid-plus/setting/columnGroupUtils.js +19 -1
  28. package/dist/cjs/ag-grid-plus/setting/index.js +5 -14
  29. package/dist/cjs/ag-grid-plus/settingItem/index.d.ts +11 -1
  30. package/dist/cjs/ag-grid-plus/settingItem/index.js +34 -12
  31. package/dist/cjs/ag-grid-plus/shared/EmptyIllustration.d.ts +16 -0
  32. package/dist/cjs/ag-grid-plus/shared/EmptyIllustration.js +87 -0
  33. package/dist/cjs/ag-grid-plus/shared/NoRowsOverlay.js +9 -1
  34. package/dist/cjs/ag-grid-plus/shared/SkeletonOverlay.d.ts +11 -0
  35. package/dist/cjs/ag-grid-plus/shared/SkeletonOverlay.js +40 -0
  36. package/dist/cjs/ag-grid-plus/shared/storage/schemeStorageAdapter.d.ts +1 -1
  37. package/dist/cjs/ag-grid-plus/theme.d.ts +7 -1
  38. package/dist/cjs/ag-grid-plus/theme.js +31 -6
  39. package/dist/cjs/ag-grid-plus/toolBar/OverflowActions.d.ts +16 -0
  40. package/dist/cjs/ag-grid-plus/toolBar/OverflowActions.js +128 -0
  41. package/dist/cjs/ag-grid-plus/toolBar/index.d.ts +3 -1
  42. package/dist/cjs/ag-grid-plus/toolBar/index.js +43 -35
  43. package/dist/cjs/ag-grid-plus/toolBar/leftContent.d.ts +2 -2
  44. package/dist/cjs/ag-grid-plus/toolBar/leftContent.js +2 -2
  45. package/dist/cjs/ag-grid-plus/toolBar/overflow.d.ts +20 -0
  46. package/dist/cjs/ag-grid-plus/toolBar/overflow.js +48 -0
  47. package/dist/cjs/ag-grid-plus/toolBar/style.js +71 -15
  48. package/dist/cjs/ag-grid-plus/types.d.ts +6 -0
  49. package/dist/cjs/ag-grid-plus/utils/agGridCompat.js +12 -3
  50. package/dist/cjs/ag-grid-plus/utils/columnProcessors.d.ts +3 -0
  51. package/dist/cjs/ag-grid-plus/utils/columnProcessors.js +13 -2
  52. package/dist/cjs/ag-grid-plus/utils/constants.d.ts +3 -2
  53. package/dist/cjs/ag-grid-plus/utils/constants.js +3 -2
  54. package/dist/cjs/ag-grid-plus/utils/crossPageSelection.d.ts +21 -0
  55. package/dist/cjs/ag-grid-plus/utils/crossPageSelection.js +58 -0
  56. package/dist/cjs/ag-grid-plus/utils/emptyState.d.ts +2 -0
  57. package/dist/cjs/ag-grid-plus/utils/emptyState.js +9 -5
  58. package/dist/cjs/ag-grid-plus/utils/listKeyboard.d.ts +24 -0
  59. package/dist/cjs/ag-grid-plus/utils/listKeyboard.js +83 -0
  60. package/dist/cjs/ag-grid-plus/utils/pagination.d.ts +26 -0
  61. package/dist/cjs/ag-grid-plus/utils/pagination.js +69 -0
  62. package/dist/cjs/ag-grid-plus/utils/queryDispatch.d.ts +7 -0
  63. package/dist/cjs/ag-grid-plus/utils/queryDispatch.js +17 -0
  64. package/dist/cjs/ag-grid-plus/utils/statusPill.d.ts +25 -0
  65. package/dist/cjs/ag-grid-plus/utils/statusPill.js +196 -0
  66. package/dist/cjs/ag-grid-plus/utils/valueEnumColor.d.ts +6 -1
  67. package/dist/cjs/ag-grid-plus/utils/valueEnumColor.js +13 -9
  68. package/dist/cjs/ag-grid-plus/utils/valueFormat.d.ts +19 -0
  69. package/dist/cjs/ag-grid-plus/utils/valueFormat.js +73 -0
  70. package/dist/cjs/ag-grid-plus/utils.js +3 -2
  71. package/dist/cjs/array-table/arrayAddBtn.d.ts +1 -0
  72. package/dist/cjs/array-table/arrayAddBtn.js +2 -2
  73. package/dist/cjs/array-table/autoHeight.d.ts +18 -0
  74. package/dist/cjs/array-table/autoHeight.js +30 -0
  75. package/dist/cjs/array-table/batchRemove.d.ts +2 -2
  76. package/dist/cjs/array-table/cellEditorMarker.d.ts +18 -0
  77. package/dist/cjs/array-table/cellEditorMarker.js +92 -0
  78. package/dist/cjs/array-table/errorLocator.d.ts +29 -0
  79. package/dist/cjs/array-table/errorLocator.js +101 -0
  80. package/dist/cjs/array-table/hooks.d.ts +52 -4
  81. package/dist/cjs/array-table/hooks.js +251 -18
  82. package/dist/cjs/array-table/index.d.ts +6 -0
  83. package/dist/cjs/array-table/index.js +167 -23
  84. package/dist/cjs/array-table/interface.d.ts +22 -0
  85. package/dist/cjs/array-table/preview.js +39 -5
  86. package/dist/cjs/array-table/rowFeedback.d.ts +2 -2
  87. package/dist/cjs/array-table/rowFeedback.js +8 -8
  88. package/dist/cjs/array-table/summary.d.ts +25 -0
  89. package/dist/cjs/array-table/summary.js +70 -0
  90. package/dist/cjs/array-table/theme.d.ts +35 -5
  91. package/dist/cjs/array-table/theme.js +49 -12
  92. package/dist/cjs/array-table/title.d.ts +3 -0
  93. package/dist/cjs/array-table/title.js +29 -0
  94. package/dist/cjs/array-table/utils.d.ts +2 -1
  95. package/dist/cjs/array-table/utils.js +94 -23
  96. package/dist/cjs/card/pro-card/Card/useLegacyItems.d.ts +1 -1
  97. package/dist/cjs/dateCellEditor/DateCellEditor.d.ts +5 -0
  98. package/dist/cjs/dateCellEditor/DateCellEditor.js +42 -17
  99. package/dist/cjs/deleteConfirm/index.d.ts +14 -0
  100. package/dist/cjs/deleteConfirm/index.js +73 -12
  101. package/dist/cjs/dialogSelect/index.d.ts +19 -0
  102. package/dist/cjs/dialogSelect/index.js +189 -15
  103. package/dist/cjs/dialogSelect/index.less +18 -0
  104. package/dist/cjs/documentPage/documentPage.d.ts +6 -3
  105. package/dist/cjs/documentPage/documentPage.js +23 -8
  106. package/dist/cjs/documentPage/index.d.ts +2 -0
  107. package/dist/cjs/documentPage/index.js +19 -0
  108. package/dist/cjs/documentPage/leaveGuard.d.ts +31 -0
  109. package/dist/cjs/documentPage/leaveGuard.js +91 -0
  110. package/dist/cjs/draggableModal/index.d.ts +24 -1
  111. package/dist/cjs/draggableModal/index.js +36 -6
  112. package/dist/cjs/fullScreenAlert/index.less +10 -10
  113. package/dist/cjs/index.d.ts +2 -0
  114. package/dist/cjs/index.js +15 -0
  115. package/dist/cjs/readPretty/arrayTable.js +5 -1
  116. package/dist/cjs/scanCollect/ScanFeedbackInput.d.ts +26 -0
  117. package/dist/cjs/scanCollect/ScanFeedbackInput.js +113 -0
  118. package/dist/cjs/scanCollect/index.d.ts +4 -0
  119. package/dist/cjs/scanCollect/index.js +14 -0
  120. package/dist/cjs/scanCollect/scanSound.d.ts +15 -0
  121. package/dist/cjs/scanCollect/scanSound.js +91 -0
  122. package/dist/esm/ConfirmPro/index.d.ts +12 -9
  123. package/dist/esm/ConfirmPro/index.js +11 -34
  124. package/dist/esm/ag-grid-plus/ag-gridPlus.js +423 -156
  125. package/dist/esm/ag-grid-plus/context/gridContext.d.ts +12 -1
  126. package/dist/esm/ag-grid-plus/context/queryFormContext.d.ts +2 -0
  127. package/dist/esm/ag-grid-plus/context/useSchemeDataFlow.js +8 -0
  128. package/dist/esm/ag-grid-plus/density.d.ts +25 -0
  129. package/dist/esm/ag-grid-plus/density.js +45 -0
  130. package/dist/esm/ag-grid-plus/index.less +36 -0
  131. package/dist/esm/ag-grid-plus/interface.d.ts +58 -1
  132. package/dist/esm/ag-grid-plus/interface.js +2 -0
  133. package/dist/esm/ag-grid-plus/queryForm/index.d.ts +11 -0
  134. package/dist/esm/ag-grid-plus/queryForm/index.js +62 -10
  135. package/dist/esm/ag-grid-plus/queryForm/queryForm.d.ts +10 -0
  136. package/dist/esm/ag-grid-plus/queryForm/queryForm.js +64 -26
  137. package/dist/esm/ag-grid-plus/queryForm/queryValues.d.ts +9 -0
  138. package/dist/esm/ag-grid-plus/queryForm/queryValues.js +54 -0
  139. package/dist/esm/ag-grid-plus/rowColors.d.ts +12 -0
  140. package/dist/esm/ag-grid-plus/rowColors.js +50 -0
  141. package/dist/esm/ag-grid-plus/setting/ColumnConfigTable.d.ts +5 -0
  142. package/dist/esm/ag-grid-plus/setting/ColumnConfigTable.js +14 -5
  143. package/dist/esm/ag-grid-plus/setting/ColumnSetting.js +110 -78
  144. package/dist/esm/ag-grid-plus/setting/QuerySchemeManager.js +10 -9
  145. package/dist/esm/ag-grid-plus/setting/autoColumnMemory.d.ts +37 -0
  146. package/dist/esm/ag-grid-plus/setting/autoColumnMemory.js +198 -0
  147. package/dist/esm/ag-grid-plus/setting/columnGroupUtils.d.ts +2 -0
  148. package/dist/esm/ag-grid-plus/setting/columnGroupUtils.js +18 -1
  149. package/dist/esm/ag-grid-plus/setting/index.js +6 -15
  150. package/dist/esm/ag-grid-plus/settingItem/index.d.ts +11 -1
  151. package/dist/esm/ag-grid-plus/settingItem/index.js +35 -13
  152. package/dist/esm/ag-grid-plus/shared/EmptyIllustration.d.ts +16 -0
  153. package/dist/esm/ag-grid-plus/shared/EmptyIllustration.js +82 -0
  154. package/dist/esm/ag-grid-plus/shared/NoRowsOverlay.js +9 -1
  155. package/dist/esm/ag-grid-plus/shared/SkeletonOverlay.d.ts +11 -0
  156. package/dist/esm/ag-grid-plus/shared/SkeletonOverlay.js +34 -0
  157. package/dist/esm/ag-grid-plus/shared/storage/schemeStorageAdapter.d.ts +1 -1
  158. package/dist/esm/ag-grid-plus/theme.d.ts +7 -1
  159. package/dist/esm/ag-grid-plus/theme.js +31 -6
  160. package/dist/esm/ag-grid-plus/toolBar/OverflowActions.d.ts +16 -0
  161. package/dist/esm/ag-grid-plus/toolBar/OverflowActions.js +120 -0
  162. package/dist/esm/ag-grid-plus/toolBar/index.d.ts +3 -1
  163. package/dist/esm/ag-grid-plus/toolBar/index.js +43 -35
  164. package/dist/esm/ag-grid-plus/toolBar/leftContent.d.ts +2 -2
  165. package/dist/esm/ag-grid-plus/toolBar/leftContent.js +2 -2
  166. package/dist/esm/ag-grid-plus/toolBar/overflow.d.ts +20 -0
  167. package/dist/esm/ag-grid-plus/toolBar/overflow.js +41 -0
  168. package/dist/esm/ag-grid-plus/toolBar/style.js +71 -15
  169. package/dist/esm/ag-grid-plus/types.d.ts +6 -0
  170. package/dist/esm/ag-grid-plus/utils/agGridCompat.js +12 -3
  171. package/dist/esm/ag-grid-plus/utils/columnProcessors.d.ts +3 -0
  172. package/dist/esm/ag-grid-plus/utils/columnProcessors.js +14 -3
  173. package/dist/esm/ag-grid-plus/utils/constants.d.ts +3 -2
  174. package/dist/esm/ag-grid-plus/utils/constants.js +3 -2
  175. package/dist/esm/ag-grid-plus/utils/crossPageSelection.d.ts +21 -0
  176. package/dist/esm/ag-grid-plus/utils/crossPageSelection.js +52 -0
  177. package/dist/esm/ag-grid-plus/utils/emptyState.d.ts +2 -0
  178. package/dist/esm/ag-grid-plus/utils/emptyState.js +9 -5
  179. package/dist/esm/ag-grid-plus/utils/listKeyboard.d.ts +24 -0
  180. package/dist/esm/ag-grid-plus/utils/listKeyboard.js +77 -0
  181. package/dist/esm/ag-grid-plus/utils/pagination.d.ts +26 -0
  182. package/dist/esm/ag-grid-plus/utils/pagination.js +60 -0
  183. package/dist/esm/ag-grid-plus/utils/queryDispatch.d.ts +7 -0
  184. package/dist/esm/ag-grid-plus/utils/queryDispatch.js +11 -0
  185. package/dist/esm/ag-grid-plus/utils/statusPill.d.ts +25 -0
  186. package/dist/esm/ag-grid-plus/utils/statusPill.js +192 -0
  187. package/dist/esm/ag-grid-plus/utils/valueEnumColor.d.ts +6 -1
  188. package/dist/esm/ag-grid-plus/utils/valueEnumColor.js +12 -8
  189. package/dist/esm/ag-grid-plus/utils/valueFormat.d.ts +19 -0
  190. package/dist/esm/ag-grid-plus/utils/valueFormat.js +63 -0
  191. package/dist/esm/ag-grid-plus/utils.js +3 -2
  192. package/dist/esm/array-table/arrayAddBtn.d.ts +1 -0
  193. package/dist/esm/array-table/arrayAddBtn.js +1 -1
  194. package/dist/esm/array-table/autoHeight.d.ts +18 -0
  195. package/dist/esm/array-table/autoHeight.js +25 -0
  196. package/dist/esm/array-table/batchRemove.d.ts +2 -2
  197. package/dist/esm/array-table/cellEditorMarker.d.ts +18 -0
  198. package/dist/esm/array-table/cellEditorMarker.js +84 -0
  199. package/dist/esm/array-table/errorLocator.d.ts +29 -0
  200. package/dist/esm/array-table/errorLocator.js +95 -0
  201. package/dist/esm/array-table/hooks.d.ts +52 -4
  202. package/dist/esm/array-table/hooks.js +251 -17
  203. package/dist/esm/array-table/index.d.ts +6 -0
  204. package/dist/esm/array-table/index.js +170 -25
  205. package/dist/esm/array-table/interface.d.ts +22 -0
  206. package/dist/esm/array-table/preview.js +43 -7
  207. package/dist/esm/array-table/rowFeedback.d.ts +2 -2
  208. package/dist/esm/array-table/rowFeedback.js +8 -8
  209. package/dist/esm/array-table/summary.d.ts +25 -0
  210. package/dist/esm/array-table/summary.js +66 -0
  211. package/dist/esm/array-table/theme.d.ts +35 -5
  212. package/dist/esm/array-table/theme.js +47 -12
  213. package/dist/esm/array-table/title.d.ts +3 -0
  214. package/dist/esm/array-table/title.js +24 -0
  215. package/dist/esm/array-table/utils.d.ts +2 -1
  216. package/dist/esm/array-table/utils.js +93 -22
  217. package/dist/esm/card/pro-card/Card/useLegacyItems.d.ts +1 -1
  218. package/dist/esm/dateCellEditor/DateCellEditor.d.ts +5 -0
  219. package/dist/esm/dateCellEditor/DateCellEditor.js +42 -17
  220. package/dist/esm/deleteConfirm/index.d.ts +14 -0
  221. package/dist/esm/deleteConfirm/index.js +72 -12
  222. package/dist/esm/dialogSelect/index.d.ts +19 -0
  223. package/dist/esm/dialogSelect/index.js +190 -16
  224. package/dist/esm/dialogSelect/index.less +18 -0
  225. package/dist/esm/documentPage/documentPage.d.ts +6 -3
  226. package/dist/esm/documentPage/documentPage.js +23 -8
  227. package/dist/esm/documentPage/index.d.ts +2 -0
  228. package/dist/esm/documentPage/index.js +1 -0
  229. package/dist/esm/documentPage/leaveGuard.d.ts +31 -0
  230. package/dist/esm/documentPage/leaveGuard.js +86 -0
  231. package/dist/esm/draggableModal/index.d.ts +24 -1
  232. package/dist/esm/draggableModal/index.js +35 -5
  233. package/dist/esm/fullScreenAlert/index.less +10 -10
  234. package/dist/esm/index.d.ts +2 -0
  235. package/dist/esm/index.js +1 -0
  236. package/dist/esm/readPretty/arrayTable.js +6 -2
  237. package/dist/esm/scanCollect/ScanFeedbackInput.d.ts +26 -0
  238. package/dist/esm/scanCollect/ScanFeedbackInput.js +107 -0
  239. package/dist/esm/scanCollect/index.d.ts +4 -0
  240. package/dist/esm/scanCollect/index.js +2 -0
  241. package/dist/esm/scanCollect/scanSound.d.ts +15 -0
  242. package/dist/esm/scanCollect/scanSound.js +84 -0
  243. package/package.json +2 -2
@@ -8,6 +8,7 @@ exports.useAgGridTheme = useAgGridTheme;
8
8
  var _agGridCommunity = require("ag-grid-community");
9
9
  var _antd = require("antd");
10
10
  var _react = require("react");
11
+ var _rowColors = require("./rowColors");
11
12
  /**
12
13
  * AG-Grid v33 主题配置
13
14
  * 使用 themeQuartz API 替代 CSS 变量方式
@@ -18,7 +19,18 @@ var headerFilterPlacement = (0, _agGridCommunity.createPart)({
18
19
  feature: 'qcHeaderFilterPlacement',
19
20
  css: "\n .ag-ltr .ag-right-aligned-header .ag-cell-label-container {\n flex-direction: row-reverse;\n }\n .ag-ltr .ag-right-aligned-header .ag-header-cell-filter-button {\n margin-left: var(--ag-spacing);\n margin-right: 0;\n }\n "
20
21
  });
21
- var agGridTheme = exports.agGridTheme = _agGridCommunity.themeQuartz.withPart(headerFilterPlacement).withParams({
22
+
23
+ /**
24
+ * 选中且悬浮行底色取 CSS 变量 `--qc-row-selected-hover-bg`(由 AgGridPlus 容器按主题写入):
25
+ * 否则选中行被悬浮时只显示悬浮色,「选中」反而变淡。
26
+ * 表头键盘焦点环用主色 2px 实线(对白底 ≥ 3:1),原先的 3px 浅色外环对比度不足。
27
+ * 内置编辑器只留单元格那一层框,去掉输入框自带的第二层;单元格错误态用 `ag-cell-error` 类名(列上 cellClassRules 返回即可)。@author nokecy
28
+ */
29
+ var interactionStates = (0, _agGridCommunity.createPart)({
30
+ feature: 'qcInteractionStates',
31
+ css: "\n .ag-row-selected.ag-row-hover::before {\n background-color: var(--qc-row-selected-hover-bg, var(--ag-selected-row-background-color));\n }\n .ag-header-cell:focus-visible,\n .ag-header-group-cell:focus-visible {\n outline: 2px solid var(--ag-accent-color);\n outline-offset: -2px;\n box-shadow: none;\n }\n .ag-header-cell:focus-visible::after,\n .ag-header-group-cell:focus-visible::after {\n display: none;\n }\n .ag-cell-inline-editing .ag-input-field-input,\n .ag-cell-inline-editing .ag-text-field-input,\n .ag-cell-inline-editing .ag-select .ag-picker-field-wrapper,\n .ag-cell-inline-editing .ant-input,\n .ag-cell-inline-editing .ant-input-number,\n .ag-cell-inline-editing .ant-picker,\n .ag-cell-inline-editing .ant-select .ant-select-selector {\n border: 0 !important;\n box-shadow: none !important;\n outline: none !important;\n background-color: transparent;\n }\n /* \u805A\u7126\u3001\u9519\u8BEF\u53EA\u7528\u5355\u5143\u683C\u8FD9\u4E00\u5C42\u6846\u8868\u8FBE\uFF1Ainset \u4E0D\u5360\u5E03\u5C40\uFF0C\u4E5F\u4E0D\u4F1A\u53E0\u5728\u5355\u5143\u683C\u7EBF\u5916 */\n .ag-cell-inline-editing {\n border: 0 !important;\n box-shadow: inset 0 0 0 1px var(--ag-accent-color);\n }\n .ag-cell.ag-cell-error,\n .ag-cell-inline-editing.ag-cell-error {\n box-shadow: inset 0 0 0 1px var(--ag-invalid-color);\n }\n "
32
+ });
33
+ var agGridTheme = exports.agGridTheme = _agGridCommunity.themeQuartz.withPart(headerFilterPlacement).withPart(interactionStates).withParams({
22
34
  // 基础颜色
23
35
  backgroundColor: '#FFFFFF',
24
36
  foregroundColor: '#555B62',
@@ -89,11 +101,16 @@ var agGridTheme = exports.agGridTheme = _agGridCommunity.themeQuartz.withPart(he
89
101
  * 根据当前 Ant Design ConfigProvider 主题生成 AgGrid 主题色。
90
102
  * 网格、筛选弹层、输入框和强调状态均直接跟随 antd 主题。@author nokecy
91
103
  */
92
- function useAgGridTheme() {
104
+ function useAgGridTheme(options) {
93
105
  var _antdTheme$useToken = _antd.theme.useToken(),
94
106
  token = _antdTheme$useToken.token;
107
+ var density = options === null || options === void 0 ? void 0 : options.density;
108
+ var themeParams = options === null || options === void 0 ? void 0 : options.themeParams;
95
109
  return (0, _react.useMemo)(function () {
96
- return agGridTheme.withParams({
110
+ var _rowColors$hover, _rowColors$selected;
111
+ // 规范底色:主色朝白混合,链接压其上 ≥ 4.5:1;主色不是 6 位 hex 时退回 antd 派生
112
+ var rowColors = (0, _rowColors.deriveRowColors)(token.colorPrimary, token.colorLink);
113
+ var themed = agGridTheme.withParams({
97
114
  // 弹层可能挂到网格容器之外,必须由组件主题完整声明颜色。@author nokecy
98
115
  backgroundColor: token.colorBgContainer,
99
116
  foregroundColor: token.colorText,
@@ -116,8 +133,8 @@ function useAgGridTheme() {
116
133
  invalidColor: token.colorError,
117
134
  browserColorScheme: 'inherit',
118
135
  accentColor: token.colorPrimary,
119
- rowHoverColor: token.colorPrimaryBg,
120
- selectedRowBackgroundColor: token.colorPrimaryBgHover,
136
+ rowHoverColor: (_rowColors$hover = rowColors === null || rowColors === void 0 ? void 0 : rowColors.hover) !== null && _rowColors$hover !== void 0 ? _rowColors$hover : token.colorPrimaryBg,
137
+ selectedRowBackgroundColor: (_rowColors$selected = rowColors === null || rowColors === void 0 ? void 0 : rowColors.selected) !== null && _rowColors$selected !== void 0 ? _rowColors$selected : token.colorPrimaryBgHover,
121
138
  columnHoverColor: token.colorPrimaryBg,
122
139
  rangeSelectionBorderColor: token.colorPrimary,
123
140
  rangeSelectionBackgroundColor: token.colorPrimaryBgHover,
@@ -132,5 +149,13 @@ function useAgGridTheme() {
132
149
  checkboxIndeterminateShapeColor: token.colorWhite,
133
150
  toggleButtonOnBackgroundColor: token.colorPrimary
134
151
  });
135
- }, [token]);
152
+ var withDensity = density ? themed.withParams({
153
+ fontSize: density.fontSize,
154
+ headerFontSize: density.fontSize,
155
+ rowHeight: density.rowHeight,
156
+ headerHeight: density.headerHeight,
157
+ cellHorizontalPadding: density.paddingInline
158
+ }) : themed;
159
+ return themeParams ? withDensity.withParams(themeParams) : withDensity;
160
+ }, [token, density, themeParams]);
136
161
  }
@@ -0,0 +1,16 @@
1
+ import React from 'react';
2
+ export interface OverflowActionsProps {
3
+ items: React.ReactNode[];
4
+ prefixCls: string;
5
+ hashId?: string;
6
+ /** 外显个数上限,超出进「更多」;不传则只按宽度收纳。 */
7
+ maxVisible?: number;
8
+ /** 「更多」按钮文案 */
9
+ moreText?: string;
10
+ }
11
+ /**
12
+ * 工具栏操作区:放不下的按钮收进「更多」。
13
+ * 收起的按钮仍留在原位量宽(不可见、不可聚焦),展开面板里渲染同一批按钮。@author nokecy
14
+ */
15
+ declare const OverflowActions: React.FC<OverflowActionsProps>;
16
+ export default OverflowActions;
@@ -0,0 +1,128 @@
1
+ "use strict";
2
+
3
+ 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); }
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.default = void 0;
8
+ var _icons = require("@ant-design/icons");
9
+ var _antd = require("antd");
10
+ var _react = _interopRequireWildcard(require("react"));
11
+ var _overflow = require("./overflow");
12
+ var _jsxRuntime = require("react/jsx-runtime");
13
+ function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(e) { return e ? t : r; })(e); }
14
+ function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != _typeof(e) && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && Object.prototype.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
15
+ function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
16
+ function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
17
+ function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
18
+ function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }
19
+ function _iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t.return && (u = t.return(), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }
20
+ function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
21
+ /**
22
+ * 工具栏操作区:放不下的按钮收进「更多」。
23
+ * 收起的按钮仍留在原位量宽(不可见、不可聚焦),展开面板里渲染同一批按钮。@author nokecy
24
+ */
25
+ var OverflowActions = function OverflowActions(_ref) {
26
+ var items = _ref.items,
27
+ prefixCls = _ref.prefixCls,
28
+ hashId = _ref.hashId,
29
+ maxVisible = _ref.maxVisible,
30
+ _ref$moreText = _ref.moreText,
31
+ moreText = _ref$moreText === void 0 ? '更多' : _ref$moreText;
32
+ var containerRef = (0, _react.useRef)(null);
33
+ var moreRef = (0, _react.useRef)(null);
34
+ var itemRefs = (0, _react.useRef)([]);
35
+ var moreWidthRef = (0, _react.useRef)(_overflow.OVERFLOW_MORE_FALLBACK_WIDTH);
36
+ var _useState = (0, _react.useState)(items.length),
37
+ _useState2 = _slicedToArray(_useState, 2),
38
+ visibleCount = _useState2[0],
39
+ setVisibleCount = _useState2[1];
40
+ var measure = (0, _react.useCallback)(function () {
41
+ var _moreRef$current;
42
+ var container = containerRef.current;
43
+ if (!container) return;
44
+ if ((_moreRef$current = moreRef.current) !== null && _moreRef$current !== void 0 && _moreRef$current.offsetWidth) moreWidthRef.current = moreRef.current.offsetWidth;
45
+ var widths = items.map(function (_, index) {
46
+ var _itemRefs$current$ind, _itemRefs$current$ind2;
47
+ return (_itemRefs$current$ind = (_itemRefs$current$ind2 = itemRefs.current[index]) === null || _itemRefs$current$ind2 === void 0 ? void 0 : _itemRefs$current$ind2.offsetWidth) !== null && _itemRefs$current$ind !== void 0 ? _itemRefs$current$ind : 0;
48
+ });
49
+ var next = (0, _overflow.computeVisibleCount)(widths, container.clientWidth, {
50
+ gap: _overflow.OVERFLOW_GAP,
51
+ moreWidth: moreWidthRef.current,
52
+ maxVisible: maxVisible
53
+ });
54
+ setVisibleCount(function (prev) {
55
+ return prev === next ? prev : next;
56
+ });
57
+ }, [items, maxVisible]);
58
+
59
+ // 每次渲染都量:操作区内容由页面每轮重新给出,宽度可能随之变化;只在个数变了才更新状态
60
+ (0, _react.useLayoutEffect)(function () {
61
+ measure();
62
+ });
63
+ (0, _react.useLayoutEffect)(function () {
64
+ var container = containerRef.current;
65
+ if (!container || typeof ResizeObserver === 'undefined') return;
66
+ var observer = new ResizeObserver(function () {
67
+ return measure();
68
+ });
69
+ observer.observe(container);
70
+ return function () {
71
+ return observer.disconnect();
72
+ };
73
+ }, [measure]);
74
+ var count = Math.min(visibleCount, items.length);
75
+ var hidden = items.slice(count);
76
+ return /*#__PURE__*/(0, _jsxRuntime.jsxs)("div", {
77
+ ref: containerRef,
78
+ className: "".concat(prefixCls, "-actions ").concat(hashId !== null && hashId !== void 0 ? hashId : ''),
79
+ style: {
80
+ gap: _overflow.OVERFLOW_GAP
81
+ },
82
+ children: [items.map(function (item, index) {
83
+ var collapsed = index >= count;
84
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
85
+ ref: function ref(node) {
86
+ itemRefs.current[index] = node;
87
+ },
88
+ className: "".concat(prefixCls, "-action-item"),
89
+ "data-overflow-hidden": collapsed || undefined,
90
+ "aria-hidden": collapsed || undefined,
91
+ style: collapsed ? {
92
+ position: 'absolute',
93
+ insetInlineStart: 0,
94
+ visibility: 'hidden',
95
+ pointerEvents: 'none'
96
+ } : undefined,
97
+ children: item
98
+ }, index);
99
+ }), hidden.length > 0 ? /*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
100
+ ref: moreRef,
101
+ className: "".concat(prefixCls, "-action-more"),
102
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_antd.Dropdown, {
103
+ trigger: ['click'],
104
+ placement: "bottomLeft",
105
+ popupRender: function popupRender() {
106
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
107
+ className: "".concat(prefixCls, "-more-panel ").concat(hashId !== null && hashId !== void 0 ? hashId : ''),
108
+ children: hidden.map(function (item, index) {
109
+ return (
110
+ /*#__PURE__*/
111
+ // eslint-disable-next-line react/no-array-index-key
112
+ (0, _jsxRuntime.jsx)("div", {
113
+ className: "".concat(prefixCls, "-more-item"),
114
+ children: item
115
+ }, index)
116
+ );
117
+ })
118
+ });
119
+ },
120
+ children: /*#__PURE__*/(0, _jsxRuntime.jsxs)(_antd.Button, {
121
+ "aria-haspopup": "menu",
122
+ children: [moreText, /*#__PURE__*/(0, _jsxRuntime.jsx)(_icons.DownOutlined, {})]
123
+ })
124
+ })
125
+ }) : null]
126
+ });
127
+ };
128
+ var _default = exports.default = OverflowActions;
@@ -15,6 +15,8 @@ export type ListToolBarProps = {
15
15
  actions?: React.ReactNode[];
16
16
  /** 工作栏右侧设置区 */
17
17
  settings?: SettingPropType[];
18
+ /** 操作区外显个数上限,超出进「更多」;不传则只按宽度收纳。 */
19
+ maxVisibleActions?: number;
18
20
  };
19
- declare const ListToolBar: ({ prefixCls: customizePrefixCls, title, subTitle, tooltip, className, style, actions, settings }: ListToolBarProps) => React.JSX.Element;
21
+ declare const ListToolBar: ({ prefixCls: customizePrefixCls, title, subTitle, tooltip, className, style, actions, settings, maxVisibleActions, }: ListToolBarProps) => React.JSX.Element;
20
22
  export default ListToolBar;
@@ -11,6 +11,7 @@ var _react = _interopRequireWildcard(require("react"));
11
11
  var _labelIconTip = require("../../shared/labelIconTip");
12
12
  var _style = require("./style");
13
13
  var _leftContent = require("./leftContent");
14
+ var _OverflowActions = _interopRequireDefault(require("./OverflowActions"));
14
15
  var _jsxRuntime = require("react/jsx-runtime");
15
16
  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); }
16
17
  function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != _typeof(e) && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && Object.prototype.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
@@ -42,9 +43,13 @@ function getSettingItem(setting) {
42
43
  _onClick = settingConfig.onClick,
43
44
  key = settingConfig.key;
44
45
  if (icon && tooltip) {
46
+ // 真 button:可键盘聚焦、Enter/Space 触发,Tooltip 同时作为无障碍名称。@author nokecy
45
47
  return /*#__PURE__*/(0, _jsxRuntime.jsx)(_antd.Tooltip, {
46
48
  title: tooltip,
47
- children: /*#__PURE__*/(0, _jsxRuntime.jsx)("span", {
49
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)("button", {
50
+ type: "button",
51
+ "aria-label": typeof tooltip === 'string' ? tooltip : undefined,
52
+ className: "qc-toolbar-icon-button",
48
53
  onClick: function onClick() {
49
54
  if (_onClick) {
50
55
  _onClick(key);
@@ -68,7 +73,8 @@ var ListToolBar = function ListToolBar(_ref) {
68
73
  _ref$actions = _ref.actions,
69
74
  actions = _ref$actions === void 0 ? [] : _ref$actions,
70
75
  _ref$settings = _ref.settings,
71
- settings = _ref$settings === void 0 ? [] : _ref$settings;
76
+ settings = _ref$settings === void 0 ? [] : _ref$settings,
77
+ maxVisibleActions = _ref.maxVisibleActions;
72
78
  var _useContext = (0, _react.useContext)(_antd.ConfigProvider.ConfigContext),
73
79
  getPrefixCls = _useContext.getPrefixCls;
74
80
  var prefixCls = getPrefixCls('pro-table-list-toolbar', customizePrefixCls);
@@ -93,30 +99,34 @@ var ListToolBar = function ListToolBar(_ref) {
93
99
  if (actions.length < 1) {
94
100
  return null;
95
101
  }
96
- return /*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
97
- className: "".concat(prefixCls, "-actions ").concat(hashId),
98
- children: actions.map(function (action, index) {
99
- if (! /*#__PURE__*/_react.default.isValidElement(action)) {
100
- // eslint-disable-next-line react/no-array-index-key
101
- return /*#__PURE__*/(0, _jsxRuntime.jsx)(_react.default.Fragment, {
102
- children: action
103
- }, index);
104
- }
105
- return /*#__PURE__*/_react.default.cloneElement(action, _objectSpread({
106
- // eslint-disable-next-line react/no-array-index-key
107
- key: index
108
- }, action === null || action === void 0 ? void 0 : action.props));
109
- })
102
+ var nodes = actions.map(function (action, index) {
103
+ if (! /*#__PURE__*/_react.default.isValidElement(action)) {
104
+ // eslint-disable-next-line react/no-array-index-key
105
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)(_react.default.Fragment, {
106
+ children: action
107
+ }, index);
108
+ }
109
+ return /*#__PURE__*/_react.default.cloneElement(action, _objectSpread({
110
+ // eslint-disable-next-line react/no-array-index-key
111
+ key: index
112
+ }, action === null || action === void 0 ? void 0 : action.props));
113
+ });
114
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)(_OverflowActions.default, {
115
+ items: nodes,
116
+ prefixCls: prefixCls,
117
+ hashId: hashId,
118
+ maxVisible: maxVisibleActions
110
119
  });
111
- }, [actions, hashId, prefixCls]);
120
+ }, [actions, hashId, prefixCls, maxVisibleActions]);
112
121
  var hasRight = (0, _react.useMemo)(function () {
113
122
  return hasTitle || actionDom || (settings === null || settings === void 0 ? void 0 : settings.length);
114
123
  }, [actionDom, hasTitle, settings === null || settings === void 0 ? void 0 : settings.length]);
115
124
  var hasLeft = (0, _react.useMemo)(function () {
116
125
  return tooltip || title || subTitle;
117
126
  }, [hasTitle, subTitle, title, tooltip]);
127
+
128
+ // 三区结构(DESIGN.md §5.1):左=标题与写操作,中=选择摘要等视图内容,右=视图图标。位置固定。@author nokecy
118
129
  var leftTitleDom = (0, _react.useMemo)(function () {
119
- // 保留左侧占位,并为操作组件提供当前列表独立的辅助内容位。@author nokecy
120
130
  return /*#__PURE__*/(0, _jsxRuntime.jsxs)("div", {
121
131
  className: "".concat(prefixCls, "-left ").concat(hashId),
122
132
  children: [hasTitle && /*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
@@ -126,22 +136,20 @@ var ListToolBar = function ListToolBar(_ref) {
126
136
  label: title,
127
137
  subTitle: subTitle
128
138
  })
129
- }), /*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
130
- ref: setLeftContainer,
131
- style: {
132
- display: 'contents'
133
- }
134
- })]
139
+ }), actionDom]
135
140
  });
136
- }, [hasLeft, hasRight, hasTitle, hashId, prefixCls, subTitle, title, tooltip]);
141
+ }, [actionDom, hasTitle, hashId, prefixCls, subTitle, title, tooltip]);
142
+ var centerDom = (0, _react.useMemo)(function () {
143
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
144
+ ref: setLeftContainer,
145
+ className: "".concat(prefixCls, "-center ").concat(hashId)
146
+ });
147
+ }, [hashId, prefixCls]);
137
148
  var rightTitleDom = (0, _react.useMemo)(function () {
138
- if (!hasRight) return null;
139
- return /*#__PURE__*/(0, _jsxRuntime.jsxs)("div", {
149
+ if (!(settings !== null && settings !== void 0 && settings.length)) return null;
150
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
140
151
  className: "".concat(prefixCls, "-right ").concat(hashId),
141
- style: {
142
- alignItems: 'center'
143
- },
144
- children: [actionDom, settings !== null && settings !== void 0 && settings.length ? /*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
152
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
145
153
  className: "".concat(prefixCls, "-setting-items ").concat(hashId),
146
154
  children: settings.map(function (setting, index) {
147
155
  var settingItem = getSettingItem(setting);
@@ -154,17 +162,17 @@ var ListToolBar = function ListToolBar(_ref) {
154
162
  }, index)
155
163
  );
156
164
  })
157
- }) : null]
165
+ })
158
166
  });
159
- }, [hasRight, prefixCls, hashId, hasTitle, actionDom, settings]);
167
+ }, [hashId, prefixCls, settings]);
160
168
  var titleNode = (0, _react.useMemo)(function () {
161
169
  if (!hasRight && !hasLeft) return null;
162
170
  var containerClassName = (0, _classnames.default)("".concat(prefixCls, "-container"), hashId, {});
163
171
  return /*#__PURE__*/(0, _jsxRuntime.jsxs)("div", {
164
172
  className: containerClassName,
165
- children: [leftTitleDom, rightTitleDom]
173
+ children: [leftTitleDom, centerDom, rightTitleDom]
166
174
  });
167
- }, [hasLeft, hasRight, hashId, leftTitleDom, prefixCls, rightTitleDom]);
175
+ }, [centerDom, hasLeft, hasRight, hashId, leftTitleDom, prefixCls, rightTitleDom]);
168
176
  return /*#__PURE__*/(0, _jsxRuntime.jsx)(_leftContent.ListToolbarLeftContext.Provider, {
169
177
  value: leftContainer,
170
178
  children: /*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
@@ -1,5 +1,5 @@
1
1
  import React from 'react';
2
- /** 当前列表工具栏的左侧内容容器;undefined 表示位于列表工具栏之外。@author nokecy */
2
+ /** 当前列表工具栏的中区容器(选择摘要等视图内容);undefined 表示位于列表工具栏之外。@author nokecy */
3
3
  export declare const ListToolbarLeftContext: React.Context<HTMLElement | null | undefined>;
4
- /** 将选择摘要等辅助内容放到当前列表标题旁;独立使用时保留原位置。@author nokecy */
4
+ /** 将选择摘要等辅助内容放进工具栏中区;独立使用时保留原位置。@author nokecy */
5
5
  export declare const ListToolbarLeft: React.FC<React.PropsWithChildren>;
@@ -10,10 +10,10 @@ var _reactDom = require("react-dom");
10
10
  var _jsxRuntime = require("react/jsx-runtime");
11
11
  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); }
12
12
  function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != _typeof(e) && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && Object.prototype.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
13
- /** 当前列表工具栏的左侧内容容器;undefined 表示位于列表工具栏之外。@author nokecy */
13
+ /** 当前列表工具栏的中区容器(选择摘要等视图内容);undefined 表示位于列表工具栏之外。@author nokecy */
14
14
  var ListToolbarLeftContext = exports.ListToolbarLeftContext = /*#__PURE__*/(0, _react.createContext)(undefined);
15
15
 
16
- /** 将选择摘要等辅助内容放到当前列表标题旁;独立使用时保留原位置。@author nokecy */
16
+ /** 将选择摘要等辅助内容放进工具栏中区;独立使用时保留原位置。@author nokecy */
17
17
  var ListToolbarLeft = exports.ListToolbarLeft = function ListToolbarLeft(_ref) {
18
18
  var children = _ref.children;
19
19
  var container = (0, _react.useContext)(ListToolbarLeftContext);
@@ -0,0 +1,20 @@
1
+ /**
2
+ * 工具栏「更多」溢出的纯计算(DESIGN.md §5.4):放不下的按钮收进「更多」,
3
+ * 不缩小、不换行、不横向滚动;先收排在后面的,排在最前面的至少保留一个。
4
+ * @author nokecy
5
+ */
6
+ /** 按钮之间的间距(px)。 */
7
+ export declare const OVERFLOW_GAP = 8;
8
+ /** 「更多」按钮未测量时的预估宽度(px)。 */
9
+ export declare const OVERFLOW_MORE_FALLBACK_WIDTH = 72;
10
+ /**
11
+ * 返回外显的按钮个数,其余进「更多」。
12
+ * @param widths 每个按钮的自然宽度
13
+ * @param available 操作区可用宽度;<=0 视为尚未布局,只受 maxVisible 约束
14
+ * @param maxVisible 外显个数上限(可选)
15
+ */
16
+ export declare function computeVisibleCount(widths: number[], available: number, options?: {
17
+ gap?: number;
18
+ moreWidth?: number;
19
+ maxVisible?: number;
20
+ }): number;
@@ -0,0 +1,48 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.OVERFLOW_MORE_FALLBACK_WIDTH = exports.OVERFLOW_GAP = void 0;
7
+ exports.computeVisibleCount = computeVisibleCount;
8
+ /**
9
+ * 工具栏「更多」溢出的纯计算(DESIGN.md §5.4):放不下的按钮收进「更多」,
10
+ * 不缩小、不换行、不横向滚动;先收排在后面的,排在最前面的至少保留一个。
11
+ * @author nokecy
12
+ */
13
+
14
+ /** 按钮之间的间距(px)。 */
15
+ var OVERFLOW_GAP = exports.OVERFLOW_GAP = 8;
16
+ /** 「更多」按钮未测量时的预估宽度(px)。 */
17
+ var OVERFLOW_MORE_FALLBACK_WIDTH = exports.OVERFLOW_MORE_FALLBACK_WIDTH = 72;
18
+ var span = function span(widths, count, gap) {
19
+ return count <= 0 ? 0 : widths.slice(0, count).reduce(function (sum, width) {
20
+ return sum + width;
21
+ }, 0) + gap * (count - 1);
22
+ };
23
+
24
+ /**
25
+ * 返回外显的按钮个数,其余进「更多」。
26
+ * @param widths 每个按钮的自然宽度
27
+ * @param available 操作区可用宽度;<=0 视为尚未布局,只受 maxVisible 约束
28
+ * @param maxVisible 外显个数上限(可选)
29
+ */
30
+ function computeVisibleCount(widths, available) {
31
+ var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
32
+ var _options$gap = options.gap,
33
+ gap = _options$gap === void 0 ? OVERFLOW_GAP : _options$gap,
34
+ _options$moreWidth = options.moreWidth,
35
+ moreWidth = _options$moreWidth === void 0 ? OVERFLOW_MORE_FALLBACK_WIDTH : _options$moreWidth,
36
+ maxVisible = options.maxVisible;
37
+ var total = widths.length;
38
+ if (total === 0) return 0;
39
+ var cap = maxVisible === undefined ? total : Math.max(1, Math.min(total, Math.floor(maxVisible)));
40
+ if (available <= 0) return cap;
41
+ if (cap === total && span(widths, total, gap) <= available) return total;
42
+
43
+ // 需要「更多」按钮:它自己也占一份宽度和一个间距
44
+ for (var count = Math.min(cap, total - 1); count >= 1; count--) {
45
+ if (span(widths, count, gap) + gap + moreWidth <= available) return count;
46
+ }
47
+ return 1;
48
+ }
@@ -18,7 +18,10 @@ var genProListStyle = function genProListStyle(token) {
18
18
  display: "flex",
19
19
  justifyContent: "space-between",
20
20
  alignItems: "center",
21
+ // 放不下时中区、右区换到下一行,而不是把左区挤到 0 宽后互相叠压
22
+ flexWrap: "wrap",
21
23
  minWidth: 0,
24
+ gap: token.marginSM,
22
25
  paddingBlock: 8,
23
26
  //token.padding,
24
27
  paddingInline: 0,
@@ -27,6 +30,7 @@ var genProListStyle = function genProListStyle(token) {
27
30
  }
28
31
  },
29
32
  "&-title": {
33
+ flex: "0 0 auto",
30
34
  display: "flex",
31
35
  alignItems: "center",
32
36
  justifyContent: "flex-start",
@@ -44,7 +48,8 @@ var genProListStyle = function genProListStyle(token) {
44
48
  marginInline: 4,
45
49
  color: token.colorIconHover,
46
50
  fontSize: token.fontSizeLG,
47
- cursor: "pointer",
51
+ display: "flex",
52
+ alignItems: "center",
48
53
  "> span": {
49
54
  display: "block",
50
55
  width: "100%",
@@ -54,43 +59,94 @@ var genProListStyle = function genProListStyle(token) {
54
59
  color: token.colorPrimary
55
60
  }
56
61
  },
62
+ // 视图图标是真 button:去掉浏览器默认样式,保留键盘焦点环。@author nokecy
63
+ "&-setting-item button": {
64
+ display: "inline-flex",
65
+ alignItems: "center",
66
+ justifyContent: "center",
67
+ minWidth: 28,
68
+ height: 28,
69
+ padding: 0,
70
+ border: 0,
71
+ background: "transparent",
72
+ color: "inherit",
73
+ fontSize: "inherit",
74
+ lineHeight: 1,
75
+ cursor: "pointer",
76
+ borderRadius: token.borderRadiusSM,
77
+ "&:hover": {
78
+ background: token.colorFillTertiary
79
+ },
80
+ "&:focus-visible": {
81
+ outline: "2px solid ".concat(token.colorPrimary),
82
+ outlineOffset: 1
83
+ }
84
+ },
85
+ // 左:标题 + 写操作;占满剩余宽度,操作区在其中按宽度把放不下的收进「更多」。
57
86
  "&-left": _defineProperty(_defineProperty({
58
87
  display: "flex",
59
88
  flexWrap: "nowrap",
60
89
  alignItems: "center",
61
- gap: token.marginXS,
90
+ gap: token.marginSM,
62
91
  justifyContent: "flex-start",
63
92
  minWidth: 0,
64
- flex: "0 1 auto"
93
+ flex: "1 1 240px"
65
94
  }, "".concat(token.antCls, "-tabs"), {
66
95
  width: "100%"
67
96
  }), "&-has-tabs", {
68
97
  overflow: "hidden"
69
98
  }),
99
+ // 中:选择摘要等视图内容,没有内容时不占位。
100
+ "&-center": {
101
+ display: "flex",
102
+ alignItems: "center",
103
+ gap: token.marginXS,
104
+ flex: "0 0 auto",
105
+ "&:empty": {
106
+ display: "none"
107
+ }
108
+ },
109
+ // 右:视图图标,位置固定。
70
110
  "&-right": {
71
- flex: "1 1 0",
72
- minWidth: 0,
111
+ flex: "0 0 auto",
112
+ marginInlineStart: "auto",
73
113
  display: "flex",
74
114
  flexWrap: "nowrap",
75
115
  alignItems: "center",
76
116
  justifyContent: "flex-end",
77
117
  gap: token.marginXS
78
118
  },
79
- // @author nokecy:按钮单行呈现,空间不足时只在操作区内滚动,不撑开页面。
119
+ // 操作区:放不下的按钮收进「更多」,不缩小、不换行、不横向滚动(§5.4)。
80
120
  "&-actions": {
121
+ position: "relative",
81
122
  display: "flex",
82
123
  alignItems: "center",
83
- gap: token.marginXS,
84
124
  minWidth: 0,
85
- flex: "0 1 auto",
86
- overflowX: "auto",
87
- overflowY: "hidden",
88
- scrollbarWidth: "none",
89
- whiteSpace: "nowrap",
90
- "&::-webkit-scrollbar": {
91
- display: "none"
92
- }
125
+ flex: "1 1 0",
126
+ overflow: "hidden",
127
+ whiteSpace: "nowrap"
128
+ },
129
+ "&-action-item, &-action-more": {
130
+ display: "flex",
131
+ alignItems: "center",
132
+ flex: "none"
93
133
  },
134
+ "&-more-panel": {
135
+ display: "flex",
136
+ flexDirection: "column",
137
+ gap: token.marginXXS,
138
+ minWidth: 140,
139
+ padding: token.paddingXXS,
140
+ background: token.colorBgElevated,
141
+ borderRadius: token.borderRadiusLG,
142
+ boxShadow: token.boxShadowSecondary
143
+ },
144
+ "&-more-item": _defineProperty({
145
+ display: "flex"
146
+ }, "> ".concat(token.antCls, "-btn, > *"), {
147
+ flex: 1,
148
+ justifyContent: "flex-start"
149
+ }),
94
150
  "&-extra-line": {
95
151
  marginBlockEnd: token.margin
96
152
  },
@@ -6,6 +6,7 @@
6
6
  */
7
7
  import { ColumnState, GridApi, ColDef, ICellRendererParams } from 'ag-grid-community';
8
8
  import { ReactNode, type JSX } from 'react';
9
+ import type { StatusKey } from './utils/statusPill';
9
10
  /**
10
11
  * 分页状态
11
12
  */
@@ -108,6 +109,11 @@ export interface ValueEnumItem {
108
109
  label: string;
109
110
  /** 标签颜色 (可选) */
110
111
  color?: string;
112
+ /**
113
+ * 状态语义(可选)。配置后渲染为「图标 + 文字 + 底色」的状态胶囊,优先于 `color`。
114
+ * wait 待处理 / running 进行中 / done 已完成 / warning 预警 / alarm 报警 / closed 已关闭。
115
+ */
116
+ status?: StatusKey;
111
117
  /** 是否为默认值 (可选) */
112
118
  default?: boolean;
113
119
  }