@nokecy/qc-ui 1.1.73 → 1.1.75

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 (81) hide show
  1. package/dist/cjs/adapters/pagedApiAdapter.d.ts +2 -0
  2. package/dist/cjs/ag-grid-plus/ag-gridPlus.js +5 -3
  3. package/dist/cjs/ag-grid-plus/interface.d.ts +6 -0
  4. package/dist/cjs/ag-grid-plus/utils/aggregation.js +8 -14
  5. package/dist/cjs/ag-grid-plus/utils/columnProcessors.d.ts +2 -1
  6. package/dist/cjs/ag-grid-plus/utils/columnProcessors.js +5 -2
  7. package/dist/cjs/ag-grid-plus/utils/valueEnumColor.d.ts +17 -0
  8. package/dist/cjs/ag-grid-plus/utils/valueEnumColor.js +99 -0
  9. package/dist/cjs/dialogSelect/index.d.ts +31 -2
  10. package/dist/cjs/dialogSelect/index.js +209 -105
  11. package/dist/cjs/dialogSelect/index.less +39 -0
  12. package/dist/cjs/draggableModal/index.js +12 -8
  13. package/dist/cjs/entitySelect/index.d.ts +57 -0
  14. package/dist/cjs/entitySelect/index.js +172 -0
  15. package/dist/cjs/index.d.ts +8 -0
  16. package/dist/cjs/index.js +143 -1
  17. package/dist/cjs/readPretty/arrayTable.d.ts +6 -0
  18. package/dist/cjs/readPretty/arrayTable.js +156 -0
  19. package/dist/cjs/readPretty/controls.d.ts +11 -0
  20. package/dist/cjs/readPretty/controls.js +68 -0
  21. package/dist/cjs/readPretty/decimal.d.ts +4 -0
  22. package/dist/cjs/readPretty/decimal.js +28 -0
  23. package/dist/cjs/readPretty/formily.d.ts +2 -0
  24. package/dist/cjs/readPretty/formily.js +71 -0
  25. package/dist/cjs/readPretty/hoistStatics.d.ts +1 -0
  26. package/dist/cjs/readPretty/hoistStatics.js +37 -0
  27. package/dist/cjs/readPretty/index.d.ts +11 -0
  28. package/dist/cjs/readPretty/index.js +70 -0
  29. package/dist/cjs/readPretty/selectValue.d.ts +7 -0
  30. package/dist/cjs/readPretty/selectValue.js +60 -0
  31. package/dist/cjs/readPretty/values.d.ts +4 -0
  32. package/dist/cjs/readPretty/values.js +49 -0
  33. package/dist/cjs/toolBar/index.d.ts +1 -0
  34. package/dist/cjs/toolBar/index.js +44 -10
  35. package/dist/cjs/toolBar/index.less +25 -7
  36. package/dist/cjs/utils/businessDecimal.d.ts +11 -0
  37. package/dist/cjs/utils/businessDecimal.js +53 -0
  38. package/dist/cjs/utils/contrast.d.ts +40 -0
  39. package/dist/cjs/utils/contrast.js +153 -0
  40. package/dist/esm/adapters/pagedApiAdapter.d.ts +2 -0
  41. package/dist/esm/ag-grid-plus/ag-gridPlus.js +5 -3
  42. package/dist/esm/ag-grid-plus/interface.d.ts +6 -0
  43. package/dist/esm/ag-grid-plus/utils/aggregation.js +1 -5
  44. package/dist/esm/ag-grid-plus/utils/columnProcessors.d.ts +2 -1
  45. package/dist/esm/ag-grid-plus/utils/columnProcessors.js +5 -2
  46. package/dist/esm/ag-grid-plus/utils/valueEnumColor.d.ts +17 -0
  47. package/dist/esm/ag-grid-plus/utils/valueEnumColor.js +95 -0
  48. package/dist/esm/dialogSelect/index.d.ts +31 -2
  49. package/dist/esm/dialogSelect/index.js +211 -106
  50. package/dist/esm/dialogSelect/index.less +39 -0
  51. package/dist/esm/draggableModal/index.js +12 -8
  52. package/dist/esm/entitySelect/index.d.ts +57 -0
  53. package/dist/esm/entitySelect/index.js +164 -0
  54. package/dist/esm/index.d.ts +8 -0
  55. package/dist/esm/index.js +5 -0
  56. package/dist/esm/readPretty/arrayTable.d.ts +6 -0
  57. package/dist/esm/readPretty/arrayTable.js +147 -0
  58. package/dist/esm/readPretty/controls.d.ts +11 -0
  59. package/dist/esm/readPretty/controls.js +62 -0
  60. package/dist/esm/readPretty/decimal.d.ts +4 -0
  61. package/dist/esm/readPretty/decimal.js +22 -0
  62. package/dist/esm/readPretty/formily.d.ts +2 -0
  63. package/dist/esm/readPretty/formily.js +63 -0
  64. package/dist/esm/readPretty/hoistStatics.d.ts +1 -0
  65. package/dist/esm/readPretty/hoistStatics.js +31 -0
  66. package/dist/esm/readPretty/index.d.ts +11 -0
  67. package/dist/esm/readPretty/index.js +12 -0
  68. package/dist/esm/readPretty/selectValue.d.ts +7 -0
  69. package/dist/esm/readPretty/selectValue.js +53 -0
  70. package/dist/esm/readPretty/values.d.ts +4 -0
  71. package/dist/esm/readPretty/values.js +43 -0
  72. package/dist/esm/toolBar/index.d.ts +1 -0
  73. package/dist/esm/toolBar/index.js +43 -10
  74. package/dist/esm/toolBar/index.less +25 -7
  75. package/dist/esm/utils/businessDecimal.d.ts +11 -0
  76. package/dist/esm/utils/businessDecimal.js +47 -0
  77. package/dist/esm/utils/contrast.d.ts +40 -0
  78. package/dist/esm/utils/contrast.js +141 -0
  79. package/dist/umd/qc-ui.min.css +1 -1
  80. package/dist/umd/qc-ui.min.js +1 -1
  81. package/package.json +1 -1
