@nocobase/plugin-workflow 0.11.0-alpha.1 → 0.11.1-alpha.2

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 (133) hide show
  1. package/lib/client/AddButton.js +13 -4
  2. package/lib/client/Branch.js +4 -2
  3. package/lib/client/CanvasContent.js +6 -4
  4. package/lib/client/ExecutionCanvas.js +18 -7
  5. package/lib/client/ExecutionPage.js +4 -2
  6. package/lib/client/WorkflowCanvas.js +16 -6
  7. package/lib/client/WorkflowPage.js +4 -2
  8. package/lib/client/WorkflowProvider.js +2 -2
  9. package/lib/client/components/CollectionBlockInitializer.js +3 -3
  10. package/lib/client/components/CollectionFieldset.js +7 -1
  11. package/lib/client/components/FieldsSelect.js +4 -1
  12. package/lib/client/components/NodeDescription.js +36 -22
  13. package/lib/client/index.js +3 -3
  14. package/lib/client/locale/zh-CN.d.ts +5 -1
  15. package/lib/client/locale/zh-CN.js +6 -2
  16. package/lib/client/nodes/aggregate.d.ts +6 -1
  17. package/lib/client/nodes/aggregate.js +4 -3
  18. package/lib/client/nodes/calculation.d.ts +5 -3
  19. package/lib/client/nodes/calculation.js +6 -5
  20. package/lib/client/nodes/condition.d.ts +1 -7
  21. package/lib/client/nodes/condition.js +12 -23
  22. package/lib/client/nodes/create.d.ts +2 -4
  23. package/lib/client/nodes/create.js +1 -3
  24. package/lib/client/nodes/index.d.ts +1 -2
  25. package/lib/client/nodes/index.js +24 -24
  26. package/lib/client/nodes/loop.js +19 -28
  27. package/lib/client/nodes/manual/FormBlockInitializer.js +6 -5
  28. package/lib/client/nodes/manual/SchemaConfig.d.ts +1 -2
  29. package/lib/client/nodes/manual/SchemaConfig.js +175 -21
  30. package/lib/client/nodes/manual/WorkflowTodo.js +39 -46
  31. package/lib/client/nodes/manual/forms/create.js +8 -1
  32. package/lib/client/nodes/manual/forms/custom.js +11 -4
  33. package/lib/client/nodes/manual/forms/update.js +8 -1
  34. package/lib/client/nodes/manual/index.d.ts +6 -1
  35. package/lib/client/nodes/manual/index.js +5 -4
  36. package/lib/client/nodes/parallel.js +7 -4
  37. package/lib/client/nodes/query.d.ts +2 -5
  38. package/lib/client/nodes/query.js +1 -3
  39. package/lib/client/nodes/sql.d.ts +26 -0
  40. package/lib/client/{triggers/schedule/DateFieldsSelect.js → nodes/sql.js} +37 -46
  41. package/lib/client/schemas/collection.d.ts +2 -3
  42. package/lib/client/schemas/collection.js +8 -7
  43. package/lib/client/style.d.ts +18 -13
  44. package/lib/client/style.js +312 -289
  45. package/lib/client/triggers/collection.d.ts +9 -10
  46. package/lib/client/triggers/collection.js +4 -0
  47. package/lib/client/triggers/index.d.ts +2 -3
  48. package/lib/client/triggers/index.js +10 -5
  49. package/lib/client/triggers/schedule/OnField.js +35 -23
  50. package/lib/client/triggers/schedule/ScheduleConfig.js +7 -7
  51. package/lib/client/triggers/schedule/index.d.ts +0 -1
  52. package/lib/client/triggers/schedule/index.js +31 -19
  53. package/lib/client/variable.d.ts +29 -11
  54. package/lib/client/variable.js +39 -24
  55. package/lib/server/Plugin.d.ts +1 -3
  56. package/lib/server/Plugin.js +10 -6
  57. package/lib/server/Processor.d.ts +1 -1
  58. package/lib/server/Processor.js +2 -2
  59. package/lib/server/instructions/create.d.ts +1 -1
  60. package/lib/server/instructions/create.js +13 -13
  61. package/lib/server/instructions/index.js +1 -1
  62. package/lib/server/instructions/manual/actions.js +19 -7
  63. package/lib/server/instructions/manual/forms/create.js +7 -1
  64. package/lib/server/instructions/manual/forms/update.js +7 -1
  65. package/lib/server/instructions/query.js +8 -1
  66. package/lib/server/instructions/request.d.ts +1 -1
  67. package/lib/server/instructions/request.js +4 -2
  68. package/lib/server/instructions/sql.d.ts +12 -0
  69. package/lib/server/instructions/sql.js +34 -0
  70. package/lib/server/migrations/20230710115902-manual-action-values.d.ts +4 -0
  71. package/lib/server/migrations/20230710115902-manual-action-values.js +97 -0
  72. package/lib/server/triggers/collection.js +13 -11
  73. package/lib/server/utils.d.ts +2 -0
  74. package/lib/server/utils.js +21 -0
  75. package/package.json +12 -11
  76. package/src/client/AddButton.tsx +17 -5
  77. package/src/client/Branch.tsx +4 -2
  78. package/src/client/CanvasContent.tsx +6 -4
  79. package/src/client/ExecutionCanvas.tsx +11 -13
  80. package/src/client/ExecutionPage.tsx +3 -2
  81. package/src/client/WorkflowCanvas.tsx +14 -13
  82. package/src/client/WorkflowPage.tsx +3 -2
  83. package/src/client/WorkflowProvider.tsx +2 -2
  84. package/src/client/components/CollectionBlockInitializer.tsx +3 -3
  85. package/src/client/components/CollectionFieldset.tsx +5 -3
  86. package/src/client/components/FieldsSelect.tsx +5 -1
  87. package/src/client/components/NodeDescription.tsx +30 -23
  88. package/src/client/index.tsx +3 -3
  89. package/src/client/locale/zh-CN.ts +8 -2
  90. package/src/client/nodes/aggregate.tsx +4 -4
  91. package/src/client/nodes/calculation.tsx +4 -5
  92. package/src/client/nodes/condition.tsx +7 -34
  93. package/src/client/nodes/create.tsx +0 -1
  94. package/src/client/nodes/index.tsx +21 -25
  95. package/src/client/nodes/loop.tsx +16 -31
  96. package/src/client/nodes/manual/FormBlockInitializer.tsx +6 -5
  97. package/src/client/nodes/manual/SchemaConfig.tsx +162 -18
  98. package/src/client/nodes/manual/WorkflowTodo.tsx +43 -47
  99. package/src/client/nodes/manual/forms/create.tsx +5 -1
  100. package/src/client/nodes/manual/forms/custom.tsx +7 -3
  101. package/src/client/nodes/manual/forms/update.tsx +5 -1
  102. package/src/client/nodes/manual/index.tsx +5 -5
  103. package/src/client/nodes/parallel.tsx +6 -5
  104. package/src/client/nodes/query.tsx +0 -1
  105. package/src/client/nodes/sql.tsx +37 -0
  106. package/src/client/schemas/collection.ts +6 -6
  107. package/src/client/style.tsx +324 -289
  108. package/src/client/triggers/collection.tsx +4 -0
  109. package/src/client/triggers/index.tsx +14 -10
  110. package/src/client/triggers/schedule/OnField.tsx +29 -15
  111. package/src/client/triggers/schedule/ScheduleConfig.tsx +21 -19
  112. package/src/client/triggers/schedule/index.tsx +25 -19
  113. package/src/client/variable.tsx +48 -26
  114. package/src/server/Plugin.ts +13 -9
  115. package/src/server/Processor.ts +2 -2
  116. package/src/server/__tests__/collections/categories.ts +4 -0
  117. package/src/server/__tests__/instructions/manual.test.ts +391 -72
  118. package/src/server/__tests__/instructions/request.test.ts +30 -0
  119. package/src/server/__tests__/instructions/sql.test.ts +162 -0
  120. package/src/server/__tests__/triggers/collection.test.ts +35 -0
  121. package/src/server/instructions/create.ts +13 -11
  122. package/src/server/instructions/index.ts +1 -0
  123. package/src/server/instructions/manual/actions.ts +16 -4
  124. package/src/server/instructions/manual/forms/create.ts +2 -1
  125. package/src/server/instructions/manual/forms/update.ts +3 -2
  126. package/src/server/instructions/query.ts +12 -1
  127. package/src/server/instructions/request.ts +2 -1
  128. package/src/server/instructions/sql.ts +25 -0
  129. package/src/server/migrations/20230710115902-manual-action-values.ts +78 -0
  130. package/src/server/triggers/collection.ts +15 -11
  131. package/src/server/utils.ts +17 -0
  132. package/lib/client/triggers/schedule/DateFieldsSelect.d.ts +0 -2
  133. package/src/client/triggers/schedule/DateFieldsSelect.tsx +0 -28
