@nokecy/qc-ui 1.1.74 → 1.1.76
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/dialogSelect/index.d.ts +2 -2
- package/dist/cjs/dialogSelect/index.js +65 -10
- package/dist/cjs/entitySelect/index.d.ts +57 -0
- package/dist/cjs/entitySelect/index.js +172 -0
- package/dist/cjs/exportButton/exportAction.d.ts +74 -0
- package/dist/cjs/exportButton/exportAction.js +199 -0
- package/dist/cjs/exportButton/index.d.ts +39 -0
- package/dist/cjs/exportButton/index.js +295 -0
- package/dist/cjs/importModal/index.d.ts +9 -0
- package/dist/cjs/importModal/index.js +46 -8
- package/dist/cjs/index.d.ts +6 -0
- package/dist/cjs/index.js +74 -0
- package/dist/cjs/readPretty/arrayTable.d.ts +6 -0
- package/dist/cjs/readPretty/arrayTable.js +156 -0
- package/dist/cjs/readPretty/controls.d.ts +11 -0
- package/dist/cjs/readPretty/controls.js +68 -0
- package/dist/cjs/readPretty/decimal.d.ts +4 -0
- package/dist/cjs/readPretty/decimal.js +28 -0
- package/dist/cjs/readPretty/formily.d.ts +2 -0
- package/dist/cjs/readPretty/formily.js +71 -0
- package/dist/cjs/readPretty/hoistStatics.d.ts +1 -0
- package/dist/cjs/readPretty/hoistStatics.js +37 -0
- package/dist/cjs/readPretty/index.d.ts +11 -0
- package/dist/cjs/readPretty/index.js +70 -0
- package/dist/cjs/readPretty/selectValue.d.ts +7 -0
- package/dist/cjs/readPretty/selectValue.js +60 -0
- package/dist/cjs/readPretty/values.d.ts +4 -0
- package/dist/cjs/readPretty/values.js +49 -0
- package/dist/cjs/utils/download.d.ts +6 -0
- package/dist/cjs/utils/download.js +23 -0
- package/dist/esm/dialogSelect/index.d.ts +2 -2
- package/dist/esm/dialogSelect/index.js +59 -4
- package/dist/esm/entitySelect/index.d.ts +57 -0
- package/dist/esm/entitySelect/index.js +164 -0
- package/dist/esm/exportButton/exportAction.d.ts +74 -0
- package/dist/esm/exportButton/exportAction.js +193 -0
- package/dist/esm/exportButton/index.d.ts +39 -0
- package/dist/esm/exportButton/index.js +259 -0
- package/dist/esm/importModal/index.d.ts +9 -0
- package/dist/esm/importModal/index.js +46 -8
- package/dist/esm/index.d.ts +6 -0
- package/dist/esm/index.js +4 -0
- package/dist/esm/readPretty/arrayTable.d.ts +6 -0
- package/dist/esm/readPretty/arrayTable.js +147 -0
- package/dist/esm/readPretty/controls.d.ts +11 -0
- package/dist/esm/readPretty/controls.js +62 -0
- package/dist/esm/readPretty/decimal.d.ts +4 -0
- package/dist/esm/readPretty/decimal.js +22 -0
- package/dist/esm/readPretty/formily.d.ts +2 -0
- package/dist/esm/readPretty/formily.js +63 -0
- package/dist/esm/readPretty/hoistStatics.d.ts +1 -0
- package/dist/esm/readPretty/hoistStatics.js +31 -0
- package/dist/esm/readPretty/index.d.ts +11 -0
- package/dist/esm/readPretty/index.js +12 -0
- package/dist/esm/readPretty/selectValue.d.ts +7 -0
- package/dist/esm/readPretty/selectValue.js +53 -0
- package/dist/esm/readPretty/values.d.ts +4 -0
- package/dist/esm/readPretty/values.js +43 -0
- package/dist/esm/utils/download.d.ts +6 -0
- package/dist/esm/utils/download.js +17 -0
- package/dist/umd/qc-ui.min.js +1 -1
- package/package.json +1 -1
|
@@ -40,7 +40,10 @@ var ImportModal = function ImportModal(props) {
|
|
|
40
40
|
_props$downloadBlob = props.downloadBlob,
|
|
41
41
|
downloadBlob = _props$downloadBlob === void 0 ? defaultDownloadBlob : _props$downloadBlob,
|
|
42
42
|
serverUrl = props.serverUrl,
|
|
43
|
-
buttonProps = props.buttonProps
|
|
43
|
+
buttonProps = props.buttonProps,
|
|
44
|
+
request = props.request,
|
|
45
|
+
method = props.method,
|
|
46
|
+
onRealSuccess = props.onRealSuccess;
|
|
44
47
|
var _useBoolean = (0, _ahooks.useBoolean)(false),
|
|
45
48
|
_useBoolean2 = _slicedToArray(_useBoolean, 2),
|
|
46
49
|
visible = _useBoolean2[0],
|
|
@@ -70,12 +73,46 @@ var ImportModal = function ImportModal(props) {
|
|
|
70
73
|
}
|
|
71
74
|
}, "\u6A21\u7248")),
|
|
72
75
|
type: "info"
|
|
73
|
-
}), /*#__PURE__*/_react.default.createElement(_antd.Upload.Dragger, {
|
|
76
|
+
}), /*#__PURE__*/_react.default.createElement(_antd.Upload.Dragger, _extends({
|
|
74
77
|
style: {
|
|
75
78
|
marginTop: 10
|
|
76
79
|
},
|
|
77
80
|
multiple: false,
|
|
78
|
-
action: getUploadUrl()
|
|
81
|
+
action: getUploadUrl()
|
|
82
|
+
}, request ? {
|
|
83
|
+
customRequest: function customRequest(_ref) {
|
|
84
|
+
var action = _ref.action,
|
|
85
|
+
file = _ref.file,
|
|
86
|
+
headers = _ref.headers,
|
|
87
|
+
onError = _ref.onError,
|
|
88
|
+
onProgress = _ref.onProgress,
|
|
89
|
+
onSuccess = _ref.onSuccess;
|
|
90
|
+
var formData = new FormData();
|
|
91
|
+
formData.append('file', file);
|
|
92
|
+
request(action, {
|
|
93
|
+
method: method || 'POST',
|
|
94
|
+
data: formData,
|
|
95
|
+
headers: headers,
|
|
96
|
+
// 导入失败要展示行级原因,交给下面的弹窗统一报,不再走全局吐司。
|
|
97
|
+
skipErrorHandler: true,
|
|
98
|
+
onUploadProgress: function onUploadProgress(_ref2) {
|
|
99
|
+
var total = _ref2.total,
|
|
100
|
+
loaded = _ref2.loaded;
|
|
101
|
+
onProgress === null || onProgress === void 0 || onProgress({
|
|
102
|
+
percent: Number((loaded / total * 100).toFixed(2))
|
|
103
|
+
}, file);
|
|
104
|
+
}
|
|
105
|
+
}).then(function (response) {
|
|
106
|
+
onSuccess === null || onSuccess === void 0 || onSuccess(response, file);
|
|
107
|
+
onRealSuccess === null || onRealSuccess === void 0 || onRealSuccess(response);
|
|
108
|
+
})
|
|
109
|
+
// 第二个参数成为 info.file.response,onChange 靠它拿到后端的失败原因,而不是 axios 的英文文案。
|
|
110
|
+
.catch(function (err) {
|
|
111
|
+
var _err$response;
|
|
112
|
+
return onError === null || onError === void 0 ? void 0 : onError(err, err === null || err === void 0 || (_err$response = err.response) === null || _err$response === void 0 ? void 0 : _err$response.data);
|
|
113
|
+
});
|
|
114
|
+
}
|
|
115
|
+
} : {}, {
|
|
79
116
|
onChange: function onChange(info) {
|
|
80
117
|
if (info.file.status === 'done') {
|
|
81
118
|
_antd.message.success('导入成功');
|
|
@@ -84,15 +121,16 @@ var ImportModal = function ImportModal(props) {
|
|
|
84
121
|
}
|
|
85
122
|
if (info.file.status === 'error') {
|
|
86
123
|
var _info$file;
|
|
87
|
-
|
|
88
|
-
|
|
124
|
+
// 没有后端给的原因时也要有提示,不能让失败无声无息。
|
|
125
|
+
_antd.Modal.error({
|
|
126
|
+
title: '导入失败',
|
|
89
127
|
closable: true,
|
|
90
|
-
width:
|
|
91
|
-
content: info === null || info === void 0 || (_info$file = info.file) === null || _info$file === void 0 || (_info$file = _info$file.response) === null || _info$file === void 0 || (_info$file = _info$file.error) === null || _info$file === void 0 ? void 0 : _info$file.message
|
|
128
|
+
width: 800,
|
|
129
|
+
content: (info === null || info === void 0 || (_info$file = info.file) === null || _info$file === void 0 || (_info$file = _info$file.response) === null || _info$file === void 0 || (_info$file = _info$file.error) === null || _info$file === void 0 ? void 0 : _info$file.message) || '文件未能导入。请核对模板格式与必填列后重试;若持续失败请联系技术支持。'
|
|
92
130
|
});
|
|
93
131
|
}
|
|
94
132
|
}
|
|
95
|
-
}, /*#__PURE__*/_react.default.createElement("p", {
|
|
133
|
+
}), /*#__PURE__*/_react.default.createElement("p", {
|
|
96
134
|
className: "ant-upload-drag-icon"
|
|
97
135
|
}, /*#__PURE__*/_react.default.createElement(_icons.InboxOutlined, null)), /*#__PURE__*/_react.default.createElement("p", {
|
|
98
136
|
className: "ant-upload-text"
|
package/dist/cjs/index.d.ts
CHANGED
|
@@ -31,6 +31,12 @@ export type * from "./RuleBuilder";
|
|
|
31
31
|
export type { ColumnConfig } from "./array-table/columnHelper";
|
|
32
32
|
export type { CentralizedColumnScheme, QueryScheme, SchemeStorageAdapter, SchemeSyncDataDto, CurrentSchemeDto, SchemeStorageConfig, LocalStorageAdapterConfig, BackendApiAdapterConfig, UseSchemeManagerConfig, GridPlusContextValue, GlobalConfigPermissions, } from "./ag-grid-plus";
|
|
33
33
|
export * from './adapters';
|
|
34
|
+
export * from "./readPretty";
|
|
35
|
+
export { createEntitySelect } from "./entitySelect";
|
|
36
|
+
export { default as ExportButton, buildExportUrl, DEFAULT_EXPORT_TEMPLATE_API, resolveExportAction, resolveExportError, resolveFileName } from "./exportButton";
|
|
37
|
+
export type { ExportButtonProps, ExportTemplateApi, ExportTemplateOption } from "./exportButton";
|
|
38
|
+
export { saveAs } from "./utils/download";
|
|
39
|
+
export type { EntitySelectConfig, EntitySelectProps, EntitySelectQuery } from "./entitySelect";
|
|
34
40
|
export { semanticTextColors, toGridTextColor, gridValueEnum } from "./ag-grid-plus/utils/valueEnumColor";
|
|
35
41
|
export type { SemanticPreset } from "./ag-grid-plus/utils/valueEnumColor";
|
|
36
42
|
export { contrastRatio, relativeLuminance, darkenUntilContrast, lightenUntilContrast, toRgb, toHsl, fromHsl } from "./utils/contrast";
|
package/dist/cjs/index.js
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
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); }
|
|
3
4
|
Object.defineProperty(exports, "__esModule", {
|
|
4
5
|
value: true
|
|
5
6
|
});
|
|
@@ -47,6 +48,14 @@ var _exportNames = {
|
|
|
47
48
|
FlagsSelector: true,
|
|
48
49
|
MatchItem: true,
|
|
49
50
|
RegexRailroadDiagram: true,
|
|
51
|
+
createEntitySelect: true,
|
|
52
|
+
ExportButton: true,
|
|
53
|
+
buildExportUrl: true,
|
|
54
|
+
DEFAULT_EXPORT_TEMPLATE_API: true,
|
|
55
|
+
resolveExportAction: true,
|
|
56
|
+
resolveExportError: true,
|
|
57
|
+
resolveFileName: true,
|
|
58
|
+
saveAs: true,
|
|
50
59
|
semanticTextColors: true,
|
|
51
60
|
toGridTextColor: true,
|
|
52
61
|
gridValueEnum: true,
|
|
@@ -119,6 +128,12 @@ Object.defineProperty(exports, "ConfirmPro", {
|
|
|
119
128
|
return _ConfirmPro.default;
|
|
120
129
|
}
|
|
121
130
|
});
|
|
131
|
+
Object.defineProperty(exports, "DEFAULT_EXPORT_TEMPLATE_API", {
|
|
132
|
+
enumerable: true,
|
|
133
|
+
get: function get() {
|
|
134
|
+
return _exportButton.DEFAULT_EXPORT_TEMPLATE_API;
|
|
135
|
+
}
|
|
136
|
+
});
|
|
122
137
|
Object.defineProperty(exports, "Dashboard", {
|
|
123
138
|
enumerable: true,
|
|
124
139
|
get: function get() {
|
|
@@ -149,6 +164,12 @@ Object.defineProperty(exports, "Editable", {
|
|
|
149
164
|
return _editable.default;
|
|
150
165
|
}
|
|
151
166
|
});
|
|
167
|
+
Object.defineProperty(exports, "ExportButton", {
|
|
168
|
+
enumerable: true,
|
|
169
|
+
get: function get() {
|
|
170
|
+
return _exportButton.default;
|
|
171
|
+
}
|
|
172
|
+
});
|
|
152
173
|
Object.defineProperty(exports, "ExtensibleGrid", {
|
|
153
174
|
enumerable: true,
|
|
154
175
|
get: function get() {
|
|
@@ -275,6 +296,12 @@ Object.defineProperty(exports, "ToolBar", {
|
|
|
275
296
|
return _toolBar.default;
|
|
276
297
|
}
|
|
277
298
|
});
|
|
299
|
+
Object.defineProperty(exports, "buildExportUrl", {
|
|
300
|
+
enumerable: true,
|
|
301
|
+
get: function get() {
|
|
302
|
+
return _exportButton.buildExportUrl;
|
|
303
|
+
}
|
|
304
|
+
});
|
|
278
305
|
Object.defineProperty(exports, "contrastRatio", {
|
|
279
306
|
enumerable: true,
|
|
280
307
|
get: function get() {
|
|
@@ -287,6 +314,12 @@ Object.defineProperty(exports, "createCascaderField", {
|
|
|
287
314
|
return _standardFormDialog.createCascaderField;
|
|
288
315
|
}
|
|
289
316
|
});
|
|
317
|
+
Object.defineProperty(exports, "createEntitySelect", {
|
|
318
|
+
enumerable: true,
|
|
319
|
+
get: function get() {
|
|
320
|
+
return _entitySelect.createEntitySelect;
|
|
321
|
+
}
|
|
322
|
+
});
|
|
290
323
|
Object.defineProperty(exports, "createSelectField", {
|
|
291
324
|
enumerable: true,
|
|
292
325
|
get: function get() {
|
|
@@ -353,12 +386,36 @@ Object.defineProperty(exports, "relativeLuminance", {
|
|
|
353
386
|
return _contrast.relativeLuminance;
|
|
354
387
|
}
|
|
355
388
|
});
|
|
389
|
+
Object.defineProperty(exports, "resolveExportAction", {
|
|
390
|
+
enumerable: true,
|
|
391
|
+
get: function get() {
|
|
392
|
+
return _exportButton.resolveExportAction;
|
|
393
|
+
}
|
|
394
|
+
});
|
|
395
|
+
Object.defineProperty(exports, "resolveExportError", {
|
|
396
|
+
enumerable: true,
|
|
397
|
+
get: function get() {
|
|
398
|
+
return _exportButton.resolveExportError;
|
|
399
|
+
}
|
|
400
|
+
});
|
|
401
|
+
Object.defineProperty(exports, "resolveFileName", {
|
|
402
|
+
enumerable: true,
|
|
403
|
+
get: function get() {
|
|
404
|
+
return _exportButton.resolveFileName;
|
|
405
|
+
}
|
|
406
|
+
});
|
|
356
407
|
Object.defineProperty(exports, "roundDecimal", {
|
|
357
408
|
enumerable: true,
|
|
358
409
|
get: function get() {
|
|
359
410
|
return _businessDecimal.roundDecimal;
|
|
360
411
|
}
|
|
361
412
|
});
|
|
413
|
+
Object.defineProperty(exports, "saveAs", {
|
|
414
|
+
enumerable: true,
|
|
415
|
+
get: function get() {
|
|
416
|
+
return _download.saveAs;
|
|
417
|
+
}
|
|
418
|
+
});
|
|
362
419
|
Object.defineProperty(exports, "semanticTextColors", {
|
|
363
420
|
enumerable: true,
|
|
364
421
|
get: function get() {
|
|
@@ -460,7 +517,24 @@ Object.keys(_adapters).forEach(function (key) {
|
|
|
460
517
|
}
|
|
461
518
|
});
|
|
462
519
|
});
|
|
520
|
+
var _readPretty = require("./readPretty");
|
|
521
|
+
Object.keys(_readPretty).forEach(function (key) {
|
|
522
|
+
if (key === "default" || key === "__esModule") return;
|
|
523
|
+
if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
|
|
524
|
+
if (key in exports && exports[key] === _readPretty[key]) return;
|
|
525
|
+
Object.defineProperty(exports, key, {
|
|
526
|
+
enumerable: true,
|
|
527
|
+
get: function get() {
|
|
528
|
+
return _readPretty[key];
|
|
529
|
+
}
|
|
530
|
+
});
|
|
531
|
+
});
|
|
532
|
+
var _entitySelect = require("./entitySelect");
|
|
533
|
+
var _exportButton = _interopRequireWildcard(require("./exportButton"));
|
|
534
|
+
var _download = require("./utils/download");
|
|
463
535
|
var _valueEnumColor = require("./ag-grid-plus/utils/valueEnumColor");
|
|
464
536
|
var _contrast = require("./utils/contrast");
|
|
465
537
|
var _businessDecimal = require("./utils/businessDecimal");
|
|
538
|
+
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); }
|
|
539
|
+
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; }
|
|
466
540
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
@@ -0,0 +1,156 @@
|
|
|
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.withReadingArrayTable = void 0;
|
|
8
|
+
var _react = require("@formily/react");
|
|
9
|
+
var _agGridReact = require("ag-grid-react");
|
|
10
|
+
var _utils = require("../array-table/utils");
|
|
11
|
+
var _columnGroup = require("../array-table/columnGroup");
|
|
12
|
+
var _indexColumn = require("../array-table/indexColumn");
|
|
13
|
+
var _theme = require("../array-table/theme");
|
|
14
|
+
var _hoistStatics = require("./hoistStatics");
|
|
15
|
+
var _react2 = _interopRequireWildcard(require("react"));
|
|
16
|
+
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); }
|
|
17
|
+
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; }
|
|
18
|
+
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; } } }; }
|
|
19
|
+
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); }
|
|
20
|
+
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; }
|
|
21
|
+
/** 阅读态直接使用 ArrayTable 的列定义,避免 AgGridPlus 的原值渲染器覆盖格式化结果。@author nokecy */
|
|
22
|
+
var ReadingArrayTable = (0, _react.observer)(function (_ref) {
|
|
23
|
+
var _buildArrayTableColum;
|
|
24
|
+
var height = _ref.height;
|
|
25
|
+
var field = (0, _react.useField)();
|
|
26
|
+
var sources = (0, _utils.useArrayTableSources)();
|
|
27
|
+
var rows = Array.isArray(field.value) ? field.value.slice() : [];
|
|
28
|
+
var generatedRowIds = (0, _react2.useRef)(new WeakMap());
|
|
29
|
+
var generatedRowIdSequence = (0, _react2.useRef)(0);
|
|
30
|
+
var columns = (_buildArrayTableColum = (0, _utils.buildArrayTableColumns)(rows, field, sources)) !== null && _buildArrayTableColum !== void 0 ? _buildArrayTableColum : [];
|
|
31
|
+
var showIndex = columns.length > 0 && !(0, _indexColumn.hasOwnIndexColumn)(sources);
|
|
32
|
+
if (showIndex) columns.unshift((0, _indexColumn.makeIndexColumn)());
|
|
33
|
+
var theme = (0, _theme.useArrayTableTheme)();
|
|
34
|
+
return /*#__PURE__*/_react2.default.createElement("div", {
|
|
35
|
+
style: {
|
|
36
|
+
height: height !== null && height !== void 0 ? height : 400
|
|
37
|
+
}
|
|
38
|
+
}, /*#__PURE__*/_react2.default.createElement(_agGridReact.AgGridReact, {
|
|
39
|
+
theme: theme,
|
|
40
|
+
rowHeight: _theme.ARRAY_TABLE_ROW_HEIGHT,
|
|
41
|
+
enableCellTextSelection: true,
|
|
42
|
+
ensureDomOrder: true,
|
|
43
|
+
defaultColDef: {
|
|
44
|
+
resizable: true,
|
|
45
|
+
sortable: true,
|
|
46
|
+
filter: true
|
|
47
|
+
},
|
|
48
|
+
rowSelection: {
|
|
49
|
+
mode: 'singleRow',
|
|
50
|
+
enableClickSelection: true
|
|
51
|
+
},
|
|
52
|
+
selectionColumnDef: {
|
|
53
|
+
pinned: 'left',
|
|
54
|
+
lockPosition: true,
|
|
55
|
+
width: 50,
|
|
56
|
+
suppressHeaderMenuButton: true
|
|
57
|
+
},
|
|
58
|
+
columnDefs: (0, _columnGroup.groupColumnDefs)(columns),
|
|
59
|
+
rowData: rows,
|
|
60
|
+
getRowId: function getRowId(_ref2) {
|
|
61
|
+
var _data$_id;
|
|
62
|
+
var data = _ref2.data;
|
|
63
|
+
var id = (_data$_id = data === null || data === void 0 ? void 0 : data._id) !== null && _data$_id !== void 0 ? _data$_id : data === null || data === void 0 ? void 0 : data.id;
|
|
64
|
+
if (id != null) return "data:".concat(String(id));
|
|
65
|
+
|
|
66
|
+
// 阅读态明细常用旧表行号等字段,不一定有 id/_id。给无 ID 的对象分配稳定行键,
|
|
67
|
+
// 否则多行都会返回 "undefined",AG Grid 在数据更新后会合并掉重复行。@author nokecy
|
|
68
|
+
var row = data;
|
|
69
|
+
var rowId = generatedRowIds.current.get(row);
|
|
70
|
+
if (!rowId) {
|
|
71
|
+
rowId = "generated:".concat(++generatedRowIdSequence.current);
|
|
72
|
+
generatedRowIds.current.set(row, rowId);
|
|
73
|
+
}
|
|
74
|
+
return rowId;
|
|
75
|
+
},
|
|
76
|
+
onRowDataUpdated: function onRowDataUpdated(_ref3) {
|
|
77
|
+
var api = _ref3.api;
|
|
78
|
+
if (showIndex) api.refreshCells({
|
|
79
|
+
columns: [_indexColumn.ARRAY_TABLE_INDEX_FIELD],
|
|
80
|
+
force: true
|
|
81
|
+
});
|
|
82
|
+
}
|
|
83
|
+
}));
|
|
84
|
+
});
|
|
85
|
+
|
|
86
|
+
/** 按 ArrayTable 的列提取规则收集列节点,不挂载明细数据字段。@author nokecy */
|
|
87
|
+
var columnsOf = function columnsOf(schema) {
|
|
88
|
+
var columns = [];
|
|
89
|
+
var visit = function visit(node) {
|
|
90
|
+
if (typeof node['x-component'] === 'string' && node['x-component'].includes('Column')) {
|
|
91
|
+
var _node$xComponentPro, _node$xComponentPro2;
|
|
92
|
+
var name = (_node$xComponentPro = (_node$xComponentPro2 = node['x-component-props']) === null || _node$xComponentPro2 === void 0 ? void 0 : _node$xComponentPro2.dataIndex) !== null && _node$xComponentPro !== void 0 ? _node$xComponentPro : node.name;
|
|
93
|
+
if (name !== undefined) columns.push({
|
|
94
|
+
name: name,
|
|
95
|
+
schema: node
|
|
96
|
+
});
|
|
97
|
+
} else {
|
|
98
|
+
Object.values(node.properties || {}).forEach(visit);
|
|
99
|
+
}
|
|
100
|
+
};
|
|
101
|
+
var items = Array.isArray(schema.items) ? schema.items : schema.items ? [schema.items] : [];
|
|
102
|
+
items.forEach(visit);
|
|
103
|
+
return columns;
|
|
104
|
+
};
|
|
105
|
+
|
|
106
|
+
/**
|
|
107
|
+
* 阅读态也创建列的 void 字段,让 Formily 求值标题、显隐与 reactions;
|
|
108
|
+
* qc-ui 的阅读视图只读取列状态,未像编辑视图一样挂载这些字段。
|
|
109
|
+
* @author nokecy
|
|
110
|
+
*/
|
|
111
|
+
var withReadingArrayTable = exports.withReadingArrayTable = function withReadingArrayTable(Control) {
|
|
112
|
+
var ReactiveTable = (0, _react.observer)(function (_ref4) {
|
|
113
|
+
var columns = _ref4.columns,
|
|
114
|
+
tableProps = _ref4.tableProps;
|
|
115
|
+
var field = (0, _react.useField)();
|
|
116
|
+
// 阅读视图本身未订阅列状态,在此建立依赖,条件变化后重新提取表头。@author nokecy
|
|
117
|
+
var _iterator = _createForOfIteratorHelper(columns),
|
|
118
|
+
_step;
|
|
119
|
+
try {
|
|
120
|
+
for (_iterator.s(); !(_step = _iterator.n()).done;) {
|
|
121
|
+
var _column$componentProp, _column$componentProp2, _column$componentProp3;
|
|
122
|
+
var name = _step.value.name;
|
|
123
|
+
var column = field.query(field.address.concat(name)).take();
|
|
124
|
+
void (column === null || column === void 0 ? void 0 : column.display);
|
|
125
|
+
void (column === null || column === void 0 || (_column$componentProp = column.componentProps) === null || _column$componentProp === void 0 ? void 0 : _column$componentProp.title);
|
|
126
|
+
void (column === null || column === void 0 || (_column$componentProp2 = column.componentProps) === null || _column$componentProp2 === void 0 ? void 0 : _column$componentProp2.headerName);
|
|
127
|
+
void (column === null || column === void 0 || (_column$componentProp3 = column.componentProps) === null || _column$componentProp3 === void 0 ? void 0 : _column$componentProp3.headerGroup);
|
|
128
|
+
}
|
|
129
|
+
} catch (err) {
|
|
130
|
+
_iterator.e(err);
|
|
131
|
+
} finally {
|
|
132
|
+
_iterator.f();
|
|
133
|
+
}
|
|
134
|
+
return /*#__PURE__*/_react2.default.createElement(ReadingArrayTable, tableProps);
|
|
135
|
+
});
|
|
136
|
+
var Table = (0, _react.observer)(function (props) {
|
|
137
|
+
var field = (0, _react.useField)();
|
|
138
|
+
var schema = (0, _react.useFieldSchema)();
|
|
139
|
+
var columns = (0, _react2.useMemo)(function () {
|
|
140
|
+
return columnsOf(schema);
|
|
141
|
+
}, [schema]);
|
|
142
|
+
if (field.pattern !== 'readPretty') return /*#__PURE__*/_react2.default.createElement(Control, props);
|
|
143
|
+
return /*#__PURE__*/_react2.default.createElement(_react2.default.Fragment, null, columns.map(function (column) {
|
|
144
|
+
return /*#__PURE__*/_react2.default.createElement(_react.RecursionField, {
|
|
145
|
+
key: column.name,
|
|
146
|
+
name: column.name,
|
|
147
|
+
schema: column.schema,
|
|
148
|
+
onlyRenderSelf: true
|
|
149
|
+
});
|
|
150
|
+
}), /*#__PURE__*/_react2.default.createElement(ReactiveTable, {
|
|
151
|
+
columns: columns,
|
|
152
|
+
tableProps: props
|
|
153
|
+
}));
|
|
154
|
+
});
|
|
155
|
+
return (0, _hoistStatics.hoistStatics)(Table, Control);
|
|
156
|
+
};
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { Input as AntInput, InputNumber as AntInputNumber, Select as AntSelect, Switch as AntSwitch, Checkbox as AntCheckbox, Radio as AntRadio, DatePicker as AntDatePicker, TimePicker as AntTimePicker, TreeSelect as AntTreeSelect, Cascader as AntCascader } from 'antd';
|
|
2
|
+
export declare const Input: typeof AntInput;
|
|
3
|
+
export declare const InputNumber: typeof AntInputNumber;
|
|
4
|
+
export declare const Select: typeof AntSelect;
|
|
5
|
+
export declare const Switch: typeof AntSwitch;
|
|
6
|
+
export declare const Checkbox: typeof AntCheckbox;
|
|
7
|
+
export declare const Radio: typeof AntRadio;
|
|
8
|
+
export declare const DatePicker: typeof AntDatePicker;
|
|
9
|
+
export declare const TimePicker: typeof AntTimePicker;
|
|
10
|
+
export declare const TreeSelect: typeof AntTreeSelect;
|
|
11
|
+
export declare const Cascader: typeof AntCascader;
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.TreeSelect = exports.TimePicker = exports.Switch = exports.Select = exports.Radio = exports.InputNumber = exports.Input = exports.DatePicker = exports.Checkbox = exports.Cascader = void 0;
|
|
7
|
+
var _antdV = require("@formily/antd-v5");
|
|
8
|
+
var _antd = require("antd");
|
|
9
|
+
var _react = _interopRequireDefault(require("react"));
|
|
10
|
+
var _hoistStatics = require("./hoistStatics");
|
|
11
|
+
var _values = require("./values");
|
|
12
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
13
|
+
function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
|
|
14
|
+
/** 普通表单控件在不可编辑时使用阅读展示,继承整张表单的禁用状态。@author nokecy */
|
|
15
|
+
var readingControl = function readingControl(Control, Preview) {
|
|
16
|
+
var map = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : function (props) {
|
|
17
|
+
return props;
|
|
18
|
+
};
|
|
19
|
+
var Component = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
|
|
20
|
+
var _props$disabled;
|
|
21
|
+
var _ConfigProvider$useCo = _antd.ConfigProvider.useConfig(),
|
|
22
|
+
componentDisabled = _ConfigProvider$useCo.componentDisabled;
|
|
23
|
+
var reading = props.readOnly || ((_props$disabled = props.disabled) !== null && _props$disabled !== void 0 ? _props$disabled : componentDisabled);
|
|
24
|
+
return reading ? /*#__PURE__*/_react.default.createElement(_antdV.PreviewText.Placeholder, {
|
|
25
|
+
value: "\u2014"
|
|
26
|
+
}, /*#__PURE__*/_react.default.createElement(Preview, map(props))) : /*#__PURE__*/_react.default.createElement(Control, _extends({}, props, {
|
|
27
|
+
ref: ref
|
|
28
|
+
}));
|
|
29
|
+
});
|
|
30
|
+
return (0, _hoistStatics.hoistStatics)(Component, Control);
|
|
31
|
+
};
|
|
32
|
+
|
|
33
|
+
/** 选择项来自 options 或原生 Option/Radio 子节点,阅读态显示名称。@author nokecy */
|
|
34
|
+
var choiceOptions = function choiceOptions(props) {
|
|
35
|
+
return props.options || _react.default.Children.toArray(props.children).flatMap(function (child) {
|
|
36
|
+
var _child$props;
|
|
37
|
+
return ((_child$props = child.props) === null || _child$props === void 0 ? void 0 : _child$props.value) !== undefined ? [{
|
|
38
|
+
value: child.props.value,
|
|
39
|
+
label: child.props.children
|
|
40
|
+
}] : choiceOptions(child.props || {});
|
|
41
|
+
});
|
|
42
|
+
};
|
|
43
|
+
var ChoicePreview = function ChoicePreview(props) {
|
|
44
|
+
return /*#__PURE__*/_react.default.createElement("span", null, (0, _values.selectedLabels)(props.value, (0, _values.flattenOptions)(choiceOptions(props), props.fieldNames), props.labelInValue));
|
|
45
|
+
};
|
|
46
|
+
var BooleanPreview = function BooleanPreview(props) {
|
|
47
|
+
return /*#__PURE__*/_react.default.createElement("span", null, props.children, props.children ? ':' : '', props.checked == null ? '—' : props.checked ? '是' : '否');
|
|
48
|
+
};
|
|
49
|
+
var PasswordPreview = function PasswordPreview(props) {
|
|
50
|
+
return /*#__PURE__*/_react.default.createElement("span", null, props.value ? '••••••' : '—');
|
|
51
|
+
};
|
|
52
|
+
var Input = exports.Input = readingControl(_antd.Input, _antdV.PreviewText.Input);
|
|
53
|
+
Input.TextArea = readingControl(_antd.Input.TextArea, _antdV.PreviewText.Input);
|
|
54
|
+
Input.Password = readingControl(_antd.Input.Password, PasswordPreview);
|
|
55
|
+
Input.Search = readingControl(_antd.Input.Search, _antdV.PreviewText.Input);
|
|
56
|
+
var InputNumber = exports.InputNumber = readingControl(_antd.InputNumber, _antdV.PreviewText.NumberPicker);
|
|
57
|
+
var Select = exports.Select = readingControl(_antd.Select, ChoicePreview);
|
|
58
|
+
var Switch = exports.Switch = readingControl(_antd.Switch, BooleanPreview);
|
|
59
|
+
var Checkbox = exports.Checkbox = readingControl(_antd.Checkbox, BooleanPreview);
|
|
60
|
+
Checkbox.Group = readingControl(_antd.Checkbox.Group, ChoicePreview);
|
|
61
|
+
var Radio = exports.Radio = readingControl(_antd.Radio, BooleanPreview);
|
|
62
|
+
Radio.Group = readingControl(_antd.Radio.Group, ChoicePreview);
|
|
63
|
+
var DatePicker = exports.DatePicker = readingControl(_antd.DatePicker, _antdV.PreviewText.DatePicker);
|
|
64
|
+
DatePicker.RangePicker = readingControl(_antd.DatePicker.RangePicker, _antdV.PreviewText.DateRangePicker);
|
|
65
|
+
var TimePicker = exports.TimePicker = readingControl(_antd.TimePicker, _antdV.PreviewText.TimePicker);
|
|
66
|
+
TimePicker.RangePicker = readingControl(_antd.TimePicker.RangePicker, _antdV.PreviewText.TimeRangePicker);
|
|
67
|
+
var TreeSelect = exports.TreeSelect = readingControl(_antd.TreeSelect, _antdV.PreviewText.TreeSelect);
|
|
68
|
+
var Cascader = exports.Cascader = readingControl(_antd.Cascader, _antdV.PreviewText.Cascader);
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
/** 精确业务数值录入和阅读展示,零值与原始十进制字符串始终保留。@author nokecy */
|
|
3
|
+
export declare const DecimalInput: React.ForwardRefExoticComponent<Omit<any, "ref"> & React.RefAttributes<any>>;
|
|
4
|
+
export declare const DecimalPicker: React.ForwardRefExoticComponent<Omit<Partial<Omit<any, "ref"> & React.RefAttributes<any>>, "ref"> & React.RefAttributes<unknown>>;
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.DecimalPicker = exports.DecimalInput = void 0;
|
|
7
|
+
var _react = require("@formily/react");
|
|
8
|
+
var _react2 = _interopRequireDefault(require("react"));
|
|
9
|
+
var _controls = require("./controls");
|
|
10
|
+
var _businessDecimal = require("../utils/businessDecimal");
|
|
11
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
12
|
+
function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
|
|
13
|
+
/** 精确业务数值录入和阅读展示,零值与原始十进制字符串始终保留。@author nokecy */
|
|
14
|
+
var DecimalInput = exports.DecimalInput = /*#__PURE__*/_react2.default.forwardRef(function (props, ref) {
|
|
15
|
+
return /*#__PURE__*/_react2.default.createElement(_controls.InputNumber, _extends({}, props, {
|
|
16
|
+
stringMode: true,
|
|
17
|
+
ref: ref
|
|
18
|
+
}));
|
|
19
|
+
});
|
|
20
|
+
var DecimalPreview = function DecimalPreview(_ref) {
|
|
21
|
+
var value = _ref.value,
|
|
22
|
+
formatter = _ref.formatter;
|
|
23
|
+
return /*#__PURE__*/_react2.default.createElement("span", null, value == null || value === '' ? '—' : formatter ? formatter(value, {
|
|
24
|
+
userTyping: false,
|
|
25
|
+
input: String(value)
|
|
26
|
+
}) : (0, _businessDecimal.decimalText)(value));
|
|
27
|
+
};
|
|
28
|
+
var DecimalPicker = exports.DecimalPicker = (0, _react.connect)(DecimalInput, (0, _react.mapReadPretty)(DecimalPreview));
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.withReadingFields = withReadingFields;
|
|
7
|
+
var _react = require("@formily/react");
|
|
8
|
+
var _react2 = _interopRequireDefault(require("react"));
|
|
9
|
+
var _hoistStatics = require("./hoistStatics");
|
|
10
|
+
var Reading = _interopRequireWildcard(require("./controls"));
|
|
11
|
+
var _arrayTable = require("./arrayTable");
|
|
12
|
+
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); }
|
|
13
|
+
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; }
|
|
14
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
15
|
+
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); }
|
|
16
|
+
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; } } }; }
|
|
17
|
+
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); }
|
|
18
|
+
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; }
|
|
19
|
+
function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
|
|
20
|
+
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; }
|
|
21
|
+
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; }
|
|
22
|
+
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; }
|
|
23
|
+
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : String(i); }
|
|
24
|
+
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); }
|
|
25
|
+
/** 动态表单统一入口:禁用/只读的数据控件使用阅读展示,保持字段值和校验模型。@author nokecy */
|
|
26
|
+
function withReadingFields(components) {
|
|
27
|
+
var result = _objectSpread({}, components);
|
|
28
|
+
var previews = _objectSpread(_objectSpread({}, Reading), {}, {
|
|
29
|
+
NumberPicker: Reading.InputNumber,
|
|
30
|
+
Password: Reading.Input.Password
|
|
31
|
+
});
|
|
32
|
+
var wrap = function wrap(Control, Preview) {
|
|
33
|
+
var Component = (0, _react.observer)(function (props) {
|
|
34
|
+
var field = (0, _react.useField)();
|
|
35
|
+
if (props.disabled || props.readOnly || field !== null && field !== void 0 && field.disabled || field !== null && field !== void 0 && field.readOnly) {
|
|
36
|
+
var _field$value, _field$value2, _field$dataSource;
|
|
37
|
+
return /*#__PURE__*/_react2.default.createElement(Preview, _extends({}, props, {
|
|
38
|
+
value: (_field$value = field === null || field === void 0 ? void 0 : field.value) !== null && _field$value !== void 0 ? _field$value : props.value,
|
|
39
|
+
checked: (_field$value2 = field === null || field === void 0 ? void 0 : field.value) !== null && _field$value2 !== void 0 ? _field$value2 : props.checked,
|
|
40
|
+
options: field !== null && field !== void 0 && (_field$dataSource = field.dataSource) !== null && _field$dataSource !== void 0 && _field$dataSource.length ? field.dataSource : props.options,
|
|
41
|
+
disabled: true
|
|
42
|
+
}));
|
|
43
|
+
}
|
|
44
|
+
return /*#__PURE__*/_react2.default.createElement(Control, props);
|
|
45
|
+
});
|
|
46
|
+
var Wrapped = (0, _hoistStatics.hoistStatics)(Component, Control);
|
|
47
|
+
// 嵌套控件同样按字段状态展示,例如Input.TextArea、DatePicker.RangePicker。
|
|
48
|
+
for (var _i = 0, _arr = ['TextArea', 'Password', 'Search', 'Group', 'RangePicker']; _i < _arr.length; _i++) {
|
|
49
|
+
var key = _arr[_i];
|
|
50
|
+
if (Control[key] && Preview[key]) Wrapped[key] = wrap(Control[key], Preview[key]);
|
|
51
|
+
}
|
|
52
|
+
return Wrapped;
|
|
53
|
+
};
|
|
54
|
+
var _iterator = _createForOfIteratorHelper(Object.keys(previews).filter(function (name) {
|
|
55
|
+
return components[name];
|
|
56
|
+
})),
|
|
57
|
+
_step;
|
|
58
|
+
try {
|
|
59
|
+
for (_iterator.s(); !(_step = _iterator.n()).done;) {
|
|
60
|
+
var name = _step.value;
|
|
61
|
+
result[name] = wrap(components[name], previews[name]);
|
|
62
|
+
}
|
|
63
|
+
// ArrayTable 阅读态保留动态列的标题和显隐状态。@author nokecy
|
|
64
|
+
} catch (err) {
|
|
65
|
+
_iterator.e(err);
|
|
66
|
+
} finally {
|
|
67
|
+
_iterator.f();
|
|
68
|
+
}
|
|
69
|
+
if (components.ArrayTable) result.ArrayTable = (0, _arrayTable.withReadingArrayTable)(components.ArrayTable);
|
|
70
|
+
return result;
|
|
71
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function hoistStatics<T, S>(target: T, source: S): T & S;
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.hoistStatics = hoistStatics;
|
|
7
|
+
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; } } }; }
|
|
8
|
+
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); }
|
|
9
|
+
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; }
|
|
10
|
+
/**
|
|
11
|
+
* 把被包装组件的静态成员(如 Input.TextArea、Select.Option)带到包装后的组件上,
|
|
12
|
+
* 等价于 hoist-non-react-statics,但不新增依赖。React 自有的静态属性不拷贝。
|
|
13
|
+
* @author nokecy
|
|
14
|
+
*/
|
|
15
|
+
var REACT_STATICS = new Set(['$$typeof', 'render', 'defaultProps', 'displayName', 'propTypes', 'contextType', 'contextTypes', 'childContextTypes', 'getDefaultProps', 'getDerivedStateFromProps', 'getDerivedStateFromError', 'mixins', 'type', 'compare', 'length', 'name', 'prototype', 'caller', 'callee', 'arguments', 'arity']);
|
|
16
|
+
function hoistStatics(target, source) {
|
|
17
|
+
var _iterator = _createForOfIteratorHelper(Reflect.ownKeys(source)),
|
|
18
|
+
_step;
|
|
19
|
+
try {
|
|
20
|
+
for (_iterator.s(); !(_step = _iterator.n()).done;) {
|
|
21
|
+
var key = _step.value;
|
|
22
|
+
if (REACT_STATICS.has(key)) continue;
|
|
23
|
+
var descriptor = Object.getOwnPropertyDescriptor(source, key);
|
|
24
|
+
if (!descriptor) continue;
|
|
25
|
+
try {
|
|
26
|
+
Object.defineProperty(target, key, descriptor);
|
|
27
|
+
} catch (_unused) {
|
|
28
|
+
// 个别只读属性无法重定义,跳过即可。
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
} catch (err) {
|
|
32
|
+
_iterator.e(err);
|
|
33
|
+
} finally {
|
|
34
|
+
_iterator.f();
|
|
35
|
+
}
|
|
36
|
+
return target;
|
|
37
|
+
}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 阅读态控件:不可编辑时展示名称/文本而不是禁用的输入框,继承整张表单的禁用状态。
|
|
3
|
+
* 动态表单入口 `withReadingFields` 按字段的 disabled/readOnly 状态切换阅读展示,并保留 ArrayTable 动态列。
|
|
4
|
+
* @author nokecy
|
|
5
|
+
*/
|
|
6
|
+
export * as ReadPrettyControls from './controls';
|
|
7
|
+
export { withReadingFields } from './formily';
|
|
8
|
+
export { withReadingArrayTable } from './arrayTable';
|
|
9
|
+
export { DecimalInput, DecimalPicker } from './decimal';
|
|
10
|
+
export { flattenOptions, selectedLabels } from './values';
|
|
11
|
+
export { normalizeSelectValue, selectCode, selectLabel } from './selectValue';
|