@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,32 @@
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 Upload = require('@hi-ui/upload');
18
+ var schemaUtils = require('@hi-ui/schema-utils');
19
+ var index = require('../../../components/upload-bridge/index.js');
20
+ function _interopDefaultCompat(e) {
21
+ return e && _typeof(e) === 'object' && 'default' in e ? e : {
22
+ 'default': e
23
+ };
24
+ }
25
+ var React__default = /*#__PURE__*/_interopDefaultCompat(React);
26
+ function ImageUpload(props) {
27
+ var finalProps = schemaUtils.mergeProps({
28
+ accept: '.png,.jpg,.jpeg,.gif,.webp,.svg'
29
+ }, props);
30
+ return /*#__PURE__*/React__default["default"].createElement(index.UploadBridge, Object.assign({}, finalProps), /*#__PURE__*/React__default["default"].createElement(Upload.PictureUpload, null));
31
+ }
32
+ exports.ImageUpload = ImageUpload;
@@ -0,0 +1,96 @@
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 reactRouterDom = require('react-router-dom');
19
+ var lodashEs = require('lodash-es');
20
+ var EllipsisTooltip = require('@hi-ui/ellipsis-tooltip');
21
+ var schemaUtils = require('@hi-ui/schema-utils');
22
+ var base = require('../../../base.js');
23
+ var index = require('../../../components/span/index.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 EllipsisTooltip__default = /*#__PURE__*/_interopDefaultCompat(EllipsisTooltip);
32
+ var ProLink = /*#__PURE__*/function (_ProField) {
33
+ _inheritsLoose__default["default"](ProLink, _ProField);
34
+ function ProLink() {
35
+ return _ProField.apply(this, arguments) || this;
36
+ }
37
+ var _proto = ProLink.prototype;
38
+ _proto.render = function render(data, ctx) {
39
+ if (!data) return this.dftDom;
40
+ this.renderCtx = ctx;
41
+ var fieldProps = this.getFieldProps({
42
+ linkField: ''
43
+ }, ctx);
44
+ this.fieldProps = fieldProps;
45
+ var _fieldProps$isHref = fieldProps.isHref,
46
+ isHref = _fieldProps$isHref === void 0 ? true : _fieldProps$isHref;
47
+ if (isHref) return this.renderHref(data);else return this.renderLink(data);
48
+ }
49
+ /**
50
+ * renderHref
51
+ * @desc 是指固定的链接地址,直接跳转出系统 */;
52
+ _proto.renderHref = function renderHref(href) {
53
+ var to = this.getGoTo(href);
54
+ return /*#__PURE__*/React__default["default"].createElement(index.ReadonlyWrapper, null, /*#__PURE__*/React__default["default"].createElement("a", {
55
+ href: to,
56
+ target: "_blank",
57
+ rel: "noreferrer noopener",
58
+ // TODO color 放这里不是很好,待优化
59
+ style: {
60
+ color: '#237ffa',
61
+ textDecoration: 'underline'
62
+ }
63
+ }, /*#__PURE__*/React__default["default"].createElement(EllipsisTooltip__default["default"], null, href)));
64
+ }
65
+ /**
66
+ * renderLink
67
+ * @desc 是指链接地址是动态的,需要根据数据进行拼接
68
+ * @desc 通常用于链接到系统其他页面 */;
69
+ _proto.renderLink = function renderLink(data) {
70
+ var _a;
71
+ var rowData = this.renderCtx.rowData;
72
+ var to = this.getGoTo(data);
73
+ var state = schemaUtils.mergeProps(rowData, (_a = this.fieldProps) === null || _a === void 0 ? void 0 : _a.extraLinkState);
74
+ return /*#__PURE__*/React__default["default"].createElement(index.ReadonlyWrapper, null, /*#__PURE__*/React__default["default"].createElement(reactRouterDom.Link, {
75
+ to: to,
76
+ state: state,
77
+ style: {
78
+ color: '#237ffa'
79
+ }
80
+ }, /*#__PURE__*/React__default["default"].createElement(EllipsisTooltip__default["default"], null, data)));
81
+ };
82
+ _proto.getGoTo = function getGoTo(data) {
83
+ var rowData = this.renderCtx.rowData;
84
+ var _this$fieldProps = this.fieldProps,
85
+ linkField = _this$fieldProps.linkField,
86
+ customLink = _this$fieldProps.customLink;
87
+ // customLink 优先级最高
88
+ if (customLink) return customLink(data, this.renderCtx);
89
+ // linkField 存在,则使用 linkField 拼接
90
+ if (linkField) return lodashEs.get(rowData, linkField);
91
+ // 最后使用本字段的值
92
+ return data;
93
+ };
94
+ return ProLink;
95
+ }(base.ProField);
96
+ exports.ProLink = ProLink;
@@ -0,0 +1,106 @@
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 lodashEs = require('lodash-es');
19
+ var NumberInput = require('@hi-ui/number-input');
20
+ var EllipsisTooltip = require('@hi-ui/ellipsis-tooltip');
21
+ var schemaUtils = require('@hi-ui/schema-utils');
22
+ var base = require('../../../base.js');
23
+ var index = require('../../../components/span/index.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 NumberInput__default = /*#__PURE__*/_interopDefaultCompat(NumberInput);
32
+ var EllipsisTooltip__default = /*#__PURE__*/_interopDefaultCompat(EllipsisTooltip);
33
+ var ProNumber = /*#__PURE__*/function (_ProField) {
34
+ _inheritsLoose__default["default"](ProNumber, _ProField);
35
+ function ProNumber() {
36
+ return _ProField.apply(this, arguments) || this;
37
+ }
38
+ var _proto = ProNumber.prototype;
39
+ _proto._getFieldProps = function _getFieldProps(ctx) {
40
+ var fieldProps = _ProField.prototype.getFieldProps.call(this, {
41
+ placeholder: this.getDftPlaceholder(ctx)
42
+ }, ctx);
43
+ // 增加精度处理逻辑
44
+ // 如果精度存在,且没有 formatter 方法,则增加精度处理逻辑
45
+ if (!lodashEs.isNil(fieldProps.precision) && lodashEs.isNil(fieldProps.formatter)) {
46
+ fieldProps.formatter = function ProNumberPrecisionFormatter(value) {
47
+ return schemaUtils.NumberUtil.round(value, fieldProps.precision);
48
+ };
49
+ }
50
+ return fieldProps;
51
+ };
52
+ _proto.render = function render(data, ctx) {
53
+ // 不是数字
54
+ if (typeof data !== 'number') {
55
+ /** 且不存在 */if (!data) return this.dftDom;
56
+ }
57
+ // 或者是NaN
58
+ else if (isNaN(data)) return this.dftDom;
59
+ var num = Number(data);
60
+ if (isNaN(num)) return this.dftDom;
61
+ var formatted = this.toFormatted(num, ctx);
62
+ return /*#__PURE__*/React__default["default"].createElement(index.ReadonlyWrapper, null, /*#__PURE__*/React__default["default"].createElement(EllipsisTooltip__default["default"], null, formatted));
63
+ };
64
+ _proto.renderFormItem = function renderFormItem(_, ctx) {
65
+ var fieldProps = this._getFieldProps(ctx);
66
+ return /*#__PURE__*/React__default["default"].createElement(NumberInput__default["default"], Object.assign({}, fieldProps));
67
+ };
68
+ _proto.getEditablePlaceholder = function getEditablePlaceholder(data) {
69
+ // 记录:返回undefined,会被转换为0,null则不会
70
+ if (lodashEs.isNil(data)) return null;
71
+ if (typeof data === 'number') return isNaN(data) ? null : data;
72
+ var num = Number(data);
73
+ return isNaN(num) ? null : num;
74
+ };
75
+ _proto.renderEditable = function renderEditable(data, ctx) {
76
+ var _a;
77
+ var fieldProps = this._getFieldProps(ctx);
78
+ return /*#__PURE__*/React__default["default"].createElement(NumberInput__default["default"], {
79
+ value: this.getEditablePlaceholder(data),
80
+ disabled: (_a = ctx.field.control) === null || _a === void 0 ? void 0 : _a.disabled,
81
+ onDoubleClick: ctx.onActivate,
82
+ onFocus: ctx.onActivate,
83
+ placeholder: fieldProps.placeholder,
84
+ formatter: fieldProps.formatter,
85
+ min: fieldProps.min,
86
+ max: fieldProps.max,
87
+ step: fieldProps.step,
88
+ onChange: ctx.onActivate
89
+ });
90
+ }
91
+ // 可能之后还有更复杂的格式化逻辑
92
+ ;
93
+
94
+ _proto.toFormatted = function toFormatted(data, ctx) {
95
+ var fieldProps = this._getFieldProps(ctx);
96
+ // 123456789 => 123,456,789
97
+ // 123.456789 => 123.4567 // precision: 4
98
+ return data.toLocaleString('zh-Hans', {
99
+ // 也是四舍五入进位
100
+ minimumFractionDigits: fieldProps.precision,
101
+ maximumFractionDigits: fieldProps.precision
102
+ });
103
+ };
104
+ return ProNumber;
105
+ }(base.ProField);
106
+ exports.ProNumber = ProNumber;
@@ -0,0 +1,164 @@
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 classname = require('@hi-ui/classname');
19
+ var lodashEs = require('lodash-es');
20
+ var tag = require('@hi-ui/tag');
21
+ var base = require('../../../base.js');
22
+ var index = require('../../../components/span/index.js');
23
+ require('./index.scss.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
+
32
+ // IPD的标签颜色规范,先记录在这里吧
33
+ // https://www.figma.com/design/R7gUHJaKDPSAaWojTrNUe2/%E7%A0%94%E4%BA%A7%E4%BE%9B%E4%B8%9A%E5%8A%A1%E8%AE%BE%E8%AE%A1%E8%A7%84%E8%8C%83-IPD?node-id=2042-50477&node-type=frame&t=uCEcQbmB9uwVVUIQ-0
34
+ var colorPreset = {
35
+ blue: {
36
+ back: '#EDF7FE',
37
+ fore: '#0744AD'
38
+ },
39
+ yellow: {
40
+ back: '#FEFCE9',
41
+ fore: '#875100'
42
+ },
43
+ green: {
44
+ back: '#EEFEF2',
45
+ fore: '#007D3E'
46
+ },
47
+ red: {
48
+ back: '#FEF1EE',
49
+ fore: '#B32D36'
50
+ },
51
+ orange: {
52
+ back: '#FEF5EE',
53
+ fore: '#B23E1B'
54
+ },
55
+ purple: {
56
+ back: '#F5EEFE',
57
+ fore: '#533DAD'
58
+ },
59
+ /** 蓝绿色 */cyan: {
60
+ back: '#ECFEFC',
61
+ fore: '#0C737A'
62
+ },
63
+ /** 天蓝色 */skyblue: {
64
+ back: '#ECFCFE',
65
+ fore: '#006BB3'
66
+ },
67
+ /** 深紫色 */darkPurple: {
68
+ back: '#EEF2FE',
69
+ fore: '#363AB3'
70
+ },
71
+ /** 蓝灰色 */blueGray: {
72
+ back: '#EEF7FE',
73
+ fore: '#3C5485'
74
+ },
75
+ /** 中灰色 */midGray: {
76
+ back: '#F2F4F7',
77
+ fore: '#1F2733'
78
+ }
79
+ };
80
+ var ColorEnumPreset = Object.keys(colorPreset);
81
+ function isInvalidTagData(data) {
82
+ if (lodashEs.isNil(data)) return true;
83
+ if (data === '') return true;
84
+ return false;
85
+ }
86
+ var ProTag = /*#__PURE__*/function (_ProField) {
87
+ _inheritsLoose__default["default"](ProTag, _ProField);
88
+ function ProTag() {
89
+ return _ProField.apply(this, arguments) || this;
90
+ }
91
+ var _proto = ProTag.prototype;
92
+ _proto.render = function render(data, ctx) {
93
+ if (isInvalidTagData(data)) return this.dftDom;
94
+ // 统一转换为数组处理
95
+ var dataList = (Array.isArray(data) ? data : [data]).filter(function (el) {
96
+ return !isInvalidTagData(el);
97
+ });
98
+ if (dataList.length === 0) return this.dftDom;
99
+ return this.renderTag(dataList, ctx);
100
+ };
101
+ _proto.renderTag = function renderTag(dataArray, ctx) {
102
+ var _this = this;
103
+ var fieldProps = this.getFieldProps({}, ctx);
104
+ var className = classname.cx(fieldProps.className, {
105
+ 'pro-tag--bordered': fieldProps.bordered
106
+ });
107
+ var tagProps = this.getTagProps(fieldProps);
108
+ return /*#__PURE__*/React__default["default"].createElement(index.ReadonlyWrapper, {
109
+ style: {
110
+ gap: 4
111
+ }
112
+ }, dataArray.map(function (data, index) {
113
+ var _a;
114
+ var _preset = (_a = fieldProps.colorPreset) === null || _a === void 0 ? void 0 : _a[data];
115
+ var text = _this.getText(data, fieldProps.textMap);
116
+ // 没有预设颜色,则显示默认Tag样式
117
+ if (!_preset) {
118
+ return /*#__PURE__*/React__default["default"].createElement("span", {
119
+ key: index
120
+ }, /*#__PURE__*/React__default["default"].createElement(tag.Tag, Object.assign({
121
+ type: "default"
122
+ }, tagProps, {
123
+ className: className
124
+ }), text));
125
+ }
126
+ // 内置类型
127
+ var type = _this.getType(_preset);
128
+ // 自定义颜色(文字色和背景色)
129
+ var color = _this.getColor(_preset);
130
+ return /*#__PURE__*/React__default["default"].createElement("span", {
131
+ key: index
132
+ }, /*#__PURE__*/React__default["default"].createElement(tag.Tag, Object.assign({
133
+ type: type,
134
+ color: color === null || color === void 0 ? void 0 : color.fore,
135
+ background: color === null || color === void 0 ? void 0 : color.back
136
+ }, tagProps, {
137
+ className: className
138
+ }), text));
139
+ }));
140
+ };
141
+ _proto.getTagProps = function getTagProps(props) {
142
+ return lodashEs.omit(props, ['bordered', 'colorPreset']);
143
+ };
144
+ _proto.getType = function getType(preset) {
145
+ if (typeof preset !== 'string') return undefined;
146
+ if (preset in colorPreset) return undefined;
147
+ return preset;
148
+ };
149
+ _proto.getColor = function getColor(preset) {
150
+ if (typeof preset !== 'string') return preset;
151
+ if (preset in colorPreset) return colorPreset[preset];
152
+ return undefined;
153
+ };
154
+ _proto.getText = function getText(data, textMap) {
155
+ var _a, _b;
156
+ if (!textMap) return data;
157
+ if (textMap instanceof Map) return (_a = textMap.get(data)) !== null && _a !== void 0 ? _a : data;
158
+ return (_b = textMap[data]) !== null && _b !== void 0 ? _b : data;
159
+ };
160
+ return ProTag;
161
+ }(base.ProField);
162
+ exports.ColorEnumPreset = ColorEnumPreset;
163
+ exports.ProTag = ProTag;
164
+ exports.colorPreset = colorPreset;
@@ -0,0 +1,18 @@
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 css_248z = ".pro-tag--bordered {border: 0.5px solid #dfe2e8;}";
16
+ var __styleInject__ = require('@hi-ui/style-inject')["default"];
17
+ __styleInject__(css_248z);
18
+ exports["default"] = css_248z;
@@ -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 lodashEs = require('lodash-es');
19
+ var Input = require('@hi-ui/input');
20
+ var dumbWrapper = require('@hi-ui/dumb-wrapper');
21
+ var base = require('../../../base.js');
22
+ function _interopDefaultCompat(e) {
23
+ return e && _typeof(e) === 'object' && 'default' in e ? e : {
24
+ 'default': e
25
+ };
26
+ }
27
+ var _inheritsLoose__default = /*#__PURE__*/_interopDefaultCompat(_inheritsLoose);
28
+ var React__default = /*#__PURE__*/_interopDefaultCompat(React);
29
+ var DumbInput = dumbWrapper.mapToDumb(Input.Input, {
30
+ getChangedValue: function getChangedValue(evt, value) {
31
+ return value;
32
+ }
33
+ });
34
+ var ProText = /*#__PURE__*/function (_ProField) {
35
+ _inheritsLoose__default["default"](ProText, _ProField);
36
+ function ProText() {
37
+ return _ProField.apply(this, arguments) || this;
38
+ }
39
+ var _proto = ProText.prototype;
40
+ _proto.render = function render(data, ctx) {
41
+ if (!data) return this.dftDom;
42
+ if (typeof data === 'string') {
43
+ return this.renderString(data, ctx);
44
+ }
45
+ try {
46
+ return this.renderString(String(data), ctx);
47
+ } catch (error) {
48
+ return this.dftDom;
49
+ }
50
+ };
51
+ _proto.renderFormItem = function renderFormItem(_, ctx) {
52
+ var fieldProps = this.getFieldProps({
53
+ placeholder: this.getDftPlaceholder(ctx)
54
+ }, ctx);
55
+ var pureInputProps = lodashEs.omit(fieldProps, ['numberOfLines', 'tooltipClassName', 'useRawInput']);
56
+ return fieldProps.useRawInput ? ( /*#__PURE__*/React__default["default"].createElement(Input.Input, Object.assign({}, pureInputProps))) : ( /*#__PURE__*/React__default["default"].createElement(DumbInput, Object.assign({}, pureInputProps)));
57
+ };
58
+ return ProText;
59
+ }(base.ProField);
60
+ exports.DumbInput = DumbInput;
61
+ exports.ProText = ProText;
@@ -0,0 +1,145 @@
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 = require('./ctx.js');
18
+ var index = require('./fields/basic/cascader/index.js');
19
+ var index$1 = require('./fields/basic/check-cascader/index.js');
20
+ var index$2 = require('./fields/basic/check-select/index.js');
21
+ var index$3 = require('./fields/basic/check-tree-select/index.js');
22
+ var index$4 = require('./fields/basic/checkbox/index.js');
23
+ var index$5 = require('./fields/basic/counter/index.js');
24
+ var index$6 = require('./fields/semantic/date/index.js');
25
+ var index$7 = require('./fields/semantic/image/index.js');
26
+ var index$8 = require('./fields/semantic/link/index.js');
27
+ var index$9 = require('./fields/semantic/number/index.js');
28
+ var index$a = require('./fields/basic/radio/index.js');
29
+ var index$b = require('./fields/basic/rating/index.js');
30
+ var index$c = require('./fields/basic/select/index.js');
31
+ var index$d = require('./fields/basic/slider/index.js');
32
+ var index$e = require('./fields/basic/switch/index.js');
33
+ var index$f = require('./fields/semantic/tag/index.js');
34
+ var index$g = require('./fields/semantic/text/index.js');
35
+ var index$h = require('./fields/basic/textarea/index.js');
36
+ var index$i = require('./fields/basic/time-picker/index.js');
37
+ var index$j = require('./fields/basic/tree-select/index.js');
38
+ var index$k = require('./fields/basic/upload/index.js');
39
+ var index$l = require('./fields/enhance/number-range/index.js');
40
+ var base = require('./base.js');
41
+ var index$m = require('./components/span/index.js');
42
+ var utils = require('./utils.js');
43
+ var index$n = require('./components/image-preview/index.js');
44
+ var index$o = require('./components/upload-bridge/index.js');
45
+ var index$p = require('./editable/index.js');
46
+ var label = require('./utils/label.js');
47
+ var batchDepUpdate = require('./utils/batch-dep-update.js');
48
+ var formBinding = require('./utils/form-binding.js');
49
+ var useReadonly = require('./editable/use-readonly.js');
50
+ var ctx$1 = require('./editable/ctx.js');
51
+ var simple = require('./editable/simple.js');
52
+ var readonly = require('./editable/readonly.js');
53
+ var editable = require('./editable/editable.js');
54
+ function _interopDefaultCompat(e) {
55
+ return e && _typeof(e) === 'object' && 'default' in e ? e : {
56
+ 'default': e
57
+ };
58
+ }
59
+ var React__default = /*#__PURE__*/_interopDefaultCompat(React);
60
+
61
+ // export { ProUser, type ProUserProps } from './enhance/user'
62
+ var ProFieldMap = {
63
+ cascader: index.ProCascader,
64
+ 'check-cascader': index$1.ProCheckCascader,
65
+ 'check-select': index$2.ProCheckSelect,
66
+ 'check-tree-select': index$3.ProCheckTreeSelect,
67
+ checkbox: index$4.ProCheckbox,
68
+ counter: index$5.ProCounter,
69
+ date: index$6.ProDate,
70
+ image: index$7.ProImage,
71
+ link: index$8.ProLink,
72
+ number: index$9.ProNumber,
73
+ radio: index$a.ProRadio,
74
+ rating: index$b.ProRating,
75
+ select: index$c.ProSelect,
76
+ slider: index$d.ProSlider,
77
+ "switch": index$e.ProSwitch,
78
+ tag: index$f.ProTag,
79
+ text: index$g.ProText,
80
+ textarea: index$h.ProTextArea,
81
+ 'time-picker': index$i.ProTimePicker,
82
+ 'tree-select': index$j.ProTreeSelect,
83
+ upload: index$k.ProUpload,
84
+ // 'edit-table': ProEditTable,
85
+ 'number-range': index$l.ProNumberRange
86
+ // user: ProUser,
87
+ };
88
+
89
+ function BuiltinFieldMapProvider(props) {
90
+ return /*#__PURE__*/React__default["default"].createElement(ctx.FieldMapProvider, {
91
+ fields: ProFieldMap
92
+ }, props.children);
93
+ }
94
+ exports.FieldMapProvider = ctx.FieldMapProvider;
95
+ exports.matchFieldClass = ctx.matchFieldClass;
96
+ exports.useFieldMap = ctx.useFieldMap;
97
+ exports.useMatchFieldClass = ctx.useMatchFieldClass;
98
+ exports.ProCascader = index.ProCascader;
99
+ exports.ProCheckCascader = index$1.ProCheckCascader;
100
+ exports.ProCheckSelect = index$2.ProCheckSelect;
101
+ exports.ProCheckTreeSelect = index$3.ProCheckTreeSelect;
102
+ exports.ProCheckbox = index$4.ProCheckbox;
103
+ exports.ProCounter = index$5.ProCounter;
104
+ exports.ProDate = index$6.ProDate;
105
+ exports.ProImage = index$7.ProImage;
106
+ exports.ProLink = index$8.ProLink;
107
+ exports.ProNumber = index$9.ProNumber;
108
+ exports.ProRadio = index$a.ProRadio;
109
+ exports.ProRating = index$b.ProRating;
110
+ exports.ProSelect = index$c.ProSelect;
111
+ exports.ProSlider = index$d.ProSlider;
112
+ exports.ProSwitch = index$e.ProSwitch;
113
+ exports.ColorEnumPreset = index$f.ColorEnumPreset;
114
+ exports.ProTag = index$f.ProTag;
115
+ exports.colorPreset = index$f.colorPreset;
116
+ exports.DumbInput = index$g.DumbInput;
117
+ exports.ProText = index$g.ProText;
118
+ exports.ProTextArea = index$h.ProTextArea;
119
+ exports.ProTimePicker = index$i.ProTimePicker;
120
+ exports.ProTreeSelect = index$j.ProTreeSelect;
121
+ exports.ProUpload = index$k.ProUpload;
122
+ exports.ProNumberRange = index$l.ProNumberRange;
123
+ exports.ProField = base.ProField;
124
+ exports.ReadonlyWrapper = index$m.ReadonlyWrapper;
125
+ exports.Span = index$m.ReadonlyWrapper;
126
+ exports.getFieldProps = utils.getFieldProps;
127
+ exports.getFormItemProps = utils.getFormItemProps;
128
+ exports.getWrapperProps = utils.getWrapperProps;
129
+ exports.ImagePreview = index$n.ImagePreview;
130
+ exports.UploadBridge = index$o.UploadBridge;
131
+ exports.EditableField = index$p.EditableField;
132
+ exports.getLabel = label.getLabel;
133
+ exports.BatchDepUpdate = batchDepUpdate.BatchDepUpdate;
134
+ exports.wrapFormBinding = formBinding.wrapFormBinding;
135
+ exports.isReadonly = useReadonly.isReadonly;
136
+ exports.runDynamicEditable = useReadonly.runDynamicEditable;
137
+ exports.useReadonly = useReadonly.useReadonly;
138
+ exports.EditableControlProvider = ctx$1.EditableControlProvider;
139
+ exports.useEditableControlCtx = ctx$1.useEditableControlCtx;
140
+ exports.SimpleCase = simple.SimpleCase;
141
+ exports.isSimpleCase = simple.isSimpleCase;
142
+ exports.ReadonlyCase = readonly.ReadonlyCase;
143
+ exports.EditableCase = editable.EditableCase;
144
+ exports.BuiltinFieldMapProvider = BuiltinFieldMapProvider;
145
+ exports.ProFieldMap = ProFieldMap;
@@ -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 lodashEs = require('lodash-es');
17
+ var BatchDepUpdate = /*#__PURE__*/function () {
18
+ function BatchDepUpdate() {}
19
+ BatchDepUpdate.update = function update(values) {
20
+ return {
21
+ _IS_BATCH_UPDATE_: true,
22
+ values: values
23
+ };
24
+ };
25
+ BatchDepUpdate.isBatch = function isBatch(value) {
26
+ return _typeof(value) === 'object' && !!value && '_IS_BATCH_UPDATE_' in value && 'values' in value;
27
+ }
28
+ // key 可能会是普通字符串或路径数组
29
+ ;
30
+
31
+ BatchDepUpdate.getValues = function getValues(key, value) {
32
+ if (this.isBatch(value)) return value.values;else {
33
+ var _ref;
34
+ // 仅在明确传入路径数组时,才使用 set 方法
35
+ if (Array.isArray(key)) return lodashEs.set({}, key, value);else return _ref = {}, _ref[key] = value, _ref;
36
+ }
37
+ };
38
+ return BatchDepUpdate;
39
+ }();
40
+ exports.BatchDepUpdate = BatchDepUpdate;