@nocobase/client 0.7.2-alpha.7 → 0.7.4-alpha.4

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 (175) hide show
  1. package/es/application/Application.d.ts +1 -0
  2. package/es/application/Application.js +7 -1
  3. package/es/block-provider/FormBlockProvider.js +15 -3
  4. package/es/block-provider/TableFieldProvider.d.ts +1 -0
  5. package/es/block-provider/TableFieldProvider.js +5 -2
  6. package/es/block-provider/TableSelectorProvider.js +42 -14
  7. package/es/block-provider/hooks/index.d.ts +6 -0
  8. package/es/block-provider/hooks/index.js +159 -65
  9. package/es/collection-manager/CollectionField.js +11 -4
  10. package/es/collection-manager/Configuration/AddFieldAction.js +6 -0
  11. package/es/collection-manager/Configuration/EditFieldAction.js +7 -0
  12. package/es/collection-manager/Configuration/index.js +5 -1
  13. package/es/collection-manager/Configuration/schemas/collections.js +2 -1
  14. package/es/collection-manager/interfaces/checkbox.js +1 -0
  15. package/es/collection-manager/interfaces/checkboxGroup.js +1 -0
  16. package/es/collection-manager/interfaces/datetime.js +1 -0
  17. package/es/collection-manager/interfaces/email.js +1 -0
  18. package/es/collection-manager/interfaces/icon.js +1 -0
  19. package/es/collection-manager/interfaces/input.js +104 -0
  20. package/es/collection-manager/interfaces/integer.js +64 -0
  21. package/es/collection-manager/interfaces/m2m.js +2 -0
  22. package/es/collection-manager/interfaces/m2o.js +1 -0
  23. package/es/collection-manager/interfaces/markdown.js +35 -0
  24. package/es/collection-manager/interfaces/multipleSelect.js +1 -0
  25. package/es/collection-manager/interfaces/number.js +56 -0
  26. package/es/collection-manager/interfaces/o2m.js +1 -0
  27. package/es/collection-manager/interfaces/o2o.js +3 -0
  28. package/es/collection-manager/interfaces/password.js +37 -1
  29. package/es/collection-manager/interfaces/percent.js +98 -0
  30. package/es/collection-manager/interfaces/phone.js +1 -0
  31. package/es/collection-manager/interfaces/properties/index.d.ts +1 -0
  32. package/es/collection-manager/interfaces/properties/index.js +1 -0
  33. package/es/collection-manager/interfaces/properties/operators.js +4 -4
  34. package/es/collection-manager/interfaces/radioGroup.js +1 -0
  35. package/es/collection-manager/interfaces/richText.js +35 -0
  36. package/es/collection-manager/interfaces/select.js +1 -0
  37. package/es/collection-manager/interfaces/textarea.js +35 -0
  38. package/es/collection-manager/interfaces/time.js +1 -0
  39. package/es/file-manager/FileStorageShortcut.js +2 -2
  40. package/es/locale/en_US.d.ts +8 -2
  41. package/es/locale/en_US.js +9 -3
  42. package/es/locale/zh_CN.d.ts +28 -2
  43. package/es/locale/zh_CN.js +29 -3
  44. package/es/plugin-manager/PluginManager.d.ts +1 -0
  45. package/es/plugin-manager/PluginManager.js +20 -6
  46. package/es/schema-component/antd/action/Action.Modal.js +1 -1
  47. package/es/schema-component/antd/calendar/Calendar.Designer.js +16 -10
  48. package/es/schema-component/antd/date-picker/DatePicker.d.ts +1 -1
  49. package/es/schema-component/antd/date-picker/DatePicker.js +1 -1
  50. package/es/schema-component/antd/date-picker/ReadPretty.js +1 -1
  51. package/es/schema-component/antd/date-picker/util.d.ts +0 -10
  52. package/es/schema-component/antd/date-picker/util.js +1 -79
  53. package/es/schema-component/antd/form-item/FormItem.js +193 -10
  54. package/es/schema-component/antd/grid/Grid.js +72 -6
  55. package/es/schema-component/antd/input-number/InputNumber.d.ts +1 -5
  56. package/es/schema-component/antd/input-number/InputNumber.js +25 -1
  57. package/es/schema-component/antd/input-number/ReadPretty.js +2 -4
  58. package/es/schema-component/antd/kanban/Kanban.Card.Designer.js +20 -14
  59. package/es/schema-component/antd/menu/Menu.js +6 -3
  60. package/es/schema-component/antd/percent/Percent.js +2 -2
  61. package/es/schema-component/antd/record-picker/InputRecordPicker.js +27 -13
  62. package/es/schema-component/antd/record-picker/ReadPrettyRecordPicker.js +5 -3
  63. package/es/schema-component/antd/table/Table.Array.js +2 -2
  64. package/es/schema-component/antd/table/Table.Void.js +11 -1
  65. package/es/schema-component/antd/table-v2/Table.Column.Designer.js +3 -1
  66. package/es/schema-component/antd/table-v2/Table.d.ts +0 -11
  67. package/es/schema-component/antd/table-v2/Table.js +163 -92
  68. package/es/schema-component/antd/table-v2/TableField.js +3 -0
  69. package/es/schema-component/antd/tabs/Tabs.Designer.js +23 -12
  70. package/es/schema-component/antd/tabs/Tabs.js +7 -1
  71. package/es/schema-component/antd/time-picker/ReadPretty.js +11 -5
  72. package/es/schema-component/core/DesignableSwitch.js +7 -1
  73. package/es/schema-component/hooks/useDesignable.js +21 -21
  74. package/es/schema-component/hooks/useProps.js +1 -1
  75. package/es/schema-initializer/buttons/FormItemInitializers.js +14 -3
  76. package/es/schema-initializer/buttons/ReadPrettyFormActionInitializers.js +8 -0
  77. package/es/schema-initializer/buttons/ReadPrettyFormItemInitializers.js +14 -3
  78. package/es/schema-initializer/buttons/RecordBlockInitializers.js +32 -3
  79. package/es/schema-initializer/buttons/TabPaneInitializers.js +11 -3
  80. package/es/schema-initializer/buttons/TableActionInitializers.js +11 -0
  81. package/es/schema-initializer/components/assigned-field/AssignedField.d.ts +4 -0
  82. package/es/schema-initializer/components/assigned-field/AssignedField.js +255 -69
  83. package/es/schema-initializer/items/index.d.ts +2 -0
  84. package/es/schema-initializer/items/index.js +48 -2
  85. package/es/schema-initializer/utils.js +22 -2
  86. package/es/schema-settings/SchemaSettings.js +7 -0
  87. package/es/system-settings/SystemSettingsShortcut.js +35 -12
  88. package/lib/application/Application.d.ts +1 -0
  89. package/lib/application/Application.js +11 -2
  90. package/lib/block-provider/FormBlockProvider.js +15 -2
  91. package/lib/block-provider/TableFieldProvider.d.ts +1 -0
  92. package/lib/block-provider/TableFieldProvider.js +4 -1
  93. package/lib/block-provider/TableSelectorProvider.js +42 -14
  94. package/lib/block-provider/hooks/index.d.ts +6 -0
  95. package/lib/block-provider/hooks/index.js +168 -67
  96. package/lib/collection-manager/CollectionField.js +12 -4
  97. package/lib/collection-manager/Configuration/AddFieldAction.js +6 -0
  98. package/lib/collection-manager/Configuration/EditFieldAction.js +7 -0
  99. package/lib/collection-manager/Configuration/index.js +5 -0
  100. package/lib/collection-manager/Configuration/schemas/collections.js +2 -1
  101. package/lib/collection-manager/interfaces/checkbox.js +1 -0
  102. package/lib/collection-manager/interfaces/checkboxGroup.js +1 -0
  103. package/lib/collection-manager/interfaces/datetime.js +1 -0
  104. package/lib/collection-manager/interfaces/email.js +1 -0
  105. package/lib/collection-manager/interfaces/icon.js +1 -0
  106. package/lib/collection-manager/interfaces/input.js +105 -0
  107. package/lib/collection-manager/interfaces/integer.js +66 -0
  108. package/lib/collection-manager/interfaces/m2m.js +2 -0
  109. package/lib/collection-manager/interfaces/m2o.js +1 -0
  110. package/lib/collection-manager/interfaces/markdown.js +36 -0
  111. package/lib/collection-manager/interfaces/multipleSelect.js +1 -0
  112. package/lib/collection-manager/interfaces/number.js +57 -0
  113. package/lib/collection-manager/interfaces/o2m.js +1 -0
  114. package/lib/collection-manager/interfaces/o2o.js +3 -0
  115. package/lib/collection-manager/interfaces/password.js +38 -1
  116. package/lib/collection-manager/interfaces/percent.js +100 -0
  117. package/lib/collection-manager/interfaces/phone.js +1 -0
  118. package/lib/collection-manager/interfaces/properties/index.d.ts +1 -0
  119. package/lib/collection-manager/interfaces/properties/index.js +1 -0
  120. package/lib/collection-manager/interfaces/properties/operators.js +4 -4
  121. package/lib/collection-manager/interfaces/radioGroup.js +1 -0
  122. package/lib/collection-manager/interfaces/richText.js +36 -0
  123. package/lib/collection-manager/interfaces/select.js +1 -0
  124. package/lib/collection-manager/interfaces/textarea.js +36 -0
  125. package/lib/collection-manager/interfaces/time.js +1 -0
  126. package/lib/file-manager/FileStorageShortcut.js +1 -1
  127. package/lib/locale/en_US.d.ts +8 -2
  128. package/lib/locale/en_US.js +9 -3
  129. package/lib/locale/zh_CN.d.ts +28 -2
  130. package/lib/locale/zh_CN.js +29 -3
  131. package/lib/plugin-manager/PluginManager.d.ts +1 -0
  132. package/lib/plugin-manager/PluginManager.js +23 -5
  133. package/lib/schema-component/antd/action/Action.Modal.js +1 -1
  134. package/lib/schema-component/antd/calendar/Calendar.Designer.js +16 -10
  135. package/lib/schema-component/antd/date-picker/DatePicker.d.ts +1 -1
  136. package/lib/schema-component/antd/date-picker/DatePicker.js +2 -2
  137. package/lib/schema-component/antd/date-picker/ReadPretty.js +6 -6
  138. package/lib/schema-component/antd/date-picker/util.d.ts +0 -10
  139. package/lib/schema-component/antd/date-picker/util.js +6 -89
  140. package/lib/schema-component/antd/form-item/FormItem.js +196 -12
  141. package/lib/schema-component/antd/grid/Grid.js +69 -3
  142. package/lib/schema-component/antd/input-number/InputNumber.d.ts +1 -5
  143. package/lib/schema-component/antd/input-number/InputNumber.js +28 -1
  144. package/lib/schema-component/antd/input-number/ReadPretty.js +2 -5
  145. package/lib/schema-component/antd/kanban/Kanban.Card.Designer.js +20 -14
  146. package/lib/schema-component/antd/menu/Menu.js +6 -3
  147. package/lib/schema-component/antd/percent/Percent.js +2 -2
  148. package/lib/schema-component/antd/record-picker/InputRecordPicker.js +27 -12
  149. package/lib/schema-component/antd/record-picker/ReadPrettyRecordPicker.js +4 -2
  150. package/lib/schema-component/antd/table/Table.Array.js +2 -2
  151. package/lib/schema-component/antd/table/Table.Void.js +11 -1
  152. package/lib/schema-component/antd/table-v2/Table.Column.Designer.js +3 -1
  153. package/lib/schema-component/antd/table-v2/Table.d.ts +0 -11
  154. package/lib/schema-component/antd/table-v2/Table.js +172 -94
  155. package/lib/schema-component/antd/table-v2/TableField.js +3 -0
  156. package/lib/schema-component/antd/tabs/Tabs.Designer.js +23 -12
  157. package/lib/schema-component/antd/tabs/Tabs.js +8 -1
  158. package/lib/schema-component/antd/time-picker/ReadPretty.js +10 -3
  159. package/lib/schema-component/core/DesignableSwitch.js +8 -1
  160. package/lib/schema-component/hooks/useDesignable.js +21 -21
  161. package/lib/schema-component/hooks/useProps.js +1 -1
  162. package/lib/schema-initializer/buttons/FormItemInitializers.js +14 -2
  163. package/lib/schema-initializer/buttons/ReadPrettyFormActionInitializers.js +8 -0
  164. package/lib/schema-initializer/buttons/ReadPrettyFormItemInitializers.js +14 -2
  165. package/lib/schema-initializer/buttons/RecordBlockInitializers.js +34 -4
  166. package/lib/schema-initializer/buttons/TabPaneInitializers.js +11 -3
  167. package/lib/schema-initializer/buttons/TableActionInitializers.js +11 -0
  168. package/lib/schema-initializer/components/assigned-field/AssignedField.d.ts +4 -0
  169. package/lib/schema-initializer/components/assigned-field/AssignedField.js +257 -66
  170. package/lib/schema-initializer/items/index.d.ts +2 -0
  171. package/lib/schema-initializer/items/index.js +54 -2
  172. package/lib/schema-initializer/utils.js +22 -2
  173. package/lib/schema-settings/SchemaSettings.js +7 -0
  174. package/lib/system-settings/SystemSettingsShortcut.js +37 -13
  175. package/package.json +7 -4
