@strapi/admin 5.33.4 → 5.34.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 (287) hide show
  1. package/dist/admin/admin/src/components/GradientBadge.js +18 -2
  2. package/dist/admin/admin/src/components/GradientBadge.js.map +1 -1
  3. package/dist/admin/admin/src/components/GradientBadge.mjs +19 -3
  4. package/dist/admin/admin/src/components/GradientBadge.mjs.map +1 -1
  5. package/dist/admin/admin/src/components/Layouts/ActionLayout.js +8 -1
  6. package/dist/admin/admin/src/components/Layouts/ActionLayout.js.map +1 -1
  7. package/dist/admin/admin/src/components/Layouts/ActionLayout.mjs +8 -1
  8. package/dist/admin/admin/src/components/Layouts/ActionLayout.mjs.map +1 -1
  9. package/dist/admin/admin/src/components/Layouts/ContentLayout.js +4 -0
  10. package/dist/admin/admin/src/components/Layouts/ContentLayout.js.map +1 -1
  11. package/dist/admin/admin/src/components/Layouts/ContentLayout.mjs +4 -0
  12. package/dist/admin/admin/src/components/Layouts/ContentLayout.mjs.map +1 -1
  13. package/dist/admin/admin/src/components/Layouts/HeaderLayout.js +80 -49
  14. package/dist/admin/admin/src/components/Layouts/HeaderLayout.js.map +1 -1
  15. package/dist/admin/admin/src/components/Layouts/HeaderLayout.mjs +81 -50
  16. package/dist/admin/admin/src/components/Layouts/HeaderLayout.mjs.map +1 -1
  17. package/dist/admin/admin/src/components/MainNav/MainNavLinks.js +1 -0
  18. package/dist/admin/admin/src/components/MainNav/MainNavLinks.js.map +1 -1
  19. package/dist/admin/admin/src/components/MainNav/MainNavLinks.mjs +1 -0
  20. package/dist/admin/admin/src/components/MainNav/MainNavLinks.mjs.map +1 -1
  21. package/dist/admin/admin/src/components/MainNav/NavLink.js +37 -6
  22. package/dist/admin/admin/src/components/MainNav/NavLink.js.map +1 -1
  23. package/dist/admin/admin/src/components/MainNav/NavLink.mjs +38 -7
  24. package/dist/admin/admin/src/components/MainNav/NavLink.mjs.map +1 -1
  25. package/dist/admin/admin/src/components/SubNav.js +39 -18
  26. package/dist/admin/admin/src/components/SubNav.js.map +1 -1
  27. package/dist/admin/admin/src/components/SubNav.mjs +39 -18
  28. package/dist/admin/admin/src/components/SubNav.mjs.map +1 -1
  29. package/dist/admin/admin/src/core/apis/router.js.map +1 -1
  30. package/dist/admin/admin/src/core/apis/router.mjs.map +1 -1
  31. package/dist/admin/admin/src/features/Tracking.js.map +1 -1
  32. package/dist/admin/admin/src/features/Tracking.mjs.map +1 -1
  33. package/dist/admin/admin/src/hooks/useMenu.js +2 -1
  34. package/dist/admin/admin/src/hooks/useMenu.js.map +1 -1
  35. package/dist/admin/admin/src/hooks/useMenu.mjs +2 -1
  36. package/dist/admin/admin/src/hooks/useMenu.mjs.map +1 -1
  37. package/dist/admin/admin/src/pages/Auth/components/Register.js +2 -1
  38. package/dist/admin/admin/src/pages/Auth/components/Register.js.map +1 -1
  39. package/dist/admin/admin/src/pages/Auth/components/Register.mjs +2 -1
  40. package/dist/admin/admin/src/pages/Auth/components/Register.mjs.map +1 -1
  41. package/dist/admin/admin/src/pages/Home/HomePage.js +1 -0
  42. package/dist/admin/admin/src/pages/Home/HomePage.js.map +1 -1
  43. package/dist/admin/admin/src/pages/Home/HomePage.mjs +1 -0
  44. package/dist/admin/admin/src/pages/Home/HomePage.mjs.map +1 -1
  45. package/dist/admin/admin/src/pages/ProfilePage.js +1 -0
  46. package/dist/admin/admin/src/pages/ProfilePage.js.map +1 -1
  47. package/dist/admin/admin/src/pages/ProfilePage.mjs +1 -0
  48. package/dist/admin/admin/src/pages/ProfilePage.mjs.map +1 -1
  49. package/dist/admin/admin/src/pages/Settings/components/SettingsNav.js +7 -2
  50. package/dist/admin/admin/src/pages/Settings/components/SettingsNav.js.map +1 -1
  51. package/dist/admin/admin/src/pages/Settings/components/SettingsNav.mjs +7 -2
  52. package/dist/admin/admin/src/pages/Settings/components/SettingsNav.mjs.map +1 -1
  53. package/dist/admin/admin/src/pages/Settings/components/Tokens/FormHead.js +44 -26
  54. package/dist/admin/admin/src/pages/Settings/components/Tokens/FormHead.js.map +1 -1
  55. package/dist/admin/admin/src/pages/Settings/components/Tokens/FormHead.mjs +45 -27
  56. package/dist/admin/admin/src/pages/Settings/components/Tokens/FormHead.mjs.map +1 -1
  57. package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/ListView.js +1 -0
  58. package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/ListView.js.map +1 -1
  59. package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/ListView.mjs +1 -0
  60. package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/ListView.mjs.map +1 -1
  61. package/dist/admin/admin/src/pages/Settings/pages/ApplicationInfo/ApplicationInfoPage.js +1 -0
  62. package/dist/admin/admin/src/pages/Settings/pages/ApplicationInfo/ApplicationInfoPage.js.map +1 -1
  63. package/dist/admin/admin/src/pages/Settings/pages/ApplicationInfo/ApplicationInfoPage.mjs +1 -0
  64. package/dist/admin/admin/src/pages/Settings/pages/ApplicationInfo/ApplicationInfoPage.mjs.map +1 -1
  65. package/dist/admin/admin/src/pages/Settings/pages/Roles/CreatePage.js +3 -0
  66. package/dist/admin/admin/src/pages/Settings/pages/Roles/CreatePage.js.map +1 -1
  67. package/dist/admin/admin/src/pages/Settings/pages/Roles/CreatePage.mjs +3 -0
  68. package/dist/admin/admin/src/pages/Settings/pages/Roles/CreatePage.mjs.map +1 -1
  69. package/dist/admin/admin/src/pages/Settings/pages/Roles/EditPage.js +9 -11
  70. package/dist/admin/admin/src/pages/Settings/pages/Roles/EditPage.js.map +1 -1
  71. package/dist/admin/admin/src/pages/Settings/pages/Roles/EditPage.mjs +10 -12
  72. package/dist/admin/admin/src/pages/Settings/pages/Roles/EditPage.mjs.map +1 -1
  73. package/dist/admin/admin/src/pages/Settings/pages/Roles/ListPage.js +1 -0
  74. package/dist/admin/admin/src/pages/Settings/pages/Roles/ListPage.js.map +1 -1
  75. package/dist/admin/admin/src/pages/Settings/pages/Roles/ListPage.mjs +1 -0
  76. package/dist/admin/admin/src/pages/Settings/pages/Roles/ListPage.mjs.map +1 -1
  77. package/dist/admin/admin/src/pages/Settings/pages/TransferTokens/ListView.js +1 -0
  78. package/dist/admin/admin/src/pages/Settings/pages/TransferTokens/ListView.js.map +1 -1
  79. package/dist/admin/admin/src/pages/Settings/pages/TransferTokens/ListView.mjs +1 -0
  80. package/dist/admin/admin/src/pages/Settings/pages/TransferTokens/ListView.mjs.map +1 -1
  81. package/dist/admin/admin/src/pages/Settings/pages/Users/EditPage.js +1 -0
  82. package/dist/admin/admin/src/pages/Settings/pages/Users/EditPage.js.map +1 -1
  83. package/dist/admin/admin/src/pages/Settings/pages/Users/EditPage.mjs +1 -0
  84. package/dist/admin/admin/src/pages/Settings/pages/Users/EditPage.mjs.map +1 -1
  85. package/dist/admin/admin/src/pages/Settings/pages/Users/components/CreateActionCE.js +1 -0
  86. package/dist/admin/admin/src/pages/Settings/pages/Users/components/CreateActionCE.js.map +1 -1
  87. package/dist/admin/admin/src/pages/Settings/pages/Users/components/CreateActionCE.mjs +1 -0
  88. package/dist/admin/admin/src/pages/Settings/pages/Users/components/CreateActionCE.mjs.map +1 -1
  89. package/dist/admin/admin/src/pages/Settings/pages/Webhooks/ListPage.js +1 -0
  90. package/dist/admin/admin/src/pages/Settings/pages/Webhooks/ListPage.js.map +1 -1
  91. package/dist/admin/admin/src/pages/Settings/pages/Webhooks/ListPage.mjs +1 -0
  92. package/dist/admin/admin/src/pages/Settings/pages/Webhooks/ListPage.mjs.map +1 -1
  93. package/dist/admin/admin/src/pages/Settings/pages/Webhooks/components/WebhookForm.js +3 -0
  94. package/dist/admin/admin/src/pages/Settings/pages/Webhooks/components/WebhookForm.js.map +1 -1
  95. package/dist/admin/admin/src/pages/Settings/pages/Webhooks/components/WebhookForm.mjs +3 -0
  96. package/dist/admin/admin/src/pages/Settings/pages/Webhooks/components/WebhookForm.mjs.map +1 -1
  97. package/dist/admin/admin/src/router.js +0 -9
  98. package/dist/admin/admin/src/router.js.map +1 -1
  99. package/dist/admin/admin/src/router.mjs +0 -9
  100. package/dist/admin/admin/src/router.mjs.map +1 -1
  101. package/dist/admin/admin/src/translations/ar.json.js +0 -42
  102. package/dist/admin/admin/src/translations/ar.json.js.map +1 -1
  103. package/dist/admin/admin/src/translations/ar.json.mjs +0 -42
  104. package/dist/admin/admin/src/translations/ar.json.mjs.map +1 -1
  105. package/dist/admin/admin/src/translations/ca.json.js +0 -21
  106. package/dist/admin/admin/src/translations/ca.json.js.map +1 -1
  107. package/dist/admin/admin/src/translations/ca.json.mjs +0 -21
  108. package/dist/admin/admin/src/translations/ca.json.mjs.map +1 -1
  109. package/dist/admin/admin/src/translations/de.json.js +422 -66
  110. package/dist/admin/admin/src/translations/de.json.js.map +1 -1
  111. package/dist/admin/admin/src/translations/de.json.mjs +419 -67
  112. package/dist/admin/admin/src/translations/de.json.mjs.map +1 -1
  113. package/dist/admin/admin/src/translations/dk.json.js +0 -6
  114. package/dist/admin/admin/src/translations/dk.json.js.map +1 -1
  115. package/dist/admin/admin/src/translations/dk.json.mjs +0 -6
  116. package/dist/admin/admin/src/translations/dk.json.mjs.map +1 -1
  117. package/dist/admin/admin/src/translations/en.json.js +0 -44
  118. package/dist/admin/admin/src/translations/en.json.js.map +1 -1
  119. package/dist/admin/admin/src/translations/en.json.mjs +0 -44
  120. package/dist/admin/admin/src/translations/en.json.mjs.map +1 -1
  121. package/dist/admin/admin/src/translations/es.json.js +0 -25
  122. package/dist/admin/admin/src/translations/es.json.js.map +1 -1
  123. package/dist/admin/admin/src/translations/es.json.mjs +0 -25
  124. package/dist/admin/admin/src/translations/es.json.mjs.map +1 -1
  125. package/dist/admin/admin/src/translations/eu.json.js +0 -43
  126. package/dist/admin/admin/src/translations/eu.json.js.map +1 -1
  127. package/dist/admin/admin/src/translations/eu.json.mjs +0 -43
  128. package/dist/admin/admin/src/translations/eu.json.mjs.map +1 -1
  129. package/dist/admin/admin/src/translations/fr.json.js +0 -6
  130. package/dist/admin/admin/src/translations/fr.json.js.map +1 -1
  131. package/dist/admin/admin/src/translations/fr.json.mjs +0 -6
  132. package/dist/admin/admin/src/translations/fr.json.mjs.map +1 -1
  133. package/dist/admin/admin/src/translations/gu.json.js +0 -21
  134. package/dist/admin/admin/src/translations/gu.json.js.map +1 -1
  135. package/dist/admin/admin/src/translations/gu.json.mjs +0 -21
  136. package/dist/admin/admin/src/translations/gu.json.mjs.map +1 -1
  137. package/dist/admin/admin/src/translations/hi.json.js +0 -21
  138. package/dist/admin/admin/src/translations/hi.json.js.map +1 -1
  139. package/dist/admin/admin/src/translations/hi.json.mjs +0 -21
  140. package/dist/admin/admin/src/translations/hi.json.mjs.map +1 -1
  141. package/dist/admin/admin/src/translations/hu.json.js +0 -43
  142. package/dist/admin/admin/src/translations/hu.json.js.map +1 -1
  143. package/dist/admin/admin/src/translations/hu.json.mjs +0 -43
  144. package/dist/admin/admin/src/translations/hu.json.mjs.map +1 -1
  145. package/dist/admin/admin/src/translations/it.json.js +613 -3
  146. package/dist/admin/admin/src/translations/it.json.js.map +1 -1
  147. package/dist/admin/admin/src/translations/it.json.mjs +605 -4
  148. package/dist/admin/admin/src/translations/it.json.mjs.map +1 -1
  149. package/dist/admin/admin/src/translations/ja.json.js +0 -6
  150. package/dist/admin/admin/src/translations/ja.json.js.map +1 -1
  151. package/dist/admin/admin/src/translations/ja.json.mjs +0 -6
  152. package/dist/admin/admin/src/translations/ja.json.mjs.map +1 -1
  153. package/dist/admin/admin/src/translations/ko.json.js +0 -6
  154. package/dist/admin/admin/src/translations/ko.json.js.map +1 -1
  155. package/dist/admin/admin/src/translations/ko.json.mjs +0 -6
  156. package/dist/admin/admin/src/translations/ko.json.mjs.map +1 -1
  157. package/dist/admin/admin/src/translations/ml.json.js +0 -21
  158. package/dist/admin/admin/src/translations/ml.json.js.map +1 -1
  159. package/dist/admin/admin/src/translations/ml.json.mjs +0 -21
  160. package/dist/admin/admin/src/translations/ml.json.mjs.map +1 -1
  161. package/dist/admin/admin/src/translations/nl.json.js +0 -39
  162. package/dist/admin/admin/src/translations/nl.json.js.map +1 -1
  163. package/dist/admin/admin/src/translations/nl.json.mjs +0 -39
  164. package/dist/admin/admin/src/translations/nl.json.mjs.map +1 -1
  165. package/dist/admin/admin/src/translations/pl.json.js +0 -21
  166. package/dist/admin/admin/src/translations/pl.json.js.map +1 -1
  167. package/dist/admin/admin/src/translations/pl.json.mjs +0 -21
  168. package/dist/admin/admin/src/translations/pl.json.mjs.map +1 -1
  169. package/dist/admin/admin/src/translations/pt-BR.json.js +0 -25
  170. package/dist/admin/admin/src/translations/pt-BR.json.js.map +1 -1
  171. package/dist/admin/admin/src/translations/pt-BR.json.mjs +0 -25
  172. package/dist/admin/admin/src/translations/pt-BR.json.mjs.map +1 -1
  173. package/dist/admin/admin/src/translations/ru.json.js +0 -44
  174. package/dist/admin/admin/src/translations/ru.json.js.map +1 -1
  175. package/dist/admin/admin/src/translations/ru.json.mjs +0 -44
  176. package/dist/admin/admin/src/translations/ru.json.mjs.map +1 -1
  177. package/dist/admin/admin/src/translations/sa.json.js +0 -21
  178. package/dist/admin/admin/src/translations/sa.json.js.map +1 -1
  179. package/dist/admin/admin/src/translations/sa.json.mjs +0 -21
  180. package/dist/admin/admin/src/translations/sa.json.mjs.map +1 -1
  181. package/dist/admin/admin/src/translations/sv.json.js +0 -39
  182. package/dist/admin/admin/src/translations/sv.json.js.map +1 -1
  183. package/dist/admin/admin/src/translations/sv.json.mjs +0 -39
  184. package/dist/admin/admin/src/translations/sv.json.mjs.map +1 -1
  185. package/dist/admin/admin/src/translations/tr.json.js +0 -39
  186. package/dist/admin/admin/src/translations/tr.json.js.map +1 -1
  187. package/dist/admin/admin/src/translations/tr.json.mjs +0 -39
  188. package/dist/admin/admin/src/translations/tr.json.mjs.map +1 -1
  189. package/dist/admin/admin/src/translations/uk.json.js +0 -44
  190. package/dist/admin/admin/src/translations/uk.json.js.map +1 -1
  191. package/dist/admin/admin/src/translations/uk.json.mjs +0 -44
  192. package/dist/admin/admin/src/translations/uk.json.mjs.map +1 -1
  193. package/dist/admin/admin/src/translations/vi.json.js +0 -44
  194. package/dist/admin/admin/src/translations/vi.json.js.map +1 -1
  195. package/dist/admin/admin/src/translations/vi.json.mjs +0 -44
  196. package/dist/admin/admin/src/translations/vi.json.mjs.map +1 -1
  197. package/dist/admin/admin/src/translations/zh-Hans.json.js +0 -44
  198. package/dist/admin/admin/src/translations/zh-Hans.json.js.map +1 -1
  199. package/dist/admin/admin/src/translations/zh-Hans.json.mjs +0 -44
  200. package/dist/admin/admin/src/translations/zh-Hans.json.mjs.map +1 -1
  201. package/dist/admin/admin/src/translations/zh.json.js +0 -39
  202. package/dist/admin/admin/src/translations/zh.json.js.map +1 -1
  203. package/dist/admin/admin/src/translations/zh.json.mjs +0 -39
  204. package/dist/admin/admin/src/translations/zh.json.mjs.map +1 -1
  205. package/dist/admin/admin/tests/mockData.js +0 -1413
  206. package/dist/admin/admin/tests/mockData.js.map +1 -1
  207. package/dist/admin/admin/tests/mockData.mjs +0 -1413
  208. package/dist/admin/admin/tests/mockData.mjs.map +1 -1
  209. package/dist/admin/admin/tests/server.js +0 -99
  210. package/dist/admin/admin/tests/server.js.map +1 -1
  211. package/dist/admin/admin/tests/server.mjs +0 -80
  212. package/dist/admin/admin/tests/server.mjs.map +1 -1
  213. package/dist/admin/ee/admin/src/pages/SettingsPage/pages/SingleSignOnPage.js +1 -0
  214. package/dist/admin/ee/admin/src/pages/SettingsPage/pages/SingleSignOnPage.js.map +1 -1
  215. package/dist/admin/ee/admin/src/pages/SettingsPage/pages/SingleSignOnPage.mjs +1 -0
  216. package/dist/admin/ee/admin/src/pages/SettingsPage/pages/SingleSignOnPage.mjs.map +1 -1
  217. package/dist/admin/ee/admin/src/pages/SettingsPage/pages/Users/components/CreateActionEE.js +2 -0
  218. package/dist/admin/ee/admin/src/pages/SettingsPage/pages/Users/components/CreateActionEE.js.map +1 -1
  219. package/dist/admin/ee/admin/src/pages/SettingsPage/pages/Users/components/CreateActionEE.mjs +2 -0
  220. package/dist/admin/ee/admin/src/pages/SettingsPage/pages/Users/components/CreateActionEE.mjs.map +1 -1
  221. package/dist/admin/src/components/MainNav/NavLink.d.ts +2 -2
  222. package/dist/admin/src/core/apis/router.d.ts +1 -0
  223. package/dist/admin/src/features/Tracking.d.ts +1 -1
  224. package/dist/admin/src/hooks/useMenu.d.ts +1 -0
  225. package/dist/admin/tests/mockData.d.ts +0 -972
  226. package/dist/server/server/src/services/permission/permissions-manager/permission-fields.js +53 -0
  227. package/dist/server/server/src/services/permission/permissions-manager/permission-fields.js.map +1 -0
  228. package/dist/server/server/src/services/permission/permissions-manager/permission-fields.mjs +51 -0
  229. package/dist/server/server/src/services/permission/permissions-manager/permission-fields.mjs.map +1 -0
  230. package/dist/server/server/src/services/permission/permissions-manager/sanitize.js +7 -8
  231. package/dist/server/server/src/services/permission/permissions-manager/sanitize.js.map +1 -1
  232. package/dist/server/server/src/services/permission/permissions-manager/sanitize.mjs +10 -11
  233. package/dist/server/server/src/services/permission/permissions-manager/sanitize.mjs.map +1 -1
  234. package/dist/server/server/src/services/permission/permissions-manager/validate.js +7 -8
  235. package/dist/server/server/src/services/permission/permissions-manager/validate.js.map +1 -1
  236. package/dist/server/server/src/services/permission/permissions-manager/validate.mjs +10 -11
  237. package/dist/server/server/src/services/permission/permissions-manager/validate.mjs.map +1 -1
  238. package/dist/server/src/services/permission/permissions-manager/permission-fields.d.ts +21 -0
  239. package/dist/server/src/services/permission/permissions-manager/permission-fields.d.ts.map +1 -0
  240. package/dist/server/src/services/permission/permissions-manager/sanitize.d.ts.map +1 -1
  241. package/dist/server/src/services/permission/permissions-manager/validate.d.ts.map +1 -1
  242. package/package.json +7 -7
  243. package/dist/admin/admin/src/pages/Marketplace/MarketplacePage.js +0 -339
  244. package/dist/admin/admin/src/pages/Marketplace/MarketplacePage.js.map +0 -1
  245. package/dist/admin/admin/src/pages/Marketplace/MarketplacePage.mjs +0 -317
  246. package/dist/admin/admin/src/pages/Marketplace/MarketplacePage.mjs.map +0 -1
  247. package/dist/admin/admin/src/pages/Marketplace/components/NpmPackageCard.js +0 -329
  248. package/dist/admin/admin/src/pages/Marketplace/components/NpmPackageCard.js.map +0 -1
  249. package/dist/admin/admin/src/pages/Marketplace/components/NpmPackageCard.mjs +0 -308
  250. package/dist/admin/admin/src/pages/Marketplace/components/NpmPackageCard.mjs.map +0 -1
  251. package/dist/admin/admin/src/pages/Marketplace/components/NpmPackagesFilters.js +0 -121
  252. package/dist/admin/admin/src/pages/Marketplace/components/NpmPackagesFilters.js.map +0 -1
  253. package/dist/admin/admin/src/pages/Marketplace/components/NpmPackagesFilters.mjs +0 -119
  254. package/dist/admin/admin/src/pages/Marketplace/components/NpmPackagesFilters.mjs.map +0 -1
  255. package/dist/admin/admin/src/pages/Marketplace/components/NpmPackagesGrid.js +0 -93
  256. package/dist/admin/admin/src/pages/Marketplace/components/NpmPackagesGrid.js.map +0 -1
  257. package/dist/admin/admin/src/pages/Marketplace/components/NpmPackagesGrid.mjs +0 -91
  258. package/dist/admin/admin/src/pages/Marketplace/components/NpmPackagesGrid.mjs.map +0 -1
  259. package/dist/admin/admin/src/pages/Marketplace/components/OfflineLayout.js +0 -81
  260. package/dist/admin/admin/src/pages/Marketplace/components/OfflineLayout.js.map +0 -1
  261. package/dist/admin/admin/src/pages/Marketplace/components/OfflineLayout.mjs +0 -79
  262. package/dist/admin/admin/src/pages/Marketplace/components/OfflineLayout.mjs.map +0 -1
  263. package/dist/admin/admin/src/pages/Marketplace/components/PageHeader.js +0 -38
  264. package/dist/admin/admin/src/pages/Marketplace/components/PageHeader.js.map +0 -1
  265. package/dist/admin/admin/src/pages/Marketplace/components/PageHeader.mjs +0 -36
  266. package/dist/admin/admin/src/pages/Marketplace/components/PageHeader.mjs.map +0 -1
  267. package/dist/admin/admin/src/pages/Marketplace/components/SortSelect.js +0 -85
  268. package/dist/admin/admin/src/pages/Marketplace/components/SortSelect.js.map +0 -1
  269. package/dist/admin/admin/src/pages/Marketplace/components/SortSelect.mjs +0 -83
  270. package/dist/admin/admin/src/pages/Marketplace/components/SortSelect.mjs.map +0 -1
  271. package/dist/admin/admin/src/pages/Marketplace/hooks/useMarketplaceData.js +0 -134
  272. package/dist/admin/admin/src/pages/Marketplace/hooks/useMarketplaceData.js.map +0 -1
  273. package/dist/admin/admin/src/pages/Marketplace/hooks/useMarketplaceData.mjs +0 -113
  274. package/dist/admin/admin/src/pages/Marketplace/hooks/useMarketplaceData.mjs.map +0 -1
  275. package/dist/admin/admin/src/pages/Marketplace/hooks/useNavigatorOnline.js +0 -44
  276. package/dist/admin/admin/src/pages/Marketplace/hooks/useNavigatorOnline.js.map +0 -1
  277. package/dist/admin/admin/src/pages/Marketplace/hooks/useNavigatorOnline.mjs +0 -23
  278. package/dist/admin/admin/src/pages/Marketplace/hooks/useNavigatorOnline.mjs.map +0 -1
  279. package/dist/admin/src/pages/Marketplace/MarketplacePage.d.ts +0 -19
  280. package/dist/admin/src/pages/Marketplace/components/NpmPackageCard.d.ts +0 -13
  281. package/dist/admin/src/pages/Marketplace/components/NpmPackagesFilters.d.ts +0 -13
  282. package/dist/admin/src/pages/Marketplace/components/NpmPackagesGrid.d.ts +0 -13
  283. package/dist/admin/src/pages/Marketplace/components/OfflineLayout.d.ts +0 -2
  284. package/dist/admin/src/pages/Marketplace/components/PageHeader.d.ts +0 -8
  285. package/dist/admin/src/pages/Marketplace/components/SortSelect.d.ts +0 -51
  286. package/dist/admin/src/pages/Marketplace/hooks/useMarketplaceData.d.ts +0 -93
  287. package/dist/admin/src/pages/Marketplace/hooks/useNavigatorOnline.d.ts +0 -5
