@strapi/admin 4.15.5 → 4.16.0

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 (226) hide show
  1. package/dist/_chunks/{AuthenticatedApp-61dfdab8.js → AuthenticatedApp-12b0b80d.js} +23 -23
  2. package/dist/_chunks/{AuthenticatedApp-61dfdab8.js.map → AuthenticatedApp-12b0b80d.js.map} +1 -1
  3. package/dist/_chunks/{AuthenticatedApp-da1595e9.mjs → AuthenticatedApp-2b5530b9.mjs} +23 -23
  4. package/dist/_chunks/{AuthenticatedApp-da1595e9.mjs.map → AuthenticatedApp-2b5530b9.mjs.map} +1 -1
  5. package/dist/_chunks/{HomePage-48934b34.js → HomePage-3ad80266.js} +4 -4
  6. package/dist/_chunks/{HomePage-48934b34.js.map → HomePage-3ad80266.js.map} +1 -1
  7. package/dist/_chunks/{HomePage-f3052b59.js → HomePage-763d3a5f.js} +4 -4
  8. package/dist/_chunks/{HomePage-f3052b59.js.map → HomePage-763d3a5f.js.map} +1 -1
  9. package/dist/_chunks/{HomePage-2690d237.mjs → HomePage-93e2ba01.mjs} +4 -4
  10. package/dist/_chunks/{HomePage-2690d237.mjs.map → HomePage-93e2ba01.mjs.map} +1 -1
  11. package/dist/_chunks/{HomePage-3792b299.mjs → HomePage-f6a78451.mjs} +4 -4
  12. package/dist/_chunks/{HomePage-3792b299.mjs.map → HomePage-f6a78451.mjs.map} +1 -1
  13. package/dist/_chunks/{InstalledPluginsPage-3bd06321.mjs → InstalledPluginsPage-83eaebad.mjs} +3 -3
  14. package/dist/_chunks/{InstalledPluginsPage-3bd06321.mjs.map → InstalledPluginsPage-83eaebad.mjs.map} +1 -1
  15. package/dist/_chunks/{InstalledPluginsPage-da0780c1.js → InstalledPluginsPage-e3d10fcd.js} +3 -3
  16. package/dist/_chunks/{InstalledPluginsPage-da0780c1.js.map → InstalledPluginsPage-e3d10fcd.js.map} +1 -1
  17. package/dist/_chunks/{Login-ab4b47ad.js → Login-a48df094.js} +2 -2
  18. package/dist/_chunks/{Login-ab4b47ad.js.map → Login-a48df094.js.map} +1 -1
  19. package/dist/_chunks/{Login-8f68c65a.mjs → Login-e12abb16.mjs} +2 -2
  20. package/dist/_chunks/{Login-8f68c65a.mjs.map → Login-e12abb16.mjs.map} +1 -1
  21. package/dist/_chunks/{MarketplacePage-935fca72.js → MarketplacePage-193e4eca.js} +3 -3
  22. package/dist/_chunks/{MarketplacePage-935fca72.js.map → MarketplacePage-193e4eca.js.map} +1 -1
  23. package/dist/_chunks/{MarketplacePage-95af86bb.mjs → MarketplacePage-b1679fa5.mjs} +3 -3
  24. package/dist/_chunks/{MarketplacePage-95af86bb.mjs.map → MarketplacePage-b1679fa5.mjs.map} +1 -1
  25. package/dist/_chunks/{ProfilePage-20de1b54.mjs → ProfilePage-3858db75.mjs} +3 -3
  26. package/dist/_chunks/{ProfilePage-20de1b54.mjs.map → ProfilePage-3858db75.mjs.map} +1 -1
  27. package/dist/_chunks/{ProfilePage-b8b29c4d.js → ProfilePage-4a1eb00d.js} +3 -3
  28. package/dist/_chunks/{ProfilePage-b8b29c4d.js.map → ProfilePage-4a1eb00d.js.map} +1 -1
  29. package/dist/_chunks/{SalesPage-c5cbb366.js → SalesPage-4a0a68fb.js} +2 -2
  30. package/dist/_chunks/SalesPage-4a0a68fb.js.map +1 -0
  31. package/dist/_chunks/{SalesPage-c7c94c3f.mjs → SalesPage-fceedf48.mjs} +2 -2
  32. package/dist/_chunks/{SalesPage-c7c94c3f.mjs.map → SalesPage-fceedf48.mjs.map} +1 -1
  33. package/dist/_chunks/{build-92e15b93.mjs → build-1026ce7c.mjs} +2 -2
  34. package/dist/_chunks/{build-92e15b93.mjs.map → build-1026ce7c.mjs.map} +1 -1
  35. package/dist/_chunks/{build-df2f219f.js → build-d99bcc06.js} +2 -2
  36. package/dist/_chunks/{build-df2f219f.js.map → build-d99bcc06.js.map} +1 -1
  37. package/dist/_chunks/{constants-db792b94.mjs → constants-481b3914.mjs} +3 -3
  38. package/dist/_chunks/{constants-db792b94.mjs.map → constants-481b3914.mjs.map} +1 -1
  39. package/dist/_chunks/{constants-797ada28.js → constants-49d63c92.js} +6 -6
  40. package/dist/_chunks/{constants-797ada28.js.map → constants-49d63c92.js.map} +1 -1
  41. package/dist/_chunks/{constants-008a1527.js → constants-5fd54815.js} +5 -5
  42. package/dist/_chunks/{constants-008a1527.js.map → constants-5fd54815.js.map} +1 -1
  43. package/dist/_chunks/{constants-278adc05.mjs → constants-6876b155.mjs} +6 -6
  44. package/dist/_chunks/{constants-278adc05.mjs.map → constants-6876b155.mjs.map} +1 -1
  45. package/dist/_chunks/{constants-1d345364.mjs → constants-8bdc91a9.mjs} +5 -5
  46. package/dist/_chunks/{constants-1d345364.mjs.map → constants-8bdc91a9.mjs.map} +1 -1
  47. package/dist/_chunks/{constants-29d123f8.mjs → constants-b0bc030f.mjs} +2 -2
  48. package/dist/_chunks/{constants-29d123f8.mjs.map → constants-b0bc030f.mjs.map} +1 -1
  49. package/dist/_chunks/{constants-ec71917d.js → constants-dd4a9742.js} +3 -3
  50. package/dist/_chunks/{constants-ec71917d.js.map → constants-dd4a9742.js.map} +1 -1
  51. package/dist/_chunks/{constants-4be682e5.js → constants-fac0ce8c.js} +2 -2
  52. package/dist/_chunks/{constants-4be682e5.js.map → constants-fac0ce8c.js.map} +1 -1
  53. package/dist/_chunks/{develop-a46fed01.mjs → develop-72394876.mjs} +2 -2
  54. package/dist/_chunks/{develop-a46fed01.mjs.map → develop-72394876.mjs.map} +1 -1
  55. package/dist/_chunks/{develop-4d25a6e0.js → develop-da585b1e.js} +2 -2
  56. package/dist/_chunks/{develop-4d25a6e0.js.map → develop-da585b1e.js.map} +1 -1
  57. package/dist/_chunks/{index-40d047a8.mjs → index-0dcabbdd.mjs} +3 -3
  58. package/dist/_chunks/{index-40d047a8.mjs.map → index-0dcabbdd.mjs.map} +1 -1
  59. package/dist/_chunks/{index-1ebd9d8c.mjs → index-1d2a74ca.mjs} +5 -5
  60. package/dist/_chunks/{index-1ebd9d8c.mjs.map → index-1d2a74ca.mjs.map} +1 -1
  61. package/dist/_chunks/{index-f5b276a8.mjs → index-1ddec644.mjs} +21 -21
  62. package/dist/_chunks/{index-f5b276a8.mjs.map → index-1ddec644.mjs.map} +1 -1
  63. package/dist/_chunks/{index-a9625818.mjs → index-1eef7482.mjs} +5 -5
  64. package/dist/_chunks/{index-a9625818.mjs.map → index-1eef7482.mjs.map} +1 -1
  65. package/dist/_chunks/{index-834fad5c.mjs → index-20454411.mjs} +5 -5
  66. package/dist/_chunks/{index-834fad5c.mjs.map → index-20454411.mjs.map} +1 -1
  67. package/dist/_chunks/{index-40495ca1.mjs → index-296f0769.mjs} +2 -2
  68. package/dist/_chunks/{index-40495ca1.mjs.map → index-296f0769.mjs.map} +1 -1
  69. package/dist/_chunks/{index-d2b3c398.mjs → index-34233ee7.mjs} +3 -3
  70. package/dist/_chunks/{index-d2b3c398.mjs.map → index-34233ee7.mjs.map} +1 -1
  71. package/dist/_chunks/{index-924a1288.js → index-42a0b19b.js} +3 -3
  72. package/dist/_chunks/{index-924a1288.js.map → index-42a0b19b.js.map} +1 -1
  73. package/dist/_chunks/{index-dc89c18c.mjs → index-49b7e6ff.mjs} +8 -4
  74. package/dist/_chunks/index-49b7e6ff.mjs.map +1 -0
  75. package/dist/_chunks/{index-bc709e72.js → index-4ac37d7c.js} +3 -3
  76. package/dist/_chunks/{index-bc709e72.js.map → index-4ac37d7c.js.map} +1 -1
  77. package/dist/_chunks/{index-0fbbca7a.js → index-4ff0e245.js} +3 -3
  78. package/dist/_chunks/{index-0fbbca7a.js.map → index-4ff0e245.js.map} +1 -1
  79. package/dist/_chunks/{index-cbf9952d.js → index-526ea946.js} +2 -2
  80. package/dist/_chunks/{index-cbf9952d.js.map → index-526ea946.js.map} +1 -1
  81. package/dist/_chunks/{index-1932eedf.mjs → index-55f565cf.mjs} +3 -3
  82. package/dist/_chunks/{index-1932eedf.mjs.map → index-55f565cf.mjs.map} +1 -1
  83. package/dist/_chunks/{index-e34335f1.js → index-56cc01e0.js} +3 -3
  84. package/dist/_chunks/{index-e34335f1.js.map → index-56cc01e0.js.map} +1 -1
  85. package/dist/_chunks/{index-51986071.mjs → index-5d044c87.mjs} +3 -3
  86. package/dist/_chunks/{index-51986071.mjs.map → index-5d044c87.mjs.map} +1 -1
  87. package/dist/_chunks/{index-3c693658.mjs → index-5d14fd43.mjs} +3 -3
  88. package/dist/_chunks/{index-3c693658.mjs.map → index-5d14fd43.mjs.map} +1 -1
  89. package/dist/_chunks/{index-f3e7f8cc.mjs → index-5e9a93b3.mjs} +4 -4
  90. package/dist/_chunks/{index-f3e7f8cc.mjs.map → index-5e9a93b3.mjs.map} +1 -1
  91. package/dist/_chunks/{index-46c3ee85.mjs → index-60941eee.mjs} +3 -3
  92. package/dist/_chunks/{index-46c3ee85.mjs.map → index-60941eee.mjs.map} +1 -1
  93. package/dist/_chunks/{index-9c26fffe.js → index-60e19de0.js} +4 -4
  94. package/dist/_chunks/{index-9c26fffe.js.map → index-60e19de0.js.map} +1 -1
  95. package/dist/_chunks/{index-003c2cab.mjs → index-6757c461.mjs} +5 -5
  96. package/dist/_chunks/{index-003c2cab.mjs.map → index-6757c461.mjs.map} +1 -1
  97. package/dist/_chunks/{index-b42866c5.mjs → index-69dbf2cf.mjs} +2 -2
  98. package/dist/_chunks/{index-b42866c5.mjs.map → index-69dbf2cf.mjs.map} +1 -1
  99. package/dist/_chunks/{index-035f8c59.js → index-71c88425.js} +3 -3
  100. package/dist/_chunks/{index-035f8c59.js.map → index-71c88425.js.map} +1 -1
  101. package/dist/_chunks/{index-f7cf652c.js → index-74601a9b.js} +4 -4
  102. package/dist/_chunks/{index-f7cf652c.js.map → index-74601a9b.js.map} +1 -1
  103. package/dist/_chunks/{index-cc38783c.mjs → index-7e31e982.mjs} +3 -3
  104. package/dist/_chunks/{index-cc38783c.mjs.map → index-7e31e982.mjs.map} +1 -1
  105. package/dist/_chunks/{index-787a0db6.js → index-8759f1d9.js} +5 -5
  106. package/dist/_chunks/{index-787a0db6.js.map → index-8759f1d9.js.map} +1 -1
  107. package/dist/_chunks/{index-f55a69e7.mjs → index-89a1d72c.mjs} +4 -4
  108. package/dist/_chunks/{index-f55a69e7.mjs.map → index-89a1d72c.mjs.map} +1 -1
  109. package/dist/_chunks/{index-0ed05075.js → index-8b79ee6c.js} +14 -8
  110. package/dist/_chunks/{index-0ed05075.js.map → index-8b79ee6c.js.map} +1 -1
  111. package/dist/_chunks/{index-154693de.mjs → index-8c5b4bda.mjs} +3 -3
  112. package/dist/_chunks/{index-154693de.mjs.map → index-8c5b4bda.mjs.map} +1 -1
  113. package/dist/_chunks/{index-7bfab5f5.js → index-912140fa.js} +4 -4
  114. package/dist/_chunks/{index-7bfab5f5.js.map → index-912140fa.js.map} +1 -1
  115. package/dist/_chunks/{index-eebad65d.js → index-947668f7.js} +3 -3
  116. package/dist/_chunks/{index-eebad65d.js.map → index-947668f7.js.map} +1 -1
  117. package/dist/_chunks/{index-8e034257.mjs → index-95d9bcb0.mjs} +3 -3
  118. package/dist/_chunks/{index-8e034257.mjs.map → index-95d9bcb0.mjs.map} +1 -1
  119. package/dist/_chunks/{index-56b499fb.mjs → index-98221317.mjs} +5 -5
  120. package/dist/_chunks/{index-56b499fb.mjs.map → index-98221317.mjs.map} +1 -1
  121. package/dist/_chunks/{index-6797e259.mjs → index-9881aa54.mjs} +3 -3
  122. package/dist/_chunks/{index-6797e259.mjs.map → index-9881aa54.mjs.map} +1 -1
  123. package/dist/_chunks/{index-9304d6de.js → index-9d98e8b2.js} +511 -475
  124. package/dist/_chunks/index-9d98e8b2.js.map +1 -0
  125. package/dist/_chunks/{index-97a59f73.js → index-9ebd4c75.js} +4 -4
  126. package/dist/_chunks/{index-97a59f73.js.map → index-9ebd4c75.js.map} +1 -1
  127. package/dist/_chunks/{index-b6ee936b.mjs → index-9f08bcc3.mjs} +14 -8
  128. package/dist/_chunks/{index-b6ee936b.mjs.map → index-9f08bcc3.mjs.map} +1 -1
  129. package/dist/_chunks/{index-eaff38ba.js → index-a1707d3b.js} +3 -3
  130. package/dist/_chunks/{index-eaff38ba.js.map → index-a1707d3b.js.map} +1 -1
  131. package/dist/_chunks/{index-039f8e26.mjs → index-a61e2ef0.mjs} +4 -4
  132. package/dist/_chunks/{index-039f8e26.mjs.map → index-a61e2ef0.mjs.map} +1 -1
  133. package/dist/_chunks/{index-b2d4d126.js → index-a8c829e4.js} +5 -5
  134. package/dist/_chunks/{index-b2d4d126.js.map → index-a8c829e4.js.map} +1 -1
  135. package/dist/_chunks/{index-72494b79.js → index-a9574ead.js} +3 -3
  136. package/dist/_chunks/{index-72494b79.js.map → index-a9574ead.js.map} +1 -1
  137. package/dist/_chunks/{index-9118a940.mjs → index-a98002b5.mjs} +4 -4
  138. package/dist/_chunks/{index-9118a940.mjs.map → index-a98002b5.mjs.map} +1 -1
  139. package/dist/_chunks/{index-d9882c45.mjs → index-ad85a00a.mjs} +4 -4
  140. package/dist/_chunks/{index-d9882c45.mjs.map → index-ad85a00a.mjs.map} +1 -1
  141. package/dist/_chunks/{index-bde05e9e.mjs → index-b6e7426d.mjs} +3 -3
  142. package/dist/_chunks/{index-bde05e9e.mjs.map → index-b6e7426d.mjs.map} +1 -1
  143. package/dist/_chunks/{index-46138ec7.mjs → index-bcafdc00.mjs} +4 -4
  144. package/dist/_chunks/{index-46138ec7.mjs.map → index-bcafdc00.mjs.map} +1 -1
  145. package/dist/_chunks/{index-a6f1ccf6.mjs → index-bd42fb77.mjs} +6 -6
  146. package/dist/_chunks/{index-a6f1ccf6.mjs.map → index-bd42fb77.mjs.map} +1 -1
  147. package/dist/_chunks/{index-bac648de.js → index-bdb23c76.js} +5 -5
  148. package/dist/_chunks/{index-bac648de.js.map → index-bdb23c76.js.map} +1 -1
  149. package/dist/_chunks/{index-81509193.mjs → index-c0f59e46.mjs} +513 -477
  150. package/dist/_chunks/index-c0f59e46.mjs.map +1 -0
  151. package/dist/_chunks/{index-557e0c47.js → index-c8be54b1.js} +2 -2
  152. package/dist/_chunks/{index-557e0c47.js.map → index-c8be54b1.js.map} +1 -1
  153. package/dist/_chunks/{index-345c0ae9.js → index-c8f0ea8f.js} +6 -6
  154. package/dist/_chunks/{index-345c0ae9.js.map → index-c8f0ea8f.js.map} +1 -1
  155. package/dist/_chunks/{index-f7dbd21b.js → index-caa6ed37.js} +2 -2
  156. package/dist/_chunks/{index-f7dbd21b.js.map → index-caa6ed37.js.map} +1 -1
  157. package/dist/_chunks/{index-25975989.js → index-ccae5f17.js} +4 -4
  158. package/dist/_chunks/{index-25975989.js.map → index-ccae5f17.js.map} +1 -1
  159. package/dist/_chunks/{index-d5f569ab.js → index-cf24d5a0.js} +5 -5
  160. package/dist/_chunks/{index-d5f569ab.js.map → index-cf24d5a0.js.map} +1 -1
  161. package/dist/_chunks/{index-6353193a.mjs → index-d8d56664.mjs} +5 -5
  162. package/dist/_chunks/{index-6353193a.mjs.map → index-d8d56664.mjs.map} +1 -1
  163. package/dist/_chunks/{index-69d47db4.js → index-da64448f.js} +3 -3
  164. package/dist/_chunks/{index-69d47db4.js.map → index-da64448f.js.map} +1 -1
  165. package/dist/_chunks/{index-be3e5f69.mjs → index-e04aafb3.mjs} +2 -2
  166. package/dist/_chunks/{index-be3e5f69.mjs.map → index-e04aafb3.mjs.map} +1 -1
  167. package/dist/_chunks/{index-9f30a92e.js → index-e76dc085.js} +4 -4
  168. package/dist/_chunks/{index-9f30a92e.js.map → index-e76dc085.js.map} +1 -1
  169. package/dist/_chunks/{index-bfb581a2.js → index-eab05381.js} +3 -3
  170. package/dist/_chunks/{index-bfb581a2.js.map → index-eab05381.js.map} +1 -1
  171. package/dist/_chunks/{index-2b22b1a0.js → index-eb720419.js} +5 -5
  172. package/dist/_chunks/{index-2b22b1a0.js.map → index-eb720419.js.map} +1 -1
  173. package/dist/_chunks/{index-4f557234.mjs → index-ebd0c6b2.mjs} +3 -3
  174. package/dist/_chunks/{index-4f557234.mjs.map → index-ebd0c6b2.mjs.map} +1 -1
  175. package/dist/_chunks/{index-e0e235a0.js → index-ef2c6efd.js} +3 -3
  176. package/dist/_chunks/{index-e0e235a0.js.map → index-ef2c6efd.js.map} +1 -1
  177. package/dist/_chunks/{index-1f4afa21.js → index-f09ec538.js} +3 -3
  178. package/dist/_chunks/{index-1f4afa21.js.map → index-f09ec538.js.map} +1 -1
  179. package/dist/_chunks/{index-9f2d5dc8.js → index-f5a00b06.js} +3 -3
  180. package/dist/_chunks/{index-9f2d5dc8.js.map → index-f5a00b06.js.map} +1 -1
  181. package/dist/_chunks/{index-5a5b0567.js → index-f762b27d.js} +21 -21
  182. package/dist/_chunks/{index-5a5b0567.js.map → index-f762b27d.js.map} +1 -1
  183. package/dist/_chunks/{index-f52ae628.mjs → index-faf78cfd.mjs} +3 -3
  184. package/dist/_chunks/{index-f52ae628.mjs.map → index-faf78cfd.mjs.map} +1 -1
  185. package/dist/_chunks/{index-0c9fceff.js → index-ff413b1a.js} +5 -5
  186. package/dist/_chunks/{index-0c9fceff.js.map → index-ff413b1a.js.map} +1 -1
  187. package/dist/_chunks/{index-1a74fa41.js → index-ffd2f664.js} +8 -4
  188. package/dist/_chunks/index-ffd2f664.js.map +1 -0
  189. package/dist/_chunks/{ru-d43423ea.mjs → ru-9aad40c5.mjs} +91 -42
  190. package/dist/_chunks/{ru-d43423ea.mjs.map → ru-9aad40c5.mjs.map} +1 -1
  191. package/dist/_chunks/{ru-07958f09.js → ru-c0293425.js} +91 -42
  192. package/dist/_chunks/{ru-07958f09.js.map → ru-c0293425.js.map} +1 -1
  193. package/dist/_chunks/{schema-a7f695ae.mjs → schema-da392e23.mjs} +2 -2
  194. package/dist/_chunks/{schema-a7f695ae.mjs.map → schema-da392e23.mjs.map} +1 -1
  195. package/dist/_chunks/{schema-15e33d1c.js → schema-e8bfd9c4.js} +2 -2
  196. package/dist/_chunks/{schema-15e33d1c.js.map → schema-e8bfd9c4.js.map} +1 -1
  197. package/dist/_chunks/{validateWorkflow-6b5dffaf.js → validateWorkflow-34ccfb57.js} +3 -3
  198. package/dist/_chunks/{validateWorkflow-6b5dffaf.js.map → validateWorkflow-34ccfb57.js.map} +1 -1
  199. package/dist/_chunks/{validateWorkflow-2f84e76e.mjs → validateWorkflow-67154f59.mjs} +3 -3
  200. package/dist/_chunks/{validateWorkflow-2f84e76e.mjs.map → validateWorkflow-67154f59.mjs.map} +1 -1
  201. package/dist/admin/index.js +1 -1
  202. package/dist/admin/index.mjs +1 -1
  203. package/dist/admin/src/content-manager/components/BlocksInput/BlocksContent.d.ts +5 -0
  204. package/dist/admin/src/content-manager/components/BlocksInput/BlocksEditor.d.ts +34 -0
  205. package/dist/admin/src/content-manager/components/BlocksInput/BlocksInput.d.ts +18 -0
  206. package/dist/admin/src/content-manager/components/BlocksInput/BlocksToolbar.d.ts +2 -0
  207. package/dist/admin/src/content-manager/components/BlocksInput/hooks/useBlocksStore.d.ts +32 -0
  208. package/dist/admin/src/content-manager/components/BlocksInput/hooks/useModifiersStore.d.ts +20 -0
  209. package/dist/admin/src/content-manager/components/BlocksInput/plugins/withLinks.d.ts +8 -0
  210. package/dist/admin/src/content-manager/components/BlocksInput/plugins/withStrapiSchema.d.ts +8 -0
  211. package/dist/admin/src/content-manager/components/BlocksInput/tests/mock-schema.d.ts +2 -0
  212. package/dist/admin/src/content-manager/components/BlocksInput/utils/links.d.ts +10 -0
  213. package/dist/admin/src/content-manager/components/BlocksInput/utils/types.d.ts +6 -0
  214. package/dist/admin/src/hooks/useAdminUsers.d.ts +3 -3
  215. package/dist/admin/src/index.d.ts +1 -0
  216. package/dist/admin/src/render.d.ts +3 -1
  217. package/dist/cli.js +1 -1
  218. package/dist/cli.mjs +1 -1
  219. package/package.json +14 -14
  220. package/server/services/__tests__/user.test.js +15 -0
  221. package/server/services/user.js +1 -4
  222. package/dist/_chunks/SalesPage-c5cbb366.js.map +0 -1
  223. package/dist/_chunks/index-1a74fa41.js.map +0 -1
  224. package/dist/_chunks/index-81509193.mjs.map +0 -1
  225. package/dist/_chunks/index-9304d6de.js.map +0 -1
  226. package/dist/_chunks/index-dc89c18c.mjs.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"index-bc709e72.js","sources":["../../admin/src/pages/SettingsPage/pages/Roles/ListPage/components/EmptyRole/index.js","../../admin/src/pages/SettingsPage/pages/Roles/ListPage/components/RoleRow/index.js","../../admin/src/pages/SettingsPage/pages/Roles/ListPage/reducer.js","../../admin/src/pages/SettingsPage/pages/Roles/ListPage/index.js","../../admin/src/pages/SettingsPage/pages/Roles/ProtectedListPage/index.js"],"sourcesContent":["export default () => 'todo empty role';\n","import React from 'react';\n\nimport { Box, Flex, IconButton, Td, Tr, Typography } from '@strapi/design-system';\nimport { onRowClick, pxToRem, stopPropagation } from '@strapi/helper-plugin';\nimport PropTypes from 'prop-types';\nimport { useIntl } from 'react-intl';\n\nconst RoleRow = ({ id, name, description, usersCount, icons, rowIndex, canUpdate }) => {\n const { formatMessage } = useIntl();\n const [, editObject] = icons;\n\n const usersCountText = formatMessage(\n {\n id: `Roles.RoleRow.user-count`,\n defaultMessage: '{number, plural, =0 {# user} one {# user} other {# users}}',\n },\n { number: usersCount }\n );\n\n return (\n <Tr\n aria-rowindex={rowIndex}\n key={id}\n {...(canUpdate\n ? onRowClick({\n fn: editObject.onClick,\n })\n : {})}\n >\n <Td maxWidth={pxToRem(130)}>\n <Typography ellipsis textColor=\"neutral800\">\n {name}\n </Typography>\n </Td>\n <Td maxWidth={pxToRem(250)}>\n <Typography ellipsis textColor=\"neutral800\">\n {description}\n </Typography>\n </Td>\n <Td>\n <Typography textColor=\"neutral800\">{usersCountText}</Typography>\n </Td>\n <Td>\n <Flex justifyContent=\"flex-end\" {...stopPropagation}>\n {icons.map((icon, i) =>\n icon ? (\n <Box key={icon.label} paddingLeft={i === 0 ? 0 : 1}>\n <IconButton onClick={icon.onClick} label={icon.label} noBorder icon={icon.icon} />\n </Box>\n ) : null\n )}\n </Flex>\n </Td>\n </Tr>\n );\n};\n\nRoleRow.propTypes = {\n id: PropTypes.number.isRequired,\n name: PropTypes.string.isRequired,\n description: PropTypes.string.isRequired,\n usersCount: PropTypes.number.isRequired,\n icons: PropTypes.array.isRequired,\n rowIndex: PropTypes.number.isRequired,\n canUpdate: PropTypes.bool,\n};\n\nRoleRow.defaultProps = {\n canUpdate: false,\n};\n\nexport default RoleRow;\n","/* eslint-disable consistent-return */\nimport produce from 'immer';\n\nexport const initialState = {\n roleToDelete: null,\n showModalConfirmButtonLoading: false,\n shouldRefetchData: false,\n};\n\nconst reducer = (state, action) =>\n produce(state, (draftState) => {\n switch (action.type) {\n case 'ON_REMOVE_ROLES': {\n draftState.showModalConfirmButtonLoading = true;\n break;\n }\n case 'ON_REMOVE_ROLES_SUCCEEDED': {\n draftState.shouldRefetchData = true;\n draftState.roleToDelete = null;\n break;\n }\n case 'RESET_DATA_TO_DELETE': {\n draftState.shouldRefetchData = false;\n draftState.roleToDelete = null;\n draftState.showModalConfirmButtonLoading = false;\n break;\n }\n case 'SET_ROLE_TO_DELETE': {\n draftState.roleToDelete = action.id;\n\n break;\n }\n default:\n return draftState;\n }\n });\n\nexport default reducer;\n","import React, { useCallback, useReducer, useState } from 'react';\n\nimport {\n ActionLayout,\n Button,\n ContentLayout,\n HeaderLayout,\n Main,\n Table,\n Tbody,\n TFooter,\n Th,\n Thead,\n Tr,\n Typography,\n VisuallyHidden,\n} from '@strapi/design-system';\nimport {\n ConfirmDialog,\n getFetchClient,\n LoadingIndicatorPage,\n SearchURLQuery,\n SettingsPageTitle,\n useAPIErrorHandler,\n useFocusWhenNavigate,\n useQueryParams,\n useNotification,\n useRBAC,\n} from '@strapi/helper-plugin';\nimport { Duplicate, Pencil, Plus, Trash } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\nimport { useSelector } from 'react-redux';\nimport { useHistory } from 'react-router-dom';\n\nimport { useAdminRoles } from '../../../../../hooks/useAdminRoles';\nimport { selectAdminPermissions } from '../../../../../selectors';\n\nimport EmptyRole from './components/EmptyRole';\nimport BaseRoleRow from './components/RoleRow';\nimport reducer, { initialState } from './reducer';\n\nconst useRoleActions = ({ canCreate, canDelete, canUpdate, refetchRoles }) => {\n const { formatMessage } = useIntl();\n const { formatAPIError } = useAPIErrorHandler();\n const toggleNotification = useNotification();\n const [isWarningDeleteAllOpened, setIsWarningDeleteAllOpenend] = useState(false);\n const { push } = useHistory();\n const [{ selectedRoles, showModalConfirmButtonLoading, roleToDelete }, dispatch] = useReducer(\n reducer,\n initialState\n );\n\n const { post } = getFetchClient();\n\n const handleDeleteData = async () => {\n try {\n dispatch({\n type: 'ON_REMOVE_ROLES',\n });\n\n await post('/admin/roles/batch-delete', {\n ids: [roleToDelete],\n });\n\n await refetchRoles();\n\n dispatch({\n type: 'RESET_DATA_TO_DELETE',\n });\n } catch (error) {\n toggleNotification({\n type: 'warning',\n message: formatAPIError(error),\n });\n }\n handleToggleModal();\n };\n\n const onRoleDuplicate = useCallback(\n (id) => {\n push(`/settings/roles/duplicate/${id}`);\n },\n [push]\n );\n\n const handleNewRoleClick = () => push('/settings/roles/new');\n\n const onRoleRemove = useCallback((roleId) => {\n dispatch({\n type: 'SET_ROLE_TO_DELETE',\n id: roleId,\n });\n\n handleToggleModal();\n }, []);\n\n const handleToggleModal = () => setIsWarningDeleteAllOpenend((prev) => !prev);\n\n const handleGoTo = useCallback(\n (id) => {\n push(`/settings/roles/${id}`);\n },\n [push]\n );\n\n const handleClickDelete = useCallback(\n (e, role) => {\n e.preventDefault();\n e.stopPropagation();\n\n if (role.usersCount) {\n toggleNotification({\n type: 'info',\n message: { id: 'Roles.ListPage.notification.delete-not-allowed' },\n });\n } else {\n onRoleRemove(role.id);\n }\n },\n [toggleNotification, onRoleRemove]\n );\n\n const handleClickDuplicate = useCallback(\n (e, role) => {\n e.preventDefault();\n e.stopPropagation();\n onRoleDuplicate(role.id);\n },\n [onRoleDuplicate]\n );\n\n const getIcons = useCallback(\n (role) => [\n ...(canCreate\n ? [\n {\n onClick: (e) => handleClickDuplicate(e, role),\n label: formatMessage({ id: 'app.utils.duplicate', defaultMessage: 'Duplicate' }),\n icon: <Duplicate />,\n },\n ]\n : []),\n ...(canUpdate\n ? [\n {\n onClick: () => handleGoTo(role.id),\n label: formatMessage({ id: 'app.utils.edit', defaultMessage: 'Edit' }),\n icon: <Pencil />,\n },\n ]\n : []),\n ...(canDelete\n ? [\n {\n onClick: (e) => handleClickDelete(e, role),\n label: formatMessage({ id: 'global.delete', defaultMessage: 'Delete' }),\n icon: <Trash />,\n },\n ]\n : []),\n ],\n [\n formatMessage,\n handleClickDelete,\n handleClickDuplicate,\n handleGoTo,\n canCreate,\n canUpdate,\n canDelete,\n ]\n );\n\n return {\n handleNewRoleClick,\n getIcons,\n selectedRoles,\n isWarningDeleteAllOpened,\n showModalConfirmButtonLoading,\n handleToggleModal,\n handleDeleteData,\n };\n};\n\nconst RoleListPage = () => {\n const { formatMessage } = useIntl();\n useFocusWhenNavigate();\n const permissions = useSelector(selectAdminPermissions);\n const [{ query }] = useQueryParams();\n const {\n isLoading: isLoadingForPermissions,\n allowedActions: { canCreate, canDelete, canRead, canUpdate },\n } = useRBAC(permissions.settings.roles);\n\n const {\n roles,\n isLoading,\n refetch: refetchRoles,\n } = useAdminRoles(\n { filters: query?._q ? { name: { $containsi: query._q } } : undefined },\n {\n cacheTime: 0,\n enabled: !isLoadingForPermissions && canRead,\n }\n );\n\n const {\n handleNewRoleClick,\n getIcons,\n isWarningDeleteAllOpened,\n showModalConfirmButtonLoading,\n handleToggleModal,\n handleDeleteData,\n } = useRoleActions({ refetchRoles, canCreate, canDelete, canUpdate });\n\n // ! TODO - Show the search bar only if the user is allowed to read - add the search input\n // canRead\n\n const rowCount = roles.length + 1;\n const colCount = 6;\n\n if (isLoadingForPermissions) {\n return (\n <Main>\n <LoadingIndicatorPage />\n </Main>\n );\n }\n\n const title = formatMessage({\n id: 'global.roles',\n defaultMessage: 'roles',\n });\n\n return (\n <Main>\n <SettingsPageTitle name=\"Roles\" />\n <HeaderLayout\n primaryAction={\n canCreate ? (\n <Button onClick={handleNewRoleClick} startIcon={<Plus />} size=\"S\">\n {formatMessage({\n id: 'Settings.roles.list.button.add',\n defaultMessage: 'Add new role',\n })}\n </Button>\n ) : null\n }\n title={title}\n subtitle={formatMessage({\n id: 'Settings.roles.list.description',\n defaultMessage: 'List of roles',\n })}\n as=\"h2\"\n />\n {canRead && (\n <ActionLayout\n startActions={\n <SearchURLQuery\n label={formatMessage(\n { id: 'app.component.search.label', defaultMessage: 'Search for {target}' },\n { target: title }\n )}\n />\n }\n />\n )}\n {canRead && (\n <ContentLayout>\n <Table\n colCount={colCount}\n rowCount={rowCount}\n footer={\n canCreate ? (\n <TFooter onClick={handleNewRoleClick} icon={<Plus />}>\n {formatMessage({\n id: 'Settings.roles.list.button.add',\n defaultMessage: 'Add new role',\n })}\n </TFooter>\n ) : null\n }\n >\n <Thead>\n <Tr aria-rowindex={1}>\n <Th>\n <Typography variant=\"sigma\" textColor=\"neutral600\">\n {formatMessage({\n id: 'global.name',\n defaultMessage: 'Name',\n })}\n </Typography>\n </Th>\n <Th>\n <Typography variant=\"sigma\" textColor=\"neutral600\">\n {formatMessage({\n id: 'global.description',\n defaultMessage: 'Description',\n })}\n </Typography>\n </Th>\n <Th>\n <Typography variant=\"sigma\" textColor=\"neutral600\">\n {formatMessage({\n id: 'global.users',\n defaultMessage: 'Users',\n })}\n </Typography>\n </Th>\n <Th>\n <VisuallyHidden>\n {formatMessage({\n id: 'global.actions',\n defaultMessage: 'Actions',\n })}\n </VisuallyHidden>\n </Th>\n </Tr>\n </Thead>\n <Tbody>\n {roles?.map((role, index) => (\n <BaseRoleRow\n key={role.id}\n id={role.id}\n name={role.name}\n description={role.description}\n usersCount={role.usersCount}\n icons={getIcons(role)}\n rowIndex={index + 2}\n canUpdate={canUpdate}\n />\n ))}\n </Tbody>\n </Table>\n {!rowCount && !isLoading && <EmptyRole />}\n </ContentLayout>\n )}\n <ConfirmDialog\n isOpen={isWarningDeleteAllOpened}\n onConfirm={handleDeleteData}\n isConfirmButtonLoading={showModalConfirmButtonLoading}\n onToggleDialog={handleToggleModal}\n />\n </Main>\n );\n};\n\nexport default RoleListPage;\n","import React from 'react';\n\nimport { CheckPagePermissions } from '@strapi/helper-plugin';\nimport { useSelector } from 'react-redux';\n\nimport { selectAdminPermissions } from '../../../../../selectors';\nimport ListPage from '../ListPage';\n\nconst ProtectedListPage = () => {\n const permissions = useSelector(selectAdminPermissions);\n\n return (\n <CheckPagePermissions permissions={permissions.settings.roles.main}>\n <ListPage />\n </CheckPagePermissions>\n );\n};\n\nexport default ProtectedListPage;\n"],"names":["useIntl","jsxs","Tr","onRowClick","jsx","Td","pxToRem","Typography","Flex","stopPropagation","Box","IconButton","PropTypes","produce","useAPIErrorHandler","useNotification","useState","useHistory","useReducer","getFetchClient","useCallback","Duplicate","Pencil","Trash","useFocusWhenNavigate","useSelector","selectAdminPermissions","useQueryParams","useRBAC","useAdminRoles","Main","LoadingIndicatorPage","SettingsPageTitle","HeaderLayout","Button","Plus","ActionLayout","SearchURLQuery","ContentLayout","Table","TFooter","Thead","Th","VisuallyHidden","Tbody","BaseRoleRow","ConfirmDialog","CheckPagePermissions","ListPage"],"mappings":"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"}
