@strapi/review-workflows 0.0.0-experimental.d23c1d5b0e45dd06ef09977f526c85468be05403 → 0.0.0-experimental.d2a56e52af31fcf0f0c582a5a2e58e310966e96b

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 (128) hide show
  1. package/LICENSE +12 -17
  2. package/dist/admin/chunks/Layout-C4ri_ldC.js +290 -0
  3. package/dist/admin/chunks/Layout-C4ri_ldC.js.map +1 -0
  4. package/dist/admin/chunks/Layout-CF497D6H.mjs +265 -0
  5. package/dist/admin/chunks/Layout-CF497D6H.mjs.map +1 -0
  6. package/dist/admin/chunks/en-BNGiWajd.js +20 -0
  7. package/dist/admin/chunks/en-BNGiWajd.js.map +1 -0
  8. package/dist/admin/chunks/en-BrZXFtVv.mjs +18 -0
  9. package/dist/admin/chunks/en-BrZXFtVv.mjs.map +1 -0
  10. package/dist/admin/chunks/id-DVOtqJqn.js +1442 -0
  11. package/dist/admin/chunks/id-DVOtqJqn.js.map +1 -0
  12. package/dist/admin/chunks/id-QD0V9dME.mjs +1420 -0
  13. package/dist/admin/chunks/id-QD0V9dME.mjs.map +1 -0
  14. package/dist/admin/chunks/index-CCx4kT-t.js +293 -0
  15. package/dist/admin/chunks/index-CCx4kT-t.js.map +1 -0
  16. package/dist/admin/chunks/index-CzdEqFOm.js +1115 -0
  17. package/dist/admin/chunks/index-CzdEqFOm.js.map +1 -0
  18. package/dist/admin/chunks/index-DcEF47R4.mjs +1081 -0
  19. package/dist/admin/chunks/index-DcEF47R4.mjs.map +1 -0
  20. package/dist/admin/chunks/index-iChY7MsG.mjs +271 -0
  21. package/dist/admin/chunks/index-iChY7MsG.mjs.map +1 -0
  22. package/dist/admin/chunks/purchase-review-workflows-4n0KXAeo.mjs +200 -0
  23. package/dist/admin/chunks/purchase-review-workflows-4n0KXAeo.mjs.map +1 -0
  24. package/dist/admin/chunks/purchase-review-workflows-BDLncDcz.js +202 -0
  25. package/dist/admin/chunks/purchase-review-workflows-BDLncDcz.js.map +1 -0
  26. package/dist/admin/chunks/router-ChVwf8TN.js +30 -0
  27. package/dist/admin/chunks/router-ChVwf8TN.js.map +1 -0
  28. package/dist/admin/chunks/router-D-YCUzYy.mjs +28 -0
  29. package/dist/admin/chunks/router-D-YCUzYy.mjs.map +1 -0
  30. package/dist/admin/chunks/uk-CbRUr1I7.js +16 -0
  31. package/dist/admin/chunks/uk-CbRUr1I7.js.map +1 -0
  32. package/dist/admin/chunks/uk-DLlzEBUF.mjs +14 -0
  33. package/dist/admin/chunks/uk-DLlzEBUF.mjs.map +1 -0
  34. package/dist/admin/index.js +17 -2
  35. package/dist/admin/index.js.map +1 -1
  36. package/dist/admin/index.mjs +12 -4
  37. package/dist/admin/index.mjs.map +1 -1
  38. package/dist/admin/src/components/LimitsModal.d.ts +2 -4
  39. package/dist/admin/src/routes/content-manager/model/id/components/AssigneeSelect.d.ts +4 -0
  40. package/dist/admin/src/routes/content-manager/model/id/components/Header.d.ts +5 -0
  41. package/dist/admin/src/routes/content-manager/model/id/components/Panel.d.ts +3 -0
  42. package/dist/admin/src/routes/content-manager/model/id/components/StageSelect.d.ts +3 -0
  43. package/dist/admin/src/routes/settings/hooks/useDragAndDrop.d.ts +4 -4
  44. package/dist/admin/src/routes/settings/hooks/useKeyboardDragAndDrop.d.ts +1 -1
  45. package/dist/admin/src/routes/settings/hooks/useReviewWorkflows.d.ts +3 -3
  46. package/dist/admin/src/services/admin.d.ts +2 -2
  47. package/dist/admin/src/services/api.d.ts +2 -3
  48. package/dist/admin/src/services/content-manager.d.ts +7 -7
  49. package/dist/admin/src/services/settings.d.ts +1740 -10
  50. package/dist/admin/src/utils/api.d.ts +4 -19
  51. package/dist/admin/src/utils/cm-hooks.d.ts +1 -1
  52. package/dist/server/index.js +2110 -8013
  53. package/dist/server/index.js.map +1 -1
  54. package/dist/server/index.mjs +2116 -8022
  55. package/dist/server/index.mjs.map +1 -1
  56. package/dist/server/src/bootstrap.d.ts.map +1 -1
  57. package/dist/server/src/constants/workflows.d.ts +1 -0
  58. package/dist/server/src/constants/workflows.d.ts.map +1 -1
  59. package/dist/server/src/content-types/index.d.ts +6 -0
  60. package/dist/server/src/content-types/index.d.ts.map +1 -1
  61. package/dist/server/src/content-types/workflow/index.d.ts +6 -0
  62. package/dist/server/src/content-types/workflow/index.d.ts.map +1 -1
  63. package/dist/server/src/controllers/assignees.d.ts.map +1 -1
  64. package/dist/server/src/controllers/index.d.ts +0 -1
  65. package/dist/server/src/controllers/index.d.ts.map +1 -1
  66. package/dist/server/src/controllers/stages.d.ts.map +1 -1
  67. package/dist/server/src/controllers/workflows.d.ts +0 -7
  68. package/dist/server/src/controllers/workflows.d.ts.map +1 -1
  69. package/dist/server/src/index.d.ts +28 -7
  70. package/dist/server/src/index.d.ts.map +1 -1
  71. package/dist/server/src/register.d.ts.map +1 -1
  72. package/dist/server/src/routes/review-workflows.d.ts.map +1 -1
  73. package/dist/server/src/services/assignees.d.ts +8 -4
  74. package/dist/server/src/services/assignees.d.ts.map +1 -1
  75. package/dist/server/src/services/document-service-middleware.d.ts +2 -1
  76. package/dist/server/src/services/document-service-middleware.d.ts.map +1 -1
  77. package/dist/server/src/services/index.d.ts +16 -6
  78. package/dist/server/src/services/index.d.ts.map +1 -1
  79. package/dist/server/src/services/metrics/index.d.ts +4 -4
  80. package/dist/server/src/services/metrics/index.d.ts.map +1 -1
  81. package/dist/server/src/services/metrics/weekly-metrics.d.ts.map +1 -1
  82. package/dist/server/src/services/stages.d.ts +7 -7
  83. package/dist/server/src/services/stages.d.ts.map +1 -1
  84. package/dist/server/src/services/workflows.d.ts.map +1 -1
  85. package/dist/server/src/validation/review-workflows.d.ts +4 -0
  86. package/dist/server/src/validation/review-workflows.d.ts.map +1 -1
  87. package/dist/shared/contracts/review-workflows.d.ts +9 -18
  88. package/dist/shared/contracts/review-workflows.d.ts.map +1 -1
  89. package/package.json +22 -22
  90. package/dist/_chunks/Layout-dGg4FA1R.js +0 -260
  91. package/dist/_chunks/Layout-dGg4FA1R.js.map +0 -1
  92. package/dist/_chunks/Layout-facLKucY.mjs +0 -240
  93. package/dist/_chunks/Layout-facLKucY.mjs.map +0 -1
  94. package/dist/_chunks/_id-B6DgrtpA.js +0 -1333
  95. package/dist/_chunks/_id-B6DgrtpA.js.map +0 -1
  96. package/dist/_chunks/_id-D4CXKOqG.mjs +0 -1311
  97. package/dist/_chunks/_id-D4CXKOqG.mjs.map +0 -1
  98. package/dist/_chunks/en-D9ZrQAV6.mjs +0 -12
  99. package/dist/_chunks/en-D9ZrQAV6.mjs.map +0 -1
  100. package/dist/_chunks/en-xcewH2pC.js +0 -12
  101. package/dist/_chunks/en-xcewH2pC.js.map +0 -1
  102. package/dist/_chunks/index-BuKZWpJw.js +0 -268
  103. package/dist/_chunks/index-BuKZWpJw.js.map +0 -1
  104. package/dist/_chunks/index-D7Y0ofdg.mjs +0 -851
  105. package/dist/_chunks/index-D7Y0ofdg.mjs.map +0 -1
  106. package/dist/_chunks/index-DX8AGcIP.js +0 -871
  107. package/dist/_chunks/index-DX8AGcIP.js.map +0 -1
  108. package/dist/_chunks/index-QbWLXdZR.mjs +0 -247
  109. package/dist/_chunks/index-QbWLXdZR.mjs.map +0 -1
  110. package/dist/_chunks/purchase-review-workflows-B-V0sA2I.mjs +0 -51
  111. package/dist/_chunks/purchase-review-workflows-B-V0sA2I.mjs.map +0 -1
  112. package/dist/_chunks/purchase-review-workflows-Ds61D_tk.js +0 -51
  113. package/dist/_chunks/purchase-review-workflows-Ds61D_tk.js.map +0 -1
  114. package/dist/_chunks/router-CL62NScV.js +0 -24
  115. package/dist/_chunks/router-CL62NScV.js.map +0 -1
  116. package/dist/_chunks/router-ylD0eA48.mjs +0 -24
  117. package/dist/_chunks/router-ylD0eA48.mjs.map +0 -1
  118. package/dist/admin/src/routes/content-manager/[model]/[id]/components/AssigneeSelect.d.ts +0 -2
  119. package/dist/admin/src/routes/content-manager/[model]/[id]/components/Panel.d.ts +0 -3
  120. package/dist/admin/src/routes/content-manager/[model]/[id]/components/StageSelect.d.ts +0 -1
  121. package/strapi-server.js +0 -3
  122. /package/dist/admin/src/routes/content-manager/{[model] → model}/components/AssigneeFilter.d.ts +0 -0
  123. /package/dist/admin/src/routes/content-manager/{[model] → model}/components/StageFilter.d.ts +0 -0
  124. /package/dist/admin/src/routes/content-manager/{[model] → model}/components/TableColumns.d.ts +0 -0
  125. /package/dist/admin/src/routes/content-manager/{[model] → model}/configure/constants.d.ts +0 -0
  126. /package/dist/admin/src/routes/content-manager/{[model] → model}/constants.d.ts +0 -0
  127. /package/dist/admin/src/routes/content-manager/{[model]/[id] → model/id}/components/constants.d.ts +0 -0
  128. /package/dist/admin/src/routes/settings/{:id.d.ts → id.d.ts} +0 -0
