@hi-ui/schema-fields 4.0.0-experimental.1

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 (139) hide show
  1. package/README.md +11 -0
  2. package/lib/cjs/base.js +125 -0
  3. package/lib/cjs/components/image-preview/index.js +63 -0
  4. package/lib/cjs/components/span/index.js +33 -0
  5. package/lib/cjs/components/upload-bridge/index.js +227 -0
  6. package/lib/cjs/components/upload-bridge/utils.js +73 -0
  7. package/lib/cjs/ctx.js +70 -0
  8. package/lib/cjs/editable/ctx.js +45 -0
  9. package/lib/cjs/editable/editable.js +141 -0
  10. package/lib/cjs/editable/index.js +62 -0
  11. package/lib/cjs/editable/readonly.js +36 -0
  12. package/lib/cjs/editable/simple.js +61 -0
  13. package/lib/cjs/editable/use-readonly.js +200 -0
  14. package/lib/cjs/extensible/selectable/index.js +114 -0
  15. package/lib/cjs/extensible/selectable/match-cascader.js +184 -0
  16. package/lib/cjs/fields/basic/cascader/index.js +98 -0
  17. package/lib/cjs/fields/basic/check-cascader/index.js +58 -0
  18. package/lib/cjs/fields/basic/check-select/index.js +89 -0
  19. package/lib/cjs/fields/basic/check-tree-select/index.js +61 -0
  20. package/lib/cjs/fields/basic/checkbox/index.js +84 -0
  21. package/lib/cjs/fields/basic/counter/index.js +40 -0
  22. package/lib/cjs/fields/basic/radio/index.js +44 -0
  23. package/lib/cjs/fields/basic/rating/index.js +40 -0
  24. package/lib/cjs/fields/basic/select/index.js +98 -0
  25. package/lib/cjs/fields/basic/slider/index.js +40 -0
  26. package/lib/cjs/fields/basic/switch/index.js +47 -0
  27. package/lib/cjs/fields/basic/textarea/index.js +40 -0
  28. package/lib/cjs/fields/basic/time-picker/index.js +45 -0
  29. package/lib/cjs/fields/basic/time-picker/index.scss.js +18 -0
  30. package/lib/cjs/fields/basic/tree-select/index.js +61 -0
  31. package/lib/cjs/fields/basic/upload/custom.js +29 -0
  32. package/lib/cjs/fields/basic/upload/index.js +48 -0
  33. package/lib/cjs/fields/enhance/number-range/index.js +39 -0
  34. package/lib/cjs/fields/semantic/date/index.js +82 -0
  35. package/lib/cjs/fields/semantic/image/index.js +65 -0
  36. package/lib/cjs/fields/semantic/image/upload.js +32 -0
  37. package/lib/cjs/fields/semantic/link/index.js +96 -0
  38. package/lib/cjs/fields/semantic/number/index.js +106 -0
  39. package/lib/cjs/fields/semantic/tag/index.js +164 -0
  40. package/lib/cjs/fields/semantic/tag/index.scss.js +18 -0
  41. package/lib/cjs/fields/semantic/text/index.js +61 -0
  42. package/lib/cjs/index.js +145 -0
  43. package/lib/cjs/utils/batch-dep-update.js +40 -0
  44. package/lib/cjs/utils/form-binding.js +40 -0
  45. package/lib/cjs/utils/label.js +34 -0
  46. package/lib/cjs/utils.js +35 -0
  47. package/lib/esm/base.js +111 -0
  48. package/lib/esm/components/image-preview/index.js +49 -0
  49. package/lib/esm/components/span/index.js +20 -0
  50. package/lib/esm/components/upload-bridge/index.js +214 -0
  51. package/lib/esm/components/upload-bridge/utils.js +66 -0
  52. package/lib/esm/ctx.js +55 -0
  53. package/lib/esm/editable/ctx.js +32 -0
  54. package/lib/esm/editable/editable.js +129 -0
  55. package/lib/esm/editable/index.js +44 -0
  56. package/lib/esm/editable/readonly.js +24 -0
  57. package/lib/esm/editable/simple.js +49 -0
  58. package/lib/esm/editable/use-readonly.js +193 -0
  59. package/lib/esm/extensible/selectable/index.js +101 -0
  60. package/lib/esm/extensible/selectable/match-cascader.js +179 -0
  61. package/lib/esm/fields/basic/cascader/index.js +83 -0
  62. package/lib/esm/fields/basic/check-cascader/index.js +44 -0
  63. package/lib/esm/fields/basic/check-select/index.js +75 -0
  64. package/lib/esm/fields/basic/check-tree-select/index.js +47 -0
  65. package/lib/esm/fields/basic/checkbox/index.js +70 -0
  66. package/lib/esm/fields/basic/counter/index.js +26 -0
  67. package/lib/esm/fields/basic/radio/index.js +30 -0
  68. package/lib/esm/fields/basic/rating/index.js +26 -0
  69. package/lib/esm/fields/basic/select/index.js +83 -0
  70. package/lib/esm/fields/basic/slider/index.js +26 -0
  71. package/lib/esm/fields/basic/switch/index.js +33 -0
  72. package/lib/esm/fields/basic/textarea/index.js +26 -0
  73. package/lib/esm/fields/basic/time-picker/index.js +31 -0
  74. package/lib/esm/fields/basic/time-picker/index.scss.js +13 -0
  75. package/lib/esm/fields/basic/tree-select/index.js +47 -0
  76. package/lib/esm/fields/basic/upload/custom.js +16 -0
  77. package/lib/esm/fields/basic/upload/index.js +34 -0
  78. package/lib/esm/fields/enhance/number-range/index.js +26 -0
  79. package/lib/esm/fields/semantic/date/index.js +67 -0
  80. package/lib/esm/fields/semantic/image/index.js +51 -0
  81. package/lib/esm/fields/semantic/image/upload.js +20 -0
  82. package/lib/esm/fields/semantic/link/index.js +82 -0
  83. package/lib/esm/fields/semantic/number/index.js +91 -0
  84. package/lib/esm/fields/semantic/tag/index.js +149 -0
  85. package/lib/esm/fields/semantic/tag/index.scss.js +13 -0
  86. package/lib/esm/fields/semantic/text/index.js +47 -0
  87. package/lib/esm/index.js +85 -0
  88. package/lib/esm/utils/batch-dep-update.js +35 -0
  89. package/lib/esm/utils/form-binding.js +34 -0
  90. package/lib/esm/utils/label.js +21 -0
  91. package/lib/esm/utils.js +27 -0
  92. package/lib/types/base.d.ts +44 -0
  93. package/lib/types/components/async-refill-placeholder/index.d.ts +7 -0
  94. package/lib/types/components/image-preview/index.d.ts +5 -0
  95. package/lib/types/components/span/index.d.ts +8 -0
  96. package/lib/types/components/upload-bridge/index.d.ts +5 -0
  97. package/lib/types/components/upload-bridge/type.d.ts +26 -0
  98. package/lib/types/components/upload-bridge/utils.d.ts +11 -0
  99. package/lib/types/ctx.d.ts +21 -0
  100. package/lib/types/editable/ctx.d.ts +5 -0
  101. package/lib/types/editable/editable.d.ts +18 -0
  102. package/lib/types/editable/index.d.ts +14 -0
  103. package/lib/types/editable/readonly.d.ts +8 -0
  104. package/lib/types/editable/simple.d.ts +8 -0
  105. package/lib/types/editable/type.d.ts +9 -0
  106. package/lib/types/editable/use-readonly.d.ts +26 -0
  107. package/lib/types/extensible/selectable/index.d.ts +31 -0
  108. package/lib/types/extensible/selectable/match-cascader.d.ts +19 -0
  109. package/lib/types/extensible/selectable/type.d.ts +16 -0
  110. package/lib/types/fields/basic/cascader/index.d.ts +10 -0
  111. package/lib/types/fields/basic/check-cascader/index.d.ts +11 -0
  112. package/lib/types/fields/basic/check-select/index.d.ts +34 -0
  113. package/lib/types/fields/basic/check-tree-select/index.d.ts +10 -0
  114. package/lib/types/fields/basic/checkbox/index.d.ts +19 -0
  115. package/lib/types/fields/basic/counter/index.d.ts +7 -0
  116. package/lib/types/fields/basic/radio/index.d.ts +7 -0
  117. package/lib/types/fields/basic/rating/index.d.ts +7 -0
  118. package/lib/types/fields/basic/select/index.d.ts +12 -0
  119. package/lib/types/fields/basic/slider/index.d.ts +7 -0
  120. package/lib/types/fields/basic/switch/index.d.ts +7 -0
  121. package/lib/types/fields/basic/textarea/index.d.ts +7 -0
  122. package/lib/types/fields/basic/time-picker/index.d.ts +8 -0
  123. package/lib/types/fields/basic/tree-select/index.d.ts +11 -0
  124. package/lib/types/fields/basic/upload/custom.d.ts +3 -0
  125. package/lib/types/fields/basic/upload/index.d.ts +8 -0
  126. package/lib/types/fields/enhance/number-range/index.d.ts +7 -0
  127. package/lib/types/fields/semantic/date/index.d.ts +15 -0
  128. package/lib/types/fields/semantic/image/index.d.ts +11 -0
  129. package/lib/types/fields/semantic/image/upload.d.ts +3 -0
  130. package/lib/types/fields/semantic/link/index.d.ts +31 -0
  131. package/lib/types/fields/semantic/number/index.d.ts +21 -0
  132. package/lib/types/fields/semantic/tag/index.d.ts +78 -0
  133. package/lib/types/fields/semantic/text/index.d.ts +13 -0
  134. package/lib/types/index.d.ts +108 -0
  135. package/lib/types/utils/batch-dep-update.d.ts +13 -0
  136. package/lib/types/utils/form-binding.d.ts +11 -0
  137. package/lib/types/utils/label.d.ts +11 -0
  138. package/lib/types/utils.d.ts +15 -0
  139. package/package.json +98 -0
