@nokecy/qc-ui 1.1.86 → 1.1.88
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/ag-grid-plus/ag-gridPlus.js +148 -144
- package/dist/cjs/ag-grid-plus/context/useSchemeDataFlow.js +4 -4
- package/dist/cjs/ag-grid-plus/errors/types.d.ts +9 -0
- package/dist/cjs/ag-grid-plus/errors/types.js +20 -0
- package/dist/cjs/ag-grid-plus/interface.d.ts +2 -0
- package/dist/cjs/ag-grid-plus/locale.d.ts +413 -1
- package/dist/cjs/ag-grid-plus/locale.js +14 -3
- package/dist/cjs/ag-grid-plus/queryForm/index.d.ts +2 -0
- package/dist/cjs/ag-grid-plus/queryForm/index.js +47 -51
- package/dist/cjs/ag-grid-plus/queryForm/queryColumns.d.ts +8 -0
- package/dist/cjs/ag-grid-plus/queryForm/queryColumns.js +52 -0
- package/dist/cjs/ag-grid-plus/queryForm/schemaKey.d.ts +15 -8
- package/dist/cjs/ag-grid-plus/queryForm/schemaKey.js +64 -12
- package/dist/cjs/ag-grid-plus/setting/ColumnConfigForm.js +3 -0
- package/dist/cjs/ag-grid-plus/setting/ColumnSetting.js +69 -106
- package/dist/cjs/ag-grid-plus/setting/QuerySchemeManager.js +3 -1
- package/dist/cjs/ag-grid-plus/setting/columnGroupTypes.d.ts +2 -0
- package/dist/cjs/ag-grid-plus/setting/columnGroupUtils.d.ts +14 -0
- package/dist/cjs/ag-grid-plus/setting/columnGroupUtils.js +98 -110
- package/dist/cjs/ag-grid-plus/types.d.ts +6 -0
- package/dist/cjs/array-table/batchRemove.d.ts +36 -0
- package/dist/cjs/array-table/batchRemove.js +299 -0
- package/dist/cjs/array-table/cellFocusScope.js +58 -7
- package/dist/cjs/array-table/cellInteractionLock.d.ts +13 -0
- package/dist/cjs/array-table/cellInteractionLock.js +26 -0
- package/dist/cjs/array-table/hooks.d.ts +11 -6
- package/dist/cjs/array-table/hooks.js +138 -88
- package/dist/cjs/array-table/index.d.ts +8 -2
- package/dist/cjs/array-table/index.js +55 -32
- package/dist/cjs/array-table/indexColumn.d.ts +1 -1
- package/dist/cjs/array-table/indexColumn.js +3 -2
- package/dist/cjs/array-table/interface.d.ts +13 -1
- package/dist/cjs/array-table/preview.js +8 -0
- package/dist/cjs/array-table/readOnlyFormatters.d.ts +9 -1
- package/dist/cjs/array-table/readOnlyFormatters.js +41 -13
- package/dist/cjs/array-table/rowIdentity.d.ts +17 -0
- package/dist/cjs/array-table/rowIdentity.js +43 -0
- package/dist/cjs/array-table/sorting.d.ts +3 -0
- package/dist/cjs/array-table/sorting.js +46 -0
- package/dist/cjs/array-table/utils.js +146 -67
- package/dist/cjs/dialogSelect/index.d.ts +3 -0
- package/dist/cjs/dialogSelect/index.js +13 -3
- package/dist/cjs/editable/index.js +101 -139
- package/dist/cjs/index.d.ts +2 -2
- package/dist/cjs/index.js +14 -0
- package/dist/cjs/readPretty/arrayTable.js +29 -14
- package/dist/cjs/readPretty/formily.d.ts +1 -0
- package/dist/cjs/readPretty/formily.js +7 -0
- package/dist/cjs/readPretty/index.d.ts +1 -0
- package/dist/cjs/readPretty/index.js +7 -0
- package/dist/cjs/readPretty/schemaScope.d.ts +2 -0
- package/dist/cjs/readPretty/schemaScope.js +49 -0
- package/dist/cjs/standardList/emptyState.js +9 -0
- package/dist/esm/ag-grid-plus/ag-gridPlus.js +148 -144
- package/dist/esm/ag-grid-plus/context/useSchemeDataFlow.js +4 -4
- package/dist/esm/ag-grid-plus/errors/types.d.ts +9 -0
- package/dist/esm/ag-grid-plus/errors/types.js +20 -0
- package/dist/esm/ag-grid-plus/interface.d.ts +2 -0
- package/dist/esm/ag-grid-plus/locale.d.ts +413 -1
- package/dist/esm/ag-grid-plus/locale.js +15 -3
- package/dist/esm/ag-grid-plus/queryForm/index.d.ts +2 -0
- package/dist/esm/ag-grid-plus/queryForm/index.js +47 -52
- package/dist/esm/ag-grid-plus/queryForm/queryColumns.d.ts +8 -0
- package/dist/esm/ag-grid-plus/queryForm/queryColumns.js +46 -0
- package/dist/esm/ag-grid-plus/queryForm/schemaKey.d.ts +15 -8
- package/dist/esm/ag-grid-plus/queryForm/schemaKey.js +64 -12
- package/dist/esm/ag-grid-plus/setting/ColumnConfigForm.js +3 -0
- package/dist/esm/ag-grid-plus/setting/ColumnSetting.js +70 -107
- package/dist/esm/ag-grid-plus/setting/QuerySchemeManager.js +3 -1
- package/dist/esm/ag-grid-plus/setting/columnGroupTypes.d.ts +2 -0
- package/dist/esm/ag-grid-plus/setting/columnGroupUtils.d.ts +14 -0
- package/dist/esm/ag-grid-plus/setting/columnGroupUtils.js +95 -110
- package/dist/esm/ag-grid-plus/types.d.ts +6 -0
- package/dist/esm/array-table/batchRemove.d.ts +36 -0
- package/dist/esm/array-table/batchRemove.js +289 -0
- package/dist/esm/array-table/cellFocusScope.js +59 -8
- package/dist/esm/array-table/cellInteractionLock.d.ts +13 -0
- package/dist/esm/array-table/cellInteractionLock.js +21 -0
- package/dist/esm/array-table/hooks.d.ts +11 -6
- package/dist/esm/array-table/hooks.js +139 -89
- package/dist/esm/array-table/index.d.ts +8 -2
- package/dist/esm/array-table/index.js +55 -32
- package/dist/esm/array-table/indexColumn.d.ts +1 -1
- package/dist/esm/array-table/indexColumn.js +3 -2
- package/dist/esm/array-table/interface.d.ts +13 -1
- package/dist/esm/array-table/preview.js +8 -0
- package/dist/esm/array-table/readOnlyFormatters.d.ts +9 -1
- package/dist/esm/array-table/readOnlyFormatters.js +41 -12
- package/dist/esm/array-table/rowIdentity.d.ts +17 -0
- package/dist/esm/array-table/rowIdentity.js +37 -0
- package/dist/esm/array-table/sorting.d.ts +3 -0
- package/dist/esm/array-table/sorting.js +40 -0
- package/dist/esm/array-table/utils.js +147 -68
- package/dist/esm/dialogSelect/index.d.ts +3 -0
- package/dist/esm/dialogSelect/index.js +13 -3
- package/dist/esm/editable/index.js +102 -140
- package/dist/esm/index.d.ts +2 -2
- package/dist/esm/index.js +1 -1
- package/dist/esm/readPretty/arrayTable.js +30 -13
- package/dist/esm/readPretty/formily.d.ts +1 -0
- package/dist/esm/readPretty/formily.js +1 -0
- package/dist/esm/readPretty/index.d.ts +1 -0
- package/dist/esm/readPretty/index.js +1 -0
- package/dist/esm/readPretty/schemaScope.d.ts +2 -0
- package/dist/esm/readPretty/schemaScope.js +42 -0
- package/dist/esm/standardList/emptyState.js +9 -0
- package/dist/umd/qc-ui.min.js +1 -1
- package/package.json +3 -1
|
@@ -14,6 +14,7 @@ var _arrayBase = _interopRequireDefault(require("./arrayBase"));
|
|
|
14
14
|
var _readOnlyFormatters = require("./readOnlyFormatters");
|
|
15
15
|
var _columnGroup = require("./columnGroup");
|
|
16
16
|
var _cellFocusScope = require("./cellFocusScope");
|
|
17
|
+
var _sorting = require("./sorting");
|
|
17
18
|
var _excluded = ["hide", "sort", "sortIndex", "forceAgField", "headerGroup", "defaultHide"];
|
|
18
19
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
19
20
|
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); }
|
|
@@ -54,6 +55,7 @@ var isActionComponent = function isActionComponent(schema) {
|
|
|
54
55
|
var useArrayTableSources = exports.useArrayTableSources = function useArrayTableSources() {
|
|
55
56
|
var arrayField = (0, _react2.useField)();
|
|
56
57
|
var schema = (0, _react2.useFieldSchema)();
|
|
58
|
+
var components = _react.default.useContext(_react2.SchemaComponentsContext);
|
|
57
59
|
var parseSources = function parseSources(schema) {
|
|
58
60
|
if (isColumnComponent(schema) || isOperationsComponent(schema) || isAdditionComponent(schema)) {
|
|
59
61
|
var _schema$xComponentP, _schema$xComponentP2, _field$component;
|
|
@@ -69,7 +71,8 @@ var useArrayTableSources = exports.useArrayTableSources = function useArrayTable
|
|
|
69
71
|
//@ts-ignore
|
|
70
72
|
field: field,
|
|
71
73
|
schema: schema,
|
|
72
|
-
columnProps: columnProps
|
|
74
|
+
columnProps: columnProps,
|
|
75
|
+
components: components
|
|
73
76
|
}];
|
|
74
77
|
} else if (schema.properties) {
|
|
75
78
|
return schema.reduceProperties(function (buf, schema) {
|
|
@@ -125,19 +128,45 @@ var useArrayTableActions = exports.useArrayTableActions = function useArrayTable
|
|
|
125
128
|
if (!schema) throw new Error('can not found schema object');
|
|
126
129
|
return schema.properties ? parseSources(schema.properties['actions'] || {}) : [];
|
|
127
130
|
};
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
131
|
+
|
|
132
|
+
/**
|
|
133
|
+
* 从表单当前数组定位单元格所属行。批量选择可保留 _id/id 并替换整行对象,
|
|
134
|
+
* AG Grid 在格值未变时仍会复用带旧 data 的渲染器;判空、校验和绑定必须使用当前行。
|
|
135
|
+
* 不以排序/过滤后的显示行号定位数据,已删除的行也不能绑定到后继行。@author nokecy
|
|
136
|
+
*/
|
|
137
|
+
var resolveCellRow = function resolveCellRow(field, record, node, dataSource) {
|
|
138
|
+
var _field$value, _node$data;
|
|
139
|
+
var rows = (_field$value = field === null || field === void 0 ? void 0 : field.value) !== null && _field$value !== void 0 ? _field$value : dataSource;
|
|
140
|
+
var candidate = (_node$data = node === null || node === void 0 ? void 0 : node.data) !== null && _node$data !== void 0 ? _node$data : record;
|
|
141
|
+
if (!Array.isArray(rows)) return {
|
|
142
|
+
index: -1,
|
|
143
|
+
record: candidate
|
|
144
|
+
};
|
|
145
|
+
var index = rows.indexOf(candidate);
|
|
146
|
+
if (index < 0) {
|
|
147
|
+
var _ref, _ref2, _candidate$_id;
|
|
148
|
+
var id = (_ref = (_ref2 = (_candidate$_id = candidate === null || candidate === void 0 ? void 0 : candidate._id) !== null && _candidate$_id !== void 0 ? _candidate$_id : candidate === null || candidate === void 0 ? void 0 : candidate.id) !== null && _ref2 !== void 0 ? _ref2 : record === null || record === void 0 ? void 0 : record._id) !== null && _ref !== void 0 ? _ref : record === null || record === void 0 ? void 0 : record.id;
|
|
149
|
+
if (id != null) index = rows.findIndex(function (row) {
|
|
150
|
+
var _row$_id;
|
|
151
|
+
var rowId = (_row$_id = row === null || row === void 0 ? void 0 : row._id) !== null && _row$_id !== void 0 ? _row$_id : row === null || row === void 0 ? void 0 : row.id;
|
|
152
|
+
return rowId != null && String(rowId) === String(id);
|
|
153
|
+
});
|
|
154
|
+
}
|
|
155
|
+
return {
|
|
156
|
+
index: index,
|
|
157
|
+
record: index >= 0 ? rows[index] : undefined
|
|
158
|
+
};
|
|
159
|
+
};
|
|
160
|
+
var AgField = function AgField(_ref3) {
|
|
161
|
+
var value = _ref3.value,
|
|
162
|
+
record = _ref3.data,
|
|
163
|
+
dataSource = _ref3.dataSource,
|
|
164
|
+
schema = _ref3.schema,
|
|
165
|
+
field = _ref3.field,
|
|
166
|
+
node = _ref3.node;
|
|
167
|
+
var _resolveCellRow = resolveCellRow(field, record, node, dataSource),
|
|
168
|
+
index = _resolveCellRow.index;
|
|
169
|
+
if (index < 0) return null;
|
|
141
170
|
var children =
|
|
142
171
|
/*#__PURE__*/
|
|
143
172
|
//@ts-ignore
|
|
@@ -207,10 +236,10 @@ var readByFieldPath = function readByFieldPath(record, path) {
|
|
|
207
236
|
if (record == null) return undefined;
|
|
208
237
|
// 对象解构:与 Formily 一致,按成员路径分别取值拼回 {value, label} 对象 @author nokecy
|
|
209
238
|
var destructure = path.startsWith('{') ? parseObjectDestructure(path) : null;
|
|
210
|
-
if (destructure) return Object.fromEntries(destructure.map(function (
|
|
211
|
-
var
|
|
212
|
-
key =
|
|
213
|
-
memberPath =
|
|
239
|
+
if (destructure) return Object.fromEntries(destructure.map(function (_ref4) {
|
|
240
|
+
var _ref5 = _slicedToArray(_ref4, 2),
|
|
241
|
+
key = _ref5[0],
|
|
242
|
+
memberPath = _ref5[1];
|
|
214
243
|
return [key, readByFieldPath(record, memberPath)];
|
|
215
244
|
}));
|
|
216
245
|
if (path.indexOf('.') < 0) return record[path];
|
|
@@ -365,6 +394,7 @@ var LazyAgField = exports.LazyAgField = function LazyAgField(params) {
|
|
|
365
394
|
node = params.node,
|
|
366
395
|
colDef = params.colDef,
|
|
367
396
|
context = params.context,
|
|
397
|
+
api = params.api,
|
|
368
398
|
formatter = params.formatter,
|
|
369
399
|
renderer = params.renderer,
|
|
370
400
|
columnProps = params.columnProps,
|
|
@@ -387,59 +417,88 @@ var LazyAgField = exports.LazyAgField = function LazyAgField(params) {
|
|
|
387
417
|
|
|
388
418
|
/** 离开本格:校验通过才卸回懒挂载文本。未触碰的空必填格保留控件等待填写。@author nokecy */
|
|
389
419
|
var handleLeave = /*#__PURE__*/function () {
|
|
390
|
-
var
|
|
391
|
-
var _field$
|
|
392
|
-
var currentValue, index, cellField;
|
|
420
|
+
var _ref6 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee(isStale, hadFocus) {
|
|
421
|
+
var _field$form, _api$isDestroyed;
|
|
422
|
+
var current, currentValue, index, cellField, latest, _api$refreshCells;
|
|
393
423
|
return _regeneratorRuntime().wrap(function _callee$(_context) {
|
|
394
424
|
while (1) switch (_context.prev = _context.next) {
|
|
395
425
|
case 0:
|
|
396
|
-
|
|
397
|
-
|
|
398
|
-
if (!(required && isBlank(currentValue) && !hadFocus)) {
|
|
426
|
+
current = resolveCellRow(field, record, node, dataSource);
|
|
427
|
+
if (!(current.index < 0)) {
|
|
399
428
|
_context.next = 3;
|
|
400
429
|
break;
|
|
401
430
|
}
|
|
402
431
|
return _context.abrupt("return");
|
|
403
432
|
case 3:
|
|
404
|
-
|
|
433
|
+
currentValue = dataKey != null ? readByFieldPath(current.record, dataKey) : value; // 新增行的必填空格会预先挂载以参与提交校验;若用户从未进入该格,不在点击页面其他位置时
|
|
434
|
+
// 主动触发校验,但已带值的格子仍可恢复静默文本态。@author nokecy
|
|
435
|
+
if (!(required && isBlank(currentValue) && !hadFocus)) {
|
|
436
|
+
_context.next = 6;
|
|
437
|
+
break;
|
|
438
|
+
}
|
|
439
|
+
return _context.abrupt("return");
|
|
440
|
+
case 6:
|
|
441
|
+
index = current.index; // 字段节点按数据路径找(不含 void 容器);从没挂载过就没有节点,无需校验
|
|
405
442
|
cellField = index >= 0 && dataKey ? (_field$form = field.form) === null || _field$form === void 0 ? void 0 : _field$form.query(field.path.concat(index).concat(dataKey)).take() : undefined;
|
|
406
443
|
if (!cellField) {
|
|
407
|
-
_context.next =
|
|
444
|
+
_context.next = 17;
|
|
408
445
|
break;
|
|
409
446
|
}
|
|
410
|
-
_context.prev =
|
|
411
|
-
_context.next =
|
|
447
|
+
_context.prev = 9;
|
|
448
|
+
_context.next = 12;
|
|
412
449
|
return cellField.validate();
|
|
413
|
-
case
|
|
414
|
-
_context.next =
|
|
450
|
+
case 12:
|
|
451
|
+
_context.next = 17;
|
|
415
452
|
break;
|
|
416
|
-
case 11:
|
|
417
|
-
_context.prev = 11;
|
|
418
|
-
_context.t0 = _context["catch"](6);
|
|
419
|
-
return _context.abrupt("return");
|
|
420
453
|
case 14:
|
|
454
|
+
_context.prev = 14;
|
|
455
|
+
_context.t0 = _context["catch"](9);
|
|
456
|
+
return _context.abrupt("return");
|
|
457
|
+
case 17:
|
|
421
458
|
if (!isStale()) {
|
|
422
|
-
_context.next =
|
|
459
|
+
_context.next = 19;
|
|
460
|
+
break;
|
|
461
|
+
}
|
|
462
|
+
return _context.abrupt("return");
|
|
463
|
+
case 19:
|
|
464
|
+
latest = resolveCellRow(field, record, node, dataSource); // 校验期间被替换、删除或移位的行,交给下一次离开重新校验。@author nokecy
|
|
465
|
+
if (!(latest.index !== index || latest.record !== current.record)) {
|
|
466
|
+
_context.next = 22;
|
|
423
467
|
break;
|
|
424
468
|
}
|
|
425
469
|
return _context.abrupt("return");
|
|
426
|
-
case
|
|
427
|
-
if (!(required && isBlank(dataKey != null ? readByFieldPath(record, dataKey) : undefined))) {
|
|
428
|
-
_context.next =
|
|
470
|
+
case 22:
|
|
471
|
+
if (!(required && isBlank(dataKey != null ? readByFieldPath(latest.record, dataKey) : undefined))) {
|
|
472
|
+
_context.next = 24;
|
|
429
473
|
break;
|
|
430
474
|
}
|
|
431
475
|
return _context.abrupt("return");
|
|
432
|
-
case
|
|
433
|
-
activeCells.delete(key)
|
|
476
|
+
case 24:
|
|
477
|
+
if (activeCells.delete(key)) {
|
|
478
|
+
_context.next = 26;
|
|
479
|
+
break;
|
|
480
|
+
}
|
|
481
|
+
return _context.abrupt("return");
|
|
482
|
+
case 26:
|
|
434
483
|
rerender();
|
|
435
|
-
|
|
484
|
+
// 激活集合由 ArrayTable 与渲染器共享;退出时也同步通知 AG Grid 刷新本格,
|
|
485
|
+
// 不再依赖新增行等整表更新来收回已完成编辑的控件。字段节点和值仍保留。
|
|
486
|
+
// @author nokecy
|
|
487
|
+
if (node && colDef !== null && colDef !== void 0 && colDef.field && !(api !== null && api !== void 0 && (_api$isDestroyed = api.isDestroyed) !== null && _api$isDestroyed !== void 0 && _api$isDestroyed.call(api))) {
|
|
488
|
+
api === null || api === void 0 || (_api$refreshCells = api.refreshCells) === null || _api$refreshCells === void 0 || _api$refreshCells.call(api, {
|
|
489
|
+
rowNodes: [node],
|
|
490
|
+
columns: [colDef.field],
|
|
491
|
+
force: true
|
|
492
|
+
});
|
|
493
|
+
}
|
|
494
|
+
case 28:
|
|
436
495
|
case "end":
|
|
437
496
|
return _context.stop();
|
|
438
497
|
}
|
|
439
|
-
}, _callee, null, [[
|
|
498
|
+
}, _callee, null, [[9, 14]]);
|
|
440
499
|
}));
|
|
441
500
|
return function handleLeave(_x, _x2) {
|
|
442
|
-
return
|
|
501
|
+
return _ref6.apply(this, arguments);
|
|
443
502
|
};
|
|
444
503
|
}();
|
|
445
504
|
|
|
@@ -452,11 +511,11 @@ var LazyAgField = exports.LazyAgField = function LazyAgField(params) {
|
|
|
452
511
|
* 仅选项类组件且有值时才查;按精确地址取、放在 untracked 里,不让每个格子都订阅整张字段表。@author nokecy
|
|
453
512
|
*/
|
|
454
513
|
var liveDataSource = function liveDataSource(liveValue) {
|
|
455
|
-
var _field$value$indexOf4, _field$value4, _field$value4$indexOf;
|
|
456
514
|
var form = field === null || field === void 0 ? void 0 : field.form;
|
|
457
515
|
// 只有用「选项映射」格式化器的列(Select 一族,或登记为同一格式化器的组件)才需要运行时选项
|
|
458
516
|
if (!form || !dataKey || isBlank(liveValue) || formatter !== (0, _readOnlyFormatters.getReadOnlyFormatter)('Select')) return undefined;
|
|
459
|
-
var
|
|
517
|
+
var _resolveCellRow2 = resolveCellRow(field, record, node, dataSource),
|
|
518
|
+
index = _resolveCellRow2.index;
|
|
460
519
|
if (index < 0) return undefined;
|
|
461
520
|
var own = (0, _reactive.untracked)(function () {
|
|
462
521
|
return form.query(field.path.concat(index).concat(dataKey)).take();
|
|
@@ -471,14 +530,17 @@ var LazyAgField = exports.LazyAgField = function LazyAgField(params) {
|
|
|
471
530
|
// 改值(行引用不变 → AG-Grid 不刷新该格、外层 observer 也不重渲)时,本格能自行重渲刷新——
|
|
472
531
|
// 免去调用方加 forceAgField 逃生阀。字段名缺失才回退 params.value。@author nokecy
|
|
473
532
|
return /*#__PURE__*/_react.default.createElement(_react2.Observer, null, function () {
|
|
533
|
+
var _resolveCellRow3 = resolveCellRow(field, record, node, dataSource),
|
|
534
|
+
currentRecord = _resolveCellRow3.record;
|
|
535
|
+
if (!currentRecord) return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null);
|
|
474
536
|
var activated = activeCells.has(key);
|
|
475
537
|
// 已挂载时不读值:挂载后每敲一个字都会变,追踪它会让整棵字段树跟着重渲
|
|
476
|
-
var liveValue = activated ? undefined : dataKey != null
|
|
538
|
+
var liveValue = activated ? undefined : dataKey != null ? readByFieldPath(currentRecord, dataKey) : value;
|
|
477
539
|
// Editable 装饰器会把非新增行的格转成只读态、不参与校验(见 editable/index.tsx),
|
|
478
540
|
// 这时挂了没用,还会把灰色「请输入」占位换成只读态的「N/A」,所以留在文本态
|
|
479
|
-
var editableWillReadPretty = (fieldSchema === null || fieldSchema === void 0 ? void 0 : fieldSchema['x-decorator']) === 'Editable' &&
|
|
541
|
+
var editableWillReadPretty = (fieldSchema === null || fieldSchema === void 0 ? void 0 : fieldSchema['x-decorator']) === 'Editable' && currentRecord._isNew !== true;
|
|
480
542
|
if (!activated && required && !editableWillReadPretty && isBlank(liveValue)) {
|
|
481
|
-
var _pattern = resolveLazyCellPattern(field,
|
|
543
|
+
var _pattern = resolveLazyCellPattern(field, currentRecord, dataKey, fieldSchema, scope);
|
|
482
544
|
if (_pattern == null || _pattern === 'editable') {
|
|
483
545
|
// 记进激活集合:用户填了第一个字后值不再为空,但格子仍在编辑,要挂到失焦为止
|
|
484
546
|
activeCells.add(key);
|
|
@@ -490,7 +552,7 @@ var LazyAgField = exports.LazyAgField = function LazyAgField(params) {
|
|
|
490
552
|
onLeave: handleLeave
|
|
491
553
|
}, /*#__PURE__*/_react.default.createElement(AgField, {
|
|
492
554
|
value: value,
|
|
493
|
-
data:
|
|
555
|
+
data: currentRecord,
|
|
494
556
|
dataSource: dataSource,
|
|
495
557
|
schema: schema,
|
|
496
558
|
field: field,
|
|
@@ -505,7 +567,7 @@ var LazyAgField = exports.LazyAgField = function LazyAgField(params) {
|
|
|
505
567
|
var text = formatter ? formatter(liveValue, ctx) : liveValue == null ? '' : String(liveValue);
|
|
506
568
|
// 纯文本占满单元格,点击交给 AG-Grid onCellClicked 激活;样式尽量贴近 Editable 只读态避免点开跳动
|
|
507
569
|
// 只读态(readPretty/disabled/readOnly)的空格不出编辑提示,留空与只读快路径一致
|
|
508
|
-
var pattern = text === '' ? resolveLazyCellPattern(field,
|
|
570
|
+
var pattern = text === '' ? resolveLazyCellPattern(field, currentRecord, dataKey, fieldSchema, scope) : undefined;
|
|
509
571
|
if (text === '' && (pattern == null || pattern === 'editable')) {
|
|
510
572
|
// 空值:出淡灰 placeholder,让用户看得出这格能填(颜色取 antd 输入框 placeholder 的 token,自动跟随暗色主题)
|
|
511
573
|
return /*#__PURE__*/_react.default.createElement("span", {
|
|
@@ -545,6 +607,8 @@ var LazyReadOnlyText = exports.LazyReadOnlyText = function LazyReadOnlyText(para
|
|
|
545
607
|
var _fieldSchema$name2;
|
|
546
608
|
var value = params.value,
|
|
547
609
|
record = params.data,
|
|
610
|
+
field = params.field,
|
|
611
|
+
node = params.node,
|
|
548
612
|
colDef = params.colDef,
|
|
549
613
|
formatter = params.formatter,
|
|
550
614
|
renderer = params.renderer,
|
|
@@ -552,7 +616,8 @@ var LazyReadOnlyText = exports.LazyReadOnlyText = function LazyReadOnlyText(para
|
|
|
552
616
|
fieldSchema = params.fieldSchema;
|
|
553
617
|
var dataKey = (_fieldSchema$name2 = fieldSchema === null || fieldSchema === void 0 ? void 0 : fieldSchema.name) !== null && _fieldSchema$name2 !== void 0 ? _fieldSchema$name2 : colDef === null || colDef === void 0 ? void 0 : colDef.field;
|
|
554
618
|
return /*#__PURE__*/_react.default.createElement(_react2.Observer, null, function () {
|
|
555
|
-
var
|
|
619
|
+
var currentRecord = resolveCellRow(field, record, node).record;
|
|
620
|
+
var liveValue = dataKey != null && currentRecord ? readByFieldPath(currentRecord, dataKey) : value;
|
|
556
621
|
var text = formatter ? formatter(liveValue, {
|
|
557
622
|
columnProps: columnProps,
|
|
558
623
|
fieldSchema: fieldSchema
|
|
@@ -640,12 +705,13 @@ var applyNumberInputDefaults = function applyNumberInputDefaults(dataField) {
|
|
|
640
705
|
// 重命名自 useArrayTableColumns:内部无任何 Hook 调用,use 前缀违反 Hook 命名约定且曾在 useMemo 内被调用 @author nokecy
|
|
641
706
|
var buildArrayTableColumns = exports.buildArrayTableColumns = function buildArrayTableColumns(dataSource, field, sources) {
|
|
642
707
|
var arrayPattern = field === null || field === void 0 ? void 0 : field.pattern;
|
|
643
|
-
return sources.reduce(function (buf,
|
|
644
|
-
var _getReadOnlyFormatter;
|
|
645
|
-
var name =
|
|
646
|
-
columnProps =
|
|
647
|
-
schema =
|
|
648
|
-
display =
|
|
708
|
+
return sources.reduce(function (buf, _ref7, key) {
|
|
709
|
+
var _ref8, _getReadOnlyFormatter, _dataField$xComponen, _dataField$xComponen2;
|
|
710
|
+
var name = _ref7.name,
|
|
711
|
+
columnProps = _ref7.columnProps,
|
|
712
|
+
schema = _ref7.schema,
|
|
713
|
+
display = _ref7.display,
|
|
714
|
+
components = _ref7.components;
|
|
649
715
|
if (display && display !== 'visible') return buf;
|
|
650
716
|
if (!isColumnComponent(schema)) return buf;
|
|
651
717
|
|
|
@@ -689,7 +755,15 @@ var buildArrayTableColumns = exports.buildArrayTableColumns = function buildArra
|
|
|
689
755
|
// 只读列不兜底:自定义只读组件常显示别的字段(如 SiblingText),按自身值出文本会错。@author nokecy
|
|
690
756
|
// 登记了只读渲染器的组件只读列也走快路径(渲染器出内容,兜底格式化器只用于判空)。@author nokecy
|
|
691
757
|
var renderer = (0, _readOnlyFormatters.getReadOnlyRenderer)(component);
|
|
692
|
-
var formatter = (_getReadOnlyFormatter = (0, _readOnlyFormatters.getReadOnlyFormatter)(component)) !== null && _getReadOnlyFormatter !== void 0 ? _getReadOnlyFormatter : (!readOnly || renderer) && component && (dataField === null || dataField === void 0 ? void 0 : dataField.type) !== 'void' ? _readOnlyFormatters.fallbackFormatter : null;
|
|
758
|
+
var formatter = (_ref8 = (_getReadOnlyFormatter = (0, _readOnlyFormatters.getReadOnlyFormatter)(component, components)) !== null && _getReadOnlyFormatter !== void 0 ? _getReadOnlyFormatter : (dataField === null || dataField === void 0 || (_dataField$xComponen = dataField['x-component-props']) === null || _dataField$xComponen === void 0 ? void 0 : _dataField$xComponen.displayField) === 'value' ? _readOnlyFormatters.fallbackFormatter : null) !== null && _ref8 !== void 0 ? _ref8 : (!readOnly || renderer) && component && (dataField === null || dataField === void 0 ? void 0 : dataField.type) !== 'void' ? _readOnlyFormatters.fallbackFormatter : null;
|
|
759
|
+
var displayColumnProps = formatter && ((0, _readOnlyFormatters.getReadOnlyFormatter)(component, components) !== (0, _readOnlyFormatters.getReadOnlyFormatter)(component) || (dataField === null || dataField === void 0 || (_dataField$xComponen2 = dataField['x-component-props']) === null || _dataField$xComponen2 === void 0 ? void 0 : _dataField$xComponen2.displayField) === 'value') ? {
|
|
760
|
+
valueFormatter: function valueFormatter(params) {
|
|
761
|
+
return formatter(params.value, {
|
|
762
|
+
columnProps: columnProps,
|
|
763
|
+
fieldSchema: dataField
|
|
764
|
+
});
|
|
765
|
+
}
|
|
766
|
+
} : {};
|
|
693
767
|
var hasReactions = !!(dataField && dataField['x-reactions']);
|
|
694
768
|
if (!readOnly) applyNumberInputDefaults(dataField);
|
|
695
769
|
var forceEager = (columnProps === null || columnProps === void 0 ? void 0 : columnProps.forceAgField) === true;
|
|
@@ -706,9 +780,11 @@ var buildArrayTableColumns = exports.buildArrayTableColumns = function buildArra
|
|
|
706
780
|
// 两者不一致时 record[name] 恒为 undefined → 单元格空白(点击挂 AgField 才按内层字段名显真值)。
|
|
707
781
|
// 故按内层字段名补 valueGetter(仅在与 name 不一致时,保持 name===字段名 的现状)。@author nokecy
|
|
708
782
|
var dataFieldName = dataField === null || dataField === void 0 ? void 0 : dataField.name;
|
|
709
|
-
var valueGetter = dataFieldName && dataFieldName !== name ? function (params) {
|
|
783
|
+
var valueGetter = !columnProps.valueGetter && dataFieldName && dataFieldName !== name ? function (params) {
|
|
710
784
|
return readByFieldPath(params === null || params === void 0 ? void 0 : params.data, dataFieldName);
|
|
711
785
|
} : undefined;
|
|
786
|
+
// 选择器解构值仍交给渲染器;排序单独提取展示字段,不能把整对象当成相等的文本。@author nokecy
|
|
787
|
+
if ((!dataField || dataField.type === 'void') && !columnProps.valueGetter && columnProps.sortable == null) base.sortable = false;else if (dataField && !base.comparator) base.comparator = (0, _sorting.createArrayTableComparator)(dataField, columnProps, formatter);
|
|
712
788
|
// 字段名是路径:`item.qty` 的值在 record.item.qty。快路径自己解析点号分段与对象解构(`{value:a,label:b}`);
|
|
713
789
|
// 数组解构/下标等其余语法解析不了,回退全树交给 Formily。@author nokecy
|
|
714
790
|
var canFastPath = !dataFieldName || isFastPathFieldName(dataFieldName);
|
|
@@ -724,6 +800,7 @@ var buildArrayTableColumns = exports.buildArrayTableColumns = function buildArra
|
|
|
724
800
|
} : {}), {}, {
|
|
725
801
|
cellRenderer: LazyReadOnlyText,
|
|
726
802
|
cellRendererParams: {
|
|
803
|
+
field: field,
|
|
727
804
|
formatter: formatter,
|
|
728
805
|
renderer: renderer,
|
|
729
806
|
columnProps: columnProps,
|
|
@@ -784,11 +861,13 @@ var buildArrayTableColumns = exports.buildArrayTableColumns = function buildArra
|
|
|
784
861
|
// 必填、或带校验规则且为空的格必须挂真控件,否则没有字段节点,提交时没人校验它,见 LazyAgField
|
|
785
862
|
required: isRequiredSchema(dataField) || hasValidatorRule(dataField)
|
|
786
863
|
}
|
|
787
|
-
}));
|
|
864
|
+
}, displayColumnProps));
|
|
788
865
|
}
|
|
789
866
|
|
|
790
867
|
// ③ 兜底全树
|
|
791
|
-
return emit(_objectSpread(_objectSpread({}, base),
|
|
868
|
+
return emit(_objectSpread(_objectSpread(_objectSpread(_objectSpread({}, base), valueGetter ? {
|
|
869
|
+
valueGetter: valueGetter
|
|
870
|
+
} : {}), displayColumnProps), {}, {
|
|
792
871
|
cellRendererParams: {
|
|
793
872
|
dataSource: dataSource,
|
|
794
873
|
schema: schema,
|
|
@@ -830,9 +909,9 @@ var collectLazyDefaults = exports.collectLazyDefaults = function collectLazyDefa
|
|
|
830
909
|
key: String((_fieldSchema$name3 = fieldSchema === null || fieldSchema === void 0 ? void 0 : fieldSchema.name) !== null && _fieldSchema$name3 !== void 0 ? _fieldSchema$name3 : col.field),
|
|
831
910
|
value: fieldSchema === null || fieldSchema === void 0 ? void 0 : fieldSchema.default
|
|
832
911
|
};
|
|
833
|
-
}).filter(function (
|
|
834
|
-
var key =
|
|
835
|
-
value =
|
|
912
|
+
}).filter(function (_ref9) {
|
|
913
|
+
var key = _ref9.key,
|
|
914
|
+
value = _ref9.value;
|
|
836
915
|
return SIMPLE_FIELD_NAME.test(key) && value !== undefined && value !== null && !(typeof value === 'string' && value.includes('{{'));
|
|
837
916
|
});
|
|
838
917
|
};
|
|
@@ -851,9 +930,9 @@ var applyLazyDefaults = exports.applyLazyDefaults = function applyLazyDefaults(a
|
|
|
851
930
|
// 已落库的行(带 id)保持库里的样子:补默认值会让受控字段凭空出现「变更」,
|
|
852
931
|
// 已审批的数据保存时还会被要求填变更原因。只补新增行(按钮之外的途径推进来的行)。
|
|
853
932
|
if (row.id != null || row._id != null) return;
|
|
854
|
-
defaults.forEach(function (
|
|
855
|
-
var key =
|
|
856
|
-
value =
|
|
933
|
+
defaults.forEach(function (_ref10) {
|
|
934
|
+
var key = _ref10.key,
|
|
935
|
+
value = _ref10.value;
|
|
857
936
|
if (row[key] == null) {
|
|
858
937
|
form.setValuesIn(arrayField.path.concat(index).concat(key), _typeof(value) === 'object' ? JSON.parse(JSON.stringify(value)) : value);
|
|
859
938
|
}
|
|
@@ -2,10 +2,13 @@ import { SelectProps } from 'antd/lib/select';
|
|
|
2
2
|
import React from 'react';
|
|
3
3
|
import { ColDef, ColGroupDef } from 'ag-grid-community';
|
|
4
4
|
import type { PagedApiAdapter } from '../adapters';
|
|
5
|
+
import type { SelectDisplayField } from '../array-table/readOnlyFormatters';
|
|
5
6
|
import './index.less';
|
|
6
7
|
/** 选择窗口的行选择模式。 */
|
|
7
8
|
type DialogSelectionMode = 'single' | 'multiple';
|
|
8
9
|
interface IDialogSelectProps extends SelectProps<any> {
|
|
10
|
+
/** 回显编码或名称,保持原始 value/label 和联动回调不变。@author nokecy */
|
|
11
|
+
displayField?: SelectDisplayField;
|
|
9
12
|
/** 隐藏选择窗口入口(输入框内的后缀图标),只保留输入与下拉。 */
|
|
10
13
|
hideBtn?: boolean;
|
|
11
14
|
request?: any;
|
|
@@ -15,9 +15,11 @@ var _draggableModal = _interopRequireDefault(require("../draggableModal"));
|
|
|
15
15
|
var _adapters = require("../adapters");
|
|
16
16
|
var _controls = require("../readPretty/controls");
|
|
17
17
|
var _selectValue = require("../readPretty/selectValue");
|
|
18
|
+
var _readOnlyFormatters = require("../array-table/readOnlyFormatters");
|
|
19
|
+
var _cellInteractionLock = require("../array-table/cellInteractionLock");
|
|
18
20
|
require("./index.less");
|
|
19
|
-
var _excluded = ["request", "columnDefs", "value", "labelField", "valueField", "onChangeItem", "hideBtn", "useAutoComplete", "queryFun", "pagedApiAdapter", "modalWidth", "dialogZIndex", "dialogMode", "dialogPageSize", "dialogPageSizeOptions", "dialogGridKey", "dialogDataSource", "dialogIsRowSelectable", "dialogRenderer", "gridComponent"],
|
|
20
|
-
_excluded2 = ["request", "columnDefs", "labelField", "valueField", "onChangeItem", "hideBtn", "useAutoComplete", "queryFun", "pagedApiAdapter", "modalWidth", "dialogZIndex", "dialogMode", "dialogPageSize", "dialogPageSizeOptions", "dialogGridKey", "dialogDataSource", "dialogIsRowSelectable", "dialogRenderer", "gridComponent"];
|
|
21
|
+
var _excluded = ["request", "columnDefs", "value", "labelField", "valueField", "displayField", "onChangeItem", "hideBtn", "useAutoComplete", "queryFun", "pagedApiAdapter", "modalWidth", "dialogZIndex", "dialogMode", "dialogPageSize", "dialogPageSizeOptions", "dialogGridKey", "dialogDataSource", "dialogIsRowSelectable", "dialogRenderer", "gridComponent"],
|
|
22
|
+
_excluded2 = ["request", "columnDefs", "labelField", "valueField", "displayField", "onChangeItem", "hideBtn", "useAutoComplete", "queryFun", "pagedApiAdapter", "modalWidth", "dialogZIndex", "dialogMode", "dialogPageSize", "dialogPageSizeOptions", "dialogGridKey", "dialogDataSource", "dialogIsRowSelectable", "dialogRenderer", "gridComponent"];
|
|
21
23
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
22
24
|
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); }
|
|
23
25
|
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; }
|
|
@@ -49,6 +51,7 @@ var DialogSelectInner = function DialogSelectInner(props) {
|
|
|
49
51
|
value = props.value,
|
|
50
52
|
labelField = props.labelField,
|
|
51
53
|
valueField = props.valueField,
|
|
54
|
+
displayField = props.displayField,
|
|
52
55
|
onChangeItem = props.onChangeItem,
|
|
53
56
|
hideBtn = props.hideBtn,
|
|
54
57
|
useAutoComplete = props.useAutoComplete,
|
|
@@ -78,6 +81,7 @@ var DialogSelectInner = function DialogSelectInner(props) {
|
|
|
78
81
|
_useBoolean2$ = _useBoolean2[1],
|
|
79
82
|
setTrue = _useBoolean2$.setTrue,
|
|
80
83
|
setFalse = _useBoolean2$.setFalse;
|
|
84
|
+
(0, _cellInteractionLock.useCellInteractionLock)(visible);
|
|
81
85
|
var _useState = (0, _react2.useState)(undefined),
|
|
82
86
|
_useState2 = _slicedToArray(_useState, 2),
|
|
83
87
|
selectRows = _useState2[0],
|
|
@@ -149,7 +153,11 @@ var DialogSelectInner = function DialogSelectInner(props) {
|
|
|
149
153
|
'--qc-dialog-select-trigger-color': token.colorTextTertiary,
|
|
150
154
|
'--qc-dialog-select-trigger-hover': token.colorPrimary
|
|
151
155
|
};
|
|
152
|
-
var commonProps = _objectSpread(_objectSpread({}, rest),
|
|
156
|
+
var commonProps = _objectSpread(_objectSpread(_objectSpread({}, rest), displayField === 'value' ? {
|
|
157
|
+
labelRender: function labelRender(item) {
|
|
158
|
+
return (0, _readOnlyFormatters.formatSelectDisplay)(item, 'value');
|
|
159
|
+
}
|
|
160
|
+
} : {}), {}, {
|
|
153
161
|
className: mergedClassName,
|
|
154
162
|
value: state,
|
|
155
163
|
style: _objectSpread(_objectSpread({}, triggerStyle), rest.style || {})
|
|
@@ -289,6 +297,7 @@ var DialogSelect = (0, _react.observer)(function (props) {
|
|
|
289
297
|
columnDefs = safeProps.columnDefs,
|
|
290
298
|
labelField = safeProps.labelField,
|
|
291
299
|
valueField = safeProps.valueField,
|
|
300
|
+
displayField = safeProps.displayField,
|
|
292
301
|
onChangeItem = safeProps.onChangeItem,
|
|
293
302
|
hideBtn = safeProps.hideBtn,
|
|
294
303
|
useAutoComplete = safeProps.useAutoComplete,
|
|
@@ -305,6 +314,7 @@ var DialogSelect = (0, _react.observer)(function (props) {
|
|
|
305
314
|
dialogRenderer = safeProps.dialogRenderer,
|
|
306
315
|
gridComponent = safeProps.gridComponent,
|
|
307
316
|
selectProps = _objectWithoutProperties(safeProps, _excluded2);
|
|
317
|
+
if (displayField === 'value') return /*#__PURE__*/_react2.default.createElement("span", null, (0, _readOnlyFormatters.formatSelectDisplay)('value' in safeProps ? safeProps.value : safeProps.defaultValue, 'value') || '—');
|
|
308
318
|
return /*#__PURE__*/_react2.default.createElement(_controls.Select, _extends({}, selectProps, {
|
|
309
319
|
disabled: true
|
|
310
320
|
}));
|