@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
|
@@ -15,6 +15,8 @@ export { formatDocumentTime, latestDocumentAuditStep, normalizeDocumentAuditStep
|
|
|
15
15
|
export type { DocumentAuditStep } from './documentAudit';
|
|
16
16
|
export { confirmDocumentAction, formatValidationFeedback, pickPrimaryAction, reloadAfterAction, submitButtonLabel, useDocumentActions, useDocumentEditState, validateBeforeConfirm, warnSavedButActionFailed, } from './documentPage';
|
|
17
17
|
export type { DocumentDirtyTracker } from './documentPage';
|
|
18
|
+
export { LEAVE_GUARD_TEXT, confirmDiscardChanges, useLeaveGuard } from './leaveGuard';
|
|
19
|
+
export type { LeaveGuardOptions, RouteBlocker } from './leaveGuard';
|
|
18
20
|
export { useHeaderItemToggleGrid } from './useHeaderItemToggleGrid';
|
|
19
21
|
export type { HeaderItemModeLabels, HeaderItemReadScope, HeaderItemViewMode, UseHeaderItemToggleGridOptions } from './useHeaderItemToggleGrid';
|
|
20
22
|
export { createHeaderItemGetRowId, getHeaderItemRowId } from './headerItemRowId';
|
|
@@ -33,6 +33,18 @@ Object.defineProperty(exports, "DocumentStatusBar", {
|
|
|
33
33
|
return _DocumentHeader.DocumentStatusBar;
|
|
34
34
|
}
|
|
35
35
|
});
|
|
36
|
+
Object.defineProperty(exports, "LEAVE_GUARD_TEXT", {
|
|
37
|
+
enumerable: true,
|
|
38
|
+
get: function get() {
|
|
39
|
+
return _leaveGuard.LEAVE_GUARD_TEXT;
|
|
40
|
+
}
|
|
41
|
+
});
|
|
42
|
+
Object.defineProperty(exports, "confirmDiscardChanges", {
|
|
43
|
+
enumerable: true,
|
|
44
|
+
get: function get() {
|
|
45
|
+
return _leaveGuard.confirmDiscardChanges;
|
|
46
|
+
}
|
|
47
|
+
});
|
|
36
48
|
Object.defineProperty(exports, "confirmDocumentAction", {
|
|
37
49
|
enumerable: true,
|
|
38
50
|
get: function get() {
|
|
@@ -123,6 +135,12 @@ Object.defineProperty(exports, "useHeaderItemToggleGrid", {
|
|
|
123
135
|
return _useHeaderItemToggleGrid.useHeaderItemToggleGrid;
|
|
124
136
|
}
|
|
125
137
|
});
|
|
138
|
+
Object.defineProperty(exports, "useLeaveGuard", {
|
|
139
|
+
enumerable: true,
|
|
140
|
+
get: function get() {
|
|
141
|
+
return _leaveGuard.useLeaveGuard;
|
|
142
|
+
}
|
|
143
|
+
});
|
|
126
144
|
Object.defineProperty(exports, "useSelectNumberInputOnFocus", {
|
|
127
145
|
enumerable: true,
|
|
128
146
|
get: function get() {
|
|
@@ -147,6 +165,7 @@ var _DisabledActionHint = require("./DisabledActionHint");
|
|
|
147
165
|
var _DocumentHeader = require("./DocumentHeader");
|
|
148
166
|
var _documentAudit = require("./documentAudit");
|
|
149
167
|
var _documentPage = require("./documentPage");
|
|
168
|
+
var _leaveGuard = require("./leaveGuard");
|
|
150
169
|
var _useHeaderItemToggleGrid = require("./useHeaderItemToggleGrid");
|
|
151
170
|
var _headerItemRowId = require("./headerItemRowId");
|
|
152
171
|
var _useSelectNumberInputOnFocus = require("./useSelectNumberInputOnFocus");
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
/** 离开守卫的统一文案(DESIGN.md §6.8)。 */
|
|
2
|
+
export declare const LEAVE_GUARD_TEXT: {
|
|
3
|
+
readonly title: "有未保存的修改,离开后将丢失";
|
|
4
|
+
readonly keepEditing: "继续编辑";
|
|
5
|
+
readonly discard: "放弃修改";
|
|
6
|
+
};
|
|
7
|
+
/**
|
|
8
|
+
* 弹出「继续编辑 / 放弃修改」确认。放弃修改返回 true;继续编辑、Esc 返回 false。
|
|
9
|
+
* 默认焦点在「继续编辑」(§6.8),确认框宽 560(§9.0)。
|
|
10
|
+
*/
|
|
11
|
+
export declare const confirmDiscardChanges: () => Promise<boolean>;
|
|
12
|
+
/**
|
|
13
|
+
* 路由拦截适配器:qc-ui 不绑定路由库,由宿主把自己的路由拦截接进来。
|
|
14
|
+
* 宿主在导航发生时若 `shouldBlock()` 为真,就阻止并调用 `confirmLeave()`,得到 true 再放行。
|
|
15
|
+
* 返回取消拦截的函数。例(umi / react-router 的 history.block 一类):
|
|
16
|
+
* `(shouldBlock, confirmLeave) => history.block(tx => { if (!shouldBlock()) return; confirmLeave().then(ok => ok && (unblock(), tx.retry())); return false; })`
|
|
17
|
+
*/
|
|
18
|
+
export type RouteBlocker = (shouldBlock: () => boolean, confirmLeave: () => Promise<boolean>) => (() => void) | void;
|
|
19
|
+
export interface LeaveGuardOptions {
|
|
20
|
+
/** 浏览器刷新 / 关闭标签页时拦截,默认 true。 */
|
|
21
|
+
beforeUnload?: boolean;
|
|
22
|
+
/** 宿主的路由拦截适配器;不传则只守卫刷新 / 关闭与 `guardDiscard`。 */
|
|
23
|
+
blockRoute?: RouteBlocker;
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* 离开守卫统一入口:未保存时拦截 刷新 / 关闭标签页(beforeunload)与路由切换(经宿主适配器),
|
|
27
|
+
* 文案与按钮统一。切换页签(页面仍被缓存)不算离开,不在这里拦截(§6.8)。
|
|
28
|
+
*/
|
|
29
|
+
export declare const useLeaveGuard: (dirty: boolean, options?: LeaveGuardOptions) => {
|
|
30
|
+
guardDiscard: (proceed: () => void) => void;
|
|
31
|
+
};
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.useLeaveGuard = exports.confirmDiscardChanges = exports.LEAVE_GUARD_TEXT = void 0;
|
|
7
|
+
var _antd = require("antd");
|
|
8
|
+
var _react = require("react");
|
|
9
|
+
/** 离开守卫的统一文案(DESIGN.md §6.8)。 */
|
|
10
|
+
var LEAVE_GUARD_TEXT = exports.LEAVE_GUARD_TEXT = {
|
|
11
|
+
title: '有未保存的修改,离开后将丢失',
|
|
12
|
+
keepEditing: '继续编辑',
|
|
13
|
+
discard: '放弃修改'
|
|
14
|
+
};
|
|
15
|
+
|
|
16
|
+
/**
|
|
17
|
+
* 弹出「继续编辑 / 放弃修改」确认。放弃修改返回 true;继续编辑、Esc 返回 false。
|
|
18
|
+
* 默认焦点在「继续编辑」(§6.8),确认框宽 560(§9.0)。
|
|
19
|
+
*/
|
|
20
|
+
var confirmDiscardChanges = exports.confirmDiscardChanges = function confirmDiscardChanges() {
|
|
21
|
+
return new Promise(function (resolve) {
|
|
22
|
+
_antd.Modal.confirm({
|
|
23
|
+
title: LEAVE_GUARD_TEXT.title,
|
|
24
|
+
okText: LEAVE_GUARD_TEXT.discard,
|
|
25
|
+
cancelText: LEAVE_GUARD_TEXT.keepEditing,
|
|
26
|
+
okButtonProps: {
|
|
27
|
+
danger: true
|
|
28
|
+
},
|
|
29
|
+
focusable: {
|
|
30
|
+
autoFocusButton: 'cancel'
|
|
31
|
+
},
|
|
32
|
+
width: 560,
|
|
33
|
+
onOk: function onOk() {
|
|
34
|
+
return resolve(true);
|
|
35
|
+
},
|
|
36
|
+
onCancel: function onCancel() {
|
|
37
|
+
return resolve(false);
|
|
38
|
+
}
|
|
39
|
+
});
|
|
40
|
+
});
|
|
41
|
+
};
|
|
42
|
+
|
|
43
|
+
/**
|
|
44
|
+
* 路由拦截适配器:qc-ui 不绑定路由库,由宿主把自己的路由拦截接进来。
|
|
45
|
+
* 宿主在导航发生时若 `shouldBlock()` 为真,就阻止并调用 `confirmLeave()`,得到 true 再放行。
|
|
46
|
+
* 返回取消拦截的函数。例(umi / react-router 的 history.block 一类):
|
|
47
|
+
* `(shouldBlock, confirmLeave) => history.block(tx => { if (!shouldBlock()) return; confirmLeave().then(ok => ok && (unblock(), tx.retry())); return false; })`
|
|
48
|
+
*/
|
|
49
|
+
|
|
50
|
+
/**
|
|
51
|
+
* 离开守卫统一入口:未保存时拦截 刷新 / 关闭标签页(beforeunload)与路由切换(经宿主适配器),
|
|
52
|
+
* 文案与按钮统一。切换页签(页面仍被缓存)不算离开,不在这里拦截(§6.8)。
|
|
53
|
+
*/
|
|
54
|
+
var useLeaveGuard = exports.useLeaveGuard = function useLeaveGuard(dirty) {
|
|
55
|
+
var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
|
|
56
|
+
var _options$beforeUnload = options.beforeUnload,
|
|
57
|
+
beforeUnload = _options$beforeUnload === void 0 ? true : _options$beforeUnload,
|
|
58
|
+
blockRoute = options.blockRoute;
|
|
59
|
+
var dirtyRef = (0, _react.useRef)(dirty);
|
|
60
|
+
dirtyRef.current = dirty;
|
|
61
|
+
(0, _react.useEffect)(function () {
|
|
62
|
+
if (!beforeUnload || !dirty) return;
|
|
63
|
+
var handler = function handler(event) {
|
|
64
|
+
event.preventDefault();
|
|
65
|
+
// 部分浏览器要求设置 returnValue 才弹出原生提示。
|
|
66
|
+
event.returnValue = '';
|
|
67
|
+
};
|
|
68
|
+
window.addEventListener('beforeunload', handler);
|
|
69
|
+
return function () {
|
|
70
|
+
return window.removeEventListener('beforeunload', handler);
|
|
71
|
+
};
|
|
72
|
+
}, [beforeUnload, dirty]);
|
|
73
|
+
(0, _react.useEffect)(function () {
|
|
74
|
+
if (!blockRoute) return;
|
|
75
|
+
var release = blockRoute(function () {
|
|
76
|
+
return dirtyRef.current;
|
|
77
|
+
}, confirmDiscardChanges);
|
|
78
|
+
return typeof release === 'function' ? release : undefined;
|
|
79
|
+
}, [blockRoute]);
|
|
80
|
+
|
|
81
|
+
/** 返回、刷新等会丢弃录入的动作:有未保存修改先确认,放弃后才执行 `proceed`。 */
|
|
82
|
+
var guardDiscard = function guardDiscard(proceed) {
|
|
83
|
+
if (!dirtyRef.current) return proceed();
|
|
84
|
+
void confirmDiscardChanges().then(function (ok) {
|
|
85
|
+
return ok && proceed();
|
|
86
|
+
});
|
|
87
|
+
};
|
|
88
|
+
return {
|
|
89
|
+
guardDiscard: guardDiscard
|
|
90
|
+
};
|
|
91
|
+
};
|
|
@@ -1,7 +1,30 @@
|
|
|
1
1
|
import type { ModalProps } from 'antd';
|
|
2
2
|
import React from 'react';
|
|
3
3
|
import './style.less';
|
|
4
|
-
|
|
4
|
+
/** 默认宽度取弹层三档(560 / 720 / 960)中的最小档,原先是 antd 默认的 520。@author nokecy */
|
|
5
|
+
export declare const DRAGGABLE_MODAL_DEFAULT_WIDTH = 560;
|
|
6
|
+
export interface DraggableModalProps extends ModalProps {
|
|
7
|
+
/**
|
|
8
|
+
* 弹窗内有未保存修改。传 boolean,或传函数在每次关闭时取最新值(如 `() => form.modified`)。
|
|
9
|
+
* 不传视为没有可丢失的录入,关闭不拦截,所以既有调用方行为不变。
|
|
10
|
+
*/
|
|
11
|
+
dirty?: boolean | (() => boolean);
|
|
12
|
+
/**
|
|
13
|
+
* 有未保存修改(`dirty` 为真)时,右上角叉、遮罩、Esc、取消按钮先弹「继续编辑 / 放弃修改」确认,
|
|
14
|
+
* 默认 true(DESIGN.md §6.6)。选「放弃修改」才调用 onCancel,选「继续编辑」保持打开。
|
|
15
|
+
*/
|
|
16
|
+
confirmOnDirtyClose?: boolean;
|
|
17
|
+
/**
|
|
18
|
+
* 是否显示八方向缩放手柄,默认 true(既有调用方一直可缩放,保持不变)。
|
|
19
|
+
* 关闭后只保留标题拖动,尺寸完全由 width / style 决定。缩放结果不持久化,重新打开恢复默认。
|
|
20
|
+
*/
|
|
21
|
+
resizable?: boolean;
|
|
22
|
+
/** 缩放的最小宽度,默认 400;表单类弹层应传 560(规范最小一档)。超出视口 95% 时以视口为准。 */
|
|
23
|
+
minWidth?: number;
|
|
24
|
+
/** 缩放的最小高度,默认 300:容纳标题、底栏与至少一行内容。 */
|
|
25
|
+
minHeight?: number;
|
|
26
|
+
}
|
|
27
|
+
declare const _default: ((props: DraggableModalProps) => React.JSX.Element) & {
|
|
5
28
|
Fill: React.ForwardRefExoticComponent<React.HTMLAttributes<HTMLDivElement> & React.RefAttributes<HTMLDivElement>>;
|
|
6
29
|
};
|
|
7
30
|
export default _default;
|
|
@@ -3,13 +3,14 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
-
exports.default = void 0;
|
|
6
|
+
exports.default = exports.DRAGGABLE_MODAL_DEFAULT_WIDTH = void 0;
|
|
7
7
|
var _antd = require("antd");
|
|
8
8
|
var _react = _interopRequireWildcard(require("react"));
|
|
9
9
|
var _reactDraggable = _interopRequireDefault(require("react-draggable"));
|
|
10
|
+
var _leaveGuard = require("../documentPage/leaveGuard");
|
|
10
11
|
require("./style.less");
|
|
11
12
|
var _jsxRuntime = require("react/jsx-runtime");
|
|
12
|
-
var _excluded = ["wrapClassName", "width", "open", "style", "destroyOnClose", "destroyOnHidden", "mask", "maskClosable"];
|
|
13
|
+
var _excluded = ["wrapClassName", "width", "open", "style", "destroyOnClose", "destroyOnHidden", "mask", "maskClosable", "dirty", "confirmOnDirtyClose", "onCancel", "resizable", "minWidth", "minHeight"];
|
|
13
14
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
14
15
|
function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(e) { return e ? t : r; })(e); }
|
|
15
16
|
function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != _typeof(e) && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && Object.prototype.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
|
|
@@ -34,6 +35,8 @@ var Fill = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
|
|
|
34
35
|
}));
|
|
35
36
|
});
|
|
36
37
|
|
|
38
|
+
/** 默认宽度取弹层三档(560 / 720 / 960)中的最小档,原先是 antd 默认的 520。@author nokecy */
|
|
39
|
+
var DRAGGABLE_MODAL_DEFAULT_WIDTH = exports.DRAGGABLE_MODAL_DEFAULT_WIDTH = 560;
|
|
37
40
|
/** 支持标题拖动、八方向缩放及自适应内容区的公共弹窗。@author nokecy */
|
|
38
41
|
var DraggableModal = function DraggableModal(props) {
|
|
39
42
|
var _geometry$width;
|
|
@@ -70,7 +73,8 @@ var DraggableModal = function DraggableModal(props) {
|
|
|
70
73
|
var resizeFrame = (0, _react.useRef)(undefined);
|
|
71
74
|
// antd 6 以 destroyOnHidden、mask.closable 取代 destroyOnClose、maskClosable;旧属性仍按原默认值生效。@author nokecy
|
|
72
75
|
var wrapClassName = props.wrapClassName,
|
|
73
|
-
width = props.width,
|
|
76
|
+
_props$width = props.width,
|
|
77
|
+
width = _props$width === void 0 ? DRAGGABLE_MODAL_DEFAULT_WIDTH : _props$width,
|
|
74
78
|
open = props.open,
|
|
75
79
|
style = props.style,
|
|
76
80
|
destroyOnClose = props.destroyOnClose,
|
|
@@ -78,7 +82,30 @@ var DraggableModal = function DraggableModal(props) {
|
|
|
78
82
|
destroyOnHidden = _props$destroyOnHidde === void 0 ? destroyOnClose !== null && destroyOnClose !== void 0 ? destroyOnClose : true : _props$destroyOnHidde,
|
|
79
83
|
mask = props.mask,
|
|
80
84
|
maskClosable = props.maskClosable,
|
|
85
|
+
dirty = props.dirty,
|
|
86
|
+
_props$confirmOnDirty = props.confirmOnDirtyClose,
|
|
87
|
+
confirmOnDirtyClose = _props$confirmOnDirty === void 0 ? true : _props$confirmOnDirty,
|
|
88
|
+
onCancel = props.onCancel,
|
|
89
|
+
_props$resizable = props.resizable,
|
|
90
|
+
resizable = _props$resizable === void 0 ? true : _props$resizable,
|
|
91
|
+
_props$minWidth = props.minWidth,
|
|
92
|
+
minWidth = _props$minWidth === void 0 ? 400 : _props$minWidth,
|
|
93
|
+
_props$minHeight = props.minHeight,
|
|
94
|
+
minHeight = _props$minHeight === void 0 ? 300 : _props$minHeight,
|
|
81
95
|
restProps = _objectWithoutProperties(props, _excluded);
|
|
96
|
+
// 确认期间挡住重复触发(连按 Esc 不叠出多个确认框)。
|
|
97
|
+
var confirmingRef = (0, _react.useRef)(false);
|
|
98
|
+
var handleCancel = function handleCancel(event) {
|
|
99
|
+
var isDirty = typeof dirty === 'function' ? dirty() : !!dirty;
|
|
100
|
+
if (!confirmOnDirtyClose || !isDirty) return onCancel === null || onCancel === void 0 ? void 0 : onCancel(event);
|
|
101
|
+
if (confirmingRef.current) return;
|
|
102
|
+
confirmingRef.current = true;
|
|
103
|
+
void (0, _leaveGuard.confirmDiscardChanges)().then(function (ok) {
|
|
104
|
+
if (ok) onCancel === null || onCancel === void 0 || onCancel(event);
|
|
105
|
+
}).finally(function () {
|
|
106
|
+
confirmingRef.current = false;
|
|
107
|
+
});
|
|
108
|
+
};
|
|
82
109
|
var mergedMask = typeof mask === 'boolean' ? {
|
|
83
110
|
enabled: mask,
|
|
84
111
|
closable: maskClosable !== null && maskClosable !== void 0 ? maskClosable : false
|
|
@@ -137,6 +164,7 @@ var DraggableModal = function DraggableModal(props) {
|
|
|
137
164
|
var _resizeCleanup$curren2;
|
|
138
165
|
event.preventDefault();
|
|
139
166
|
event.stopPropagation();
|
|
167
|
+
if (!resizable) return;
|
|
140
168
|
var panel = draggleRef.current;
|
|
141
169
|
var modal = panel === null || panel === void 0 ? void 0 : panel.closest('.ant-modal');
|
|
142
170
|
if (!panel || !modal) return;
|
|
@@ -163,8 +191,9 @@ var DraggableModal = function DraggableModal(props) {
|
|
|
163
191
|
var nextWidth = start.width + (direction.includes('e') ? dx : direction.includes('w') ? -dx : 0);
|
|
164
192
|
var nextHeight = start.height + (direction.includes('s') ? dy : direction.includes('n') ? -dy : 0);
|
|
165
193
|
var next = {
|
|
166
|
-
|
|
167
|
-
|
|
194
|
+
// 上限(视口 95%)优先于下限,小屏上不会出现比视口还大的最小尺寸。
|
|
195
|
+
width: Math.min(Math.max(minWidth, nextWidth), window.innerWidth * 0.95),
|
|
196
|
+
height: Math.min(Math.max(minHeight, nextHeight), window.innerHeight * 0.95),
|
|
168
197
|
left: start.left,
|
|
169
198
|
top: start.top
|
|
170
199
|
};
|
|
@@ -199,6 +228,7 @@ var DraggableModal = function DraggableModal(props) {
|
|
|
199
228
|
destroyOnHidden: destroyOnHidden
|
|
200
229
|
}, restProps), {}, {
|
|
201
230
|
open: open,
|
|
231
|
+
onCancel: handleCancel,
|
|
202
232
|
width: (_geometry$width = geometry === null || geometry === void 0 ? void 0 : geometry.width) !== null && _geometry$width !== void 0 ? _geometry$width : width,
|
|
203
233
|
style: geometry ? _objectSpread(_objectSpread(_objectSpread({}, style), geometry), {}, {
|
|
204
234
|
position: 'fixed',
|
|
@@ -242,7 +272,7 @@ var DraggableModal = function DraggableModal(props) {
|
|
|
242
272
|
height: geometry ? '100%' : undefined,
|
|
243
273
|
width: '100%'
|
|
244
274
|
},
|
|
245
|
-
children: [modal, ['e', 's', 'w', 'n', 'se', 'sw', 'ne', 'nw'].map(function (direction) {
|
|
275
|
+
children: [modal, resizable && ['e', 's', 'w', 'n', 'se', 'sw', 'ne', 'nw'].map(function (direction) {
|
|
246
276
|
return /*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
|
|
247
277
|
className: "resize-handle resize-handle-".concat(direction),
|
|
248
278
|
onMouseDown: function onMouseDown(event) {
|
|
@@ -21,28 +21,28 @@
|
|
|
21
21
|
.successOverlay::before {
|
|
22
22
|
top: 0;
|
|
23
23
|
left: 0;
|
|
24
|
-
background: linear-gradient(to right, green, transparent);
|
|
24
|
+
background: linear-gradient(to right, var(--ant-color-success, green), transparent);
|
|
25
25
|
transform: rotate(0deg);
|
|
26
26
|
}
|
|
27
27
|
|
|
28
28
|
.successOverlay::after {
|
|
29
29
|
top: 0%;
|
|
30
30
|
left: 100%;
|
|
31
|
-
background: linear-gradient(to left, green, transparent);
|
|
31
|
+
background: linear-gradient(to left, var(--ant-color-success, green), transparent);
|
|
32
32
|
transform: rotate(0deg) translate(calc(-1 * var(--alert-size)), 0px);
|
|
33
33
|
}
|
|
34
34
|
|
|
35
35
|
.successOverlay > div::before {
|
|
36
36
|
top: 0;
|
|
37
37
|
left: 0;
|
|
38
|
-
background: linear-gradient(to top, green, transparent);
|
|
38
|
+
background: linear-gradient(to top, var(--ant-color-success, green), transparent);
|
|
39
39
|
transform: rotate(180deg);
|
|
40
40
|
}
|
|
41
41
|
|
|
42
42
|
.successOverlay > div::after {
|
|
43
43
|
top: 100%;
|
|
44
44
|
left: 0;
|
|
45
|
-
background: linear-gradient(to top, green, transparent);
|
|
45
|
+
background: linear-gradient(to top, var(--ant-color-success, green), transparent);
|
|
46
46
|
transform: rotate(0deg) translate(0px, calc(-1 * var(--alert-size)));
|
|
47
47
|
}
|
|
48
48
|
|
|
@@ -78,28 +78,28 @@
|
|
|
78
78
|
.errorOverlay::before {
|
|
79
79
|
top: 0;
|
|
80
80
|
left: 0;
|
|
81
|
-
background: linear-gradient(to right, red, transparent);
|
|
81
|
+
background: linear-gradient(to right, var(--ant-color-error, red), transparent);
|
|
82
82
|
transform: rotate(0deg);
|
|
83
83
|
}
|
|
84
84
|
|
|
85
85
|
.errorOverlay::after {
|
|
86
86
|
top: 0%;
|
|
87
87
|
left: 100%;
|
|
88
|
-
background: linear-gradient(to left, red, transparent);
|
|
88
|
+
background: linear-gradient(to left, var(--ant-color-error, red), transparent);
|
|
89
89
|
transform: rotate(0deg) translate(calc(-1 * var(--alert-size)), 0px);
|
|
90
90
|
}
|
|
91
91
|
|
|
92
92
|
.errorOverlay > div::before {
|
|
93
93
|
top: 0;
|
|
94
94
|
left: 0;
|
|
95
|
-
background: linear-gradient(to top, red, transparent);
|
|
95
|
+
background: linear-gradient(to top, var(--ant-color-error, red), transparent);
|
|
96
96
|
transform: rotate(180deg);
|
|
97
97
|
}
|
|
98
98
|
|
|
99
99
|
.errorOverlay > div::after {
|
|
100
100
|
top: 100%;
|
|
101
101
|
left: 0;
|
|
102
|
-
background: linear-gradient(to top, red, transparent);
|
|
102
|
+
background: linear-gradient(to top, var(--ant-color-error, red), transparent);
|
|
103
103
|
transform: rotate(0deg) translate(0px, calc(-1 * var(--alert-size)));
|
|
104
104
|
}
|
|
105
105
|
|
|
@@ -156,9 +156,9 @@
|
|
|
156
156
|
}
|
|
157
157
|
|
|
158
158
|
.alertBadge-success {
|
|
159
|
-
color: green;
|
|
159
|
+
color: var(--ant-color-success, green);
|
|
160
160
|
}
|
|
161
161
|
|
|
162
162
|
.alertBadge-error {
|
|
163
|
-
color: red;
|
|
163
|
+
color: var(--ant-color-error, red);
|
|
164
164
|
}
|
package/dist/cjs/index.d.ts
CHANGED
|
@@ -37,7 +37,10 @@ export * from "./scanCollect/index";
|
|
|
37
37
|
export * from "./documentPage/index";
|
|
38
38
|
export { semanticTextColors, toGridTextColor, gridValueEnum } from "./ag-grid-plus/utils/valueEnumColor";
|
|
39
39
|
export type { SemanticPreset } from "./ag-grid-plus/utils/valueEnumColor";
|
|
40
|
+
export { StatusPill, STATUS_PILL } from "./ag-grid-plus/utils/statusPill";
|
|
41
|
+
export type { StatusKey } from "./ag-grid-plus/utils/statusPill";
|
|
40
42
|
export { getQcColDefProp } from "./ag-grid-plus/utils/agGridCompat";
|
|
43
|
+
export { setAgGridLicenseKey } from "./ag-grid-plus/index";
|
|
41
44
|
export { contrastRatio, relativeLuminance, darkenUntilContrast, lightenUntilContrast, toRgb, toHsl, fromHsl } from "./shared/contrast";
|
|
42
45
|
export { BusinessDecimal, decimal, decimalText, nonNegativeDecimal, roundDecimal, sumDecimals, formatDecimal } from "./shared/businessDecimal";
|
|
43
46
|
export type { DecimalValue } from "./shared/businessDecimal";
|
package/dist/cjs/index.js
CHANGED
|
@@ -14,6 +14,7 @@ var _exportNames = {
|
|
|
14
14
|
useGridSchemes: true,
|
|
15
15
|
LocalStorageSchemeAdapter: true,
|
|
16
16
|
BackendApiSchemeAdapter: true,
|
|
17
|
+
setAgGridLicenseKey: true,
|
|
17
18
|
ArrayTable: true,
|
|
18
19
|
ArrayTableIndex: true,
|
|
19
20
|
ColumnPresets: true,
|
|
@@ -56,6 +57,8 @@ var _exportNames = {
|
|
|
56
57
|
semanticTextColors: true,
|
|
57
58
|
toGridTextColor: true,
|
|
58
59
|
gridValueEnum: true,
|
|
60
|
+
StatusPill: true,
|
|
61
|
+
STATUS_PILL: true,
|
|
59
62
|
getQcColDefProp: true,
|
|
60
63
|
contrastRatio: true,
|
|
61
64
|
relativeLuminance: true,
|
|
@@ -271,6 +274,18 @@ Object.defineProperty(exports, "RuleBuilder", {
|
|
|
271
274
|
return _index15.RuleBuilder;
|
|
272
275
|
}
|
|
273
276
|
});
|
|
277
|
+
Object.defineProperty(exports, "STATUS_PILL", {
|
|
278
|
+
enumerable: true,
|
|
279
|
+
get: function get() {
|
|
280
|
+
return _statusPill.STATUS_PILL;
|
|
281
|
+
}
|
|
282
|
+
});
|
|
283
|
+
Object.defineProperty(exports, "StatusPill", {
|
|
284
|
+
enumerable: true,
|
|
285
|
+
get: function get() {
|
|
286
|
+
return _statusPill.StatusPill;
|
|
287
|
+
}
|
|
288
|
+
});
|
|
274
289
|
Object.defineProperty(exports, "TemplateCategory", {
|
|
275
290
|
enumerable: true,
|
|
276
291
|
get: function get() {
|
|
@@ -415,6 +430,12 @@ Object.defineProperty(exports, "semanticTextColors", {
|
|
|
415
430
|
return _valueEnumColor.semanticTextColors;
|
|
416
431
|
}
|
|
417
432
|
});
|
|
433
|
+
Object.defineProperty(exports, "setAgGridLicenseKey", {
|
|
434
|
+
enumerable: true,
|
|
435
|
+
get: function get() {
|
|
436
|
+
return _index.setAgGridLicenseKey;
|
|
437
|
+
}
|
|
438
|
+
});
|
|
418
439
|
Object.defineProperty(exports, "sumDecimals", {
|
|
419
440
|
enumerable: true,
|
|
420
441
|
get: function get() {
|
|
@@ -535,6 +556,7 @@ Object.keys(_index20).forEach(function (key) {
|
|
|
535
556
|
});
|
|
536
557
|
});
|
|
537
558
|
var _valueEnumColor = require("./ag-grid-plus/utils/valueEnumColor");
|
|
559
|
+
var _statusPill = require("./ag-grid-plus/utils/statusPill");
|
|
538
560
|
var _agGridCompat = require("./ag-grid-plus/utils/agGridCompat");
|
|
539
561
|
var _contrast = require("./shared/contrast");
|
|
540
562
|
var _businessDecimal = require("./shared/businessDecimal");
|
|
@@ -47,13 +47,17 @@ var ReadingArrayTable = (0, _formilyReact.observer)(function (_ref) {
|
|
|
47
47
|
var showIndex = columns.length > 0 && !(0, _indexColumn.hasOwnIndexColumn)(sources);
|
|
48
48
|
if (showIndex) columns.unshift((0, _indexColumn.makeIndexColumn)());
|
|
49
49
|
var theme = (0, _theme.useArrayTableTheme)();
|
|
50
|
+
var _useArrayTableMetrics = (0, _theme.useArrayTableMetrics)(),
|
|
51
|
+
rowHeight = _useArrayTableMetrics.rowHeight,
|
|
52
|
+
headerHeight = _useArrayTableMetrics.headerHeight;
|
|
50
53
|
return /*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
|
|
51
54
|
style: {
|
|
52
55
|
height: height !== null && height !== void 0 ? height : 400
|
|
53
56
|
},
|
|
54
57
|
children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_agGridReact.AgGridReact, {
|
|
55
58
|
theme: theme,
|
|
56
|
-
rowHeight:
|
|
59
|
+
rowHeight: rowHeight,
|
|
60
|
+
headerHeight: headerHeight,
|
|
57
61
|
enableCellTextSelection: true,
|
|
58
62
|
ensureDomOrder: true,
|
|
59
63
|
defaultColDef: {
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { type ScanInputProps } from './ScanInput';
|
|
3
|
+
/** 一次扫码的结果。每次扫码传入新对象即重新触发一次边缘闪动;结果文字保留到下一次传入。 */
|
|
4
|
+
export interface ScanResult {
|
|
5
|
+
type: 'success' | 'error';
|
|
6
|
+
/** 徽标文字,不传按类型给「成功」/「失败」 */
|
|
7
|
+
message?: React.ReactNode;
|
|
8
|
+
}
|
|
9
|
+
export interface ScanFeedbackInputProps extends ScanInputProps {
|
|
10
|
+
/** 最近一次扫码结果;换成新对象 = 新的一次扫码 */
|
|
11
|
+
result?: ScanResult;
|
|
12
|
+
/** 播放提示音(WebAudio 合成),默认 false 静音 */
|
|
13
|
+
sound?: boolean;
|
|
14
|
+
/** 边缘闪动时长(毫秒),默认 1200 */
|
|
15
|
+
flashDuration?: number;
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* 扫码输入框 + 反馈整体组件(规范 §11.1):
|
|
19
|
+
* 输入框下方预留固定高度的图标+文字徽标(语义色,保留到下一次扫码),
|
|
20
|
+
* 屏幕边缘闪动约 1.2 秒后收起,可选提示音。
|
|
21
|
+
* 边缘闪动层相对最近的定位祖先铺满,宿主需要整屏效果时把它放进整页容器即可。
|
|
22
|
+
*
|
|
23
|
+
* @author nokecy
|
|
24
|
+
*/
|
|
25
|
+
declare const ScanFeedbackInput: React.FC<ScanFeedbackInputProps>;
|
|
26
|
+
export default ScanFeedbackInput;
|
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
|
|
4
|
+
Object.defineProperty(exports, "__esModule", {
|
|
5
|
+
value: true
|
|
6
|
+
});
|
|
7
|
+
exports.default = void 0;
|
|
8
|
+
var _icons = require("@ant-design/icons");
|
|
9
|
+
var _react = _interopRequireWildcard(require("react"));
|
|
10
|
+
var _index = _interopRequireDefault(require("../fullScreenAlert/index"));
|
|
11
|
+
var _ScanInput = _interopRequireDefault(require("./ScanInput"));
|
|
12
|
+
var _scanSound = require("./scanSound");
|
|
13
|
+
var _jsxRuntime = require("react/jsx-runtime");
|
|
14
|
+
var _excluded = ["result", "sound", "flashDuration"];
|
|
15
|
+
/** 一次扫码的结果。每次扫码传入新对象即重新触发一次边缘闪动;结果文字保留到下一次传入。 */
|
|
16
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
17
|
+
function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(e) { return e ? t : r; })(e); }
|
|
18
|
+
function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != _typeof(e) && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && Object.prototype.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
|
|
19
|
+
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; }
|
|
20
|
+
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; }
|
|
21
|
+
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; }
|
|
22
|
+
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : String(i); }
|
|
23
|
+
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); }
|
|
24
|
+
function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
|
|
25
|
+
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."); }
|
|
26
|
+
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); }
|
|
27
|
+
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; }
|
|
28
|
+
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; } }
|
|
29
|
+
function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
|
|
30
|
+
function _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }
|
|
31
|
+
function _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }
|
|
32
|
+
/** 反馈区预留高度:徽标出现、消失都不推动页面其余内容。 */
|
|
33
|
+
var BADGE_HEIGHT = 48;
|
|
34
|
+
|
|
35
|
+
/**
|
|
36
|
+
* 扫码输入框 + 反馈整体组件(规范 §11.1):
|
|
37
|
+
* 输入框下方预留固定高度的图标+文字徽标(语义色,保留到下一次扫码),
|
|
38
|
+
* 屏幕边缘闪动约 1.2 秒后收起,可选提示音。
|
|
39
|
+
* 边缘闪动层相对最近的定位祖先铺满,宿主需要整屏效果时把它放进整页容器即可。
|
|
40
|
+
*
|
|
41
|
+
* @author nokecy
|
|
42
|
+
*/
|
|
43
|
+
var ScanFeedbackInput = function ScanFeedbackInput(_ref) {
|
|
44
|
+
var _result$message;
|
|
45
|
+
var result = _ref.result,
|
|
46
|
+
_ref$sound = _ref.sound,
|
|
47
|
+
sound = _ref$sound === void 0 ? false : _ref$sound,
|
|
48
|
+
_ref$flashDuration = _ref.flashDuration,
|
|
49
|
+
flashDuration = _ref$flashDuration === void 0 ? 1200 : _ref$flashDuration,
|
|
50
|
+
inputProps = _objectWithoutProperties(_ref, _excluded);
|
|
51
|
+
// 每次拿到新的 result 递增,作为闪动层的 key 使其重新挂载、从头计时。
|
|
52
|
+
var _useState = (0, _react.useState)({
|
|
53
|
+
id: 0,
|
|
54
|
+
active: false
|
|
55
|
+
}),
|
|
56
|
+
_useState2 = _slicedToArray(_useState, 2),
|
|
57
|
+
flash = _useState2[0],
|
|
58
|
+
setFlash = _useState2[1];
|
|
59
|
+
var first = (0, _react.useRef)(true);
|
|
60
|
+
(0, _react.useEffect)(function () {
|
|
61
|
+
// 首次渲染时的 result 视为历史结果(徽标显示),不闪、不响。
|
|
62
|
+
if (first.current) {
|
|
63
|
+
first.current = false;
|
|
64
|
+
return;
|
|
65
|
+
}
|
|
66
|
+
if (!result) return;
|
|
67
|
+
setFlash(function (prev) {
|
|
68
|
+
return {
|
|
69
|
+
id: prev.id + 1,
|
|
70
|
+
active: true
|
|
71
|
+
};
|
|
72
|
+
});
|
|
73
|
+
if (sound) (0, _scanSound.playScanSound)(result.type);
|
|
74
|
+
}, [result]); // eslint-disable-line react-hooks/exhaustive-deps
|
|
75
|
+
var onFlashChange = (0, _react.useCallback)(function (active) {
|
|
76
|
+
return setFlash(function (prev) {
|
|
77
|
+
return _objectSpread(_objectSpread({}, prev), {}, {
|
|
78
|
+
active: active
|
|
79
|
+
});
|
|
80
|
+
});
|
|
81
|
+
}, []);
|
|
82
|
+
var isError = (result === null || result === void 0 ? void 0 : result.type) === 'error';
|
|
83
|
+
return /*#__PURE__*/(0, _jsxRuntime.jsxs)("div", {
|
|
84
|
+
className: "scanFeedbackInput",
|
|
85
|
+
children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_ScanInput.default, _objectSpread({}, inputProps)), /*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
|
|
86
|
+
className: "scanFeedbackBadge",
|
|
87
|
+
role: "status",
|
|
88
|
+
"aria-live": "polite",
|
|
89
|
+
style: {
|
|
90
|
+
minHeight: BADGE_HEIGHT,
|
|
91
|
+
display: 'flex',
|
|
92
|
+
alignItems: 'center',
|
|
93
|
+
justifyContent: 'center',
|
|
94
|
+
gap: 8,
|
|
95
|
+
fontSize: 20,
|
|
96
|
+
fontWeight: 700,
|
|
97
|
+
color: result ? isError ? 'var(--ant-color-error, red)' : 'var(--ant-color-success, green)' : undefined
|
|
98
|
+
},
|
|
99
|
+
children: result ? /*#__PURE__*/(0, _jsxRuntime.jsxs)(_jsxRuntime.Fragment, {
|
|
100
|
+
children: [isError ? /*#__PURE__*/(0, _jsxRuntime.jsx)(_icons.CloseCircleFilled, {}) : /*#__PURE__*/(0, _jsxRuntime.jsx)(_icons.CheckCircleFilled, {}), /*#__PURE__*/(0, _jsxRuntime.jsx)("span", {
|
|
101
|
+
children: (_result$message = result.message) !== null && _result$message !== void 0 ? _result$message : isError ? '失败' : '成功'
|
|
102
|
+
})]
|
|
103
|
+
}) : null
|
|
104
|
+
}), result ? /*#__PURE__*/(0, _jsxRuntime.jsx)(_index.default, {
|
|
105
|
+
active: flash.active,
|
|
106
|
+
type: result.type,
|
|
107
|
+
duration: flashDuration,
|
|
108
|
+
showIcon: false,
|
|
109
|
+
onChange: onFlashChange
|
|
110
|
+
}, flash.id) : null]
|
|
111
|
+
});
|
|
112
|
+
};
|
|
113
|
+
var _default = exports.default = ScanFeedbackInput;
|
|
@@ -6,6 +6,10 @@
|
|
|
6
6
|
*/
|
|
7
7
|
export { default as ScanInput } from './ScanInput';
|
|
8
8
|
export type { ScanInputProps } from './ScanInput';
|
|
9
|
+
export { default as ScanFeedbackInput } from './ScanFeedbackInput';
|
|
10
|
+
export type { ScanFeedbackInputProps, ScanResult } from './ScanFeedbackInput';
|
|
11
|
+
export { playScanSound } from './scanSound';
|
|
12
|
+
export type { ScanSoundType } from './scanSound';
|
|
9
13
|
export { default as usePromiseQueue } from './usePromiseQueue';
|
|
10
14
|
export type { PromiseQueue, PromiseQueueOptions, QueueTask } from './usePromiseQueue';
|
|
11
15
|
export { createRequestGate } from './requestGate';
|