@strapi/admin 5.0.0-alpha.7 → 5.0.0-alpha.8

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 (208) hide show
  1. package/dist/admin/{AdminSeatInfo-5S4b9ytt.js → AdminSeatInfo-Gp4BFR1_.js} +2 -2
  2. package/dist/admin/{AdminSeatInfo-5S4b9ytt.js.map → AdminSeatInfo-Gp4BFR1_.js.map} +1 -1
  3. package/dist/admin/{AdminSeatInfo-A6gxA301.mjs → AdminSeatInfo-dDgFBcLY.mjs} +2 -2
  4. package/dist/admin/{AdminSeatInfo-A6gxA301.mjs.map → AdminSeatInfo-dDgFBcLY.mjs.map} +1 -1
  5. package/dist/admin/{ApplicationInfoPage-SaBco4KU.mjs → ApplicationInfoPage-GQLKLk5T.mjs} +3 -3
  6. package/dist/admin/{ApplicationInfoPage-SaBco4KU.mjs.map → ApplicationInfoPage-GQLKLk5T.mjs.map} +1 -1
  7. package/dist/admin/{ApplicationInfoPage-Fxy6RARu.js → ApplicationInfoPage-e_sOqQMh.js} +3 -3
  8. package/dist/admin/{ApplicationInfoPage-Fxy6RARu.js.map → ApplicationInfoPage-e_sOqQMh.js.map} +1 -1
  9. package/dist/admin/{AuthenticatedLayout-Iyagtqob.mjs → AuthenticatedLayout-3fYM18Xy.mjs} +3 -3
  10. package/dist/admin/{AuthenticatedLayout-Iyagtqob.mjs.map → AuthenticatedLayout-3fYM18Xy.mjs.map} +1 -1
  11. package/dist/admin/{AuthenticatedLayout-tRi16L9c.js → AuthenticatedLayout-gGQYIisy.js} +3 -3
  12. package/dist/admin/{AuthenticatedLayout-tRi16L9c.js.map → AuthenticatedLayout-gGQYIisy.js.map} +1 -1
  13. package/dist/admin/{ComponentConfigurationPage-6CnnkE6E.mjs → ComponentConfigurationPage-0kf7a5LK.mjs} +2 -2
  14. package/dist/admin/{ComponentConfigurationPage-6CnnkE6E.mjs.map → ComponentConfigurationPage-0kf7a5LK.mjs.map} +1 -1
  15. package/dist/admin/{ComponentConfigurationPage-LpuZH_80.js → ComponentConfigurationPage-U7RcNJFs.js} +2 -2
  16. package/dist/admin/{ComponentConfigurationPage-LpuZH_80.js.map → ComponentConfigurationPage-U7RcNJFs.js.map} +1 -1
  17. package/dist/admin/{CreateActionEE-9-R9hmOH.js → CreateActionEE-HO-FmNjw.js} +2 -2
  18. package/dist/admin/{CreateActionEE-9-R9hmOH.js.map → CreateActionEE-HO-FmNjw.js.map} +1 -1
  19. package/dist/admin/{CreateActionEE-fPOnLJuM.mjs → CreateActionEE-OscS6KZj.mjs} +2 -2
  20. package/dist/admin/{CreateActionEE-fPOnLJuM.mjs.map → CreateActionEE-OscS6KZj.mjs.map} +1 -1
  21. package/dist/admin/{CreatePage-t0FqkFrZ.mjs → CreatePage-1a_Nb-RK.mjs} +6 -6
  22. package/dist/admin/{CreatePage-t0FqkFrZ.mjs.map → CreatePage-1a_Nb-RK.mjs.map} +1 -1
  23. package/dist/admin/{CreatePage-k_yey8N_.mjs → CreatePage-8rG8fSZv.mjs} +2 -2
  24. package/dist/admin/{CreatePage-k_yey8N_.mjs.map → CreatePage-8rG8fSZv.mjs.map} +1 -1
  25. package/dist/admin/{CreatePage-UjSB-dgp.js → CreatePage-B0kLot_Q.js} +2 -2
  26. package/dist/admin/{CreatePage-UjSB-dgp.js.map → CreatePage-B0kLot_Q.js.map} +1 -1
  27. package/dist/admin/{CreatePage-couIKeZQ.mjs → CreatePage-c92hDTE3.mjs} +2 -2
  28. package/dist/admin/{CreatePage-couIKeZQ.mjs.map → CreatePage-c92hDTE3.mjs.map} +1 -1
  29. package/dist/admin/{CreatePage-Fu_8X4K8.js → CreatePage-h9gJgINE.js} +2 -2
  30. package/dist/admin/{CreatePage-Fu_8X4K8.js.map → CreatePage-h9gJgINE.js.map} +1 -1
  31. package/dist/admin/{CreatePage-ZPziliHk.js → CreatePage-pN8WcSWM.js} +6 -6
  32. package/dist/admin/{CreatePage-ZPziliHk.js.map → CreatePage-pN8WcSWM.js.map} +1 -1
  33. package/dist/admin/{CreateView-41To--31.js → CreateView-Gd7sLphf.js} +2 -2
  34. package/dist/admin/{CreateView-41To--31.js.map → CreateView-Gd7sLphf.js.map} +1 -1
  35. package/dist/admin/{CreateView-3rY4Zptu.mjs → CreateView-PIPvgwa8.mjs} +2 -2
  36. package/dist/admin/{CreateView-3rY4Zptu.mjs.map → CreateView-PIPvgwa8.mjs.map} +1 -1
  37. package/dist/admin/{CreateView-Tg9Mh5T3.js → CreateView-kVD9MjAf.js} +2 -2
  38. package/dist/admin/{CreateView-Tg9Mh5T3.js.map → CreateView-kVD9MjAf.js.map} +1 -1
  39. package/dist/admin/{CreateView-ePHsDH45.mjs → CreateView-nXkGgZTO.mjs} +2 -2
  40. package/dist/admin/{CreateView-ePHsDH45.mjs.map → CreateView-nXkGgZTO.mjs.map} +1 -1
  41. package/dist/admin/{EditConfigurationPage-xUIWyyB3.js → EditConfigurationPage-YAS-MAtE.js} +2 -2
  42. package/dist/admin/{EditConfigurationPage-xUIWyyB3.js.map → EditConfigurationPage-YAS-MAtE.js.map} +1 -1
  43. package/dist/admin/{EditConfigurationPage-msmjy1KU.mjs → EditConfigurationPage-jugWslla.mjs} +2 -2
  44. package/dist/admin/{EditConfigurationPage-msmjy1KU.mjs.map → EditConfigurationPage-jugWslla.mjs.map} +1 -1
  45. package/dist/admin/{EditPage-KuoEv50O.mjs → EditPage-6pGLGlrZ.mjs} +3 -3
  46. package/dist/admin/{EditPage-KuoEv50O.mjs.map → EditPage-6pGLGlrZ.mjs.map} +1 -1
  47. package/dist/admin/{EditPage-SySHhxVT.mjs → EditPage-I99-ASjb.mjs} +4 -4
  48. package/dist/admin/{EditPage-SySHhxVT.mjs.map → EditPage-I99-ASjb.mjs.map} +1 -1
  49. package/dist/admin/{EditPage-3SBMJVop.mjs → EditPage-NrM8ZRAf.mjs} +6 -6
  50. package/dist/admin/{EditPage-3SBMJVop.mjs.map → EditPage-NrM8ZRAf.mjs.map} +1 -1
  51. package/dist/admin/{EditPage-ZB_Kwtk6.js → EditPage-ci9fcWte.js} +6 -6
  52. package/dist/admin/{EditPage-ZB_Kwtk6.js.map → EditPage-ci9fcWte.js.map} +1 -1
  53. package/dist/admin/{EditPage-cCyAao8t.mjs → EditPage-fT6nuOwT.mjs} +3 -3
  54. package/dist/admin/{EditPage-cCyAao8t.mjs.map → EditPage-fT6nuOwT.mjs.map} +1 -1
  55. package/dist/admin/{EditPage--MbF06mK.js → EditPage-hEDFGDcC.js} +3 -3
  56. package/dist/admin/{EditPage--MbF06mK.js.map → EditPage-hEDFGDcC.js.map} +1 -1
  57. package/dist/admin/{EditPage-GG3uO1tK.js → EditPage-m5HVhxC-.js} +3 -3
  58. package/dist/admin/{EditPage-GG3uO1tK.js.map → EditPage-m5HVhxC-.js.map} +1 -1
  59. package/dist/admin/{EditPage-qUg5s7MV.js → EditPage-um8Yysr-.js} +4 -4
  60. package/dist/admin/{EditPage-qUg5s7MV.js.map → EditPage-um8Yysr-.js.map} +1 -1
  61. package/dist/admin/{EditView-uTB8aFye.mjs → EditView-79rujo0b.mjs} +2 -2
  62. package/dist/admin/{EditView-uTB8aFye.mjs.map → EditView-79rujo0b.mjs.map} +1 -1
  63. package/dist/admin/{EditView-NPoSYint.js → EditView-zEf-a-YM.js} +2 -2
  64. package/dist/admin/{EditView-NPoSYint.js.map → EditView-zEf-a-YM.js.map} +1 -1
  65. package/dist/admin/{EditViewPage-GUkP1rzn.mjs → EditViewPage-BJdNfzBZ.mjs} +2 -2
  66. package/dist/admin/{EditViewPage-GUkP1rzn.mjs.map → EditViewPage-BJdNfzBZ.mjs.map} +1 -1
  67. package/dist/admin/{EditViewPage-aIpRJ8vJ.js → EditViewPage-Y67V7K7l.js} +2 -2
  68. package/dist/admin/{EditViewPage-aIpRJ8vJ.js.map → EditViewPage-Y67V7K7l.js.map} +1 -1
  69. package/dist/admin/{EditViewPage-8eo8XEp-.mjs → EditViewPage-iuq_KY3C.mjs} +2 -2
  70. package/dist/admin/{EditViewPage-8eo8XEp-.mjs.map → EditViewPage-iuq_KY3C.mjs.map} +1 -1
  71. package/dist/admin/{EditViewPage-K7ytzy_P.js → EditViewPage-vrE8FNb1.js} +2 -2
  72. package/dist/admin/{EditViewPage-K7ytzy_P.js.map → EditViewPage-vrE8FNb1.js.map} +1 -1
  73. package/dist/admin/{EventsTable-miLAex8G.mjs → EventsTable-LOh2EX0N.mjs} +2 -2
  74. package/dist/admin/{EventsTable-miLAex8G.mjs.map → EventsTable-LOh2EX0N.mjs.map} +1 -1
  75. package/dist/admin/{EventsTable-LHOhvL6b.js → EventsTable-bm16Pj4a.js} +2 -2
  76. package/dist/admin/{EventsTable-LHOhvL6b.js.map → EventsTable-bm16Pj4a.js.map} +1 -1
  77. package/dist/admin/{Filters-dwU8wA6T.js → Filters-5FAHd62q.js} +2 -2
  78. package/dist/admin/{Filters-dwU8wA6T.js.map → Filters-5FAHd62q.js.map} +1 -1
  79. package/dist/admin/{Filters-NuK9aAYl.mjs → Filters-hYfcsahl.mjs} +2 -2
  80. package/dist/admin/{Filters-NuK9aAYl.mjs.map → Filters-hYfcsahl.mjs.map} +1 -1
  81. package/dist/admin/{Form-y8gH26Xy.mjs → Form-7gccxUtH.mjs} +2 -2
  82. package/dist/admin/{Form-y8gH26Xy.mjs.map → Form-7gccxUtH.mjs.map} +1 -1
  83. package/dist/admin/{Form-QoOkjEjV.js → Form-m0qUJusG.js} +2 -2
  84. package/dist/admin/{Form-QoOkjEjV.js.map → Form-m0qUJusG.js.map} +1 -1
  85. package/dist/admin/{HomePage-K72cOtYS.mjs → HomePage-2q7ngwX4.mjs} +3 -3
  86. package/dist/admin/{HomePage-K72cOtYS.mjs.map → HomePage-2q7ngwX4.mjs.map} +1 -1
  87. package/dist/admin/{HomePage-89WRumlX.mjs → HomePage-_eHszm7N.mjs} +3 -3
  88. package/dist/admin/{HomePage-89WRumlX.mjs.map → HomePage-_eHszm7N.mjs.map} +1 -1
  89. package/dist/admin/{HomePage-qj5mNY6J.js → HomePage-jwm3AAzI.js} +3 -3
  90. package/dist/admin/{HomePage-qj5mNY6J.js.map → HomePage-jwm3AAzI.js.map} +1 -1
  91. package/dist/admin/{HomePage-33ElW8Xc.js → HomePage-ozwWqZdZ.js} +3 -3
  92. package/dist/admin/{HomePage-33ElW8Xc.js.map → HomePage-ozwWqZdZ.js.map} +1 -1
  93. package/dist/admin/{Layout-JxGSf9_Y.mjs → Layout-JSg7Wwnx.mjs} +2 -2
  94. package/dist/admin/{Layout-JxGSf9_Y.mjs.map → Layout-JSg7Wwnx.mjs.map} +1 -1
  95. package/dist/admin/{Layout-u3VVVTce.mjs → Layout-gqm-mRb2.mjs} +3 -3
  96. package/dist/admin/{Layout-u3VVVTce.mjs.map → Layout-gqm-mRb2.mjs.map} +1 -1
  97. package/dist/admin/{Layout-v-mkhXKv.js → Layout-rp7YlCuF.js} +3 -3
  98. package/dist/admin/{Layout-v-mkhXKv.js.map → Layout-rp7YlCuF.js.map} +1 -1
  99. package/dist/admin/{Layout-T0g-F0J1.js → Layout-tPXv8ts4.js} +2 -2
  100. package/dist/admin/{Layout-T0g-F0J1.js.map → Layout-tPXv8ts4.js.map} +1 -1
  101. package/dist/admin/{ListConfigurationPage-bltmUKBT.mjs → ListConfigurationPage-1JkDop6y.mjs} +2 -2
  102. package/dist/admin/{ListConfigurationPage-bltmUKBT.mjs.map → ListConfigurationPage-1JkDop6y.mjs.map} +1 -1
  103. package/dist/admin/{ListConfigurationPage-MwlySSVK.js → ListConfigurationPage-egv99PTx.js} +2 -2
  104. package/dist/admin/{ListConfigurationPage-MwlySSVK.js.map → ListConfigurationPage-egv99PTx.js.map} +1 -1
  105. package/dist/admin/{ListPage-L-_ih7Hh.js → ListPage-5VIwPlnG.js} +3 -3
  106. package/dist/admin/{ListPage-L-_ih7Hh.js.map → ListPage-5VIwPlnG.js.map} +1 -1
  107. package/dist/admin/{ListPage-t2yAStC4.js → ListPage-85XB15gk.js} +4 -4
  108. package/dist/admin/{ListPage-t2yAStC4.js.map → ListPage-85XB15gk.js.map} +1 -1
  109. package/dist/admin/{ListPage-jUKAQtpH.js → ListPage-NG7c9Zx-.js} +3 -3
  110. package/dist/admin/{ListPage-jUKAQtpH.js.map → ListPage-NG7c9Zx-.js.map} +1 -1
  111. package/dist/admin/{ListPage-VNJqXKYM.js → ListPage-Wf8HxliA.js} +3 -3
  112. package/dist/admin/{ListPage-VNJqXKYM.js.map → ListPage-Wf8HxliA.js.map} +1 -1
  113. package/dist/admin/{ListPage-6TwMzZ42.mjs → ListPage-Y0vGfxO1.mjs} +3 -3
  114. package/dist/admin/{ListPage-6TwMzZ42.mjs.map → ListPage-Y0vGfxO1.mjs.map} +1 -1
  115. package/dist/admin/{ListPage-ea3ZLj4B.mjs → ListPage-_1MCPNWC.mjs} +3 -3
  116. package/dist/admin/{ListPage-ea3ZLj4B.mjs.map → ListPage-_1MCPNWC.mjs.map} +1 -1
  117. package/dist/admin/{ListPage-cB1S2S4t.mjs → ListPage-bdblB4wE.mjs} +2 -2
  118. package/dist/admin/{ListPage-cB1S2S4t.mjs.map → ListPage-bdblB4wE.mjs.map} +1 -1
  119. package/dist/admin/{ListPage-zMNnrnTB.js → ListPage-d0uTS6lH.js} +2 -2
  120. package/dist/admin/{ListPage-zMNnrnTB.js.map → ListPage-d0uTS6lH.js.map} +1 -1
  121. package/dist/admin/{ListPage-nvhOIoAg.js → ListPage-e0975Wh-.js} +7 -7
  122. package/dist/admin/{ListPage-nvhOIoAg.js.map → ListPage-e0975Wh-.js.map} +1 -1
  123. package/dist/admin/{ListPage-pP9hYRl0.mjs → ListPage-eMKRFxzM.mjs} +3 -3
  124. package/dist/admin/{ListPage-pP9hYRl0.mjs.map → ListPage-eMKRFxzM.mjs.map} +1 -1
  125. package/dist/admin/{ListPage-QKnSioEM.mjs → ListPage-tFqx6zb_.mjs} +7 -7
  126. package/dist/admin/{ListPage-QKnSioEM.mjs.map → ListPage-tFqx6zb_.mjs.map} +1 -1
  127. package/dist/admin/{ListPage-tR89wtOV.mjs → ListPage-v07yRAHk.mjs} +4 -4
  128. package/dist/admin/{ListPage-tR89wtOV.mjs.map → ListPage-v07yRAHk.mjs.map} +1 -1
  129. package/dist/admin/{ListView-TAmGuKTG.mjs → ListView-9shnR2xp.mjs} +2 -2
  130. package/dist/admin/{ListView-TAmGuKTG.mjs.map → ListView-9shnR2xp.mjs.map} +1 -1
  131. package/dist/admin/{ListView-I9Hfj5vj.js → ListView-IaEe1_Uy.js} +2 -2
  132. package/dist/admin/{ListView-I9Hfj5vj.js.map → ListView-IaEe1_Uy.js.map} +1 -1
  133. package/dist/admin/{ListView-mCiRJwrY.js → ListView-_EZZ571X.js} +2 -2
  134. package/dist/admin/{ListView-mCiRJwrY.js.map → ListView-_EZZ571X.js.map} +1 -1
  135. package/dist/admin/{ListView-MbnmLD5H.mjs → ListView-z9G1Eash.mjs} +2 -2
  136. package/dist/admin/{ListView-MbnmLD5H.mjs.map → ListView-z9G1Eash.mjs.map} +1 -1
  137. package/dist/admin/{ListViewPage-J4KUAgai.mjs → ListViewPage-FE12IpwT.mjs} +6 -6
  138. package/dist/admin/{ListViewPage-J4KUAgai.mjs.map → ListViewPage-FE12IpwT.mjs.map} +1 -1
  139. package/dist/admin/{ListViewPage-dluuhb-d.js → ListViewPage-u5WSF93L.js} +6 -6
  140. package/dist/admin/{ListViewPage-dluuhb-d.js.map → ListViewPage-u5WSF93L.js.map} +1 -1
  141. package/dist/admin/{Login-eWkr5rD0.mjs → Login-9iKNSYCJ.mjs} +2 -2
  142. package/dist/admin/{Login-eWkr5rD0.mjs.map → Login-9iKNSYCJ.mjs.map} +1 -1
  143. package/dist/admin/{Login-xaRTR09T.js → Login-ug0ICazL.js} +2 -2
  144. package/dist/admin/{Login-xaRTR09T.js.map → Login-ug0ICazL.js.map} +1 -1
  145. package/dist/admin/{MagicLinkEE-jSJRGswm.mjs → MagicLinkEE-3a4aj5bM.mjs} +3 -3
  146. package/dist/admin/{MagicLinkEE-jSJRGswm.mjs.map → MagicLinkEE-3a4aj5bM.mjs.map} +1 -1
  147. package/dist/admin/{MagicLinkEE-DdAnlnbT.js → MagicLinkEE-TlpYCgSF.js} +3 -3
  148. package/dist/admin/{MagicLinkEE-DdAnlnbT.js.map → MagicLinkEE-TlpYCgSF.js.map} +1 -1
  149. package/dist/admin/{MarketplacePage-NuCSMXXA.mjs → MarketplacePage-BBs4GMeX.mjs} +2 -2
  150. package/dist/admin/{MarketplacePage-NuCSMXXA.mjs.map → MarketplacePage-BBs4GMeX.mjs.map} +1 -1
  151. package/dist/admin/{MarketplacePage-7R9OXLe5.js → MarketplacePage-GuZItQkJ.js} +2 -2
  152. package/dist/admin/{MarketplacePage-7R9OXLe5.js.map → MarketplacePage-GuZItQkJ.js.map} +1 -1
  153. package/dist/admin/{ReviewWorkflowsColumn-fFjISpV-.mjs → ReviewWorkflowsColumn-NUu47oVz.mjs} +2 -2
  154. package/dist/admin/{ReviewWorkflowsColumn-fFjISpV-.mjs.map → ReviewWorkflowsColumn-NUu47oVz.mjs.map} +1 -1
  155. package/dist/admin/{ReviewWorkflowsColumn-woA2SXEC.js → ReviewWorkflowsColumn-uIqJfjyd.js} +2 -2
  156. package/dist/admin/{ReviewWorkflowsColumn-woA2SXEC.js.map → ReviewWorkflowsColumn-uIqJfjyd.js.map} +1 -1
  157. package/dist/admin/{SelectRoles-IagtXRkz.js → SelectRoles-5vr-vXOm.js} +3 -3
  158. package/dist/admin/{SelectRoles-IagtXRkz.js.map → SelectRoles-5vr-vXOm.js.map} +1 -1
  159. package/dist/admin/{SelectRoles-wkrG60gH.mjs → SelectRoles-ytHc3di2.mjs} +3 -3
  160. package/dist/admin/{SelectRoles-wkrG60gH.mjs.map → SelectRoles-ytHc3di2.mjs.map} +1 -1
  161. package/dist/admin/{SingleSignOnPage-QtJcKvz1.js → SingleSignOnPage-1Wqj_7y-.js} +2 -2
  162. package/dist/admin/{SingleSignOnPage-QtJcKvz1.js.map → SingleSignOnPage-1Wqj_7y-.js.map} +1 -1
  163. package/dist/admin/{SingleSignOnPage-EnR7TNHn.mjs → SingleSignOnPage-7oJES3UH.mjs} +2 -2
  164. package/dist/admin/{SingleSignOnPage-EnR7TNHn.mjs.map → SingleSignOnPage-7oJES3UH.mjs.map} +1 -1
  165. package/dist/admin/{Table--Lb2Jk8K.mjs → Table-LQhGojNx.mjs} +2 -2
  166. package/dist/admin/{Table--Lb2Jk8K.mjs.map → Table-LQhGojNx.mjs.map} +1 -1
  167. package/dist/admin/{Table-EGrwI1DE.js → Table-M5UsBfFs.js} +2 -2
  168. package/dist/admin/{Table-EGrwI1DE.js.map → Table-M5UsBfFs.js.map} +1 -1
  169. package/dist/admin/{TokenTypeSelect-Vsm3x9aT.mjs → TokenTypeSelect-5o9mvFd7.mjs} +2 -2
  170. package/dist/admin/{TokenTypeSelect-Vsm3x9aT.mjs.map → TokenTypeSelect-5o9mvFd7.mjs.map} +1 -1
  171. package/dist/admin/{TokenTypeSelect-nSM_sCJb.js → TokenTypeSelect-ZBDI26vJ.js} +2 -2
  172. package/dist/admin/{TokenTypeSelect-nSM_sCJb.js.map → TokenTypeSelect-ZBDI26vJ.js.map} +1 -1
  173. package/dist/admin/{UseCasePage-LDFlFUgh.mjs → UseCasePage-e7rn-aW-.mjs} +2 -2
  174. package/dist/admin/{UseCasePage-LDFlFUgh.mjs.map → UseCasePage-e7rn-aW-.mjs.map} +1 -1
  175. package/dist/admin/{UseCasePage-lb8KTjmb.js → UseCasePage-q3u-xs7F.js} +2 -2
  176. package/dist/admin/{UseCasePage-lb8KTjmb.js.map → UseCasePage-q3u-xs7F.js.map} +1 -1
  177. package/dist/admin/{constants-aUUP-q78.js → constants-6E1OwHx7.js} +3 -3
  178. package/dist/admin/{constants-aUUP-q78.js.map → constants-6E1OwHx7.js.map} +1 -1
  179. package/dist/admin/{constants--TURFsEh.mjs → constants-AdKxCt0x.mjs} +2 -2
  180. package/dist/admin/{constants--TURFsEh.mjs.map → constants-AdKxCt0x.mjs.map} +1 -1
  181. package/dist/admin/{constants--6hi2sq7.mjs → constants-D6NLEhwu.mjs} +3 -3
  182. package/dist/admin/{constants--6hi2sq7.mjs.map → constants-D6NLEhwu.mjs.map} +1 -1
  183. package/dist/admin/{constants-yG6U1h1n.js → constants-ZZWbRAQT.js} +2 -2
  184. package/dist/admin/{constants-yG6U1h1n.js.map → constants-ZZWbRAQT.js.map} +1 -1
  185. package/dist/admin/{index-oXhvt6Nv.mjs → index-1NFAbkxM.mjs} +36 -36
  186. package/dist/admin/{index-oXhvt6Nv.mjs.map → index-1NFAbkxM.mjs.map} +1 -1
  187. package/dist/admin/{index-lSQdx61-.js → index-mQQPK-ix.js} +36 -36
  188. package/dist/admin/{index-lSQdx61-.js.map → index-mQQPK-ix.js.map} +1 -1
  189. package/dist/admin/index.js +1 -1
  190. package/dist/admin/index.mjs +1 -1
  191. package/dist/admin/{useAdminRoles-bTVTWj4N.mjs → useAdminRoles-BG7b996L.mjs} +2 -2
  192. package/dist/admin/{useAdminRoles-bTVTWj4N.mjs.map → useAdminRoles-BG7b996L.mjs.map} +1 -1
  193. package/dist/admin/{useAdminRoles-efJpe2jv.js → useAdminRoles-THWXour6.js} +2 -2
  194. package/dist/admin/{useAdminRoles-efJpe2jv.js.map → useAdminRoles-THWXour6.js.map} +1 -1
  195. package/dist/admin/{useLicenseLimitNotification-4B6SglGc.mjs → useLicenseLimitNotification-9DqSZuyc.mjs} +2 -2
  196. package/dist/admin/{useLicenseLimitNotification-4B6SglGc.mjs.map → useLicenseLimitNotification-9DqSZuyc.mjs.map} +1 -1
  197. package/dist/admin/{useLicenseLimitNotification-lLyTIkNR.js → useLicenseLimitNotification-SiWQ5LGo.js} +2 -2
  198. package/dist/admin/{useLicenseLimitNotification-lLyTIkNR.js.map → useLicenseLimitNotification-SiWQ5LGo.js.map} +1 -1
  199. package/dist/admin/{useReviewWorkflows-KJq-ld3U.js → useReviewWorkflows-0ty4mwQd.js} +2 -2
  200. package/dist/admin/{useReviewWorkflows-KJq-ld3U.js.map → useReviewWorkflows-0ty4mwQd.js.map} +1 -1
  201. package/dist/admin/{useReviewWorkflows-1IXSO8ml.mjs → useReviewWorkflows-HwyFyit7.mjs} +2 -2
  202. package/dist/admin/{useReviewWorkflows-1IXSO8ml.mjs.map → useReviewWorkflows-HwyFyit7.mjs.map} +1 -1
  203. package/dist/admin/{validateWorkflow-1RnC2GKb.js → validateWorkflow-99y3bkNx.js} +2 -2
  204. package/dist/admin/{validateWorkflow-1RnC2GKb.js.map → validateWorkflow-99y3bkNx.js.map} +1 -1
  205. package/dist/admin/{validateWorkflow-BOHXHGsM.mjs → validateWorkflow-ubLwZqCK.mjs} +2 -2
  206. package/dist/admin/{validateWorkflow-BOHXHGsM.mjs.map → validateWorkflow-ubLwZqCK.mjs.map} +1 -1
  207. package/dist/package.json.d.ts +1 -1
  208. package/package.json +12 -12
