@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,192 @@
|
|
|
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
|
+
/**
|
|
8
|
+
* `valueEnum` 的状态胶囊:形状 + 文字 + 底色三重编码,去掉颜色后仍可凭形状与文字区分。
|
|
9
|
+
*
|
|
10
|
+
* 状态语义色属于语义层,不随主题变化,所以色值写在这里;
|
|
11
|
+
* 文字色对底色 ≥ 4.5:1,图标色对底色 ≥ 3:1。
|
|
12
|
+
*/
|
|
13
|
+
import React from 'react';
|
|
14
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
15
|
+
import { Fragment as _Fragment } from "react/jsx-runtime";
|
|
16
|
+
import { jsxs as _jsxs } from "react/jsx-runtime";
|
|
17
|
+
export var STATUS_PILL = {
|
|
18
|
+
wait: {
|
|
19
|
+
icon: 'ring',
|
|
20
|
+
fg: '#55606e',
|
|
21
|
+
bg: '#eef1f5',
|
|
22
|
+
mark: '#55606e'
|
|
23
|
+
},
|
|
24
|
+
running: {
|
|
25
|
+
icon: 'half',
|
|
26
|
+
fg: '#1f5fbf',
|
|
27
|
+
bg: '#eaf1fb',
|
|
28
|
+
mark: '#1f5fbf'
|
|
29
|
+
},
|
|
30
|
+
done: {
|
|
31
|
+
icon: 'check',
|
|
32
|
+
fg: '#276a4e',
|
|
33
|
+
bg: '#eaf4ef',
|
|
34
|
+
mark: '#276a4e'
|
|
35
|
+
},
|
|
36
|
+
warning: {
|
|
37
|
+
icon: 'warn',
|
|
38
|
+
fg: '#8a5a12',
|
|
39
|
+
bg: '#fdf5e6',
|
|
40
|
+
mark: '#9a6200'
|
|
41
|
+
},
|
|
42
|
+
alarm: {
|
|
43
|
+
icon: 'cross',
|
|
44
|
+
fg: '#8c3b34',
|
|
45
|
+
bg: '#fbf0ef',
|
|
46
|
+
mark: '#b4453c'
|
|
47
|
+
},
|
|
48
|
+
closed: {
|
|
49
|
+
icon: 'dash',
|
|
50
|
+
fg: '#5f6b7a',
|
|
51
|
+
bg: '#f1f3f6',
|
|
52
|
+
mark: '#5f6b7a'
|
|
53
|
+
}
|
|
54
|
+
};
|
|
55
|
+
|
|
56
|
+
/** 深色表面上的六态:底色压暗、文字与图标提亮,文字对底色 ≥ 4.5:1,图标 ≥ 3:1 */
|
|
57
|
+
export var STATUS_PILL_DARK = {
|
|
58
|
+
wait: {
|
|
59
|
+
icon: 'ring',
|
|
60
|
+
fg: '#aab4c2',
|
|
61
|
+
bg: '#262b33',
|
|
62
|
+
mark: '#aab4c2'
|
|
63
|
+
},
|
|
64
|
+
running: {
|
|
65
|
+
icon: 'half',
|
|
66
|
+
fg: '#7fb0f5',
|
|
67
|
+
bg: '#14233d',
|
|
68
|
+
mark: '#7fb0f5'
|
|
69
|
+
},
|
|
70
|
+
done: {
|
|
71
|
+
icon: 'check',
|
|
72
|
+
fg: '#6fcf9f',
|
|
73
|
+
bg: '#12281f',
|
|
74
|
+
mark: '#6fcf9f'
|
|
75
|
+
},
|
|
76
|
+
warning: {
|
|
77
|
+
icon: 'warn',
|
|
78
|
+
fg: '#e8b75a',
|
|
79
|
+
bg: '#32250f',
|
|
80
|
+
mark: '#e8b75a'
|
|
81
|
+
},
|
|
82
|
+
alarm: {
|
|
83
|
+
icon: 'cross',
|
|
84
|
+
fg: '#f09a92',
|
|
85
|
+
bg: '#331a18',
|
|
86
|
+
mark: '#f09a92'
|
|
87
|
+
},
|
|
88
|
+
closed: {
|
|
89
|
+
icon: 'dash',
|
|
90
|
+
fg: '#9aa5b3',
|
|
91
|
+
bg: '#23272d',
|
|
92
|
+
mark: '#9aa5b3'
|
|
93
|
+
}
|
|
94
|
+
};
|
|
95
|
+
export var isStatusKey = function isStatusKey(v) {
|
|
96
|
+
return typeof v === 'string' && v in STATUS_PILL;
|
|
97
|
+
};
|
|
98
|
+
var Glyph = function Glyph(_ref) {
|
|
99
|
+
var icon = _ref.icon,
|
|
100
|
+
color = _ref.color;
|
|
101
|
+
var common = {
|
|
102
|
+
fill: 'none',
|
|
103
|
+
stroke: color,
|
|
104
|
+
strokeWidth: 1.5,
|
|
105
|
+
strokeLinecap: 'round',
|
|
106
|
+
strokeLinejoin: 'round'
|
|
107
|
+
};
|
|
108
|
+
return /*#__PURE__*/_jsxs("svg", {
|
|
109
|
+
width: 12,
|
|
110
|
+
height: 12,
|
|
111
|
+
viewBox: "0 0 12 12",
|
|
112
|
+
"aria-hidden": "true",
|
|
113
|
+
focusable: "false",
|
|
114
|
+
style: {
|
|
115
|
+
flex: 'none',
|
|
116
|
+
display: 'block'
|
|
117
|
+
},
|
|
118
|
+
children: [icon === 'ring' && /*#__PURE__*/_jsx("circle", _objectSpread({
|
|
119
|
+
cx: "6",
|
|
120
|
+
cy: "6",
|
|
121
|
+
r: "4.25"
|
|
122
|
+
}, common)), icon === 'half' && /*#__PURE__*/_jsxs(_Fragment, {
|
|
123
|
+
children: [/*#__PURE__*/_jsx("circle", _objectSpread({
|
|
124
|
+
cx: "6",
|
|
125
|
+
cy: "6",
|
|
126
|
+
r: "4.25"
|
|
127
|
+
}, common)), /*#__PURE__*/_jsx("path", {
|
|
128
|
+
d: "M6 1.75 A4.25 4.25 0 0 1 6 10.25 Z",
|
|
129
|
+
fill: color,
|
|
130
|
+
stroke: "none"
|
|
131
|
+
})]
|
|
132
|
+
}), icon === 'check' && /*#__PURE__*/_jsxs(_Fragment, {
|
|
133
|
+
children: [/*#__PURE__*/_jsx("circle", _objectSpread({
|
|
134
|
+
cx: "6",
|
|
135
|
+
cy: "6",
|
|
136
|
+
r: "4.25"
|
|
137
|
+
}, common)), /*#__PURE__*/_jsx("path", _objectSpread({
|
|
138
|
+
d: "M3.9 6.2 5.3 7.6 8.2 4.5"
|
|
139
|
+
}, common))]
|
|
140
|
+
}), icon === 'warn' && /*#__PURE__*/_jsxs(_Fragment, {
|
|
141
|
+
children: [/*#__PURE__*/_jsx("path", _objectSpread({
|
|
142
|
+
d: "M6 1.6 10.8 10 1.2 10Z"
|
|
143
|
+
}, common)), /*#__PURE__*/_jsx("path", _objectSpread({
|
|
144
|
+
d: "M6 4.6V7M6 8.5V8.6"
|
|
145
|
+
}, common))]
|
|
146
|
+
}), icon === 'cross' && /*#__PURE__*/_jsxs(_Fragment, {
|
|
147
|
+
children: [/*#__PURE__*/_jsx("circle", _objectSpread({
|
|
148
|
+
cx: "6",
|
|
149
|
+
cy: "6",
|
|
150
|
+
r: "4.25"
|
|
151
|
+
}, common)), /*#__PURE__*/_jsx("path", _objectSpread({
|
|
152
|
+
d: "M4.3 4.3 7.7 7.7M7.7 4.3 4.3 7.7"
|
|
153
|
+
}, common))]
|
|
154
|
+
}), icon === 'dash' && /*#__PURE__*/_jsxs(_Fragment, {
|
|
155
|
+
children: [/*#__PURE__*/_jsx("circle", _objectSpread({
|
|
156
|
+
cx: "6",
|
|
157
|
+
cy: "6",
|
|
158
|
+
r: "4.25"
|
|
159
|
+
}, common)), /*#__PURE__*/_jsx("path", _objectSpread({
|
|
160
|
+
d: "M4 6H8"
|
|
161
|
+
}, common))]
|
|
162
|
+
})]
|
|
163
|
+
});
|
|
164
|
+
};
|
|
165
|
+
|
|
166
|
+
/** 表格单元格内的状态胶囊,高 18px,适配紧凑行高 */
|
|
167
|
+
export var StatusPill = function StatusPill(_ref2) {
|
|
168
|
+
var status = _ref2.status,
|
|
169
|
+
dark = _ref2.dark,
|
|
170
|
+
children = _ref2.children;
|
|
171
|
+
var s = (dark ? STATUS_PILL_DARK : STATUS_PILL)[status];
|
|
172
|
+
return /*#__PURE__*/_jsxs("span", {
|
|
173
|
+
style: {
|
|
174
|
+
display: 'inline-flex',
|
|
175
|
+
alignItems: 'center',
|
|
176
|
+
gap: 5,
|
|
177
|
+
height: 18,
|
|
178
|
+
paddingInline: 7,
|
|
179
|
+
borderRadius: 3,
|
|
180
|
+
fontSize: 12,
|
|
181
|
+
lineHeight: '18px',
|
|
182
|
+
color: s.fg,
|
|
183
|
+
background: s.bg,
|
|
184
|
+
whiteSpace: 'nowrap',
|
|
185
|
+
verticalAlign: 'middle'
|
|
186
|
+
},
|
|
187
|
+
children: [/*#__PURE__*/_jsx(Glyph, {
|
|
188
|
+
icon: s.icon,
|
|
189
|
+
color: s.mark
|
|
190
|
+
}), children]
|
|
191
|
+
});
|
|
192
|
+
};
|
|
@@ -1,7 +1,12 @@
|
|
|
1
1
|
/** antd Tag 语义档名。 */
|
|
2
2
|
export type SemanticPreset = 'default' | 'processing' | 'success' | 'warning' | 'error';
|
|
3
|
-
/**
|
|
3
|
+
/**
|
|
4
|
+
* 语义档名 → 表格文字色,取状态胶囊六态的文字色(statusPill.ts,对各自底色 ≥4.5:1,白底同样达标),
|
|
5
|
+
* 没配 `status` 的枚举与配了 `status` 的列在同一页上色值一致(DESIGN.md §3.2)。
|
|
6
|
+
*/
|
|
4
7
|
export declare const semanticTextColors: Record<SemanticPreset, string>;
|
|
8
|
+
/** 底色是否为深色表面。 */
|
|
9
|
+
export declare const isDarkSurface: (background?: string) => boolean;
|
|
5
10
|
/**
|
|
6
11
|
* 把任意 valueEnum.color 收成表格可用的 CSS 色。
|
|
7
12
|
*
|
|
@@ -20,19 +20,23 @@ function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e
|
|
|
20
20
|
*
|
|
21
21
|
* @author nokecy
|
|
22
22
|
*/
|
|
23
|
+
import { STATUS_PILL } from "./statusPill";
|
|
23
24
|
import { contrastRatio, darkenUntilContrast, lightenUntilContrast, relativeLuminance } from "../../shared/contrast";
|
|
24
25
|
|
|
25
26
|
/** antd Tag 语义档名。 */
|
|
26
27
|
|
|
27
28
|
var WHITE = '#ffffff';
|
|
28
29
|
|
|
29
|
-
/**
|
|
30
|
+
/**
|
|
31
|
+
* 语义档名 → 表格文字色,取状态胶囊六态的文字色(statusPill.ts,对各自底色 ≥4.5:1,白底同样达标),
|
|
32
|
+
* 没配 `status` 的枚举与配了 `status` 的列在同一页上色值一致(DESIGN.md §3.2)。
|
|
33
|
+
*/
|
|
30
34
|
export var semanticTextColors = {
|
|
31
|
-
default:
|
|
32
|
-
processing:
|
|
33
|
-
success:
|
|
34
|
-
warning:
|
|
35
|
-
error:
|
|
35
|
+
default: STATUS_PILL.wait.fg,
|
|
36
|
+
processing: STATUS_PILL.running.fg,
|
|
37
|
+
success: STATUS_PILL.done.fg,
|
|
38
|
+
warning: STATUS_PILL.warning.fg,
|
|
39
|
+
error: STATUS_PILL.alarm.fg
|
|
36
40
|
};
|
|
37
41
|
|
|
38
42
|
/** antd Tag 预设名 / 常见 CSS 色名 → 起始 hex,再交给对比度压色。 */
|
|
@@ -62,8 +66,8 @@ var parseHex = function parseHex(color) {
|
|
|
62
66
|
};
|
|
63
67
|
|
|
64
68
|
/** 底色是否为深色表面。 */
|
|
65
|
-
var isDarkSurface = function isDarkSurface(background) {
|
|
66
|
-
return relativeLuminance(background) < 0.18;
|
|
69
|
+
export var isDarkSurface = function isDarkSurface(background) {
|
|
70
|
+
return !!background && !!parseHex(background) && relativeLuminance(background) < 0.18;
|
|
67
71
|
};
|
|
68
72
|
|
|
69
73
|
/**
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 表格数据格式出厂默认(DESIGN.md §7.7):数字千分位、空值 `—`;页面自己写 valueFormatter 即覆盖。
|
|
3
|
+
* @author nokecy
|
|
4
|
+
*/
|
|
5
|
+
export declare const EMPTY_PLACEHOLDER = "\u2014";
|
|
6
|
+
/** 空值统一为 `—`;0 是有效值,原样保留。 */
|
|
7
|
+
export declare const isEmptyValue: (value: unknown) => boolean;
|
|
8
|
+
/**
|
|
9
|
+
* 千分位,只动整数部分,小数位原样保留(字符串数值不经过浮点,不丢精度)。
|
|
10
|
+
* 不是纯数字的值(科学计数法、带单位的文本)原样返回。
|
|
11
|
+
*/
|
|
12
|
+
export declare function formatThousands(value: unknown): string;
|
|
13
|
+
/** 只补空值占位。 */
|
|
14
|
+
export declare function formatEmpty(value: unknown): string;
|
|
15
|
+
/**
|
|
16
|
+
* 给没有自己 valueFormatter 的叶子列补默认格式。已有 valueFormatter、枚举列、日期/布尔列类型一律不动。
|
|
17
|
+
* @param inferredNumber 该列由首行数据推断为数值
|
|
18
|
+
*/
|
|
19
|
+
export declare function withDefaultValueFormat<T extends Record<string, any>>(col: T, inferredNumber: boolean): T;
|
|
@@ -0,0 +1,63 @@
|
|
|
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
|
+
/**
|
|
8
|
+
* 表格数据格式出厂默认(DESIGN.md §7.7):数字千分位、空值 `—`;页面自己写 valueFormatter 即覆盖。
|
|
9
|
+
* @author nokecy
|
|
10
|
+
*/
|
|
11
|
+
|
|
12
|
+
export var EMPTY_PLACEHOLDER = '—';
|
|
13
|
+
var PLAIN_NUMBER = /^(-?)(\d+)(\.\d+)?$/;
|
|
14
|
+
|
|
15
|
+
/** 空值统一为 `—`;0 是有效值,原样保留。 */
|
|
16
|
+
export var isEmptyValue = function isEmptyValue(value) {
|
|
17
|
+
return value === null || value === undefined || value === '';
|
|
18
|
+
};
|
|
19
|
+
|
|
20
|
+
/**
|
|
21
|
+
* 千分位,只动整数部分,小数位原样保留(字符串数值不经过浮点,不丢精度)。
|
|
22
|
+
* 不是纯数字的值(科学计数法、带单位的文本)原样返回。
|
|
23
|
+
*/
|
|
24
|
+
export function formatThousands(value) {
|
|
25
|
+
var _m$;
|
|
26
|
+
if (isEmptyValue(value)) return EMPTY_PLACEHOLDER;
|
|
27
|
+
var text = String(value).trim();
|
|
28
|
+
var m = PLAIN_NUMBER.exec(text);
|
|
29
|
+
if (!m) return String(value);
|
|
30
|
+
return "".concat(m[1]).concat(m[2].replace(/\B(?=(\d{3})+(?!\d))/g, ',')).concat((_m$ = m[3]) !== null && _m$ !== void 0 ? _m$ : '');
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
/** 只补空值占位。 */
|
|
34
|
+
export function formatEmpty(value) {
|
|
35
|
+
return isEmptyValue(value) ? EMPTY_PLACEHOLDER : String(value);
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
/** 字段名像编码、年份、序号的数值列不加千分位(订单号、年份加逗号是错的)。 */
|
|
39
|
+
var IDENTIFIER_LIKE = /(?:^|[a-z])(?:id|code|no|number|year|seq|sequence|sort|order|index)$/i;
|
|
40
|
+
var EXPLICIT_NUMERIC = new Set(['numericColumn', 'numberColumn']);
|
|
41
|
+
var SKIP_TYPES = new Set(['dateColumn', 'dateTimeColumn', 'bool']);
|
|
42
|
+
|
|
43
|
+
/**
|
|
44
|
+
* 给没有自己 valueFormatter 的叶子列补默认格式。已有 valueFormatter、枚举列、日期/布尔列类型一律不动。
|
|
45
|
+
* @param inferredNumber 该列由首行数据推断为数值
|
|
46
|
+
*/
|
|
47
|
+
export function withDefaultValueFormat(col, inferredNumber) {
|
|
48
|
+
var _col$field;
|
|
49
|
+
if (col.valueFormatter || col.valueEnum) return col;
|
|
50
|
+
var types = (Array.isArray(col.type) ? col.type : [col.type]).filter(Boolean).map(String);
|
|
51
|
+
if (types.some(function (t) {
|
|
52
|
+
return SKIP_TYPES.has(t);
|
|
53
|
+
})) return col;
|
|
54
|
+
var field = String((_col$field = col.field) !== null && _col$field !== void 0 ? _col$field : '');
|
|
55
|
+
var numeric = types.some(function (t) {
|
|
56
|
+
return EXPLICIT_NUMERIC.has(t);
|
|
57
|
+
}) || inferredNumber && !IDENTIFIER_LIKE.test(field);
|
|
58
|
+
return _objectSpread(_objectSpread({}, col), {}, {
|
|
59
|
+
valueFormatter: function valueFormatter(p) {
|
|
60
|
+
return numeric ? formatThousands(p.value) : formatEmpty(p.value);
|
|
61
|
+
}
|
|
62
|
+
});
|
|
63
|
+
}
|
|
@@ -198,10 +198,11 @@ var convertSortModel = function convertSortModel(sortModel) {
|
|
|
198
198
|
return sorter;
|
|
199
199
|
};
|
|
200
200
|
var dateValueFormatter = function dateValueFormatter(params) {
|
|
201
|
-
return params.value ? dayjs(params.value).format("YYYY-MM-DD") : "";
|
|
201
|
+
return params.value ? dayjs(params.value).format("YYYY-MM-DD") : "—";
|
|
202
202
|
};
|
|
203
203
|
var dateTimeValueFormatter = function dateTimeValueFormatter(params) {
|
|
204
|
-
|
|
204
|
+
// 列表到分钟,日志与审计到秒由页面自己传 valueFormatter(DESIGN.md §7.7)
|
|
205
|
+
return params.value ? dayjs(params.value).format("YYYY-MM-DD HH:mm") : "—";
|
|
205
206
|
};
|
|
206
207
|
|
|
207
208
|
//@ts-ignore
|
|
@@ -25,7 +25,7 @@ var getSchemaDefaultValue = function getSchemaDefaultValue(schema) {
|
|
|
25
25
|
}
|
|
26
26
|
}
|
|
27
27
|
};
|
|
28
|
-
var getDefaultValue = function getDefaultValue(defaultValue, schema) {
|
|
28
|
+
export var getDefaultValue = function getDefaultValue(defaultValue, schema) {
|
|
29
29
|
if (isValid(defaultValue)) return clone(defaultValue);
|
|
30
30
|
if (Array.isArray(schema === null || schema === void 0 ? void 0 : schema.items)) return getSchemaDefaultValue(schema === null || schema === void 0 ? void 0 : schema.items[0]);
|
|
31
31
|
return getSchemaDefaultValue(schema === null || schema === void 0 ? void 0 : schema.items);
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/** height="auto" 时明细区最多显示的行数,超出后表格内部滚动 */
|
|
2
|
+
export declare const ARRAY_TABLE_AUTO_MAX_ROWS = 10;
|
|
3
|
+
export interface AutoHeightInput {
|
|
4
|
+
rowCount: number;
|
|
5
|
+
rowHeight: number;
|
|
6
|
+
headerHeight: number;
|
|
7
|
+
/** 合计行(固定在底部,占一行高度) */
|
|
8
|
+
hasSummary?: boolean;
|
|
9
|
+
/** 带行内错误文字、被撑高的行数 */
|
|
10
|
+
feedbackRows?: number;
|
|
11
|
+
minRows?: number;
|
|
12
|
+
maxRows?: number;
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* height="auto":按行数算出网格高度,免得空表留大片空白、行少时不必手算像素。
|
|
16
|
+
* AG Grid 的 domLayout=autoHeight 会让合计行与滚动行为失效,这里改为按密度三档的行高直接计算。
|
|
17
|
+
*/
|
|
18
|
+
export declare const calcAutoGridHeight: ({ rowCount, rowHeight, headerHeight, hasSummary, feedbackRows, minRows, maxRows, }: AutoHeightInput) => number;
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { ROW_FEEDBACK_EXTRA_HEIGHT } from "./rowFeedback";
|
|
2
|
+
|
|
3
|
+
/** height="auto" 时明细区最多显示的行数,超出后表格内部滚动 */
|
|
4
|
+
export var ARRAY_TABLE_AUTO_MAX_ROWS = 10;
|
|
5
|
+
|
|
6
|
+
/** 表格外框上下各 1px 边线 */
|
|
7
|
+
var BORDER = 2;
|
|
8
|
+
/**
|
|
9
|
+
* height="auto":按行数算出网格高度,免得空表留大片空白、行少时不必手算像素。
|
|
10
|
+
* AG Grid 的 domLayout=autoHeight 会让合计行与滚动行为失效,这里改为按密度三档的行高直接计算。
|
|
11
|
+
*/
|
|
12
|
+
export var calcAutoGridHeight = function calcAutoGridHeight(_ref) {
|
|
13
|
+
var rowCount = _ref.rowCount,
|
|
14
|
+
rowHeight = _ref.rowHeight,
|
|
15
|
+
headerHeight = _ref.headerHeight,
|
|
16
|
+
hasSummary = _ref.hasSummary,
|
|
17
|
+
_ref$feedbackRows = _ref.feedbackRows,
|
|
18
|
+
feedbackRows = _ref$feedbackRows === void 0 ? 0 : _ref$feedbackRows,
|
|
19
|
+
_ref$minRows = _ref.minRows,
|
|
20
|
+
minRows = _ref$minRows === void 0 ? 1 : _ref$minRows,
|
|
21
|
+
_ref$maxRows = _ref.maxRows,
|
|
22
|
+
maxRows = _ref$maxRows === void 0 ? ARRAY_TABLE_AUTO_MAX_ROWS : _ref$maxRows;
|
|
23
|
+
var rows = Math.min(Math.max(rowCount, minRows), Math.max(maxRows, minRows));
|
|
24
|
+
return headerHeight + rows * rowHeight + (hasSummary ? rowHeight : 0) + Math.min(feedbackRows, rows) * ROW_FEEDBACK_EXTRA_HEIGHT + BORDER;
|
|
25
|
+
};
|
|
@@ -22,11 +22,11 @@ export declare function findRemovalAction(field: ArrayField, index: number, acti
|
|
|
22
22
|
export declare function removeSelectedRows(field: ArrayField, ids: string[], actions: RemovalAction[], getId: (row: any) => string, onRemove?: (index: number) => void, event?: React.MouseEvent): boolean;
|
|
23
23
|
/** 公共明细表格的勾选及批量删除,沿用业务行权限、行标识与删除通知。@author nokecy */
|
|
24
24
|
export declare function useArrayTableBatchRemove(field: ArrayField, sources: ObservableColumnSource[], props: ArrayTableProps, apiRef: React.MutableRefObject<GridApi | undefined>, getId: (row: any) => string): {
|
|
25
|
-
rowSelection: "
|
|
25
|
+
rowSelection: "single" | "multiple" | import("ag-grid-community/dist/types/src/entities/gridOptions").SingleRowSelectionOptions<any, any> | import("ag-grid-community/dist/types/src/entities/gridOptions").MultiRowSelectionOptions<any, any> | {
|
|
26
26
|
isRowSelectable: (node: IRowNode) => boolean;
|
|
27
27
|
headerCheckbox?: boolean | undefined;
|
|
28
28
|
selectAll?: "filtered" | undefined;
|
|
29
|
-
mode: "
|
|
29
|
+
mode: "multiRow" | "singleRow";
|
|
30
30
|
checkboxes: boolean;
|
|
31
31
|
enableClickSelection: boolean;
|
|
32
32
|
} | undefined;
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
/** 格内控件的稳定标记值,键盘与浏览器测试按它定位,不依赖 antd 的内部类名。 */
|
|
3
|
+
export type CellEditorKind = 'select' | 'date' | 'number' | 'text';
|
|
4
|
+
/** 按 x-component 判定控件类别;开关、业务自定义组件等不在表内,不打标记(避免误导)。 */
|
|
5
|
+
export declare const resolveCellEditorKind: (component: unknown) => CellEditorKind | undefined;
|
|
6
|
+
/**
|
|
7
|
+
* 面板是否展开:下拉看 antd 的 open 类;日期面板挂在 body 下,只能「控件聚焦且存在可见面板」近似判断。
|
|
8
|
+
* 直接读 DOM 而不进 React 状态,避免每次开合让整格重渲。
|
|
9
|
+
*/
|
|
10
|
+
export declare const isCellEditorOpen: (root: Element, kind: CellEditorKind) => boolean;
|
|
11
|
+
/**
|
|
12
|
+
* 给格内控件加 data-array-cell-editor / data-open 标记。display:contents 不产生盒子,不改变格内布局。
|
|
13
|
+
* 没有类别(不认识的组件)时原样返回子节点。@author nokecy
|
|
14
|
+
*/
|
|
15
|
+
export declare const CellEditorMarker: ({ kind, children }: {
|
|
16
|
+
kind?: CellEditorKind | undefined;
|
|
17
|
+
children: React.ReactNode;
|
|
18
|
+
}) => React.JSX.Element;
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
import React, { useEffect, useRef } from 'react';
|
|
2
|
+
|
|
3
|
+
/** 格内控件的稳定标记值,键盘与浏览器测试按它定位,不依赖 antd 的内部类名。 */
|
|
4
|
+
import { Fragment as _Fragment } from "react/jsx-runtime";
|
|
5
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
6
|
+
var KIND_BY_COMPONENT = {
|
|
7
|
+
Select: 'select',
|
|
8
|
+
TreeSelect: 'select',
|
|
9
|
+
Cascader: 'select',
|
|
10
|
+
DatePicker: 'date',
|
|
11
|
+
'DatePicker.RangePicker': 'date',
|
|
12
|
+
TimePicker: 'date',
|
|
13
|
+
'TimePicker.RangePicker': 'date',
|
|
14
|
+
InputNumber: 'number',
|
|
15
|
+
NumberPicker: 'number',
|
|
16
|
+
Input: 'text',
|
|
17
|
+
'Input.TextArea': 'text',
|
|
18
|
+
Password: 'text'
|
|
19
|
+
};
|
|
20
|
+
|
|
21
|
+
/** 按 x-component 判定控件类别;开关、业务自定义组件等不在表内,不打标记(避免误导)。 */
|
|
22
|
+
export var resolveCellEditorKind = function resolveCellEditorKind(component) {
|
|
23
|
+
return typeof component === 'string' ? KIND_BY_COMPONENT[component] : undefined;
|
|
24
|
+
};
|
|
25
|
+
|
|
26
|
+
/**
|
|
27
|
+
* 面板是否展开:下拉看 antd 的 open 类;日期面板挂在 body 下,只能「控件聚焦且存在可见面板」近似判断。
|
|
28
|
+
* 直接读 DOM 而不进 React 状态,避免每次开合让整格重渲。
|
|
29
|
+
*/
|
|
30
|
+
export var isCellEditorOpen = function isCellEditorOpen(root, kind) {
|
|
31
|
+
if (kind === 'select') return !!root.querySelector('.ant-select-open');
|
|
32
|
+
if (kind === 'date') {
|
|
33
|
+
return !!root.querySelector('.ant-picker-focused') && !!document.querySelector('.ant-picker-dropdown:not(.ant-picker-dropdown-hidden)');
|
|
34
|
+
}
|
|
35
|
+
return false;
|
|
36
|
+
};
|
|
37
|
+
|
|
38
|
+
/**
|
|
39
|
+
* 给格内控件加 data-array-cell-editor / data-open 标记。display:contents 不产生盒子,不改变格内布局。
|
|
40
|
+
* 没有类别(不认识的组件)时原样返回子节点。@author nokecy
|
|
41
|
+
*/
|
|
42
|
+
export var CellEditorMarker = function CellEditorMarker(_ref) {
|
|
43
|
+
var kind = _ref.kind,
|
|
44
|
+
children = _ref.children;
|
|
45
|
+
var ref = useRef(null);
|
|
46
|
+
useEffect(function () {
|
|
47
|
+
var root = ref.current;
|
|
48
|
+
if (!root || !kind || kind !== 'select' && kind !== 'date') return;
|
|
49
|
+
var sync = function sync() {
|
|
50
|
+
if (isCellEditorOpen(root, kind)) root.setAttribute('data-open', '1');else root.removeAttribute('data-open');
|
|
51
|
+
};
|
|
52
|
+
// 弹层开合发生在 antd 内部,类名变化与聚焦/点击/按键之后下一拍再读一次。
|
|
53
|
+
var later = function later() {
|
|
54
|
+
window.setTimeout(sync, 0);
|
|
55
|
+
};
|
|
56
|
+
var observer = new MutationObserver(sync);
|
|
57
|
+
observer.observe(root, {
|
|
58
|
+
subtree: true,
|
|
59
|
+
attributes: true,
|
|
60
|
+
attributeFilter: ['class']
|
|
61
|
+
});
|
|
62
|
+
var events = ['focusin', 'focusout', 'click', 'keyup'];
|
|
63
|
+
events.forEach(function (name) {
|
|
64
|
+
return root.addEventListener(name, later);
|
|
65
|
+
});
|
|
66
|
+
return function () {
|
|
67
|
+
observer.disconnect();
|
|
68
|
+
events.forEach(function (name) {
|
|
69
|
+
return root.removeEventListener(name, later);
|
|
70
|
+
});
|
|
71
|
+
};
|
|
72
|
+
}, [kind]);
|
|
73
|
+
if (!kind) return /*#__PURE__*/_jsx(_Fragment, {
|
|
74
|
+
children: children
|
|
75
|
+
});
|
|
76
|
+
return /*#__PURE__*/_jsx("div", {
|
|
77
|
+
ref: ref,
|
|
78
|
+
"data-array-cell-editor": kind,
|
|
79
|
+
style: {
|
|
80
|
+
display: 'contents'
|
|
81
|
+
},
|
|
82
|
+
children: children
|
|
83
|
+
});
|
|
84
|
+
};
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import type { GridApi } from 'ag-grid-community';
|
|
2
|
+
import type { ErrorLocator } from '@nokecy/formily-antd';
|
|
3
|
+
/** ArrayTable 的一列:AG-Grid 列 id 与它承载的内层数据字段名(Column key 与字段名可能不同,如设计器形态)。 */
|
|
4
|
+
export type ErrorLocatorColumn = {
|
|
5
|
+
colId: string;
|
|
6
|
+
dataName?: string;
|
|
7
|
+
title?: string;
|
|
8
|
+
};
|
|
9
|
+
type Deps = {
|
|
10
|
+
field: any;
|
|
11
|
+
getContainer: () => HTMLElement | null | undefined;
|
|
12
|
+
getApi: () => GridApi | undefined;
|
|
13
|
+
getColumns: () => ErrorLocatorColumn[];
|
|
14
|
+
/** 行数据 -> AG-Grid 行 id(与 getRowId 同一套) */
|
|
15
|
+
getRowId: (row: any) => string;
|
|
16
|
+
focus: (params: {
|
|
17
|
+
rowIndex: number;
|
|
18
|
+
colId: string;
|
|
19
|
+
}) => Promise<HTMLElement | undefined>;
|
|
20
|
+
};
|
|
21
|
+
/**
|
|
22
|
+
* 提交校验失败时 ArrayTable 的错误定位器(注册到 adapters 的 form-error-focus,见 registerErrorLocator)。
|
|
23
|
+
*
|
|
24
|
+
* 错误格可能不在 DOM 里(行被虚拟化、懒挂载格卸回了文本),按 DOM 找不到,所以按 Formily 的错误列表定位:
|
|
25
|
+
* 取表内最靠前的(先行后列,行按当前显示顺序、列按当前列序),ensureIndexVisible / ensureColumnVisible 滚到位,
|
|
26
|
+
* 再激活该格并聚焦输入。@author nokecy
|
|
27
|
+
*/
|
|
28
|
+
export declare const createArrayTableErrorLocator: (deps: Deps) => ErrorLocator;
|
|
29
|
+
export {};
|
|
@@ -0,0 +1,95 @@
|
|
|
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 _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }
|
|
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
|
+
/** ArrayTable 的一列:AG-Grid 列 id 与它承载的内层数据字段名(Column key 与字段名可能不同,如设计器形态)。 */
|
|
6
|
+
|
|
7
|
+
/**
|
|
8
|
+
* 提交校验失败时 ArrayTable 的错误定位器(注册到 adapters 的 form-error-focus,见 registerErrorLocator)。
|
|
9
|
+
*
|
|
10
|
+
* 错误格可能不在 DOM 里(行被虚拟化、懒挂载格卸回了文本),按 DOM 找不到,所以按 Formily 的错误列表定位:
|
|
11
|
+
* 取表内最靠前的(先行后列,行按当前显示顺序、列按当前列序),ensureIndexVisible / ensureColumnVisible 滚到位,
|
|
12
|
+
* 再激活该格并聚焦输入。@author nokecy
|
|
13
|
+
*/
|
|
14
|
+
export var createArrayTableErrorLocator = function createArrayTableErrorLocator(deps) {
|
|
15
|
+
return function (form, root) {
|
|
16
|
+
var _api$isDestroyed, _api$getAllDisplayedC, _api$getAllDisplayedC2, _first$feedback$messa, _first$feedback$addre;
|
|
17
|
+
var field = deps.field;
|
|
18
|
+
var container = deps.getContainer();
|
|
19
|
+
var api = deps.getApi();
|
|
20
|
+
if (!container || !api || (_api$isDestroyed = api.isDestroyed) !== null && _api$isDestroyed !== void 0 && _api$isDestroyed.call(api) || field.form !== form || !root.contains(container)) return undefined;
|
|
21
|
+
var rows = Array.isArray(field.value) ? field.value : [];
|
|
22
|
+
var baseLength = field.path.length;
|
|
23
|
+
var displayed = ((_api$getAllDisplayedC = (_api$getAllDisplayedC2 = api.getAllDisplayedColumns) === null || _api$getAllDisplayedC2 === void 0 ? void 0 : _api$getAllDisplayedC2.call(api)) !== null && _api$getAllDisplayedC !== void 0 ? _api$getAllDisplayedC : []).map(function (c) {
|
|
24
|
+
return c.getColId();
|
|
25
|
+
});
|
|
26
|
+
var columns = deps.getColumns();
|
|
27
|
+
var candidates = [];
|
|
28
|
+
var _iterator = _createForOfIteratorHelper(form.queryFeedbacks({
|
|
29
|
+
type: 'error',
|
|
30
|
+
address: "".concat(field.address.toString(), ".*")
|
|
31
|
+
})),
|
|
32
|
+
_step;
|
|
33
|
+
try {
|
|
34
|
+
var _loop = function _loop() {
|
|
35
|
+
var _feedback$path, _feedback$address, _columns$find, _api$getRowNode;
|
|
36
|
+
var feedback = _step.value;
|
|
37
|
+
var segments = String((_feedback$path = feedback.path) !== null && _feedback$path !== void 0 ? _feedback$path : '').split('.');
|
|
38
|
+
var dataIndex = Number(segments[baseLength]);
|
|
39
|
+
var row = rows[dataIndex];
|
|
40
|
+
if (!Number.isInteger(dataIndex) || row == null || _typeof(row) !== 'object') return 0; // continue
|
|
41
|
+
var dataName = segments.slice(baseLength + 1).join('.');
|
|
42
|
+
// 地址里含 Column 的 void 段(`items.2.column1.qty`),先按内层字段名匹配,其次按 Column key。
|
|
43
|
+
var addressSegments = String((_feedback$address = feedback.address) !== null && _feedback$address !== void 0 ? _feedback$address : '').split('.');
|
|
44
|
+
var column = (_columns$find = columns.find(function (c) {
|
|
45
|
+
return c.dataName === dataName;
|
|
46
|
+
})) !== null && _columns$find !== void 0 ? _columns$find : columns.find(function (c) {
|
|
47
|
+
return addressSegments.includes(c.colId);
|
|
48
|
+
});
|
|
49
|
+
if (!column) return 0; // continue
|
|
50
|
+
var node = (_api$getRowNode = api.getRowNode) === null || _api$getRowNode === void 0 ? void 0 : _api$getRowNode.call(api, deps.getRowId(row));
|
|
51
|
+
var rowIndex = node === null || node === void 0 ? void 0 : node.rowIndex;
|
|
52
|
+
// 行被过滤掉了(不在显示列表里)无法定位。
|
|
53
|
+
if (typeof rowIndex !== 'number') return 0; // continue
|
|
54
|
+
var colOrder = displayed.indexOf(column.colId);
|
|
55
|
+
candidates.push({
|
|
56
|
+
rowOrder: rowIndex,
|
|
57
|
+
colOrder: colOrder < 0 ? Number.MAX_SAFE_INTEGER : colOrder,
|
|
58
|
+
rowIndex: rowIndex,
|
|
59
|
+
colId: column.colId,
|
|
60
|
+
feedback: feedback,
|
|
61
|
+
title: column.title
|
|
62
|
+
});
|
|
63
|
+
},
|
|
64
|
+
_ret;
|
|
65
|
+
for (_iterator.s(); !(_step = _iterator.n()).done;) {
|
|
66
|
+
_ret = _loop();
|
|
67
|
+
if (_ret === 0) continue;
|
|
68
|
+
}
|
|
69
|
+
} catch (err) {
|
|
70
|
+
_iterator.e(err);
|
|
71
|
+
} finally {
|
|
72
|
+
_iterator.f();
|
|
73
|
+
}
|
|
74
|
+
if (candidates.length === 0) return undefined;
|
|
75
|
+
candidates.sort(function (a, b) {
|
|
76
|
+
return a.rowOrder - b.rowOrder || a.colOrder - b.colOrder;
|
|
77
|
+
});
|
|
78
|
+
var first = candidates[0];
|
|
79
|
+
var reason = (_first$feedback$messa = first.feedback.messages) === null || _first$feedback$messa === void 0 ? void 0 : _first$feedback$messa[0];
|
|
80
|
+
var location = {
|
|
81
|
+
container: container,
|
|
82
|
+
addressPrefix: field.address.toString(),
|
|
83
|
+
address: (_first$feedback$addre = first.feedback.address) === null || _first$feedback$addre === void 0 ? void 0 : _first$feedback$addre.toString(),
|
|
84
|
+
title: first.title,
|
|
85
|
+
reason: typeof reason === 'string' ? reason : undefined,
|
|
86
|
+
reveal: function reveal() {
|
|
87
|
+
return deps.focus({
|
|
88
|
+
rowIndex: first.rowIndex,
|
|
89
|
+
colId: first.colId
|
|
90
|
+
});
|
|
91
|
+
}
|
|
92
|
+
};
|
|
93
|
+
return location;
|
|
94
|
+
};
|
|
95
|
+
};
|