@nokecy/qc-ui 1.1.38 → 1.1.39

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.
Files changed (121) hide show
  1. package/dist/cjs/ag-grid-plus/ag-gridPlus.js +33 -20
  2. package/dist/cjs/ag-grid-plus/context/useSchemeDataFlow.js +37 -1
  3. package/dist/cjs/ag-grid-plus/context/useSchemeManager.js +120 -79
  4. package/dist/cjs/ag-grid-plus/setting/ColumnSetting.js +52 -36
  5. package/dist/cjs/ag-grid-plus/setting/columnGroupUtils.js +14 -3
  6. package/dist/cjs/array-table/arrayAddBtn.js +26 -17
  7. package/dist/cjs/array-table/hooks.d.ts +2 -1
  8. package/dist/cjs/array-table/hooks.js +23 -43
  9. package/dist/cjs/array-table/index.js +105 -25
  10. package/dist/cjs/array-table/preview.js +1 -1
  11. package/dist/cjs/array-table/readOnlyFormatters.d.ts +28 -0
  12. package/dist/cjs/array-table/readOnlyFormatters.js +113 -0
  13. package/dist/cjs/array-table/utils.d.ts +2 -2
  14. package/dist/cjs/array-table/utils.js +162 -11
  15. package/dist/cjs/editable/index.js +3 -1
  16. package/dist/cjs/formDesigner/FormDesigner.js +3 -2
  17. package/dist/cjs/formDesigner/preWidgets/index.d.ts +1 -10
  18. package/dist/cjs/formDesigner/preWidgets/index.js +1 -100
  19. package/dist/cjs/formDesigner/preWidgets/preDefineProperty.d.ts +11 -0
  20. package/dist/cjs/formDesigner/preWidgets/preDefineProperty.js +70 -0
  21. package/dist/esm/ag-grid-plus/ag-gridPlus.js +33 -20
  22. package/dist/esm/ag-grid-plus/context/useSchemeDataFlow.js +37 -1
  23. package/dist/esm/ag-grid-plus/context/useSchemeManager.js +120 -79
  24. package/dist/esm/ag-grid-plus/setting/ColumnSetting.js +52 -36
  25. package/dist/esm/ag-grid-plus/setting/columnGroupUtils.js +13 -0
  26. package/dist/esm/array-table/arrayAddBtn.js +26 -17
  27. package/dist/esm/array-table/hooks.d.ts +2 -1
  28. package/dist/esm/array-table/hooks.js +23 -43
  29. package/dist/esm/array-table/index.js +107 -27
  30. package/dist/esm/array-table/preview.js +2 -2
  31. package/dist/esm/array-table/readOnlyFormatters.d.ts +28 -0
  32. package/dist/esm/array-table/readOnlyFormatters.js +107 -0
  33. package/dist/esm/array-table/utils.d.ts +2 -2
  34. package/dist/esm/array-table/utils.js +162 -11
  35. package/dist/esm/editable/index.js +3 -1
  36. package/dist/esm/formDesigner/FormDesigner.js +3 -2
  37. package/dist/esm/formDesigner/preWidgets/index.d.ts +1 -10
  38. package/dist/esm/formDesigner/preWidgets/index.js +1 -10
  39. package/dist/esm/formDesigner/preWidgets/preDefineProperty.d.ts +11 -0
  40. package/dist/esm/formDesigner/preWidgets/{preDefineProperty1/preview.js → preDefineProperty.js} +49 -30
  41. package/dist/umd/qc-ui.min.js +1 -1
  42. package/package.json +1 -1
  43. package/dist/cjs/formDesigner/preWidgets/preDefineProperty1/index.d.ts +0 -1
  44. package/dist/cjs/formDesigner/preWidgets/preDefineProperty1/index.js +0 -16
  45. package/dist/cjs/formDesigner/preWidgets/preDefineProperty1/preview.d.ts +0 -5
  46. package/dist/cjs/formDesigner/preWidgets/preDefineProperty1/preview.js +0 -51
  47. package/dist/cjs/formDesigner/preWidgets/preDefineProperty10/index.d.ts +0 -1
  48. package/dist/cjs/formDesigner/preWidgets/preDefineProperty10/index.js +0 -16
  49. package/dist/cjs/formDesigner/preWidgets/preDefineProperty10/preview.d.ts +0 -5
  50. package/dist/cjs/formDesigner/preWidgets/preDefineProperty10/preview.js +0 -50
  51. package/dist/cjs/formDesigner/preWidgets/preDefineProperty2/index.d.ts +0 -1
  52. package/dist/cjs/formDesigner/preWidgets/preDefineProperty2/index.js +0 -16
  53. package/dist/cjs/formDesigner/preWidgets/preDefineProperty2/preview.d.ts +0 -5
  54. package/dist/cjs/formDesigner/preWidgets/preDefineProperty2/preview.js +0 -50
  55. package/dist/cjs/formDesigner/preWidgets/preDefineProperty3/index.d.ts +0 -1
  56. package/dist/cjs/formDesigner/preWidgets/preDefineProperty3/index.js +0 -16
  57. package/dist/cjs/formDesigner/preWidgets/preDefineProperty3/preview.d.ts +0 -5
  58. package/dist/cjs/formDesigner/preWidgets/preDefineProperty3/preview.js +0 -50
  59. package/dist/cjs/formDesigner/preWidgets/preDefineProperty4/index.d.ts +0 -1
  60. package/dist/cjs/formDesigner/preWidgets/preDefineProperty4/index.js +0 -16
  61. package/dist/cjs/formDesigner/preWidgets/preDefineProperty4/preview.d.ts +0 -5
  62. package/dist/cjs/formDesigner/preWidgets/preDefineProperty4/preview.js +0 -50
  63. package/dist/cjs/formDesigner/preWidgets/preDefineProperty5/index.d.ts +0 -1
  64. package/dist/cjs/formDesigner/preWidgets/preDefineProperty5/index.js +0 -16
  65. package/dist/cjs/formDesigner/preWidgets/preDefineProperty5/preview.d.ts +0 -5
  66. package/dist/cjs/formDesigner/preWidgets/preDefineProperty5/preview.js +0 -50
  67. package/dist/cjs/formDesigner/preWidgets/preDefineProperty6/index.d.ts +0 -1
  68. package/dist/cjs/formDesigner/preWidgets/preDefineProperty6/index.js +0 -16
  69. package/dist/cjs/formDesigner/preWidgets/preDefineProperty6/preview.d.ts +0 -5
  70. package/dist/cjs/formDesigner/preWidgets/preDefineProperty6/preview.js +0 -50
  71. package/dist/cjs/formDesigner/preWidgets/preDefineProperty7/index.d.ts +0 -1
  72. package/dist/cjs/formDesigner/preWidgets/preDefineProperty7/index.js +0 -16
  73. package/dist/cjs/formDesigner/preWidgets/preDefineProperty7/preview.d.ts +0 -5
  74. package/dist/cjs/formDesigner/preWidgets/preDefineProperty7/preview.js +0 -50
  75. package/dist/cjs/formDesigner/preWidgets/preDefineProperty8/index.d.ts +0 -1
  76. package/dist/cjs/formDesigner/preWidgets/preDefineProperty8/index.js +0 -16
  77. package/dist/cjs/formDesigner/preWidgets/preDefineProperty8/preview.d.ts +0 -5
  78. package/dist/cjs/formDesigner/preWidgets/preDefineProperty8/preview.js +0 -50
  79. package/dist/cjs/formDesigner/preWidgets/preDefineProperty9/index.d.ts +0 -1
  80. package/dist/cjs/formDesigner/preWidgets/preDefineProperty9/index.js +0 -16
  81. package/dist/cjs/formDesigner/preWidgets/preDefineProperty9/preview.d.ts +0 -5
  82. package/dist/cjs/formDesigner/preWidgets/preDefineProperty9/preview.js +0 -50
  83. package/dist/esm/formDesigner/preWidgets/preDefineProperty1/index.d.ts +0 -1
  84. package/dist/esm/formDesigner/preWidgets/preDefineProperty1/index.js +0 -1
  85. package/dist/esm/formDesigner/preWidgets/preDefineProperty1/preview.d.ts +0 -5
  86. package/dist/esm/formDesigner/preWidgets/preDefineProperty10/index.d.ts +0 -1
  87. package/dist/esm/formDesigner/preWidgets/preDefineProperty10/index.js +0 -1
  88. package/dist/esm/formDesigner/preWidgets/preDefineProperty10/preview.d.ts +0 -5
  89. package/dist/esm/formDesigner/preWidgets/preDefineProperty10/preview.js +0 -43
  90. package/dist/esm/formDesigner/preWidgets/preDefineProperty2/index.d.ts +0 -1
  91. package/dist/esm/formDesigner/preWidgets/preDefineProperty2/index.js +0 -1
  92. package/dist/esm/formDesigner/preWidgets/preDefineProperty2/preview.d.ts +0 -5
  93. package/dist/esm/formDesigner/preWidgets/preDefineProperty2/preview.js +0 -43
  94. package/dist/esm/formDesigner/preWidgets/preDefineProperty3/index.d.ts +0 -1
  95. package/dist/esm/formDesigner/preWidgets/preDefineProperty3/index.js +0 -1
  96. package/dist/esm/formDesigner/preWidgets/preDefineProperty3/preview.d.ts +0 -5
  97. package/dist/esm/formDesigner/preWidgets/preDefineProperty3/preview.js +0 -43
  98. package/dist/esm/formDesigner/preWidgets/preDefineProperty4/index.d.ts +0 -1
  99. package/dist/esm/formDesigner/preWidgets/preDefineProperty4/index.js +0 -1
  100. package/dist/esm/formDesigner/preWidgets/preDefineProperty4/preview.d.ts +0 -5
  101. package/dist/esm/formDesigner/preWidgets/preDefineProperty4/preview.js +0 -43
  102. package/dist/esm/formDesigner/preWidgets/preDefineProperty5/index.d.ts +0 -1
  103. package/dist/esm/formDesigner/preWidgets/preDefineProperty5/index.js +0 -1
  104. package/dist/esm/formDesigner/preWidgets/preDefineProperty5/preview.d.ts +0 -5
  105. package/dist/esm/formDesigner/preWidgets/preDefineProperty5/preview.js +0 -43
  106. package/dist/esm/formDesigner/preWidgets/preDefineProperty6/index.d.ts +0 -1
  107. package/dist/esm/formDesigner/preWidgets/preDefineProperty6/index.js +0 -1
  108. package/dist/esm/formDesigner/preWidgets/preDefineProperty6/preview.d.ts +0 -5
  109. package/dist/esm/formDesigner/preWidgets/preDefineProperty6/preview.js +0 -43
  110. package/dist/esm/formDesigner/preWidgets/preDefineProperty7/index.d.ts +0 -1
  111. package/dist/esm/formDesigner/preWidgets/preDefineProperty7/index.js +0 -1
  112. package/dist/esm/formDesigner/preWidgets/preDefineProperty7/preview.d.ts +0 -5
  113. package/dist/esm/formDesigner/preWidgets/preDefineProperty7/preview.js +0 -43
  114. package/dist/esm/formDesigner/preWidgets/preDefineProperty8/index.d.ts +0 -1
  115. package/dist/esm/formDesigner/preWidgets/preDefineProperty8/index.js +0 -1
  116. package/dist/esm/formDesigner/preWidgets/preDefineProperty8/preview.d.ts +0 -5
  117. package/dist/esm/formDesigner/preWidgets/preDefineProperty8/preview.js +0 -43
  118. package/dist/esm/formDesigner/preWidgets/preDefineProperty9/index.d.ts +0 -1
  119. package/dist/esm/formDesigner/preWidgets/preDefineProperty9/index.js +0 -1
  120. package/dist/esm/formDesigner/preWidgets/preDefineProperty9/preview.d.ts +0 -5
  121. package/dist/esm/formDesigner/preWidgets/preDefineProperty9/preview.js +0 -43