@@ -1 +1 @@
1
- {"version":3,"file":"ComponentConfigurationPage-LpuZH_80.js","sources":["../../admin/src/content-manager/services/components.ts","../../admin/src/content-manager/pages/ComponentConfigurationPage.tsx"],"sourcesContent":["import { contentManagerApi } from './api';\n\nimport type { Contracts } from '@strapi/plugin-content-manager/_internal/shared';\n\nconst componentsApi = contentManagerApi.injectEndpoints({\n endpoints: (builder) => ({\n getComponentConfiguration: builder.query<\n Contracts.Components.FindComponentConfiguration.Response['data'],\n Contracts.Components.FindComponentConfiguration.Params['uid']\n >({\n query: (uid) => `/content-manager/components/${uid}/configuration`,\n transformResponse: (response: Contracts.Components.FindComponentConfiguration.Response) =>\n response.data,\n providesTags: (_result, _error, uid) => [{ type: 'ComponentConfiguration', id: uid }],\n }),\n updateComponentConfiguration: builder.mutation({\n query: ({ uid, ...body }) => ({\n url: `/content-manager/components/${uid}/configuration`,\n method: 'PUT',\n data: body,\n }),\n transformResponse: (response: Contracts.Components.UpdateComponentConfiguration.Response) =>\n response.data,\n invalidatesTags: (_result, _error, { uid }) => [\n { type: 'ComponentConfiguration', id: uid },\n // otherwise layouts already fetched will have stale component configuration data.\n { type: 'ContentTypeSettings', id: 'LIST' },\n ],\n }),\n }),\n});\n\nconst { useGetComponentConfigurationQuery, useUpdateComponentConfigurationMutation } =\n componentsApi;\n\nexport { useGetComponentConfigurationQuery, useUpdateComponentConfigurationMutation };\n","import * as React from 'react';\n\nimport { Helmet } from 'react-helmet';\nimport { useIntl } from 'react-intl';\nimport { useParams } from 'react-router-dom';\n\nimport { Page } from '../../components/PageHelpers';\nimport { useTypedSelector } from '../../core/store/hooks';\nimport { useNotification } from '../../features/Notifications';\nimport { useAPIErrorHandler } from '../../hooks/useAPIErrorHandler';\nimport { setIn } from '../../utils/objects';\nimport { TEMP_FIELD_NAME } from '../components/ConfigurationForm/Fields';\nimport { ConfigurationForm, ConfigurationFormProps } from '../components/ConfigurationForm/Form';\nimport { ComponentsDictionary, extractContentTypeComponents } from '../hooks/useContentTypeSchema';\nimport {\n DEFAULT_SETTINGS,\n EditLayout,\n convertEditLayoutToFieldLayouts,\n} from '../hooks/useDocumentLayout';\nimport {\n useGetComponentConfigurationQuery,\n useUpdateComponentConfigurationMutation,\n} from '../services/components';\nimport { useGetInitialDataQuery } from '../services/init';\n\nimport type { Contracts } from '@strapi/plugin-content-manager/_internal/shared';\n\n/* -------------------------------------------------------------------------------------------------\n * ComponentConfigurationPage\n * -----------------------------------------------------------------------------------------------*/\n\nconst ComponentConfigurationPage = () => {\n /**\n * useDocumentLayout only works for documents, not components,\n * it feels weird to make that hook work for both when this is SUCH\n * a unique use case and we only do it here, so in short, we essentially\n * just extracted the logic to make an edit view layout and reproduced it here.\n */\n const { slug: model } = useParams<{ slug: string }>();\n const { toggleNotification } = useNotification();\n const { formatMessage } = useIntl();\n const { _unstableFormatAPIError: formatAPIError } = useAPIErrorHandler();\n\n const {\n components,\n fieldSizes,\n schema,\n error: errorSchema,\n isLoading: isLoadingSchema,\n isFetching: isFetchingSchema,\n } = useGetInitialDataQuery(undefined, {\n selectFromResult: (res) => {\n const schema = res.data?.components.find((ct) => ct.uid === model);\n\n const componentsByKey = res.data?.components.reduce<ComponentsDictionary>(\n (acc, component) => {\n acc[component.uid] = component;\n\n return acc;\n },\n {}\n );\n\n const components = extractContentTypeComponents(schema?.attributes, componentsByKey);\n\n const fieldSizes = Object.entries(res.data?.fieldSizes ?? {}).reduce<\n ConfigurationFormProps['fieldSizes']\n >((acc, [attributeName, { default: size }]) => {\n acc[attributeName] = size;\n\n return acc;\n }, {});\n\n return {\n isFetching: res.isFetching,\n isLoading: res.isLoading,\n error: res.error,\n components,\n schema,\n fieldSizes,\n };\n },\n });\n\n React.useEffect(() => {\n if (errorSchema) {\n toggleNotification({\n type: 'danger',\n message: formatAPIError(errorSchema),\n });\n }\n }, [errorSchema, formatAPIError, toggleNotification]);\n\n const {\n data,\n isLoading: isLoadingConfig,\n isFetching: isFetchingConfig,\n error,\n } = useGetComponentConfigurationQuery(model ?? '');\n\n React.useEffect(() => {\n if (error) {\n toggleNotification({\n type: 'danger',\n message: formatAPIError(error),\n });\n }\n }, [error, formatAPIError, toggleNotification]);\n\n /**\n * you **must** check if we're loading or fetching in case the component gets new props\n * but nothing was unmounted, it then becomes a fetch, not a load.\n */\n const isLoading = isLoadingConfig || isLoadingSchema || isFetchingConfig || isFetchingSchema;\n\n const editLayout = React.useMemo(\n () =>\n data && !isLoading\n ? formatEditLayout(data, { schema, components })\n : ({\n layout: [],\n components: {},\n metadatas: {},\n options: {},\n settings: DEFAULT_SETTINGS,\n } as EditLayout),\n [data, isLoading, schema, components]\n );\n\n const [updateConfiguration] = useUpdateComponentConfigurationMutation();\n const handleSubmit: ConfigurationFormProps['onSubmit'] = async (formData) => {\n try {\n /**\n * We reconstruct the metadatas object by taking the existing list metadatas\n * and re-merging that by attribute name with the current list metadatas, whilst overwriting\n * the data from the form we've built.\n */\n const meta = Object.entries(\n data?.component.metadatas ?? {}\n ).reduce<Contracts.ContentTypes.Metadatas>((acc, [name, { edit, list }]) => {\n const {\n __temp_key__,\n size: _size,\n name: _name,\n ...editedMetadata\n } = formData.layout.flatMap((row) => row.children).find((field) => field.name === name) ??\n {};\n\n acc[name] = {\n edit: {\n ...edit,\n ...editedMetadata,\n },\n list,\n };\n\n return acc;\n }, {});\n\n const res = await updateConfiguration({\n layouts: {\n edit: formData.layout.map((row) =>\n row.children.reduce<Array<{ name: string; size: number }>>((acc, { name, size }) => {\n if (name !== TEMP_FIELD_NAME) {\n return [...acc, { name, size }];\n }\n\n return acc;\n }, [])\n ),\n list: data?.component.layouts.list,\n },\n settings: setIn(formData.settings, 'displayName', undefined),\n metadatas: meta,\n uid: model,\n });\n\n if ('data' in res) {\n toggleNotification({\n type: 'success',\n message: formatMessage({ id: 'notification.success.saved', defaultMessage: 'Saved' }),\n });\n } else {\n toggleNotification({\n type: 'danger',\n message: formatAPIError(res.error),\n });\n }\n } catch {\n toggleNotification({\n type: 'danger',\n message: formatMessage({ id: 'notification.error', defaultMessage: 'An error occurred' }),\n });\n }\n };\n\n if (isLoading) {\n return <Page.Loading />;\n }\n\n if (error || errorSchema || !schema) {\n return <Page.Error />;\n }\n\n return (\n <>\n <Helmet title={`Configure ${editLayout.settings.displayName} Edit View | Strapi`} />\n <ConfigurationForm\n onSubmit={handleSubmit}\n attributes={schema.attributes}\n fieldSizes={fieldSizes}\n layout={editLayout}\n />\n </>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * Header\n * -----------------------------------------------------------------------------------------------*/\n\nconst formatEditLayout = (\n data: Contracts.Components.FindComponentConfiguration.Response['data'],\n {\n schema,\n components,\n }: { schema?: Contracts.Components.Component; components: ComponentsDictionary }\n) => {\n const editAttributes = convertEditLayoutToFieldLayouts(\n data.component.layouts.edit,\n schema?.attributes,\n data.component.metadatas,\n { configurations: data.components, schemas: components }\n );\n\n const componentEditAttributes = Object.entries(data.components).reduce<EditLayout['components']>(\n (acc, [uid, configuration]) => {\n acc[uid] = {\n layout: convertEditLayoutToFieldLayouts(\n configuration.layouts.edit,\n components[uid].attributes,\n configuration.metadatas\n ),\n settings: {\n ...configuration.settings,\n icon: components[uid].info.icon,\n displayName: components[uid].info.displayName,\n },\n };\n return acc;\n },\n {}\n );\n\n const editMetadatas = Object.entries(data.component.metadatas).reduce<EditLayout['metadatas']>(\n (acc, [attribute, metadata]) => {\n return {\n ...acc,\n [attribute]: metadata.edit,\n };\n },\n {}\n );\n\n return {\n layout: [editAttributes],\n components: componentEditAttributes,\n metadatas: editMetadatas,\n options: {\n ...schema?.options,\n ...schema?.pluginOptions,\n },\n settings: {\n ...data.component.settings,\n displayName: schema?.info.displayName,\n },\n };\n};\n\n/* -------------------------------------------------------------------------------------------------\n * Header\n * -----------------------------------------------------------------------------------------------*/\n\nconst ProtectedComponentConfigurationPage = () => {\n const permissions = useTypedSelector(\n (state) => state.admin_app.permissions.contentManager?.componentsConfigurations\n );\n\n return (\n <Page.Protect permissions={permissions}>\n <ComponentConfigurationPage />\n </Page.Protect>\n );\n};\n\nexport { ComponentConfigurationPage, ProtectedComponentConfigurationPage };\n"],"names":["contentManagerApi","useParams","useNotification","useIntl","useAPIErrorHandler","useGetInitialDataQuery","schema","components","extractContentTypeComponents","fieldSizes","React","DEFAULT_SETTINGS","TEMP_FIELD_NAME","setIn","jsx","Page","jsxs","Fragment","Helmet","ConfigurationForm","convertEditLayoutToFieldLayouts","useTypedSelector"],"mappings":"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"}
1
+ {"version":3,"file":"ComponentConfigurationPage-U7RcNJFs.js","sources":["../../admin/src/content-manager/services/components.ts","../../admin/src/content-manager/pages/ComponentConfigurationPage.tsx"],"sourcesContent":["import { contentManagerApi } from './api';\n\nimport type { Contracts } from '@strapi/plugin-content-manager/_internal/shared';\n\nconst componentsApi = contentManagerApi.injectEndpoints({\n endpoints: (builder) => ({\n getComponentConfiguration: builder.query<\n Contracts.Components.FindComponentConfiguration.Response['data'],\n Contracts.Components.FindComponentConfiguration.Params['uid']\n >({\n query: (uid) => `/content-manager/components/${uid}/configuration`,\n transformResponse: (response: Contracts.Components.FindComponentConfiguration.Response) =>\n response.data,\n providesTags: (_result, _error, uid) => [{ type: 'ComponentConfiguration', id: uid }],\n }),\n updateComponentConfiguration: builder.mutation({\n query: ({ uid, ...body }) => ({\n url: `/content-manager/components/${uid}/configuration`,\n method: 'PUT',\n data: body,\n }),\n transformResponse: (response: Contracts.Components.UpdateComponentConfiguration.Response) =>\n response.data,\n invalidatesTags: (_result, _error, { uid }) => [\n { type: 'ComponentConfiguration', id: uid },\n // otherwise layouts already fetched will have stale component configuration data.\n { type: 'ContentTypeSettings', id: 'LIST' },\n ],\n }),\n }),\n});\n\nconst { useGetComponentConfigurationQuery, useUpdateComponentConfigurationMutation } =\n componentsApi;\n\nexport { useGetComponentConfigurationQuery, useUpdateComponentConfigurationMutation };\n","import * as React from 'react';\n\nimport { Helmet } from 'react-helmet';\nimport { useIntl } from 'react-intl';\nimport { useParams } from 'react-router-dom';\n\nimport { Page } from '../../components/PageHelpers';\nimport { useTypedSelector } from '../../core/store/hooks';\nimport { useNotification } from '../../features/Notifications';\nimport { useAPIErrorHandler } from '../../hooks/useAPIErrorHandler';\nimport { setIn } from '../../utils/objects';\nimport { TEMP_FIELD_NAME } from '../components/ConfigurationForm/Fields';\nimport { ConfigurationForm, ConfigurationFormProps } from '../components/ConfigurationForm/Form';\nimport { ComponentsDictionary, extractContentTypeComponents } from '../hooks/useContentTypeSchema';\nimport {\n DEFAULT_SETTINGS,\n EditLayout,\n convertEditLayoutToFieldLayouts,\n} from '../hooks/useDocumentLayout';\nimport {\n useGetComponentConfigurationQuery,\n useUpdateComponentConfigurationMutation,\n} from '../services/components';\nimport { useGetInitialDataQuery } from '../services/init';\n\nimport type { Contracts } from '@strapi/plugin-content-manager/_internal/shared';\n\n/* -------------------------------------------------------------------------------------------------\n * ComponentConfigurationPage\n * -----------------------------------------------------------------------------------------------*/\n\nconst ComponentConfigurationPage = () => {\n /**\n * useDocumentLayout only works for documents, not components,\n * it feels weird to make that hook work for both when this is SUCH\n * a unique use case and we only do it here, so in short, we essentially\n * just extracted the logic to make an edit view layout and reproduced it here.\n */\n const { slug: model } = useParams<{ slug: string }>();\n const { toggleNotification } = useNotification();\n const { formatMessage } = useIntl();\n const { _unstableFormatAPIError: formatAPIError } = useAPIErrorHandler();\n\n const {\n components,\n fieldSizes,\n schema,\n error: errorSchema,\n isLoading: isLoadingSchema,\n isFetching: isFetchingSchema,\n } = useGetInitialDataQuery(undefined, {\n selectFromResult: (res) => {\n const schema = res.data?.components.find((ct) => ct.uid === model);\n\n const componentsByKey = res.data?.components.reduce<ComponentsDictionary>(\n (acc, component) => {\n acc[component.uid] = component;\n\n return acc;\n },\n {}\n );\n\n const components = extractContentTypeComponents(schema?.attributes, componentsByKey);\n\n const fieldSizes = Object.entries(res.data?.fieldSizes ?? {}).reduce<\n ConfigurationFormProps['fieldSizes']\n >((acc, [attributeName, { default: size }]) => {\n acc[attributeName] = size;\n\n return acc;\n }, {});\n\n return {\n isFetching: res.isFetching,\n isLoading: res.isLoading,\n error: res.error,\n components,\n schema,\n fieldSizes,\n };\n },\n });\n\n React.useEffect(() => {\n if (errorSchema) {\n toggleNotification({\n type: 'danger',\n message: formatAPIError(errorSchema),\n });\n }\n }, [errorSchema, formatAPIError, toggleNotification]);\n\n const {\n data,\n isLoading: isLoadingConfig,\n isFetching: isFetchingConfig,\n error,\n } = useGetComponentConfigurationQuery(model ?? '');\n\n React.useEffect(() => {\n if (error) {\n toggleNotification({\n type: 'danger',\n message: formatAPIError(error),\n });\n }\n }, [error, formatAPIError, toggleNotification]);\n\n /**\n * you **must** check if we're loading or fetching in case the component gets new props\n * but nothing was unmounted, it then becomes a fetch, not a load.\n */\n const isLoading = isLoadingConfig || isLoadingSchema || isFetchingConfig || isFetchingSchema;\n\n const editLayout = React.useMemo(\n () =>\n data && !isLoading\n ? formatEditLayout(data, { schema, components })\n : ({\n layout: [],\n components: {},\n metadatas: {},\n options: {},\n settings: DEFAULT_SETTINGS,\n } as EditLayout),\n [data, isLoading, schema, components]\n );\n\n const [updateConfiguration] = useUpdateComponentConfigurationMutation();\n const handleSubmit: ConfigurationFormProps['onSubmit'] = async (formData) => {\n try {\n /**\n * We reconstruct the metadatas object by taking the existing list metadatas\n * and re-merging that by attribute name with the current list metadatas, whilst overwriting\n * the data from the form we've built.\n */\n const meta = Object.entries(\n data?.component.metadatas ?? {}\n ).reduce<Contracts.ContentTypes.Metadatas>((acc, [name, { edit, list }]) => {\n const {\n __temp_key__,\n size: _size,\n name: _name,\n ...editedMetadata\n } = formData.layout.flatMap((row) => row.children).find((field) => field.name === name) ??\n {};\n\n acc[name] = {\n edit: {\n ...edit,\n ...editedMetadata,\n },\n list,\n };\n\n return acc;\n }, {});\n\n const res = await updateConfiguration({\n layouts: {\n edit: formData.layout.map((row) =>\n row.children.reduce<Array<{ name: string; size: number }>>((acc, { name, size }) => {\n if (name !== TEMP_FIELD_NAME) {\n return [...acc, { name, size }];\n }\n\n return acc;\n }, [])\n ),\n list: data?.component.layouts.list,\n },\n settings: setIn(formData.settings, 'displayName', undefined),\n metadatas: meta,\n uid: model,\n });\n\n if ('data' in res) {\n toggleNotification({\n type: 'success',\n message: formatMessage({ id: 'notification.success.saved', defaultMessage: 'Saved' }),\n });\n } else {\n toggleNotification({\n type: 'danger',\n message: formatAPIError(res.error),\n });\n }\n } catch {\n toggleNotification({\n type: 'danger',\n message: formatMessage({ id: 'notification.error', defaultMessage: 'An error occurred' }),\n });\n }\n };\n\n if (isLoading) {\n return <Page.Loading />;\n }\n\n if (error || errorSchema || !schema) {\n return <Page.Error />;\n }\n\n return (\n <>\n <Helmet title={`Configure ${editLayout.settings.displayName} Edit View | Strapi`} />\n <ConfigurationForm\n onSubmit={handleSubmit}\n attributes={schema.attributes}\n fieldSizes={fieldSizes}\n layout={editLayout}\n />\n </>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * Header\n * -----------------------------------------------------------------------------------------------*/\n\nconst formatEditLayout = (\n data: Contracts.Components.FindComponentConfiguration.Response['data'],\n {\n schema,\n components,\n }: { schema?: Contracts.Components.Component; components: ComponentsDictionary }\n) => {\n const editAttributes = convertEditLayoutToFieldLayouts(\n data.component.layouts.edit,\n schema?.attributes,\n data.component.metadatas,\n { configurations: data.components, schemas: components }\n );\n\n const componentEditAttributes = Object.entries(data.components).reduce<EditLayout['components']>(\n (acc, [uid, configuration]) => {\n acc[uid] = {\n layout: convertEditLayoutToFieldLayouts(\n configuration.layouts.edit,\n components[uid].attributes,\n configuration.metadatas\n ),\n settings: {\n ...configuration.settings,\n icon: components[uid].info.icon,\n displayName: components[uid].info.displayName,\n },\n };\n return acc;\n },\n {}\n );\n\n const editMetadatas = Object.entries(data.component.metadatas).reduce<EditLayout['metadatas']>(\n (acc, [attribute, metadata]) => {\n return {\n ...acc,\n [attribute]: metadata.edit,\n };\n },\n {}\n );\n\n return {\n layout: [editAttributes],\n components: componentEditAttributes,\n metadatas: editMetadatas,\n options: {\n ...schema?.options,\n ...schema?.pluginOptions,\n },\n settings: {\n ...data.component.settings,\n displayName: schema?.info.displayName,\n },\n };\n};\n\n/* -------------------------------------------------------------------------------------------------\n * Header\n * -----------------------------------------------------------------------------------------------*/\n\nconst ProtectedComponentConfigurationPage = () => {\n const permissions = useTypedSelector(\n (state) => state.admin_app.permissions.contentManager?.componentsConfigurations\n );\n\n return (\n <Page.Protect permissions={permissions}>\n <ComponentConfigurationPage />\n </Page.Protect>\n );\n};\n\nexport { ComponentConfigurationPage, ProtectedComponentConfigurationPage };\n"],"names":["contentManagerApi","useParams","useNotification","useIntl","useAPIErrorHandler","useGetInitialDataQuery","schema","components","extractContentTypeComponents","fieldSizes","React","DEFAULT_SETTINGS","TEMP_FIELD_NAME","setIn","jsx","Page","jsxs","Fragment","Helmet","ConfigurationForm","convertEditLayoutToFieldLayouts","useTypedSelector"],"mappings":"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"}
@@ -7,7 +7,7 @@ const designSystem = require('@strapi/design-system');
7
7
  const Icons = require('@strapi/icons');