@@ -1 +1 @@
1
- {"version":3,"file":"ApplicationInfoPage.mjs","sources":["../../../../../../../../admin/src/pages/Settings/pages/ApplicationInfo/ApplicationInfoPage.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { Box, Button, Flex, Grid, Link, Typography } from '@strapi/design-system';\nimport { Check, ExternalLink } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\nimport { useSelector } from 'react-redux';\n\nimport { Layouts } from '../../../../components/Layouts/Layout';\nimport { Page } from '../../../../components/PageHelpers';\nimport { useAppInfo } from '../../../../features/AppInfo';\nimport { useConfiguration } from '../../../../features/Configuration';\nimport { useTracking } from '../../../../features/Tracking';\nimport { useEnterprise } from '../../../../hooks/useEnterprise';\nimport { useFetchClient } from '../../../../hooks/useFetchClient';\nimport { useRBAC } from '../../../../hooks/useRBAC';\nimport { selectAdminPermissions } from '../../../../selectors';\n\nimport { LogoInput, LogoInputProps } from './components/LogoInput';\nimport { DIMENSION, SIZE } from './utils/constants';\n\nconst AdminSeatInfoCE = () => null;\nconst AIUageDataCE = () => null;\n\n/* -------------------------------------------------------------------------------------------------\n * ApplicationInfoPage\n * -----------------------------------------------------------------------------------------------*/\n\nconst ApplicationInfoPage = () => {\n const { trackUsage } = useTracking();\n const { formatMessage } = useIntl();\n const { get } = useFetchClient();\n const { logos: serverLogos, updateProjectSettings } = useConfiguration('ApplicationInfoPage');\n const [logos, setLogos] = React.useState({ menu: serverLogos.menu, auth: serverLogos.auth });\n const { settings } = useSelector(selectAdminPermissions);\n\n const communityEdition = useAppInfo('ApplicationInfoPage', (state) => state.communityEdition);\n const latestStrapiReleaseTag = useAppInfo(\n 'ApplicationInfoPage',\n (state) => state.latestStrapiReleaseTag\n );\n const nodeVersion = useAppInfo('ApplicationInfoPage', (state) => state.nodeVersion);\n const shouldUpdateStrapi = useAppInfo('ApplicationInfoPage', (state) => state.shouldUpdateStrapi);\n const strapiVersion = useAppInfo('ApplicationInfoPage', (state) => state.strapiVersion);\n\n const AdminSeatInfo = useEnterprise(\n AdminSeatInfoCE,\n async () =>\n (\n await import(\n '../../../../../../ee/admin/src/pages/SettingsPage/pages/ApplicationInfoPage/components/AdminSeatInfo'\n )\n ).AdminSeatInfoEE\n );\n const isAiEnabled = window.strapi.ai?.enabled !== false;\n const AIUsageData = useEnterprise(\n AIUageDataCE,\n async () =>\n (\n await import(\n '../../../../../../ee/admin/src/pages/SettingsPage/pages/ApplicationInfoPage/components/AIUsage'\n )\n ).AIUsage,\n {\n enabled: isAiEnabled,\n }\n );\n\n const {\n allowedActions: { canRead, canUpdate },\n } = useRBAC(settings ? settings['project-settings'] : {});\n\n const handleSubmit: React.FormEventHandler<HTMLFormElement> = (e) => {\n e.preventDefault();\n\n updateProjectSettings({\n authLogo: logos.auth.custom ?? null,\n menuLogo: logos.menu.custom ?? null,\n });\n };\n\n const handleChangeLogo =\n (logo: 'menu' | 'auth'): LogoInputProps['onChangeLogo'] =>\n (newLogo) => {\n /**\n * If there's no newLogo value we can assume we're reseting.\n */\n if (newLogo === null) {\n trackUsage('didClickResetLogo', {\n logo,\n });\n }\n\n setLogos((prev) => ({\n ...prev,\n [logo]: {\n ...prev[logo],\n custom: newLogo,\n },\n }));\n };\n\n React.useEffect(() => {\n setLogos({\n menu: serverLogos.menu,\n auth: serverLogos.auth,\n });\n }, [serverLogos]);\n\n // block rendering until the EE component is fully loaded\n if (!AdminSeatInfo) {\n return null;\n }\n\n if (!AIUsageData) {\n return null;\n }\n\n const isSaveDisabled =\n logos.auth.custom === serverLogos.auth.custom && logos.menu.custom === serverLogos.menu.custom;\n\n return (\n <>\n <Page.Title>\n {formatMessage(\n { id: 'Settings.PageTitle', defaultMessage: 'Settings - {name}' },\n {\n name: formatMessage({\n id: 'Settings.application.header',\n defaultMessage: 'Application',\n }),\n }\n )}\n </Page.Title>\n <Page.Main>\n <form onSubmit={handleSubmit}>\n <Layouts.Header\n title={formatMessage({\n id: 'Settings.application.title',\n defaultMessage: 'Overview',\n })}\n subtitle={formatMessage({\n id: 'Settings.application.description',\n defaultMessage: 'Administration panel’s global information',\n })}\n primaryAction={\n canUpdate && (\n <Button disabled={isSaveDisabled} type=\"submit\" startIcon={<Check />}>\n {formatMessage({ id: 'global.save', defaultMessage: 'Save' })}\n </Button>\n )\n }\n />\n <Layouts.Content>\n <Flex direction=\"column\" alignItems=\"stretch\" gap={6}>\n <Flex\n direction=\"column\"\n alignItems=\"stretch\"\n gap={4}\n hasRadius\n background=\"neutral0\"\n shadow=\"tableShadow\"\n paddingTop={6}\n paddingBottom={6}\n paddingRight={7}\n paddingLeft={7}\n >\n <Typography variant=\"delta\" tag=\"h3\">\n {formatMessage({\n id: 'global.details',\n defaultMessage: 'Details',\n })}\n </Typography>\n\n <Grid.Root gap={5} tag=\"dl\">\n <Grid.Item col={6} xs={12} direction=\"column\" alignItems=\"start\">\n <Typography variant=\"sigma\" textColor=\"neutral600\" tag=\"dt\">\n {formatMessage({\n id: 'Settings.application.strapiVersion',\n defaultMessage: 'strapi version',\n })}\n </Typography>\n <Flex gap={3} direction=\"column\" alignItems=\"start\" tag=\"dd\">\n <Typography>v{strapiVersion}</Typography>\n {shouldUpdateStrapi && (\n <Link\n href={`https://github.com/strapi/strapi/releases/tag/${latestStrapiReleaseTag}`}\n endIcon={<ExternalLink />}\n >\n {formatMessage({\n id: 'Settings.application.link-upgrade',\n defaultMessage: 'Upgrade your admin panel',\n })}\n </Link>\n )}\n </Flex>\n </Grid.Item>\n <Grid.Item col={6} xs={12} direction=\"column\" alignItems=\"start\">\n <Typography variant=\"sigma\" textColor=\"neutral600\" tag=\"dt\">\n {formatMessage({\n id: 'Settings.application.edition-title',\n defaultMessage: 'current edition',\n })}\n </Typography>\n <Flex gap={3} direction=\"column\" alignItems=\"start\" tag=\"dd\">\n <Typography>\n {formatMessage(\n {\n id: 'Settings.application.ee-or-ce',\n defaultMessage:\n '{communityEdition, select, true {Community Edition} other {Enterprise Edition}}',\n },\n { communityEdition }\n )}\n </Typography>\n <Link href=\"https://strapi.io/pricing-self-hosted\" endIcon={<ExternalLink />}>\n {formatMessage({\n id: 'Settings.application.link-pricing',\n defaultMessage: 'See all pricing plans',\n })}\n </Link>\n </Flex>\n </Grid.Item>\n\n <Grid.Item col={6} xs={12} direction=\"column\" alignItems=\"start\">\n <Typography variant=\"sigma\" textColor=\"neutral600\" tag=\"dt\">\n {formatMessage({\n id: 'Settings.application.node-version',\n defaultMessage: 'node version',\n })}\n </Typography>\n <Typography tag=\"dd\">{nodeVersion}</Typography>\n </Grid.Item>\n <AdminSeatInfo />\n <AIUsageData />\n </Grid.Root>\n </Flex>\n {canRead && (\n <Box\n hasRadius\n background=\"neutral0\"\n shadow=\"tableShadow\"\n paddingTop={6}\n paddingBottom={6}\n paddingRight={7}\n paddingLeft={7}\n >\n <Typography variant=\"delta\" tag=\"h3\">\n {formatMessage({\n id: 'Settings.application.customization',\n defaultMessage: 'Customization',\n })}\n </Typography>\n <Typography variant=\"pi\" textColor=\"neutral600\">\n {formatMessage(\n {\n id: 'Settings.application.customization.size-details',\n defaultMessage:\n 'Max dimension: {dimension}×{dimension}, Max file size: {size}KB',\n },\n { dimension: DIMENSION, size: SIZE }\n )}\n </Typography>\n <Grid.Root paddingTop={4} gap={4}>\n <Grid.Item col={6} xs={12} direction=\"column\" alignItems=\"stretch\">\n <LogoInput\n canUpdate={canUpdate}\n customLogo={logos.menu.custom}\n defaultLogo={logos.menu.default}\n hint={formatMessage({\n id: 'Settings.application.customization.menu-logo.carousel-hint',\n defaultMessage: 'Replace the logo in the main navigation',\n })}\n label={formatMessage({\n id: 'Settings.application.customization.carousel.menu-logo.title',\n defaultMessage: 'Menu logo',\n })}\n onChangeLogo={handleChangeLogo('menu')}\n />\n </Grid.Item>\n <Grid.Item col={6} xs={12} direction=\"column\" alignItems=\"stretch\">\n <LogoInput\n canUpdate={canUpdate}\n customLogo={logos.auth.custom}\n defaultLogo={logos.auth.default}\n hint={formatMessage({\n id: 'Settings.application.customization.auth-logo.carousel-hint',\n defaultMessage: 'Replace the logo in the authentication pages',\n })}\n label={formatMessage({\n id: 'Settings.application.customization.carousel.auth-logo.title',\n defaultMessage: 'Auth logo',\n })}\n onChangeLogo={handleChangeLogo('auth')}\n />\n </Grid.Item>\n </Grid.Root>\n </Box>\n )}\n </Flex>\n </Layouts.Content>\n </form>\n </Page.Main>\n </>\n );\n};\n\nexport { ApplicationInfoPage };\n"],"names":["AdminSeatInfoCE","AIUageDataCE","ApplicationInfoPage","trackUsage","useTracking","formatMessage","useIntl","useFetchClient","logos","serverLogos","updateProjectSettings","useConfiguration","setLogos","React","useState","menu","auth","settings","useSelector","selectAdminPermissions","communityEdition","useAppInfo","state","latestStrapiReleaseTag","nodeVersion","shouldUpdateStrapi","strapiVersion","AdminSeatInfo","useEnterprise","AdminSeatInfoEE","isAiEnabled","window","strapi","ai","enabled","AIUsageData","AIUsage","allowedActions","canRead","canUpdate","useRBAC","handleSubmit","e","preventDefault","authLogo","custom","menuLogo","handleChangeLogo","logo","newLogo","prev","useEffect","isSaveDisabled","_jsxs","_Fragment","_jsx","Page","Title","id","defaultMessage","name","Main","form","onSubmit","Layouts","Header","title","subtitle","primaryAction","Button","disabled","type","startIcon","Check","Content","Flex","direction","alignItems","gap","hasRadius","background","shadow","paddingTop","paddingBottom","paddingRight","paddingLeft","Typography","variant","tag","Grid","Root","Item","col","xs","textColor","Link","href","endIcon","ExternalLink","Box","dimension","DIMENSION","size","SIZE","LogoInput","customLogo","defaultLogo","default","hint","label","onChangeLogo"],"mappings":";;;;;;;;;;;;;;;;;;AAoBA,MAAMA,kBAAkB,IAAM,IAAA;AAC9B,MAAMC,eAAe,IAAM,IAAA;AAE3B;;AAEkG,2GAE5FC,mBAAsB,GAAA,IAAA;IAC1B,MAAM,EAAEC,UAAU,EAAE,GAAGC,WAAAA,EAAAA;IACvB,MAAM,EAAEC,aAAa,EAAE,GAAGC,OAAAA,EAAAA;IACVC,cAAAA;AAChB,IAAA,MAAM,EAAEC,KAAOC,EAAAA,WAAW,EAAEC,qBAAqB,EAAE,GAAGC,gBAAiB,CAAA,qBAAA,CAAA;AACvE,IAAA,MAAM,CAACH,KAAOI,EAAAA,QAAAA,CAAS,GAAGC,KAAAA,CAAMC,QAAQ,CAAC;AAAEC,QAAAA,IAAAA,EAAMN,YAAYM,IAAI;AAAEC,QAAAA,IAAAA,EAAMP,YAAYO;AAAK,KAAA,CAAA;AAC1F,IAAA,MAAM,EAAEC,QAAQ,EAAE,GAAGC,WAAYC,CAAAA,sBAAAA,CAAAA;AAEjC,IAAA,MAAMC,mBAAmBC,UAAW,CAAA,qBAAA,EAAuB,CAACC,KAAAA,GAAUA,MAAMF,gBAAgB,CAAA;AAC5F,IAAA,MAAMG,yBAAyBF,UAC7B,CAAA,qBAAA,EACA,CAACC,KAAAA,GAAUA,MAAMC,sBAAsB,CAAA;AAEzC,IAAA,MAAMC,cAAcH,UAAW,CAAA,qBAAA,EAAuB,CAACC,KAAAA,GAAUA,MAAME,WAAW,CAAA;AAClF,IAAA,MAAMC,qBAAqBJ,UAAW,CAAA,qBAAA,EAAuB,CAACC,KAAAA,GAAUA,MAAMG,kBAAkB,CAAA;AAChG,IAAA,MAAMC,gBAAgBL,UAAW,CAAA,qBAAA,EAAuB,CAACC,KAAAA,GAAUA,MAAMI,aAAa,CAAA;IAEtF,MAAMC,aAAAA,GAAgBC,aACpB5B,CAAAA,eAAAA,EACA,UAEI,CAAA,MAAM,OACJ,0GACF,CAAA,EACA6B,eAAe,CAAA;AAErB,IAAA,MAAMC,cAAcC,MAAOC,CAAAA,MAAM,CAACC,EAAE,EAAEC,OAAY,KAAA,KAAA;AAClD,IAAA,MAAMC,WAAcP,GAAAA,aAAAA,CAClB3B,YACA,EAAA,UACE,CACE,MAAM,OACJ,oGAAA,CACF,EACAmC,OAAO,EACX;QACEF,OAASJ,EAAAA;AACX,KAAA,CAAA;AAGF,IAAA,MAAM,EACJO,cAAAA,EAAgB,EAAEC,OAAO,EAAEC,SAAS,EAAE,EACvC,GAAGC,QAAQvB,QAAWA,GAAAA,QAAQ,CAAC,kBAAA,CAAmB,GAAG,EAAC,CAAA;AAEvD,IAAA,MAAMwB,eAAwD,CAACC,CAAAA,GAAAA;AAC7DA,QAAAA,CAAAA,CAAEC,cAAc,EAAA;QAEhBjC,qBAAsB,CAAA;AACpBkC,YAAAA,QAAAA,EAAUpC,KAAMQ,CAAAA,IAAI,CAAC6B,MAAM,IAAI,IAAA;AAC/BC,YAAAA,QAAAA,EAAUtC,KAAMO,CAAAA,IAAI,CAAC8B,MAAM,IAAI;AACjC,SAAA,CAAA;AACF,KAAA;IAEA,MAAME,gBAAAA,GACJ,CAACC,IAAAA,GACD,CAACC,OAAAA,GAAAA;AACC;;UAGA,IAAIA,YAAY,IAAM,EAAA;AACpB9C,gBAAAA,UAAAA,CAAW,mBAAqB,EAAA;AAC9B6C,oBAAAA;AACF,iBAAA,CAAA;AACF;YAEApC,QAAS,CAAA,CAACsC,QAAU;AAClB,oBAAA,GAAGA,IAAI;AACP,oBAAA,CAACF,OAAO;wBACN,GAAGE,IAAI,CAACF,IAAK,CAAA;wBACbH,MAAQI,EAAAA;AACV;iBACF,CAAA,CAAA;AACF,SAAA;AAEFpC,IAAAA,KAAAA,CAAMsC,SAAS,CAAC,IAAA;QACdvC,QAAS,CAAA;AACPG,YAAAA,IAAAA,EAAMN,YAAYM,IAAI;AACtBC,YAAAA,IAAAA,EAAMP,YAAYO;AACpB,SAAA,CAAA;KACC,EAAA;AAACP,QAAAA;AAAY,KAAA,CAAA;;AAGhB,IAAA,IAAI,CAACkB,aAAe,EAAA;QAClB,OAAO,IAAA;AACT;AAEA,IAAA,IAAI,CAACQ,WAAa,EAAA;QAChB,OAAO,IAAA;AACT;AAEA,IAAA,MAAMiB,iBACJ5C,KAAMQ,CAAAA,IAAI,CAAC6B,MAAM,KAAKpC,YAAYO,IAAI,CAAC6B,MAAM,IAAIrC,KAAAA,CAAMO,IAAI,CAAC8B,MAAM,KAAKpC,WAAYM,CAAAA,IAAI,CAAC8B,MAAM;IAEhG,qBACEQ,IAAA,CAAAC,QAAA,EAAA;;AACE,0BAAAC,GAAA,CAACC,KAAKC,KAAK,EAAA;0BACRpD,aACC,CAAA;oBAAEqD,EAAI,EAAA,oBAAA;oBAAsBC,cAAgB,EAAA;iBAC5C,EAAA;AACEC,oBAAAA,IAAAA,EAAMvD,aAAc,CAAA;wBAClBqD,EAAI,EAAA,6BAAA;wBACJC,cAAgB,EAAA;AAClB,qBAAA;AACF,iBAAA;;AAGJ,0BAAAJ,GAAA,CAACC,KAAKK,IAAI,EAAA;AACR,gBAAA,QAAA,gBAAAR,IAACS,CAAAA,MAAAA,EAAAA;oBAAKC,QAAUtB,EAAAA,YAAAA;;AACd,sCAAAc,GAAA,CAACS,QAAQC,MAAM,EAAA;AACbC,4BAAAA,KAAAA,EAAO7D,aAAc,CAAA;gCACnBqD,EAAI,EAAA,4BAAA;gCACJC,cAAgB,EAAA;AAClB,6BAAA,CAAA;AACAQ,4BAAAA,QAAAA,EAAU9D,aAAc,CAAA;gCACtBqD,EAAI,EAAA,kCAAA;gCACJC,cAAgB,EAAA;AAClB,6BAAA,CAAA;AACAS,4BAAAA,aAAAA,EACE7B,2BACEgB,GAACc,CAAAA,MAAAA,EAAAA;gCAAOC,QAAUlB,EAAAA,cAAAA;gCAAgBmB,IAAK,EAAA,QAAA;AAASC,gCAAAA,SAAAA,gBAAWjB,GAACkB,CAAAA,KAAAA,EAAAA,EAAAA,CAAAA;0CACzDpE,aAAc,CAAA;oCAAEqD,EAAI,EAAA,aAAA;oCAAeC,cAAgB,EAAA;AAAO,iCAAA;;;AAKnE,sCAAAJ,GAAA,CAACS,QAAQU,OAAO,EAAA;AACd,4BAAA,QAAA,gBAAArB,IAACsB,CAAAA,IAAAA,EAAAA;gCAAKC,SAAU,EAAA,QAAA;gCAASC,UAAW,EAAA,SAAA;gCAAUC,GAAK,EAAA,CAAA;;kDACjDzB,IAACsB,CAAAA,IAAAA,EAAAA;wCACCC,SAAU,EAAA,QAAA;wCACVC,UAAW,EAAA,SAAA;wCACXC,GAAK,EAAA,CAAA;wCACLC,SAAS,EAAA,IAAA;wCACTC,UAAW,EAAA,UAAA;wCACXC,MAAO,EAAA,aAAA;wCACPC,UAAY,EAAA,CAAA;wCACZC,aAAe,EAAA,CAAA;wCACfC,YAAc,EAAA,CAAA;wCACdC,WAAa,EAAA,CAAA;;0DAEb9B,GAAC+B,CAAAA,UAAAA,EAAAA;gDAAWC,OAAQ,EAAA,OAAA;gDAAQC,GAAI,EAAA,IAAA;0DAC7BnF,aAAc,CAAA;oDACbqD,EAAI,EAAA,gBAAA;oDACJC,cAAgB,EAAA;AAClB,iDAAA;;AAGF,0DAAAN,IAAA,CAACoC,KAAKC,IAAI,EAAA;gDAACZ,GAAK,EAAA,CAAA;gDAAGU,GAAI,EAAA,IAAA;;AACrB,kEAAAnC,IAAA,CAACoC,KAAKE,IAAI,EAAA;wDAACC,GAAK,EAAA,CAAA;wDAAGC,EAAI,EAAA,EAAA;wDAAIjB,SAAU,EAAA,QAAA;wDAASC,UAAW,EAAA,OAAA;;0EACvDtB,GAAC+B,CAAAA,UAAAA,EAAAA;gEAAWC,OAAQ,EAAA,OAAA;gEAAQO,SAAU,EAAA,YAAA;gEAAaN,GAAI,EAAA,IAAA;0EACpDnF,aAAc,CAAA;oEACbqD,EAAI,EAAA,oCAAA;oEACJC,cAAgB,EAAA;AAClB,iEAAA;;0EAEFN,IAACsB,CAAAA,IAAAA,EAAAA;gEAAKG,GAAK,EAAA,CAAA;gEAAGF,SAAU,EAAA,QAAA;gEAASC,UAAW,EAAA,OAAA;gEAAQW,GAAI,EAAA,IAAA;;kFACtDnC,IAACiC,CAAAA,UAAAA,EAAAA;;AAAW,4EAAA,GAAA;AAAE5D,4EAAAA;;;AACbD,oEAAAA,kBAAAA,kBACC8B,GAACwC,CAAAA,IAAAA,EAAAA;wEACCC,IAAM,EAAA,CAAC,8CAA8C,EAAEzE,sBAAwB,CAAA,CAAA;AAC/E0E,wEAAAA,OAAAA,gBAAS1C,GAAC2C,CAAAA,YAAAA,EAAAA,EAAAA,CAAAA;kFAET7F,aAAc,CAAA;4EACbqD,EAAI,EAAA,mCAAA;4EACJC,cAAgB,EAAA;AAClB,yEAAA;;;;;;AAKR,kEAAAN,IAAA,CAACoC,KAAKE,IAAI,EAAA;wDAACC,GAAK,EAAA,CAAA;wDAAGC,EAAI,EAAA,EAAA;wDAAIjB,SAAU,EAAA,QAAA;wDAASC,UAAW,EAAA,OAAA;;0EACvDtB,GAAC+B,CAAAA,UAAAA,EAAAA;gEAAWC,OAAQ,EAAA,OAAA;gEAAQO,SAAU,EAAA,YAAA;gEAAaN,GAAI,EAAA,IAAA;0EACpDnF,aAAc,CAAA;oEACbqD,EAAI,EAAA,oCAAA;oEACJC,cAAgB,EAAA;AAClB,iEAAA;;0EAEFN,IAACsB,CAAAA,IAAAA,EAAAA;gEAAKG,GAAK,EAAA,CAAA;gEAAGF,SAAU,EAAA,QAAA;gEAASC,UAAW,EAAA,OAAA;gEAAQW,GAAI,EAAA,IAAA;;kFACtDjC,GAAC+B,CAAAA,UAAAA,EAAAA;kFACEjF,aACC,CAAA;4EACEqD,EAAI,EAAA,+BAAA;4EACJC,cACE,EAAA;yEAEJ,EAAA;AAAEvC,4EAAAA;AAAiB,yEAAA;;kFAGvBmC,GAACwC,CAAAA,IAAAA,EAAAA;wEAAKC,IAAK,EAAA,uCAAA;AAAwCC,wEAAAA,OAAAA,gBAAS1C,GAAC2C,CAAAA,YAAAA,EAAAA,EAAAA,CAAAA;kFAC1D7F,aAAc,CAAA;4EACbqD,EAAI,EAAA,mCAAA;4EACJC,cAAgB,EAAA;AAClB,yEAAA;;;;;;AAKN,kEAAAN,IAAA,CAACoC,KAAKE,IAAI,EAAA;wDAACC,GAAK,EAAA,CAAA;wDAAGC,EAAI,EAAA,EAAA;wDAAIjB,SAAU,EAAA,QAAA;wDAASC,UAAW,EAAA,OAAA;;0EACvDtB,GAAC+B,CAAAA,UAAAA,EAAAA;gEAAWC,OAAQ,EAAA,OAAA;gEAAQO,SAAU,EAAA,YAAA;gEAAaN,GAAI,EAAA,IAAA;0EACpDnF,aAAc,CAAA;oEACbqD,EAAI,EAAA,mCAAA;oEACJC,cAAgB,EAAA;AAClB,iEAAA;;0EAEFJ,GAAC+B,CAAAA,UAAAA,EAAAA;gEAAWE,GAAI,EAAA,IAAA;AAAMhE,gEAAAA,QAAAA,EAAAA;;;;kEAExB+B,GAAC5B,CAAAA,aAAAA,EAAAA,EAAAA,CAAAA;kEACD4B,GAACpB,CAAAA,WAAAA,EAAAA,EAAAA;;;;;AAGJG,oCAAAA,OAAAA,kBACCe,IAAC8C,CAAAA,GAAAA,EAAAA;wCACCpB,SAAS,EAAA,IAAA;wCACTC,UAAW,EAAA,UAAA;wCACXC,MAAO,EAAA,aAAA;wCACPC,UAAY,EAAA,CAAA;wCACZC,aAAe,EAAA,CAAA;wCACfC,YAAc,EAAA,CAAA;wCACdC,WAAa,EAAA,CAAA;;0DAEb9B,GAAC+B,CAAAA,UAAAA,EAAAA;gDAAWC,OAAQ,EAAA,OAAA;gDAAQC,GAAI,EAAA,IAAA;0DAC7BnF,aAAc,CAAA;oDACbqD,EAAI,EAAA,oCAAA;oDACJC,cAAgB,EAAA;AAClB,iDAAA;;0DAEFJ,GAAC+B,CAAAA,UAAAA,EAAAA;gDAAWC,OAAQ,EAAA,IAAA;gDAAKO,SAAU,EAAA,YAAA;0DAChCzF,aACC,CAAA;oDACEqD,EAAI,EAAA,iDAAA;oDACJC,cACE,EAAA;iDAEJ,EAAA;oDAAEyC,SAAWC,EAAAA,SAAAA;oDAAWC,IAAMC,EAAAA;AAAK,iDAAA;;AAGvC,0DAAAlD,IAAA,CAACoC,KAAKC,IAAI,EAAA;gDAACR,UAAY,EAAA,CAAA;gDAAGJ,GAAK,EAAA,CAAA;;AAC7B,kEAAAvB,GAAA,CAACkC,KAAKE,IAAI,EAAA;wDAACC,GAAK,EAAA,CAAA;wDAAGC,EAAI,EAAA,EAAA;wDAAIjB,SAAU,EAAA,QAAA;wDAASC,UAAW,EAAA,SAAA;AACvD,wDAAA,QAAA,gBAAAtB,GAACiD,CAAAA,SAAAA,EAAAA;4DACCjE,SAAWA,EAAAA,SAAAA;4DACXkE,UAAYjG,EAAAA,KAAAA,CAAMO,IAAI,CAAC8B,MAAM;4DAC7B6D,WAAalG,EAAAA,KAAAA,CAAMO,IAAI,CAAC4F,OAAO;AAC/BC,4DAAAA,IAAAA,EAAMvG,aAAc,CAAA;gEAClBqD,EAAI,EAAA,4DAAA;gEACJC,cAAgB,EAAA;AAClB,6DAAA,CAAA;AACAkD,4DAAAA,KAAAA,EAAOxG,aAAc,CAAA;gEACnBqD,EAAI,EAAA,6DAAA;gEACJC,cAAgB,EAAA;AAClB,6DAAA,CAAA;AACAmD,4DAAAA,YAAAA,EAAc/D,gBAAiB,CAAA,MAAA;;;AAGnC,kEAAAQ,GAAA,CAACkC,KAAKE,IAAI,EAAA;wDAACC,GAAK,EAAA,CAAA;wDAAGC,EAAI,EAAA,EAAA;wDAAIjB,SAAU,EAAA,QAAA;wDAASC,UAAW,EAAA,SAAA;AACvD,wDAAA,QAAA,gBAAAtB,GAACiD,CAAAA,SAAAA,EAAAA;4DACCjE,SAAWA,EAAAA,SAAAA;4DACXkE,UAAYjG,EAAAA,KAAAA,CAAMQ,IAAI,CAAC6B,MAAM;4DAC7B6D,WAAalG,EAAAA,KAAAA,CAAMQ,IAAI,CAAC2F,OAAO;AAC/BC,4DAAAA,IAAAA,EAAMvG,aAAc,CAAA;gEAClBqD,EAAI,EAAA,4DAAA;gEACJC,cAAgB,EAAA;AAClB,6DAAA,CAAA;AACAkD,4DAAAA,KAAAA,EAAOxG,aAAc,CAAA;gEACnBqD,EAAI,EAAA,6DAAA;gEACJC,cAAgB,EAAA;AAClB,6DAAA,CAAA;AACAmD,4DAAAA,YAAAA,EAAc/D,gBAAiB,CAAA,MAAA;;;;;;;;;;;;;;;AAYvD;;;;"}
1
+ {"version":3,"file":"ApplicationInfoPage.mjs","sources":["../../../../../../../../admin/src/pages/Settings/pages/ApplicationInfo/ApplicationInfoPage.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { Box, Button, Flex, Grid, Link, Typography } from '@strapi/design-system';\nimport { Check, ExternalLink } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\nimport { useSelector } from 'react-redux';\n\nimport { Layouts } from '../../../../components/Layouts/Layout';\nimport { Page } from '../../../../components/PageHelpers';\nimport { useAppInfo } from '../../../../features/AppInfo';\nimport { useConfiguration } from '../../../../features/Configuration';\nimport { useTracking } from '../../../../features/Tracking';\nimport { useEnterprise } from '../../../../hooks/useEnterprise';\nimport { useFetchClient } from '../../../../hooks/useFetchClient';\nimport { useRBAC } from '../../../../hooks/useRBAC';\nimport { selectAdminPermissions } from '../../../../selectors';\n\nimport { LogoInput, LogoInputProps } from './components/LogoInput';\nimport { DIMENSION, SIZE } from './utils/constants';\n\nconst AdminSeatInfoCE = () => null;\nconst AIUageDataCE = () => null;\n\n/* -------------------------------------------------------------------------------------------------\n * ApplicationInfoPage\n * -----------------------------------------------------------------------------------------------*/\n\nconst ApplicationInfoPage = () => {\n const { trackUsage } = useTracking();\n const { formatMessage } = useIntl();\n const { get } = useFetchClient();\n const { logos: serverLogos, updateProjectSettings } = useConfiguration('ApplicationInfoPage');\n const [logos, setLogos] = React.useState({ menu: serverLogos.menu, auth: serverLogos.auth });\n const { settings } = useSelector(selectAdminPermissions);\n\n const communityEdition = useAppInfo('ApplicationInfoPage', (state) => state.communityEdition);\n const latestStrapiReleaseTag = useAppInfo(\n 'ApplicationInfoPage',\n (state) => state.latestStrapiReleaseTag\n );\n const nodeVersion = useAppInfo('ApplicationInfoPage', (state) => state.nodeVersion);\n const shouldUpdateStrapi = useAppInfo('ApplicationInfoPage', (state) => state.shouldUpdateStrapi);\n const strapiVersion = useAppInfo('ApplicationInfoPage', (state) => state.strapiVersion);\n\n const AdminSeatInfo = useEnterprise(\n AdminSeatInfoCE,\n async () =>\n (\n await import(\n '../../../../../../ee/admin/src/pages/SettingsPage/pages/ApplicationInfoPage/components/AdminSeatInfo'\n )\n ).AdminSeatInfoEE\n );\n const isAiEnabled = window.strapi.ai?.enabled !== false;\n const AIUsageData = useEnterprise(\n AIUageDataCE,\n async () =>\n (\n await import(\n '../../../../../../ee/admin/src/pages/SettingsPage/pages/ApplicationInfoPage/components/AIUsage'\n )\n ).AIUsage,\n {\n enabled: isAiEnabled,\n }\n );\n\n const {\n allowedActions: { canRead, canUpdate },\n } = useRBAC(settings ? settings['project-settings'] : {});\n\n const handleSubmit: React.FormEventHandler<HTMLFormElement> = (e) => {\n e.preventDefault();\n\n updateProjectSettings({\n authLogo: logos.auth.custom ?? null,\n menuLogo: logos.menu.custom ?? null,\n });\n };\n\n const handleChangeLogo =\n (logo: 'menu' | 'auth'): LogoInputProps['onChangeLogo'] =>\n (newLogo) => {\n /**\n * If there's no newLogo value we can assume we're reseting.\n */\n if (newLogo === null) {\n trackUsage('didClickResetLogo', {\n logo,\n });\n }\n\n setLogos((prev) => ({\n ...prev,\n [logo]: {\n ...prev[logo],\n custom: newLogo,\n },\n }));\n };\n\n React.useEffect(() => {\n setLogos({\n menu: serverLogos.menu,\n auth: serverLogos.auth,\n });\n }, [serverLogos]);\n\n // block rendering until the EE component is fully loaded\n if (!AdminSeatInfo) {\n return null;\n }\n\n if (!AIUsageData) {\n return null;\n }\n\n const isSaveDisabled =\n logos.auth.custom === serverLogos.auth.custom && logos.menu.custom === serverLogos.menu.custom;\n\n return (\n <>\n <Page.Title>\n {formatMessage(\n { id: 'Settings.PageTitle', defaultMessage: 'Settings - {name}' },\n {\n name: formatMessage({\n id: 'Settings.application.header',\n defaultMessage: 'Application',\n }),\n }\n )}\n </Page.Title>\n <Page.Main>\n <form onSubmit={handleSubmit}>\n <Layouts.Header\n title={formatMessage({\n id: 'Settings.application.title',\n defaultMessage: 'Overview',\n })}\n subtitle={formatMessage({\n id: 'Settings.application.description',\n defaultMessage: 'Administration panel’s global information',\n })}\n primaryAction={\n canUpdate && (\n <Button disabled={isSaveDisabled} type=\"submit\" startIcon={<Check />} fullWidth>\n {formatMessage({ id: 'global.save', defaultMessage: 'Save' })}\n </Button>\n )\n }\n />\n <Layouts.Content>\n <Flex direction=\"column\" alignItems=\"stretch\" gap={6}>\n <Flex\n direction=\"column\"\n alignItems=\"stretch\"\n gap={4}\n hasRadius\n background=\"neutral0\"\n shadow=\"tableShadow\"\n paddingTop={6}\n paddingBottom={6}\n paddingRight={7}\n paddingLeft={7}\n >\n <Typography variant=\"delta\" tag=\"h3\">\n {formatMessage({\n id: 'global.details',\n defaultMessage: 'Details',\n })}\n </Typography>\n\n <Grid.Root gap={5} tag=\"dl\">\n <Grid.Item col={6} xs={12} direction=\"column\" alignItems=\"start\">\n <Typography variant=\"sigma\" textColor=\"neutral600\" tag=\"dt\">\n {formatMessage({\n id: 'Settings.application.strapiVersion',\n defaultMessage: 'strapi version',\n })}\n </Typography>\n <Flex gap={3} direction=\"column\" alignItems=\"start\" tag=\"dd\">\n <Typography>v{strapiVersion}</Typography>\n {shouldUpdateStrapi && (\n <Link\n href={`https://github.com/strapi/strapi/releases/tag/${latestStrapiReleaseTag}`}\n endIcon={<ExternalLink />}\n >\n {formatMessage({\n id: 'Settings.application.link-upgrade',\n defaultMessage: 'Upgrade your admin panel',\n })}\n </Link>\n )}\n </Flex>\n </Grid.Item>\n <Grid.Item col={6} xs={12} direction=\"column\" alignItems=\"start\">\n <Typography variant=\"sigma\" textColor=\"neutral600\" tag=\"dt\">\n {formatMessage({\n id: 'Settings.application.edition-title',\n defaultMessage: 'current edition',\n })}\n </Typography>\n <Flex gap={3} direction=\"column\" alignItems=\"start\" tag=\"dd\">\n <Typography>\n {formatMessage(\n {\n id: 'Settings.application.ee-or-ce',\n defaultMessage:\n '{communityEdition, select, true {Community Edition} other {Enterprise Edition}}',\n },\n { communityEdition }\n )}\n </Typography>\n <Link href=\"https://strapi.io/pricing-self-hosted\" endIcon={<ExternalLink />}>\n {formatMessage({\n id: 'Settings.application.link-pricing',\n defaultMessage: 'See all pricing plans',\n })}\n </Link>\n </Flex>\n </Grid.Item>\n\n <Grid.Item col={6} xs={12} direction=\"column\" alignItems=\"start\">\n <Typography variant=\"sigma\" textColor=\"neutral600\" tag=\"dt\">\n {formatMessage({\n id: 'Settings.application.node-version',\n defaultMessage: 'node version',\n })}\n </Typography>\n <Typography tag=\"dd\">{nodeVersion}</Typography>\n </Grid.Item>\n <AdminSeatInfo />\n <AIUsageData />\n </Grid.Root>\n </Flex>\n {canRead && (\n <Box\n hasRadius\n background=\"neutral0\"\n shadow=\"tableShadow\"\n paddingTop={6}\n paddingBottom={6}\n paddingRight={7}\n paddingLeft={7}\n >\n <Typography variant=\"delta\" tag=\"h3\">\n {formatMessage({\n id: 'Settings.application.customization',\n defaultMessage: 'Customization',\n })}\n </Typography>\n <Typography variant=\"pi\" textColor=\"neutral600\">\n {formatMessage(\n {\n id: 'Settings.application.customization.size-details',\n defaultMessage:\n 'Max dimension: {dimension}×{dimension}, Max file size: {size}KB',\n },\n { dimension: DIMENSION, size: SIZE }\n )}\n </Typography>\n <Grid.Root paddingTop={4} gap={4}>\n <Grid.Item col={6} xs={12} direction=\"column\" alignItems=\"stretch\">\n <LogoInput\n canUpdate={canUpdate}\n customLogo={logos.menu.custom}\n defaultLogo={logos.menu.default}\n hint={formatMessage({\n id: 'Settings.application.customization.menu-logo.carousel-hint',\n defaultMessage: 'Replace the logo in the main navigation',\n })}\n label={formatMessage({\n id: 'Settings.application.customization.carousel.menu-logo.title',\n defaultMessage: 'Menu logo',\n })}\n onChangeLogo={handleChangeLogo('menu')}\n />\n </Grid.Item>\n <Grid.Item col={6} xs={12} direction=\"column\" alignItems=\"stretch\">\n <LogoInput\n canUpdate={canUpdate}\n customLogo={logos.auth.custom}\n defaultLogo={logos.auth.default}\n hint={formatMessage({\n id: 'Settings.application.customization.auth-logo.carousel-hint',\n defaultMessage: 'Replace the logo in the authentication pages',\n })}\n label={formatMessage({\n id: 'Settings.application.customization.carousel.auth-logo.title',\n defaultMessage: 'Auth logo',\n })}\n onChangeLogo={handleChangeLogo('auth')}\n />\n </Grid.Item>\n </Grid.Root>\n </Box>\n )}\n </Flex>\n </Layouts.Content>\n </form>\n </Page.Main>\n </>\n );\n};\n\nexport { ApplicationInfoPage };\n"],"names":["AdminSeatInfoCE","AIUageDataCE","ApplicationInfoPage","trackUsage","useTracking","formatMessage","useIntl","useFetchClient","logos","serverLogos","updateProjectSettings","useConfiguration","setLogos","React","useState","menu","auth","settings","useSelector","selectAdminPermissions","communityEdition","useAppInfo","state","latestStrapiReleaseTag","nodeVersion","shouldUpdateStrapi","strapiVersion","AdminSeatInfo","useEnterprise","AdminSeatInfoEE","isAiEnabled","window","strapi","ai","enabled","AIUsageData","AIUsage","allowedActions","canRead","canUpdate","useRBAC","handleSubmit","e","preventDefault","authLogo","custom","menuLogo","handleChangeLogo","logo","newLogo","prev","useEffect","isSaveDisabled","_jsxs","_Fragment","_jsx","Page","Title","id","defaultMessage","name","Main","form","onSubmit","Layouts","Header","title","subtitle","primaryAction","Button","disabled","type","startIcon","Check","fullWidth","Content","Flex","direction","alignItems","gap","hasRadius","background","shadow","paddingTop","paddingBottom","paddingRight","paddingLeft","Typography","variant","tag","Grid","Root","Item","col","xs","textColor","Link","href","endIcon","ExternalLink","Box","dimension","DIMENSION","size","SIZE","LogoInput","customLogo","defaultLogo","default","hint","label","onChangeLogo"],"mappings":"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"}
@@ -162,6 +162,7 @@ var yup__namespace = /*#__PURE__*/_interopNamespaceDefault(yup);
162
162
  children: [
163
163
  /*#__PURE__*/ jsxRuntime.jsx(Layout.Layouts.Header, {
164
164
  primaryAction: /*#__PURE__*/ jsxRuntime.jsxs(designSystem.Flex, {
165
+ width: "100%",
165
166
  gap: 2,
166
167
  children: [
167
168
  /*#__PURE__*/ jsxRuntime.jsx(designSystem.Button, {
@@ -170,6 +171,7 @@ var yup__namespace = /*#__PURE__*/_interopNamespaceDefault(yup);
170
171
  handleReset();
171
172
  permissionsRef.current?.resetForm();
172
173
  },
174
+ fullWidth: true,
173
175
  children: formatMessage({
174
176
  id: 'app.components.Button.reset',
175
177
  defaultMessage: 'Reset'
@@ -179,6 +181,7 @@ var yup__namespace = /*#__PURE__*/_interopNamespaceDefault(yup);
179
181
  type: "submit",
180
182
  loading: isSubmitting,
181
183
  startIcon: /*#__PURE__*/ jsxRuntime.jsx(icons.Check, {}),
184
+ fullWidth: true,
182
185
  children: formatMessage({
183
186
  id: 'global.save',
184
187
  defaultMessage: 'Save'
@@ -1 +1 @@
1
- {"version":3,"file":"CreatePage.js","sources":["../../../../../../../../admin/src/pages/Settings/pages/Roles/CreatePage.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport {\n Box,\n Button,\n Field,\n Flex,\n Grid,\n Main,\n Textarea,\n TextInput,\n Typography,\n} from '@strapi/design-system';\nimport { Check } from '@strapi/icons';\nimport { format } from 'date-fns';\nimport { Formik, Form, FormikHelpers } from 'formik';\nimport { useIntl } from 'react-intl';\nimport { useNavigate, useParams } from 'react-router-dom';\nimport { styled } from 'styled-components';\nimport * as yup from 'yup';\n\nimport { Layouts } from '../../../../components/Layouts/Layout';\nimport { Page } from '../../../../components/PageHelpers';\nimport { useTypedSelector } from '../../../../core/store/hooks';\nimport { BackButton } from '../../../../features/BackButton';\nimport { useNotification } from '../../../../features/Notifications';\nimport { useTracking } from '../../../../features/Tracking';\nimport { useAPIErrorHandler } from '../../../../hooks/useAPIErrorHandler';\nimport {\n useCreateRoleMutation,\n useGetRolePermissionLayoutQuery,\n useGetRolePermissionsQuery,\n useUpdateRolePermissionsMutation,\n} from '../../../../services/users';\nimport { isBaseQueryError } from '../../../../utils/baseQuery';\nimport { translatedErrors } from '../../../../utils/translatedErrors';\n\nimport { Permissions, PermissionsAPI } from './components/Permissions';\n\n/* -------------------------------------------------------------------------------------------------\n * CreatePage\n * -----------------------------------------------------------------------------------------------*/\n\nconst CREATE_SCHEMA = yup.object().shape({\n name: yup.string().required(translatedErrors.required.id),\n description: yup.string().required(translatedErrors.required.id),\n});\n\n/**\n * TODO: be nice if we could just infer this from the schema\n */\ninterface CreateRoleFormValues {\n name: string;\n description: string;\n}\n\n/**\n * TODO: this whole section of the app needs refactoring. Using a ref to\n * manage the state of the child is nonsensical.\n */\nconst CreatePage = () => {\n const { id } = useParams();\n const { toggleNotification } = useNotification();\n const { formatMessage } = useIntl();\n const navigate = useNavigate();\n const permissionsRef = React.useRef<PermissionsAPI>(null);\n const { trackUsage } = useTracking();\n const {\n _unstableFormatAPIError: formatAPIError,\n _unstableFormatValidationErrors: formatValidationErrors,\n } = useAPIErrorHandler();\n\n const { isLoading: isLoadingPermissionsLayout, currentData: permissionsLayout } =\n useGetRolePermissionLayoutQuery({\n /**\n * Role here is a query param so if there's no role we pass an empty string\n * which returns us a default layout.\n */\n role: id ?? '',\n });\n\n /**\n * We need this so if we're cloning a role, we can fetch\n * the current permissions that role has.\n */\n const { currentData: rolePermissions, isLoading: isLoadingRole } = useGetRolePermissionsQuery(\n {\n id: id!,\n },\n {\n skip: !id,\n refetchOnMountOrArgChange: true,\n }\n );\n\n const [createRole] = useCreateRoleMutation();\n const [updateRolePermissions] = useUpdateRolePermissionsMutation();\n\n const handleCreateRoleSubmit = async (\n data: CreateRoleFormValues,\n formik: FormikHelpers<CreateRoleFormValues>\n ) => {\n try {\n if (id) {\n trackUsage('willDuplicateRole');\n } else {\n trackUsage('willCreateNewRole');\n }\n\n const res = await createRole(data);\n\n if ('error' in res) {\n if (isBaseQueryError(res.error) && res.error.name === 'ValidationError') {\n formik.setErrors(formatValidationErrors(res.error));\n } else {\n toggleNotification({\n type: 'danger',\n message: formatAPIError(res.error),\n });\n }\n\n return;\n }\n\n const { permissionsToSend } = permissionsRef.current?.getPermissions() ?? {};\n\n if (res.data.id && Array.isArray(permissionsToSend) && permissionsToSend.length > 0) {\n const updateRes = await updateRolePermissions({\n id: res.data.id,\n permissions: permissionsToSend,\n });\n\n if ('error' in updateRes) {\n if (isBaseQueryError(updateRes.error) && updateRes.error.name === 'ValidationError') {\n formik.setErrors(formatValidationErrors(updateRes.error));\n } else {\n toggleNotification({\n type: 'danger',\n message: formatAPIError(updateRes.error),\n });\n }\n\n return;\n }\n }\n\n toggleNotification({\n type: 'success',\n message: formatMessage({ id: 'Settings.roles.created', defaultMessage: 'created' }),\n });\n\n navigate(`../roles/${res.data.id.toString()}`, { replace: true });\n } catch (err) {\n toggleNotification({\n type: 'danger',\n message: formatMessage({ id: 'notification.error', defaultMessage: 'An error occurred' }),\n });\n }\n };\n\n if ((isLoadingPermissionsLayout && isLoadingRole) || !permissionsLayout) {\n return <Page.Loading />;\n }\n\n return (\n <Main>\n <Page.Title>\n {formatMessage(\n { id: 'Settings.PageTitle', defaultMessage: 'Settings - {name}' },\n {\n name: 'Roles',\n }\n )}\n </Page.Title>\n <Formik\n initialValues={\n {\n name: '',\n description: `${formatMessage({\n id: 'Settings.roles.form.created',\n defaultMessage: 'Created',\n })} ${format(new Date(), 'PPP')}`,\n } satisfies CreateRoleFormValues\n }\n onSubmit={handleCreateRoleSubmit}\n validationSchema={CREATE_SCHEMA}\n validateOnChange={false}\n >\n {({ values, errors, handleReset, handleChange, isSubmitting }) => (\n <Form>\n <>\n <Layouts.Header\n primaryAction={\n <Flex gap={2}>\n <Button\n variant=\"secondary\"\n onClick={() => {\n handleReset();\n permissionsRef.current?.resetForm();\n }}\n >\n {formatMessage({\n id: 'app.components.Button.reset',\n defaultMessage: 'Reset',\n })}\n </Button>\n <Button type=\"submit\" loading={isSubmitting} startIcon={<Check />}>\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 // The back link for mobile works differently; it is placed higher up in the DOM.\n <Box display={{ initial: 'none', medium: 'block' }}>\n <BackButton fallback=\"../roles\" />\n </Box>\n }\n />\n <Layouts.Content>\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.Root gap={4}>\n <Grid.Item m={6} xs={12} direction=\"column\" alignItems=\"stretch\">\n <Field.Root\n name=\"name\"\n error={errors.name && formatMessage({ id: errors.name })}\n required\n >\n <Field.Label>\n {formatMessage({\n id: 'global.name',\n defaultMessage: 'Name',\n })}\n </Field.Label>\n <TextInput type=\"text\" onChange={handleChange} value={values.name} />\n <Field.Error />\n </Field.Root>\n </Grid.Item>\n <Grid.Item m={6} xs={12} direction=\"column\" alignItems=\"stretch\">\n <Field.Root\n name=\"description\"\n error={errors.description && formatMessage({ id: errors.description })}\n >\n <Field.Label>\n {formatMessage({\n id: 'global.description',\n defaultMessage: 'Description',\n })}\n </Field.Label>\n <Textarea onChange={handleChange} value={values.description} />\n </Field.Root>\n </Grid.Item>\n </Grid.Root>\n </Flex>\n </Box>\n <Box shadow=\"filterShadow\" hasRadius>\n <Permissions\n isFormDisabled={false}\n ref={permissionsRef}\n permissions={rolePermissions}\n layout={permissionsLayout}\n />\n </Box>\n </Flex>\n </Layouts.Content>\n </>\n </Form>\n )}\n </Formik>\n </Main>\n );\n};\n\nconst UsersRoleNumber = styled.div`\n border: 1px solid ${({ theme }) => theme.colors.primary200};\n background: ${({ theme }) => theme.colors.primary100};\n padding: ${({ theme }) => `${theme.spaces[2]} ${theme.spaces[4]}`};\n color: ${({ theme }) => theme.colors.primary600};\n border-radius: ${({ theme }) => theme.borderRadius};\n font-size: 1.2rem;\n font-weight: bold;\n`;\n\n/* -------------------------------------------------------------------------------------------------\n * ProtectedCreatePage\n * -----------------------------------------------------------------------------------------------*/\n\nconst ProtectedCreatePage = () => {\n const permissions = useTypedSelector(\n (state) => state.admin_app.permissions.settings?.roles.create\n );\n\n return (\n <Page.Protect permissions={permissions}>\n <CreatePage />\n </Page.Protect>\n );\n};\n\nexport { CreatePage, ProtectedCreatePage };\n"],"names":["CREATE_SCHEMA","yup","object","shape","name","string","required","translatedErrors","id","description","CreatePage","useParams","toggleNotification","useNotification","formatMessage","useIntl","navigate","useNavigate","permissionsRef","React","useRef","trackUsage","useTracking","_unstableFormatAPIError","formatAPIError","_unstableFormatValidationErrors","formatValidationErrors","useAPIErrorHandler","isLoading","isLoadingPermissionsLayout","currentData","permissionsLayout","useGetRolePermissionLayoutQuery","role","rolePermissions","isLoadingRole","useGetRolePermissionsQuery","skip","refetchOnMountOrArgChange","createRole","useCreateRoleMutation","updateRolePermissions","useUpdateRolePermissionsMutation","handleCreateRoleSubmit","data","formik","res","isBaseQueryError","error","setErrors","type","message","permissionsToSend","current","getPermissions","Array","isArray","length","updateRes","permissions","defaultMessage","toString","replace","err","_jsx","Page","Loading","_jsxs","Main","Title","Formik","initialValues","format","Date","onSubmit","validationSchema","validateOnChange","values","errors","handleReset","handleChange","isSubmitting","Form","_Fragment","Layouts","Header","primaryAction","Flex","gap","Button","variant","onClick","resetForm","loading","startIcon","Check","title","subtitle","navigationAction","Box","display","initial","medium","BackButton","fallback","Content","direction","alignItems","background","padding","shadow","hasRadius","justifyContent","Typography","fontWeight","textColor","UsersRoleNumber","number","Grid","Root","Item","m","xs","Field","Label","TextInput","onChange","value","Error","Textarea","Permissions","isFormDisabled","ref","layout","styled","div","theme","colors","primary200","primary100","spaces","primary600","borderRadius","ProtectedCreatePage","useTypedSelector","state","admin_app","settings","roles","create","Protect"],"mappings":"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"}
1
+ {"version":3,"file":"CreatePage.js","sources":["../../../../../../../../admin/src/pages/Settings/pages/Roles/CreatePage.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport {\n Box,\n Button,\n Field,\n Flex,\n Grid,\n Main,\n Textarea,\n TextInput,\n Typography,\n} from '@strapi/design-system';\nimport { Check } from '@strapi/icons';\nimport { format } from 'date-fns';\nimport { Formik, Form, FormikHelpers } from 'formik';\nimport { useIntl } from 'react-intl';\nimport { useNavigate, useParams } from 'react-router-dom';\nimport { styled } from 'styled-components';\nimport * as yup from 'yup';\n\nimport { Layouts } from '../../../../components/Layouts/Layout';\nimport { Page } from '../../../../components/PageHelpers';\nimport { useTypedSelector } from '../../../../core/store/hooks';\nimport { BackButton } from '../../../../features/BackButton';\nimport { useNotification } from '../../../../features/Notifications';\nimport { useTracking } from '../../../../features/Tracking';\nimport { useAPIErrorHandler } from '../../../../hooks/useAPIErrorHandler';\nimport {\n useCreateRoleMutation,\n useGetRolePermissionLayoutQuery,\n useGetRolePermissionsQuery,\n useUpdateRolePermissionsMutation,\n} from '../../../../services/users';\nimport { isBaseQueryError } from '../../../../utils/baseQuery';\nimport { translatedErrors } from '../../../../utils/translatedErrors';\n\nimport { Permissions, PermissionsAPI } from './components/Permissions';\n\n/* -------------------------------------------------------------------------------------------------\n * CreatePage\n * -----------------------------------------------------------------------------------------------*/\n\nconst CREATE_SCHEMA = yup.object().shape({\n name: yup.string().required(translatedErrors.required.id),\n description: yup.string().required(translatedErrors.required.id),\n});\n\n/**\n * TODO: be nice if we could just infer this from the schema\n */\ninterface CreateRoleFormValues {\n name: string;\n description: string;\n}\n\n/**\n * TODO: this whole section of the app needs refactoring. Using a ref to\n * manage the state of the child is nonsensical.\n */\nconst CreatePage = () => {\n const { id } = useParams();\n const { toggleNotification } = useNotification();\n const { formatMessage } = useIntl();\n const navigate = useNavigate();\n const permissionsRef = React.useRef<PermissionsAPI>(null);\n const { trackUsage } = useTracking();\n const {\n _unstableFormatAPIError: formatAPIError,\n _unstableFormatValidationErrors: formatValidationErrors,\n } = useAPIErrorHandler();\n\n const { isLoading: isLoadingPermissionsLayout, currentData: permissionsLayout } =\n useGetRolePermissionLayoutQuery({\n /**\n * Role here is a query param so if there's no role we pass an empty string\n * which returns us a default layout.\n */\n role: id ?? '',\n });\n\n /**\n * We need this so if we're cloning a role, we can fetch\n * the current permissions that role has.\n */\n const { currentData: rolePermissions, isLoading: isLoadingRole } = useGetRolePermissionsQuery(\n {\n id: id!,\n },\n {\n skip: !id,\n refetchOnMountOrArgChange: true,\n }\n );\n\n const [createRole] = useCreateRoleMutation();\n const [updateRolePermissions] = useUpdateRolePermissionsMutation();\n\n const handleCreateRoleSubmit = async (\n data: CreateRoleFormValues,\n formik: FormikHelpers<CreateRoleFormValues>\n ) => {\n try {\n if (id) {\n trackUsage('willDuplicateRole');\n } else {\n trackUsage('willCreateNewRole');\n }\n\n const res = await createRole(data);\n\n if ('error' in res) {\n if (isBaseQueryError(res.error) && res.error.name === 'ValidationError') {\n formik.setErrors(formatValidationErrors(res.error));\n } else {\n toggleNotification({\n type: 'danger',\n message: formatAPIError(res.error),\n });\n }\n\n return;\n }\n\n const { permissionsToSend } = permissionsRef.current?.getPermissions() ?? {};\n\n if (res.data.id && Array.isArray(permissionsToSend) && permissionsToSend.length > 0) {\n const updateRes = await updateRolePermissions({\n id: res.data.id,\n permissions: permissionsToSend,\n });\n\n if ('error' in updateRes) {\n if (isBaseQueryError(updateRes.error) && updateRes.error.name === 'ValidationError') {\n formik.setErrors(formatValidationErrors(updateRes.error));\n } else {\n toggleNotification({\n type: 'danger',\n message: formatAPIError(updateRes.error),\n });\n }\n\n return;\n }\n }\n\n toggleNotification({\n type: 'success',\n message: formatMessage({ id: 'Settings.roles.created', defaultMessage: 'created' }),\n });\n\n navigate(`../roles/${res.data.id.toString()}`, { replace: true });\n } catch (err) {\n toggleNotification({\n type: 'danger',\n message: formatMessage({ id: 'notification.error', defaultMessage: 'An error occurred' }),\n });\n }\n };\n\n if ((isLoadingPermissionsLayout && isLoadingRole) || !permissionsLayout) {\n return <Page.Loading />;\n }\n\n return (\n <Main>\n <Page.Title>\n {formatMessage(\n { id: 'Settings.PageTitle', defaultMessage: 'Settings - {name}' },\n {\n name: 'Roles',\n }\n )}\n </Page.Title>\n <Formik\n initialValues={\n {\n name: '',\n description: `${formatMessage({\n id: 'Settings.roles.form.created',\n defaultMessage: 'Created',\n })} ${format(new Date(), 'PPP')}`,\n } satisfies CreateRoleFormValues\n }\n onSubmit={handleCreateRoleSubmit}\n validationSchema={CREATE_SCHEMA}\n validateOnChange={false}\n >\n {({ values, errors, handleReset, handleChange, isSubmitting }) => (\n <Form>\n <>\n <Layouts.Header\n primaryAction={\n <Flex width=\"100%\" gap={2}>\n <Button\n variant=\"secondary\"\n onClick={() => {\n handleReset();\n permissionsRef.current?.resetForm();\n }}\n fullWidth\n >\n {formatMessage({\n id: 'app.components.Button.reset',\n defaultMessage: 'Reset',\n })}\n </Button>\n <Button type=\"submit\" loading={isSubmitting} startIcon={<Check />} fullWidth>\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 // The back link for mobile works differently; it is placed higher up in the DOM.\n <Box display={{ initial: 'none', medium: 'block' }}>\n <BackButton fallback=\"../roles\" />\n </Box>\n }\n />\n <Layouts.Content>\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.Root gap={4}>\n <Grid.Item m={6} xs={12} direction=\"column\" alignItems=\"stretch\">\n <Field.Root\n name=\"name\"\n error={errors.name && formatMessage({ id: errors.name })}\n required\n >\n <Field.Label>\n {formatMessage({\n id: 'global.name',\n defaultMessage: 'Name',\n })}\n </Field.Label>\n <TextInput type=\"text\" onChange={handleChange} value={values.name} />\n <Field.Error />\n </Field.Root>\n </Grid.Item>\n <Grid.Item m={6} xs={12} direction=\"column\" alignItems=\"stretch\">\n <Field.Root\n name=\"description\"\n error={errors.description && formatMessage({ id: errors.description })}\n >\n <Field.Label>\n {formatMessage({\n id: 'global.description',\n defaultMessage: 'Description',\n })}\n </Field.Label>\n <Textarea onChange={handleChange} value={values.description} />\n </Field.Root>\n </Grid.Item>\n </Grid.Root>\n </Flex>\n </Box>\n <Box shadow=\"filterShadow\" hasRadius>\n <Permissions\n isFormDisabled={false}\n ref={permissionsRef}\n permissions={rolePermissions}\n layout={permissionsLayout}\n />\n </Box>\n </Flex>\n </Layouts.Content>\n </>\n </Form>\n )}\n </Formik>\n </Main>\n );\n};\n\nconst UsersRoleNumber = styled.div`\n border: 1px solid ${({ theme }) => theme.colors.primary200};\n background: ${({ theme }) => theme.colors.primary100};\n padding: ${({ theme }) => `${theme.spaces[2]} ${theme.spaces[4]}`};\n color: ${({ theme }) => theme.colors.primary600};\n border-radius: ${({ theme }) => theme.borderRadius};\n font-size: 1.2rem;\n font-weight: bold;\n`;\n\n/* -------------------------------------------------------------------------------------------------\n * ProtectedCreatePage\n * -----------------------------------------------------------------------------------------------*/\n\nconst ProtectedCreatePage = () => {\n const permissions = useTypedSelector(\n (state) => state.admin_app.permissions.settings?.roles.create\n );\n\n return (\n <Page.Protect permissions={permissions}>\n <CreatePage />\n </Page.Protect>\n );\n};\n\nexport { CreatePage, ProtectedCreatePage };\n"],"names":["CREATE_SCHEMA","yup","object","shape","name","string","required","translatedErrors","id","description","CreatePage","useParams","toggleNotification","useNotification","formatMessage","useIntl","navigate","useNavigate","permissionsRef","React","useRef","trackUsage","useTracking","_unstableFormatAPIError","formatAPIError","_unstableFormatValidationErrors","formatValidationErrors","useAPIErrorHandler","isLoading","isLoadingPermissionsLayout","currentData","permissionsLayout","useGetRolePermissionLayoutQuery","role","rolePermissions","isLoadingRole","useGetRolePermissionsQuery","skip","refetchOnMountOrArgChange","createRole","useCreateRoleMutation","updateRolePermissions","useUpdateRolePermissionsMutation","handleCreateRoleSubmit","data","formik","res","isBaseQueryError","error","setErrors","type","message","permissionsToSend","current","getPermissions","Array","isArray","length","updateRes","permissions","defaultMessage","toString","replace","err","_jsx","Page","Loading","_jsxs","Main","Title","Formik","initialValues","format","Date","onSubmit","validationSchema","validateOnChange","values","errors","handleReset","handleChange","isSubmitting","Form","_Fragment","Layouts","Header","primaryAction","Flex","width","gap","Button","variant","onClick","resetForm","fullWidth","loading","startIcon","Check","title","subtitle","navigationAction","Box","display","initial","medium","BackButton","fallback","Content","direction","alignItems","background","padding","shadow","hasRadius","justifyContent","Typography","fontWeight","textColor","UsersRoleNumber","number","Grid","Root","Item","m","xs","Field","Label","TextInput","onChange","value","Error","Textarea","Permissions","isFormDisabled","ref","layout","styled","div","theme","colors","primary200","primary100","spaces","primary600","borderRadius","ProtectedCreatePage","useTypedSelector","state","admin_app","settings","roles","create","Protect"],"mappings":"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"}
@@ -140,6 +140,7 @@ import { Permissions } from './components/Permissions.mjs';
140
140
  children: [
141
141
  /*#__PURE__*/ jsx(Layouts.Header, {
142
142
  primaryAction: /*#__PURE__*/ jsxs(Flex, {
143
+ width: "100%",
143
144
  gap: 2,
144
145
  children: [
145
146
  /*#__PURE__*/ jsx(Button, {
@@ -148,6 +149,7 @@ import { Permissions } from './components/Permissions.mjs';
148
149
  handleReset();
149
150
  permissionsRef.current?.resetForm();
150
151
  },
152
+ fullWidth: true,
151
153
  children: formatMessage({
152
154
  id: 'app.components.Button.reset',
153
155
  defaultMessage: 'Reset'
@@ -157,6 +159,7 @@ import { Permissions } from './components/Permissions.mjs';
157
159
  type: "submit",
158
160
  loading: isSubmitting,
159
161
  startIcon: /*#__PURE__*/ jsx(Check, {}),
162
+ fullWidth: true,
160
163
  children: formatMessage({
161
164
  id: 'global.save',
162
165
  defaultMessage: 'Save'
@@ -1 +1 @@
1
- {"version":3,"file":"CreatePage.mjs","sources":["../../../../../../../../admin/src/pages/Settings/pages/Roles/CreatePage.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport {\n Box,\n Button,\n Field,\n Flex,\n Grid,\n Main,\n Textarea,\n TextInput,\n Typography,\n} from '@strapi/design-system';\nimport { Check } from '@strapi/icons';\nimport { format } from 'date-fns';\nimport { Formik, Form, FormikHelpers } from 'formik';\nimport { useIntl } from 'react-intl';\nimport { useNavigate, useParams } from 'react-router-dom';\nimport { styled } from 'styled-components';\nimport * as yup from 'yup';\n\nimport { Layouts } from '../../../../components/Layouts/Layout';\nimport { Page } from '../../../../components/PageHelpers';\nimport { useTypedSelector } from '../../../../core/store/hooks';\nimport { BackButton } from '../../../../features/BackButton';\nimport { useNotification } from '../../../../features/Notifications';\nimport { useTracking } from '../../../../features/Tracking';\nimport { useAPIErrorHandler } from '../../../../hooks/useAPIErrorHandler';\nimport {\n useCreateRoleMutation,\n useGetRolePermissionLayoutQuery,\n useGetRolePermissionsQuery,\n useUpdateRolePermissionsMutation,\n} from '../../../../services/users';\nimport { isBaseQueryError } from '../../../../utils/baseQuery';\nimport { translatedErrors } from '../../../../utils/translatedErrors';\n\nimport { Permissions, PermissionsAPI } from './components/Permissions';\n\n/* -------------------------------------------------------------------------------------------------\n * CreatePage\n * -----------------------------------------------------------------------------------------------*/\n\nconst CREATE_SCHEMA = yup.object().shape({\n name: yup.string().required(translatedErrors.required.id),\n description: yup.string().required(translatedErrors.required.id),\n});\n\n/**\n * TODO: be nice if we could just infer this from the schema\n */\ninterface CreateRoleFormValues {\n name: string;\n description: string;\n}\n\n/**\n * TODO: this whole section of the app needs refactoring. Using a ref to\n * manage the state of the child is nonsensical.\n */\nconst CreatePage = () => {\n const { id } = useParams();\n const { toggleNotification } = useNotification();\n const { formatMessage } = useIntl();\n const navigate = useNavigate();\n const permissionsRef = React.useRef<PermissionsAPI>(null);\n const { trackUsage } = useTracking();\n const {\n _unstableFormatAPIError: formatAPIError,\n _unstableFormatValidationErrors: formatValidationErrors,\n } = useAPIErrorHandler();\n\n const { isLoading: isLoadingPermissionsLayout, currentData: permissionsLayout } =\n useGetRolePermissionLayoutQuery({\n /**\n * Role here is a query param so if there's no role we pass an empty string\n * which returns us a default layout.\n */\n role: id ?? '',\n });\n\n /**\n * We need this so if we're cloning a role, we can fetch\n * the current permissions that role has.\n */\n const { currentData: rolePermissions, isLoading: isLoadingRole } = useGetRolePermissionsQuery(\n {\n id: id!,\n },\n {\n skip: !id,\n refetchOnMountOrArgChange: true,\n }\n );\n\n const [createRole] = useCreateRoleMutation();\n const [updateRolePermissions] = useUpdateRolePermissionsMutation();\n\n const handleCreateRoleSubmit = async (\n data: CreateRoleFormValues,\n formik: FormikHelpers<CreateRoleFormValues>\n ) => {\n try {\n if (id) {\n trackUsage('willDuplicateRole');\n } else {\n trackUsage('willCreateNewRole');\n }\n\n const res = await createRole(data);\n\n if ('error' in res) {\n if (isBaseQueryError(res.error) && res.error.name === 'ValidationError') {\n formik.setErrors(formatValidationErrors(res.error));\n } else {\n toggleNotification({\n type: 'danger',\n message: formatAPIError(res.error),\n });\n }\n\n return;\n }\n\n const { permissionsToSend } = permissionsRef.current?.getPermissions() ?? {};\n\n if (res.data.id && Array.isArray(permissionsToSend) && permissionsToSend.length > 0) {\n const updateRes = await updateRolePermissions({\n id: res.data.id,\n permissions: permissionsToSend,\n });\n\n if ('error' in updateRes) {\n if (isBaseQueryError(updateRes.error) && updateRes.error.name === 'ValidationError') {\n formik.setErrors(formatValidationErrors(updateRes.error));\n } else {\n toggleNotification({\n type: 'danger',\n message: formatAPIError(updateRes.error),\n });\n }\n\n return;\n }\n }\n\n toggleNotification({\n type: 'success',\n message: formatMessage({ id: 'Settings.roles.created', defaultMessage: 'created' }),\n });\n\n navigate(`../roles/${res.data.id.toString()}`, { replace: true });\n } catch (err) {\n toggleNotification({\n type: 'danger',\n message: formatMessage({ id: 'notification.error', defaultMessage: 'An error occurred' }),\n });\n }\n };\n\n if ((isLoadingPermissionsLayout && isLoadingRole) || !permissionsLayout) {\n return <Page.Loading />;\n }\n\n return (\n <Main>\n <Page.Title>\n {formatMessage(\n { id: 'Settings.PageTitle', defaultMessage: 'Settings - {name}' },\n {\n name: 'Roles',\n }\n )}\n </Page.Title>\n <Formik\n initialValues={\n {\n name: '',\n description: `${formatMessage({\n id: 'Settings.roles.form.created',\n defaultMessage: 'Created',\n })} ${format(new Date(), 'PPP')}`,\n } satisfies CreateRoleFormValues\n }\n onSubmit={handleCreateRoleSubmit}\n validationSchema={CREATE_SCHEMA}\n validateOnChange={false}\n >\n {({ values, errors, handleReset, handleChange, isSubmitting }) => (\n <Form>\n <>\n <Layouts.Header\n primaryAction={\n <Flex gap={2}>\n <Button\n variant=\"secondary\"\n onClick={() => {\n handleReset();\n permissionsRef.current?.resetForm();\n }}\n >\n {formatMessage({\n id: 'app.components.Button.reset',\n defaultMessage: 'Reset',\n })}\n </Button>\n <Button type=\"submit\" loading={isSubmitting} startIcon={<Check />}>\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 // The back link for mobile works differently; it is placed higher up in the DOM.\n <Box display={{ initial: 'none', medium: 'block' }}>\n <BackButton fallback=\"../roles\" />\n </Box>\n }\n />\n <Layouts.Content>\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.Root gap={4}>\n <Grid.Item m={6} xs={12} direction=\"column\" alignItems=\"stretch\">\n <Field.Root\n name=\"name\"\n error={errors.name && formatMessage({ id: errors.name })}\n required\n >\n <Field.Label>\n {formatMessage({\n id: 'global.name',\n defaultMessage: 'Name',\n })}\n </Field.Label>\n <TextInput type=\"text\" onChange={handleChange} value={values.name} />\n <Field.Error />\n </Field.Root>\n </Grid.Item>\n <Grid.Item m={6} xs={12} direction=\"column\" alignItems=\"stretch\">\n <Field.Root\n name=\"description\"\n error={errors.description && formatMessage({ id: errors.description })}\n >\n <Field.Label>\n {formatMessage({\n id: 'global.description',\n defaultMessage: 'Description',\n })}\n </Field.Label>\n <Textarea onChange={handleChange} value={values.description} />\n </Field.Root>\n </Grid.Item>\n </Grid.Root>\n </Flex>\n </Box>\n <Box shadow=\"filterShadow\" hasRadius>\n <Permissions\n isFormDisabled={false}\n ref={permissionsRef}\n permissions={rolePermissions}\n layout={permissionsLayout}\n />\n </Box>\n </Flex>\n </Layouts.Content>\n </>\n </Form>\n )}\n </Formik>\n </Main>\n );\n};\n\nconst UsersRoleNumber = styled.div`\n border: 1px solid ${({ theme }) => theme.colors.primary200};\n background: ${({ theme }) => theme.colors.primary100};\n padding: ${({ theme }) => `${theme.spaces[2]} ${theme.spaces[4]}`};\n color: ${({ theme }) => theme.colors.primary600};\n border-radius: ${({ theme }) => theme.borderRadius};\n font-size: 1.2rem;\n font-weight: bold;\n`;\n\n/* -------------------------------------------------------------------------------------------------\n * ProtectedCreatePage\n * -----------------------------------------------------------------------------------------------*/\n\nconst ProtectedCreatePage = () => {\n const permissions = useTypedSelector(\n (state) => state.admin_app.permissions.settings?.roles.create\n );\n\n return (\n <Page.Protect permissions={permissions}>\n <CreatePage />\n </Page.Protect>\n );\n};\n\nexport { CreatePage, ProtectedCreatePage };\n"],"names":["CREATE_SCHEMA","yup","object","shape","name","string","required","translatedErrors","id","description","CreatePage","useParams","toggleNotification","useNotification","formatMessage","useIntl","navigate","useNavigate","permissionsRef","React","useRef","trackUsage","useTracking","_unstableFormatAPIError","formatAPIError","_unstableFormatValidationErrors","formatValidationErrors","useAPIErrorHandler","isLoading","isLoadingPermissionsLayout","currentData","permissionsLayout","useGetRolePermissionLayoutQuery","role","rolePermissions","isLoadingRole","useGetRolePermissionsQuery","skip","refetchOnMountOrArgChange","createRole","useCreateRoleMutation","updateRolePermissions","useUpdateRolePermissionsMutation","handleCreateRoleSubmit","data","formik","res","isBaseQueryError","error","setErrors","type","message","permissionsToSend","current","getPermissions","Array","isArray","length","updateRes","permissions","defaultMessage","toString","replace","err","_jsx","Page","Loading","_jsxs","Main","Title","Formik","initialValues","format","Date","onSubmit","validationSchema","validateOnChange","values","errors","handleReset","handleChange","isSubmitting","Form","_Fragment","Layouts","Header","primaryAction","Flex","gap","Button","variant","onClick","resetForm","loading","startIcon","Check","title","subtitle","navigationAction","Box","display","initial","medium","BackButton","fallback","Content","direction","alignItems","background","padding","shadow","hasRadius","justifyContent","Typography","fontWeight","textColor","UsersRoleNumber","number","Grid","Root","Item","m","xs","Field","Label","TextInput","onChange","value","Error","Textarea","Permissions","isFormDisabled","ref","layout","styled","div","theme","colors","primary200","primary100","spaces","primary600","borderRadius","ProtectedCreatePage","useTypedSelector","state","admin_app","settings","roles","create","Protect"],"mappings":";;;;;;;;;;;;;;;;;;;;;;AAuCA;;AAEkG,qGAElG,MAAMA,aAAgBC,GAAAA,GAAAA,CAAIC,MAAM,EAAA,CAAGC,KAAK,CAAC;IACvCC,IAAMH,EAAAA,GAAAA,CAAII,MAAM,EAAGC,CAAAA,QAAQ,CAACC,WAAiBD,CAAAA,QAAQ,CAACE,EAAE,CAAA;IACxDC,WAAaR,EAAAA,GAAAA,CAAII,MAAM,EAAGC,CAAAA,QAAQ,CAACC,WAAiBD,CAAAA,QAAQ,CAACE,EAAE;AACjE,CAAA,CAAA;AAUA;;;AAGC,UACKE,UAAa,GAAA,IAAA;IACjB,MAAM,EAAEF,EAAE,EAAE,GAAGG,SAAAA,EAAAA;IACf,MAAM,EAAEC,kBAAkB,EAAE,GAAGC,eAAAA,EAAAA;IAC/B,MAAM,EAAEC,aAAa,EAAE,GAAGC,OAAAA,EAAAA;AAC1B,IAAA,MAAMC,QAAWC,GAAAA,WAAAA,EAAAA;IACjB,MAAMC,cAAAA,GAAiBC,KAAMC,CAAAA,MAAM,CAAiB,IAAA,CAAA;IACpD,MAAM,EAAEC,UAAU,EAAE,GAAGC,WAAAA,EAAAA;AACvB,IAAA,MAAM,EACJC,uBAAyBC,EAAAA,cAAc,EACvCC,+BAAiCC,EAAAA,sBAAsB,EACxD,GAAGC,kBAAAA,EAAAA;IAEJ,MAAM,EAAEC,WAAWC,0BAA0B,EAAEC,aAAaC,iBAAiB,EAAE,GAC7EC,+BAAgC,CAAA;AAC9B;;;AAGC,UACDC,MAAMzB,EAAM,IAAA;AACd,KAAA,CAAA;AAEF;;;MAIA,MAAM,EAAEsB,WAAaI,EAAAA,eAAe,EAAEN,SAAWO,EAAAA,aAAa,EAAE,GAAGC,0BACjE,CAAA;QACE5B,EAAIA,EAAAA;KAEN,EAAA;AACE6B,QAAAA,IAAAA,EAAM,CAAC7B,EAAAA;QACP8B,yBAA2B,EAAA;AAC7B,KAAA,CAAA;IAGF,MAAM,CAACC,WAAW,GAAGC,qBAAAA,EAAAA;IACrB,MAAM,CAACC,sBAAsB,GAAGC,gCAAAA,EAAAA;IAEhC,MAAMC,sBAAAA,GAAyB,OAC7BC,IACAC,EAAAA,MAAAA,GAAAA;QAEA,IAAI;AACF,YAAA,IAAIrC,EAAI,EAAA;gBACNa,UAAW,CAAA,mBAAA,CAAA;aACN,MAAA;gBACLA,UAAW,CAAA,mBAAA,CAAA;AACb;YAEA,MAAMyB,GAAAA,GAAM,MAAMP,UAAWK,CAAAA,IAAAA,CAAAA;AAE7B,YAAA,IAAI,WAAWE,GAAK,EAAA;gBAClB,IAAIC,gBAAAA,CAAiBD,IAAIE,KAAK,CAAA,IAAKF,IAAIE,KAAK,CAAC5C,IAAI,KAAK,iBAAmB,EAAA;AACvEyC,oBAAAA,MAAAA,CAAOI,SAAS,CAACvB,sBAAuBoB,CAAAA,GAAAA,CAAIE,KAAK,CAAA,CAAA;iBAC5C,MAAA;oBACLpC,kBAAmB,CAAA;wBACjBsC,IAAM,EAAA,QAAA;wBACNC,OAAS3B,EAAAA,cAAAA,CAAesB,IAAIE,KAAK;AACnC,qBAAA,CAAA;AACF;AAEA,gBAAA;AACF;YAEA,MAAM,EAAEI,iBAAiB,EAAE,GAAGlC,eAAemC,OAAO,EAAEC,oBAAoB,EAAC;AAE3E,YAAA,IAAIR,GAAIF,CAAAA,IAAI,CAACpC,EAAE,IAAI+C,KAAAA,CAAMC,OAAO,CAACJ,iBAAsBA,CAAAA,IAAAA,iBAAAA,CAAkBK,MAAM,GAAG,CAAG,EAAA;gBACnF,MAAMC,SAAAA,GAAY,MAAMjB,qBAAsB,CAAA;oBAC5CjC,EAAIsC,EAAAA,GAAAA,CAAIF,IAAI,CAACpC,EAAE;oBACfmD,WAAaP,EAAAA;AACf,iBAAA,CAAA;AAEA,gBAAA,IAAI,WAAWM,SAAW,EAAA;oBACxB,IAAIX,gBAAAA,CAAiBW,UAAUV,KAAK,CAAA,IAAKU,UAAUV,KAAK,CAAC5C,IAAI,KAAK,iBAAmB,EAAA;AACnFyC,wBAAAA,MAAAA,CAAOI,SAAS,CAACvB,sBAAuBgC,CAAAA,SAAAA,CAAUV,KAAK,CAAA,CAAA;qBAClD,MAAA;wBACLpC,kBAAmB,CAAA;4BACjBsC,IAAM,EAAA,QAAA;4BACNC,OAAS3B,EAAAA,cAAAA,CAAekC,UAAUV,KAAK;AACzC,yBAAA,CAAA;AACF;AAEA,oBAAA;AACF;AACF;YAEApC,kBAAmB,CAAA;gBACjBsC,IAAM,EAAA,SAAA;AACNC,gBAAAA,OAAAA,EAASrC,aAAc,CAAA;oBAAEN,EAAI,EAAA,wBAAA;oBAA0BoD,cAAgB,EAAA;AAAU,iBAAA;AACnF,aAAA,CAAA;YAEA5C,QAAS,CAAA,CAAC,SAAS,EAAE8B,GAAIF,CAAAA,IAAI,CAACpC,EAAE,CAACqD,QAAQ,EAAA,CAAA,CAAI,EAAE;gBAAEC,OAAS,EAAA;AAAK,aAAA,CAAA;AACjE,SAAA,CAAE,OAAOC,GAAK,EAAA;YACZnD,kBAAmB,CAAA;gBACjBsC,IAAM,EAAA,QAAA;AACNC,gBAAAA,OAAAA,EAASrC,aAAc,CAAA;oBAAEN,EAAI,EAAA,oBAAA;oBAAsBoD,cAAgB,EAAA;AAAoB,iBAAA;AACzF,aAAA,CAAA;AACF;AACF,KAAA;AAEA,IAAA,IAAI,0BAAC/B,IAA8BM,aAAkB,IAAA,CAACJ,iBAAmB,EAAA;QACvE,qBAAOiC,GAAA,CAACC,KAAKC,OAAO,EAAA,EAAA,CAAA;AACtB;AAEA,IAAA,qBACEC,IAACC,CAAAA,IAAAA,EAAAA;;AACC,0BAAAJ,GAAA,CAACC,KAAKI,KAAK,EAAA;0BACRvD,aACC,CAAA;oBAAEN,EAAI,EAAA,oBAAA;oBAAsBoD,cAAgB,EAAA;iBAC5C,EAAA;oBACExD,IAAM,EAAA;AACR,iBAAA;;0BAGJ4D,GAACM,CAAAA,MAAAA,EAAAA;gBACCC,aACE,EAAA;oBACEnE,IAAM,EAAA,EAAA;AACNK,oBAAAA,WAAAA,EAAa,GAAGK,aAAc,CAAA;wBAC5BN,EAAI,EAAA,6BAAA;wBACJoD,cAAgB,EAAA;AAClB,qBAAA,CAAA,CAAG,CAAC,EAAEY,MAAO,CAAA,IAAIC,QAAQ,KAAQ,CAAA,CAAA;AACnC,iBAAA;gBAEFC,QAAU/B,EAAAA,sBAAAA;gBACVgC,gBAAkB3E,EAAAA,aAAAA;gBAClB4E,gBAAkB,EAAA,KAAA;AAEjB,gBAAA,QAAA,EAAA,CAAC,EAAEC,MAAM,EAAEC,MAAM,EAAEC,WAAW,EAAEC,YAAY,EAAEC,YAAY,EAAE,iBAC3DjB,GAACkB,CAAAA,IAAAA,EAAAA;gDACCf,IAAA,CAAAgB,QAAA,EAAA;;AACE,8CAAAnB,GAAA,CAACoB,QAAQC,MAAM,EAAA;AACbC,oCAAAA,aAAAA,gBACEnB,IAACoB,CAAAA,IAAAA,EAAAA;wCAAKC,GAAK,EAAA,CAAA;;0DACTxB,GAACyB,CAAAA,MAAAA,EAAAA;gDACCC,OAAQ,EAAA,WAAA;gDACRC,OAAS,EAAA,IAAA;AACPZ,oDAAAA,WAAAA,EAAAA;AACA7D,oDAAAA,cAAAA,CAAemC,OAAO,EAAEuC,SAAAA,EAAAA;AAC1B,iDAAA;0DAEC9E,aAAc,CAAA;oDACbN,EAAI,EAAA,6BAAA;oDACJoD,cAAgB,EAAA;AAClB,iDAAA;;0DAEFI,GAACyB,CAAAA,MAAAA,EAAAA;gDAAOvC,IAAK,EAAA,QAAA;gDAAS2C,OAASZ,EAAAA,YAAAA;AAAca,gDAAAA,SAAAA,gBAAW9B,GAAC+B,CAAAA,KAAAA,EAAAA,EAAAA,CAAAA;0DACtDjF,aAAc,CAAA;oDACbN,EAAI,EAAA,aAAA;oDACJoD,cAAgB,EAAA;AAClB,iDAAA;;;;AAINoC,oCAAAA,KAAAA,EAAOlF,aAAc,CAAA;wCACnBN,EAAI,EAAA,6BAAA;wCACJoD,cAAgB,EAAA;AAClB,qCAAA,CAAA;AACAqC,oCAAAA,QAAAA,EAAUnF,aAAc,CAAA;wCACtBN,EAAI,EAAA,mCAAA;wCACJoD,cAAgB,EAAA;AAClB,qCAAA,CAAA;AACAsC,oCAAAA,gBAAAA;kDAEElC,GAACmC,CAAAA,GAAAA,EAAAA;wCAAIC,OAAS,EAAA;4CAAEC,OAAS,EAAA,MAAA;4CAAQC,MAAQ,EAAA;AAAQ,yCAAA;AAC/C,wCAAA,QAAA,gBAAAtC,GAACuC,CAAAA,UAAAA,EAAAA;4CAAWC,QAAS,EAAA;;;;AAI3B,8CAAAxC,GAAA,CAACoB,QAAQqB,OAAO,EAAA;AACd,oCAAA,QAAA,gBAAAtC,IAACoB,CAAAA,IAAAA,EAAAA;wCAAKmB,SAAU,EAAA,QAAA;wCAASC,UAAW,EAAA,SAAA;wCAAUnB,GAAK,EAAA,CAAA;;0DACjDxB,GAACmC,CAAAA,GAAAA,EAAAA;gDAAIS,UAAW,EAAA,UAAA;gDAAWC,OAAS,EAAA,CAAA;gDAAGC,MAAO,EAAA,cAAA;gDAAeC,SAAS,EAAA,IAAA;AACpE,gDAAA,QAAA,gBAAA5C,IAACoB,CAAAA,IAAAA,EAAAA;oDAAKmB,SAAU,EAAA,QAAA;oDAASC,UAAW,EAAA,SAAA;oDAAUnB,GAAK,EAAA,CAAA;;sEACjDrB,IAACoB,CAAAA,IAAAA,EAAAA;4DAAKyB,cAAe,EAAA,eAAA;;8EACnB7C,IAACgC,CAAAA,GAAAA,EAAAA;;sFACCnC,GAACmC,CAAAA,GAAAA,EAAAA;AACC,4EAAA,QAAA,gBAAAnC,GAACiD,CAAAA,UAAAA,EAAAA;gFAAWC,UAAW,EAAA,MAAA;0FACpBpG,aAAc,CAAA;oFACbN,EAAI,EAAA,gBAAA;oFACJoD,cAAgB,EAAA;AAClB,iFAAA;;;sFAGJI,GAACmC,CAAAA,GAAAA,EAAAA;AACC,4EAAA,QAAA,gBAAAnC,GAACiD,CAAAA,UAAAA,EAAAA;gFAAWvB,OAAQ,EAAA,IAAA;gFAAKyB,SAAU,EAAA,YAAA;0FAChCrG,aAAc,CAAA;oFACbN,EAAI,EAAA,iCAAA;oFACJoD,cAAgB,EAAA;AAClB,iFAAA;;;;;8EAINI,GAACoD,CAAAA,eAAAA,EAAAA;8EACEtG,aACC,CAAA;wEACEN,EAAI,EAAA,4CAAA;wEACJoD,cACE,EAAA;qEAEJ,EAAA;wEAAEyD,MAAQ,EAAA;AAAE,qEAAA;;;;AAIlB,sEAAAlD,IAAA,CAACmD,KAAKC,IAAI,EAAA;4DAAC/B,GAAK,EAAA,CAAA;;AACd,8EAAAxB,GAAA,CAACsD,KAAKE,IAAI,EAAA;oEAACC,CAAG,EAAA,CAAA;oEAAGC,EAAI,EAAA,EAAA;oEAAIhB,SAAU,EAAA,QAAA;oEAASC,UAAW,EAAA,SAAA;4FACrDxC,IAAA,CAACwD,MAAMJ,IAAI,EAAA;wEACTnH,IAAK,EAAA,MAAA;wEACL4C,KAAO8B,EAAAA,MAAAA,CAAO1E,IAAI,IAAIU,aAAc,CAAA;AAAEN,4EAAAA,EAAAA,EAAIsE,OAAO1E;AAAK,yEAAA,CAAA;wEACtDE,QAAQ,EAAA,IAAA;;AAER,0FAAA0D,GAAA,CAAC2D,MAAMC,KAAK,EAAA;0FACT9G,aAAc,CAAA;oFACbN,EAAI,EAAA,aAAA;oFACJoD,cAAgB,EAAA;AAClB,iFAAA;;0FAEFI,GAAC6D,CAAAA,SAAAA,EAAAA;gFAAU3E,IAAK,EAAA,MAAA;gFAAO4E,QAAU9C,EAAAA,YAAAA;AAAc+C,gFAAAA,KAAAA,EAAOlD,OAAOzE;;AAC7D,0FAAA4D,GAAA,CAAC2D,MAAMK,KAAK,EAAA,EAAA;;;;AAGhB,8EAAAhE,GAAA,CAACsD,KAAKE,IAAI,EAAA;oEAACC,CAAG,EAAA,CAAA;oEAAGC,EAAI,EAAA,EAAA;oEAAIhB,SAAU,EAAA,QAAA;oEAASC,UAAW,EAAA,SAAA;4FACrDxC,IAAA,CAACwD,MAAMJ,IAAI,EAAA;wEACTnH,IAAK,EAAA,aAAA;wEACL4C,KAAO8B,EAAAA,MAAAA,CAAOrE,WAAW,IAAIK,aAAc,CAAA;AAAEN,4EAAAA,EAAAA,EAAIsE,OAAOrE;AAAY,yEAAA,CAAA;;AAEpE,0FAAAuD,GAAA,CAAC2D,MAAMC,KAAK,EAAA;0FACT9G,aAAc,CAAA;oFACbN,EAAI,EAAA,oBAAA;oFACJoD,cAAgB,EAAA;AAClB,iFAAA;;0FAEFI,GAACiE,CAAAA,QAAAA,EAAAA;gFAASH,QAAU9C,EAAAA,YAAAA;AAAc+C,gFAAAA,KAAAA,EAAOlD,OAAOpE;;;;;;;;;;0DAM1DuD,GAACmC,CAAAA,GAAAA,EAAAA;gDAAIW,MAAO,EAAA,cAAA;gDAAeC,SAAS,EAAA,IAAA;AAClC,gDAAA,QAAA,gBAAA/C,GAACkE,CAAAA,WAAAA,EAAAA;oDACCC,cAAgB,EAAA,KAAA;oDAChBC,GAAKlH,EAAAA,cAAAA;oDACLyC,WAAazB,EAAAA,eAAAA;oDACbmG,MAAQtG,EAAAA;;;;;;;;;;;;AAW9B;AAEA,MAAMqF,eAAAA,GAAkBkB,MAAOC,CAAAA,GAAG;oBACd,EAAE,CAAC,EAAEC,KAAK,EAAE,GAAKA,KAAMC,CAAAA,MAAM,CAACC,UAAU,CAAC;cAC/C,EAAE,CAAC,EAAEF,KAAK,EAAE,GAAKA,KAAMC,CAAAA,MAAM,CAACE,UAAU,CAAC;AAC5C,WAAA,EAAE,CAAC,EAAEH,KAAK,EAAE,GAAK,CAAA,EAAGA,MAAMI,MAAM,CAAC,CAAE,CAAA,CAAC,CAAC,EAAEJ,KAAAA,CAAMI,MAAM,CAAC,CAAA,CAAE,EAAE,CAAC;SAC3D,EAAE,CAAC,EAAEJ,KAAK,EAAE,GAAKA,KAAMC,CAAAA,MAAM,CAACI,UAAU,CAAC;AACjC,iBAAA,EAAE,CAAC,EAAEL,KAAK,EAAE,GAAKA,KAAAA,CAAMM,YAAY,CAAC;;;AAGrD,CAAC;AAED;;AAEkG,2GAE5FC,mBAAsB,GAAA,IAAA;IAC1B,MAAMpF,WAAAA,GAAcqF,gBAClB,CAAA,CAACC,KAAUA,GAAAA,KAAAA,CAAMC,SAAS,CAACvF,WAAW,CAACwF,QAAQ,EAAEC,KAAMC,CAAAA,MAAAA,CAAAA;IAGzD,qBACErF,GAAA,CAACC,KAAKqF,OAAO,EAAA;QAAC3F,WAAaA,EAAAA,WAAAA;AACzB,QAAA,QAAA,gBAAAK,GAACtD,CAAAA,UAAAA,EAAAA,EAAAA;;AAGP;;;;"}
1
+ {"version":3,"file":"CreatePage.mjs","sources":["../../../../../../../../admin/src/pages/Settings/pages/Roles/CreatePage.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport {\n Box,\n Button,\n Field,\n Flex,\n Grid,\n Main,\n Textarea,\n TextInput,\n Typography,\n} from '@strapi/design-system';\nimport { Check } from '@strapi/icons';\nimport { format } from 'date-fns';\nimport { Formik, Form, FormikHelpers } from 'formik';\nimport { useIntl } from 'react-intl';\nimport { useNavigate, useParams } from 'react-router-dom';\nimport { styled } from 'styled-components';\nimport * as yup from 'yup';\n\nimport { Layouts } from '../../../../components/Layouts/Layout';\nimport { Page } from '../../../../components/PageHelpers';\nimport { useTypedSelector } from '../../../../core/store/hooks';\nimport { BackButton } from '../../../../features/BackButton';\nimport { useNotification } from '../../../../features/Notifications';\nimport { useTracking } from '../../../../features/Tracking';\nimport { useAPIErrorHandler } from '../../../../hooks/useAPIErrorHandler';\nimport {\n useCreateRoleMutation,\n useGetRolePermissionLayoutQuery,\n useGetRolePermissionsQuery,\n useUpdateRolePermissionsMutation,\n} from '../../../../services/users';\nimport { isBaseQueryError } from '../../../../utils/baseQuery';\nimport { translatedErrors } from '../../../../utils/translatedErrors';\n\nimport { Permissions, PermissionsAPI } from './components/Permissions';\n\n/* -------------------------------------------------------------------------------------------------\n * CreatePage\n * -----------------------------------------------------------------------------------------------*/\n\nconst CREATE_SCHEMA = yup.object().shape({\n name: yup.string().required(translatedErrors.required.id),\n description: yup.string().required(translatedErrors.required.id),\n});\n\n/**\n * TODO: be nice if we could just infer this from the schema\n */\ninterface CreateRoleFormValues {\n name: string;\n description: string;\n}\n\n/**\n * TODO: this whole section of the app needs refactoring. Using a ref to\n * manage the state of the child is nonsensical.\n */\nconst CreatePage = () => {\n const { id } = useParams();\n const { toggleNotification } = useNotification();\n const { formatMessage } = useIntl();\n const navigate = useNavigate();\n const permissionsRef = React.useRef<PermissionsAPI>(null);\n const { trackUsage } = useTracking();\n const {\n _unstableFormatAPIError: formatAPIError,\n _unstableFormatValidationErrors: formatValidationErrors,\n } = useAPIErrorHandler();\n\n const { isLoading: isLoadingPermissionsLayout, currentData: permissionsLayout } =\n useGetRolePermissionLayoutQuery({\n /**\n * Role here is a query param so if there's no role we pass an empty string\n * which returns us a default layout.\n */\n role: id ?? '',\n });\n\n /**\n * We need this so if we're cloning a role, we can fetch\n * the current permissions that role has.\n */\n const { currentData: rolePermissions, isLoading: isLoadingRole } = useGetRolePermissionsQuery(\n {\n id: id!,\n },\n {\n skip: !id,\n refetchOnMountOrArgChange: true,\n }\n );\n\n const [createRole] = useCreateRoleMutation();\n const [updateRolePermissions] = useUpdateRolePermissionsMutation();\n\n const handleCreateRoleSubmit = async (\n data: CreateRoleFormValues,\n formik: FormikHelpers<CreateRoleFormValues>\n ) => {\n try {\n if (id) {\n trackUsage('willDuplicateRole');\n } else {\n trackUsage('willCreateNewRole');\n }\n\n const res = await createRole(data);\n\n if ('error' in res) {\n if (isBaseQueryError(res.error) && res.error.name === 'ValidationError') {\n formik.setErrors(formatValidationErrors(res.error));\n } else {\n toggleNotification({\n type: 'danger',\n message: formatAPIError(res.error),\n });\n }\n\n return;\n }\n\n const { permissionsToSend } = permissionsRef.current?.getPermissions() ?? {};\n\n if (res.data.id && Array.isArray(permissionsToSend) && permissionsToSend.length > 0) {\n const updateRes = await updateRolePermissions({\n id: res.data.id,\n permissions: permissionsToSend,\n });\n\n if ('error' in updateRes) {\n if (isBaseQueryError(updateRes.error) && updateRes.error.name === 'ValidationError') {\n formik.setErrors(formatValidationErrors(updateRes.error));\n } else {\n toggleNotification({\n type: 'danger',\n message: formatAPIError(updateRes.error),\n });\n }\n\n return;\n }\n }\n\n toggleNotification({\n type: 'success',\n message: formatMessage({ id: 'Settings.roles.created', defaultMessage: 'created' }),\n });\n\n navigate(`../roles/${res.data.id.toString()}`, { replace: true });\n } catch (err) {\n toggleNotification({\n type: 'danger',\n message: formatMessage({ id: 'notification.error', defaultMessage: 'An error occurred' }),\n });\n }\n };\n\n if ((isLoadingPermissionsLayout && isLoadingRole) || !permissionsLayout) {\n return <Page.Loading />;\n }\n\n return (\n <Main>\n <Page.Title>\n {formatMessage(\n { id: 'Settings.PageTitle', defaultMessage: 'Settings - {name}' },\n {\n name: 'Roles',\n }\n )}\n </Page.Title>\n <Formik\n initialValues={\n {\n name: '',\n description: `${formatMessage({\n id: 'Settings.roles.form.created',\n defaultMessage: 'Created',\n })} ${format(new Date(), 'PPP')}`,\n } satisfies CreateRoleFormValues\n }\n onSubmit={handleCreateRoleSubmit}\n validationSchema={CREATE_SCHEMA}\n validateOnChange={false}\n >\n {({ values, errors, handleReset, handleChange, isSubmitting }) => (\n <Form>\n <>\n <Layouts.Header\n primaryAction={\n <Flex width=\"100%\" gap={2}>\n <Button\n variant=\"secondary\"\n onClick={() => {\n handleReset();\n permissionsRef.current?.resetForm();\n }}\n fullWidth\n >\n {formatMessage({\n id: 'app.components.Button.reset',\n defaultMessage: 'Reset',\n })}\n </Button>\n <Button type=\"submit\" loading={isSubmitting} startIcon={<Check />} fullWidth>\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 // The back link for mobile works differently; it is placed higher up in the DOM.\n <Box display={{ initial: 'none', medium: 'block' }}>\n <BackButton fallback=\"../roles\" />\n </Box>\n }\n />\n <Layouts.Content>\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.Root gap={4}>\n <Grid.Item m={6} xs={12} direction=\"column\" alignItems=\"stretch\">\n <Field.Root\n name=\"name\"\n error={errors.name && formatMessage({ id: errors.name })}\n required\n >\n <Field.Label>\n {formatMessage({\n id: 'global.name',\n defaultMessage: 'Name',\n })}\n </Field.Label>\n <TextInput type=\"text\" onChange={handleChange} value={values.name} />\n <Field.Error />\n </Field.Root>\n </Grid.Item>\n <Grid.Item m={6} xs={12} direction=\"column\" alignItems=\"stretch\">\n <Field.Root\n name=\"description\"\n error={errors.description && formatMessage({ id: errors.description })}\n >\n <Field.Label>\n {formatMessage({\n id: 'global.description',\n defaultMessage: 'Description',\n })}\n </Field.Label>\n <Textarea onChange={handleChange} value={values.description} />\n </Field.Root>\n </Grid.Item>\n </Grid.Root>\n </Flex>\n </Box>\n <Box shadow=\"filterShadow\" hasRadius>\n <Permissions\n isFormDisabled={false}\n ref={permissionsRef}\n permissions={rolePermissions}\n layout={permissionsLayout}\n />\n </Box>\n </Flex>\n </Layouts.Content>\n </>\n </Form>\n )}\n </Formik>\n </Main>\n );\n};\n\nconst UsersRoleNumber = styled.div`\n border: 1px solid ${({ theme }) => theme.colors.primary200};\n background: ${({ theme }) => theme.colors.primary100};\n padding: ${({ theme }) => `${theme.spaces[2]} ${theme.spaces[4]}`};\n color: ${({ theme }) => theme.colors.primary600};\n border-radius: ${({ theme }) => theme.borderRadius};\n font-size: 1.2rem;\n font-weight: bold;\n`;\n\n/* -------------------------------------------------------------------------------------------------\n * ProtectedCreatePage\n * -----------------------------------------------------------------------------------------------*/\n\nconst ProtectedCreatePage = () => {\n const permissions = useTypedSelector(\n (state) => state.admin_app.permissions.settings?.roles.create\n );\n\n return (\n <Page.Protect permissions={permissions}>\n <CreatePage />\n </Page.Protect>\n );\n};\n\nexport { CreatePage, ProtectedCreatePage };\n"],"names":["CREATE_SCHEMA","yup","object","shape","name","string","required","translatedErrors","id","description","CreatePage","useParams","toggleNotification","useNotification","formatMessage","useIntl","navigate","useNavigate","permissionsRef","React","useRef","trackUsage","useTracking","_unstableFormatAPIError","formatAPIError","_unstableFormatValidationErrors","formatValidationErrors","useAPIErrorHandler","isLoading","isLoadingPermissionsLayout","currentData","permissionsLayout","useGetRolePermissionLayoutQuery","role","rolePermissions","isLoadingRole","useGetRolePermissionsQuery","skip","refetchOnMountOrArgChange","createRole","useCreateRoleMutation","updateRolePermissions","useUpdateRolePermissionsMutation","handleCreateRoleSubmit","data","formik","res","isBaseQueryError","error","setErrors","type","message","permissionsToSend","current","getPermissions","Array","isArray","length","updateRes","permissions","defaultMessage","toString","replace","err","_jsx","Page","Loading","_jsxs","Main","Title","Formik","initialValues","format","Date","onSubmit","validationSchema","validateOnChange","values","errors","handleReset","handleChange","isSubmitting","Form","_Fragment","Layouts","Header","primaryAction","Flex","width","gap","Button","variant","onClick","resetForm","fullWidth","loading","startIcon","Check","title","subtitle","navigationAction","Box","display","initial","medium","BackButton","fallback","Content","direction","alignItems","background","padding","shadow","hasRadius","justifyContent","Typography","fontWeight","textColor","UsersRoleNumber","number","Grid","Root","Item","m","xs","Field","Label","TextInput","onChange","value","Error","Textarea","Permissions","isFormDisabled","ref","layout","styled","div","theme","colors","primary200","primary100","spaces","primary600","borderRadius","ProtectedCreatePage","useTypedSelector","state","admin_app","settings","roles","create","Protect"],"mappings":"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"}
@@ -162,17 +162,15 @@ const EditPage = ()=>{
162
162
  onSubmit: handleSubmit,
163
163
  children: [
164
164
  /*#__PURE__*/ jsxRuntime.jsx(Layout.Layouts.Header, {
165
- primaryAction: /*#__PURE__*/ jsxRuntime.jsx(designSystem.Flex, {
166
- gap: 2,
167
- children: /*#__PURE__*/ jsxRuntime.jsx(designSystem.Button, {
168
- type: "submit",
169
- startIcon: /*#__PURE__*/ jsxRuntime.jsx(icons.Check, {}),
170
- disabled: role.code === 'strapi-super-admin',
171
- loading: isSubmitting,
172
- children: formatMessage({
173
- id: 'global.save',
174
- defaultMessage: 'Save'
175
- })
165
+ primaryAction: /*#__PURE__*/ jsxRuntime.jsx(designSystem.Button, {
166
+ type: "submit",
167
+ startIcon: /*#__PURE__*/ jsxRuntime.jsx(icons.Check, {}),
168
+ disabled: role.code === 'strapi-super-admin',
169
+ loading: isSubmitting,
170
+ fullWidth: true,
171
+ children: formatMessage({
172
+ id: 'global.save',
173
+ defaultMessage: 'Save'
176
174
  })
177
175
  }),
178
176
  title: formatMessage({
@@ -1 +1 @@
1
- {"version":3,"file":"EditPage.js","sources":["../../../../../../../../admin/src/pages/Settings/pages/Roles/EditPage.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { Box, Button, Flex, Main } from '@strapi/design-system';\nimport { Check } from '@strapi/icons';\nimport { Formik, FormikHelpers } from 'formik';\nimport { useIntl } from 'react-intl';\nimport { Navigate, useMatch } from 'react-router-dom';\nimport * as yup from 'yup';\n\nimport { Layouts } from '../../../../components/Layouts/Layout';\nimport { Page } from '../../../../components/PageHelpers';\nimport { useTypedSelector } from '../../../../core/store/hooks';\nimport { BackButton } from '../../../../features/BackButton';\nimport { useNotification } from '../../../../features/Notifications';\nimport { useTracking } from '../../../../features/Tracking';\nimport { useAdminRoles } from '../../../../hooks/useAdminRoles';\nimport { useAPIErrorHandler } from '../../../../hooks/useAPIErrorHandler';\nimport {\n useGetRolePermissionLayoutQuery,\n useGetRolePermissionsQuery,\n useUpdateRoleMutation,\n useUpdateRolePermissionsMutation,\n} from '../../../../services/users';\nimport { isBaseQueryError } from '../../../../utils/baseQuery';\nimport { translatedErrors } from '../../../../utils/translatedErrors';\n\nimport { Permissions, PermissionsAPI } from './components/Permissions';\nimport { RoleForm } from './components/RoleForm';\n\nconst EDIT_ROLE_SCHEMA = yup.object().shape({\n name: yup.string().required(translatedErrors.required.id),\n description: yup.string().optional(),\n});\n\n/**\n * TODO: be nice if we could just infer this from the schema\n */\ninterface EditRoleFormValues {\n name: string;\n description: string;\n}\n\nconst EditPage = () => {\n const { toggleNotification } = useNotification();\n const { formatMessage } = useIntl();\n const match = useMatch('/settings/roles/:id');\n const id = match?.params.id;\n const permissionsRef = React.useRef<PermissionsAPI>(null);\n const { trackUsage } = useTracking();\n const {\n _unstableFormatAPIError: formatAPIError,\n _unstableFormatValidationErrors: formatValidationErrors,\n } = useAPIErrorHandler();\n\n const { isLoading: isLoadingPermissionsLayout, data: permissionsLayout } =\n useGetRolePermissionLayoutQuery({\n /**\n * Role here is a query param so if there's no role we pass an empty string\n * which returns us a default layout.\n */\n role: id ?? '',\n });\n\n const {\n roles,\n isLoading: isRoleLoading,\n refetch: refetchRole,\n } = useAdminRoles(\n { id },\n {\n refetchOnMountOrArgChange: true,\n }\n );\n\n const role = roles[0] ?? {};\n\n const { data: permissions, isLoading: isLoadingPermissions } = useGetRolePermissionsQuery(\n {\n id: id!,\n },\n {\n skip: !id,\n refetchOnMountOrArgChange: true,\n }\n );\n\n const [updateRole] = useUpdateRoleMutation();\n const [updateRolePermissions] = useUpdateRolePermissionsMutation();\n\n if (!id) {\n return <Navigate to=\"/settings/roles\" />;\n }\n\n const handleEditRoleSubmit = async (\n data: EditRoleFormValues,\n formik: FormikHelpers<EditRoleFormValues>\n ) => {\n try {\n const { permissionsToSend, didUpdateConditions } =\n permissionsRef.current?.getPermissions() ?? {};\n\n const res = await updateRole({\n id,\n ...data,\n });\n\n if ('error' in res) {\n if (isBaseQueryError(res.error) && res.error.name === 'ValidationError') {\n formik.setErrors(formatValidationErrors(res.error));\n } else {\n toggleNotification({\n type: 'danger',\n message: formatAPIError(res.error),\n });\n }\n\n return;\n }\n\n if (role.code !== 'strapi-super-admin' && permissionsToSend) {\n const updateRes = await updateRolePermissions({\n id: res.data.id,\n permissions: permissionsToSend,\n });\n\n if ('error' in updateRes) {\n if (isBaseQueryError(updateRes.error) && updateRes.error.name === 'ValidationError') {\n formik.setErrors(formatValidationErrors(updateRes.error));\n } else {\n toggleNotification({\n type: 'danger',\n message: formatAPIError(updateRes.error),\n });\n }\n\n return;\n }\n\n if (didUpdateConditions) {\n trackUsage('didUpdateConditions');\n }\n }\n\n permissionsRef.current?.setFormAfterSubmit();\n\n await refetchRole();\n\n toggleNotification({\n type: 'success',\n message: formatMessage({ id: 'notification.success.saved' }),\n });\n } catch (error) {\n toggleNotification({\n type: 'danger',\n message: formatMessage({ id: 'notification.error', defaultMessage: 'An error occurred' }),\n });\n }\n };\n\n const isFormDisabled = !isRoleLoading && role.code === 'strapi-super-admin';\n\n if (isLoadingPermissionsLayout || isRoleLoading || isLoadingPermissions || !permissionsLayout) {\n return <Page.Loading />;\n }\n\n return (\n <Main>\n <Page.Title>\n {formatMessage(\n { id: 'Settings.PageTitle', defaultMessage: 'Settings - {name}' },\n {\n name: 'Roles',\n }\n )}\n </Page.Title>\n <Formik\n enableReinitialize\n initialValues={\n {\n name: role.name ?? '',\n description: role.description ?? '',\n } satisfies EditRoleFormValues\n }\n onSubmit={handleEditRoleSubmit}\n validationSchema={EDIT_ROLE_SCHEMA}\n validateOnChange={false}\n >\n {({ handleSubmit, values, errors, handleChange, handleBlur, isSubmitting }) => (\n <form onSubmit={handleSubmit}>\n <Layouts.Header\n primaryAction={\n <Flex gap={2}>\n <Button\n type=\"submit\"\n startIcon={<Check />}\n disabled={role.code === 'strapi-super-admin'}\n loading={isSubmitting}\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 // The back link for mobile works differently; it is placed higher up in the DOM.\n <Box display={{ initial: 'none', medium: 'block' }}>\n <BackButton fallback=\"../roles\" />\n </Box>\n }\n />\n <Layouts.Content>\n <Flex direction=\"column\" alignItems=\"stretch\" gap={6}>\n <RoleForm\n disabled={isFormDisabled}\n errors={errors}\n values={values}\n onChange={handleChange}\n onBlur={handleBlur}\n role={role}\n />\n <Box shadow=\"filterShadow\" hasRadius>\n <Permissions\n isFormDisabled={isFormDisabled}\n permissions={permissions}\n ref={permissionsRef}\n layout={permissionsLayout}\n />\n </Box>\n </Flex>\n </Layouts.Content>\n </form>\n )}\n </Formik>\n </Main>\n );\n};\n\nconst ProtectedEditPage = () => {\n const permissions = useTypedSelector(\n (state) => state.admin_app.permissions.settings?.roles.update\n );\n\n return (\n <Page.Protect permissions={permissions}>\n <EditPage />\n </Page.Protect>\n );\n};\n\nexport { EditPage, ProtectedEditPage };\nexport type { EditRoleFormValues };\n"],"names":["EDIT_ROLE_SCHEMA","yup","object","shape","name","string","required","translatedErrors","id","description","optional","EditPage","toggleNotification","useNotification","formatMessage","useIntl","match","useMatch","params","permissionsRef","React","useRef","trackUsage","useTracking","_unstableFormatAPIError","formatAPIError","_unstableFormatValidationErrors","formatValidationErrors","useAPIErrorHandler","isLoading","isLoadingPermissionsLayout","data","permissionsLayout","useGetRolePermissionLayoutQuery","role","roles","isRoleLoading","refetch","refetchRole","useAdminRoles","refetchOnMountOrArgChange","permissions","isLoadingPermissions","useGetRolePermissionsQuery","skip","updateRole","useUpdateRoleMutation","updateRolePermissions","useUpdateRolePermissionsMutation","_jsx","Navigate","to","handleEditRoleSubmit","formik","permissionsToSend","didUpdateConditions","current","getPermissions","res","isBaseQueryError","error","setErrors","type","message","code","updateRes","setFormAfterSubmit","defaultMessage","isFormDisabled","Page","Loading","_jsxs","Main","Title","Formik","enableReinitialize","initialValues","onSubmit","validationSchema","validateOnChange","handleSubmit","values","errors","handleChange","handleBlur","isSubmitting","form","Layouts","Header","primaryAction","Flex","gap","Button","startIcon","Check","disabled","loading","title","subtitle","navigationAction","Box","display","initial","medium","BackButton","fallback","Content","direction","alignItems","RoleForm","onChange","onBlur","shadow","hasRadius","Permissions","ref","layout","ProtectedEditPage","useTypedSelector","state","admin_app","settings","update","Protect"],"mappings":"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"}
1
+ {"version":3,"file":"EditPage.js","sources":["../../../../../../../../admin/src/pages/Settings/pages/Roles/EditPage.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { Box, Button, Flex, Main } from '@strapi/design-system';\nimport { Check } from '@strapi/icons';\nimport { Formik, FormikHelpers } from 'formik';\nimport { useIntl } from 'react-intl';\nimport { Navigate, useMatch } from 'react-router-dom';\nimport * as yup from 'yup';\n\nimport { Layouts } from '../../../../components/Layouts/Layout';\nimport { Page } from '../../../../components/PageHelpers';\nimport { useTypedSelector } from '../../../../core/store/hooks';\nimport { BackButton } from '../../../../features/BackButton';\nimport { useNotification } from '../../../../features/Notifications';\nimport { useTracking } from '../../../../features/Tracking';\nimport { useAdminRoles } from '../../../../hooks/useAdminRoles';\nimport { useAPIErrorHandler } from '../../../../hooks/useAPIErrorHandler';\nimport {\n useGetRolePermissionLayoutQuery,\n useGetRolePermissionsQuery,\n useUpdateRoleMutation,\n useUpdateRolePermissionsMutation,\n} from '../../../../services/users';\nimport { isBaseQueryError } from '../../../../utils/baseQuery';\nimport { translatedErrors } from '../../../../utils/translatedErrors';\n\nimport { Permissions, PermissionsAPI } from './components/Permissions';\nimport { RoleForm } from './components/RoleForm';\n\nconst EDIT_ROLE_SCHEMA = yup.object().shape({\n name: yup.string().required(translatedErrors.required.id),\n description: yup.string().optional(),\n});\n\n/**\n * TODO: be nice if we could just infer this from the schema\n */\ninterface EditRoleFormValues {\n name: string;\n description: string;\n}\n\nconst EditPage = () => {\n const { toggleNotification } = useNotification();\n const { formatMessage } = useIntl();\n const match = useMatch('/settings/roles/:id');\n const id = match?.params.id;\n const permissionsRef = React.useRef<PermissionsAPI>(null);\n const { trackUsage } = useTracking();\n const {\n _unstableFormatAPIError: formatAPIError,\n _unstableFormatValidationErrors: formatValidationErrors,\n } = useAPIErrorHandler();\n\n const { isLoading: isLoadingPermissionsLayout, data: permissionsLayout } =\n useGetRolePermissionLayoutQuery({\n /**\n * Role here is a query param so if there's no role we pass an empty string\n * which returns us a default layout.\n */\n role: id ?? '',\n });\n\n const {\n roles,\n isLoading: isRoleLoading,\n refetch: refetchRole,\n } = useAdminRoles(\n { id },\n {\n refetchOnMountOrArgChange: true,\n }\n );\n\n const role = roles[0] ?? {};\n\n const { data: permissions, isLoading: isLoadingPermissions } = useGetRolePermissionsQuery(\n {\n id: id!,\n },\n {\n skip: !id,\n refetchOnMountOrArgChange: true,\n }\n );\n\n const [updateRole] = useUpdateRoleMutation();\n const [updateRolePermissions] = useUpdateRolePermissionsMutation();\n\n if (!id) {\n return <Navigate to=\"/settings/roles\" />;\n }\n\n const handleEditRoleSubmit = async (\n data: EditRoleFormValues,\n formik: FormikHelpers<EditRoleFormValues>\n ) => {\n try {\n const { permissionsToSend, didUpdateConditions } =\n permissionsRef.current?.getPermissions() ?? {};\n\n const res = await updateRole({\n id,\n ...data,\n });\n\n if ('error' in res) {\n if (isBaseQueryError(res.error) && res.error.name === 'ValidationError') {\n formik.setErrors(formatValidationErrors(res.error));\n } else {\n toggleNotification({\n type: 'danger',\n message: formatAPIError(res.error),\n });\n }\n\n return;\n }\n\n if (role.code !== 'strapi-super-admin' && permissionsToSend) {\n const updateRes = await updateRolePermissions({\n id: res.data.id,\n permissions: permissionsToSend,\n });\n\n if ('error' in updateRes) {\n if (isBaseQueryError(updateRes.error) && updateRes.error.name === 'ValidationError') {\n formik.setErrors(formatValidationErrors(updateRes.error));\n } else {\n toggleNotification({\n type: 'danger',\n message: formatAPIError(updateRes.error),\n });\n }\n\n return;\n }\n\n if (didUpdateConditions) {\n trackUsage('didUpdateConditions');\n }\n }\n\n permissionsRef.current?.setFormAfterSubmit();\n\n await refetchRole();\n\n toggleNotification({\n type: 'success',\n message: formatMessage({ id: 'notification.success.saved' }),\n });\n } catch (error) {\n toggleNotification({\n type: 'danger',\n message: formatMessage({ id: 'notification.error', defaultMessage: 'An error occurred' }),\n });\n }\n };\n\n const isFormDisabled = !isRoleLoading && role.code === 'strapi-super-admin';\n\n if (isLoadingPermissionsLayout || isRoleLoading || isLoadingPermissions || !permissionsLayout) {\n return <Page.Loading />;\n }\n\n return (\n <Main>\n <Page.Title>\n {formatMessage(\n { id: 'Settings.PageTitle', defaultMessage: 'Settings - {name}' },\n {\n name: 'Roles',\n }\n )}\n </Page.Title>\n <Formik\n enableReinitialize\n initialValues={\n {\n name: role.name ?? '',\n description: role.description ?? '',\n } satisfies EditRoleFormValues\n }\n onSubmit={handleEditRoleSubmit}\n validationSchema={EDIT_ROLE_SCHEMA}\n validateOnChange={false}\n >\n {({ handleSubmit, values, errors, handleChange, handleBlur, isSubmitting }) => (\n <form onSubmit={handleSubmit}>\n <Layouts.Header\n primaryAction={\n <Button\n type=\"submit\"\n startIcon={<Check />}\n disabled={role.code === 'strapi-super-admin'}\n loading={isSubmitting}\n fullWidth\n >\n {formatMessage({\n id: 'global.save',\n defaultMessage: 'Save',\n })}\n </Button>\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 // The back link for mobile works differently; it is placed higher up in the DOM.\n <Box display={{ initial: 'none', medium: 'block' }}>\n <BackButton fallback=\"../roles\" />\n </Box>\n }\n />\n <Layouts.Content>\n <Flex direction=\"column\" alignItems=\"stretch\" gap={6}>\n <RoleForm\n disabled={isFormDisabled}\n errors={errors}\n values={values}\n onChange={handleChange}\n onBlur={handleBlur}\n role={role}\n />\n <Box shadow=\"filterShadow\" hasRadius>\n <Permissions\n isFormDisabled={isFormDisabled}\n permissions={permissions}\n ref={permissionsRef}\n layout={permissionsLayout}\n />\n </Box>\n </Flex>\n </Layouts.Content>\n </form>\n )}\n </Formik>\n </Main>\n );\n};\n\nconst ProtectedEditPage = () => {\n const permissions = useTypedSelector(\n (state) => state.admin_app.permissions.settings?.roles.update\n );\n\n return (\n <Page.Protect permissions={permissions}>\n <EditPage />\n </Page.Protect>\n );\n};\n\nexport { EditPage, ProtectedEditPage };\nexport type { EditRoleFormValues };\n"],"names":["EDIT_ROLE_SCHEMA","yup","object","shape","name","string","required","translatedErrors","id","description","optional","EditPage","toggleNotification","useNotification","formatMessage","useIntl","match","useMatch","params","permissionsRef","React","useRef","trackUsage","useTracking","_unstableFormatAPIError","formatAPIError","_unstableFormatValidationErrors","formatValidationErrors","useAPIErrorHandler","isLoading","isLoadingPermissionsLayout","data","permissionsLayout","useGetRolePermissionLayoutQuery","role","roles","isRoleLoading","refetch","refetchRole","useAdminRoles","refetchOnMountOrArgChange","permissions","isLoadingPermissions","useGetRolePermissionsQuery","skip","updateRole","useUpdateRoleMutation","updateRolePermissions","useUpdateRolePermissionsMutation","_jsx","Navigate","to","handleEditRoleSubmit","formik","permissionsToSend","didUpdateConditions","current","getPermissions","res","isBaseQueryError","error","setErrors","type","message","code","updateRes","setFormAfterSubmit","defaultMessage","isFormDisabled","Page","Loading","_jsxs","Main","Title","Formik","enableReinitialize","initialValues","onSubmit","validationSchema","validateOnChange","handleSubmit","values","errors","handleChange","handleBlur","isSubmitting","form","Layouts","Header","primaryAction","Button","startIcon","Check","disabled","loading","fullWidth","title","subtitle","navigationAction","Box","display","initial","medium","BackButton","fallback","Content","Flex","direction","alignItems","gap","RoleForm","onChange","onBlur","shadow","hasRadius","Permissions","ref","layout","ProtectedEditPage","useTypedSelector","state","admin_app","settings","update","Protect"],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  import { jsx, jsxs } from 'react/jsx-runtime';
2
2
  import * as React from 'react';
3
- import { Main, Flex, Button, Box } from '@strapi/design-system';
3
+ import { Main, Button, Box, Flex } from '@strapi/design-system';
4
4
  import { Check } from '@strapi/icons';
5
5
  import { Formik } from 'formik';
6
6
  import { useIntl } from 'react-intl';
@@ -140,17 +140,15 @@ const EditPage = ()=>{
140
140
  onSubmit: handleSubmit,
141
141
  children: [
142
142
  /*#__PURE__*/ jsx(Layouts.Header, {
143
- primaryAction: /*#__PURE__*/ jsx(Flex, {
144
- gap: 2,
145
- children: /*#__PURE__*/ jsx(Button, {
146
- type: "submit",
147
- startIcon: /*#__PURE__*/ jsx(Check, {}),
148
- disabled: role.code === 'strapi-super-admin',
149
- loading: isSubmitting,
150
- children: formatMessage({
151
- id: 'global.save',
152
- defaultMessage: 'Save'
153
- })
143
+ primaryAction: /*#__PURE__*/ jsx(Button, {
144
+ type: "submit",
145
+ startIcon: /*#__PURE__*/ jsx(Check, {}),
146
+ disabled: role.code === 'strapi-super-admin',
147
+ loading: isSubmitting,
148
+ fullWidth: true,
149
+ children: formatMessage({
150
+ id: 'global.save',
151
+ defaultMessage: 'Save'
154
152
  })
155
153
  }),
156
154
  title: formatMessage({