@nocobase/client 0.7.2-alpha.5 → 0.7.3-alpha.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 (93) hide show
  1. package/es/block-provider/FormBlockProvider.js +8 -3
  2. package/es/block-provider/TableSelectorProvider.js +41 -13
  3. package/es/block-provider/hooks/index.d.ts +6 -0
  4. package/es/block-provider/hooks/index.js +145 -63
  5. package/es/collection-manager/CollectionField.js +5 -3
  6. package/es/collection-manager/interfaces/input.js +103 -0
  7. package/es/collection-manager/interfaces/integer.js +63 -0
  8. package/es/collection-manager/interfaces/markdown.js +34 -0
  9. package/es/collection-manager/interfaces/number.js +55 -0
  10. package/es/collection-manager/interfaces/password.js +35 -1
  11. package/es/collection-manager/interfaces/percent.js +97 -0
  12. package/es/collection-manager/interfaces/richText.js +34 -0
  13. package/es/collection-manager/interfaces/textarea.js +34 -0
  14. package/es/file-manager/FileStorageShortcut.js +2 -2
  15. package/es/locale/en_US.d.ts +5 -0
  16. package/es/locale/en_US.js +6 -1
  17. package/es/locale/zh_CN.d.ts +23 -0
  18. package/es/locale/zh_CN.js +24 -1
  19. package/es/plugin-manager/PluginManager.js +8 -4
  20. package/es/schema-component/antd/action/Action.Modal.js +1 -1
  21. package/es/schema-component/antd/form-item/FormItem.js +156 -3
  22. package/es/schema-component/antd/grid/Grid.js +72 -6
  23. package/es/schema-component/antd/input-number/InputNumber.d.ts +1 -5
  24. package/es/schema-component/antd/input-number/InputNumber.js +25 -1
  25. package/es/schema-component/antd/kanban/Kanban.Card.Designer.js +20 -14
  26. package/es/schema-component/antd/menu/Menu.js +6 -3
  27. package/es/schema-component/antd/percent/Percent.js +2 -2
  28. package/es/schema-component/antd/record-picker/InputRecordPicker.js +27 -13
  29. package/es/schema-component/antd/record-picker/ReadPrettyRecordPicker.js +4 -2
  30. package/es/schema-component/antd/table/Table.Array.js +2 -2
  31. package/es/schema-component/antd/table/Table.Void.js +11 -1
  32. package/es/schema-component/antd/table-v2/Table.js +1 -4
  33. package/es/schema-component/antd/time-picker/ReadPretty.js +11 -5
  34. package/es/schema-component/hooks/useDesignable.js +21 -21
  35. package/es/schema-component/hooks/useProps.js +1 -1
  36. package/es/schema-initializer/buttons/FormItemInitializers.js +14 -3
  37. package/es/schema-initializer/buttons/ReadPrettyFormActionInitializers.js +8 -0
  38. package/es/schema-initializer/buttons/ReadPrettyFormItemInitializers.js +14 -3
  39. package/es/schema-initializer/buttons/RecordBlockInitializers.js +32 -3
  40. package/es/schema-initializer/buttons/TableActionInitializers.js +11 -0
  41. package/es/schema-initializer/components/assigned-field/AssignedField.d.ts +4 -0
  42. package/es/schema-initializer/components/assigned-field/AssignedField.js +253 -69
  43. package/es/schema-initializer/items/index.d.ts +2 -0
  44. package/es/schema-initializer/items/index.js +46 -1
  45. package/es/schema-initializer/utils.js +6 -2
  46. package/es/system-settings/SystemSettingsShortcut.js +35 -12
  47. package/lib/block-provider/FormBlockProvider.js +7 -2
  48. package/lib/block-provider/TableSelectorProvider.js +41 -13
  49. package/lib/block-provider/hooks/index.d.ts +6 -0
  50. package/lib/block-provider/hooks/index.js +154 -65
  51. package/lib/collection-manager/CollectionField.js +5 -2
  52. package/lib/collection-manager/interfaces/input.js +104 -0
  53. package/lib/collection-manager/interfaces/integer.js +65 -0
  54. package/lib/collection-manager/interfaces/markdown.js +35 -0
  55. package/lib/collection-manager/interfaces/number.js +56 -0
  56. package/lib/collection-manager/interfaces/password.js +36 -1
  57. package/lib/collection-manager/interfaces/percent.js +99 -0
  58. package/lib/collection-manager/interfaces/richText.js +35 -0
  59. package/lib/collection-manager/interfaces/textarea.js +35 -0
  60. package/lib/file-manager/FileStorageShortcut.js +1 -1
  61. package/lib/locale/en_US.d.ts +5 -0
  62. package/lib/locale/en_US.js +6 -1
  63. package/lib/locale/zh_CN.d.ts +23 -0
  64. package/lib/locale/zh_CN.js +24 -1
  65. package/lib/plugin-manager/PluginManager.js +8 -3
  66. package/lib/schema-component/antd/action/Action.Modal.js +1 -1
  67. package/lib/schema-component/antd/form-item/FormItem.js +165 -5
  68. package/lib/schema-component/antd/grid/Grid.js +69 -3
  69. package/lib/schema-component/antd/input-number/InputNumber.d.ts +1 -5
  70. package/lib/schema-component/antd/input-number/InputNumber.js +29 -2
  71. package/lib/schema-component/antd/kanban/Kanban.Card.Designer.js +20 -14
  72. package/lib/schema-component/antd/menu/Menu.js +6 -3
  73. package/lib/schema-component/antd/percent/Percent.js +2 -2
  74. package/lib/schema-component/antd/record-picker/InputRecordPicker.js +27 -12
  75. package/lib/schema-component/antd/record-picker/ReadPrettyRecordPicker.js +3 -1
  76. package/lib/schema-component/antd/table/Table.Array.js +2 -2
  77. package/lib/schema-component/antd/table/Table.Void.js +11 -1
  78. package/lib/schema-component/antd/table-v2/Table.js +1 -4
  79. package/lib/schema-component/antd/time-picker/ReadPretty.js +10 -3
  80. package/lib/schema-component/hooks/useDesignable.js +21 -21
  81. package/lib/schema-component/hooks/useProps.js +1 -1
  82. package/lib/schema-initializer/buttons/FormItemInitializers.js +14 -2
  83. package/lib/schema-initializer/buttons/ReadPrettyFormActionInitializers.js +8 -0
  84. package/lib/schema-initializer/buttons/ReadPrettyFormItemInitializers.js +14 -2
  85. package/lib/schema-initializer/buttons/RecordBlockInitializers.js +34 -4
  86. package/lib/schema-initializer/buttons/TableActionInitializers.js +11 -0
  87. package/lib/schema-initializer/components/assigned-field/AssignedField.d.ts +4 -0
  88. package/lib/schema-initializer/components/assigned-field/AssignedField.js +254 -66
  89. package/lib/schema-initializer/items/index.d.ts +2 -0
  90. package/lib/schema-initializer/items/index.js +52 -1
  91. package/lib/schema-initializer/utils.js +6 -2
  92. package/lib/system-settings/SystemSettingsShortcut.js +37 -13
  93. package/package.json +6 -4