8
8
  const isNil = require('lodash/isNil');
9
9
  const reactIntl = require('react-intl');
10
- const index = require('./index-lSQdx61-.js');
10
+ const index = require('./index-mQQPK-ix.js');
11
11
 
12
12
  const _interopDefault = e => e && e.__esModule ? e : { default: e };
13
13
 
@@ -58,4 +58,4 @@ const CreateActionEE = ({ onClick }) => {
58
58
  };
59
59
 
60
60
  exports.CreateActionEE = CreateActionEE;
61
- //# sourceMappingURL=CreateActionEE-9-R9hmOH.js.map
61
+ //# sourceMappingURL=CreateActionEE-HO-FmNjw.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"CreateActionEE-9-R9hmOH.js","sources":["../../ee/admin/src/pages/SettingsPage/pages/Users/components/CreateActionEE.tsx"],"sourcesContent":["import { Button, Flex, Icon, Tooltip } from '@strapi/design-system';\nimport { Envelop, ExclamationMarkCircle } from '@strapi/icons';\nimport isNil from 'lodash/isNil';\nimport { useIntl } from 'react-intl';\n\nimport { useLicenseLimits } from '../../../../../hooks/useLicenseLimits';\n\nimport type { CreateActionCEProps } from '../../../../../../../../admin/src/pages/Settings/pages/Users/components/CreateActionCE';\n\nexport const CreateActionEE = ({ onClick }: CreateActionCEProps) => {\n const { formatMessage } = useIntl();\n const { license, isError, isLoading } = useLicenseLimits();\n\n const { permittedSeats, shouldStopCreate } = license ?? {};\n\n if (isError || isLoading) {\n return null;\n }\n\n return (\n <Flex gap={2}>\n {!isNil(permittedSeats) && shouldStopCreate && (\n <Tooltip\n description={formatMessage({\n id: 'Settings.application.admin-seats.at-limit-tooltip',\n defaultMessage: 'At limit: add seats to invite more users',\n })}\n position=\"left\"\n >\n <Icon\n width={`${14 / 16}rem`}\n height={`${14 / 16}rem`}\n color=\"danger500\"\n as={ExclamationMarkCircle}\n />\n </Tooltip>\n )}\n <Button\n data-testid=\"create-user-button\"\n onClick={onClick}\n startIcon={<Envelop />}\n size=\"S\"\n disabled={shouldStopCreate}\n >\n {formatMessage({\n id: 'Settings.permissions.users.create',\n defaultMessage: 'Invite new user',\n })}\n </Button>\n </Flex>\n );\n};\n"],"names":["useIntl","useLicenseLimits","jsxs","Flex","isNil","jsx","Tooltip","Icon","ExclamationMarkCircle","Button","Envelop"],"mappings":";;;;;;;;;;;;;;;AASO,MAAM,cAAiB,GAAA,CAAC,EAAE,OAAA,EAAmC,KAAA;AAClE,EAAM,MAAA,EAAE,aAAc,EAAA,GAAIA,iBAAQ,EAAA,CAAA;AAClC,EAAA,MAAM,EAAE,OAAA,EAAS,OAAS,EAAA,SAAA,KAAcC,sBAAiB,EAAA,CAAA;AAEzD,EAAA,MAAM,EAAE,cAAA,EAAgB,gBAAiB,EAAA,GAAI,WAAW,EAAC,CAAA;AAEzD,EAAA,IAAI,WAAW,SAAW,EAAA;AACxB,IAAO,OAAA,IAAA,CAAA;AAAA,GACT;AAEA,EACE,uBAAAC,eAAA,CAACC,iBAAK,EAAA,EAAA,GAAA,EAAK,CACR,EAAA,QAAA,EAAA;AAAA,IAAC,CAAAC,sBAAA,CAAM,cAAc,CAAA,IAAK,gBACzB,oBAAAC,cAAA;AAAA,MAACC,oBAAA;AAAA,MAAA;AAAA,QACC,aAAa,aAAc,CAAA;AAAA,UACzB,EAAI,EAAA,mDAAA;AAAA,UACJ,cAAgB,EAAA,0CAAA;AAAA,SACjB,CAAA;AAAA,QACD,QAAS,EAAA,MAAA;AAAA,QAET,QAAA,kBAAAD,cAAA;AAAA,UAACE,iBAAA;AAAA,UAAA;AAAA,YACC,KAAA,EAAO,CAAG,EAAA,EAAA,GAAK,EAAE,CAAA,GAAA,CAAA;AAAA,YACjB,MAAA,EAAQ,CAAG,EAAA,EAAA,GAAK,EAAE,CAAA,GAAA,CAAA;AAAA,YAClB,KAAM,EAAA,WAAA;AAAA,YACN,EAAI,EAAAC,2BAAA;AAAA,WAAA;AAAA,SACN;AAAA,OAAA;AAAA,KACF;AAAA,oBAEFH,cAAA;AAAA,MAACI,mBAAA;AAAA,MAAA;AAAA,QACC,aAAY,EAAA,oBAAA;AAAA,QACZ,OAAA;AAAA,QACA,SAAA,iCAAYC,aAAQ,EAAA,EAAA,CAAA;AAAA,QACpB,IAAK,EAAA,GAAA;AAAA,QACL,QAAU,EAAA,gBAAA;AAAA,QAET,QAAc,EAAA,aAAA,CAAA;AAAA,UACb,EAAI,EAAA,mCAAA;AAAA,UACJ,cAAgB,EAAA,iBAAA;AAAA,SACjB,CAAA;AAAA,OAAA;AAAA,KACH;AAAA,GACF,EAAA,CAAA,CAAA;AAEJ;;;;"}
1
+ {"version":3,"file":"CreateActionEE-HO-FmNjw.js","sources":["../../ee/admin/src/pages/SettingsPage/pages/Users/components/CreateActionEE.tsx"],"sourcesContent":["import { Button, Flex, Icon, Tooltip } from '@strapi/design-system';\nimport { Envelop, ExclamationMarkCircle } from '@strapi/icons';\nimport isNil from 'lodash/isNil';\nimport { useIntl } from 'react-intl';\n\nimport { useLicenseLimits } from '../../../../../hooks/useLicenseLimits';\n\nimport type { CreateActionCEProps } from '../../../../../../../../admin/src/pages/Settings/pages/Users/components/CreateActionCE';\n\nexport const CreateActionEE = ({ onClick }: CreateActionCEProps) => {\n const { formatMessage } = useIntl();\n const { license, isError, isLoading } = useLicenseLimits();\n\n const { permittedSeats, shouldStopCreate } = license ?? {};\n\n if (isError || isLoading) {\n return null;\n }\n\n return (\n <Flex gap={2}>\n {!isNil(permittedSeats) && shouldStopCreate && (\n <Tooltip\n description={formatMessage({\n id: 'Settings.application.admin-seats.at-limit-tooltip',\n defaultMessage: 'At limit: add seats to invite more users',\n })}\n position=\"left\"\n >\n <Icon\n width={`${14 / 16}rem`}\n height={`${14 / 16}rem`}\n color=\"danger500\"\n as={ExclamationMarkCircle}\n />\n </Tooltip>\n )}\n <Button\n data-testid=\"create-user-button\"\n onClick={onClick}\n startIcon={<Envelop />}\n size=\"S\"\n disabled={shouldStopCreate}\n >\n {formatMessage({\n id: 'Settings.permissions.users.create',\n defaultMessage: 'Invite new user',\n })}\n </Button>\n </Flex>\n );\n};\n"],"names":["useIntl","useLicenseLimits","jsxs","Flex","isNil","jsx","Tooltip","Icon","ExclamationMarkCircle","Button","Envelop"],"mappings":";;;;;;;;;;;;;;;AASO,MAAM,cAAiB,GAAA,CAAC,EAAE,OAAA,EAAmC,KAAA;AAClE,EAAM,MAAA,EAAE,aAAc,EAAA,GAAIA,iBAAQ,EAAA,CAAA;AAClC,EAAA,MAAM,EAAE,OAAA,EAAS,OAAS,EAAA,SAAA,KAAcC,sBAAiB,EAAA,CAAA;AAEzD,EAAA,MAAM,EAAE,cAAA,EAAgB,gBAAiB,EAAA,GAAI,WAAW,EAAC,CAAA;AAEzD,EAAA,IAAI,WAAW,SAAW,EAAA;AACxB,IAAO,OAAA,IAAA,CAAA;AAAA,GACT;AAEA,EACE,uBAAAC,eAAA,CAACC,iBAAK,EAAA,EAAA,GAAA,EAAK,CACR,EAAA,QAAA,EAAA;AAAA,IAAC,CAAAC,sBAAA,CAAM,cAAc,CAAA,IAAK,gBACzB,oBAAAC,cAAA;AAAA,MAACC,oBAAA;AAAA,MAAA;AAAA,QACC,aAAa,aAAc,CAAA;AAAA,UACzB,EAAI,EAAA,mDAAA;AAAA,UACJ,cAAgB,EAAA,0CAAA;AAAA,SACjB,CAAA;AAAA,QACD,QAAS,EAAA,MAAA;AAAA,QAET,QAAA,kBAAAD,cAAA;AAAA,UAACE,iBAAA;AAAA,UAAA;AAAA,YACC,KAAA,EAAO,CAAG,EAAA,EAAA,GAAK,EAAE,CAAA,GAAA,CAAA;AAAA,YACjB,MAAA,EAAQ,CAAG,EAAA,EAAA,GAAK,EAAE,CAAA,GAAA,CAAA;AAAA,YAClB,KAAM,EAAA,WAAA;AAAA,YACN,EAAI,EAAAC,2BAAA;AAAA,WAAA;AAAA,SACN;AAAA,OAAA;AAAA,KACF;AAAA,oBAEFH,cAAA;AAAA,MAACI,mBAAA;AAAA,MAAA;AAAA,QACC,aAAY,EAAA,oBAAA;AAAA,QACZ,OAAA;AAAA,QACA,SAAA,iCAAYC,aAAQ,EAAA,EAAA,CAAA;AAAA,QACpB,IAAK,EAAA,GAAA;AAAA,QACL,QAAU,EAAA,gBAAA;AAAA,QAET,QAAc,EAAA,aAAA,CAAA;AAAA,UACb,EAAI,EAAA,mCAAA;AAAA,UACJ,cAAgB,EAAA,iBAAA;AAAA,SACjB,CAAA;AAAA,OAAA;AAAA,KACH;AAAA,GACF,EAAA,CAAA,CAAA;AAEJ;;;;"}
@@ -3,7 +3,7 @@ import { Flex, Tooltip, Icon, Button } from '@strapi/design-system';
3
3
  import { ExclamationMarkCircle, Envelop } from '@strapi/icons';
4
4
  import isNil from 'lodash/isNil';
5
5
  import { useIntl } from 'react-intl';
6
- import { f as useLicenseLimits } from './index-oXhvt6Nv.mjs';
6
+ import { f as useLicenseLimits } from './index-1NFAbkxM.mjs';
7
7
 
