@hi-ui/schema-fields 4.0.0-experimental.1 → 4.0.0-experimental.11
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/CHANGELOG.md +275 -0
- package/bundle.d.ts +1 -0
- package/bundle.js +1 -0
- package/components/image-preview.d.ts +1 -0
- package/components/image-preview.js +1 -0
- package/components/upload-bridge.d.ts +1 -0
- package/components/upload-bridge.js +1 -0
- package/fields/cascader.d.ts +1 -0
- package/fields/cascader.js +1 -0
- package/fields/check-cascader.d.ts +1 -0
- package/fields/check-cascader.js +1 -0
- package/fields/check-select.d.ts +1 -0
- package/fields/check-select.js +1 -0
- package/fields/check-tree-select.d.ts +1 -0
- package/fields/check-tree-select.js +1 -0
- package/fields/checkbox.d.ts +1 -0
- package/fields/checkbox.js +1 -0
- package/fields/counter.d.ts +1 -0
- package/fields/counter.js +1 -0
- package/fields/date.d.ts +1 -0
- package/fields/date.js +1 -0
- package/fields/image.d.ts +1 -0
- package/fields/image.js +1 -0
- package/fields/link.d.ts +1 -0
- package/fields/link.js +1 -0
- package/fields/number-range.d.ts +1 -0
- package/fields/number-range.js +1 -0
- package/fields/number.d.ts +1 -0
- package/fields/number.js +1 -0
- package/fields/radio.d.ts +1 -0
- package/fields/radio.js +1 -0
- package/fields/rating.d.ts +1 -0
- package/fields/rating.js +1 -0
- package/fields/select.d.ts +1 -0
- package/fields/select.js +1 -0
- package/fields/slider.d.ts +1 -0
- package/fields/slider.js +1 -0
- package/fields/switch.d.ts +1 -0
- package/fields/switch.js +1 -0
- package/fields/tag.d.ts +1 -0
- package/fields/tag.js +1 -0
- package/fields/text.d.ts +1 -0
- package/fields/text.js +1 -0
- package/fields/textarea.d.ts +1 -0
- package/fields/textarea.js +1 -0
- package/fields/time-picker.d.ts +1 -0
- package/fields/time-picker.js +1 -0
- package/fields/tree-select.d.ts +1 -0
- package/fields/tree-select.js +1 -0
- package/fields/upload.d.ts +1 -0
- package/fields/upload.js +1 -0
- package/lib/{types/index.d.ts → bundle.d.ts} +1 -33
- package/lib/{esm/index.js → bundle.js} +1 -20
- package/lib/{types/ctx.d.ts → ctx.d.ts} +7 -2
- package/lib/{esm/ctx.js → ctx.js} +9 -1
- package/lib/{types/fields → fields}/semantic/tag/index.d.ts +1 -54
- package/lib/{esm/fields → fields}/semantic/tag/index.js +2 -51
- package/lib/fields/semantic/tag/preset.d.ts +54 -0
- package/lib/fields/semantic/tag/preset.js +60 -0
- package/lib/index.d.ts +30 -0
- package/lib/index.js +24 -0
- package/lib/{esm/utils.js → utils.js} +14 -1
- package/package.json +61 -44
- package/lib/cjs/base.js +0 -125
- package/lib/cjs/components/image-preview/index.js +0 -63
- package/lib/cjs/components/span/index.js +0 -33
- package/lib/cjs/components/upload-bridge/index.js +0 -227
- package/lib/cjs/components/upload-bridge/utils.js +0 -73
- package/lib/cjs/ctx.js +0 -70
- package/lib/cjs/editable/ctx.js +0 -45
- package/lib/cjs/editable/editable.js +0 -141
- package/lib/cjs/editable/index.js +0 -62
- package/lib/cjs/editable/readonly.js +0 -36
- package/lib/cjs/editable/simple.js +0 -61
- package/lib/cjs/editable/use-readonly.js +0 -200
- package/lib/cjs/extensible/selectable/index.js +0 -114
- package/lib/cjs/extensible/selectable/match-cascader.js +0 -184
- package/lib/cjs/fields/basic/cascader/index.js +0 -98
- package/lib/cjs/fields/basic/check-cascader/index.js +0 -58
- package/lib/cjs/fields/basic/check-select/index.js +0 -89
- package/lib/cjs/fields/basic/check-tree-select/index.js +0 -61
- package/lib/cjs/fields/basic/checkbox/index.js +0 -84
- package/lib/cjs/fields/basic/counter/index.js +0 -40
- package/lib/cjs/fields/basic/radio/index.js +0 -44
- package/lib/cjs/fields/basic/rating/index.js +0 -40
- package/lib/cjs/fields/basic/select/index.js +0 -98
- package/lib/cjs/fields/basic/slider/index.js +0 -40
- package/lib/cjs/fields/basic/switch/index.js +0 -47
- package/lib/cjs/fields/basic/textarea/index.js +0 -40
- package/lib/cjs/fields/basic/time-picker/index.js +0 -45
- package/lib/cjs/fields/basic/time-picker/index.scss.js +0 -18
- package/lib/cjs/fields/basic/tree-select/index.js +0 -61
- package/lib/cjs/fields/basic/upload/custom.js +0 -29
- package/lib/cjs/fields/basic/upload/index.js +0 -48
- package/lib/cjs/fields/enhance/number-range/index.js +0 -39
- package/lib/cjs/fields/semantic/date/index.js +0 -82
- package/lib/cjs/fields/semantic/image/index.js +0 -65
- package/lib/cjs/fields/semantic/image/upload.js +0 -32
- package/lib/cjs/fields/semantic/link/index.js +0 -96
- package/lib/cjs/fields/semantic/number/index.js +0 -106
- package/lib/cjs/fields/semantic/tag/index.js +0 -164
- package/lib/cjs/fields/semantic/tag/index.scss.js +0 -18
- package/lib/cjs/fields/semantic/text/index.js +0 -61
- package/lib/cjs/index.js +0 -145
- package/lib/cjs/utils/batch-dep-update.js +0 -40
- package/lib/cjs/utils/form-binding.js +0 -40
- package/lib/cjs/utils/label.js +0 -34
- package/lib/cjs/utils.js +0 -35
- /package/lib/{types/base.d.ts → base.d.ts} +0 -0
- /package/lib/{esm/base.js → base.js} +0 -0
- /package/lib/{types/components → components}/async-refill-placeholder/index.d.ts +0 -0
- /package/lib/{types/components → components}/image-preview/index.d.ts +0 -0
- /package/lib/{esm/components → components}/image-preview/index.js +0 -0
- /package/lib/{types/components → components}/span/index.d.ts +0 -0
- /package/lib/{esm/components → components}/span/index.js +0 -0
- /package/lib/{types/components → components}/upload-bridge/index.d.ts +0 -0
- /package/lib/{esm/components → components}/upload-bridge/index.js +0 -0
- /package/lib/{types/components → components}/upload-bridge/type.d.ts +0 -0
- /package/lib/{types/components → components}/upload-bridge/utils.d.ts +0 -0
- /package/lib/{esm/components → components}/upload-bridge/utils.js +0 -0
- /package/lib/{types/editable → editable}/ctx.d.ts +0 -0
- /package/lib/{esm/editable → editable}/ctx.js +0 -0
- /package/lib/{types/editable → editable}/editable.d.ts +0 -0
- /package/lib/{esm/editable → editable}/editable.js +0 -0
- /package/lib/{types/editable → editable}/index.d.ts +0 -0
- /package/lib/{esm/editable → editable}/index.js +0 -0
- /package/lib/{types/editable → editable}/readonly.d.ts +0 -0
- /package/lib/{esm/editable → editable}/readonly.js +0 -0
- /package/lib/{types/editable → editable}/simple.d.ts +0 -0
- /package/lib/{esm/editable → editable}/simple.js +0 -0
- /package/lib/{types/editable → editable}/type.d.ts +0 -0
- /package/lib/{types/editable → editable}/use-readonly.d.ts +0 -0
- /package/lib/{esm/editable → editable}/use-readonly.js +0 -0
- /package/lib/{types/extensible → extensible}/selectable/index.d.ts +0 -0
- /package/lib/{esm/extensible → extensible}/selectable/index.js +0 -0
- /package/lib/{types/extensible → extensible}/selectable/match-cascader.d.ts +0 -0
- /package/lib/{esm/extensible → extensible}/selectable/match-cascader.js +0 -0
- /package/lib/{types/extensible → extensible}/selectable/type.d.ts +0 -0
- /package/lib/{types/fields → fields}/basic/cascader/index.d.ts +0 -0
- /package/lib/{esm/fields → fields}/basic/cascader/index.js +0 -0
- /package/lib/{types/fields → fields}/basic/check-cascader/index.d.ts +0 -0
- /package/lib/{esm/fields → fields}/basic/check-cascader/index.js +0 -0
- /package/lib/{types/fields → fields}/basic/check-select/index.d.ts +0 -0
- /package/lib/{esm/fields → fields}/basic/check-select/index.js +0 -0
- /package/lib/{types/fields → fields}/basic/check-tree-select/index.d.ts +0 -0
- /package/lib/{esm/fields → fields}/basic/check-tree-select/index.js +0 -0
- /package/lib/{types/fields → fields}/basic/checkbox/index.d.ts +0 -0
- /package/lib/{esm/fields → fields}/basic/checkbox/index.js +0 -0
- /package/lib/{types/fields → fields}/basic/counter/index.d.ts +0 -0
- /package/lib/{esm/fields → fields}/basic/counter/index.js +0 -0
- /package/lib/{types/fields → fields}/basic/radio/index.d.ts +0 -0
- /package/lib/{esm/fields → fields}/basic/radio/index.js +0 -0
- /package/lib/{types/fields → fields}/basic/rating/index.d.ts +0 -0
- /package/lib/{esm/fields → fields}/basic/rating/index.js +0 -0
- /package/lib/{types/fields → fields}/basic/select/index.d.ts +0 -0
- /package/lib/{esm/fields → fields}/basic/select/index.js +0 -0
- /package/lib/{types/fields → fields}/basic/slider/index.d.ts +0 -0
- /package/lib/{esm/fields → fields}/basic/slider/index.js +0 -0
- /package/lib/{types/fields → fields}/basic/switch/index.d.ts +0 -0
- /package/lib/{esm/fields → fields}/basic/switch/index.js +0 -0
- /package/lib/{types/fields → fields}/basic/textarea/index.d.ts +0 -0
- /package/lib/{esm/fields → fields}/basic/textarea/index.js +0 -0
- /package/lib/{types/fields → fields}/basic/time-picker/index.d.ts +0 -0
- /package/lib/{esm/fields → fields}/basic/time-picker/index.js +0 -0
- /package/lib/{esm/fields → fields}/basic/time-picker/index.scss.js +0 -0
- /package/lib/{types/fields → fields}/basic/tree-select/index.d.ts +0 -0
- /package/lib/{esm/fields → fields}/basic/tree-select/index.js +0 -0
- /package/lib/{types/fields → fields}/basic/upload/custom.d.ts +0 -0
- /package/lib/{esm/fields → fields}/basic/upload/custom.js +0 -0
- /package/lib/{types/fields → fields}/basic/upload/index.d.ts +0 -0
- /package/lib/{esm/fields → fields}/basic/upload/index.js +0 -0
- /package/lib/{types/fields → fields}/enhance/number-range/index.d.ts +0 -0
- /package/lib/{esm/fields → fields}/enhance/number-range/index.js +0 -0
- /package/lib/{types/fields → fields}/semantic/date/index.d.ts +0 -0
- /package/lib/{esm/fields → fields}/semantic/date/index.js +0 -0
- /package/lib/{types/fields → fields}/semantic/image/index.d.ts +0 -0
- /package/lib/{esm/fields → fields}/semantic/image/index.js +0 -0
- /package/lib/{types/fields → fields}/semantic/image/upload.d.ts +0 -0
- /package/lib/{esm/fields → fields}/semantic/image/upload.js +0 -0
- /package/lib/{types/fields → fields}/semantic/link/index.d.ts +0 -0
- /package/lib/{esm/fields → fields}/semantic/link/index.js +0 -0
- /package/lib/{types/fields → fields}/semantic/number/index.d.ts +0 -0
- /package/lib/{esm/fields → fields}/semantic/number/index.js +0 -0
- /package/lib/{esm/fields → fields}/semantic/tag/index.scss.js +0 -0
- /package/lib/{types/fields → fields}/semantic/text/index.d.ts +0 -0
- /package/lib/{esm/fields → fields}/semantic/text/index.js +0 -0
- /package/lib/{types/utils → utils}/batch-dep-update.d.ts +0 -0
- /package/lib/{esm/utils → utils}/batch-dep-update.js +0 -0
- /package/lib/{types/utils → utils}/form-binding.d.ts +0 -0
- /package/lib/{esm/utils → utils}/form-binding.js +0 -0
- /package/lib/{types/utils → utils}/label.d.ts +0 -0
- /package/lib/{esm/utils → utils}/label.js +0 -0
- /package/lib/{types/utils.d.ts → utils.d.ts} +0 -0
|
@@ -1,227 +0,0 @@
|
|
|
1
|
-
/** @LICENSE
|
|
2
|
-
* @hi-ui/schema-fields
|
|
3
|
-
* https://github.com/XiaoMi/hiui/tree/master/packages/schema/schema-fields#readme
|
|
4
|
-
*
|
|
5
|
-
* Copyright (c) HiUI <mi-hiui@xiaomi.com>.
|
|
6
|
-
*
|
|
7
|
-
* This source code is licensed under the MIT license found in the
|
|
8
|
-
* LICENSE file in the root directory of this source tree.
|
|
9
|
-
*/
|
|
10
|
-
'use strict';
|
|
11
|
-
|
|
12
|
-
var _typeof = require("@babel/runtime/helpers/typeof");
|
|
13
|
-
Object.defineProperty(exports, '__esModule', {
|
|
14
|
-
value: true
|
|
15
|
-
});
|
|
16
|
-
var _regeneratorRuntime = require('@babel/runtime/regenerator');
|
|
17
|
-
var tslib = require('tslib');
|
|
18
|
-
var React = require('react');
|
|
19
|
-
var lodashEs = require('lodash-es');
|
|
20
|
-
var ahooks = require('ahooks');
|
|
21
|
-
var message = require('@hi-ui/message');
|
|
22
|
-
var schemaHooks = require('@hi-ui/schema-hooks');
|
|
23
|
-
var schemaUtils = require('@hi-ui/schema-utils');
|
|
24
|
-
var utils = require('./utils.js');
|
|
25
|
-
function _interopDefaultCompat(e) {
|
|
26
|
-
return e && _typeof(e) === 'object' && 'default' in e ? e : {
|
|
27
|
-
'default': e
|
|
28
|
-
};
|
|
29
|
-
}
|
|
30
|
-
var _regeneratorRuntime__default = /*#__PURE__*/_interopDefaultCompat(_regeneratorRuntime);
|
|
31
|
-
var React__default = /*#__PURE__*/_interopDefaultCompat(React);
|
|
32
|
-
var noopOnChange = function noopOnChange() {
|
|
33
|
-
// noopOnChange
|
|
34
|
-
};
|
|
35
|
-
function normalizeProps(props) {
|
|
36
|
-
var value = props.value;
|
|
37
|
-
// value 为字符传时转换为数组;undefined 保持 undefined
|
|
38
|
-
var nextValue = Array.isArray(value) ? value : typeof value === 'string' ? [value] : undefined;
|
|
39
|
-
// 存在 request 方法时,默认使用 json 模式
|
|
40
|
-
var nextMode = props.mode || (props.request ? 'json' : 'formData');
|
|
41
|
-
// maxCount 大于 1 时,默认使用 multiple 模式
|
|
42
|
-
var nextMultiple = props.multiple || (props.maxCount || 0) > 1;
|
|
43
|
-
// 没开启 multiple,也没传 maxCount,则默认限制为 1
|
|
44
|
-
var nextMaxCount = props.maxCount || (!props.multiple ? 1 : undefined);
|
|
45
|
-
return Object.assign(Object.assign({}, props), {
|
|
46
|
-
value: nextValue,
|
|
47
|
-
mode: nextMode,
|
|
48
|
-
multiple: nextMultiple,
|
|
49
|
-
maxCount: nextMaxCount
|
|
50
|
-
});
|
|
51
|
-
}
|
|
52
|
-
function UploadBridge(props) {
|
|
53
|
-
var _this = this;
|
|
54
|
-
var children = props.children,
|
|
55
|
-
restProps = tslib.__rest(props, ["children"]);
|
|
56
|
-
var normalizedProps = normalizeProps(restProps);
|
|
57
|
-
var _useControllableValue = ahooks.useControllableValue(normalizedProps),
|
|
58
|
-
_useControllableValue2 = _useControllableValue[0],
|
|
59
|
-
value = _useControllableValue2 === void 0 ? [] : _useControllableValue2,
|
|
60
|
-
_setValue = _useControllableValue[1];
|
|
61
|
-
var _useMemo = React.useMemo(function () {
|
|
62
|
-
return utils.toFileList(value);
|
|
63
|
-
}, [value]),
|
|
64
|
-
fileList = _useMemo.fileList,
|
|
65
|
-
fileIdSet = _useMemo.fileIdSet;
|
|
66
|
-
var setValue = function setValue(value) {
|
|
67
|
-
// 只保留<maxCount>个文件
|
|
68
|
-
var sliced = utils.sliceToMaxCount(value, normalizedProps.maxCount, 0);
|
|
69
|
-
var transformed = sliced.map(function (file) {
|
|
70
|
-
if (typeof file === 'string') return {
|
|
71
|
-
url: file,
|
|
72
|
-
fileId: file,
|
|
73
|
-
name: ''
|
|
74
|
-
};else return file;
|
|
75
|
-
});
|
|
76
|
-
_setValue(transformed);
|
|
77
|
-
};
|
|
78
|
-
// 此处的 Set 是给组件卸载的清理阶段有的
|
|
79
|
-
var fileUrlSetRef = schemaHooks.useReadonlyRef(function () {
|
|
80
|
-
return new Set();
|
|
81
|
-
});
|
|
82
|
-
if (normalizedProps.mode === 'formData') {
|
|
83
|
-
fileList === null || fileList === void 0 ? void 0 : fileList.forEach(function (_ref) {
|
|
84
|
-
var url = _ref.url;
|
|
85
|
-
return fileUrlSetRef.current.add(url);
|
|
86
|
-
});
|
|
87
|
-
}
|
|
88
|
-
React.useEffect(function () {
|
|
89
|
-
return function () {
|
|
90
|
-
// 组件卸载时清理所有创建的URL
|
|
91
|
-
// 此处忽略掉这条规则,因为就是需要最新的 fileUrlSetRef
|
|
92
|
-
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
93
|
-
fileUrlSetRef.current.forEach(function (url) {
|
|
94
|
-
if (url) {
|
|
95
|
-
// url 预期是 blob 协议的本地文件地址
|
|
96
|
-
// 若是外部传入的 http 协议的文件也没事
|
|
97
|
-
// revokeObjectURL 会直接忽略
|
|
98
|
-
URL.revokeObjectURL(url);
|
|
99
|
-
}
|
|
100
|
-
});
|
|
101
|
-
};
|
|
102
|
-
}, [fileUrlSetRef]);
|
|
103
|
-
var customUpload = function customUpload(fileList) {
|
|
104
|
-
return tslib.__awaiter(_this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime__default["default"].mark(function _callee() {
|
|
105
|
-
var files, uniqueFiles, maxSize, maxSizeInBytes, oversizedFiles, sliced, urls, nextFiles, msg;
|
|
106
|
-
return _regeneratorRuntime__default["default"].wrap(function _callee$(_context) {
|
|
107
|
-
while (1) {
|
|
108
|
-
switch (_context.prev = _context.next) {
|
|
109
|
-
case 0:
|
|
110
|
-
if (fileList) {
|
|
111
|
-
_context.next = 2;
|
|
112
|
-
break;
|
|
113
|
-
}
|
|
114
|
-
return _context.abrupt("return");
|
|
115
|
-
case 2:
|
|
116
|
-
files = Array.from(fileList); // 1. 文件去重
|
|
117
|
-
// 直接使用已计算的fileList中的fileId
|
|
118
|
-
uniqueFiles = files.filter(function (file) {
|
|
119
|
-
return !(fileIdSet === null || fileIdSet === void 0 ? void 0 : fileIdSet.has(utils.genFileIdentifier(file)));
|
|
120
|
-
});
|
|
121
|
-
if (!(uniqueFiles.length === 0)) {
|
|
122
|
-
_context.next = 7;
|
|
123
|
-
break;
|
|
124
|
-
}
|
|
125
|
-
message.message.open({
|
|
126
|
-
type: 'warning',
|
|
127
|
-
title: '所选文件已存在'
|
|
128
|
-
});
|
|
129
|
-
return _context.abrupt("return");
|
|
130
|
-
case 7:
|
|
131
|
-
// 2. 检查文件大小 (maxSize单位为KB,需要转换为bytes进行比较)
|
|
132
|
-
maxSize = normalizedProps.maxSize || Infinity;
|
|
133
|
-
maxSizeInBytes = maxSize * 1024;
|
|
134
|
-
oversizedFiles = uniqueFiles.filter(function (file) {
|
|
135
|
-
return file.size > maxSizeInBytes;
|
|
136
|
-
});
|
|
137
|
-
if (!(oversizedFiles.length > 0)) {
|
|
138
|
-
_context.next = 13;
|
|
139
|
-
break;
|
|
140
|
-
}
|
|
141
|
-
message.message.open({
|
|
142
|
-
type: 'warning',
|
|
143
|
-
title: "\u6587\u4EF6\u5927\u5C0F\u8D85\u51FA" + maxSize + "KB\u9650\u5236"
|
|
144
|
-
});
|
|
145
|
-
return _context.abrupt("return");
|
|
146
|
-
case 13:
|
|
147
|
-
_context.prev = 13;
|
|
148
|
-
if (!(normalizedProps.mode === 'json')) {
|
|
149
|
-
_context.next = 27;
|
|
150
|
-
break;
|
|
151
|
-
}
|
|
152
|
-
if (normalizedProps.request) {
|
|
153
|
-
_context.next = 17;
|
|
154
|
-
break;
|
|
155
|
-
}
|
|
156
|
-
throw new Error('JSON 模式下必须提供 request 方法');
|
|
157
|
-
case 17:
|
|
158
|
-
// 只保留<maxCount - curLength>个文件
|
|
159
|
-
sliced = utils.sliceToMaxCount(uniqueFiles, normalizedProps.maxCount, value.length); // 上传文件并获取URL
|
|
160
|
-
_context.next = 20;
|
|
161
|
-
return normalizedProps.request(sliced);
|
|
162
|
-
case 20:
|
|
163
|
-
urls = _context.sent;
|
|
164
|
-
if (!(!urls || urls.length === 0)) {
|
|
165
|
-
_context.next = 23;
|
|
166
|
-
break;
|
|
167
|
-
}
|
|
168
|
-
return _context.abrupt("return");
|
|
169
|
-
case 23:
|
|
170
|
-
nextFiles = urls.map(function (url, index) {
|
|
171
|
-
var fileId = utils.genFileIdentifier(uniqueFiles[index]);
|
|
172
|
-
if (typeof url === 'string') return {
|
|
173
|
-
url: url,
|
|
174
|
-
fileId: fileId,
|
|
175
|
-
name: ''
|
|
176
|
-
};else return Object.assign(Object.assign({}, url), {
|
|
177
|
-
fileId: fileId
|
|
178
|
-
});
|
|
179
|
-
}); // 更新value
|
|
180
|
-
setValue([].concat(value || [], nextFiles));
|
|
181
|
-
_context.next = 28;
|
|
182
|
-
break;
|
|
183
|
-
case 27:
|
|
184
|
-
// formData模式直接返回File数组
|
|
185
|
-
setValue([].concat(value || [], uniqueFiles));
|
|
186
|
-
case 28:
|
|
187
|
-
_context.next = 35;
|
|
188
|
-
break;
|
|
189
|
-
case 30:
|
|
190
|
-
_context.prev = 30;
|
|
191
|
-
_context.t0 = _context["catch"](13);
|
|
192
|
-
console.log('UploadBridge customUpload request', _context.t0);
|
|
193
|
-
msg = '文件上传失败: ' + (_context.t0 instanceof Error ? _context.t0.message : '未知错误');
|
|
194
|
-
message.message.open({
|
|
195
|
-
type: 'error',
|
|
196
|
-
title: msg
|
|
197
|
-
});
|
|
198
|
-
case 35:
|
|
199
|
-
case "end":
|
|
200
|
-
return _context.stop();
|
|
201
|
-
}
|
|
202
|
-
}
|
|
203
|
-
}, _callee, null, [[13, 30]]);
|
|
204
|
-
}));
|
|
205
|
-
};
|
|
206
|
-
var handleRemove = function handleRemove(_1, _2, index) {
|
|
207
|
-
// 获取要删除的文件的URL
|
|
208
|
-
var fileToRemove = fileList === null || fileList === void 0 ? void 0 : fileList[index];
|
|
209
|
-
if (fileToRemove === null || fileToRemove === void 0 ? void 0 : fileToRemove.url) URL.revokeObjectURL(fileToRemove.url);
|
|
210
|
-
setValue(value.filter(function (_, idx) {
|
|
211
|
-
return idx !== index;
|
|
212
|
-
}));
|
|
213
|
-
return true;
|
|
214
|
-
};
|
|
215
|
-
var finalProps = schemaUtils.mergeProps({
|
|
216
|
-
type: 'default'
|
|
217
|
-
}, lodashEs.omit(normalizedProps, [
|
|
218
|
-
// 移除无关的属性
|
|
219
|
-
'value', 'defaultValue', 'onChange', 'mode', 'request']));
|
|
220
|
-
return /*#__PURE__*/React__default["default"].cloneElement(children, Object.assign(Object.assign({}, finalProps), {
|
|
221
|
-
customUpload: customUpload,
|
|
222
|
-
fileList: fileList,
|
|
223
|
-
onChange: noopOnChange,
|
|
224
|
-
onRemove: handleRemove
|
|
225
|
-
}));
|
|
226
|
-
}
|
|
227
|
-
exports.UploadBridge = UploadBridge;
|
|
@@ -1,73 +0,0 @@
|
|
|
1
|
-
/** @LICENSE
|
|
2
|
-
* @hi-ui/schema-fields
|
|
3
|
-
* https://github.com/XiaoMi/hiui/tree/master/packages/schema/schema-fields#readme
|
|
4
|
-
*
|
|
5
|
-
* Copyright (c) HiUI <mi-hiui@xiaomi.com>.
|
|
6
|
-
*
|
|
7
|
-
* This source code is licensed under the MIT license found in the
|
|
8
|
-
* LICENSE file in the root directory of this source tree.
|
|
9
|
-
*/
|
|
10
|
-
'use strict';
|
|
11
|
-
|
|
12
|
-
Object.defineProperty(exports, '__esModule', {
|
|
13
|
-
value: true
|
|
14
|
-
});
|
|
15
|
-
var schemaUtils = require('@hi-ui/schema-utils');
|
|
16
|
-
function toFileList(file) {
|
|
17
|
-
if (!file) return {};
|
|
18
|
-
var fileIdSet = new Set();
|
|
19
|
-
var files = Array.isArray(file) ? file : [file];
|
|
20
|
-
var fileList = files.map(function (file) {
|
|
21
|
-
var normalizedFile = typeof file === 'string' ? {
|
|
22
|
-
symbol: file,
|
|
23
|
-
fileId: file,
|
|
24
|
-
url: file
|
|
25
|
-
} : file instanceof File ? {
|
|
26
|
-
symbol: file.name,
|
|
27
|
-
name: file.name,
|
|
28
|
-
fileId: file.name + "-" + file.size + "-" + file.lastModified,
|
|
29
|
-
url: URL.createObjectURL(file)
|
|
30
|
-
} : {
|
|
31
|
-
symbol: file.url,
|
|
32
|
-
name: file.name,
|
|
33
|
-
fileId: file.name + "-" + file.url,
|
|
34
|
-
url: file.url
|
|
35
|
-
};
|
|
36
|
-
var info = schemaUtils.extractFileInfo(normalizedFile.symbol);
|
|
37
|
-
// 添加到 fileIdSet
|
|
38
|
-
fileIdSet.add(normalizedFile.fileId);
|
|
39
|
-
return {
|
|
40
|
-
name: normalizedFile.name || info.fullName,
|
|
41
|
-
fileId: normalizedFile.fileId,
|
|
42
|
-
fileType: info.ext,
|
|
43
|
-
uploadState: 'success',
|
|
44
|
-
url: normalizedFile.url
|
|
45
|
-
};
|
|
46
|
-
});
|
|
47
|
-
return {
|
|
48
|
-
fileIdSet: fileIdSet,
|
|
49
|
-
fileList: fileList
|
|
50
|
-
};
|
|
51
|
-
}
|
|
52
|
-
// 文件唯一标识生成函数
|
|
53
|
-
function genFileIdentifier(file) {
|
|
54
|
-
if (file instanceof File) {
|
|
55
|
-
return file.name + "-" + file.size + "-" + file.lastModified;
|
|
56
|
-
} else if (typeof file === 'string') {
|
|
57
|
-
return file;
|
|
58
|
-
} else {
|
|
59
|
-
return file.name + "-" + file.url;
|
|
60
|
-
}
|
|
61
|
-
}
|
|
62
|
-
function sliceToMaxCount(value, maxCount, curCount) {
|
|
63
|
-
if (curCount === void 0) {
|
|
64
|
-
curCount = 0;
|
|
65
|
-
}
|
|
66
|
-
// maxCount 存在时,计算需要保留的文件数量
|
|
67
|
-
var _maxCount = typeof maxCount === 'number' ? maxCount - curCount : undefined;
|
|
68
|
-
var sliceStart = Math.max(value.length - (_maxCount || 0), 0);
|
|
69
|
-
return value.slice(sliceStart);
|
|
70
|
-
}
|
|
71
|
-
exports.genFileIdentifier = genFileIdentifier;
|
|
72
|
-
exports.sliceToMaxCount = sliceToMaxCount;
|
|
73
|
-
exports.toFileList = toFileList;
|
package/lib/cjs/ctx.js
DELETED
|
@@ -1,70 +0,0 @@
|
|
|
1
|
-
/** @LICENSE
|
|
2
|
-
* @hi-ui/schema-fields
|
|
3
|
-
* https://github.com/XiaoMi/hiui/tree/master/packages/schema/schema-fields#readme
|
|
4
|
-
*
|
|
5
|
-
* Copyright (c) HiUI <mi-hiui@xiaomi.com>.
|
|
6
|
-
*
|
|
7
|
-
* This source code is licensed under the MIT license found in the
|
|
8
|
-
* LICENSE file in the root directory of this source tree.
|
|
9
|
-
*/
|
|
10
|
-
'use strict';
|
|
11
|
-
|
|
12
|
-
var _typeof = require("@babel/runtime/helpers/typeof");
|
|
13
|
-
Object.defineProperty(exports, '__esModule', {
|
|
14
|
-
value: true
|
|
15
|
-
});
|
|
16
|
-
var React = require('react');
|
|
17
|
-
var index = require('./fields/semantic/text/index.js');
|
|
18
|
-
function _interopDefaultCompat(e) {
|
|
19
|
-
return e && _typeof(e) === 'object' && 'default' in e ? e : {
|
|
20
|
-
'default': e
|
|
21
|
-
};
|
|
22
|
-
}
|
|
23
|
-
var React__default = /*#__PURE__*/_interopDefaultCompat(React);
|
|
24
|
-
var FieldMapCtx = /*#__PURE__*/React__default["default"].createContext(null);
|
|
25
|
-
function FieldMapProvider(props) {
|
|
26
|
-
var children = props.children,
|
|
27
|
-
fields = props.fields;
|
|
28
|
-
return /*#__PURE__*/React__default["default"].createElement(FieldMapCtx.Provider, {
|
|
29
|
-
value: fields
|
|
30
|
-
}, children);
|
|
31
|
-
}
|
|
32
|
-
function useFieldMap(opts) {
|
|
33
|
-
if (opts === void 0) {
|
|
34
|
-
opts = {};
|
|
35
|
-
}
|
|
36
|
-
var ctx = React__default["default"].useContext(FieldMapCtx);
|
|
37
|
-
var _opts = opts,
|
|
38
|
-
fieldMap = _opts.fieldMap;
|
|
39
|
-
if (fieldMap) return fieldMap;
|
|
40
|
-
if (!ctx) {
|
|
41
|
-
console.warn("SchemaComponents: \u672A\u627E\u5230 FieldsContext\uFF0C\u5C06\u4F7F\u7528\u9ED8\u8BA4\u7684 Text \u6E32\u67D3\u5668");
|
|
42
|
-
return {
|
|
43
|
-
text: index.ProText
|
|
44
|
-
};
|
|
45
|
-
}
|
|
46
|
-
return ctx;
|
|
47
|
-
}
|
|
48
|
-
function matchFieldClass(opts) {
|
|
49
|
-
var field = opts.field,
|
|
50
|
-
fieldMap = opts.fieldMap;
|
|
51
|
-
var matchedFieldClass = fieldMap[field.valueType];
|
|
52
|
-
var FieldClass = matchedFieldClass || index.ProText;
|
|
53
|
-
if (!matchedFieldClass && field.valueType !== 'custom') {
|
|
54
|
-
var _name = opts.name || 'matchFieldClass';
|
|
55
|
-
var _type = field.valueType;
|
|
56
|
-
console.warn(_name + ": \u672A\u627E\u5230 ValueType \"" + _type + "\" \u5BF9\u5E94\u7684\u6E32\u67D3\u5668\uFF0C\u5C06\u4F7F\u7528\u9ED8\u8BA4\u7684 Text \u6E32\u67D3\u5668\n");
|
|
57
|
-
}
|
|
58
|
-
return FieldClass;
|
|
59
|
-
}
|
|
60
|
-
function useMatchFieldClass(opts) {
|
|
61
|
-
// 获取字段渲染器
|
|
62
|
-
var fieldMap = useFieldMap(opts);
|
|
63
|
-
return matchFieldClass(Object.assign(Object.assign({}, opts), {
|
|
64
|
-
fieldMap: fieldMap
|
|
65
|
-
}));
|
|
66
|
-
}
|
|
67
|
-
exports.FieldMapProvider = FieldMapProvider;
|
|
68
|
-
exports.matchFieldClass = matchFieldClass;
|
|
69
|
-
exports.useFieldMap = useFieldMap;
|
|
70
|
-
exports.useMatchFieldClass = useMatchFieldClass;
|
package/lib/cjs/editable/ctx.js
DELETED
|
@@ -1,45 +0,0 @@
|
|
|
1
|
-
/** @LICENSE
|
|
2
|
-
* @hi-ui/schema-fields
|
|
3
|
-
* https://github.com/XiaoMi/hiui/tree/master/packages/schema/schema-fields#readme
|
|
4
|
-
*
|
|
5
|
-
* Copyright (c) HiUI <mi-hiui@xiaomi.com>.
|
|
6
|
-
*
|
|
7
|
-
* This source code is licensed under the MIT license found in the
|
|
8
|
-
* LICENSE file in the root directory of this source tree.
|
|
9
|
-
*/
|
|
10
|
-
'use strict';
|
|
11
|
-
|
|
12
|
-
var _typeof = require("@babel/runtime/helpers/typeof");
|
|
13
|
-
Object.defineProperty(exports, '__esModule', {
|
|
14
|
-
value: true
|
|
15
|
-
});
|
|
16
|
-
var React = require('react');
|
|
17
|
-
function _interopDefaultCompat(e) {
|
|
18
|
-
return e && _typeof(e) === 'object' && 'default' in e ? e : {
|
|
19
|
-
'default': e
|
|
20
|
-
};
|
|
21
|
-
}
|
|
22
|
-
var React__default = /*#__PURE__*/_interopDefaultCompat(React);
|
|
23
|
-
var EditableControlContext = /*#__PURE__*/React__default["default"].createContext({
|
|
24
|
-
editable: undefined,
|
|
25
|
-
// 默认可编辑
|
|
26
|
-
readonly: undefined // 默认非只读
|
|
27
|
-
});
|
|
28
|
-
|
|
29
|
-
function EditableControlProvider(props) {
|
|
30
|
-
// 只是用来保持引用不变
|
|
31
|
-
var value = React__default["default"].useMemo(function () {
|
|
32
|
-
return {
|
|
33
|
-
editable: props.editable,
|
|
34
|
-
readonly: props.readonly
|
|
35
|
-
};
|
|
36
|
-
}, [props.editable, props.readonly]);
|
|
37
|
-
return /*#__PURE__*/React__default["default"].createElement(EditableControlContext.Provider, {
|
|
38
|
-
value: value
|
|
39
|
-
}, props.children);
|
|
40
|
-
}
|
|
41
|
-
function useEditableControlCtx() {
|
|
42
|
-
return React__default["default"].useContext(EditableControlContext);
|
|
43
|
-
}
|
|
44
|
-
exports.EditableControlProvider = EditableControlProvider;
|
|
45
|
-
exports.useEditableControlCtx = useEditableControlCtx;
|
|
@@ -1,141 +0,0 @@
|
|
|
1
|
-
/** @LICENSE
|
|
2
|
-
* @hi-ui/schema-fields
|
|
3
|
-
* https://github.com/XiaoMi/hiui/tree/master/packages/schema/schema-fields#readme
|
|
4
|
-
*
|
|
5
|
-
* Copyright (c) HiUI <mi-hiui@xiaomi.com>.
|
|
6
|
-
*
|
|
7
|
-
* This source code is licensed under the MIT license found in the
|
|
8
|
-
* LICENSE file in the root directory of this source tree.
|
|
9
|
-
*/
|
|
10
|
-
'use strict';
|
|
11
|
-
|
|
12
|
-
var _typeof = require("@babel/runtime/helpers/typeof");
|
|
13
|
-
Object.defineProperty(exports, '__esModule', {
|
|
14
|
-
value: true
|
|
15
|
-
});
|
|
16
|
-
var React = require('react');
|
|
17
|
-
var classname = require('@hi-ui/classname');
|
|
18
|
-
var schemaUtils = require('@hi-ui/schema-utils');
|
|
19
|
-
function _interopDefaultCompat(e) {
|
|
20
|
-
return e && _typeof(e) === 'object' && 'default' in e ? e : {
|
|
21
|
-
'default': e
|
|
22
|
-
};
|
|
23
|
-
}
|
|
24
|
-
var React__default = /*#__PURE__*/_interopDefaultCompat(React);
|
|
25
|
-
function EditableCase(props) {
|
|
26
|
-
var _a, _b, _c;
|
|
27
|
-
var field = props.field,
|
|
28
|
-
ctx = props.ctx,
|
|
29
|
-
value = props.value;
|
|
30
|
-
var fieldRenderer = new props.FieldClass();
|
|
31
|
-
// 控制是否显示实际的表单组件
|
|
32
|
-
var _useState = React.useState(function () {
|
|
33
|
-
return props.defaultActive || false;
|
|
34
|
-
}),
|
|
35
|
-
isActive = _useState[0],
|
|
36
|
-
_setIsActive = _useState[1];
|
|
37
|
-
// 启用 defaultActive 时,isActive始终为 true
|
|
38
|
-
var setIsActive = function setIsActive(value) {
|
|
39
|
-
return _setIsActive(props.defaultActive || value);
|
|
40
|
-
};
|
|
41
|
-
var handleActivate = function handleActivate() {
|
|
42
|
-
setIsActive(true);
|
|
43
|
-
};
|
|
44
|
-
var handleBlur = function handleBlur(event) {
|
|
45
|
-
// 如果配置了失焦时保持激活状态,则直接跳过
|
|
46
|
-
if (props.keepActiveOnBlur) return;
|
|
47
|
-
if (!event) return;
|
|
48
|
-
var currentTarget = event.currentTarget,
|
|
49
|
-
relatedTarget = event.relatedTarget;
|
|
50
|
-
// 检查是否在当前容器内
|
|
51
|
-
if (relatedTarget && currentTarget.contains(relatedTarget)) return;
|
|
52
|
-
// // 检查是否在HiUI的Portal中
|
|
53
|
-
if (relatedTarget instanceof Element) {
|
|
54
|
-
var portalElement = relatedTarget.closest("[class^=\"" + classname.getPrefixCls('portal') + "-\"]");
|
|
55
|
-
if (portalElement) return;
|
|
56
|
-
}
|
|
57
|
-
// 延迟一小会儿再设置为非激活状态
|
|
58
|
-
// 避免在失焦时,订阅状态还没有更新,导致只读的文本闪烁
|
|
59
|
-
schemaUtils.Schedular.nextMacro(function () {
|
|
60
|
-
setIsActive(false);
|
|
61
|
-
}, 20); // 20*16 = 320ms // 是个经验值,不合适可以修改
|
|
62
|
-
};
|
|
63
|
-
// 可编辑但未激活时显示占位 Input
|
|
64
|
-
if (!isActive) {
|
|
65
|
-
var editableCtx = {
|
|
66
|
-
field: field,
|
|
67
|
-
rowData: ctx.rowData,
|
|
68
|
-
rawData: ctx.rawData,
|
|
69
|
-
formBinding: ctx.formBinding,
|
|
70
|
-
formRef: ctx.formRef,
|
|
71
|
-
onActivate: handleActivate,
|
|
72
|
-
onDeactivate: handleBlur,
|
|
73
|
-
rowIndex: ctx.rowIndex,
|
|
74
|
-
dataKey: ctx.dataKey
|
|
75
|
-
};
|
|
76
|
-
var renderEditable = ((_a = field.renderer) === null || _a === void 0 ? void 0 : _a.renderEditable) ||
|
|
77
|
-
// renderEditable
|
|
78
|
-
fieldRenderer.renderEditable.bind(fieldRenderer);
|
|
79
|
-
var dom = renderEditable(value, editableCtx);
|
|
80
|
-
var enhancedRenderers = (_b = field.extra) === null || _b === void 0 ? void 0 : _b.enhancedRenderers;
|
|
81
|
-
if (enhancedRenderers === null || enhancedRenderers === void 0 ? void 0 : enhancedRenderers.renderEditable) {
|
|
82
|
-
var finalDom = enhancedRenderers.renderEditable(dom, {
|
|
83
|
-
data: value,
|
|
84
|
-
render: fieldRenderer,
|
|
85
|
-
renderCtx: editableCtx
|
|
86
|
-
});
|
|
87
|
-
return /*#__PURE__*/React__default["default"].createElement(React__default["default"].Fragment, null, finalDom);
|
|
88
|
-
}
|
|
89
|
-
return /*#__PURE__*/React__default["default"].createElement(React__default["default"].Fragment, null, renderEditable(value, editableCtx));
|
|
90
|
-
}
|
|
91
|
-
// TODO 这里打个补丁,待后续表格支持全局的焦点管理能力后移除
|
|
92
|
-
// 单选和单选级联在值变化时,直接触发失焦
|
|
93
|
-
var patchedOnBlur = function patchedOnBlur() {
|
|
94
|
-
var _b2;
|
|
95
|
-
var _a, _b;
|
|
96
|
-
for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
|
|
97
|
-
args[_key] = arguments[_key];
|
|
98
|
-
}
|
|
99
|
-
if (field.valueType === 'select' || field.valueType === 'cascader') {
|
|
100
|
-
handleBlur.apply(void 0, args);
|
|
101
|
-
}
|
|
102
|
-
(_b = (_a = ctx.formBinding).onBlur) === null || _b === void 0 ? void 0 : (_b2 = _b).call.apply(_b2, [_a].concat(args));
|
|
103
|
-
};
|
|
104
|
-
var nextCtx = Object.assign(Object.assign({}, ctx), {
|
|
105
|
-
formBinding: Object.assign(Object.assign({}, ctx.formBinding), {
|
|
106
|
-
onBlur: patchedOnBlur
|
|
107
|
-
})
|
|
108
|
-
});
|
|
109
|
-
// 激活编辑态时显示实际的表单组件
|
|
110
|
-
var renderFormItem = ((_c = field.renderer) === null || _c === void 0 ? void 0 : _c.renderFormItem) ||
|
|
111
|
-
// renderFormItem
|
|
112
|
-
fieldRenderer.renderFormItem.bind(fieldRenderer);
|
|
113
|
-
return /*#__PURE__*/React__default["default"].createElement("div", {
|
|
114
|
-
"data-case": "editing",
|
|
115
|
-
onBlur: handleBlur
|
|
116
|
-
}, renderFormItem(null, nextCtx));
|
|
117
|
-
}
|
|
118
|
-
// 实测不处理这个失焦问题,体验反而更好
|
|
119
|
-
// 把处理的逻辑留在这里,如有需要再考虑启用吧
|
|
120
|
-
// export function EditableCase(props: EditableCaseProps) {
|
|
121
|
-
// // ~~一个已知问题是,表单项的组件需要彻底激活后失焦,才会触发 onBlur
|
|
122
|
-
// // ~~如果仅仅是聚焦到占位元素,进入active 状态,但不使用表单项,就无法正确回到 unActive 状态
|
|
123
|
-
// // ~~也就会一直处于 active 状态,渲染真实的表单项
|
|
124
|
-
// // 下面一段代码用来解决这个问题 ↑↑↑↑↑
|
|
125
|
-
// const editingWrapperRef = React.useRef<HTMLDivElement>(null)
|
|
126
|
-
// React.useEffect(() => {
|
|
127
|
-
// if (isActive && editingWrapperRef.current) {
|
|
128
|
-
// editingWrapperRef.current.focus()
|
|
129
|
-
// }
|
|
130
|
-
// }, [isActive])
|
|
131
|
-
// // 激活编辑态时显示实际的表单组件
|
|
132
|
-
// return (
|
|
133
|
-
// <div
|
|
134
|
-
// // 下面两个属性允许 div 获取焦点
|
|
135
|
-
// ref={editingWrapperRef}
|
|
136
|
-
// tabIndex={-1} // 只能通过代码(focus()方法)聚焦,不能通过Tab键聚焦
|
|
137
|
-
// ></div>
|
|
138
|
-
// )
|
|
139
|
-
// }
|
|
140
|
-
|
|
141
|
-
exports.EditableCase = EditableCase;
|
|
@@ -1,62 +0,0 @@
|
|
|
1
|
-
/** @LICENSE
|
|
2
|
-
* @hi-ui/schema-fields
|
|
3
|
-
* https://github.com/XiaoMi/hiui/tree/master/packages/schema/schema-fields#readme
|
|
4
|
-
*
|
|
5
|
-
* Copyright (c) HiUI <mi-hiui@xiaomi.com>.
|
|
6
|
-
*
|
|
7
|
-
* This source code is licensed under the MIT license found in the
|
|
8
|
-
* LICENSE file in the root directory of this source tree.
|
|
9
|
-
*/
|
|
10
|
-
'use strict';
|
|
11
|
-
|
|
12
|
-
var _typeof = require("@babel/runtime/helpers/typeof");
|
|
13
|
-
Object.defineProperty(exports, '__esModule', {
|
|
14
|
-
value: true
|
|
15
|
-
});
|
|
16
|
-
var React = require('react');
|
|
17
|
-
var ctx$1 = require('../ctx.js');
|
|
18
|
-
var useReadonly = require('./use-readonly.js');
|
|
19
|
-
var simple = require('./simple.js');
|
|
20
|
-
var readonly = require('./readonly.js');
|
|
21
|
-
var editable = require('./editable.js');
|
|
22
|
-
function _interopDefaultCompat(e) {
|
|
23
|
-
return e && _typeof(e) === 'object' && 'default' in e ? e : {
|
|
24
|
-
'default': e
|
|
25
|
-
};
|
|
26
|
-
}
|
|
27
|
-
var React__default = /*#__PURE__*/_interopDefaultCompat(React);
|
|
28
|
-
function EditableField(props) {
|
|
29
|
-
var field = props.field,
|
|
30
|
-
ctx = props.ctx,
|
|
31
|
-
value = props.value,
|
|
32
|
-
_props$usedBy = props.usedBy,
|
|
33
|
-
usedBy = _props$usedBy === void 0 ? 'other' : _props$usedBy;
|
|
34
|
-
// 获取字段渲染器
|
|
35
|
-
var FieldClass = ctx$1.useMatchFieldClass({
|
|
36
|
-
name: 'EditableFieldWrapper',
|
|
37
|
-
field: field,
|
|
38
|
-
fieldMap: props.fieldMap
|
|
39
|
-
});
|
|
40
|
-
var readonly$1 = useReadonly.useReadonly(field, props.runtimeEditable);
|
|
41
|
-
// 简单字段且无自定义渲染,使用 SimpleCase
|
|
42
|
-
if (simple.isSimpleCase(field)) return /*#__PURE__*/React__default["default"].createElement(simple.SimpleCase, {
|
|
43
|
-
value: value
|
|
44
|
-
});
|
|
45
|
-
var passedProps = {
|
|
46
|
-
field: field,
|
|
47
|
-
ctx: ctx,
|
|
48
|
-
value: value,
|
|
49
|
-
FieldClass: FieldClass
|
|
50
|
-
};
|
|
51
|
-
if (readonly$1) return /*#__PURE__*/React__default["default"].createElement(readonly.ReadonlyCase, Object.assign({}, passedProps, {
|
|
52
|
-
usedBy: usedBy
|
|
53
|
-
}));else return /*#__PURE__*/React__default["default"].createElement(editable.EditableCase, Object.assign({}, passedProps));
|
|
54
|
-
}
|
|
55
|
-
exports.isReadonly = useReadonly.isReadonly;
|
|
56
|
-
exports.runDynamicEditable = useReadonly.runDynamicEditable;
|
|
57
|
-
exports.useReadonly = useReadonly.useReadonly;
|
|
58
|
-
exports.SimpleCase = simple.SimpleCase;
|
|
59
|
-
exports.isSimpleCase = simple.isSimpleCase;
|
|
60
|
-
exports.ReadonlyCase = readonly.ReadonlyCase;
|
|
61
|
-
exports.EditableCase = editable.EditableCase;
|
|
62
|
-
exports.EditableField = EditableField;
|
|
@@ -1,36 +0,0 @@
|
|
|
1
|
-
/** @LICENSE
|
|
2
|
-
* @hi-ui/schema-fields
|
|
3
|
-
* https://github.com/XiaoMi/hiui/tree/master/packages/schema/schema-fields#readme
|
|
4
|
-
*
|
|
5
|
-
* Copyright (c) HiUI <mi-hiui@xiaomi.com>.
|
|
6
|
-
*
|
|
7
|
-
* This source code is licensed under the MIT license found in the
|
|
8
|
-
* LICENSE file in the root directory of this source tree.
|
|
9
|
-
*/
|
|
10
|
-
'use strict';
|
|
11
|
-
|
|
12
|
-
var _typeof = require("@babel/runtime/helpers/typeof");
|
|
13
|
-
Object.defineProperty(exports, '__esModule', {
|
|
14
|
-
value: true
|
|
15
|
-
});
|
|
16
|
-
var React = require('react');
|
|
17
|
-
function _interopDefaultCompat(e) {
|
|
18
|
-
return e && _typeof(e) === 'object' && 'default' in e ? e : {
|
|
19
|
-
'default': e
|
|
20
|
-
};
|
|
21
|
-
}
|
|
22
|
-
var React__default = /*#__PURE__*/_interopDefaultCompat(React);
|
|
23
|
-
function ReadonlyCase(props) {
|
|
24
|
-
var _a, _b, _c;
|
|
25
|
-
var field = props.field,
|
|
26
|
-
ctx = props.ctx,
|
|
27
|
-
value = props.value,
|
|
28
|
-
_props$usedBy = props.usedBy,
|
|
29
|
-
usedBy = _props$usedBy === void 0 ? 'other' : _props$usedBy;
|
|
30
|
-
var fieldRenderer = new props.FieldClass();
|
|
31
|
-
// 只读态时直接渲染只读视图
|
|
32
|
-
// 此处实际上是 render | renderCell 的联合类型,收敛至 render 类型,避免 Any 缺少检查
|
|
33
|
-
var render = usedBy === 'table' ? ((_a = field.renderer) === null || _a === void 0 ? void 0 : _a.renderCell) || ((_b = field.renderer) === null || _b === void 0 ? void 0 : _b.render) || fieldRenderer.renderCell.bind(fieldRenderer) : ((_c = field.renderer) === null || _c === void 0 ? void 0 : _c.render) || fieldRenderer.render.bind(fieldRenderer);
|
|
34
|
-
return /*#__PURE__*/React__default["default"].createElement(React__default["default"].Fragment, null, render(value, ctx));
|
|
35
|
-
}
|
|
36
|
-
exports.ReadonlyCase = ReadonlyCase;
|