@gadmin2n/schematics 0.0.142 → 0.0.144

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 (140) hide show
  1. package/dist/lib/application/files/gadmin2-game-angle-demo/config/prisma/workflow.prisma +5 -23
  2. package/dist/lib/application/files/gadmin2-game-angle-demo/server/scripts/lib/page-helpers.ts +4 -2
  3. package/dist/lib/application/files/gadmin2-game-angle-demo/server/scripts/page-manage.ts +36 -1
  4. package/dist/lib/application/files/gadmin2-game-angle-demo/server/seed/agenda.seed.ts +14 -14
  5. package/dist/lib/application/files/gadmin2-game-angle-demo/server/seed/bootstrap.ts +18 -13
  6. package/dist/lib/application/files/gadmin2-game-angle-demo/server/seed/canvas.seed.ts +14 -14
  7. package/dist/lib/application/files/gadmin2-game-angle-demo/server/seed/index.ts +1 -1
  8. package/dist/lib/application/files/gadmin2-game-angle-demo/server/seed/workflow-node-types.ts +67 -404
  9. package/dist/lib/application/files/gadmin2-game-angle-demo/server/seed/workflow.seed.ts +16 -40
  10. package/dist/lib/application/files/gadmin2-game-angle-demo/server/seed/workflows.ts +12 -124
  11. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/app.module.ts +3 -0
  12. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/config/index.ts +0 -21
  13. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/codeRuntime/code-runtime.controller.ts +3 -10
  14. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/codeRuntime/codeRuntime.module.ts +1 -2
  15. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/externalInteraction/external-callback.controller.spec.ts +48 -0
  16. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/externalInteraction/external-callback.controller.ts +96 -0
  17. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/externalInteraction/external-interaction-runtime.controller.spec.ts +1 -59
  18. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/externalInteraction/external-interaction-runtime.controller.ts +8 -43
  19. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/externalInteraction/external-interaction-runtime.dto.ts +0 -23
  20. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/externalInteraction/external-interaction.service.ts +2 -0
  21. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/externalInteraction/external-wait.handler.ts +2 -0
  22. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/externalInteraction/externalInteraction.module.ts +7 -3
  23. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/externalInteraction/workflow-callback-url.controller.ts +2 -2
  24. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/externalInteraction/workflow-callback-url.service.spec.ts +18 -123
  25. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/externalInteraction/workflow-callback-url.service.ts +4 -0
  26. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/httpRequest/http-request-runtime.controller.ts +3 -10
  27. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/httpRequest/httpRequest.module.ts +1 -2
  28. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/humanApproval/human-approval.controller.ts +0 -10
  29. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/humanApproval/human-approval.dto.ts +12 -4
  30. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/humanApproval/human-approval.errors.ts +1 -1
  31. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/humanApproval/human-approval.external-decision.spec.ts +42 -209
  32. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/humanApproval/human-approval.service.ts +108 -225
  33. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/humanApproval/humanApproval.module.ts +0 -2
  34. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/humanApproval/runtime/human-approval-runtime.controller.ts +27 -22
  35. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/humanApproval/runtime/human-approval-runtime.dto.ts +9 -1
  36. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/humanApproval/runtime/runtime-token.guard.spec.ts +30 -0
  37. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/humanApproval/runtime/runtime-token.guard.ts +8 -15
  38. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/index.ts +0 -2
  39. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/temporalTenantConfig/runtime-connectivity-probe.service.spec.ts +14 -0
  40. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/temporalTenantConfig/runtime-connectivity-probe.service.ts +37 -0
  41. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/temporalTenantConfig/temporalTenantConfig.controller.spec.ts +41 -0
  42. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/temporalTenantConfig/temporalTenantConfig.controller.ts +53 -0
  43. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/temporalTenantConfig/temporalTenantConfig.module.ts +7 -2
  44. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/temporalTenantConfig/workflow-runtime-health.controller.ts +21 -0
  45. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/workflow/dsl-validate.util.spec.ts +2 -2
  46. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/workflow/workflow-callable.spec.ts +16 -88
  47. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/workflow/workflow-callable.ts +23 -59
  48. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/workflow/workflow-compiler.service.spec.ts +125 -39
  49. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/workflow/workflow-compiler.service.ts +95 -28
  50. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/workflow/workflow-handle-validator.ts +0 -20
  51. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/workflow/workflow-http-response.spec.ts +23 -26
  52. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/workflow/workflow-http-response.ts +6 -52
  53. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/workflow/workflow.controller.ts +2 -2
  54. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/workflow/workflow.service.spec.ts +24 -0
  55. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/workflow/workflow.service.ts +26 -21
  56. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/workflowConfig/widget-catalog.service.spec.ts +0 -1
  57. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/workflowConfig/widget-catalog.service.ts +0 -1
  58. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/workflowRuntimeConfig/workflow-runtime-config.service.spec.ts +32 -0
  59. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/workflowRuntimeConfig/workflow-runtime-config.service.ts +41 -0
  60. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/workflowRuntimeConfig/workflowRuntimeConfig.module.ts +10 -0
  61. package/dist/lib/application/files/gadmin2-game-angle-demo/server/tsconfig.build.json +10 -1
  62. package/dist/lib/application/files/gadmin2-game-angle-demo/temporal/README.md +16 -12
  63. package/dist/lib/application/files/gadmin2-game-angle-demo/web/package.json +1 -1
  64. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/components/PageHeader.tsx +1 -1
  65. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/components/agentPanel/inspectorActions.ts +19 -19
  66. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/components/contexts/color-mode/index.tsx +1 -1
  67. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/components/layout/header.tsx +15 -11
  68. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/config/routeRegistry.tsx +0 -6
  69. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/dev-shell/AddDataModal.tsx +3 -3
  70. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/dev-shell/AddPageModal.tsx +1 -1
  71. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/dev-shell/DeleteDataConfirm.tsx +1 -1
  72. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/dev-shell/EditDataModal.tsx +1 -1
  73. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/hooks/useDynamicResources.tsx +1 -0
  74. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/locales/en/workflow.json +85 -95
  75. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/locales/zh_CN/workflow.json +85 -95
  76. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/agenda/index.tsx +2 -2
  77. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/agendaJob/list.tsx +21 -2
  78. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/game/list.tsx +21 -2
  79. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/human-approval/inbox.tsx +14 -66
  80. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/page/list.tsx +4 -4
  81. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/resource/list.tsx +3 -3
  82. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/role/list.tsx +3 -3
  83. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/components/CustomNode.test.tsx +29 -0
  84. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/components/CustomNode.tsx +4 -2
  85. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/components/EnhancedFlowRenderer.tsx +4 -6
  86. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/components/ExecutionStatusNode.test.tsx +3 -0
  87. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/components/ExecutionStatusNode.tsx +3 -1
  88. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/components/FlowRenderer.tsx +4 -6
  89. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/components/NewNodeDefaults.test.tsx +23 -92
  90. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/components/NodeOutputSummary.tsx +200 -0
  91. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/components/NodePropertyPanel.test.tsx +61 -136
  92. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/components/NodePropertyPanel.tsx +96 -195
  93. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/components/NodeTypeBadge.tsx +36 -0
  94. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/node-instances/components/CreateNodeInstanceModal.tsx +5 -10
  95. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/node-instances/components/NodeInstanceForm.tsx +47 -22
  96. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/node-instances/create.tsx +7 -5
  97. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/node-instances/edit.tsx +8 -6
  98. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/node-instances/node-config.css +35 -0
  99. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/node-instances/schema-form/default-widgets.tsx +1 -6
  100. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/node-instances/widgets/ApproverSourceEditor.tsx +1 -4
  101. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/node-instances/widgets/CodeConfigEditor.tsx +1 -1
  102. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/node-instances/widgets/ExternalRequestConfigEditor.tsx +1 -1
  103. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/node-instances/widgets/ExternalWaitConfigEditor.tsx +82 -259
  104. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/node-instances/widgets/HttpRequestConfigEditor.tsx +1 -2
  105. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/node-instances/widgets/HumanApprovalConfigEditor.test.tsx +7 -6
  106. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/node-instances/widgets/HumanApprovalConfigEditor.tsx +77 -71
  107. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/node-instances/widgets/ReturnResultConfigEditor.test.tsx +10 -57
  108. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/node-instances/widgets/ReturnResultConfigEditor.tsx +8 -273
  109. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/temporal-tenant/index.test.tsx +54 -0
  110. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/temporal-tenant/index.tsx +110 -20
  111. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/utils/newNodeConfig.ts +4 -34
  112. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/utils/resolveOutputs.test.ts +3 -10
  113. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/utils/resolveOutputs.ts +2 -37
  114. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflowEventOutbox/list.tsx +26 -2
  115. package/package.json +1 -1
  116. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/approvalChannel/approval-channel.controller.ts +0 -89
  117. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/approvalChannel/approval-channel.dto.ts +0 -68
  118. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/approvalChannel/approval-channel.service.spec.ts +0 -177
  119. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/approvalChannel/approval-channel.service.ts +0 -283
  120. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/approvalChannel/approvalChannel.module.ts +0 -10
  121. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/approval-channels/ApprovalChannelModal.test.tsx +0 -84
  122. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/approval-channels/ApprovalChannelModal.tsx +0 -141
  123. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/approval-channels/approval-channel.types.ts +0 -16
  124. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/approval-channels/index.tsx +0 -210
  125. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/node-instances/widgets/ApprovalRequestTriggerConfigEditor.tsx +0 -39
  126. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/node-instances/widgets/SubmitApprovalResultConfigEditor.tsx +0 -104
  127. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/node-instances/widgets/SubmitExternalResultConfigEditor.tsx +0 -98
  128. /package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/page/{Components → components}/AssignRolesModal.tsx +0 -0
  129. /package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/page/{Components → components}/CreatePageModal.tsx +0 -0
  130. /package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/page/{Components → components}/EditPageModal.tsx +0 -0
  131. /package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/page/{Components → components}/PageDetailDrawer.tsx +0 -0
  132. /package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/page/{Components → components}/PageFormModal.tsx +0 -0
  133. /package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/resource/{Components → components}/CreateModal.tsx +0 -0
  134. /package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/resource/{Components → components}/EditModal.tsx +0 -0
  135. /package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/resource/{Components → components}/ResourceDetailDrawer.tsx +0 -0
  136. /package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/resource/{Components → components}/modal.tsx +0 -0
  137. /package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/role/{Components → components}/CreateModal.tsx +0 -0
  138. /package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/role/{Components → components}/EditModal.tsx +0 -0
  139. /package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/role/{Components → components}/RoleDetailDrawer.tsx +0 -0
  140. /package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/role/{Components → components}/modal.tsx +0 -0