@@ -38,9 +38,8 @@ declare const _default: {
38
38
  'x-decorator': string;
39
39
  'x-component': string;
40
40
  'x-component-props': {
41
- mode: string;
42
- placeholder: string;
43
- filter(field: any): boolean;
41
+ useCollection(): any;
42
+ className: string;
44
43
  };
45
44
  'x-reactions': {
46
45
  dependencies: string[];
@@ -60,7 +59,6 @@ declare const _default: {
60
59
  };
61
60
  components: {
62
61
  CollectionFieldset: import("react").MemoExoticComponent<import("@formily/reactive-react").ReactFC<Omit<any, "ref">>>;
63
- FieldsSelect: import("react").MemoExoticComponent<import("@formily/reactive-react").ReactFC<Omit<any, "ref">>>;
64
62
  };
65
63
  useVariables({ id, title, config }: {
66
64
  id: any;
@@ -16,7 +16,6 @@ var _CollectionFieldset = _interopRequireDefault(require("../components/Collecti
16
16
  var _locale = require("../locale");
17
17
  var _CollectionBlockInitializer = require("../components/CollectionBlockInitializer");
18
18
  var _variable = require("../variable");
19
- var _FieldsSelect = require("../components/FieldsSelect");
20
19
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
21
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; }
22
21
  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; }
@@ -59,8 +58,7 @@ var _default = {
59
58
  useCollectionDataSource: _client().useCollectionDataSource
60
59
  },
61
60
  components: {
62
- CollectionFieldset: _CollectionFieldset.default,
63
- FieldsSelect: _FieldsSelect.FieldsSelect
61
+ CollectionFieldset: _CollectionFieldset.default
64
62
  },
65
63
  useVariables({
66
64
  id,
@@ -1,6 +1,5 @@
1
1
  import { ISchema } from '@formily/react';
2
2
  import { SchemaInitializerItemOptions } from '@nocobase/client';
3
- import { Registry } from '@nocobase/utils/client';
4
3
  import React from 'react';
5
4
  import { VariableOption, VariableOptions } from '../variable';
6
5
  export interface Instruction {
@@ -32,7 +31,7 @@ export interface Instruction {
32
31
  [key: string]: any;
33
32
  };
34
33
  }
35
- export declare const instructions: Registry<Instruction>;
34
+ export declare const instructions: any;
36
35
  export declare const NodeContext: React.Context<any>;
37
36
  export declare function useNodeContext(): any;
38
37
  export declare function useAvailableUpstreams(node: any): any[];
@@ -66,7 +66,7 @@ var _FlowContext = require("../FlowContext");
66
66
  var _NodeDescription = require("../components/NodeDescription");
67
67
  var _constants = require("../constants");
68
68
  var _locale = require("../locale");
69
- var _style = require("../style");
69
+ var _style = _interopRequireDefault(require("../style"));
70
70
  var _aggregate = _interopRequireDefault(require("./aggregate"));
71
71
  var _calculation = _interopRequireDefault(require("./calculation"));
72
72
  var _condition = _interopRequireDefault(require("./condition"));
@@ -79,6 +79,7 @@ var _parallel = _interopRequireDefault(require("./parallel"));
79
79
  var _query = _interopRequireDefault(require("./query"));
80
80
  var _request = _interopRequireDefault(require("./request"));
81
81
  var _update = _interopRequireDefault(require("./update"));
82
+ var _sql = _interopRequireDefault(require("./sql"));
82
83
  const _excluded = ["job"];
83
84
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
84
85
  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); }
@@ -112,6 +113,7 @@ instructions.register('update', _update.default);
112
113
  instructions.register('destroy', _destroy.default);
113
114
  instructions.register('aggregate', _aggregate.default);
114
115
  instructions.register('request', _request.default);
116
+ instructions.register('sql', _sql.default);
115
117
  function useUpdateAction() {
116
118
  const form = (0, _react().useForm)();
117
119
  const api = (0, _client().useAPIClient)();
@@ -172,6 +174,8 @@ function useUpstreamScopes(node) {
172
174
  function Node({
173
175
  data
174
176
  }) {
177
+ const _useStyles = (0, _style.default)(),
178
+ styles = _useStyles.styles;
175
179
  const _instructions$get = instructions.get(data.type),
176
180
  _instructions$get$com = _instructions$get.component,
177
181
  Component = _instructions$get$com === void 0 ? NodeDefaultView : _instructions$get$com,
@@ -179,7 +183,7 @@ function Node({
179
183
  return _react2().default.createElement(NodeContext.Provider, {
180
184
  value: data
181
185
  }, _react2().default.createElement("div", {
182
- className: (0, _client().cx)(_style.nodeBlockClass)
186
+ className: (0, _client().cx)(styles.nodeBlockClass)
183
187
  }, _react2().default.createElement(Component, {
184
188
  data: data
185
189
  }), !endding ? _react2().default.createElement(_AddButton.AddButton, {
@@ -213,6 +217,8 @@ function RemoveButton() {
213
217
  nodes = _ref.nodes,
214
218
  refresh = _ref.refresh;
215
219
  const current = useNodeContext();
220
+ const _App$useApp = _antd().App.useApp(),
221
+ modal = _App$useApp.modal;
216
222
  if (!workflow) {
217
223
  return null;
218
224
  }
@@ -246,7 +252,7 @@ function RemoveButton() {
246
252
  return refs.length;
247
253
  });
248
254
  if (usingNodes.length) {
249
- _antd().Modal.error({
255
+ modal.error({
250
256
  title: (0, _locale.lang)('Can not delete'),
251
257
  content: (0, _locale.lang)('The result of this node has been referenced by other nodes ({{nodes}}), please remove the usage before deleting.', {
252
258
  nodes: usingNodes.map(item => `#${item.id}`).join(', ')
@@ -256,7 +262,7 @@ function RemoveButton() {
256
262
  }
257
263
  const hasBranches = !nodes.find(item => item.upstream === current && item.branchIndex != null);
258
264
  const message = hasBranches ? t('Are you sure you want to delete it?') : (0, _locale.lang)('This node contains branches, deleting will also be preformed to them, are you sure?');
259
- _antd().Modal.confirm({
265
+ modal.confirm({
260
266
  title: t('Delete'),
261
267
  content: message,
262
268
  onOk
@@ -275,12 +281,15 @@ function RemoveButton() {
275
281
  function InnerJobButton(_ref2) {
276
282
  let job = _ref2.job,
277
283
  props = _objectWithoutProperties(_ref2, _excluded);
284
+ const _useStyles2 = (0, _style.default)(),
285
+ styles = _useStyles2.styles;
278
286
  const _JobStatusOptionsMap$ = _constants.JobStatusOptionsMap[job.status],
279
287
  icon = _JobStatusOptionsMap$.icon,
280
288
  color = _JobStatusOptionsMap$.color;
281
289
  return _react2().default.createElement(_antd().Button, _objectSpread(_objectSpread({}, props), {}, {
282
290
  shape: "circle",
283
- className: (0, _client().cx)(_style.nodeJobButtonClass, props.className)
291
+ size: "small",
292
+ className: (0, _client().cx)(styles.nodeJobButtonClass, props.className)
284
293
  }), _react2().default.createElement(_antd().Tag, {
285
294
  color: color
286
295
  }, icon));
@@ -292,12 +301,14 @@ function JobButton() {
292
301
  setViewJob = _useFlowContext3.setViewJob;
293
302
  const _ref3 = (_useNodeContext = useNodeContext()) !== null && _useNodeContext !== void 0 ? _useNodeContext : {},
294
303
  jobs = _ref3.jobs;
304
+ const _useStyles3 = (0, _style.default)(),
305
+ styles = _useStyles3.styles;
295
306
  if (!execution) {
296
307
  return null;
297
308
  }
298
309
  if (!jobs.length) {
299
310
  return _react2().default.createElement("span", {
300
- className: (0, _client().cx)(_style.nodeJobButtonClass, (0, _client().css)`
311
+ className: (0, _client().cx)(styles.nodeJobButtonClass, (0, _client().css)`
301
312
  border: 2px solid #d9d9d9;
302
313
  border-radius: 50%;
303
314
  cursor: not-allowed;
@@ -321,6 +332,7 @@ function JobButton() {
321
332
  label: _react2().default.createElement("div", {
322
333
  className: (0, _client().css)`
323
334
  display: flex;
335
+ align-items: center;
324
336
  gap: 0.5em;
325
337
 
326
338
  time {
@@ -329,7 +341,7 @@ function JobButton() {
329
341
  }
330
342
  `
331
343
  }, _react2().default.createElement("span", {
332
- className: (0, _client().cx)(_style.nodeJobButtonClass, 'inner')
344
+ className: (0, _client().cx)(styles.nodeJobButtonClass, 'inner')
333
345
  }, _react2().default.createElement(_antd().Tag, {
334
346
  color: color
335
347
  }, icon)), _react2().default.createElement("time", null, (0, _client2().str2moment)(job.updatedAt).format('YYYY-MM-DD HH:mm:ss')))
@@ -353,6 +365,8 @@ function NodeDefaultView(props) {
353
365
  const _ref4 = (_useFlowContext4 = (0, _FlowContext.useFlowContext)()) !== null && _useFlowContext4 !== void 0 ? _useFlowContext4 : {},
354
366
  workflow = _ref4.workflow,
355
367
  refresh = _ref4.refresh;
368
+ const _useStyles4 = (0, _style.default)(),
369
+ styles = _useStyles4.styles;
356
370
  const instruction = instructions.get(data.type);
357
371
  const detailText = workflow.executed ? '{{t("View")}}' : '{{t("Configure")}}';
358
372
  const typeTitle = compile(instruction.title);
@@ -400,14 +414,14 @@ function NodeDefaultView(props) {
400
414
  }
401
415
  }
402
416
  return _react2().default.createElement("div", {
403
- className: (0, _client().cx)(_style.nodeClass, `workflow-node-type-${data.type}`)
417
+ className: (0, _client().cx)(styles.nodeClass, `workflow-node-type-${data.type}`)
404
418
  }, _react2().default.createElement("div", {
405
- className: (0, _client().cx)(_style.nodeCardClass, {
419
+ className: (0, _client().cx)(styles.nodeCardClass, {
406
420
  configuring: editingConfig
407
421
  }),
408
422
  onClick: onOpenDrawer
409
423
  }, _react2().default.createElement("div", {
410
- className: (0, _client().cx)(_style.nodeMetaClass, 'workflow-node-meta')
424
+ className: (0, _client().cx)(styles.nodeMetaClass, 'workflow-node-meta')
411
425
  }, _react2().default.createElement(_antd().Tag, null, typeTitle), _react2().default.createElement("span", {
412
426
  className: "workflow-node-id"
413
427
  }, data.id)), _react2().default.createElement("div", null, _react2().default.createElement(_antd().Input.TextArea, {
@@ -488,20 +502,6 @@ function NodeDefaultView(props) {
488
502
  .ant-cascader-picker,
489
503
  .ant-picker,
490
504
  .ant-input-number,
491
- .ant-input-affix-wrapper {
492
- &:not(.full-width) {
493
- width: auto;
494
- min-width: 6em;
495
- }
496
- }
497
- .ant-input-affix-wrapper {
498
- &:not(.full-width) {
499
- .ant-input {
500
- width: auto;
501
- min-width: 6em;
502
- }
503
- }
504
- }
505
505
  `
506
506
  },
507
507
  properties: instruction.fieldset
@@ -29,7 +29,7 @@ var _ = require(".");
29
29
  var _Branch = require("../Branch");
30
30
  var _FlowContext = require("../FlowContext");
31
31
  var _locale = require("../locale");
32
- var _style = require("../style");
32
+ var _style = _interopRequireDefault(require("../style"));
33
33
  var _variable = require("../variable");
34
34
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
35
35
  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; }
@@ -91,13 +91,15 @@ var _default = {
91
91
  var _entry$branchIndex;
92
92
  const _useFlowContext = (0, _FlowContext.useFlowContext)(),
93
93
  nodes = _useFlowContext.nodes;
94
+ const _useStyles = (0, _style.default)(),
95
+ styles = _useStyles.styles;
94
96
  const entry = nodes.find(node => node.upstreamId === data.id && node.branchIndex != null);
95
97
  return _react().default.createElement(_.NodeDefaultView, {
96
98
  data: data
97
99
  }, _react().default.createElement("div", {
98
- className: (0, _client().cx)(_style.nodeSubtreeClass)
100
+ className: styles.nodeSubtreeClass
99
101
  }, _react().default.createElement("div", {
100
- className: (0, _client().cx)(_style.branchBlockClass, (0, _client().css)`
102
+ className: (0, _client().cx)(styles.branchBlockClass, (0, _client().css)`
101
103
  padding-left: 20em;
102
104
  `)
103
105
  }, _react().default.createElement(_Branch.Branch, {
@@ -105,25 +107,12 @@ var _default = {
105
107
  entry: entry,
106
108
  branchIndex: (_entry$branchIndex = entry === null || entry === void 0 ? void 0 : entry.branchIndex) !== null && _entry$branchIndex !== void 0 ? _entry$branchIndex : 0
107
109
  }), _react().default.createElement("div", {
108
- className: (0, _client().cx)(_style.branchClass)
110
+ className: styles.branchClass
109
111
  }, _react().default.createElement("div", {
110
112
  className: "workflow-branch-lines"
111
113
  }), _react().default.createElement("div", {
112
- className: (0, _client().cx)(_style.addButtonClass, (0, _client().css)`
113
- display: flex;
114
- justify-content: center;
115
- align-items: center;
116
- position: absolute;
117
- top: 50%;
118
- transform: translateY(-50%);
119
- width: 2em;
120
- height: 6em;
121
- `)
122
- }, _react().default.createElement(_icons().ArrowUpOutlined, {
123
- className: (0, _client().css)`
124
- background-color: var(--nb-box-bg);
125
- `
126
- })))), _react().default.createElement("div", {
114
+ className: (0, _client().cx)(styles.addButtonClass, styles.loopLineClass)
115
+ }, _react().default.createElement(_icons().ArrowUpOutlined, null)))), _react().default.createElement("div", {
127
116
  className: (0, _client().css)`
128
117
  position: relative;
129
118
  height: 2em;
@@ -140,6 +129,8 @@ var _default = {
140
129
  if (!target) {
141
130
  return null;
142
131
  }
132
+ const _options$fieldNames = options.fieldNames,
133
+ fieldNames = _options$fieldNames === void 0 ? _variable.defaultFieldNames : _options$fieldNames;
143
134
  // const { workflow } = useFlowContext();
144
135
  // const current = useNodeContext();
145
136
  // const upstreams = useAvailableUpstreams(current);
@@ -148,18 +139,18 @@ var _default = {
148
139
  // 2. route to sub-options and use as loop target options
149
140
  let targetOption = {
150
141
  key: 'item',
151
- value: 'item',
152
- label: (0, _locale.lang)('Loop target')
142
+ [fieldNames.value]: 'item',
143
+ [fieldNames.label]: (0, _locale.lang)('Loop target')
153
144
  };
154
145
  if (typeof target === 'string' && target.startsWith('{{') && target.endsWith('}}')) {
155
146
  const paths = target.slice(2, -2).split('.').map(path => path.trim());
156
147
  const targetOptions = [_variable.nodesOptions, _variable.triggerOptions].map(item => {
157
148
  const opts = item.useOptions(options).filter(Boolean);
158
149
  return {
159
- label: compile(item.title),
160
- value: item.value,
150
+ [fieldNames.label]: compile(item.title),
151
+ [fieldNames.value]: item.value,
161
152
  key: item.value,
162
- children: opts,
153
+ [fieldNames.children]: opts,
163
154
  disabled: opts && !opts.length
164
155
  };
165
156
  });
@@ -168,12 +159,12 @@ var _default = {
168
159
  }
169
160
  return [targetOption, {
170
161
  key: 'index',
171
- value: 'index',
172
- label: (0, _locale.lang)('Loop index')
162
+ [fieldNames.value]: 'index',
163
+ [fieldNames.label]: (0, _locale.lang)('Loop index')
173
164
  }, {
174
165
  key: 'length',
175
- value: 'length',
176
- label: (0, _locale.lang)('Loop length')
166
+ [fieldNames.value]: 'length',
167
+ [fieldNames.label]: (0, _locale.lang)('Loop length')
177
168
  }];
178
169
  }
179
170
  };
@@ -68,11 +68,8 @@ function InternalFormBlockInitializer(_ref) {
68
68
  type: 'primary',
69
69
  useAction: '{{ useSubmit }}'
70
70
  },
71
- 'x-designer': 'Action.Designer',
72
- 'x-designer-props': {
73
- type: 'record'
74
- },
75
- 'x-action': `${_constants.JOB_STATUS.RESOLVED}`
71
+ 'x-designer': 'ManualActionDesigner',
72
+ 'x-designer-props': {}
76
73
  }
77
74
  }
78
75
  }, schema), {}, {
@@ -84,6 +81,10 @@ function InternalFormBlockInitializer(_ref) {
84
81
  _Object$keys2 = _slicedToArray(_Object$keys, 1),
85
82
  formKey = _Object$keys2[0];
86
83
  result.properties[formKey].properties.actions['x-decorator'] = 'ActionBarProvider';
84
+ result.properties[formKey].properties.actions['x-component-props'].style = {
85
+ marginTop: '1.5em',
86
+ flexWrap: 'wrap'
87
+ };
87
88
  (0, _utils.traverseSchema)(result, node => {
88
89
  if (node['x-uid']) {
89
90
  delete node['x-uid'];
@@ -1,7 +1,6 @@
1
1
  import React from 'react';
2
2
  import { ISchema } from '@formily/react';
3
3
  import { SchemaInitializerItemOptions } from '@nocobase/client';
4
- import { Registry } from '@nocobase/utils/client';
5
4
  import { JOB_STATUS } from '../../constants';
6
5
  type ValueOf<T> = T[keyof T];
7
6
  export type FormType = {
@@ -37,7 +36,7 @@ export type ManualFormType = {
37
36
  };
38
37
  };
39
38
  };
40
- export declare const manualFormTypes: Registry<ManualFormType>;
39
+ export declare const manualFormTypes: any;
41
40
  export declare function SchemaConfig({ value, onChange }: {
42
41
  value: any;
43
42
  onChange: any;
@@ -13,6 +13,13 @@ function _react() {
13
13
  };
14
14
  return data;
15
15
  }
16
+ function _core() {
17
+ const data = require("@formily/core");
18
+ _core = function _core() {
19
+ return data;
20
+ };
21
+ return data;
22
+ }
16
23
  function _react2() {
17
24
  const data = require("@formily/react");
18
25
  _react2 = function _react2() {
@@ -20,6 +27,27 @@ function _react2() {
20
27
  };
21
28
  return data;
22
29
  }
30
+ function _antdV() {
31
+ const data = require("@formily/antd-v5");
32
+ _antdV = function _antdV() {
33
+ return data;
34
+ };
35
+ return data;
36
+ }
37
+ function _antd() {
38
+ const data = require("antd");
39
+ _antd = function _antd() {
40
+ return data;
41
+ };
42
+ return data;
43
+ }
44
+ function _reactI18next() {
45
+ const data = require("react-i18next");
46
+ _reactI18next = function _reactI18next() {
47
+ return data;
48
+ };
49
+ return data;
50
+ }
23
51
  function _client() {
24
52
  const data = require("@nocobase/client");
25
53
  _client = function _client() {
@@ -34,16 +62,9 @@ function _client2() {
34
62
  };
35
63
  return data;
36
64
  }
37
- function _antd() {
38
- const data = require("antd");
39
- _antd = function _antd() {
40
- return data;
41
- };
42
- return data;
43
- }
44
65
  var _ = require("..");
45
- var _FlowContext = require("../../FlowContext");
46
66
  var _constants = require("../../constants");
67
+ var _FlowContext = require("../../FlowContext");
47
68
  var _locale = require("../../locale");
48
69
  var _triggers = require("../../triggers");
49
70
  var _DetailsBlockProvider = require("./DetailsBlockProvider");
@@ -51,18 +72,20 @@ var _FormBlockProvider = require("./FormBlockProvider");
51
72
  var _create = _interopRequireDefault(require("./forms/create"));
52
73
  var _custom = _interopRequireDefault(require("./forms/custom"));
53
74
  var _update = _interopRequireDefault(require("./forms/update"));
54
- const _excluded = ["action", "actionProps"];
75
+ var _variable = require("../../variable");
76
+ const _excluded = ["action", "actionProps", "insert"],
77
+ _excluded2 = ["action", "actionProps"];
55
78
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
56
79
  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); }
57
80
  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; }
81
+ 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; }
82
+ 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; }
58
83
  function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
59
84
  function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
60
85
  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); }
61
86
  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; }
62
87
  function _iterableToArrayLimit(arr, i) { var _i = null == arr ? null : "undefined" != typeof Symbol && arr[Symbol.iterator] || arr["@@iterator"]; if (null != _i) { var _s, _e, _x, _r, _arr = [], _n = !0, _d = !1; try { if (_x = (_i = _i.call(arr)).next, 0 === i) { if (Object(_i) !== _i) return; _n = !1; } else for (; !(_n = (_s = _x.call(_i)).done) && (_arr.push(_s.value), _arr.length !== i); _n = !0); } catch (err) { _d = !0, _e = err; } finally { try { if (!_n && null != _i.return && (_r = _i.return(), Object(_r) !== _r)) return; } finally { if (_d) throw _e; } } return _arr; } }
63
88
  function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
64
- 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; }
65
- 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; }
66
89
  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
90
  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; }
68
91
  function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
@@ -138,10 +161,141 @@ function AddBlockButton(props) {
138
161
  title: "{{t('Add block')}}"
139
162
  }));
140
163
  }
141
- function ActionInitializer(_ref) {
164
+ function AssignedFieldValues() {
165
+ var _fieldSchema$xAction, _fieldSchema$xAction2, _fieldSchema$xAction3;
166
+ const ctx = (0, _react().useContext)(_client().SchemaComponentContext);
167
+ const _useTranslation = (0, _reactI18next().useTranslation)(),
168
+ t = _useTranslation.t;
169
+ const fieldSchema = (0, _react2().useFieldSchema)();
170
+ const scope = (0, _variable.useWorkflowVariableOptions)({
171
+ fieldNames: {
172
+ label: 'title',
173
+ value: 'name'
174
+ }
175
+ });
176
+ const _useState = (0, _react().useState)(false),
177
+ _useState2 = _slicedToArray(_useState, 2),
178
+ open = _useState2[0],
179
+ setOpen = _useState2[1];
180
+ const _useState3 = (0, _react().useState)((_fieldSchema$xAction = fieldSchema === null || fieldSchema === void 0 ? void 0 : (_fieldSchema$xAction2 = fieldSchema['x-action-settings']) === null || _fieldSchema$xAction2 === void 0 ? void 0 : (_fieldSchema$xAction3 = _fieldSchema$xAction2.assignedValues) === null || _fieldSchema$xAction3 === void 0 ? void 0 : _fieldSchema$xAction3.schema) !== null && _fieldSchema$xAction !== void 0 ? _fieldSchema$xAction : {
181
+ type: 'void',
182
+ 'x-component': 'Grid',
183
+ 'x-initializer': 'CustomFormItemInitializers',
184
+ properties: {}
185
+ }),
186
+ _useState4 = _slicedToArray(_useState3, 2),
187
+ initialSchema = _useState4[0],
188
+ setInitialSchema = _useState4[1];
189
+ const _useState5 = (0, _react().useState)(null),
190
+ _useState6 = _slicedToArray(_useState5, 2),
191
+ schema = _useState6[0],
192
+ setSchema = _useState6[1];
193
+ const _useSchemaOptionsCont = (0, _client().useSchemaOptionsContext)(),
194
+ components = _useSchemaOptionsCont.components;
195
+ (0, _react().useEffect)(() => {
196
+ setSchema(new (_react2().Schema)({
197
+ properties: {
198
+ grid: initialSchema
199
+ }
200
+ }));
201
+ }, [initialSchema]);
202
+ const form = (0, _react().useMemo)(() => {
203
+ var _fieldSchema$xAction4, _fieldSchema$xAction5;
204
+ const initialValues = fieldSchema === null || fieldSchema === void 0 ? void 0 : (_fieldSchema$xAction4 = fieldSchema['x-action-settings']) === null || _fieldSchema$xAction4 === void 0 ? void 0 : (_fieldSchema$xAction5 = _fieldSchema$xAction4.assignedValues) === null || _fieldSchema$xAction5 === void 0 ? void 0 : _fieldSchema$xAction5.values;
205
+ return (0, _core().createForm)({
206
+ initialValues: _client2().lodash.cloneDeep(initialValues),
207
+ values: _client2().lodash.cloneDeep(initialValues)
208
+ });
209
+ }, []);
210
+ const title = t('Assign field values');
211
+ function onCancel() {
212
+ setOpen(false);
213
+ }
214
+ function onSubmit() {
215
+ if (!fieldSchema['x-action-settings']) {
216
+ fieldSchema['x-action-settings'] = {};
217
+ }
218
+ if (!fieldSchema['x-action-settings'].assignedValues) {
219
+ fieldSchema['x-action-settings'].assignedValues = {};
220
+ }
221
+ fieldSchema['x-action-settings'].assignedValues.schema = initialSchema;
222
+ fieldSchema['x-action-settings'].assignedValues.values = form.values;
223
+ setOpen(false);
224
+ setTimeout(() => {
225
+ var _ctx$refresh;
226
+ (_ctx$refresh = ctx.refresh) === null || _ctx$refresh === void 0 ? void 0 : _ctx$refresh.call(ctx);
227
+ }, 300);
228
+ }
229
+ return _react().default.createElement(_react().default.Fragment, null, _react().default.createElement(_client().SchemaSettings.Item, {
230
+ onClick: () => setOpen(true)
231
+ }, title), _react().default.createElement(_antd().Modal, {
232
+ width: '50%',
233
+ title: title,
234
+ open: open,
235
+ onCancel: onCancel,
236
+ footer: _react().default.createElement(_antd().Space, null, _react().default.createElement(_antd().Button, {
237
+ onClick: onCancel
238
+ }, t('Cancel')), _react().default.createElement(_antd().Button, {
239
+ type: "primary",
240
+ onClick: onSubmit
241
+ }, t('Submit')))
242
+ }, _react().default.createElement(_client().VariableScopeProvider, {
243
+ scope: scope
244
+ }, _react().default.createElement(_react2().FormProvider, {
245
+ form: form
246
+ }, _react().default.createElement(_antdV().FormLayout, {
247
+ layout: 'vertical'
248
+ }, _react().default.createElement(_antd().Alert, {
249
+ message: (0, _locale.lang)('Values preset in this form will override user submitted ones when continue or reject.')
250
+ }), _react().default.createElement("br", null), open && schema && _react().default.createElement(_client().SchemaComponentContext.Provider, {
251
+ value: _objectSpread(_objectSpread({}, ctx), {}, {
252
+ refresh() {
253
+ setInitialSchema(_client2().lodash.get(schema.toJSON(), 'properties.grid'));
254
+ }
255
+ })
256
+ }, _react().default.createElement(_client().SchemaComponent, {
257
+ schema: schema,
258
+ components: components
259
+ })))))));
260
+ }
261
+ function ManualActionDesigner(props) {
262
+ return _react().default.createElement(_client().GeneralSchemaDesigner, _objectSpread(_objectSpread({}, props), {}, {
263
+ disableInitializer: true
264
+ }), _react().default.createElement(_client().Action.Designer.ButtonEditor, null), _react().default.createElement(AssignedFieldValues, null), _react().default.createElement(_client().SchemaSettings.Divider, null), _react().default.createElement(_client().SchemaSettings.Remove, {
265
+ removeParentsIfNoChildren: true,
266
+ breakRemoveOn: {
267
+ 'x-component': 'ActionBar'
268
+ }
269
+ }));
270
+ }
271
+ function ContinueInitializer(_ref) {
142
272
  let action = _ref.action,
143
273
  actionProps = _ref.actionProps,
274
+ insert = _ref.insert,
144
275
  props = _objectWithoutProperties(_ref, _excluded);
276
+ return _react().default.createElement(_client().SchemaInitializer.Item, _objectSpread(_objectSpread({}, props), {}, {
277
+ onClick: () => {
278
+ insert({
279
+ type: 'void',
280
+ title: props.title,
281
+ 'x-decorator': 'ManualActionStatusProvider',
282
+ 'x-decorator-props': {
283
+ value: action
284
+ },
285
+ 'x-component': 'Action',
286
+ 'x-component-props': _objectSpread(_objectSpread({}, actionProps), {}, {
287
+ useAction: '{{ useSubmit }}'
288
+ }),
289
+ 'x-designer': 'ManualActionDesigner',
290
+ 'x-action-settings': {}
291
+ });
292
+ }
293
+ }));
294
+ }
295
+ function ActionInitializer(_ref2) {
296
+ let action = _ref2.action,
297
+ actionProps = _ref2.actionProps,
298
+ props = _objectWithoutProperties(_ref2, _excluded2);
145
299
  return _react().default.createElement(_client().InitializerWithSwitch, _objectSpread(_objectSpread({}, props), {}, {
146
300
  schema: {
147
301
  type: 'void',
@@ -166,7 +320,7 @@ function AddActionButton(props) {
166
320
  key: _constants.JOB_STATUS.RESOLVED,
167
321
  type: 'item',
168
322
  title: `{{t("Continue the process", { ns: "${_locale.NAMESPACE}" })}}`,
169
- component: ActionInitializer,
323
+ component: ContinueInitializer,
170
324
  action: _constants.JOB_STATUS.RESOLVED,
171
325
  actionProps: {
172
326
  type: 'primary'
@@ -178,7 +332,6 @@ function AddActionButton(props) {
178
332
  component: ActionInitializer,
179
333
  action: _constants.JOB_STATUS.REJECTED,
180
334
  actionProps: {
181
- type: 'primary',
182
335
  danger: true
183
336
  }
184
337
  }, {
@@ -261,8 +414,8 @@ function SchemaConfig({
261
414
  value: _objectSpread(_objectSpread({}, ctx), {}, {
262
415
  designable: !workflow.executed,
263
416
  refresh() {
264
- var _ctx$refresh;
265
- (_ctx$refresh = ctx.refresh) === null || _ctx$refresh === void 0 ? void 0 : _ctx$refresh.call(ctx);
417
+ var _ctx$refresh2;
418
+ (_ctx$refresh2 = ctx.refresh) === null || _ctx$refresh2 === void 0 ? void 0 : _ctx$refresh2.call(ctx);
266
419
  const _lodash$get = _client2().lodash.get(schema.toJSON(), 'properties.drawer.properties'),
267
420
  tabs = _lodash$get.tabs;
268
421
  const forms = Array.from(manualFormTypes.getValues()).reduce((result, item) => Object.assign(result, item.config.parseFormOptions(tabs)), {});
@@ -287,7 +440,8 @@ function SchemaConfig({
287
440
  ActionBarProvider(props) {
288
441
  return props.children;
289
442
  },
290
- SimpleDesigner
443
+ SimpleDesigner,
444
+ ManualActionDesigner
291
445
  }),
292
446
  scope: {
293
447
  useSubmit,
@@ -298,10 +452,10 @@ function SchemaConfig({
298
452
  function SchemaConfigButton(props) {
299
453
  const _useFlowContext3 = (0, _FlowContext.useFlowContext)(),
300
454
  workflow = _useFlowContext3.workflow;
301
- const _useState = (0, _react().useState)(false),
302
- _useState2 = _slicedToArray(_useState, 2),
303
- visible = _useState2[0],
304
- setVisible = _useState2[1];
455
+ const _useState7 = (0, _react().useState)(false),
456
+ _useState8 = _slicedToArray(_useState7, 2),
457
+ visible = _useState8[0],
458
+ setVisible = _useState8[1];
305
459
  return _react().default.createElement(_react().default.Fragment, null, _react().default.createElement(_antd().Button, {
306
460
  type: "primary",
307
461
  onClick: () => setVisible(true)