@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
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* AG Grid Enterprise 试用提示收敛(组件库内统一处理,宿主不必再各自 patch node_modules)。
|
|
3
|
+
*
|
|
4
|
+
* ag-gridPlus.tsx 在模块顶层注册 AllEnterpriseModule,但组件库不内置 license key——
|
|
5
|
+
* 授权由宿主决定。未注入 key 时,AG Grid 会在每个表格实例创建时打印一整块星号框
|
|
6
|
+
* ("AG Grid Enterprise License / License Key Not Found"),并在表格右下角渲染
|
|
7
|
+
* .ag-watermark(5 秒后淡出)。
|
|
8
|
+
*
|
|
9
|
+
* 这里只在没有正式 key 时静默这块提示,水印由同目录 index.less 关闭。宿主拿到正式
|
|
10
|
+
* 授权后调用 setAgGridLicenseKey(),静默立即停用,AG Grid 恢复常规行为。
|
|
11
|
+
*/
|
|
12
|
+
import { LicenseManager } from 'ag-grid-enterprise';
|
|
13
|
+
var STATE_KEY = '__qcUiAgGridLicenseNotice__';
|
|
14
|
+
/** license 星号框同一批输出允许的最长间隔(毫秒):块内分隔行可能异步到达。 */
|
|
15
|
+
var BANNER_WINDOW_MS = 1000;
|
|
16
|
+
|
|
17
|
+
/** 星号框正文行:`**** AG Grid Enterprise License ****` / `* ... trial. *`。 */
|
|
18
|
+
function isLicenseLine(text) {
|
|
19
|
+
return /^\*+.*\*+$/.test(text) && /license|trial|watermark|ag-grid/i.test(text);
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
/** 星号框分隔行(整行都是星号)。 */
|
|
23
|
+
function isBannerLine(text) {
|
|
24
|
+
return /^\*+$/.test(text);
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
/**
|
|
28
|
+
* 安装一次 console.error 过滤:只吞 AG Grid 的 license 星号框,其余错误保持原参数、
|
|
29
|
+
* 原调用对象输出,不改变业务日志。多个组件库副本/重复 import 只包一层。
|
|
30
|
+
*/
|
|
31
|
+
export function installAgGridLicenseNotice() {
|
|
32
|
+
if (typeof console === 'undefined') return;
|
|
33
|
+
var host = globalThis;
|
|
34
|
+
if (host[STATE_KEY]) return;
|
|
35
|
+
var originalError = console.error;
|
|
36
|
+
var state = {
|
|
37
|
+
originalError: originalError,
|
|
38
|
+
licensed: false
|
|
39
|
+
};
|
|
40
|
+
host[STATE_KEY] = state;
|
|
41
|
+
|
|
42
|
+
// 星号框第一行是纯星号、出现在关键词行之前:先暂存,确认是 license 块后丢弃;
|
|
43
|
+
// 若是别的来源打印的星号行,则在当前同步任务结束前原样补输出。
|
|
44
|
+
var pending = [];
|
|
45
|
+
var flushScheduled = false;
|
|
46
|
+
var lastLicenseAt = 0;
|
|
47
|
+
var flush = function flush() {
|
|
48
|
+
var lines = pending;
|
|
49
|
+
pending = [];
|
|
50
|
+
for (var _i = 0, _lines = lines; _i < _lines.length; _i++) {
|
|
51
|
+
var args = _lines[_i];
|
|
52
|
+
originalError.apply(console, args);
|
|
53
|
+
}
|
|
54
|
+
};
|
|
55
|
+
var scheduleFlush = function scheduleFlush() {
|
|
56
|
+
if (flushScheduled) return;
|
|
57
|
+
flushScheduled = true;
|
|
58
|
+
queueMicrotask(function () {
|
|
59
|
+
flushScheduled = false;
|
|
60
|
+
flush();
|
|
61
|
+
});
|
|
62
|
+
};
|
|
63
|
+
console.error = function () {
|
|
64
|
+
for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
|
|
65
|
+
args[_key] = arguments[_key];
|
|
66
|
+
}
|
|
67
|
+
if (state.licensed) {
|
|
68
|
+
flush();
|
|
69
|
+
originalError.apply(console, args);
|
|
70
|
+
return;
|
|
71
|
+
}
|
|
72
|
+
var text = args.length === 1 && typeof args[0] === 'string' ? args[0].trim() : '';
|
|
73
|
+
if (isLicenseLine(text)) {
|
|
74
|
+
lastLicenseAt = Date.now();
|
|
75
|
+
pending = [];
|
|
76
|
+
return;
|
|
77
|
+
}
|
|
78
|
+
if (isBannerLine(text)) {
|
|
79
|
+
if (Date.now() - lastLicenseAt < BANNER_WINDOW_MS) return;
|
|
80
|
+
pending.push(args);
|
|
81
|
+
scheduleFlush();
|
|
82
|
+
return;
|
|
83
|
+
}
|
|
84
|
+
flush();
|
|
85
|
+
originalError.apply(console, args);
|
|
86
|
+
};
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
/** 注入正式 AG Grid Enterprise license key;注入后不再静默任何控制台输出。 */
|
|
90
|
+
export function setAgGridLicenseKey(licenseKey) {
|
|
91
|
+
var key = licenseKey === null || licenseKey === void 0 ? void 0 : licenseKey.trim();
|
|
92
|
+
if (!key) return;
|
|
93
|
+
LicenseManager.setLicenseKey(key);
|
|
94
|
+
var host = globalThis;
|
|
95
|
+
var state = host[STATE_KEY];
|
|
96
|
+
if (state) state.licensed = true;
|
|
97
|
+
}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { ColDef, ICellRendererParams } from 'ag-grid-community';
|
|
2
|
+
import { type StatusKey } from './statusPill';
|
|
2
3
|
/**
|
|
3
4
|
* 扩展的列状态接口
|
|
4
5
|
*/
|
|
@@ -24,6 +25,8 @@ export interface ValueEnumItem {
|
|
|
24
25
|
value: any;
|
|
25
26
|
label: string;
|
|
26
27
|
color?: string;
|
|
28
|
+
/** 状态语义,配置后渲染为状态胶囊,优先于 color */
|
|
29
|
+
status?: StatusKey;
|
|
27
30
|
default?: boolean;
|
|
28
31
|
}
|
|
29
32
|
/**
|
|
@@ -10,7 +10,8 @@ import { Typography } from 'antd';
|
|
|
10
10
|
import { Select } from '@nokecy/formily-antd';
|
|
11
11
|
import { isArray } from 'lodash';
|
|
12
12
|
import { DEFAULT_SEARCH_SORT_ORDER } from "./constants";
|
|
13
|
-
import { toGridTextColor } from "./valueEnumColor";
|
|
13
|
+
import { isDarkSurface, toGridTextColor } from "./valueEnumColor";
|
|
14
|
+
import { isStatusKey, StatusPill } from "./statusPill";
|
|
14
15
|
import { findOptionByValue } from "../../shared/optionValue";
|
|
15
16
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
16
17
|
var Text = Typography.Text;
|
|
@@ -138,7 +139,7 @@ export function mergeInferredColumnType(column, dataType) {
|
|
|
138
139
|
* @author nokecy
|
|
139
140
|
*/
|
|
140
141
|
export function processEnumColumn(col, dataType, background) {
|
|
141
|
-
var _defaultItems$0$value, _defaultItems
|
|
142
|
+
var _defaultItems$0$value, _defaultItems$, _col$cellRenderer;
|
|
142
143
|
var valueEnum = col === null || col === void 0 ? void 0 : col.valueEnum;
|
|
143
144
|
if (!valueEnum || !Array.isArray(valueEnum)) {
|
|
144
145
|
return col;
|
|
@@ -162,11 +163,21 @@ export function processEnumColumn(col, dataType, background) {
|
|
|
162
163
|
};
|
|
163
164
|
var fallbackRenderer = col.enumFallbackRenderer;
|
|
164
165
|
return _objectSpread(_objectSpread(_objectSpread({}, toColumnType(dataType)), col), {}, {
|
|
165
|
-
|
|
166
|
+
// 页面显式传了 cellRenderer 就用页面的,valueEnum 仍负责筛选与查询表单
|
|
167
|
+
cellRenderer: (_col$cellRenderer = col.cellRenderer) !== null && _col$cellRenderer !== void 0 ? _col$cellRenderer : function (params) {
|
|
166
168
|
var match = findOptionByValue(valueEnum, params.value, function (item) {
|
|
167
169
|
return item.value;
|
|
168
170
|
});
|
|
169
171
|
if (match) {
|
|
172
|
+
// 配了 status 的枚举项走状态胶囊(形状 + 文字 + 底色),不再看 color
|
|
173
|
+
if (isStatusKey(match.status)) {
|
|
174
|
+
// 传了 background(valueEnumContrast)且是深色表面时用深色版
|
|
175
|
+
return /*#__PURE__*/_jsx(StatusPill, {
|
|
176
|
+
status: match.status,
|
|
177
|
+
dark: isDarkSurface(background),
|
|
178
|
+
children: match.label
|
|
179
|
+
});
|
|
180
|
+
}
|
|
170
181
|
// 没配颜色的枚举项曾经默认成 '#ffffff'——白底白字,那一列直接看不见。
|
|
171
182
|
// 消费端为此在 global.less 里加了一整套 [style*="color: white"] → 紫色 的覆盖来擦屁股,
|
|
172
183
|
// 顺带把别的颜色也一起改了。这里改成 inherit,跟着单元格的正文色走。@author nokecy
|
|
@@ -22,9 +22,10 @@ export declare const DEFAULT_SEARCH_SORT_ORDER = 999;
|
|
|
22
22
|
*/
|
|
23
23
|
export declare const DEFAULT_PAGE_SIZE_OPTIONS: number[];
|
|
24
24
|
/**
|
|
25
|
-
*
|
|
25
|
+
* 默认分页大小:DESIGN.md §7.3 规定每页默认 100(全量渲染的表格最大每页 100)。
|
|
26
|
+
* 页面可用 pageSize 覆盖。
|
|
26
27
|
*/
|
|
27
|
-
export declare const DEFAULT_PAGE_SIZE =
|
|
28
|
+
export declare const DEFAULT_PAGE_SIZE = 100;
|
|
28
29
|
/**
|
|
29
30
|
* 隐藏分页时的默认分页大小
|
|
30
31
|
*/
|
|
@@ -26,9 +26,10 @@ export var DEFAULT_SEARCH_SORT_ORDER = 999;
|
|
|
26
26
|
export var DEFAULT_PAGE_SIZE_OPTIONS = [10, 20, 50, 100, 200, 500, 1000];
|
|
27
27
|
|
|
28
28
|
/**
|
|
29
|
-
*
|
|
29
|
+
* 默认分页大小:DESIGN.md §7.3 规定每页默认 100(全量渲染的表格最大每页 100)。
|
|
30
|
+
* 页面可用 pageSize 覆盖。
|
|
30
31
|
*/
|
|
31
|
-
export var DEFAULT_PAGE_SIZE =
|
|
32
|
+
export var DEFAULT_PAGE_SIZE = 100;
|
|
32
33
|
|
|
33
34
|
/**
|
|
34
35
|
* 隐藏分页时的默认分页大小
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 跨页勾选(DESIGN.md §7.4):服务端分页时翻页会换掉整批 rowData,AG Grid 的选中随之丢失。
|
|
3
|
+
* 这里按行 ID 记住所有已勾选的行,翻页回来后把当前页里命中的行重新勾上。
|
|
4
|
+
* 纯逻辑,不依赖 React,便于单测。
|
|
5
|
+
* @author nokecy
|
|
6
|
+
*/
|
|
7
|
+
import type { GridApi, IRowNode } from 'ag-grid-community';
|
|
8
|
+
export interface CrossPageSelection<T = any> {
|
|
9
|
+
/** 行勾选状态变化时调用(来自 rowSelected 事件) */
|
|
10
|
+
track: (node: IRowNode<T>) => void;
|
|
11
|
+
/** 换页后把当前页里命中的行重新勾上,并用最新数据刷新记录;返回是否有改动 */
|
|
12
|
+
restore: (api: GridApi) => boolean;
|
|
13
|
+
/** 所有已勾选的行(含不在当前页的) */
|
|
14
|
+
rows: () => T[];
|
|
15
|
+
size: () => number;
|
|
16
|
+
/** 清空记录(不动网格,网格由调用方 deselectAll) */
|
|
17
|
+
clear: () => void;
|
|
18
|
+
/** 恢复勾选期间产生的事件不应改写记录 */
|
|
19
|
+
isRestoring: () => boolean;
|
|
20
|
+
}
|
|
21
|
+
export declare function createCrossPageSelection<T = any>(getId: (data: T) => string): CrossPageSelection<T>;
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 跨页勾选(DESIGN.md §7.4):服务端分页时翻页会换掉整批 rowData,AG Grid 的选中随之丢失。
|
|
3
|
+
* 这里按行 ID 记住所有已勾选的行,翻页回来后把当前页里命中的行重新勾上。
|
|
4
|
+
* 纯逻辑,不依赖 React,便于单测。
|
|
5
|
+
* @author nokecy
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
export function createCrossPageSelection(getId) {
|
|
9
|
+
var picked = new Map();
|
|
10
|
+
var restoring = false;
|
|
11
|
+
return {
|
|
12
|
+
track: function track(node) {
|
|
13
|
+
if (restoring || !node.data) return;
|
|
14
|
+
var id = getId(node.data);
|
|
15
|
+
if (!id) return;
|
|
16
|
+
if (node.isSelected()) picked.set(id, node.data);else picked.delete(id);
|
|
17
|
+
},
|
|
18
|
+
restore: function restore(api) {
|
|
19
|
+
if (picked.size === 0) return false;
|
|
20
|
+
var changed = false;
|
|
21
|
+
restoring = true;
|
|
22
|
+
try {
|
|
23
|
+
api.forEachNode(function (node) {
|
|
24
|
+
if (!node.data) return;
|
|
25
|
+
var id = getId(node.data);
|
|
26
|
+
if (!picked.has(id)) return;
|
|
27
|
+
// 记录里的行数据换成最新一页的(审核等操作后列表刷新,业务拿到的应是新数据)
|
|
28
|
+
picked.set(id, node.data);
|
|
29
|
+
if (!node.isSelected()) {
|
|
30
|
+
node.setSelected(true, false, 'api');
|
|
31
|
+
changed = true;
|
|
32
|
+
}
|
|
33
|
+
});
|
|
34
|
+
} finally {
|
|
35
|
+
restoring = false;
|
|
36
|
+
}
|
|
37
|
+
return changed;
|
|
38
|
+
},
|
|
39
|
+
rows: function rows() {
|
|
40
|
+
return Array.from(picked.values());
|
|
41
|
+
},
|
|
42
|
+
size: function size() {
|
|
43
|
+
return picked.size;
|
|
44
|
+
},
|
|
45
|
+
clear: function clear() {
|
|
46
|
+
return picked.clear();
|
|
47
|
+
},
|
|
48
|
+
isRestoring: function isRestoring() {
|
|
49
|
+
return restoring;
|
|
50
|
+
}
|
|
51
|
+
};
|
|
52
|
+
}
|
|
@@ -23,9 +23,10 @@ export var DEFAULT_EMPTY_TEXTS = {
|
|
|
23
23
|
// 不写方位:重试按钮就渲染在这句话正下方(见 shared/NoRowsOverlay)。
|
|
24
24
|
// 原文写的是「请点上方「重试」」,方位指错了。@author nokecy
|
|
25
25
|
error: '数据加载失败,可点下方按钮重试',
|
|
26
|
-
noPermission: '
|
|
27
|
-
|
|
28
|
-
|
|
26
|
+
noPermission: '没有查看权限,请联系管理员开通',
|
|
27
|
+
// 「试试调整筛选条件」只能出现在这一支(DESIGN.md §10.1)
|
|
28
|
+
noResult: '没有符合条件的结果,试试调整筛选条件',
|
|
29
|
+
noData: '还没有数据'
|
|
29
30
|
};
|
|
30
31
|
var isBlank = function isBlank(value) {
|
|
31
32
|
if (value === undefined || value === null || value === '') return true;
|
|
@@ -66,10 +67,13 @@ export function resolveEmptyBranch(state) {
|
|
|
66
67
|
* `override` 是调用方原来就在用的 `overlayNoRowsTemplateText`,保持最高优先级,向后兼容。
|
|
67
68
|
*/
|
|
68
69
|
export function resolveEmptyText(state) {
|
|
69
|
-
var _state$texts
|
|
70
|
+
var _state$texts;
|
|
70
71
|
if (state.override) return state.override;
|
|
71
72
|
var branch = resolveEmptyBranch(state);
|
|
72
|
-
|
|
73
|
+
var custom = (_state$texts = state.texts) === null || _state$texts === void 0 ? void 0 : _state$texts[branch];
|
|
74
|
+
if (custom) return custom;
|
|
75
|
+
if (branch === 'error' && state.reason) return "\u52A0\u8F7D\u5931\u8D25\uFF0C\u539F\u56E0\uFF1A".concat(state.reason);
|
|
76
|
+
return DEFAULT_EMPTY_TEXTS[branch];
|
|
73
77
|
}
|
|
74
78
|
|
|
75
79
|
/**
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 列表页表格区键盘模型(DESIGN.md §7.9)里需要基座接管的键位。
|
|
3
|
+
* ↑↓、Home/End、PageUp/PageDown、Space 沿用 AG Grid 自带行为,这里只补它没有的:
|
|
4
|
+
*
|
|
5
|
+
* - Alt+Shift+↑/↓:从活动行起连续勾选 / 取消(不用 Shift+↑↓,那是单元格范围选择)
|
|
6
|
+
* - Alt+A:全选当前页(不用 Ctrl/⌘+A,同上)
|
|
7
|
+
* - Ctrl/⌘+←/→:上一页 / 下一页
|
|
8
|
+
* - Esc:先清除勾选,再取消活动行
|
|
9
|
+
*
|
|
10
|
+
* 焦点在输入框、下拉、文本域内时一律不拦截。纯函数,便于单测。
|
|
11
|
+
* @author nokecy
|
|
12
|
+
*/
|
|
13
|
+
import type { GridApi } from 'ag-grid-community';
|
|
14
|
+
export interface ListKeyboardOptions {
|
|
15
|
+
getApi: () => GridApi | undefined;
|
|
16
|
+
/** 翻页:-1 上一页,1 下一页;不传则不处理 Ctrl/⌘+←/→ */
|
|
17
|
+
onPage?: (delta: -1 | 1) => void;
|
|
18
|
+
}
|
|
19
|
+
type KeyLike = Pick<KeyboardEvent, 'key' | 'code' | 'altKey' | 'shiftKey' | 'ctrlKey' | 'metaKey' | 'preventDefault'> & {
|
|
20
|
+
target: EventTarget | null;
|
|
21
|
+
};
|
|
22
|
+
/** 返回 true 表示已处理(已 preventDefault) */
|
|
23
|
+
export declare function createListKeyHandler({ getApi, onPage }: ListKeyboardOptions): (e: KeyLike) => boolean;
|
|
24
|
+
export {};
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
|
|
2
|
+
/**
|
|
3
|
+
* 列表页表格区键盘模型(DESIGN.md §7.9)里需要基座接管的键位。
|
|
4
|
+
* ↑↓、Home/End、PageUp/PageDown、Space 沿用 AG Grid 自带行为,这里只补它没有的:
|
|
5
|
+
*
|
|
6
|
+
* - Alt+Shift+↑/↓:从活动行起连续勾选 / 取消(不用 Shift+↑↓,那是单元格范围选择)
|
|
7
|
+
* - Alt+A:全选当前页(不用 Ctrl/⌘+A,同上)
|
|
8
|
+
* - Ctrl/⌘+←/→:上一页 / 下一页
|
|
9
|
+
* - Esc:先清除勾选,再取消活动行
|
|
10
|
+
*
|
|
11
|
+
* 焦点在输入框、下拉、文本域内时一律不拦截。纯函数,便于单测。
|
|
12
|
+
* @author nokecy
|
|
13
|
+
*/
|
|
14
|
+
|
|
15
|
+
var EDITABLE = 'input, textarea, select, [contenteditable=""], [contenteditable="true"], .ag-cell-inline-editing';
|
|
16
|
+
var isEditableTarget = function isEditableTarget(target) {
|
|
17
|
+
return !!target && typeof target.closest === 'function' && !!target.closest(EDITABLE);
|
|
18
|
+
};
|
|
19
|
+
var isMultiRow = function isMultiRow(api) {
|
|
20
|
+
var selection = api.getGridOption('rowSelection');
|
|
21
|
+
return !!selection && _typeof(selection) === 'object' && selection.mode === 'multiRow';
|
|
22
|
+
};
|
|
23
|
+
|
|
24
|
+
/** 返回 true 表示已处理(已 preventDefault) */
|
|
25
|
+
export function createListKeyHandler(_ref) {
|
|
26
|
+
var getApi = _ref.getApi,
|
|
27
|
+
onPage = _ref.onPage;
|
|
28
|
+
return function (e) {
|
|
29
|
+
var _api$isDestroyed;
|
|
30
|
+
var api = getApi();
|
|
31
|
+
if (!api || (_api$isDestroyed = api.isDestroyed) !== null && _api$isDestroyed !== void 0 && _api$isDestroyed.call(api) || isEditableTarget(e.target)) return false;
|
|
32
|
+
|
|
33
|
+
// Mac 上 Alt+A 的 key 是 å,用物理键位判断
|
|
34
|
+
if (e.altKey && !e.shiftKey && !e.ctrlKey && !e.metaKey && e.code === 'KeyA') {
|
|
35
|
+
if (!isMultiRow(api)) return false;
|
|
36
|
+
e.preventDefault();
|
|
37
|
+
api.selectAllFiltered();
|
|
38
|
+
return true;
|
|
39
|
+
}
|
|
40
|
+
if (e.altKey && e.shiftKey && !e.ctrlKey && !e.metaKey && (e.key === 'ArrowUp' || e.key === 'ArrowDown')) {
|
|
41
|
+
if (!isMultiRow(api)) return false;
|
|
42
|
+
var focused = api.getFocusedCell();
|
|
43
|
+
if (!focused) return false;
|
|
44
|
+
e.preventDefault();
|
|
45
|
+
var step = e.key === 'ArrowDown' ? 1 : -1;
|
|
46
|
+
var current = api.getDisplayedRowAtIndex(focused.rowIndex);
|
|
47
|
+
var next = api.getDisplayedRowAtIndex(focused.rowIndex + step);
|
|
48
|
+
if (!current || !next) return true; // 到头不循环
|
|
49
|
+
// 下一行已勾选:说明在回收这段连续勾选,取消活动行;否则连同活动行一起勾上
|
|
50
|
+
if (next.isSelected()) {
|
|
51
|
+
current.setSelected(false);
|
|
52
|
+
} else {
|
|
53
|
+
current.setSelected(true);
|
|
54
|
+
next.setSelected(true);
|
|
55
|
+
}
|
|
56
|
+
api.setFocusedCell(focused.rowIndex + step, focused.column);
|
|
57
|
+
return true;
|
|
58
|
+
}
|
|
59
|
+
if ((e.ctrlKey || e.metaKey) && !e.altKey && !e.shiftKey && (e.key === 'ArrowLeft' || e.key === 'ArrowRight')) {
|
|
60
|
+
if (!onPage) return false;
|
|
61
|
+
e.preventDefault();
|
|
62
|
+
onPage(e.key === 'ArrowRight' ? 1 : -1);
|
|
63
|
+
return true;
|
|
64
|
+
}
|
|
65
|
+
if (e.key === 'Escape' && !e.altKey && !e.ctrlKey && !e.metaKey && !e.shiftKey) {
|
|
66
|
+
if (api.getSelectedNodes().length > 0) {
|
|
67
|
+
api.deselectAll();
|
|
68
|
+
return true;
|
|
69
|
+
}
|
|
70
|
+
if (api.getFocusedCell()) {
|
|
71
|
+
api.clearFocusedCell();
|
|
72
|
+
return true;
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
return false;
|
|
76
|
+
};
|
|
77
|
+
}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import type { ColDef } from 'ag-grid-community';
|
|
2
|
+
/**
|
|
3
|
+
* 分页与默认列定义的纯函数,便于单测。
|
|
4
|
+
* @author nokecy
|
|
5
|
+
*/
|
|
6
|
+
/** 页面没传 pageSize 时的取值:分页默认 100(DESIGN.md §7.3),隐藏分页时一次取全。 */
|
|
7
|
+
export declare function resolveInitialPageSize(pageSize?: number, hidePagination?: boolean): number;
|
|
8
|
+
/**
|
|
9
|
+
* 把页码收进 [1, 末页]。total 未知(<=0,首次请求前)时只保证不小于 1,
|
|
10
|
+
* 否则首次加载前调用 goToPage(3) 会被无条件打回第 1 页。
|
|
11
|
+
*/
|
|
12
|
+
export declare function clampPage(page: number, total: number, pageSize: number): number;
|
|
13
|
+
/** dataSource(本地数据)模式的真正分页:只把当前页的行交给表格。 */
|
|
14
|
+
export declare function sliceRowsByPage<T>(rows: readonly T[], current: number, pageSize: number): T[];
|
|
15
|
+
/** 分页左侧的总条数文案:第 a-b 条/总共 n 条。 */
|
|
16
|
+
export declare function formatPaginationTotal(total: number, current: number, pageSize: number): string;
|
|
17
|
+
/**
|
|
18
|
+
* 合并默认列定义:内置 < 页面传入的 defaultColDef。
|
|
19
|
+
* 此前内置对象写在透传 props 之后,页面传的 defaultColDef 被整体覆盖,只能逐列配置。
|
|
20
|
+
* `headerFilter === false` 时把列头筛选按钮收起(suppressHeaderFilterButton),
|
|
21
|
+
* 不动 `filter`:列的 `filter` 还决定它是否出现在查询区。页面 defaultColDef 里显式写的同名项优先。
|
|
22
|
+
* headerComponentParams 逐键合并,页面只改模板以外的参数时不丢内置表头模板。
|
|
23
|
+
*/
|
|
24
|
+
export declare function mergeDefaultColDef(builtIn: ColDef<any>, custom: ColDef<any> | undefined, options?: {
|
|
25
|
+
headerFilter?: boolean;
|
|
26
|
+
}): ColDef<any>;
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
|
|
2
|
+
function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
3
|
+
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
4
|
+
function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
|
5
|
+
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : String(i); }
|
|
6
|
+
function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != _typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
|
|
7
|
+
import { DEFAULT_PAGE_SIZE, DEFAULT_PAGE_SIZE_WHEN_HIDDEN } from "./constants";
|
|
8
|
+
|
|
9
|
+
/**
|
|
10
|
+
* 分页与默认列定义的纯函数,便于单测。
|
|
11
|
+
* @author nokecy
|
|
12
|
+
*/
|
|
13
|
+
|
|
14
|
+
/** 页面没传 pageSize 时的取值:分页默认 100(DESIGN.md §7.3),隐藏分页时一次取全。 */
|
|
15
|
+
export function resolveInitialPageSize(pageSize, hidePagination) {
|
|
16
|
+
if (pageSize !== undefined) return pageSize;
|
|
17
|
+
return hidePagination ? DEFAULT_PAGE_SIZE_WHEN_HIDDEN : DEFAULT_PAGE_SIZE;
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
/**
|
|
21
|
+
* 把页码收进 [1, 末页]。total 未知(<=0,首次请求前)时只保证不小于 1,
|
|
22
|
+
* 否则首次加载前调用 goToPage(3) 会被无条件打回第 1 页。
|
|
23
|
+
*/
|
|
24
|
+
export function clampPage(page, total, pageSize) {
|
|
25
|
+
var target = Number.isFinite(page) ? Math.max(1, Math.floor(page)) : 1;
|
|
26
|
+
if (!(total > 0) || !(pageSize > 0)) return target;
|
|
27
|
+
return Math.min(target, Math.max(1, Math.ceil(total / pageSize)));
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
/** dataSource(本地数据)模式的真正分页:只把当前页的行交给表格。 */
|
|
31
|
+
export function sliceRowsByPage(rows, current, pageSize) {
|
|
32
|
+
var start = (current - 1) * pageSize;
|
|
33
|
+
return rows.slice(start, start + pageSize);
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
/** 分页左侧的总条数文案:第 a-b 条/总共 n 条。 */
|
|
37
|
+
export function formatPaginationTotal(total, current, pageSize) {
|
|
38
|
+
if (total <= 0) return '第 0-0 条/总共 0 条';
|
|
39
|
+
var start = (current - 1) * pageSize + 1;
|
|
40
|
+
var end = Math.min(current * pageSize, total);
|
|
41
|
+
return "\u7B2C ".concat(start, "-").concat(end, " \u6761/\u603B\u5171 ").concat(total, " \u6761");
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
/**
|
|
45
|
+
* 合并默认列定义:内置 < 页面传入的 defaultColDef。
|
|
46
|
+
* 此前内置对象写在透传 props 之后,页面传的 defaultColDef 被整体覆盖,只能逐列配置。
|
|
47
|
+
* `headerFilter === false` 时把列头筛选按钮收起(suppressHeaderFilterButton),
|
|
48
|
+
* 不动 `filter`:列的 `filter` 还决定它是否出现在查询区。页面 defaultColDef 里显式写的同名项优先。
|
|
49
|
+
* headerComponentParams 逐键合并,页面只改模板以外的参数时不丢内置表头模板。
|
|
50
|
+
*/
|
|
51
|
+
export function mergeDefaultColDef(builtIn, custom) {
|
|
52
|
+
var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
|
|
53
|
+
var base = options.headerFilter === false ? _objectSpread(_objectSpread({}, builtIn), {}, {
|
|
54
|
+
suppressHeaderFilterButton: true
|
|
55
|
+
}) : builtIn;
|
|
56
|
+
if (!custom) return base;
|
|
57
|
+
return _objectSpread(_objectSpread(_objectSpread({}, base), custom), {}, {
|
|
58
|
+
headerComponentParams: _objectSpread(_objectSpread({}, base.headerComponentParams), custom.headerComponentParams)
|
|
59
|
+
});
|
|
60
|
+
}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 内置查询(查询/重置/高级搜索)只发一次请求。
|
|
3
|
+
*
|
|
4
|
+
* 条件或页码变了,状态更新会让「条件/分页变化」的 effect 请求一次,此时不能再手动请求;
|
|
5
|
+
* 条件与页码都没变(用户点「查询」想重新取数),effect 不会触发,才需要手动请求。@author nokecy
|
|
6
|
+
*/
|
|
7
|
+
export declare function needsDirectRequest(prevFilter: unknown, nextFilter: unknown, currentPage: number): boolean;
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import isEqual from 'lodash/isEqual';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* 内置查询(查询/重置/高级搜索)只发一次请求。
|
|
5
|
+
*
|
|
6
|
+
* 条件或页码变了,状态更新会让「条件/分页变化」的 effect 请求一次,此时不能再手动请求;
|
|
7
|
+
* 条件与页码都没变(用户点「查询」想重新取数),effect 不会触发,才需要手动请求。@author nokecy
|
|
8
|
+
*/
|
|
9
|
+
export function needsDirectRequest(prevFilter, nextFilter, currentPage) {
|
|
10
|
+
return currentPage === 1 && isEqual(prevFilter, nextFilter);
|
|
11
|
+
}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `valueEnum` 的状态胶囊:形状 + 文字 + 底色三重编码,去掉颜色后仍可凭形状与文字区分。
|
|
3
|
+
*
|
|
4
|
+
* 状态语义色属于语义层,不随主题变化,所以色值写在这里;
|
|
5
|
+
* 文字色对底色 ≥ 4.5:1,图标色对底色 ≥ 3:1。
|
|
6
|
+
*/
|
|
7
|
+
import React from 'react';
|
|
8
|
+
export type StatusKey = 'wait' | 'running' | 'done' | 'warning' | 'alarm' | 'closed';
|
|
9
|
+
type StatusIcon = 'ring' | 'half' | 'check' | 'warn' | 'cross' | 'dash';
|
|
10
|
+
export declare const STATUS_PILL: Record<StatusKey, {
|
|
11
|
+
icon: StatusIcon;
|
|
12
|
+
fg: string;
|
|
13
|
+
bg: string;
|
|
14
|
+
mark: string;
|
|
15
|
+
}>;
|
|
16
|
+
/** 深色表面上的六态:底色压暗、文字与图标提亮,文字对底色 ≥ 4.5:1,图标 ≥ 3:1 */
|
|
17
|
+
export declare const STATUS_PILL_DARK: typeof STATUS_PILL;
|
|
18
|
+
export declare const isStatusKey: (v: unknown) => v is StatusKey;
|
|
19
|
+
/** 表格单元格内的状态胶囊,高 18px,适配紧凑行高 */
|
|
20
|
+
export declare const StatusPill: React.FC<{
|
|
21
|
+
status: StatusKey;
|
|
22
|
+
dark?: boolean;
|
|
23
|
+
children?: React.ReactNode;
|
|
24
|
+
}>;
|
|
25
|
+
export {};
|