1
+ {"version":3,"file":"index-4ac37d7c.js","sources":["../../admin/src/pages/SettingsPage/pages/Roles/ListPage/components/EmptyRole/index.js","../../admin/src/pages/SettingsPage/pages/Roles/ListPage/components/RoleRow/index.js","../../admin/src/pages/SettingsPage/pages/Roles/ListPage/reducer.js","../../admin/src/pages/SettingsPage/pages/Roles/ListPage/index.js","../../admin/src/pages/SettingsPage/pages/Roles/ProtectedListPage/index.js"],"sourcesContent":["export default () => 'todo empty role';\n","import React from 'react';\n\nimport { Box, Flex, IconButton, Td, Tr, Typography } from '@strapi/design-system';\nimport { onRowClick, pxToRem, stopPropagation } from '@strapi/helper-plugin';\nimport PropTypes from 'prop-types';\nimport { useIntl } from 'react-intl';\n\nconst RoleRow = ({ id, name, description, usersCount, icons, rowIndex, canUpdate }) => {\n const { formatMessage } = useIntl();\n const [, editObject] = icons;\n\n const usersCountText = formatMessage(\n {\n id: `Roles.RoleRow.user-count`,\n defaultMessage: '{number, plural, =0 {# user} one {# user} other {# users}}',\n },\n { number: usersCount }\n );\n\n return (\n <Tr\n aria-rowindex={rowIndex}\n key={id}\n {...(canUpdate\n ? onRowClick({\n fn: editObject.onClick,\n })\n : {})}\n >\n <Td maxWidth={pxToRem(130)}>\n <Typography ellipsis textColor=\"neutral800\">\n {name}\n </Typography>\n </Td>\n <Td maxWidth={pxToRem(250)}>\n <Typography ellipsis textColor=\"neutral800\">\n {description}\n </Typography>\n </Td>\n <Td>\n <Typography textColor=\"neutral800\">{usersCountText}</Typography>\n </Td>\n <Td>\n <Flex justifyContent=\"flex-end\" {...stopPropagation}>\n {icons.map((icon, i) =>\n icon ? (\n <Box key={icon.label} paddingLeft={i === 0 ? 0 : 1}>\n <IconButton onClick={icon.onClick} label={icon.label} noBorder icon={icon.icon} />\n </Box>\n ) : null\n )}\n </Flex>\n </Td>\n </Tr>\n );\n};\n\nRoleRow.propTypes = {\n id: PropTypes.number.isRequired,\n name: PropTypes.string.isRequired,\n description: PropTypes.string.isRequired,\n usersCount: PropTypes.number.isRequired,\n icons: PropTypes.array.isRequired,\n rowIndex: PropTypes.number.isRequired,\n canUpdate: PropTypes.bool,\n};\n\nRoleRow.defaultProps = {\n canUpdate: false,\n};\n\nexport default RoleRow;\n","/* eslint-disable consistent-return */\nimport produce from 'immer';\n\nexport const initialState = {\n roleToDelete: null,\n showModalConfirmButtonLoading: false,\n shouldRefetchData: false,\n};\n\nconst reducer = (state, action) =>\n produce(state, (draftState) => {\n switch (action.type) {\n case 'ON_REMOVE_ROLES': {\n draftState.showModalConfirmButtonLoading = true;\n break;\n }\n case 'ON_REMOVE_ROLES_SUCCEEDED': {\n draftState.shouldRefetchData = true;\n draftState.roleToDelete = null;\n break;\n }\n case 'RESET_DATA_TO_DELETE': {\n draftState.shouldRefetchData = false;\n draftState.roleToDelete = null;\n draftState.showModalConfirmButtonLoading = false;\n break;\n }\n case 'SET_ROLE_TO_DELETE': {\n draftState.roleToDelete = action.id;\n\n break;\n }\n default:\n return draftState;\n }\n });\n\nexport default reducer;\n","import React, { useCallback, useReducer, useState } from 'react';\n\nimport {\n ActionLayout,\n Button,\n ContentLayout,\n HeaderLayout,\n Main,\n Table,\n Tbody,\n TFooter,\n Th,\n Thead,\n Tr,\n Typography,\n VisuallyHidden,\n} from '@strapi/design-system';\nimport {\n ConfirmDialog,\n getFetchClient,\n LoadingIndicatorPage,\n SearchURLQuery,\n SettingsPageTitle,\n useAPIErrorHandler,\n useFocusWhenNavigate,\n useQueryParams,\n useNotification,\n useRBAC,\n} from '@strapi/helper-plugin';\nimport { Duplicate, Pencil, Plus, Trash } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\nimport { useSelector } from 'react-redux';\nimport { useHistory } from 'react-router-dom';\n\nimport { useAdminRoles } from '../../../../../hooks/useAdminRoles';\nimport { selectAdminPermissions } from '../../../../../selectors';\n\nimport EmptyRole from './components/EmptyRole';\nimport BaseRoleRow from './components/RoleRow';\nimport reducer, { initialState } from './reducer';\n\nconst useRoleActions = ({ canCreate, canDelete, canUpdate, refetchRoles }) => {\n const { formatMessage } = useIntl();\n const { formatAPIError } = useAPIErrorHandler();\n const toggleNotification = useNotification();\n const [isWarningDeleteAllOpened, setIsWarningDeleteAllOpenend] = useState(false);\n const { push } = useHistory();\n const [{ selectedRoles, showModalConfirmButtonLoading, roleToDelete }, dispatch] = useReducer(\n reducer,\n initialState\n );\n\n const { post } = getFetchClient();\n\n const handleDeleteData = async () => {\n try {\n dispatch({\n type: 'ON_REMOVE_ROLES',\n });\n\n await post('/admin/roles/batch-delete', {\n ids: [roleToDelete],\n });\n\n await refetchRoles();\n\n dispatch({\n type: 'RESET_DATA_TO_DELETE',\n });\n } catch (error) {\n toggleNotification({\n type: 'warning',\n message: formatAPIError(error),\n });\n }\n handleToggleModal();\n };\n\n const onRoleDuplicate = useCallback(\n (id) => {\n push(`/settings/roles/duplicate/${id}`);\n },\n [push]\n );\n\n const handleNewRoleClick = () => push('/settings/roles/new');\n\n const onRoleRemove = useCallback((roleId) => {\n dispatch({\n type: 'SET_ROLE_TO_DELETE',\n id: roleId,\n });\n\n handleToggleModal();\n }, []);\n\n const handleToggleModal = () => setIsWarningDeleteAllOpenend((prev) => !prev);\n\n const handleGoTo = useCallback(\n (id) => {\n push(`/settings/roles/${id}`);\n },\n [push]\n );\n\n const handleClickDelete = useCallback(\n (e, role) => {\n e.preventDefault();\n e.stopPropagation();\n\n if (role.usersCount) {\n toggleNotification({\n type: 'info',\n message: { id: 'Roles.ListPage.notification.delete-not-allowed' },\n });\n } else {\n onRoleRemove(role.id);\n }\n },\n [toggleNotification, onRoleRemove]\n );\n\n const handleClickDuplicate = useCallback(\n (e, role) => {\n e.preventDefault();\n e.stopPropagation();\n onRoleDuplicate(role.id);\n },\n [onRoleDuplicate]\n );\n\n const getIcons = useCallback(\n (role) => [\n ...(canCreate\n ? [\n {\n onClick: (e) => handleClickDuplicate(e, role),\n label: formatMessage({ id: 'app.utils.duplicate', defaultMessage: 'Duplicate' }),\n icon: <Duplicate />,\n },\n ]\n : []),\n ...(canUpdate\n ? [\n {\n onClick: () => handleGoTo(role.id),\n label: formatMessage({ id: 'app.utils.edit', defaultMessage: 'Edit' }),\n icon: <Pencil />,\n },\n ]\n : []),\n ...(canDelete\n ? [\n {\n onClick: (e) => handleClickDelete(e, role),\n label: formatMessage({ id: 'global.delete', defaultMessage: 'Delete' }),\n icon: <Trash />,\n },\n ]\n : []),\n ],\n [\n formatMessage,\n handleClickDelete,\n handleClickDuplicate,\n handleGoTo,\n canCreate,\n canUpdate,\n canDelete,\n ]\n );\n\n return {\n handleNewRoleClick,\n getIcons,\n selectedRoles,\n isWarningDeleteAllOpened,\n showModalConfirmButtonLoading,\n handleToggleModal,\n handleDeleteData,\n };\n};\n\nconst RoleListPage = () => {\n const { formatMessage } = useIntl();\n useFocusWhenNavigate();\n const permissions = useSelector(selectAdminPermissions);\n const [{ query }] = useQueryParams();\n const {\n isLoading: isLoadingForPermissions,\n allowedActions: { canCreate, canDelete, canRead, canUpdate },\n } = useRBAC(permissions.settings.roles);\n\n const {\n roles,\n isLoading,\n refetch: refetchRoles,\n } = useAdminRoles(\n { filters: query?._q ? { name: { $containsi: query._q } } : undefined },\n {\n cacheTime: 0,\n enabled: !isLoadingForPermissions && canRead,\n }\n );\n\n const {\n handleNewRoleClick,\n getIcons,\n isWarningDeleteAllOpened,\n showModalConfirmButtonLoading,\n handleToggleModal,\n handleDeleteData,\n } = useRoleActions({ refetchRoles, canCreate, canDelete, canUpdate });\n\n // ! TODO - Show the search bar only if the user is allowed to read - add the search input\n // canRead\n\n const rowCount = roles.length + 1;\n const colCount = 6;\n\n if (isLoadingForPermissions) {\n return (\n <Main>\n <LoadingIndicatorPage />\n </Main>\n );\n }\n\n const title = formatMessage({\n id: 'global.roles',\n defaultMessage: 'roles',\n });\n\n return (\n <Main>\n <SettingsPageTitle name=\"Roles\" />\n <HeaderLayout\n primaryAction={\n canCreate ? (\n <Button onClick={handleNewRoleClick} startIcon={<Plus />} size=\"S\">\n {formatMessage({\n id: 'Settings.roles.list.button.add',\n defaultMessage: 'Add new role',\n })}\n </Button>\n ) : null\n }\n title={title}\n subtitle={formatMessage({\n id: 'Settings.roles.list.description',\n defaultMessage: 'List of roles',\n })}\n as=\"h2\"\n />\n {canRead && (\n <ActionLayout\n startActions={\n <SearchURLQuery\n label={formatMessage(\n { id: 'app.component.search.label', defaultMessage: 'Search for {target}' },\n { target: title }\n )}\n />\n }\n />\n )}\n {canRead && (\n <ContentLayout>\n <Table\n colCount={colCount}\n rowCount={rowCount}\n footer={\n canCreate ? (\n <TFooter onClick={handleNewRoleClick} icon={<Plus />}>\n {formatMessage({\n id: 'Settings.roles.list.button.add',\n defaultMessage: 'Add new role',\n })}\n </TFooter>\n ) : null\n }\n >\n <Thead>\n <Tr aria-rowindex={1}>\n <Th>\n <Typography variant=\"sigma\" textColor=\"neutral600\">\n {formatMessage({\n id: 'global.name',\n defaultMessage: 'Name',\n })}\n </Typography>\n </Th>\n <Th>\n <Typography variant=\"sigma\" textColor=\"neutral600\">\n {formatMessage({\n id: 'global.description',\n defaultMessage: 'Description',\n })}\n </Typography>\n </Th>\n <Th>\n <Typography variant=\"sigma\" textColor=\"neutral600\">\n {formatMessage({\n id: 'global.users',\n defaultMessage: 'Users',\n })}\n </Typography>\n </Th>\n <Th>\n <VisuallyHidden>\n {formatMessage({\n id: 'global.actions',\n defaultMessage: 'Actions',\n })}\n </VisuallyHidden>\n </Th>\n </Tr>\n </Thead>\n <Tbody>\n {roles?.map((role, index) => (\n <BaseRoleRow\n key={role.id}\n id={role.id}\n name={role.name}\n description={role.description}\n usersCount={role.usersCount}\n icons={getIcons(role)}\n rowIndex={index + 2}\n canUpdate={canUpdate}\n />\n ))}\n </Tbody>\n </Table>\n {!rowCount && !isLoading && <EmptyRole />}\n </ContentLayout>\n )}\n <ConfirmDialog\n isOpen={isWarningDeleteAllOpened}\n onConfirm={handleDeleteData}\n isConfirmButtonLoading={showModalConfirmButtonLoading}\n onToggleDialog={handleToggleModal}\n />\n </Main>\n );\n};\n\nexport default RoleListPage;\n","import React from 'react';\n\nimport { CheckPagePermissions } from '@strapi/helper-plugin';\nimport { useSelector } from 'react-redux';\n\nimport { selectAdminPermissions } from '../../../../../selectors';\nimport ListPage from '../ListPage';\n\nconst ProtectedListPage = () => {\n const permissions = useSelector(selectAdminPermissions);\n\n return (\n <CheckPagePermissions permissions={permissions.settings.roles.main}>\n <ListPage />\n </CheckPagePermissions>\n );\n};\n\nexport default ProtectedListPage;\n"],"names":["useIntl","jsxs","Tr","onRowClick","jsx","Td","pxToRem","Typography","Flex","stopPropagation","Box","IconButton","PropTypes","produce","useAPIErrorHandler","useNotification","useState","useHistory","useReducer","getFetchClient","useCallback","Duplicate","Pencil","Trash","useFocusWhenNavigate","useSelector","selectAdminPermissions","useQueryParams","useRBAC","useAdminRoles","Main","LoadingIndicatorPage","SettingsPageTitle","HeaderLayout","Button","Plus","ActionLayout","SearchURLQuery","ContentLayout","Table","TFooter","Thead","Th","VisuallyHidden","Tbody","BaseRoleRow","ConfirmDialog","CheckPagePermissions","ListPage"],"mappings":"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"}
@@ -1,7 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
3
  const jsxRuntime = require("react/jsx-runtime");
