@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.
- package/dist/cjs/ConfirmPro/index.d.ts +12 -9
- package/dist/cjs/ConfirmPro/index.js +11 -34
- package/dist/cjs/ag-grid-plus/ag-gridPlus.js +425 -157
- package/dist/cjs/ag-grid-plus/context/gridContext.d.ts +12 -1
- package/dist/cjs/ag-grid-plus/context/queryFormContext.d.ts +2 -0
- package/dist/cjs/ag-grid-plus/context/useSchemeDataFlow.js +8 -0
- package/dist/cjs/ag-grid-plus/density.d.ts +25 -0
- package/dist/cjs/ag-grid-plus/density.js +52 -0
- package/dist/cjs/ag-grid-plus/index.d.ts +1 -0
- package/dist/cjs/ag-grid-plus/index.js +7 -0
- package/dist/cjs/ag-grid-plus/index.less +43 -0
- package/dist/cjs/ag-grid-plus/interface.d.ts +58 -1
- package/dist/cjs/ag-grid-plus/interface.js +1 -1
- package/dist/cjs/ag-grid-plus/queryForm/index.d.ts +11 -0
- package/dist/cjs/ag-grid-plus/queryForm/index.js +62 -10
- package/dist/cjs/ag-grid-plus/queryForm/queryForm.d.ts +10 -0
- package/dist/cjs/ag-grid-plus/queryForm/queryForm.js +63 -26
- package/dist/cjs/ag-grid-plus/queryForm/queryValues.d.ts +9 -0
- package/dist/cjs/ag-grid-plus/queryForm/queryValues.js +61 -0
- package/dist/cjs/ag-grid-plus/rowColors.d.ts +12 -0
- package/dist/cjs/ag-grid-plus/rowColors.js +58 -0
- package/dist/cjs/ag-grid-plus/setting/ColumnConfigTable.d.ts +5 -0
- package/dist/cjs/ag-grid-plus/setting/ColumnConfigTable.js +14 -5
- package/dist/cjs/ag-grid-plus/setting/ColumnSetting.js +108 -76
- package/dist/cjs/ag-grid-plus/setting/QuerySchemeManager.js +10 -9
- package/dist/cjs/ag-grid-plus/setting/autoColumnMemory.d.ts +37 -0
- package/dist/cjs/ag-grid-plus/setting/autoColumnMemory.js +206 -0
- package/dist/cjs/ag-grid-plus/setting/columnGroupUtils.d.ts +2 -0
- package/dist/cjs/ag-grid-plus/setting/columnGroupUtils.js +19 -1
- package/dist/cjs/ag-grid-plus/setting/index.js +5 -14
- package/dist/cjs/ag-grid-plus/settingItem/index.d.ts +11 -1
- package/dist/cjs/ag-grid-plus/settingItem/index.js +34 -12
- package/dist/cjs/ag-grid-plus/shared/EmptyIllustration.d.ts +16 -0
- package/dist/cjs/ag-grid-plus/shared/EmptyIllustration.js +87 -0
- package/dist/cjs/ag-grid-plus/shared/NoRowsOverlay.js +9 -1
- package/dist/cjs/ag-grid-plus/shared/SkeletonOverlay.d.ts +11 -0
- package/dist/cjs/ag-grid-plus/shared/SkeletonOverlay.js +40 -0
- package/dist/cjs/ag-grid-plus/shared/storage/schemeStorageAdapter.d.ts +1 -1
- package/dist/cjs/ag-grid-plus/theme.d.ts +7 -1
- package/dist/cjs/ag-grid-plus/theme.js +31 -6
- package/dist/cjs/ag-grid-plus/toolBar/OverflowActions.d.ts +16 -0
- package/dist/cjs/ag-grid-plus/toolBar/OverflowActions.js +128 -0
- package/dist/cjs/ag-grid-plus/toolBar/index.d.ts +3 -1
- package/dist/cjs/ag-grid-plus/toolBar/index.js +43 -35
- package/dist/cjs/ag-grid-plus/toolBar/leftContent.d.ts +2 -2
- package/dist/cjs/ag-grid-plus/toolBar/leftContent.js +2 -2
- package/dist/cjs/ag-grid-plus/toolBar/overflow.d.ts +20 -0
- package/dist/cjs/ag-grid-plus/toolBar/overflow.js +48 -0
- package/dist/cjs/ag-grid-plus/toolBar/style.js +71 -15
- package/dist/cjs/ag-grid-plus/types.d.ts +6 -0
- package/dist/cjs/ag-grid-plus/utils/agGridCompat.js +12 -3
- package/dist/cjs/ag-grid-plus/utils/agGridLicenseNotice.d.ts +7 -0
- package/dist/cjs/ag-grid-plus/utils/agGridLicenseNotice.js +105 -0
- package/dist/cjs/ag-grid-plus/utils/columnProcessors.d.ts +3 -0
- package/dist/cjs/ag-grid-plus/utils/columnProcessors.js +13 -2
- package/dist/cjs/ag-grid-plus/utils/constants.d.ts +3 -2
- package/dist/cjs/ag-grid-plus/utils/constants.js +3 -2
- package/dist/cjs/ag-grid-plus/utils/crossPageSelection.d.ts +21 -0
- package/dist/cjs/ag-grid-plus/utils/crossPageSelection.js +58 -0
- package/dist/cjs/ag-grid-plus/utils/emptyState.d.ts +2 -0
- package/dist/cjs/ag-grid-plus/utils/emptyState.js +9 -5
- package/dist/cjs/ag-grid-plus/utils/listKeyboard.d.ts +24 -0
- package/dist/cjs/ag-grid-plus/utils/listKeyboard.js +83 -0
- package/dist/cjs/ag-grid-plus/utils/pagination.d.ts +26 -0
- package/dist/cjs/ag-grid-plus/utils/pagination.js +69 -0
- package/dist/cjs/ag-grid-plus/utils/queryDispatch.d.ts +7 -0
- package/dist/cjs/ag-grid-plus/utils/queryDispatch.js +17 -0
- package/dist/cjs/ag-grid-plus/utils/statusPill.d.ts +25 -0
- package/dist/cjs/ag-grid-plus/utils/statusPill.js +196 -0
- package/dist/cjs/ag-grid-plus/utils/valueEnumColor.d.ts +6 -1
- package/dist/cjs/ag-grid-plus/utils/valueEnumColor.js +13 -9
- package/dist/cjs/ag-grid-plus/utils/valueFormat.d.ts +19 -0
- package/dist/cjs/ag-grid-plus/utils/valueFormat.js +73 -0
- package/dist/cjs/ag-grid-plus/utils.js +3 -2
- package/dist/cjs/array-table/arrayAddBtn.d.ts +1 -0
- package/dist/cjs/array-table/arrayAddBtn.js +2 -2
- package/dist/cjs/array-table/autoHeight.d.ts +18 -0
- package/dist/cjs/array-table/autoHeight.js +30 -0
- package/dist/cjs/array-table/batchRemove.d.ts +2 -2
- package/dist/cjs/array-table/cellEditorMarker.d.ts +18 -0
- package/dist/cjs/array-table/cellEditorMarker.js +92 -0
- package/dist/cjs/array-table/errorLocator.d.ts +29 -0
- package/dist/cjs/array-table/errorLocator.js +101 -0
- package/dist/cjs/array-table/hooks.d.ts +52 -4
- package/dist/cjs/array-table/hooks.js +251 -18
- package/dist/cjs/array-table/index.d.ts +6 -0
- package/dist/cjs/array-table/index.js +167 -23
- package/dist/cjs/array-table/interface.d.ts +22 -0
- package/dist/cjs/array-table/preview.js +39 -5
- package/dist/cjs/array-table/rowFeedback.d.ts +2 -2
- package/dist/cjs/array-table/rowFeedback.js +8 -8
- package/dist/cjs/array-table/summary.d.ts +25 -0
- package/dist/cjs/array-table/summary.js +70 -0
- package/dist/cjs/array-table/theme.d.ts +35 -5
- package/dist/cjs/array-table/theme.js +49 -12
- package/dist/cjs/array-table/title.d.ts +3 -0
- package/dist/cjs/array-table/title.js +29 -0
- package/dist/cjs/array-table/utils.d.ts +2 -1
- package/dist/cjs/array-table/utils.js +94 -23
- package/dist/cjs/card/pro-card/Card/useLegacyItems.d.ts +1 -1
- package/dist/cjs/dateCellEditor/DateCellEditor.d.ts +5 -0
- package/dist/cjs/dateCellEditor/DateCellEditor.js +42 -17
- package/dist/cjs/deleteConfirm/index.d.ts +14 -0
- package/dist/cjs/deleteConfirm/index.js +73 -12
- package/dist/cjs/dialogSelect/index.d.ts +19 -0
- package/dist/cjs/dialogSelect/index.js +189 -15
- package/dist/cjs/dialogSelect/index.less +18 -0
- package/dist/cjs/documentPage/documentPage.d.ts +6 -3
- package/dist/cjs/documentPage/documentPage.js +23 -8
- package/dist/cjs/documentPage/index.d.ts +2 -0
- package/dist/cjs/documentPage/index.js +19 -0
- package/dist/cjs/documentPage/leaveGuard.d.ts +31 -0
- package/dist/cjs/documentPage/leaveGuard.js +91 -0
- package/dist/cjs/draggableModal/index.d.ts +24 -1
- package/dist/cjs/draggableModal/index.js +36 -6
- package/dist/cjs/fullScreenAlert/index.less +10 -10
- package/dist/cjs/index.d.ts +3 -0
- package/dist/cjs/index.js +22 -0
- package/dist/cjs/readPretty/arrayTable.js +5 -1
- package/dist/cjs/scanCollect/ScanFeedbackInput.d.ts +26 -0
- package/dist/cjs/scanCollect/ScanFeedbackInput.js +113 -0
- package/dist/cjs/scanCollect/index.d.ts +4 -0
- package/dist/cjs/scanCollect/index.js +14 -0
- package/dist/cjs/scanCollect/scanSound.d.ts +15 -0
- package/dist/cjs/scanCollect/scanSound.js +91 -0
- package/dist/esm/ConfirmPro/index.d.ts +12 -9
- package/dist/esm/ConfirmPro/index.js +11 -34
- package/dist/esm/ag-grid-plus/ag-gridPlus.js +426 -157
- package/dist/esm/ag-grid-plus/context/gridContext.d.ts +12 -1
- package/dist/esm/ag-grid-plus/context/queryFormContext.d.ts +2 -0
- package/dist/esm/ag-grid-plus/context/useSchemeDataFlow.js +8 -0
- package/dist/esm/ag-grid-plus/density.d.ts +25 -0
- package/dist/esm/ag-grid-plus/density.js +45 -0
- package/dist/esm/ag-grid-plus/index.d.ts +1 -0
- package/dist/esm/ag-grid-plus/index.js +3 -0
- package/dist/esm/ag-grid-plus/index.less +43 -0
- package/dist/esm/ag-grid-plus/interface.d.ts +58 -1
- package/dist/esm/ag-grid-plus/interface.js +2 -0
- package/dist/esm/ag-grid-plus/queryForm/index.d.ts +11 -0
- package/dist/esm/ag-grid-plus/queryForm/index.js +62 -10
- package/dist/esm/ag-grid-plus/queryForm/queryForm.d.ts +10 -0
- package/dist/esm/ag-grid-plus/queryForm/queryForm.js +64 -26
- package/dist/esm/ag-grid-plus/queryForm/queryValues.d.ts +9 -0
- package/dist/esm/ag-grid-plus/queryForm/queryValues.js +54 -0
- package/dist/esm/ag-grid-plus/rowColors.d.ts +12 -0
- package/dist/esm/ag-grid-plus/rowColors.js +50 -0
- package/dist/esm/ag-grid-plus/setting/ColumnConfigTable.d.ts +5 -0
- package/dist/esm/ag-grid-plus/setting/ColumnConfigTable.js +14 -5
- package/dist/esm/ag-grid-plus/setting/ColumnSetting.js +110 -78
- package/dist/esm/ag-grid-plus/setting/QuerySchemeManager.js +10 -9
- package/dist/esm/ag-grid-plus/setting/autoColumnMemory.d.ts +37 -0
- package/dist/esm/ag-grid-plus/setting/autoColumnMemory.js +198 -0
- package/dist/esm/ag-grid-plus/setting/columnGroupUtils.d.ts +2 -0
- package/dist/esm/ag-grid-plus/setting/columnGroupUtils.js +18 -1
- package/dist/esm/ag-grid-plus/setting/index.js +6 -15
- package/dist/esm/ag-grid-plus/settingItem/index.d.ts +11 -1
- package/dist/esm/ag-grid-plus/settingItem/index.js +35 -13
- package/dist/esm/ag-grid-plus/shared/EmptyIllustration.d.ts +16 -0
- package/dist/esm/ag-grid-plus/shared/EmptyIllustration.js +82 -0
- package/dist/esm/ag-grid-plus/shared/NoRowsOverlay.js +9 -1
- package/dist/esm/ag-grid-plus/shared/SkeletonOverlay.d.ts +11 -0
- package/dist/esm/ag-grid-plus/shared/SkeletonOverlay.js +34 -0
- package/dist/esm/ag-grid-plus/shared/storage/schemeStorageAdapter.d.ts +1 -1
- package/dist/esm/ag-grid-plus/theme.d.ts +7 -1
- package/dist/esm/ag-grid-plus/theme.js +31 -6
- package/dist/esm/ag-grid-plus/toolBar/OverflowActions.d.ts +16 -0
- package/dist/esm/ag-grid-plus/toolBar/OverflowActions.js +120 -0
- package/dist/esm/ag-grid-plus/toolBar/index.d.ts +3 -1
- package/dist/esm/ag-grid-plus/toolBar/index.js +43 -35
- package/dist/esm/ag-grid-plus/toolBar/leftContent.d.ts +2 -2
- package/dist/esm/ag-grid-plus/toolBar/leftContent.js +2 -2
- package/dist/esm/ag-grid-plus/toolBar/overflow.d.ts +20 -0
- package/dist/esm/ag-grid-plus/toolBar/overflow.js +41 -0
- package/dist/esm/ag-grid-plus/toolBar/style.js +71 -15
- package/dist/esm/ag-grid-plus/types.d.ts +6 -0
- package/dist/esm/ag-grid-plus/utils/agGridCompat.js +12 -3
- package/dist/esm/ag-grid-plus/utils/agGridLicenseNotice.d.ts +7 -0
- package/dist/esm/ag-grid-plus/utils/agGridLicenseNotice.js +97 -0
- package/dist/esm/ag-grid-plus/utils/columnProcessors.d.ts +3 -0
- package/dist/esm/ag-grid-plus/utils/columnProcessors.js +14 -3
- package/dist/esm/ag-grid-plus/utils/constants.d.ts +3 -2
- package/dist/esm/ag-grid-plus/utils/constants.js +3 -2
- package/dist/esm/ag-grid-plus/utils/crossPageSelection.d.ts +21 -0
- package/dist/esm/ag-grid-plus/utils/crossPageSelection.js +52 -0
- package/dist/esm/ag-grid-plus/utils/emptyState.d.ts +2 -0
- package/dist/esm/ag-grid-plus/utils/emptyState.js +9 -5
- package/dist/esm/ag-grid-plus/utils/listKeyboard.d.ts +24 -0
- package/dist/esm/ag-grid-plus/utils/listKeyboard.js +77 -0
- package/dist/esm/ag-grid-plus/utils/pagination.d.ts +26 -0
- package/dist/esm/ag-grid-plus/utils/pagination.js +60 -0
- package/dist/esm/ag-grid-plus/utils/queryDispatch.d.ts +7 -0
- package/dist/esm/ag-grid-plus/utils/queryDispatch.js +11 -0
- package/dist/esm/ag-grid-plus/utils/statusPill.d.ts +25 -0
- package/dist/esm/ag-grid-plus/utils/statusPill.js +192 -0
- package/dist/esm/ag-grid-plus/utils/valueEnumColor.d.ts +6 -1
- package/dist/esm/ag-grid-plus/utils/valueEnumColor.js +12 -8
- package/dist/esm/ag-grid-plus/utils/valueFormat.d.ts +19 -0
- package/dist/esm/ag-grid-plus/utils/valueFormat.js +63 -0
- package/dist/esm/ag-grid-plus/utils.js +3 -2
- package/dist/esm/array-table/arrayAddBtn.d.ts +1 -0
- package/dist/esm/array-table/arrayAddBtn.js +1 -1
- package/dist/esm/array-table/autoHeight.d.ts +18 -0
- package/dist/esm/array-table/autoHeight.js +25 -0
- package/dist/esm/array-table/batchRemove.d.ts +2 -2
- package/dist/esm/array-table/cellEditorMarker.d.ts +18 -0
- package/dist/esm/array-table/cellEditorMarker.js +84 -0
- package/dist/esm/array-table/errorLocator.d.ts +29 -0
- package/dist/esm/array-table/errorLocator.js +95 -0
- package/dist/esm/array-table/hooks.d.ts +52 -4
- package/dist/esm/array-table/hooks.js +251 -17
- package/dist/esm/array-table/index.d.ts +6 -0
- package/dist/esm/array-table/index.js +170 -25
- package/dist/esm/array-table/interface.d.ts +22 -0
- package/dist/esm/array-table/preview.js +43 -7
- package/dist/esm/array-table/rowFeedback.d.ts +2 -2
- package/dist/esm/array-table/rowFeedback.js +8 -8
- package/dist/esm/array-table/summary.d.ts +25 -0
- package/dist/esm/array-table/summary.js +66 -0
- package/dist/esm/array-table/theme.d.ts +35 -5
- package/dist/esm/array-table/theme.js +47 -12
- package/dist/esm/array-table/title.d.ts +3 -0
- package/dist/esm/array-table/title.js +24 -0
- package/dist/esm/array-table/utils.d.ts +2 -1
- package/dist/esm/array-table/utils.js +93 -22
- package/dist/esm/card/pro-card/Card/useLegacyItems.d.ts +1 -1
- package/dist/esm/dateCellEditor/DateCellEditor.d.ts +5 -0
- package/dist/esm/dateCellEditor/DateCellEditor.js +42 -17
- package/dist/esm/deleteConfirm/index.d.ts +14 -0
- package/dist/esm/deleteConfirm/index.js +72 -12
- package/dist/esm/dialogSelect/index.d.ts +19 -0
- package/dist/esm/dialogSelect/index.js +190 -16
- package/dist/esm/dialogSelect/index.less +18 -0
- package/dist/esm/documentPage/documentPage.d.ts +6 -3
- package/dist/esm/documentPage/documentPage.js +23 -8
- package/dist/esm/documentPage/index.d.ts +2 -0
- package/dist/esm/documentPage/index.js +1 -0
- package/dist/esm/documentPage/leaveGuard.d.ts +31 -0
- package/dist/esm/documentPage/leaveGuard.js +86 -0
- package/dist/esm/draggableModal/index.d.ts +24 -1
- package/dist/esm/draggableModal/index.js +35 -5
- package/dist/esm/fullScreenAlert/index.less +10 -10
- package/dist/esm/index.d.ts +3 -0
- package/dist/esm/index.js +2 -0
- package/dist/esm/readPretty/arrayTable.js +6 -2
- package/dist/esm/scanCollect/ScanFeedbackInput.d.ts +26 -0
- package/dist/esm/scanCollect/ScanFeedbackInput.js +107 -0
- package/dist/esm/scanCollect/index.d.ts +4 -0
- package/dist/esm/scanCollect/index.js +2 -0
- package/dist/esm/scanCollect/scanSound.d.ts +15 -0
- package/dist/esm/scanCollect/scanSound.js +84 -0
- 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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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("
|
|
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
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
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
|
-
}),
|
|
122
|
-
ref: setLeftContainer,
|
|
123
|
-
style: {
|
|
124
|
-
display: 'contents'
|
|
125
|
-
}
|
|
126
|
-
})]
|
|
131
|
+
}), actionDom]
|
|
127
132
|
});
|
|
128
|
-
}, [
|
|
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 (!
|
|
131
|
-
return /*#__PURE__*/
|
|
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
|
-
|
|
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
|
-
})
|
|
157
|
+
})
|
|
150
158
|
});
|
|
151
|
-
}, [
|
|
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
|
-
/**
|
|
2
|
+
/** 当前列表工具栏的中区容器(选择摘要等视图内容);undefined 表示位于列表工具栏之外。@author nokecy */
|
|
3
3
|
export declare const ListToolbarLeftContext: React.Context<HTMLElement | null | undefined>;
|
|
4
|
-
/**
|
|
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
|
-
/**
|
|
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
|
-
/**
|
|
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
|
-
|
|
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.
|
|
84
|
+
gap: token.marginSM,
|
|
56
85
|
justifyContent: "flex-start",
|
|
57
86
|
minWidth: 0,
|
|
58
|
-
flex: "
|
|
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: "
|
|
66
|
-
|
|
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
|
-
//
|
|
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: "
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
"
|
|
85
|
-
|
|
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
|
-
//
|
|
284
|
-
|
|
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
|
-
|
|
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;
|