@@ -0,0 +1,172 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = exports.createEntitySelect = void 0;
7
+ var _dialogSelect = _interopRequireDefault(require("../dialogSelect"));
8
+ var _ahooks = require("ahooks");
9
+ var _antd = require("antd");
10
+ var _react = _interopRequireWildcard(require("react"));
11
+ 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); }
12
+ 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; }
13
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
14
+ 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); }
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 _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
17
+ function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
18
+ 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); }
19
+ 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; }
20
+ function _iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t.return && (u = t.return(), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }
21
+ function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
22
+ var Option = _antd.Select.Option;
23
+
24
+ /**
25
+ * 实体选择器的骨架。
26
+ *
27
+ * 各业务模块的实体选择器(线体、车间、物料、供应商……)此前是逐个复制出来的:
28
+ * 取数、防抖、受控值、下拉即查、labelInValue、弹窗表格列,每份各写一遍,
29
+ * 真正不同的只有请求函数、提示语和表格列。骨架收在这里,各模块只填自己的那几项。
30
+ *
31
+ * 骨架不认识任何业务契约:请求函数由调用方传入,不引用任何生成服务客户端。
32
+ *
33
+ * @author nokecy
34
+ */
35
+
36
+ /** 取数入参:与后端分页查询约定一致。 */
37
+
38
+ var createEntitySelect = exports.createEntitySelect = function createEntitySelect(config) {
39
+ var request = config.request,
40
+ placeholder = config.placeholder,
41
+ columnDefs = config.columnDefs,
42
+ valueField = config.valueField,
43
+ labelField = config.labelField,
44
+ modalWidth = config.modalWidth,
45
+ _config$pageSize = config.pageSize,
46
+ pageSize = _config$pageSize === void 0 ? 300 : _config$pageSize,
47
+ _config$useCodeByDefa = config.useCodeByDefault,
48
+ useCodeByDefault = _config$useCodeByDefa === void 0 ? true : _config$useCodeByDefa,
49
+ _config$buildFilter = config.buildFilter,
50
+ buildFilter = _config$buildFilter === void 0 ? function (keyword) {
51
+ return "(name =* ".concat(keyword, ") | (code =* ").concat(keyword, ")");
52
+ } : _config$buildFilter,
53
+ _config$renderOptionL = config.renderOptionLabel,
54
+ renderOptionLabel = _config$renderOptionL === void 0 ? function (item) {
55
+ return "".concat(item.code, " - ").concat(item.name);
56
+ } : _config$renderOptionL,
57
+ renderOption = config.renderOption,
58
+ linkagePropName = config.linkagePropName,
59
+ gridComponent = config.gridComponent;
60
+ var getData = function getData(_ref) {
61
+ var Filter = _ref.Filter,
62
+ SkipCount = _ref.SkipCount,
63
+ MaxResultCount = _ref.MaxResultCount,
64
+ Sorting = _ref.Sorting;
65
+ return request({
66
+ Filter: Filter ? Filter : undefined,
67
+ SkipCount: SkipCount ? SkipCount : 0,
68
+ MaxResultCount: MaxResultCount ? MaxResultCount : pageSize,
69
+ Sorting: Sorting ? Sorting : undefined
70
+ });
71
+ };
72
+
73
+ // props 上不加索引签名、ref 不收窄:这些选择器会被当作 AgGridColumn 的 searchComponent 传递,
74
+ // 任一处收紧都会让 forwardRef 的推断结果与那处的 prop 类型不兼容。
75
+ var EntitySelect = function EntitySelect(props, ref) {
76
+ var _data$items2;
77
+ var _props$useCode = props.useCode,
78
+ useCode = _props$useCode === void 0 ? useCodeByDefault : _props$useCode,
79
+ _props$enableLinkage = props.enableLinkage,
80
+ enableLinkage = _props$enableLinkage === void 0 ? false : _props$enableLinkage;
81
+ var resolvedValueField = valueField !== null && valueField !== void 0 ? valueField : useCode ? 'code' : 'id';
82
+ var onLinkage = linkagePropName ? props[linkagePropName] : undefined;
83
+ var lastLinkedValueRef = (0, _react.useRef)();
84
+ var _useControllableValue = (0, _ahooks.useControllableValue)(props),
85
+ _useControllableValue2 = _slicedToArray(_useControllableValue, 2),
86
+ state = _useControllableValue2[0],
87
+ setState = _useControllableValue2[1];
88
+ var _useRequest = (0, _ahooks.useRequest)(getData, {
89
+ debounceMaxWait: 500,
90
+ manual: true
91
+ }),
92
+ data = _useRequest.data,
93
+ loading = _useRequest.loading,
94
+ run = _useRequest.run,
95
+ cancel = _useRequest.cancel;
96
+ var handleChange = function handleChange(value) {
97
+ var _data$items;
98
+ setState(value);
99
+ if (!value) {
100
+ lastLinkedValueRef.current = undefined;
101
+ return;
102
+ }
103
+ if (!enableLinkage || !onLinkage) return;
104
+ var picked = _typeof(value) === 'object' ? value.value : value;
105
+ var matched = data === null || data === void 0 || (_data$items = data.items) === null || _data$items === void 0 ? void 0 : _data$items.find(function (item) {
106
+ return item[resolvedValueField] === picked;
107
+ });
108
+ if (matched && lastLinkedValueRef.current !== picked) {
109
+ lastLinkedValueRef.current = picked;
110
+ onLinkage(matched);
111
+ }
112
+ };
113
+ return /*#__PURE__*/_react.default.createElement("span", {
114
+ ref: ref,
115
+ style: {
116
+ display: 'block',
117
+ width: '100%',
118
+ minWidth: 0,
119
+ maxWidth: '100%'
120
+ }
121
+ }, /*#__PURE__*/_react.default.createElement(_dialogSelect.default, _extends({
122
+ placeholder: placeholder,
123
+ style: {
124
+ width: '100%',
125
+ maxWidth: '100%'
126
+ },
127
+ showSearch: true,
128
+ labelInValue: true,
129
+ filterOption: false
130
+ }, modalWidth ? {
131
+ modalWidth: modalWidth
132
+ } : {}, gridComponent ? {
133
+ gridComponent: gridComponent
134
+ } : {}, props, {
135
+ onSearch: function onSearch(value) {
136
+ run({
137
+ Filter: buildFilter(value)
138
+ });
139
+ },
140
+ onDropdownVisibleChange: function onDropdownVisibleChange(visible) {
141
+ visible && run({});
142
+ },
143
+ loading: loading,
144
+ onBlur: cancel,
145
+ value: JSON.stringify(state) === '{}' ? undefined : state,
146
+ onChange: handleChange,
147
+ valueField: resolvedValueField
148
+ }, labelField ? {
149
+ labelField: labelField
150
+ } : {}, {
151
+ request: getData,
152
+ columnDefs: columnDefs,
153
+ onChangeItem: function onChangeItem(item) {
154
+ if (!enableLinkage || !onLinkage || !item) return;
155
+ var selected = Array.isArray(item) ? item[0] : item;
156
+ if (!selected) return;
157
+ var picked = selected[resolvedValueField];
158
+ if (lastLinkedValueRef.current === picked) return;
159
+ lastLinkedValueRef.current = picked;
160
+ onLinkage(selected);
161
+ }
162
+ }), data === null || data === void 0 || (_data$items2 = data.items) === null || _data$items2 === void 0 ? void 0 : _data$items2.map(function (item) {
163
+ var _item$id;
164
+ return renderOption ? renderOption(item, resolvedValueField) : /*#__PURE__*/_react.default.createElement(Option, {
165
+ key: (_item$id = item.id) !== null && _item$id !== void 0 ? _item$id : item[resolvedValueField],
166
+ value: item[resolvedValueField]
167
+ }, renderOptionLabel(item));
168
+ })));
169
+ };
170
+ return /*#__PURE__*/_react.default.forwardRef(EntitySelect);
171
+ };
172
+ var _default = exports.default = createEntitySelect;
@@ -31,4 +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 type { EntitySelectConfig, EntitySelectProps, EntitySelectQuery } from "./entitySelect";
37
+ export { semanticTextColors, toGridTextColor, gridValueEnum } from "./ag-grid-plus/utils/valueEnumColor";
38
+ export type { SemanticPreset } from "./ag-grid-plus/utils/valueEnumColor";
39
+ export { contrastRatio, relativeLuminance, darkenUntilContrast, lightenUntilContrast, toRgb, toHsl, fromHsl } from "./utils/contrast";
40
+ export { BusinessDecimal, decimal, decimalText, nonNegativeDecimal, roundDecimal, sumDecimals, formatDecimal } from "./utils/businessDecimal";
41
+ export type { DecimalValue } from "./utils/businessDecimal";
34
42
  export type { ParseResult as RegexParseResult, ValidationResult as RegexValidationResult, RegexError, ComplexityMetrics, ASTNode, AstRegExp, RegexTemplate, TestResult as RegexTestResult, CodeMirrorWrapperProps, RegexEditorProps, RegexFlags, MatchResult, RegexTesterProps, FlagsSelectorProps, MatchItemProps, RegexRailroadDiagramProps, } from "./components/RegexEditor";