@@ -1,210 +0,0 @@
1
- import {
2
- EditOutlined,
3
- PlusOutlined,
4
- ReloadOutlined,
5
- SendOutlined,
6
- SwapOutlined,
7
- } from '@ant-design/icons';
8
- import {
9
- Button,
10
- Card,
11
- Empty,
12
- Input,
13
- Space,
14
- Spin,
15
- Tag,
16
- Typography,
17
- message,
18
- } from 'antd';
19
- import { customRequest } from 'helpers/http';
20
- import { PageHeader } from 'components';
21
- import {
22
- NESTED_CARD_PROPS,
23
- PAGE_WRAPPER_STYLE,
24
- SEARCH_CARD_PROPS,
25
- } from 'constants/layout';
26
- import { useCallback, useEffect, useState } from 'react';
27
- import { useTranslation } from 'react-i18next';
28
- import { ApprovalChannelModal } from './ApprovalChannelModal';
29
- import type { ApprovalChannel } from './approval-channel.types';
30
-
31
- export default function ApprovalChannelsPage() {
32
- const { t } = useTranslation('workflow');
33
- const [channels, setChannels] = useState<ApprovalChannel[]>([]);
34
- const [loading, setLoading] = useState(true);
35
- const [query, setQuery] = useState('');
36
- const [editing, setEditing] = useState<ApprovalChannel | null | undefined>();
37
-
38
- const load = useCallback(async () => {
39
- setLoading(true);
40
- try {
41
- setChannels(
42
- await customRequest<ApprovalChannel[]>(
43
- `approval-channels?q=${encodeURIComponent(query)}`,
44
- 'GET',
45
- ),
46
- );
47
- } catch (error: any) {
48
- message.error(error?.message ?? t('approvalChannel.loadFailed'));
49
- } finally {
50
- setLoading(false);
51
- }
52
- }, [query, t]);
53
-
54
- useEffect(() => void load(), [load]);
55
-
56
- return (
57
- <div style={PAGE_WRAPPER_STYLE}>
58
- <PageHeader
59
- title={t('approvalChannel.title')}
60
- subtitle={t('approvalChannel.subtitle')}
61
- extra={
62
- <Space>
63
- <Button icon={<ReloadOutlined />} onClick={load} />
64
- <Button
65
- type="primary"
66
- icon={<PlusOutlined />}
67
- onClick={() => setEditing(null)}
68
- >
69
- {t('approvalChannel.newChannel')}
70
- </Button>
71
- </Space>
72
- }
73
- />
74
-
75
- {/* Search Card */}
76
- <Card {...SEARCH_CARD_PROPS}>
77
- <Input.Search
78
- allowClear
79
- placeholder={t('approvalChannel.search')}
80
- onSearch={setQuery}
81
- style={{ width: 300 }}
82
- />
83
- </Card>
84
-
85
- {/* Content Card */}
86
- <Card>
87
- {loading ? (
88
- <Spin
89
- size="large"
90
- style={{ display: 'block', margin: '48px auto' }}
91
- />
92
- ) : channels.length === 0 ? (
93
- <Empty description={t('approvalChannel.empty')} />
94
- ) : (
95
- <div
96
- style={{
97
- display: 'grid',
98
- gridTemplateColumns: 'repeat(auto-fill, minmax(380px, 1fr))',
99
- gap: 16,
100
- }}
101
- >
102
- {channels.map((channel) => (
103
- <Card
104
- key={channel.code}
105
- size="small"
106
- hoverable
107
- {...NESTED_CARD_PROPS}
108
- >
109
- <div
110
- style={{
111
- display: 'flex',
112
- justifyContent: 'space-between',
113
- gap: 12,
114
- }}
115
- >
116
- <Space align="start">
117
- <SwapOutlined
118
- style={{ color: '#1677ff', fontSize: 20, marginTop: 3 }}
119
- />
120
- <div>
121
- <Typography.Text strong>{channel.name}</Typography.Text>
122
- </div>
123
- </Space>
124
- <Space>
125
- <Tag color={channel.isEnabled ? 'blue' : 'default'}>
126
- {channel.isEnabled
127
- ? t('common.enabled')
128
- : t('approvalChannel.disabled')}
129
- </Tag>
130
- <Button
131
- type="text"
132
- aria-label={t('common.edit')}
133
- icon={<EditOutlined />}
134
- onClick={() => setEditing(channel)}
135
- />
136
- </Space>
137
- </div>
138
-
139
- <div
140
- style={{
141
- padding: '14px 0 8px',
142
- }}
143
- >
144
- <WorkflowStep
145
- icon={<SendOutlined />}
146
- label={t('approvalChannel.dispatch')}
147
- name={channel.dispatchWorkflowName}
148
- />
149
- </div>
150
- {channel.description && (
151
- <Typography.Paragraph
152
- type="secondary"
153
- ellipsis={{ rows: 2 }}
154
- style={{ margin: '8px 0 0' }}
155
- >
156
- {channel.description}
157
- </Typography.Paragraph>
158
- )}
159
- </Card>
160
- ))}
161
- </div>
162
- )}
163
- </Card>
164
- <ApprovalChannelModal
165
- open={editing !== undefined}
166
- channel={editing}
167
- onCancel={() => setEditing(undefined)}
168
- onSaved={(saved) => {
169
- setEditing(undefined);
170
- setChannels((current) => [
171
- saved,
172
- ...current.filter((item) => item.code !== saved.code),
173
- ]);
174
- }}
175
- />
176
- </div>
177
- );
178
- }
179
-
180
- function WorkflowStep({
181
- icon,
182
- label,
183
- name,
184
- }: {
185
- icon: React.ReactNode;
186
- label: string;
187
- name: string;
188
- }) {
189
- return (
190
- <div
191
- style={{
192
- minWidth: 0,
193
- padding: '10px 12px',
194
- border: '1px solid var(--ant-color-border-secondary)',
195
- borderRadius: 8,
196
- background: 'var(--ant-color-fill-quaternary)',
197
- }}
198
- >
199
- <Space size={6}>
200
- {icon}
201
- <Typography.Text type="secondary" style={{ fontSize: 12 }}>
202
- {label}
203
- </Typography.Text>
204
- </Space>
205
- <Typography.Text ellipsis style={{ display: 'block', marginTop: 4 }}>
206
- {name}
207
- </Typography.Text>
208
- </div>
209
- );
210
- }
@@ -1,39 +0,0 @@
1
- import { Alert, Space, Typography } from 'antd';
2
- import { useTranslation } from 'react-i18next';
3
- import type { WidgetProps } from '../schema-form/widget-registry';
4
-
5
- const WORKFLOW_FIELDS = [
6
- 'requestId',
7
- 'channelRef',
8
- 'dispatchKey',
9
- 'candidates',
10
- 'businessData',
11
- 'expiresAt',
12
- ] as const;
13
-
14
- export function ApprovalRequestTriggerConfigEditor(
15
- _props: WidgetProps<Record<string, never>>,
16
- ) {
17
- const { t } = useTranslation('workflow');
18
-
19
- return (
20
- <Space direction="vertical" size={12} style={{ width: '100%' }}>
21
- <Alert
22
- type="info"
23
- showIcon
24
- message={t('approvalRequestTrigger.title')}
25
- description={t('approvalRequestTrigger.description')}
26
- />
27
- <Typography.Text strong>
28
- {t('approvalRequestTrigger.availableFields')}
29
- </Typography.Text>
30
- <Space direction="vertical" size={4}>
31
- {WORKFLOW_FIELDS.map((field) => (
32
- <Typography.Text code key={field}>
33
- workflow.{field}
34
- </Typography.Text>
35
- ))}
36
- </Space>
37
- </Space>
38
- );
39
- }
@@ -1,104 +0,0 @@
1
- import { Alert, Divider, Space, Switch, Typography } from 'antd';
2
- import { useTranslation } from 'react-i18next';
3
- import { ParameterBindingEditor } from '../../components/ParameterBindingEditor';
4
- import type { ParameterBinding } from '../../types/parameter-binding';
5
- import type { WidgetProps } from '../schema-form/widget-registry';
6
-
7
- type SubmitApprovalResultConfig = {
8
- inputBindings?: Record<string, ParameterBinding>;
9
- };
10
-
11
- const REQUIRED_FIELDS = [
12
- 'requestId',
13
- 'channelRef',
14
- 'eventId',
15
- 'approverId',
16
- 'decision',
17
- ] as const;
18
- const OPTIONAL_FIELDS = ['comment', 'payload'] as const;
19
-
20
- export function SubmitApprovalResultConfigEditor({
21
- value,
22
- onChange,
23
- disabled,
24
- }: WidgetProps<SubmitApprovalResultConfig>) {
25
- const { t } = useTranslation('workflow');
26
- const config = value ?? {};
27
- const bindings = config.inputBindings ?? {};
28
-
29
- function update(key: string, binding?: ParameterBinding) {
30
- const next = { ...bindings };
31
- if (binding) next[key] = binding;
32
- else delete next[key];
33
- onChange({ ...config, inputBindings: next });
34
- }
35
-
36
- return (
37
- <Space direction="vertical" size={16} style={{ width: '100%' }}>
38
- <Alert
39
- type="info"
40
- showIcon
41
- message={t('submitApprovalResult.description')}
42
- description={t('submitApprovalResult.hint')}
43
- />
44
-
45
- {REQUIRED_FIELDS.map((field) => (
46
- <div key={field}>
47
- <Typography.Text strong style={{ display: 'block', marginBottom: 6 }}>
48
- {t(`submitApprovalResult.fields.${field}`)} *
49
- </Typography.Text>
50
- <ParameterBindingEditor
51
- name={t(`submitApprovalResult.fields.${field}`)}
52
- defaultPath={field}
53
- value={
54
- bindings[field] ?? {
55
- source: 'INPUT',
56
- path: field,
57
- }
58
- }
59
- disabled={disabled}
60
- onChange={(binding) => update(field, binding)}
61
- />
62
- </div>
63
- ))}
64
-
65
- <Divider style={{ margin: '4px 0' }} />
66
- <Typography.Text strong>
67
- {t('submitApprovalResult.optional')}
68
- </Typography.Text>
69
-
70
- {OPTIONAL_FIELDS.map((field) => {
71
- const enabled = Boolean(bindings[field]);
72
- return (
73
- <div key={field}>
74
- <Space style={{ marginBottom: enabled ? 8 : 0 }}>
75
- <Switch
76
- size="small"
77
- checked={enabled}
78
- disabled={disabled}
79
- onChange={(checked) =>
80
- update(
81
- field,
82
- checked ? { source: 'INPUT', path: field } : undefined,
83
- )
84
- }
85
- />
86
- <Typography.Text>
87
- {t(`submitApprovalResult.fields.${field}`)}
88
- </Typography.Text>
89
- </Space>
90
- {enabled && (
91
- <ParameterBindingEditor
92
- name={t(`submitApprovalResult.fields.${field}`)}
93
- defaultPath={field}
94
- value={bindings[field]}
95
- disabled={disabled}
96
- onChange={(binding) => update(field, binding)}
97
- />
98
- )}
99
- </div>
100
- );
101
- })}
102
- </Space>
103
- );
104
- }
@@ -1,98 +0,0 @@
1
- import { Alert, Divider, Space, Switch, Typography } from 'antd';
2
- import { useTranslation } from 'react-i18next';
3
- import { ParameterBindingEditor } from '../../components/ParameterBindingEditor';
4
- import type { ParameterBinding } from '../../types/parameter-binding';
5
- import type { WidgetProps } from '../schema-form/widget-registry';
6
-
7
- type SubmitExternalResultConfig = {
8
- inputBindings?: Record<string, ParameterBinding>;
9
- };
10
-
11
- const REQUIRED_FIELDS = ['callbackToken', 'eventId', 'outcome'] as const;
12
- const OPTIONAL_FIELDS = ['operatorId', 'data'] as const;
13
-
14
- export function SubmitExternalResultConfigEditor({
15
- value,
16
- onChange,
17
- disabled,
18
- }: WidgetProps<SubmitExternalResultConfig>) {
19
- const { t } = useTranslation('workflow');
20
- const config = value ?? {};
21
- const bindings = config.inputBindings ?? {};
22
-
23
- function update(key: string, binding?: ParameterBinding) {
24
- const next = { ...bindings };
25
- if (binding) next[key] = binding;
26
- else delete next[key];
27
- onChange({ ...config, inputBindings: next });
28
- }
29
-
30
- return (
31
- <Space direction="vertical" size={16} style={{ width: '100%' }}>
32
- <Alert
33
- type="info"
34
- showIcon
35
- message={t('submitExternalResult.description')}
36
- description={t('submitExternalResult.hint')}
37
- />
38
-
39
- {REQUIRED_FIELDS.map((field) => (
40
- <div key={field}>
41
- <Typography.Text strong style={{ display: 'block', marginBottom: 6 }}>
42
- {t(`submitExternalResult.fields.${field}`)} *
43
- </Typography.Text>
44
- <ParameterBindingEditor
45
- name={t(`submitExternalResult.fields.${field}`)}
46
- defaultPath={field}
47
- value={
48
- bindings[field] ?? {
49
- source: 'INPUT',
50
- path: field,
51
- }
52
- }
53
- disabled={disabled}
54
- onChange={(binding) => update(field, binding)}
55
- />
56
- </div>
57
- ))}
58
-
59
- <Divider style={{ margin: '4px 0' }} />
60
- <Typography.Text strong>
61
- {t('submitExternalResult.optional')}
62
- </Typography.Text>
63
-
64
- {OPTIONAL_FIELDS.map((field) => {
65
- const enabled = Boolean(bindings[field]);
66
- return (
67
- <div key={field}>
68
- <Space style={{ marginBottom: enabled ? 8 : 0 }}>
69
- <Switch
70
- size="small"
71
- checked={enabled}
72
- disabled={disabled}
73
- onChange={(checked) =>
74
- update(
75
- field,
76
- checked ? { source: 'INPUT', path: field } : undefined,
77
- )
78
- }
79
- />
80
- <Typography.Text>
81
- {t(`submitExternalResult.fields.${field}`)}
82
- </Typography.Text>
83
- </Space>
84
- {enabled && (
85
- <ParameterBindingEditor
86
- name={t(`submitExternalResult.fields.${field}`)}
87
- defaultPath={field}
88
- value={bindings[field]}
89
- disabled={disabled}
90
- onChange={(binding) => update(field, binding)}
91
- />
92
- )}
93
- </div>
94
- );
95
- })}
96
- </Space>
97
- );
98
- }