@@ -4,24 +4,9 @@ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { va
4
4
 
5
5
  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; }
6
6
 
7
+ import { getDefaultFormat, str2moment, toGmt, toLocal } from '@nocobase/utils/client';
7
8
  import moment from 'moment';
8
9
 
9
- var toGmt = function toGmt(value) {
10
- if (!value) {
11
- return value;
12
- }
13
-
14
- if (Array.isArray(value)) {
15
- return value.map(function (val) {
16
- return "".concat(val.format('YYYY-MM-DD'), "T").concat(val.format('HH:mm:ss.SSS'), "Z");
17
- });
18
- }
19
-
20
- if (moment.isMoment(value)) {
21
- return "".concat(value.format('YYYY-MM-DD'), "T").concat(value.format('HH:mm:ss.SSS'), "Z");
22
- }
23
- };
24
-
25
10
  var toStringByPicker = function toStringByPicker(value, picker) {
26
11
  if (picker === 'year') {
27
12
  return value.format('YYYY') + '-01-01T00:00:00.000Z';
@@ -58,44 +43,6 @@ var toGmtByPicker = function toGmtByPicker(value, picker) {
58
43
  }
59
44
  };
60
45
 
61
- var toLocal = function toLocal(value) {
62
- if (!value) {
63
- return value;
64
- }
65
-
66
- if (Array.isArray(value)) {
67
- return value.map(function (val) {
68
- return val.toISOString();
69
- });
70
- }
71
-
72
- if (moment.isMoment(value)) {
73
- return value.toISOString();
74
- }
75
- };
76
-
77
- var toMoment = function toMoment(val, options) {
78
- if (moment.isMoment(val)) {
79
- return val;
80
- }
81
-
82
- var gmt = options.gmt,
83
- picker = options.picker;
84
-
85
- if (gmt || picker) {
86
- val = val.replace('T', ' ').replace('Z', '');
87
- return moment(val);
88
- }
89
-
90
- return moment(val);
91
- };
92
-
93
- export var str2moment = function str2moment(value) {
94
- var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
95
- return Array.isArray(value) ? value.map(function (val) {
96
- return toMoment(val, options);
97
- }) : value ? toMoment(value, options) : value;
98
- };
99
46
  export var moment2str = function moment2str(value) {
100
47
  var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
101
48
  var showTime = options.showTime,
@@ -112,31 +59,6 @@ export var moment2str = function moment2str(value) {
112
59
 
113
60
  return toGmtByPicker(value, picker);
114
61
  };
115
- export var getDefaultFormat = function getDefaultFormat(props) {
116
- if (props.format) {
117
- return props.format;
118
- }
119
-
120
- if (props.dateFormat) {
121
- if (props['showTime']) {
122
- return "".concat(props.dateFormat, " ").concat(props.timeFormat || 'HH:mm:ss');
123
- }
124
-
125
- return props.dateFormat;
126
- }
127
-
128
- if (props['picker'] === 'month') {
129
- return 'YYYY-MM';
130
- } else if (props['picker'] === 'quarter') {
131
- return 'YYYY-\\QQ';
132
- } else if (props['picker'] === 'year') {
133
- return 'YYYY';
134
- } else if (props['picker'] === 'week') {
135
- return 'YYYY-wo';
136
- }
137
-
138
- return props['showTime'] ? 'YYYY-MM-DD HH:mm:ss' : 'YYYY-MM-DD';
139
- };
140
62
  export var mapDateFormat = function mapDateFormat() {
141
63
  return function (props) {
142
64
  var format = getDefaultFormat(props);
@@ -1,5 +1,11 @@
1
1
  var _templateObject;
2
2
 
3
+ 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; } } }; }
4
+
5
+ function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
6
+
7
+ 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; }
8
+
3
9
  function _taggedTemplateLiteral(strings, raw) { if (!raw) { raw = strings.slice(0); } return Object.freeze(Object.defineProperties(strings, { raw: { value: Object.freeze(raw) } })); }