package/dist/cjs/index.js CHANGED
@@ -46,7 +46,25 @@ var _exportNames = {
46
46
  RegexTester: true,
47
47
  FlagsSelector: true,
48
48
  MatchItem: true,
49
- RegexRailroadDiagram: true
49
+ RegexRailroadDiagram: true,
50
+ createEntitySelect: true,
51
+ semanticTextColors: true,
52
+ toGridTextColor: true,
53
+ gridValueEnum: true,
54
+ contrastRatio: true,
55
+ relativeLuminance: true,
56
+ darkenUntilContrast: true,
57
+ lightenUntilContrast: true,
58
+ toRgb: true,
59
+ toHsl: true,
60
+ fromHsl: true,
61
+ BusinessDecimal: true,
62
+ decimal: true,
63
+ decimalText: true,
64
+ nonNegativeDecimal: true,
65
+ roundDecimal: true,
66
+ sumDecimals: true,
67
+ formatDecimal: true
50
68
  };
51
69
  Object.defineProperty(exports, "AgGridColumn", {
52
70
  enumerable: true,
@@ -78,6 +96,12 @@ Object.defineProperty(exports, "BackendApiSchemeAdapter", {
78
96
  return _agGridPlus.BackendApiSchemeAdapter;
79
97
  }
80
98
  });
99
+ Object.defineProperty(exports, "BusinessDecimal", {
100
+ enumerable: true,
101
+ get: function get() {
102
+ return _businessDecimal.BusinessDecimal;
103
+ }
104
+ });
81
105
  Object.defineProperty(exports, "Card", {
82
106
  enumerable: true,
83
107
  get: function get() {
@@ -252,24 +276,126 @@ Object.defineProperty(exports, "ToolBar", {
252
276
  return _toolBar.default;
253
277
  }
254
278
  });
279
+ Object.defineProperty(exports, "contrastRatio", {
280
+ enumerable: true,
281
+ get: function get() {
282
+ return _contrast.contrastRatio;
283
+ }
284
+ });
255
285
  Object.defineProperty(exports, "createCascaderField", {
256
286
  enumerable: true,
257
287
  get: function get() {
258
288
  return _standardFormDialog.createCascaderField;
259
289
  }
260
290
  });
291
+ Object.defineProperty(exports, "createEntitySelect", {
292
+ enumerable: true,
293
+ get: function get() {
294
+ return _entitySelect.createEntitySelect;
295
+ }
296
+ });
261
297
  Object.defineProperty(exports, "createSelectField", {
262
298
  enumerable: true,
263
299
  get: function get() {
264
300
  return _standardFormDialog.createSelectField;
265
301
  }
266
302
  });
303
+ Object.defineProperty(exports, "darkenUntilContrast", {
304
+ enumerable: true,
305
+ get: function get() {
306
+ return _contrast.darkenUntilContrast;
307
+ }
308
+ });
309
+ Object.defineProperty(exports, "decimal", {
310
+ enumerable: true,
311
+ get: function get() {
312
+ return _businessDecimal.decimal;
313
+ }
314
+ });
315
+ Object.defineProperty(exports, "decimalText", {
316
+ enumerable: true,
317
+ get: function get() {
318
+ return _businessDecimal.decimalText;
319
+ }
320
+ });
267
321
  Object.defineProperty(exports, "flattenTreeDeep", {
268
322
  enumerable: true,
269
323
  get: function get() {
270
324
  return _agGridPlus.flattenTreeDeep;
271
325
  }
272
326
  });
327
+ Object.defineProperty(exports, "formatDecimal", {
328
+ enumerable: true,
329
+ get: function get() {
330
+ return _businessDecimal.formatDecimal;
331
+ }
332
+ });
333
+ Object.defineProperty(exports, "fromHsl", {
334
+ enumerable: true,
335
+ get: function get() {
336
+ return _contrast.fromHsl;
337
+ }
338
+ });
339
+ Object.defineProperty(exports, "gridValueEnum", {
340
+ enumerable: true,
341
+ get: function get() {
342
+ return _valueEnumColor.gridValueEnum;
343
+ }
344
+ });
345
+ Object.defineProperty(exports, "lightenUntilContrast", {
346
+ enumerable: true,
347
+ get: function get() {
348
+ return _contrast.lightenUntilContrast;
349
+ }
350
+ });
351
+ Object.defineProperty(exports, "nonNegativeDecimal", {
352
+ enumerable: true,
353
+ get: function get() {
354
+ return _businessDecimal.nonNegativeDecimal;
355
+ }
356
+ });
357
+ Object.defineProperty(exports, "relativeLuminance", {
358
+ enumerable: true,
359
+ get: function get() {
360
+ return _contrast.relativeLuminance;
361
+ }
362
+ });
363
+ Object.defineProperty(exports, "roundDecimal", {
364
+ enumerable: true,
365
+ get: function get() {
366
+ return _businessDecimal.roundDecimal;
367
+ }
368
+ });
369
+ Object.defineProperty(exports, "semanticTextColors", {
370
+ enumerable: true,
371
+ get: function get() {
372
+ return _valueEnumColor.semanticTextColors;
373
+ }
374
+ });
375
+ Object.defineProperty(exports, "sumDecimals", {
376
+ enumerable: true,
377
+ get: function get() {
378
+ return _businessDecimal.sumDecimals;
379
+ }
380
+ });
381
+ Object.defineProperty(exports, "toGridTextColor", {
382
+ enumerable: true,
383
+ get: function get() {
384
+ return _valueEnumColor.toGridTextColor;
385
+ }
386
+ });
387
+ Object.defineProperty(exports, "toHsl", {
388
+ enumerable: true,
389
+ get: function get() {
390
+ return _contrast.toHsl;
391
+ }
392
+ });
393
+ Object.defineProperty(exports, "toRgb", {
394
+ enumerable: true,
395
+ get: function get() {
396
+ return _contrast.toRgb;
397
+ }
398
+ });
273
399
  Object.defineProperty(exports, "useGridPlusColumnState", {
274
400
  enumerable: true,
275
401
  get: function get() {
@@ -341,4 +467,20 @@ Object.keys(_adapters).forEach(function (key) {
341
467
  }
342
468
  });
343
469
  });
470
+ var _readPretty = require("./readPretty");
471
+ Object.keys(_readPretty).forEach(function (key) {
472
+ if (key === "default" || key === "__esModule") return;
473
+ if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
474
+ if (key in exports && exports[key] === _readPretty[key]) return;
475
+ Object.defineProperty(exports, key, {
476
+ enumerable: true,
477
+ get: function get() {
478
+ return _readPretty[key];
479
+ }
480
+ });
481
+ });
482
+ var _entitySelect = require("./entitySelect");
483
+ var _valueEnumColor = require("./ag-grid-plus/utils/valueEnumColor");
484
+ var _contrast = require("./utils/contrast");
485
+ var _businessDecimal = require("./utils/businessDecimal");
344
486
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
@@ -0,0 +1,6 @@
1
+ /**
2
+ * 阅读态也创建列的 void 字段,让 Formily 求值标题、显隐与 reactions;
3
+ * qc-ui 的阅读视图只读取列状态,未像编辑视图一样挂载这些字段。
4
+ * @author nokecy
5
+ */
6
+ export declare const withReadingArrayTable: (Control: any) => any;
@@ -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,2 @@
1
+ /** 动态表单统一入口:禁用/只读的数据控件使用阅读展示,保持字段值和校验模型。@author nokecy */
2
+ export declare function withReadingFields(components: Record<string, any>): Record<string, any>;