@@ -1,5 +1,5 @@
1
1
  function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
2
- var _excluded = ["hide", "sort", "sortIndex"];
2
+ var _excluded = ["hide", "sort", "sortIndex", "forceAgField"];
3
3
  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; }
4
4
  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; }
5
5
  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; }
@@ -11,6 +11,7 @@ import React from 'react';
11
11
  import { useField, useFieldSchema, RecursionField } from '@formily/react';
12
12
  import { isArr } from '@formily/shared';
13
13
  import ArrayBase from "./arrayBase";
14
+ import { getReadOnlyFormatter } from "./readOnlyFormatters";
14
15
  var isColumnComponent = function isColumnComponent(schema) {
15
16
  var _schema$xComponent;
16
17
  return ((_schema$xComponent = schema['x-component']) === null || _schema$xComponent === void 0 ? void 0 : _schema$xComponent.indexOf('Column')) > -1;
@@ -102,24 +103,26 @@ var useArrayTableActions = function useArrayTableActions() {
102
103
  return schema.properties ? parseSources(schema.properties['actions'] || {}) : [];
103
104
  };
104
105
  var AgField = function AgField(_ref) {
105
- var _ref2, _node$rowIndex;
106
+ var _field$value$indexOf, _field$value, _field$value$indexOf2, _ref2, _node$rowIndex;
106
107
  var value = _ref.value,
107
108
  record = _ref.data,
108
109
  dataSource = _ref.dataSource,
109
110
  schema = _ref.schema,
110
111
  field = _ref.field,
111
112
  node = _ref.node;
112
- // 【修复】优先使用 AG-Grid 的 node.rowIndex,避免依赖 dataSource
113
- // 这样即使 columnDefs 中的 dataSource 是空数组,也能正确获取索引
114
- var index = (_ref2 = (_node$rowIndex = node === null || node === void 0 ? void 0 : node.rowIndex) !== null && _node$rowIndex !== void 0 ? _node$rowIndex : dataSource === null || dataSource === void 0 ? void 0 : dataSource.indexOf(record)) !== null && _ref2 !== void 0 ? _ref2 : -1;
113
+ // 数据序绑定:用 field.value.indexOf(record) 取数据数组下标(record === field.value 元素引用)。
114
+ // 排序/过滤后 node.rowIndex 是显示序 ≠ 数据序,会把单元格绑到别的行——故 indexOf 优先,
115
+ // 仅在未命中(理论不应发生)时才回退 rowIndex/dataSource。@author nokecy
116
+ var dataIndex = (_field$value$indexOf = field === null || field === void 0 || (_field$value = field.value) === null || _field$value === void 0 || (_field$value$indexOf2 = _field$value.indexOf) === null || _field$value$indexOf2 === void 0 ? void 0 : _field$value$indexOf2.call(_field$value, record)) !== null && _field$value$indexOf !== void 0 ? _field$value$indexOf : -1;
117
+ var index = dataIndex >= 0 ? dataIndex : (_ref2 = (_node$rowIndex = node === null || node === void 0 ? void 0 : node.rowIndex) !== null && _node$rowIndex !== void 0 ? _node$rowIndex : dataSource === null || dataSource === void 0 ? void 0 : dataSource.indexOf(record)) !== null && _ref2 !== void 0 ? _ref2 : -1;
115
118
  var children =
116
119
  /*#__PURE__*/
117
120
  //@ts-ignore
118
121
  React.createElement(ArrayBase.Item, {
119
122
  index: index,
120
123
  record: function record() {
121
- var _field$value;
122
- return (_field$value = field.value) === null || _field$value === void 0 ? void 0 : _field$value[index];
124
+ var _field$value2;
125
+ return (_field$value2 = field.value) === null || _field$value2 === void 0 ? void 0 : _field$value2[index];
123
126
  },
124
127
  schema: schema,
125
128
  field: field
@@ -130,7 +133,108 @@ var AgField = function AgField(_ref) {
130
133
  }));
131
134
  return children;
132
135
  };
133
- var useArrayTableColumns = function useArrayTableColumns(dataSource, field, sources) {
136
+
137
+ /**
138
+ * 懒挂载单元格渲染器(可编辑列)。
139
+ *
140
+ * 已有行的可编辑格被 Editable 装饰器默认转成 readPretty 只读文本态(点击才进编辑),
141
+ * 但仍挂着完整 Formily 树——这是行多列多滚动卡的主因。本渲染器:
142
+ * - 新增行(_isNew,保持编辑态需即时校验) 或 已被激活(点击/导航进过)的格 -> 挂 AgField 全树;
143
+ * - 其余(存量行、没碰过) -> 只渲染廉价纯文本(复用 readOnlyFormatters),不挂 Formily 树。
144
+ *
145
+ * 激活态存放在 AG-Grid context.activeCells(Set),由 index.tsx 在点击/键盘导航时写入并 refreshCells。
146
+ * 「挂了不卸」:一旦激活保持挂载(直到行被虚拟化销毁),不做失焦退回,避开一堆边界。
147
+ *
148
+ * 校验安全:未碰过的存量格本就是 readPretty、本就不参与校验,不挂树校验语义零变化。@author nokecy
149
+ */
150
+ var LazyAgField = function LazyAgField(params) {
151
+ var _context$activeCells, _context$activeCells$;
152
+ var value = params.value,
153
+ record = params.data,
154
+ dataSource = params.dataSource,
155
+ schema = params.schema,
156
+ field = params.field,
157
+ node = params.node,
158
+ colDef = params.colDef,
159
+ context = params.context,
160
+ formatter = params.formatter,
161
+ columnProps = params.columnProps,
162
+ fieldSchema = params.fieldSchema;
163
+ var key = "".concat(node === null || node === void 0 ? void 0 : node.id, ":").concat(colDef === null || colDef === void 0 ? void 0 : colDef.field);
164
+ var activated = (record === null || record === void 0 ? void 0 : record._isNew) === true || (context === null || context === void 0 || (_context$activeCells = context.activeCells) === null || _context$activeCells === void 0 || (_context$activeCells$ = _context$activeCells.has) === null || _context$activeCells$ === void 0 ? void 0 : _context$activeCells$.call(_context$activeCells, key)) === true;
165
+ if (activated) {
166
+ return /*#__PURE__*/React.createElement(AgField, {
167
+ value: value,
168
+ data: record,
169
+ dataSource: dataSource,
170
+ schema: schema,
171
+ field: field,
172
+ node: node
173
+ });
174
+ }
175
+ var text = formatter ? formatter(value, {
176
+ columnProps: columnProps,
177
+ fieldSchema: fieldSchema
178
+ }) : value == null ? '' : String(value);
179
+ // 纯文本占满单元格,点击交给 AG-Grid onCellClicked 激活;样式尽量贴近 Editable 只读态避免点开跳动
180
+ return /*#__PURE__*/React.createElement("span", {
181
+ className: "ag-array-table-lazy-text",
182
+ style: {
183
+ display: 'inline-block',
184
+ width: '100%',
185
+ cursor: 'text'
186
+ }
187
+ }, text);
188
+ };
189
+
190
+ // 在 Column 的子 schema 里递归找到内层数据字段(可读 x-component / x-pattern / x-reactions / enum) @author nokecy
191
+ var findDataFieldSchema = function findDataFieldSchema(columnSchema, name) {
192
+ if (!columnSchema || !columnSchema.properties) return null;
193
+ var matched = null;
194
+ var firstField = null;
195
+ var walk = function walk(s) {
196
+ if (!s || !s.properties) return;
197
+ s.reduceProperties(function (_, child) {
198
+ if (matched) return _;
199
+ var comp = child === null || child === void 0 ? void 0 : child['x-component'];
200
+ // 兜底:记录第一个带 x-component 的叶子字段(排除 Column/Operations/Addition 等包裹组件)
201
+ if (!firstField && typeof comp === 'string' && !/Column|Operations|Addition/.test(comp)) {
202
+ firstField = child;
203
+ }
204
+ if ((child === null || child === void 0 ? void 0 : child.name) === name) {
205
+ matched = child;
206
+ return _;
207
+ }
208
+ walk(child);
209
+ return _;
210
+ }, null);
211
+ };
212
+ walk(columnSchema);
213
+ return matched || firstField;
214
+ };
215
+
216
+ /**
217
+ * 判断某列是否可走「只读纯文本快路径」(不挂 Formily 树)。
218
+ *
219
+ * 安全不对称:误判「可编辑->只读」会丢编辑/校验/reaction 计算(灾难);
220
+ * 误判「只读->可编辑」只是没优化(无害)。所以仅在能证明永久只读时才放行,其余一律回退。
221
+ *
222
+ * @author nokecy
223
+ */
224
+ var isColumnReadOnlyEligible = function isColumnReadOnlyEligible(arrayPattern, dataField, columnProps) {
225
+ if ((columnProps === null || columnProps === void 0 ? void 0 : columnProps.forceAgField) === true) return false;
226
+ // 有 x-reactions:可能运行时切 pattern 或计算字段值,静态判不准 -> 保守回退 AgField
227
+ if (dataField && dataField['x-reactions']) return false;
228
+ if (arrayPattern === 'readPretty') return true; // 整表只读(明细/详情页)
229
+ if (!dataField) return false;
230
+ if (dataField['x-pattern'] === 'readPretty') return true;
231
+ if (dataField['x-read-pretty'] === true) return true;
232
+ return false;
233
+ };
234
+
235
+ // 重命名自 useArrayTableColumns:内部无任何 Hook 调用,use 前缀违反 Hook 命名约定且曾在 useMemo 内被调用 @author nokecy
236
+ var buildArrayTableColumns = function buildArrayTableColumns(dataSource, field, sources) {
237
+ var arrayPattern = field === null || field === void 0 ? void 0 : field.pattern;
134
238
  return sources.reduce(function (buf, _ref3, key) {
135
239
  var name = _ref3.name,
136
240
  columnProps = _ref3.columnProps,
@@ -147,13 +251,60 @@ var useArrayTableColumns = function useArrayTableColumns(dataSource, field, sour
147
251
  var hide = columnProps.hide,
148
252
  sort = columnProps.sort,
149
253
  sortIndex = columnProps.sortIndex,
254
+ forceAgField = columnProps.forceAgField,
150
255
  safeColumnProps = _objectWithoutProperties(columnProps, _excluded);
151
- return buf.concat(_objectSpread(_objectSpread({}, safeColumnProps), {}, {
256
+ var base = _objectSpread(_objectSpread({}, safeColumnProps), {}, {
152
257
  // 保留 width 作为列的初始宽度
153
258
  width: columnProps.width,
154
259
  //@ts-ignore
155
260
  headerName: columnProps.headerName || columnProps.title,
156
- field: name,
261
+ field: name
262
+ });
263
+
264
+ // 三分流渲染策略:@author nokecy
265
+ // ① 只读纯文本(永不可编辑):只读列 + 有格式化器 -> valueFormatter,不挂 Formily 树。
266
+ // ② 可编辑懒挂载:可编辑列 + 有格式化器 + 无 reactions + 未强制 eager -> LazyAgField,
267
+ // 存量格先出廉价文本、点击/导航才挂全树(挂了不卸)。
268
+ // ③ 兜底全树:其余(无格式化器/带 reactions/forceAgField/只读但无格式化器) -> AgField。
269
+ var dataField = findDataFieldSchema(schema, name);
270
+ var component = dataField === null || dataField === void 0 ? void 0 : dataField['x-component'];
271
+ var formatter = getReadOnlyFormatter(component);
272
+ var readOnly = isColumnReadOnlyEligible(arrayPattern, dataField, columnProps);
273
+ var hasReactions = !!(dataField && dataField['x-reactions']);
274
+ var forceEager = (columnProps === null || columnProps === void 0 ? void 0 : columnProps.forceAgField) === true;
275
+
276
+ // ① 只读纯文本
277
+ if (readOnly && formatter) {
278
+ return buf.concat(_objectSpread(_objectSpread({}, base), {}, {
279
+ // 显式清掉可能从 safeColumnProps 漏带的 cellRenderer(AG-Grid 中 renderer 优先级高于 formatter)
280
+ cellRenderer: undefined,
281
+ valueFormatter: function valueFormatter(params) {
282
+ return formatter(params.value, {
283
+ columnProps: columnProps,
284
+ fieldSchema: dataField
285
+ });
286
+ }
287
+ }));
288
+ }
289
+
290
+ // ② 可编辑懒挂载
291
+ if (!readOnly && formatter && !hasReactions && !forceEager) {
292
+ return buf.concat(_objectSpread(_objectSpread({}, base), {}, {
293
+ cellRenderer: LazyAgField,
294
+ cellRendererParams: {
295
+ dataSource: dataSource,
296
+ schema: schema,
297
+ field: field,
298
+ formatter: formatter,
299
+ columnProps: columnProps,
300
+ fieldSchema: dataField,
301
+ lazyEditable: true // 供 index.tsx 识别懒列(激活/导航用)
302
+ }
303
+ }));
304
+ }
305
+
306
+ // ③ 兜底全树
307
+ return buf.concat(_objectSpread(_objectSpread({}, base), {}, {
157
308
  cellRendererParams: {
158
309
  dataSource: dataSource,
159
310
  schema: schema,
@@ -175,4 +326,4 @@ var useAddition = function useAddition() {
175
326
  return addition;
176
327
  }, null);
177
328
  };
178
- export { isColumnComponent, useArrayTableSources, useArrayTableActions, useArrayTableColumns, useAddition };
329
+ export { isColumnComponent, useArrayTableSources, useArrayTableActions, buildArrayTableColumns, useAddition };
@@ -98,7 +98,9 @@ var InternalEditable = observer(function (props) {
98
98
  var input = (_innerRef$current = innerRef.current) === null || _innerRef$current === void 0 ? void 0 : _innerRef$current.querySelector('input:not([readonly]):not([disabled]), textarea:not([readonly]):not([disabled])');
99
99
  if (input) {
100
100
  input.focus();
101
- if ('setSelectionRange' in input && input.type !== 'number' && input.type !== 'date') {
101
+ // setSelectionRange 仅 textarea 与 text/search/url/tel/password 类型 input 支持;
102
+ // checkbox/number/date 等会抛 InvalidStateError,故用白名单守卫。@author nokecy
103
+ if (input.tagName === 'TEXTAREA' || /^(text|search|url|tel|password)$/i.test(input.type || 'text')) {
102
104
  var _input$value;
103
105
  var length = ((_input$value = input.value) === null || _input$value === void 0 ? void 0 : _input$value.length) || 0;
104
106
  setTimeout(function () {
@@ -54,7 +54,7 @@ var FormDesigner = function FormDesigner(props) {
54
54
  }, [name]);
55
55
  var getComponents = function getComponents() {
56
56
  var components = {};
57
- businessComponents.map(function (x) {
57
+ businessComponents.forEach(function (x) {
58
58
  var _x$Behavior;
59
59
  if ((_x$Behavior = x.Behavior) !== null && _x$Behavior !== void 0 && (_x$Behavior = _x$Behavior[0]) !== null && _x$Behavior !== void 0 && _x$Behavior.name) {
60
60
  components[x.Behavior[0].name] = x;
@@ -64,7 +64,7 @@ var FormDesigner = function FormDesigner(props) {
64
64
  };
65
65
  var getComponentGroups = function getComponentGroups() {
66
66
  var groups = {};
67
- businessComponents.map(function (x) {
67
+ businessComponents.forEach(function (x) {
68
68
  if (groups[x.GroupName ? x.GroupName : '其他']) {
69
69
  groups[x.GroupName ? x.GroupName : '其他'].push(x);
70
70
  } else {
@@ -114,6 +114,7 @@ var FormDesigner = function FormDesigner(props) {
114
114
  sources: [PreDefineProperty1, PreDefineProperty2, PreDefineProperty3, PreDefineProperty4, PreDefineProperty5, PreDefineProperty6, PreDefineProperty7, PreDefineProperty8, PreDefineProperty9, PreDefineProperty10]
115
115
  }), Object.keys(groupComponents).map(function (x) {
116
116
  return /*#__PURE__*/React.createElement(ResourceWidget, {
117
+ key: x,
117
118
  title: x,
118
119
  sources: groupComponents[x]
119
120
  });
@@ -1,12 +1,3 @@
1
- export * from './preDefineProperty1';
2
- export * from './preDefineProperty2';
3
- export * from './preDefineProperty3';
4
- export * from './preDefineProperty4';
5
- export * from './preDefineProperty5';
6
- export * from './preDefineProperty6';
7
- export * from './preDefineProperty7';
8
- export * from './preDefineProperty8';
9
- export * from './preDefineProperty9';
10
- export * from './preDefineProperty10';
1
+ export * from './preDefineProperty';
11
2
  export * from './arrayTableIndex';
12
3
  export * from './card';
@@ -1,12 +1,3 @@
1
- export * from "./preDefineProperty1";
2
- export * from "./preDefineProperty2";
3
- export * from "./preDefineProperty3";
4
- export * from "./preDefineProperty4";
5
- export * from "./preDefineProperty5";
6
- export * from "./preDefineProperty6";
7
- export * from "./preDefineProperty7";
8
- export * from "./preDefineProperty8";
9
- export * from "./preDefineProperty9";
10
- export * from "./preDefineProperty10";
1
+ export * from "./preDefineProperty";
11
2
  export * from "./arrayTableIndex";
12
3
  export * from "./card";
@@ -0,0 +1,11 @@
1
+ import { DnFC } from '@nokecy/designable-react';
2
+ export declare const PreDefineProperty1: DnFC<any>;
3
+ export declare const PreDefineProperty2: DnFC<any>;
4
+ export declare const PreDefineProperty3: DnFC<any>;
5
+ export declare const PreDefineProperty4: DnFC<any>;
6
+ export declare const PreDefineProperty5: DnFC<any>;
7
+ export declare const PreDefineProperty6: DnFC<any>;
8
+ export declare const PreDefineProperty7: DnFC<any>;
9
+ export declare const PreDefineProperty8: DnFC<any>;
10
+ export declare const PreDefineProperty9: DnFC<any>;
11
+ export declare const PreDefineProperty10: DnFC<any>;
@@ -8,37 +8,56 @@ import React from 'react';
8
8
  import { Input } from '@formily/antd-v5';
9
9
  import { createBehavior, createResource } from '@nokecy/designable-core';
10
10
  import { AllSchemas, AllLocales } from '@nokecy/designable-formily-antd';
11
- import { createFieldSchema } from "../utils";
11
+ import { createFieldSchema } from "./utils";
12
12
  var FormilyInput = function FormilyInput(props) {
13
13
  return /*#__PURE__*/React.createElement(Input, props);
14
14
  };
15
- export var PreDefineProperty1 = FormilyInput;
16
- PreDefineProperty1.Behavior = createBehavior({
17
- name: 'PreDefineProperty1',
18
- extends: ['Field'],
19
- selector: function selector(node) {
20
- return node.props['x-component'] === 'Input' && node.props['name'] === 'preDefineProperty1';
21
- },
22
- designerProps: {
23
- propsSchema: createFieldSchema(AllSchemas.Input)
24
- },
25
- designerLocales: {
26
- // ...AllLocales.Input,
27
- 'zh-CN': _objectSpread(_objectSpread({}, AllLocales.Input['zh-CN']), {}, {
28
- title: '预定义字段1'
15
+
16
+ // 10 个预定义字段仅编号不同,用工厂统一生成,替代原 preDefineProperty1~10 十份机械复制 @author nokecy
17
+ var createPreDefineProperty = function createPreDefineProperty(n) {
18
+ var fieldName = "preDefineProperty".concat(n);
19
+ var componentName = "PreDefineProperty".concat(n);
20
+ var title = "\u9884\u5B9A\u4E49\u5B57\u6BB5".concat(n);
21
+ var component = function component(props) {
22
+ return /*#__PURE__*/React.createElement(FormilyInput, props);
23
+ };
24
+ component.Behavior = createBehavior({
25
+ name: componentName,
26
+ extends: ['Field'],
27
+ selector: function selector(node) {
28
+ return node.props['x-component'] === 'Input' && node.props['name'] === fieldName;
29
+ },
30
+ designerProps: {
31
+ propsSchema: createFieldSchema(AllSchemas.Input)
32
+ },
33
+ designerLocales: _objectSpread(_objectSpread({}, AllLocales.Input), {}, {
34
+ 'zh-CN': _objectSpread(_objectSpread({}, AllLocales.Input['zh-CN']), {}, {
35
+ title: title
36
+ })
29
37
  })
30
- }
31
- });
32
- PreDefineProperty1.Resource = createResource({
33
- icon: 'InputSource',
34
- elements: [{
35
- componentName: 'Field',
36
- props: {
37
- type: 'string',
38
- name: 'preDefineProperty1',
39
- title: '预定义字段1',
40
- 'x-decorator': 'FormItem',
41
- 'x-component': 'Input'
42
- }
43
- }]
44
- });
38
+ });
39
+ component.Resource = createResource({
40
+ icon: 'InputSource',
41
+ elements: [{
42
+ componentName: 'Field',
43
+ props: {
44
+ type: 'string',
45
+ name: fieldName,
46
+ title: title,
47
+ 'x-decorator': 'FormItem',
48
+ 'x-component': 'Input'
49
+ }
50
+ }]
51
+ });
52
+ return component;
53
+ };
54
+ export var PreDefineProperty1 = createPreDefineProperty(1);
55
+ export var PreDefineProperty2 = createPreDefineProperty(2);
56
+ export var PreDefineProperty3 = createPreDefineProperty(3);
57
+ export var PreDefineProperty4 = createPreDefineProperty(4);
58
+ export var PreDefineProperty5 = createPreDefineProperty(5);
59
+ export var PreDefineProperty6 = createPreDefineProperty(6);
60
+ export var PreDefineProperty7 = createPreDefineProperty(7);
61
+ export var PreDefineProperty8 = createPreDefineProperty(8);
62
+ export var PreDefineProperty9 = createPreDefineProperty(9);
63
+ export var PreDefineProperty10 = createPreDefineProperty(10);