@strapi/admin 5.33.4 → 5.35.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 (310) 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 +84 -50
  14. package/dist/admin/admin/src/components/Layouts/HeaderLayout.js.map +1 -1
  15. package/dist/admin/admin/src/components/Layouts/HeaderLayout.mjs +86 -52
  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/NpsSurvey.js +2 -0
  26. package/dist/admin/admin/src/components/NpsSurvey.js.map +1 -1
  27. package/dist/admin/admin/src/components/NpsSurvey.mjs +2 -0
  28. package/dist/admin/admin/src/components/NpsSurvey.mjs.map +1 -1
  29. package/dist/admin/admin/src/components/SubNav.js +41 -20
  30. package/dist/admin/admin/src/components/SubNav.js.map +1 -1
  31. package/dist/admin/admin/src/components/SubNav.mjs +42 -21
  32. package/dist/admin/admin/src/components/SubNav.mjs.map +1 -1
  33. package/dist/admin/admin/src/constants/theme.js +2 -0
  34. package/dist/admin/admin/src/constants/theme.js.map +1 -1
  35. package/dist/admin/admin/src/constants/theme.mjs +2 -1
  36. package/dist/admin/admin/src/constants/theme.mjs.map +1 -1
  37. package/dist/admin/admin/src/core/apis/router.js.map +1 -1
  38. package/dist/admin/admin/src/core/apis/router.mjs.map +1 -1
  39. package/dist/admin/admin/src/features/Tracking.js.map +1 -1
  40. package/dist/admin/admin/src/features/Tracking.mjs.map +1 -1
  41. package/dist/admin/admin/src/hooks/useMenu.js +2 -1
  42. package/dist/admin/admin/src/hooks/useMenu.js.map +1 -1
  43. package/dist/admin/admin/src/hooks/useMenu.mjs +2 -1
  44. package/dist/admin/admin/src/hooks/useMenu.mjs.map +1 -1
  45. package/dist/admin/admin/src/layouts/AuthenticatedLayout.js.map +1 -1
  46. package/dist/admin/admin/src/layouts/AuthenticatedLayout.mjs.map +1 -1
  47. package/dist/admin/admin/src/pages/Auth/components/Register.js +51 -10
  48. package/dist/admin/admin/src/pages/Auth/components/Register.js.map +1 -1
  49. package/dist/admin/admin/src/pages/Auth/components/Register.mjs +51 -10
  50. package/dist/admin/admin/src/pages/Auth/components/Register.mjs.map +1 -1
  51. package/dist/admin/admin/src/pages/Auth/components/ResetPassword.js +12 -3
  52. package/dist/admin/admin/src/pages/Auth/components/ResetPassword.js.map +1 -1
  53. package/dist/admin/admin/src/pages/Auth/components/ResetPassword.mjs +12 -3
  54. package/dist/admin/admin/src/pages/Auth/components/ResetPassword.mjs.map +1 -1
  55. package/dist/admin/admin/src/pages/Home/HomePage.js +1 -0
  56. package/dist/admin/admin/src/pages/Home/HomePage.js.map +1 -1
  57. package/dist/admin/admin/src/pages/Home/HomePage.mjs +1 -0
  58. package/dist/admin/admin/src/pages/Home/HomePage.mjs.map +1 -1
  59. package/dist/admin/admin/src/pages/ProfilePage.js +1 -0
  60. package/dist/admin/admin/src/pages/ProfilePage.js.map +1 -1
  61. package/dist/admin/admin/src/pages/ProfilePage.mjs +1 -0
  62. package/dist/admin/admin/src/pages/ProfilePage.mjs.map +1 -1
  63. package/dist/admin/admin/src/pages/Settings/components/SettingsNav.js +7 -2
  64. package/dist/admin/admin/src/pages/Settings/components/SettingsNav.js.map +1 -1
  65. package/dist/admin/admin/src/pages/Settings/components/SettingsNav.mjs +7 -2
  66. package/dist/admin/admin/src/pages/Settings/components/SettingsNav.mjs.map +1 -1
  67. package/dist/admin/admin/src/pages/Settings/components/Tokens/FormHead.js +44 -26
  68. package/dist/admin/admin/src/pages/Settings/components/Tokens/FormHead.js.map +1 -1
  69. package/dist/admin/admin/src/pages/Settings/components/Tokens/FormHead.mjs +45 -27
  70. package/dist/admin/admin/src/pages/Settings/components/Tokens/FormHead.mjs.map +1 -1
  71. package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/ListView.js +1 -0
  72. package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/ListView.js.map +1 -1
  73. package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/ListView.mjs +1 -0
  74. package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/ListView.mjs.map +1 -1
  75. package/dist/admin/admin/src/pages/Settings/pages/ApplicationInfo/ApplicationInfoPage.js +1 -0
  76. package/dist/admin/admin/src/pages/Settings/pages/ApplicationInfo/ApplicationInfoPage.js.map +1 -1
  77. package/dist/admin/admin/src/pages/Settings/pages/ApplicationInfo/ApplicationInfoPage.mjs +1 -0
  78. package/dist/admin/admin/src/pages/Settings/pages/ApplicationInfo/ApplicationInfoPage.mjs.map +1 -1
  79. package/dist/admin/admin/src/pages/Settings/pages/Roles/CreatePage.js +3 -0
  80. package/dist/admin/admin/src/pages/Settings/pages/Roles/CreatePage.js.map +1 -1
  81. package/dist/admin/admin/src/pages/Settings/pages/Roles/CreatePage.mjs +3 -0
  82. package/dist/admin/admin/src/pages/Settings/pages/Roles/CreatePage.mjs.map +1 -1
  83. package/dist/admin/admin/src/pages/Settings/pages/Roles/EditPage.js +9 -11
  84. package/dist/admin/admin/src/pages/Settings/pages/Roles/EditPage.js.map +1 -1
  85. package/dist/admin/admin/src/pages/Settings/pages/Roles/EditPage.mjs +10 -12
  86. package/dist/admin/admin/src/pages/Settings/pages/Roles/EditPage.mjs.map +1 -1
  87. package/dist/admin/admin/src/pages/Settings/pages/Roles/ListPage.js +1 -0
  88. package/dist/admin/admin/src/pages/Settings/pages/Roles/ListPage.js.map +1 -1
  89. package/dist/admin/admin/src/pages/Settings/pages/Roles/ListPage.mjs +1 -0
  90. package/dist/admin/admin/src/pages/Settings/pages/Roles/ListPage.mjs.map +1 -1
  91. package/dist/admin/admin/src/pages/Settings/pages/TransferTokens/ListView.js +1 -0
  92. package/dist/admin/admin/src/pages/Settings/pages/TransferTokens/ListView.js.map +1 -1
  93. package/dist/admin/admin/src/pages/Settings/pages/TransferTokens/ListView.mjs +1 -0
  94. package/dist/admin/admin/src/pages/Settings/pages/TransferTokens/ListView.mjs.map +1 -1
  95. package/dist/admin/admin/src/pages/Settings/pages/Users/EditPage.js +1 -0
  96. package/dist/admin/admin/src/pages/Settings/pages/Users/EditPage.js.map +1 -1
  97. package/dist/admin/admin/src/pages/Settings/pages/Users/EditPage.mjs +1 -0
  98. package/dist/admin/admin/src/pages/Settings/pages/Users/EditPage.mjs.map +1 -1
  99. package/dist/admin/admin/src/pages/Settings/pages/Users/components/CreateActionCE.js +1 -0
  100. package/dist/admin/admin/src/pages/Settings/pages/Users/components/CreateActionCE.js.map +1 -1
  101. package/dist/admin/admin/src/pages/Settings/pages/Users/components/CreateActionCE.mjs +1 -0
  102. package/dist/admin/admin/src/pages/Settings/pages/Users/components/CreateActionCE.mjs.map +1 -1
  103. package/dist/admin/admin/src/pages/Settings/pages/Users/utils/validation.js +12 -3
  104. package/dist/admin/admin/src/pages/Settings/pages/Users/utils/validation.js.map +1 -1
  105. package/dist/admin/admin/src/pages/Settings/pages/Users/utils/validation.mjs +12 -3
  106. package/dist/admin/admin/src/pages/Settings/pages/Users/utils/validation.mjs.map +1 -1
  107. package/dist/admin/admin/src/pages/Settings/pages/Webhooks/ListPage.js +1 -0
  108. package/dist/admin/admin/src/pages/Settings/pages/Webhooks/ListPage.js.map +1 -1
  109. package/dist/admin/admin/src/pages/Settings/pages/Webhooks/ListPage.mjs +1 -0
  110. package/dist/admin/admin/src/pages/Settings/pages/Webhooks/ListPage.mjs.map +1 -1
  111. package/dist/admin/admin/src/pages/Settings/pages/Webhooks/components/WebhookForm.js +3 -0
  112. package/dist/admin/admin/src/pages/Settings/pages/Webhooks/components/WebhookForm.js.map +1 -1
  113. package/dist/admin/admin/src/pages/Settings/pages/Webhooks/components/WebhookForm.mjs +3 -0
  114. package/dist/admin/admin/src/pages/Settings/pages/Webhooks/components/WebhookForm.mjs.map +1 -1
  115. package/dist/admin/admin/src/router.js +0 -9
  116. package/dist/admin/admin/src/router.js.map +1 -1
  117. package/dist/admin/admin/src/router.mjs +0 -9
  118. package/dist/admin/admin/src/router.mjs.map +1 -1
  119. package/dist/admin/admin/src/translations/ar.json.js +0 -42
  120. package/dist/admin/admin/src/translations/ar.json.js.map +1 -1
  121. package/dist/admin/admin/src/translations/ar.json.mjs +0 -42
  122. package/dist/admin/admin/src/translations/ar.json.mjs.map +1 -1
  123. package/dist/admin/admin/src/translations/ca.json.js +0 -21
  124. package/dist/admin/admin/src/translations/ca.json.js.map +1 -1
  125. package/dist/admin/admin/src/translations/ca.json.mjs +0 -21
  126. package/dist/admin/admin/src/translations/ca.json.mjs.map +1 -1
  127. package/dist/admin/admin/src/translations/de.json.js +422 -66
  128. package/dist/admin/admin/src/translations/de.json.js.map +1 -1
  129. package/dist/admin/admin/src/translations/de.json.mjs +419 -67
  130. package/dist/admin/admin/src/translations/de.json.mjs.map +1 -1
  131. package/dist/admin/admin/src/translations/dk.json.js +0 -6
  132. package/dist/admin/admin/src/translations/dk.json.js.map +1 -1
  133. package/dist/admin/admin/src/translations/dk.json.mjs +0 -6
  134. package/dist/admin/admin/src/translations/dk.json.mjs.map +1 -1
  135. package/dist/admin/admin/src/translations/en.json.js +0 -44
  136. package/dist/admin/admin/src/translations/en.json.js.map +1 -1
  137. package/dist/admin/admin/src/translations/en.json.mjs +0 -44
  138. package/dist/admin/admin/src/translations/en.json.mjs.map +1 -1
  139. package/dist/admin/admin/src/translations/es.json.js +0 -25
  140. package/dist/admin/admin/src/translations/es.json.js.map +1 -1
  141. package/dist/admin/admin/src/translations/es.json.mjs +0 -25
  142. package/dist/admin/admin/src/translations/es.json.mjs.map +1 -1
  143. package/dist/admin/admin/src/translations/eu.json.js +0 -43
  144. package/dist/admin/admin/src/translations/eu.json.js.map +1 -1
  145. package/dist/admin/admin/src/translations/eu.json.mjs +0 -43
  146. package/dist/admin/admin/src/translations/eu.json.mjs.map +1 -1
  147. package/dist/admin/admin/src/translations/fr.json.js +0 -6
  148. package/dist/admin/admin/src/translations/fr.json.js.map +1 -1
  149. package/dist/admin/admin/src/translations/fr.json.mjs +0 -6
  150. package/dist/admin/admin/src/translations/fr.json.mjs.map +1 -1
  151. package/dist/admin/admin/src/translations/gu.json.js +0 -21
  152. package/dist/admin/admin/src/translations/gu.json.js.map +1 -1
  153. package/dist/admin/admin/src/translations/gu.json.mjs +0 -21
  154. package/dist/admin/admin/src/translations/gu.json.mjs.map +1 -1
  155. package/dist/admin/admin/src/translations/hi.json.js +0 -21
  156. package/dist/admin/admin/src/translations/hi.json.js.map +1 -1
  157. package/dist/admin/admin/src/translations/hi.json.mjs +0 -21
  158. package/dist/admin/admin/src/translations/hi.json.mjs.map +1 -1
  159. package/dist/admin/admin/src/translations/hu.json.js +0 -43
  160. package/dist/admin/admin/src/translations/hu.json.js.map +1 -1
  161. package/dist/admin/admin/src/translations/hu.json.mjs +0 -43
  162. package/dist/admin/admin/src/translations/hu.json.mjs.map +1 -1
  163. package/dist/admin/admin/src/translations/it.json.js +613 -3
  164. package/dist/admin/admin/src/translations/it.json.js.map +1 -1
  165. package/dist/admin/admin/src/translations/it.json.mjs +605 -4
  166. package/dist/admin/admin/src/translations/it.json.mjs.map +1 -1
  167. package/dist/admin/admin/src/translations/ja.json.js +0 -6
  168. package/dist/admin/admin/src/translations/ja.json.js.map +1 -1
  169. package/dist/admin/admin/src/translations/ja.json.mjs +0 -6
  170. package/dist/admin/admin/src/translations/ja.json.mjs.map +1 -1
  171. package/dist/admin/admin/src/translations/ko.json.js +430 -102
  172. package/dist/admin/admin/src/translations/ko.json.js.map +1 -1
  173. package/dist/admin/admin/src/translations/ko.json.mjs +427 -103
  174. package/dist/admin/admin/src/translations/ko.json.mjs.map +1 -1
  175. package/dist/admin/admin/src/translations/ml.json.js +0 -21
  176. package/dist/admin/admin/src/translations/ml.json.js.map +1 -1
  177. package/dist/admin/admin/src/translations/ml.json.mjs +0 -21
  178. package/dist/admin/admin/src/translations/ml.json.mjs.map +1 -1
  179. package/dist/admin/admin/src/translations/nl.json.js +0 -39
  180. package/dist/admin/admin/src/translations/nl.json.js.map +1 -1
  181. package/dist/admin/admin/src/translations/nl.json.mjs +0 -39
  182. package/dist/admin/admin/src/translations/nl.json.mjs.map +1 -1
  183. package/dist/admin/admin/src/translations/pl.json.js +0 -21
  184. package/dist/admin/admin/src/translations/pl.json.js.map +1 -1
  185. package/dist/admin/admin/src/translations/pl.json.mjs +0 -21
  186. package/dist/admin/admin/src/translations/pl.json.mjs.map +1 -1
  187. package/dist/admin/admin/src/translations/pt-BR.json.js +0 -25
  188. package/dist/admin/admin/src/translations/pt-BR.json.js.map +1 -1
  189. package/dist/admin/admin/src/translations/pt-BR.json.mjs +0 -25
  190. package/dist/admin/admin/src/translations/pt-BR.json.mjs.map +1 -1
  191. package/dist/admin/admin/src/translations/ru.json.js +0 -44
  192. package/dist/admin/admin/src/translations/ru.json.js.map +1 -1
  193. package/dist/admin/admin/src/translations/ru.json.mjs +0 -44
  194. package/dist/admin/admin/src/translations/ru.json.mjs.map +1 -1
  195. package/dist/admin/admin/src/translations/sa.json.js +0 -21
  196. package/dist/admin/admin/src/translations/sa.json.js.map +1 -1
  197. package/dist/admin/admin/src/translations/sa.json.mjs +0 -21
  198. package/dist/admin/admin/src/translations/sa.json.mjs.map +1 -1
  199. package/dist/admin/admin/src/translations/sv.json.js +0 -39
  200. package/dist/admin/admin/src/translations/sv.json.js.map +1 -1
  201. package/dist/admin/admin/src/translations/sv.json.mjs +0 -39
  202. package/dist/admin/admin/src/translations/sv.json.mjs.map +1 -1
  203. package/dist/admin/admin/src/translations/tr.json.js +0 -39
  204. package/dist/admin/admin/src/translations/tr.json.js.map +1 -1
  205. package/dist/admin/admin/src/translations/tr.json.mjs +0 -39
  206. package/dist/admin/admin/src/translations/tr.json.mjs.map +1 -1
  207. package/dist/admin/admin/src/translations/uk.json.js +0 -44
  208. package/dist/admin/admin/src/translations/uk.json.js.map +1 -1
  209. package/dist/admin/admin/src/translations/uk.json.mjs +0 -44
  210. package/dist/admin/admin/src/translations/uk.json.mjs.map +1 -1
  211. package/dist/admin/admin/src/translations/vi.json.js +0 -44
  212. package/dist/admin/admin/src/translations/vi.json.js.map +1 -1
  213. package/dist/admin/admin/src/translations/vi.json.mjs +0 -44
  214. package/dist/admin/admin/src/translations/vi.json.mjs.map +1 -1
  215. package/dist/admin/admin/src/translations/zh-Hans.json.js +0 -44
  216. package/dist/admin/admin/src/translations/zh-Hans.json.js.map +1 -1
  217. package/dist/admin/admin/src/translations/zh-Hans.json.mjs +0 -44
  218. package/dist/admin/admin/src/translations/zh-Hans.json.mjs.map +1 -1
  219. package/dist/admin/admin/src/translations/zh.json.js +0 -39
  220. package/dist/admin/admin/src/translations/zh.json.js.map +1 -1
  221. package/dist/admin/admin/src/translations/zh.json.mjs +0 -39
  222. package/dist/admin/admin/src/translations/zh.json.mjs.map +1 -1
  223. package/dist/admin/admin/tests/mockData.js +0 -1413
  224. package/dist/admin/admin/tests/mockData.js.map +1 -1
  225. package/dist/admin/admin/tests/mockData.mjs +0 -1413
  226. package/dist/admin/admin/tests/mockData.mjs.map +1 -1
  227. package/dist/admin/admin/tests/server.js +0 -99
  228. package/dist/admin/admin/tests/server.js.map +1 -1
  229. package/dist/admin/admin/tests/server.mjs +0 -80
  230. package/dist/admin/admin/tests/server.mjs.map +1 -1
  231. package/dist/admin/ee/admin/src/pages/SettingsPage/pages/SingleSignOnPage.js +1 -0
  232. package/dist/admin/ee/admin/src/pages/SettingsPage/pages/SingleSignOnPage.js.map +1 -1
  233. package/dist/admin/ee/admin/src/pages/SettingsPage/pages/SingleSignOnPage.mjs +1 -0
  234. package/dist/admin/ee/admin/src/pages/SettingsPage/pages/SingleSignOnPage.mjs.map +1 -1
  235. package/dist/admin/ee/admin/src/pages/SettingsPage/pages/Users/components/CreateActionEE.js +2 -0
  236. package/dist/admin/ee/admin/src/pages/SettingsPage/pages/Users/components/CreateActionEE.js.map +1 -1
  237. package/dist/admin/ee/admin/src/pages/SettingsPage/pages/Users/components/CreateActionEE.mjs +2 -0
  238. package/dist/admin/ee/admin/src/pages/SettingsPage/pages/Users/components/CreateActionEE.mjs.map +1 -1
  239. package/dist/admin/index.js +3 -0
  240. package/dist/admin/index.js.map +1 -1
  241. package/dist/admin/index.mjs +1 -1
  242. package/dist/admin/src/components/MainNav/NavLink.d.ts +2 -2
  243. package/dist/admin/src/constants/theme.d.ts +2 -1
  244. package/dist/admin/src/core/apis/router.d.ts +1 -0
  245. package/dist/admin/src/features/Tracking.d.ts +1 -1
  246. package/dist/admin/src/hooks/useMenu.d.ts +1 -0
  247. package/dist/admin/src/index.d.ts +1 -1
  248. package/dist/admin/tests/mockData.d.ts +0 -972
  249. package/dist/server/server/src/services/permission/permissions-manager/permission-fields.js +53 -0
  250. package/dist/server/server/src/services/permission/permissions-manager/permission-fields.js.map +1 -0
  251. package/dist/server/server/src/services/permission/permissions-manager/permission-fields.mjs +51 -0
  252. package/dist/server/server/src/services/permission/permissions-manager/permission-fields.mjs.map +1 -0
  253. package/dist/server/server/src/services/permission/permissions-manager/sanitize.js +7 -8
  254. package/dist/server/server/src/services/permission/permissions-manager/sanitize.js.map +1 -1
  255. package/dist/server/server/src/services/permission/permissions-manager/sanitize.mjs +10 -11
  256. package/dist/server/server/src/services/permission/permissions-manager/sanitize.mjs.map +1 -1
  257. package/dist/server/server/src/services/permission/permissions-manager/validate.js +7 -8
  258. package/dist/server/server/src/services/permission/permissions-manager/validate.js.map +1 -1
  259. package/dist/server/server/src/services/permission/permissions-manager/validate.mjs +10 -11
  260. package/dist/server/server/src/services/permission/permissions-manager/validate.mjs.map +1 -1
  261. package/dist/server/src/services/permission/permissions-manager/permission-fields.d.ts +21 -0
  262. package/dist/server/src/services/permission/permissions-manager/permission-fields.d.ts.map +1 -0
  263. package/dist/server/src/services/permission/permissions-manager/sanitize.d.ts.map +1 -1
  264. package/dist/server/src/services/permission/permissions-manager/validate.d.ts.map +1 -1
  265. package/package.json +7 -7
  266. package/dist/admin/admin/src/pages/Marketplace/MarketplacePage.js +0 -339
  267. package/dist/admin/admin/src/pages/Marketplace/MarketplacePage.js.map +0 -1
  268. package/dist/admin/admin/src/pages/Marketplace/MarketplacePage.mjs +0 -317
  269. package/dist/admin/admin/src/pages/Marketplace/MarketplacePage.mjs.map +0 -1
  270. package/dist/admin/admin/src/pages/Marketplace/components/NpmPackageCard.js +0 -329
  271. package/dist/admin/admin/src/pages/Marketplace/components/NpmPackageCard.js.map +0 -1
  272. package/dist/admin/admin/src/pages/Marketplace/components/NpmPackageCard.mjs +0 -308
  273. package/dist/admin/admin/src/pages/Marketplace/components/NpmPackageCard.mjs.map +0 -1
  274. package/dist/admin/admin/src/pages/Marketplace/components/NpmPackagesFilters.js +0 -121
  275. package/dist/admin/admin/src/pages/Marketplace/components/NpmPackagesFilters.js.map +0 -1
  276. package/dist/admin/admin/src/pages/Marketplace/components/NpmPackagesFilters.mjs +0 -119
  277. package/dist/admin/admin/src/pages/Marketplace/components/NpmPackagesFilters.mjs.map +0 -1
  278. package/dist/admin/admin/src/pages/Marketplace/components/NpmPackagesGrid.js +0 -93
  279. package/dist/admin/admin/src/pages/Marketplace/components/NpmPackagesGrid.js.map +0 -1
  280. package/dist/admin/admin/src/pages/Marketplace/components/NpmPackagesGrid.mjs +0 -91
  281. package/dist/admin/admin/src/pages/Marketplace/components/NpmPackagesGrid.mjs.map +0 -1
  282. package/dist/admin/admin/src/pages/Marketplace/components/OfflineLayout.js +0 -81
  283. package/dist/admin/admin/src/pages/Marketplace/components/OfflineLayout.js.map +0 -1
  284. package/dist/admin/admin/src/pages/Marketplace/components/OfflineLayout.mjs +0 -79
  285. package/dist/admin/admin/src/pages/Marketplace/components/OfflineLayout.mjs.map +0 -1
  286. package/dist/admin/admin/src/pages/Marketplace/components/PageHeader.js +0 -38
  287. package/dist/admin/admin/src/pages/Marketplace/components/PageHeader.js.map +0 -1
  288. package/dist/admin/admin/src/pages/Marketplace/components/PageHeader.mjs +0 -36
  289. package/dist/admin/admin/src/pages/Marketplace/components/PageHeader.mjs.map +0 -1
  290. package/dist/admin/admin/src/pages/Marketplace/components/SortSelect.js +0 -85
  291. package/dist/admin/admin/src/pages/Marketplace/components/SortSelect.js.map +0 -1
  292. package/dist/admin/admin/src/pages/Marketplace/components/SortSelect.mjs +0 -83
  293. package/dist/admin/admin/src/pages/Marketplace/components/SortSelect.mjs.map +0 -1
  294. package/dist/admin/admin/src/pages/Marketplace/hooks/useMarketplaceData.js +0 -134
  295. package/dist/admin/admin/src/pages/Marketplace/hooks/useMarketplaceData.js.map +0 -1
  296. package/dist/admin/admin/src/pages/Marketplace/hooks/useMarketplaceData.mjs +0 -113
  297. package/dist/admin/admin/src/pages/Marketplace/hooks/useMarketplaceData.mjs.map +0 -1
  298. package/dist/admin/admin/src/pages/Marketplace/hooks/useNavigatorOnline.js +0 -44
  299. package/dist/admin/admin/src/pages/Marketplace/hooks/useNavigatorOnline.js.map +0 -1
  300. package/dist/admin/admin/src/pages/Marketplace/hooks/useNavigatorOnline.mjs +0 -23
  301. package/dist/admin/admin/src/pages/Marketplace/hooks/useNavigatorOnline.mjs.map +0 -1
  302. package/dist/admin/src/pages/Marketplace/MarketplacePage.d.ts +0 -19
  303. package/dist/admin/src/pages/Marketplace/components/NpmPackageCard.d.ts +0 -13
  304. package/dist/admin/src/pages/Marketplace/components/NpmPackagesFilters.d.ts +0 -13
  305. package/dist/admin/src/pages/Marketplace/components/NpmPackagesGrid.d.ts +0 -13
  306. package/dist/admin/src/pages/Marketplace/components/OfflineLayout.d.ts +0 -2
  307. package/dist/admin/src/pages/Marketplace/components/PageHeader.d.ts +0 -8
  308. package/dist/admin/src/pages/Marketplace/components/SortSelect.d.ts +0 -51
  309. package/dist/admin/src/pages/Marketplace/hooks/useMarketplaceData.d.ts +0 -93
  310. package/dist/admin/src/pages/Marketplace/hooks/useNavigatorOnline.d.ts +0 -5