@@ -0,0 +1,184 @@
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
+ function _createForOfIteratorHelperLoose(o, allowArrayLike) {
16
+ var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"];
17
+ if (it) return (it = it.call(o)).next.bind(it);
18
+ if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") {
19
+ if (it) o = it;
20
+ var i = 0;
21
+ return function () {
22
+ if (i >= o.length) return {
23
+ done: true
24
+ };
25
+ return {
26
+ done: false,
27
+ value: o[i++]
28
+ };
29
+ };
30
+ }
31
+ throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
32
+ }
33
+ function _unsupportedIterableToArray(o, minLen) {
34
+ if (!o) return;
35
+ if (typeof o === "string") return _arrayLikeToArray(o, minLen);
36
+ var n = Object.prototype.toString.call(o).slice(8, -1);
37
+ if (n === "Object" && o.constructor) n = o.constructor.name;
38
+ if (n === "Map" || n === "Set") return Array.from(o);
39
+ if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);
40
+ }
41
+ function _arrayLikeToArray(arr, len) {
42
+ if (len == null || len > arr.length) len = arr.length;
43
+ for (var i = 0, arr2 = new Array(len); i < len; i++) {
44
+ arr2[i] = arr[i];
45
+ }
46
+ return arr2;
47
+ }
48
+ /**
49
+ * 在嵌套选项数据中匹配多个路径
50
+ * @param values 二维数组,包含多个级联路径,例如 [['hubei', 'wuhan'], ['guangdong', 'shenzhen']]
51
+ * @param options 嵌套选项数据,包含 children 的树形结构
52
+ * @param extra 配置选项
53
+ * @returns 二维数组,保持输入的结构,每个路径对应一个匹配的选项链数组
54
+ *
55
+ * 边界条件处理:
56
+ * - 部分匹配:如果路径中某一层找不到,返回已匹配的部分(而不是空数组)
57
+ * - 缺失title:如果选项的title字段不存在,自动使用id字段作为默认值
58
+ * - 完全不匹配:如果第一层就找不到,返回空数组
59
+ */
60
+ function matchCascaderOpts(values, options, extra) {
61
+ if (extra === void 0) {
62
+ extra = {};
63
+ }
64
+ var _extra = extra,
65
+ _extra$fieldNames = _extra.fieldNames,
66
+ fieldNames = _extra$fieldNames === void 0 ? {} : _extra$fieldNames;
67
+ var _fieldNames$id = fieldNames.id,
68
+ idFieldKey = _fieldNames$id === void 0 ? 'id' : _fieldNames$id,
69
+ _fieldNames$title = fieldNames.title,
70
+ titleFieldKey = _fieldNames$title === void 0 ? 'title' : _fieldNames$title;
71
+ /**
72
+ * 根据单个路径查找对应的选项链
73
+ * @param path 单个路径数组,例如 ['hubei', 'wuhan']
74
+ * @param opts 当前层级的选项数据
75
+ * @returns 匹配的选项数组
76
+ */
77
+ function findPathOptions(path, opts) {
78
+ var result = [];
79
+ var currentOptions = opts;
80
+ var _loop = function _loop() {
81
+ var valueId = _step.value;
82
+ var found = currentOptions.find(function (item) {
83
+ return String(item[idFieldKey]) === String(valueId);
84
+ });
85
+ if (found) {
86
+ result.push(found);
87
+ // 如果还有下一层,继续在 children 中查找
88
+ currentOptions = found.children || [];
89
+ } else {
90
+ // 如果某一层找不到对应的选项,就停止查找
91
+ return "break";
92
+ }
93
+ };
94
+ for (var _iterator = _createForOfIteratorHelperLoose(path), _step; !(_step = _iterator()).done;) {
95
+ var _ret = _loop();
96
+ if (_ret === "break") break;
97
+ }
98
+ // 返回部分匹配的结果,即使路径不完整也返回已匹配的部分
99
+ return result;
100
+ }
101
+ try {
102
+ // 转换函数:将原始选项转换为 MatchedNestOptsType 格式
103
+ // const convertToMatchedType =
104
+ // 处理每个路径,保持二维数组结构
105
+ return values.map(function (path) {
106
+ if (!Array.isArray(path)) return [];
107
+ var pathOptions = findPathOptions(path, options);
108
+ return pathOptions.map(function (option) {
109
+ var id = option[idFieldKey];
110
+ var title = option[titleFieldKey] || String(id); // 如果 title 不存在,使用 id 作为默认值
111
+ return {
112
+ id: id,
113
+ title: title
114
+ };
115
+ });
116
+ });
117
+ } catch (error) {
118
+ console.error('matchCascaderOpts', error);
119
+ return [];
120
+ }
121
+ }
122
+ // 测试用例示例(可取消注释运行)
123
+ /*
124
+ const testOpts = [
125
+ {
126
+ id: 'hubei',
127
+ title: '湖北',
128
+ children: [
129
+ { id: 'wuhan', title: '武汉' },
130
+ { id: 'xiangyang', title: '襄阳' },
131
+ { id: 'noTitle' }, // 测试没有 title 的情况
132
+ ],
133
+ },
134
+ {
135
+ id: 'beijing',
136
+ title: '北京',
137
+ children: [
138
+ { id: 'haidian', title: '海淀' },
139
+ { id: 'chaoyang', title: '朝阳' },
140
+ ],
141
+ },
142
+ {
143
+ id: 'guangdong',
144
+ // 测试第一层没有 title 的情况
145
+ children: [{ id: 'shenzhen', title: '深圳' }],
146
+ },
147
+ ]
148
+
149
+ // 边界条件测试用例
150
+ console.log('=== 正常匹配 ===')
151
+ console.log(matchCascaderOpts([['hubei', 'wuhan']], testOpts))
152
+ // 预期输出: [[{ id: 'hubei', title: '湖北' }, { id: 'wuhan', title: '武汉' }]]
153
+
154
+ console.log('\n=== 第一层查到,第二层没查到(部分匹配) ===')
155
+ console.log(matchCascaderOpts([['hubei', 'nonexistent']], testOpts))
156
+ // 预期输出: [[{ id: 'hubei', title: '湖北' }]]
157
+
158
+ console.log('\n=== ID查到了,title没查到(使用ID作为默认值) ===')
159
+ console.log(matchCascaderOpts([['hubei', 'noTitle']], testOpts))
160
+ // 预期输出: [[{ id: 'hubei', title: '湖北' }, { id: 'noTitle', title: 'noTitle' }]]
161
+
162
+ console.log('\n=== 第一层没有title(使用ID作为默认值) ===')
163
+ console.log(matchCascaderOpts([['guangdong', 'shenzhen']], testOpts))
164
+ // 预期输出: [[{ id: 'guangdong', title: 'guangdong' }, { id: 'shenzhen', title: '深圳' }]]
165
+
166
+ console.log('\n=== 完全匹配不到 ===')
167
+ console.log(matchCascaderOpts([['nonexistent', 'city']], testOpts))
168
+ // 预期输出: [[]]
169
+
170
+ console.log('\n=== 多路径混合测试 ===')
171
+ console.log(
172
+ matchCascaderOpts(
173
+ [
174
+ ['hubei', 'wuhan'], // 正常匹配
175
+ ['hubei', 'nonexistent'], // 部分匹配
176
+ ['guangdong', 'shenzhen'], // 第一层无title
177
+ ['nonexistent'], // 完全不匹配
178
+ ],
179
+ testOpts
180
+ )
181
+ )
182
+ */
183
+
184
+ exports.matchCascaderOpts = matchCascaderOpts;
@@ -0,0 +1,98 @@
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 _inheritsLoose = require('@babel/runtime/helpers/inheritsLoose');
17
+ var React = require('react');
18
+ var Cascader = require('@hi-ui/cascader');
19
+ var schemaOptionInjector = require('@hi-ui/schema-option-injector');
20
+ var schemaInterruptInjector = require('@hi-ui/schema-interrupt-injector');
21
+ var index = require('../../../extensible/selectable/index.js');
22
+ var matchCascader = require('../../../extensible/selectable/match-cascader.js');
23
+ function _interopDefaultCompat(e) {
24
+ return e && _typeof(e) === 'object' && 'default' in e ? e : {
25
+ 'default': e
26
+ };
27
+ }
28
+ var _inheritsLoose__default = /*#__PURE__*/_interopDefaultCompat(_inheritsLoose);
29
+ var React__default = /*#__PURE__*/_interopDefaultCompat(React);
30
+ var Cascader__default = /*#__PURE__*/_interopDefaultCompat(Cascader);
31
+ var ProCascader = /*#__PURE__*/function (_ProSelectableField) {
32
+ _inheritsLoose__default["default"](ProCascader, _ProSelectableField);
33
+ function ProCascader() {
34
+ return _ProSelectableField.apply(this, arguments) || this;
35
+ }
36
+ var _proto = ProCascader.prototype;
37
+ _proto.renderFormItem = function renderFormItem(_, ctx) {
38
+ var _a, _b;
39
+ var fieldProps = this.getFieldProps({
40
+ overlay: (_a = ctx.field.extra) === null || _a === void 0 ? void 0 : _a.popperProps
41
+ }, ctx);
42
+ // 过滤掉原始参数中的自引用属性,防止 immer 在处理数据时出现崩溃
43
+ var hookedSetSelectedRawOption = this.hookedSetSelectedRawOption.bind(this, ctx);
44
+ return /*#__PURE__*/React__default["default"].createElement(schemaOptionInjector.AsyncOptsDataInjector
45
+ // options
46
+ , Object.assign({}, fieldProps, {
47
+ renderCtx: ctx,
48
+ setSelectedRawOption: hookedSetSelectedRawOption
49
+ }), /*#__PURE__*/React__default["default"].createElement(schemaInterruptInjector.InterruptInjector, {
50
+ config: (_b = ctx.field.control) === null || _b === void 0 ? void 0 : _b.interrupt
51
+ }, /*#__PURE__*/React__default["default"].createElement(Cascader__default["default"], null)));
52
+ };
53
+ _proto.renderEditable = function renderEditable(data, ctx) {
54
+ // 首先尝试渲染已选中元素的标题
55
+ var selectedEl = this.renderEditableForStringSelected(data, ctx);
56
+ if (selectedEl) return selectedEl;
57
+ // 随后尝试渲染首次回显元素
58
+ var firstRefillEl = this.renderEditableForStringFirstRefill(data, ctx, {
59
+ dftRender: _ProSelectableField.prototype.renderEditable.bind(this),
60
+ RefillComponent: CascaderRefillPlaceholder
61
+ });
62
+ if (firstRefillEl) return firstRefillEl;
63
+ return _ProSelectableField.prototype.renderEditable.call(this, data, ctx, {
64
+ suffix: this.suffixEl
65
+ });
66
+ };
67
+ return ProCascader;
68
+ }(index.ProSelectableField);
69
+ function CascaderRefillPlaceholder(props) {
70
+ var _a, _b, _c, _d;
71
+ var _props$data = props.data,
72
+ options = _props$data === void 0 ? [] : _props$data,
73
+ ctx = props.ctx,
74
+ fieldNames = props.fieldNames,
75
+ instance = props.instance;
76
+ try {
77
+ var _hereValue = (_a = props.value) !== null && _a !== void 0 ? _a : [];
78
+ // 使用公用的 matchCascaderOpts 函数 // 注意这里取了0
79
+ var matchedOptions = (_b = matchCascader.matchCascaderOpts([_hereValue], options, {
80
+ fieldNames: fieldNames
81
+ })[0]) !== null && _b !== void 0 ? _b : [];
82
+ // 显示所有匹配到的标题
83
+ var displayTitle = matchedOptions.map(function (item) {
84
+ return item.title;
85
+ }).join('/');
86
+ // 最终是显示字符串,所以直接使用 dftRender 渲染
87
+ return /*#__PURE__*/React__default["default"].createElement(React__default["default"].Fragment, null, (_c = props.dftRender) === null || _c === void 0 ? void 0 : _c.call(props, displayTitle, ctx, {
88
+ suffix: instance.suffixEl
89
+ }));
90
+ } catch (error) {
91
+ console.error('CascaderRefillPlaceholder', error);
92
+ return /*#__PURE__*/React__default["default"].createElement(React__default["default"].Fragment, null, (_d = props.dftRender) === null || _d === void 0 ? void 0 : _d.call(props, props.value, ctx, {
93
+ suffix: instance.suffixEl
94
+ }));
95
+ }
96
+ }
97
+ exports.CascaderRefillPlaceholder = CascaderRefillPlaceholder;
98
+ exports.ProCascader = ProCascader;
@@ -0,0 +1,58 @@
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 _inheritsLoose = require('@babel/runtime/helpers/inheritsLoose');
17
+ var React = require('react');
18
+ var CheckCascader = require('@hi-ui/check-cascader');
19
+ var schemaOptionInjector = require('@hi-ui/schema-option-injector');
20
+ var index = require('../../../extensible/selectable/index.js');
21
+ function _interopDefaultCompat(e) {
22
+ return e && _typeof(e) === 'object' && 'default' in e ? e : {
23
+ 'default': e
24
+ };
25
+ }
26
+ var _inheritsLoose__default = /*#__PURE__*/_interopDefaultCompat(_inheritsLoose);
27
+ var React__default = /*#__PURE__*/_interopDefaultCompat(React);
28
+ var CheckCascader__default = /*#__PURE__*/_interopDefaultCompat(CheckCascader);
29
+ var ProCheckCascader = /*#__PURE__*/function (_ProSelectableField) {
30
+ _inheritsLoose__default["default"](ProCheckCascader, _ProSelectableField);
31
+ function ProCheckCascader() {
32
+ var _this;
33
+ _this = _ProSelectableField.apply(this, arguments) || this;
34
+ _this.dftFieldProps = {
35
+ changeOnSelect: true
36
+ };
37
+ return _this;
38
+ }
39
+ var _proto = ProCheckCascader.prototype;
40
+ _proto.renderFormItem = function renderFormItem(_, ctx) {
41
+ var _a;
42
+ var fieldProps = this.getFieldProps(Object.assign(Object.assign({}, this.dftFieldProps), {
43
+ overlay: (_a = ctx.field.extra) === null || _a === void 0 ? void 0 : _a.popperProps
44
+ }), ctx);
45
+ // 过滤掉原始参数中的自引用属性,防止 immer 在处理数据时出现崩溃
46
+ var hookedSetSelectedRawOption = this.hookedSetSelectedRawOption.bind(this, ctx);
47
+ return /*#__PURE__*/React__default["default"].createElement(schemaOptionInjector.AsyncOptsDataInjector
48
+ // options
49
+ , Object.assign({}, fieldProps, {
50
+ renderCtx: ctx,
51
+ setSelectedRawOption: hookedSetSelectedRawOption
52
+ }), /*#__PURE__*/React__default["default"].createElement(CheckCascader__default["default"], {
53
+ data: []
54
+ }));
55
+ };
56
+ return ProCheckCascader;
57
+ }(index.ProSelectableField);
58
+ exports.ProCheckCascader = ProCheckCascader;
@@ -0,0 +1,89 @@
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 _inheritsLoose = require('@babel/runtime/helpers/inheritsLoose');
17
+ var tslib = require('tslib');
18
+ var React = require('react');
19
+ var CheckSelect = require('@hi-ui/check-select');
20
+ var schemaOptionInjector = require('@hi-ui/schema-option-injector');
21
+ var index$1 = require('../../../extensible/selectable/index.js');
22
+ var index = require('../../semantic/tag/index.js');
23
+ function _interopDefaultCompat(e) {
24
+ return e && _typeof(e) === 'object' && 'default' in e ? e : {
25
+ 'default': e
26
+ };
27
+ }
28
+ var _inheritsLoose__default = /*#__PURE__*/_interopDefaultCompat(_inheritsLoose);
29
+ var React__default = /*#__PURE__*/_interopDefaultCompat(React);
30
+ var CheckSelect__default = /*#__PURE__*/_interopDefaultCompat(CheckSelect);
31
+ var ProCheckSelect = /*#__PURE__*/function (_ProSelectableField) {
32
+ _inheritsLoose__default["default"](ProCheckSelect, _ProSelectableField);
33
+ function ProCheckSelect() {
34
+ return _ProSelectableField.apply(this, arguments) || this;
35
+ }
36
+ var _proto = ProCheckSelect.prototype;
37
+ _proto.render = function render(data, ctx) {
38
+ var title = this.getOptionTitle(ctx) || data;
39
+ var tagRef = this.tagRef || new index.ProTag();
40
+ this.tagRef = tagRef;
41
+ var _this$getSelfFieldPro = this.getSelfFieldProps(ctx),
42
+ tagProps = _this$getSelfFieldPro.tagProps;
43
+ return tagRef.render(title, Object.assign(Object.assign({}, ctx), {
44
+ field: {
45
+ fieldProps: tagProps
46
+ }
47
+ }));
48
+ };
49
+ _proto.getSelfFieldProps = function getSelfFieldProps(ctx) {
50
+ var _a;
51
+ var _b = this.getFieldProps({
52
+ placeholder: this.getDftPlaceholder(ctx),
53
+ overlay: (_a = ctx.field.extra) === null || _a === void 0 ? void 0 : _a.popperProps
54
+ }, ctx),
55
+ bordered = _b.bordered,
56
+ colorPreset = _b.colorPreset,
57
+ tagProps = _b.tagProps,
58
+ fieldProps = tslib.__rest(_b, ["bordered", "colorPreset", "tagProps"]);
59
+ return {
60
+ fieldProps: fieldProps,
61
+ tagProps: Object.assign({
62
+ bordered: bordered,
63
+ colorPreset: colorPreset
64
+ }, tagProps)
65
+ };
66
+ };
67
+ _proto.renderFormItem = function renderFormItem(_, ctx) {
68
+ var _a;
69
+ var _this$getSelfFieldPro2 = this.getSelfFieldProps(ctx),
70
+ fieldProps = _this$getSelfFieldPro2.fieldProps;
71
+ return /*#__PURE__*/React__default["default"].createElement(schemaOptionInjector.AsyncOptsDataInjector, Object.assign({}, fieldProps, {
72
+ renderCtx: ctx,
73
+ setSelectedRawOption: (_a = ctx.field.payload) === null || _a === void 0 ? void 0 : _a.setSelectedRawOption
74
+ }), /*#__PURE__*/React__default["default"].createElement(CheckSelect__default["default"], null));
75
+ };
76
+ _proto.getDftPlaceholder = function getDftPlaceholder(ctx) {
77
+ var titleText = ctx.field._titleText;
78
+ if (titleText) return "\u8BF7\u9009\u62E9" + titleText;
79
+ };
80
+ _proto.renderEditable = function renderEditable(data, ctx) {
81
+ var dataKey = ctx.dataKey;
82
+ var title = this.getOptionTitle(ctx, dataKey);
83
+ return _ProSelectableField.prototype.renderEditable.call(this, title, ctx, {
84
+ suffix: this.suffixEl
85
+ });
86
+ };
87
+ return ProCheckSelect;
88
+ }(index$1.ProSelectableField);
89
+ exports.ProCheckSelect = ProCheckSelect;
@@ -0,0 +1,61 @@
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 _inheritsLoose = require('@babel/runtime/helpers/inheritsLoose');
17
+ var React = require('react');
18
+ var CheckTreeSelect = require('@hi-ui/check-tree-select');
19
+ var schemaOptionInjector = require('@hi-ui/schema-option-injector');
20
+ var index = require('../../../extensible/selectable/index.js');
21
+ function _interopDefaultCompat(e) {
22
+ return e && _typeof(e) === 'object' && 'default' in e ? e : {
23
+ 'default': e
24
+ };
25
+ }
26
+ var _inheritsLoose__default = /*#__PURE__*/_interopDefaultCompat(_inheritsLoose);
27
+ var React__default = /*#__PURE__*/_interopDefaultCompat(React);
28
+ var CheckTreeSelect__default = /*#__PURE__*/_interopDefaultCompat(CheckTreeSelect);
29
+ var ProCheckTreeSelect = /*#__PURE__*/function (_ProSelectableField) {
30
+ _inheritsLoose__default["default"](ProCheckTreeSelect, _ProSelectableField);
31
+ function ProCheckTreeSelect() {
32
+ return _ProSelectableField.apply(this, arguments) || this;
33
+ }
34
+ var _proto = ProCheckTreeSelect.prototype;
35
+ _proto.render = function render(data, ctx) {
36
+ var title = this.getOptionTitle(ctx) || data;
37
+ return _ProSelectableField.prototype.render.call(this, title, ctx);
38
+ };
39
+ _proto.renderFormItem = function renderFormItem(_, ctx) {
40
+ var _a, _b;
41
+ var fieldProps = this.getFieldProps({
42
+ overlay: (_a = ctx.field.extra) === null || _a === void 0 ? void 0 : _a.popperProps
43
+ }, ctx);
44
+ // NOTE 实测 searchMode 不传时,无法开启搜索
45
+ // 考虑到是有接口搜索时,会按照关键字过滤,因此默认采用 filter 模式
46
+ if (fieldProps.request) fieldProps.searchMode = 'filter';
47
+ return /*#__PURE__*/React__default["default"].createElement(schemaOptionInjector.AsyncOptsDataInjector, Object.assign({}, fieldProps, {
48
+ renderCtx: ctx,
49
+ setSelectedRawOption: (_b = ctx.field.payload) === null || _b === void 0 ? void 0 : _b.setSelectedRawOption
50
+ }), /*#__PURE__*/React__default["default"].createElement(CheckTreeSelect__default["default"], null));
51
+ };
52
+ _proto.renderEditable = function renderEditable(data, ctx) {
53
+ var dataKey = ctx.dataKey;
54
+ var title = this.getOptionTitle(ctx, dataKey);
55
+ return _ProSelectableField.prototype.renderEditable.call(this, title, ctx, {
56
+ suffix: this.suffixEl
57
+ });
58
+ };
59
+ return ProCheckTreeSelect;
60
+ }(index.ProSelectableField);
61
+ exports.ProCheckTreeSelect = ProCheckTreeSelect;
@@ -0,0 +1,84 @@
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 _inheritsLoose = require('@babel/runtime/helpers/inheritsLoose');
17
+ var tslib = require('tslib');
18
+ var React = require('react');
19
+ var Checkbox = require('@hi-ui/checkbox');
20
+ var classname = require('@hi-ui/classname');
21
+ var schemaAutoGrid = require('@hi-ui/schema-auto-grid');
22
+ var schemaUtils = require('@hi-ui/schema-utils');
23
+ var base = require('../../../base.js');
24
+ function _interopDefaultCompat(e) {
25
+ return e && _typeof(e) === 'object' && 'default' in e ? e : {
26
+ 'default': e
27
+ };
28
+ }
29
+ var _inheritsLoose__default = /*#__PURE__*/_interopDefaultCompat(_inheritsLoose);
30
+ var React__default = /*#__PURE__*/_interopDefaultCompat(React);
31
+ var Checkbox__default = /*#__PURE__*/_interopDefaultCompat(Checkbox);
32
+ var ProCheckbox = /*#__PURE__*/function (_ProField) {
33
+ _inheritsLoose__default["default"](ProCheckbox, _ProField);
34
+ function ProCheckbox() {
35
+ return _ProField.apply(this, arguments) || this;
36
+ }
37
+ var _proto = ProCheckbox.prototype;
38
+ _proto.renderFormItem = function renderFormItem(_, ctx) {
39
+ var _a = this.getFieldProps({}, ctx),
40
+ gridProps = _a.grid,
41
+ fieldProps = tslib.__rest(_a, ["grid"]);
42
+ // gridProps 为 true 或者对象时,使用网格布局
43
+ if (gridProps) {
44
+ return this.renderGridFormItem(_, ctx, {
45
+ gridProps: gridProps,
46
+ fieldProps: fieldProps
47
+ });
48
+ }
49
+ return this.renderNormalFormItem(_, ctx, {
50
+ fieldProps: fieldProps
51
+ });
52
+ };
53
+ _proto.renderNormalFormItem = function renderNormalFormItem(_, ctx, extra) {
54
+ var fieldProps = extra.fieldProps;
55
+ return /*#__PURE__*/React__default["default"].createElement(Checkbox__default["default"].Group, Object.assign({}, fieldProps));
56
+ };
57
+ _proto.renderGridFormItem = function renderGridFormItem(_, ctx, extra) {
58
+ var _a, _b;
59
+ var _c = extra.fieldProps,
60
+ _c$data = _c.data,
61
+ data = _c$data === void 0 ? [] : _c$data,
62
+ restFieldProps = tslib.__rest(_c, ["data"]);
63
+ var value = (_a = ctx.formBinding.value) !== null && _a !== void 0 ? _a : [];
64
+ var gridProps = (_b = schemaUtils.getBoolConfig(extra.gridProps, {})) !== null && _b !== void 0 ? _b : {};
65
+ return /*#__PURE__*/React__default["default"].createElement(Checkbox__default["default"].Group, Object.assign({}, restFieldProps), /*#__PURE__*/React__default["default"].createElement(schemaAutoGrid.GridHelper, Object.assign({}, gridProps),
66
+ // fork from hiui Checkbox.Group
67
+ // https://github.com/XiaoMi/hiui/blob/0180764ef5deb334f70404cabd3d715708d41b06/packages/ui/checkbox/src/CheckboxGroup.tsx#L65-L76
68
+ data.map(function (_ref) {
69
+ var id = _ref.id,
70
+ disabled = _ref.disabled,
71
+ title = _ref.title;
72
+ return /*#__PURE__*/React__default["default"].createElement(Checkbox__default["default"], {
73
+ key: id,
74
+ value: id,
75
+ name: restFieldProps.name,
76
+ disabled: disabled,
77
+ checked: value.includes(id),
78
+ className: classname.getPrefixCls('checkbox-group') + "__item"
79
+ }, title);
80
+ })));
81
+ };
82
+ return ProCheckbox;
83
+ }(base.ProField);
84
+ exports.ProCheckbox = ProCheckbox;
@@ -0,0 +1,40 @@
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 _inheritsLoose = require('@babel/runtime/helpers/inheritsLoose');
17
+ var React = require('react');
18
+ var Counter = require('@hi-ui/counter');
19
+ var base = require('../../../base.js');
20
+ function _interopDefaultCompat(e) {
21
+ return e && _typeof(e) === 'object' && 'default' in e ? e : {
22
+ 'default': e
23
+ };
24
+ }
25
+ var _inheritsLoose__default = /*#__PURE__*/_interopDefaultCompat(_inheritsLoose);
26
+ var React__default = /*#__PURE__*/_interopDefaultCompat(React);
27
+ var Counter__default = /*#__PURE__*/_interopDefaultCompat(Counter);
28
+ var ProCounter = /*#__PURE__*/function (_ProField) {
29
+ _inheritsLoose__default["default"](ProCounter, _ProField);
30
+ function ProCounter() {
31
+ return _ProField.apply(this, arguments) || this;
32
+ }
33
+ var _proto = ProCounter.prototype;
34
+ _proto.renderFormItem = function renderFormItem(_, ctx) {
35
+ var fieldProps = this.getFieldProps({}, ctx);
36
+ return /*#__PURE__*/React__default["default"].createElement(Counter__default["default"], Object.assign({}, fieldProps));
37
+ };
38
+ return ProCounter;
39
+ }(base.ProField);
40
+ exports.ProCounter = ProCounter;
@@ -0,0 +1,44 @@
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 _inheritsLoose = require('@babel/runtime/helpers/inheritsLoose');
17
+ var React = require('react');
18
+ var Radio = require('@hi-ui/radio');
19
+ var schemaInterruptInjector = require('@hi-ui/schema-interrupt-injector');
20
+ var base = require('../../../base.js');
21
+ function _interopDefaultCompat(e) {
22
+ return e && _typeof(e) === 'object' && 'default' in e ? e : {
23
+ 'default': e
24
+ };
25
+ }
26
+ var _inheritsLoose__default = /*#__PURE__*/_interopDefaultCompat(_inheritsLoose);
27
+ var React__default = /*#__PURE__*/_interopDefaultCompat(React);
28
+ var Radio__default = /*#__PURE__*/_interopDefaultCompat(Radio);
29
+ var ProRadio = /*#__PURE__*/function (_ProField) {
30
+ _inheritsLoose__default["default"](ProRadio, _ProField);
31
+ function ProRadio() {
32
+ return _ProField.apply(this, arguments) || this;
33
+ }
34
+ var _proto = ProRadio.prototype;
35
+ _proto.renderFormItem = function renderFormItem(_, ctx) {
36
+ var _a;
37
+ var fieldProps = this.getFieldProps({}, ctx);
38
+ return /*#__PURE__*/React__default["default"].createElement(schemaInterruptInjector.InterruptInjector, {
39
+ config: (_a = ctx.field.control) === null || _a === void 0 ? void 0 : _a.interrupt
40
+ }, /*#__PURE__*/React__default["default"].createElement(Radio__default["default"].Group, Object.assign({}, fieldProps)));
41
+ };
42
+ return ProRadio;
43
+ }(base.ProField);
44
+ exports.ProRadio = ProRadio;