@@ -98,6 +98,7 @@ declare const _default: {
98
98
  Update: string;
99
99
  View: string;
100
100
  "View record": string;
101
+ Refresh: string;
101
102
  "Data changes": string;
102
103
  "Field name": string;
103
104
  "Before change": string;
@@ -232,6 +233,24 @@ declare const _default: {
232
233
  "Label field": string;
233
234
  "Default is the ID field": string;
234
235
  "Set default sorting rules": string;
236
+ "Set validation rules": string;
237
+ "Max length": string;
238
+ "Min length": string;
239
+ Maximum: string;
240
+ Minimum: string;
241
+ "Max length must greater than min length": string;
242
+ "Min length must less than max length": string;
243
+ "Maximum must greater than minimum": string;
244
+ "Minimum must less than maximum": string;
245
+ "Validation rule": string;
246
+ "Add validation rule": string;
247
+ Format: string;
248
+ "Regular expression": string;
249
+ "Error message": string;
250
+ Length: string;
251
+ "The field value cannot be greater than ": string;
252
+ "The field value cannot be less than ": string;
253
+ "The field value is not an integer number": string;
235
254
  "is before": string;
236
255
  "is after": string;
237
256
  "is on or after": string;
@@ -539,6 +558,7 @@ declare const _default: {
539
558
  'Dynamic value': string;
540
559
  'Current user': string;
541
560
  'Current record': string;
561
+ 'Current time': string;
542
562
  'Popup close method': string;
543
563
  'Automatic close': string;
544
564
  'Manually close': string;
@@ -573,5 +593,8 @@ declare const _default: {
573
593
  "One to one (belongs to)": string;
574
594
  "Use the same time zone (GMT) for all users": string;
575
595
  "Province/city/area name": string;
596
+ "Enabled languages": string;
597
+ "View all plugins": string;
598
+ Print: string;
576
599
  };
577
600
  export default _default;
@@ -104,6 +104,7 @@ var _default = {
104
104
  "Update": "更新",
105
105
  "View": "查看",
106
106
  "View record": "查看数据",
107
+ "Refresh": "刷新",
107
108
  "Data changes": "数据变更",
108
109
  "Field name": "字段标识",
109
110
  "Before change": "变更前",
@@ -238,6 +239,24 @@ var _default = {
238
239
  "Label field": "标签字段",
239
240
  "Default is the ID field": "默认为 ID 字段",
240
241
  "Set default sorting rules": "设置排序规则",
242
+ "Set validation rules": "设置验证规则",
243
+ "Max length": "最大长度",
244
+ "Min length": "最小长度",
245
+ "Maximum": "最大值",
246
+ "Minimum": "最小值",
247
+ "Max length must greater than min length": "最大长度必须大于最小长度",
248
+ "Min length must less than max length": "最小长度必须小于最大长度",
249
+ "Maximum must greater than minimum": "最大值必须大于最小值",
250
+ "Minimum must less than maximum": "最小值必须小于最大值",
251
+ "Validation rule": "验证规则",
252
+ "Add validation rule": "新增验证规则",
253
+ "Format": "格式",
254
+ "Regular expression": "正则表达式",
255
+ "Error message": "错误消息",
256
+ "Length": "长度",
257
+ "The field value cannot be greater than ": "数值不能大于",
258
+ "The field value cannot be less than ": "数值不能小于",
259
+ "The field value is not an integer number": "数字不是整数",
241
260
  "is before": "早于",
242
261
  "is after": "晚于",
243
262
  "is on or after": "不早于",
@@ -546,6 +565,7 @@ var _default = {
546
565
  'Dynamic value': '动态值',
547
566
  'Current user': '当前用户',
548
567
  'Current record': '当前记录',
568
+ 'Current time': '当前时间',
549
569
  'Popup close method': '弹窗关闭方式',
550
570
  'Automatic close': '自动关闭',
551
571
  'Manually close': '手动关闭',
@@ -580,6 +600,9 @@ var _default = {
580
600
  "One to one (has one)": "一对一(has one)",
581
601
  "One to one (belongs to)": "一对一(belongs to)",
582
602
  "Use the same time zone (GMT) for all users": "所有用户使用同一时区 (格林尼治标准时间)",
583
- "Province/city/area name": "省市区名称"
603
+ "Province/city/area name": "省市区名称",
604
+ "Enabled languages": "启用的语言",
605
+ "View all plugins": "查看所有插件",
606
+ "Print": "打印"
584
607
  };
585
608
  exports.default = _default;
@@ -17,6 +17,8 @@ var _lodash = require("lodash");
17
17
 
18
18
  var _react = _interopRequireWildcard(require("react"));
19
19
 
20
+ var _reactI18next = require("react-i18next");
21
+
20
22
  var _apiClient = require("../api-client");
21
23
 
22
24
  var _context = require("./context");
@@ -107,6 +109,9 @@ PluginManager.Toolbar = function (props) {
107
109
  pinned = _splitItems2[0],
108
110
  unpinned = _splitItems2[1];
109
111
 
112
+ var _useTranslation = (0, _reactI18next.useTranslation)(),
113
+ t = _useTranslation.t;
114
+
110
115
  return /*#__PURE__*/_react.default.createElement("div", {
111
116
  style: {
112
117
  display: 'inline-block'
@@ -127,7 +132,7 @@ PluginManager.Toolbar = function (props) {
127
132
  }), unpinned.length > 0 && /*#__PURE__*/_react.default.createElement(_antd.Menu.SubMenu, {
128
133
  popupClassName: 'pm-sub-menu',
129
134
  key: 'more',
130
- title: /*#__PURE__*/_react.default.createElement(_icons.MoreOutlined, null)
135
+ title: /*#__PURE__*/_react.default.createElement(_icons.EllipsisOutlined, null)
131
136
  }, unpinned.map(function (item, index) {
132
137
  var Action = (0, _lodash.get)(components, item.component);
133
138
  return Action && /*#__PURE__*/_react.default.createElement(ToolbarItemContext.Provider, {
@@ -139,8 +144,8 @@ PluginManager.Toolbar = function (props) {
139
144
  }), /*#__PURE__*/_react.default.createElement(_antd.Menu.Item, {
140
145
  key: 'plugins',
141
146
  disabled: true,
142
- icon: /*#__PURE__*/_react.default.createElement(_icons.SettingOutlined, null)
143
- }, "\u7BA1\u7406\u63D2\u4EF6"))));
147
+ icon: /*#__PURE__*/_react.default.createElement(_icons.AppstoreOutlined, null)
148
+ }, t('View all plugins')))));
144
149
  };
145
150
 
146
151
  PluginManager.Toolbar.Item = function (props) {
@@ -68,7 +68,7 @@ var ActionModal = (0, _react.observer)(function (props) {
68
68
  onCancel: function onCancel() {
69
69
  return setVisible(false, true);
70
70
  },
71
- className: (0, _classnames.default)(others.className, (0, _css.css)(_templateObject || (_templateObject = _taggedTemplateLiteral(["\n &.nb-action-popup {\n .ant-modal-body {\n background: #f0f2f5;\n }\n }\n "])))),
71
+ className: (0, _classnames.default)(others.className, (0, _css.css)(_templateObject || (_templateObject = _taggedTemplateLiteral(["\n &.nb-action-popup {\n .ant-modal-header {\n display: none;\n }\n .ant-modal-body {\n padding-top: 16px;\n }\n .ant-modal-body {\n background: #f0f2f5;\n }\n .ant-modal-close-x {\n width: 32px;\n height: 32px;\n line-height: 32px;\n }\n }\n "])))),
72
72
  footer: footerSchema ? /*#__PURE__*/_react2.default.createElement("div", {
73
73
  className: (0, _css.css)(_templateObject2 || (_templateObject2 = _taggedTemplateLiteral(["\n display: flex;\n justify-content: flex-end;\n width: 100%;\n .ant-btn {\n margin-right: 8px;\n }\n "])))
74
74
  }, /*#__PURE__*/_react2.default.createElement(_react.RecursionField, {
@@ -1,5 +1,7 @@
1
1
  "use strict";
2
2
 
3
+ function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); }
4
+
3
5
  Object.defineProperty(exports, "__esModule", {
4
6
  value: true
5
7
  });
@@ -17,7 +19,7 @@ var _react2 = _interopRequireDefault(require("react"));
17
19
 
18
20
  var _reactI18next = require("react-i18next");
19
21
 
20
- var _ = require("../..");
22
+ var _2 = require("../..");
21
23
 
22
24
  var _blockProvider = require("../../../block-provider");
23
25
 
@@ -29,10 +31,22 @@ var _blockItem = require("../block-item");
29
31
 
30
32
  var _shared2 = require("../input/shared");
31
33
 
34
+ var _ = _interopRequireWildcard(require("lodash"));
35
+
32
36
  var _templateObject;
33
37
 
38
+ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
39
+
40
+ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
41
+
34
42
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
35
43
 
44
+ function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }
45
+
46
+ function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
47
+
48
+ function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
49
+
36
50
  function _taggedTemplateLiteral(strings, raw) { if (!raw) { raw = strings.slice(0); } return Object.freeze(Object.defineProperties(strings, { raw: { value: Object.freeze(raw) } })); }
37
51
 
38
52
  function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
@@ -67,7 +81,7 @@ var FormItem = function FormItem(props) {
67
81
  exports.FormItem = FormItem;
68
82
 
69
83
  FormItem.Designer = function (props) {
70
- var _collectionField$uiSc, _collectionField$uiSc2, _fieldSchema$xDecora, _field$componentProps, _field$componentProps2;
84
+ var _interfaceConfig$vali, _collectionField$uiSc, _collectionField$uiSc2, _fieldSchema$xDecora, _fieldSchema$xCompon, _field$componentProps, _field$componentProps2;
71
85
 
72
86
  var _useCollectionManager = (0, _collectionManager.useCollectionManager)(),
73
87
  getCollectionFields = _useCollectionManager.getCollectionFields,
@@ -89,15 +103,16 @@ FormItem.Designer = function (props) {
89
103
  var _useTranslation = (0, _reactI18next.useTranslation)(),
90
104
  t = _useTranslation.t;
91
105
 
92
- var _useDesignable = (0, _.useDesignable)(),
106
+ var _useDesignable = (0, _2.useDesignable)(),
93
107
  dn = _useDesignable.dn,
94
108
  refresh = _useDesignable.refresh,
95
109
  insertAdjacent = _useDesignable.insertAdjacent,
96
110
  insertBeforeBegin = _useDesignable.insertBeforeBegin;
97
111
 
98
- var compile = (0, _.useCompile)();
112
+ var compile = (0, _2.useCompile)();
99
113
  var collectionField = getField(fieldSchema['name']) || getCollectionJoinField(fieldSchema['x-collection-field']);
100
114
  var interfaceConfig = getInterface(collectionField === null || collectionField === void 0 ? void 0 : collectionField.interface);
115
+ var validateSchema = interfaceConfig === null || interfaceConfig === void 0 ? void 0 : (_interfaceConfig$vali = interfaceConfig['validateSchema']) === null || _interfaceConfig$vali === void 0 ? void 0 : _interfaceConfig$vali.call(interfaceConfig, fieldSchema);
101
116
  var originalTitle = collectionField === null || collectionField === void 0 ? void 0 : (_collectionField$uiSc = collectionField.uiSchema) === null || _collectionField$uiSc === void 0 ? void 0 : _collectionField$uiSc.title;
102
117
  var targetFields = (collectionField === null || collectionField === void 0 ? void 0 : collectionField.target) ? getCollectionFields(collectionField.target) : [];
103
118
  var isSubFormAssocitionField = field.address.segments.includes('__form_grid');
@@ -233,6 +248,151 @@ FormItem.Designer = function (props) {
233
248
  });
234
249
  refresh();
235
250
  }
251
+ }), form && !(form === null || form === void 0 ? void 0 : form.readPretty) && validateSchema && /*#__PURE__*/_react2.default.createElement(_schemaSettings.SchemaSettings.ModalItem, {
252
+ title: t('Set validation rules'),
253
+ components: {
254
+ ArrayCollapse: _antd.ArrayCollapse,
255
+ FormLayout: _antd.FormLayout
256
+ },
257
+ schema: {
258
+ type: 'object',
259
+ title: t('Set validation rules'),
260
+ properties: {
261
+ rules: {
262
+ type: 'array',
263
+ default: fieldSchema === null || fieldSchema === void 0 ? void 0 : fieldSchema['x-validator'],
264
+ 'x-component': 'ArrayCollapse',
265
+ 'x-decorator': 'FormItem',
266
+ 'x-component-props': {
267
+ accordion: true
268
+ },
269
+ maxItems: 3,
270
+ items: {
271
+ type: 'object',
272
+ 'x-component': 'ArrayCollapse.CollapsePanel',
273
+ 'x-component-props': {
274
+ header: '{{ t("Validation rule") }}'
275
+ },
276
+ properties: {
277
+ index: {
278
+ type: 'void',
279
+ 'x-component': 'ArrayCollapse.Index'
280
+ },
281
+ layout: {
282
+ type: 'void',
283
+ 'x-component': 'FormLayout',
284
+ 'x-component-props': {
285
+ labelStyle: {
286
+ marginTop: '6px'
287
+ },
288
+ labelCol: 8,
289
+ wrapperCol: 16
290
+ },
291
+ properties: _objectSpread(_objectSpread({}, validateSchema), {}, {
292
+ message: {
293
+ type: 'string',
294
+ title: '{{ t("Error message") }}',
295
+ 'x-decorator': 'FormItem',
296
+ 'x-component': 'Input.TextArea',
297
+ 'x-component-props': {
298
+ autoSize: {
299
+ minRows: 2,
300
+ maxRows: 2
301
+ }
302
+ }
303
+ }
304
+ })
305
+ },
306
+ remove: {
307
+ type: 'void',
308
+ 'x-component': 'ArrayCollapse.Remove'
309
+ },
310
+ moveUp: {
311
+ type: 'void',
312
+ 'x-component': 'ArrayCollapse.MoveUp'
313
+ },
314
+ moveDown: {
315
+ type: 'void',
316
+ 'x-component': 'ArrayCollapse.MoveDown'
317
+ }
318
+ }
319
+ },
320
+ properties: {
321
+ add: {
322
+ type: 'void',
323
+ title: '{{ t("Add validation rule") }}',
324
+ 'x-component': 'ArrayCollapse.Addition',
325
+ 'x-reactions': {
326
+ dependencies: ['rules'],
327
+ fulfill: {
328
+ state: {
329
+ disabled: '{{$deps[0].length >= 3}}'
330
+ }
331
+ }
332
+ }
333
+ }
334
+ }
335
+ }
336
+ }
337
+ },
338
+ onSubmit: function onSubmit(v) {
339
+ var _collectionField$uiSc3;
340
+
341
+ var rules = [];
342
+
343
+ var _iterator = _createForOfIteratorHelper(v.rules),
344
+ _step;
345
+
346
+ try {
347
+ for (_iterator.s(); !(_step = _iterator.n()).done;) {
348
+ var _rule = _step.value;
349
+ rules.push(_.pickBy(_rule, _.identity));
350
+ }
351
+ } catch (err) {
352
+ _iterator.e(err);
353
+ } finally {
354
+ _iterator.f();
355
+ }
356
+
357
+ var schema = _defineProperty({}, 'x-uid', fieldSchema['x-uid']); // return;
358
+ // if (['number'].includes(collectionField?.interface) && collectionField?.uiSchema?.['x-component-props']?.['stringMode'] === true) {
359
+ // rules['numberStringMode'] = true;
360
+ // }
361
+
362
+
363
+ if (['percent'].includes(collectionField === null || collectionField === void 0 ? void 0 : collectionField.interface)) {
364
+ var _iterator2 = _createForOfIteratorHelper(rules),
365
+ _step2;
366
+
367
+ try {
368
+ for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {
369
+ var rule = _step2.value;
370
+
371
+ if (!!rule.maxValue || !!rule.minValue) {
372
+ rule['percentMode'] = true;
373
+ }
374
+
375
+ if (rule.percentFormat) {
376
+ rule['percentFormats'] = true;
377
+ }
378
+ }
379
+ } catch (err) {
380
+ _iterator2.e(err);
381
+ } finally {
382
+ _iterator2.f();
383
+ }
384
+ }
385
+
386
+ var concatValidator = _.concat([], (collectionField === null || collectionField === void 0 ? void 0 : (_collectionField$uiSc3 = collectionField.uiSchema) === null || _collectionField$uiSc3 === void 0 ? void 0 : _collectionField$uiSc3['x-validator']) || [], rules);
387
+
388
+ field.validator = concatValidator;
389
+ fieldSchema['x-validator'] = rules;
390
+ schema['x-validator'] = rules;
391
+ dn.emit('patch', {
392
+ schema: schema
393
+ });
394
+ refresh();
395
+ }
236
396
  }), form && !isSubFormAssocitionField && ['o2o', 'oho', 'obo', 'o2m'].includes(collectionField === null || collectionField === void 0 ? void 0 : collectionField.interface) && /*#__PURE__*/_react2.default.createElement(_schemaSettings.SchemaSettings.SelectItem, {
237
397
  title: t('Field component'),
238
398
  options: (collectionField === null || collectionField === void 0 ? void 0 : collectionField.interface) === 'o2m' ? [{
@@ -279,7 +439,7 @@ FormItem.Designer = function (props) {
279
439
  }
280
440
  });
281
441
  }
282
- }), form && !(form === null || form === void 0 ? void 0 : form.readPretty) && (collectionField === null || collectionField === void 0 ? void 0 : collectionField.interface) !== 'o2m' && /*#__PURE__*/_react2.default.createElement(_schemaSettings.SchemaSettings.SelectItem, {
442
+ }), form && !(form === null || form === void 0 ? void 0 : form.readPretty) && (collectionField === null || collectionField === void 0 ? void 0 : collectionField.interface) !== 'o2m' && (fieldSchema === null || fieldSchema === void 0 ? void 0 : (_fieldSchema$xCompon = fieldSchema['x-component-props']) === null || _fieldSchema$xCompon === void 0 ? void 0 : _fieldSchema$xCompon['pattern-disable']) != true && /*#__PURE__*/_react2.default.createElement(_schemaSettings.SchemaSettings.SelectItem, {
283
443
  key: "pattern",
284
444
  title: t('Pattern'),
285
445
  options: [{
@@ -55,7 +55,17 @@ var GridRowContext = /*#__PURE__*/(0, _react2.createContext)(null);
55
55
  var GridColContext = /*#__PURE__*/(0, _react2.createContext)(null);
56
56
  var GridContext = /*#__PURE__*/(0, _react2.createContext)({});
57
57
 
58
+ var breakRemoveOnGrid = function breakRemoveOnGrid(s) {
59
+ return s['x-component'] === 'Grid';
60
+ };
61
+
62
+ var breakRemoveOnRow = function breakRemoveOnRow(s) {
63
+ return s['x-component'] === 'Grid.Row';
64
+ };
65
+
58
66
  var ColDivider = function ColDivider(props) {
67
+ var _dndContext$active, _dndContext$active$da, _dndContext$active$da2;
68
+
59
69
  var _useDroppable = (0, _core.useDroppable)({
60
70
  id: props.id,
61
71
  data: props.data
@@ -66,14 +76,31 @@ var ColDivider = function ColDivider(props) {
66
76
  var droppableStyle = {
67
77
  backgroundColor: isOver ? 'rgba(241, 139, 98, .1)' : undefined
68
78
  };
79
+ var dndContext = (0, _core.useDndContext)();
80
+ var activeSchema = (_dndContext$active = dndContext.active) === null || _dndContext$active === void 0 ? void 0 : (_dndContext$active$da = _dndContext$active.data.current) === null || _dndContext$active$da === void 0 ? void 0 : (_dndContext$active$da2 = _dndContext$active$da.schema) === null || _dndContext$active$da2 === void 0 ? void 0 : _dndContext$active$da2.parent;
81
+ var blocksLength = activeSchema ? Object.keys(activeSchema.properties).length : 0;
82
+ var visible = true;
83
+
84
+ if (blocksLength === 1) {
85
+ if (props.first) {
86
+ visible = activeSchema !== props.cols[0];
87
+ } else {
88
+ var currentSchema = props.cols[props.index];
89
+ var downSchema = props.cols[props.index + 1];
90
+ visible = activeSchema !== currentSchema && downSchema !== activeSchema;
91
+ }
92
+ }
93
+
69
94
  return /*#__PURE__*/_react2.default.createElement("div", {
70
- ref: setNodeRef,
95
+ ref: visible ? setNodeRef : null,
71
96
  className: (0, _classnames.default)('nb-col-divider', (0, _css.css)(_templateObject || (_templateObject = _taggedTemplateLiteral(["\n width: 24px;\n "])))),
72
97
  style: _objectSpread({}, droppableStyle)
73
98
  });
74
99
  };
75
100
 
76
101
  var RowDivider = function RowDivider(props) {
102
+ var _dndContext$active2, _dndContext$active2$d, _dndContext$active2$d2;
103
+
77
104
  var _useDroppable2 = (0, _core.useDroppable)({
78
105
  id: props.id,
79
106
  data: props.data
@@ -92,6 +119,23 @@ var RowDivider = function RowDivider(props) {
92
119
  active = _useState2[0],
93
120
  setActive = _useState2[1];
94
121
 
122
+ var dndContext = (0, _core.useDndContext)();
123
+ var currentSchema = props.rows[props.index];
124
+ var activeSchema = (_dndContext$active2 = dndContext.active) === null || _dndContext$active2 === void 0 ? void 0 : (_dndContext$active2$d = _dndContext$active2.data.current) === null || _dndContext$active2$d === void 0 ? void 0 : (_dndContext$active2$d2 = _dndContext$active2$d.schema) === null || _dndContext$active2$d2 === void 0 ? void 0 : _dndContext$active2$d2.parent.parent;
125
+ var colsLength = activeSchema === null || activeSchema === void 0 ? void 0 : activeSchema.mapProperties(function (schema) {
126
+ return schema['x-component'] === 'Grid.Col';
127
+ }).filter(Boolean).length;
128
+ var visible = true; // col > 1 时不需要隐藏
129
+
130
+ if (colsLength === 1) {
131
+ if (props.first) {
132
+ visible = activeSchema !== props.rows[0];
133
+ } else {
134
+ var downSchema = props.rows[props.index + 1];
135
+ visible = activeSchema !== currentSchema && downSchema !== activeSchema;
136
+ }
137
+ }
138
+
95
139
  (0, _core.useDndMonitor)({
96
140
  onDragStart: function onDragStart(event) {
97
141
  setActive(true);
@@ -106,7 +150,7 @@ var RowDivider = function RowDivider(props) {
106
150
  }
107
151
  });
108
152
  return /*#__PURE__*/_react2.default.createElement("span", {
109
- ref: setNodeRef,
153
+ ref: visible ? setNodeRef : null,
110
154
  className: (0, _classnames.default)('nb-row-divider', (0, _css.css)(_templateObject2 || (_templateObject2 = _taggedTemplateLiteral(["\n height: 24px;\n width: 100%;\n position: absolute;\n margin-top: -24px;\n "])))),
111
155
  style: _objectSpread({
112
156
  zIndex: active ? 1000 : -1
@@ -193,6 +237,7 @@ var useGridRowContext = function useGridRowContext() {
193
237
 
194
238
  exports.useGridRowContext = useGridRowContext;
195
239
  var Grid = (0, _react.observer)(function (props) {
240
+ var gridRef = (0, _react2.useRef)(null);
196
241
  var field = (0, _react.useField)();
197
242
  var fieldSchema = (0, _react.useFieldSchema)();
198
243
 
@@ -201,8 +246,16 @@ var Grid = (0, _react.observer)(function (props) {
201
246
 
202
247
  var addr = field.address.toString();
203
248
  var rows = useRowProperties();
249
+
250
+ var _useFormBlockContext = (0, _.useFormBlockContext)(),
251
+ setPrintContent = _useFormBlockContext.setPrintContent;
252
+
253
+ (0, _react2.useEffect)(function () {
254
+ gridRef.current && (setPrintContent === null || setPrintContent === void 0 ? void 0 : setPrintContent(gridRef.current));
255
+ }, [gridRef.current]);
204
256
  return /*#__PURE__*/_react2.default.createElement(GridContext.Provider, {
205
257
  value: {
258
+ ref: gridRef,
206
259
  fieldSchema: fieldSchema,
207
260
  renderSchemaInitializer: render
208
261
  }
@@ -210,12 +263,16 @@ var Grid = (0, _react.observer)(function (props) {
210
263
  className: 'nb-grid',
211
264
  style: {
212
265
  position: 'relative'
213
- }
266
+ },
267
+ ref: gridRef
214
268
  }, /*#__PURE__*/_react2.default.createElement(DndWrapper, {
215
269
  dndContext: props.dndContext
216
270
  }, /*#__PURE__*/_react2.default.createElement(RowDivider, {
271
+ rows: rows,
272
+ first: true,
217
273
  id: "".concat(addr, "_0"),
218
274
  data: {
275
+ breakRemoveOn: breakRemoveOnGrid,
219
276
  wrapSchema: wrapRowSchema,
220
277
  insertAdjacent: 'afterBegin',
221
278
  schema: fieldSchema
@@ -227,8 +284,11 @@ var Grid = (0, _react.observer)(function (props) {
227
284
  name: schema.name,
228
285
  schema: schema
229
286
  }), /*#__PURE__*/_react2.default.createElement(RowDivider, {
287
+ rows: rows,
288
+ index: index,
230
289
  id: "".concat(addr, "_").concat(index + 1),
231
290
  data: {
291
+ breakRemoveOn: breakRemoveOnGrid,
232
292
  wrapSchema: wrapRowSchema,
233
293
  insertAdjacent: 'afterEnd',
234
294
  schema: schema
@@ -249,8 +309,11 @@ Grid.Row = (0, _react.observer)(function (props) {
249
309
  }, /*#__PURE__*/_react2.default.createElement("div", {
250
310
  className: (0, _classnames.default)('nb-grid-row', (0, _css.css)(_templateObject3 || (_templateObject3 = _taggedTemplateLiteral(["\n margin: 0 -24px;\n display: flex;\n position: relative;\n /* z-index: 0; */\n "]))))
251
311
  }, /*#__PURE__*/_react2.default.createElement(ColDivider, {
312
+ cols: cols,
313
+ first: true,
252
314
  id: "".concat(addr, "_0"),
253
315
  data: {
316
+ breakRemoveOn: breakRemoveOnRow,
254
317
  wrapSchema: wrapColSchema,
255
318
  insertAdjacent: 'afterBegin',
256
319
  schema: fieldSchema
@@ -262,8 +325,11 @@ Grid.Row = (0, _react.observer)(function (props) {
262
325
  name: schema.name,
263
326
  schema: schema
264
327
  }), /*#__PURE__*/_react2.default.createElement(ColDivider, {
328
+ cols: cols,
329
+ index: index,
265
330
  id: "".concat(addr, "_").concat(index + 1),
266
331
  data: {
332
+ breakRemoveOn: breakRemoveOnRow,
267
333
  wrapSchema: wrapColSchema,
268
334
  insertAdjacent: 'afterEnd',
269
335
  schema: schema
@@ -1,7 +1,3 @@
1
1
  import React from 'react';
2
- export declare const InputNumber: React.ForwardRefExoticComponent<Pick<Partial<import("antd").InputNumberProps<string | number> & {
3
- children?: React.ReactNode;
4
- } & {
5
- ref?: React.Ref<HTMLInputElement>;
6
- }>, keyof import("antd").InputNumberProps<string | number>> & React.RefAttributes<unknown>>;
2
+ export declare const InputNumber: React.ForwardRefExoticComponent<Pick<Partial<any>, string | number | symbol> & React.RefAttributes<unknown>>;
7
3
  export default InputNumber;
@@ -5,13 +5,40 @@ Object.defineProperty(exports, "__esModule", {
5
5
  });
6
6
  exports.default = exports.InputNumber = void 0;
7
7
 
8
- var _react = require("@formily/react");
8
+ var _react = _interopRequireDefault(require("react"));
9
+
10
+ var _react2 = require("@formily/react");
9
11
 
10
12
  var _antd = require("antd");
11
13
 
12
14
  var _ReadPretty = require("./ReadPretty");
13
15
 
14
- var InputNumber = (0, _react.connect)(_antd.InputNumber, (0, _react.mapReadPretty)(_ReadPretty.ReadPretty));
16
+ var _excluded = ["onChange"];
17
+
18
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
19
+
20
+ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
21
+
22
+ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
23
+
24
+ function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
25
+
26
+ function _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }
27
+
28
+ function _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }
29
+
30
+ var InputNumber = (0, _react2.connect)(function (props) {
31
+ var onChange = props.onChange,
32
+ others = _objectWithoutProperties(props, _excluded);
33
+
34
+ var handleChange = function handleChange(v) {
35
+ onChange(parseFloat(v));
36
+ };
37
+
38
+ return /*#__PURE__*/_react.default.createElement(_antd.InputNumber, _objectSpread({
39
+ onChange: handleChange
40
+ }, others));
41
+ }, (0, _react2.mapReadPretty)(_ReadPretty.ReadPretty));
15
42
  exports.InputNumber = InputNumber;
16
43
  var _default = InputNumber;
17
44
  exports.default = _default;
@@ -77,6 +77,25 @@ var KanbanCardDesigner = function KanbanCardDesigner(props) {
77
77
  readPretty: true,
78
78
  block: 'Kanban'
79
79
  });
80
+ var associationFields = (0, _utils.useAssociatedFormItemInitializerFields)({
81
+ readPretty: true,
82
+ block: 'Kanban'
83
+ });
84
+ var items = [{
85
+ type: 'itemGroup',
86
+ title: t('Display fields'),
87
+ children: fields
88
+ }];
89
+
90
+ if (associationFields.length > 0) {
91
+ items.push({
92
+ type: 'divider'
93
+ }, {
94
+ type: 'itemGroup',
95
+ title: t('Display association fields'),
96
+ children: associationFields
97
+ });
98
+ }
80
99
 
81
100
  if (!designable) {
82
101
  return null;
@@ -113,20 +132,7 @@ var KanbanCardDesigner = function KanbanCardDesigner(props) {
113
132
  dn.loadAPIClientEvents();
114
133
  dn.insertBeforeEnd(schema);
115
134
  },
116
- items: [{
117
- type: 'itemGroup',
118
- title: t('Display fields'),
119
- children: fields
120
- }, {
121
- type: 'divider'
122
- }, {
123
- type: 'itemGroup',
124
- title: t('Display association fields'),
125
- children: (0, _utils.useAssociatedFormItemInitializerFields)({
126
- readPretty: true,
127
- block: 'Kanban'
128
- })
129
- }],
135
+ items: items,
130
136
  component: /*#__PURE__*/_react2.default.createElement(_icons.MenuOutlined, {
131
137
  style: {
132
138
  cursor: 'pointer',