@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.
- package/dist/cjs/adapters/pagedApiAdapter.d.ts +2 -0
- package/dist/cjs/ag-grid-plus/ag-gridPlus.js +5 -3
- package/dist/cjs/ag-grid-plus/interface.d.ts +6 -0
- package/dist/cjs/ag-grid-plus/utils/aggregation.js +8 -14
- package/dist/cjs/ag-grid-plus/utils/columnProcessors.d.ts +2 -1
- package/dist/cjs/ag-grid-plus/utils/columnProcessors.js +5 -2
- package/dist/cjs/ag-grid-plus/utils/valueEnumColor.d.ts +17 -0
- package/dist/cjs/ag-grid-plus/utils/valueEnumColor.js +99 -0
- package/dist/cjs/dialogSelect/index.d.ts +31 -2
- package/dist/cjs/dialogSelect/index.js +209 -105
- package/dist/cjs/dialogSelect/index.less +39 -0
- package/dist/cjs/draggableModal/index.js +12 -8
- package/dist/cjs/entitySelect/index.d.ts +57 -0
- package/dist/cjs/entitySelect/index.js +172 -0
- package/dist/cjs/index.d.ts +8 -0
- package/dist/cjs/index.js +143 -1
- package/dist/cjs/readPretty/arrayTable.d.ts +6 -0
- package/dist/cjs/readPretty/arrayTable.js +156 -0
- package/dist/cjs/readPretty/controls.d.ts +11 -0
- package/dist/cjs/readPretty/controls.js +68 -0
- package/dist/cjs/readPretty/decimal.d.ts +4 -0
- package/dist/cjs/readPretty/decimal.js +28 -0
- package/dist/cjs/readPretty/formily.d.ts +2 -0
- package/dist/cjs/readPretty/formily.js +71 -0
- package/dist/cjs/readPretty/hoistStatics.d.ts +1 -0
- package/dist/cjs/readPretty/hoistStatics.js +37 -0
- package/dist/cjs/readPretty/index.d.ts +11 -0
- package/dist/cjs/readPretty/index.js +70 -0
- package/dist/cjs/readPretty/selectValue.d.ts +7 -0
- package/dist/cjs/readPretty/selectValue.js +60 -0
- package/dist/cjs/readPretty/values.d.ts +4 -0
- package/dist/cjs/readPretty/values.js +49 -0
- package/dist/cjs/toolBar/index.d.ts +1 -0
- package/dist/cjs/toolBar/index.js +44 -10
- package/dist/cjs/toolBar/index.less +25 -7
- package/dist/cjs/utils/businessDecimal.d.ts +11 -0
- package/dist/cjs/utils/businessDecimal.js +53 -0
- package/dist/cjs/utils/contrast.d.ts +40 -0
- package/dist/cjs/utils/contrast.js +153 -0
- package/dist/esm/adapters/pagedApiAdapter.d.ts +2 -0
- package/dist/esm/ag-grid-plus/ag-gridPlus.js +5 -3
- package/dist/esm/ag-grid-plus/interface.d.ts +6 -0
- package/dist/esm/ag-grid-plus/utils/aggregation.js +1 -5
- package/dist/esm/ag-grid-plus/utils/columnProcessors.d.ts +2 -1
- package/dist/esm/ag-grid-plus/utils/columnProcessors.js +5 -2
- package/dist/esm/ag-grid-plus/utils/valueEnumColor.d.ts +17 -0
- package/dist/esm/ag-grid-plus/utils/valueEnumColor.js +95 -0
- package/dist/esm/dialogSelect/index.d.ts +31 -2
- package/dist/esm/dialogSelect/index.js +211 -106
- package/dist/esm/dialogSelect/index.less +39 -0
- package/dist/esm/draggableModal/index.js +12 -8
- package/dist/esm/entitySelect/index.d.ts +57 -0
- package/dist/esm/entitySelect/index.js +164 -0
- package/dist/esm/index.d.ts +8 -0
- package/dist/esm/index.js +5 -0
- package/dist/esm/readPretty/arrayTable.d.ts +6 -0
- package/dist/esm/readPretty/arrayTable.js +147 -0
- package/dist/esm/readPretty/controls.d.ts +11 -0
- package/dist/esm/readPretty/controls.js +62 -0
- package/dist/esm/readPretty/decimal.d.ts +4 -0
- package/dist/esm/readPretty/decimal.js +22 -0
- package/dist/esm/readPretty/formily.d.ts +2 -0
- package/dist/esm/readPretty/formily.js +63 -0
- package/dist/esm/readPretty/hoistStatics.d.ts +1 -0
- package/dist/esm/readPretty/hoistStatics.js +31 -0
- package/dist/esm/readPretty/index.d.ts +11 -0
- package/dist/esm/readPretty/index.js +12 -0
- package/dist/esm/readPretty/selectValue.d.ts +7 -0
- package/dist/esm/readPretty/selectValue.js +53 -0
- package/dist/esm/readPretty/values.d.ts +4 -0
- package/dist/esm/readPretty/values.js +43 -0
- package/dist/esm/toolBar/index.d.ts +1 -0
- package/dist/esm/toolBar/index.js +43 -10
- package/dist/esm/toolBar/index.less +25 -7
- package/dist/esm/utils/businessDecimal.d.ts +11 -0
- package/dist/esm/utils/businessDecimal.js +47 -0
- package/dist/esm/utils/contrast.d.ts +40 -0
- package/dist/esm/utils/contrast.js +141 -0
- package/dist/umd/qc-ui.min.css +1 -1
- package/dist/umd/qc-ui.min.js +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,164 @@
|
|
|
1
|
+
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); }
|
|
2
|
+
function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
|
|
3
|
+
function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
|
|
4
|
+
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."); }
|
|
5
|
+
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); }
|
|
6
|
+
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; }
|
|
7
|
+
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; } }
|
|
8
|
+
function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
|
|
9
|
+
import DialogSelect from "../dialogSelect";
|
|
10
|
+
import { useControllableValue, useRequest } from 'ahooks';
|
|
11
|
+
import { Select as AntSelect } from 'antd';
|
|
12
|
+
import React, { useRef } from 'react';
|
|
13
|
+
var Option = AntSelect.Option;
|
|
14
|
+
|
|
15
|
+
/**
|
|
16
|
+
* 实体选择器的骨架。
|
|
17
|
+
*
|
|
18
|
+
* 各业务模块的实体选择器(线体、车间、物料、供应商……)此前是逐个复制出来的:
|
|
19
|
+
* 取数、防抖、受控值、下拉即查、labelInValue、弹窗表格列,每份各写一遍,
|
|
20
|
+
* 真正不同的只有请求函数、提示语和表格列。骨架收在这里,各模块只填自己的那几项。
|
|
21
|
+
*
|
|
22
|
+
* 骨架不认识任何业务契约:请求函数由调用方传入,不引用任何生成服务客户端。
|
|
23
|
+
*
|
|
24
|
+
* @author nokecy
|
|
25
|
+
*/
|
|
26
|
+
|
|
27
|
+
/** 取数入参:与后端分页查询约定一致。 */
|
|
28
|
+
|
|
29
|
+
var createEntitySelect = function createEntitySelect(config) {
|
|
30
|
+
var request = config.request,
|
|
31
|
+
placeholder = config.placeholder,
|
|
32
|
+
columnDefs = config.columnDefs,
|
|
33
|
+
valueField = config.valueField,
|
|
34
|
+
labelField = config.labelField,
|
|
35
|
+
modalWidth = config.modalWidth,
|
|
36
|
+
_config$pageSize = config.pageSize,
|
|
37
|
+
pageSize = _config$pageSize === void 0 ? 300 : _config$pageSize,
|
|
38
|
+
_config$useCodeByDefa = config.useCodeByDefault,
|
|
39
|
+
useCodeByDefault = _config$useCodeByDefa === void 0 ? true : _config$useCodeByDefa,
|
|
40
|
+
_config$buildFilter = config.buildFilter,
|
|
41
|
+
buildFilter = _config$buildFilter === void 0 ? function (keyword) {
|
|
42
|
+
return "(name =* ".concat(keyword, ") | (code =* ").concat(keyword, ")");
|
|
43
|
+
} : _config$buildFilter,
|
|
44
|
+
_config$renderOptionL = config.renderOptionLabel,
|
|
45
|
+
renderOptionLabel = _config$renderOptionL === void 0 ? function (item) {
|
|
46
|
+
return "".concat(item.code, " - ").concat(item.name);
|
|
47
|
+
} : _config$renderOptionL,
|
|
48
|
+
renderOption = config.renderOption,
|
|
49
|
+
linkagePropName = config.linkagePropName,
|
|
50
|
+
gridComponent = config.gridComponent;
|
|
51
|
+
var getData = function getData(_ref) {
|
|
52
|
+
var Filter = _ref.Filter,
|
|
53
|
+
SkipCount = _ref.SkipCount,
|
|
54
|
+
MaxResultCount = _ref.MaxResultCount,
|
|
55
|
+
Sorting = _ref.Sorting;
|
|
56
|
+
return request({
|
|
57
|
+
Filter: Filter ? Filter : undefined,
|
|
58
|
+
SkipCount: SkipCount ? SkipCount : 0,
|
|
59
|
+
MaxResultCount: MaxResultCount ? MaxResultCount : pageSize,
|
|
60
|
+
Sorting: Sorting ? Sorting : undefined
|
|
61
|
+
});
|
|
62
|
+
};
|
|
63
|
+
|
|
64
|
+
// props 上不加索引签名、ref 不收窄:这些选择器会被当作 AgGridColumn 的 searchComponent 传递,
|
|
65
|
+
// 任一处收紧都会让 forwardRef 的推断结果与那处的 prop 类型不兼容。
|
|
66
|
+
var EntitySelect = function EntitySelect(props, ref) {
|
|
67
|
+
var _data$items2;
|
|
68
|
+
var _props$useCode = props.useCode,
|
|
69
|
+
useCode = _props$useCode === void 0 ? useCodeByDefault : _props$useCode,
|
|
70
|
+
_props$enableLinkage = props.enableLinkage,
|
|
71
|
+
enableLinkage = _props$enableLinkage === void 0 ? false : _props$enableLinkage;
|
|
72
|
+
var resolvedValueField = valueField !== null && valueField !== void 0 ? valueField : useCode ? 'code' : 'id';
|
|
73
|
+
var onLinkage = linkagePropName ? props[linkagePropName] : undefined;
|
|
74
|
+
var lastLinkedValueRef = useRef();
|
|
75
|
+
var _useControllableValue = useControllableValue(props),
|
|
76
|
+
_useControllableValue2 = _slicedToArray(_useControllableValue, 2),
|
|
77
|
+
state = _useControllableValue2[0],
|
|
78
|
+
setState = _useControllableValue2[1];
|
|
79
|
+
var _useRequest = useRequest(getData, {
|
|
80
|
+
debounceMaxWait: 500,
|
|
81
|
+
manual: true
|
|
82
|
+
}),
|
|
83
|
+
data = _useRequest.data,
|
|
84
|
+
loading = _useRequest.loading,
|
|
85
|
+
run = _useRequest.run,
|
|
86
|
+
cancel = _useRequest.cancel;
|
|
87
|
+
var handleChange = function handleChange(value) {
|
|
88
|
+
var _data$items;
|
|
89
|
+
setState(value);
|
|
90
|
+
if (!value) {
|
|
91
|
+
lastLinkedValueRef.current = undefined;
|
|
92
|
+
return;
|
|
93
|
+
}
|
|
94
|
+
if (!enableLinkage || !onLinkage) return;
|
|
95
|
+
var picked = _typeof(value) === 'object' ? value.value : value;
|
|
96
|
+
var matched = data === null || data === void 0 || (_data$items = data.items) === null || _data$items === void 0 ? void 0 : _data$items.find(function (item) {
|
|
97
|
+
return item[resolvedValueField] === picked;
|
|
98
|
+
});
|
|
99
|
+
if (matched && lastLinkedValueRef.current !== picked) {
|
|
100
|
+
lastLinkedValueRef.current = picked;
|
|
101
|
+
onLinkage(matched);
|
|
102
|
+
}
|
|
103
|
+
};
|
|
104
|
+
return /*#__PURE__*/React.createElement("span", {
|
|
105
|
+
ref: ref,
|
|
106
|
+
style: {
|
|
107
|
+
display: 'block',
|
|
108
|
+
width: '100%',
|
|
109
|
+
minWidth: 0,
|
|
110
|
+
maxWidth: '100%'
|
|
111
|
+
}
|
|
112
|
+
}, /*#__PURE__*/React.createElement(DialogSelect, _extends({
|
|
113
|
+
placeholder: placeholder,
|
|
114
|
+
style: {
|
|
115
|
+
width: '100%',
|
|
116
|
+
maxWidth: '100%'
|
|
117
|
+
},
|
|
118
|
+
showSearch: true,
|
|
119
|
+
labelInValue: true,
|
|
120
|
+
filterOption: false
|
|
121
|
+
}, modalWidth ? {
|
|
122
|
+
modalWidth: modalWidth
|
|
123
|
+
} : {}, gridComponent ? {
|
|
124
|
+
gridComponent: gridComponent
|
|
125
|
+
} : {}, props, {
|
|
126
|
+
onSearch: function onSearch(value) {
|
|
127
|
+
run({
|
|
128
|
+
Filter: buildFilter(value)
|
|
129
|
+
});
|
|
130
|
+
},
|
|
131
|
+
onDropdownVisibleChange: function onDropdownVisibleChange(visible) {
|
|
132
|
+
visible && run({});
|
|
133
|
+
},
|
|
134
|
+
loading: loading,
|
|
135
|
+
onBlur: cancel,
|
|
136
|
+
value: JSON.stringify(state) === '{}' ? undefined : state,
|
|
137
|
+
onChange: handleChange,
|
|
138
|
+
valueField: resolvedValueField
|
|
139
|
+
}, labelField ? {
|
|
140
|
+
labelField: labelField
|
|
141
|
+
} : {}, {
|
|
142
|
+
request: getData,
|
|
143
|
+
columnDefs: columnDefs,
|
|
144
|
+
onChangeItem: function onChangeItem(item) {
|
|
145
|
+
if (!enableLinkage || !onLinkage || !item) return;
|
|
146
|
+
var selected = Array.isArray(item) ? item[0] : item;
|
|
147
|
+
if (!selected) return;
|
|
148
|
+
var picked = selected[resolvedValueField];
|
|
149
|
+
if (lastLinkedValueRef.current === picked) return;
|
|
150
|
+
lastLinkedValueRef.current = picked;
|
|
151
|
+
onLinkage(selected);
|
|
152
|
+
}
|
|
153
|
+
}), data === null || data === void 0 || (_data$items2 = data.items) === null || _data$items2 === void 0 ? void 0 : _data$items2.map(function (item) {
|
|
154
|
+
var _item$id;
|
|
155
|
+
return renderOption ? renderOption(item, resolvedValueField) : /*#__PURE__*/React.createElement(Option, {
|
|
156
|
+
key: (_item$id = item.id) !== null && _item$id !== void 0 ? _item$id : item[resolvedValueField],
|
|
157
|
+
value: item[resolvedValueField]
|
|
158
|
+
}, renderOptionLabel(item));
|
|
159
|
+
})));
|
|
160
|
+
};
|
|
161
|
+
return /*#__PURE__*/React.forwardRef(EntitySelect);
|
|
162
|
+
};
|
|
163
|
+
export { createEntitySelect };
|
|
164
|
+
export default createEntitySelect;
|
package/dist/esm/index.d.ts
CHANGED
|
@@ -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/esm/index.js
CHANGED
|
@@ -42,5 +42,10 @@ useSchemeManager, useGridSchemes, LocalStorageSchemeAdapter, BackendApiSchemeAda
|
|
|
42
42
|
|
|
43
43
|
// 分页适配器:值 + 类型一并导出,支持非 ABP 后端注入
|
|
44
44
|
export * from "./adapters";
|
|
45
|
+
export * from "./readPretty";
|
|
46
|
+
export { createEntitySelect } from "./entitySelect";
|
|
47
|
+
export { semanticTextColors, toGridTextColor, gridValueEnum } from "./ag-grid-plus/utils/valueEnumColor";
|
|
48
|
+
export { contrastRatio, relativeLuminance, darkenUntilContrast, lightenUntilContrast, toRgb, toHsl, fromHsl } from "./utils/contrast";
|
|
49
|
+
export { BusinessDecimal, decimal, decimalText, nonNegativeDecimal, roundDecimal, sumDecimals, formatDecimal } from "./utils/businessDecimal";
|
|
45
50
|
|
|
46
51
|
// RegexEditor 类型定义 - 使用命名导出避免冲突
|
|
@@ -0,0 +1,147 @@
|
|
|
1
|
+
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; } } }; }
|
|
2
|
+
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); }
|
|
3
|
+
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; }
|
|
4
|
+
import { observer, RecursionField, useField, useFieldSchema } from '@formily/react';
|
|
5
|
+
import { AgGridReact } from 'ag-grid-react';
|
|
6
|
+
import { buildArrayTableColumns, useArrayTableSources } from "../array-table/utils";
|
|
7
|
+
import { groupColumnDefs } from "../array-table/columnGroup";
|
|
8
|
+
import { ARRAY_TABLE_INDEX_FIELD, hasOwnIndexColumn, makeIndexColumn } from "../array-table/indexColumn";
|
|
9
|
+
import { ARRAY_TABLE_ROW_HEIGHT, useArrayTableTheme } from "../array-table/theme";
|
|
10
|
+
import { hoistStatics } from "./hoistStatics";
|
|
11
|
+
import React, { useMemo, useRef } from 'react';
|
|
12
|
+
/** 阅读态直接使用 ArrayTable 的列定义,避免 AgGridPlus 的原值渲染器覆盖格式化结果。@author nokecy */
|
|
13
|
+
var ReadingArrayTable = observer(function (_ref) {
|
|
14
|
+
var _buildArrayTableColum;
|
|
15
|
+
var height = _ref.height;
|
|
16
|
+
var field = useField();
|
|
17
|
+
var sources = useArrayTableSources();
|
|
18
|
+
var rows = Array.isArray(field.value) ? field.value.slice() : [];
|
|
19
|
+
var generatedRowIds = useRef(new WeakMap());
|
|
20
|
+
var generatedRowIdSequence = useRef(0);
|
|
21
|
+
var columns = (_buildArrayTableColum = buildArrayTableColumns(rows, field, sources)) !== null && _buildArrayTableColum !== void 0 ? _buildArrayTableColum : [];
|
|
22
|
+
var showIndex = columns.length > 0 && !hasOwnIndexColumn(sources);
|
|
23
|
+
if (showIndex) columns.unshift(makeIndexColumn());
|
|
24
|
+
var theme = useArrayTableTheme();
|
|
25
|
+
return /*#__PURE__*/React.createElement("div", {
|
|
26
|
+
style: {
|
|
27
|
+
height: height !== null && height !== void 0 ? height : 400
|
|
28
|
+
}
|
|
29
|
+
}, /*#__PURE__*/React.createElement(AgGridReact, {
|
|
30
|
+
theme: theme,
|
|
31
|
+
rowHeight: ARRAY_TABLE_ROW_HEIGHT,
|
|
32
|
+
enableCellTextSelection: true,
|
|
33
|
+
ensureDomOrder: true,
|
|
34
|
+
defaultColDef: {
|
|
35
|
+
resizable: true,
|
|
36
|
+
sortable: true,
|
|
37
|
+
filter: true
|
|
38
|
+
},
|
|
39
|
+
rowSelection: {
|
|
40
|
+
mode: 'singleRow',
|
|
41
|
+
enableClickSelection: true
|
|
42
|
+
},
|
|
43
|
+
selectionColumnDef: {
|
|
44
|
+
pinned: 'left',
|
|
45
|
+
lockPosition: true,
|
|
46
|
+
width: 50,
|
|
47
|
+
suppressHeaderMenuButton: true
|
|
48
|
+
},
|
|
49
|
+
columnDefs: groupColumnDefs(columns),
|
|
50
|
+
rowData: rows,
|
|
51
|
+
getRowId: function getRowId(_ref2) {
|
|
52
|
+
var _data$_id;
|
|
53
|
+
var data = _ref2.data;
|
|
54
|
+
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;
|
|
55
|
+
if (id != null) return "data:".concat(String(id));
|
|
56
|
+
|
|
57
|
+
// 阅读态明细常用旧表行号等字段,不一定有 id/_id。给无 ID 的对象分配稳定行键,
|
|
58
|
+
// 否则多行都会返回 "undefined",AG Grid 在数据更新后会合并掉重复行。@author nokecy
|
|
59
|
+
var row = data;
|
|
60
|
+
var rowId = generatedRowIds.current.get(row);
|
|
61
|
+
if (!rowId) {
|
|
62
|
+
rowId = "generated:".concat(++generatedRowIdSequence.current);
|
|
63
|
+
generatedRowIds.current.set(row, rowId);
|
|
64
|
+
}
|
|
65
|
+
return rowId;
|
|
66
|
+
},
|
|
67
|
+
onRowDataUpdated: function onRowDataUpdated(_ref3) {
|
|
68
|
+
var api = _ref3.api;
|
|
69
|
+
if (showIndex) api.refreshCells({
|
|
70
|
+
columns: [ARRAY_TABLE_INDEX_FIELD],
|
|
71
|
+
force: true
|
|
72
|
+
});
|
|
73
|
+
}
|
|
74
|
+
}));
|
|
75
|
+
});
|
|
76
|
+
|
|
77
|
+
/** 按 ArrayTable 的列提取规则收集列节点,不挂载明细数据字段。@author nokecy */
|
|
78
|
+
var columnsOf = function columnsOf(schema) {
|
|
79
|
+
var columns = [];
|
|
80
|
+
var visit = function visit(node) {
|
|
81
|
+
if (typeof node['x-component'] === 'string' && node['x-component'].includes('Column')) {
|
|
82
|
+
var _node$xComponentPro, _node$xComponentPro2;
|
|
83
|
+
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;
|
|
84
|
+
if (name !== undefined) columns.push({
|
|
85
|
+
name: name,
|
|
86
|
+
schema: node
|
|
87
|
+
});
|
|
88
|
+
} else {
|
|
89
|
+
Object.values(node.properties || {}).forEach(visit);
|
|
90
|
+
}
|
|
91
|
+
};
|
|
92
|
+
var items = Array.isArray(schema.items) ? schema.items : schema.items ? [schema.items] : [];
|
|
93
|
+
items.forEach(visit);
|
|
94
|
+
return columns;
|
|
95
|
+
};
|
|
96
|
+
|
|
97
|
+
/**
|
|
98
|
+
* 阅读态也创建列的 void 字段,让 Formily 求值标题、显隐与 reactions;
|
|
99
|
+
* qc-ui 的阅读视图只读取列状态,未像编辑视图一样挂载这些字段。
|
|
100
|
+
* @author nokecy
|
|
101
|
+
*/
|
|
102
|
+
export var withReadingArrayTable = function withReadingArrayTable(Control) {
|
|
103
|
+
var ReactiveTable = observer(function (_ref4) {
|
|
104
|
+
var columns = _ref4.columns,
|
|
105
|
+
tableProps = _ref4.tableProps;
|
|
106
|
+
var field = useField();
|
|
107
|
+
// 阅读视图本身未订阅列状态,在此建立依赖,条件变化后重新提取表头。@author nokecy
|
|
108
|
+
var _iterator = _createForOfIteratorHelper(columns),
|
|
109
|
+
_step;
|
|
110
|
+
try {
|
|
111
|
+
for (_iterator.s(); !(_step = _iterator.n()).done;) {
|
|
112
|
+
var _column$componentProp, _column$componentProp2, _column$componentProp3;
|
|
113
|
+
var name = _step.value.name;
|
|
114
|
+
var column = field.query(field.address.concat(name)).take();
|
|
115
|
+
void (column === null || column === void 0 ? void 0 : column.display);
|
|
116
|
+
void (column === null || column === void 0 || (_column$componentProp = column.componentProps) === null || _column$componentProp === void 0 ? void 0 : _column$componentProp.title);
|
|
117
|
+
void (column === null || column === void 0 || (_column$componentProp2 = column.componentProps) === null || _column$componentProp2 === void 0 ? void 0 : _column$componentProp2.headerName);
|
|
118
|
+
void (column === null || column === void 0 || (_column$componentProp3 = column.componentProps) === null || _column$componentProp3 === void 0 ? void 0 : _column$componentProp3.headerGroup);
|
|
119
|
+
}
|
|
120
|
+
} catch (err) {
|
|
121
|
+
_iterator.e(err);
|
|
122
|
+
} finally {
|
|
123
|
+
_iterator.f();
|
|
124
|
+
}
|
|
125
|
+
return /*#__PURE__*/React.createElement(ReadingArrayTable, tableProps);
|
|
126
|
+
});
|
|
127
|
+
var Table = observer(function (props) {
|
|
128
|
+
var field = useField();
|
|
129
|
+
var schema = useFieldSchema();
|
|
130
|
+
var columns = useMemo(function () {
|
|
131
|
+
return columnsOf(schema);
|
|
132
|
+
}, [schema]);
|
|
133
|
+
if (field.pattern !== 'readPretty') return /*#__PURE__*/React.createElement(Control, props);
|
|
134
|
+
return /*#__PURE__*/React.createElement(React.Fragment, null, columns.map(function (column) {
|
|
135
|
+
return /*#__PURE__*/React.createElement(RecursionField, {
|
|
136
|
+
key: column.name,
|
|
137
|
+
name: column.name,
|
|
138
|
+
schema: column.schema,
|
|
139
|
+
onlyRenderSelf: true
|
|
140
|
+
});
|
|
141
|
+
}), /*#__PURE__*/React.createElement(ReactiveTable, {
|
|
142
|
+
columns: columns,
|
|
143
|
+
tableProps: props
|
|
144
|
+
}));
|
|
145
|
+
});
|
|
146
|
+
return hoistStatics(Table, Control);
|
|
147
|
+
};
|
|
@@ -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,62 @@
|
|
|
1
|
+
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); }
|
|
2
|
+
import { PreviewText } from '@formily/antd-v5';
|
|
3
|
+
import { ConfigProvider, 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';
|
|
4
|
+
import React from 'react';
|
|
5
|
+
import { hoistStatics } from "./hoistStatics";
|
|
6
|
+
import { flattenOptions, selectedLabels } from "./values";
|
|
7
|
+
|
|
8
|
+
/** 普通表单控件在不可编辑时使用阅读展示,继承整张表单的禁用状态。@author nokecy */
|
|
9
|
+
var readingControl = function readingControl(Control, Preview) {
|
|
10
|
+
var map = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : function (props) {
|
|
11
|
+
return props;
|
|
12
|
+
};
|
|
13
|
+
var Component = /*#__PURE__*/React.forwardRef(function (props, ref) {
|
|
14
|
+
var _props$disabled;
|
|
15
|
+
var _ConfigProvider$useCo = ConfigProvider.useConfig(),
|
|
16
|
+
componentDisabled = _ConfigProvider$useCo.componentDisabled;
|
|
17
|
+
var reading = props.readOnly || ((_props$disabled = props.disabled) !== null && _props$disabled !== void 0 ? _props$disabled : componentDisabled);
|
|
18
|
+
return reading ? /*#__PURE__*/React.createElement(PreviewText.Placeholder, {
|
|
19
|
+
value: "\u2014"
|
|
20
|
+
}, /*#__PURE__*/React.createElement(Preview, map(props))) : /*#__PURE__*/React.createElement(Control, _extends({}, props, {
|
|
21
|
+
ref: ref
|
|
22
|
+
}));
|
|
23
|
+
});
|
|
24
|
+
return hoistStatics(Component, Control);
|
|
25
|
+
};
|
|
26
|
+
|
|
27
|
+
/** 选择项来自 options 或原生 Option/Radio 子节点,阅读态显示名称。@author nokecy */
|
|
28
|
+
var choiceOptions = function choiceOptions(props) {
|
|
29
|
+
return props.options || React.Children.toArray(props.children).flatMap(function (child) {
|
|
30
|
+
var _child$props;
|
|
31
|
+
return ((_child$props = child.props) === null || _child$props === void 0 ? void 0 : _child$props.value) !== undefined ? [{
|
|
32
|
+
value: child.props.value,
|
|
33
|
+
label: child.props.children
|
|
34
|
+
}] : choiceOptions(child.props || {});
|
|
35
|
+
});
|
|
36
|
+
};
|
|
37
|
+
var ChoicePreview = function ChoicePreview(props) {
|
|
38
|
+
return /*#__PURE__*/React.createElement("span", null, selectedLabels(props.value, flattenOptions(choiceOptions(props), props.fieldNames), props.labelInValue));
|
|
39
|
+
};
|
|
40
|
+
var BooleanPreview = function BooleanPreview(props) {
|
|
41
|
+
return /*#__PURE__*/React.createElement("span", null, props.children, props.children ? ':' : '', props.checked == null ? '—' : props.checked ? '是' : '否');
|
|
42
|
+
};
|
|
43
|
+
var PasswordPreview = function PasswordPreview(props) {
|
|
44
|
+
return /*#__PURE__*/React.createElement("span", null, props.value ? '••••••' : '—');
|
|
45
|
+
};
|
|
46
|
+
export var Input = readingControl(AntInput, PreviewText.Input);
|
|
47
|
+
Input.TextArea = readingControl(AntInput.TextArea, PreviewText.Input);
|
|
48
|
+
Input.Password = readingControl(AntInput.Password, PasswordPreview);
|
|
49
|
+
Input.Search = readingControl(AntInput.Search, PreviewText.Input);
|
|
50
|
+
export var InputNumber = readingControl(AntInputNumber, PreviewText.NumberPicker);
|
|
51
|
+
export var Select = readingControl(AntSelect, ChoicePreview);
|
|
52
|
+
export var Switch = readingControl(AntSwitch, BooleanPreview);
|
|
53
|
+
export var Checkbox = readingControl(AntCheckbox, BooleanPreview);
|
|
54
|
+
Checkbox.Group = readingControl(AntCheckbox.Group, ChoicePreview);
|
|
55
|
+
export var Radio = readingControl(AntRadio, BooleanPreview);
|
|
56
|
+
Radio.Group = readingControl(AntRadio.Group, ChoicePreview);
|
|
57
|
+
export var DatePicker = readingControl(AntDatePicker, PreviewText.DatePicker);
|
|
58
|
+
DatePicker.RangePicker = readingControl(AntDatePicker.RangePicker, PreviewText.DateRangePicker);
|
|
59
|
+
export var TimePicker = readingControl(AntTimePicker, PreviewText.TimePicker);
|
|
60
|
+
TimePicker.RangePicker = readingControl(AntTimePicker.RangePicker, PreviewText.TimeRangePicker);
|
|
61
|
+
export var TreeSelect = readingControl(AntTreeSelect, PreviewText.TreeSelect);
|
|
62
|
+
export var Cascader = readingControl(AntCascader, 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,22 @@
|
|
|
1
|
+
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); }
|
|
2
|
+
import { connect, mapReadPretty } from '@formily/react';
|
|
3
|
+
import React from 'react';
|
|
4
|
+
import { InputNumber } from "./controls";
|
|
5
|
+
import { decimalText } from "../utils/businessDecimal";
|
|
6
|
+
|
|
7
|
+
/** 精确业务数值录入和阅读展示,零值与原始十进制字符串始终保留。@author nokecy */
|
|
8
|
+
export var DecimalInput = /*#__PURE__*/React.forwardRef(function (props, ref) {
|
|
9
|
+
return /*#__PURE__*/React.createElement(InputNumber, _extends({}, props, {
|
|
10
|
+
stringMode: true,
|
|
11
|
+
ref: ref
|
|
12
|
+
}));
|
|
13
|
+
});
|
|
14
|
+
var DecimalPreview = function DecimalPreview(_ref) {
|
|
15
|
+
var value = _ref.value,
|
|
16
|
+
formatter = _ref.formatter;
|
|
17
|
+
return /*#__PURE__*/React.createElement("span", null, value == null || value === '' ? '—' : formatter ? formatter(value, {
|
|
18
|
+
userTyping: false,
|
|
19
|
+
input: String(value)
|
|
20
|
+
}) : decimalText(value));
|
|
21
|
+
};
|
|
22
|
+
export var DecimalPicker = connect(DecimalInput, mapReadPretty(DecimalPreview));
|
|
@@ -0,0 +1,63 @@
|
|
|
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
|
+
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; } } }; }
|
|
3
|
+
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); }
|
|
4
|
+
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; }
|
|
5
|
+
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); }
|
|
6
|
+
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; }
|
|
7
|
+
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; }
|
|
8
|
+
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; }
|
|
9
|
+
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : String(i); }
|
|
10
|
+
function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != _typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
|
|
11
|
+
import { observer, useField } from '@formily/react';
|
|
12
|
+
import React from 'react';
|
|
13
|
+
import { hoistStatics } from "./hoistStatics";
|
|
14
|
+
import * as Reading from "./controls";
|
|
15
|
+
import { withReadingArrayTable } from "./arrayTable";
|
|
16
|
+
|
|
17
|
+
/** 动态表单统一入口:禁用/只读的数据控件使用阅读展示,保持字段值和校验模型。@author nokecy */
|
|
18
|
+
export function withReadingFields(components) {
|
|
19
|
+
var result = _objectSpread({}, components);
|
|
20
|
+
var previews = _objectSpread(_objectSpread({}, Reading), {}, {
|
|
21
|
+
NumberPicker: Reading.InputNumber,
|
|
22
|
+
Password: Reading.Input.Password
|
|
23
|
+
});
|
|
24
|
+
var wrap = function wrap(Control, Preview) {
|
|
25
|
+
var Component = observer(function (props) {
|
|
26
|
+
var field = useField();
|
|
27
|
+
if (props.disabled || props.readOnly || field !== null && field !== void 0 && field.disabled || field !== null && field !== void 0 && field.readOnly) {
|
|
28
|
+
var _field$value, _field$value2, _field$dataSource;
|
|
29
|
+
return /*#__PURE__*/React.createElement(Preview, _extends({}, props, {
|
|
30
|
+
value: (_field$value = field === null || field === void 0 ? void 0 : field.value) !== null && _field$value !== void 0 ? _field$value : props.value,
|
|
31
|
+
checked: (_field$value2 = field === null || field === void 0 ? void 0 : field.value) !== null && _field$value2 !== void 0 ? _field$value2 : props.checked,
|
|
32
|
+
options: field !== null && field !== void 0 && (_field$dataSource = field.dataSource) !== null && _field$dataSource !== void 0 && _field$dataSource.length ? field.dataSource : props.options,
|
|
33
|
+
disabled: true
|
|
34
|
+
}));
|
|
35
|
+
}
|
|
36
|
+
return /*#__PURE__*/React.createElement(Control, props);
|
|
37
|
+
});
|
|
38
|
+
var Wrapped = hoistStatics(Component, Control);
|
|
39
|
+
// 嵌套控件同样按字段状态展示,例如Input.TextArea、DatePicker.RangePicker。
|
|
40
|
+
for (var _i = 0, _arr = ['TextArea', 'Password', 'Search', 'Group', 'RangePicker']; _i < _arr.length; _i++) {
|
|
41
|
+
var key = _arr[_i];
|
|
42
|
+
if (Control[key] && Preview[key]) Wrapped[key] = wrap(Control[key], Preview[key]);
|
|
43
|
+
}
|
|
44
|
+
return Wrapped;
|
|
45
|
+
};
|
|
46
|
+
var _iterator = _createForOfIteratorHelper(Object.keys(previews).filter(function (name) {
|
|
47
|
+
return components[name];
|
|
48
|
+
})),
|
|
49
|
+
_step;
|
|
50
|
+
try {
|
|
51
|
+
for (_iterator.s(); !(_step = _iterator.n()).done;) {
|
|
52
|
+
var name = _step.value;
|
|
53
|
+
result[name] = wrap(components[name], previews[name]);
|
|
54
|
+
}
|
|
55
|
+
// ArrayTable 阅读态保留动态列的标题和显隐状态。@author nokecy
|
|
56
|
+
} catch (err) {
|
|
57
|
+
_iterator.e(err);
|
|
58
|
+
} finally {
|
|
59
|
+
_iterator.f();
|
|
60
|
+
}
|
|
61
|
+
if (components.ArrayTable) result.ArrayTable = withReadingArrayTable(components.ArrayTable);
|
|
62
|
+
return result;
|
|
63
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function hoistStatics<T, S>(target: T, source: S): T & S;
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
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; } } }; }
|
|
2
|
+
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); }
|
|
3
|
+
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; }
|
|
4
|
+
/**
|
|
5
|
+
* 把被包装组件的静态成员(如 Input.TextArea、Select.Option)带到包装后的组件上,
|
|
6
|
+
* 等价于 hoist-non-react-statics,但不新增依赖。React 自有的静态属性不拷贝。
|
|
7
|
+
* @author nokecy
|
|
8
|
+
*/
|
|
9
|
+
var REACT_STATICS = new Set(['$$typeof', 'render', 'defaultProps', 'displayName', 'propTypes', 'contextType', 'contextTypes', 'childContextTypes', 'getDefaultProps', 'getDerivedStateFromProps', 'getDerivedStateFromError', 'mixins', 'type', 'compare', 'length', 'name', 'prototype', 'caller', 'callee', 'arguments', 'arity']);
|
|
10
|
+
export function hoistStatics(target, source) {
|
|
11
|
+
var _iterator = _createForOfIteratorHelper(Reflect.ownKeys(source)),
|
|
12
|
+
_step;
|
|
13
|
+
try {
|
|
14
|
+
for (_iterator.s(); !(_step = _iterator.n()).done;) {
|
|
15
|
+
var key = _step.value;
|
|
16
|
+
if (REACT_STATICS.has(key)) continue;
|
|
17
|
+
var descriptor = Object.getOwnPropertyDescriptor(source, key);
|
|
18
|
+
if (!descriptor) continue;
|
|
19
|
+
try {
|
|
20
|
+
Object.defineProperty(target, key, descriptor);
|
|
21
|
+
} catch (_unused) {
|
|
22
|
+
// 个别只读属性无法重定义,跳过即可。
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
} catch (err) {
|
|
26
|
+
_iterator.e(err);
|
|
27
|
+
} finally {
|
|
28
|
+
_iterator.f();
|
|
29
|
+
}
|
|
30
|
+
return target;
|
|
31
|
+
}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 阅读态控件:不可编辑时展示名称/文本而不是禁用的输入框,继承整张表单的禁用状态。
|
|
3
|
+
* 动态表单入口 `withReadingFields` 按字段的 disabled/readOnly 状态切换阅读展示,并保留 ArrayTable 动态列。
|
|
4
|
+
* @author nokecy
|
|
5
|
+
*/
|
|
6
|
+
export * as ReadPrettyControls from './controls';
|
|
7
|
+
export { withReadingFields } from './formily';
|
|
8
|
+
export { withReadingArrayTable } from './arrayTable';
|
|
9
|
+
export { DecimalInput, DecimalPicker } from './decimal';
|
|
10
|
+
export { flattenOptions, selectedLabels } from './values';
|
|
11
|
+
export { normalizeSelectValue, selectCode, selectLabel } from './selectValue';
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 阅读态控件:不可编辑时展示名称/文本而不是禁用的输入框,继承整张表单的禁用状态。
|
|
3
|
+
* 动态表单入口 `withReadingFields` 按字段的 disabled/readOnly 状态切换阅读展示,并保留 ArrayTable 动态列。
|
|
4
|
+
* @author nokecy
|
|
5
|
+
*/
|
|
6
|
+
import * as _ReadPrettyControls from "./controls";
|
|
7
|
+
export { _ReadPrettyControls as ReadPrettyControls };
|
|
8
|
+
export { withReadingFields } from "./formily";
|
|
9
|
+
export { withReadingArrayTable } from "./arrayTable";
|
|
10
|
+
export { DecimalInput, DecimalPicker } from "./decimal";
|
|
11
|
+
export { flattenOptions, selectedLabels } from "./values";
|
|
12
|
+
export { normalizeSelectValue, selectCode, selectLabel } from "./selectValue";
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { type ReactNode } from 'react';
|
|
2
|
+
/** 提取选择项的标量编码,兼容嵌套 labelInValue;保留编码 0 和显式空字符串选项。@author nokecy */
|
|
3
|
+
export declare function selectCode(value: unknown, depth?: number): string | number | undefined;
|
|
4
|
+
/** 标签只输出可渲染内容;选择项对象取名称后再回落编码,避免 React 对象子节点异常。@author nokecy */
|
|
5
|
+
export declare function selectLabel(value: unknown, depth?: number): ReactNode;
|
|
6
|
+
/** 单选、多选与阅读态共用同一值形状;名称缺省时保留组件按选项查名称的行为。@author nokecy */
|
|
7
|
+
export declare function normalizeSelectValue(value: unknown, labelInValue?: boolean): any;
|