4
- const index = require("./index-924a1288.js");
4
+ const index = require("./index-42a0b19b.js");
5
5
  require("react");
6
6
  require("@strapi/design-system");
7
7
  require("@strapi/helper-plugin");
@@ -13,7 +13,7 @@ require("@strapi/icons");
13
13
  require("formik");
14
14
  require("prop-types");
15
15
  require("react-intl");
16
- require("./index-0ed05075.js");
16
+ require("./index-8b79ee6c.js");
17
17
  require("react-dom/client");
18
18
  require("invariant");
19
19
  require("lodash/isFunction");
@@ -48,4 +48,4 @@ function EventTableEE() {
48
48
  ] });
49
49
  }
50
50
  exports.EventTableEE = EventTableEE;
51
- //# sourceMappingURL=index-0fbbca7a.js.map
51
+ //# sourceMappingURL=index-4ff0e245.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index-0fbbca7a.js","sources":["../../ee/admin/src/pages/SettingsPage/pages/Webhooks/EditView/components/EventTable/EventTableEE.js"],"sourcesContent":["import React from 'react';\n\nimport EventTable from '../../../../../../../../../../admin/src/pages/SettingsPage/pages/Webhooks/EditView/components/Events';\n\nconst events = {\n 'review-workflows': ['review-workflows.updateEntryStage'],\n};\n\nconst getHeaders = () => {\n return [{ id: 'review-workflows.updateEntryStage', defaultMessage: 'Stage Change' }];\n};\n\nexport function EventTableEE() {\n return (\n <EventTable.Root>\n <EventTable.Headers />\n <EventTable.Body />\n <EventTable.Headers getHeaders={getHeaders} />\n <EventTable.Body providedEvents={events} />\n </EventTable.Root>\n );\n}\n"],"names":["jsxs","EventTable","jsx"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAIA,MAAM,SAAS;AAAA,EACb,oBAAoB,CAAC,mCAAmC;AAC1D;AAEA,MAAM,aAAa,MAAM;AACvB,SAAO,CAAC,EAAE,IAAI,qCAAqC,gBAAgB,eAAgB,CAAA;AACrF;AAEO,SAAS,eAAe;AAE3B,SAAAA,gCAACC,MAAAA,WAAW,MAAX,EACC,UAAA;AAAA,IAACC,+BAAAD,MAAAA,WAAW,SAAX,EAAmB;AAAA,IACpBC,+BAACD,MAAAA,WAAW,MAAX,EAAgB;AAAA,IAChBC,2BAAAA,IAAAD,MAAA,WAAW,SAAX,EAAmB,WAAwB,CAAA;AAAA,IAC3CC,2BAAAA,IAAAD,MAAAA,WAAW,MAAX,EAAgB,gBAAgB,OAAQ,CAAA;AAAA,EAC3C,EAAA,CAAA;AAEJ;;"}
1
+ {"version":3,"file":"index-4ff0e245.js","sources":["../../ee/admin/src/pages/SettingsPage/pages/Webhooks/EditView/components/EventTable/EventTableEE.js"],"sourcesContent":["import React from 'react';\n\nimport EventTable from '../../../../../../../../../../admin/src/pages/SettingsPage/pages/Webhooks/EditView/components/Events';\n\nconst events = {\n 'review-workflows': ['review-workflows.updateEntryStage'],\n};\n\nconst getHeaders = () => {\n return [{ id: 'review-workflows.updateEntryStage', defaultMessage: 'Stage Change' }];\n};\n\nexport function EventTableEE() {\n return (\n <EventTable.Root>\n <EventTable.Headers />\n <EventTable.Body />\n <EventTable.Headers getHeaders={getHeaders} />\n <EventTable.Body providedEvents={events} />\n </EventTable.Root>\n );\n}\n"],"names":["jsxs","EventTable","jsx"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAIA,MAAM,SAAS;AAAA,EACb,oBAAoB,CAAC,mCAAmC;AAC1D;AAEA,MAAM,aAAa,MAAM;AACvB,SAAO,CAAC,EAAE,IAAI,qCAAqC,gBAAgB,eAAgB,CAAA;AACrF;AAEO,SAAS,eAAe;AAE3B,SAAAA,gCAACC,MAAAA,WAAW,MAAX,EACC,UAAA;AAAA,IAACC,+BAAAD,MAAAA,WAAW,SAAX,EAAmB;AAAA,IACpBC,+BAACD,MAAAA,WAAW,MAAX,EAAgB;AAAA,IAChBC,2BAAAA,IAAAD,MAAA,WAAW,SAAX,EAAmB,WAAwB,CAAA;AAAA,IAC3CC,2BAAAA,IAAAD,MAAAA,WAAW,MAAX,EAAgB,gBAAgB,OAAQ,CAAA;AAAA,EAC3C,EAAA,CAAA;AAEJ;;"}
@@ -8,7 +8,7 @@ const reactIntl = require("react-intl");
8
8
  const reactQuery = require("react-query");
9
9
  const reactRedux = require("react-redux");
10
10
  const reactRouterDom = require("react-router-dom");
11
- const AuthenticatedApp = require("./AuthenticatedApp-61dfdab8.js");
11
+ const AuthenticatedApp = require("./AuthenticatedApp-12b0b80d.js");
12
12
  const formatAPIErrors = require("./formatAPIErrors-b599cf27.js");
13
13
  const constants = require("./constants-da2542a3.js");
14
14
  const index = require("./index-d3e1fd86.js");
@@ -400,4 +400,4 @@ const TransferTokenCreateView = () => {
400
400
  ] });
401
401
  };
402
402
  exports.TransferTokenCreateView = TransferTokenCreateView;
