@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
@@ -6,13 +6,25 @@
6
6
  import { createPart, themeQuartz } from 'ag-grid-community';
7
7
  import { theme as antdTheme } from 'antd';
8
8
  import { useMemo } from 'react';
9
+ import { deriveRowColors } from "./rowColors";
9
10
 
10
11
  /** 右对齐只影响标题和数值,筛选入口在所有列中统一位于右侧。@author nokecy */
11
12
  var headerFilterPlacement = createPart({
12
13
  feature: 'qcHeaderFilterPlacement',
13
14
  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 "
14
15
  });
15
- export var agGridTheme = themeQuartz.withPart(headerFilterPlacement).withParams({
16
+
17
+ /**
18
+ * 选中且悬浮行底色取 CSS 变量 `--qc-row-selected-hover-bg`(由 AgGridPlus 容器按主题写入):
19
+ * 否则选中行被悬浮时只显示悬浮色,「选中」反而变淡。
20
+ * 表头键盘焦点环用主色 2px 实线(对白底 ≥ 3:1),原先的 3px 浅色外环对比度不足。
21
+ * 内置编辑器只留单元格那一层框,去掉输入框自带的第二层;单元格错误态用 `ag-cell-error` 类名(列上 cellClassRules 返回即可)。@author nokecy
22
+ */
23
+ var interactionStates = createPart({
24
+ feature: 'qcInteractionStates',
25
+ 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 "
26
+ });
27
+ export var agGridTheme = themeQuartz.withPart(headerFilterPlacement).withPart(interactionStates).withParams({
16
28
  // 基础颜色
17
29
  backgroundColor: '#FFFFFF',
18
30
  foregroundColor: '#555B62',
@@ -83,11 +95,16 @@ export var agGridTheme = themeQuartz.withPart(headerFilterPlacement).withParams(
83
95
  * 根据当前 Ant Design ConfigProvider 主题生成 AgGrid 主题色。
84
96
  * 网格、筛选弹层、输入框和强调状态均直接跟随 antd 主题。@author nokecy
85
97
  */
86
- export function useAgGridTheme() {
98
+ export function useAgGridTheme(options) {
87
99
  var _antdTheme$useToken = antdTheme.useToken(),
88
100
  token = _antdTheme$useToken.token;
101
+ var density = options === null || options === void 0 ? void 0 : options.density;
102
+ var themeParams = options === null || options === void 0 ? void 0 : options.themeParams;
89
103
  return useMemo(function () {
90
- return agGridTheme.withParams({
104
+ var _rowColors$hover, _rowColors$selected;
105
+ // 规范底色:主色朝白混合,链接压其上 ≥ 4.5:1;主色不是 6 位 hex 时退回 antd 派生
106
+ var rowColors = deriveRowColors(token.colorPrimary, token.colorLink);
107
+ var themed = agGridTheme.withParams({
91
108
  // 弹层可能挂到网格容器之外,必须由组件主题完整声明颜色。@author nokecy
92
109
  backgroundColor: token.colorBgContainer,
93
110
  foregroundColor: token.colorText,
@@ -110,8 +127,8 @@ export function useAgGridTheme() {
110
127
  invalidColor: token.colorError,
111
128
  browserColorScheme: 'inherit',
112
129
  accentColor: token.colorPrimary,
113
- rowHoverColor: token.colorPrimaryBg,
114
- selectedRowBackgroundColor: token.colorPrimaryBgHover,
130
+ rowHoverColor: (_rowColors$hover = rowColors === null || rowColors === void 0 ? void 0 : rowColors.hover) !== null && _rowColors$hover !== void 0 ? _rowColors$hover : token.colorPrimaryBg,
131
+ selectedRowBackgroundColor: (_rowColors$selected = rowColors === null || rowColors === void 0 ? void 0 : rowColors.selected) !== null && _rowColors$selected !== void 0 ? _rowColors$selected : token.colorPrimaryBgHover,
115
132
  columnHoverColor: token.colorPrimaryBg,
116
133
  rangeSelectionBorderColor: token.colorPrimary,
117
134
  rangeSelectionBackgroundColor: token.colorPrimaryBgHover,
@@ -126,5 +143,13 @@ export function useAgGridTheme() {
126
143
  checkboxIndeterminateShapeColor: token.colorWhite,
127
144
  toggleButtonOnBackgroundColor: token.colorPrimary
128
145
  });
129
- }, [token]);
146
+ var withDensity = density ? themed.withParams({
147
+ fontSize: density.fontSize,
148
+ headerFontSize: density.fontSize,
149
+ rowHeight: density.rowHeight,
150
+ headerHeight: density.headerHeight,
151
+ cellHorizontalPadding: density.paddingInline
152
+ }) : themed;
153
+ return themeParams ? withDensity.withParams(themeParams) : withDensity;
154
+ }, [token, density, themeParams]);
130
155
  }
@@ -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,120 @@
1
+ function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
2
+ function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
3
+ function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
4
+ function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }
5
+ function _iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t.return && (u = t.return(), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }
6
+ function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
7
+ import { DownOutlined } from '@ant-design/icons';
8
+ import { Button, Dropdown } from 'antd';
9
+ import React, { useCallback, useLayoutEffect, useRef, useState } from 'react';
10
+ import { OVERFLOW_GAP, OVERFLOW_MORE_FALLBACK_WIDTH, computeVisibleCount } from "./overflow";
11
+ import { jsx as _jsx } from "react/jsx-runtime";
12
+ import { jsxs as _jsxs } from "react/jsx-runtime";
13
+ /**
14
+ * 工具栏操作区:放不下的按钮收进「更多」。
15
+ * 收起的按钮仍留在原位量宽(不可见、不可聚焦),展开面板里渲染同一批按钮。@author nokecy
16
+ */
17
+ var OverflowActions = function OverflowActions(_ref) {
18
+ var items = _ref.items,
19
+ prefixCls = _ref.prefixCls,
20
+ hashId = _ref.hashId,
21
+ maxVisible = _ref.maxVisible,
22
+ _ref$moreText = _ref.moreText,
23
+ moreText = _ref$moreText === void 0 ? '更多' : _ref$moreText;
24
+ var containerRef = useRef(null);
25
+ var moreRef = useRef(null);
26
+ var itemRefs = useRef([]);
27
+ var moreWidthRef = useRef(OVERFLOW_MORE_FALLBACK_WIDTH);
28
+ var _useState = useState(items.length),
29
+ _useState2 = _slicedToArray(_useState, 2),
30
+ visibleCount = _useState2[0],
31
+ setVisibleCount = _useState2[1];
32
+ var measure = useCallback(function () {
33
+ var _moreRef$current;
34
+ var container = containerRef.current;
35
+ if (!container) return;
36
+ if ((_moreRef$current = moreRef.current) !== null && _moreRef$current !== void 0 && _moreRef$current.offsetWidth) moreWidthRef.current = moreRef.current.offsetWidth;
37
+ var widths = items.map(function (_, index) {
38
+ var _itemRefs$current$ind, _itemRefs$current$ind2;
39
+ 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;
40
+ });
41
+ var next = computeVisibleCount(widths, container.clientWidth, {
42
+ gap: OVERFLOW_GAP,
43
+ moreWidth: moreWidthRef.current,
44
+ maxVisible: maxVisible
45
+ });
46
+ setVisibleCount(function (prev) {
47
+ return prev === next ? prev : next;
48
+ });
49
+ }, [items, maxVisible]);
50
+
51
+ // 每次渲染都量:操作区内容由页面每轮重新给出,宽度可能随之变化;只在个数变了才更新状态
52
+ useLayoutEffect(function () {
53
+ measure();
54
+ });
55
+ useLayoutEffect(function () {
56
+ var container = containerRef.current;
57
+ if (!container || typeof ResizeObserver === 'undefined') return;
58
+ var observer = new ResizeObserver(function () {
59
+ return measure();
60
+ });
61
+ observer.observe(container);
62
+ return function () {
63
+ return observer.disconnect();
64
+ };
65
+ }, [measure]);
66
+ var count = Math.min(visibleCount, items.length);
67
+ var hidden = items.slice(count);
68
+ return /*#__PURE__*/_jsxs("div", {
69
+ ref: containerRef,
70
+ className: "".concat(prefixCls, "-actions ").concat(hashId !== null && hashId !== void 0 ? hashId : ''),
71
+ style: {
72
+ gap: OVERFLOW_GAP
73
+ },
74
+ children: [items.map(function (item, index) {
75
+ var collapsed = index >= count;
76
+ return /*#__PURE__*/_jsx("div", {
77
+ ref: function ref(node) {
78
+ itemRefs.current[index] = node;
79
+ },
80
+ className: "".concat(prefixCls, "-action-item"),
81
+ "data-overflow-hidden": collapsed || undefined,
82
+ "aria-hidden": collapsed || undefined,
83
+ style: collapsed ? {
84
+ position: 'absolute',
85
+ insetInlineStart: 0,
86
+ visibility: 'hidden',
87
+ pointerEvents: 'none'
88
+ } : undefined,
89
+ children: item
90
+ }, index);
91
+ }), hidden.length > 0 ? /*#__PURE__*/_jsx("div", {
92
+ ref: moreRef,
93
+ className: "".concat(prefixCls, "-action-more"),
94
+ children: /*#__PURE__*/_jsx(Dropdown, {
95
+ trigger: ['click'],
96
+ placement: "bottomLeft",
97
+ popupRender: function popupRender() {
98
+ return /*#__PURE__*/_jsx("div", {
99
+ className: "".concat(prefixCls, "-more-panel ").concat(hashId !== null && hashId !== void 0 ? hashId : ''),
100
+ children: hidden.map(function (item, index) {
101
+ return (
102
+ /*#__PURE__*/
103
+ // eslint-disable-next-line react/no-array-index-key
104
+ _jsx("div", {
105
+ className: "".concat(prefixCls, "-more-item"),
106
+ children: item
107
+ }, index)
108
+ );
109
+ })
110
+ });
111
+ },
112
+ children: /*#__PURE__*/_jsxs(Button, {
113
+ "aria-haspopup": "menu",
114
+ children: [moreText, /*#__PURE__*/_jsx(DownOutlined, {})]
115
+ })
116
+ })
117
+ }) : null]
118
+ });
119
+ };
120
+ export 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;
@@ -16,6 +16,7 @@ import React, { useContext, useMemo, useState } from 'react';
16
16
  import { LabelIconTip } from "../../shared/labelIconTip";
17
17
  import { useStyle } from "./style";
18
18
  import { ListToolbarLeftContext } from "./leftContent";
19
+ import OverflowActions from "./OverflowActions";
19
20
  import { jsx as _jsx } from "react/jsx-runtime";
20
21
  import { jsxs as _jsxs } from "react/jsx-runtime";
21
22
  /**
@@ -34,9 +35,13 @@ function getSettingItem(setting) {
34
35
  _onClick = settingConfig.onClick,
35
36
  key = settingConfig.key;
36
37
  if (icon && tooltip) {
38
+ // 真 button:可键盘聚焦、Enter/Space 触发,Tooltip 同时作为无障碍名称。@author nokecy
37
39
  return /*#__PURE__*/_jsx(Tooltip, {
38
40
  title: tooltip,
39
- children: /*#__PURE__*/_jsx("span", {
41
+ children: /*#__PURE__*/_jsx("button", {
42
+ type: "button",
43
+ "aria-label": typeof tooltip === 'string' ? tooltip : undefined,
44
+ className: "qc-toolbar-icon-button",
40
45
  onClick: function onClick() {
41
46
  if (_onClick) {
42
47
  _onClick(key);
@@ -60,7 +65,8 @@ var ListToolBar = function ListToolBar(_ref) {
60
65
  _ref$actions = _ref.actions,
61
66
  actions = _ref$actions === void 0 ? [] : _ref$actions,
62
67
  _ref$settings = _ref.settings,
63
- settings = _ref$settings === void 0 ? [] : _ref$settings;
68
+ settings = _ref$settings === void 0 ? [] : _ref$settings,
69
+ maxVisibleActions = _ref.maxVisibleActions;
64
70
  var _useContext = useContext(ConfigProvider.ConfigContext),
65
71
  getPrefixCls = _useContext.getPrefixCls;
66
72
  var prefixCls = getPrefixCls('pro-table-list-toolbar', customizePrefixCls);
@@ -85,30 +91,34 @@ var ListToolBar = function ListToolBar(_ref) {
85
91
  if (actions.length < 1) {
86
92
  return null;
87
93
  }
88
- return /*#__PURE__*/_jsx("div", {
89
- className: "".concat(prefixCls, "-actions ").concat(hashId),
90
- children: actions.map(function (action, index) {
91
- if (! /*#__PURE__*/React.isValidElement(action)) {
92
- // eslint-disable-next-line react/no-array-index-key
93
- return /*#__PURE__*/_jsx(React.Fragment, {
94
- children: action
95
- }, index);
96
- }
97
- return /*#__PURE__*/React.cloneElement(action, _objectSpread({
98
- // eslint-disable-next-line react/no-array-index-key
99
- key: index
100
- }, action === null || action === void 0 ? void 0 : action.props));
101
- })
94
+ var nodes = actions.map(function (action, index) {
95
+ if (! /*#__PURE__*/React.isValidElement(action)) {
96
+ // eslint-disable-next-line react/no-array-index-key
97
+ return /*#__PURE__*/_jsx(React.Fragment, {
98
+ children: action
99
+ }, index);
100
+ }
101
+ return /*#__PURE__*/React.cloneElement(action, _objectSpread({
102
+ // eslint-disable-next-line react/no-array-index-key
103
+ key: index
104
+ }, action === null || action === void 0 ? void 0 : action.props));
105
+ });
106
+ return /*#__PURE__*/_jsx(OverflowActions, {
107
+ items: nodes,
108
+ prefixCls: prefixCls,
109
+ hashId: hashId,
110
+ maxVisible: maxVisibleActions
102
111
  });
103
- }, [actions, hashId, prefixCls]);
112
+ }, [actions, hashId, prefixCls, maxVisibleActions]);
104
113
  var hasRight = useMemo(function () {
105
114
  return hasTitle || actionDom || (settings === null || settings === void 0 ? void 0 : settings.length);
106
115
  }, [actionDom, hasTitle, settings === null || settings === void 0 ? void 0 : settings.length]);
107
116
  var hasLeft = useMemo(function () {
108
117
  return tooltip || title || subTitle;
109
118
  }, [hasTitle, subTitle, title, tooltip]);
119
+
120
+ // 三区结构(DESIGN.md §5.1):左=标题与写操作,中=选择摘要等视图内容,右=视图图标。位置固定。@author nokecy
110
121
  var leftTitleDom = useMemo(function () {
111
- // 保留左侧占位,并为操作组件提供当前列表独立的辅助内容位。@author nokecy
112
122
  return /*#__PURE__*/_jsxs("div", {
113
123
  className: "".concat(prefixCls, "-left ").concat(hashId),
114
124
  children: [hasTitle && /*#__PURE__*/_jsx("div", {
@@ -118,22 +128,20 @@ var ListToolBar = function ListToolBar(_ref) {
118
128
  label: title,
119
129
  subTitle: subTitle
120
130
  })
121
- }), /*#__PURE__*/_jsx("div", {
122
- ref: setLeftContainer,
123
- style: {
124
- display: 'contents'
125
- }
126
- })]
131
+ }), actionDom]
127
132
  });
128
- }, [hasLeft, hasRight, hasTitle, hashId, prefixCls, subTitle, title, tooltip]);
133
+ }, [actionDom, hasTitle, hashId, prefixCls, subTitle, title, tooltip]);
134
+ var centerDom = useMemo(function () {
135
+ return /*#__PURE__*/_jsx("div", {
136
+ ref: setLeftContainer,
137
+ className: "".concat(prefixCls, "-center ").concat(hashId)
138
+ });
139
+ }, [hashId, prefixCls]);
129
140
  var rightTitleDom = useMemo(function () {
130
- if (!hasRight) return null;
131
- return /*#__PURE__*/_jsxs("div", {
141
+ if (!(settings !== null && settings !== void 0 && settings.length)) return null;
142
+ return /*#__PURE__*/_jsx("div", {
132
143
  className: "".concat(prefixCls, "-right ").concat(hashId),
133
- style: {
134
- alignItems: 'center'
135
- },
136
- children: [actionDom, settings !== null && settings !== void 0 && settings.length ? /*#__PURE__*/_jsx("div", {
144
+ children: /*#__PURE__*/_jsx("div", {
137
145
  className: "".concat(prefixCls, "-setting-items ").concat(hashId),
138
146
  children: settings.map(function (setting, index) {
139
147
  var settingItem = getSettingItem(setting);
@@ -146,17 +154,17 @@ var ListToolBar = function ListToolBar(_ref) {
146
154
  }, index)
147
155
  );
148
156
  })
149
- }) : null]
157
+ })
150
158
  });
151
- }, [hasRight, prefixCls, hashId, hasTitle, actionDom, settings]);
159
+ }, [hashId, prefixCls, settings]);
152
160
  var titleNode = useMemo(function () {
153
161
  if (!hasRight && !hasLeft) return null;
154
162
  var containerClassName = classNames("".concat(prefixCls, "-container"), hashId, {});
155
163
  return /*#__PURE__*/_jsxs("div", {
156
164
  className: containerClassName,
157
- children: [leftTitleDom, rightTitleDom]
165
+ children: [leftTitleDom, centerDom, rightTitleDom]
158
166
  });
159
- }, [hasLeft, hasRight, hashId, leftTitleDom, prefixCls, rightTitleDom]);
167
+ }, [centerDom, hasLeft, hasRight, hashId, leftTitleDom, prefixCls, rightTitleDom]);
160
168
  return /*#__PURE__*/_jsx(ListToolbarLeftContext.Provider, {
161
169
  value: leftContainer,
162
170
  children: /*#__PURE__*/_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>;
@@ -1,12 +1,12 @@
1
1
  import React, { createContext, useContext } from 'react';
2
2
  import { createPortal } from 'react-dom';
3
3
 
4
- /** 当前列表工具栏的左侧内容容器;undefined 表示位于列表工具栏之外。@author nokecy */
4
+ /** 当前列表工具栏的中区容器(选择摘要等视图内容);undefined 表示位于列表工具栏之外。@author nokecy */
5
5
  import { Fragment as _Fragment } from "react/jsx-runtime";
6
6
  import { jsx as _jsx } from "react/jsx-runtime";
7
7
  export var ListToolbarLeftContext = /*#__PURE__*/createContext(undefined);
8
8
 
9
- /** 将选择摘要等辅助内容放到当前列表标题旁;独立使用时保留原位置。@author nokecy */
9
+ /** 将选择摘要等辅助内容放进工具栏中区;独立使用时保留原位置。@author nokecy */
10
10
  export var ListToolbarLeft = function ListToolbarLeft(_ref) {
11
11
  var children = _ref.children;
12
12
  var container = 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,41 @@
1
+ /**
2
+ * 工具栏「更多」溢出的纯计算(DESIGN.md §5.4):放不下的按钮收进「更多」,
3
+ * 不缩小、不换行、不横向滚动;先收排在后面的,排在最前面的至少保留一个。
4
+ * @author nokecy
5
+ */
6
+
7
+ /** 按钮之间的间距(px)。 */
8
+ export var OVERFLOW_GAP = 8;
9
+ /** 「更多」按钮未测量时的预估宽度(px)。 */
10
+ export var OVERFLOW_MORE_FALLBACK_WIDTH = 72;
11
+ var span = function span(widths, count, gap) {
12
+ return count <= 0 ? 0 : widths.slice(0, count).reduce(function (sum, width) {
13
+ return sum + width;
14
+ }, 0) + gap * (count - 1);
15
+ };
16
+
17
+ /**
18
+ * 返回外显的按钮个数,其余进「更多」。
19
+ * @param widths 每个按钮的自然宽度
20
+ * @param available 操作区可用宽度;<=0 视为尚未布局,只受 maxVisible 约束
21
+ * @param maxVisible 外显个数上限(可选)
22
+ */
23
+ export function computeVisibleCount(widths, available) {
24
+ var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
25
+ var _options$gap = options.gap,
26
+ gap = _options$gap === void 0 ? OVERFLOW_GAP : _options$gap,
27
+ _options$moreWidth = options.moreWidth,
28
+ moreWidth = _options$moreWidth === void 0 ? OVERFLOW_MORE_FALLBACK_WIDTH : _options$moreWidth,
29
+ maxVisible = options.maxVisible;
30
+ var total = widths.length;
31
+ if (total === 0) return 0;
32
+ var cap = maxVisible === undefined ? total : Math.max(1, Math.min(total, Math.floor(maxVisible)));
33
+ if (available <= 0) return cap;
34
+ if (cap === total && span(widths, total, gap) <= available) return total;
35
+
36
+ // 需要「更多」按钮:它自己也占一份宽度和一个间距
37
+ for (var count = Math.min(cap, total - 1); count >= 1; count--) {
38
+ if (span(widths, count, gap) + gap + moreWidth <= available) return count;
39
+ }
40
+ return 1;
41
+ }
@@ -12,7 +12,10 @@ var genProListStyle = function genProListStyle(token) {
12
12
  display: "flex",
13
13
  justifyContent: "space-between",
14
14
  alignItems: "center",
15
+ // 放不下时中区、右区换到下一行,而不是把左区挤到 0 宽后互相叠压
16
+ flexWrap: "wrap",
15
17
  minWidth: 0,
18
+ gap: token.marginSM,
16
19
  paddingBlock: 8,
17
20
  //token.padding,
18
21
  paddingInline: 0,
@@ -21,6 +24,7 @@ var genProListStyle = function genProListStyle(token) {
21
24
  }
22
25
  },
23
26
  "&-title": {
27
+ flex: "0 0 auto",
24
28
  display: "flex",
25
29
  alignItems: "center",
26
30
  justifyContent: "flex-start",
@@ -38,7 +42,8 @@ var genProListStyle = function genProListStyle(token) {
38
42
  marginInline: 4,
39
43
  color: token.colorIconHover,
40
44
  fontSize: token.fontSizeLG,
41
- cursor: "pointer",
45
+ display: "flex",
46
+ alignItems: "center",
42
47
  "> span": {
43
48
  display: "block",
44
49
  width: "100%",
@@ -48,43 +53,94 @@ var genProListStyle = function genProListStyle(token) {
48
53
  color: token.colorPrimary
49
54
  }
50
55
  },
56
+ // 视图图标是真 button:去掉浏览器默认样式,保留键盘焦点环。@author nokecy
57
+ "&-setting-item button": {
58
+ display: "inline-flex",
59
+ alignItems: "center",
60
+ justifyContent: "center",
61
+ minWidth: 28,
62
+ height: 28,
63
+ padding: 0,
64
+ border: 0,
65
+ background: "transparent",
66
+ color: "inherit",
67
+ fontSize: "inherit",
68
+ lineHeight: 1,
69
+ cursor: "pointer",
70
+ borderRadius: token.borderRadiusSM,
71
+ "&:hover": {
72
+ background: token.colorFillTertiary
73
+ },
74
+ "&:focus-visible": {
75
+ outline: "2px solid ".concat(token.colorPrimary),
76
+ outlineOffset: 1
77
+ }
78
+ },
79
+ // 左:标题 + 写操作;占满剩余宽度,操作区在其中按宽度把放不下的收进「更多」。
51
80
  "&-left": _defineProperty(_defineProperty({
52
81
  display: "flex",
53
82
  flexWrap: "nowrap",
54
83
  alignItems: "center",
55
- gap: token.marginXS,
84
+ gap: token.marginSM,
56
85
  justifyContent: "flex-start",
57
86
  minWidth: 0,
58
- flex: "0 1 auto"
87
+ flex: "1 1 240px"
59
88
  }, "".concat(token.antCls, "-tabs"), {
60
89
  width: "100%"
61
90
  }), "&-has-tabs", {
62
91
  overflow: "hidden"
63
92
  }),
93
+ // 中:选择摘要等视图内容,没有内容时不占位。
94
+ "&-center": {
95
+ display: "flex",
96
+ alignItems: "center",
97
+ gap: token.marginXS,
98
+ flex: "0 0 auto",
99
+ "&:empty": {
100
+ display: "none"
101
+ }
102
+ },
103
+ // 右:视图图标,位置固定。
64
104
  "&-right": {
65
- flex: "1 1 0",
66
- minWidth: 0,
105
+ flex: "0 0 auto",
106
+ marginInlineStart: "auto",
67
107
  display: "flex",
68
108
  flexWrap: "nowrap",
69
109
  alignItems: "center",
70
110
  justifyContent: "flex-end",
71
111
  gap: token.marginXS
72
112
  },
73
- // @author nokecy:按钮单行呈现,空间不足时只在操作区内滚动,不撑开页面。
113
+ // 操作区:放不下的按钮收进「更多」,不缩小、不换行、不横向滚动(§5.4)。
74
114
  "&-actions": {
115
+ position: "relative",
75
116
  display: "flex",
76
117
  alignItems: "center",
77
- gap: token.marginXS,
78
118
  minWidth: 0,
79
- flex: "0 1 auto",
80
- overflowX: "auto",
81
- overflowY: "hidden",
82
- scrollbarWidth: "none",
83
- whiteSpace: "nowrap",
84
- "&::-webkit-scrollbar": {
85
- display: "none"
86
- }
119
+ flex: "1 1 0",
120
+ overflow: "hidden",
121
+ whiteSpace: "nowrap"
122
+ },
123
+ "&-action-item, &-action-more": {
124
+ display: "flex",
125
+ alignItems: "center",
126
+ flex: "none"
87
127
  },
128
+ "&-more-panel": {
129
+ display: "flex",
130
+ flexDirection: "column",
131
+ gap: token.marginXXS,
132
+ minWidth: 140,
133
+ padding: token.paddingXXS,
134
+ background: token.colorBgElevated,
135
+ borderRadius: token.borderRadiusLG,
136
+ boxShadow: token.boxShadowSecondary
137
+ },
138
+ "&-more-item": _defineProperty({
139
+ display: "flex"
140
+ }, "> ".concat(token.antCls, "-btn, > *"), {
141
+ flex: 1,
142
+ justifyContent: "flex-start"
143
+ }),
88
144
  "&-extra-line": {
89
145
  marginBlockEnd: token.margin
90
146
  },
@@ -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
  }
@@ -231,6 +231,7 @@ export function resolveLegacySelectionOptions(input) {
231
231
  };
232
232
  }
233
233
  var isMultiRow = rowSelection.mode === 'multiRow';
234
+ var hasRowSelection = !!propsRowSelection;
234
235
  var fill = function fill(key, value) {
235
236
  if (value !== undefined && rowSelection[key] === undefined) rowSelection[key] = value;
236
237
  };
@@ -279,9 +280,16 @@ export function resolveLegacySelectionOptions(input) {
279
280
  }
280
281
  }
281
282
 
283
+ // 页面没声明 rowSelection 也没写旧复选框标志时不带选择列(需要时页面显式声明);
284
+ // 点击选行仍可用,只是不再凭空多出一列复选框。
285
+ if (!hasRowSelection && rowSelection.checkboxes === undefined) {
286
+ rowSelection.checkboxes = false;
287
+ }
288
+
282
289
  // ---- 单元格范围选择 ----
283
- // 历史行为:AgGridPlus 固定开启范围选择,调用方的 enableRangeSelection 取值不起作用,这里保持开启。
284
- var cellSelection = true;
290
+ // 默认关闭:开启后 Shift+↑↓ / Ctrl+A 在 AG Grid 里变成单元格范围选择,与列表键盘模型(DESIGN.md §7.9)冲突。
291
+ // 页面显式写 enableRangeSelection / 填充柄 / 范围柄,或直接传 cellSelection 时才开启。
292
+ var cellSelection = !!legacy.enableRangeSelection;
285
293
  var cell = {};
286
294
  if (legacy.suppressMultiRangeSelection) cell.suppressMultiRanges = true;
287
295
  if (legacy.enableFillHandle) {
@@ -299,7 +307,8 @@ export function resolveLegacySelectionOptions(input) {
299
307
  mode: 'range'
300
308
  };
301
309
  }
302
- if (Object.keys(cell).length > 0) cellSelection = cell;
310
+ // 只有范围选择开关或柄存在时才带上细项;单写 suppressMultiRangeSelection 不会把范围选择打开
311
+ if (Object.keys(cell).length > 0 && (cellSelection || cell.handle)) cellSelection = cell;
303
312
 
304
313
  // ---- 旧事件名 ----
305
314
  var eventHandlers = {};
@@ -0,0 +1,7 @@
1
+ /**
2
+ * 安装一次 console.error 过滤:只吞 AG Grid 的 license 星号框,其余错误保持原参数、
3
+ * 原调用对象输出,不改变业务日志。多个组件库副本/重复 import 只包一层。
4
+ */
5
+ export declare function installAgGridLicenseNotice(): void;
6
+ /** 注入正式 AG Grid Enterprise license key;注入后不再静默任何控制台输出。 */
7
+ export declare function setAgGridLicenseKey(licenseKey: string): void;