8
8
  const CreateActionEE = ({ onClick }) => {
9
9
  const { formatMessage } = useIntl();
@@ -50,4 +50,4 @@ const CreateActionEE = ({ onClick }) => {
50
50
  };
51
51
 
52
52
  export { CreateActionEE };
53
- //# sourceMappingURL=CreateActionEE-fPOnLJuM.mjs.map
53
+ //# sourceMappingURL=CreateActionEE-OscS6KZj.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"CreateActionEE-fPOnLJuM.mjs","sources":["../../ee/admin/src/pages/SettingsPage/pages/Users/components/CreateActionEE.tsx"],"sourcesContent":["import { Button, Flex, Icon, Tooltip } from '@strapi/design-system';\nimport { Envelop, ExclamationMarkCircle } from '@strapi/icons';\nimport isNil from 'lodash/isNil';\nimport { useIntl } from 'react-intl';\n\nimport { useLicenseLimits } from '../../../../../hooks/useLicenseLimits';\n\nimport type { CreateActionCEProps } from '../../../../../../../../admin/src/pages/Settings/pages/Users/components/CreateActionCE';\n\nexport const CreateActionEE = ({ onClick }: CreateActionCEProps) => {\n const { formatMessage } = useIntl();\n const { license, isError, isLoading } = useLicenseLimits();\n\n const { permittedSeats, shouldStopCreate } = license ?? {};\n\n if (isError || isLoading) {\n return null;\n }\n\n return (\n <Flex gap={2}>\n {!isNil(permittedSeats) && shouldStopCreate && (\n <Tooltip\n description={formatMessage({\n id: 'Settings.application.admin-seats.at-limit-tooltip',\n defaultMessage: 'At limit: add seats to invite more users',\n })}\n position=\"left\"\n >\n <Icon\n width={`${14 / 16}rem`}\n height={`${14 / 16}rem`}\n color=\"danger500\"\n as={ExclamationMarkCircle}\n />\n </Tooltip>\n )}\n <Button\n data-testid=\"create-user-button\"\n onClick={onClick}\n startIcon={<Envelop />}\n size=\"S\"\n disabled={shouldStopCreate}\n >\n {formatMessage({\n id: 'Settings.permissions.users.create',\n defaultMessage: 'Invite new user',\n })}\n </Button>\n </Flex>\n );\n};\n"],"names":[],"mappings":";;;;;;;AASO,MAAM,cAAiB,GAAA,CAAC,EAAE,OAAA,EAAmC,KAAA;AAClE,EAAM,MAAA,EAAE,aAAc,EAAA,GAAI,OAAQ,EAAA,CAAA;AAClC,EAAA,MAAM,EAAE,OAAA,EAAS,OAAS,EAAA,SAAA,KAAc,gBAAiB,EAAA,CAAA;AAEzD,EAAA,MAAM,EAAE,cAAA,EAAgB,gBAAiB,EAAA,GAAI,WAAW,EAAC,CAAA;AAEzD,EAAA,IAAI,WAAW,SAAW,EAAA;AACxB,IAAO,OAAA,IAAA,CAAA;AAAA,GACT;AAEA,EACE,uBAAA,IAAA,CAAC,IAAK,EAAA,EAAA,GAAA,EAAK,CACR,EAAA,QAAA,EAAA;AAAA,IAAC,CAAA,KAAA,CAAM,cAAc,CAAA,IAAK,gBACzB,oBAAA,GAAA;AAAA,MAAC,OAAA;AAAA,MAAA;AAAA,QACC,aAAa,aAAc,CAAA;AAAA,UACzB,EAAI,EAAA,mDAAA;AAAA,UACJ,cAAgB,EAAA,0CAAA;AAAA,SACjB,CAAA;AAAA,QACD,QAAS,EAAA,MAAA;AAAA,QAET,QAAA,kBAAA,GAAA;AAAA,UAAC,IAAA;AAAA,UAAA;AAAA,YACC,KAAA,EAAO,CAAG,EAAA,EAAA,GAAK,EAAE,CAAA,GAAA,CAAA;AAAA,YACjB,MAAA,EAAQ,CAAG,EAAA,EAAA,GAAK,EAAE,CAAA,GAAA,CAAA;AAAA,YAClB,KAAM,EAAA,WAAA;AAAA,YACN,EAAI,EAAA,qBAAA;AAAA,WAAA;AAAA,SACN;AAAA,OAAA;AAAA,KACF;AAAA,oBAEF,GAAA;AAAA,MAAC,MAAA;AAAA,MAAA;AAAA,QACC,aAAY,EAAA,oBAAA;AAAA,QACZ,OAAA;AAAA,QACA,SAAA,sBAAY,OAAQ,EAAA,EAAA,CAAA;AAAA,QACpB,IAAK,EAAA,GAAA;AAAA,QACL,QAAU,EAAA,gBAAA;AAAA,QAET,QAAc,EAAA,aAAA,CAAA;AAAA,UACb,EAAI,EAAA,mCAAA;AAAA,UACJ,cAAgB,EAAA,iBAAA;AAAA,SACjB,CAAA;AAAA,OAAA;AAAA,KACH;AAAA,GACF,EAAA,CAAA,CAAA;AAEJ;;;;"}
1
+ {"version":3,"file":"CreateActionEE-OscS6KZj.mjs","sources":["../../ee/admin/src/pages/SettingsPage/pages/Users/components/CreateActionEE.tsx"],"sourcesContent":["import { Button, Flex, Icon, Tooltip } from '@strapi/design-system';\nimport { Envelop, ExclamationMarkCircle } from '@strapi/icons';\nimport isNil from 'lodash/isNil';\nimport { useIntl } from 'react-intl';\n\nimport { useLicenseLimits } from '../../../../../hooks/useLicenseLimits';\n\nimport type { CreateActionCEProps } from '../../../../../../../../admin/src/pages/Settings/pages/Users/components/CreateActionCE';\n\nexport const CreateActionEE = ({ onClick }: CreateActionCEProps) => {\n const { formatMessage } = useIntl();\n const { license, isError, isLoading } = useLicenseLimits();\n\n const { permittedSeats, shouldStopCreate } = license ?? {};\n\n if (isError || isLoading) {\n return null;\n }\n\n return (\n <Flex gap={2}>\n {!isNil(permittedSeats) && shouldStopCreate && (\n <Tooltip\n description={formatMessage({\n id: 'Settings.application.admin-seats.at-limit-tooltip',\n defaultMessage: 'At limit: add seats to invite more users',\n })}\n position=\"left\"\n >\n <Icon\n width={`${14 / 16}rem`}\n height={`${14 / 16}rem`}\n color=\"danger500\"\n as={ExclamationMarkCircle}\n />\n </Tooltip>\n )}\n <Button\n data-testid=\"create-user-button\"\n onClick={onClick}\n startIcon={<Envelop />}\n size=\"S\"\n disabled={shouldStopCreate}\n >\n {formatMessage({\n id: 'Settings.permissions.users.create',\n defaultMessage: 'Invite new user',\n })}\n </Button>\n </Flex>\n );\n};\n"],"names":[],"mappings":";;;;;;;AASO,MAAM,cAAiB,GAAA,CAAC,EAAE,OAAA,EAAmC,KAAA;AAClE,EAAM,MAAA,EAAE,aAAc,EAAA,GAAI,OAAQ,EAAA,CAAA;AAClC,EAAA,MAAM,EAAE,OAAA,EAAS,OAAS,EAAA,SAAA,KAAc,gBAAiB,EAAA,CAAA;AAEzD,EAAA,MAAM,EAAE,cAAA,EAAgB,gBAAiB,EAAA,GAAI,WAAW,EAAC,CAAA;AAEzD,EAAA,IAAI,WAAW,SAAW,EAAA;AACxB,IAAO,OAAA,IAAA,CAAA;AAAA,GACT;AAEA,EACE,uBAAA,IAAA,CAAC,IAAK,EAAA,EAAA,GAAA,EAAK,CACR,EAAA,QAAA,EAAA;AAAA,IAAC,CAAA,KAAA,CAAM,cAAc,CAAA,IAAK,gBACzB,oBAAA,GAAA;AAAA,MAAC,OAAA;AAAA,MAAA;AAAA,QACC,aAAa,aAAc,CAAA;AAAA,UACzB,EAAI,EAAA,mDAAA;AAAA,UACJ,cAAgB,EAAA,0CAAA;AAAA,SACjB,CAAA;AAAA,QACD,QAAS,EAAA,MAAA;AAAA,QAET,QAAA,kBAAA,GAAA;AAAA,UAAC,IAAA;AAAA,UAAA;AAAA,YACC,KAAA,EAAO,CAAG,EAAA,EAAA,GAAK,EAAE,CAAA,GAAA,CAAA;AAAA,YACjB,MAAA,EAAQ,CAAG,EAAA,EAAA,GAAK,EAAE,CAAA,GAAA,CAAA;AAAA,YAClB,KAAM,EAAA,WAAA;AAAA,YACN,EAAI,EAAA,qBAAA;AAAA,WAAA;AAAA,SACN;AAAA,OAAA;AAAA,KACF;AAAA,oBAEF,GAAA;AAAA,MAAC,MAAA;AAAA,MAAA;AAAA,QACC,aAAY,EAAA,oBAAA;AAAA,QACZ,OAAA;AAAA,QACA,SAAA,sBAAY,OAAQ,EAAA,EAAA,CAAA;AAAA,QACpB,IAAK,EAAA,GAAA;AAAA,QACL,QAAU,EAAA,gBAAA;AAAA,QAET,QAAc,EAAA,aAAA,CAAA;AAAA,UACb,EAAI,EAAA,mCAAA;AAAA,UACJ,cAAgB,EAAA,iBAAA;AAAA,SACjB,CAAA;AAAA,OAAA;AAAA,KACH;AAAA,GACF,EAAA,CAAA,CAAA;AAEJ;;;;"}
@@ -6,13 +6,13 @@ import { useFormik, FormikProvider, Form } from 'formik';
6
6
  import { useIntl } from 'react-intl';
7
7
  import { useDispatch, useSelector } from 'react-redux';
8
8
  import { useNavigate } from 'react-router-dom';
9
- import { f as useLicenseLimits, C as CHARGEBEE_WORKFLOW_ENTITLEMENT_NAME, m as CHARGEBEE_STAGES_PER_WORKFLOW_ENTITLEMENT_NAME, n as useInjectReducer, R as REDUX_NAMESPACE, B as BackButton, g as ConfirmDialog, h as LimitsModal } from './index-oXhvt6Nv.mjs';
9
+ import { f as useLicenseLimits, C as CHARGEBEE_WORKFLOW_ENTITLEMENT_NAME, m as CHARGEBEE_STAGES_PER_WORKFLOW_ENTITLEMENT_NAME, n as useInjectReducer, R as REDUX_NAMESPACE, B as BackButton, g as ConfirmDialog, h as LimitsModal } from './index-1NFAbkxM.mjs';
10
10
  import { i as useAPIErrorHandler, j as useNotification, H as isBaseQueryError } from './reducers-IQWvK_9L.mjs';
11
- import { u as useAdminRoles } from './useAdminRoles-bTVTWj4N.mjs';
11
+ import { u as useAdminRoles } from './useAdminRoles-BG7b996L.mjs';
12
12
  import { u as useContentTypes } from './useContentTypes-PEGh0Cg-.mjs';
13
- import { s as selectIsLoading, a as selectIsWorkflowDirty, b as selectCurrentWorkflow, c as selectRoles, v as validateWorkflow, r as reducer, d as resetWorkflow, e as setWorkflows, f as setContentTypes, g as setRoles, h as setIsLoading, i as addStage, W as WorkflowAttributes, S as Stages } from './validateWorkflow-BOHXHGsM.mjs';
14
- import { D as DragLayerRendered, H as Header, R as Root } from './Layout-JxGSf9_Y.mjs';
15
- import { u as useReviewWorkflows } from './useReviewWorkflows-1IXSO8ml.mjs';
13
+ import { s as selectIsLoading, a as selectIsWorkflowDirty, b as selectCurrentWorkflow, c as selectRoles, v as validateWorkflow, r as reducer, d as resetWorkflow, e as setWorkflows, f as setContentTypes, g as setRoles, h as setIsLoading, i as addStage, W as WorkflowAttributes, S as Stages } from './validateWorkflow-ubLwZqCK.mjs';
14
+ import { D as DragLayerRendered, H as Header, R as Root } from './Layout-JSg7Wwnx.mjs';
15
+ import { u as useReviewWorkflows } from './useReviewWorkflows-HwyFyit7.mjs';
16
16
 
17
17
  const ReviewWorkflowsCreatePage = () => {
18
18
  const { formatMessage } = useIntl();
@@ -245,4 +245,4 @@ const ReviewWorkflowsCreatePage = () => {
245
245
  };
246
246
 
247
247
  export { ReviewWorkflowsCreatePage };
248
- //# sourceMappingURL=CreatePage-t0FqkFrZ.mjs.map
248
+ //# sourceMappingURL=CreatePage-1a_Nb-RK.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"CreatePage-t0FqkFrZ.mjs","sources":["../../ee/admin/src/pages/SettingsPage/pages/ReviewWorkflows/CreatePage.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { Button, Flex, Loader, Typography } from '@strapi/design-system';\nimport { Check } from '@strapi/icons';\nimport { useFormik, Form, FormikProvider, FormikErrors } from 'formik';\nimport { useIntl } from 'react-intl';\nimport { useDispatch, useSelector } from 'react-redux';\nimport { useNavigate } from 'react-router-dom';\n\nimport { ConfirmDialog } from '../../../../../../../admin/src/components/ConfirmDialog';\nimport { BackButton } from '../../../../../../../admin/src/features/BackButton';\nimport { useNotification } from '../../../../../../../admin/src/features/Notifications';\nimport { useAdminRoles } from '../../../../../../../admin/src/hooks/useAdminRoles';\nimport { useAPIErrorHandler } from '../../../../../../../admin/src/hooks/useAPIErrorHandler';\nimport { useContentTypes } from '../../../../../../../admin/src/hooks/useContentTypes';\nimport { useInjectReducer } from '../../../../../../../admin/src/hooks/useInjectReducer';\nimport { isBaseQueryError } from '../../../../../../../admin/src/utils/baseQuery';\nimport { useLicenseLimits } from '../../../../hooks/useLicenseLimits';\n\nimport {\n addStage,\n resetWorkflow,\n setContentTypes,\n setIsLoading,\n setRoles,\n setWorkflows,\n} from './actions';\nimport * as Layout from './components/Layout';\nimport { LimitsModal } from './components/LimitsModal';\nimport { Stages } from './components/Stages';\nimport { WorkflowAttributes } from './components/WorkflowAttributes';\nimport {\n CHARGEBEE_STAGES_PER_WORKFLOW_ENTITLEMENT_NAME,\n CHARGEBEE_WORKFLOW_ENTITLEMENT_NAME,\n REDUX_NAMESPACE,\n} from './constants';\nimport { useReviewWorkflows } from './hooks/useReviewWorkflows';\nimport { CurrentWorkflow, reducer } from './reducer';\nimport {\n selectIsLoading,\n selectIsWorkflowDirty,\n selectCurrentWorkflow,\n selectRoles,\n} from './selectors';\nimport { validateWorkflow } from './utils/validateWorkflow';\n\nexport const ReviewWorkflowsCreatePage = () => {\n const { formatMessage } = useIntl();\n const navigate = useNavigate();\n const {\n _unstableFormatAPIError: formatAPIError,\n _unstableFormatValidationErrors: formatValidationErrors,\n } = useAPIErrorHandler();\n const dispatch = useDispatch();\n const { toggleNotification } = useNotification();\n const { collectionTypes, singleTypes, isLoading: isLoadingContentTypes } = useContentTypes();\n const { isLoading: isLoadingWorkflow, meta, workflows, createWorkflow } = useReviewWorkflows();\n const { isLoading: isLoadingRoles, roles: serverRoles } = useAdminRoles();\n const isLoading = useSelector(selectIsLoading);\n const currentWorkflowIsDirty = useSelector(selectIsWorkflowDirty);\n const currentWorkflow = useSelector(selectCurrentWorkflow);\n const roles = useSelector(selectRoles);\n const [showLimitModal, setShowLimitModal] = React.useState<'workflow' | 'stage' | null>(null);\n const { isLoading: isLicenseLoading, getFeature } = useLicenseLimits();\n const [initialErrors, setInitialErrors] = React.useState<FormikErrors<CurrentWorkflow>>();\n const [savePrompts, setSavePrompts] = React.useState<{ hasReassignedContentTypes?: boolean }>({});\n\n const limits = getFeature<string>('review-workflows');\n const numberOfWorkflows = limits?.[CHARGEBEE_WORKFLOW_ENTITLEMENT_NAME];\n const stagesPerWorkflow = limits?.[CHARGEBEE_STAGES_PER_WORKFLOW_ENTITLEMENT_NAME];\n const contentTypesFromOtherWorkflows = workflows?.flatMap((workflow) => workflow.contentTypes);\n\n const submitForm = async () => {\n setSavePrompts({});\n\n try {\n const res = await createWorkflow({\n // @ts-expect-error – currentWorkflow will have already been validated by formik before it gets here.\n data: currentWorkflow,\n });\n\n if ('error' in res) {\n if (isBaseQueryError(res.error) && res.error.name === 'ValidationError') {\n setInitialErrors(formatValidationErrors(res.error));\n }\n\n toggleNotification({\n type: 'danger',\n message: formatAPIError(res.error),\n });\n\n return;\n }\n\n toggleNotification({\n type: 'success',\n message: formatMessage({\n id: 'Settings.review-workflows.create.page.notification.success',\n defaultMessage: 'Workflow successfully created',\n }),\n });\n\n navigate(`/settings/review-workflows/${res.data.id}`);\n } catch (error) {\n toggleNotification({\n type: 'danger',\n message: formatMessage({\n id: 'Settings.review-workflows.create.page.notification.error',\n defaultMessage: 'An error occurred',\n }),\n });\n }\n };\n\n const handleConfirmDeleteDialog = async () => {\n await submitForm();\n };\n\n const handleConfirmClose = () => {\n setSavePrompts({});\n };\n\n const formik = useFormik({\n enableReinitialize: true,\n initialErrors,\n initialValues: currentWorkflow,\n async onSubmit() {\n const isContentTypeReassignment = currentWorkflow.contentTypes?.some((contentType) =>\n contentTypesFromOtherWorkflows?.includes(contentType)\n );\n\n /**\n * If the current license has a limit, check if the total count of workflows\n * exceeds that limit and display the limits modal instead of sending the\n * update, because it would throw an API error.\n */\n\n if (meta && numberOfWorkflows && meta?.workflowCount >= parseInt(numberOfWorkflows, 10)) {\n setShowLimitModal('workflow');\n\n /**\n * If the current license has a limit, check if the total count of stages\n * exceeds that limit and display the limits modal instead of sending the\n * update, because it would throw an API error.\n */\n } else if (\n currentWorkflow.stages &&\n stagesPerWorkflow &&\n currentWorkflow.stages.length >= parseInt(stagesPerWorkflow, 10)\n ) {\n setShowLimitModal('stage');\n } else if (isContentTypeReassignment) {\n setSavePrompts((prev) => ({ ...prev, hasReassignedContentTypes: true }));\n } else {\n submitForm();\n }\n },\n validate(values) {\n return validateWorkflow({ values, formatMessage });\n },\n });\n\n useInjectReducer(REDUX_NAMESPACE, reducer);\n\n React.useEffect(() => {\n dispatch(resetWorkflow());\n\n if (!isLoadingWorkflow && workflows) {\n dispatch(setWorkflows({ workflows }));\n }\n\n if (!isLoadingContentTypes) {\n dispatch(setContentTypes({ collectionTypes, singleTypes }));\n }\n\n if (!isLoadingRoles) {\n dispatch(setRoles(serverRoles));\n }\n\n dispatch(setIsLoading(isLoadingContentTypes || isLoadingRoles));\n\n // Create an empty default stage\n dispatch(\n addStage({\n name: '',\n })\n );\n }, [\n collectionTypes,\n dispatch,\n isLoadingContentTypes,\n isLoadingRoles,\n isLoadingWorkflow,\n serverRoles,\n singleTypes,\n workflows,\n ]);\n\n /**\n * If the current license has a limit:\n * check if the total count of workflows or stages exceeds that limit and display\n * the limits modal on page load. It can be closed by the user, but the\n * API will throw an error in case they try to create a new workflow or update the\n * stages.\n *\n * If the current license does not have a limit (e.g. offline license):\n * do nothing (for now). In case they are trying to create the 201st workflow/ stage\n * the API will throw an error.\n *\n */\n React.useEffect(() => {\n if (!isLoadingWorkflow && !isLicenseLoading) {\n if (\n currentWorkflow.stages &&\n limits?.[CHARGEBEE_STAGES_PER_WORKFLOW_ENTITLEMENT_NAME] &&\n stagesPerWorkflow &&\n currentWorkflow.stages.length >= parseInt(stagesPerWorkflow, 10)\n ) {\n setShowLimitModal('stage');\n }\n }\n }, [isLicenseLoading, isLoadingWorkflow, limits, currentWorkflow.stages, stagesPerWorkflow]);\n\n React.useEffect(() => {\n if (!isLoading && roles?.length === 0) {\n toggleNotification({\n blockTransition: true,\n type: 'danger',\n message: formatMessage({\n id: 'Settings.review-workflows.stage.permissions.noPermissions.description',\n defaultMessage: 'You don’t have the permission to see roles',\n }),\n });\n }\n }, [formatMessage, isLoading, roles, toggleNotification]);\n\n return (\n <>\n <Layout.DragLayerRendered />\n <FormikProvider value={formik}>\n <Form onSubmit={formik.handleSubmit}>\n <Layout.Header\n navigationAction={<BackButton />}\n primaryAction={\n <Button\n startIcon={<Check />}\n type=\"submit\"\n size=\"M\"\n disabled={!currentWorkflowIsDirty}\n >\n {formatMessage({\n id: 'global.save',\n defaultMessage: 'Save',\n })}\n </Button>\n }\n title={formatMessage({\n id: 'Settings.review-workflows.create.page.title',\n defaultMessage: 'Create Review Workflow',\n })}\n subtitle={formatMessage(\n {\n id: 'Settings.review-workflows.page.subtitle',\n defaultMessage: '{count, plural, one {# stage} other {# stages}}',\n },\n { count: currentWorkflow?.stages?.length ?? 0 }\n )}\n />\n <Layout.Root>\n <Flex alignItems=\"stretch\" direction=\"column\" gap={7}>\n {isLoading ? (\n <Loader>\n {formatMessage({\n id: 'Settings.review-workflows.page.isLoading',\n defaultMessage: 'Workflow is loading',\n })}\n </Loader>\n ) : (\n <Flex alignItems=\"stretch\" direction=\"column\" gap={7}>\n <WorkflowAttributes />\n <Stages stages={formik.values?.stages} />\n </Flex>\n )}\n </Flex>\n </Layout.Root>\n </Form>\n </FormikProvider>\n\n <ConfirmDialog\n isOpen={Object.keys(savePrompts).length > 0}\n onClose={handleConfirmClose}\n onConfirm={handleConfirmDeleteDialog}\n >\n <Flex direction=\"column\" gap={5}>\n {savePrompts.hasReassignedContentTypes && (\n <Typography textAlign=\"center\" variant=\"omega\">\n {formatMessage(\n {\n id: 'Settings.review-workflows.page.delete.confirm.contentType.body',\n defaultMessage:\n '{count} {count, plural, one {content-type} other {content-types}} {count, plural, one {is} other {are}} already mapped to {count, plural, one {another workflow} other {other workflows}}. If you save changes, {count, plural, one {this} other {these}} {count, plural, one {content-type} other {{count} content-types}} will no more be mapped to the {count, plural, one {another workflow} other {other workflows}} and all corresponding information will be removed.',\n },\n {\n count: contentTypesFromOtherWorkflows?.filter((contentType) =>\n currentWorkflow.contentTypes?.includes(contentType)\n ).length,\n }\n )}\n </Typography>\n )}\n\n <Typography textAlign=\"center\" variant=\"omega\">\n {formatMessage({\n id: 'Settings.review-workflows.page.delete.confirm.confirm',\n defaultMessage: 'Are you sure you want to save?',\n })}\n </Typography>\n </Flex>\n </ConfirmDialog>\n\n <LimitsModal.Root\n isOpen={showLimitModal === 'workflow'}\n onClose={() => setShowLimitModal(null)}\n >\n <LimitsModal.Title>\n {formatMessage({\n id: 'Settings.review-workflows.create.page.workflows.limit.title',\n defaultMessage: 'You’ve reached the limit of workflows in your plan',\n })}\n </LimitsModal.Title>\n\n <LimitsModal.Body>\n {formatMessage({\n id: 'Settings.review-workflows.create.page.workflows.limit.body',\n defaultMessage: 'Delete a workflow or contact Sales to enable more workflows.',\n })}\n </LimitsModal.Body>\n </LimitsModal.Root>\n\n <LimitsModal.Root isOpen={showLimitModal === 'stage'} onClose={() => setShowLimitModal(null)}>\n <LimitsModal.Title>\n {formatMessage({\n id: 'Settings.review-workflows.create.page.stages.limit.title',\n defaultMessage: 'You have reached the limit of stages for this workflow in your plan',\n })}\n </LimitsModal.Title>\n\n <LimitsModal.Body>\n {formatMessage({\n id: 'Settings.review-workflows.create.page.stages.limit.body',\n defaultMessage: 'Try deleting some stages or contact Sales to enable more stages.',\n })}\n </LimitsModal.Body>\n </LimitsModal.Root>\n </>\n );\n};\n"],"names":["Layout.DragLayerRendered","Layout.Header","Layout.Root"],"mappings":";;;;;;;;;;;;;;;;AA8CO,MAAM,4BAA4B,MAAM;AAC7C,EAAM,MAAA,EAAE,aAAc,EAAA,GAAI,OAAQ,EAAA,CAAA;AAClC,EAAA,MAAM,WAAW,WAAY,EAAA,CAAA;AAC7B,EAAM,MAAA;AAAA,IACJ,uBAAyB,EAAA,cAAA;AAAA,IACzB,+BAAiC,EAAA,sBAAA;AAAA,MAC/B,kBAAmB,EAAA,CAAA;AACvB,EAAA,MAAM,WAAW,WAAY,EAAA,CAAA;AAC7B,EAAM,MAAA,EAAE,kBAAmB,EAAA,GAAI,eAAgB,EAAA,CAAA;AAC/C,EAAA,MAAM,EAAE,eAAiB,EAAA,WAAA,EAAa,SAAW,EAAA,qBAAA,KAA0B,eAAgB,EAAA,CAAA;AAC3F,EAAA,MAAM,EAAE,SAAW,EAAA,iBAAA,EAAmB,MAAM,SAAW,EAAA,cAAA,KAAmB,kBAAmB,EAAA,CAAA;AAC7F,EAAA,MAAM,EAAE,SAAW,EAAA,cAAA,EAAgB,KAAO,EAAA,WAAA,KAAgB,aAAc,EAAA,CAAA;AACxE,EAAM,MAAA,SAAA,GAAY,YAAY,eAAe,CAAA,CAAA;AAC7C,EAAM,MAAA,sBAAA,GAAyB,YAAY,qBAAqB,CAAA,CAAA;AAChE,EAAM,MAAA,eAAA,GAAkB,YAAY,qBAAqB,CAAA,CAAA;AACzD,EAAM,MAAA,KAAA,GAAQ,YAAY,WAAW,CAAA,CAAA;AACrC,EAAA,MAAM,CAAC,cAAgB,EAAA,iBAAiB,CAAI,GAAA,KAAA,CAAM,SAAsC,IAAI,CAAA,CAAA;AAC5F,EAAA,MAAM,EAAE,SAAA,EAAW,gBAAkB,EAAA,UAAA,KAAe,gBAAiB,EAAA,CAAA;AACrE,EAAA,MAAM,CAAC,aAAA,EAAe,gBAAgB,CAAA,GAAI,MAAM,QAAwC,EAAA,CAAA;AACxF,EAAA,MAAM,CAAC,WAAa,EAAA,cAAc,IAAI,KAAM,CAAA,QAAA,CAAkD,EAAE,CAAA,CAAA;AAEhG,EAAM,MAAA,MAAA,GAAS,WAAmB,kBAAkB,CAAA,CAAA;AACpD,EAAM,MAAA,iBAAA,GAAoB,SAAS,mCAAmC,CAAA,CAAA;AACtE,EAAM,MAAA,iBAAA,GAAoB,SAAS,8CAA8C,CAAA,CAAA;AACjF,EAAA,MAAM,iCAAiC,SAAW,EAAA,OAAA,CAAQ,CAAC,QAAA,KAAa,SAAS,YAAY,CAAA,CAAA;AAE7F,EAAA,MAAM,aAAa,YAAY;AAC7B,IAAA,cAAA,CAAe,EAAE,CAAA,CAAA;AAEjB,IAAI,IAAA;AACF,MAAM,MAAA,GAAA,GAAM,MAAM,cAAe,CAAA;AAAA;AAAA,QAE/B,IAAM,EAAA,eAAA;AAAA,OACP,CAAA,CAAA;AAED,MAAA,IAAI,WAAW,GAAK,EAAA;AAClB,QAAA,IAAI,iBAAiB,GAAI,CAAA,KAAK,KAAK,GAAI,CAAA,KAAA,CAAM,SAAS,iBAAmB,EAAA;AACvE,UAAiB,gBAAA,CAAA,sBAAA,CAAuB,GAAI,CAAA,KAAK,CAAC,CAAA,CAAA;AAAA,SACpD;AAEA,QAAmB,kBAAA,CAAA;AAAA,UACjB,IAAM,EAAA,QAAA;AAAA,UACN,OAAA,EAAS,cAAe,CAAA,GAAA,CAAI,KAAK,CAAA;AAAA,SAClC,CAAA,CAAA;AAED,QAAA,OAAA;AAAA,OACF;AAEA,MAAmB,kBAAA,CAAA;AAAA,QACjB,IAAM,EAAA,SAAA;AAAA,QACN,SAAS,aAAc,CAAA;AAAA,UACrB,EAAI,EAAA,4DAAA;AAAA,UACJ,cAAgB,EAAA,+BAAA;AAAA,SACjB,CAAA;AAAA,OACF,CAAA,CAAA;AAED,MAAA,QAAA,CAAS,CAA8B,2BAAA,EAAA,GAAA,CAAI,IAAK,CAAA,EAAE,CAAE,CAAA,CAAA,CAAA;AAAA,aAC7C,KAAO,EAAA;AACd,MAAmB,kBAAA,CAAA;AAAA,QACjB,IAAM,EAAA,QAAA;AAAA,QACN,SAAS,aAAc,CAAA;AAAA,UACrB,EAAI,EAAA,0DAAA;AAAA,UACJ,cAAgB,EAAA,mBAAA;AAAA,SACjB,CAAA;AAAA,OACF,CAAA,CAAA;AAAA,KACH;AAAA,GACF,CAAA;AAEA,EAAA,MAAM,4BAA4B,YAAY;AAC5C,IAAA,MAAM,UAAW,EAAA,CAAA;AAAA,GACnB,CAAA;AAEA,EAAA,MAAM,qBAAqB,MAAM;AAC/B,IAAA,cAAA,CAAe,EAAE,CAAA,CAAA;AAAA,GACnB,CAAA;AAEA,EAAA,MAAM,SAAS,SAAU,CAAA;AAAA,IACvB,kBAAoB,EAAA,IAAA;AAAA,IACpB,aAAA;AAAA,IACA,aAAe,EAAA,eAAA;AAAA,IACf,MAAM,QAAW,GAAA;AACf,MAAM,MAAA,yBAAA,GAA4B,gBAAgB,YAAc,EAAA,IAAA;AAAA,QAAK,CAAC,WAAA,KACpE,8BAAgC,EAAA,QAAA,CAAS,WAAW,CAAA;AAAA,OACtD,CAAA;AAQA,MAAA,IAAI,QAAQ,iBAAqB,IAAA,IAAA,EAAM,iBAAiB,QAAS,CAAA,iBAAA,EAAmB,EAAE,CAAG,EAAA;AACvF,QAAA,iBAAA,CAAkB,UAAU,CAAA,CAAA;AAAA,OAO9B,MAAA,IACE,eAAgB,CAAA,MAAA,IAChB,iBACA,IAAA,eAAA,CAAgB,OAAO,MAAU,IAAA,QAAA,CAAS,iBAAmB,EAAA,EAAE,CAC/D,EAAA;AACA,QAAA,iBAAA,CAAkB,OAAO,CAAA,CAAA;AAAA,iBAChB,yBAA2B,EAAA;AACpC,QAAA,cAAA,CAAe,CAAC,IAAU,MAAA,EAAE,GAAG,IAAM,EAAA,yBAAA,EAA2B,MAAO,CAAA,CAAA,CAAA;AAAA,OAClE,MAAA;AACL,QAAW,UAAA,EAAA,CAAA;AAAA,OACb;AAAA,KACF;AAAA,IACA,SAAS,MAAQ,EAAA;AACf,MAAA,OAAO,gBAAiB,CAAA,EAAE,MAAQ,EAAA,aAAA,EAAe,CAAA,CAAA;AAAA,KACnD;AAAA,GACD,CAAA,CAAA;AAED,EAAA,gBAAA,CAAiB,iBAAiB,OAAO,CAAA,CAAA;AAEzC,EAAA,KAAA,CAAM,UAAU,MAAM;AACpB,IAAA,QAAA,CAAS,eAAe,CAAA,CAAA;AAExB,IAAI,IAAA,CAAC,qBAAqB,SAAW,EAAA;AACnC,MAAA,QAAA,CAAS,YAAa,CAAA,EAAE,SAAU,EAAC,CAAC,CAAA,CAAA;AAAA,KACtC;AAEA,IAAA,IAAI,CAAC,qBAAuB,EAAA;AAC1B,MAAA,QAAA,CAAS,eAAgB,CAAA,EAAE,eAAiB,EAAA,WAAA,EAAa,CAAC,CAAA,CAAA;AAAA,KAC5D;AAEA,IAAA,IAAI,CAAC,cAAgB,EAAA;AACnB,MAAS,QAAA,CAAA,QAAA,CAAS,WAAW,CAAC,CAAA,CAAA;AAAA,KAChC;AAEA,IAAS,QAAA,CAAA,YAAA,CAAa,qBAAyB,IAAA,cAAc,CAAC,CAAA,CAAA;AAG9D,IAAA,QAAA;AAAA,MACE,QAAS,CAAA;AAAA,QACP,IAAM,EAAA,EAAA;AAAA,OACP,CAAA;AAAA,KACH,CAAA;AAAA,GACC,EAAA;AAAA,IACD,eAAA;AAAA,IACA,QAAA;AAAA,IACA,qBAAA;AAAA,IACA,cAAA;AAAA,IACA,iBAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,SAAA;AAAA,GACD,CAAA,CAAA;AAcD,EAAA,KAAA,CAAM,UAAU,MAAM;AACpB,IAAI,IAAA,CAAC,iBAAqB,IAAA,CAAC,gBAAkB,EAAA;AAC3C,MAAA,IACE,eAAgB,CAAA,MAAA,IAChB,MAAS,GAAA,8CAA8C,CACvD,IAAA,iBAAA,IACA,eAAgB,CAAA,MAAA,CAAO,MAAU,IAAA,QAAA,CAAS,iBAAmB,EAAA,EAAE,CAC/D,EAAA;AACA,QAAA,iBAAA,CAAkB,OAAO,CAAA,CAAA;AAAA,OAC3B;AAAA,KACF;AAAA,GACF,EAAG,CAAC,gBAAkB,EAAA,iBAAA,EAAmB,QAAQ,eAAgB,CAAA,MAAA,EAAQ,iBAAiB,CAAC,CAAA,CAAA;AAE3F,EAAA,KAAA,CAAM,UAAU,MAAM;AACpB,IAAA,IAAI,CAAC,SAAA,IAAa,KAAO,EAAA,MAAA,KAAW,CAAG,EAAA;AACrC,MAAmB,kBAAA,CAAA;AAAA,QACjB,eAAiB,EAAA,IAAA;AAAA,QACjB,IAAM,EAAA,QAAA;AAAA,QACN,SAAS,aAAc,CAAA;AAAA,UACrB,EAAI,EAAA,uEAAA;AAAA,UACJ,cAAgB,EAAA,4CAAA;AAAA,SACjB,CAAA;AAAA,OACF,CAAA,CAAA;AAAA,KACH;AAAA,KACC,CAAC,aAAA,EAAe,SAAW,EAAA,KAAA,EAAO,kBAAkB,CAAC,CAAA,CAAA;AAExD,EAAA,uBAEI,IAAA,CAAA,QAAA,EAAA,EAAA,QAAA,EAAA;AAAA,oBAAC,GAAA,CAAAA,mBAAA,EAAyB,CAAA;AAAA,oBAC1B,GAAA,CAAC,kBAAe,KAAO,EAAA,MAAA,EACrB,+BAAC,IAAK,EAAA,EAAA,QAAA,EAAU,OAAO,YACrB,EAAA,QAAA,EAAA;AAAA,sBAAA,GAAA;AAAA,QAACC,MAAO;AAAA,QAAP;AAAA,UACC,gBAAA,sBAAmB,UAAW,EAAA,EAAA,CAAA;AAAA,UAC9B,aACE,kBAAA,GAAA;AAAA,YAAC,MAAA;AAAA,YAAA;AAAA,cACC,SAAA,sBAAY,KAAM,EAAA,EAAA,CAAA;AAAA,cAClB,IAAK,EAAA,QAAA;AAAA,cACL,IAAK,EAAA,GAAA;AAAA,cACL,UAAU,CAAC,sBAAA;AAAA,cAEV,QAAc,EAAA,aAAA,CAAA;AAAA,gBACb,EAAI,EAAA,aAAA;AAAA,gBACJ,cAAgB,EAAA,MAAA;AAAA,eACjB,CAAA;AAAA,aAAA;AAAA,WACH;AAAA,UAEF,OAAO,aAAc,CAAA;AAAA,YACnB,EAAI,EAAA,6CAAA;AAAA,YACJ,cAAgB,EAAA,wBAAA;AAAA,WACjB,CAAA;AAAA,UACD,QAAU,EAAA,aAAA;AAAA,YACR;AAAA,cACE,EAAI,EAAA,yCAAA;AAAA,cACJ,cAAgB,EAAA,iDAAA;AAAA,aAClB;AAAA,YACA,EAAE,KAAA,EAAO,eAAiB,EAAA,MAAA,EAAQ,UAAU,CAAE,EAAA;AAAA,WAChD;AAAA,SAAA;AAAA,OACF;AAAA,sBACC,GAAA,CAAAC,IAAA,EAAA,EACC,8BAAC,IAAK,EAAA,EAAA,UAAA,EAAW,SAAU,EAAA,SAAA,EAAU,UAAS,GAAK,EAAA,CAAA,EAChD,QACC,EAAA,SAAA,mBAAA,GAAA,CAAC,UACE,QAAc,EAAA,aAAA,CAAA;AAAA,QACb,EAAI,EAAA,0CAAA;AAAA,QACJ,cAAgB,EAAA,qBAAA;AAAA,OACjB,CACH,EAAA,CAAA,mBAEC,IAAA,CAAA,IAAA,EAAA,EAAK,YAAW,SAAU,EAAA,SAAA,EAAU,QAAS,EAAA,GAAA,EAAK,CACjD,EAAA,QAAA,EAAA;AAAA,wBAAA,GAAA,CAAC,kBAAmB,EAAA,EAAA,CAAA;AAAA,wBACnB,GAAA,CAAA,MAAA,EAAA,EAAO,MAAQ,EAAA,MAAA,CAAO,QAAQ,MAAQ,EAAA,CAAA;AAAA,OAAA,EACzC,GAEJ,CACF,EAAA,CAAA;AAAA,KAAA,EACF,CACF,EAAA,CAAA;AAAA,oBAEA,GAAA;AAAA,MAAC,aAAA;AAAA,MAAA;AAAA,QACC,MAAQ,EAAA,MAAA,CAAO,IAAK,CAAA,WAAW,EAAE,MAAS,GAAA,CAAA;AAAA,QAC1C,OAAS,EAAA,kBAAA;AAAA,QACT,SAAW,EAAA,yBAAA;AAAA,QAEX,QAAC,kBAAA,IAAA,CAAA,IAAA,EAAA,EAAK,SAAU,EAAA,QAAA,EAAS,KAAK,CAC3B,EAAA,QAAA,EAAA;AAAA,UAAA,WAAA,CAAY,6CACV,GAAA,CAAA,UAAA,EAAA,EAAW,SAAU,EAAA,QAAA,EAAS,SAAQ,OACpC,EAAA,QAAA,EAAA,aAAA;AAAA,YACC;AAAA,cACE,EAAI,EAAA,gEAAA;AAAA,cACJ,cACE,EAAA,8cAAA;AAAA,aACJ;AAAA,YACA;AAAA,cACE,OAAO,8BAAgC,EAAA,MAAA;AAAA,gBAAO,CAAC,WAAA,KAC7C,eAAgB,CAAA,YAAA,EAAc,SAAS,WAAW,CAAA;AAAA,eAClD,CAAA,MAAA;AAAA,aACJ;AAAA,WAEJ,EAAA,CAAA;AAAA,8BAGD,UAAW,EAAA,EAAA,SAAA,EAAU,QAAS,EAAA,OAAA,EAAQ,SACpC,QAAc,EAAA,aAAA,CAAA;AAAA,YACb,EAAI,EAAA,uDAAA;AAAA,YACJ,cAAgB,EAAA,gCAAA;AAAA,WACjB,CACH,EAAA,CAAA;AAAA,SACF,EAAA,CAAA;AAAA,OAAA;AAAA,KACF;AAAA,oBAEA,IAAA;AAAA,MAAC,WAAY,CAAA,IAAA;AAAA,MAAZ;AAAA,QACC,QAAQ,cAAmB,KAAA,UAAA;AAAA,QAC3B,OAAA,EAAS,MAAM,iBAAA,CAAkB,IAAI,CAAA;AAAA,QAErC,QAAA,EAAA;AAAA,0BAAC,GAAA,CAAA,WAAA,CAAY,KAAZ,EAAA,EACE,QAAc,EAAA,aAAA,CAAA;AAAA,YACb,EAAI,EAAA,6DAAA;AAAA,YACJ,cAAgB,EAAA,oDAAA;AAAA,WACjB,CACH,EAAA,CAAA;AAAA,0BAEC,GAAA,CAAA,WAAA,CAAY,IAAZ,EAAA,EACE,QAAc,EAAA,aAAA,CAAA;AAAA,YACb,EAAI,EAAA,4DAAA;AAAA,YACJ,cAAgB,EAAA,8DAAA;AAAA,WACjB,CACH,EAAA,CAAA;AAAA,SAAA;AAAA,OAAA;AAAA,KACF;AAAA,oBAEA,IAAA,CAAC,WAAY,CAAA,IAAA,EAAZ,EAAiB,MAAA,EAAQ,cAAmB,KAAA,OAAA,EAAS,OAAS,EAAA,MAAM,iBAAkB,CAAA,IAAI,CACzF,EAAA,QAAA,EAAA;AAAA,sBAAC,GAAA,CAAA,WAAA,CAAY,KAAZ,EAAA,EACE,QAAc,EAAA,aAAA,CAAA;AAAA,QACb,EAAI,EAAA,0DAAA;AAAA,QACJ,cAAgB,EAAA,qEAAA;AAAA,OACjB,CACH,EAAA,CAAA;AAAA,sBAEC,GAAA,CAAA,WAAA,CAAY,IAAZ,EAAA,EACE,QAAc,EAAA,aAAA,CAAA;AAAA,QACb,EAAI,EAAA,yDAAA;AAAA,QACJ,cAAgB,EAAA,kEAAA;AAAA,OACjB,CACH,EAAA,CAAA;AAAA,KACF,EAAA,CAAA;AAAA,GACF,EAAA,CAAA,CAAA;AAEJ;;;;"}
1
+ {"version":3,"file":"CreatePage-1a_Nb-RK.mjs","sources":["../../ee/admin/src/pages/SettingsPage/pages/ReviewWorkflows/CreatePage.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { Button, Flex, Loader, Typography } from '@strapi/design-system';\nimport { Check } from '@strapi/icons';\nimport { useFormik, Form, FormikProvider, FormikErrors } from 'formik';\nimport { useIntl } from 'react-intl';\nimport { useDispatch, useSelector } from 'react-redux';\nimport { useNavigate } from 'react-router-dom';\n\nimport { ConfirmDialog } from '../../../../../../../admin/src/components/ConfirmDialog';\nimport { BackButton } from '../../../../../../../admin/src/features/BackButton';\nimport { useNotification } from '../../../../../../../admin/src/features/Notifications';\nimport { useAdminRoles } from '../../../../../../../admin/src/hooks/useAdminRoles';\nimport { useAPIErrorHandler } from '../../../../../../../admin/src/hooks/useAPIErrorHandler';\nimport { useContentTypes } from '../../../../../../../admin/src/hooks/useContentTypes';\nimport { useInjectReducer } from '../../../../../../../admin/src/hooks/useInjectReducer';\nimport { isBaseQueryError } from '../../../../../../../admin/src/utils/baseQuery';\nimport { useLicenseLimits } from '../../../../hooks/useLicenseLimits';\n\nimport {\n addStage,\n resetWorkflow,\n setContentTypes,\n setIsLoading,\n setRoles,\n setWorkflows,\n} from './actions';\nimport * as Layout from './components/Layout';\nimport { LimitsModal } from './components/LimitsModal';\nimport { Stages } from './components/Stages';\nimport { WorkflowAttributes } from './components/WorkflowAttributes';\nimport {\n CHARGEBEE_STAGES_PER_WORKFLOW_ENTITLEMENT_NAME,\n CHARGEBEE_WORKFLOW_ENTITLEMENT_NAME,\n REDUX_NAMESPACE,\n} from './constants';\nimport { useReviewWorkflows } from './hooks/useReviewWorkflows';\nimport { CurrentWorkflow, reducer } from './reducer';\nimport {\n selectIsLoading,\n selectIsWorkflowDirty,\n selectCurrentWorkflow,\n selectRoles,\n} from './selectors';\nimport { validateWorkflow } from './utils/validateWorkflow';\n\nexport const ReviewWorkflowsCreatePage = () => {\n const { formatMessage } = useIntl();\n const navigate = useNavigate();\n const {\n _unstableFormatAPIError: formatAPIError,\n _unstableFormatValidationErrors: formatValidationErrors,\n } = useAPIErrorHandler();\n const dispatch = useDispatch();\n const { toggleNotification } = useNotification();\n const { collectionTypes, singleTypes, isLoading: isLoadingContentTypes } = useContentTypes();\n const { isLoading: isLoadingWorkflow, meta, workflows, createWorkflow } = useReviewWorkflows();\n const { isLoading: isLoadingRoles, roles: serverRoles } = useAdminRoles();\n const isLoading = useSelector(selectIsLoading);\n const currentWorkflowIsDirty = useSelector(selectIsWorkflowDirty);\n const currentWorkflow = useSelector(selectCurrentWorkflow);\n const roles = useSelector(selectRoles);\n const [showLimitModal, setShowLimitModal] = React.useState<'workflow' | 'stage' | null>(null);\n const { isLoading: isLicenseLoading, getFeature } = useLicenseLimits();\n const [initialErrors, setInitialErrors] = React.useState<FormikErrors<CurrentWorkflow>>();\n const [savePrompts, setSavePrompts] = React.useState<{ hasReassignedContentTypes?: boolean }>({});\n\n const limits = getFeature<string>('review-workflows');\n const numberOfWorkflows = limits?.[CHARGEBEE_WORKFLOW_ENTITLEMENT_NAME];\n const stagesPerWorkflow = limits?.[CHARGEBEE_STAGES_PER_WORKFLOW_ENTITLEMENT_NAME];\n const contentTypesFromOtherWorkflows = workflows?.flatMap((workflow) => workflow.contentTypes);\n\n const submitForm = async () => {\n setSavePrompts({});\n\n try {\n const res = await createWorkflow({\n // @ts-expect-error – currentWorkflow will have already been validated by formik before it gets here.\n data: currentWorkflow,\n });\n\n if ('error' in res) {\n if (isBaseQueryError(res.error) && res.error.name === 'ValidationError') {\n setInitialErrors(formatValidationErrors(res.error));\n }\n\n toggleNotification({\n type: 'danger',\n message: formatAPIError(res.error),\n });\n\n return;\n }\n\n toggleNotification({\n type: 'success',\n message: formatMessage({\n id: 'Settings.review-workflows.create.page.notification.success',\n defaultMessage: 'Workflow successfully created',\n }),\n });\n\n navigate(`/settings/review-workflows/${res.data.id}`);\n } catch (error) {\n toggleNotification({\n type: 'danger',\n message: formatMessage({\n id: 'Settings.review-workflows.create.page.notification.error',\n defaultMessage: 'An error occurred',\n }),\n });\n }\n };\n\n const handleConfirmDeleteDialog = async () => {\n await submitForm();\n };\n\n const handleConfirmClose = () => {\n setSavePrompts({});\n };\n\n const formik = useFormik({\n enableReinitialize: true,\n initialErrors,\n initialValues: currentWorkflow,\n async onSubmit() {\n const isContentTypeReassignment = currentWorkflow.contentTypes?.some((contentType) =>\n contentTypesFromOtherWorkflows?.includes(contentType)\n );\n\n /**\n * If the current license has a limit, check if the total count of workflows\n * exceeds that limit and display the limits modal instead of sending the\n * update, because it would throw an API error.\n */\n\n if (meta && numberOfWorkflows && meta?.workflowCount >= parseInt(numberOfWorkflows, 10)) {\n setShowLimitModal('workflow');\n\n /**\n * If the current license has a limit, check if the total count of stages\n * exceeds that limit and display the limits modal instead of sending the\n * update, because it would throw an API error.\n */\n } else if (\n currentWorkflow.stages &&\n stagesPerWorkflow &&\n currentWorkflow.stages.length >= parseInt(stagesPerWorkflow, 10)\n ) {\n setShowLimitModal('stage');\n } else if (isContentTypeReassignment) {\n setSavePrompts((prev) => ({ ...prev, hasReassignedContentTypes: true }));\n } else {\n submitForm();\n }\n },\n validate(values) {\n return validateWorkflow({ values, formatMessage });\n },\n });\n\n useInjectReducer(REDUX_NAMESPACE, reducer);\n\n React.useEffect(() => {\n dispatch(resetWorkflow());\n\n if (!isLoadingWorkflow && workflows) {\n dispatch(setWorkflows({ workflows }));\n }\n\n if (!isLoadingContentTypes) {\n dispatch(setContentTypes({ collectionTypes, singleTypes }));\n }\n\n if (!isLoadingRoles) {\n dispatch(setRoles(serverRoles));\n }\n\n dispatch(setIsLoading(isLoadingContentTypes || isLoadingRoles));\n\n // Create an empty default stage\n dispatch(\n addStage({\n name: '',\n })\n );\n }, [\n collectionTypes,\n dispatch,\n isLoadingContentTypes,\n isLoadingRoles,\n isLoadingWorkflow,\n serverRoles,\n singleTypes,\n workflows,\n ]);\n\n /**\n * If the current license has a limit:\n * check if the total count of workflows or stages exceeds that limit and display\n * the limits modal on page load. It can be closed by the user, but the\n * API will throw an error in case they try to create a new workflow or update the\n * stages.\n *\n * If the current license does not have a limit (e.g. offline license):\n * do nothing (for now). In case they are trying to create the 201st workflow/ stage\n * the API will throw an error.\n *\n */\n React.useEffect(() => {\n if (!isLoadingWorkflow && !isLicenseLoading) {\n if (\n currentWorkflow.stages &&\n limits?.[CHARGEBEE_STAGES_PER_WORKFLOW_ENTITLEMENT_NAME] &&\n stagesPerWorkflow &&\n currentWorkflow.stages.length >= parseInt(stagesPerWorkflow, 10)\n ) {\n setShowLimitModal('stage');\n }\n }\n }, [isLicenseLoading, isLoadingWorkflow, limits, currentWorkflow.stages, stagesPerWorkflow]);\n\n React.useEffect(() => {\n if (!isLoading && roles?.length === 0) {\n toggleNotification({\n blockTransition: true,\n type: 'danger',\n message: formatMessage({\n id: 'Settings.review-workflows.stage.permissions.noPermissions.description',\n defaultMessage: 'You don’t have the permission to see roles',\n }),\n });\n }\n }, [formatMessage, isLoading, roles, toggleNotification]);\n\n return (\n <>\n <Layout.DragLayerRendered />\n <FormikProvider value={formik}>\n <Form onSubmit={formik.handleSubmit}>\n <Layout.Header\n navigationAction={<BackButton />}\n primaryAction={\n <Button\n startIcon={<Check />}\n type=\"submit\"\n size=\"M\"\n disabled={!currentWorkflowIsDirty}\n >\n {formatMessage({\n id: 'global.save',\n defaultMessage: 'Save',\n })}\n </Button>\n }\n title={formatMessage({\n id: 'Settings.review-workflows.create.page.title',\n defaultMessage: 'Create Review Workflow',\n })}\n subtitle={formatMessage(\n {\n id: 'Settings.review-workflows.page.subtitle',\n defaultMessage: '{count, plural, one {# stage} other {# stages}}',\n },\n { count: currentWorkflow?.stages?.length ?? 0 }\n )}\n />\n <Layout.Root>\n <Flex alignItems=\"stretch\" direction=\"column\" gap={7}>\n {isLoading ? (\n <Loader>\n {formatMessage({\n id: 'Settings.review-workflows.page.isLoading',\n defaultMessage: 'Workflow is loading',\n })}\n </Loader>\n ) : (\n <Flex alignItems=\"stretch\" direction=\"column\" gap={7}>\n <WorkflowAttributes />\n <Stages stages={formik.values?.stages} />\n </Flex>\n )}\n </Flex>\n </Layout.Root>\n </Form>\n </FormikProvider>\n\n <ConfirmDialog\n isOpen={Object.keys(savePrompts).length > 0}\n onClose={handleConfirmClose}\n onConfirm={handleConfirmDeleteDialog}\n >\n <Flex direction=\"column\" gap={5}>\n {savePrompts.hasReassignedContentTypes && (\n <Typography textAlign=\"center\" variant=\"omega\">\n {formatMessage(\n {\n id: 'Settings.review-workflows.page.delete.confirm.contentType.body',\n defaultMessage:\n '{count} {count, plural, one {content-type} other {content-types}} {count, plural, one {is} other {are}} already mapped to {count, plural, one {another workflow} other {other workflows}}. If you save changes, {count, plural, one {this} other {these}} {count, plural, one {content-type} other {{count} content-types}} will no more be mapped to the {count, plural, one {another workflow} other {other workflows}} and all corresponding information will be removed.',\n },\n {\n count: contentTypesFromOtherWorkflows?.filter((contentType) =>\n currentWorkflow.contentTypes?.includes(contentType)\n ).length,\n }\n )}\n </Typography>\n )}\n\n <Typography textAlign=\"center\" variant=\"omega\">\n {formatMessage({\n id: 'Settings.review-workflows.page.delete.confirm.confirm',\n defaultMessage: 'Are you sure you want to save?',\n })}\n </Typography>\n </Flex>\n </ConfirmDialog>\n\n <LimitsModal.Root\n isOpen={showLimitModal === 'workflow'}\n onClose={() => setShowLimitModal(null)}\n >\n <LimitsModal.Title>\n {formatMessage({\n id: 'Settings.review-workflows.create.page.workflows.limit.title',\n defaultMessage: 'You’ve reached the limit of workflows in your plan',\n })}\n </LimitsModal.Title>\n\n <LimitsModal.Body>\n {formatMessage({\n id: 'Settings.review-workflows.create.page.workflows.limit.body',\n defaultMessage: 'Delete a workflow or contact Sales to enable more workflows.',\n })}\n </LimitsModal.Body>\n </LimitsModal.Root>\n\n <LimitsModal.Root isOpen={showLimitModal === 'stage'} onClose={() => setShowLimitModal(null)}>\n <LimitsModal.Title>\n {formatMessage({\n id: 'Settings.review-workflows.create.page.stages.limit.title',\n defaultMessage: 'You have reached the limit of stages for this workflow in your plan',\n })}\n </LimitsModal.Title>\n\n <LimitsModal.Body>\n {formatMessage({\n id: 'Settings.review-workflows.create.page.stages.limit.body',\n defaultMessage: 'Try deleting some stages or contact Sales to enable more stages.',\n })}\n </LimitsModal.Body>\n </LimitsModal.Root>\n </>\n );\n};\n"],"names":["Layout.DragLayerRendered","Layout.Header","Layout.Root"],"mappings":"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"}
@@ -9,7 +9,7 @@ import { useMatch, useNavigate } from 'react-router-dom';
9
9
  import styled from 'styled-components';
10
10
  import * as yup from 'yup';
11
11
  import { _ as errorsTrads, h as useTypedSelector, P as Page, j as useNotification, o as useTracking, i as useAPIErrorHandler, H as isBaseQueryError } from './reducers-IQWvK_9L.mjs';
12
- import { Y as useGetRolePermissionLayoutQuery, Z as useGetRolePermissionsQuery, _ as useCreateRoleMutation, $ as useUpdateRolePermissionsMutation, B as BackButton } from './index-oXhvt6Nv.mjs';
12
+ import { Y as useGetRolePermissionLayoutQuery, Z as useGetRolePermissionsQuery, _ as useCreateRoleMutation, $ as useUpdateRolePermissionsMutation, B as BackButton } from './index-1NFAbkxM.mjs';
13
13
  import { P as Permissions } from './Permissions-v99MLjbi.mjs';
14
14
 
15
15
  const CREATE_SCHEMA = yup.object().shape({
@@ -242,4 +242,4 @@ const ProtectedCreatePage = () => {
242
242
  };
243
243
 
244
244
  export { CreatePage, ProtectedCreatePage };
245
- //# sourceMappingURL=CreatePage-k_yey8N_.mjs.map
245
+ //# sourceMappingURL=CreatePage-8rG8fSZv.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"CreatePage-k_yey8N_.mjs","sources":["../../admin/src/pages/Settings/pages/Roles/CreatePage.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport {\n Box,\n Button,\n ContentLayout,\n Flex,\n Grid,\n GridItem,\n HeaderLayout,\n Main,\n Textarea,\n TextInput,\n Typography,\n} from '@strapi/design-system';\nimport { format } from 'date-fns';\nimport { Formik, Form, FormikHelpers } from 'formik';\nimport { Helmet } from 'react-helmet';\nimport { useIntl } from 'react-intl';\nimport { useNavigate, useMatch } from 'react-router-dom';\nimport styled from 'styled-components';\nimport * as yup from 'yup';\n\nimport { Page } from '../../../../components/PageHelpers';\nimport { useTypedSelector } from '../../../../core/store/hooks';\nimport { BackButton } from '../../../../features/BackButton';\nimport { useNotification } from '../../../../features/Notifications';\nimport { useTracking } from '../../../../features/Tracking';\nimport { useAPIErrorHandler } from '../../../../hooks/useAPIErrorHandler';\nimport {\n useCreateRoleMutation,\n useGetRolePermissionLayoutQuery,\n useGetRolePermissionsQuery,\n useUpdateRolePermissionsMutation,\n} from '../../../../services/users';\nimport { isBaseQueryError } from '../../../../utils/baseQuery';\nimport { translatedErrors } from '../../../../utils/translatedErrors';\n\nimport { Permissions, PermissionsAPI } from './components/Permissions';\n\n/* -------------------------------------------------------------------------------------------------\n * CreatePage\n * -----------------------------------------------------------------------------------------------*/\n\nconst CREATE_SCHEMA = yup.object().shape({\n name: yup.string().required(translatedErrors.required.id),\n description: yup.string().required(translatedErrors.required.id),\n});\n\n/**\n * TODO: be nice if we could just infer this from the schema\n */\ninterface CreateRoleFormValues {\n name: string;\n description: string;\n}\n\n/**\n * TODO: this whole section of the app needs refactoring. Using a ref to\n * manage the state of the child is nonsensical.\n */\nconst CreatePage = () => {\n const match = useMatch('/settings/roles/duplicate/:id');\n const { toggleNotification } = useNotification();\n const { formatMessage } = useIntl();\n const navigate = useNavigate();\n const permissionsRef = React.useRef<PermissionsAPI>(null);\n const { trackUsage } = useTracking();\n const {\n _unstableFormatAPIError: formatAPIError,\n _unstableFormatValidationErrors: formatValidationErrors,\n } = useAPIErrorHandler();\n\n const id = match?.params.id ?? null;\n\n const { isLoading: isLoadingPermissionsLayout, data: permissionsLayout } =\n useGetRolePermissionLayoutQuery({\n /**\n * Role here is a query param so if there's no role we pass an empty string\n * which returns us a default layout.\n */\n role: id ?? '',\n });\n\n /**\n * We need this so if we're cloning a role, we can fetch\n * the current permissions that role has.\n */\n const { data: rolePermissions, isLoading: isLoadingRole } = useGetRolePermissionsQuery(\n {\n id: id!,\n },\n {\n skip: !id,\n refetchOnMountOrArgChange: true,\n }\n );\n\n const [createRole] = useCreateRoleMutation();\n const [updateRolePermissions] = useUpdateRolePermissionsMutation();\n\n const handleCreateRoleSubmit = async (\n data: CreateRoleFormValues,\n formik: FormikHelpers<CreateRoleFormValues>\n ) => {\n try {\n if (id) {\n trackUsage('willDuplicateRole');\n } else {\n trackUsage('willCreateNewRole');\n }\n\n const res = await createRole(data);\n\n if ('error' in res) {\n if (isBaseQueryError(res.error) && res.error.name === 'ValidationError') {\n formik.setErrors(formatValidationErrors(res.error));\n } else {\n toggleNotification({\n type: 'danger',\n message: formatAPIError(res.error),\n });\n }\n\n return;\n }\n\n const { permissionsToSend } = permissionsRef.current?.getPermissions() ?? {};\n\n if (res.data.id && Array.isArray(permissionsToSend) && permissionsToSend.length > 0) {\n const updateRes = await updateRolePermissions({\n id: res.data.id,\n permissions: permissionsToSend,\n });\n\n if ('error' in updateRes) {\n if (isBaseQueryError(updateRes.error) && updateRes.error.name === 'ValidationError') {\n formik.setErrors(formatValidationErrors(updateRes.error));\n } else {\n toggleNotification({\n type: 'danger',\n message: formatAPIError(updateRes.error),\n });\n }\n\n return;\n }\n }\n\n toggleNotification({\n type: 'success',\n message: formatMessage({ id: 'Settings.roles.created', defaultMessage: 'created' }),\n });\n\n navigate(res.data.id.toString(), { replace: true });\n } catch (err) {\n toggleNotification({\n type: 'danger',\n message: formatMessage({ id: 'notification.error', defaultMessage: 'An error occurred' }),\n });\n }\n };\n\n if ((isLoadingPermissionsLayout && isLoadingRole) || !permissionsLayout) {\n return <Page.Loading />;\n }\n\n return (\n <Main>\n <Helmet\n title={formatMessage(\n { id: 'Settings.PageTitle', defaultMessage: 'Settings - {name}' },\n {\n name: 'Roles',\n }\n )}\n />\n <Formik\n initialValues={\n {\n name: '',\n description: `${formatMessage({\n id: 'Settings.roles.form.created',\n defaultMessage: 'Created',\n })} ${format(new Date(), 'PPP')}`,\n } satisfies CreateRoleFormValues\n }\n onSubmit={handleCreateRoleSubmit}\n validationSchema={CREATE_SCHEMA}\n validateOnChange={false}\n >\n {({ values, errors, handleReset, handleChange, isSubmitting }) => (\n <Form>\n <>\n <HeaderLayout\n primaryAction={\n <Flex gap={2}>\n <Button\n variant=\"secondary\"\n onClick={() => {\n handleReset();\n permissionsRef.current?.resetForm();\n }}\n size=\"L\"\n >\n {formatMessage({\n id: 'app.components.Button.reset',\n defaultMessage: 'Reset',\n })}\n </Button>\n <Button type=\"submit\" loading={isSubmitting} size=\"L\">\n {formatMessage({\n id: 'global.save',\n defaultMessage: 'Save',\n })}\n </Button>\n </Flex>\n }\n title={formatMessage({\n id: 'Settings.roles.create.title',\n defaultMessage: 'Create a role',\n })}\n subtitle={formatMessage({\n id: 'Settings.roles.create.description',\n defaultMessage: 'Define the rights given to the role',\n })}\n navigationAction={<BackButton />}\n />\n <ContentLayout>\n <Flex direction=\"column\" alignItems=\"stretch\" gap={6}>\n <Box background=\"neutral0\" padding={6} shadow=\"filterShadow\" hasRadius>\n <Flex direction=\"column\" alignItems=\"stretch\" gap={4}>\n <Flex justifyContent=\"space-between\">\n <Box>\n <Box>\n <Typography fontWeight=\"bold\">\n {formatMessage({\n id: 'global.details',\n defaultMessage: 'Details',\n })}\n </Typography>\n </Box>\n <Box>\n <Typography variant=\"pi\" textColor=\"neutral600\">\n {formatMessage({\n id: 'Settings.roles.form.description',\n defaultMessage: 'Name and description of the role',\n })}\n </Typography>\n </Box>\n </Box>\n <UsersRoleNumber>\n {formatMessage(\n {\n id: 'Settings.roles.form.button.users-with-role',\n defaultMessage:\n '{number, plural, =0 {# users} one {# user} other {# users}} with this role',\n },\n { number: 0 }\n )}\n </UsersRoleNumber>\n </Flex>\n <Grid gap={4}>\n <GridItem col={6}>\n <TextInput\n name=\"name\"\n error={errors.name && formatMessage({ id: errors.name })}\n label={formatMessage({\n id: 'global.name',\n defaultMessage: 'Name',\n })}\n onChange={handleChange}\n required\n value={values.name}\n />\n </GridItem>\n <GridItem col={6}>\n <Textarea\n label={formatMessage({\n id: 'global.description',\n defaultMessage: 'Description',\n })}\n id=\"description\"\n error={errors.description && formatMessage({ id: errors.description })}\n onChange={handleChange}\n >\n {values.description}\n </Textarea>\n </GridItem>\n </Grid>\n </Flex>\n </Box>\n <Box shadow=\"filterShadow\" hasRadius>\n <Permissions\n isFormDisabled={false}\n ref={permissionsRef}\n permissions={rolePermissions}\n layout={permissionsLayout}\n />\n </Box>\n </Flex>\n </ContentLayout>\n </>\n </Form>\n )}\n </Formik>\n </Main>\n );\n};\n\nconst UsersRoleNumber = styled.div`\n border: 1px solid ${({ theme }) => theme.colors.primary200};\n background: ${({ theme }) => theme.colors.primary100};\n padding: ${({ theme }) => `${theme.spaces[2]} ${theme.spaces[4]}`};\n color: ${({ theme }) => theme.colors.primary600};\n border-radius: ${({ theme }) => theme.borderRadius};\n font-size: ${12 / 16}rem;\n font-weight: bold;\n`;\n\n/* -------------------------------------------------------------------------------------------------\n * ProtectedCreatePage\n * -----------------------------------------------------------------------------------------------*/\n\nconst ProtectedCreatePage = () => {\n const permissions = useTypedSelector(\n (state) => state.admin_app.permissions.settings?.roles.create\n );\n\n return (\n <Page.Protect permissions={permissions}>\n <CreatePage />\n </Page.Protect>\n );\n};\n\nexport { CreatePage, ProtectedCreatePage };\n"],"names":["translatedErrors"],"mappings":"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"}
1
+ {"version":3,"file":"CreatePage-8rG8fSZv.mjs","sources":["../../admin/src/pages/Settings/pages/Roles/CreatePage.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport {\n Box,\n Button,\n ContentLayout,\n Flex,\n Grid,\n GridItem,\n HeaderLayout,\n Main,\n Textarea,\n TextInput,\n Typography,\n} from '@strapi/design-system';\nimport { format } from 'date-fns';\nimport { Formik, Form, FormikHelpers } from 'formik';\nimport { Helmet } from 'react-helmet';\nimport { useIntl } from 'react-intl';\nimport { useNavigate, useMatch } from 'react-router-dom';\nimport styled from 'styled-components';\nimport * as yup from 'yup';\n\nimport { Page } from '../../../../components/PageHelpers';\nimport { useTypedSelector } from '../../../../core/store/hooks';\nimport { BackButton } from '../../../../features/BackButton';\nimport { useNotification } from '../../../../features/Notifications';\nimport { useTracking } from '../../../../features/Tracking';\nimport { useAPIErrorHandler } from '../../../../hooks/useAPIErrorHandler';\nimport {\n useCreateRoleMutation,\n useGetRolePermissionLayoutQuery,\n useGetRolePermissionsQuery,\n useUpdateRolePermissionsMutation,\n} from '../../../../services/users';\nimport { isBaseQueryError } from '../../../../utils/baseQuery';\nimport { translatedErrors } from '../../../../utils/translatedErrors';\n\nimport { Permissions, PermissionsAPI } from './components/Permissions';\n\n/* -------------------------------------------------------------------------------------------------\n * CreatePage\n * -----------------------------------------------------------------------------------------------*/\n\nconst CREATE_SCHEMA = yup.object().shape({\n name: yup.string().required(translatedErrors.required.id),\n description: yup.string().required(translatedErrors.required.id),\n});\n\n/**\n * TODO: be nice if we could just infer this from the schema\n */\ninterface CreateRoleFormValues {\n name: string;\n description: string;\n}\n\n/**\n * TODO: this whole section of the app needs refactoring. Using a ref to\n * manage the state of the child is nonsensical.\n */\nconst CreatePage = () => {\n const match = useMatch('/settings/roles/duplicate/:id');\n const { toggleNotification } = useNotification();\n const { formatMessage } = useIntl();\n const navigate = useNavigate();\n const permissionsRef = React.useRef<PermissionsAPI>(null);\n const { trackUsage } = useTracking();\n const {\n _unstableFormatAPIError: formatAPIError,\n _unstableFormatValidationErrors: formatValidationErrors,\n } = useAPIErrorHandler();\n\n const id = match?.params.id ?? null;\n\n const { isLoading: isLoadingPermissionsLayout, data: permissionsLayout } =\n useGetRolePermissionLayoutQuery({\n /**\n * Role here is a query param so if there's no role we pass an empty string\n * which returns us a default layout.\n */\n role: id ?? '',\n });\n\n /**\n * We need this so if we're cloning a role, we can fetch\n * the current permissions that role has.\n */\n const { data: rolePermissions, isLoading: isLoadingRole } = useGetRolePermissionsQuery(\n {\n id: id!,\n },\n {\n skip: !id,\n refetchOnMountOrArgChange: true,\n }\n );\n\n const [createRole] = useCreateRoleMutation();\n const [updateRolePermissions] = useUpdateRolePermissionsMutation();\n\n const handleCreateRoleSubmit = async (\n data: CreateRoleFormValues,\n formik: FormikHelpers<CreateRoleFormValues>\n ) => {\n try {\n if (id) {\n trackUsage('willDuplicateRole');\n } else {\n trackUsage('willCreateNewRole');\n }\n\n const res = await createRole(data);\n\n if ('error' in res) {\n if (isBaseQueryError(res.error) && res.error.name === 'ValidationError') {\n formik.setErrors(formatValidationErrors(res.error));\n } else {\n toggleNotification({\n type: 'danger',\n message: formatAPIError(res.error),\n });\n }\n\n return;\n }\n\n const { permissionsToSend } = permissionsRef.current?.getPermissions() ?? {};\n\n if (res.data.id && Array.isArray(permissionsToSend) && permissionsToSend.length > 0) {\n const updateRes = await updateRolePermissions({\n id: res.data.id,\n permissions: permissionsToSend,\n });\n\n if ('error' in updateRes) {\n if (isBaseQueryError(updateRes.error) && updateRes.error.name === 'ValidationError') {\n formik.setErrors(formatValidationErrors(updateRes.error));\n } else {\n toggleNotification({\n type: 'danger',\n message: formatAPIError(updateRes.error),\n });\n }\n\n return;\n }\n }\n\n toggleNotification({\n type: 'success',\n message: formatMessage({ id: 'Settings.roles.created', defaultMessage: 'created' }),\n });\n\n navigate(res.data.id.toString(), { replace: true });\n } catch (err) {\n toggleNotification({\n type: 'danger',\n message: formatMessage({ id: 'notification.error', defaultMessage: 'An error occurred' }),\n });\n }\n };\n\n if ((isLoadingPermissionsLayout && isLoadingRole) || !permissionsLayout) {\n return <Page.Loading />;\n }\n\n return (\n <Main>\n <Helmet\n title={formatMessage(\n { id: 'Settings.PageTitle', defaultMessage: 'Settings - {name}' },\n {\n name: 'Roles',\n }\n )}\n />\n <Formik\n initialValues={\n {\n name: '',\n description: `${formatMessage({\n id: 'Settings.roles.form.created',\n defaultMessage: 'Created',\n })} ${format(new Date(), 'PPP')}`,\n } satisfies CreateRoleFormValues\n }\n onSubmit={handleCreateRoleSubmit}\n validationSchema={CREATE_SCHEMA}\n validateOnChange={false}\n >\n {({ values, errors, handleReset, handleChange, isSubmitting }) => (\n <Form>\n <>\n <HeaderLayout\n primaryAction={\n <Flex gap={2}>\n <Button\n variant=\"secondary\"\n onClick={() => {\n handleReset();\n permissionsRef.current?.resetForm();\n }}\n size=\"L\"\n >\n {formatMessage({\n id: 'app.components.Button.reset',\n defaultMessage: 'Reset',\n })}\n </Button>\n <Button type=\"submit\" loading={isSubmitting} size=\"L\">\n {formatMessage({\n id: 'global.save',\n defaultMessage: 'Save',\n })}\n </Button>\n </Flex>\n }\n title={formatMessage({\n id: 'Settings.roles.create.title',\n defaultMessage: 'Create a role',\n })}\n subtitle={formatMessage({\n id: 'Settings.roles.create.description',\n defaultMessage: 'Define the rights given to the role',\n })}\n navigationAction={<BackButton />}\n />\n <ContentLayout>\n <Flex direction=\"column\" alignItems=\"stretch\" gap={6}>\n <Box background=\"neutral0\" padding={6} shadow=\"filterShadow\" hasRadius>\n <Flex direction=\"column\" alignItems=\"stretch\" gap={4}>\n <Flex justifyContent=\"space-between\">\n <Box>\n <Box>\n <Typography fontWeight=\"bold\">\n {formatMessage({\n id: 'global.details',\n defaultMessage: 'Details',\n })}\n </Typography>\n </Box>\n <Box>\n <Typography variant=\"pi\" textColor=\"neutral600\">\n {formatMessage({\n id: 'Settings.roles.form.description',\n defaultMessage: 'Name and description of the role',\n })}\n </Typography>\n </Box>\n </Box>\n <UsersRoleNumber>\n {formatMessage(\n {\n id: 'Settings.roles.form.button.users-with-role',\n defaultMessage:\n '{number, plural, =0 {# users} one {# user} other {# users}} with this role',\n },\n { number: 0 }\n )}\n </UsersRoleNumber>\n </Flex>\n <Grid gap={4}>\n <GridItem col={6}>\n <TextInput\n name=\"name\"\n error={errors.name && formatMessage({ id: errors.name })}\n label={formatMessage({\n id: 'global.name',\n defaultMessage: 'Name',\n })}\n onChange={handleChange}\n required\n value={values.name}\n />\n </GridItem>\n <GridItem col={6}>\n <Textarea\n label={formatMessage({\n id: 'global.description',\n defaultMessage: 'Description',\n })}\n id=\"description\"\n error={errors.description && formatMessage({ id: errors.description })}\n onChange={handleChange}\n >\n {values.description}\n </Textarea>\n </GridItem>\n </Grid>\n </Flex>\n </Box>\n <Box shadow=\"filterShadow\" hasRadius>\n <Permissions\n isFormDisabled={false}\n ref={permissionsRef}\n permissions={rolePermissions}\n layout={permissionsLayout}\n />\n </Box>\n </Flex>\n </ContentLayout>\n </>\n </Form>\n )}\n </Formik>\n </Main>\n );\n};\n\nconst UsersRoleNumber = styled.div`\n border: 1px solid ${({ theme }) => theme.colors.primary200};\n background: ${({ theme }) => theme.colors.primary100};\n padding: ${({ theme }) => `${theme.spaces[2]} ${theme.spaces[4]}`};\n color: ${({ theme }) => theme.colors.primary600};\n border-radius: ${({ theme }) => theme.borderRadius};\n font-size: ${12 / 16}rem;\n font-weight: bold;\n`;\n\n/* -------------------------------------------------------------------------------------------------\n * ProtectedCreatePage\n * -----------------------------------------------------------------------------------------------*/\n\nconst ProtectedCreatePage = () => {\n const permissions = useTypedSelector(\n (state) => state.admin_app.permissions.settings?.roles.create\n );\n\n return (\n <Page.Protect permissions={permissions}>\n <CreatePage />\n </Page.Protect>\n );\n};\n\nexport { CreatePage, ProtectedCreatePage };\n"],"names":["translatedErrors"],"mappings":"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"}
@@ -4,7 +4,7 @@ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
4
4
 
5
5
  const jsxRuntime = require('react/jsx-runtime');
6
6
  const layout = require('./reducers-wZUQqmNX.js');
7
- const EditPage = require('./EditPage--MbF06mK.js');
7
+ const EditPage = require('./EditPage-hEDFGDcC.js');
8
8
 
9
9
  const ProtectedCreatePage = () => {
10
10
  const permissions = layout.useTypedSelector(
@@ -15,4 +15,4 @@ const ProtectedCreatePage = () => {
15
15
 
16
16
  exports.CreatePage = EditPage.EditPage;
17
17
  exports.ProtectedCreatePage = ProtectedCreatePage;
18
- //# sourceMappingURL=CreatePage-UjSB-dgp.js.map
18
+ //# sourceMappingURL=CreatePage-B0kLot_Q.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"CreatePage-UjSB-dgp.js","sources":["../../admin/src/pages/Settings/pages/Webhooks/CreatePage.tsx"],"sourcesContent":["import { Page } from '../../../../components/PageHelpers';\nimport { useTypedSelector } from '../../../../core/store/hooks';\n\nimport { EditPage } from './EditPage';\n\nconst ProtectedCreatePage = () => {\n const permissions = useTypedSelector(\n (state) => state.admin_app.permissions.settings?.webhooks.create\n );\n\n return (\n <Page.Protect permissions={permissions}>\n <EditPage />\n </Page.Protect>\n );\n};\n\nexport { ProtectedCreatePage, EditPage as CreatePage };\n"],"names":["useTypedSelector","Page","jsx","EditPage"],"mappings":";;;;;;;;AAKA,MAAM,sBAAsB,MAAM;AAChC,EAAA,MAAM,WAAc,GAAAA,uBAAA;AAAA,IAClB,CAAC,KAAU,KAAA,KAAA,CAAM,SAAU,CAAA,WAAA,CAAY,UAAU,QAAS,CAAA,MAAA;AAAA,GAC5D,CAAA;AAEA,EAAA,sCACGC,WAAK,CAAA,OAAA,EAAL,EAAa,WACZ,EAAA,QAAA,kBAAAC,cAAA,CAACC,qBAAS,CACZ,EAAA,CAAA,CAAA;AAEJ;;;;;"}
1
+ {"version":3,"file":"CreatePage-B0kLot_Q.js","sources":["../../admin/src/pages/Settings/pages/Webhooks/CreatePage.tsx"],"sourcesContent":["import { Page } from '../../../../components/PageHelpers';\nimport { useTypedSelector } from '../../../../core/store/hooks';\n\nimport { EditPage } from './EditPage';\n\nconst ProtectedCreatePage = () => {\n const permissions = useTypedSelector(\n (state) => state.admin_app.permissions.settings?.webhooks.create\n );\n\n return (\n <Page.Protect permissions={permissions}>\n <EditPage />\n </Page.Protect>\n );\n};\n\nexport { ProtectedCreatePage, EditPage as CreatePage };\n"],"names":["useTypedSelector","Page","jsx","EditPage"],"mappings":";;;;;;;;AAKA,MAAM,sBAAsB,MAAM;AAChC,EAAA,MAAM,WAAc,GAAAA,uBAAA;AAAA,IAClB,CAAC,KAAU,KAAA,KAAA,CAAM,SAAU,CAAA,WAAA,CAAY,UAAU,QAAS,CAAA,MAAA;AAAA,GAC5D,CAAA;AAEA,EAAA,sCACGC,WAAK,CAAA,OAAA,EAAL,EAAa,WACZ,EAAA,QAAA,kBAAAC,cAAA,CAACC,qBAAS,CACZ,EAAA,CAAA,CAAA;AAEJ;;;;;"}
@@ -1,6 +1,6 @@
1
1
  import { jsx } from 'react/jsx-runtime';
2
2
  import { h as useTypedSelector, P as Page } from './reducers-IQWvK_9L.mjs';
3
- import { E as EditPage } from './EditPage-KuoEv50O.mjs';
3
+ import { E as EditPage } from './EditPage-6pGLGlrZ.mjs';
4
4
 
5
5
  const ProtectedCreatePage = () => {
6
6
  const permissions = useTypedSelector(
@@ -10,4 +10,4 @@ const ProtectedCreatePage = () => {
10
10
  };
11
11
 
12
12
  export { EditPage as CreatePage, ProtectedCreatePage };
13
- //# sourceMappingURL=CreatePage-couIKeZQ.mjs.map
13
+ //# sourceMappingURL=CreatePage-c92hDTE3.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"CreatePage-couIKeZQ.mjs","sources":["../../admin/src/pages/Settings/pages/Webhooks/CreatePage.tsx"],"sourcesContent":["import { Page } from '../../../../components/PageHelpers';\nimport { useTypedSelector } from '../../../../core/store/hooks';\n\nimport { EditPage } from './EditPage';\n\nconst ProtectedCreatePage = () => {\n const permissions = useTypedSelector(\n (state) => state.admin_app.permissions.settings?.webhooks.create\n );\n\n return (\n <Page.Protect permissions={permissions}>\n <EditPage />\n </Page.Protect>\n );\n};\n\nexport { ProtectedCreatePage, EditPage as CreatePage };\n"],"names":[],"mappings":";;;;AAKA,MAAM,sBAAsB,MAAM;AAChC,EAAA,MAAM,WAAc,GAAA,gBAAA;AAAA,IAClB,CAAC,KAAU,KAAA,KAAA,CAAM,SAAU,CAAA,WAAA,CAAY,UAAU,QAAS,CAAA,MAAA;AAAA,GAC5D,CAAA;AAEA,EAAA,2BACG,IAAK,CAAA,OAAA,EAAL,EAAa,WACZ,EAAA,QAAA,kBAAA,GAAA,CAAC,YAAS,CACZ,EAAA,CAAA,CAAA;AAEJ;;;;"}
1
+ {"version":3,"file":"CreatePage-c92hDTE3.mjs","sources":["../../admin/src/pages/Settings/pages/Webhooks/CreatePage.tsx"],"sourcesContent":["import { Page } from '../../../../components/PageHelpers';\nimport { useTypedSelector } from '../../../../core/store/hooks';\n\nimport { EditPage } from './EditPage';\n\nconst ProtectedCreatePage = () => {\n const permissions = useTypedSelector(\n (state) => state.admin_app.permissions.settings?.webhooks.create\n );\n\n return (\n <Page.Protect permissions={permissions}>\n <EditPage />\n </Page.Protect>\n );\n};\n\nexport { ProtectedCreatePage, EditPage as CreatePage };\n"],"names":[],"mappings":";;;;AAKA,MAAM,sBAAsB,MAAM;AAChC,EAAA,MAAM,WAAc,GAAA,gBAAA;AAAA,IAClB,CAAC,KAAU,KAAA,KAAA,CAAM,SAAU,CAAA,WAAA,CAAY,UAAU,QAAS,CAAA,MAAA;AAAA,GAC5D,CAAA;AAEA,EAAA,2BACG,IAAK,CAAA,OAAA,EAAL,EAAa,WACZ,EAAA,QAAA,kBAAA,GAAA,CAAC,YAAS,CACZ,EAAA,CAAA,CAAA;AAEJ;;;;"}
@@ -13,7 +13,7 @@ const reactRouterDom = require('react-router-dom');
13
13
  const styled = require('styled-components');
14
14
  const yup = require('yup');
15
15
  const layout = require('./reducers-wZUQqmNX.js');
16
- const index = require('./index-lSQdx61-.js');
16
+ const index = require('./index-mQQPK-ix.js');
17
17
  const Permissions = require('./Permissions-jsl-R7bI.js');
18
18
 
19
19
  const _interopDefault = e => e && e.__esModule ? e : { default: e };
@@ -271,4 +271,4 @@ const ProtectedCreatePage = () => {
271
271
 
272
272
  exports.CreatePage = CreatePage;
273
273
  exports.ProtectedCreatePage = ProtectedCreatePage;
274
- //# sourceMappingURL=CreatePage-Fu_8X4K8.js.map
274
+ //# sourceMappingURL=CreatePage-h9gJgINE.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"CreatePage-Fu_8X4K8.js","sources":["../../admin/src/pages/Settings/pages/Roles/CreatePage.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport {\n Box,\n Button,\n ContentLayout,\n Flex,\n Grid,\n GridItem,\n HeaderLayout,\n Main,\n Textarea,\n TextInput,\n Typography,\n} from '@strapi/design-system';\nimport { format } from 'date-fns';\nimport { Formik, Form, FormikHelpers } from 'formik';\nimport { Helmet } from 'react-helmet';\nimport { useIntl } from 'react-intl';\nimport { useNavigate, useMatch } from 'react-router-dom';\nimport styled from 'styled-components';\nimport * as yup from 'yup';\n\nimport { Page } from '../../../../components/PageHelpers';\nimport { useTypedSelector } from '../../../../core/store/hooks';\nimport { BackButton } from '../../../../features/BackButton';\nimport { useNotification } from '../../../../features/Notifications';\nimport { useTracking } from '../../../../features/Tracking';\nimport { useAPIErrorHandler } from '../../../../hooks/useAPIErrorHandler';\nimport {\n useCreateRoleMutation,\n useGetRolePermissionLayoutQuery,\n useGetRolePermissionsQuery,\n useUpdateRolePermissionsMutation,\n} from '../../../../services/users';\nimport { isBaseQueryError } from '../../../../utils/baseQuery';\nimport { translatedErrors } from '../../../../utils/translatedErrors';\n\nimport { Permissions, PermissionsAPI } from './components/Permissions';\n\n/* -------------------------------------------------------------------------------------------------\n * CreatePage\n * -----------------------------------------------------------------------------------------------*/\n\nconst CREATE_SCHEMA = yup.object().shape({\n name: yup.string().required(translatedErrors.required.id),\n description: yup.string().required(translatedErrors.required.id),\n});\n\n/**\n * TODO: be nice if we could just infer this from the schema\n */\ninterface CreateRoleFormValues {\n name: string;\n description: string;\n}\n\n/**\n * TODO: this whole section of the app needs refactoring. Using a ref to\n * manage the state of the child is nonsensical.\n */\nconst CreatePage = () => {\n const match = useMatch('/settings/roles/duplicate/:id');\n const { toggleNotification } = useNotification();\n const { formatMessage } = useIntl();\n const navigate = useNavigate();\n const permissionsRef = React.useRef<PermissionsAPI>(null);\n const { trackUsage } = useTracking();\n const {\n _unstableFormatAPIError: formatAPIError,\n _unstableFormatValidationErrors: formatValidationErrors,\n } = useAPIErrorHandler();\n\n const id = match?.params.id ?? null;\n\n const { isLoading: isLoadingPermissionsLayout, data: permissionsLayout } =\n useGetRolePermissionLayoutQuery({\n /**\n * Role here is a query param so if there's no role we pass an empty string\n * which returns us a default layout.\n */\n role: id ?? '',\n });\n\n /**\n * We need this so if we're cloning a role, we can fetch\n * the current permissions that role has.\n */\n const { data: rolePermissions, isLoading: isLoadingRole } = useGetRolePermissionsQuery(\n {\n id: id!,\n },\n {\n skip: !id,\n refetchOnMountOrArgChange: true,\n }\n );\n\n const [createRole] = useCreateRoleMutation();\n const [updateRolePermissions] = useUpdateRolePermissionsMutation();\n\n const handleCreateRoleSubmit = async (\n data: CreateRoleFormValues,\n formik: FormikHelpers<CreateRoleFormValues>\n ) => {\n try {\n if (id) {\n trackUsage('willDuplicateRole');\n } else {\n trackUsage('willCreateNewRole');\n }\n\n const res = await createRole(data);\n\n if ('error' in res) {\n if (isBaseQueryError(res.error) && res.error.name === 'ValidationError') {\n formik.setErrors(formatValidationErrors(res.error));\n } else {\n toggleNotification({\n type: 'danger',\n message: formatAPIError(res.error),\n });\n }\n\n return;\n }\n\n const { permissionsToSend } = permissionsRef.current?.getPermissions() ?? {};\n\n if (res.data.id && Array.isArray(permissionsToSend) && permissionsToSend.length > 0) {\n const updateRes = await updateRolePermissions({\n id: res.data.id,\n permissions: permissionsToSend,\n });\n\n if ('error' in updateRes) {\n if (isBaseQueryError(updateRes.error) && updateRes.error.name === 'ValidationError') {\n formik.setErrors(formatValidationErrors(updateRes.error));\n } else {\n toggleNotification({\n type: 'danger',\n message: formatAPIError(updateRes.error),\n });\n }\n\n return;\n }\n }\n\n toggleNotification({\n type: 'success',\n message: formatMessage({ id: 'Settings.roles.created', defaultMessage: 'created' }),\n });\n\n navigate(res.data.id.toString(), { replace: true });\n } catch (err) {\n toggleNotification({\n type: 'danger',\n message: formatMessage({ id: 'notification.error', defaultMessage: 'An error occurred' }),\n });\n }\n };\n\n if ((isLoadingPermissionsLayout && isLoadingRole) || !permissionsLayout) {\n return <Page.Loading />;\n }\n\n return (\n <Main>\n <Helmet\n title={formatMessage(\n { id: 'Settings.PageTitle', defaultMessage: 'Settings - {name}' },\n {\n name: 'Roles',\n }\n )}\n />\n <Formik\n initialValues={\n {\n name: '',\n description: `${formatMessage({\n id: 'Settings.roles.form.created',\n defaultMessage: 'Created',\n })} ${format(new Date(), 'PPP')}`,\n } satisfies CreateRoleFormValues\n }\n onSubmit={handleCreateRoleSubmit}\n validationSchema={CREATE_SCHEMA}\n validateOnChange={false}\n >\n {({ values, errors, handleReset, handleChange, isSubmitting }) => (\n <Form>\n <>\n <HeaderLayout\n primaryAction={\n <Flex gap={2}>\n <Button\n variant=\"secondary\"\n onClick={() => {\n handleReset();\n permissionsRef.current?.resetForm();\n }}\n size=\"L\"\n >\n {formatMessage({\n id: 'app.components.Button.reset',\n defaultMessage: 'Reset',\n })}\n </Button>\n <Button type=\"submit\" loading={isSubmitting} size=\"L\">\n {formatMessage({\n id: 'global.save',\n defaultMessage: 'Save',\n })}\n </Button>\n </Flex>\n }\n title={formatMessage({\n id: 'Settings.roles.create.title',\n defaultMessage: 'Create a role',\n })}\n subtitle={formatMessage({\n id: 'Settings.roles.create.description',\n defaultMessage: 'Define the rights given to the role',\n })}\n navigationAction={<BackButton />}\n />\n <ContentLayout>\n <Flex direction=\"column\" alignItems=\"stretch\" gap={6}>\n <Box background=\"neutral0\" padding={6} shadow=\"filterShadow\" hasRadius>\n <Flex direction=\"column\" alignItems=\"stretch\" gap={4}>\n <Flex justifyContent=\"space-between\">\n <Box>\n <Box>\n <Typography fontWeight=\"bold\">\n {formatMessage({\n id: 'global.details',\n defaultMessage: 'Details',\n })}\n </Typography>\n </Box>\n <Box>\n <Typography variant=\"pi\" textColor=\"neutral600\">\n {formatMessage({\n id: 'Settings.roles.form.description',\n defaultMessage: 'Name and description of the role',\n })}\n </Typography>\n </Box>\n </Box>\n <UsersRoleNumber>\n {formatMessage(\n {\n id: 'Settings.roles.form.button.users-with-role',\n defaultMessage:\n '{number, plural, =0 {# users} one {# user} other {# users}} with this role',\n },\n { number: 0 }\n )}\n </UsersRoleNumber>\n </Flex>\n <Grid gap={4}>\n <GridItem col={6}>\n <TextInput\n name=\"name\"\n error={errors.name && formatMessage({ id: errors.name })}\n label={formatMessage({\n id: 'global.name',\n defaultMessage: 'Name',\n })}\n onChange={handleChange}\n required\n value={values.name}\n />\n </GridItem>\n <GridItem col={6}>\n <Textarea\n label={formatMessage({\n id: 'global.description',\n defaultMessage: 'Description',\n })}\n id=\"description\"\n error={errors.description && formatMessage({ id: errors.description })}\n onChange={handleChange}\n >\n {values.description}\n </Textarea>\n </GridItem>\n </Grid>\n </Flex>\n </Box>\n <Box shadow=\"filterShadow\" hasRadius>\n <Permissions\n isFormDisabled={false}\n ref={permissionsRef}\n permissions={rolePermissions}\n layout={permissionsLayout}\n />\n </Box>\n </Flex>\n </ContentLayout>\n </>\n </Form>\n )}\n </Formik>\n </Main>\n );\n};\n\nconst UsersRoleNumber = styled.div`\n border: 1px solid ${({ theme }) => theme.colors.primary200};\n background: ${({ theme }) => theme.colors.primary100};\n padding: ${({ theme }) => `${theme.spaces[2]} ${theme.spaces[4]}`};\n color: ${({ theme }) => theme.colors.primary600};\n border-radius: ${({ theme }) => theme.borderRadius};\n font-size: ${12 / 16}rem;\n font-weight: bold;\n`;\n\n/* -------------------------------------------------------------------------------------------------\n * ProtectedCreatePage\n * -----------------------------------------------------------------------------------------------*/\n\nconst ProtectedCreatePage = () => {\n const permissions = useTypedSelector(\n (state) => state.admin_app.permissions.settings?.roles.create\n );\n\n return (\n <Page.Protect permissions={permissions}>\n <CreatePage />\n </Page.Protect>\n );\n};\n\nexport { CreatePage, ProtectedCreatePage };\n"],"names":["yup","translatedErrors","useMatch","useNotification","useIntl","useNavigate","React","useTracking","useAPIErrorHandler","useGetRolePermissionLayoutQuery","useGetRolePermissionsQuery","useCreateRoleMutation","useUpdateRolePermissionsMutation","isBaseQueryError","jsx","Page","Main","Helmet","Formik","format","Form","jsxs","Fragment","HeaderLayout","Flex","Button","BackButton","ContentLayout","Box","Typography","Grid","GridItem","TextInput","Textarea","Permissions","styled","useTypedSelector"],"mappings":"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"}
1
+ {"version":3,"file":"CreatePage-h9gJgINE.js","sources":["../../admin/src/pages/Settings/pages/Roles/CreatePage.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport {\n Box,\n Button,\n ContentLayout,\n Flex,\n Grid,\n GridItem,\n HeaderLayout,\n Main,\n Textarea,\n TextInput,\n Typography,\n} from '@strapi/design-system';\nimport { format } from 'date-fns';\nimport { Formik, Form, FormikHelpers } from 'formik';\nimport { Helmet } from 'react-helmet';\nimport { useIntl } from 'react-intl';\nimport { useNavigate, useMatch } from 'react-router-dom';\nimport styled from 'styled-components';\nimport * as yup from 'yup';\n\nimport { Page } from '../../../../components/PageHelpers';\nimport { useTypedSelector } from '../../../../core/store/hooks';\nimport { BackButton } from '../../../../features/BackButton';\nimport { useNotification } from '../../../../features/Notifications';\nimport { useTracking } from '../../../../features/Tracking';\nimport { useAPIErrorHandler } from '../../../../hooks/useAPIErrorHandler';\nimport {\n useCreateRoleMutation,\n useGetRolePermissionLayoutQuery,\n useGetRolePermissionsQuery,\n useUpdateRolePermissionsMutation,\n} from '../../../../services/users';\nimport { isBaseQueryError } from '../../../../utils/baseQuery';\nimport { translatedErrors } from '../../../../utils/translatedErrors';\n\nimport { Permissions, PermissionsAPI } from './components/Permissions';\n\n/* -------------------------------------------------------------------------------------------------\n * CreatePage\n * -----------------------------------------------------------------------------------------------*/\n\nconst CREATE_SCHEMA = yup.object().shape({\n name: yup.string().required(translatedErrors.required.id),\n description: yup.string().required(translatedErrors.required.id),\n});\n\n/**\n * TODO: be nice if we could just infer this from the schema\n */\ninterface CreateRoleFormValues {\n name: string;\n description: string;\n}\n\n/**\n * TODO: this whole section of the app needs refactoring. Using a ref to\n * manage the state of the child is nonsensical.\n */\nconst CreatePage = () => {\n const match = useMatch('/settings/roles/duplicate/:id');\n const { toggleNotification } = useNotification();\n const { formatMessage } = useIntl();\n const navigate = useNavigate();\n const permissionsRef = React.useRef<PermissionsAPI>(null);\n const { trackUsage } = useTracking();\n const {\n _unstableFormatAPIError: formatAPIError,\n _unstableFormatValidationErrors: formatValidationErrors,\n } = useAPIErrorHandler();\n\n const id = match?.params.id ?? null;\n\n const { isLoading: isLoadingPermissionsLayout, data: permissionsLayout } =\n useGetRolePermissionLayoutQuery({\n /**\n * Role here is a query param so if there's no role we pass an empty string\n * which returns us a default layout.\n */\n role: id ?? '',\n });\n\n /**\n * We need this so if we're cloning a role, we can fetch\n * the current permissions that role has.\n */\n const { data: rolePermissions, isLoading: isLoadingRole } = useGetRolePermissionsQuery(\n {\n id: id!,\n },\n {\n skip: !id,\n refetchOnMountOrArgChange: true,\n }\n );\n\n const [createRole] = useCreateRoleMutation();\n const [updateRolePermissions] = useUpdateRolePermissionsMutation();\n\n const handleCreateRoleSubmit = async (\n data: CreateRoleFormValues,\n formik: FormikHelpers<CreateRoleFormValues>\n ) => {\n try {\n if (id) {\n trackUsage('willDuplicateRole');\n } else {\n trackUsage('willCreateNewRole');\n }\n\n const res = await createRole(data);\n\n if ('error' in res) {\n if (isBaseQueryError(res.error) && res.error.name === 'ValidationError') {\n formik.setErrors(formatValidationErrors(res.error));\n } else {\n toggleNotification({\n type: 'danger',\n message: formatAPIError(res.error),\n });\n }\n\n return;\n }\n\n const { permissionsToSend } = permissionsRef.current?.getPermissions() ?? {};\n\n if (res.data.id && Array.isArray(permissionsToSend) && permissionsToSend.length > 0) {\n const updateRes = await updateRolePermissions({\n id: res.data.id,\n permissions: permissionsToSend,\n });\n\n if ('error' in updateRes) {\n if (isBaseQueryError(updateRes.error) && updateRes.error.name === 'ValidationError') {\n formik.setErrors(formatValidationErrors(updateRes.error));\n } else {\n toggleNotification({\n type: 'danger',\n message: formatAPIError(updateRes.error),\n });\n }\n\n return;\n }\n }\n\n toggleNotification({\n type: 'success',\n message: formatMessage({ id: 'Settings.roles.created', defaultMessage: 'created' }),\n });\n\n navigate(res.data.id.toString(), { replace: true });\n } catch (err) {\n toggleNotification({\n type: 'danger',\n message: formatMessage({ id: 'notification.error', defaultMessage: 'An error occurred' }),\n });\n }\n };\n\n if ((isLoadingPermissionsLayout && isLoadingRole) || !permissionsLayout) {\n return <Page.Loading />;\n }\n\n return (\n <Main>\n <Helmet\n title={formatMessage(\n { id: 'Settings.PageTitle', defaultMessage: 'Settings - {name}' },\n {\n name: 'Roles',\n }\n )}\n />\n <Formik\n initialValues={\n {\n name: '',\n description: `${formatMessage({\n id: 'Settings.roles.form.created',\n defaultMessage: 'Created',\n })} ${format(new Date(), 'PPP')}`,\n } satisfies CreateRoleFormValues\n }\n onSubmit={handleCreateRoleSubmit}\n validationSchema={CREATE_SCHEMA}\n validateOnChange={false}\n >\n {({ values, errors, handleReset, handleChange, isSubmitting }) => (\n <Form>\n <>\n <HeaderLayout\n primaryAction={\n <Flex gap={2}>\n <Button\n variant=\"secondary\"\n onClick={() => {\n handleReset();\n permissionsRef.current?.resetForm();\n }}\n size=\"L\"\n >\n {formatMessage({\n id: 'app.components.Button.reset',\n defaultMessage: 'Reset',\n })}\n </Button>\n <Button type=\"submit\" loading={isSubmitting} size=\"L\">\n {formatMessage({\n id: 'global.save',\n defaultMessage: 'Save',\n })}\n </Button>\n </Flex>\n }\n title={formatMessage({\n id: 'Settings.roles.create.title',\n defaultMessage: 'Create a role',\n })}\n subtitle={formatMessage({\n id: 'Settings.roles.create.description',\n defaultMessage: 'Define the rights given to the role',\n })}\n navigationAction={<BackButton />}\n />\n <ContentLayout>\n <Flex direction=\"column\" alignItems=\"stretch\" gap={6}>\n <Box background=\"neutral0\" padding={6} shadow=\"filterShadow\" hasRadius>\n <Flex direction=\"column\" alignItems=\"stretch\" gap={4}>\n <Flex justifyContent=\"space-between\">\n <Box>\n <Box>\n <Typography fontWeight=\"bold\">\n {formatMessage({\n id: 'global.details',\n defaultMessage: 'Details',\n })}\n </Typography>\n </Box>\n <Box>\n <Typography variant=\"pi\" textColor=\"neutral600\">\n {formatMessage({\n id: 'Settings.roles.form.description',\n defaultMessage: 'Name and description of the role',\n })}\n </Typography>\n </Box>\n </Box>\n <UsersRoleNumber>\n {formatMessage(\n {\n id: 'Settings.roles.form.button.users-with-role',\n defaultMessage:\n '{number, plural, =0 {# users} one {# user} other {# users}} with this role',\n },\n { number: 0 }\n )}\n </UsersRoleNumber>\n </Flex>\n <Grid gap={4}>\n <GridItem col={6}>\n <TextInput\n name=\"name\"\n error={errors.name && formatMessage({ id: errors.name })}\n label={formatMessage({\n id: 'global.name',\n defaultMessage: 'Name',\n })}\n onChange={handleChange}\n required\n value={values.name}\n />\n </GridItem>\n <GridItem col={6}>\n <Textarea\n label={formatMessage({\n id: 'global.description',\n defaultMessage: 'Description',\n })}\n id=\"description\"\n error={errors.description && formatMessage({ id: errors.description })}\n onChange={handleChange}\n >\n {values.description}\n </Textarea>\n </GridItem>\n </Grid>\n </Flex>\n </Box>\n <Box shadow=\"filterShadow\" hasRadius>\n <Permissions\n isFormDisabled={false}\n ref={permissionsRef}\n permissions={rolePermissions}\n layout={permissionsLayout}\n />\n </Box>\n </Flex>\n </ContentLayout>\n </>\n </Form>\n )}\n </Formik>\n </Main>\n );\n};\n\nconst UsersRoleNumber = styled.div`\n border: 1px solid ${({ theme }) => theme.colors.primary200};\n background: ${({ theme }) => theme.colors.primary100};\n padding: ${({ theme }) => `${theme.spaces[2]} ${theme.spaces[4]}`};\n color: ${({ theme }) => theme.colors.primary600};\n border-radius: ${({ theme }) => theme.borderRadius};\n font-size: ${12 / 16}rem;\n font-weight: bold;\n`;\n\n/* -------------------------------------------------------------------------------------------------\n * ProtectedCreatePage\n * -----------------------------------------------------------------------------------------------*/\n\nconst ProtectedCreatePage = () => {\n const permissions = useTypedSelector(\n (state) => state.admin_app.permissions.settings?.roles.create\n );\n\n return (\n <Page.Protect permissions={permissions}>\n <CreatePage />\n </Page.Protect>\n );\n};\n\nexport { CreatePage, ProtectedCreatePage };\n"],"names":["yup","translatedErrors","useMatch","useNotification","useIntl","useNavigate","React","useTracking","useAPIErrorHandler","useGetRolePermissionLayoutQuery","useGetRolePermissionsQuery","useCreateRoleMutation","useUpdateRolePermissionsMutation","isBaseQueryError","jsx","Page","Main","Helmet","Formik","format","Form","jsxs","Fragment","HeaderLayout","Flex","Button","BackButton","ContentLayout","Box","Typography","Grid","GridItem","TextInput","Textarea","Permissions","styled","useTypedSelector"],"mappings":"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"}