403
- //# sourceMappingURL=index-cbf9952d.js.map
403
+ //# sourceMappingURL=index-526ea946.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index-cbf9952d.js","sources":["../../admin/src/pages/SettingsPage/pages/TransferTokens/EditView/components/FormTransferTokenContainer/index.js","../../admin/src/pages/SettingsPage/pages/TransferTokens/EditView/components/LoadingView/index.js","../../admin/src/pages/SettingsPage/pages/TransferTokens/EditView/utils/schema.js","../../admin/src/pages/SettingsPage/pages/TransferTokens/EditView/index.js"],"sourcesContent":["import React from 'react';\n\nimport { Box, Flex, Grid, GridItem, Typography } from '@strapi/design-system';\nimport PropTypes from 'prop-types';\nimport { useIntl } from 'react-intl';\n\nimport LifeSpanInput from '../../../../../components/Tokens/LifeSpanInput';\nimport TokenDescription from '../../../../../components/Tokens/TokenDescription';\nimport TokenName from '../../../../../components/Tokens/TokenName';\nimport TokenTypeSelect from '../../../../../components/Tokens/TokenTypeSelect';\n\nconst FormTransferTokenContainer = ({\n errors,\n onChange,\n canEditInputs,\n isCreating,\n values,\n transferToken,\n}) => {\n const { formatMessage } = useIntl();\n\n const typeOptions = [\n {\n value: 'push',\n label: {\n id: 'Settings.transferTokens.types.push',\n defaultMessage: 'Push',\n },\n },\n {\n value: 'pull',\n label: {\n id: 'Settings.transferTokens.types.pull',\n defaultMessage: 'Pull',\n },\n },\n {\n value: 'push-pull',\n label: {\n id: 'Settings.transferTokens.types.push-pull',\n defaultMessage: 'Full Access',\n },\n },\n ];\n\n return (\n <Box\n background=\"neutral0\"\n hasRadius\n shadow=\"filterShadow\"\n paddingTop={6}\n paddingBottom={6}\n paddingLeft={7}\n paddingRight={7}\n >\n <Flex direction=\"column\" alignItems=\"stretch\" gap={4}>\n <Typography variant=\"delta\" as=\"h2\">\n {formatMessage({\n id: 'global.details',\n defaultMessage: 'Details',\n })}\n </Typography>\n <Grid gap={5}>\n <GridItem key=\"name\" col={6} xs={12}>\n <TokenName\n errors={errors}\n values={values}\n canEditInputs={canEditInputs}\n onChange={onChange}\n />\n </GridItem>\n <GridItem key=\"description\" col={6} xs={12}>\n <TokenDescription\n errors={errors}\n values={values}\n canEditInputs={canEditInputs}\n onChange={onChange}\n />\n </GridItem>\n <GridItem key=\"lifespan\" col={6} xs={12}>\n <LifeSpanInput\n isCreating={isCreating}\n errors={errors}\n values={values}\n onChange={onChange}\n token={transferToken}\n />\n </GridItem>\n <GridItem key=\"permissions\" col={6} xs={12}>\n <TokenTypeSelect\n name=\"permissions\"\n values={values}\n errors={errors}\n label={{\n id: 'Settings.tokens.form.type',\n defaultMessage: 'Token type',\n }}\n onChange={(value) => {\n onChange({ target: { name: 'permissions', value } });\n }}\n options={typeOptions}\n canEditInputs={canEditInputs}\n />\n </GridItem>\n </Grid>\n </Flex>\n </Box>\n );\n};\n\nFormTransferTokenContainer.propTypes = {\n errors: PropTypes.shape({\n name: PropTypes.string,\n description: PropTypes.string,\n lifespan: PropTypes.string,\n type: PropTypes.string,\n }),\n onChange: PropTypes.func.isRequired,\n canEditInputs: PropTypes.bool.isRequired,\n values: PropTypes.shape({\n name: PropTypes.string,\n description: PropTypes.string,\n lifespan: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n type: PropTypes.string,\n }).isRequired,\n isCreating: PropTypes.bool.isRequired,\n transferToken: PropTypes.shape({\n id: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n type: PropTypes.string,\n lifespan: PropTypes.string,\n name: PropTypes.string,\n accessKey: PropTypes.string,\n permissions: PropTypes.array,\n description: PropTypes.string,\n createdAt: PropTypes.string,\n }),\n};\n\nFormTransferTokenContainer.defaultProps = {\n errors: {},\n transferToken: {},\n};\n\nexport default FormTransferTokenContainer;\n","import React from 'react';\n\nimport { Button, ContentLayout, HeaderLayout, Main } from '@strapi/design-system';\nimport {\n LoadingIndicatorPage,\n SettingsPageTitle,\n useFocusWhenNavigate,\n} from '@strapi/helper-plugin';\nimport { Check } from '@strapi/icons';\nimport PropTypes from 'prop-types';\nimport { useIntl } from 'react-intl';\n\nconst LoadingView = ({ transferTokenName }) => {\n const { formatMessage } = useIntl();\n useFocusWhenNavigate();\n\n return (\n <Main aria-busy=\"true\">\n <SettingsPageTitle name=\"Transfer Tokens\" />\n <HeaderLayout\n primaryAction={\n <Button disabled startIcon={<Check />} type=\"button\" size=\"L\">\n {formatMessage({ id: 'global.save', defaultMessage: 'Save' })}\n </Button>\n }\n title={\n transferTokenName ||\n formatMessage({\n id: 'Settings.transferTokens.createPage.title',\n defaultMessage: 'Create Transfer Token',\n })\n }\n />\n <ContentLayout>\n <LoadingIndicatorPage />\n </ContentLayout>\n </Main>\n );\n};\n\nLoadingView.defaultProps = {\n transferTokenName: null,\n};\n\nLoadingView.propTypes = {\n transferTokenName: PropTypes.string,\n};\n\nexport default LoadingView;\n","import { translatedErrors } from '@strapi/helper-plugin';\nimport * as yup from 'yup';\n\nconst schema = yup.object().shape({\n name: yup.string(translatedErrors.string).max(100).required(translatedErrors.required),\n description: yup.string().nullable(),\n lifespan: yup.number().integer().min(0).nullable().defined(translatedErrors.required),\n permissions: yup.string(translatedErrors.string).required(translatedErrors.required),\n});\n\nexport default schema;\n","import React, { useEffect, useRef, useState } from 'react';\n\nimport { ContentLayout, Flex, Main } from '@strapi/design-system';\nimport {\n Form,\n SettingsPageTitle,\n useAPIErrorHandler,\n useFetchClient,\n useFocusWhenNavigate,\n useGuidedTour,\n useNotification,\n useOverlayBlocker,\n useRBAC,\n useTracking,\n} from '@strapi/helper-plugin';\nimport { Formik } from 'formik';\nimport { useIntl } from 'react-intl';\nimport { useQuery } from 'react-query';\nimport { useSelector } from 'react-redux';\nimport { useHistory, useRouteMatch } from 'react-router-dom';\n\nimport { selectAdminPermissions } from '../../../../../selectors';\nimport { formatAPIErrors } from '../../../../../utils/formatAPIErrors';\nimport { TRANSFER_TOKEN_TYPE } from '../../../components/Tokens/constants';\nimport FormHead from '../../../components/Tokens/FormHead';\nimport TokenBox from '../../../components/Tokens/TokenBox';\n\nimport FormTransferTokenContainer from './components/FormTransferTokenContainer';\nimport LoadingView from './components/LoadingView';\nimport { schema } from './utils';\n\nconst MSG_ERROR_NAME_TAKEN = 'Name already taken';\n\nconst TransferTokenCreateView = () => {\n useFocusWhenNavigate();\n const { formatMessage } = useIntl();\n const { lockApp, unlockApp } = useOverlayBlocker();\n const toggleNotification = useNotification();\n const history = useHistory();\n const [transferToken, setTransferToken] = useState(\n history.location.state?.transferToken.accessKey\n ? {\n ...history.location.state.transferToken,\n }\n : null\n );\n const { trackUsage } = useTracking();\n const trackUsageRef = useRef(trackUsage);\n const { setCurrentStep } = useGuidedTour();\n const permissions = useSelector(selectAdminPermissions);\n const {\n allowedActions: { canCreate, canUpdate, canRegenerate },\n } = useRBAC(permissions.settings['transfer-tokens']);\n const {\n params: { id },\n } = useRouteMatch('/settings/transfer-tokens/:id');\n const { get, post, put } = useFetchClient();\n\n const isCreating = id === 'create';\n\n const { formatAPIError } = useAPIErrorHandler();\n\n useEffect(() => {\n trackUsageRef.current(isCreating ? 'didAddTokenFromList' : 'didEditTokenFromList', {\n tokenType: TRANSFER_TOKEN_TYPE,\n });\n }, [isCreating]);\n\n const { status } = useQuery(\n ['transfer-token', id],\n async () => {\n const {\n data: { data },\n } = await get(`/admin/transfer/tokens/${id}`);\n\n setTransferToken({\n ...data,\n });\n\n return data;\n },\n {\n enabled: !isCreating && !transferToken,\n onError(err) {\n if (err.response.data.error.details?.code === 'INVALID_TOKEN_SALT') {\n toggleNotification({\n type: 'warning',\n message: {\n id: 'notification.error.invalid.configuration',\n defaultMessage:\n 'You have an invalid configuration, check your server log for more information.',\n },\n });\n } else {\n toggleNotification({\n type: 'warning',\n message: formatAPIError(err),\n });\n }\n },\n }\n );\n\n const handleSubmit = async (body, actions) => {\n trackUsageRef.current(isCreating ? 'willCreateToken' : 'willEditToken', {\n tokenType: TRANSFER_TOKEN_TYPE,\n });\n lockApp();\n const lifespanVal =\n body.lifespan && parseInt(body.lifespan, 10) && body.lifespan !== '0'\n ? parseInt(body.lifespan, 10)\n : null;\n\n const permissions = body.permissions.split('-');\n\n try {\n const {\n data: { data: response },\n } = isCreating\n ? await post(`/admin/transfer/tokens`, {\n ...body,\n lifespan: lifespanVal,\n permissions,\n })\n : await put(`/admin/transfer/tokens/${id}`, {\n name: body.name,\n description: body.description,\n permissions,\n });\n\n unlockApp();\n\n if (isCreating) {\n history.replace(`/settings/transfer-tokens/${response.id}`, { transferToken: response });\n setCurrentStep('transferTokens.success');\n }\n setTransferToken({\n ...response,\n });\n\n toggleNotification({\n type: 'success',\n message: isCreating\n ? formatMessage({\n id: 'notification.success.transfertokencreated',\n defaultMessage: 'Transfer Token successfully created',\n })\n : formatMessage({\n id: 'notification.success.transfertokenedited',\n defaultMessage: 'Transfer Token successfully edited',\n }),\n });\n\n trackUsageRef.current(isCreating ? 'didCreateToken' : 'didEditToken', {\n type: transferToken?.permissions,\n tokenType: TRANSFER_TOKEN_TYPE,\n });\n } catch (err) {\n const errors = formatAPIErrors(err.response.data);\n actions.setErrors(errors);\n\n if (err?.response?.data?.error?.message === MSG_ERROR_NAME_TAKEN) {\n toggleNotification({\n type: 'warning',\n message: err.response.data.message || 'notification.error.tokennamenotunique',\n });\n } else if (err?.response?.data?.error?.details?.code === 'INVALID_TOKEN_SALT') {\n toggleNotification({\n type: 'warning',\n message: {\n id: 'notification.error.invalid.configuration',\n defaultMessage:\n 'You have an invalid configuration, check your server log for more information.',\n },\n });\n } else {\n toggleNotification({\n type: 'warning',\n message: err?.response?.data?.message || 'notification.error',\n });\n }\n unlockApp();\n }\n };\n\n const canEditInputs = (canUpdate && !isCreating) || (canCreate && isCreating);\n const isLoading = !isCreating && !transferToken && status !== 'success';\n\n if (isLoading) {\n return <LoadingView transferTokenName={transferToken?.name} />;\n }\n\n const handleErrorRegenerate = (err) => {\n if (err?.response?.data?.error?.details?.code === 'INVALID_TOKEN_SALT') {\n toggleNotification({\n type: 'warning',\n message: {\n id: 'notification.error.invalid.configuration',\n defaultMessage:\n 'You have an invalid configuration, check your server log for more information.',\n },\n });\n } else {\n toggleNotification({\n type: 'warning',\n message: formatAPIError(err),\n });\n }\n };\n\n return (\n <Main>\n <SettingsPageTitle name=\"Transfer Tokens\" />\n <Formik\n validationSchema={schema}\n validateOnChange={false}\n initialValues={{\n name: transferToken?.name || '',\n description: transferToken?.description || '',\n lifespan: transferToken?.lifespan\n ? transferToken.lifespan.toString()\n : transferToken?.lifespan,\n permissions: transferToken?.permissions.join('-'),\n }}\n enableReinitialize\n onSubmit={(body, actions) => handleSubmit(body, actions)}\n >\n {({ errors, handleChange, isSubmitting, values }) => {\n return (\n <Form>\n <FormHead\n backUrl=\"/settings/transfer-tokens\"\n title={{\n id: 'Settings.transferTokens.createPage.title',\n defaultMessage: 'Create Transfer Token',\n }}\n token={transferToken}\n setToken={setTransferToken}\n canEditInputs={canEditInputs}\n canRegenerate={canRegenerate}\n isSubmitting={isSubmitting}\n regenerateUrl=\"/admin/transfer/tokens/\"\n onErrorRegenerate={handleErrorRegenerate}\n />\n <ContentLayout>\n <Flex direction=\"column\" alignItems=\"stretch\" gap={6}>\n {Boolean(transferToken?.name) && (\n <TokenBox token={transferToken?.accessKey} tokenType={TRANSFER_TOKEN_TYPE} />\n )}\n <FormTransferTokenContainer\n errors={errors}\n onChange={handleChange}\n canEditInputs={canEditInputs}\n isCreating={isCreating}\n values={values}\n transferToken={transferToken}\n />\n </Flex>\n </ContentLayout>\n </Form>\n );\n }}\n </Formik>\n </Main>\n );\n};\n\nexport default TransferTokenCreateView;\n"],"names":["useIntl","jsx","Box","Flex","Typography","jsxs","Grid","GridItem","TokenName","TokenDescription","LifeSpanInput","TokenTypeSelect","PropTypes","useFocusWhenNavigate","Main","SettingsPageTitle","HeaderLayout","Button","Check","ContentLayout","LoadingIndicatorPage","yup","translatedErrors","useOverlayBlocker","useNotification","useHistory","useState","useTracking","useRef","useGuidedTour","useSelector","selectAdminPermissions","useRBAC","useRouteMatch","useFetchClient","useAPIErrorHandler","useEffect","TRANSFER_TOKEN_TYPE","useQuery","permissions","formatAPIErrors","Formik","Form","FormHead","TokenBox"],"mappings":"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"}
1
+ {"version":3,"file":"index-526ea946.js","sources":["../../admin/src/pages/SettingsPage/pages/TransferTokens/EditView/components/FormTransferTokenContainer/index.js","../../admin/src/pages/SettingsPage/pages/TransferTokens/EditView/components/LoadingView/index.js","../../admin/src/pages/SettingsPage/pages/TransferTokens/EditView/utils/schema.js","../../admin/src/pages/SettingsPage/pages/TransferTokens/EditView/index.js"],"sourcesContent":["import React from 'react';\n\nimport { Box, Flex, Grid, GridItem, Typography } from '@strapi/design-system';\nimport PropTypes from 'prop-types';\nimport { useIntl } from 'react-intl';\n\nimport LifeSpanInput from '../../../../../components/Tokens/LifeSpanInput';\nimport TokenDescription from '../../../../../components/Tokens/TokenDescription';\nimport TokenName from '../../../../../components/Tokens/TokenName';\nimport TokenTypeSelect from '../../../../../components/Tokens/TokenTypeSelect';\n\nconst FormTransferTokenContainer = ({\n errors,\n onChange,\n canEditInputs,\n isCreating,\n values,\n transferToken,\n}) => {\n const { formatMessage } = useIntl();\n\n const typeOptions = [\n {\n value: 'push',\n label: {\n id: 'Settings.transferTokens.types.push',\n defaultMessage: 'Push',\n },\n },\n {\n value: 'pull',\n label: {\n id: 'Settings.transferTokens.types.pull',\n defaultMessage: 'Pull',\n },\n },\n {\n value: 'push-pull',\n label: {\n id: 'Settings.transferTokens.types.push-pull',\n defaultMessage: 'Full Access',\n },\n },\n ];\n\n return (\n <Box\n background=\"neutral0\"\n hasRadius\n shadow=\"filterShadow\"\n paddingTop={6}\n paddingBottom={6}\n paddingLeft={7}\n paddingRight={7}\n >\n <Flex direction=\"column\" alignItems=\"stretch\" gap={4}>\n <Typography variant=\"delta\" as=\"h2\">\n {formatMessage({\n id: 'global.details',\n defaultMessage: 'Details',\n })}\n </Typography>\n <Grid gap={5}>\n <GridItem key=\"name\" col={6} xs={12}>\n <TokenName\n errors={errors}\n values={values}\n canEditInputs={canEditInputs}\n onChange={onChange}\n />\n </GridItem>\n <GridItem key=\"description\" col={6} xs={12}>\n <TokenDescription\n errors={errors}\n values={values}\n canEditInputs={canEditInputs}\n onChange={onChange}\n />\n </GridItem>\n <GridItem key=\"lifespan\" col={6} xs={12}>\n <LifeSpanInput\n isCreating={isCreating}\n errors={errors}\n values={values}\n onChange={onChange}\n token={transferToken}\n />\n </GridItem>\n <GridItem key=\"permissions\" col={6} xs={12}>\n <TokenTypeSelect\n name=\"permissions\"\n values={values}\n errors={errors}\n label={{\n id: 'Settings.tokens.form.type',\n defaultMessage: 'Token type',\n }}\n onChange={(value) => {\n onChange({ target: { name: 'permissions', value } });\n }}\n options={typeOptions}\n canEditInputs={canEditInputs}\n />\n </GridItem>\n </Grid>\n </Flex>\n </Box>\n );\n};\n\nFormTransferTokenContainer.propTypes = {\n errors: PropTypes.shape({\n name: PropTypes.string,\n description: PropTypes.string,\n lifespan: PropTypes.string,\n type: PropTypes.string,\n }),\n onChange: PropTypes.func.isRequired,\n canEditInputs: PropTypes.bool.isRequired,\n values: PropTypes.shape({\n name: PropTypes.string,\n description: PropTypes.string,\n lifespan: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n type: PropTypes.string,\n }).isRequired,\n isCreating: PropTypes.bool.isRequired,\n transferToken: PropTypes.shape({\n id: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n type: PropTypes.string,\n lifespan: PropTypes.string,\n name: PropTypes.string,\n accessKey: PropTypes.string,\n permissions: PropTypes.array,\n description: PropTypes.string,\n createdAt: PropTypes.string,\n }),\n};\n\nFormTransferTokenContainer.defaultProps = {\n errors: {},\n transferToken: {},\n};\n\nexport default FormTransferTokenContainer;\n","import React from 'react';\n\nimport { Button, ContentLayout, HeaderLayout, Main } from '@strapi/design-system';\nimport {\n LoadingIndicatorPage,\n SettingsPageTitle,\n useFocusWhenNavigate,\n} from '@strapi/helper-plugin';\nimport { Check } from '@strapi/icons';\nimport PropTypes from 'prop-types';\nimport { useIntl } from 'react-intl';\n\nconst LoadingView = ({ transferTokenName }) => {\n const { formatMessage } = useIntl();\n useFocusWhenNavigate();\n\n return (\n <Main aria-busy=\"true\">\n <SettingsPageTitle name=\"Transfer Tokens\" />\n <HeaderLayout\n primaryAction={\n <Button disabled startIcon={<Check />} type=\"button\" size=\"L\">\n {formatMessage({ id: 'global.save', defaultMessage: 'Save' })}\n </Button>\n }\n title={\n transferTokenName ||\n formatMessage({\n id: 'Settings.transferTokens.createPage.title',\n defaultMessage: 'Create Transfer Token',\n })\n }\n />\n <ContentLayout>\n <LoadingIndicatorPage />\n </ContentLayout>\n </Main>\n );\n};\n\nLoadingView.defaultProps = {\n transferTokenName: null,\n};\n\nLoadingView.propTypes = {\n transferTokenName: PropTypes.string,\n};\n\nexport default LoadingView;\n","import { translatedErrors } from '@strapi/helper-plugin';\nimport * as yup from 'yup';\n\nconst schema = yup.object().shape({\n name: yup.string(translatedErrors.string).max(100).required(translatedErrors.required),\n description: yup.string().nullable(),\n lifespan: yup.number().integer().min(0).nullable().defined(translatedErrors.required),\n permissions: yup.string(translatedErrors.string).required(translatedErrors.required),\n});\n\nexport default schema;\n","import React, { useEffect, useRef, useState } from 'react';\n\nimport { ContentLayout, Flex, Main } from '@strapi/design-system';\nimport {\n Form,\n SettingsPageTitle,\n useAPIErrorHandler,\n useFetchClient,\n useFocusWhenNavigate,\n useGuidedTour,\n useNotification,\n useOverlayBlocker,\n useRBAC,\n useTracking,\n} from '@strapi/helper-plugin';\nimport { Formik } from 'formik';\nimport { useIntl } from 'react-intl';\nimport { useQuery } from 'react-query';\nimport { useSelector } from 'react-redux';\nimport { useHistory, useRouteMatch } from 'react-router-dom';\n\nimport { selectAdminPermissions } from '../../../../../selectors';\nimport { formatAPIErrors } from '../../../../../utils/formatAPIErrors';\nimport { TRANSFER_TOKEN_TYPE } from '../../../components/Tokens/constants';\nimport FormHead from '../../../components/Tokens/FormHead';\nimport TokenBox from '../../../components/Tokens/TokenBox';\n\nimport FormTransferTokenContainer from './components/FormTransferTokenContainer';\nimport LoadingView from './components/LoadingView';\nimport { schema } from './utils';\n\nconst MSG_ERROR_NAME_TAKEN = 'Name already taken';\n\nconst TransferTokenCreateView = () => {\n useFocusWhenNavigate();\n const { formatMessage } = useIntl();\n const { lockApp, unlockApp } = useOverlayBlocker();\n const toggleNotification = useNotification();\n const history = useHistory();\n const [transferToken, setTransferToken] = useState(\n history.location.state?.transferToken.accessKey\n ? {\n ...history.location.state.transferToken,\n }\n : null\n );\n const { trackUsage } = useTracking();\n const trackUsageRef = useRef(trackUsage);\n const { setCurrentStep } = useGuidedTour();\n const permissions = useSelector(selectAdminPermissions);\n const {\n allowedActions: { canCreate, canUpdate, canRegenerate },\n } = useRBAC(permissions.settings['transfer-tokens']);\n const {\n params: { id },\n } = useRouteMatch('/settings/transfer-tokens/:id');\n const { get, post, put } = useFetchClient();\n\n const isCreating = id === 'create';\n\n const { formatAPIError } = useAPIErrorHandler();\n\n useEffect(() => {\n trackUsageRef.current(isCreating ? 'didAddTokenFromList' : 'didEditTokenFromList', {\n tokenType: TRANSFER_TOKEN_TYPE,\n });\n }, [isCreating]);\n\n const { status } = useQuery(\n ['transfer-token', id],\n async () => {\n const {\n data: { data },\n } = await get(`/admin/transfer/tokens/${id}`);\n\n setTransferToken({\n ...data,\n });\n\n return data;\n },\n {\n enabled: !isCreating && !transferToken,\n onError(err) {\n if (err.response.data.error.details?.code === 'INVALID_TOKEN_SALT') {\n toggleNotification({\n type: 'warning',\n message: {\n id: 'notification.error.invalid.configuration',\n defaultMessage:\n 'You have an invalid configuration, check your server log for more information.',\n },\n });\n } else {\n toggleNotification({\n type: 'warning',\n message: formatAPIError(err),\n });\n }\n },\n }\n );\n\n const handleSubmit = async (body, actions) => {\n trackUsageRef.current(isCreating ? 'willCreateToken' : 'willEditToken', {\n tokenType: TRANSFER_TOKEN_TYPE,\n });\n lockApp();\n const lifespanVal =\n body.lifespan && parseInt(body.lifespan, 10) && body.lifespan !== '0'\n ? parseInt(body.lifespan, 10)\n : null;\n\n const permissions = body.permissions.split('-');\n\n try {\n const {\n data: { data: response },\n } = isCreating\n ? await post(`/admin/transfer/tokens`, {\n ...body,\n lifespan: lifespanVal,\n permissions,\n })\n : await put(`/admin/transfer/tokens/${id}`, {\n name: body.name,\n description: body.description,\n permissions,\n });\n\n unlockApp();\n\n if (isCreating) {\n history.replace(`/settings/transfer-tokens/${response.id}`, { transferToken: response });\n setCurrentStep('transferTokens.success');\n }\n setTransferToken({\n ...response,\n });\n\n toggleNotification({\n type: 'success',\n message: isCreating\n ? formatMessage({\n id: 'notification.success.transfertokencreated',\n defaultMessage: 'Transfer Token successfully created',\n })\n : formatMessage({\n id: 'notification.success.transfertokenedited',\n defaultMessage: 'Transfer Token successfully edited',\n }),\n });\n\n trackUsageRef.current(isCreating ? 'didCreateToken' : 'didEditToken', {\n type: transferToken?.permissions,\n tokenType: TRANSFER_TOKEN_TYPE,\n });\n } catch (err) {\n const errors = formatAPIErrors(err.response.data);\n actions.setErrors(errors);\n\n if (err?.response?.data?.error?.message === MSG_ERROR_NAME_TAKEN) {\n toggleNotification({\n type: 'warning',\n message: err.response.data.message || 'notification.error.tokennamenotunique',\n });\n } else if (err?.response?.data?.error?.details?.code === 'INVALID_TOKEN_SALT') {\n toggleNotification({\n type: 'warning',\n message: {\n id: 'notification.error.invalid.configuration',\n defaultMessage:\n 'You have an invalid configuration, check your server log for more information.',\n },\n });\n } else {\n toggleNotification({\n type: 'warning',\n message: err?.response?.data?.message || 'notification.error',\n });\n }\n unlockApp();\n }\n };\n\n const canEditInputs = (canUpdate && !isCreating) || (canCreate && isCreating);\n const isLoading = !isCreating && !transferToken && status !== 'success';\n\n if (isLoading) {\n return <LoadingView transferTokenName={transferToken?.name} />;\n }\n\n const handleErrorRegenerate = (err) => {\n if (err?.response?.data?.error?.details?.code === 'INVALID_TOKEN_SALT') {\n toggleNotification({\n type: 'warning',\n message: {\n id: 'notification.error.invalid.configuration',\n defaultMessage:\n 'You have an invalid configuration, check your server log for more information.',\n },\n });\n } else {\n toggleNotification({\n type: 'warning',\n message: formatAPIError(err),\n });\n }\n };\n\n return (\n <Main>\n <SettingsPageTitle name=\"Transfer Tokens\" />\n <Formik\n validationSchema={schema}\n validateOnChange={false}\n initialValues={{\n name: transferToken?.name || '',\n description: transferToken?.description || '',\n lifespan: transferToken?.lifespan\n ? transferToken.lifespan.toString()\n : transferToken?.lifespan,\n permissions: transferToken?.permissions.join('-'),\n }}\n enableReinitialize\n onSubmit={(body, actions) => handleSubmit(body, actions)}\n >\n {({ errors, handleChange, isSubmitting, values }) => {\n return (\n <Form>\n <FormHead\n backUrl=\"/settings/transfer-tokens\"\n title={{\n id: 'Settings.transferTokens.createPage.title',\n defaultMessage: 'Create Transfer Token',\n }}\n token={transferToken}\n setToken={setTransferToken}\n canEditInputs={canEditInputs}\n canRegenerate={canRegenerate}\n isSubmitting={isSubmitting}\n regenerateUrl=\"/admin/transfer/tokens/\"\n onErrorRegenerate={handleErrorRegenerate}\n />\n <ContentLayout>\n <Flex direction=\"column\" alignItems=\"stretch\" gap={6}>\n {Boolean(transferToken?.name) && (\n <TokenBox token={transferToken?.accessKey} tokenType={TRANSFER_TOKEN_TYPE} />\n )}\n <FormTransferTokenContainer\n errors={errors}\n onChange={handleChange}\n canEditInputs={canEditInputs}\n isCreating={isCreating}\n values={values}\n transferToken={transferToken}\n />\n </Flex>\n </ContentLayout>\n </Form>\n );\n }}\n </Formik>\n </Main>\n );\n};\n\nexport default TransferTokenCreateView;\n"],"names":["useIntl","jsx","Box","Flex","Typography","jsxs","Grid","GridItem","TokenName","TokenDescription","LifeSpanInput","TokenTypeSelect","PropTypes","useFocusWhenNavigate","Main","SettingsPageTitle","HeaderLayout","Button","Check","ContentLayout","LoadingIndicatorPage","yup","translatedErrors","useOverlayBlocker","useNotification","useHistory","useState","useTracking","useRef","useGuidedTour","useSelector","selectAdminPermissions","useRBAC","useRouteMatch","useFetchClient","useAPIErrorHandler","useEffect","TRANSFER_TOKEN_TYPE","useQuery","permissions","formatAPIErrors","Formik","Form","FormHead","TokenBox"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAWA,MAAM,6BAA6B,CAAC;AAAA,EAClC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,MAAM;AACE,QAAA,EAAE,kBAAkBA,UAAAA;AAE1B,QAAM,cAAc;AAAA,IAClB;AAAA,MACE,OAAO;AAAA,MACP,OAAO;AAAA,QACL,IAAI;AAAA,QACJ,gBAAgB;AAAA,MAClB;AAAA,IACF;AAAA,IACA;AAAA,MACE,OAAO;AAAA,MACP,OAAO;AAAA,QACL,IAAI;AAAA,QACJ,gBAAgB;AAAA,MAClB;AAAA,IACF;AAAA,IACA;AAAA,MACE,OAAO;AAAA,MACP,OAAO;AAAA,QACL,IAAI;AAAA,QACJ,gBAAgB;AAAA,MAClB;AAAA,IACF;AAAA,EAAA;AAIA,SAAAC,2BAAA;AAAA,IAACC,aAAA;AAAA,IAAA;AAAA,MACC,YAAW;AAAA,MACX,WAAS;AAAA,MACT,QAAO;AAAA,MACP,YAAY;AAAA,MACZ,eAAe;AAAA,MACf,aAAa;AAAA,MACb,cAAc;AAAA,MAEd,0CAACC,mBAAK,EAAA,WAAU,UAAS,YAAW,WAAU,KAAK,GACjD,UAAA;AAAA,QAAAF,+BAACG,aAAAA,YAAW,EAAA,SAAQ,SAAQ,IAAG,MAC5B,UAAc,cAAA;AAAA,UACb,IAAI;AAAA,UACJ,gBAAgB;AAAA,QACjB,CAAA,GACH;AAAA,QACAC,2BAAAA,KAACC,aAAAA,MAAK,EAAA,KAAK,GACT,UAAA;AAAA,UAAAL,2BAAA,IAACM,aAAoB,UAAA,EAAA,KAAK,GAAG,IAAI,IAC/B,UAAAN,2BAAA;AAAA,YAACO,MAAA;AAAA,YAAA;AAAA,cACC;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,YAAA;AAAA,eALU,MAOd;AAAA,UACCP,2BAAA,IAAAM,aAAA,UAAA,EAA2B,KAAK,GAAG,IAAI,IACtC,UAAAN,2BAAA;AAAA,YAACQ,MAAA;AAAA,YAAA;AAAA,cACC;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,YAAA;AAAA,eALU,aAOd;AAAA,UACCR,2BAAA,IAAAM,aAAA,UAAA,EAAwB,KAAK,GAAG,IAAI,IACnC,UAAAN,2BAAA;AAAA,YAACS,MAAA;AAAA,YAAA;AAAA,cACC;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA,OAAO;AAAA,YAAA;AAAA,eANG,UAQd;AAAA,UACCT,2BAAA,IAAAM,aAAA,UAAA,EAA2B,KAAK,GAAG,IAAI,IACtC,UAAAN,2BAAA;AAAA,YAACU,MAAA;AAAA,YAAA;AAAA,cACC,MAAK;AAAA,cACL;AAAA,cACA;AAAA,cACA,OAAO;AAAA,gBACL,IAAI;AAAA,gBACJ,gBAAgB;AAAA,cAClB;AAAA,cACA,UAAU,CAAC,UAAU;AACnB,yBAAS,EAAE,QAAQ,EAAE,MAAM,eAAe,SAAS;AAAA,cACrD;AAAA,cACA,SAAS;AAAA,cACT;AAAA,YAAA;AAAA,eAbU,aAed;AAAA,QAAA,GACF;AAAA,MAAA,GACF;AAAA,IAAA;AAAA,EAAA;AAGN;AAEA,2BAA2B,YAAY;AAAA,EACrC,QAAQC,2BAAU,MAAM;AAAA,IACtB,MAAMA,mBAAU,QAAA;AAAA,IAChB,aAAaA,mBAAU,QAAA;AAAA,IACvB,UAAUA,mBAAU,QAAA;AAAA,IACpB,MAAMA,mBAAU,QAAA;AAAA,EAAA,CACjB;AAAA,EACD,UAAUA,mBAAAA,QAAU,KAAK;AAAA,EACzB,eAAeA,mBAAAA,QAAU,KAAK;AAAA,EAC9B,QAAQA,2BAAU,MAAM;AAAA,IACtB,MAAMA,mBAAU,QAAA;AAAA,IAChB,aAAaA,mBAAU,QAAA;AAAA,IACvB,UAAUA,2BAAU,UAAU,CAACA,2BAAU,QAAQA,mBAAAA,QAAU,MAAM,CAAC;AAAA,IAClE,MAAMA,mBAAU,QAAA;AAAA,EACjB,CAAA,EAAE;AAAA,EACH,YAAYA,mBAAAA,QAAU,KAAK;AAAA,EAC3B,eAAeA,2BAAU,MAAM;AAAA,IAC7B,IAAIA,2BAAU,UAAU,CAACA,2BAAU,QAAQA,mBAAAA,QAAU,MAAM,CAAC;AAAA,IAC5D,MAAMA,mBAAU,QAAA;AAAA,IAChB,UAAUA,mBAAU,QAAA;AAAA,IACpB,MAAMA,mBAAU,QAAA;AAAA,IAChB,WAAWA,mBAAU,QAAA;AAAA,IACrB,aAAaA,mBAAU,QAAA;AAAA,IACvB,aAAaA,mBAAU,QAAA;AAAA,IACvB,WAAWA,mBAAU,QAAA;AAAA,EAAA,CACtB;AACH;AAEA,2BAA2B,eAAe;AAAA,EACxC,QAAQ,CAAC;AAAA,EACT,eAAe,CAAC;AAClB;ACjIA,MAAM,cAAc,CAAC,EAAE,wBAAwB;AACvC,QAAA,EAAE,kBAAkBZ,UAAAA;AACLa,eAAAA;AAGnB,SAAAR,2BAAA,KAACS,aAAK,MAAA,EAAA,aAAU,QACd,UAAA;AAAA,IAACb,2BAAAA,IAAAc,aAAA,mBAAA,EAAkB,MAAK,kBAAkB,CAAA;AAAA,IAC1Cd,2BAAA;AAAA,MAACe,aAAA;AAAA,MAAA;AAAA,QACC,8CACGC,aAAO,QAAA,EAAA,UAAQ,MAAC,WAAWhB,2BAAA,IAACiB,eAAM,GAAI,MAAK,UAAS,MAAK,KACvD,wBAAc,EAAE,IAAI,eAAe,gBAAgB,OAAQ,CAAA,GAC9D;AAAA,QAEF,OACE,qBACA,cAAc;AAAA,UACZ,IAAI;AAAA,UACJ,gBAAgB;AAAA,QAAA,CACjB;AAAA,MAAA;AAAA,IAEL;AAAA,IACCjB,2BAAA,IAAAkB,aAAA,eAAA,EACC,UAAClB,2BAAA,IAAAmB,aAAA,sBAAA,CAAqB,CAAA,GACxB;AAAA,EACF,EAAA,CAAA;AAEJ;AAEA,YAAY,eAAe;AAAA,EACzB,mBAAmB;AACrB;AAEA,YAAY,YAAY;AAAA,EACtB,mBAAmBR,mBAAU,QAAA;AAC/B;AC3CA,MAAM,SAASS,eAAI,OAAO,EAAE,MAAM;AAAA,EAChC,MAAMA,eAAI,OAAOC,aAAAA,iBAAiB,MAAM,EAAE,IAAI,GAAG,EAAE,SAASA,aAAAA,iBAAiB,QAAQ;AAAA,EACrF,aAAaD,eAAI,OAAO,EAAE,SAAS;AAAA,EACnC,UAAUA,eAAI,OAAO,EAAE,QAAQ,EAAE,IAAI,CAAC,EAAE,SAAW,EAAA,QAAQC,aAAAA,iBAAiB,QAAQ;AAAA,EACpF,aAAaD,eAAI,OAAOC,aAAA,iBAAiB,MAAM,EAAE,SAASA,8BAAiB,QAAQ;AACrF,CAAC;ACuBD,MAAM,uBAAuB;AAE7B,MAAM,0BAA0B,MAAM;AACfT,eAAAA;AACf,QAAA,EAAE,kBAAkBb,UAAAA;AAC1B,QAAM,EAAE,SAAS,UAAU,IAAIuB,aAAkB,kBAAA;AACjD,QAAM,qBAAqBC,aAAAA;AAC3B,QAAM,UAAUC,eAAAA;AACV,QAAA,CAAC,eAAe,gBAAgB,IAAIC,MAAA;AAAA,IACxC,QAAQ,SAAS,OAAO,cAAc,YAClC;AAAA,MACE,GAAG,QAAQ,SAAS,MAAM;AAAA,IAAA,IAE5B;AAAA,EAAA;AAEA,QAAA,EAAE,eAAeC,aAAAA;AACjB,QAAA,gBAAgBC,aAAO,UAAU;AACjC,QAAA,EAAE,mBAAmBC,aAAAA;AACrB,QAAA,cAAcC,uBAAYC,iBAAAA,sBAAsB;AAChD,QAAA;AAAA,IACJ,gBAAgB,EAAE,WAAW,WAAW,cAAc;AAAA,EACpD,IAAAC,aAAA,QAAQ,YAAY,SAAS,iBAAiB,CAAC;AAC7C,QAAA;AAAA,IACJ,QAAQ,EAAE,GAAG;AAAA,EAAA,IACXC,eAAAA,cAAc,+BAA+B;AACjD,QAAM,EAAE,KAAK,MAAM,QAAQC,aAAe,eAAA;AAE1C,QAAM,aAAa,OAAO;AAEpB,QAAA,EAAE,mBAAmBC,aAAAA;AAE3BC,QAAAA,UAAU,MAAM;AACA,kBAAA,QAAQ,aAAa,wBAAwB,wBAAwB;AAAA,MACjF,WAAWC,UAAA;AAAA,IAAA,CACZ;AAAA,EAAA,GACA,CAAC,UAAU,CAAC;AAET,QAAA,EAAE,WAAWC,WAAA;AAAA,IACjB,CAAC,kBAAkB,EAAE;AAAA,IACrB,YAAY;AACJ,YAAA;AAAA,QACJ,MAAM,EAAE,KAAK;AAAA,MACX,IAAA,MAAM,IAAI,0BAA0B,EAAE,EAAE;AAE3B,uBAAA;AAAA,QACf,GAAG;AAAA,MAAA,CACJ;AAEM,aAAA;AAAA,IACT;AAAA,IACA;AAAA,MACE,SAAS,CAAC,cAAc,CAAC;AAAA,MACzB,QAAQ,KAAK;AACX,YAAI,IAAI,SAAS,KAAK,MAAM,SAAS,SAAS,sBAAsB;AAC/C,6BAAA;AAAA,YACjB,MAAM;AAAA,YACN,SAAS;AAAA,cACP,IAAI;AAAA,cACJ,gBACE;AAAA,YACJ;AAAA,UAAA,CACD;AAAA,QAAA,OACI;AACc,6BAAA;AAAA,YACjB,MAAM;AAAA,YACN,SAAS,eAAe,GAAG;AAAA,UAAA,CAC5B;AAAA,QACH;AAAA,MACF;AAAA,IACF;AAAA,EAAA;AAGI,QAAA,eAAe,OAAO,MAAM,YAAY;AAC9B,kBAAA,QAAQ,aAAa,oBAAoB,iBAAiB;AAAA,MACtE,WAAWD,UAAA;AAAA,IAAA,CACZ;AACO;AACR,UAAM,cACJ,KAAK,YAAY,SAAS,KAAK,UAAU,EAAE,KAAK,KAAK,aAAa,MAC9D,SAAS,KAAK,UAAU,EAAE,IAC1B;AAEN,UAAME,eAAc,KAAK,YAAY,MAAM,GAAG;AAE1C,QAAA;AACI,YAAA;AAAA,QACJ,MAAM,EAAE,MAAM,SAAS;AAAA,MACrB,IAAA,aACA,MAAM,KAAK,0BAA0B;AAAA,QACnC,GAAG;AAAA,QACH,UAAU;AAAA,QACV,aAAAA;AAAAA,MACD,CAAA,IACD,MAAM,IAAI,0BAA0B,EAAE,IAAI;AAAA,QACxC,MAAM,KAAK;AAAA,QACX,aAAa,KAAK;AAAA,QAClB,aAAAA;AAAAA,MAAA,CACD;AAEK;AAEV,UAAI,YAAY;AACN,gBAAA,QAAQ,6BAA6B,SAAS,EAAE,IAAI,EAAE,eAAe,UAAU;AACvF,uBAAe,wBAAwB;AAAA,MACzC;AACiB,uBAAA;AAAA,QACf,GAAG;AAAA,MAAA,CACJ;AAEkB,yBAAA;AAAA,QACjB,MAAM;AAAA,QACN,SAAS,aACL,cAAc;AAAA,UACZ,IAAI;AAAA,UACJ,gBAAgB;AAAA,QACjB,CAAA,IACD,cAAc;AAAA,UACZ,IAAI;AAAA,UACJ,gBAAgB;AAAA,QAAA,CACjB;AAAA,MAAA,CACN;AAEa,oBAAA,QAAQ,aAAa,mBAAmB,gBAAgB;AAAA,QACpE,MAAM,eAAe;AAAA,QACrB,WAAWF,UAAA;AAAA,MAAA,CACZ;AAAA,aACM,KAAK;AACZ,YAAM,SAASG,gBAAA,gBAAgB,IAAI,SAAS,IAAI;AAChD,cAAQ,UAAU,MAAM;AAExB,UAAI,KAAK,UAAU,MAAM,OAAO,YAAY,sBAAsB;AAC7C,2BAAA;AAAA,UACjB,MAAM;AAAA,UACN,SAAS,IAAI,SAAS,KAAK,WAAW;AAAA,QAAA,CACvC;AAAA,MAAA,WACQ,KAAK,UAAU,MAAM,OAAO,SAAS,SAAS,sBAAsB;AAC1D,2BAAA;AAAA,UACjB,MAAM;AAAA,UACN,SAAS;AAAA,YACP,IAAI;AAAA,YACJ,gBACE;AAAA,UACJ;AAAA,QAAA,CACD;AAAA,MAAA,OACI;AACc,2BAAA;AAAA,UACjB,MAAM;AAAA,UACN,SAAS,KAAK,UAAU,MAAM,WAAW;AAAA,QAAA,CAC1C;AAAA,MACH;AACU;IACZ;AAAA,EAAA;AAGF,QAAM,gBAAiB,aAAa,CAAC,cAAgB,aAAa;AAClE,QAAM,YAAY,CAAC,cAAc,CAAC,iBAAiB,WAAW;AAE9D,MAAI,WAAW;AACb,WAAQvC,2BAAAA,IAAA,aAAA,EAAY,mBAAmB,eAAe,KAAM,CAAA;AAAA,EAC9D;AAEM,QAAA,wBAAwB,CAAC,QAAQ;AACrC,QAAI,KAAK,UAAU,MAAM,OAAO,SAAS,SAAS,sBAAsB;AACnD,yBAAA;AAAA,QACjB,MAAM;AAAA,QACN,SAAS;AAAA,UACP,IAAI;AAAA,UACJ,gBACE;AAAA,QACJ;AAAA,MAAA,CACD;AAAA,IAAA,OACI;AACc,yBAAA;AAAA,QACjB,MAAM;AAAA,QACN,SAAS,eAAe,GAAG;AAAA,MAAA,CAC5B;AAAA,IACH;AAAA,EAAA;AAGF,yCACGa,mBACC,EAAA,UAAA;AAAA,IAACb,2BAAAA,IAAAc,aAAA,mBAAA,EAAkB,MAAK,kBAAkB,CAAA;AAAA,IAC1Cd,2BAAA;AAAA,MAACwC,OAAA;AAAA,MAAA;AAAA,QACC,kBAAkB;AAAA,QAClB,kBAAkB;AAAA,QAClB,eAAe;AAAA,UACb,MAAM,eAAe,QAAQ;AAAA,UAC7B,aAAa,eAAe,eAAe;AAAA,UAC3C,UAAU,eAAe,WACrB,cAAc,SAAS,SAAA,IACvB,eAAe;AAAA,UACnB,aAAa,eAAe,YAAY,KAAK,GAAG;AAAA,QAClD;AAAA,QACA,oBAAkB;AAAA,QAClB,UAAU,CAAC,MAAM,YAAY,aAAa,MAAM,OAAO;AAAA,QAEtD,WAAC,EAAE,QAAQ,cAAc,cAAc,aAAa;AACnD,iDACGC,mBACC,EAAA,UAAA;AAAA,YAAAzC,2BAAA;AAAA,cAAC0C,MAAA;AAAA,cAAA;AAAA,gBACC,SAAQ;AAAA,gBACR,OAAO;AAAA,kBACL,IAAI;AAAA,kBACJ,gBAAgB;AAAA,gBAClB;AAAA,gBACA,OAAO;AAAA,gBACP,UAAU;AAAA,gBACV;AAAA,gBACA;AAAA,gBACA;AAAA,gBACA,eAAc;AAAA,gBACd,mBAAmB;AAAA,cAAA;AAAA,YACrB;AAAA,YACA1C,2BAAAA,IAACkB,aAAAA,iBACC,UAACd,2BAAAA,KAAAF,aAAAA,MAAA,EAAK,WAAU,UAAS,YAAW,WAAU,KAAK,GAChD,UAAA;AAAA,cAAQ,QAAA,eAAe,IAAI,KAC1BF,2BAAA,IAAC2C,kBAAS,OAAO,eAAe,WAAW,WAAWP,UAAqB,oBAAA,CAAA;AAAA,cAE7EpC,2BAAA;AAAA,gBAAC;AAAA,gBAAA;AAAA,kBACC;AAAA,kBACA,UAAU;AAAA,kBACV;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,gBAAA;AAAA,cACF;AAAA,YAAA,EAAA,CACF,EACF,CAAA;AAAA,UACF,EAAA,CAAA;AAAA,QAEJ;AAAA,MAAA;AAAA,IACF;AAAA,EACF,EAAA,CAAA;AAEJ;;"}
@@ -5,13 +5,13 @@ import { useRBAC, pxToRem } from "@strapi/helper-plugin";
5
5
  import { ExclamationMarkCircle, ExternalLink } from "@strapi/icons";
6
6
  import { useIntl } from "react-intl";
7
7
  import { useSelector } from "react-redux";
8
- import { s as selectAdminPermissions } from "./AuthenticatedApp-da1595e9.mjs";
8
+ import { s as selectAdminPermissions } from "./AuthenticatedApp-2b5530b9.mjs";
9
9
  import { u as useLicenseLimits } from "./useLicenseLimits-13a102d3.mjs";
10
10
  import "react";
11
11
  import "react-query";
12
12
  import "semver/functions/lt";
13
13
  import "semver/functions/valid";
14
- import "./index-b6ee936b.mjs";
14
+ import "./index-9f08bcc3.mjs";
15
15
  import "react-dom/client";
16
16
  import "invariant";
17
17
  import "lodash/isFunction";
@@ -122,4 +122,4 @@ const AdminSeatInfoEE = () => {
122
122
  export {
123
123
  AdminSeatInfoEE
124
124
  };
125
- //# sourceMappingURL=index-1932eedf.mjs.map
125
+ //# sourceMappingURL=index-55f565cf.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"index-1932eedf.mjs","sources":["../../ee/admin/src/pages/SettingsPage/pages/ApplicationInfosPage/components/AdminSeatInfo/index.js"],"sourcesContent":["import React from 'react';\n\nimport { Flex, GridItem, Icon, Tooltip, Typography } from '@strapi/design-system';\nimport { Link } from '@strapi/design-system/v2';\nimport { pxToRem, useRBAC } from '@strapi/helper-plugin';\nimport { ExclamationMarkCircle, ExternalLink } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\nimport { useSelector } from 'react-redux';\n\nimport { selectAdminPermissions } from '../../../../../../../../../admin/src/selectors';\nimport { useLicenseLimits } from '../../../../../../hooks/useLicenseLimits';\n\nconst BILLING_STRAPI_CLOUD_URL = 'https://cloud.strapi.io/profile/billing';\nconst BILLING_SELF_HOSTED_URL = 'https://strapi.io/billing/request-seats';\n\nexport const AdminSeatInfoEE = () => {\n const { formatMessage } = useIntl();\n const permissions = useSelector(selectAdminPermissions);\n const {\n isLoading: isRBACLoading,\n allowedActions: { canRead, canCreate, canUpdate, canDelete },\n } = useRBAC(permissions.settings.users);\n const {\n license: { licenseLimitStatus, enforcementUserCount, permittedSeats, isHostedOnStrapiCloud },\n isError,\n isLoading: isLicenseLoading,\n } = useLicenseLimits({\n // TODO: this creates a waterfall which we should avoid to render earlier, but for that\n // we will have to move away from data-fetching hooks to query functions.\n // Short-term we could at least implement a loader, for the user to have visual feedback\n // in case the requests take a while\n enabled: !isRBACLoading && canRead && canCreate && canUpdate && canDelete,\n });\n\n const isLoading = isRBACLoading || isLicenseLoading;\n\n if (isError || isLoading || !permittedSeats) {\n return null;\n }\n\n return (\n <GridItem col={6} s={12}>\n <Typography variant=\"sigma\" textColor=\"neutral600\">\n {formatMessage({\n id: 'Settings.application.admin-seats',\n defaultMessage: 'Admin seats',\n })}\n </Typography>\n <Flex gap={2}>\n <Flex>\n <Typography as=\"p\">\n {formatMessage(\n {\n id: 'Settings.application.ee.admin-seats.count',\n defaultMessage: '<text>{enforcementUserCount}</text>/{permittedSeats}',\n },\n {\n permittedSeats,\n enforcementUserCount,\n // eslint-disable-next-line react/no-unstable-nested-components\n text: (chunks) => (\n <Typography\n fontWeight=\"semiBold\"\n textColor={enforcementUserCount > permittedSeats ? 'danger500' : null}\n >\n {chunks}\n </Typography>\n ),\n }\n )}\n </Typography>\n </Flex>\n {licenseLimitStatus === 'OVER_LIMIT' && (\n <Tooltip\n description={formatMessage({\n id: 'Settings.application.ee.admin-seats.at-limit-tooltip',\n defaultMessage: 'At limit: add seats to invite more users',\n })}\n >\n <Icon\n width={`${pxToRem(14)}rem`}\n height={`${pxToRem(14)}rem`}\n color=\"danger500\"\n as={ExclamationMarkCircle}\n />\n </Tooltip>\n )}\n </Flex>\n <Link\n href={isHostedOnStrapiCloud ? BILLING_STRAPI_CLOUD_URL : BILLING_SELF_HOSTED_URL}\n isExternal\n endIcon={<ExternalLink />}\n >\n {formatMessage(\n {\n id: 'Settings.application.ee.admin-seats.add-seats',\n defaultMessage:\n '{isHostedOnStrapiCloud, select, true {Add seats} other {Contact sales}}',\n },\n { isHostedOnStrapiCloud }\n )}\n </Link>\n </GridItem>\n );\n};\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAYA,MAAM,2BAA2B;AACjC,MAAM,0BAA0B;AAEzB,MAAM,kBAAkB,MAAM;AAC7B,QAAA,EAAE,kBAAkB;AACpB,QAAA,cAAc,YAAY,sBAAsB;AAChD,QAAA;AAAA,IACJ,WAAW;AAAA,IACX,gBAAgB,EAAE,SAAS,WAAW,WAAW,UAAU;AAAA,EACzD,IAAA,QAAQ,YAAY,SAAS,KAAK;AAChC,QAAA;AAAA,IACJ,SAAS,EAAE,oBAAoB,sBAAsB,gBAAgB,sBAAsB;AAAA,IAC3F;AAAA,IACA,WAAW;AAAA,MACT,iBAAiB;AAAA;AAAA;AAAA;AAAA;AAAA,IAKnB,SAAS,CAAC,iBAAiB,WAAW,aAAa,aAAa;AAAA,EAAA,CACjE;AAED,QAAM,YAAY,iBAAiB;AAE/B,MAAA,WAAW,aAAa,CAAC,gBAAgB;AACpC,WAAA;AAAA,EACT;AAEA,SACG,qBAAA,UAAA,EAAS,KAAK,GAAG,GAAG,IACnB,UAAA;AAAA,IAAA,oBAAC,YAAW,EAAA,SAAQ,SAAQ,WAAU,cACnC,UAAc,cAAA;AAAA,MACb,IAAI;AAAA,MACJ,gBAAgB;AAAA,IACjB,CAAA,GACH;AAAA,IACA,qBAAC,MAAK,EAAA,KAAK,GACT,UAAA;AAAA,MAAA,oBAAC,MACC,EAAA,UAAA,oBAAC,YAAW,EAAA,IAAG,KACZ,UAAA;AAAA,QACC;AAAA,UACE,IAAI;AAAA,UACJ,gBAAgB;AAAA,QAClB;AAAA,QACA;AAAA,UACE;AAAA,UACA;AAAA;AAAA,UAEA,MAAM,CAAC,WACL;AAAA,YAAC;AAAA,YAAA;AAAA,cACC,YAAW;AAAA,cACX,WAAW,uBAAuB,iBAAiB,cAAc;AAAA,cAEhE,UAAA;AAAA,YAAA;AAAA,UACH;AAAA,QAEJ;AAAA,SAEJ,EACF,CAAA;AAAA,MACC,uBAAuB,gBACtB;AAAA,QAAC;AAAA,QAAA;AAAA,UACC,aAAa,cAAc;AAAA,YACzB,IAAI;AAAA,YACJ,gBAAgB;AAAA,UAAA,CACjB;AAAA,UAED,UAAA;AAAA,YAAC;AAAA,YAAA;AAAA,cACC,OAAO,GAAG,QAAQ,EAAE,CAAC;AAAA,cACrB,QAAQ,GAAG,QAAQ,EAAE,CAAC;AAAA,cACtB,OAAM;AAAA,cACN,IAAI;AAAA,YAAA;AAAA,UACN;AAAA,QAAA;AAAA,MACF;AAAA,IAAA,GAEJ;AAAA,IACA;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,MAAM,wBAAwB,2BAA2B;AAAA,QACzD,YAAU;AAAA,QACV,6BAAU,cAAa,EAAA;AAAA,QAEtB,UAAA;AAAA,UACC;AAAA,YACE,IAAI;AAAA,YACJ,gBACE;AAAA,UACJ;AAAA,UACA,EAAE,sBAAsB;AAAA,QAC1B;AAAA,MAAA;AAAA,IACF;AAAA,EACF,EAAA,CAAA;AAEJ;"}
1
+ {"version":3,"file":"index-55f565cf.mjs","sources":["../../ee/admin/src/pages/SettingsPage/pages/ApplicationInfosPage/components/AdminSeatInfo/index.js"],"sourcesContent":["import React from 'react';\n\nimport { Flex, GridItem, Icon, Tooltip, Typography } from '@strapi/design-system';\nimport { Link } from '@strapi/design-system/v2';\nimport { pxToRem, useRBAC } from '@strapi/helper-plugin';\nimport { ExclamationMarkCircle, ExternalLink } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\nimport { useSelector } from 'react-redux';\n\nimport { selectAdminPermissions } from '../../../../../../../../../admin/src/selectors';\nimport { useLicenseLimits } from '../../../../../../hooks/useLicenseLimits';\n\nconst BILLING_STRAPI_CLOUD_URL = 'https://cloud.strapi.io/profile/billing';\nconst BILLING_SELF_HOSTED_URL = 'https://strapi.io/billing/request-seats';\n\nexport const AdminSeatInfoEE = () => {\n const { formatMessage } = useIntl();\n const permissions = useSelector(selectAdminPermissions);\n const {\n isLoading: isRBACLoading,\n allowedActions: { canRead, canCreate, canUpdate, canDelete },\n } = useRBAC(permissions.settings.users);\n const {\n license: { licenseLimitStatus, enforcementUserCount, permittedSeats, isHostedOnStrapiCloud },\n isError,\n isLoading: isLicenseLoading,\n } = useLicenseLimits({\n // TODO: this creates a waterfall which we should avoid to render earlier, but for that\n // we will have to move away from data-fetching hooks to query functions.\n // Short-term we could at least implement a loader, for the user to have visual feedback\n // in case the requests take a while\n enabled: !isRBACLoading && canRead && canCreate && canUpdate && canDelete,\n });\n\n const isLoading = isRBACLoading || isLicenseLoading;\n\n if (isError || isLoading || !permittedSeats) {\n return null;\n }\n\n return (\n <GridItem col={6} s={12}>\n <Typography variant=\"sigma\" textColor=\"neutral600\">\n {formatMessage({\n id: 'Settings.application.admin-seats',\n defaultMessage: 'Admin seats',\n })}\n </Typography>\n <Flex gap={2}>\n <Flex>\n <Typography as=\"p\">\n {formatMessage(\n {\n id: 'Settings.application.ee.admin-seats.count',\n defaultMessage: '<text>{enforcementUserCount}</text>/{permittedSeats}',\n },\n {\n permittedSeats,\n enforcementUserCount,\n // eslint-disable-next-line react/no-unstable-nested-components\n text: (chunks) => (\n <Typography\n fontWeight=\"semiBold\"\n textColor={enforcementUserCount > permittedSeats ? 'danger500' : null}\n >\n {chunks}\n </Typography>\n ),\n }\n )}\n </Typography>\n </Flex>\n {licenseLimitStatus === 'OVER_LIMIT' && (\n <Tooltip\n description={formatMessage({\n id: 'Settings.application.ee.admin-seats.at-limit-tooltip',\n defaultMessage: 'At limit: add seats to invite more users',\n })}\n >\n <Icon\n width={`${pxToRem(14)}rem`}\n height={`${pxToRem(14)}rem`}\n color=\"danger500\"\n as={ExclamationMarkCircle}\n />\n </Tooltip>\n )}\n </Flex>\n <Link\n href={isHostedOnStrapiCloud ? BILLING_STRAPI_CLOUD_URL : BILLING_SELF_HOSTED_URL}\n isExternal\n endIcon={<ExternalLink />}\n >\n {formatMessage(\n {\n id: 'Settings.application.ee.admin-seats.add-seats',\n defaultMessage:\n '{isHostedOnStrapiCloud, select, true {Add seats} other {Contact sales}}',\n },\n { isHostedOnStrapiCloud }\n )}\n </Link>\n </GridItem>\n );\n};\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAYA,MAAM,2BAA2B;AACjC,MAAM,0BAA0B;AAEzB,MAAM,kBAAkB,MAAM;AAC7B,QAAA,EAAE,kBAAkB;AACpB,QAAA,cAAc,YAAY,sBAAsB;AAChD,QAAA;AAAA,IACJ,WAAW;AAAA,IACX,gBAAgB,EAAE,SAAS,WAAW,WAAW,UAAU;AAAA,EACzD,IAAA,QAAQ,YAAY,SAAS,KAAK;AAChC,QAAA;AAAA,IACJ,SAAS,EAAE,oBAAoB,sBAAsB,gBAAgB,sBAAsB;AAAA,IAC3F;AAAA,IACA,WAAW;AAAA,MACT,iBAAiB;AAAA;AAAA;AAAA;AAAA;AAAA,IAKnB,SAAS,CAAC,iBAAiB,WAAW,aAAa,aAAa;AAAA,EAAA,CACjE;AAED,QAAM,YAAY,iBAAiB;AAE/B,MAAA,WAAW,aAAa,CAAC,gBAAgB;AACpC,WAAA;AAAA,EACT;AAEA,SACG,qBAAA,UAAA,EAAS,KAAK,GAAG,GAAG,IACnB,UAAA;AAAA,IAAA,oBAAC,YAAW,EAAA,SAAQ,SAAQ,WAAU,cACnC,UAAc,cAAA;AAAA,MACb,IAAI;AAAA,MACJ,gBAAgB;AAAA,IACjB,CAAA,GACH;AAAA,IACA,qBAAC,MAAK,EAAA,KAAK,GACT,UAAA;AAAA,MAAA,oBAAC,MACC,EAAA,UAAA,oBAAC,YAAW,EAAA,IAAG,KACZ,UAAA;AAAA,QACC;AAAA,UACE,IAAI;AAAA,UACJ,gBAAgB;AAAA,QAClB;AAAA,QACA;AAAA,UACE;AAAA,UACA;AAAA;AAAA,UAEA,MAAM,CAAC,WACL;AAAA,YAAC;AAAA,YAAA;AAAA,cACC,YAAW;AAAA,cACX,WAAW,uBAAuB,iBAAiB,cAAc;AAAA,cAEhE,UAAA;AAAA,YAAA;AAAA,UACH;AAAA,QAEJ;AAAA,SAEJ,EACF,CAAA;AAAA,MACC,uBAAuB,gBACtB;AAAA,QAAC;AAAA,QAAA;AAAA,UACC,aAAa,cAAc;AAAA,YACzB,IAAI;AAAA,YACJ,gBAAgB;AAAA,UAAA,CACjB;AAAA,UAED,UAAA;AAAA,YAAC;AAAA,YAAA;AAAA,cACC,OAAO,GAAG,QAAQ,EAAE,CAAC;AAAA,cACrB,QAAQ,GAAG,QAAQ,EAAE,CAAC;AAAA,cACtB,OAAM;AAAA,cACN,IAAI;AAAA,YAAA;AAAA,UACN;AAAA,QAAA;AAAA,MACF;AAAA,IAAA,GAEJ;AAAA,IACA;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,MAAM,wBAAwB,2BAA2B;AAAA,QACzD,YAAU;AAAA,QACV,6BAAU,cAAa,EAAA;AAAA,QAEtB,UAAA;AAAA,UACC;AAAA,YACE,IAAI;AAAA,YACJ,gBACE;AAAA,UACJ;AAAA,UACA,EAAE,sBAAsB;AAAA,QAC1B;AAAA,MAAA;AAAA,IACF;AAAA,EACF,EAAA,CAAA;AAEJ;"}
@@ -12,13 +12,13 @@ const reactIntl = require("react-intl");
12
12
  const reactRedux = require("react-redux");
13
13
  const reactRouterDom = require("react-router-dom");
14
14
  const styled = require("styled-components");
15
- const AuthenticatedApp = require("./AuthenticatedApp-61dfdab8.js");
15
+ const AuthenticatedApp = require("./AuthenticatedApp-12b0b80d.js");
16
16
  const useAdminRolePermissions = require("./useAdminRolePermissions-cb1a3ee2.js");
17
17
  const yup = require("yup");
18
18
  require("react-query");
19
19
  require("semver/functions/lt");
20
20
  require("semver/functions/valid");
21
- require("./index-0ed05075.js");
21
+ require("./index-8b79ee6c.js");
22
22
  require("react-dom/client");
23
23
  require("invariant");
24
24
  require("lodash/isFunction");
@@ -263,4 +263,4 @@ function index() {
263
263
  }
264
264
  exports.CreatePage = CreatePage;
265
265
  exports.default = index;
266
- //# sourceMappingURL=index-e34335f1.js.map
266
+ //# sourceMappingURL=index-56cc01e0.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index-e34335f1.js","sources":["../../admin/src/pages/SettingsPage/pages/Roles/CreatePage/utils/schema.js","../../admin/src/pages/SettingsPage/pages/Roles/CreatePage/index.js"],"sourcesContent":["import { translatedErrors } from '@strapi/helper-plugin';\nimport * as yup from 'yup';\n\nconst schema = yup.object().shape({\n name: yup.string().required(translatedErrors.required),\n description: yup.string().required(translatedErrors.required),\n});\n\nexport default schema;\n","import React, { useRef, useState } 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 {\n CheckPagePermissions,\n Form,\n Link,\n LoadingIndicatorPage,\n SettingsPageTitle,\n useFetchClient,\n useNotification,\n useOverlayBlocker,\n useTracking,\n} from '@strapi/helper-plugin';\nimport { ArrowLeft } from '@strapi/icons';\nimport { format } from 'date-fns';\nimport { Formik } from 'formik';\nimport isEmpty from 'lodash/isEmpty';\nimport { useIntl } from 'react-intl';\nimport { useSelector } from 'react-redux';\nimport { useHistory, useRouteMatch } from 'react-router-dom';\nimport styled from 'styled-components';\n\nimport { selectAdminPermissions } from '../../../../../selectors';\nimport Permissions from '../EditPage/components/Permissions';\nimport { useAdminRolePermissionLayout } from '../hooks/useAdminRolePermissionLayout';\nimport { useAdminRolePermissions } from '../hooks/useAdminRolePermissions';\n\nimport schema from './utils/schema';\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\nconst CreatePage = () => {\n const route = useRouteMatch('/settings/roles/duplicate/:id');\n const toggleNotification = useNotification();\n const { lockApp, unlockApp } = useOverlayBlocker();\n const { formatMessage } = useIntl();\n const [isSubmitting, setIsSubmiting] = useState(false);\n const { replace } = useHistory();\n const permissionsRef = useRef();\n const { trackUsage } = useTracking();\n const { post, put } = useFetchClient();\n\n const { params } = route ?? {};\n\n const { isLoading: isLoadingPermissionsLayout, data: permissionsLayout } =\n useAdminRolePermissionLayout(params?.id, {\n cacheTime: 0,\n });\n\n const { permissions: rolePermissions, isLoading: isLoadingRole } = useAdminRolePermissions(\n { id: params?.id },\n {\n cacheTime: 0,\n\n // only fetch permissions if a role is cloned\n enabled: !!params?.id,\n }\n );\n\n const handleCreateRoleSubmit = (data) => {\n lockApp();\n setIsSubmiting(true);\n\n if (params?.id) {\n trackUsage('willDuplicateRole');\n } else {\n trackUsage('willCreateNewRole');\n }\n\n Promise.resolve(post('/admin/roles', data))\n .then(async ({ data: res }) => {\n const { permissionsToSend } = permissionsRef.current.getPermissions();\n\n if (params?.id) {\n trackUsage('didDuplicateRole');\n } else {\n trackUsage('didCreateNewRole');\n }\n\n if (res.data.id && !isEmpty(permissionsToSend)) {\n await put(`/admin/roles/${res.data.id}/permissions`, { permissions: permissionsToSend });\n }\n\n return res;\n })\n .then((res) => {\n setIsSubmiting(false);\n toggleNotification({\n type: 'success',\n message: { id: 'Settings.roles.created', defaultMessage: 'created' },\n });\n replace(`/settings/roles/${res.data.id}`);\n })\n .catch((err) => {\n console.error(err);\n setIsSubmiting(false);\n toggleNotification({\n type: 'warning',\n message: { id: 'notification.error' },\n });\n })\n .finally(() => {\n unlockApp();\n });\n };\n\n const defaultDescription = `${formatMessage({\n id: 'Settings.roles.form.created',\n defaultMessage: 'Created',\n })} ${format(new Date(), 'PPP')}`;\n\n return (\n <Main>\n <SettingsPageTitle name=\"Roles\" />\n <Formik\n initialValues={{ name: '', description: defaultDescription }}\n onSubmit={handleCreateRoleSubmit}\n validationSchema={schema}\n validateOnChange={false}\n >\n {({ handleSubmit, values, errors, handleReset, handleChange }) => (\n <Form noValidate>\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 onClick={handleSubmit} 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={\n <Link startIcon={<ArrowLeft />} to=\"/settings/roles\">\n {formatMessage({\n id: 'global.back',\n defaultMessage: 'Back',\n })}\n </Link>\n }\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 {!isLoadingPermissionsLayout && !isLoadingRole ? (\n <Box shadow=\"filterShadow\" hasRadius>\n <Permissions\n isFormDisabled={false}\n ref={permissionsRef}\n permissions={rolePermissions}\n layout={permissionsLayout}\n />\n </Box>\n ) : (\n <Box background=\"neutral0\" padding={6} shadow=\"filterShadow\" hasRadius>\n <LoadingIndicatorPage />\n </Box>\n )}\n </Flex>\n </ContentLayout>\n </>\n </Form>\n )}\n </Formik>\n </Main>\n );\n};\n\nexport default function () {\n const permissions = useSelector(selectAdminPermissions);\n\n return (\n <CheckPagePermissions permissions={permissions.settings.roles.create}>\n <CreatePage />\n </CheckPagePermissions>\n );\n}\n\nexport { CreatePage };\n"],"names":["yup","translatedErrors","styled","useRouteMatch","useNotification","useOverlayBlocker","useIntl","useState","useHistory","useRef","useTracking","useFetchClient","useAdminRolePermissionLayout","useAdminRolePermissions","isEmpty","format","Main","jsx","SettingsPageTitle","Formik","Form","jsxs","Fragment","HeaderLayout","Flex","Button","Link","ArrowLeft","ContentLayout","Box","Typography","Grid","GridItem","TextInput","Textarea","Permissions","LoadingIndicatorPage","useSelector","selectAdminPermissions","CheckPagePermissions"],"mappings":"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"}
1
+ {"version":3,"file":"index-56cc01e0.js","sources":["../../admin/src/pages/SettingsPage/pages/Roles/CreatePage/utils/schema.js","../../admin/src/pages/SettingsPage/pages/Roles/CreatePage/index.js"],"sourcesContent":["import { translatedErrors } from '@strapi/helper-plugin';\nimport * as yup from 'yup';\n\nconst schema = yup.object().shape({\n name: yup.string().required(translatedErrors.required),\n description: yup.string().required(translatedErrors.required),\n});\n\nexport default schema;\n","import React, { useRef, useState } 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 {\n CheckPagePermissions,\n Form,\n Link,\n LoadingIndicatorPage,\n SettingsPageTitle,\n useFetchClient,\n useNotification,\n useOverlayBlocker,\n useTracking,\n} from '@strapi/helper-plugin';\nimport { ArrowLeft } from '@strapi/icons';\nimport { format } from 'date-fns';\nimport { Formik } from 'formik';\nimport isEmpty from 'lodash/isEmpty';\nimport { useIntl } from 'react-intl';\nimport { useSelector } from 'react-redux';\nimport { useHistory, useRouteMatch } from 'react-router-dom';\nimport styled from 'styled-components';\n\nimport { selectAdminPermissions } from '../../../../../selectors';\nimport Permissions from '../EditPage/components/Permissions';\nimport { useAdminRolePermissionLayout } from '../hooks/useAdminRolePermissionLayout';\nimport { useAdminRolePermissions } from '../hooks/useAdminRolePermissions';\n\nimport schema from './utils/schema';\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\nconst CreatePage = () => {\n const route = useRouteMatch('/settings/roles/duplicate/:id');\n const toggleNotification = useNotification();\n const { lockApp, unlockApp } = useOverlayBlocker();\n const { formatMessage } = useIntl();\n const [isSubmitting, setIsSubmiting] = useState(false);\n const { replace } = useHistory();\n const permissionsRef = useRef();\n const { trackUsage } = useTracking();\n const { post, put } = useFetchClient();\n\n const { params } = route ?? {};\n\n const { isLoading: isLoadingPermissionsLayout, data: permissionsLayout } =\n useAdminRolePermissionLayout(params?.id, {\n cacheTime: 0,\n });\n\n const { permissions: rolePermissions, isLoading: isLoadingRole } = useAdminRolePermissions(\n { id: params?.id },\n {\n cacheTime: 0,\n\n // only fetch permissions if a role is cloned\n enabled: !!params?.id,\n }\n );\n\n const handleCreateRoleSubmit = (data) => {\n lockApp();\n setIsSubmiting(true);\n\n if (params?.id) {\n trackUsage('willDuplicateRole');\n } else {\n trackUsage('willCreateNewRole');\n }\n\n Promise.resolve(post('/admin/roles', data))\n .then(async ({ data: res }) => {\n const { permissionsToSend } = permissionsRef.current.getPermissions();\n\n if (params?.id) {\n trackUsage('didDuplicateRole');\n } else {\n trackUsage('didCreateNewRole');\n }\n\n if (res.data.id && !isEmpty(permissionsToSend)) {\n await put(`/admin/roles/${res.data.id}/permissions`, { permissions: permissionsToSend });\n }\n\n return res;\n })\n .then((res) => {\n setIsSubmiting(false);\n toggleNotification({\n type: 'success',\n message: { id: 'Settings.roles.created', defaultMessage: 'created' },\n });\n replace(`/settings/roles/${res.data.id}`);\n })\n .catch((err) => {\n console.error(err);\n setIsSubmiting(false);\n toggleNotification({\n type: 'warning',\n message: { id: 'notification.error' },\n });\n })\n .finally(() => {\n unlockApp();\n });\n };\n\n const defaultDescription = `${formatMessage({\n id: 'Settings.roles.form.created',\n defaultMessage: 'Created',\n })} ${format(new Date(), 'PPP')}`;\n\n return (\n <Main>\n <SettingsPageTitle name=\"Roles\" />\n <Formik\n initialValues={{ name: '', description: defaultDescription }}\n onSubmit={handleCreateRoleSubmit}\n validationSchema={schema}\n validateOnChange={false}\n >\n {({ handleSubmit, values, errors, handleReset, handleChange }) => (\n <Form noValidate>\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 onClick={handleSubmit} 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={\n <Link startIcon={<ArrowLeft />} to=\"/settings/roles\">\n {formatMessage({\n id: 'global.back',\n defaultMessage: 'Back',\n })}\n </Link>\n }\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 {!isLoadingPermissionsLayout && !isLoadingRole ? (\n <Box shadow=\"filterShadow\" hasRadius>\n <Permissions\n isFormDisabled={false}\n ref={permissionsRef}\n permissions={rolePermissions}\n layout={permissionsLayout}\n />\n </Box>\n ) : (\n <Box background=\"neutral0\" padding={6} shadow=\"filterShadow\" hasRadius>\n <LoadingIndicatorPage />\n </Box>\n )}\n </Flex>\n </ContentLayout>\n </>\n </Form>\n )}\n </Formik>\n </Main>\n );\n};\n\nexport default function () {\n const permissions = useSelector(selectAdminPermissions);\n\n return (\n <CheckPagePermissions permissions={permissions.settings.roles.create}>\n <CreatePage />\n </CheckPagePermissions>\n );\n}\n\nexport { CreatePage };\n"],"names":["yup","translatedErrors","styled","useRouteMatch","useNotification","useOverlayBlocker","useIntl","useState","useHistory","useRef","useTracking","useFetchClient","useAdminRolePermissionLayout","useAdminRolePermissions","isEmpty","format","Main","jsx","SettingsPageTitle","Formik","Form","jsxs","Fragment","HeaderLayout","Flex","Button","Link","ArrowLeft","ContentLayout","Box","Typography","Grid","GridItem","TextInput","Textarea","Permissions","LoadingIndicatorPage","useSelector","selectAdminPermissions","CheckPagePermissions"],"mappings":"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"}
@@ -2,7 +2,7 @@ import { jsx, jsxs } from "react/jsx-runtime";
2
2
  import { translatedErrors, useNotification, useFetchClient, useOverlayBlocker, useTracking, useAPIErrorHandler, SettingsPageTitle, Link, LoadingIndicatorPage, useRBAC } from "@strapi/helper-plugin";
3
3
  import { useSelector } from "react-redux";
4
4
  import { useRouteMatch, Redirect } from "react-router-dom";
5
- import { s as selectAdminPermissions } from "./AuthenticatedApp-da1595e9.mjs";
5
+ import { s as selectAdminPermissions } from "./AuthenticatedApp-2b5530b9.mjs";
6
6
  import { useState, useRef } from "react";
7
7
  import { Box, Flex, Typography, Button, Grid, GridItem, TextInput, Textarea, Main, HeaderLayout, ContentLayout } from "@strapi/design-system";
8
8
  import { ArrowLeft } from "@strapi/icons";
@@ -15,7 +15,7 @@ import * as yup from "yup";
15
15
  import "react-query";
16
16
  import "semver/functions/lt";
17
17
  import "semver/functions/valid";
18
- import "./index-b6ee936b.mjs";
18
+ import "./index-9f08bcc3.mjs";
19
19
  import "react-dom/client";
20
20
  import "invariant";
21
21
  import "lodash/isFunction";
@@ -270,4 +270,4 @@ const ProtectedEditPage = () => {
270
270
  export {
271
271
  ProtectedEditPage as default
272
272
  };
273
- //# sourceMappingURL=index-51986071.mjs.map
273
+ //# sourceMappingURL=index-5d044c87.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"index-51986071.mjs","sources":["../../admin/src/pages/SettingsPage/pages/Roles/EditPage/components/RoleForm/index.js","../../admin/src/pages/SettingsPage/pages/Roles/EditPage/utils/schema.js","../../admin/src/pages/SettingsPage/pages/Roles/EditPage/index.js","../../admin/src/pages/SettingsPage/pages/Roles/ProtectedEditPage/index.js"],"sourcesContent":["import React from 'react';\n\nimport {\n Box,\n Button,\n Flex,\n Grid,\n GridItem,\n Textarea,\n TextInput,\n Typography,\n} from '@strapi/design-system';\nimport PropTypes from 'prop-types';\nimport { useIntl } from 'react-intl';\n\nconst RoleForm = ({ disabled, role, values, errors, onChange, onBlur }) => {\n const { formatMessage } = useIntl();\n\n return (\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 {role\n ? role.name\n : formatMessage({\n id: 'global.details',\n defaultMessage: 'Details',\n })}\n </Typography>\n </Box>\n <Box>\n <Typography textColor=\"neutral500\" variant=\"pi\">\n {role\n ? role.description\n : formatMessage({\n id: 'Settings.roles.form.description',\n defaultMessage: 'Name and description of the role',\n })}\n </Typography>\n </Box>\n </Box>\n <Button disabled variant=\"secondary\">\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: role.usersCount }\n )}\n </Button>\n </Flex>\n <Grid gap={4}>\n <GridItem col={6}>\n <TextInput\n disabled={disabled}\n name=\"name\"\n error={errors.name && formatMessage({ id: errors.name })}\n label={formatMessage({\n id: 'global.name',\n defaultMessage: 'Name',\n })}\n onChange={onChange}\n onBlur={onBlur}\n required\n value={values.name || ''}\n />\n </GridItem>\n <GridItem col={6}>\n <Textarea\n disabled={disabled}\n label={formatMessage({\n id: 'global.description',\n defaultMessage: 'Description',\n })}\n id=\"description\"\n error={errors.name && formatMessage({ id: errors.name })}\n onChange={onChange}\n onBlur={onBlur}\n >\n {values.description || ''}\n </Textarea>\n </GridItem>\n </Grid>\n </Flex>\n </Box>\n );\n};\n\nRoleForm.defaultProps = {\n disabled: false,\n role: null,\n values: { name: '', description: '' },\n};\nRoleForm.propTypes = {\n disabled: PropTypes.bool,\n errors: PropTypes.object.isRequired,\n onBlur: PropTypes.func.isRequired,\n onChange: PropTypes.func.isRequired,\n role: PropTypes.object,\n values: PropTypes.object,\n};\n\nexport default RoleForm;\n","import { translatedErrors } from '@strapi/helper-plugin';\nimport * as yup from 'yup';\n\nconst schema = yup.object().shape({\n name: yup.string().required(translatedErrors.required),\n});\n\nexport default schema;\n","import React, { useRef, useState } from 'react';\n\nimport { Box, Button, ContentLayout, Flex, HeaderLayout, Main } from '@strapi/design-system';\nimport {\n Link,\n LoadingIndicatorPage,\n SettingsPageTitle,\n useAPIErrorHandler,\n useFetchClient,\n useNotification,\n useOverlayBlocker,\n useTracking,\n} from '@strapi/helper-plugin';\nimport { ArrowLeft } from '@strapi/icons';\nimport { Formik } from 'formik';\nimport { useIntl } from 'react-intl';\nimport { useRouteMatch } from 'react-router-dom';\n\nimport { useAdminRoles } from '../../../../../hooks/useAdminRoles';\nimport { useAdminRolePermissionLayout } from '../hooks/useAdminRolePermissionLayout';\nimport { useAdminRolePermissions } from '../hooks/useAdminRolePermissions';\n\nimport { Permissions, RoleForm } from './components';\nimport schema from './utils/schema';\n\nconst EditPage = () => {\n const toggleNotification = useNotification();\n const { formatMessage } = useIntl();\n const {\n params: { id },\n } = useRouteMatch('/settings/roles/:id');\n const { put } = useFetchClient();\n const [isSubmitting, setIsSubmiting] = useState(false);\n const permissionsRef = useRef();\n const { lockApp, unlockApp } = useOverlayBlocker();\n const { trackUsage } = useTracking();\n const { formatAPIError } = useAPIErrorHandler();\n\n const { isLoading: isLoadingPermissionsLayout, data: permissionsLayout } =\n useAdminRolePermissionLayout(id, {\n cacheTime: 0,\n });\n\n const {\n roles: [role = {}],\n isLoading: isRoleLoading,\n refetch: refetchRole,\n } = useAdminRoles(\n { id },\n {\n cacheTime: 0,\n }\n );\n\n const { permissions, isLoading: isLoadingPermissions } = useAdminRolePermissions(\n { id },\n {\n cacheTime: 0,\n }\n );\n\n // TODO: this should use a react-query mutation\n const handleEditRoleSubmit = async (data) => {\n try {\n lockApp();\n setIsSubmiting(true);\n\n const { permissionsToSend, didUpdateConditions } = permissionsRef.current.getPermissions();\n\n await put(`/admin/roles/${id}`, data);\n\n if (role.code !== 'strapi-super-admin') {\n await put(`/admin/roles/${id}/permissions`, {\n permissions: permissionsToSend,\n });\n\n if (didUpdateConditions) {\n trackUsage('didUpdateConditions');\n }\n }\n\n permissionsRef.current.setFormAfterSubmit();\n\n await refetchRole();\n\n toggleNotification({\n type: 'success',\n message: { id: 'notification.success.saved' },\n });\n } catch (error) {\n toggleNotification({\n type: 'warning',\n message: formatAPIError(error),\n });\n } finally {\n setIsSubmiting(false);\n unlockApp();\n }\n };\n\n const isFormDisabled = !isRoleLoading && role.code === 'strapi-super-admin';\n\n return (\n <Main>\n <SettingsPageTitle name=\"Roles\" />\n <Formik\n enableReinitialize\n initialValues={{\n name: role.name,\n description: role.description,\n }}\n onSubmit={handleEditRoleSubmit}\n validationSchema={schema}\n validateOnChange={false}\n >\n {({ handleSubmit, values, errors, handleChange, handleBlur }) => (\n <form onSubmit={handleSubmit}>\n <HeaderLayout\n primaryAction={\n <Flex gap={2}>\n <Button\n disabled={role.code === 'strapi-super-admin'}\n onClick={handleSubmit}\n loading={isSubmitting}\n size=\"L\"\n >\n {formatMessage({\n id: 'global.save',\n defaultMessage: 'Save',\n })}\n </Button>\n </Flex>\n }\n title={formatMessage({\n id: 'Settings.roles.edit.title',\n defaultMessage: 'Edit a role',\n })}\n subtitle={formatMessage({\n id: 'Settings.roles.create.description',\n defaultMessage: 'Define the rights given to the role',\n })}\n navigationAction={\n <Link startIcon={<ArrowLeft />} to=\"/settings/roles\">\n {formatMessage({\n id: 'global.back',\n defaultMessage: 'Back',\n })}\n </Link>\n }\n />\n <ContentLayout>\n <Flex direction=\"column\" alignItems=\"stretch\" gap={6}>\n <RoleForm\n isLoading={isRoleLoading || isLoadingPermissions}\n disabled={isFormDisabled}\n errors={errors}\n values={values}\n onChange={handleChange}\n onBlur={handleBlur}\n role={role}\n />\n {!isLoadingPermissionsLayout && !isRoleLoading && !isLoadingPermissions ? (\n <Box shadow=\"filterShadow\" hasRadius>\n <Permissions\n isFormDisabled={isFormDisabled}\n permissions={permissions}\n ref={permissionsRef}\n layout={permissionsLayout}\n />\n </Box>\n ) : (\n <Box background=\"neutral0\" padding={6} shadow=\"filterShadow\" hasRadius>\n <LoadingIndicatorPage />\n </Box>\n )}\n </Flex>\n </ContentLayout>\n </form>\n )}\n </Formik>\n </Main>\n );\n};\n\nexport default EditPage;\n","import React from 'react';\n\nimport { LoadingIndicatorPage, useRBAC } from '@strapi/helper-plugin';\nimport { useSelector } from 'react-redux';\nimport { Redirect } from 'react-router-dom';\n\nimport { selectAdminPermissions } from '../../../../../selectors';\nimport EditPage from '../EditPage';\n\nconst ProtectedEditPage = () => {\n const permissions = useSelector(selectAdminPermissions);\n\n const {\n isLoading,\n allowedActions: { canRead, canUpdate },\n } = useRBAC({\n read: permissions.settings.roles.read,\n update: permissions.settings.roles.update,\n });\n\n if (isLoading) {\n return <LoadingIndicatorPage />;\n }\n\n if (!canRead && !canUpdate) {\n return <Redirect to=\"/\" />;\n }\n\n return <EditPage />;\n};\n\nexport default ProtectedEditPage;\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index-5d044c87.mjs","sources":["../../admin/src/pages/SettingsPage/pages/Roles/EditPage/components/RoleForm/index.js","../../admin/src/pages/SettingsPage/pages/Roles/EditPage/utils/schema.js","../../admin/src/pages/SettingsPage/pages/Roles/EditPage/index.js","../../admin/src/pages/SettingsPage/pages/Roles/ProtectedEditPage/index.js"],"sourcesContent":["import React from 'react';\n\nimport {\n Box,\n Button,\n Flex,\n Grid,\n GridItem,\n Textarea,\n TextInput,\n Typography,\n} from '@strapi/design-system';\nimport PropTypes from 'prop-types';\nimport { useIntl } from 'react-intl';\n\nconst RoleForm = ({ disabled, role, values, errors, onChange, onBlur }) => {\n const { formatMessage } = useIntl();\n\n return (\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 {role\n ? role.name\n : formatMessage({\n id: 'global.details',\n defaultMessage: 'Details',\n })}\n </Typography>\n </Box>\n <Box>\n <Typography textColor=\"neutral500\" variant=\"pi\">\n {role\n ? role.description\n : formatMessage({\n id: 'Settings.roles.form.description',\n defaultMessage: 'Name and description of the role',\n })}\n </Typography>\n </Box>\n </Box>\n <Button disabled variant=\"secondary\">\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: role.usersCount }\n )}\n </Button>\n </Flex>\n <Grid gap={4}>\n <GridItem col={6}>\n <TextInput\n disabled={disabled}\n name=\"name\"\n error={errors.name && formatMessage({ id: errors.name })}\n label={formatMessage({\n id: 'global.name',\n defaultMessage: 'Name',\n })}\n onChange={onChange}\n onBlur={onBlur}\n required\n value={values.name || ''}\n />\n </GridItem>\n <GridItem col={6}>\n <Textarea\n disabled={disabled}\n label={formatMessage({\n id: 'global.description',\n defaultMessage: 'Description',\n })}\n id=\"description\"\n error={errors.name && formatMessage({ id: errors.name })}\n onChange={onChange}\n onBlur={onBlur}\n >\n {values.description || ''}\n </Textarea>\n </GridItem>\n </Grid>\n </Flex>\n </Box>\n );\n};\n\nRoleForm.defaultProps = {\n disabled: false,\n role: null,\n values: { name: '', description: '' },\n};\nRoleForm.propTypes = {\n disabled: PropTypes.bool,\n errors: PropTypes.object.isRequired,\n onBlur: PropTypes.func.isRequired,\n onChange: PropTypes.func.isRequired,\n role: PropTypes.object,\n values: PropTypes.object,\n};\n\nexport default RoleForm;\n","import { translatedErrors } from '@strapi/helper-plugin';\nimport * as yup from 'yup';\n\nconst schema = yup.object().shape({\n name: yup.string().required(translatedErrors.required),\n});\n\nexport default schema;\n","import React, { useRef, useState } from 'react';\n\nimport { Box, Button, ContentLayout, Flex, HeaderLayout, Main } from '@strapi/design-system';\nimport {\n Link,\n LoadingIndicatorPage,\n SettingsPageTitle,\n useAPIErrorHandler,\n useFetchClient,\n useNotification,\n useOverlayBlocker,\n useTracking,\n} from '@strapi/helper-plugin';\nimport { ArrowLeft } from '@strapi/icons';\nimport { Formik } from 'formik';\nimport { useIntl } from 'react-intl';\nimport { useRouteMatch } from 'react-router-dom';\n\nimport { useAdminRoles } from '../../../../../hooks/useAdminRoles';\nimport { useAdminRolePermissionLayout } from '../hooks/useAdminRolePermissionLayout';\nimport { useAdminRolePermissions } from '../hooks/useAdminRolePermissions';\n\nimport { Permissions, RoleForm } from './components';\nimport schema from './utils/schema';\n\nconst EditPage = () => {\n const toggleNotification = useNotification();\n const { formatMessage } = useIntl();\n const {\n params: { id },\n } = useRouteMatch('/settings/roles/:id');\n const { put } = useFetchClient();\n const [isSubmitting, setIsSubmiting] = useState(false);\n const permissionsRef = useRef();\n const { lockApp, unlockApp } = useOverlayBlocker();\n const { trackUsage } = useTracking();\n const { formatAPIError } = useAPIErrorHandler();\n\n const { isLoading: isLoadingPermissionsLayout, data: permissionsLayout } =\n useAdminRolePermissionLayout(id, {\n cacheTime: 0,\n });\n\n const {\n roles: [role = {}],\n isLoading: isRoleLoading,\n refetch: refetchRole,\n } = useAdminRoles(\n { id },\n {\n cacheTime: 0,\n }\n );\n\n const { permissions, isLoading: isLoadingPermissions } = useAdminRolePermissions(\n { id },\n {\n cacheTime: 0,\n }\n );\n\n // TODO: this should use a react-query mutation\n const handleEditRoleSubmit = async (data) => {\n try {\n lockApp();\n setIsSubmiting(true);\n\n const { permissionsToSend, didUpdateConditions } = permissionsRef.current.getPermissions();\n\n await put(`/admin/roles/${id}`, data);\n\n if (role.code !== 'strapi-super-admin') {\n await put(`/admin/roles/${id}/permissions`, {\n permissions: permissionsToSend,\n });\n\n if (didUpdateConditions) {\n trackUsage('didUpdateConditions');\n }\n }\n\n permissionsRef.current.setFormAfterSubmit();\n\n await refetchRole();\n\n toggleNotification({\n type: 'success',\n message: { id: 'notification.success.saved' },\n });\n } catch (error) {\n toggleNotification({\n type: 'warning',\n message: formatAPIError(error),\n });\n } finally {\n setIsSubmiting(false);\n unlockApp();\n }\n };\n\n const isFormDisabled = !isRoleLoading && role.code === 'strapi-super-admin';\n\n return (\n <Main>\n <SettingsPageTitle name=\"Roles\" />\n <Formik\n enableReinitialize\n initialValues={{\n name: role.name,\n description: role.description,\n }}\n onSubmit={handleEditRoleSubmit}\n validationSchema={schema}\n validateOnChange={false}\n >\n {({ handleSubmit, values, errors, handleChange, handleBlur }) => (\n <form onSubmit={handleSubmit}>\n <HeaderLayout\n primaryAction={\n <Flex gap={2}>\n <Button\n disabled={role.code === 'strapi-super-admin'}\n onClick={handleSubmit}\n loading={isSubmitting}\n size=\"L\"\n >\n {formatMessage({\n id: 'global.save',\n defaultMessage: 'Save',\n })}\n </Button>\n </Flex>\n }\n title={formatMessage({\n id: 'Settings.roles.edit.title',\n defaultMessage: 'Edit a role',\n })}\n subtitle={formatMessage({\n id: 'Settings.roles.create.description',\n defaultMessage: 'Define the rights given to the role',\n })}\n navigationAction={\n <Link startIcon={<ArrowLeft />} to=\"/settings/roles\">\n {formatMessage({\n id: 'global.back',\n defaultMessage: 'Back',\n })}\n </Link>\n }\n />\n <ContentLayout>\n <Flex direction=\"column\" alignItems=\"stretch\" gap={6}>\n <RoleForm\n isLoading={isRoleLoading || isLoadingPermissions}\n disabled={isFormDisabled}\n errors={errors}\n values={values}\n onChange={handleChange}\n onBlur={handleBlur}\n role={role}\n />\n {!isLoadingPermissionsLayout && !isRoleLoading && !isLoadingPermissions ? (\n <Box shadow=\"filterShadow\" hasRadius>\n <Permissions\n isFormDisabled={isFormDisabled}\n permissions={permissions}\n ref={permissionsRef}\n layout={permissionsLayout}\n />\n </Box>\n ) : (\n <Box background=\"neutral0\" padding={6} shadow=\"filterShadow\" hasRadius>\n <LoadingIndicatorPage />\n </Box>\n )}\n </Flex>\n </ContentLayout>\n </form>\n )}\n </Formik>\n </Main>\n );\n};\n\nexport default EditPage;\n","import React from 'react';\n\nimport { LoadingIndicatorPage, useRBAC } from '@strapi/helper-plugin';\nimport { useSelector } from 'react-redux';\nimport { Redirect } from 'react-router-dom';\n\nimport { selectAdminPermissions } from '../../../../../selectors';\nimport EditPage from '../EditPage';\n\nconst ProtectedEditPage = () => {\n const permissions = useSelector(selectAdminPermissions);\n\n const {\n isLoading,\n allowedActions: { canRead, canUpdate },\n } = useRBAC({\n read: permissions.settings.roles.read,\n update: permissions.settings.roles.update,\n });\n\n if (isLoading) {\n return <LoadingIndicatorPage />;\n }\n\n if (!canRead && !canUpdate) {\n return <Redirect to=\"/\" />;\n }\n\n return <EditPage />;\n};\n\nexport default ProtectedEditPage;\n"],"names":[],"mappings":"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"}
@@ -1,7 +1,7 @@
1
1
  import { jsxs, jsx } from "react/jsx-runtime";
2
2
  import { useFocusWhenNavigate, useNotification, useRBAC, useTracking, useGuidedTour, useFetchClient, SettingsPageTitle, LinkButton, NoPermissions, NoContent, CheckPagePermissions } from "@strapi/helper-plugin";
3
3
  import { useSelector } from "react-redux";
4
- import { s as selectAdminPermissions } from "./AuthenticatedApp-da1595e9.mjs";
4
+ import { s as selectAdminPermissions } from "./AuthenticatedApp-2b5530b9.mjs";
5
5
  import { useRef, useEffect } from "react";
6
6
  import { Main, HeaderLayout, ContentLayout } from "@strapi/design-system";
7
7
  import { Plus } from "@strapi/icons";
@@ -13,7 +13,7 @@ import { T as TRANSFER_TOKEN_TYPE } from "./constants-d3dd8ed6.mjs";
13
13
  import { T as Table } from "./index-eb67694f.mjs";
14
14
  import "semver/functions/lt";
15
15
  import "semver/functions/valid";
16
- import "./index-b6ee936b.mjs";
16
+ import "./index-9f08bcc3.mjs";
17
17
  import "react-dom/client";
18
18
  import "invariant";
19
19
  import "lodash/isFunction";
@@ -267,4 +267,4 @@ const ProtectedTransferTokenListView = () => {
267
267
  export {
268
268
  ProtectedTransferTokenListView as default
269
269
  };
270
- //# sourceMappingURL=index-3c693658.mjs.map
270
+ //# sourceMappingURL=index-5d14fd43.mjs.map