@strapi/review-workflows 5.12.1 → 5.12.3

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 (327) hide show
  1. package/dist/admin/{chunks/index-DcEF47R4.mjs → assets/balloon.png.js} +3 -1078
  2. package/dist/admin/assets/balloon.png.js.map +1 -0
  3. package/dist/admin/{chunks/index-CzdEqFOm.js → assets/balloon.png.mjs} +2 -1113
  4. package/dist/admin/assets/balloon.png.mjs.map +1 -0
  5. package/dist/admin/assets/purchase-page-illustration-dark.svg.js +6 -0
  6. package/dist/admin/assets/purchase-page-illustration-dark.svg.js.map +1 -0
  7. package/dist/admin/assets/purchase-page-illustration-dark.svg.mjs +4 -0
  8. package/dist/admin/assets/purchase-page-illustration-dark.svg.mjs.map +1 -0
  9. package/dist/admin/{chunks/purchase-review-workflows-4n0KXAeo.mjs → assets/purchase-page-illustration-light.svg.js} +3 -197
  10. package/dist/admin/assets/purchase-page-illustration-light.svg.js.map +1 -0
  11. package/dist/admin/{chunks/purchase-review-workflows-BDLncDcz.js → assets/purchase-page-illustration-light.svg.mjs} +2 -200
  12. package/dist/admin/assets/purchase-page-illustration-light.svg.mjs.map +1 -0
  13. package/dist/admin/components/LimitsModal.js +122 -0
  14. package/dist/admin/components/LimitsModal.js.map +1 -0
  15. package/dist/admin/components/LimitsModal.mjs +120 -0
  16. package/dist/admin/components/LimitsModal.mjs.map +1 -0
  17. package/dist/admin/constants.js +18 -0
  18. package/dist/admin/constants.js.map +1 -0
  19. package/dist/admin/constants.mjs +12 -0
  20. package/dist/admin/constants.mjs.map +1 -0
  21. package/dist/admin/index.js +87 -13
  22. package/dist/admin/index.js.map +1 -1
  23. package/dist/admin/index.mjs +88 -12
  24. package/dist/admin/index.mjs.map +1 -1
  25. package/dist/admin/modules/hooks.js +8 -0
  26. package/dist/admin/modules/hooks.js.map +1 -0
  27. package/dist/admin/modules/hooks.mjs +6 -0
  28. package/dist/admin/modules/hooks.mjs.map +1 -0
  29. package/dist/admin/{chunks/router-ChVwf8TN.js → router.js} +3 -3
  30. package/dist/admin/router.js.map +1 -0
  31. package/dist/admin/{chunks/router-D-YCUzYy.mjs → router.mjs} +3 -3
  32. package/dist/admin/router.mjs.map +1 -0
  33. package/dist/admin/routes/content-manager/model/components/TableColumns.js +44 -0
  34. package/dist/admin/routes/content-manager/model/components/TableColumns.js.map +1 -0
  35. package/dist/admin/routes/content-manager/model/components/TableColumns.mjs +41 -0
  36. package/dist/admin/routes/content-manager/model/components/TableColumns.mjs.map +1 -0
  37. package/dist/admin/routes/content-manager/model/constants.js +60 -0
  38. package/dist/admin/routes/content-manager/model/constants.js.map +1 -0
  39. package/dist/admin/routes/content-manager/model/constants.mjs +58 -0
  40. package/dist/admin/routes/content-manager/model/constants.mjs.map +1 -0
  41. package/dist/admin/routes/content-manager/model/id/components/AssigneeSelect.js +169 -0
  42. package/dist/admin/routes/content-manager/model/id/components/AssigneeSelect.js.map +1 -0
  43. package/dist/admin/routes/content-manager/model/id/components/AssigneeSelect.mjs +148 -0
  44. package/dist/admin/routes/content-manager/model/id/components/AssigneeSelect.mjs.map +1 -0
  45. package/dist/admin/routes/content-manager/model/id/components/Header.js +31 -0
  46. package/dist/admin/routes/content-manager/model/id/components/Header.js.map +1 -0
  47. package/dist/admin/routes/content-manager/model/id/components/Header.mjs +29 -0
  48. package/dist/admin/routes/content-manager/model/id/components/Header.mjs.map +1 -0
  49. package/dist/admin/routes/content-manager/model/id/components/Panel.js +39 -0
  50. package/dist/admin/routes/content-manager/model/id/components/Panel.js.map +1 -0
  51. package/dist/admin/routes/content-manager/model/id/components/Panel.mjs +37 -0
  52. package/dist/admin/routes/content-manager/model/id/components/Panel.mjs.map +1 -0
  53. package/dist/admin/routes/content-manager/model/id/components/StageSelect.js +329 -0
  54. package/dist/admin/routes/content-manager/model/id/components/StageSelect.js.map +1 -0
  55. package/dist/admin/routes/content-manager/model/id/components/StageSelect.mjs +308 -0
  56. package/dist/admin/routes/content-manager/model/id/components/StageSelect.mjs.map +1 -0
  57. package/dist/admin/routes/content-manager/model/id/components/constants.js +8 -0
  58. package/dist/admin/routes/content-manager/model/id/components/constants.js.map +1 -0
  59. package/dist/admin/routes/content-manager/model/id/components/constants.mjs +5 -0
  60. package/dist/admin/routes/content-manager/model/id/components/constants.mjs.map +1 -0
  61. package/dist/admin/routes/purchase-review-workflows.js +194 -0
  62. package/dist/admin/routes/purchase-review-workflows.js.map +1 -0
  63. package/dist/admin/routes/purchase-review-workflows.mjs +192 -0
  64. package/dist/admin/routes/purchase-review-workflows.mjs.map +1 -0
  65. package/dist/admin/routes/settings/components/AddStage.js +51 -0
  66. package/dist/admin/routes/settings/components/AddStage.js.map +1 -0
  67. package/dist/admin/routes/settings/components/AddStage.mjs +49 -0
  68. package/dist/admin/routes/settings/components/AddStage.mjs.map +1 -0
  69. package/dist/admin/routes/settings/components/Layout.js +86 -0
  70. package/dist/admin/routes/settings/components/Layout.js.map +1 -0
  71. package/dist/admin/routes/settings/components/Layout.mjs +82 -0
  72. package/dist/admin/routes/settings/components/Layout.mjs.map +1 -0
  73. package/dist/admin/routes/settings/components/StageDragPreview.js +40 -0
  74. package/dist/admin/routes/settings/components/StageDragPreview.js.map +1 -0
  75. package/dist/admin/routes/settings/components/StageDragPreview.mjs +38 -0
  76. package/dist/admin/routes/settings/components/StageDragPreview.mjs.map +1 -0
  77. package/dist/admin/routes/settings/components/Stages.js +593 -0
  78. package/dist/admin/routes/settings/components/Stages.js.map +1 -0
  79. package/dist/admin/routes/settings/components/Stages.mjs +572 -0
  80. package/dist/admin/routes/settings/components/Stages.mjs.map +1 -0
  81. package/dist/admin/routes/settings/components/WorkflowAttributes.js +203 -0
  82. package/dist/admin/routes/settings/components/WorkflowAttributes.js.map +1 -0
  83. package/dist/admin/routes/settings/components/WorkflowAttributes.mjs +201 -0
  84. package/dist/admin/routes/settings/components/WorkflowAttributes.mjs.map +1 -0
  85. package/dist/admin/routes/settings/constants.js +8 -0
  86. package/dist/admin/routes/settings/constants.js.map +1 -0
  87. package/dist/admin/routes/settings/constants.mjs +6 -0
  88. package/dist/admin/routes/settings/constants.mjs.map +1 -0
  89. package/dist/admin/routes/settings/hooks/useDragAndDrop.js +193 -0
  90. package/dist/admin/routes/settings/hooks/useDragAndDrop.js.map +1 -0
  91. package/dist/admin/routes/settings/hooks/useDragAndDrop.mjs +170 -0
  92. package/dist/admin/routes/settings/hooks/useDragAndDrop.mjs.map +1 -0
  93. package/dist/admin/routes/settings/hooks/useKeyboardDragAndDrop.js +94 -0
  94. package/dist/admin/routes/settings/hooks/useKeyboardDragAndDrop.js.map +1 -0
  95. package/dist/admin/routes/settings/hooks/useKeyboardDragAndDrop.mjs +73 -0
  96. package/dist/admin/routes/settings/hooks/useKeyboardDragAndDrop.mjs.map +1 -0
  97. package/dist/admin/{chunks/Layout-C4ri_ldC.js → routes/settings/hooks/useReviewWorkflows.js} +6 -121
  98. package/dist/admin/routes/settings/hooks/useReviewWorkflows.js.map +1 -0
  99. package/dist/admin/{chunks/Layout-CF497D6H.mjs → routes/settings/hooks/useReviewWorkflows.mjs} +4 -115
  100. package/dist/admin/routes/settings/hooks/useReviewWorkflows.mjs.map +1 -0
  101. package/dist/admin/routes/settings/id.js +404 -0
  102. package/dist/admin/routes/settings/id.js.map +1 -0
  103. package/dist/admin/routes/settings/id.mjs +382 -0
  104. package/dist/admin/routes/settings/id.mjs.map +1 -0
  105. package/dist/admin/{chunks/index-CCx4kT-t.js → routes/settings/index.js} +15 -15
  106. package/dist/admin/routes/settings/index.js.map +1 -0
  107. package/dist/admin/{chunks/index-iChY7MsG.mjs → routes/settings/index.mjs} +7 -7
  108. package/dist/admin/routes/settings/index.mjs.map +1 -0
  109. package/dist/admin/services/admin.js +23 -0
  110. package/dist/admin/services/admin.js.map +1 -0
  111. package/dist/admin/services/admin.mjs +21 -0
  112. package/dist/admin/services/admin.mjs.map +1 -0
  113. package/dist/admin/services/api.js +15 -0
  114. package/dist/admin/services/api.js.map +1 -0
  115. package/dist/admin/services/api.mjs +13 -0
  116. package/dist/admin/services/api.mjs.map +1 -0
  117. package/dist/admin/services/content-manager.js +101 -0
  118. package/dist/admin/services/content-manager.js.map +1 -0
  119. package/dist/admin/services/content-manager.mjs +96 -0
  120. package/dist/admin/services/content-manager.mjs.map +1 -0
  121. package/dist/admin/services/settings.js +123 -0
  122. package/dist/admin/services/settings.js.map +1 -0
  123. package/dist/admin/services/settings.mjs +118 -0
  124. package/dist/admin/services/settings.mjs.map +1 -0
  125. package/dist/admin/{chunks/en-BNGiWajd.js → translations/en.json.js} +2 -2
  126. package/dist/admin/translations/en.json.js.map +1 -0
  127. package/dist/admin/{chunks/en-BrZXFtVv.mjs → translations/en.json.mjs} +1 -1
  128. package/dist/admin/translations/en.json.mjs.map +1 -0
  129. package/dist/admin/{chunks/uk-CbRUr1I7.js → translations/uk.json.js} +2 -2
  130. package/dist/admin/translations/uk.json.js.map +1 -0
  131. package/dist/admin/{chunks/uk-DLlzEBUF.mjs → translations/uk.json.mjs} +1 -1
  132. package/dist/admin/translations/uk.json.mjs.map +1 -0
  133. package/dist/admin/utils/api.js +22 -0
  134. package/dist/admin/utils/api.js.map +1 -0
  135. package/dist/admin/utils/api.mjs +19 -0
  136. package/dist/admin/utils/api.mjs.map +1 -0
  137. package/dist/admin/utils/cm-hooks.js +23 -0
  138. package/dist/admin/utils/cm-hooks.js.map +1 -0
  139. package/dist/admin/utils/cm-hooks.mjs +21 -0
  140. package/dist/admin/utils/cm-hooks.mjs.map +1 -0
  141. package/dist/admin/utils/colors.js +50 -0
  142. package/dist/admin/utils/colors.js.map +1 -0
  143. package/dist/admin/utils/colors.mjs +47 -0
  144. package/dist/admin/utils/colors.mjs.map +1 -0
  145. package/dist/admin/utils/translations.js +11 -0
  146. package/dist/admin/utils/translations.js.map +1 -0
  147. package/dist/admin/utils/translations.mjs +9 -0
  148. package/dist/admin/utils/translations.mjs.map +1 -0
  149. package/dist/admin/utils/users.js +17 -0
  150. package/dist/admin/utils/users.js.map +1 -0
  151. package/dist/admin/utils/users.mjs +15 -0
  152. package/dist/admin/utils/users.mjs.map +1 -0
  153. package/dist/server/bootstrap.js +54 -0
  154. package/dist/server/bootstrap.js.map +1 -0
  155. package/dist/server/bootstrap.mjs +52 -0
  156. package/dist/server/bootstrap.mjs.map +1 -0
  157. package/dist/server/config/actions.js +47 -0
  158. package/dist/server/config/actions.js.map +1 -0
  159. package/dist/server/config/actions.mjs +45 -0
  160. package/dist/server/config/actions.mjs.map +1 -0
  161. package/dist/server/constants/default-stages.json.js +23 -0
  162. package/dist/server/constants/default-stages.json.js.map +1 -0
  163. package/dist/server/constants/default-stages.json.mjs +21 -0
  164. package/dist/server/constants/default-stages.json.mjs.map +1 -0
  165. package/dist/server/constants/default-workflow.json.js +12 -0
  166. package/dist/server/constants/default-workflow.json.js.map +1 -0
  167. package/dist/server/constants/default-workflow.json.mjs +7 -0
  168. package/dist/server/constants/default-workflow.json.mjs.map +1 -0
  169. package/dist/server/constants/webhook-events.js +12 -0
  170. package/dist/server/constants/webhook-events.js.map +1 -0
  171. package/dist/server/constants/webhook-events.mjs +7 -0
  172. package/dist/server/constants/webhook-events.mjs.map +1 -0
  173. package/dist/server/constants/workflows.js +53 -0
  174. package/dist/server/constants/workflows.js.map +1 -0
  175. package/dist/server/constants/workflows.mjs +42 -0
  176. package/dist/server/constants/workflows.mjs.map +1 -0
  177. package/dist/server/content-types/index.js +12 -0
  178. package/dist/server/content-types/index.js.map +1 -0
  179. package/dist/server/content-types/index.mjs +10 -0
  180. package/dist/server/content-types/index.mjs.map +1 -0
  181. package/dist/server/content-types/workflow/index.js +50 -0
  182. package/dist/server/content-types/workflow/index.js.map +1 -0
  183. package/dist/server/content-types/workflow/index.mjs +48 -0
  184. package/dist/server/content-types/workflow/index.mjs.map +1 -0
  185. package/dist/server/content-types/workflow-stage/index.js +54 -0
  186. package/dist/server/content-types/workflow-stage/index.js.map +1 -0
  187. package/dist/server/content-types/workflow-stage/index.mjs +52 -0
  188. package/dist/server/content-types/workflow-stage/index.mjs.map +1 -0
  189. package/dist/server/controllers/assignees.js +57 -0
  190. package/dist/server/controllers/assignees.js.map +1 -0
  191. package/dist/server/controllers/assignees.mjs +55 -0
  192. package/dist/server/controllers/assignees.mjs.map +1 -0
  193. package/dist/server/controllers/index.js +14 -0
  194. package/dist/server/controllers/index.js.map +1 -0
  195. package/dist/server/controllers/index.mjs +12 -0
  196. package/dist/server/controllers/index.mjs.map +1 -0
  197. package/dist/server/controllers/stages.js +167 -0
  198. package/dist/server/controllers/stages.js.map +1 -0
  199. package/dist/server/controllers/stages.mjs +165 -0
  200. package/dist/server/controllers/stages.mjs.map +1 -0
  201. package/dist/server/controllers/workflows.js +136 -0
  202. package/dist/server/controllers/workflows.js.map +1 -0
  203. package/dist/server/controllers/workflows.mjs +134 -0
  204. package/dist/server/controllers/workflows.mjs.map +1 -0
  205. package/dist/server/destroy.js +6 -0
  206. package/dist/server/destroy.js.map +1 -0
  207. package/dist/server/destroy.mjs +4 -0
  208. package/dist/server/destroy.mjs.map +1 -0
  209. package/dist/server/index.js +12 -2333
  210. package/dist/server/index.js.map +1 -1
  211. package/dist/server/index.mjs +7 -2328
  212. package/dist/server/index.mjs.map +1 -1
  213. package/dist/server/middlewares/review-workflows.js +42 -0
  214. package/dist/server/middlewares/review-workflows.js.map +1 -0
  215. package/dist/server/middlewares/review-workflows.mjs +37 -0
  216. package/dist/server/middlewares/review-workflows.mjs.map +1 -0
  217. package/dist/server/migrations/handle-deleted-ct-in-workflows.js +40 -0
  218. package/dist/server/migrations/handle-deleted-ct-in-workflows.js.map +1 -0
  219. package/dist/server/migrations/handle-deleted-ct-in-workflows.mjs +38 -0
  220. package/dist/server/migrations/handle-deleted-ct-in-workflows.mjs.map +1 -0
  221. package/dist/server/migrations/multiple-workflows.js +41 -0
  222. package/dist/server/migrations/multiple-workflows.js.map +1 -0
  223. package/dist/server/migrations/multiple-workflows.mjs +39 -0
  224. package/dist/server/migrations/multiple-workflows.mjs.map +1 -0
  225. package/dist/server/migrations/set-stages-default-color.js +22 -0
  226. package/dist/server/migrations/set-stages-default-color.js.map +1 -0
  227. package/dist/server/migrations/set-stages-default-color.mjs +20 -0
  228. package/dist/server/migrations/set-stages-default-color.mjs.map +1 -0
  229. package/dist/server/migrations/set-stages-roles.js +56 -0
  230. package/dist/server/migrations/set-stages-roles.js.map +1 -0
  231. package/dist/server/migrations/set-stages-roles.mjs +54 -0
  232. package/dist/server/migrations/set-stages-roles.mjs.map +1 -0
  233. package/dist/server/migrations/set-workflow-default-name.js +29 -0
  234. package/dist/server/migrations/set-workflow-default-name.js.map +1 -0
  235. package/dist/server/migrations/set-workflow-default-name.mjs +27 -0
  236. package/dist/server/migrations/set-workflow-default-name.mjs.map +1 -0
  237. package/dist/server/migrations/shorten-stage-attribute.js +45 -0
  238. package/dist/server/migrations/shorten-stage-attribute.js.map +1 -0
  239. package/dist/server/migrations/shorten-stage-attribute.mjs +43 -0
  240. package/dist/server/migrations/shorten-stage-attribute.mjs.map +1 -0
  241. package/dist/server/register.js +116 -0
  242. package/dist/server/register.js.map +1 -0
  243. package/dist/server/register.mjs +114 -0
  244. package/dist/server/register.mjs.map +1 -0
  245. package/dist/server/routes/index.js +10 -0
  246. package/dist/server/routes/index.js.map +1 -0
  247. package/dist/server/routes/index.mjs +8 -0
  248. package/dist/server/routes/index.mjs.map +1 -0
  249. package/dist/server/routes/review-workflows.js +186 -0
  250. package/dist/server/routes/review-workflows.js.map +1 -0
  251. package/dist/server/routes/review-workflows.mjs +184 -0
  252. package/dist/server/routes/review-workflows.mjs.map +1 -0
  253. package/dist/server/routes/utils.js +11 -0
  254. package/dist/server/routes/utils.js.map +1 -0
  255. package/dist/server/routes/utils.mjs +9 -0
  256. package/dist/server/routes/utils.mjs.map +1 -0
  257. package/dist/server/services/assignees.js +68 -0
  258. package/dist/server/services/assignees.js.map +1 -0
  259. package/dist/server/services/assignees.mjs +66 -0
  260. package/dist/server/services/assignees.mjs.map +1 -0
  261. package/dist/server/services/document-service-middleware.js +130 -0
  262. package/dist/server/services/document-service-middleware.js.map +1 -0
  263. package/dist/server/services/document-service-middleware.mjs +128 -0
  264. package/dist/server/services/document-service-middleware.mjs.map +1 -0
  265. package/dist/server/services/index.js +24 -0
  266. package/dist/server/services/index.js.map +1 -0
  267. package/dist/server/services/index.mjs +22 -0
  268. package/dist/server/services/index.mjs.map +1 -0
  269. package/dist/server/services/metrics/index.js +67 -0
  270. package/dist/server/services/metrics/index.js.map +1 -0
  271. package/dist/server/services/metrics/index.mjs +55 -0
  272. package/dist/server/services/metrics/index.mjs.map +1 -0
  273. package/dist/server/services/metrics/weekly-metrics.js +84 -0
  274. package/dist/server/services/metrics/weekly-metrics.js.map +1 -0
  275. package/dist/server/services/metrics/weekly-metrics.mjs +82 -0
  276. package/dist/server/services/metrics/weekly-metrics.mjs.map +1 -0
  277. package/dist/server/services/stage-permissions.js +59 -0
  278. package/dist/server/services/stage-permissions.js.map +1 -0
  279. package/dist/server/services/stage-permissions.mjs +57 -0
  280. package/dist/server/services/stage-permissions.mjs.map +1 -0
  281. package/dist/server/services/stages.js +353 -0
  282. package/dist/server/services/stages.js.map +1 -0
  283. package/dist/server/services/stages.mjs +351 -0
  284. package/dist/server/services/stages.mjs.map +1 -0
  285. package/dist/server/services/validation.js +69 -0
  286. package/dist/server/services/validation.js.map +1 -0
  287. package/dist/server/services/validation.mjs +67 -0
  288. package/dist/server/services/validation.mjs.map +1 -0
  289. package/dist/server/services/workflow-content-types.js +90 -0
  290. package/dist/server/services/workflow-content-types.js.map +1 -0
  291. package/dist/server/services/workflow-content-types.mjs +88 -0
  292. package/dist/server/services/workflow-content-types.mjs.map +1 -0
  293. package/dist/server/services/workflows.js +279 -0
  294. package/dist/server/services/workflows.js.map +1 -0
  295. package/dist/server/services/workflows.mjs +277 -0
  296. package/dist/server/services/workflows.mjs.map +1 -0
  297. package/dist/server/utils/index.js +16 -0
  298. package/dist/server/utils/index.js.map +1 -0
  299. package/dist/server/utils/index.mjs +13 -0
  300. package/dist/server/utils/index.mjs.map +1 -0
  301. package/dist/server/utils/review-workflows.js +36 -0
  302. package/dist/server/utils/review-workflows.js.map +1 -0
  303. package/dist/server/utils/review-workflows.mjs +30 -0
  304. package/dist/server/utils/review-workflows.mjs.map +1 -0
  305. package/dist/server/validation/review-workflows.js +71 -0
  306. package/dist/server/validation/review-workflows.js.map +1 -0
  307. package/dist/server/validation/review-workflows.mjs +65 -0
  308. package/dist/server/validation/review-workflows.mjs.map +1 -0
  309. package/package.json +5 -5
  310. package/dist/admin/chunks/Layout-C4ri_ldC.js.map +0 -1
  311. package/dist/admin/chunks/Layout-CF497D6H.mjs.map +0 -1
  312. package/dist/admin/chunks/en-BNGiWajd.js.map +0 -1
  313. package/dist/admin/chunks/en-BrZXFtVv.mjs.map +0 -1
  314. package/dist/admin/chunks/id-DVOtqJqn.js +0 -1442
  315. package/dist/admin/chunks/id-DVOtqJqn.js.map +0 -1
  316. package/dist/admin/chunks/id-QD0V9dME.mjs +0 -1420
  317. package/dist/admin/chunks/id-QD0V9dME.mjs.map +0 -1
  318. package/dist/admin/chunks/index-CCx4kT-t.js.map +0 -1
  319. package/dist/admin/chunks/index-CzdEqFOm.js.map +0 -1
  320. package/dist/admin/chunks/index-DcEF47R4.mjs.map +0 -1
  321. package/dist/admin/chunks/index-iChY7MsG.mjs.map +0 -1
  322. package/dist/admin/chunks/purchase-review-workflows-4n0KXAeo.mjs.map +0 -1
  323. package/dist/admin/chunks/purchase-review-workflows-BDLncDcz.js.map +0 -1
  324. package/dist/admin/chunks/router-ChVwf8TN.js.map +0 -1
  325. package/dist/admin/chunks/router-D-YCUzYy.mjs.map +0 -1
  326. package/dist/admin/chunks/uk-CbRUr1I7.js.map +0 -1
  327. package/dist/admin/chunks/uk-DLlzEBUF.mjs.map +0 -1