4
10
 
5
11
  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; }
@@ -9,9 +15,10 @@ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { va
9
15
  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; }
10
16
 
11
17
  import { css } from '@emotion/css';
12
- import { FormItem as Item } from '@formily/antd';
18
+ import { ArrayCollapse, FormItem as Item, FormLayout } from '@formily/antd';
13
19
  import { useField, useFieldSchema } from '@formily/react';
14
20
  import { uid } from '@formily/shared';
21
+ import _ from 'lodash';
15
22
  import React from 'react';
16
23
  import { useTranslation } from 'react-i18next';
17
24
  import { useCompile, useDesignable } from '../..';
@@ -45,7 +52,7 @@ export var FormItem = function FormItem(props) {
45
52
  };
46
53
 
47
54
  FormItem.Designer = function (props) {
48
- var _collectionField$uiSc, _collectionField$uiSc2, _fieldSchema$xDecora, _field$componentProps, _field$componentProps2;
55
+ var _interfaceConfig$vali, _collectionField$uiSc, _collectionField$uiSc2, _fieldSchema$xDecora, _collectionField$uiSc4, _fieldSchema$xCompon, _field$componentProps, _field$componentProps2;
49
56
 
50
57
  var _useCollectionManager = useCollectionManager(),
51
58
  getCollectionFields = _useCollectionManager.getCollectionFields,
@@ -76,6 +83,7 @@ FormItem.Designer = function (props) {
76
83
  var compile = useCompile();
77
84
  var collectionField = getField(fieldSchema['name']) || getCollectionJoinField(fieldSchema['x-collection-field']);
78
85
  var interfaceConfig = getInterface(collectionField === null || collectionField === void 0 ? void 0 : collectionField.interface);
86
+ 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);
79
87
  var originalTitle = collectionField === null || collectionField === void 0 ? void 0 : (_collectionField$uiSc = collectionField.uiSchema) === null || _collectionField$uiSc === void 0 ? void 0 : _collectionField$uiSc.title;
80
88
  var targetFields = (collectionField === null || collectionField === void 0 ? void 0 : collectionField.target) ? getCollectionFields(collectionField.target) : [];
81
89
  var isSubFormAssocitionField = field.address.segments.includes('__form_grid');
@@ -199,7 +207,7 @@ FormItem.Designer = function (props) {
199
207
  }), !field.readPretty && fieldSchema['x-component'] !== 'FormField' && /*#__PURE__*/React.createElement(SchemaSettings.SwitchItem, {
200
208
  key: "required",
201
209
  title: t('Required'),
202
- checked: field.required,
210
+ checked: fieldSchema.required,
203
211
  onChange: function onChange(required) {
204
212
  var schema = _defineProperty({}, 'x-uid', fieldSchema['x-uid']);
205
213
 
@@ -211,6 +219,183 @@ FormItem.Designer = function (props) {
211
219
  });
212
220
  refresh();
213
221
  }
222
+ }), form && !(form === null || form === void 0 ? void 0 : form.readPretty) && validateSchema && /*#__PURE__*/React.createElement(SchemaSettings.ModalItem, {
223
+ title: t('Set validation rules'),
224
+ components: {
225
+ ArrayCollapse: ArrayCollapse,
226
+ FormLayout: FormLayout
227
+ },
228
+ schema: {
229
+ type: 'object',
230
+ title: t('Set validation rules'),
231
+ properties: {
232
+ rules: {
233
+ type: 'array',
234
+ default: fieldSchema === null || fieldSchema === void 0 ? void 0 : fieldSchema['x-validator'],
235
+ 'x-component': 'ArrayCollapse',
236
+ 'x-decorator': 'FormItem',
237
+ 'x-component-props': {
238
+ accordion: true
239
+ },
240
+ maxItems: 3,
241
+ items: {
242
+ type: 'object',
243
+ 'x-component': 'ArrayCollapse.CollapsePanel',
244
+ 'x-component-props': {
245
+ header: '{{ t("Validation rule") }}'
246
+ },
247
+ properties: {
248
+ index: {
249
+ type: 'void',
250
+ 'x-component': 'ArrayCollapse.Index'
251
+ },
252
+ layout: {
253
+ type: 'void',
254
+ 'x-component': 'FormLayout',
255
+ 'x-component-props': {
256
+ labelStyle: {
257
+ marginTop: '6px'
258
+ },
259
+ labelCol: 8,
260
+ wrapperCol: 16
261
+ },
262
+ properties: _objectSpread(_objectSpread({}, validateSchema), {}, {
263
+ message: {
264
+ type: 'string',
265
+ title: '{{ t("Error message") }}',
266
+ 'x-decorator': 'FormItem',
267
+ 'x-component': 'Input.TextArea',
268
+ 'x-component-props': {
269
+ autoSize: {
270
+ minRows: 2,
271
+ maxRows: 2
272
+ }
273
+ }
274
+ }
275
+ })
276
+ },
277
+ remove: {
278
+ type: 'void',
279
+ 'x-component': 'ArrayCollapse.Remove'
280
+ },
281
+ moveUp: {
282
+ type: 'void',
283
+ 'x-component': 'ArrayCollapse.MoveUp'
284
+ },
285
+ moveDown: {
286
+ type: 'void',
287
+ 'x-component': 'ArrayCollapse.MoveDown'
288
+ }
289
+ }
290
+ },
291
+ properties: {
292
+ add: {
293
+ type: 'void',
294
+ title: '{{ t("Add validation rule") }}',
295
+ 'x-component': 'ArrayCollapse.Addition',
296
+ 'x-reactions': {
297
+ dependencies: ['rules'],
298
+ fulfill: {
299
+ state: {
300
+ disabled: '{{$deps[0].length >= 3}}'
301
+ }
302
+ }
303
+ }
304
+ }
305
+ }
306
+ }
307
+ }
308
+ },
309
+ onSubmit: function onSubmit(v) {
310
+ var _collectionField$uiSc3;
311
+
312
+ var rules = [];
313
+
314
+ var _iterator = _createForOfIteratorHelper(v.rules),
315
+ _step;
316
+
317
+ try {
318
+ for (_iterator.s(); !(_step = _iterator.n()).done;) {
319
+ var _rule = _step.value;
320
+ rules.push(_.pickBy(_rule, _.identity));
321
+ }
322
+ } catch (err) {
323
+ _iterator.e(err);
324
+ } finally {
325
+ _iterator.f();
326
+ }
327
+
328
+ var schema = _defineProperty({}, 'x-uid', fieldSchema['x-uid']); // return;
329
+ // if (['number'].includes(collectionField?.interface) && collectionField?.uiSchema?.['x-component-props']?.['stringMode'] === true) {
330
+ // rules['numberStringMode'] = true;
331
+ // }
332
+
333
+
334
+ if (['percent'].includes(collectionField === null || collectionField === void 0 ? void 0 : collectionField.interface)) {
335
+ var _iterator2 = _createForOfIteratorHelper(rules),
336
+ _step2;
337
+
338
+ try {
339
+ for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {
340
+ var rule = _step2.value;
341
+
342
+ if (!!rule.maxValue || !!rule.minValue) {
343
+ rule['percentMode'] = true;
344
+ }
345
+
346
+ if (rule.percentFormat) {
347
+ rule['percentFormats'] = true;
348
+ }
349
+ }
350
+ } catch (err) {
351
+ _iterator2.e(err);
352
+ } finally {
353
+ _iterator2.f();
354
+ }
355
+ }
356
+
357
+ 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);
358
+
359
+ field.validator = concatValidator;
360
+ fieldSchema['x-validator'] = rules;
361
+ schema['x-validator'] = rules;
362
+ dn.emit('patch', {
363
+ schema: schema
364
+ });
365
+ refresh();
366
+ }
367
+ }), form && !(form === null || form === void 0 ? void 0 : form.readPretty) && (collectionField === null || collectionField === void 0 ? void 0 : (_collectionField$uiSc4 = collectionField.uiSchema) === null || _collectionField$uiSc4 === void 0 ? void 0 : _collectionField$uiSc4.type) && /*#__PURE__*/React.createElement(SchemaSettings.ModalItem, {
368
+ title: t('Set default value'),
369
+ components: {
370
+ ArrayCollapse: ArrayCollapse,
371
+ FormLayout: FormLayout
372
+ },
373
+ schema: {
374
+ type: 'object',
375
+ title: t('Set default value'),
376
+ properties: {
377
+ default: _objectSpread(_objectSpread({}, collectionField.uiSchema), {}, {
378
+ name: 'default',
379
+ title: t('Default value'),
380
+ 'x-decorator': 'FormItem',
381
+ default: fieldSchema.default || collectionField.defaultValue
382
+ })
383
+ }
384
+ },
385
+ onSubmit: function onSubmit(v) {
386
+ var schema = _defineProperty({}, 'x-uid', fieldSchema['x-uid']);
387
+
388
+ if (field.value !== v.default) {
389
+ field.value = v.default;
390
+ }
391
+
392
+ fieldSchema.default = v.default;
393
+ schema.default = v.default;
394
+ dn.emit('patch', {
395
+ schema: schema
396
+ });
397
+ refresh();
398
+ }
214
399
  }), form && !isSubFormAssocitionField && ['o2o', 'oho', 'obo', 'o2m'].includes(collectionField === null || collectionField === void 0 ? void 0 : collectionField.interface) && /*#__PURE__*/React.createElement(SchemaSettings.SelectItem, {
215
400
  title: t('Field component'),
216
401
  options: (collectionField === null || collectionField === void 0 ? void 0 : collectionField.interface) === 'o2m' ? [{
@@ -257,7 +442,7 @@ FormItem.Designer = function (props) {
257
442
  }
258
443
  });
259
444
  }
260
- }), form && !(form === null || form === void 0 ? void 0 : form.readPretty) && (collectionField === null || collectionField === void 0 ? void 0 : collectionField.interface) !== 'o2m' && /*#__PURE__*/React.createElement(SchemaSettings.SelectItem, {
445
+ }), 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__*/React.createElement(SchemaSettings.SelectItem, {
261
446
  key: "pattern",
262
447
  title: t('Pattern'),
263
448
  options: [{
@@ -319,15 +504,13 @@ FormItem.Designer = function (props) {
319
504
  options: options,
320
505
  value: field === null || field === void 0 ? void 0 : (_field$componentProps = field.componentProps) === null || _field$componentProps === void 0 ? void 0 : (_field$componentProps2 = _field$componentProps.fieldNames) === null || _field$componentProps2 === void 0 ? void 0 : _field$componentProps2.label,
321
506
  onChange: function onChange(label) {
507
+ var _collectionField$uiSc5, _collectionField$uiSc6;
508
+
322
509
  var schema = _defineProperty({}, 'x-uid', fieldSchema['x-uid']);
323
510
 
324
- var fieldNames = _objectSpread(_objectSpread({}, field.componentProps.fieldNames), {}, {
511
+ var fieldNames = _objectSpread(_objectSpread(_objectSpread({}, collectionField === null || collectionField === void 0 ? void 0 : (_collectionField$uiSc5 = collectionField.uiSchema) === null || _collectionField$uiSc5 === void 0 ? void 0 : (_collectionField$uiSc6 = _collectionField$uiSc5['x-component-props']) === null || _collectionField$uiSc6 === void 0 ? void 0 : _collectionField$uiSc6['fieldNames']), field.componentProps.fieldNames), {}, {
325
512
  label: label
326
- }); // if (fieldSchema['x-component-props']?.['field']?.['uiSchema']?.['x-component-props']) {
327
- // fieldSchema['x-component-props']['field']['uiSchema']['x-component-props']['fieldNames'] = fieldNames;
328
- // } else {
329
- // }
330
-
513
+ });
331
514
 
332
515
  fieldSchema['x-component-props'] = fieldSchema['x-component-props'] || {};
333
516
  fieldSchema['x-component-props']['fieldNames'] = fieldNames;
@@ -20,19 +20,29 @@ function _defineProperty(obj, key, value) { if (key in obj) { Object.definePrope
20
20
 
21
21
  function _taggedTemplateLiteral(strings, raw) { if (!raw) { raw = strings.slice(0); } return Object.freeze(Object.defineProperties(strings, { raw: { value: Object.freeze(raw) } })); }
22
22
 
23
- import { useDndMonitor, useDroppable } from '@dnd-kit/core';
23
+ import { useDndContext, useDndMonitor, useDroppable } from '@dnd-kit/core';
24
24
  import { css } from '@emotion/css';
25
25
  import { observer, RecursionField, Schema, useField, useFieldSchema } from '@formily/react';
26
26
  import { uid } from '@formily/shared';
27
27
  import cls from 'classnames';
28
- import React, { createContext, useContext, useState } from 'react';
29
- import { useSchemaInitializer } from '../../../';
28
+ import React, { createContext, useContext, useEffect, useRef, useState } from 'react';
29
+ import { useFormBlockContext, useSchemaInitializer } from '../../../';
30
30
  import { DndContext } from '../../common/dnd-context';
31
31
  var GridRowContext = /*#__PURE__*/createContext(null);
32
32
  var GridColContext = /*#__PURE__*/createContext(null);
33
33
  var GridContext = /*#__PURE__*/createContext({});
34
34
 
35
+ var breakRemoveOnGrid = function breakRemoveOnGrid(s) {
36
+ return s['x-component'] === 'Grid';
37
+ };
38
+
39
+ var breakRemoveOnRow = function breakRemoveOnRow(s) {
40
+ return s['x-component'] === 'Grid.Row';
41
+ };
42
+
35
43
  var ColDivider = function ColDivider(props) {
44
+ var _dndContext$active, _dndContext$active$da, _dndContext$active$da2;
45
+
36
46
  var _useDroppable = useDroppable({
37
47
  id: props.id,
38
48
  data: props.data
@@ -43,14 +53,31 @@ var ColDivider = function ColDivider(props) {
43
53
  var droppableStyle = {
44
54
  backgroundColor: isOver ? 'rgba(241, 139, 98, .1)' : undefined
45
55
  };
56
+ var dndContext = useDndContext();
57
+ 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;
58
+ var blocksLength = activeSchema ? Object.keys(activeSchema.properties).length : 0;
59
+ var visible = true;
60
+
61
+ if (blocksLength === 1) {
62
+ if (props.first) {
63
+ visible = activeSchema !== props.cols[0];
64
+ } else {
65
+ var currentSchema = props.cols[props.index];
66
+ var downSchema = props.cols[props.index + 1];
67
+ visible = activeSchema !== currentSchema && downSchema !== activeSchema;
68
+ }
69
+ }
70
+
46
71
  return /*#__PURE__*/React.createElement("div", {
47
- ref: setNodeRef,
72
+ ref: visible ? setNodeRef : null,
48
73
  className: cls('nb-col-divider', css(_templateObject || (_templateObject = _taggedTemplateLiteral(["\n width: 24px;\n "])))),
49
74
  style: _objectSpread({}, droppableStyle)
50
75
  });
51
76
  };
52
77
 
53
78
  var RowDivider = function RowDivider(props) {
79
+ var _dndContext$active2, _dndContext$active2$d, _dndContext$active2$d2;
80
+
54
81
  var _useDroppable2 = useDroppable({
55
82
  id: props.id,
56
83
  data: props.data
@@ -69,6 +96,23 @@ var RowDivider = function RowDivider(props) {
69
96
  active = _useState2[0],
70
97
  setActive = _useState2[1];
71
98
 
99
+ var dndContext = useDndContext();
100
+ var currentSchema = props.rows[props.index];
101
+ 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;
102
+ var colsLength = activeSchema === null || activeSchema === void 0 ? void 0 : activeSchema.mapProperties(function (schema) {
103
+ return schema['x-component'] === 'Grid.Col';
104
+ }).filter(Boolean).length;
105
+ var visible = true; // col > 1 时不需要隐藏
106
+
107
+ if (colsLength === 1) {
108
+ if (props.first) {
109
+ visible = activeSchema !== props.rows[0];
110
+ } else {
111
+ var downSchema = props.rows[props.index + 1];
112
+ visible = activeSchema !== currentSchema && downSchema !== activeSchema;
113
+ }
114
+ }
115
+
72
116
  useDndMonitor({
73
117
  onDragStart: function onDragStart(event) {
74
118
  setActive(true);
@@ -83,7 +127,7 @@ var RowDivider = function RowDivider(props) {
83
127
  }
84
128
  });
85
129
  return /*#__PURE__*/React.createElement("span", {
86
- ref: setNodeRef,
130
+ ref: visible ? setNodeRef : null,
87
131
  className: cls('nb-row-divider', css(_templateObject2 || (_templateObject2 = _taggedTemplateLiteral(["\n height: 24px;\n width: 100%;\n position: absolute;\n margin-top: -24px;\n "])))),
88
132
  style: _objectSpread({
89
133
  zIndex: active ? 1000 : -1
@@ -165,6 +209,7 @@ export var useGridRowContext = function useGridRowContext() {
165
209
  return useContext(GridRowContext);
166
210
  };
167
211
  export var Grid = observer(function (props) {
212
+ var gridRef = useRef(null);
168
213
  var field = useField();
169
214
  var fieldSchema = useFieldSchema();
170
215
 
@@ -173,8 +218,16 @@ export var Grid = observer(function (props) {
173
218
 
174
219
  var addr = field.address.toString();
175
220
  var rows = useRowProperties();
221
+
222
+ var _useFormBlockContext = useFormBlockContext(),
223
+ setPrintContent = _useFormBlockContext.setPrintContent;
224
+
225
+ useEffect(function () {
226
+ gridRef.current && (setPrintContent === null || setPrintContent === void 0 ? void 0 : setPrintContent(gridRef.current));
227
+ }, [gridRef.current]);
176
228
  return /*#__PURE__*/React.createElement(GridContext.Provider, {
177
229
  value: {
230
+ ref: gridRef,
178
231
  fieldSchema: fieldSchema,
179
232
  renderSchemaInitializer: render
180
233
  }
@@ -182,12 +235,16 @@ export var Grid = observer(function (props) {
182
235
  className: 'nb-grid',
183
236
  style: {
184
237
  position: 'relative'
185
- }
238
+ },
239
+ ref: gridRef
186
240
  }, /*#__PURE__*/React.createElement(DndWrapper, {
187
241
  dndContext: props.dndContext
188
242
  }, /*#__PURE__*/React.createElement(RowDivider, {
243
+ rows: rows,
244
+ first: true,
189
245
  id: "".concat(addr, "_0"),
190
246
  data: {
247
+ breakRemoveOn: breakRemoveOnGrid,
191
248
  wrapSchema: wrapRowSchema,
192
249
  insertAdjacent: 'afterBegin',
193
250
  schema: fieldSchema
@@ -199,8 +256,11 @@ export var Grid = observer(function (props) {
199
256
  name: schema.name,
200
257
  schema: schema
201
258
  }), /*#__PURE__*/React.createElement(RowDivider, {
259
+ rows: rows,
260
+ index: index,
202
261
  id: "".concat(addr, "_").concat(index + 1),
203
262
  data: {
263
+ breakRemoveOn: breakRemoveOnGrid,
204
264
  wrapSchema: wrapRowSchema,
205
265
  insertAdjacent: 'afterEnd',
206
266
  schema: schema
@@ -220,8 +280,11 @@ Grid.Row = observer(function (props) {
220
280
  }, /*#__PURE__*/React.createElement("div", {
221
281
  className: cls('nb-grid-row', css(_templateObject3 || (_templateObject3 = _taggedTemplateLiteral(["\n margin: 0 -24px;\n display: flex;\n position: relative;\n /* z-index: 0; */\n "]))))
222
282
  }, /*#__PURE__*/React.createElement(ColDivider, {
283
+ cols: cols,
284
+ first: true,
223
285
  id: "".concat(addr, "_0"),
224
286
  data: {
287
+ breakRemoveOn: breakRemoveOnRow,
225
288
  wrapSchema: wrapColSchema,
226
289
  insertAdjacent: 'afterBegin',
227
290
  schema: fieldSchema
@@ -233,8 +296,11 @@ Grid.Row = observer(function (props) {
233
296
  name: schema.name,
234
297
  schema: schema
235
298
  }), /*#__PURE__*/React.createElement(ColDivider, {
299
+ cols: cols,
300
+ index: index,
236
301
  id: "".concat(addr, "_").concat(index + 1),
237
302
  data: {
303
+ breakRemoveOn: breakRemoveOnRow,
238
304
  wrapSchema: wrapColSchema,
239
305
  insertAdjacent: 'afterEnd',
240
306
  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;
@@ -1,5 +1,29 @@
1
+ var _excluded = ["onChange"];
2
+
3
+ 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; }
4
+
5
+ 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; }
6
+
7
+ 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; }
8
+
9
+ 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; }
10
+
11
+ 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; }
12
+
1
13
  import { connect, mapReadPretty } from '@formily/react';
2
14
  import { InputNumber as AntdNumber } from 'antd';
15
+ import React from 'react';
3
16
  import { ReadPretty } from './ReadPretty';
4
- export var InputNumber = connect(AntdNumber, mapReadPretty(ReadPretty));
17
+ export var InputNumber = connect(function (props) {
18
+ var onChange = props.onChange,
19
+ others = _objectWithoutProperties(props, _excluded);
20
+
21
+ var handleChange = function handleChange(v) {
22
+ onChange(parseFloat(v));
23
+ };
24
+
25
+ return /*#__PURE__*/React.createElement(AntdNumber, _objectSpread({
26
+ onChange: handleChange
27
+ }, others));
28
+ }, mapReadPretty(ReadPretty));
5
29
  export default InputNumber;
@@ -1,6 +1,5 @@
1
1
  import { isValid } from '@formily/shared';
2
- import { toFixed } from 'rc-input-number/lib/utils/MiniDecimal';
3
- import { getNumberPrecision } from 'rc-input-number/lib/utils/numberUtil';
2
+ import { toFixedByStep } from '@nocobase/utils/client';
4
3
  import React from 'react';
5
4
  export var ReadPretty = function ReadPretty(props) {
6
5
  var step = props.step,
@@ -12,8 +11,7 @@ export var ReadPretty = function ReadPretty(props) {
12
11
  return /*#__PURE__*/React.createElement("div", null);
13
12
  }
14
13
 
15
- var precision = Math.max(getNumberPrecision(String(value)), getNumberPrecision(step));
16
14
  return /*#__PURE__*/React.createElement("div", {
17
15
  className: 'nb-read-pretty-input-number'
18
- }, addonBefore, toFixed(String(value), '.', precision), addonAfter);
16
+ }, addonBefore, toFixedByStep(value, step), addonAfter);
19
17
  };
@@ -57,6 +57,25 @@ export var KanbanCardDesigner = function KanbanCardDesigner(props) {
57
57
  readPretty: true,
58
58
  block: 'Kanban'
59
59
  });
60
+ var associationFields = useAssociatedFormItemInitializerFields({
61
+ readPretty: true,
62
+ block: 'Kanban'
63
+ });
64
+ var items = [{
65
+ type: 'itemGroup',
66
+ title: t('Display fields'),
67
+ children: fields
68
+ }];
69
+
70
+ if (associationFields.length > 0) {
71
+ items.push({
72
+ type: 'divider'
73
+ }, {
74
+ type: 'itemGroup',
75
+ title: t('Display association fields'),
76
+ children: associationFields
77
+ });
78
+ }
60
79
 
61
80
  if (!designable) {
62
81
  return null;
@@ -93,20 +112,7 @@ export var KanbanCardDesigner = function KanbanCardDesigner(props) {
93
112
  dn.loadAPIClientEvents();
94
113
  dn.insertBeforeEnd(schema);
95
114
  },
96
- items: [{
97
- type: 'itemGroup',
98
- title: t('Display fields'),
99
- children: fields
100
- }, {
101
- type: 'divider'
102
- }, {
103
- type: 'itemGroup',
104
- title: t('Display association fields'),
105
- children: useAssociatedFormItemInitializerFields({
106
- readPretty: true,
107
- block: 'Kanban'
108
- })
109
- }],
115
+ items: items,
110
116
  component: /*#__PURE__*/React.createElement(MenuOutlined, {
111
117
  style: {
112
118
  cursor: 'pointer',