@@ -1,260 +0,0 @@
1
- "use strict";
2
- const React = require("react");
3
- const strapiAdmin = require("@strapi/admin/strapi-admin");
4
- const reactIntl = require("react-intl");
5
- const index = require("./index-DX8AGcIP.js");
6
- const jsxRuntime = require("react/jsx-runtime");
7
- const designSystem = require("@strapi/design-system");
8
- const reactDnd = require("react-dnd");
9
- const icons = require("@strapi/icons");
10
- const styled = require("styled-components");
11
- const _interopDefault = (e) => e && e.__esModule ? e : { default: e };
12
- function _interopNamespace(e) {
13
- if (e && e.__esModule)
14
- return e;
15
- const n = Object.create(null, { [Symbol.toStringTag]: { value: "Module" } });
16
- if (e) {
17
- for (const k in e) {
18
- if (k !== "default") {
19
- const d = Object.getOwnPropertyDescriptor(e, k);
20
- Object.defineProperty(n, k, d.get ? d : {
21
- enumerable: true,
22
- get: () => e[k]
23
- });
24
- }
25
- }
26
- }
27
- n.default = e;
28
- return Object.freeze(n);
29
- }
30
- const React__namespace = /* @__PURE__ */ _interopNamespace(React);
31
- const styled__default = /* @__PURE__ */ _interopDefault(styled);
32
- const DEFAULT_UNEXPECTED_ERROR_MSG = {
33
- id: "notification.error",
34
- defaultMessage: "An error occurred, please try again"
35
- };
36
- const useReviewWorkflows = (params = {}) => {
37
- const { toggleNotification } = strapiAdmin.useNotification();
38
- const { formatMessage } = reactIntl.useIntl();
39
- const { _unstableFormatAPIError: formatAPIError } = strapiAdmin.useAPIErrorHandler();
40
- const { id = "", skip = false, ...queryParams } = params;
41
- const { data, isLoading, error } = index.useGetWorkflowsQuery(
42
- {
43
- id,
44
- populate: "stages",
45
- ...queryParams
46
- },
47
- {
48
- skip
49
- }
50
- );
51
- React__namespace.useEffect(() => {
52
- if (error) {
53
- toggleNotification({
54
- type: "danger",
55
- message: formatAPIError(error)
56
- });
57
- }
58
- }, [error, formatAPIError, toggleNotification]);
59
- const [createWorkflow] = index.useCreateWorkflowMutation();
60
- const create = React__namespace.useCallback(
61
- async (data2) => {
62
- try {
63
- const res = await createWorkflow({ data: data2 });
64
- if ("error" in res) {
65
- toggleNotification({
66
- type: "danger",
67
- message: formatAPIError(res.error)
68
- });
69
- return res;
70
- }
71
- toggleNotification({
72
- type: "success",
73
- message: formatMessage({ id: "actions.created", defaultMessage: "Created workflow" })
74
- });
75
- return res;
76
- } catch (err) {
77
- toggleNotification({
78
- type: "danger",
79
- message: formatMessage(DEFAULT_UNEXPECTED_ERROR_MSG)
80
- });
81
- throw err;
82
- }
83
- },
84
- [createWorkflow, formatAPIError, formatMessage, toggleNotification]
85
- );
86
- const [updateWorkflow] = index.useUpdateWorkflowMutation();
87
- const update = React__namespace.useCallback(
88
- async (id2, data2) => {
89
- try {
90
- const res = await updateWorkflow({ id: id2, data: data2 });
91
- if ("error" in res) {
92
- toggleNotification({
93
- type: "danger",
94
- message: formatAPIError(res.error)
95
- });
96
- return res;
97
- }
98
- toggleNotification({
99
- type: "success",
100
- message: formatMessage({ id: "actions.updated", defaultMessage: "Updated workflow" })
101
- });
102
- return res;
103
- } catch (err) {
104
- toggleNotification({
105
- type: "danger",
106
- message: formatMessage(DEFAULT_UNEXPECTED_ERROR_MSG)
107
- });
108
- throw err;
109
- }
110
- },
111
- [formatAPIError, formatMessage, toggleNotification, updateWorkflow]
112
- );
113
- const [deleteWorkflow] = index.useDeleteWorkflowMutation();
114
- const deleteAction = React__namespace.useCallback(
115
- async (id2) => {
116
- try {
117
- const res = await deleteWorkflow({ id: id2 });
118
- if ("error" in res) {
119
- toggleNotification({
120
- type: "danger",
121
- message: formatAPIError(res.error)
122
- });
123
- return;
124
- }
125
- toggleNotification({
126
- type: "success",
127
- message: formatMessage({ id: "actions.deleted", defaultMessage: "Deleted workflow" })
128
- });
129
- return res.data;
130
- } catch (err) {
131
- toggleNotification({
132
- type: "danger",
133
- message: formatMessage(DEFAULT_UNEXPECTED_ERROR_MSG)
134
- });
135
- throw err;
136
- }
137
- },
138
- [deleteWorkflow, formatAPIError, formatMessage, toggleNotification]
139
- );
140
- const { workflows = [], meta } = data ?? {};
141
- return {
142
- // meta contains e.g. the total of all workflows. we can not use
143
- // the pagination object here, because the list is not paginated.
144
- meta,
145
- workflows,
146
- isLoading,
147
- error,
148
- create,
149
- delete: deleteAction,
150
- update
151
- };
152
- };
153
- const DRAG_DROP_TYPES = {
154
- STAGE: "stage"
155
- };
156
- const StageDragPreview = ({ name }) => {
157
- return /* @__PURE__ */ jsxRuntime.jsxs(
158
- designSystem.Flex,
159
- {
160
- background: "primary100",
161
- borderStyle: "dashed",
162
- borderColor: "primary600",
163
- borderWidth: "1px",
164
- gap: 3,
165
- hasRadius: true,
166
- padding: 3,
167
- shadow: "tableShadow",
168
- width: `${300 / 16}rem`,
169
- children: [
170
- /* @__PURE__ */ jsxRuntime.jsx(
171
- Toggle,
172
- {
173
- alignItems: "center",
174
- background: "neutral200",
175
- borderRadius: "50%",
176
- height: 6,
177
- justifyContent: "center",
178
- width: 6,
179
- children: /* @__PURE__ */ jsxRuntime.jsx(icons.CarretDown, { width: `${8 / 16}rem` })
180
- }
181
- ),
182
- /* @__PURE__ */ jsxRuntime.jsx(designSystem.Typography, { fontWeight: "bold", children: name })
183
- ]
184
- }
185
- );
186
- };
187
- const Toggle = styled__default.default(designSystem.Flex)`
188
- svg path {
189
- fill: ${({ theme }) => theme.colors.neutral600};
190
- }
191
- `;
192
- function getStyle(initialOffset, currentOffset, mouseOffset) {
193
- if (!initialOffset || !currentOffset || !mouseOffset) {
194
- return { display: "none" };
195
- }
196
- const { x, y } = mouseOffset;
197
- return {
198
- transform: `translate(${x}px, ${y}px)`
199
- };
200
- }
201
- const DragLayerRendered = () => {
202
- const { itemType, isDragging, item, initialOffset, currentOffset, mouseOffset } = reactDnd.useDragLayer(
203
- (monitor) => ({
204
- item: monitor.getItem(),
205
- itemType: monitor.getItemType(),
206
- initialOffset: monitor.getInitialSourceClientOffset(),
207
- currentOffset: monitor.getSourceClientOffset(),
208
- isDragging: monitor.isDragging(),
209
- mouseOffset: monitor.getClientOffset()
210
- })
211
- );
212
- if (!isDragging || itemType !== DRAG_DROP_TYPES.STAGE) {
213
- return null;
214
- }
215
- return /* @__PURE__ */ jsxRuntime.jsx(
216
- designSystem.Box,
217
- {
218
- height: "100%",
219
- left: 0,
220
- position: "fixed",
221
- pointerEvents: "none",
222
- top: 0,
223
- zIndex: 100,
224
- width: "100%",
225
- children: /* @__PURE__ */ jsxRuntime.jsxs(designSystem.Box, { style: getStyle(initialOffset, currentOffset, mouseOffset), children: [
226
- /* @__PURE__ */ jsxRuntime.jsx(StageDragPreview, { name: typeof item.item === "string" ? item.item : null }),
227
- ";"
228
- ] })
229
- }
230
- );
231
- };
232
- const Root = ({ children }) => {
233
- return /* @__PURE__ */ jsxRuntime.jsx(strapiAdmin.Page.Main, { children: /* @__PURE__ */ jsxRuntime.jsx(designSystem.ContentLayout, { children }) });
234
- };
235
- const Header = ({ title, subtitle, navigationAction, primaryAction }) => {
236
- const { formatMessage } = reactIntl.useIntl();
237
- return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
238
- /* @__PURE__ */ jsxRuntime.jsx(strapiAdmin.Page.Title, { children: formatMessage(
239
- { id: "Settings.PageTitle", defaultMessage: "Settings - {name}" },
240
- {
241
- name: title
242
- }
243
- ) }),
244
- /* @__PURE__ */ jsxRuntime.jsx(
245
- designSystem.HeaderLayout,
246
- {
247
- navigationAction,
248
- primaryAction,
249
- title,
250
- subtitle
251
- }
252
- )
253
- ] });
254
- };
255
- exports.DRAG_DROP_TYPES = DRAG_DROP_TYPES;
256
- exports.DragLayerRendered = DragLayerRendered;
257
- exports.Header = Header;
258
- exports.Root = Root;
259
- exports.useReviewWorkflows = useReviewWorkflows;
260
- //# sourceMappingURL=Layout-dGg4FA1R.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"Layout-dGg4FA1R.js","sources":["../../admin/src/routes/settings/hooks/useReviewWorkflows.ts","../../admin/src/routes/settings/constants.ts","../../admin/src/routes/settings/components/StageDragPreview.tsx","../../admin/src/routes/settings/components/Layout.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { useAPIErrorHandler, useNotification } from '@strapi/admin/strapi-admin';\nimport { type MessageDescriptor, useIntl } from 'react-intl';\n\nimport {\n GetWorkflowsParams,\n useCreateWorkflowMutation,\n useDeleteWorkflowMutation,\n useGetWorkflowsQuery,\n useUpdateWorkflowMutation,\n} from '../../../services/settings';\n\nimport type { Create, Update } from '../../../../../shared/contracts/review-workflows';\n\nconst DEFAULT_UNEXPECTED_ERROR_MSG = {\n id: 'notification.error',\n defaultMessage: 'An error occurred, please try again',\n} satisfies MessageDescriptor;\n\ntype UseReviewWorkflowsArgs = GetWorkflowsParams & {\n skip?: boolean;\n};\n\nconst useReviewWorkflows = (params: UseReviewWorkflowsArgs = {}) => {\n const { toggleNotification } = useNotification();\n const { formatMessage } = useIntl();\n const { _unstableFormatAPIError: formatAPIError } = useAPIErrorHandler();\n\n const { id = '', skip = false, ...queryParams } = params;\n\n const { data, isLoading, error } = useGetWorkflowsQuery(\n {\n id,\n populate: 'stages',\n ...queryParams,\n },\n {\n skip,\n }\n );\n\n React.useEffect(() => {\n if (error) {\n toggleNotification({\n type: 'danger',\n message: formatAPIError(error),\n });\n }\n }, [error, formatAPIError, toggleNotification]);\n\n const [createWorkflow] = useCreateWorkflowMutation();\n const create = React.useCallback(\n async (data: Create.Request['body']['data']) => {\n try {\n const res = await createWorkflow({ data });\n\n if ('error' in res) {\n toggleNotification({\n type: 'danger',\n message: formatAPIError(res.error),\n });\n\n return res;\n }\n\n toggleNotification({\n type: 'success',\n message: formatMessage({ id: 'actions.created', defaultMessage: 'Created workflow' }),\n });\n\n return res;\n } catch (err) {\n toggleNotification({\n type: 'danger',\n message: formatMessage(DEFAULT_UNEXPECTED_ERROR_MSG),\n });\n\n throw err;\n }\n },\n [createWorkflow, formatAPIError, formatMessage, toggleNotification]\n );\n\n const [updateWorkflow] = useUpdateWorkflowMutation();\n const update = React.useCallback(\n async (id: string, data: Update.Request['body']['data']) => {\n try {\n const res = await updateWorkflow({ id, data });\n\n if ('error' in res) {\n toggleNotification({\n type: 'danger',\n message: formatAPIError(res.error),\n });\n\n return res;\n }\n\n toggleNotification({\n type: 'success',\n message: formatMessage({ id: 'actions.updated', defaultMessage: 'Updated workflow' }),\n });\n\n return res;\n } catch (err) {\n toggleNotification({\n type: 'danger',\n message: formatMessage(DEFAULT_UNEXPECTED_ERROR_MSG),\n });\n\n throw err;\n }\n },\n [formatAPIError, formatMessage, toggleNotification, updateWorkflow]\n );\n\n const [deleteWorkflow] = useDeleteWorkflowMutation();\n const deleteAction = React.useCallback(\n async (id: string) => {\n try {\n const res = await deleteWorkflow({ id });\n\n if ('error' in res) {\n toggleNotification({\n type: 'danger',\n message: formatAPIError(res.error),\n });\n\n return;\n }\n\n toggleNotification({\n type: 'success',\n message: formatMessage({ id: 'actions.deleted', defaultMessage: 'Deleted workflow' }),\n });\n\n return res.data;\n } catch (err) {\n toggleNotification({\n type: 'danger',\n message: formatMessage(DEFAULT_UNEXPECTED_ERROR_MSG),\n });\n\n throw err;\n }\n },\n [deleteWorkflow, formatAPIError, formatMessage, toggleNotification]\n );\n\n const { workflows = [], meta } = data ?? {};\n\n return {\n // meta contains e.g. the total of all workflows. we can not use\n // the pagination object here, because the list is not paginated.\n meta,\n workflows,\n isLoading,\n error,\n create,\n delete: deleteAction,\n update,\n };\n};\n\nexport { useReviewWorkflows };\n","export type DragDropTypes = 'stage';\n\nexport const DRAG_DROP_TYPES: Record<Uppercase<DragDropTypes>, DragDropTypes> = {\n STAGE: 'stage',\n};\n","import { Flex, Typography } from '@strapi/design-system';\nimport { CarretDown } from '@strapi/icons';\nimport styled from 'styled-components';\n\ninterface StageDragPreviewType {\n name: string | null;\n}\n\nconst StageDragPreview = ({ name }: StageDragPreviewType) => {\n return (\n <Flex\n background=\"primary100\"\n borderStyle=\"dashed\"\n borderColor=\"primary600\"\n borderWidth=\"1px\"\n gap={3}\n hasRadius\n padding={3}\n shadow=\"tableShadow\"\n width={`${300 / 16}rem`}\n >\n <Toggle\n alignItems=\"center\"\n background=\"neutral200\"\n borderRadius=\"50%\"\n height={6}\n justifyContent=\"center\"\n width={6}\n >\n <CarretDown width={`${8 / 16}rem`} />\n </Toggle>\n\n <Typography fontWeight=\"bold\">{name}</Typography>\n </Flex>\n );\n};\n\nconst Toggle = styled(Flex)`\n svg path {\n fill: ${({ theme }) => theme.colors.neutral600};\n }\n`;\n\nexport { StageDragPreview };\nexport type { StageDragPreviewType };\n","import * as React from 'react';\n\nimport { Page } from '@strapi/admin/strapi-admin';\nimport { Box, ContentLayout, HeaderLayout } from '@strapi/design-system';\nimport { XYCoord, useDragLayer } from 'react-dnd';\nimport { useIntl } from 'react-intl';\n\nimport { DRAG_DROP_TYPES } from '../constants';\n\nimport { StageDragPreview } from './StageDragPreview';\n\nfunction getStyle(\n initialOffset: XYCoord | null,\n currentOffset: XYCoord | null,\n mouseOffset: XYCoord | null\n) {\n if (!initialOffset || !currentOffset || !mouseOffset) {\n return { display: 'none' };\n }\n\n const { x, y } = mouseOffset;\n\n return {\n transform: `translate(${x}px, ${y}px)`,\n };\n}\n\nconst DragLayerRendered = () => {\n const { itemType, isDragging, item, initialOffset, currentOffset, mouseOffset } = useDragLayer(\n (monitor) => ({\n item: monitor.getItem(),\n itemType: monitor.getItemType(),\n initialOffset: monitor.getInitialSourceClientOffset(),\n currentOffset: monitor.getSourceClientOffset(),\n isDragging: monitor.isDragging(),\n mouseOffset: monitor.getClientOffset(),\n })\n );\n\n if (!isDragging || itemType !== DRAG_DROP_TYPES.STAGE) {\n return null;\n }\n\n return (\n <Box\n height=\"100%\"\n left={0}\n position=\"fixed\"\n pointerEvents=\"none\"\n top={0}\n zIndex={100}\n width=\"100%\"\n >\n <Box style={getStyle(initialOffset, currentOffset, mouseOffset)}>\n <StageDragPreview name={typeof item.item === 'string' ? item.item : null} />;\n </Box>\n </Box>\n );\n};\n\nconst Root: React.FC<React.PropsWithChildren> = ({ children }) => {\n return (\n <Page.Main>\n <ContentLayout>{children}</ContentLayout>\n </Page.Main>\n );\n};\n\ninterface HeaderProps {\n title: string;\n navigationAction?: React.ReactNode;\n primaryAction?: React.ReactNode;\n secondaryAction?: React.ReactNode;\n subtitle?: React.ReactNode;\n}\n\nconst Header: React.FC<HeaderProps> = ({ title, subtitle, navigationAction, primaryAction }) => {\n const { formatMessage } = useIntl();\n return (\n <>\n <Page.Title>\n {formatMessage(\n { id: 'Settings.PageTitle', defaultMessage: 'Settings - {name}' },\n {\n name: title,\n }\n )}\n </Page.Title>\n <HeaderLayout\n navigationAction={navigationAction}\n primaryAction={primaryAction}\n title={title}\n subtitle={subtitle}\n />\n </>\n );\n};\n\nexport { DragLayerRendered, Header, Root };\n"],"names":["useNotification","useIntl","useAPIErrorHandler","useGetWorkflowsQuery","React","useCreateWorkflowMutation","data","useUpdateWorkflowMutation","id","useDeleteWorkflowMutation","jsxs","Flex","jsx","CarretDown","Typography","styled","useDragLayer","Box","Page","ContentLayout","Fragment","HeaderLayout"],"mappings":"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"}
@@ -1,240 +0,0 @@
1
- import * as React from "react";
2
- import { useNotification, useAPIErrorHandler, Page } from "@strapi/admin/strapi-admin";
3
- import { useIntl } from "react-intl";
4
- import { c as useGetWorkflowsQuery, d as useCreateWorkflowMutation, e as useUpdateWorkflowMutation, f as useDeleteWorkflowMutation } from "./index-D7Y0ofdg.mjs";
5
- import { jsxs, jsx, Fragment } from "react/jsx-runtime";
6
- import { Flex, Typography, ContentLayout, HeaderLayout, Box } from "@strapi/design-system";
7
- import { useDragLayer } from "react-dnd";
8
- import { CarretDown } from "@strapi/icons";
9
- import styled from "styled-components";
10
- const DEFAULT_UNEXPECTED_ERROR_MSG = {
11
- id: "notification.error",
12
- defaultMessage: "An error occurred, please try again"
13
- };
14
- const useReviewWorkflows = (params = {}) => {
15
- const { toggleNotification } = useNotification();
16
- const { formatMessage } = useIntl();
17
- const { _unstableFormatAPIError: formatAPIError } = useAPIErrorHandler();
18
- const { id = "", skip = false, ...queryParams } = params;
19
- const { data, isLoading, error } = useGetWorkflowsQuery(
20
- {
21
- id,
22
- populate: "stages",
23
- ...queryParams
24
- },
25
- {
26
- skip
27
- }
28
- );
29
- React.useEffect(() => {
30
- if (error) {
31
- toggleNotification({
32
- type: "danger",
33
- message: formatAPIError(error)
34
- });
35
- }
36
- }, [error, formatAPIError, toggleNotification]);
37
- const [createWorkflow] = useCreateWorkflowMutation();
38
- const create = React.useCallback(
39
- async (data2) => {
40
- try {
41
- const res = await createWorkflow({ data: data2 });
42
- if ("error" in res) {
43
- toggleNotification({
44
- type: "danger",
45
- message: formatAPIError(res.error)
46
- });
47
- return res;
48
- }
49
- toggleNotification({
50
- type: "success",
51
- message: formatMessage({ id: "actions.created", defaultMessage: "Created workflow" })
52
- });
53
- return res;
54
- } catch (err) {
55
- toggleNotification({
56
- type: "danger",
57
- message: formatMessage(DEFAULT_UNEXPECTED_ERROR_MSG)
58
- });
59
- throw err;
60
- }
61
- },
62
- [createWorkflow, formatAPIError, formatMessage, toggleNotification]
63
- );
64
- const [updateWorkflow] = useUpdateWorkflowMutation();
65
- const update = React.useCallback(
66
- async (id2, data2) => {
67
- try {
68
- const res = await updateWorkflow({ id: id2, data: data2 });
69
- if ("error" in res) {
70
- toggleNotification({
71
- type: "danger",
72
- message: formatAPIError(res.error)
73
- });
74
- return res;
75
- }
76
- toggleNotification({
77
- type: "success",
78
- message: formatMessage({ id: "actions.updated", defaultMessage: "Updated workflow" })
79
- });
80
- return res;
81
- } catch (err) {
82
- toggleNotification({
83
- type: "danger",
84
- message: formatMessage(DEFAULT_UNEXPECTED_ERROR_MSG)
85
- });
86
- throw err;
87
- }
88
- },
89
- [formatAPIError, formatMessage, toggleNotification, updateWorkflow]
90
- );
91
- const [deleteWorkflow] = useDeleteWorkflowMutation();
92
- const deleteAction = React.useCallback(
93
- async (id2) => {
94
- try {
95
- const res = await deleteWorkflow({ id: id2 });
96
- if ("error" in res) {
97
- toggleNotification({
98
- type: "danger",
99
- message: formatAPIError(res.error)
100
- });
101
- return;
102
- }
103
- toggleNotification({
104
- type: "success",
105
- message: formatMessage({ id: "actions.deleted", defaultMessage: "Deleted workflow" })
106
- });
107
- return res.data;
108
- } catch (err) {
109
- toggleNotification({
110
- type: "danger",
111
- message: formatMessage(DEFAULT_UNEXPECTED_ERROR_MSG)
112
- });
113
- throw err;
114
- }
115
- },
116
- [deleteWorkflow, formatAPIError, formatMessage, toggleNotification]
117
- );
118
- const { workflows = [], meta } = data ?? {};
119
- return {
120
- // meta contains e.g. the total of all workflows. we can not use
121
- // the pagination object here, because the list is not paginated.
122
- meta,
123
- workflows,
124
- isLoading,
125
- error,
126
- create,
127
- delete: deleteAction,
128
- update
129
- };
130
- };
131
- const DRAG_DROP_TYPES = {
132
- STAGE: "stage"
133
- };
134
- const StageDragPreview = ({ name }) => {
135
- return /* @__PURE__ */ jsxs(
136
- Flex,
137
- {
138
- background: "primary100",
139
- borderStyle: "dashed",
140
- borderColor: "primary600",
141
- borderWidth: "1px",
142
- gap: 3,
143
- hasRadius: true,
144
- padding: 3,
145
- shadow: "tableShadow",
146
- width: `${300 / 16}rem`,
147
- children: [
148
- /* @__PURE__ */ jsx(
149
- Toggle,
150
- {
151
- alignItems: "center",
152
- background: "neutral200",
153
- borderRadius: "50%",
154
- height: 6,
155
- justifyContent: "center",
156
- width: 6,
157
- children: /* @__PURE__ */ jsx(CarretDown, { width: `${8 / 16}rem` })
158
- }
159
- ),
160
- /* @__PURE__ */ jsx(Typography, { fontWeight: "bold", children: name })
161
- ]
162
- }
163
- );
164
- };
165
- const Toggle = styled(Flex)`
166
- svg path {
167
- fill: ${({ theme }) => theme.colors.neutral600};
168
- }
169
- `;
170
- function getStyle(initialOffset, currentOffset, mouseOffset) {
171
- if (!initialOffset || !currentOffset || !mouseOffset) {
172
- return { display: "none" };
173
- }
174
- const { x, y } = mouseOffset;
175
- return {
176
- transform: `translate(${x}px, ${y}px)`
177
- };
178
- }
179
- const DragLayerRendered = () => {
180
- const { itemType, isDragging, item, initialOffset, currentOffset, mouseOffset } = useDragLayer(
181
- (monitor) => ({
182
- item: monitor.getItem(),
183
- itemType: monitor.getItemType(),
184
- initialOffset: monitor.getInitialSourceClientOffset(),
185
- currentOffset: monitor.getSourceClientOffset(),
186
- isDragging: monitor.isDragging(),
187
- mouseOffset: monitor.getClientOffset()
188
- })
189
- );
190
- if (!isDragging || itemType !== DRAG_DROP_TYPES.STAGE) {
191
- return null;
192
- }
193
- return /* @__PURE__ */ jsx(
194
- Box,
195
- {
196
- height: "100%",
197
- left: 0,
198
- position: "fixed",
199
- pointerEvents: "none",
200
- top: 0,
201
- zIndex: 100,
202
- width: "100%",
203
- children: /* @__PURE__ */ jsxs(Box, { style: getStyle(initialOffset, currentOffset, mouseOffset), children: [
204
- /* @__PURE__ */ jsx(StageDragPreview, { name: typeof item.item === "string" ? item.item : null }),
205
- ";"
206
- ] })
207
- }
208
- );
209
- };
210
- const Root = ({ children }) => {
211
- return /* @__PURE__ */ jsx(Page.Main, { children: /* @__PURE__ */ jsx(ContentLayout, { children }) });
212
- };
213
- const Header = ({ title, subtitle, navigationAction, primaryAction }) => {
214
- const { formatMessage } = useIntl();
215
- return /* @__PURE__ */ jsxs(Fragment, { children: [
216
- /* @__PURE__ */ jsx(Page.Title, { children: formatMessage(
217
- { id: "Settings.PageTitle", defaultMessage: "Settings - {name}" },
218
- {
219
- name: title
220
- }
221
- ) }),
222
- /* @__PURE__ */ jsx(
223
- HeaderLayout,
224
- {
225
- navigationAction,
226
- primaryAction,
227
- title,
228
- subtitle
229
- }
230
- )
231
- ] });
232
- };
233
- export {
234
- DRAG_DROP_TYPES as D,
235
- Header as H,
236
- Root as R,
237
- DragLayerRendered as a,
238
- useReviewWorkflows as u
239
- };
240
- //# sourceMappingURL=Layout-facLKucY.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"Layout-facLKucY.mjs","sources":["../../admin/src/routes/settings/hooks/useReviewWorkflows.ts","../../admin/src/routes/settings/constants.ts","../../admin/src/routes/settings/components/StageDragPreview.tsx","../../admin/src/routes/settings/components/Layout.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { useAPIErrorHandler, useNotification } from '@strapi/admin/strapi-admin';\nimport { type MessageDescriptor, useIntl } from 'react-intl';\n\nimport {\n GetWorkflowsParams,\n useCreateWorkflowMutation,\n useDeleteWorkflowMutation,\n useGetWorkflowsQuery,\n useUpdateWorkflowMutation,\n} from '../../../services/settings';\n\nimport type { Create, Update } from '../../../../../shared/contracts/review-workflows';\n\nconst DEFAULT_UNEXPECTED_ERROR_MSG = {\n id: 'notification.error',\n defaultMessage: 'An error occurred, please try again',\n} satisfies MessageDescriptor;\n\ntype UseReviewWorkflowsArgs = GetWorkflowsParams & {\n skip?: boolean;\n};\n\nconst useReviewWorkflows = (params: UseReviewWorkflowsArgs = {}) => {\n const { toggleNotification } = useNotification();\n const { formatMessage } = useIntl();\n const { _unstableFormatAPIError: formatAPIError } = useAPIErrorHandler();\n\n const { id = '', skip = false, ...queryParams } = params;\n\n const { data, isLoading, error } = useGetWorkflowsQuery(\n {\n id,\n populate: 'stages',\n ...queryParams,\n },\n {\n skip,\n }\n );\n\n React.useEffect(() => {\n if (error) {\n toggleNotification({\n type: 'danger',\n message: formatAPIError(error),\n });\n }\n }, [error, formatAPIError, toggleNotification]);\n\n const [createWorkflow] = useCreateWorkflowMutation();\n const create = React.useCallback(\n async (data: Create.Request['body']['data']) => {\n try {\n const res = await createWorkflow({ data });\n\n if ('error' in res) {\n toggleNotification({\n type: 'danger',\n message: formatAPIError(res.error),\n });\n\n return res;\n }\n\n toggleNotification({\n type: 'success',\n message: formatMessage({ id: 'actions.created', defaultMessage: 'Created workflow' }),\n });\n\n return res;\n } catch (err) {\n toggleNotification({\n type: 'danger',\n message: formatMessage(DEFAULT_UNEXPECTED_ERROR_MSG),\n });\n\n throw err;\n }\n },\n [createWorkflow, formatAPIError, formatMessage, toggleNotification]\n );\n\n const [updateWorkflow] = useUpdateWorkflowMutation();\n const update = React.useCallback(\n async (id: string, data: Update.Request['body']['data']) => {\n try {\n const res = await updateWorkflow({ id, data });\n\n if ('error' in res) {\n toggleNotification({\n type: 'danger',\n message: formatAPIError(res.error),\n });\n\n return res;\n }\n\n toggleNotification({\n type: 'success',\n message: formatMessage({ id: 'actions.updated', defaultMessage: 'Updated workflow' }),\n });\n\n return res;\n } catch (err) {\n toggleNotification({\n type: 'danger',\n message: formatMessage(DEFAULT_UNEXPECTED_ERROR_MSG),\n });\n\n throw err;\n }\n },\n [formatAPIError, formatMessage, toggleNotification, updateWorkflow]\n );\n\n const [deleteWorkflow] = useDeleteWorkflowMutation();\n const deleteAction = React.useCallback(\n async (id: string) => {\n try {\n const res = await deleteWorkflow({ id });\n\n if ('error' in res) {\n toggleNotification({\n type: 'danger',\n message: formatAPIError(res.error),\n });\n\n return;\n }\n\n toggleNotification({\n type: 'success',\n message: formatMessage({ id: 'actions.deleted', defaultMessage: 'Deleted workflow' }),\n });\n\n return res.data;\n } catch (err) {\n toggleNotification({\n type: 'danger',\n message: formatMessage(DEFAULT_UNEXPECTED_ERROR_MSG),\n });\n\n throw err;\n }\n },\n [deleteWorkflow, formatAPIError, formatMessage, toggleNotification]\n );\n\n const { workflows = [], meta } = data ?? {};\n\n return {\n // meta contains e.g. the total of all workflows. we can not use\n // the pagination object here, because the list is not paginated.\n meta,\n workflows,\n isLoading,\n error,\n create,\n delete: deleteAction,\n update,\n };\n};\n\nexport { useReviewWorkflows };\n","export type DragDropTypes = 'stage';\n\nexport const DRAG_DROP_TYPES: Record<Uppercase<DragDropTypes>, DragDropTypes> = {\n STAGE: 'stage',\n};\n","import { Flex, Typography } from '@strapi/design-system';\nimport { CarretDown } from '@strapi/icons';\nimport styled from 'styled-components';\n\ninterface StageDragPreviewType {\n name: string | null;\n}\n\nconst StageDragPreview = ({ name }: StageDragPreviewType) => {\n return (\n <Flex\n background=\"primary100\"\n borderStyle=\"dashed\"\n borderColor=\"primary600\"\n borderWidth=\"1px\"\n gap={3}\n hasRadius\n padding={3}\n shadow=\"tableShadow\"\n width={`${300 / 16}rem`}\n >\n <Toggle\n alignItems=\"center\"\n background=\"neutral200\"\n borderRadius=\"50%\"\n height={6}\n justifyContent=\"center\"\n width={6}\n >\n <CarretDown width={`${8 / 16}rem`} />\n </Toggle>\n\n <Typography fontWeight=\"bold\">{name}</Typography>\n </Flex>\n );\n};\n\nconst Toggle = styled(Flex)`\n svg path {\n fill: ${({ theme }) => theme.colors.neutral600};\n }\n`;\n\nexport { StageDragPreview };\nexport type { StageDragPreviewType };\n","import * as React from 'react';\n\nimport { Page } from '@strapi/admin/strapi-admin';\nimport { Box, ContentLayout, HeaderLayout } from '@strapi/design-system';\nimport { XYCoord, useDragLayer } from 'react-dnd';\nimport { useIntl } from 'react-intl';\n\nimport { DRAG_DROP_TYPES } from '../constants';\n\nimport { StageDragPreview } from './StageDragPreview';\n\nfunction getStyle(\n initialOffset: XYCoord | null,\n currentOffset: XYCoord | null,\n mouseOffset: XYCoord | null\n) {\n if (!initialOffset || !currentOffset || !mouseOffset) {\n return { display: 'none' };\n }\n\n const { x, y } = mouseOffset;\n\n return {\n transform: `translate(${x}px, ${y}px)`,\n };\n}\n\nconst DragLayerRendered = () => {\n const { itemType, isDragging, item, initialOffset, currentOffset, mouseOffset } = useDragLayer(\n (monitor) => ({\n item: monitor.getItem(),\n itemType: monitor.getItemType(),\n initialOffset: monitor.getInitialSourceClientOffset(),\n currentOffset: monitor.getSourceClientOffset(),\n isDragging: monitor.isDragging(),\n mouseOffset: monitor.getClientOffset(),\n })\n );\n\n if (!isDragging || itemType !== DRAG_DROP_TYPES.STAGE) {\n return null;\n }\n\n return (\n <Box\n height=\"100%\"\n left={0}\n position=\"fixed\"\n pointerEvents=\"none\"\n top={0}\n zIndex={100}\n width=\"100%\"\n >\n <Box style={getStyle(initialOffset, currentOffset, mouseOffset)}>\n <StageDragPreview name={typeof item.item === 'string' ? item.item : null} />;\n </Box>\n </Box>\n );\n};\n\nconst Root: React.FC<React.PropsWithChildren> = ({ children }) => {\n return (\n <Page.Main>\n <ContentLayout>{children}</ContentLayout>\n </Page.Main>\n );\n};\n\ninterface HeaderProps {\n title: string;\n navigationAction?: React.ReactNode;\n primaryAction?: React.ReactNode;\n secondaryAction?: React.ReactNode;\n subtitle?: React.ReactNode;\n}\n\nconst Header: React.FC<HeaderProps> = ({ title, subtitle, navigationAction, primaryAction }) => {\n const { formatMessage } = useIntl();\n return (\n <>\n <Page.Title>\n {formatMessage(\n { id: 'Settings.PageTitle', defaultMessage: 'Settings - {name}' },\n {\n name: title,\n }\n )}\n </Page.Title>\n <HeaderLayout\n navigationAction={navigationAction}\n primaryAction={primaryAction}\n title={title}\n subtitle={subtitle}\n />\n </>\n );\n};\n\nexport { DragLayerRendered, Header, Root };\n"],"names":["data","id"],"mappings":"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"}