@@ -0,0 +1,572 @@
1
+ import { jsxs, jsx, Fragment } from 'react/jsx-runtime';
2
+ import * as React from 'react';
3
+ import { useTracking, useForm, useField, InputRenderer as InputRenderer$1, useNotification, ConfirmDialog } from '@strapi/admin/strapi-admin';
4
+ import { Box, Accordion, MenuItem, Menu, MultiSelectOption, Flex, useComposedRefs, VisuallyHidden, IconButton, Grid, Field, SingleSelect, SingleSelectOption, TextInput, MultiSelect, MultiSelectGroup, Dialog } from '@strapi/design-system';
5
+ import { More, Drag, EyeStriked, Duplicate } from '@strapi/icons';
6
+ import { getEmptyImage } from 'react-dnd-html5-backend';
7
+ import { useIntl } from 'react-intl';
8
+ import { styled } from 'styled-components';
9
+ import { useGetAdminRolesQuery } from '../../../services/admin.mjs';
10
+ import { AVAILABLE_COLORS, getStageColorByHex } from '../../../utils/colors.mjs';
11
+ import { DRAG_DROP_TYPES } from '../constants.mjs';
12
+ import { useDragAndDrop } from '../hooks/useDragAndDrop.mjs';
13
+ import { AddStage } from './AddStage.mjs';
14
+
15
+ const Stages = ({ canDelete = true, canUpdate = true, isCreating })=>{
16
+ const { formatMessage } = useIntl();
17
+ const { trackUsage } = useTracking();
18
+ const addFieldRow = useForm('Stages', (state)=>state.addFieldRow);
19
+ const { value: stages = [] } = useField('stages');
20
+ return /*#__PURE__*/ jsxs(Flex, {
21
+ direction: "column",
22
+ gap: 6,
23
+ width: "100%",
24
+ children: [
25
+ /*#__PURE__*/ jsxs(Box, {
26
+ position: "relative",
27
+ width: "100%",
28
+ children: [
29
+ /*#__PURE__*/ jsx(Background, {
30
+ background: "neutral200",
31
+ height: "100%",
32
+ left: "50%",
33
+ position: "absolute",
34
+ top: "0",
35
+ width: 2
36
+ }),
37
+ /*#__PURE__*/ jsx(Flex, {
38
+ direction: "column",
39
+ alignItems: "stretch",
40
+ gap: 6,
41
+ position: "relative",
42
+ tag: "ol",
43
+ children: stages.map((stage, index)=>{
44
+ return /*#__PURE__*/ jsx(Box, {
45
+ tag: "li",
46
+ children: /*#__PURE__*/ jsx(Stage, {
47
+ index: index,
48
+ canDelete: stages.length > 1 && canDelete,
49
+ canReorder: stages.length > 1,
50
+ canUpdate: canUpdate,
51
+ stagesCount: stages.length,
52
+ defaultOpen: !stage.id,
53
+ ...stage
54
+ })
55
+ }, stage.__temp_key__);
56
+ })
57
+ })
58
+ ]
59
+ }),
60
+ canUpdate && /*#__PURE__*/ jsx(AddStage, {
61
+ type: "button",
62
+ onClick: ()=>{
63
+ addFieldRow('stages', {
64
+ name: ''
65
+ });
66
+ trackUsage('willCreateStage');
67
+ },
68
+ children: formatMessage({
69
+ id: 'Settings.review-workflows.stage.add',
70
+ defaultMessage: 'Add new stage'
71
+ })
72
+ })
73
+ ]
74
+ });
75
+ };
76
+ const Background = styled(Box)`
77
+ transform: translateX(-50%);
78
+ `;
79
+ const Stage = ({ index, canDelete = false, canReorder = false, canUpdate = false, stagesCount, name, permissions, color, defaultOpen })=>{
80
+ const [liveText, setLiveText] = React.useState();
81
+ const { formatMessage } = useIntl();
82
+ const { trackUsage } = useTracking();
83
+ const stageErrors = useForm('Stages', (state)=>state.errors.stages);
84
+ const error = stageErrors?.[index];
85
+ const addFieldRow = useForm('Stage', (state)=>state.addFieldRow);
86
+ const moveFieldRow = useForm('Stage', (state)=>state.moveFieldRow);
87
+ const removeFieldRow = useForm('Stage', (state)=>state.removeFieldRow);
88
+ const getItemPos = (index)=>`${index + 1} of ${stagesCount}`;
89
+ const handleGrabStage = (index)=>{
90
+ setLiveText(formatMessage({
91
+ id: 'dnd.grab-item',
92
+ defaultMessage: `{item}, grabbed. Current position in list: {position}. Press up and down arrow to change position, Spacebar to drop, Escape to cancel.`
93
+ }, {
94
+ item: name,
95
+ position: getItemPos(index)
96
+ }));
97
+ };
98
+ const handleDropStage = (index)=>{
99
+ setLiveText(formatMessage({
100
+ id: 'dnd.drop-item',
101
+ defaultMessage: `{item}, dropped. Final position in list: {position}.`
102
+ }, {
103
+ item: name,
104
+ position: getItemPos(index)
105
+ }));
106
+ };
107
+ const handleCancelDragStage = ()=>{
108
+ setLiveText(formatMessage({
109
+ id: 'dnd.cancel-item',
110
+ defaultMessage: '{item}, dropped. Re-order cancelled.'
111
+ }, {
112
+ item: name
113
+ }));
114
+ };
115
+ const handleMoveStage = (newIndex, oldIndex)=>{
116
+ setLiveText(formatMessage({
117
+ id: 'dnd.reorder',
118
+ defaultMessage: '{item}, moved. New position in list: {position}.'
119
+ }, {
120
+ item: name,
121
+ position: getItemPos(newIndex)
122
+ }));
123
+ moveFieldRow('stages', oldIndex, newIndex);
124
+ };
125
+ const [{ handlerId, isDragging, handleKeyDown }, stageRef, dropRef, dragRef, dragPreviewRef] = useDragAndDrop(canReorder, {
126
+ index,
127
+ item: {
128
+ index,
129
+ name
130
+ },
131
+ onGrabItem: handleGrabStage,
132
+ onDropItem: handleDropStage,
133
+ onMoveItem: handleMoveStage,
134
+ onCancel: handleCancelDragStage,
135
+ type: DRAG_DROP_TYPES.STAGE
136
+ });
137
+ // @ts-expect-error – the stageRef is incorrectly typed.
138
+ const composedRef = useComposedRefs(stageRef, dropRef);
139
+ React.useEffect(()=>{
140
+ dragPreviewRef(getEmptyImage(), {
141
+ captureDraggingState: false
142
+ });
143
+ }, [
144
+ dragPreviewRef,
145
+ index
146
+ ]);
147
+ const handleCloneClick = ()=>{
148
+ addFieldRow('stages', {
149
+ name,
150
+ color,
151
+ permissions
152
+ });
153
+ };
154
+ const id = React.useId();
155
+ return /*#__PURE__*/ jsxs(Box, {
156
+ ref: composedRef,
157
+ shadow: "tableShadow",
158
+ children: [
159
+ liveText && /*#__PURE__*/ jsx(VisuallyHidden, {
160
+ "aria-live": "assertive",
161
+ children: liveText
162
+ }),
163
+ isDragging ? /*#__PURE__*/ jsx(Box, {
164
+ background: "primary100",
165
+ borderStyle: "dashed",
166
+ borderColor: "primary600",
167
+ borderWidth: "1px",
168
+ display: "block",
169
+ hasRadius: true,
170
+ padding: 6
171
+ }) : /*#__PURE__*/ jsx(AccordionRoot, {
172
+ onValueChange: (value)=>{
173
+ if (value) {
174
+ trackUsage('willEditStage');
175
+ }
176
+ },
177
+ defaultValue: defaultOpen ? id : undefined,
178
+ $error: Object.values(error ?? {}).length > 0,
179
+ children: /*#__PURE__*/ jsxs(Accordion.Item, {
180
+ value: id,
181
+ children: [
182
+ /*#__PURE__*/ jsxs(Accordion.Header, {
183
+ children: [
184
+ /*#__PURE__*/ jsx(Accordion.Trigger, {
185
+ children: name
186
+ }),
187
+ /*#__PURE__*/ jsx(Accordion.Actions, {
188
+ children: canDelete || canUpdate ? /*#__PURE__*/ jsxs(Fragment, {
189
+ children: [
190
+ /*#__PURE__*/ jsxs(Menu.Root, {
191
+ children: [
192
+ /*#__PURE__*/ jsxs(ContextMenuTrigger, {
193
+ size: "S",
194
+ endIcon: null,
195
+ paddingLeft: 2,
196
+ paddingRight: 2,
197
+ children: [
198
+ /*#__PURE__*/ jsx(More, {
199
+ "aria-hidden": true,
200
+ focusable: false
201
+ }),
202
+ /*#__PURE__*/ jsx(VisuallyHidden, {
203
+ tag: "span",
204
+ children: formatMessage({
205
+ id: '[tbdb].components.DynamicZone.more-actions',
206
+ defaultMessage: 'More actions'
207
+ })
208
+ })
209
+ ]
210
+ }),
211
+ /*#__PURE__*/ jsx(Menu.Content, {
212
+ popoverPlacement: "bottom-end",
213
+ zIndex: 2,
214
+ children: /*#__PURE__*/ jsxs(Menu.SubRoot, {
215
+ children: [
216
+ canUpdate && /*#__PURE__*/ jsx(MenuItem, {
217
+ onClick: handleCloneClick,
218
+ children: formatMessage({
219
+ id: 'Settings.review-workflows.stage.delete',
220
+ defaultMessage: 'Duplicate stage'
221
+ })
222
+ }),
223
+ canDelete && /*#__PURE__*/ jsx(DeleteMenuItem, {
224
+ onClick: ()=>removeFieldRow('stages', index),
225
+ children: formatMessage({
226
+ id: 'Settings.review-workflows.stage.delete',
227
+ defaultMessage: 'Delete'
228
+ })
229
+ })
230
+ ]
231
+ })
232
+ })
233
+ ]
234
+ }),
235
+ canUpdate && /*#__PURE__*/ jsx(IconButton, {
236
+ background: "transparent",
237
+ hasRadius: true,
238
+ variant: "ghost",
239
+ "data-handler-id": handlerId,
240
+ ref: dragRef,
241
+ label: formatMessage({
242
+ id: 'Settings.review-workflows.stage.drag',
243
+ defaultMessage: 'Drag'
244
+ }),
245
+ onClick: (e)=>e.stopPropagation(),
246
+ onKeyDown: handleKeyDown,
247
+ children: /*#__PURE__*/ jsx(Drag, {})
248
+ })
249
+ ]
250
+ }) : null
251
+ })
252
+ ]
253
+ }),
254
+ /*#__PURE__*/ jsx(Accordion.Content, {
255
+ children: /*#__PURE__*/ jsx(Grid.Root, {
256
+ gap: 4,
257
+ padding: 6,
258
+ children: [
259
+ {
260
+ disabled: !canUpdate,
261
+ label: formatMessage({
262
+ id: 'Settings.review-workflows.stage.name.label',
263
+ defaultMessage: 'Stage name'
264
+ }),
265
+ name: `stages.${index}.name`,
266
+ required: true,
267
+ size: 6,
268
+ type: 'string'
269
+ },
270
+ {
271
+ disabled: !canUpdate,
272
+ label: formatMessage({
273
+ id: 'content-manager.reviewWorkflows.stage.color',
274
+ defaultMessage: 'Color'
275
+ }),
276
+ name: `stages.${index}.color`,
277
+ required: true,
278
+ size: 6,
279
+ type: 'color'
280
+ },
281
+ {
282
+ disabled: !canUpdate,
283
+ label: formatMessage({
284
+ id: 'Settings.review-workflows.stage.permissions.label',
285
+ defaultMessage: 'Roles that can change this stage'
286
+ }),
287
+ name: `stages.${index}.permissions`,
288
+ placeholder: formatMessage({
289
+ id: 'Settings.review-workflows.stage.permissions.placeholder',
290
+ defaultMessage: 'Select a role'
291
+ }),
292
+ required: true,
293
+ size: 6,
294
+ type: 'permissions'
295
+ }
296
+ ].map(({ size, ...field })=>/*#__PURE__*/ jsx(Grid.Item, {
297
+ col: size,
298
+ direction: "column",
299
+ alignItems: "stretch",
300
+ children: /*#__PURE__*/ jsx(InputRenderer, {
301
+ ...field
302
+ })
303
+ }, field.name))
304
+ })
305
+ })
306
+ ]
307
+ })
308
+ })
309
+ ]
310
+ });
311
+ };
312
+ const AccordionRoot = styled(Accordion.Root)`
313
+ border: 1px solid
314
+ ${({ theme, $error })=>$error ? theme.colors.danger600 : theme.colors.neutral200};
315
+ `;
316
+ const DeleteMenuItem = styled(MenuItem)`
317
+ color: ${({ theme })=>theme.colors.danger600};
318
+ `;
319
+ // Removing the font-size from the child-span aligns the
320
+ // more icon vertically
321
+ const ContextMenuTrigger = styled(Menu.Trigger)`
322
+ :hover,
323
+ :focus {
324
+ background-color: ${({ theme })=>theme.colors.neutral100};
325
+ }
326
+
327
+ > span {
328
+ font-size: 0;
329
+ }
330
+ `;
331
+ const InputRenderer = (props)=>{
332
+ switch(props.type){
333
+ case 'color':
334
+ return /*#__PURE__*/ jsx(ColorSelector, {
335
+ ...props
336
+ });
337
+ case 'permissions':
338
+ return /*#__PURE__*/ jsx(PermissionsField, {
339
+ ...props
340
+ });
341
+ default:
342
+ return /*#__PURE__*/ jsx(InputRenderer$1, {
343
+ ...props
344
+ });
345
+ }
346
+ };
347
+ const ColorSelector = ({ disabled, label, name, required })=>{
348
+ const { formatMessage } = useIntl();
349
+ const { value, error, onChange } = useField(name);
350
+ const colorOptions = AVAILABLE_COLORS.map(({ hex, name })=>({
351
+ value: hex,
352
+ label: formatMessage({
353
+ id: 'Settings.review-workflows.stage.color.name',
354
+ defaultMessage: '{name}'
355
+ }, {
356
+ name
357
+ }),
358
+ color: hex
359
+ }));
360
+ const { themeColorName } = getStageColorByHex(value) ?? {};
361
+ return /*#__PURE__*/ jsxs(Field.Root, {
362
+ error: error,
363
+ name: name,
364
+ required: required,
365
+ children: [
366
+ /*#__PURE__*/ jsx(Field.Label, {
367
+ children: label
368
+ }),
369
+ /*#__PURE__*/ jsx(SingleSelect, {
370
+ disabled: disabled,
371
+ onChange: (v)=>{
372
+ onChange(name, v.toString());
373
+ },
374
+ value: value?.toUpperCase(),
375
+ startIcon: /*#__PURE__*/ jsx(Flex, {
376
+ tag: "span",
377
+ height: 2,
378
+ background: value,
379
+ borderColor: themeColorName === 'neutral0' ? 'neutral150' : 'transparent',
380
+ hasRadius: true,
381
+ shrink: 0,
382
+ width: 2
383
+ }),
384
+ children: colorOptions.map(({ value, label, color })=>{
385
+ const { themeColorName } = getStageColorByHex(color) || {};
386
+ return /*#__PURE__*/ jsx(SingleSelectOption, {
387
+ value: value,
388
+ startIcon: /*#__PURE__*/ jsx(Flex, {
389
+ tag: "span",
390
+ height: 2,
391
+ background: color,
392
+ borderColor: themeColorName === 'neutral0' ? 'neutral150' : 'transparent',
393
+ hasRadius: true,
394
+ shrink: 0,
395
+ width: 2
396
+ }),
397
+ children: label
398
+ }, value);
399
+ })
400
+ }),
401
+ /*#__PURE__*/ jsx(Field.Error, {})
402
+ ]
403
+ });
404
+ };
405
+ const PermissionsField = ({ disabled, name, placeholder, required })=>{
406
+ const { formatMessage } = useIntl();
407
+ const { toggleNotification } = useNotification();
408
+ const [isApplyAllConfirmationOpen, setIsApplyAllConfirmationOpen] = React.useState(false);
409
+ const { value = [], error, onChange } = useField(name);
410
+ const allStages = useForm('PermissionsField', (state)=>state.values.stages);
411
+ const onFormValueChange = useForm('PermissionsField', (state)=>state.onChange);
412
+ const rolesErrorCount = React.useRef(0);
413
+ const { data: roles = [], isLoading, error: getRolesError } = useGetAdminRolesQuery();
414
+ // Super admins always have permissions to do everything and therefore
415
+ // there is no point for this role to show up in the role combobox
416
+ const filteredRoles = roles?.filter((role)=>role.code !== 'strapi-super-admin') ?? [];
417
+ React.useEffect(()=>{
418
+ if (!isLoading && getRolesError && 'status' in getRolesError && getRolesError.status == 403 && rolesErrorCount.current === 0) {
419
+ rolesErrorCount.current = 1;
420
+ toggleNotification({
421
+ blockTransition: true,
422
+ type: 'danger',
423
+ message: formatMessage({
424
+ id: 'review-workflows.stage.permissions.noPermissions.description',
425
+ defaultMessage: 'You don’t have the permission to see roles. Contact your administrator.'
426
+ })
427
+ });
428
+ }
429
+ }, [
430
+ formatMessage,
431
+ isLoading,
432
+ roles,
433
+ toggleNotification,
434
+ getRolesError
435
+ ]);
436
+ if (!isLoading && filteredRoles.length === 0) {
437
+ return /*#__PURE__*/ jsxs(Field.Root, {
438
+ name: name,
439
+ hint: formatMessage({
440
+ id: 'Settings.review-workflows.stage.permissions.noPermissions.description',
441
+ defaultMessage: 'You don’t have the permission to see roles'
442
+ }),
443
+ required: required,
444
+ children: [
445
+ /*#__PURE__*/ jsx(Field.Label, {
446
+ children: formatMessage({
447
+ id: 'Settings.review-workflows.stage.permissions.label',
448
+ defaultMessage: 'Roles that can change this stage'
449
+ })
450
+ }),
451
+ /*#__PURE__*/ jsx(TextInput, {
452
+ disabled: true,
453
+ placeholder: formatMessage({
454
+ id: 'components.NotAllowedInput.text',
455
+ defaultMessage: 'No permissions to see this field'
456
+ }),
457
+ startAction: /*#__PURE__*/ jsx(EyeStriked, {
458
+ fill: "neutral600"
459
+ }),
460
+ type: "text",
461
+ value: ""
462
+ }),
463
+ /*#__PURE__*/ jsx(Field.Hint, {})
464
+ ]
465
+ });
466
+ }
467
+ return /*#__PURE__*/ jsx(Fragment, {
468
+ children: /*#__PURE__*/ jsxs(Flex, {
469
+ alignItems: "flex-end",
470
+ gap: 3,
471
+ children: [
472
+ /*#__PURE__*/ jsx(PermissionWrapper, {
473
+ grow: 1,
474
+ children: /*#__PURE__*/ jsxs(Field.Root, {
475
+ error: error,
476
+ name: name,
477
+ required: true,
478
+ children: [
479
+ /*#__PURE__*/ jsx(Field.Label, {
480
+ children: formatMessage({
481
+ id: 'Settings.review-workflows.stage.permissions.label',
482
+ defaultMessage: 'Roles that can change this stage'
483
+ })
484
+ }),
485
+ /*#__PURE__*/ jsx(MultiSelect, {
486
+ disabled: disabled,
487
+ onChange: (values)=>{
488
+ // Because the select components expects strings for values, but
489
+ // the yup schema validates we are sending full permission objects to the API,
490
+ // we must coerce the string value back to an object
491
+ const permissions = values.map((value)=>({
492
+ role: parseInt(value, 10),
493
+ action: 'admin::review-workflows.stage.transition'
494
+ }));
495
+ onChange(name, permissions);
496
+ },
497
+ placeholder: placeholder,
498
+ // The Select component expects strings for values
499
+ value: value.map((permission)=>`${permission.role}`),
500
+ withTags: true,
501
+ children: /*#__PURE__*/ jsx(MultiSelectGroup, {
502
+ label: formatMessage({
503
+ id: 'Settings.review-workflows.stage.permissions.allRoles.label',
504
+ defaultMessage: 'All roles'
505
+ }),
506
+ values: filteredRoles.map((r)=>`${r.id}`),
507
+ children: filteredRoles.map((role)=>{
508
+ return /*#__PURE__*/ jsx(NestedOption, {
509
+ value: `${role.id}`,
510
+ children: role.name
511
+ }, role.id);
512
+ })
513
+ })
514
+ }),
515
+ /*#__PURE__*/ jsx(Field.Error, {})
516
+ ]
517
+ })
518
+ }),
519
+ /*#__PURE__*/ jsxs(Dialog.Root, {
520
+ open: isApplyAllConfirmationOpen,
521
+ onOpenChange: setIsApplyAllConfirmationOpen,
522
+ children: [
523
+ /*#__PURE__*/ jsx(Dialog.Trigger, {
524
+ children: /*#__PURE__*/ jsx(IconButton, {
525
+ disabled: disabled,
526
+ label: formatMessage({
527
+ id: 'Settings.review-workflows.stage.permissions.apply.label',
528
+ defaultMessage: 'Apply to all stages'
529
+ }),
530
+ size: "L",
531
+ children: /*#__PURE__*/ jsx(Duplicate, {})
532
+ })
533
+ }),
534
+ /*#__PURE__*/ jsx(ConfirmDialog, {
535
+ onConfirm: ()=>{
536
+ onFormValueChange('stages', allStages.map((stage)=>({
537
+ ...stage,
538
+ permissions: value
539
+ })));
540
+ setIsApplyAllConfirmationOpen(false);
541
+ toggleNotification({
542
+ type: 'success',
543
+ message: formatMessage({
544
+ id: 'Settings.review-workflows.page.edit.confirm.stages.permissions.copy.success',
545
+ defaultMessage: 'Applied roles to all other stages of the workflow'
546
+ })
547
+ });
548
+ },
549
+ variant: "default",
550
+ children: formatMessage({
551
+ id: 'Settings.review-workflows.page.edit.confirm.stages.permissions.copy',
552
+ defaultMessage: 'Roles that can change that stage will be applied to all the other stages.'
553
+ })
554
+ })
555
+ ]
556
+ })
557
+ ]
558
+ })
559
+ });
560
+ };
561
+ const NestedOption = styled(MultiSelectOption)`
562
+ padding-left: ${({ theme })=>theme.spaces[7]};
563
+ `;
564
+ // Grow the size of the permission Select
565
+ const PermissionWrapper = styled(Flex)`
566
+ > * {
567
+ flex-grow: 1;
568
+ }
569
+ `;
570
+
571
+ export { Stages };
572
+ //# sourceMappingURL=Stages.mjs.map