@@ -1 +1 @@
1
- {"version":3,"file":"ListPage.js","sources":["../../../../../../../../admin/src/pages/Settings/pages/Roles/ListPage.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport {\n Button,\n Dialog,\n Table,\n Tbody,\n TFooter,\n Th,\n Thead,\n Tr,\n Typography,\n VisuallyHidden,\n} from '@strapi/design-system';\nimport { Duplicate, Pencil, Plus, Trash } from '@strapi/icons';\nimport { produce } from 'immer';\nimport { useIntl } from 'react-intl';\nimport { useNavigate } from 'react-router-dom';\n\nimport { ConfirmDialog } from '../../../../components/ConfirmDialog';\nimport { Layouts } from '../../../../components/Layouts/Layout';\nimport { Page } from '../../../../components/PageHelpers';\nimport { SearchInput } from '../../../../components/SearchInput';\nimport { useTypedSelector } from '../../../../core/store/hooks';\nimport { useNotification } from '../../../../features/Notifications';\nimport { useAdminRoles, AdminRole } from '../../../../hooks/useAdminRoles';\nimport { useAPIErrorHandler } from '../../../../hooks/useAPIErrorHandler';\nimport { useFetchClient } from '../../../../hooks/useFetchClient';\nimport { useQueryParams } from '../../../../hooks/useQueryParams';\nimport { useRBAC } from '../../../../hooks/useRBAC';\nimport { selectAdminPermissions } from '../../../../selectors';\nimport { isFetchError } from '../../../../utils/getFetchClient';\n\nimport { RoleRow, RoleRowProps } from './components/RoleRow';\n\nconst ListPage = () => {\n const { formatMessage } = useIntl();\n const permissions = useTypedSelector(selectAdminPermissions);\n const { formatAPIError } = useAPIErrorHandler();\n const { toggleNotification } = useNotification();\n const [isWarningDeleteAllOpened, setIsWarningDeleteAllOpenend] = React.useState(false);\n const [{ query }] = useQueryParams<{ _q?: string }>();\n const {\n isLoading: isLoadingForPermissions,\n allowedActions: { canCreate, canDelete, canRead, canUpdate },\n } = useRBAC(permissions.settings?.roles);\n\n const { roles, refetch: refetchRoles } = useAdminRoles(\n { filters: query?._q ? { name: { $containsi: query._q } } : undefined },\n {\n refetchOnMountOrArgChange: true,\n skip: isLoadingForPermissions || !canRead,\n }\n );\n\n const navigate = useNavigate();\n const [{ roleToDelete }, dispatch] = React.useReducer(reducer, initialState);\n const { post } = useFetchClient();\n\n const handleDeleteData = async () => {\n try {\n dispatch({\n type: 'ON_REMOVE_ROLES',\n });\n\n await post('/admin/roles/batch-delete', {\n ids: [roleToDelete],\n });\n\n await refetchRoles();\n\n dispatch({\n type: 'RESET_DATA_TO_DELETE',\n });\n } catch (error) {\n if (isFetchError(error)) {\n toggleNotification({\n type: 'danger',\n message: formatAPIError(error),\n });\n }\n }\n };\n\n const handleNewRoleClick = () => navigate('new');\n\n const handleToggleModal = () => setIsWarningDeleteAllOpenend((prev) => !prev);\n\n const handleClickDelete = (role: AdminRole) => (e: React.MouseEvent<HTMLButtonElement>) => {\n e.preventDefault();\n e.stopPropagation();\n\n if (role.usersCount) {\n toggleNotification({\n type: 'info',\n message: formatMessage({ id: 'Roles.ListPage.notification.delete-not-allowed' }),\n });\n } else {\n dispatch({\n type: 'SET_ROLE_TO_DELETE',\n id: role.id,\n });\n\n handleToggleModal();\n }\n };\n\n const handleClickDuplicate = (role: AdminRole) => (e: React.MouseEvent<HTMLButtonElement>) => {\n e.preventDefault();\n e.stopPropagation();\n\n navigate(`duplicate/${role.id}`);\n };\n\n const rowCount = roles.length + 1;\n const colCount = 6;\n\n if (isLoadingForPermissions) {\n return <Page.Loading />;\n }\n\n return (\n <Page.Main>\n <Page.Title>\n {formatMessage(\n { id: 'Settings.PageTitle', defaultMessage: 'Settings - {name}' },\n {\n name: 'Roles',\n }\n )}\n </Page.Title>\n <Layouts.Header\n primaryAction={\n canCreate ? (\n <Button onClick={handleNewRoleClick} startIcon={<Plus />} size=\"S\">\n {formatMessage({\n id: 'Settings.roles.list.button.add',\n defaultMessage: 'Add new role',\n })}\n </Button>\n ) : null\n }\n title={formatMessage({\n id: 'global.roles',\n defaultMessage: 'roles',\n })}\n subtitle={formatMessage({\n id: 'Settings.roles.list.description',\n defaultMessage: 'List of roles',\n })}\n />\n {canRead && (\n <Layouts.Action\n startActions={\n <SearchInput\n label={formatMessage(\n { id: 'app.component.search.label', defaultMessage: 'Search for {target}' },\n {\n target: formatMessage({\n id: 'global.roles',\n defaultMessage: 'roles',\n }),\n }\n )}\n />\n }\n />\n )}\n {canRead && (\n <Layouts.Content>\n <Table\n colCount={colCount}\n rowCount={rowCount}\n footer={\n canCreate ? (\n <TFooter cursor=\"pointer\" onClick={handleNewRoleClick} icon={<Plus />}>\n {formatMessage({\n id: 'Settings.roles.list.button.add',\n defaultMessage: 'Add new role',\n })}\n </TFooter>\n ) : null\n }\n >\n <Thead>\n <Tr aria-rowindex={1}>\n <Th>\n <Typography variant=\"sigma\" textColor=\"neutral600\">\n {formatMessage({\n id: 'global.name',\n defaultMessage: 'Name',\n })}\n </Typography>\n </Th>\n <Th>\n <Typography variant=\"sigma\" textColor=\"neutral600\">\n {formatMessage({\n id: 'global.description',\n defaultMessage: 'Description',\n })}\n </Typography>\n </Th>\n <Th>\n <Typography variant=\"sigma\" textColor=\"neutral600\">\n {formatMessage({\n id: 'global.users',\n defaultMessage: 'Users',\n })}\n </Typography>\n </Th>\n <Th>\n <VisuallyHidden>\n {formatMessage({\n id: 'global.actions',\n defaultMessage: 'Actions',\n })}\n </VisuallyHidden>\n </Th>\n </Tr>\n </Thead>\n <Tbody>\n {roles?.map((role, index) => (\n <RoleRow\n cursor=\"pointer\"\n key={role.id}\n id={role.id}\n name={role.name}\n description={role.description}\n usersCount={role.usersCount}\n icons={\n [\n canCreate &&\n ({\n onClick: handleClickDuplicate(role),\n label: formatMessage({\n id: 'app.utils.duplicate',\n defaultMessage: 'Duplicate',\n }),\n children: <Duplicate />,\n } satisfies RoleRowProps['icons'][number]),\n canUpdate &&\n ({\n onClick: () => navigate(role.id.toString()),\n label: formatMessage({ id: 'app.utils.edit', defaultMessage: 'Edit' }),\n children: <Pencil />,\n } satisfies RoleRowProps['icons'][number]),\n canDelete &&\n ({\n onClick: handleClickDelete(role),\n label: formatMessage({ id: 'global.delete', defaultMessage: 'Delete' }),\n children: <Trash />,\n } satisfies RoleRowProps['icons'][number]),\n ].filter(Boolean) as RoleRowProps['icons']\n }\n rowIndex={index + 2}\n canUpdate={canUpdate}\n />\n ))}\n </Tbody>\n </Table>\n </Layouts.Content>\n )}\n <Dialog.Root open={isWarningDeleteAllOpened} onOpenChange={handleToggleModal}>\n <ConfirmDialog onConfirm={handleDeleteData} />\n </Dialog.Root>\n </Page.Main>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * Reducer\n * -----------------------------------------------------------------------------------------------*/\n\n/**\n * TODO: do we actually need this reducer? It's not doing a lot...\n */\n\ninterface State {\n roleToDelete: null | AdminRole['id'];\n showModalConfirmButtonLoading: boolean;\n shouldRefetchData: boolean;\n}\n\nconst initialState = {\n roleToDelete: null,\n showModalConfirmButtonLoading: false,\n shouldRefetchData: false,\n} satisfies State;\n\ninterface SetRoleToDeleteAction extends Pick<AdminRole, 'id'> {\n type: 'SET_ROLE_TO_DELETE';\n}\n\ninterface ResetDataToDeleteAction {\n type: 'RESET_DATA_TO_DELETE';\n}\n\ninterface OnRemoveRolesAction {\n type: 'ON_REMOVE_ROLES';\n}\n\ninterface OnRemoveRolesSucceededAction {\n type: 'ON_REMOVE_ROLES_SUCCEEDED';\n}\n\ntype Action =\n | SetRoleToDeleteAction\n | ResetDataToDeleteAction\n | OnRemoveRolesAction\n | OnRemoveRolesSucceededAction;\n\nconst reducer = (state: State, action: Action) =>\n produce(state, (draftState) => {\n switch (action.type) {\n case 'ON_REMOVE_ROLES': {\n draftState.showModalConfirmButtonLoading = true;\n break;\n }\n case 'ON_REMOVE_ROLES_SUCCEEDED': {\n draftState.shouldRefetchData = true;\n draftState.roleToDelete = null;\n break;\n }\n case 'RESET_DATA_TO_DELETE': {\n draftState.shouldRefetchData = false;\n draftState.roleToDelete = null;\n draftState.showModalConfirmButtonLoading = false;\n break;\n }\n case 'SET_ROLE_TO_DELETE': {\n draftState.roleToDelete = action.id;\n\n break;\n }\n default:\n return draftState;\n }\n });\n\n/* -------------------------------------------------------------------------------------------------\n * ProtectedListPage\n * -----------------------------------------------------------------------------------------------*/\n\nconst ProtectedListPage = () => {\n const permissions = useTypedSelector((state) => state.admin_app.permissions.settings?.roles.read);\n\n return (\n <Page.Protect permissions={permissions}>\n <ListPage />\n </Page.Protect>\n );\n};\n\nexport { ProtectedListPage, ListPage };\n"],"names":["ListPage","formatMessage","useIntl","permissions","useTypedSelector","selectAdminPermissions","formatAPIError","useAPIErrorHandler","toggleNotification","useNotification","isWarningDeleteAllOpened","setIsWarningDeleteAllOpenend","React","useState","query","useQueryParams","isLoading","isLoadingForPermissions","allowedActions","canCreate","canDelete","canRead","canUpdate","useRBAC","settings","roles","refetch","refetchRoles","useAdminRoles","filters","_q","name","$containsi","undefined","refetchOnMountOrArgChange","skip","navigate","useNavigate","roleToDelete","dispatch","useReducer","reducer","initialState","post","useFetchClient","handleDeleteData","type","ids","error","isFetchError","message","handleNewRoleClick","handleToggleModal","prev","handleClickDelete","role","e","preventDefault","stopPropagation","usersCount","id","handleClickDuplicate","rowCount","length","colCount","_jsx","Page","Loading","_jsxs","Main","Title","defaultMessage","Layouts","Header","primaryAction","Button","onClick","startIcon","Plus","size","title","subtitle","Action","startActions","SearchInput","label","target","Content","Table","footer","TFooter","cursor","icon","Thead","Tr","aria-rowindex","Th","Typography","variant","textColor","VisuallyHidden","Tbody","map","index","RoleRow","description","icons","children","Duplicate","toString","Pencil","Trash","filter","Boolean","rowIndex","Dialog","Root","open","onOpenChange","ConfirmDialog","onConfirm","showModalConfirmButtonLoading","shouldRefetchData","state","action","produce","draftState","ProtectedListPage","admin_app","read","Protect"],"mappings":"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"}
1
+ {"version":3,"file":"ListPage.js","sources":["../../../../../../../../admin/src/pages/Settings/pages/Roles/ListPage.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport {\n Button,\n Dialog,\n Table,\n Tbody,\n TFooter,\n Th,\n Thead,\n Tr,\n Typography,\n VisuallyHidden,\n} from '@strapi/design-system';\nimport { Duplicate, Pencil, Plus, Trash } from '@strapi/icons';\nimport { produce } from 'immer';\nimport { useIntl } from 'react-intl';\nimport { useNavigate } from 'react-router-dom';\n\nimport { ConfirmDialog } from '../../../../components/ConfirmDialog';\nimport { Layouts } from '../../../../components/Layouts/Layout';\nimport { Page } from '../../../../components/PageHelpers';\nimport { SearchInput } from '../../../../components/SearchInput';\nimport { useTypedSelector } from '../../../../core/store/hooks';\nimport { useNotification } from '../../../../features/Notifications';\nimport { useAdminRoles, AdminRole } from '../../../../hooks/useAdminRoles';\nimport { useAPIErrorHandler } from '../../../../hooks/useAPIErrorHandler';\nimport { useFetchClient } from '../../../../hooks/useFetchClient';\nimport { useQueryParams } from '../../../../hooks/useQueryParams';\nimport { useRBAC } from '../../../../hooks/useRBAC';\nimport { selectAdminPermissions } from '../../../../selectors';\nimport { isFetchError } from '../../../../utils/getFetchClient';\n\nimport { RoleRow, RoleRowProps } from './components/RoleRow';\n\nconst ListPage = () => {\n const { formatMessage } = useIntl();\n const permissions = useTypedSelector(selectAdminPermissions);\n const { formatAPIError } = useAPIErrorHandler();\n const { toggleNotification } = useNotification();\n const [isWarningDeleteAllOpened, setIsWarningDeleteAllOpenend] = React.useState(false);\n const [{ query }] = useQueryParams<{ _q?: string }>();\n const {\n isLoading: isLoadingForPermissions,\n allowedActions: { canCreate, canDelete, canRead, canUpdate },\n } = useRBAC(permissions.settings?.roles);\n\n const { roles, refetch: refetchRoles } = useAdminRoles(\n { filters: query?._q ? { name: { $containsi: query._q } } : undefined },\n {\n refetchOnMountOrArgChange: true,\n skip: isLoadingForPermissions || !canRead,\n }\n );\n\n const navigate = useNavigate();\n const [{ roleToDelete }, dispatch] = React.useReducer(reducer, initialState);\n const { post } = useFetchClient();\n\n const handleDeleteData = async () => {\n try {\n dispatch({\n type: 'ON_REMOVE_ROLES',\n });\n\n await post('/admin/roles/batch-delete', {\n ids: [roleToDelete],\n });\n\n await refetchRoles();\n\n dispatch({\n type: 'RESET_DATA_TO_DELETE',\n });\n } catch (error) {\n if (isFetchError(error)) {\n toggleNotification({\n type: 'danger',\n message: formatAPIError(error),\n });\n }\n }\n };\n\n const handleNewRoleClick = () => navigate('new');\n\n const handleToggleModal = () => setIsWarningDeleteAllOpenend((prev) => !prev);\n\n const handleClickDelete = (role: AdminRole) => (e: React.MouseEvent<HTMLButtonElement>) => {\n e.preventDefault();\n e.stopPropagation();\n\n if (role.usersCount) {\n toggleNotification({\n type: 'info',\n message: formatMessage({ id: 'Roles.ListPage.notification.delete-not-allowed' }),\n });\n } else {\n dispatch({\n type: 'SET_ROLE_TO_DELETE',\n id: role.id,\n });\n\n handleToggleModal();\n }\n };\n\n const handleClickDuplicate = (role: AdminRole) => (e: React.MouseEvent<HTMLButtonElement>) => {\n e.preventDefault();\n e.stopPropagation();\n\n navigate(`duplicate/${role.id}`);\n };\n\n const rowCount = roles.length + 1;\n const colCount = 6;\n\n if (isLoadingForPermissions) {\n return <Page.Loading />;\n }\n\n return (\n <Page.Main>\n <Page.Title>\n {formatMessage(\n { id: 'Settings.PageTitle', defaultMessage: 'Settings - {name}' },\n {\n name: 'Roles',\n }\n )}\n </Page.Title>\n <Layouts.Header\n primaryAction={\n canCreate ? (\n <Button onClick={handleNewRoleClick} startIcon={<Plus />} size=\"S\" fullWidth>\n {formatMessage({\n id: 'Settings.roles.list.button.add',\n defaultMessage: 'Add new role',\n })}\n </Button>\n ) : null\n }\n title={formatMessage({\n id: 'global.roles',\n defaultMessage: 'roles',\n })}\n subtitle={formatMessage({\n id: 'Settings.roles.list.description',\n defaultMessage: 'List of roles',\n })}\n />\n {canRead && (\n <Layouts.Action\n startActions={\n <SearchInput\n label={formatMessage(\n { id: 'app.component.search.label', defaultMessage: 'Search for {target}' },\n {\n target: formatMessage({\n id: 'global.roles',\n defaultMessage: 'roles',\n }),\n }\n )}\n />\n }\n />\n )}\n {canRead && (\n <Layouts.Content>\n <Table\n colCount={colCount}\n rowCount={rowCount}\n footer={\n canCreate ? (\n <TFooter cursor=\"pointer\" onClick={handleNewRoleClick} icon={<Plus />}>\n {formatMessage({\n id: 'Settings.roles.list.button.add',\n defaultMessage: 'Add new role',\n })}\n </TFooter>\n ) : null\n }\n >\n <Thead>\n <Tr aria-rowindex={1}>\n <Th>\n <Typography variant=\"sigma\" textColor=\"neutral600\">\n {formatMessage({\n id: 'global.name',\n defaultMessage: 'Name',\n })}\n </Typography>\n </Th>\n <Th>\n <Typography variant=\"sigma\" textColor=\"neutral600\">\n {formatMessage({\n id: 'global.description',\n defaultMessage: 'Description',\n })}\n </Typography>\n </Th>\n <Th>\n <Typography variant=\"sigma\" textColor=\"neutral600\">\n {formatMessage({\n id: 'global.users',\n defaultMessage: 'Users',\n })}\n </Typography>\n </Th>\n <Th>\n <VisuallyHidden>\n {formatMessage({\n id: 'global.actions',\n defaultMessage: 'Actions',\n })}\n </VisuallyHidden>\n </Th>\n </Tr>\n </Thead>\n <Tbody>\n {roles?.map((role, index) => (\n <RoleRow\n cursor=\"pointer\"\n key={role.id}\n id={role.id}\n name={role.name}\n description={role.description}\n usersCount={role.usersCount}\n icons={\n [\n canCreate &&\n ({\n onClick: handleClickDuplicate(role),\n label: formatMessage({\n id: 'app.utils.duplicate',\n defaultMessage: 'Duplicate',\n }),\n children: <Duplicate />,\n } satisfies RoleRowProps['icons'][number]),\n canUpdate &&\n ({\n onClick: () => navigate(role.id.toString()),\n label: formatMessage({ id: 'app.utils.edit', defaultMessage: 'Edit' }),\n children: <Pencil />,\n } satisfies RoleRowProps['icons'][number]),\n canDelete &&\n ({\n onClick: handleClickDelete(role),\n label: formatMessage({ id: 'global.delete', defaultMessage: 'Delete' }),\n children: <Trash />,\n } satisfies RoleRowProps['icons'][number]),\n ].filter(Boolean) as RoleRowProps['icons']\n }\n rowIndex={index + 2}\n canUpdate={canUpdate}\n />\n ))}\n </Tbody>\n </Table>\n </Layouts.Content>\n )}\n <Dialog.Root open={isWarningDeleteAllOpened} onOpenChange={handleToggleModal}>\n <ConfirmDialog onConfirm={handleDeleteData} />\n </Dialog.Root>\n </Page.Main>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * Reducer\n * -----------------------------------------------------------------------------------------------*/\n\n/**\n * TODO: do we actually need this reducer? It's not doing a lot...\n */\n\ninterface State {\n roleToDelete: null | AdminRole['id'];\n showModalConfirmButtonLoading: boolean;\n shouldRefetchData: boolean;\n}\n\nconst initialState = {\n roleToDelete: null,\n showModalConfirmButtonLoading: false,\n shouldRefetchData: false,\n} satisfies State;\n\ninterface SetRoleToDeleteAction extends Pick<AdminRole, 'id'> {\n type: 'SET_ROLE_TO_DELETE';\n}\n\ninterface ResetDataToDeleteAction {\n type: 'RESET_DATA_TO_DELETE';\n}\n\ninterface OnRemoveRolesAction {\n type: 'ON_REMOVE_ROLES';\n}\n\ninterface OnRemoveRolesSucceededAction {\n type: 'ON_REMOVE_ROLES_SUCCEEDED';\n}\n\ntype Action =\n | SetRoleToDeleteAction\n | ResetDataToDeleteAction\n | OnRemoveRolesAction\n | OnRemoveRolesSucceededAction;\n\nconst reducer = (state: State, action: Action) =>\n produce(state, (draftState) => {\n switch (action.type) {\n case 'ON_REMOVE_ROLES': {\n draftState.showModalConfirmButtonLoading = true;\n break;\n }\n case 'ON_REMOVE_ROLES_SUCCEEDED': {\n draftState.shouldRefetchData = true;\n draftState.roleToDelete = null;\n break;\n }\n case 'RESET_DATA_TO_DELETE': {\n draftState.shouldRefetchData = false;\n draftState.roleToDelete = null;\n draftState.showModalConfirmButtonLoading = false;\n break;\n }\n case 'SET_ROLE_TO_DELETE': {\n draftState.roleToDelete = action.id;\n\n break;\n }\n default:\n return draftState;\n }\n });\n\n/* -------------------------------------------------------------------------------------------------\n * ProtectedListPage\n * -----------------------------------------------------------------------------------------------*/\n\nconst ProtectedListPage = () => {\n const permissions = useTypedSelector((state) => state.admin_app.permissions.settings?.roles.read);\n\n return (\n <Page.Protect permissions={permissions}>\n <ListPage />\n </Page.Protect>\n );\n};\n\nexport { ProtectedListPage, ListPage };\n"],"names":["ListPage","formatMessage","useIntl","permissions","useTypedSelector","selectAdminPermissions","formatAPIError","useAPIErrorHandler","toggleNotification","useNotification","isWarningDeleteAllOpened","setIsWarningDeleteAllOpenend","React","useState","query","useQueryParams","isLoading","isLoadingForPermissions","allowedActions","canCreate","canDelete","canRead","canUpdate","useRBAC","settings","roles","refetch","refetchRoles","useAdminRoles","filters","_q","name","$containsi","undefined","refetchOnMountOrArgChange","skip","navigate","useNavigate","roleToDelete","dispatch","useReducer","reducer","initialState","post","useFetchClient","handleDeleteData","type","ids","error","isFetchError","message","handleNewRoleClick","handleToggleModal","prev","handleClickDelete","role","e","preventDefault","stopPropagation","usersCount","id","handleClickDuplicate","rowCount","length","colCount","_jsx","Page","Loading","_jsxs","Main","Title","defaultMessage","Layouts","Header","primaryAction","Button","onClick","startIcon","Plus","size","fullWidth","title","subtitle","Action","startActions","SearchInput","label","target","Content","Table","footer","TFooter","cursor","icon","Thead","Tr","aria-rowindex","Th","Typography","variant","textColor","VisuallyHidden","Tbody","map","index","RoleRow","description","icons","children","Duplicate","toString","Pencil","Trash","filter","Boolean","rowIndex","Dialog","Root","open","onOpenChange","ConfirmDialog","onConfirm","showModalConfirmButtonLoading","shouldRefetchData","state","action","produce","draftState","ProtectedListPage","admin_app","read","Protect"],"mappings":"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"}
@@ -109,6 +109,7 @@ const ListPage = ()=>{
109
109
  onClick: handleNewRoleClick,
110
110
  startIcon: /*#__PURE__*/ jsx(Plus, {}),
111
111
  size: "S",
112
+ fullWidth: true,
112
113
  children: formatMessage({
113
114
  id: 'Settings.roles.list.button.add',
114
115
  defaultMessage: 'Add new role'
@@ -1 +1 @@
1
- {"version":3,"file":"ListPage.mjs","sources":["../../../../../../../../admin/src/pages/Settings/pages/Roles/ListPage.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport {\n Button,\n Dialog,\n Table,\n Tbody,\n TFooter,\n Th,\n Thead,\n Tr,\n Typography,\n VisuallyHidden,\n} from '@strapi/design-system';\nimport { Duplicate, Pencil, Plus, Trash } from '@strapi/icons';\nimport { produce } from 'immer';\nimport { useIntl } from 'react-intl';\nimport { useNavigate } from 'react-router-dom';\n\nimport { ConfirmDialog } from '../../../../components/ConfirmDialog';\nimport { Layouts } from '../../../../components/Layouts/Layout';\nimport { Page } from '../../../../components/PageHelpers';\nimport { SearchInput } from '../../../../components/SearchInput';\nimport { useTypedSelector } from '../../../../core/store/hooks';\nimport { useNotification } from '../../../../features/Notifications';\nimport { useAdminRoles, AdminRole } from '../../../../hooks/useAdminRoles';\nimport { useAPIErrorHandler } from '../../../../hooks/useAPIErrorHandler';\nimport { useFetchClient } from '../../../../hooks/useFetchClient';\nimport { useQueryParams } from '../../../../hooks/useQueryParams';\nimport { useRBAC } from '../../../../hooks/useRBAC';\nimport { selectAdminPermissions } from '../../../../selectors';\nimport { isFetchError } from '../../../../utils/getFetchClient';\n\nimport { RoleRow, RoleRowProps } from './components/RoleRow';\n\nconst ListPage = () => {\n const { formatMessage } = useIntl();\n const permissions = useTypedSelector(selectAdminPermissions);\n const { formatAPIError } = useAPIErrorHandler();\n const { toggleNotification } = useNotification();\n const [isWarningDeleteAllOpened, setIsWarningDeleteAllOpenend] = React.useState(false);\n const [{ query }] = useQueryParams<{ _q?: string }>();\n const {\n isLoading: isLoadingForPermissions,\n allowedActions: { canCreate, canDelete, canRead, canUpdate },\n } = useRBAC(permissions.settings?.roles);\n\n const { roles, refetch: refetchRoles } = useAdminRoles(\n { filters: query?._q ? { name: { $containsi: query._q } } : undefined },\n {\n refetchOnMountOrArgChange: true,\n skip: isLoadingForPermissions || !canRead,\n }\n );\n\n const navigate = useNavigate();\n const [{ roleToDelete }, dispatch] = React.useReducer(reducer, initialState);\n const { post } = useFetchClient();\n\n const handleDeleteData = async () => {\n try {\n dispatch({\n type: 'ON_REMOVE_ROLES',\n });\n\n await post('/admin/roles/batch-delete', {\n ids: [roleToDelete],\n });\n\n await refetchRoles();\n\n dispatch({\n type: 'RESET_DATA_TO_DELETE',\n });\n } catch (error) {\n if (isFetchError(error)) {\n toggleNotification({\n type: 'danger',\n message: formatAPIError(error),\n });\n }\n }\n };\n\n const handleNewRoleClick = () => navigate('new');\n\n const handleToggleModal = () => setIsWarningDeleteAllOpenend((prev) => !prev);\n\n const handleClickDelete = (role: AdminRole) => (e: React.MouseEvent<HTMLButtonElement>) => {\n e.preventDefault();\n e.stopPropagation();\n\n if (role.usersCount) {\n toggleNotification({\n type: 'info',\n message: formatMessage({ id: 'Roles.ListPage.notification.delete-not-allowed' }),\n });\n } else {\n dispatch({\n type: 'SET_ROLE_TO_DELETE',\n id: role.id,\n });\n\n handleToggleModal();\n }\n };\n\n const handleClickDuplicate = (role: AdminRole) => (e: React.MouseEvent<HTMLButtonElement>) => {\n e.preventDefault();\n e.stopPropagation();\n\n navigate(`duplicate/${role.id}`);\n };\n\n const rowCount = roles.length + 1;\n const colCount = 6;\n\n if (isLoadingForPermissions) {\n return <Page.Loading />;\n }\n\n return (\n <Page.Main>\n <Page.Title>\n {formatMessage(\n { id: 'Settings.PageTitle', defaultMessage: 'Settings - {name}' },\n {\n name: 'Roles',\n }\n )}\n </Page.Title>\n <Layouts.Header\n primaryAction={\n canCreate ? (\n <Button onClick={handleNewRoleClick} startIcon={<Plus />} size=\"S\">\n {formatMessage({\n id: 'Settings.roles.list.button.add',\n defaultMessage: 'Add new role',\n })}\n </Button>\n ) : null\n }\n title={formatMessage({\n id: 'global.roles',\n defaultMessage: 'roles',\n })}\n subtitle={formatMessage({\n id: 'Settings.roles.list.description',\n defaultMessage: 'List of roles',\n })}\n />\n {canRead && (\n <Layouts.Action\n startActions={\n <SearchInput\n label={formatMessage(\n { id: 'app.component.search.label', defaultMessage: 'Search for {target}' },\n {\n target: formatMessage({\n id: 'global.roles',\n defaultMessage: 'roles',\n }),\n }\n )}\n />\n }\n />\n )}\n {canRead && (\n <Layouts.Content>\n <Table\n colCount={colCount}\n rowCount={rowCount}\n footer={\n canCreate ? (\n <TFooter cursor=\"pointer\" onClick={handleNewRoleClick} icon={<Plus />}>\n {formatMessage({\n id: 'Settings.roles.list.button.add',\n defaultMessage: 'Add new role',\n })}\n </TFooter>\n ) : null\n }\n >\n <Thead>\n <Tr aria-rowindex={1}>\n <Th>\n <Typography variant=\"sigma\" textColor=\"neutral600\">\n {formatMessage({\n id: 'global.name',\n defaultMessage: 'Name',\n })}\n </Typography>\n </Th>\n <Th>\n <Typography variant=\"sigma\" textColor=\"neutral600\">\n {formatMessage({\n id: 'global.description',\n defaultMessage: 'Description',\n })}\n </Typography>\n </Th>\n <Th>\n <Typography variant=\"sigma\" textColor=\"neutral600\">\n {formatMessage({\n id: 'global.users',\n defaultMessage: 'Users',\n })}\n </Typography>\n </Th>\n <Th>\n <VisuallyHidden>\n {formatMessage({\n id: 'global.actions',\n defaultMessage: 'Actions',\n })}\n </VisuallyHidden>\n </Th>\n </Tr>\n </Thead>\n <Tbody>\n {roles?.map((role, index) => (\n <RoleRow\n cursor=\"pointer\"\n key={role.id}\n id={role.id}\n name={role.name}\n description={role.description}\n usersCount={role.usersCount}\n icons={\n [\n canCreate &&\n ({\n onClick: handleClickDuplicate(role),\n label: formatMessage({\n id: 'app.utils.duplicate',\n defaultMessage: 'Duplicate',\n }),\n children: <Duplicate />,\n } satisfies RoleRowProps['icons'][number]),\n canUpdate &&\n ({\n onClick: () => navigate(role.id.toString()),\n label: formatMessage({ id: 'app.utils.edit', defaultMessage: 'Edit' }),\n children: <Pencil />,\n } satisfies RoleRowProps['icons'][number]),\n canDelete &&\n ({\n onClick: handleClickDelete(role),\n label: formatMessage({ id: 'global.delete', defaultMessage: 'Delete' }),\n children: <Trash />,\n } satisfies RoleRowProps['icons'][number]),\n ].filter(Boolean) as RoleRowProps['icons']\n }\n rowIndex={index + 2}\n canUpdate={canUpdate}\n />\n ))}\n </Tbody>\n </Table>\n </Layouts.Content>\n )}\n <Dialog.Root open={isWarningDeleteAllOpened} onOpenChange={handleToggleModal}>\n <ConfirmDialog onConfirm={handleDeleteData} />\n </Dialog.Root>\n </Page.Main>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * Reducer\n * -----------------------------------------------------------------------------------------------*/\n\n/**\n * TODO: do we actually need this reducer? It's not doing a lot...\n */\n\ninterface State {\n roleToDelete: null | AdminRole['id'];\n showModalConfirmButtonLoading: boolean;\n shouldRefetchData: boolean;\n}\n\nconst initialState = {\n roleToDelete: null,\n showModalConfirmButtonLoading: false,\n shouldRefetchData: false,\n} satisfies State;\n\ninterface SetRoleToDeleteAction extends Pick<AdminRole, 'id'> {\n type: 'SET_ROLE_TO_DELETE';\n}\n\ninterface ResetDataToDeleteAction {\n type: 'RESET_DATA_TO_DELETE';\n}\n\ninterface OnRemoveRolesAction {\n type: 'ON_REMOVE_ROLES';\n}\n\ninterface OnRemoveRolesSucceededAction {\n type: 'ON_REMOVE_ROLES_SUCCEEDED';\n}\n\ntype Action =\n | SetRoleToDeleteAction\n | ResetDataToDeleteAction\n | OnRemoveRolesAction\n | OnRemoveRolesSucceededAction;\n\nconst reducer = (state: State, action: Action) =>\n produce(state, (draftState) => {\n switch (action.type) {\n case 'ON_REMOVE_ROLES': {\n draftState.showModalConfirmButtonLoading = true;\n break;\n }\n case 'ON_REMOVE_ROLES_SUCCEEDED': {\n draftState.shouldRefetchData = true;\n draftState.roleToDelete = null;\n break;\n }\n case 'RESET_DATA_TO_DELETE': {\n draftState.shouldRefetchData = false;\n draftState.roleToDelete = null;\n draftState.showModalConfirmButtonLoading = false;\n break;\n }\n case 'SET_ROLE_TO_DELETE': {\n draftState.roleToDelete = action.id;\n\n break;\n }\n default:\n return draftState;\n }\n });\n\n/* -------------------------------------------------------------------------------------------------\n * ProtectedListPage\n * -----------------------------------------------------------------------------------------------*/\n\nconst ProtectedListPage = () => {\n const permissions = useTypedSelector((state) => state.admin_app.permissions.settings?.roles.read);\n\n return (\n <Page.Protect permissions={permissions}>\n <ListPage />\n </Page.Protect>\n );\n};\n\nexport { ProtectedListPage, ListPage };\n"],"names":["ListPage","formatMessage","useIntl","permissions","useTypedSelector","selectAdminPermissions","formatAPIError","useAPIErrorHandler","toggleNotification","useNotification","isWarningDeleteAllOpened","setIsWarningDeleteAllOpenend","React","useState","query","useQueryParams","isLoading","isLoadingForPermissions","allowedActions","canCreate","canDelete","canRead","canUpdate","useRBAC","settings","roles","refetch","refetchRoles","useAdminRoles","filters","_q","name","$containsi","undefined","refetchOnMountOrArgChange","skip","navigate","useNavigate","roleToDelete","dispatch","useReducer","reducer","initialState","post","useFetchClient","handleDeleteData","type","ids","error","isFetchError","message","handleNewRoleClick","handleToggleModal","prev","handleClickDelete","role","e","preventDefault","stopPropagation","usersCount","id","handleClickDuplicate","rowCount","length","colCount","_jsx","Page","Loading","_jsxs","Main","Title","defaultMessage","Layouts","Header","primaryAction","Button","onClick","startIcon","Plus","size","title","subtitle","Action","startActions","SearchInput","label","target","Content","Table","footer","TFooter","cursor","icon","Thead","Tr","aria-rowindex","Th","Typography","variant","textColor","VisuallyHidden","Tbody","map","index","RoleRow","description","icons","children","Duplicate","toString","Pencil","Trash","filter","Boolean","rowIndex","Dialog","Root","open","onOpenChange","ConfirmDialog","onConfirm","showModalConfirmButtonLoading","shouldRefetchData","state","action","produce","draftState","ProtectedListPage","admin_app","read","Protect"],"mappings":"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"}
1
+ {"version":3,"file":"ListPage.mjs","sources":["../../../../../../../../admin/src/pages/Settings/pages/Roles/ListPage.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport {\n Button,\n Dialog,\n Table,\n Tbody,\n TFooter,\n Th,\n Thead,\n Tr,\n Typography,\n VisuallyHidden,\n} from '@strapi/design-system';\nimport { Duplicate, Pencil, Plus, Trash } from '@strapi/icons';\nimport { produce } from 'immer';\nimport { useIntl } from 'react-intl';\nimport { useNavigate } from 'react-router-dom';\n\nimport { ConfirmDialog } from '../../../../components/ConfirmDialog';\nimport { Layouts } from '../../../../components/Layouts/Layout';\nimport { Page } from '../../../../components/PageHelpers';\nimport { SearchInput } from '../../../../components/SearchInput';\nimport { useTypedSelector } from '../../../../core/store/hooks';\nimport { useNotification } from '../../../../features/Notifications';\nimport { useAdminRoles, AdminRole } from '../../../../hooks/useAdminRoles';\nimport { useAPIErrorHandler } from '../../../../hooks/useAPIErrorHandler';\nimport { useFetchClient } from '../../../../hooks/useFetchClient';\nimport { useQueryParams } from '../../../../hooks/useQueryParams';\nimport { useRBAC } from '../../../../hooks/useRBAC';\nimport { selectAdminPermissions } from '../../../../selectors';\nimport { isFetchError } from '../../../../utils/getFetchClient';\n\nimport { RoleRow, RoleRowProps } from './components/RoleRow';\n\nconst ListPage = () => {\n const { formatMessage } = useIntl();\n const permissions = useTypedSelector(selectAdminPermissions);\n const { formatAPIError } = useAPIErrorHandler();\n const { toggleNotification } = useNotification();\n const [isWarningDeleteAllOpened, setIsWarningDeleteAllOpenend] = React.useState(false);\n const [{ query }] = useQueryParams<{ _q?: string }>();\n const {\n isLoading: isLoadingForPermissions,\n allowedActions: { canCreate, canDelete, canRead, canUpdate },\n } = useRBAC(permissions.settings?.roles);\n\n const { roles, refetch: refetchRoles } = useAdminRoles(\n { filters: query?._q ? { name: { $containsi: query._q } } : undefined },\n {\n refetchOnMountOrArgChange: true,\n skip: isLoadingForPermissions || !canRead,\n }\n );\n\n const navigate = useNavigate();\n const [{ roleToDelete }, dispatch] = React.useReducer(reducer, initialState);\n const { post } = useFetchClient();\n\n const handleDeleteData = async () => {\n try {\n dispatch({\n type: 'ON_REMOVE_ROLES',\n });\n\n await post('/admin/roles/batch-delete', {\n ids: [roleToDelete],\n });\n\n await refetchRoles();\n\n dispatch({\n type: 'RESET_DATA_TO_DELETE',\n });\n } catch (error) {\n if (isFetchError(error)) {\n toggleNotification({\n type: 'danger',\n message: formatAPIError(error),\n });\n }\n }\n };\n\n const handleNewRoleClick = () => navigate('new');\n\n const handleToggleModal = () => setIsWarningDeleteAllOpenend((prev) => !prev);\n\n const handleClickDelete = (role: AdminRole) => (e: React.MouseEvent<HTMLButtonElement>) => {\n e.preventDefault();\n e.stopPropagation();\n\n if (role.usersCount) {\n toggleNotification({\n type: 'info',\n message: formatMessage({ id: 'Roles.ListPage.notification.delete-not-allowed' }),\n });\n } else {\n dispatch({\n type: 'SET_ROLE_TO_DELETE',\n id: role.id,\n });\n\n handleToggleModal();\n }\n };\n\n const handleClickDuplicate = (role: AdminRole) => (e: React.MouseEvent<HTMLButtonElement>) => {\n e.preventDefault();\n e.stopPropagation();\n\n navigate(`duplicate/${role.id}`);\n };\n\n const rowCount = roles.length + 1;\n const colCount = 6;\n\n if (isLoadingForPermissions) {\n return <Page.Loading />;\n }\n\n return (\n <Page.Main>\n <Page.Title>\n {formatMessage(\n { id: 'Settings.PageTitle', defaultMessage: 'Settings - {name}' },\n {\n name: 'Roles',\n }\n )}\n </Page.Title>\n <Layouts.Header\n primaryAction={\n canCreate ? (\n <Button onClick={handleNewRoleClick} startIcon={<Plus />} size=\"S\" fullWidth>\n {formatMessage({\n id: 'Settings.roles.list.button.add',\n defaultMessage: 'Add new role',\n })}\n </Button>\n ) : null\n }\n title={formatMessage({\n id: 'global.roles',\n defaultMessage: 'roles',\n })}\n subtitle={formatMessage({\n id: 'Settings.roles.list.description',\n defaultMessage: 'List of roles',\n })}\n />\n {canRead && (\n <Layouts.Action\n startActions={\n <SearchInput\n label={formatMessage(\n { id: 'app.component.search.label', defaultMessage: 'Search for {target}' },\n {\n target: formatMessage({\n id: 'global.roles',\n defaultMessage: 'roles',\n }),\n }\n )}\n />\n }\n />\n )}\n {canRead && (\n <Layouts.Content>\n <Table\n colCount={colCount}\n rowCount={rowCount}\n footer={\n canCreate ? (\n <TFooter cursor=\"pointer\" onClick={handleNewRoleClick} icon={<Plus />}>\n {formatMessage({\n id: 'Settings.roles.list.button.add',\n defaultMessage: 'Add new role',\n })}\n </TFooter>\n ) : null\n }\n >\n <Thead>\n <Tr aria-rowindex={1}>\n <Th>\n <Typography variant=\"sigma\" textColor=\"neutral600\">\n {formatMessage({\n id: 'global.name',\n defaultMessage: 'Name',\n })}\n </Typography>\n </Th>\n <Th>\n <Typography variant=\"sigma\" textColor=\"neutral600\">\n {formatMessage({\n id: 'global.description',\n defaultMessage: 'Description',\n })}\n </Typography>\n </Th>\n <Th>\n <Typography variant=\"sigma\" textColor=\"neutral600\">\n {formatMessage({\n id: 'global.users',\n defaultMessage: 'Users',\n })}\n </Typography>\n </Th>\n <Th>\n <VisuallyHidden>\n {formatMessage({\n id: 'global.actions',\n defaultMessage: 'Actions',\n })}\n </VisuallyHidden>\n </Th>\n </Tr>\n </Thead>\n <Tbody>\n {roles?.map((role, index) => (\n <RoleRow\n cursor=\"pointer\"\n key={role.id}\n id={role.id}\n name={role.name}\n description={role.description}\n usersCount={role.usersCount}\n icons={\n [\n canCreate &&\n ({\n onClick: handleClickDuplicate(role),\n label: formatMessage({\n id: 'app.utils.duplicate',\n defaultMessage: 'Duplicate',\n }),\n children: <Duplicate />,\n } satisfies RoleRowProps['icons'][number]),\n canUpdate &&\n ({\n onClick: () => navigate(role.id.toString()),\n label: formatMessage({ id: 'app.utils.edit', defaultMessage: 'Edit' }),\n children: <Pencil />,\n } satisfies RoleRowProps['icons'][number]),\n canDelete &&\n ({\n onClick: handleClickDelete(role),\n label: formatMessage({ id: 'global.delete', defaultMessage: 'Delete' }),\n children: <Trash />,\n } satisfies RoleRowProps['icons'][number]),\n ].filter(Boolean) as RoleRowProps['icons']\n }\n rowIndex={index + 2}\n canUpdate={canUpdate}\n />\n ))}\n </Tbody>\n </Table>\n </Layouts.Content>\n )}\n <Dialog.Root open={isWarningDeleteAllOpened} onOpenChange={handleToggleModal}>\n <ConfirmDialog onConfirm={handleDeleteData} />\n </Dialog.Root>\n </Page.Main>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * Reducer\n * -----------------------------------------------------------------------------------------------*/\n\n/**\n * TODO: do we actually need this reducer? It's not doing a lot...\n */\n\ninterface State {\n roleToDelete: null | AdminRole['id'];\n showModalConfirmButtonLoading: boolean;\n shouldRefetchData: boolean;\n}\n\nconst initialState = {\n roleToDelete: null,\n showModalConfirmButtonLoading: false,\n shouldRefetchData: false,\n} satisfies State;\n\ninterface SetRoleToDeleteAction extends Pick<AdminRole, 'id'> {\n type: 'SET_ROLE_TO_DELETE';\n}\n\ninterface ResetDataToDeleteAction {\n type: 'RESET_DATA_TO_DELETE';\n}\n\ninterface OnRemoveRolesAction {\n type: 'ON_REMOVE_ROLES';\n}\n\ninterface OnRemoveRolesSucceededAction {\n type: 'ON_REMOVE_ROLES_SUCCEEDED';\n}\n\ntype Action =\n | SetRoleToDeleteAction\n | ResetDataToDeleteAction\n | OnRemoveRolesAction\n | OnRemoveRolesSucceededAction;\n\nconst reducer = (state: State, action: Action) =>\n produce(state, (draftState) => {\n switch (action.type) {\n case 'ON_REMOVE_ROLES': {\n draftState.showModalConfirmButtonLoading = true;\n break;\n }\n case 'ON_REMOVE_ROLES_SUCCEEDED': {\n draftState.shouldRefetchData = true;\n draftState.roleToDelete = null;\n break;\n }\n case 'RESET_DATA_TO_DELETE': {\n draftState.shouldRefetchData = false;\n draftState.roleToDelete = null;\n draftState.showModalConfirmButtonLoading = false;\n break;\n }\n case 'SET_ROLE_TO_DELETE': {\n draftState.roleToDelete = action.id;\n\n break;\n }\n default:\n return draftState;\n }\n });\n\n/* -------------------------------------------------------------------------------------------------\n * ProtectedListPage\n * -----------------------------------------------------------------------------------------------*/\n\nconst ProtectedListPage = () => {\n const permissions = useTypedSelector((state) => state.admin_app.permissions.settings?.roles.read);\n\n return (\n <Page.Protect permissions={permissions}>\n <ListPage />\n </Page.Protect>\n );\n};\n\nexport { ProtectedListPage, ListPage };\n"],"names":["ListPage","formatMessage","useIntl","permissions","useTypedSelector","selectAdminPermissions","formatAPIError","useAPIErrorHandler","toggleNotification","useNotification","isWarningDeleteAllOpened","setIsWarningDeleteAllOpenend","React","useState","query","useQueryParams","isLoading","isLoadingForPermissions","allowedActions","canCreate","canDelete","canRead","canUpdate","useRBAC","settings","roles","refetch","refetchRoles","useAdminRoles","filters","_q","name","$containsi","undefined","refetchOnMountOrArgChange","skip","navigate","useNavigate","roleToDelete","dispatch","useReducer","reducer","initialState","post","useFetchClient","handleDeleteData","type","ids","error","isFetchError","message","handleNewRoleClick","handleToggleModal","prev","handleClickDelete","role","e","preventDefault","stopPropagation","usersCount","id","handleClickDuplicate","rowCount","length","colCount","_jsx","Page","Loading","_jsxs","Main","Title","defaultMessage","Layouts","Header","primaryAction","Button","onClick","startIcon","Plus","size","fullWidth","title","subtitle","Action","startActions","SearchInput","label","target","Content","Table","footer","TFooter","cursor","icon","Thead","Tr","aria-rowindex","Th","Typography","variant","textColor","VisuallyHidden","Tbody","map","index","RoleRow","description","icons","children","Duplicate","toString","Pencil","Trash","filter","Boolean","rowIndex","Dialog","Root","open","onOpenChange","ConfirmDialog","onConfirm","showModalConfirmButtonLoading","shouldRefetchData","state","action","produce","draftState","ProtectedListPage","admin_app","read","Protect"],"mappings":"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"}
@@ -182,6 +182,7 @@ const tableHeaders = [
182
182
  tokenType: constants.TRANSFER_TOKEN_TYPE
183
183
  }),
184
184
  to: "/settings/transfer-tokens/create",
185
+ fullWidth: true,
185
186
  children: formatMessage({
186
187
  id: 'Settings.transferTokens.create',
187
188
  defaultMessage: 'Create new Transfer Token'
@@ -1 +1 @@
1
- {"version":3,"file":"ListView.js","sources":["../../../../../../../../admin/src/pages/Settings/pages/TransferTokens/ListView.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { EmptyStateLayout, LinkButton } from '@strapi/design-system';\nimport { Plus } from '@strapi/icons';\nimport { EmptyDocuments } from '@strapi/icons/symbols';\nimport * as qs from 'qs';\nimport { useIntl } from 'react-intl';\nimport { Link, useNavigate } from 'react-router-dom';\n\nimport { Layouts } from '../../../../components/Layouts/Layout';\nimport { Page } from '../../../../components/PageHelpers';\nimport { useTypedSelector } from '../../../../core/store/hooks';\nimport { useNotification } from '../../../../features/Notifications';\nimport { useTracking } from '../../../../features/Tracking';\nimport { useAPIErrorHandler } from '../../../../hooks/useAPIErrorHandler';\nimport { useOnce } from '../../../../hooks/useOnce';\nimport { useRBAC } from '../../../../hooks/useRBAC';\nimport {\n useDeleteTransferTokenMutation,\n useGetTransferTokensQuery,\n} from '../../../../services/transferTokens';\nimport { TRANSFER_TOKEN_TYPE } from '../../components/Tokens/constants';\nimport { Table } from '../../components/Tokens/Table';\n\nimport type { Data } from '@strapi/types';\n\nconst tableHeaders = [\n {\n name: 'name',\n label: {\n id: 'Settings.tokens.ListView.headers.name',\n defaultMessage: 'Name',\n },\n sortable: true,\n },\n {\n name: 'description',\n label: {\n id: 'Settings.tokens.ListView.headers.description',\n defaultMessage: 'Description',\n },\n sortable: false,\n },\n {\n name: 'createdAt',\n label: {\n id: 'Settings.tokens.ListView.headers.createdAt',\n defaultMessage: 'Created at',\n },\n sortable: false,\n },\n {\n name: 'lastUsedAt',\n label: {\n id: 'Settings.tokens.ListView.headers.lastUsedAt',\n defaultMessage: 'Last used',\n },\n sortable: false,\n },\n] as const;\n\n/* -------------------------------------------------------------------------------------------------\n * ListView\n * -----------------------------------------------------------------------------------------------*/\n\nconst ListView = () => {\n const { formatMessage } = useIntl();\n const { toggleNotification } = useNotification();\n const permissions = useTypedSelector(\n (state) => state.admin_app.permissions.settings?.['transfer-tokens']\n );\n const {\n isLoading: isLoadingRBAC,\n allowedActions: { canCreate, canDelete, canUpdate, canRead },\n } = useRBAC(permissions);\n const navigate = useNavigate();\n const { trackUsage } = useTracking();\n const { _unstableFormatAPIError: formatAPIError } = useAPIErrorHandler();\n\n React.useEffect(() => {\n navigate({ search: qs.stringify({ sort: 'name:ASC' }, { encode: false }) }, { replace: true });\n }, [navigate]);\n\n useOnce(() => {\n trackUsage('willAccessTokenList', {\n tokenType: TRANSFER_TOKEN_TYPE,\n });\n });\n\n const headers = tableHeaders.map((header) => ({\n ...header,\n label: formatMessage(header.label),\n }));\n\n const {\n data: transferTokens = [],\n isLoading: isLoadingTokens,\n error,\n } = useGetTransferTokensQuery(undefined, {\n skip: !canRead,\n });\n\n React.useEffect(() => {\n if (transferTokens) {\n trackUsage('didAccessTokenList', {\n number: transferTokens.length,\n tokenType: TRANSFER_TOKEN_TYPE,\n });\n }\n }, [trackUsage, transferTokens]);\n\n React.useEffect(() => {\n if (error) {\n toggleNotification({\n type: 'danger',\n message: formatAPIError(error),\n });\n }\n }, [error, formatAPIError, toggleNotification]);\n\n const [deleteToken] = useDeleteTransferTokenMutation();\n\n const handleDelete = async (id: Data.ID) => {\n try {\n const res = await deleteToken(id);\n\n if ('error' in res) {\n toggleNotification({\n type: 'danger',\n message: formatAPIError(res.error),\n });\n }\n } catch {\n toggleNotification({\n type: 'danger',\n message: formatMessage({ id: 'notification.error', defaultMessage: 'An error occured' }),\n });\n }\n };\n\n const isLoading = isLoadingTokens || isLoadingRBAC;\n\n return (\n <>\n <Page.Title>\n {formatMessage(\n { id: 'Settings.PageTitle', defaultMessage: 'Settings - {name}' },\n {\n name: 'Transfer Tokens',\n }\n )}\n </Page.Title>\n <Layouts.Header\n title={formatMessage({\n id: 'Settings.transferTokens.title',\n defaultMessage: 'Transfer Tokens',\n })}\n subtitle={formatMessage({\n id: 'Settings.transferTokens.description',\n defaultMessage: '\"List of generated transfer tokens\"', // TODO change this message\n })}\n primaryAction={\n canCreate ? (\n <LinkButton\n role=\"button\"\n tag={Link}\n data-testid=\"create-transfer-token-button\"\n startIcon={<Plus />}\n size=\"S\"\n onClick={() =>\n trackUsage('willAddTokenFromList', {\n tokenType: TRANSFER_TOKEN_TYPE,\n })\n }\n to=\"/settings/transfer-tokens/create\"\n >\n {formatMessage({\n id: 'Settings.transferTokens.create',\n defaultMessage: 'Create new Transfer Token',\n })}\n </LinkButton>\n ) : undefined\n }\n />\n {!canRead ? (\n <Page.NoPermissions />\n ) : (\n <Page.Main aria-busy={isLoading}>\n <Layouts.Content>\n {transferTokens.length > 0 && (\n <Table\n permissions={{ canRead, canDelete, canUpdate }}\n headers={headers}\n isLoading={isLoading}\n onConfirmDelete={handleDelete}\n tokens={transferTokens}\n tokenType={TRANSFER_TOKEN_TYPE}\n />\n )}\n {canCreate && transferTokens.length === 0 ? (\n <EmptyStateLayout\n action={\n <LinkButton\n tag={Link}\n variant=\"secondary\"\n startIcon={<Plus />}\n to=\"/settings/transfer-tokens/create\"\n >\n {formatMessage({\n id: 'Settings.transferTokens.addNewToken',\n defaultMessage: 'Add new Transfer Token',\n })}\n </LinkButton>\n }\n icon={<EmptyDocuments width=\"16rem\" />}\n content={formatMessage({\n id: 'Settings.transferTokens.addFirstToken',\n defaultMessage: 'Add your first Transfer Token',\n })}\n />\n ) : null}\n {!canCreate && transferTokens.length === 0 ? (\n <EmptyStateLayout\n icon={<EmptyDocuments width=\"16rem\" />}\n content={formatMessage({\n id: 'Settings.transferTokens.emptyStateLayout',\n defaultMessage: 'You don’t have any content yet...',\n })}\n />\n ) : null}\n </Layouts.Content>\n </Page.Main>\n )}\n </>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * ProtectedListView\n * -----------------------------------------------------------------------------------------------*/\n\nconst ProtectedListView = () => {\n const permissions = useTypedSelector(\n (state) => state.admin_app.permissions.settings?.['transfer-tokens'].main\n );\n\n return (\n <Page.Protect permissions={permissions}>\n <ListView />\n </Page.Protect>\n );\n};\n\nexport { ListView, ProtectedListView };\n"],"names":["tableHeaders","name","label","id","defaultMessage","sortable","ListView","formatMessage","useIntl","toggleNotification","useNotification","permissions","useTypedSelector","state","admin_app","settings","isLoading","isLoadingRBAC","allowedActions","canCreate","canDelete","canUpdate","canRead","useRBAC","navigate","useNavigate","trackUsage","useTracking","_unstableFormatAPIError","formatAPIError","useAPIErrorHandler","React","useEffect","search","qs","stringify","sort","encode","replace","useOnce","tokenType","TRANSFER_TOKEN_TYPE","headers","map","header","data","transferTokens","isLoadingTokens","error","useGetTransferTokensQuery","undefined","skip","number","length","type","message","deleteToken","useDeleteTransferTokenMutation","handleDelete","res","_jsxs","_Fragment","_jsx","Page","Title","Layouts","Header","title","subtitle","primaryAction","LinkButton","role","tag","Link","data-testid","startIcon","Plus","size","onClick","to","NoPermissions","Main","aria-busy","Content","Table","onConfirmDelete","tokens","EmptyStateLayout","action","variant","icon","EmptyDocuments","width","content","ProtectedListView","main","Protect"],"mappings":"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"}
1
+ {"version":3,"file":"ListView.js","sources":["../../../../../../../../admin/src/pages/Settings/pages/TransferTokens/ListView.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { EmptyStateLayout, LinkButton } from '@strapi/design-system';\nimport { Plus } from '@strapi/icons';\nimport { EmptyDocuments } from '@strapi/icons/symbols';\nimport * as qs from 'qs';\nimport { useIntl } from 'react-intl';\nimport { Link, useNavigate } from 'react-router-dom';\n\nimport { Layouts } from '../../../../components/Layouts/Layout';\nimport { Page } from '../../../../components/PageHelpers';\nimport { useTypedSelector } from '../../../../core/store/hooks';\nimport { useNotification } from '../../../../features/Notifications';\nimport { useTracking } from '../../../../features/Tracking';\nimport { useAPIErrorHandler } from '../../../../hooks/useAPIErrorHandler';\nimport { useOnce } from '../../../../hooks/useOnce';\nimport { useRBAC } from '../../../../hooks/useRBAC';\nimport {\n useDeleteTransferTokenMutation,\n useGetTransferTokensQuery,\n} from '../../../../services/transferTokens';\nimport { TRANSFER_TOKEN_TYPE } from '../../components/Tokens/constants';\nimport { Table } from '../../components/Tokens/Table';\n\nimport type { Data } from '@strapi/types';\n\nconst tableHeaders = [\n {\n name: 'name',\n label: {\n id: 'Settings.tokens.ListView.headers.name',\n defaultMessage: 'Name',\n },\n sortable: true,\n },\n {\n name: 'description',\n label: {\n id: 'Settings.tokens.ListView.headers.description',\n defaultMessage: 'Description',\n },\n sortable: false,\n },\n {\n name: 'createdAt',\n label: {\n id: 'Settings.tokens.ListView.headers.createdAt',\n defaultMessage: 'Created at',\n },\n sortable: false,\n },\n {\n name: 'lastUsedAt',\n label: {\n id: 'Settings.tokens.ListView.headers.lastUsedAt',\n defaultMessage: 'Last used',\n },\n sortable: false,\n },\n] as const;\n\n/* -------------------------------------------------------------------------------------------------\n * ListView\n * -----------------------------------------------------------------------------------------------*/\n\nconst ListView = () => {\n const { formatMessage } = useIntl();\n const { toggleNotification } = useNotification();\n const permissions = useTypedSelector(\n (state) => state.admin_app.permissions.settings?.['transfer-tokens']\n );\n const {\n isLoading: isLoadingRBAC,\n allowedActions: { canCreate, canDelete, canUpdate, canRead },\n } = useRBAC(permissions);\n const navigate = useNavigate();\n const { trackUsage } = useTracking();\n const { _unstableFormatAPIError: formatAPIError } = useAPIErrorHandler();\n\n React.useEffect(() => {\n navigate({ search: qs.stringify({ sort: 'name:ASC' }, { encode: false }) }, { replace: true });\n }, [navigate]);\n\n useOnce(() => {\n trackUsage('willAccessTokenList', {\n tokenType: TRANSFER_TOKEN_TYPE,\n });\n });\n\n const headers = tableHeaders.map((header) => ({\n ...header,\n label: formatMessage(header.label),\n }));\n\n const {\n data: transferTokens = [],\n isLoading: isLoadingTokens,\n error,\n } = useGetTransferTokensQuery(undefined, {\n skip: !canRead,\n });\n\n React.useEffect(() => {\n if (transferTokens) {\n trackUsage('didAccessTokenList', {\n number: transferTokens.length,\n tokenType: TRANSFER_TOKEN_TYPE,\n });\n }\n }, [trackUsage, transferTokens]);\n\n React.useEffect(() => {\n if (error) {\n toggleNotification({\n type: 'danger',\n message: formatAPIError(error),\n });\n }\n }, [error, formatAPIError, toggleNotification]);\n\n const [deleteToken] = useDeleteTransferTokenMutation();\n\n const handleDelete = async (id: Data.ID) => {\n try {\n const res = await deleteToken(id);\n\n if ('error' in res) {\n toggleNotification({\n type: 'danger',\n message: formatAPIError(res.error),\n });\n }\n } catch {\n toggleNotification({\n type: 'danger',\n message: formatMessage({ id: 'notification.error', defaultMessage: 'An error occured' }),\n });\n }\n };\n\n const isLoading = isLoadingTokens || isLoadingRBAC;\n\n return (\n <>\n <Page.Title>\n {formatMessage(\n { id: 'Settings.PageTitle', defaultMessage: 'Settings - {name}' },\n {\n name: 'Transfer Tokens',\n }\n )}\n </Page.Title>\n <Layouts.Header\n title={formatMessage({\n id: 'Settings.transferTokens.title',\n defaultMessage: 'Transfer Tokens',\n })}\n subtitle={formatMessage({\n id: 'Settings.transferTokens.description',\n defaultMessage: '\"List of generated transfer tokens\"', // TODO change this message\n })}\n primaryAction={\n canCreate ? (\n <LinkButton\n role=\"button\"\n tag={Link}\n data-testid=\"create-transfer-token-button\"\n startIcon={<Plus />}\n size=\"S\"\n onClick={() =>\n trackUsage('willAddTokenFromList', {\n tokenType: TRANSFER_TOKEN_TYPE,\n })\n }\n to=\"/settings/transfer-tokens/create\"\n fullWidth\n >\n {formatMessage({\n id: 'Settings.transferTokens.create',\n defaultMessage: 'Create new Transfer Token',\n })}\n </LinkButton>\n ) : undefined\n }\n />\n {!canRead ? (\n <Page.NoPermissions />\n ) : (\n <Page.Main aria-busy={isLoading}>\n <Layouts.Content>\n {transferTokens.length > 0 && (\n <Table\n permissions={{ canRead, canDelete, canUpdate }}\n headers={headers}\n isLoading={isLoading}\n onConfirmDelete={handleDelete}\n tokens={transferTokens}\n tokenType={TRANSFER_TOKEN_TYPE}\n />\n )}\n {canCreate && transferTokens.length === 0 ? (\n <EmptyStateLayout\n action={\n <LinkButton\n tag={Link}\n variant=\"secondary\"\n startIcon={<Plus />}\n to=\"/settings/transfer-tokens/create\"\n >\n {formatMessage({\n id: 'Settings.transferTokens.addNewToken',\n defaultMessage: 'Add new Transfer Token',\n })}\n </LinkButton>\n }\n icon={<EmptyDocuments width=\"16rem\" />}\n content={formatMessage({\n id: 'Settings.transferTokens.addFirstToken',\n defaultMessage: 'Add your first Transfer Token',\n })}\n />\n ) : null}\n {!canCreate && transferTokens.length === 0 ? (\n <EmptyStateLayout\n icon={<EmptyDocuments width=\"16rem\" />}\n content={formatMessage({\n id: 'Settings.transferTokens.emptyStateLayout',\n defaultMessage: 'You don’t have any content yet...',\n })}\n />\n ) : null}\n </Layouts.Content>\n </Page.Main>\n )}\n </>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * ProtectedListView\n * -----------------------------------------------------------------------------------------------*/\n\nconst ProtectedListView = () => {\n const permissions = useTypedSelector(\n (state) => state.admin_app.permissions.settings?.['transfer-tokens'].main\n );\n\n return (\n <Page.Protect permissions={permissions}>\n <ListView />\n </Page.Protect>\n );\n};\n\nexport { ListView, ProtectedListView };\n"],"names":["tableHeaders","name","label","id","defaultMessage","sortable","ListView","formatMessage","useIntl","toggleNotification","useNotification","permissions","useTypedSelector","state","admin_app","settings","isLoading","isLoadingRBAC","allowedActions","canCreate","canDelete","canUpdate","canRead","useRBAC","navigate","useNavigate","trackUsage","useTracking","_unstableFormatAPIError","formatAPIError","useAPIErrorHandler","React","useEffect","search","qs","stringify","sort","encode","replace","useOnce","tokenType","TRANSFER_TOKEN_TYPE","headers","map","header","data","transferTokens","isLoadingTokens","error","useGetTransferTokensQuery","undefined","skip","number","length","type","message","deleteToken","useDeleteTransferTokenMutation","handleDelete","res","_jsxs","_Fragment","_jsx","Page","Title","Layouts","Header","title","subtitle","primaryAction","LinkButton","role","tag","Link","data-testid","startIcon","Plus","size","onClick","to","fullWidth","NoPermissions","Main","aria-busy","Content","Table","onConfirmDelete","tokens","EmptyStateLayout","action","variant","icon","EmptyDocuments","width","content","ProtectedListView","main","Protect"],"mappings":"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"}
@@ -160,6 +160,7 @@ const tableHeaders = [
160
160
  tokenType: TRANSFER_TOKEN_TYPE
161
161
  }),
162
162
  to: "/settings/transfer-tokens/create",
163
+ fullWidth: true,
163
164
  children: formatMessage({
164
165
  id: 'Settings.transferTokens.create',
165
166
  defaultMessage: 'Create new Transfer Token'
@@ -1 +1 @@
1
- {"version":3,"file":"ListView.mjs","sources":["../../../../../../../../admin/src/pages/Settings/pages/TransferTokens/ListView.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { EmptyStateLayout, LinkButton } from '@strapi/design-system';\nimport { Plus } from '@strapi/icons';\nimport { EmptyDocuments } from '@strapi/icons/symbols';\nimport * as qs from 'qs';\nimport { useIntl } from 'react-intl';\nimport { Link, useNavigate } from 'react-router-dom';\n\nimport { Layouts } from '../../../../components/Layouts/Layout';\nimport { Page } from '../../../../components/PageHelpers';\nimport { useTypedSelector } from '../../../../core/store/hooks';\nimport { useNotification } from '../../../../features/Notifications';\nimport { useTracking } from '../../../../features/Tracking';\nimport { useAPIErrorHandler } from '../../../../hooks/useAPIErrorHandler';\nimport { useOnce } from '../../../../hooks/useOnce';\nimport { useRBAC } from '../../../../hooks/useRBAC';\nimport {\n useDeleteTransferTokenMutation,\n useGetTransferTokensQuery,\n} from '../../../../services/transferTokens';\nimport { TRANSFER_TOKEN_TYPE } from '../../components/Tokens/constants';\nimport { Table } from '../../components/Tokens/Table';\n\nimport type { Data } from '@strapi/types';\n\nconst tableHeaders = [\n {\n name: 'name',\n label: {\n id: 'Settings.tokens.ListView.headers.name',\n defaultMessage: 'Name',\n },\n sortable: true,\n },\n {\n name: 'description',\n label: {\n id: 'Settings.tokens.ListView.headers.description',\n defaultMessage: 'Description',\n },\n sortable: false,\n },\n {\n name: 'createdAt',\n label: {\n id: 'Settings.tokens.ListView.headers.createdAt',\n defaultMessage: 'Created at',\n },\n sortable: false,\n },\n {\n name: 'lastUsedAt',\n label: {\n id: 'Settings.tokens.ListView.headers.lastUsedAt',\n defaultMessage: 'Last used',\n },\n sortable: false,\n },\n] as const;\n\n/* -------------------------------------------------------------------------------------------------\n * ListView\n * -----------------------------------------------------------------------------------------------*/\n\nconst ListView = () => {\n const { formatMessage } = useIntl();\n const { toggleNotification } = useNotification();\n const permissions = useTypedSelector(\n (state) => state.admin_app.permissions.settings?.['transfer-tokens']\n );\n const {\n isLoading: isLoadingRBAC,\n allowedActions: { canCreate, canDelete, canUpdate, canRead },\n } = useRBAC(permissions);\n const navigate = useNavigate();\n const { trackUsage } = useTracking();\n const { _unstableFormatAPIError: formatAPIError } = useAPIErrorHandler();\n\n React.useEffect(() => {\n navigate({ search: qs.stringify({ sort: 'name:ASC' }, { encode: false }) }, { replace: true });\n }, [navigate]);\n\n useOnce(() => {\n trackUsage('willAccessTokenList', {\n tokenType: TRANSFER_TOKEN_TYPE,\n });\n });\n\n const headers = tableHeaders.map((header) => ({\n ...header,\n label: formatMessage(header.label),\n }));\n\n const {\n data: transferTokens = [],\n isLoading: isLoadingTokens,\n error,\n } = useGetTransferTokensQuery(undefined, {\n skip: !canRead,\n });\n\n React.useEffect(() => {\n if (transferTokens) {\n trackUsage('didAccessTokenList', {\n number: transferTokens.length,\n tokenType: TRANSFER_TOKEN_TYPE,\n });\n }\n }, [trackUsage, transferTokens]);\n\n React.useEffect(() => {\n if (error) {\n toggleNotification({\n type: 'danger',\n message: formatAPIError(error),\n });\n }\n }, [error, formatAPIError, toggleNotification]);\n\n const [deleteToken] = useDeleteTransferTokenMutation();\n\n const handleDelete = async (id: Data.ID) => {\n try {\n const res = await deleteToken(id);\n\n if ('error' in res) {\n toggleNotification({\n type: 'danger',\n message: formatAPIError(res.error),\n });\n }\n } catch {\n toggleNotification({\n type: 'danger',\n message: formatMessage({ id: 'notification.error', defaultMessage: 'An error occured' }),\n });\n }\n };\n\n const isLoading = isLoadingTokens || isLoadingRBAC;\n\n return (\n <>\n <Page.Title>\n {formatMessage(\n { id: 'Settings.PageTitle', defaultMessage: 'Settings - {name}' },\n {\n name: 'Transfer Tokens',\n }\n )}\n </Page.Title>\n <Layouts.Header\n title={formatMessage({\n id: 'Settings.transferTokens.title',\n defaultMessage: 'Transfer Tokens',\n })}\n subtitle={formatMessage({\n id: 'Settings.transferTokens.description',\n defaultMessage: '\"List of generated transfer tokens\"', // TODO change this message\n })}\n primaryAction={\n canCreate ? (\n <LinkButton\n role=\"button\"\n tag={Link}\n data-testid=\"create-transfer-token-button\"\n startIcon={<Plus />}\n size=\"S\"\n onClick={() =>\n trackUsage('willAddTokenFromList', {\n tokenType: TRANSFER_TOKEN_TYPE,\n })\n }\n to=\"/settings/transfer-tokens/create\"\n >\n {formatMessage({\n id: 'Settings.transferTokens.create',\n defaultMessage: 'Create new Transfer Token',\n })}\n </LinkButton>\n ) : undefined\n }\n />\n {!canRead ? (\n <Page.NoPermissions />\n ) : (\n <Page.Main aria-busy={isLoading}>\n <Layouts.Content>\n {transferTokens.length > 0 && (\n <Table\n permissions={{ canRead, canDelete, canUpdate }}\n headers={headers}\n isLoading={isLoading}\n onConfirmDelete={handleDelete}\n tokens={transferTokens}\n tokenType={TRANSFER_TOKEN_TYPE}\n />\n )}\n {canCreate && transferTokens.length === 0 ? (\n <EmptyStateLayout\n action={\n <LinkButton\n tag={Link}\n variant=\"secondary\"\n startIcon={<Plus />}\n to=\"/settings/transfer-tokens/create\"\n >\n {formatMessage({\n id: 'Settings.transferTokens.addNewToken',\n defaultMessage: 'Add new Transfer Token',\n })}\n </LinkButton>\n }\n icon={<EmptyDocuments width=\"16rem\" />}\n content={formatMessage({\n id: 'Settings.transferTokens.addFirstToken',\n defaultMessage: 'Add your first Transfer Token',\n })}\n />\n ) : null}\n {!canCreate && transferTokens.length === 0 ? (\n <EmptyStateLayout\n icon={<EmptyDocuments width=\"16rem\" />}\n content={formatMessage({\n id: 'Settings.transferTokens.emptyStateLayout',\n defaultMessage: 'You don’t have any content yet...',\n })}\n />\n ) : null}\n </Layouts.Content>\n </Page.Main>\n )}\n </>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * ProtectedListView\n * -----------------------------------------------------------------------------------------------*/\n\nconst ProtectedListView = () => {\n const permissions = useTypedSelector(\n (state) => state.admin_app.permissions.settings?.['transfer-tokens'].main\n );\n\n return (\n <Page.Protect permissions={permissions}>\n <ListView />\n </Page.Protect>\n );\n};\n\nexport { ListView, ProtectedListView };\n"],"names":["tableHeaders","name","label","id","defaultMessage","sortable","ListView","formatMessage","useIntl","toggleNotification","useNotification","permissions","useTypedSelector","state","admin_app","settings","isLoading","isLoadingRBAC","allowedActions","canCreate","canDelete","canUpdate","canRead","useRBAC","navigate","useNavigate","trackUsage","useTracking","_unstableFormatAPIError","formatAPIError","useAPIErrorHandler","React","useEffect","search","qs","stringify","sort","encode","replace","useOnce","tokenType","TRANSFER_TOKEN_TYPE","headers","map","header","data","transferTokens","isLoadingTokens","error","useGetTransferTokensQuery","undefined","skip","number","length","type","message","deleteToken","useDeleteTransferTokenMutation","handleDelete","res","_jsxs","_Fragment","_jsx","Page","Title","Layouts","Header","title","subtitle","primaryAction","LinkButton","role","tag","Link","data-testid","startIcon","Plus","size","onClick","to","NoPermissions","Main","aria-busy","Content","Table","onConfirmDelete","tokens","EmptyStateLayout","action","variant","icon","EmptyDocuments","width","content","ProtectedListView","main","Protect"],"mappings":"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"}
1
+ {"version":3,"file":"ListView.mjs","sources":["../../../../../../../../admin/src/pages/Settings/pages/TransferTokens/ListView.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { EmptyStateLayout, LinkButton } from '@strapi/design-system';\nimport { Plus } from '@strapi/icons';\nimport { EmptyDocuments } from '@strapi/icons/symbols';\nimport * as qs from 'qs';\nimport { useIntl } from 'react-intl';\nimport { Link, useNavigate } from 'react-router-dom';\n\nimport { Layouts } from '../../../../components/Layouts/Layout';\nimport { Page } from '../../../../components/PageHelpers';\nimport { useTypedSelector } from '../../../../core/store/hooks';\nimport { useNotification } from '../../../../features/Notifications';\nimport { useTracking } from '../../../../features/Tracking';\nimport { useAPIErrorHandler } from '../../../../hooks/useAPIErrorHandler';\nimport { useOnce } from '../../../../hooks/useOnce';\nimport { useRBAC } from '../../../../hooks/useRBAC';\nimport {\n useDeleteTransferTokenMutation,\n useGetTransferTokensQuery,\n} from '../../../../services/transferTokens';\nimport { TRANSFER_TOKEN_TYPE } from '../../components/Tokens/constants';\nimport { Table } from '../../components/Tokens/Table';\n\nimport type { Data } from '@strapi/types';\n\nconst tableHeaders = [\n {\n name: 'name',\n label: {\n id: 'Settings.tokens.ListView.headers.name',\n defaultMessage: 'Name',\n },\n sortable: true,\n },\n {\n name: 'description',\n label: {\n id: 'Settings.tokens.ListView.headers.description',\n defaultMessage: 'Description',\n },\n sortable: false,\n },\n {\n name: 'createdAt',\n label: {\n id: 'Settings.tokens.ListView.headers.createdAt',\n defaultMessage: 'Created at',\n },\n sortable: false,\n },\n {\n name: 'lastUsedAt',\n label: {\n id: 'Settings.tokens.ListView.headers.lastUsedAt',\n defaultMessage: 'Last used',\n },\n sortable: false,\n },\n] as const;\n\n/* -------------------------------------------------------------------------------------------------\n * ListView\n * -----------------------------------------------------------------------------------------------*/\n\nconst ListView = () => {\n const { formatMessage } = useIntl();\n const { toggleNotification } = useNotification();\n const permissions = useTypedSelector(\n (state) => state.admin_app.permissions.settings?.['transfer-tokens']\n );\n const {\n isLoading: isLoadingRBAC,\n allowedActions: { canCreate, canDelete, canUpdate, canRead },\n } = useRBAC(permissions);\n const navigate = useNavigate();\n const { trackUsage } = useTracking();\n const { _unstableFormatAPIError: formatAPIError } = useAPIErrorHandler();\n\n React.useEffect(() => {\n navigate({ search: qs.stringify({ sort: 'name:ASC' }, { encode: false }) }, { replace: true });\n }, [navigate]);\n\n useOnce(() => {\n trackUsage('willAccessTokenList', {\n tokenType: TRANSFER_TOKEN_TYPE,\n });\n });\n\n const headers = tableHeaders.map((header) => ({\n ...header,\n label: formatMessage(header.label),\n }));\n\n const {\n data: transferTokens = [],\n isLoading: isLoadingTokens,\n error,\n } = useGetTransferTokensQuery(undefined, {\n skip: !canRead,\n });\n\n React.useEffect(() => {\n if (transferTokens) {\n trackUsage('didAccessTokenList', {\n number: transferTokens.length,\n tokenType: TRANSFER_TOKEN_TYPE,\n });\n }\n }, [trackUsage, transferTokens]);\n\n React.useEffect(() => {\n if (error) {\n toggleNotification({\n type: 'danger',\n message: formatAPIError(error),\n });\n }\n }, [error, formatAPIError, toggleNotification]);\n\n const [deleteToken] = useDeleteTransferTokenMutation();\n\n const handleDelete = async (id: Data.ID) => {\n try {\n const res = await deleteToken(id);\n\n if ('error' in res) {\n toggleNotification({\n type: 'danger',\n message: formatAPIError(res.error),\n });\n }\n } catch {\n toggleNotification({\n type: 'danger',\n message: formatMessage({ id: 'notification.error', defaultMessage: 'An error occured' }),\n });\n }\n };\n\n const isLoading = isLoadingTokens || isLoadingRBAC;\n\n return (\n <>\n <Page.Title>\n {formatMessage(\n { id: 'Settings.PageTitle', defaultMessage: 'Settings - {name}' },\n {\n name: 'Transfer Tokens',\n }\n )}\n </Page.Title>\n <Layouts.Header\n title={formatMessage({\n id: 'Settings.transferTokens.title',\n defaultMessage: 'Transfer Tokens',\n })}\n subtitle={formatMessage({\n id: 'Settings.transferTokens.description',\n defaultMessage: '\"List of generated transfer tokens\"', // TODO change this message\n })}\n primaryAction={\n canCreate ? (\n <LinkButton\n role=\"button\"\n tag={Link}\n data-testid=\"create-transfer-token-button\"\n startIcon={<Plus />}\n size=\"S\"\n onClick={() =>\n trackUsage('willAddTokenFromList', {\n tokenType: TRANSFER_TOKEN_TYPE,\n })\n }\n to=\"/settings/transfer-tokens/create\"\n fullWidth\n >\n {formatMessage({\n id: 'Settings.transferTokens.create',\n defaultMessage: 'Create new Transfer Token',\n })}\n </LinkButton>\n ) : undefined\n }\n />\n {!canRead ? (\n <Page.NoPermissions />\n ) : (\n <Page.Main aria-busy={isLoading}>\n <Layouts.Content>\n {transferTokens.length > 0 && (\n <Table\n permissions={{ canRead, canDelete, canUpdate }}\n headers={headers}\n isLoading={isLoading}\n onConfirmDelete={handleDelete}\n tokens={transferTokens}\n tokenType={TRANSFER_TOKEN_TYPE}\n />\n )}\n {canCreate && transferTokens.length === 0 ? (\n <EmptyStateLayout\n action={\n <LinkButton\n tag={Link}\n variant=\"secondary\"\n startIcon={<Plus />}\n to=\"/settings/transfer-tokens/create\"\n >\n {formatMessage({\n id: 'Settings.transferTokens.addNewToken',\n defaultMessage: 'Add new Transfer Token',\n })}\n </LinkButton>\n }\n icon={<EmptyDocuments width=\"16rem\" />}\n content={formatMessage({\n id: 'Settings.transferTokens.addFirstToken',\n defaultMessage: 'Add your first Transfer Token',\n })}\n />\n ) : null}\n {!canCreate && transferTokens.length === 0 ? (\n <EmptyStateLayout\n icon={<EmptyDocuments width=\"16rem\" />}\n content={formatMessage({\n id: 'Settings.transferTokens.emptyStateLayout',\n defaultMessage: 'You don’t have any content yet...',\n })}\n />\n ) : null}\n </Layouts.Content>\n </Page.Main>\n )}\n </>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * ProtectedListView\n * -----------------------------------------------------------------------------------------------*/\n\nconst ProtectedListView = () => {\n const permissions = useTypedSelector(\n (state) => state.admin_app.permissions.settings?.['transfer-tokens'].main\n );\n\n return (\n <Page.Protect permissions={permissions}>\n <ListView />\n </Page.Protect>\n );\n};\n\nexport { ListView, ProtectedListView };\n"],"names":["tableHeaders","name","label","id","defaultMessage","sortable","ListView","formatMessage","useIntl","toggleNotification","useNotification","permissions","useTypedSelector","state","admin_app","settings","isLoading","isLoadingRBAC","allowedActions","canCreate","canDelete","canUpdate","canRead","useRBAC","navigate","useNavigate","trackUsage","useTracking","_unstableFormatAPIError","formatAPIError","useAPIErrorHandler","React","useEffect","search","qs","stringify","sort","encode","replace","useOnce","tokenType","TRANSFER_TOKEN_TYPE","headers","map","header","data","transferTokens","isLoadingTokens","error","useGetTransferTokensQuery","undefined","skip","number","length","type","message","deleteToken","useDeleteTransferTokenMutation","handleDelete","res","_jsxs","_Fragment","_jsx","Page","Title","Layouts","Header","title","subtitle","primaryAction","LinkButton","role","tag","Link","data-testid","startIcon","Plus","size","onClick","to","fullWidth","NoPermissions","Main","aria-busy","Content","Table","onConfirmDelete","tokens","EmptyStateLayout","action","variant","icon","EmptyDocuments","width","content","ProtectedListView","main","Protect"],"mappings":"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"}
@@ -177,6 +177,7 @@ const fieldsToPick = [
177
177
  startIcon: /*#__PURE__*/ jsxRuntime.jsx(icons.Check, {}),
178
178
  loading: isSubmitting,
179
179
  type: "submit",
180
+ fullWidth: true,
180
181
  children: formatMessage({
181
182
  id: 'global.save',
182
183
  defaultMessage: 'Save'
@@ -1 +1 @@
1
- {"version":3,"file":"EditPage.js","sources":["../../../../../../../../admin/src/pages/Settings/pages/Users/EditPage.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { Box, Button, Flex, Grid, Typography } from '@strapi/design-system';\nimport { Check } from '@strapi/icons';\nimport pick from 'lodash/pick';\nimport { useIntl } from 'react-intl';\nimport { useMatch, useNavigate } from 'react-router-dom';\nimport * as yup from 'yup';\n\nimport { Update } from '../../../../../../shared/contracts/user';\nimport { Form, FormHelpers } from '../../../../components/Form';\nimport { InputRenderer } from '../../../../components/FormInputs/Renderer';\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 { useAPIErrorHandler } from '../../../../hooks/useAPIErrorHandler';\nimport { useEnterprise } from '../../../../hooks/useEnterprise';\nimport { useRBAC } from '../../../../hooks/useRBAC';\nimport { selectAdminPermissions } from '../../../../selectors';\nimport { useAdminUsers, useUpdateUserMutation } from '../../../../services/users';\nimport { isBaseQueryError } from '../../../../utils/baseQuery';\nimport { translatedErrors } from '../../../../utils/translatedErrors';\nimport { getDisplayName } from '../../../../utils/users';\n\nimport { MagicLinkCE } from './components/MagicLinkCE';\nimport { SelectRoles } from './components/SelectRoles';\nimport { COMMON_USER_SCHEMA } from './utils/validation';\n\nconst EDIT_VALIDATION_SCHEMA = yup.object().shape({\n ...COMMON_USER_SCHEMA,\n isActive: yup.bool(),\n roles: yup\n .array()\n .min(1, {\n id: translatedErrors.required.id,\n defaultMessage: 'This field is required',\n })\n .required({\n id: translatedErrors.required.id,\n defaultMessage: 'This field is required',\n }),\n});\n\nconst fieldsToPick = ['email', 'firstname', 'lastname', 'username', 'isActive', 'roles'] as const;\n\n/* -------------------------------------------------------------------------------------------------\n * EditPage\n * -----------------------------------------------------------------------------------------------*/\n\nconst EditPage = () => {\n const { formatMessage } = useIntl();\n const match = useMatch('/settings/users/:id');\n const id = match?.params?.id ?? '';\n const navigate = useNavigate();\n const { toggleNotification } = useNotification();\n const MagicLink = useEnterprise(\n MagicLinkCE,\n async () =>\n (\n await import(\n '../../../../../../ee/admin/src/pages/SettingsPage/pages/Users/components/MagicLinkEE'\n )\n ).MagicLinkEE\n );\n const {\n _unstableFormatAPIError: formatAPIError,\n _unstableFormatValidationErrors: formatValidationErrors,\n } = useAPIErrorHandler();\n\n const permissions = useTypedSelector(selectAdminPermissions);\n\n const {\n isLoading: isLoadingRBAC,\n allowedActions: { canUpdate },\n } = useRBAC({\n read: permissions.settings?.users.read ?? [],\n update: permissions.settings?.users.update ?? [],\n });\n\n const [updateUser] = useUpdateUserMutation();\n\n const {\n data,\n error,\n isLoading: isLoadingAdminUsers,\n } = useAdminUsers(\n { id },\n {\n refetchOnMountOrArgChange: true,\n }\n );\n\n const [user] = data?.users ?? [];\n\n React.useEffect(() => {\n if (error) {\n // Redirect the user to the homepage if is not allowed to read\n if (error.name === 'UnauthorizedError') {\n toggleNotification({\n type: 'info',\n message: formatMessage({\n id: 'notification.permission.not-allowed-read',\n defaultMessage: 'You are not allowed to see this document',\n }),\n });\n\n navigate('/');\n } else {\n toggleNotification({\n type: 'danger',\n message: formatAPIError(error),\n });\n }\n }\n }, [error, formatAPIError, formatMessage, navigate, toggleNotification]);\n\n const isLoading = isLoadingAdminUsers || !MagicLink || isLoadingRBAC;\n\n if (isLoading) {\n return <Page.Loading />;\n }\n\n type InitialData = Pick<Update.Request['body'], (typeof fieldsToPick)[number]> & {\n confirmPassword: string;\n password: string;\n };\n\n const initialData = {\n ...pick(user, fieldsToPick),\n roles: user.roles.map(({ id }) => id),\n password: '',\n confirmPassword: '',\n } satisfies InitialData;\n\n const handleSubmit = async (body: InitialData, actions: FormHelpers<InitialData>) => {\n const { confirmPassword: _confirmPassword, ...bodyRest } = body;\n\n const res = await updateUser({\n id,\n ...bodyRest,\n });\n\n if ('error' in res && isBaseQueryError(res.error)) {\n if (res.error.name === 'ValidationError') {\n actions.setErrors(formatValidationErrors(res.error));\n }\n\n toggleNotification({\n type: 'danger',\n message: formatAPIError(res.error),\n });\n } else {\n toggleNotification({\n type: 'success',\n message: formatMessage({ id: 'notification.success.saved', defaultMessage: 'Saved' }),\n });\n\n actions.setValues({\n ...pick(body, fieldsToPick),\n password: '',\n confirmPassword: '',\n });\n }\n };\n\n return (\n <Page.Main>\n <Page.Title>\n {formatMessage(\n { id: 'Settings.PageTitle', defaultMessage: 'Settings - {name}' },\n {\n name: 'Users',\n }\n )}\n </Page.Title>\n <Form\n method=\"PUT\"\n onSubmit={handleSubmit}\n initialValues={initialData}\n validationSchema={EDIT_VALIDATION_SCHEMA}\n >\n {({ isSubmitting, modified }) => {\n return (\n <>\n <Layouts.Header\n primaryAction={\n <Button\n disabled={isSubmitting || !canUpdate || !modified}\n startIcon={<Check />}\n loading={isSubmitting}\n type=\"submit\"\n >\n {formatMessage({ id: 'global.save', defaultMessage: 'Save' })}\n </Button>\n }\n title={formatMessage(\n {\n id: 'app.containers.Users.EditPage.header.label',\n defaultMessage: 'Edit {name}',\n },\n {\n // @ts-expect-error – issues with the Entity ID type, still.\n name: getDisplayName(initialData),\n }\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=\"../users\" />\n </Box>\n }\n />\n <Layouts.Content>\n {user?.registrationToken && (\n <Box paddingBottom={6}>\n <MagicLink registrationToken={user.registrationToken} />\n </Box>\n )}\n <Flex direction=\"column\" alignItems=\"stretch\" gap={7}>\n <Box\n background=\"neutral0\"\n hasRadius\n shadow=\"filterShadow\"\n paddingTop={6}\n paddingBottom={6}\n paddingLeft={7}\n paddingRight={7}\n >\n <Flex direction=\"column\" alignItems=\"stretch\" gap={4}>\n <Typography variant=\"delta\" tag=\"h2\">\n {formatMessage({\n id: 'app.components.Users.ModalCreateBody.block-title.details',\n defaultMessage: 'Details',\n })}\n </Typography>\n <Grid.Root gap={5}>\n {LAYOUT.map((row) =>\n row.map(({ size, label, ...field }) => {\n return (\n <Grid.Item\n key={field.name}\n m={size}\n xs={12}\n direction=\"column\"\n alignItems=\"stretch\"\n >\n <InputRenderer\n {...field}\n disabled={!canUpdate}\n label={formatMessage(label)}\n placeholder={\n 'placeholder' in field\n ? formatMessage(field.placeholder)\n : undefined\n }\n />\n </Grid.Item>\n );\n })\n )}\n </Grid.Root>\n </Flex>\n </Box>\n <Box\n background=\"neutral0\"\n hasRadius\n shadow=\"filterShadow\"\n paddingTop={6}\n paddingBottom={6}\n paddingLeft={7}\n paddingRight={7}\n >\n <Flex direction=\"column\" alignItems=\"stretch\" gap={4}>\n <Typography variant=\"delta\" tag=\"h2\">\n {formatMessage({\n id: 'global.roles',\n defaultMessage: \"User's role\",\n })}\n </Typography>\n <Grid.Root gap={5}>\n <Grid.Item col={6} xs={12} direction=\"column\" alignItems=\"stretch\">\n <SelectRoles disabled={!canUpdate} />\n </Grid.Item>\n </Grid.Root>\n </Flex>\n </Box>\n </Flex>\n </Layouts.Content>\n </>\n );\n }}\n </Form>\n </Page.Main>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * EditPage LAYOUT\n * -----------------------------------------------------------------------------------------------*/\n\nconst LAYOUT = [\n [\n {\n label: {\n id: 'Auth.form.firstname.label',\n defaultMessage: 'First name',\n },\n name: 'firstname',\n placeholder: {\n id: 'Auth.form.firstname.placeholder',\n defaultMessage: 'e.g. Kai',\n },\n type: 'string' as const,\n size: 6,\n required: true,\n },\n {\n label: {\n id: 'Auth.form.lastname.label',\n defaultMessage: 'Last name',\n },\n name: 'lastname',\n placeholder: {\n id: 'Auth.form.lastname.placeholder',\n defaultMessage: 'e.g. Doe',\n },\n type: 'string' as const,\n size: 6,\n },\n ],\n [\n {\n label: {\n id: 'Auth.form.email.label',\n defaultMessage: 'Email',\n },\n name: 'email',\n placeholder: {\n id: 'Auth.form.email.placeholder',\n defaultMessage: 'e.g. kai.doe@strapi.io',\n },\n type: 'email' as const,\n size: 6,\n required: true,\n },\n {\n label: {\n id: 'Auth.form.username.label',\n defaultMessage: 'Username',\n },\n name: 'username',\n placeholder: {\n id: 'Auth.form.username.placeholder',\n defaultMessage: 'e.g. Kai_Doe',\n },\n type: 'string' as const,\n size: 6,\n },\n ],\n [\n {\n autoComplete: 'new-password',\n label: {\n id: 'global.password',\n defaultMessage: 'Password',\n },\n name: 'password',\n type: 'password' as const,\n size: 6,\n },\n {\n autoComplete: 'new-password',\n label: {\n id: 'Auth.form.confirmPassword.label',\n defaultMessage: 'Password confirmation',\n },\n name: 'confirmPassword',\n type: 'password' as const,\n size: 6,\n },\n ],\n [\n {\n label: {\n id: 'Auth.form.active.label',\n defaultMessage: 'Active',\n },\n name: 'isActive',\n type: 'boolean' as const,\n size: 6,\n },\n ],\n];\n\nconst ProtectedEditPage = () => {\n const permissions = useTypedSelector((state) => state.admin_app.permissions.settings?.users.read);\n\n return (\n <Page.Protect permissions={permissions}>\n <EditPage />\n </Page.Protect>\n );\n};\n\nexport { EditPage, ProtectedEditPage };\n"],"names":["EDIT_VALIDATION_SCHEMA","yup","object","shape","COMMON_USER_SCHEMA","isActive","bool","roles","array","min","id","translatedErrors","required","defaultMessage","fieldsToPick","EditPage","formatMessage","useIntl","match","useMatch","params","navigate","useNavigate","toggleNotification","useNotification","MagicLink","useEnterprise","MagicLinkCE","MagicLinkEE","_unstableFormatAPIError","formatAPIError","_unstableFormatValidationErrors","formatValidationErrors","useAPIErrorHandler","permissions","useTypedSelector","selectAdminPermissions","isLoading","isLoadingRBAC","allowedActions","canUpdate","useRBAC","read","settings","users","update","updateUser","useUpdateUserMutation","data","error","isLoadingAdminUsers","useAdminUsers","refetchOnMountOrArgChange","user","React","useEffect","name","type","message","_jsx","Page","Loading","initialData","pick","map","password","confirmPassword","handleSubmit","body","actions","_confirmPassword","bodyRest","res","isBaseQueryError","setErrors","setValues","_jsxs","Main","Title","Form","method","onSubmit","initialValues","validationSchema","isSubmitting","modified","_Fragment","Layouts","Header","primaryAction","Button","disabled","startIcon","Check","loading","title","getDisplayName","navigationAction","Box","display","initial","medium","BackButton","fallback","Content","registrationToken","paddingBottom","Flex","direction","alignItems","gap","background","hasRadius","shadow","paddingTop","paddingLeft","paddingRight","Typography","variant","tag","Grid","Root","LAYOUT","row","size","label","field","Item","m","xs","InputRenderer","placeholder","undefined","col","SelectRoles","autoComplete","ProtectedEditPage","state","admin_app","Protect"],"mappings":"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"}
1
+ {"version":3,"file":"EditPage.js","sources":["../../../../../../../../admin/src/pages/Settings/pages/Users/EditPage.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { Box, Button, Flex, Grid, Typography } from '@strapi/design-system';\nimport { Check } from '@strapi/icons';\nimport pick from 'lodash/pick';\nimport { useIntl } from 'react-intl';\nimport { useMatch, useNavigate } from 'react-router-dom';\nimport * as yup from 'yup';\n\nimport { Update } from '../../../../../../shared/contracts/user';\nimport { Form, FormHelpers } from '../../../../components/Form';\nimport { InputRenderer } from '../../../../components/FormInputs/Renderer';\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 { useAPIErrorHandler } from '../../../../hooks/useAPIErrorHandler';\nimport { useEnterprise } from '../../../../hooks/useEnterprise';\nimport { useRBAC } from '../../../../hooks/useRBAC';\nimport { selectAdminPermissions } from '../../../../selectors';\nimport { useAdminUsers, useUpdateUserMutation } from '../../../../services/users';\nimport { isBaseQueryError } from '../../../../utils/baseQuery';\nimport { translatedErrors } from '../../../../utils/translatedErrors';\nimport { getDisplayName } from '../../../../utils/users';\n\nimport { MagicLinkCE } from './components/MagicLinkCE';\nimport { SelectRoles } from './components/SelectRoles';\nimport { COMMON_USER_SCHEMA } from './utils/validation';\n\nconst EDIT_VALIDATION_SCHEMA = yup.object().shape({\n ...COMMON_USER_SCHEMA,\n isActive: yup.bool(),\n roles: yup\n .array()\n .min(1, {\n id: translatedErrors.required.id,\n defaultMessage: 'This field is required',\n })\n .required({\n id: translatedErrors.required.id,\n defaultMessage: 'This field is required',\n }),\n});\n\nconst fieldsToPick = ['email', 'firstname', 'lastname', 'username', 'isActive', 'roles'] as const;\n\n/* -------------------------------------------------------------------------------------------------\n * EditPage\n * -----------------------------------------------------------------------------------------------*/\n\nconst EditPage = () => {\n const { formatMessage } = useIntl();\n const match = useMatch('/settings/users/:id');\n const id = match?.params?.id ?? '';\n const navigate = useNavigate();\n const { toggleNotification } = useNotification();\n const MagicLink = useEnterprise(\n MagicLinkCE,\n async () =>\n (\n await import(\n '../../../../../../ee/admin/src/pages/SettingsPage/pages/Users/components/MagicLinkEE'\n )\n ).MagicLinkEE\n );\n const {\n _unstableFormatAPIError: formatAPIError,\n _unstableFormatValidationErrors: formatValidationErrors,\n } = useAPIErrorHandler();\n\n const permissions = useTypedSelector(selectAdminPermissions);\n\n const {\n isLoading: isLoadingRBAC,\n allowedActions: { canUpdate },\n } = useRBAC({\n read: permissions.settings?.users.read ?? [],\n update: permissions.settings?.users.update ?? [],\n });\n\n const [updateUser] = useUpdateUserMutation();\n\n const {\n data,\n error,\n isLoading: isLoadingAdminUsers,\n } = useAdminUsers(\n { id },\n {\n refetchOnMountOrArgChange: true,\n }\n );\n\n const [user] = data?.users ?? [];\n\n React.useEffect(() => {\n if (error) {\n // Redirect the user to the homepage if is not allowed to read\n if (error.name === 'UnauthorizedError') {\n toggleNotification({\n type: 'info',\n message: formatMessage({\n id: 'notification.permission.not-allowed-read',\n defaultMessage: 'You are not allowed to see this document',\n }),\n });\n\n navigate('/');\n } else {\n toggleNotification({\n type: 'danger',\n message: formatAPIError(error),\n });\n }\n }\n }, [error, formatAPIError, formatMessage, navigate, toggleNotification]);\n\n const isLoading = isLoadingAdminUsers || !MagicLink || isLoadingRBAC;\n\n if (isLoading) {\n return <Page.Loading />;\n }\n\n type InitialData = Pick<Update.Request['body'], (typeof fieldsToPick)[number]> & {\n confirmPassword: string;\n password: string;\n };\n\n const initialData = {\n ...pick(user, fieldsToPick),\n roles: user.roles.map(({ id }) => id),\n password: '',\n confirmPassword: '',\n } satisfies InitialData;\n\n const handleSubmit = async (body: InitialData, actions: FormHelpers<InitialData>) => {\n const { confirmPassword: _confirmPassword, ...bodyRest } = body;\n\n const res = await updateUser({\n id,\n ...bodyRest,\n });\n\n if ('error' in res && isBaseQueryError(res.error)) {\n if (res.error.name === 'ValidationError') {\n actions.setErrors(formatValidationErrors(res.error));\n }\n\n toggleNotification({\n type: 'danger',\n message: formatAPIError(res.error),\n });\n } else {\n toggleNotification({\n type: 'success',\n message: formatMessage({ id: 'notification.success.saved', defaultMessage: 'Saved' }),\n });\n\n actions.setValues({\n ...pick(body, fieldsToPick),\n password: '',\n confirmPassword: '',\n });\n }\n };\n\n return (\n <Page.Main>\n <Page.Title>\n {formatMessage(\n { id: 'Settings.PageTitle', defaultMessage: 'Settings - {name}' },\n {\n name: 'Users',\n }\n )}\n </Page.Title>\n <Form\n method=\"PUT\"\n onSubmit={handleSubmit}\n initialValues={initialData}\n validationSchema={EDIT_VALIDATION_SCHEMA}\n >\n {({ isSubmitting, modified }) => {\n return (\n <>\n <Layouts.Header\n primaryAction={\n <Button\n disabled={isSubmitting || !canUpdate || !modified}\n startIcon={<Check />}\n loading={isSubmitting}\n type=\"submit\"\n fullWidth\n >\n {formatMessage({ id: 'global.save', defaultMessage: 'Save' })}\n </Button>\n }\n title={formatMessage(\n {\n id: 'app.containers.Users.EditPage.header.label',\n defaultMessage: 'Edit {name}',\n },\n {\n // @ts-expect-error – issues with the Entity ID type, still.\n name: getDisplayName(initialData),\n }\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=\"../users\" />\n </Box>\n }\n />\n <Layouts.Content>\n {user?.registrationToken && (\n <Box paddingBottom={6}>\n <MagicLink registrationToken={user.registrationToken} />\n </Box>\n )}\n <Flex direction=\"column\" alignItems=\"stretch\" gap={7}>\n <Box\n background=\"neutral0\"\n hasRadius\n shadow=\"filterShadow\"\n paddingTop={6}\n paddingBottom={6}\n paddingLeft={7}\n paddingRight={7}\n >\n <Flex direction=\"column\" alignItems=\"stretch\" gap={4}>\n <Typography variant=\"delta\" tag=\"h2\">\n {formatMessage({\n id: 'app.components.Users.ModalCreateBody.block-title.details',\n defaultMessage: 'Details',\n })}\n </Typography>\n <Grid.Root gap={5}>\n {LAYOUT.map((row) =>\n row.map(({ size, label, ...field }) => {\n return (\n <Grid.Item\n key={field.name}\n m={size}\n xs={12}\n direction=\"column\"\n alignItems=\"stretch\"\n >\n <InputRenderer\n {...field}\n disabled={!canUpdate}\n label={formatMessage(label)}\n placeholder={\n 'placeholder' in field\n ? formatMessage(field.placeholder)\n : undefined\n }\n />\n </Grid.Item>\n );\n })\n )}\n </Grid.Root>\n </Flex>\n </Box>\n <Box\n background=\"neutral0\"\n hasRadius\n shadow=\"filterShadow\"\n paddingTop={6}\n paddingBottom={6}\n paddingLeft={7}\n paddingRight={7}\n >\n <Flex direction=\"column\" alignItems=\"stretch\" gap={4}>\n <Typography variant=\"delta\" tag=\"h2\">\n {formatMessage({\n id: 'global.roles',\n defaultMessage: \"User's role\",\n })}\n </Typography>\n <Grid.Root gap={5}>\n <Grid.Item col={6} xs={12} direction=\"column\" alignItems=\"stretch\">\n <SelectRoles disabled={!canUpdate} />\n </Grid.Item>\n </Grid.Root>\n </Flex>\n </Box>\n </Flex>\n </Layouts.Content>\n </>\n );\n }}\n </Form>\n </Page.Main>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * EditPage LAYOUT\n * -----------------------------------------------------------------------------------------------*/\n\nconst LAYOUT = [\n [\n {\n label: {\n id: 'Auth.form.firstname.label',\n defaultMessage: 'First name',\n },\n name: 'firstname',\n placeholder: {\n id: 'Auth.form.firstname.placeholder',\n defaultMessage: 'e.g. Kai',\n },\n type: 'string' as const,\n size: 6,\n required: true,\n },\n {\n label: {\n id: 'Auth.form.lastname.label',\n defaultMessage: 'Last name',\n },\n name: 'lastname',\n placeholder: {\n id: 'Auth.form.lastname.placeholder',\n defaultMessage: 'e.g. Doe',\n },\n type: 'string' as const,\n size: 6,\n },\n ],\n [\n {\n label: {\n id: 'Auth.form.email.label',\n defaultMessage: 'Email',\n },\n name: 'email',\n placeholder: {\n id: 'Auth.form.email.placeholder',\n defaultMessage: 'e.g. kai.doe@strapi.io',\n },\n type: 'email' as const,\n size: 6,\n required: true,\n },\n {\n label: {\n id: 'Auth.form.username.label',\n defaultMessage: 'Username',\n },\n name: 'username',\n placeholder: {\n id: 'Auth.form.username.placeholder',\n defaultMessage: 'e.g. Kai_Doe',\n },\n type: 'string' as const,\n size: 6,\n },\n ],\n [\n {\n autoComplete: 'new-password',\n label: {\n id: 'global.password',\n defaultMessage: 'Password',\n },\n name: 'password',\n type: 'password' as const,\n size: 6,\n },\n {\n autoComplete: 'new-password',\n label: {\n id: 'Auth.form.confirmPassword.label',\n defaultMessage: 'Password confirmation',\n },\n name: 'confirmPassword',\n type: 'password' as const,\n size: 6,\n },\n ],\n [\n {\n label: {\n id: 'Auth.form.active.label',\n defaultMessage: 'Active',\n },\n name: 'isActive',\n type: 'boolean' as const,\n size: 6,\n },\n ],\n];\n\nconst ProtectedEditPage = () => {\n const permissions = useTypedSelector((state) => state.admin_app.permissions.settings?.users.read);\n\n return (\n <Page.Protect permissions={permissions}>\n <EditPage />\n </Page.Protect>\n );\n};\n\nexport { EditPage, ProtectedEditPage };\n"],"names":["EDIT_VALIDATION_SCHEMA","yup","object","shape","COMMON_USER_SCHEMA","isActive","bool","roles","array","min","id","translatedErrors","required","defaultMessage","fieldsToPick","EditPage","formatMessage","useIntl","match","useMatch","params","navigate","useNavigate","toggleNotification","useNotification","MagicLink","useEnterprise","MagicLinkCE","MagicLinkEE","_unstableFormatAPIError","formatAPIError","_unstableFormatValidationErrors","formatValidationErrors","useAPIErrorHandler","permissions","useTypedSelector","selectAdminPermissions","isLoading","isLoadingRBAC","allowedActions","canUpdate","useRBAC","read","settings","users","update","updateUser","useUpdateUserMutation","data","error","isLoadingAdminUsers","useAdminUsers","refetchOnMountOrArgChange","user","React","useEffect","name","type","message","_jsx","Page","Loading","initialData","pick","map","password","confirmPassword","handleSubmit","body","actions","_confirmPassword","bodyRest","res","isBaseQueryError","setErrors","setValues","_jsxs","Main","Title","Form","method","onSubmit","initialValues","validationSchema","isSubmitting","modified","_Fragment","Layouts","Header","primaryAction","Button","disabled","startIcon","Check","loading","fullWidth","title","getDisplayName","navigationAction","Box","display","initial","medium","BackButton","fallback","Content","registrationToken","paddingBottom","Flex","direction","alignItems","gap","background","hasRadius","shadow","paddingTop","paddingLeft","paddingRight","Typography","variant","tag","Grid","Root","LAYOUT","row","size","label","field","Item","m","xs","InputRenderer","placeholder","undefined","col","SelectRoles","autoComplete","ProtectedEditPage","state","admin_app","Protect"],"mappings":"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"}
@@ -155,6 +155,7 @@ const fieldsToPick = [
155
155
  startIcon: /*#__PURE__*/ jsx(Check, {}),
156
156
  loading: isSubmitting,
157
157
  type: "submit",
158
+ fullWidth: true,
158
159
  children: formatMessage({
159
160
  id: 'global.save',
160
161
  defaultMessage: 'Save'