@strapi/admin 5.58.0 → 5.59.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 (249) hide show
  1. package/dist/admin/admin/src/StrapiApp.js.map +1 -1
  2. package/dist/admin/admin/src/StrapiApp.mjs.map +1 -1
  3. package/dist/admin/admin/src/components/ConfirmDialog.js +10 -9
  4. package/dist/admin/admin/src/components/ConfirmDialog.js.map +1 -1
  5. package/dist/admin/admin/src/components/ConfirmDialog.mjs +10 -9
  6. package/dist/admin/admin/src/components/ConfirmDialog.mjs.map +1 -1
  7. package/dist/admin/admin/src/components/Filters.js +57 -12
  8. package/dist/admin/admin/src/components/Filters.js.map +1 -1
  9. package/dist/admin/admin/src/components/Filters.mjs +57 -12
  10. package/dist/admin/admin/src/components/Filters.mjs.map +1 -1
  11. package/dist/admin/admin/src/components/Form.js +3 -1
  12. package/dist/admin/admin/src/components/Form.js.map +1 -1
  13. package/dist/admin/admin/src/components/Form.mjs +3 -1
  14. package/dist/admin/admin/src/components/Form.mjs.map +1 -1
  15. package/dist/admin/admin/src/components/FormInputs/Enumeration.js +2 -1
  16. package/dist/admin/admin/src/components/FormInputs/Enumeration.js.map +1 -1
  17. package/dist/admin/admin/src/components/FormInputs/Enumeration.mjs +2 -1
  18. package/dist/admin/admin/src/components/FormInputs/Enumeration.mjs.map +1 -1
  19. package/dist/admin/admin/src/components/LeftMenu.js +5 -1
  20. package/dist/admin/admin/src/components/LeftMenu.js.map +1 -1
  21. package/dist/admin/admin/src/components/LeftMenu.mjs +5 -1
  22. package/dist/admin/admin/src/components/LeftMenu.mjs.map +1 -1
  23. package/dist/admin/admin/src/components/PageHelpers.js +2 -1
  24. package/dist/admin/admin/src/components/PageHelpers.js.map +1 -1
  25. package/dist/admin/admin/src/components/PageHelpers.mjs +2 -1
  26. package/dist/admin/admin/src/components/PageHelpers.mjs.map +1 -1
  27. package/dist/admin/admin/src/components/Pagination.js +7 -6
  28. package/dist/admin/admin/src/components/Pagination.js.map +1 -1
  29. package/dist/admin/admin/src/components/Pagination.mjs +7 -6
  30. package/dist/admin/admin/src/components/Pagination.mjs.map +1 -1
  31. package/dist/admin/admin/src/components/RelativeTime.js +2 -1
  32. package/dist/admin/admin/src/components/RelativeTime.js.map +1 -1
  33. package/dist/admin/admin/src/components/RelativeTime.mjs +2 -1
  34. package/dist/admin/admin/src/components/RelativeTime.mjs.map +1 -1
  35. package/dist/admin/admin/src/components/SubNav.js +6 -12
  36. package/dist/admin/admin/src/components/SubNav.js.map +1 -1
  37. package/dist/admin/admin/src/components/SubNav.mjs +7 -13
  38. package/dist/admin/admin/src/components/SubNav.mjs.map +1 -1
  39. package/dist/admin/admin/src/components/Table.js +3 -1
  40. package/dist/admin/admin/src/components/Table.js.map +1 -1
  41. package/dist/admin/admin/src/components/Table.mjs +3 -1
  42. package/dist/admin/admin/src/components/Table.mjs.map +1 -1
  43. package/dist/admin/admin/src/components/UpsellBanner.js.map +1 -1
  44. package/dist/admin/admin/src/components/UpsellBanner.mjs.map +1 -1
  45. package/dist/admin/admin/src/components/WidgetRoot.js.map +1 -1
  46. package/dist/admin/admin/src/components/WidgetRoot.mjs.map +1 -1
  47. package/dist/admin/admin/src/constants.js.map +1 -1
  48. package/dist/admin/admin/src/constants.mjs.map +1 -1
  49. package/dist/admin/admin/src/core/apis/Plugin.js.map +1 -1
  50. package/dist/admin/admin/src/core/apis/Plugin.mjs.map +1 -1
  51. package/dist/admin/admin/src/features/Auth.js +2 -1
  52. package/dist/admin/admin/src/features/Auth.js.map +1 -1
  53. package/dist/admin/admin/src/features/Auth.mjs +2 -1
  54. package/dist/admin/admin/src/features/Auth.mjs.map +1 -1
  55. package/dist/admin/admin/src/features/StrapiApp.js.map +1 -1
  56. package/dist/admin/admin/src/features/StrapiApp.mjs.map +1 -1
  57. package/dist/admin/admin/src/features/Tracking.js.map +1 -1
  58. package/dist/admin/admin/src/features/Tracking.mjs.map +1 -1
  59. package/dist/admin/admin/src/pages/Home/components/FreeTrialEndedModal.js.map +1 -1
  60. package/dist/admin/admin/src/pages/Home/components/FreeTrialEndedModal.mjs.map +1 -1
  61. package/dist/admin/admin/src/pages/ProfilePage.js +2 -2
  62. package/dist/admin/admin/src/pages/ProfilePage.js.map +1 -1
  63. package/dist/admin/admin/src/pages/ProfilePage.mjs +2 -2
  64. package/dist/admin/admin/src/pages/ProfilePage.mjs.map +1 -1
  65. package/dist/admin/admin/src/pages/Settings/components/SettingsNav.js.map +1 -1
  66. package/dist/admin/admin/src/pages/Settings/components/SettingsNav.mjs.map +1 -1
  67. package/dist/admin/admin/src/pages/Settings/components/Tokens/FormApiTokenContainer.js +4 -1
  68. package/dist/admin/admin/src/pages/Settings/components/Tokens/FormApiTokenContainer.js.map +1 -1
  69. package/dist/admin/admin/src/pages/Settings/components/Tokens/FormApiTokenContainer.mjs +4 -1
  70. package/dist/admin/admin/src/pages/Settings/components/Tokens/FormApiTokenContainer.mjs.map +1 -1
  71. package/dist/admin/admin/src/pages/Settings/components/Tokens/Table.js +3 -1
  72. package/dist/admin/admin/src/pages/Settings/components/Tokens/Table.js.map +1 -1
  73. package/dist/admin/admin/src/pages/Settings/components/Tokens/Table.mjs +3 -1
  74. package/dist/admin/admin/src/pages/Settings/components/Tokens/Table.mjs.map +1 -1
  75. package/dist/admin/admin/src/pages/Settings/components/Tokens/TokenTypeSelect.js +2 -1
  76. package/dist/admin/admin/src/pages/Settings/components/Tokens/TokenTypeSelect.js.map +1 -1
  77. package/dist/admin/admin/src/pages/Settings/components/Tokens/TokenTypeSelect.mjs +2 -1
  78. package/dist/admin/admin/src/pages/Settings/components/Tokens/TokenTypeSelect.mjs.map +1 -1
  79. package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/EditView/components/BoundRoute.js +6 -5
  80. package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/EditView/components/BoundRoute.js.map +1 -1
  81. package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/EditView/components/BoundRoute.mjs +6 -5
  82. package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/EditView/components/BoundRoute.mjs.map +1 -1
  83. package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/EditView/components/CollapsableContentType.js +2 -1
  84. package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/EditView/components/CollapsableContentType.js.map +1 -1
  85. package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/EditView/components/CollapsableContentType.mjs +2 -1
  86. package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/EditView/components/CollapsableContentType.mjs.map +1 -1
  87. package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/EditView/utils/transformPermissionsData.js +4 -4
  88. package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/EditView/utils/transformPermissionsData.js.map +1 -1
  89. package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/EditView/utils/transformPermissionsData.mjs +4 -4
  90. package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/EditView/utils/transformPermissionsData.mjs.map +1 -1
  91. package/dist/admin/admin/src/pages/Settings/pages/ApplicationInfo/ApplicationInfoPage.js +1 -2
  92. package/dist/admin/admin/src/pages/Settings/pages/ApplicationInfo/ApplicationInfoPage.js.map +1 -1
  93. package/dist/admin/admin/src/pages/Settings/pages/ApplicationInfo/ApplicationInfoPage.mjs +1 -2
  94. package/dist/admin/admin/src/pages/Settings/pages/ApplicationInfo/ApplicationInfoPage.mjs.map +1 -1
  95. package/dist/admin/admin/src/pages/Settings/pages/ApplicationInfo/components/LogoInput.js.map +1 -1
  96. package/dist/admin/admin/src/pages/Settings/pages/ApplicationInfo/components/LogoInput.mjs.map +1 -1
  97. package/dist/admin/admin/src/pages/Settings/pages/ApplicationInfo/components/PlanCard.js.map +1 -1
  98. package/dist/admin/admin/src/pages/Settings/pages/ApplicationInfo/components/PlanCard.mjs.map +1 -1
  99. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/CollapsePropertyMatrix.js +9 -4
  100. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/CollapsePropertyMatrix.js.map +1 -1
  101. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/CollapsePropertyMatrix.mjs +9 -4
  102. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/CollapsePropertyMatrix.mjs.map +1 -1
  103. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/ConditionsModal.js +15 -9
  104. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/ConditionsModal.js.map +1 -1
  105. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/ConditionsModal.mjs +15 -9
  106. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/ConditionsModal.mjs.map +1 -1
  107. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/ContentTypeCollapses.js +5 -2
  108. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/ContentTypeCollapses.js.map +1 -1
  109. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/ContentTypeCollapses.mjs +5 -2
  110. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/ContentTypeCollapses.mjs.map +1 -1
  111. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/GlobalActions.js +2 -1
  112. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/GlobalActions.js.map +1 -1
  113. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/GlobalActions.mjs +2 -1
  114. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/GlobalActions.mjs.map +1 -1
  115. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/Permissions.js +2 -1
  116. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/Permissions.js.map +1 -1
  117. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/Permissions.mjs +2 -1
  118. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/Permissions.mjs.map +1 -1
  119. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/PluginsAndSettings.js +2 -1
  120. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/PluginsAndSettings.js.map +1 -1
  121. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/PluginsAndSettings.mjs +2 -1
  122. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/PluginsAndSettings.mjs.map +1 -1
  123. package/dist/admin/admin/src/pages/Settings/pages/Roles/hooks/usePermissionsDataManager.js.map +1 -1
  124. package/dist/admin/admin/src/pages/Settings/pages/Roles/hooks/usePermissionsDataManager.mjs.map +1 -1
  125. package/dist/admin/admin/src/pages/Settings/pages/TransferTokens/EditView.js +3 -1
  126. package/dist/admin/admin/src/pages/Settings/pages/TransferTokens/EditView.js.map +1 -1
  127. package/dist/admin/admin/src/pages/Settings/pages/TransferTokens/EditView.mjs +3 -1
  128. package/dist/admin/admin/src/pages/Settings/pages/TransferTokens/EditView.mjs.map +1 -1
  129. package/dist/admin/admin/src/pages/Settings/pages/Users/EditPage.js.map +1 -1
  130. package/dist/admin/admin/src/pages/Settings/pages/Users/EditPage.mjs.map +1 -1
  131. package/dist/admin/admin/src/pages/Settings/pages/Users/ListPage.js.map +1 -1
  132. package/dist/admin/admin/src/pages/Settings/pages/Users/ListPage.mjs.map +1 -1
  133. package/dist/admin/admin/src/pages/Settings/pages/Users/components/NewUserForm.js.map +1 -1
  134. package/dist/admin/admin/src/pages/Settings/pages/Users/components/NewUserForm.mjs.map +1 -1
  135. package/dist/admin/admin/src/pages/Settings/pages/Webhooks/components/Events.js +4 -1
  136. package/dist/admin/admin/src/pages/Settings/pages/Webhooks/components/Events.js.map +1 -1
  137. package/dist/admin/admin/src/pages/Settings/pages/Webhooks/components/Events.mjs +4 -1
  138. package/dist/admin/admin/src/pages/Settings/pages/Webhooks/components/Events.mjs.map +1 -1
  139. package/dist/admin/admin/src/pages/Settings/pages/Webhooks/components/HeadersInput.js +18 -3
  140. package/dist/admin/admin/src/pages/Settings/pages/Webhooks/components/HeadersInput.js.map +1 -1
  141. package/dist/admin/admin/src/pages/Settings/pages/Webhooks/components/HeadersInput.mjs +18 -3
  142. package/dist/admin/admin/src/pages/Settings/pages/Webhooks/components/HeadersInput.mjs.map +1 -1
  143. package/dist/admin/admin/src/pages/Settings/pages/Webhooks/components/WebhookForm.js.map +1 -1
  144. package/dist/admin/admin/src/pages/Settings/pages/Webhooks/components/WebhookForm.mjs.map +1 -1
  145. package/dist/admin/admin/src/router.js.map +1 -1
  146. package/dist/admin/admin/src/router.mjs.map +1 -1
  147. package/dist/admin/admin/src/services/users.js.map +1 -1
  148. package/dist/admin/admin/src/services/users.mjs.map +1 -1
  149. package/dist/admin/admin/src/translations/eu.json.js +1 -1
  150. package/dist/admin/admin/src/translations/eu.json.mjs +1 -1
  151. package/dist/admin/admin/src/utils/cookies.js +7 -6
  152. package/dist/admin/admin/src/utils/cookies.js.map +1 -1
  153. package/dist/admin/admin/src/utils/cookies.mjs +7 -6
  154. package/dist/admin/admin/src/utils/cookies.mjs.map +1 -1
  155. package/dist/admin/admin/tests/utils.js +2 -1
  156. package/dist/admin/admin/tests/utils.js.map +1 -1
  157. package/dist/admin/admin/tests/utils.mjs +2 -1
  158. package/dist/admin/admin/tests/utils.mjs.map +1 -1
  159. package/dist/admin/shared/utils/auth-cookie-path.js +13 -10
  160. package/dist/admin/shared/utils/auth-cookie-path.js.map +1 -1
  161. package/dist/admin/shared/utils/auth-cookie-path.mjs +13 -10
  162. package/dist/admin/shared/utils/auth-cookie-path.mjs.map +1 -1
  163. package/dist/admin/shared/utils/get-project-type.js +3 -3
  164. package/dist/admin/shared/utils/get-project-type.js.map +1 -1
  165. package/dist/admin/shared/utils/get-project-type.mjs +3 -3
  166. package/dist/admin/shared/utils/get-project-type.mjs.map +1 -1
  167. package/dist/admin/src/components/Filters.d.ts +1 -1
  168. package/dist/admin/src/components/Form.d.ts +1 -1
  169. package/dist/admin/src/pages/Settings/pages/ApiTokens/EditView/components/BoundRoute.d.ts +1 -1
  170. package/dist/admin/src/utils/cookies.d.ts +7 -6
  171. package/dist/ee/server/src/services/seat-enforcement.d.ts.map +1 -1
  172. package/dist/ee/server/src/validation/role.d.ts.map +1 -1
  173. package/dist/server/ee/server/src/audit-logs/utils/csv.js +3 -3
  174. package/dist/server/ee/server/src/audit-logs/utils/csv.js.map +1 -1
  175. package/dist/server/ee/server/src/audit-logs/utils/csv.mjs +3 -3
  176. package/dist/server/ee/server/src/audit-logs/utils/csv.mjs.map +1 -1
  177. package/dist/server/ee/server/src/services/seat-enforcement.js.map +1 -1
  178. package/dist/server/ee/server/src/services/seat-enforcement.mjs.map +1 -1
  179. package/dist/server/ee/server/src/validation/role.js +4 -2
  180. package/dist/server/ee/server/src/validation/role.js.map +1 -1
  181. package/dist/server/ee/server/src/validation/role.mjs +4 -2
  182. package/dist/server/ee/server/src/validation/role.mjs.map +1 -1
  183. package/dist/server/server/src/ai/services/ai.js.map +1 -1
  184. package/dist/server/server/src/ai/services/ai.mjs.map +1 -1
  185. package/dist/server/server/src/controllers/admin.js +11 -12
  186. package/dist/server/server/src/controllers/admin.js.map +1 -1
  187. package/dist/server/server/src/controllers/admin.mjs +11 -12
  188. package/dist/server/server/src/controllers/admin.mjs.map +1 -1
  189. package/dist/server/server/src/domain/permission/index.js.map +1 -1
  190. package/dist/server/server/src/domain/permission/index.mjs.map +1 -1
  191. package/dist/server/server/src/services/api-token.js +4 -8
  192. package/dist/server/server/src/services/api-token.js.map +1 -1
  193. package/dist/server/server/src/services/api-token.mjs +4 -8
  194. package/dist/server/server/src/services/api-token.mjs.map +1 -1
  195. package/dist/server/server/src/services/constants.js +4 -0
  196. package/dist/server/server/src/services/constants.js.map +1 -1
  197. package/dist/server/server/src/services/constants.mjs +4 -0
  198. package/dist/server/server/src/services/constants.mjs.map +1 -1
  199. package/dist/server/server/src/services/permission/rename-fields.js.map +1 -1
  200. package/dist/server/server/src/services/permission/rename-fields.mjs.map +1 -1
  201. package/dist/server/server/src/services/permission/sections-builder/handlers.js.map +1 -1
  202. package/dist/server/server/src/services/permission/sections-builder/handlers.mjs.map +1 -1
  203. package/dist/server/server/src/services/role.js +8 -5
  204. package/dist/server/server/src/services/role.js.map +1 -1
  205. package/dist/server/server/src/services/role.mjs +8 -5
  206. package/dist/server/server/src/services/role.mjs.map +1 -1
  207. package/dist/server/server/src/validation/admin-tokens.js +4 -4
  208. package/dist/server/server/src/validation/admin-tokens.js.map +1 -1
  209. package/dist/server/server/src/validation/admin-tokens.mjs +4 -4
  210. package/dist/server/server/src/validation/admin-tokens.mjs.map +1 -1
  211. package/dist/server/server/src/validation/api-tokens.js +4 -4
  212. package/dist/server/server/src/validation/api-tokens.js.map +1 -1
  213. package/dist/server/server/src/validation/api-tokens.mjs +4 -4
  214. package/dist/server/server/src/validation/api-tokens.mjs.map +1 -1
  215. package/dist/server/server/src/validation/role.js +6 -4
  216. package/dist/server/server/src/validation/role.js.map +1 -1
  217. package/dist/server/server/src/validation/role.mjs +6 -4
  218. package/dist/server/server/src/validation/role.mjs.map +1 -1
  219. package/dist/server/server/src/validation/transfer/token.js +4 -4
  220. package/dist/server/server/src/validation/transfer/token.js.map +1 -1
  221. package/dist/server/server/src/validation/transfer/token.mjs +4 -4
  222. package/dist/server/server/src/validation/transfer/token.mjs.map +1 -1
  223. package/dist/server/shared/utils/auth-cookie-path.js +13 -10
  224. package/dist/server/shared/utils/auth-cookie-path.js.map +1 -1
  225. package/dist/server/shared/utils/auth-cookie-path.mjs +13 -10
  226. package/dist/server/shared/utils/auth-cookie-path.mjs.map +1 -1
  227. package/dist/server/shared/utils/get-project-type.js +3 -3
  228. package/dist/server/shared/utils/get-project-type.js.map +1 -1
  229. package/dist/server/shared/utils/get-project-type.mjs +3 -3
  230. package/dist/server/shared/utils/get-project-type.mjs.map +1 -1
  231. package/dist/server/shared/utils/session-auth.js +70 -3
  232. package/dist/server/shared/utils/session-auth.js.map +1 -1
  233. package/dist/server/shared/utils/session-auth.mjs +70 -4
  234. package/dist/server/shared/utils/session-auth.mjs.map +1 -1
  235. package/dist/server/src/ai/services/ai.d.ts.map +1 -1
  236. package/dist/server/src/controllers/admin.d.ts.map +1 -1
  237. package/dist/server/src/domain/permission/index.d.ts.map +1 -1
  238. package/dist/server/src/services/constants.d.ts +2 -0
  239. package/dist/server/src/services/constants.d.ts.map +1 -1
  240. package/dist/server/src/services/permission/rename-fields.d.ts.map +1 -1
  241. package/dist/server/src/services/permission/sections-builder/handlers.d.ts.map +1 -1
  242. package/dist/server/src/services/role.d.ts.map +1 -1
  243. package/dist/server/src/validation/role.d.ts.map +1 -1
  244. package/dist/shared/contracts/transfer.d.ts.map +1 -1
  245. package/dist/shared/utils/auth-cookie-path.d.ts +13 -10
  246. package/dist/shared/utils/auth-cookie-path.d.ts.map +1 -1
  247. package/dist/shared/utils/session-auth.d.ts +16 -0
  248. package/dist/shared/utils/session-auth.d.ts.map +1 -1
  249. package/package.json +7 -7
@@ -1 +1 @@
1
- {"version":3,"file":"Table.mjs","sources":["../../../../../../../../admin/src/pages/Settings/components/Tokens/Table.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport {\n Box,\n Flex,\n IconButton,\n Typography,\n useCollator,\n Dialog,\n LinkButton,\n} from '@strapi/design-system';\nimport { Pencil, Trash } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\nimport { NavLink, useNavigate } from 'react-router-dom';\nimport { styled } from 'styled-components';\n\nimport { ApiToken } from '../../../../../../shared/contracts/api-token';\nimport { SanitizedTransferToken } from '../../../../../../shared/contracts/transfer';\nimport { ConfirmDialog } from '../../../../components/ConfirmDialog';\nimport { tours } from '../../../../components/GuidedTour/Tours';\nimport { RelativeTime } from '../../../../components/RelativeTime';\nimport { Table as TableImpl } from '../../../../components/Table';\nimport { useTracking } from '../../../../features/Tracking';\nimport { useQueryParams } from '../../../../hooks/useQueryParams';\n\nimport type { AdminTokenOwner } from '../../../../../../shared/contracts/shared';\nimport type { Data } from '@strapi/types';\n\nconst formatAdminUserName = (\n owner: Pick<AdminTokenOwner, 'firstname' | 'lastname' | 'email' | 'username'>\n): string => {\n const full = [owner.firstname, owner.lastname].filter(Boolean).join(' ');\n return full || owner.username || owner.email || '';\n};\n\n/* -------------------------------------------------------------------------------------------------\n * Table\n * -----------------------------------------------------------------------------------------------*/\n\ninterface TableProps\n extends Pick<TableImpl.Props<SanitizedTransferToken | ApiToken>, 'headers' | 'isLoading'> {\n onConfirmDelete: (id: Data.ID) => void;\n permissions: {\n canRead: boolean;\n canDelete: boolean;\n canUpdate: boolean;\n };\n tokens: SanitizedTransferToken[] | ApiToken[];\n tokenType: 'api-token' | 'transfer-token';\n showOwner?: boolean;\n}\n\nconst Table = ({\n permissions,\n headers = [],\n isLoading = false,\n tokens = [],\n onConfirmDelete,\n tokenType,\n showOwner = false,\n}: TableProps) => {\n const [{ query }] = useQueryParams<{ sort?: string }>();\n const { formatMessage, locale } = useIntl();\n const [, sortOrder] = query && query.sort ? query.sort.split(':') : [undefined, 'ASC'];\n const navigate = useNavigate();\n const { trackUsage } = useTracking();\n const formatter = useCollator(locale);\n\n const sortedTokens = [...tokens].sort((a, b) => {\n return sortOrder === 'DESC'\n ? formatter.compare(b.name, a.name)\n : formatter.compare(a.name, b.name);\n });\n\n const { canDelete, canUpdate, canRead } = permissions;\n\n const handleRowClick = (id: Data.ID) => () => {\n if (canRead) {\n trackUsage('willEditTokenFromList', {\n tokenType,\n });\n navigate(id.toString());\n }\n };\n\n return (\n <TableImpl.Root headers={headers} rows={sortedTokens} isLoading={isLoading}>\n <TableImpl.Content>\n <TableImpl.Head>\n {headers.map((header) => (\n <TableImpl.HeaderCell key={header.name} {...header} />\n ))}\n </TableImpl.Head>\n <TableImpl.Empty />\n <TableImpl.Loading />\n <TableImpl.Body>\n {sortedTokens.map((token) => {\n const GuidedTourTooltip =\n token.name === 'Read Only' ? tours.apiTokens.ManageAPIToken : React.Fragment;\n return (\n <TableImpl.Row key={token.id} onClick={handleRowClick(token.id)}>\n <TableImpl.Cell maxWidth=\"25rem\">\n <Typography textColor=\"neutral800\" fontWeight=\"bold\" ellipsis>\n {token.name}\n </Typography>\n </TableImpl.Cell>\n <TableImpl.Cell maxWidth=\"25rem\">\n <Typography textColor=\"neutral800\" ellipsis>\n {token.description}\n </Typography>\n </TableImpl.Cell>\n <TableImpl.Cell>\n <Typography textColor=\"neutral800\">\n {/* @ts-expect-error One of the tokens doesn't have createdAt */}\n <RelativeTime timestamp={new Date(token.createdAt)} />\n </Typography>\n </TableImpl.Cell>\n <TableImpl.Cell>\n {token.lastUsedAt && (\n <Typography textColor=\"neutral800\">\n <RelativeTime\n timestamp={new Date(token.lastUsedAt)}\n customIntervals={[\n {\n unit: 'hours',\n threshold: 1,\n text: formatMessage({\n id: 'Settings.apiTokens.lastHour',\n defaultMessage: 'last hour',\n }),\n },\n ]}\n />\n </Typography>\n )}\n </TableImpl.Cell>\n {showOwner === true &&\n (() => {\n const apiToken = token as ApiToken;\n const owner = apiToken.kind === 'admin' ? apiToken.adminUserOwner : undefined;\n const ownerName =\n owner !== undefined && owner !== null && typeof owner === 'object'\n ? formatAdminUserName(owner)\n : '';\n return (\n <TableImpl.Cell maxWidth=\"20rem\">\n <Typography textColor=\"neutral800\" ellipsis>\n {ownerName}\n </Typography>\n </TableImpl.Cell>\n );\n })()}\n {canUpdate || canRead || canDelete ? (\n <TableImpl.Cell>\n <Flex justifyContent=\"end\">\n <GuidedTourTooltip>\n {canUpdate && <UpdateButton tokenName={token.name} tokenId={token.id} />}\n </GuidedTourTooltip>\n {canDelete && (\n <DeleteButton\n tokenName={token.name}\n onClickDelete={() => onConfirmDelete?.(token.id)}\n tokenType={tokenType}\n />\n )}\n </Flex>\n </TableImpl.Cell>\n ) : null}\n </TableImpl.Row>\n );\n })}\n </TableImpl.Body>\n </TableImpl.Content>\n </TableImpl.Root>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * CRUD Buttons\n * -----------------------------------------------------------------------------------------------*/\n\nconst MESSAGES_MAP = {\n edit: {\n id: 'app.component.table.edit',\n defaultMessage: 'Edit {target}',\n },\n read: {\n id: 'app.component.table.read',\n defaultMessage: 'Read {target}',\n },\n};\n\ninterface DefaultButtonProps {\n tokenName: string;\n tokenId: Data.ID;\n buttonType?: 'edit' | 'read';\n children: React.ReactNode;\n}\n\nconst DefaultButton = ({\n tokenName,\n tokenId,\n buttonType = 'edit',\n children,\n}: DefaultButtonProps) => {\n const { formatMessage } = useIntl();\n\n return (\n <LinkButtonStyled\n tag={NavLink}\n to={tokenId.toString()}\n onClick={(e: React.MouseEvent) => e.stopPropagation()}\n title={formatMessage(MESSAGES_MAP[buttonType], { target: tokenName })}\n variant=\"ghost\"\n size=\"S\"\n >\n {children}\n </LinkButtonStyled>\n );\n};\n\nconst LinkButtonStyled = styled(LinkButton)`\n padding: 0.7rem;\n\n & > span {\n display: flex;\n }\n`;\n\ninterface DeleteButtonProps extends Pick<ButtonProps, 'tokenName'>, Pick<TableProps, 'tokenType'> {\n onClickDelete: () => void;\n}\n\nconst DeleteButton = ({ tokenName, onClickDelete, tokenType }: DeleteButtonProps) => {\n const { formatMessage } = useIntl();\n const { trackUsage } = useTracking();\n const handleClickDelete = () => {\n trackUsage('willDeleteToken', {\n tokenType,\n });\n onClickDelete();\n };\n\n return (\n <Dialog.Root>\n <Box<'div'> paddingLeft={1} onClick={(e) => e.stopPropagation()}>\n <Dialog.Trigger>\n <IconButton\n label={formatMessage(\n {\n id: 'global.delete-target',\n defaultMessage: 'Delete {target}',\n },\n { target: `${tokenName}` }\n )}\n name=\"delete\"\n variant=\"ghost\"\n >\n <Trash />\n </IconButton>\n </Dialog.Trigger>\n <ConfirmDialog onConfirm={handleClickDelete} />\n </Box>\n </Dialog.Root>\n );\n};\n\ninterface ButtonProps {\n tokenName: string;\n tokenId: Data.ID;\n}\n\nconst UpdateButton = ({ tokenName, tokenId }: ButtonProps) => {\n return (\n <DefaultButton tokenName={tokenName} tokenId={tokenId}>\n <Pencil />\n </DefaultButton>\n );\n};\n\nexport { Table };\nexport type { TableProps };\n"],"names":["formatAdminUserName","owner","full","firstname","lastname","filter","Boolean","join","username","email","Table","permissions","headers","isLoading","tokens","onConfirmDelete","tokenType","showOwner","query","useQueryParams","formatMessage","locale","useIntl","sortOrder","sort","split","undefined","navigate","useNavigate","trackUsage","useTracking","formatter","useCollator","sortedTokens","a","b","compare","name","canDelete","canUpdate","canRead","handleRowClick","id","toString","_jsx","TableImpl","Root","rows","_jsxs","Content","Head","map","header","HeaderCell","Empty","Loading","Body","token","GuidedTourTooltip","tours","apiTokens","ManageAPIToken","React","Fragment","Row","onClick","Cell","maxWidth","Typography","textColor","fontWeight","ellipsis","description","RelativeTime","timestamp","Date","createdAt","lastUsedAt","customIntervals","unit","threshold","text","defaultMessage","apiToken","kind","adminUserOwner","ownerName","Flex","justifyContent","UpdateButton","tokenName","tokenId","DeleteButton","onClickDelete","MESSAGES_MAP","edit","read","DefaultButton","buttonType","children","LinkButtonStyled","tag","NavLink","to","e","stopPropagation","title","target","variant","size","styled","LinkButton","handleClickDelete","Dialog","Box","paddingLeft","Trigger","IconButton","label","Trash","ConfirmDialog","onConfirm","Pencil"],"mappings":"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"}
1
+ {"version":3,"file":"Table.mjs","sources":["../../../../../../../../admin/src/pages/Settings/components/Tokens/Table.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport {\n Box,\n Flex,\n IconButton,\n Typography,\n useCollator,\n Dialog,\n LinkButton,\n} from '@strapi/design-system';\nimport { Pencil, Trash } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\nimport { NavLink, useNavigate } from 'react-router-dom';\nimport { styled } from 'styled-components';\n\nimport { ApiToken } from '../../../../../../shared/contracts/api-token';\nimport { SanitizedTransferToken } from '../../../../../../shared/contracts/transfer';\nimport { ConfirmDialog } from '../../../../components/ConfirmDialog';\nimport { tours } from '../../../../components/GuidedTour/Tours';\nimport { RelativeTime } from '../../../../components/RelativeTime';\nimport { Table as TableImpl } from '../../../../components/Table';\nimport { useTracking } from '../../../../features/Tracking';\nimport { useQueryParams } from '../../../../hooks/useQueryParams';\n\nimport type { AdminTokenOwner } from '../../../../../../shared/contracts/shared';\nimport type { Data } from '@strapi/types';\n\nconst EMPTY_HEADERS: NonNullable<TableProps['headers']> = [];\nconst EMPTY_TOKENS: NonNullable<TableProps['tokens']> = [];\n\nconst formatAdminUserName = (\n owner: Pick<AdminTokenOwner, 'firstname' | 'lastname' | 'email' | 'username'>\n): string => {\n const full = [owner.firstname, owner.lastname].filter(Boolean).join(' ');\n return full || owner.username || owner.email || '';\n};\n\n/* -------------------------------------------------------------------------------------------------\n * Table\n * -----------------------------------------------------------------------------------------------*/\n\ninterface TableProps extends Pick<\n TableImpl.Props<SanitizedTransferToken | ApiToken>,\n 'headers' | 'isLoading'\n> {\n onConfirmDelete: (id: Data.ID) => void;\n permissions: {\n canRead: boolean;\n canDelete: boolean;\n canUpdate: boolean;\n };\n tokens: SanitizedTransferToken[] | ApiToken[];\n tokenType: 'api-token' | 'transfer-token';\n showOwner?: boolean;\n}\n\nconst Table = ({\n permissions,\n headers = EMPTY_HEADERS,\n isLoading = false,\n tokens = EMPTY_TOKENS,\n onConfirmDelete,\n tokenType,\n showOwner = false,\n}: TableProps) => {\n const [{ query }] = useQueryParams<{ sort?: string }>();\n const { formatMessage, locale } = useIntl();\n const [, sortOrder] = query && query.sort ? query.sort.split(':') : [undefined, 'ASC'];\n const navigate = useNavigate();\n const { trackUsage } = useTracking();\n const formatter = useCollator(locale);\n\n const sortedTokens = [...tokens].sort((a, b) => {\n return sortOrder === 'DESC'\n ? formatter.compare(b.name, a.name)\n : formatter.compare(a.name, b.name);\n });\n\n const { canDelete, canUpdate, canRead } = permissions;\n\n const handleRowClick = (id: Data.ID) => () => {\n if (canRead) {\n trackUsage('willEditTokenFromList', {\n tokenType,\n });\n navigate(id.toString());\n }\n };\n\n return (\n <TableImpl.Root headers={headers} rows={sortedTokens} isLoading={isLoading}>\n <TableImpl.Content>\n <TableImpl.Head>\n {headers.map((header) => (\n <TableImpl.HeaderCell key={header.name} {...header} />\n ))}\n </TableImpl.Head>\n <TableImpl.Empty />\n <TableImpl.Loading />\n <TableImpl.Body>\n {sortedTokens.map((token) => {\n const GuidedTourTooltip =\n token.name === 'Read Only' ? tours.apiTokens.ManageAPIToken : React.Fragment;\n return (\n <TableImpl.Row key={token.id} onClick={handleRowClick(token.id)}>\n <TableImpl.Cell maxWidth=\"25rem\">\n <Typography textColor=\"neutral800\" fontWeight=\"bold\" ellipsis>\n {token.name}\n </Typography>\n </TableImpl.Cell>\n <TableImpl.Cell maxWidth=\"25rem\">\n <Typography textColor=\"neutral800\" ellipsis>\n {token.description}\n </Typography>\n </TableImpl.Cell>\n <TableImpl.Cell>\n <Typography textColor=\"neutral800\">\n {/* @ts-expect-error One of the tokens doesn't have createdAt */}\n <RelativeTime timestamp={new Date(token.createdAt)} />\n </Typography>\n </TableImpl.Cell>\n <TableImpl.Cell>\n {token.lastUsedAt && (\n <Typography textColor=\"neutral800\">\n <RelativeTime\n timestamp={new Date(token.lastUsedAt)}\n customIntervals={[\n {\n unit: 'hours',\n threshold: 1,\n text: formatMessage({\n id: 'Settings.apiTokens.lastHour',\n defaultMessage: 'last hour',\n }),\n },\n ]}\n />\n </Typography>\n )}\n </TableImpl.Cell>\n {showOwner === true &&\n (() => {\n const apiToken = token as ApiToken;\n const owner = apiToken.kind === 'admin' ? apiToken.adminUserOwner : undefined;\n const ownerName =\n owner !== undefined && owner !== null && typeof owner === 'object'\n ? formatAdminUserName(owner)\n : '';\n return (\n <TableImpl.Cell maxWidth=\"20rem\">\n <Typography textColor=\"neutral800\" ellipsis>\n {ownerName}\n </Typography>\n </TableImpl.Cell>\n );\n })()}\n {canUpdate || canRead || canDelete ? (\n <TableImpl.Cell>\n <Flex justifyContent=\"end\">\n <GuidedTourTooltip>\n {canUpdate && <UpdateButton tokenName={token.name} tokenId={token.id} />}\n </GuidedTourTooltip>\n {canDelete && (\n <DeleteButton\n tokenName={token.name}\n onClickDelete={() => onConfirmDelete?.(token.id)}\n tokenType={tokenType}\n />\n )}\n </Flex>\n </TableImpl.Cell>\n ) : null}\n </TableImpl.Row>\n );\n })}\n </TableImpl.Body>\n </TableImpl.Content>\n </TableImpl.Root>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * CRUD Buttons\n * -----------------------------------------------------------------------------------------------*/\n\nconst MESSAGES_MAP = {\n edit: {\n id: 'app.component.table.edit',\n defaultMessage: 'Edit {target}',\n },\n read: {\n id: 'app.component.table.read',\n defaultMessage: 'Read {target}',\n },\n};\n\ninterface DefaultButtonProps {\n tokenName: string;\n tokenId: Data.ID;\n buttonType?: 'edit' | 'read';\n children: React.ReactNode;\n}\n\nconst DefaultButton = ({\n tokenName,\n tokenId,\n buttonType = 'edit',\n children,\n}: DefaultButtonProps) => {\n const { formatMessage } = useIntl();\n\n return (\n <LinkButtonStyled\n tag={NavLink}\n to={tokenId.toString()}\n onClick={(e: React.MouseEvent) => e.stopPropagation()}\n title={formatMessage(MESSAGES_MAP[buttonType], { target: tokenName })}\n variant=\"ghost\"\n size=\"S\"\n >\n {children}\n </LinkButtonStyled>\n );\n};\n\nconst LinkButtonStyled = styled(LinkButton)`\n padding: 0.7rem;\n\n & > span {\n display: flex;\n }\n`;\n\ninterface DeleteButtonProps extends Pick<ButtonProps, 'tokenName'>, Pick<TableProps, 'tokenType'> {\n onClickDelete: () => void;\n}\n\nconst DeleteButton = ({ tokenName, onClickDelete, tokenType }: DeleteButtonProps) => {\n const { formatMessage } = useIntl();\n const { trackUsage } = useTracking();\n const handleClickDelete = () => {\n trackUsage('willDeleteToken', {\n tokenType,\n });\n onClickDelete();\n };\n\n return (\n <Dialog.Root>\n <Box<'div'> paddingLeft={1} onClick={(e) => e.stopPropagation()}>\n <Dialog.Trigger>\n <IconButton\n label={formatMessage(\n {\n id: 'global.delete-target',\n defaultMessage: 'Delete {target}',\n },\n { target: `${tokenName}` }\n )}\n name=\"delete\"\n variant=\"ghost\"\n >\n <Trash />\n </IconButton>\n </Dialog.Trigger>\n <ConfirmDialog onConfirm={handleClickDelete} />\n </Box>\n </Dialog.Root>\n );\n};\n\ninterface ButtonProps {\n tokenName: string;\n tokenId: Data.ID;\n}\n\nconst UpdateButton = ({ tokenName, tokenId }: ButtonProps) => {\n return (\n <DefaultButton tokenName={tokenName} tokenId={tokenId}>\n <Pencil />\n </DefaultButton>\n );\n};\n\nexport { Table };\nexport type { TableProps };\n"],"names":["EMPTY_HEADERS","EMPTY_TOKENS","formatAdminUserName","owner","full","firstname","lastname","filter","Boolean","join","username","email","Table","permissions","headers","isLoading","tokens","onConfirmDelete","tokenType","showOwner","query","useQueryParams","formatMessage","locale","useIntl","sortOrder","sort","split","undefined","navigate","useNavigate","trackUsage","useTracking","formatter","useCollator","sortedTokens","a","b","compare","name","canDelete","canUpdate","canRead","handleRowClick","id","toString","_jsx","TableImpl","Root","rows","_jsxs","Content","Head","map","header","HeaderCell","Empty","Loading","Body","token","GuidedTourTooltip","tours","apiTokens","ManageAPIToken","React","Fragment","Row","onClick","Cell","maxWidth","Typography","textColor","fontWeight","ellipsis","description","RelativeTime","timestamp","Date","createdAt","lastUsedAt","customIntervals","unit","threshold","text","defaultMessage","apiToken","kind","adminUserOwner","ownerName","Flex","justifyContent","UpdateButton","tokenName","tokenId","DeleteButton","onClickDelete","MESSAGES_MAP","edit","read","DefaultButton","buttonType","children","LinkButtonStyled","tag","NavLink","to","e","stopPropagation","title","target","variant","size","styled","LinkButton","handleClickDelete","Dialog","Box","paddingLeft","Trigger","IconButton","label","Trash","ConfirmDialog","onConfirm","Pencil"],"mappings":"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"}
@@ -5,7 +5,8 @@ var designSystem = require('@strapi/design-system');
5
5
  var reactIntl = require('react-intl');
6
6
  var forms = require('../../utils/forms.js');
7
7
 
8
- const TokenTypeSelect = ({ name = 'type', error, value, onChange, canEditInputs, options = [], label })=>{
8
+ const EMPTY_OPTIONS = [];
9
+ const TokenTypeSelect = ({ name = 'type', error, value, onChange, canEditInputs, options = EMPTY_OPTIONS, label })=>{
9
10
  const { formatMessage } = reactIntl.useIntl();
10
11
  return /*#__PURE__*/ jsxRuntime.jsxs(designSystem.Field.Root, {
11
12
  error: error ? formatMessage(forms.isErrorMessageMessageDescriptor(error) ? error : {
@@ -1 +1 @@
1
- {"version":3,"file":"TokenTypeSelect.js","sources":["../../../../../../../../admin/src/pages/Settings/components/Tokens/TokenTypeSelect.tsx"],"sourcesContent":["import { SingleSelectOption, SingleSelect, SingleSelectProps, Field } from '@strapi/design-system';\nimport { MessageDescriptor, useIntl } from 'react-intl';\n\nimport { isErrorMessageMessageDescriptor } from '../../utils/forms';\n\ninterface TokenTypeSelectProps extends Pick<SingleSelectProps, 'onChange' | 'value'> {\n name?: string;\n options: Array<{\n label: MessageDescriptor;\n value: string;\n }>;\n error?: string | MessageDescriptor;\n canEditInputs: boolean;\n label: MessageDescriptor;\n}\n\nexport const TokenTypeSelect = ({\n name = 'type',\n error,\n value,\n onChange,\n canEditInputs,\n options = [],\n label,\n}: TokenTypeSelectProps) => {\n const { formatMessage } = useIntl();\n\n return (\n <Field.Root\n error={\n error\n ? formatMessage(\n isErrorMessageMessageDescriptor(error) ? error : { id: error, defaultMessage: error }\n )\n : undefined\n }\n name={name}\n required\n >\n <Field.Label>\n {formatMessage({\n id: label.id,\n defaultMessage: label.defaultMessage,\n })}\n </Field.Label>\n <SingleSelect\n value={value}\n onChange={onChange}\n placeholder=\"Select\"\n disabled={!canEditInputs}\n >\n {options &&\n options.map(({ value, label }) => (\n <SingleSelectOption key={value} value={value}>\n {formatMessage(label)}\n </SingleSelectOption>\n ))}\n </SingleSelect>\n <Field.Error />\n </Field.Root>\n );\n};\n"],"names":["TokenTypeSelect","name","error","value","onChange","canEditInputs","options","label","formatMessage","useIntl","_jsxs","Field","Root","isErrorMessageMessageDescriptor","id","defaultMessage","undefined","required","_jsx","Label","SingleSelect","placeholder","disabled","map","SingleSelectOption","Error"],"mappings":";;;;;;;MAgBaA,eAAAA,GAAkB,CAAC,EAC9BC,IAAAA,GAAO,MAAM,EACbC,KAAK,EACLC,KAAK,EACLC,QAAQ,EACRC,aAAa,EACbC,UAAU,EAAE,EACZC,KAAK,EACgB,GAAA;IACrB,MAAM,EAAEC,aAAa,EAAE,GAAGC,iBAAAA,EAAAA;IAE1B,qBACEC,eAAA,CAACC,mBAAMC,IAAI,EAAA;AACTV,QAAAA,KAAAA,EACEA,KAAAA,GACIM,aAAAA,CACEK,qCAAAA,CAAgCX,KAAAA,CAAAA,GAASA,KAAAA,GAAQ;YAAEY,EAAAA,EAAIZ,KAAAA;YAAOa,cAAAA,EAAgBb;SAAM,CAAA,GAEtFc,SAAAA;QAENf,IAAAA,EAAMA,IAAAA;QACNgB,QAAQ,EAAA,IAAA;;AAER,0BAAAC,cAAA,CAACP,mBAAMQ,KAAK,EAAA;0BACTX,aAAAA,CAAc;AACbM,oBAAAA,EAAAA,EAAIP,MAAMO,EAAE;AACZC,oBAAAA,cAAAA,EAAgBR,MAAMQ;AACxB,iBAAA;;0BAEFG,cAAA,CAACE,yBAAAA,EAAAA;gBACCjB,KAAAA,EAAOA,KAAAA;gBACPC,QAAAA,EAAUA,QAAAA;gBACViB,WAAAA,EAAY,QAAA;AACZC,gBAAAA,QAAAA,EAAU,CAACjB,aAAAA;0BAEVC,OAAAA,IACCA,OAAAA,CAAQiB,GAAG,CAAC,CAAC,EAAEpB,KAAK,EAAEI,KAAK,EAAE,iBAC3BW,cAAA,CAACM,+BAAAA,EAAAA;wBAA+BrB,KAAAA,EAAOA,KAAAA;kCACpCK,aAAAA,CAAcD,KAAAA;AADQJ,qBAAAA,EAAAA,KAAAA,CAAAA;;AAK/B,0BAAAe,cAAA,CAACP,mBAAMc,KAAK,EAAA,EAAA;;;AAGlB;;;;"}
1
+ {"version":3,"file":"TokenTypeSelect.js","sources":["../../../../../../../../admin/src/pages/Settings/components/Tokens/TokenTypeSelect.tsx"],"sourcesContent":["import { SingleSelectOption, SingleSelect, SingleSelectProps, Field } from '@strapi/design-system';\nimport { MessageDescriptor, useIntl } from 'react-intl';\n\nimport { isErrorMessageMessageDescriptor } from '../../utils/forms';\n\nconst EMPTY_OPTIONS: NonNullable<TokenTypeSelectProps['options']> = [];\n\ninterface TokenTypeSelectProps extends Pick<SingleSelectProps, 'onChange' | 'value'> {\n name?: string;\n options: Array<{\n label: MessageDescriptor;\n value: string;\n }>;\n error?: string | MessageDescriptor;\n canEditInputs: boolean;\n label: MessageDescriptor;\n}\n\nexport const TokenTypeSelect = ({\n name = 'type',\n error,\n value,\n onChange,\n canEditInputs,\n options = EMPTY_OPTIONS,\n label,\n}: TokenTypeSelectProps) => {\n const { formatMessage } = useIntl();\n\n return (\n <Field.Root\n error={\n error\n ? formatMessage(\n isErrorMessageMessageDescriptor(error) ? error : { id: error, defaultMessage: error }\n )\n : undefined\n }\n name={name}\n required\n >\n <Field.Label>\n {formatMessage({\n id: label.id,\n defaultMessage: label.defaultMessage,\n })}\n </Field.Label>\n <SingleSelect\n value={value}\n onChange={onChange}\n placeholder=\"Select\"\n disabled={!canEditInputs}\n >\n {options &&\n options.map(({ value, label }) => (\n <SingleSelectOption key={value} value={value}>\n {formatMessage(label)}\n </SingleSelectOption>\n ))}\n </SingleSelect>\n <Field.Error />\n </Field.Root>\n );\n};\n"],"names":["EMPTY_OPTIONS","TokenTypeSelect","name","error","value","onChange","canEditInputs","options","label","formatMessage","useIntl","_jsxs","Field","Root","isErrorMessageMessageDescriptor","id","defaultMessage","undefined","required","_jsx","Label","SingleSelect","placeholder","disabled","map","SingleSelectOption","Error"],"mappings":";;;;;;;AAKA,MAAMA,gBAA8D,EAAE;MAazDC,eAAAA,GAAkB,CAAC,EAC9BC,IAAAA,GAAO,MAAM,EACbC,KAAK,EACLC,KAAK,EACLC,QAAQ,EACRC,aAAa,EACbC,UAAUP,aAAa,EACvBQ,KAAK,EACgB,GAAA;IACrB,MAAM,EAAEC,aAAa,EAAE,GAAGC,iBAAAA,EAAAA;IAE1B,qBACEC,eAAA,CAACC,mBAAMC,IAAI,EAAA;AACTV,QAAAA,KAAAA,EACEA,KAAAA,GACIM,aAAAA,CACEK,qCAAAA,CAAgCX,KAAAA,CAAAA,GAASA,KAAAA,GAAQ;YAAEY,EAAAA,EAAIZ,KAAAA;YAAOa,cAAAA,EAAgBb;SAAM,CAAA,GAEtFc,SAAAA;QAENf,IAAAA,EAAMA,IAAAA;QACNgB,QAAQ,EAAA,IAAA;;AAER,0BAAAC,cAAA,CAACP,mBAAMQ,KAAK,EAAA;0BACTX,aAAAA,CAAc;AACbM,oBAAAA,EAAAA,EAAIP,MAAMO,EAAE;AACZC,oBAAAA,cAAAA,EAAgBR,MAAMQ;AACxB,iBAAA;;0BAEFG,cAAA,CAACE,yBAAAA,EAAAA;gBACCjB,KAAAA,EAAOA,KAAAA;gBACPC,QAAAA,EAAUA,QAAAA;gBACViB,WAAAA,EAAY,QAAA;AACZC,gBAAAA,QAAAA,EAAU,CAACjB,aAAAA;0BAEVC,OAAAA,IACCA,OAAAA,CAAQiB,GAAG,CAAC,CAAC,EAAEpB,KAAK,EAAEI,KAAK,EAAE,iBAC3BW,cAAA,CAACM,+BAAAA,EAAAA;wBAA+BrB,KAAAA,EAAOA,KAAAA;kCACpCK,aAAAA,CAAcD,KAAAA;AADQJ,qBAAAA,EAAAA,KAAAA,CAAAA;;AAK/B,0BAAAe,cAAA,CAACP,mBAAMc,KAAK,EAAA,EAAA;;;AAGlB;;;;"}
@@ -3,7 +3,8 @@ import { Field, SingleSelect, SingleSelectOption } from '@strapi/design-system';
3
3
  import { useIntl } from 'react-intl';
4
4
  import { isErrorMessageMessageDescriptor } from '../../utils/forms.mjs';
5
5
 
6
- const TokenTypeSelect = ({ name = 'type', error, value, onChange, canEditInputs, options = [], label })=>{
6
+ const EMPTY_OPTIONS = [];
7
+ const TokenTypeSelect = ({ name = 'type', error, value, onChange, canEditInputs, options = EMPTY_OPTIONS, label })=>{
7
8
  const { formatMessage } = useIntl();
8
9
  return /*#__PURE__*/ jsxs(Field.Root, {
9
10
  error: error ? formatMessage(isErrorMessageMessageDescriptor(error) ? error : {
@@ -1 +1 @@
1
- {"version":3,"file":"TokenTypeSelect.mjs","sources":["../../../../../../../../admin/src/pages/Settings/components/Tokens/TokenTypeSelect.tsx"],"sourcesContent":["import { SingleSelectOption, SingleSelect, SingleSelectProps, Field } from '@strapi/design-system';\nimport { MessageDescriptor, useIntl } from 'react-intl';\n\nimport { isErrorMessageMessageDescriptor } from '../../utils/forms';\n\ninterface TokenTypeSelectProps extends Pick<SingleSelectProps, 'onChange' | 'value'> {\n name?: string;\n options: Array<{\n label: MessageDescriptor;\n value: string;\n }>;\n error?: string | MessageDescriptor;\n canEditInputs: boolean;\n label: MessageDescriptor;\n}\n\nexport const TokenTypeSelect = ({\n name = 'type',\n error,\n value,\n onChange,\n canEditInputs,\n options = [],\n label,\n}: TokenTypeSelectProps) => {\n const { formatMessage } = useIntl();\n\n return (\n <Field.Root\n error={\n error\n ? formatMessage(\n isErrorMessageMessageDescriptor(error) ? error : { id: error, defaultMessage: error }\n )\n : undefined\n }\n name={name}\n required\n >\n <Field.Label>\n {formatMessage({\n id: label.id,\n defaultMessage: label.defaultMessage,\n })}\n </Field.Label>\n <SingleSelect\n value={value}\n onChange={onChange}\n placeholder=\"Select\"\n disabled={!canEditInputs}\n >\n {options &&\n options.map(({ value, label }) => (\n <SingleSelectOption key={value} value={value}>\n {formatMessage(label)}\n </SingleSelectOption>\n ))}\n </SingleSelect>\n <Field.Error />\n </Field.Root>\n );\n};\n"],"names":["TokenTypeSelect","name","error","value","onChange","canEditInputs","options","label","formatMessage","useIntl","_jsxs","Field","Root","isErrorMessageMessageDescriptor","id","defaultMessage","undefined","required","_jsx","Label","SingleSelect","placeholder","disabled","map","SingleSelectOption","Error"],"mappings":";;;;;MAgBaA,eAAAA,GAAkB,CAAC,EAC9BC,IAAAA,GAAO,MAAM,EACbC,KAAK,EACLC,KAAK,EACLC,QAAQ,EACRC,aAAa,EACbC,UAAU,EAAE,EACZC,KAAK,EACgB,GAAA;IACrB,MAAM,EAAEC,aAAa,EAAE,GAAGC,OAAAA,EAAAA;IAE1B,qBACEC,IAAA,CAACC,MAAMC,IAAI,EAAA;AACTV,QAAAA,KAAAA,EACEA,KAAAA,GACIM,aAAAA,CACEK,+BAAAA,CAAgCX,KAAAA,CAAAA,GAASA,KAAAA,GAAQ;YAAEY,EAAAA,EAAIZ,KAAAA;YAAOa,cAAAA,EAAgBb;SAAM,CAAA,GAEtFc,SAAAA;QAENf,IAAAA,EAAMA,IAAAA;QACNgB,QAAQ,EAAA,IAAA;;AAER,0BAAAC,GAAA,CAACP,MAAMQ,KAAK,EAAA;0BACTX,aAAAA,CAAc;AACbM,oBAAAA,EAAAA,EAAIP,MAAMO,EAAE;AACZC,oBAAAA,cAAAA,EAAgBR,MAAMQ;AACxB,iBAAA;;0BAEFG,GAAA,CAACE,YAAAA,EAAAA;gBACCjB,KAAAA,EAAOA,KAAAA;gBACPC,QAAAA,EAAUA,QAAAA;gBACViB,WAAAA,EAAY,QAAA;AACZC,gBAAAA,QAAAA,EAAU,CAACjB,aAAAA;0BAEVC,OAAAA,IACCA,OAAAA,CAAQiB,GAAG,CAAC,CAAC,EAAEpB,KAAK,EAAEI,KAAK,EAAE,iBAC3BW,GAAA,CAACM,kBAAAA,EAAAA;wBAA+BrB,KAAAA,EAAOA,KAAAA;kCACpCK,aAAAA,CAAcD,KAAAA;AADQJ,qBAAAA,EAAAA,KAAAA,CAAAA;;AAK/B,0BAAAe,GAAA,CAACP,MAAMc,KAAK,EAAA,EAAA;;;AAGlB;;;;"}
1
+ {"version":3,"file":"TokenTypeSelect.mjs","sources":["../../../../../../../../admin/src/pages/Settings/components/Tokens/TokenTypeSelect.tsx"],"sourcesContent":["import { SingleSelectOption, SingleSelect, SingleSelectProps, Field } from '@strapi/design-system';\nimport { MessageDescriptor, useIntl } from 'react-intl';\n\nimport { isErrorMessageMessageDescriptor } from '../../utils/forms';\n\nconst EMPTY_OPTIONS: NonNullable<TokenTypeSelectProps['options']> = [];\n\ninterface TokenTypeSelectProps extends Pick<SingleSelectProps, 'onChange' | 'value'> {\n name?: string;\n options: Array<{\n label: MessageDescriptor;\n value: string;\n }>;\n error?: string | MessageDescriptor;\n canEditInputs: boolean;\n label: MessageDescriptor;\n}\n\nexport const TokenTypeSelect = ({\n name = 'type',\n error,\n value,\n onChange,\n canEditInputs,\n options = EMPTY_OPTIONS,\n label,\n}: TokenTypeSelectProps) => {\n const { formatMessage } = useIntl();\n\n return (\n <Field.Root\n error={\n error\n ? formatMessage(\n isErrorMessageMessageDescriptor(error) ? error : { id: error, defaultMessage: error }\n )\n : undefined\n }\n name={name}\n required\n >\n <Field.Label>\n {formatMessage({\n id: label.id,\n defaultMessage: label.defaultMessage,\n })}\n </Field.Label>\n <SingleSelect\n value={value}\n onChange={onChange}\n placeholder=\"Select\"\n disabled={!canEditInputs}\n >\n {options &&\n options.map(({ value, label }) => (\n <SingleSelectOption key={value} value={value}>\n {formatMessage(label)}\n </SingleSelectOption>\n ))}\n </SingleSelect>\n <Field.Error />\n </Field.Root>\n );\n};\n"],"names":["EMPTY_OPTIONS","TokenTypeSelect","name","error","value","onChange","canEditInputs","options","label","formatMessage","useIntl","_jsxs","Field","Root","isErrorMessageMessageDescriptor","id","defaultMessage","undefined","required","_jsx","Label","SingleSelect","placeholder","disabled","map","SingleSelectOption","Error"],"mappings":";;;;;AAKA,MAAMA,gBAA8D,EAAE;MAazDC,eAAAA,GAAkB,CAAC,EAC9BC,IAAAA,GAAO,MAAM,EACbC,KAAK,EACLC,KAAK,EACLC,QAAQ,EACRC,aAAa,EACbC,UAAUP,aAAa,EACvBQ,KAAK,EACgB,GAAA;IACrB,MAAM,EAAEC,aAAa,EAAE,GAAGC,OAAAA,EAAAA;IAE1B,qBACEC,IAAA,CAACC,MAAMC,IAAI,EAAA;AACTV,QAAAA,KAAAA,EACEA,KAAAA,GACIM,aAAAA,CACEK,+BAAAA,CAAgCX,KAAAA,CAAAA,GAASA,KAAAA,GAAQ;YAAEY,EAAAA,EAAIZ,KAAAA;YAAOa,cAAAA,EAAgBb;SAAM,CAAA,GAEtFc,SAAAA;QAENf,IAAAA,EAAMA,IAAAA;QACNgB,QAAQ,EAAA,IAAA;;AAER,0BAAAC,GAAA,CAACP,MAAMQ,KAAK,EAAA;0BACTX,aAAAA,CAAc;AACbM,oBAAAA,EAAAA,EAAIP,MAAMO,EAAE;AACZC,oBAAAA,cAAAA,EAAgBR,MAAMQ;AACxB,iBAAA;;0BAEFG,GAAA,CAACE,YAAAA,EAAAA;gBACCjB,KAAAA,EAAOA,KAAAA;gBACPC,QAAAA,EAAUA,QAAAA;gBACViB,WAAAA,EAAY,QAAA;AACZC,gBAAAA,QAAAA,EAAU,CAACjB,aAAAA;0BAEVC,OAAAA,IACCA,OAAAA,CAAQiB,GAAG,CAAC,CAAC,EAAEpB,KAAK,EAAEI,KAAK,EAAE,iBAC3BW,GAAA,CAACM,kBAAAA,EAAAA;wBAA+BrB,KAAAA,EAAOA,KAAAA;kCACpCK,aAAAA,CAAcD,KAAAA;AADQJ,qBAAAA,EAAAA,KAAAA,CAAAA;;AAK/B,0BAAAe,GAAA,CAACP,MAAMc,KAAK,EAAA,EAAA;;;AAGlB;;;;"}
@@ -12,6 +12,11 @@ function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
12
12
  var map__default = /*#__PURE__*/_interopDefault(map);
13
13
  var tail__default = /*#__PURE__*/_interopDefault(tail);
14
14
 
15
+ const DEFAULT_ROUTE = {
16
+ handler: 'Nocontroller.error',
17
+ method: 'GET',
18
+ path: '/there-is-no-path'
19
+ };
15
20
  const getMethodColor = (verb)=>{
16
21
  switch(verb){
17
22
  case 'POST':
@@ -60,11 +65,7 @@ const MethodBox = styledComponents.styled(designSystem.Box)`
60
65
  margin: -1px;
61
66
  border-radius: ${({ theme })=>theme.spaces[1]} 0 0 ${({ theme })=>theme.spaces[1]};
62
67
  `;
63
- const BoundRoute = ({ route = {
64
- handler: 'Nocontroller.error',
65
- method: 'GET',
66
- path: '/there-is-no-path'
67
- } })=>{
68
+ const BoundRoute = ({ route = DEFAULT_ROUTE })=>{
68
69
  const { formatMessage } = reactIntl.useIntl();
69
70
  const { method, handler: title, path } = route;
70
71
  const formattedRoute = path ? tail__default.default(path.split('/')) : [];
@@ -1 +1 @@
1
- {"version":3,"file":"BoundRoute.js","sources":["../../../../../../../../../../admin/src/pages/Settings/pages/ApiTokens/EditView/components/BoundRoute.tsx"],"sourcesContent":["import { Box, BoxComponent, Flex, Typography } from '@strapi/design-system';\nimport map from 'lodash/map';\nimport tail from 'lodash/tail';\nimport { useIntl } from 'react-intl';\nimport { styled, DefaultTheme } from 'styled-components';\n\ntype HttpVerb = 'POST' | 'GET' | 'PUT' | 'DELETE';\n\ntype MethodColor = {\n text: keyof DefaultTheme['colors'];\n border: keyof DefaultTheme['colors'];\n background: keyof DefaultTheme['colors'];\n};\n\nconst getMethodColor = (verb: HttpVerb): MethodColor => {\n switch (verb) {\n case 'POST': {\n return {\n text: 'success600',\n border: 'success200',\n background: 'success100',\n };\n }\n case 'GET': {\n return {\n text: 'secondary600',\n border: 'secondary200',\n background: 'secondary100',\n };\n }\n case 'PUT': {\n return {\n text: 'warning600',\n border: 'warning200',\n background: 'warning100',\n };\n }\n case 'DELETE': {\n return {\n text: 'danger600',\n border: 'danger200',\n background: 'danger100',\n };\n }\n default: {\n return {\n text: 'neutral600',\n border: 'neutral200',\n background: 'neutral100',\n };\n }\n }\n};\n\nconst MethodBox = styled<BoxComponent>(Box)`\n margin: -1px;\n border-radius: ${({ theme }) => theme.spaces[1]} 0 0 ${({ theme }) => theme.spaces[1]};\n`;\n\ninterface BoundRouteProps {\n route: {\n handler: string;\n method: HttpVerb;\n path: string;\n };\n}\n\nexport const BoundRoute = ({\n route = {\n handler: 'Nocontroller.error',\n method: 'GET',\n path: '/there-is-no-path',\n },\n}: BoundRouteProps) => {\n const { formatMessage } = useIntl();\n\n const { method, handler: title, path } = route;\n const formattedRoute = path ? tail(path.split('/')) : [];\n const [controller = '', action = ''] = title ? title.split('.') : [];\n const colors = getMethodColor(route.method);\n\n return (\n <Flex direction=\"column\" alignItems=\"stretch\" gap={2}>\n <Typography variant=\"delta\" tag=\"h3\">\n {formatMessage({\n id: 'Settings.apiTokens.createPage.BoundRoute.title',\n defaultMessage: 'Bound route to',\n })}\n &nbsp;\n <span>{controller}</span>\n <Typography variant=\"delta\" textColor=\"primary600\">\n .{action}\n </Typography>\n </Typography>\n <Flex hasRadius background=\"neutral0\" borderColor=\"neutral200\" gap={0}>\n <MethodBox background={colors.background} borderColor={colors.border} padding={2}>\n <Typography fontWeight=\"bold\" textColor={colors.text}>\n {method}\n </Typography>\n </MethodBox>\n <Box paddingLeft={2} paddingRight={2}>\n {map(formattedRoute, (value) => (\n <Typography key={value} textColor={value.includes(':') ? 'neutral600' : 'neutral900'}>\n /{value}\n </Typography>\n ))}\n </Box>\n </Flex>\n </Flex>\n );\n};\n"],"names":["getMethodColor","verb","text","border","background","MethodBox","styled","Box","theme","spaces","BoundRoute","route","handler","method","path","formatMessage","useIntl","title","formattedRoute","tail","split","controller","action","colors","_jsxs","Flex","direction","alignItems","gap","Typography","variant","tag","id","defaultMessage","_jsx","span","textColor","hasRadius","borderColor","padding","fontWeight","paddingLeft","paddingRight","map","value","includes"],"mappings":"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"}
1
+ {"version":3,"file":"BoundRoute.js","sources":["../../../../../../../../../../admin/src/pages/Settings/pages/ApiTokens/EditView/components/BoundRoute.tsx"],"sourcesContent":["import { Box, BoxComponent, Flex, Typography } from '@strapi/design-system';\nimport map from 'lodash/map';\nimport tail from 'lodash/tail';\nimport { useIntl } from 'react-intl';\nimport { styled, DefaultTheme } from 'styled-components';\n\nconst DEFAULT_ROUTE: NonNullable<BoundRouteProps['route']> = {\n handler: 'Nocontroller.error',\n method: 'GET',\n path: '/there-is-no-path',\n};\n\ntype HttpVerb = 'POST' | 'GET' | 'PUT' | 'DELETE';\n\ntype MethodColor = {\n text: keyof DefaultTheme['colors'];\n border: keyof DefaultTheme['colors'];\n background: keyof DefaultTheme['colors'];\n};\n\nconst getMethodColor = (verb: HttpVerb): MethodColor => {\n switch (verb) {\n case 'POST': {\n return {\n text: 'success600',\n border: 'success200',\n background: 'success100',\n };\n }\n case 'GET': {\n return {\n text: 'secondary600',\n border: 'secondary200',\n background: 'secondary100',\n };\n }\n case 'PUT': {\n return {\n text: 'warning600',\n border: 'warning200',\n background: 'warning100',\n };\n }\n case 'DELETE': {\n return {\n text: 'danger600',\n border: 'danger200',\n background: 'danger100',\n };\n }\n default: {\n return {\n text: 'neutral600',\n border: 'neutral200',\n background: 'neutral100',\n };\n }\n }\n};\n\nconst MethodBox = styled<BoxComponent>(Box)`\n margin: -1px;\n border-radius: ${({ theme }) => theme.spaces[1]} 0 0 ${({ theme }) => theme.spaces[1]};\n`;\n\ninterface BoundRouteProps {\n route: {\n handler: string;\n method: HttpVerb;\n path: string;\n };\n}\n\nexport const BoundRoute = ({ route = DEFAULT_ROUTE }: BoundRouteProps) => {\n const { formatMessage } = useIntl();\n\n const { method, handler: title, path } = route;\n const formattedRoute = path ? tail(path.split('/')) : [];\n const [controller = '', action = ''] = title ? title.split('.') : [];\n const colors = getMethodColor(route.method);\n\n return (\n <Flex direction=\"column\" alignItems=\"stretch\" gap={2}>\n <Typography variant=\"delta\" tag=\"h3\">\n {formatMessage({\n id: 'Settings.apiTokens.createPage.BoundRoute.title',\n defaultMessage: 'Bound route to',\n })}\n &nbsp;\n <span>{controller}</span>\n <Typography variant=\"delta\" textColor=\"primary600\">\n .{action}\n </Typography>\n </Typography>\n <Flex hasRadius background=\"neutral0\" borderColor=\"neutral200\" gap={0}>\n <MethodBox background={colors.background} borderColor={colors.border} padding={2}>\n <Typography fontWeight=\"bold\" textColor={colors.text}>\n {method}\n </Typography>\n </MethodBox>\n <Box paddingLeft={2} paddingRight={2}>\n {map(formattedRoute, (value) => (\n <Typography key={value} textColor={value.includes(':') ? 'neutral600' : 'neutral900'}>\n /{value}\n </Typography>\n ))}\n </Box>\n </Flex>\n </Flex>\n );\n};\n"],"names":["DEFAULT_ROUTE","handler","method","path","getMethodColor","verb","text","border","background","MethodBox","styled","Box","theme","spaces","BoundRoute","route","formatMessage","useIntl","title","formattedRoute","tail","split","controller","action","colors","_jsxs","Flex","direction","alignItems","gap","Typography","variant","tag","id","defaultMessage","_jsx","span","textColor","hasRadius","borderColor","padding","fontWeight","paddingLeft","paddingRight","map","value","includes"],"mappings":"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"}
@@ -5,6 +5,11 @@ import tail from 'lodash/tail';
5
5
  import { useIntl } from 'react-intl';
6
6
  import { styled } from 'styled-components';
7
7
 
8
+ const DEFAULT_ROUTE = {
9
+ handler: 'Nocontroller.error',
10
+ method: 'GET',
11
+ path: '/there-is-no-path'
12
+ };
8
13
  const getMethodColor = (verb)=>{
9
14
  switch(verb){
10
15
  case 'POST':
@@ -53,11 +58,7 @@ const MethodBox = styled(Box)`
53
58
  margin: -1px;
54
59
  border-radius: ${({ theme })=>theme.spaces[1]} 0 0 ${({ theme })=>theme.spaces[1]};
55
60
  `;
56
- const BoundRoute = ({ route = {
57
- handler: 'Nocontroller.error',
58
- method: 'GET',
59
- path: '/there-is-no-path'
60
- } })=>{
61
+ const BoundRoute = ({ route = DEFAULT_ROUTE })=>{
61
62
  const { formatMessage } = useIntl();
62
63
  const { method, handler: title, path } = route;
63
64
  const formattedRoute = path ? tail(path.split('/')) : [];
@@ -1 +1 @@
1
- {"version":3,"file":"BoundRoute.mjs","sources":["../../../../../../../../../../admin/src/pages/Settings/pages/ApiTokens/EditView/components/BoundRoute.tsx"],"sourcesContent":["import { Box, BoxComponent, Flex, Typography } from '@strapi/design-system';\nimport map from 'lodash/map';\nimport tail from 'lodash/tail';\nimport { useIntl } from 'react-intl';\nimport { styled, DefaultTheme } from 'styled-components';\n\ntype HttpVerb = 'POST' | 'GET' | 'PUT' | 'DELETE';\n\ntype MethodColor = {\n text: keyof DefaultTheme['colors'];\n border: keyof DefaultTheme['colors'];\n background: keyof DefaultTheme['colors'];\n};\n\nconst getMethodColor = (verb: HttpVerb): MethodColor => {\n switch (verb) {\n case 'POST': {\n return {\n text: 'success600',\n border: 'success200',\n background: 'success100',\n };\n }\n case 'GET': {\n return {\n text: 'secondary600',\n border: 'secondary200',\n background: 'secondary100',\n };\n }\n case 'PUT': {\n return {\n text: 'warning600',\n border: 'warning200',\n background: 'warning100',\n };\n }\n case 'DELETE': {\n return {\n text: 'danger600',\n border: 'danger200',\n background: 'danger100',\n };\n }\n default: {\n return {\n text: 'neutral600',\n border: 'neutral200',\n background: 'neutral100',\n };\n }\n }\n};\n\nconst MethodBox = styled<BoxComponent>(Box)`\n margin: -1px;\n border-radius: ${({ theme }) => theme.spaces[1]} 0 0 ${({ theme }) => theme.spaces[1]};\n`;\n\ninterface BoundRouteProps {\n route: {\n handler: string;\n method: HttpVerb;\n path: string;\n };\n}\n\nexport const BoundRoute = ({\n route = {\n handler: 'Nocontroller.error',\n method: 'GET',\n path: '/there-is-no-path',\n },\n}: BoundRouteProps) => {\n const { formatMessage } = useIntl();\n\n const { method, handler: title, path } = route;\n const formattedRoute = path ? tail(path.split('/')) : [];\n const [controller = '', action = ''] = title ? title.split('.') : [];\n const colors = getMethodColor(route.method);\n\n return (\n <Flex direction=\"column\" alignItems=\"stretch\" gap={2}>\n <Typography variant=\"delta\" tag=\"h3\">\n {formatMessage({\n id: 'Settings.apiTokens.createPage.BoundRoute.title',\n defaultMessage: 'Bound route to',\n })}\n &nbsp;\n <span>{controller}</span>\n <Typography variant=\"delta\" textColor=\"primary600\">\n .{action}\n </Typography>\n </Typography>\n <Flex hasRadius background=\"neutral0\" borderColor=\"neutral200\" gap={0}>\n <MethodBox background={colors.background} borderColor={colors.border} padding={2}>\n <Typography fontWeight=\"bold\" textColor={colors.text}>\n {method}\n </Typography>\n </MethodBox>\n <Box paddingLeft={2} paddingRight={2}>\n {map(formattedRoute, (value) => (\n <Typography key={value} textColor={value.includes(':') ? 'neutral600' : 'neutral900'}>\n /{value}\n </Typography>\n ))}\n </Box>\n </Flex>\n </Flex>\n );\n};\n"],"names":["getMethodColor","verb","text","border","background","MethodBox","styled","Box","theme","spaces","BoundRoute","route","handler","method","path","formatMessage","useIntl","title","formattedRoute","tail","split","controller","action","colors","_jsxs","Flex","direction","alignItems","gap","Typography","variant","tag","id","defaultMessage","_jsx","span","textColor","hasRadius","borderColor","padding","fontWeight","paddingLeft","paddingRight","map","value","includes"],"mappings":";;;;;;;AAcA,MAAMA,iBAAiB,CAACC,IAAAA,GAAAA;IACtB,OAAQA,IAAAA;QACN,KAAK,MAAA;AAAQ,YAAA;gBACX,OAAO;oBACLC,IAAAA,EAAM,YAAA;oBACNC,MAAAA,EAAQ,YAAA;oBACRC,UAAAA,EAAY;AACd,iBAAA;AACF,YAAA;QACA,KAAK,KAAA;AAAO,YAAA;gBACV,OAAO;oBACLF,IAAAA,EAAM,cAAA;oBACNC,MAAAA,EAAQ,cAAA;oBACRC,UAAAA,EAAY;AACd,iBAAA;AACF,YAAA;QACA,KAAK,KAAA;AAAO,YAAA;gBACV,OAAO;oBACLF,IAAAA,EAAM,YAAA;oBACNC,MAAAA,EAAQ,YAAA;oBACRC,UAAAA,EAAY;AACd,iBAAA;AACF,YAAA;QACA,KAAK,QAAA;AAAU,YAAA;gBACb,OAAO;oBACLF,IAAAA,EAAM,WAAA;oBACNC,MAAAA,EAAQ,WAAA;oBACRC,UAAAA,EAAY;AACd,iBAAA;AACF,YAAA;AACA,QAAA;AAAS,YAAA;gBACP,OAAO;oBACLF,IAAAA,EAAM,YAAA;oBACNC,MAAAA,EAAQ,YAAA;oBACRC,UAAAA,EAAY;AACd,iBAAA;AACF,YAAA;AACF;AACF,CAAA;AAEA,MAAMC,SAAAA,GAAYC,MAAAA,CAAqBC,GAAAA,CAAI;;iBAE1B,EAAE,CAAC,EAAEC,KAAK,EAAE,GAAKA,KAAAA,CAAMC,MAAM,CAAC,CAAA,CAAE,CAAC,KAAK,EAAE,CAAC,EAAED,KAAK,EAAE,GAAKA,KAAAA,CAAMC,MAAM,CAAC,CAAA,CAAE,CAAC;AACxF,CAAC;AAUM,MAAMC,UAAAA,GAAa,CAAC,EACzBC,KAAAA,GAAQ;IACNC,OAAAA,EAAS,oBAAA;IACTC,MAAAA,EAAQ,KAAA;IACRC,IAAAA,EAAM;AACR,CAAC,EACe,GAAA;IAChB,MAAM,EAAEC,aAAa,EAAE,GAAGC,OAAAA,EAAAA;IAE1B,MAAM,EAAEH,MAAM,EAAED,OAAAA,EAASK,KAAK,EAAEH,IAAI,EAAE,GAAGH,KAAAA;AACzC,IAAA,MAAMO,iBAAiBJ,IAAAA,GAAOK,IAAAA,CAAKL,KAAKM,KAAK,CAAC,QAAQ,EAAE;AACxD,IAAA,MAAM,CAACC,UAAAA,GAAa,EAAE,EAAEC,MAAAA,GAAS,EAAE,CAAC,GAAGL,KAAAA,GAAQA,KAAAA,CAAMG,KAAK,CAAC,OAAO,EAAE;IACpE,MAAMG,MAAAA,GAASvB,cAAAA,CAAeW,KAAAA,CAAME,MAAM,CAAA;AAE1C,IAAA,qBACEW,IAAA,CAACC,IAAAA,EAAAA;QAAKC,SAAAA,EAAU,QAAA;QAASC,UAAAA,EAAW,SAAA;QAAUC,GAAAA,EAAK,CAAA;;0BACjDJ,IAAA,CAACK,UAAAA,EAAAA;gBAAWC,OAAAA,EAAQ,OAAA;gBAAQC,GAAAA,EAAI,IAAA;;oBAC7BhB,aAAAA,CAAc;wBACbiB,EAAAA,EAAI,gDAAA;wBACJC,cAAAA,EAAgB;AAClB,qBAAA,CAAA;AAAG,oBAAA,GAAA;kCAEHC,GAAA,CAACC,MAAAA,EAAAA;AAAMd,wBAAAA,QAAAA,EAAAA;;kCACPG,IAAA,CAACK,UAAAA,EAAAA;wBAAWC,OAAAA,EAAQ,OAAA;wBAAQM,SAAAA,EAAU,YAAA;;AAAa,4BAAA,GAAA;AAC/Cd,4BAAAA;;;;;0BAGNE,IAAA,CAACC,IAAAA,EAAAA;gBAAKY,SAAS,EAAA,IAAA;gBAACjC,UAAAA,EAAW,UAAA;gBAAWkC,WAAAA,EAAY,YAAA;gBAAaV,GAAAA,EAAK,CAAA;;kCAClEM,GAAA,CAAC7B,SAAAA,EAAAA;AAAUD,wBAAAA,UAAAA,EAAYmB,OAAOnB,UAAU;AAAEkC,wBAAAA,WAAAA,EAAaf,OAAOpB,MAAM;wBAAEoC,OAAAA,EAAS,CAAA;AAC7E,wBAAA,QAAA,gBAAAL,GAAA,CAACL,UAAAA,EAAAA;4BAAWW,UAAAA,EAAW,MAAA;AAAOJ,4BAAAA,SAAAA,EAAWb,OAAOrB,IAAI;AACjDW,4BAAAA,QAAAA,EAAAA;;;kCAGLqB,GAAA,CAAC3B,GAAAA,EAAAA;wBAAIkC,WAAAA,EAAa,CAAA;wBAAGC,YAAAA,EAAc,CAAA;kCAChCC,GAAAA,CAAIzB,cAAAA,EAAgB,CAAC0B,KAAAA,iBACpBpB,IAAA,CAACK,UAAAA,EAAAA;AAAuBO,gCAAAA,SAAAA,EAAWQ,KAAAA,CAAMC,QAAQ,CAAC,GAAA,CAAA,GAAO,YAAA,GAAe,YAAA;;AAAc,oCAAA,GAAA;AAClFD,oCAAAA;;AADaA,6BAAAA,EAAAA,KAAAA,CAAAA;;;;;;AAQ7B;;;;"}
1
+ {"version":3,"file":"BoundRoute.mjs","sources":["../../../../../../../../../../admin/src/pages/Settings/pages/ApiTokens/EditView/components/BoundRoute.tsx"],"sourcesContent":["import { Box, BoxComponent, Flex, Typography } from '@strapi/design-system';\nimport map from 'lodash/map';\nimport tail from 'lodash/tail';\nimport { useIntl } from 'react-intl';\nimport { styled, DefaultTheme } from 'styled-components';\n\nconst DEFAULT_ROUTE: NonNullable<BoundRouteProps['route']> = {\n handler: 'Nocontroller.error',\n method: 'GET',\n path: '/there-is-no-path',\n};\n\ntype HttpVerb = 'POST' | 'GET' | 'PUT' | 'DELETE';\n\ntype MethodColor = {\n text: keyof DefaultTheme['colors'];\n border: keyof DefaultTheme['colors'];\n background: keyof DefaultTheme['colors'];\n};\n\nconst getMethodColor = (verb: HttpVerb): MethodColor => {\n switch (verb) {\n case 'POST': {\n return {\n text: 'success600',\n border: 'success200',\n background: 'success100',\n };\n }\n case 'GET': {\n return {\n text: 'secondary600',\n border: 'secondary200',\n background: 'secondary100',\n };\n }\n case 'PUT': {\n return {\n text: 'warning600',\n border: 'warning200',\n background: 'warning100',\n };\n }\n case 'DELETE': {\n return {\n text: 'danger600',\n border: 'danger200',\n background: 'danger100',\n };\n }\n default: {\n return {\n text: 'neutral600',\n border: 'neutral200',\n background: 'neutral100',\n };\n }\n }\n};\n\nconst MethodBox = styled<BoxComponent>(Box)`\n margin: -1px;\n border-radius: ${({ theme }) => theme.spaces[1]} 0 0 ${({ theme }) => theme.spaces[1]};\n`;\n\ninterface BoundRouteProps {\n route: {\n handler: string;\n method: HttpVerb;\n path: string;\n };\n}\n\nexport const BoundRoute = ({ route = DEFAULT_ROUTE }: BoundRouteProps) => {\n const { formatMessage } = useIntl();\n\n const { method, handler: title, path } = route;\n const formattedRoute = path ? tail(path.split('/')) : [];\n const [controller = '', action = ''] = title ? title.split('.') : [];\n const colors = getMethodColor(route.method);\n\n return (\n <Flex direction=\"column\" alignItems=\"stretch\" gap={2}>\n <Typography variant=\"delta\" tag=\"h3\">\n {formatMessage({\n id: 'Settings.apiTokens.createPage.BoundRoute.title',\n defaultMessage: 'Bound route to',\n })}\n &nbsp;\n <span>{controller}</span>\n <Typography variant=\"delta\" textColor=\"primary600\">\n .{action}\n </Typography>\n </Typography>\n <Flex hasRadius background=\"neutral0\" borderColor=\"neutral200\" gap={0}>\n <MethodBox background={colors.background} borderColor={colors.border} padding={2}>\n <Typography fontWeight=\"bold\" textColor={colors.text}>\n {method}\n </Typography>\n </MethodBox>\n <Box paddingLeft={2} paddingRight={2}>\n {map(formattedRoute, (value) => (\n <Typography key={value} textColor={value.includes(':') ? 'neutral600' : 'neutral900'}>\n /{value}\n </Typography>\n ))}\n </Box>\n </Flex>\n </Flex>\n );\n};\n"],"names":["DEFAULT_ROUTE","handler","method","path","getMethodColor","verb","text","border","background","MethodBox","styled","Box","theme","spaces","BoundRoute","route","formatMessage","useIntl","title","formattedRoute","tail","split","controller","action","colors","_jsxs","Flex","direction","alignItems","gap","Typography","variant","tag","id","defaultMessage","_jsx","span","textColor","hasRadius","borderColor","padding","fontWeight","paddingLeft","paddingRight","map","value","includes"],"mappings":";;;;;;;AAMA,MAAMA,aAAAA,GAAuD;IAC3DC,OAAAA,EAAS,oBAAA;IACTC,MAAAA,EAAQ,KAAA;IACRC,IAAAA,EAAM;AACR,CAAA;AAUA,MAAMC,iBAAiB,CAACC,IAAAA,GAAAA;IACtB,OAAQA,IAAAA;QACN,KAAK,MAAA;AAAQ,YAAA;gBACX,OAAO;oBACLC,IAAAA,EAAM,YAAA;oBACNC,MAAAA,EAAQ,YAAA;oBACRC,UAAAA,EAAY;AACd,iBAAA;AACF,YAAA;QACA,KAAK,KAAA;AAAO,YAAA;gBACV,OAAO;oBACLF,IAAAA,EAAM,cAAA;oBACNC,MAAAA,EAAQ,cAAA;oBACRC,UAAAA,EAAY;AACd,iBAAA;AACF,YAAA;QACA,KAAK,KAAA;AAAO,YAAA;gBACV,OAAO;oBACLF,IAAAA,EAAM,YAAA;oBACNC,MAAAA,EAAQ,YAAA;oBACRC,UAAAA,EAAY;AACd,iBAAA;AACF,YAAA;QACA,KAAK,QAAA;AAAU,YAAA;gBACb,OAAO;oBACLF,IAAAA,EAAM,WAAA;oBACNC,MAAAA,EAAQ,WAAA;oBACRC,UAAAA,EAAY;AACd,iBAAA;AACF,YAAA;AACA,QAAA;AAAS,YAAA;gBACP,OAAO;oBACLF,IAAAA,EAAM,YAAA;oBACNC,MAAAA,EAAQ,YAAA;oBACRC,UAAAA,EAAY;AACd,iBAAA;AACF,YAAA;AACF;AACF,CAAA;AAEA,MAAMC,SAAAA,GAAYC,MAAAA,CAAqBC,GAAAA,CAAI;;iBAE1B,EAAE,CAAC,EAAEC,KAAK,EAAE,GAAKA,KAAAA,CAAMC,MAAM,CAAC,CAAA,CAAE,CAAC,KAAK,EAAE,CAAC,EAAED,KAAK,EAAE,GAAKA,KAAAA,CAAMC,MAAM,CAAC,CAAA,CAAE,CAAC;AACxF,CAAC;MAUYC,UAAAA,GAAa,CAAC,EAAEC,KAAAA,GAAQf,aAAa,EAAmB,GAAA;IACnE,MAAM,EAAEgB,aAAa,EAAE,GAAGC,OAAAA,EAAAA;IAE1B,MAAM,EAAEf,MAAM,EAAED,OAAAA,EAASiB,KAAK,EAAEf,IAAI,EAAE,GAAGY,KAAAA;AACzC,IAAA,MAAMI,iBAAiBhB,IAAAA,GAAOiB,IAAAA,CAAKjB,KAAKkB,KAAK,CAAC,QAAQ,EAAE;AACxD,IAAA,MAAM,CAACC,UAAAA,GAAa,EAAE,EAAEC,MAAAA,GAAS,EAAE,CAAC,GAAGL,KAAAA,GAAQA,KAAAA,CAAMG,KAAK,CAAC,OAAO,EAAE;IACpE,MAAMG,MAAAA,GAASpB,cAAAA,CAAeW,KAAAA,CAAMb,MAAM,CAAA;AAE1C,IAAA,qBACEuB,IAAA,CAACC,IAAAA,EAAAA;QAAKC,SAAAA,EAAU,QAAA;QAASC,UAAAA,EAAW,SAAA;QAAUC,GAAAA,EAAK,CAAA;;0BACjDJ,IAAA,CAACK,UAAAA,EAAAA;gBAAWC,OAAAA,EAAQ,OAAA;gBAAQC,GAAAA,EAAI,IAAA;;oBAC7BhB,aAAAA,CAAc;wBACbiB,EAAAA,EAAI,gDAAA;wBACJC,cAAAA,EAAgB;AAClB,qBAAA,CAAA;AAAG,oBAAA,GAAA;kCAEHC,GAAA,CAACC,MAAAA,EAAAA;AAAMd,wBAAAA,QAAAA,EAAAA;;kCACPG,IAAA,CAACK,UAAAA,EAAAA;wBAAWC,OAAAA,EAAQ,OAAA;wBAAQM,SAAAA,EAAU,YAAA;;AAAa,4BAAA,GAAA;AAC/Cd,4BAAAA;;;;;0BAGNE,IAAA,CAACC,IAAAA,EAAAA;gBAAKY,SAAS,EAAA,IAAA;gBAAC9B,UAAAA,EAAW,UAAA;gBAAW+B,WAAAA,EAAY,YAAA;gBAAaV,GAAAA,EAAK,CAAA;;kCAClEM,GAAA,CAAC1B,SAAAA,EAAAA;AAAUD,wBAAAA,UAAAA,EAAYgB,OAAOhB,UAAU;AAAE+B,wBAAAA,WAAAA,EAAaf,OAAOjB,MAAM;wBAAEiC,OAAAA,EAAS,CAAA;AAC7E,wBAAA,QAAA,gBAAAL,GAAA,CAACL,UAAAA,EAAAA;4BAAWW,UAAAA,EAAW,MAAA;AAAOJ,4BAAAA,SAAAA,EAAWb,OAAOlB,IAAI;AACjDJ,4BAAAA,QAAAA,EAAAA;;;kCAGLiC,GAAA,CAACxB,GAAAA,EAAAA;wBAAI+B,WAAAA,EAAa,CAAA;wBAAGC,YAAAA,EAAc,CAAA;kCAChCC,GAAAA,CAAIzB,cAAAA,EAAgB,CAAC0B,KAAAA,iBACpBpB,IAAA,CAACK,UAAAA,EAAAA;AAAuBO,gCAAAA,SAAAA,EAAWQ,KAAAA,CAAMC,QAAQ,CAAC,GAAA,CAAA,GAAO,YAAA,GAAe,YAAA;;AAAc,oCAAA,GAAA;AAClFD,oCAAAA;;AADaA,6BAAAA,EAAAA,KAAAA,CAAAA;;;;;;AAQ7B;;;;"}
@@ -13,6 +13,7 @@ function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
13
13
 
14
14
  var capitalize__default = /*#__PURE__*/_interopDefault(capitalize);
15
15
 
16
+ const EMPTY_CONTROLLERS = [];
16
17
  const activeCheckboxWrapperStyles = styledComponents.css`
17
18
  background: ${(props)=>props.theme.colors.primary100};
18
19
 
@@ -43,7 +44,7 @@ const Border = styledComponents.styled.div`
43
44
  align-self: center;
44
45
  border-top: 1px solid ${({ theme })=>theme.colors.neutral150};
45
46
  `;
46
- const CollapsableContentType = ({ controllers = [], label, orderNumber = 0, disabled = false })=>{
47
+ const CollapsableContentType = ({ controllers = EMPTY_CONTROLLERS, label, orderNumber = 0, disabled = false })=>{
47
48
  const { value: { onChangeSelectAll, onChange, selectedActions, setSelectedAction, selectedAction } } = apiTokenPermissions.useApiTokenPermissions();
48
49
  const { formatMessage } = reactIntl.useIntl();
49
50
  const isActionSelected = (actionId)=>actionId === selectedAction;
@@ -1 +1 @@
1
- {"version":3,"file":"CollapsableContentType.js","sources":["../../../../../../../../../../admin/src/pages/Settings/pages/ApiTokens/EditView/components/CollapsableContentType.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport {\n Accordion,\n Box,\n BoxComponent,\n Checkbox,\n Flex,\n Grid,\n Typography,\n} from '@strapi/design-system';\nimport { Cog } from '@strapi/icons';\nimport capitalize from 'lodash/capitalize';\nimport { useIntl } from 'react-intl';\nimport { styled, css } from 'styled-components';\n\nimport { ContentApiPermission } from '../../../../../../../../shared/contracts/content-api/permissions';\nimport { useApiTokenPermissions } from '../apiTokenPermissions';\n\nconst activeCheckboxWrapperStyles = css`\n background: ${(props) => props.theme.colors.primary100};\n\n #cog {\n opacity: 1;\n }\n`;\n\nconst CheckboxWrapper = styled<BoxComponent>(Box)<{ $isActive: boolean }>`\n display: flex;\n justify-content: space-between;\n align-items: center;\n\n #cog {\n opacity: 0;\n path {\n fill: ${(props) => props.theme.colors.primary600};\n }\n }\n\n /* Show active style both on hover and when the action is selected */\n ${(props) => props.$isActive && activeCheckboxWrapperStyles}\n &:hover {\n ${activeCheckboxWrapperStyles}\n }\n`;\n\nconst Border = styled.div`\n flex: 1;\n align-self: center;\n border-top: 1px solid ${({ theme }) => theme.colors.neutral150};\n`;\n\ninterface CollapsableContentTypeProps {\n controllers?: ContentApiPermission['controllers'];\n label: ContentApiPermission['label'];\n orderNumber?: number;\n disabled?: boolean;\n}\n\nexport const CollapsableContentType = ({\n controllers = [],\n label,\n orderNumber = 0,\n disabled = false,\n}: CollapsableContentTypeProps) => {\n const {\n value: { onChangeSelectAll, onChange, selectedActions, setSelectedAction, selectedAction },\n } = useApiTokenPermissions();\n const { formatMessage } = useIntl();\n\n const isActionSelected = (actionId: string) => actionId === selectedAction;\n\n return (\n <Accordion.Item value={`${label}-${orderNumber}`}>\n <Accordion.Header variant={orderNumber % 2 ? 'primary' : 'secondary'}>\n <Accordion.Trigger>{capitalize(label)}</Accordion.Trigger>\n </Accordion.Header>\n <Accordion.Content>\n {controllers?.map((controller) => {\n const allActionsSelected = controller.actions.every((action) =>\n selectedActions.includes(action.actionId)\n );\n\n const someActionsSelected = controller.actions.some((action) =>\n selectedActions.includes(action.actionId)\n );\n\n return (\n <Box key={`${label}.${controller?.controller}`}>\n <Flex justifyContent=\"space-between\" alignItems=\"center\" padding={4}>\n <Box paddingRight={4}>\n <Typography variant=\"sigma\" textColor=\"neutral600\">\n {controller?.controller}\n </Typography>\n </Box>\n <Border />\n <Box paddingLeft={4}>\n <Checkbox\n checked={\n !allActionsSelected && someActionsSelected\n ? 'indeterminate'\n : allActionsSelected\n }\n onCheckedChange={() => {\n onChangeSelectAll({ target: { value: [...controller.actions] } });\n }}\n disabled={disabled}\n >\n {formatMessage({ id: 'app.utils.select-all', defaultMessage: 'Select all' })}\n </Checkbox>\n </Box>\n </Flex>\n <Grid.Root gap={4} padding={4}>\n {controller?.actions &&\n controller?.actions.map((action) => {\n return (\n <Grid.Item\n xs={12}\n s={6}\n key={action.actionId}\n direction=\"column\"\n alignItems=\"stretch\"\n >\n <CheckboxWrapper\n $isActive={isActionSelected(action.actionId)}\n padding={2}\n hasRadius\n >\n <Checkbox\n checked={selectedActions.includes(action.actionId)}\n name={action.actionId}\n onCheckedChange={() => {\n onChange({ target: { value: action.actionId } });\n }}\n disabled={disabled}\n >\n <span style={{ overflowWrap: 'anywhere' }}>{action.action}</span>\n </Checkbox>\n <button\n type=\"button\"\n data-testid=\"action-cog\"\n onClick={() =>\n setSelectedAction({ target: { value: action.actionId } })\n }\n style={{ display: 'inline-flex', alignItems: 'center' }}\n >\n <Cog id=\"cog\" />\n </button>\n </CheckboxWrapper>\n </Grid.Item>\n );\n })}\n </Grid.Root>\n </Box>\n );\n })}\n </Accordion.Content>\n </Accordion.Item>\n );\n};\n"],"names":["activeCheckboxWrapperStyles","css","props","theme","colors","primary100","CheckboxWrapper","styled","Box","primary600","$isActive","Border","div","neutral150","CollapsableContentType","controllers","label","orderNumber","disabled","value","onChangeSelectAll","onChange","selectedActions","setSelectedAction","selectedAction","useApiTokenPermissions","formatMessage","useIntl","isActionSelected","actionId","_jsxs","Accordion","Item","_jsx","Header","variant","Trigger","capitalize","Content","map","controller","allActionsSelected","actions","every","action","includes","someActionsSelected","some","Flex","justifyContent","alignItems","padding","paddingRight","Typography","textColor","paddingLeft","Checkbox","checked","onCheckedChange","target","id","defaultMessage","Grid","Root","gap","xs","s","direction","hasRadius","name","span","style","overflowWrap","button","type","data-testid","onClick","display","Cog"],"mappings":"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"}
1
+ {"version":3,"file":"CollapsableContentType.js","sources":["../../../../../../../../../../admin/src/pages/Settings/pages/ApiTokens/EditView/components/CollapsableContentType.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport {\n Accordion,\n Box,\n BoxComponent,\n Checkbox,\n Flex,\n Grid,\n Typography,\n} from '@strapi/design-system';\nimport { Cog } from '@strapi/icons';\nimport capitalize from 'lodash/capitalize';\nimport { useIntl } from 'react-intl';\nimport { styled, css } from 'styled-components';\n\nimport { ContentApiPermission } from '../../../../../../../../shared/contracts/content-api/permissions';\nimport { useApiTokenPermissions } from '../apiTokenPermissions';\n\nconst EMPTY_CONTROLLERS: NonNullable<CollapsableContentTypeProps['controllers']> = [];\n\nconst activeCheckboxWrapperStyles = css`\n background: ${(props) => props.theme.colors.primary100};\n\n #cog {\n opacity: 1;\n }\n`;\n\nconst CheckboxWrapper = styled<BoxComponent>(Box)<{ $isActive: boolean }>`\n display: flex;\n justify-content: space-between;\n align-items: center;\n\n #cog {\n opacity: 0;\n path {\n fill: ${(props) => props.theme.colors.primary600};\n }\n }\n\n /* Show active style both on hover and when the action is selected */\n ${(props) => props.$isActive && activeCheckboxWrapperStyles}\n &:hover {\n ${activeCheckboxWrapperStyles}\n }\n`;\n\nconst Border = styled.div`\n flex: 1;\n align-self: center;\n border-top: 1px solid ${({ theme }) => theme.colors.neutral150};\n`;\n\ninterface CollapsableContentTypeProps {\n controllers?: ContentApiPermission['controllers'];\n label: ContentApiPermission['label'];\n orderNumber?: number;\n disabled?: boolean;\n}\n\nexport const CollapsableContentType = ({\n controllers = EMPTY_CONTROLLERS,\n label,\n orderNumber = 0,\n disabled = false,\n}: CollapsableContentTypeProps) => {\n const {\n value: { onChangeSelectAll, onChange, selectedActions, setSelectedAction, selectedAction },\n } = useApiTokenPermissions();\n const { formatMessage } = useIntl();\n\n const isActionSelected = (actionId: string) => actionId === selectedAction;\n\n return (\n <Accordion.Item value={`${label}-${orderNumber}`}>\n <Accordion.Header variant={orderNumber % 2 ? 'primary' : 'secondary'}>\n <Accordion.Trigger>{capitalize(label)}</Accordion.Trigger>\n </Accordion.Header>\n <Accordion.Content>\n {controllers?.map((controller) => {\n const allActionsSelected = controller.actions.every((action) =>\n selectedActions.includes(action.actionId)\n );\n\n const someActionsSelected = controller.actions.some((action) =>\n selectedActions.includes(action.actionId)\n );\n\n return (\n <Box key={`${label}.${controller?.controller}`}>\n <Flex justifyContent=\"space-between\" alignItems=\"center\" padding={4}>\n <Box paddingRight={4}>\n <Typography variant=\"sigma\" textColor=\"neutral600\">\n {controller?.controller}\n </Typography>\n </Box>\n <Border />\n <Box paddingLeft={4}>\n <Checkbox\n checked={\n !allActionsSelected && someActionsSelected\n ? 'indeterminate'\n : allActionsSelected\n }\n onCheckedChange={() => {\n onChangeSelectAll({ target: { value: [...controller.actions] } });\n }}\n disabled={disabled}\n >\n {formatMessage({ id: 'app.utils.select-all', defaultMessage: 'Select all' })}\n </Checkbox>\n </Box>\n </Flex>\n <Grid.Root gap={4} padding={4}>\n {controller?.actions &&\n controller?.actions.map((action) => {\n return (\n <Grid.Item\n xs={12}\n s={6}\n key={action.actionId}\n direction=\"column\"\n alignItems=\"stretch\"\n >\n <CheckboxWrapper\n $isActive={isActionSelected(action.actionId)}\n padding={2}\n hasRadius\n >\n <Checkbox\n checked={selectedActions.includes(action.actionId)}\n name={action.actionId}\n onCheckedChange={() => {\n onChange({ target: { value: action.actionId } });\n }}\n disabled={disabled}\n >\n <span style={{ overflowWrap: 'anywhere' }}>{action.action}</span>\n </Checkbox>\n <button\n type=\"button\"\n data-testid=\"action-cog\"\n onClick={() =>\n setSelectedAction({ target: { value: action.actionId } })\n }\n style={{ display: 'inline-flex', alignItems: 'center' }}\n >\n <Cog id=\"cog\" />\n </button>\n </CheckboxWrapper>\n </Grid.Item>\n );\n })}\n </Grid.Root>\n </Box>\n );\n })}\n </Accordion.Content>\n </Accordion.Item>\n );\n};\n"],"names":["EMPTY_CONTROLLERS","activeCheckboxWrapperStyles","css","props","theme","colors","primary100","CheckboxWrapper","styled","Box","primary600","$isActive","Border","div","neutral150","CollapsableContentType","controllers","label","orderNumber","disabled","value","onChangeSelectAll","onChange","selectedActions","setSelectedAction","selectedAction","useApiTokenPermissions","formatMessage","useIntl","isActionSelected","actionId","_jsxs","Accordion","Item","_jsx","Header","variant","Trigger","capitalize","Content","map","controller","allActionsSelected","actions","every","action","includes","someActionsSelected","some","Flex","justifyContent","alignItems","padding","paddingRight","Typography","textColor","paddingLeft","Checkbox","checked","onCheckedChange","target","id","defaultMessage","Grid","Root","gap","xs","s","direction","hasRadius","name","span","style","overflowWrap","button","type","data-testid","onClick","display","Cog"],"mappings":"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"}
@@ -7,6 +7,7 @@ import { useIntl } from 'react-intl';
7
7
  import { styled, css } from 'styled-components';
8
8
  import { useApiTokenPermissions } from '../apiTokenPermissions.mjs';
9
9
 
10
+ const EMPTY_CONTROLLERS = [];
10
11
  const activeCheckboxWrapperStyles = css`
11
12
  background: ${(props)=>props.theme.colors.primary100};
12
13
 
@@ -37,7 +38,7 @@ const Border = styled.div`
37
38
  align-self: center;
38
39
  border-top: 1px solid ${({ theme })=>theme.colors.neutral150};
39
40
  `;
40
- const CollapsableContentType = ({ controllers = [], label, orderNumber = 0, disabled = false })=>{
41
+ const CollapsableContentType = ({ controllers = EMPTY_CONTROLLERS, label, orderNumber = 0, disabled = false })=>{
41
42
  const { value: { onChangeSelectAll, onChange, selectedActions, setSelectedAction, selectedAction } } = useApiTokenPermissions();
42
43
  const { formatMessage } = useIntl();
43
44
  const isActionSelected = (actionId)=>actionId === selectedAction;
@@ -1 +1 @@
1
- {"version":3,"file":"CollapsableContentType.mjs","sources":["../../../../../../../../../../admin/src/pages/Settings/pages/ApiTokens/EditView/components/CollapsableContentType.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport {\n Accordion,\n Box,\n BoxComponent,\n Checkbox,\n Flex,\n Grid,\n Typography,\n} from '@strapi/design-system';\nimport { Cog } from '@strapi/icons';\nimport capitalize from 'lodash/capitalize';\nimport { useIntl } from 'react-intl';\nimport { styled, css } from 'styled-components';\n\nimport { ContentApiPermission } from '../../../../../../../../shared/contracts/content-api/permissions';\nimport { useApiTokenPermissions } from '../apiTokenPermissions';\n\nconst activeCheckboxWrapperStyles = css`\n background: ${(props) => props.theme.colors.primary100};\n\n #cog {\n opacity: 1;\n }\n`;\n\nconst CheckboxWrapper = styled<BoxComponent>(Box)<{ $isActive: boolean }>`\n display: flex;\n justify-content: space-between;\n align-items: center;\n\n #cog {\n opacity: 0;\n path {\n fill: ${(props) => props.theme.colors.primary600};\n }\n }\n\n /* Show active style both on hover and when the action is selected */\n ${(props) => props.$isActive && activeCheckboxWrapperStyles}\n &:hover {\n ${activeCheckboxWrapperStyles}\n }\n`;\n\nconst Border = styled.div`\n flex: 1;\n align-self: center;\n border-top: 1px solid ${({ theme }) => theme.colors.neutral150};\n`;\n\ninterface CollapsableContentTypeProps {\n controllers?: ContentApiPermission['controllers'];\n label: ContentApiPermission['label'];\n orderNumber?: number;\n disabled?: boolean;\n}\n\nexport const CollapsableContentType = ({\n controllers = [],\n label,\n orderNumber = 0,\n disabled = false,\n}: CollapsableContentTypeProps) => {\n const {\n value: { onChangeSelectAll, onChange, selectedActions, setSelectedAction, selectedAction },\n } = useApiTokenPermissions();\n const { formatMessage } = useIntl();\n\n const isActionSelected = (actionId: string) => actionId === selectedAction;\n\n return (\n <Accordion.Item value={`${label}-${orderNumber}`}>\n <Accordion.Header variant={orderNumber % 2 ? 'primary' : 'secondary'}>\n <Accordion.Trigger>{capitalize(label)}</Accordion.Trigger>\n </Accordion.Header>\n <Accordion.Content>\n {controllers?.map((controller) => {\n const allActionsSelected = controller.actions.every((action) =>\n selectedActions.includes(action.actionId)\n );\n\n const someActionsSelected = controller.actions.some((action) =>\n selectedActions.includes(action.actionId)\n );\n\n return (\n <Box key={`${label}.${controller?.controller}`}>\n <Flex justifyContent=\"space-between\" alignItems=\"center\" padding={4}>\n <Box paddingRight={4}>\n <Typography variant=\"sigma\" textColor=\"neutral600\">\n {controller?.controller}\n </Typography>\n </Box>\n <Border />\n <Box paddingLeft={4}>\n <Checkbox\n checked={\n !allActionsSelected && someActionsSelected\n ? 'indeterminate'\n : allActionsSelected\n }\n onCheckedChange={() => {\n onChangeSelectAll({ target: { value: [...controller.actions] } });\n }}\n disabled={disabled}\n >\n {formatMessage({ id: 'app.utils.select-all', defaultMessage: 'Select all' })}\n </Checkbox>\n </Box>\n </Flex>\n <Grid.Root gap={4} padding={4}>\n {controller?.actions &&\n controller?.actions.map((action) => {\n return (\n <Grid.Item\n xs={12}\n s={6}\n key={action.actionId}\n direction=\"column\"\n alignItems=\"stretch\"\n >\n <CheckboxWrapper\n $isActive={isActionSelected(action.actionId)}\n padding={2}\n hasRadius\n >\n <Checkbox\n checked={selectedActions.includes(action.actionId)}\n name={action.actionId}\n onCheckedChange={() => {\n onChange({ target: { value: action.actionId } });\n }}\n disabled={disabled}\n >\n <span style={{ overflowWrap: 'anywhere' }}>{action.action}</span>\n </Checkbox>\n <button\n type=\"button\"\n data-testid=\"action-cog\"\n onClick={() =>\n setSelectedAction({ target: { value: action.actionId } })\n }\n style={{ display: 'inline-flex', alignItems: 'center' }}\n >\n <Cog id=\"cog\" />\n </button>\n </CheckboxWrapper>\n </Grid.Item>\n );\n })}\n </Grid.Root>\n </Box>\n );\n })}\n </Accordion.Content>\n </Accordion.Item>\n );\n};\n"],"names":["activeCheckboxWrapperStyles","css","props","theme","colors","primary100","CheckboxWrapper","styled","Box","primary600","$isActive","Border","div","neutral150","CollapsableContentType","controllers","label","orderNumber","disabled","value","onChangeSelectAll","onChange","selectedActions","setSelectedAction","selectedAction","useApiTokenPermissions","formatMessage","useIntl","isActionSelected","actionId","_jsxs","Accordion","Item","_jsx","Header","variant","Trigger","capitalize","Content","map","controller","allActionsSelected","actions","every","action","includes","someActionsSelected","some","Flex","justifyContent","alignItems","padding","paddingRight","Typography","textColor","paddingLeft","Checkbox","checked","onCheckedChange","target","id","defaultMessage","Grid","Root","gap","xs","s","direction","hasRadius","name","span","style","overflowWrap","button","type","data-testid","onClick","display","Cog"],"mappings":"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"}
1
+ {"version":3,"file":"CollapsableContentType.mjs","sources":["../../../../../../../../../../admin/src/pages/Settings/pages/ApiTokens/EditView/components/CollapsableContentType.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport {\n Accordion,\n Box,\n BoxComponent,\n Checkbox,\n Flex,\n Grid,\n Typography,\n} from '@strapi/design-system';\nimport { Cog } from '@strapi/icons';\nimport capitalize from 'lodash/capitalize';\nimport { useIntl } from 'react-intl';\nimport { styled, css } from 'styled-components';\n\nimport { ContentApiPermission } from '../../../../../../../../shared/contracts/content-api/permissions';\nimport { useApiTokenPermissions } from '../apiTokenPermissions';\n\nconst EMPTY_CONTROLLERS: NonNullable<CollapsableContentTypeProps['controllers']> = [];\n\nconst activeCheckboxWrapperStyles = css`\n background: ${(props) => props.theme.colors.primary100};\n\n #cog {\n opacity: 1;\n }\n`;\n\nconst CheckboxWrapper = styled<BoxComponent>(Box)<{ $isActive: boolean }>`\n display: flex;\n justify-content: space-between;\n align-items: center;\n\n #cog {\n opacity: 0;\n path {\n fill: ${(props) => props.theme.colors.primary600};\n }\n }\n\n /* Show active style both on hover and when the action is selected */\n ${(props) => props.$isActive && activeCheckboxWrapperStyles}\n &:hover {\n ${activeCheckboxWrapperStyles}\n }\n`;\n\nconst Border = styled.div`\n flex: 1;\n align-self: center;\n border-top: 1px solid ${({ theme }) => theme.colors.neutral150};\n`;\n\ninterface CollapsableContentTypeProps {\n controllers?: ContentApiPermission['controllers'];\n label: ContentApiPermission['label'];\n orderNumber?: number;\n disabled?: boolean;\n}\n\nexport const CollapsableContentType = ({\n controllers = EMPTY_CONTROLLERS,\n label,\n orderNumber = 0,\n disabled = false,\n}: CollapsableContentTypeProps) => {\n const {\n value: { onChangeSelectAll, onChange, selectedActions, setSelectedAction, selectedAction },\n } = useApiTokenPermissions();\n const { formatMessage } = useIntl();\n\n const isActionSelected = (actionId: string) => actionId === selectedAction;\n\n return (\n <Accordion.Item value={`${label}-${orderNumber}`}>\n <Accordion.Header variant={orderNumber % 2 ? 'primary' : 'secondary'}>\n <Accordion.Trigger>{capitalize(label)}</Accordion.Trigger>\n </Accordion.Header>\n <Accordion.Content>\n {controllers?.map((controller) => {\n const allActionsSelected = controller.actions.every((action) =>\n selectedActions.includes(action.actionId)\n );\n\n const someActionsSelected = controller.actions.some((action) =>\n selectedActions.includes(action.actionId)\n );\n\n return (\n <Box key={`${label}.${controller?.controller}`}>\n <Flex justifyContent=\"space-between\" alignItems=\"center\" padding={4}>\n <Box paddingRight={4}>\n <Typography variant=\"sigma\" textColor=\"neutral600\">\n {controller?.controller}\n </Typography>\n </Box>\n <Border />\n <Box paddingLeft={4}>\n <Checkbox\n checked={\n !allActionsSelected && someActionsSelected\n ? 'indeterminate'\n : allActionsSelected\n }\n onCheckedChange={() => {\n onChangeSelectAll({ target: { value: [...controller.actions] } });\n }}\n disabled={disabled}\n >\n {formatMessage({ id: 'app.utils.select-all', defaultMessage: 'Select all' })}\n </Checkbox>\n </Box>\n </Flex>\n <Grid.Root gap={4} padding={4}>\n {controller?.actions &&\n controller?.actions.map((action) => {\n return (\n <Grid.Item\n xs={12}\n s={6}\n key={action.actionId}\n direction=\"column\"\n alignItems=\"stretch\"\n >\n <CheckboxWrapper\n $isActive={isActionSelected(action.actionId)}\n padding={2}\n hasRadius\n >\n <Checkbox\n checked={selectedActions.includes(action.actionId)}\n name={action.actionId}\n onCheckedChange={() => {\n onChange({ target: { value: action.actionId } });\n }}\n disabled={disabled}\n >\n <span style={{ overflowWrap: 'anywhere' }}>{action.action}</span>\n </Checkbox>\n <button\n type=\"button\"\n data-testid=\"action-cog\"\n onClick={() =>\n setSelectedAction({ target: { value: action.actionId } })\n }\n style={{ display: 'inline-flex', alignItems: 'center' }}\n >\n <Cog id=\"cog\" />\n </button>\n </CheckboxWrapper>\n </Grid.Item>\n );\n })}\n </Grid.Root>\n </Box>\n );\n })}\n </Accordion.Content>\n </Accordion.Item>\n );\n};\n"],"names":["EMPTY_CONTROLLERS","activeCheckboxWrapperStyles","css","props","theme","colors","primary100","CheckboxWrapper","styled","Box","primary600","$isActive","Border","div","neutral150","CollapsableContentType","controllers","label","orderNumber","disabled","value","onChangeSelectAll","onChange","selectedActions","setSelectedAction","selectedAction","useApiTokenPermissions","formatMessage","useIntl","isActionSelected","actionId","_jsxs","Accordion","Item","_jsx","Header","variant","Trigger","capitalize","Content","map","controller","allActionsSelected","actions","every","action","includes","someActionsSelected","some","Flex","justifyContent","alignItems","padding","paddingRight","Typography","textColor","paddingLeft","Checkbox","checked","onCheckedChange","target","id","defaultMessage","Grid","Root","gap","xs","s","direction","hasRadius","name","span","style","overflowWrap","button","type","data-testid","onClick","display","Cog"],"mappings":"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"}
@@ -8,9 +8,9 @@ const transformPermissionsData = (data)=>{
8
8
  layout.permissions = Object.entries(data).map(([apiId, permission])=>({
9
9
  apiId,
10
10
  label: apiId.split('::')[1],
11
- controllers: Object.keys(permission.controllers).map((controller)=>({
11
+ controllers: Object.keys(permission.controllers).flatMap((controller)=>({
12
12
  controller,
13
- actions: controller in permission.controllers ? permission.controllers[controller].map((action)=>{
13
+ actions: controller in permission.controllers ? permission.controllers[controller].flatMap((action)=>{
14
14
  const actionId = `${apiId}.${controller}.${action}`;
15
15
  if (apiId.includes('api::')) {
16
16
  layout.allActionsIds.push(actionId);
@@ -19,8 +19,8 @@ const transformPermissionsData = (data)=>{
19
19
  action,
20
20
  actionId
21
21
  };
22
- }).flat() : []
23
- })).flat()
22
+ }) : []
23
+ }))
24
24
  }));
25
25
  return layout;
26
26
  };
@@ -1 +1 @@
1
- {"version":3,"file":"transformPermissionsData.js","sources":["../../../../../../../../../../admin/src/pages/Settings/pages/ApiTokens/EditView/utils/transformPermissionsData.ts"],"sourcesContent":["import { ContentApiPermission } from '../../../../../../../../shared/contracts/content-api/permissions';\n\ninterface Layout {\n allActionsIds: string[];\n permissions: {\n apiId: string;\n label: string;\n controllers: { controller: string; actions: { action: string; actionId: string }[] }[];\n }[];\n}\n\nexport const transformPermissionsData = (data: ContentApiPermission) => {\n const layout: Layout = {\n allActionsIds: [],\n permissions: [],\n };\n\n layout.permissions = Object.entries(data).map(([apiId, permission]) => ({\n apiId,\n label: apiId.split('::')[1],\n controllers: Object.keys(permission.controllers)\n .map((controller) => ({\n controller,\n actions:\n controller in permission.controllers\n ? permission.controllers[controller]\n .map((action: ContentApiPermission['controllers']) => {\n const actionId = `${apiId}.${controller}.${action}`;\n\n if (apiId.includes('api::')) {\n layout.allActionsIds.push(actionId);\n }\n\n return {\n action,\n actionId,\n };\n })\n .flat()\n : [],\n }))\n .flat(),\n }));\n\n return layout;\n};\n"],"names":["transformPermissionsData","data","layout","allActionsIds","permissions","Object","entries","map","apiId","permission","label","split","controllers","keys","controller","actions","action","actionId","includes","push","flat"],"mappings":";;AAWO,MAAMA,2BAA2B,CAACC,IAAAA,GAAAA;AACvC,IAAA,MAAMC,MAAAA,GAAiB;AACrBC,QAAAA,aAAAA,EAAe,EAAE;AACjBC,QAAAA,WAAAA,EAAa;AACf,KAAA;AAEAF,IAAAA,MAAAA,CAAOE,WAAW,GAAGC,MAAAA,CAAOC,OAAO,CAACL,IAAAA,CAAAA,CAAMM,GAAG,CAAC,CAAC,CAACC,KAAAA,EAAOC,UAAAA,CAAW,IAAM;AACtED,YAAAA,KAAAA;AACAE,YAAAA,KAAAA,EAAOF,KAAAA,CAAMG,KAAK,CAAC,IAAA,CAAK,CAAC,CAAA,CAAE;YAC3BC,WAAAA,EAAaP,MAAAA,CAAOQ,IAAI,CAACJ,UAAAA,CAAWG,WAAW,EAC5CL,GAAG,CAAC,CAACO,UAAAA,IAAgB;AACpBA,oBAAAA,UAAAA;oBACAC,OAAAA,EACED,UAAAA,IAAcL,UAAAA,CAAWG,WAAW,GAChCH,UAAAA,CAAWG,WAAW,CAACE,UAAAA,CAAW,CAC/BP,GAAG,CAAC,CAACS,MAAAA,GAAAA;wBACJ,MAAMC,QAAAA,GAAW,GAAGT,KAAAA,CAAM,CAAC,EAAEM,UAAAA,CAAW,CAAC,EAAEE,MAAAA,CAAAA,CAAQ;wBAEnD,IAAIR,KAAAA,CAAMU,QAAQ,CAAC,OAAA,CAAA,EAAU;4BAC3BhB,MAAAA,CAAOC,aAAa,CAACgB,IAAI,CAACF,QAAAA,CAAAA;AAC5B,wBAAA;wBAEA,OAAO;AACLD,4BAAAA,MAAAA;AACAC,4BAAAA;AACF,yBAAA;oBACF,CAAA,CAAA,CACCG,IAAI,KACP;AACR,iBAAA,GACCA,IAAI;SACT,CAAA,CAAA;IAEA,OAAOlB,MAAAA;AACT;;;;"}
1
+ {"version":3,"file":"transformPermissionsData.js","sources":["../../../../../../../../../../admin/src/pages/Settings/pages/ApiTokens/EditView/utils/transformPermissionsData.ts"],"sourcesContent":["import { ContentApiPermission } from '../../../../../../../../shared/contracts/content-api/permissions';\n\ninterface Layout {\n allActionsIds: string[];\n permissions: {\n apiId: string;\n label: string;\n controllers: { controller: string; actions: { action: string; actionId: string }[] }[];\n }[];\n}\n\nexport const transformPermissionsData = (data: ContentApiPermission) => {\n const layout: Layout = {\n allActionsIds: [],\n permissions: [],\n };\n\n layout.permissions = Object.entries(data).map(([apiId, permission]) => ({\n apiId,\n label: apiId.split('::')[1],\n controllers: Object.keys(permission.controllers).flatMap((controller) => ({\n controller,\n actions:\n controller in permission.controllers\n ? permission.controllers[controller].flatMap(\n (action: ContentApiPermission['controllers']) => {\n const actionId = `${apiId}.${controller}.${action}`;\n\n if (apiId.includes('api::')) {\n layout.allActionsIds.push(actionId);\n }\n\n return {\n action,\n actionId,\n };\n }\n )\n : [],\n })),\n }));\n\n return layout;\n};\n"],"names":["transformPermissionsData","data","layout","allActionsIds","permissions","Object","entries","map","apiId","permission","label","split","controllers","keys","flatMap","controller","actions","action","actionId","includes","push"],"mappings":";;AAWO,MAAMA,2BAA2B,CAACC,IAAAA,GAAAA;AACvC,IAAA,MAAMC,MAAAA,GAAiB;AACrBC,QAAAA,aAAAA,EAAe,EAAE;AACjBC,QAAAA,WAAAA,EAAa;AACf,KAAA;AAEAF,IAAAA,MAAAA,CAAOE,WAAW,GAAGC,MAAAA,CAAOC,OAAO,CAACL,IAAAA,CAAAA,CAAMM,GAAG,CAAC,CAAC,CAACC,KAAAA,EAAOC,UAAAA,CAAW,IAAM;AACtED,YAAAA,KAAAA;AACAE,YAAAA,KAAAA,EAAOF,KAAAA,CAAMG,KAAK,CAAC,IAAA,CAAK,CAAC,CAAA,CAAE;YAC3BC,WAAAA,EAAaP,MAAAA,CAAOQ,IAAI,CAACJ,UAAAA,CAAWG,WAAW,EAAEE,OAAO,CAAC,CAACC,UAAAA,IAAgB;AACxEA,oBAAAA,UAAAA;oBACAC,OAAAA,EACED,UAAAA,IAAcN,UAAAA,CAAWG,WAAW,GAChCH,UAAAA,CAAWG,WAAW,CAACG,UAAAA,CAAW,CAACD,OAAO,CACxC,CAACG,MAAAA,GAAAA;wBACC,MAAMC,QAAAA,GAAW,GAAGV,KAAAA,CAAM,CAAC,EAAEO,UAAAA,CAAW,CAAC,EAAEE,MAAAA,CAAAA,CAAQ;wBAEnD,IAAIT,KAAAA,CAAMW,QAAQ,CAAC,OAAA,CAAA,EAAU;4BAC3BjB,MAAAA,CAAOC,aAAa,CAACiB,IAAI,CAACF,QAAAA,CAAAA;AAC5B,wBAAA;wBAEA,OAAO;AACLD,4BAAAA,MAAAA;AACAC,4BAAAA;AACF,yBAAA;AACF,oBAAA,CAAA,CAAA,GAEF;iBACR,CAAA;SACF,CAAA,CAAA;IAEA,OAAOhB,MAAAA;AACT;;;;"}
@@ -6,9 +6,9 @@ const transformPermissionsData = (data)=>{
6
6
  layout.permissions = Object.entries(data).map(([apiId, permission])=>({
7
7
  apiId,
8
8
  label: apiId.split('::')[1],
9
- controllers: Object.keys(permission.controllers).map((controller)=>({
9
+ controllers: Object.keys(permission.controllers).flatMap((controller)=>({
10
10
  controller,
11
- actions: controller in permission.controllers ? permission.controllers[controller].map((action)=>{
11
+ actions: controller in permission.controllers ? permission.controllers[controller].flatMap((action)=>{
12
12
  const actionId = `${apiId}.${controller}.${action}`;
13
13
  if (apiId.includes('api::')) {
14
14
  layout.allActionsIds.push(actionId);
@@ -17,8 +17,8 @@ const transformPermissionsData = (data)=>{
17
17
  action,
18
18
  actionId
19
19
  };
20
- }).flat() : []
21
- })).flat()
20
+ }) : []
21
+ }))
22
22
  }));
23
23
  return layout;
24
24
  };
@@ -1 +1 @@
1
- {"version":3,"file":"transformPermissionsData.mjs","sources":["../../../../../../../../../../admin/src/pages/Settings/pages/ApiTokens/EditView/utils/transformPermissionsData.ts"],"sourcesContent":["import { ContentApiPermission } from '../../../../../../../../shared/contracts/content-api/permissions';\n\ninterface Layout {\n allActionsIds: string[];\n permissions: {\n apiId: string;\n label: string;\n controllers: { controller: string; actions: { action: string; actionId: string }[] }[];\n }[];\n}\n\nexport const transformPermissionsData = (data: ContentApiPermission) => {\n const layout: Layout = {\n allActionsIds: [],\n permissions: [],\n };\n\n layout.permissions = Object.entries(data).map(([apiId, permission]) => ({\n apiId,\n label: apiId.split('::')[1],\n controllers: Object.keys(permission.controllers)\n .map((controller) => ({\n controller,\n actions:\n controller in permission.controllers\n ? permission.controllers[controller]\n .map((action: ContentApiPermission['controllers']) => {\n const actionId = `${apiId}.${controller}.${action}`;\n\n if (apiId.includes('api::')) {\n layout.allActionsIds.push(actionId);\n }\n\n return {\n action,\n actionId,\n };\n })\n .flat()\n : [],\n }))\n .flat(),\n }));\n\n return layout;\n};\n"],"names":["transformPermissionsData","data","layout","allActionsIds","permissions","Object","entries","map","apiId","permission","label","split","controllers","keys","controller","actions","action","actionId","includes","push","flat"],"mappings":"AAWO,MAAMA,2BAA2B,CAACC,IAAAA,GAAAA;AACvC,IAAA,MAAMC,MAAAA,GAAiB;AACrBC,QAAAA,aAAAA,EAAe,EAAE;AACjBC,QAAAA,WAAAA,EAAa;AACf,KAAA;AAEAF,IAAAA,MAAAA,CAAOE,WAAW,GAAGC,MAAAA,CAAOC,OAAO,CAACL,IAAAA,CAAAA,CAAMM,GAAG,CAAC,CAAC,CAACC,KAAAA,EAAOC,UAAAA,CAAW,IAAM;AACtED,YAAAA,KAAAA;AACAE,YAAAA,KAAAA,EAAOF,KAAAA,CAAMG,KAAK,CAAC,IAAA,CAAK,CAAC,CAAA,CAAE;YAC3BC,WAAAA,EAAaP,MAAAA,CAAOQ,IAAI,CAACJ,UAAAA,CAAWG,WAAW,EAC5CL,GAAG,CAAC,CAACO,UAAAA,IAAgB;AACpBA,oBAAAA,UAAAA;oBACAC,OAAAA,EACED,UAAAA,IAAcL,UAAAA,CAAWG,WAAW,GAChCH,UAAAA,CAAWG,WAAW,CAACE,UAAAA,CAAW,CAC/BP,GAAG,CAAC,CAACS,MAAAA,GAAAA;wBACJ,MAAMC,QAAAA,GAAW,GAAGT,KAAAA,CAAM,CAAC,EAAEM,UAAAA,CAAW,CAAC,EAAEE,MAAAA,CAAAA,CAAQ;wBAEnD,IAAIR,KAAAA,CAAMU,QAAQ,CAAC,OAAA,CAAA,EAAU;4BAC3BhB,MAAAA,CAAOC,aAAa,CAACgB,IAAI,CAACF,QAAAA,CAAAA;AAC5B,wBAAA;wBAEA,OAAO;AACLD,4BAAAA,MAAAA;AACAC,4BAAAA;AACF,yBAAA;oBACF,CAAA,CAAA,CACCG,IAAI,KACP;AACR,iBAAA,GACCA,IAAI;SACT,CAAA,CAAA;IAEA,OAAOlB,MAAAA;AACT;;;;"}
1
+ {"version":3,"file":"transformPermissionsData.mjs","sources":["../../../../../../../../../../admin/src/pages/Settings/pages/ApiTokens/EditView/utils/transformPermissionsData.ts"],"sourcesContent":["import { ContentApiPermission } from '../../../../../../../../shared/contracts/content-api/permissions';\n\ninterface Layout {\n allActionsIds: string[];\n permissions: {\n apiId: string;\n label: string;\n controllers: { controller: string; actions: { action: string; actionId: string }[] }[];\n }[];\n}\n\nexport const transformPermissionsData = (data: ContentApiPermission) => {\n const layout: Layout = {\n allActionsIds: [],\n permissions: [],\n };\n\n layout.permissions = Object.entries(data).map(([apiId, permission]) => ({\n apiId,\n label: apiId.split('::')[1],\n controllers: Object.keys(permission.controllers).flatMap((controller) => ({\n controller,\n actions:\n controller in permission.controllers\n ? permission.controllers[controller].flatMap(\n (action: ContentApiPermission['controllers']) => {\n const actionId = `${apiId}.${controller}.${action}`;\n\n if (apiId.includes('api::')) {\n layout.allActionsIds.push(actionId);\n }\n\n return {\n action,\n actionId,\n };\n }\n )\n : [],\n })),\n }));\n\n return layout;\n};\n"],"names":["transformPermissionsData","data","layout","allActionsIds","permissions","Object","entries","map","apiId","permission","label","split","controllers","keys","flatMap","controller","actions","action","actionId","includes","push"],"mappings":"AAWO,MAAMA,2BAA2B,CAACC,IAAAA,GAAAA;AACvC,IAAA,MAAMC,MAAAA,GAAiB;AACrBC,QAAAA,aAAAA,EAAe,EAAE;AACjBC,QAAAA,WAAAA,EAAa;AACf,KAAA;AAEAF,IAAAA,MAAAA,CAAOE,WAAW,GAAGC,MAAAA,CAAOC,OAAO,CAACL,IAAAA,CAAAA,CAAMM,GAAG,CAAC,CAAC,CAACC,KAAAA,EAAOC,UAAAA,CAAW,IAAM;AACtED,YAAAA,KAAAA;AACAE,YAAAA,KAAAA,EAAOF,KAAAA,CAAMG,KAAK,CAAC,IAAA,CAAK,CAAC,CAAA,CAAE;YAC3BC,WAAAA,EAAaP,MAAAA,CAAOQ,IAAI,CAACJ,UAAAA,CAAWG,WAAW,EAAEE,OAAO,CAAC,CAACC,UAAAA,IAAgB;AACxEA,oBAAAA,UAAAA;oBACAC,OAAAA,EACED,UAAAA,IAAcN,UAAAA,CAAWG,WAAW,GAChCH,UAAAA,CAAWG,WAAW,CAACG,UAAAA,CAAW,CAACD,OAAO,CACxC,CAACG,MAAAA,GAAAA;wBACC,MAAMC,QAAAA,GAAW,GAAGV,KAAAA,CAAM,CAAC,EAAEO,UAAAA,CAAW,CAAC,EAAEE,MAAAA,CAAAA,CAAQ;wBAEnD,IAAIT,KAAAA,CAAMW,QAAQ,CAAC,OAAA,CAAA,EAAU;4BAC3BjB,MAAAA,CAAOC,aAAa,CAACiB,IAAI,CAACF,QAAAA,CAAAA;AAC5B,wBAAA;wBAEA,OAAO;AACLD,4BAAAA,MAAAA;AACAC,4BAAAA;AACF,yBAAA;AACF,oBAAA,CAAA,CAAA,GAEF;iBACR,CAAA;SACF,CAAA,CAAA;IAEA,OAAOhB,MAAAA;AACT;;;;"}
@@ -49,7 +49,6 @@ var React__namespace = /*#__PURE__*/_interopNamespace(React);
49
49
  auth: serverLogos.auth
50
50
  });
51
51
  const { settings } = reactRedux.useSelector(selectors.selectAdminPermissions);
52
- const latestStrapiReleaseTag = AppInfo.useAppInfo('ApplicationInfoPage', (state)=>state.latestStrapiReleaseTag);
53
52
  const nodeVersion = AppInfo.useAppInfo('ApplicationInfoPage', (state)=>state.nodeVersion);
54
53
  const shouldUpdateStrapi = AppInfo.useAppInfo('ApplicationInfoPage', (state)=>state.shouldUpdateStrapi);
55
54
  const strapiVersion = AppInfo.useAppInfo('ApplicationInfoPage', (state)=>state.strapiVersion);
@@ -181,7 +180,7 @@ var React__namespace = /*#__PURE__*/_interopNamespace(React);
181
180
  ]
182
181
  }),
183
182
  shouldUpdateStrapi && /*#__PURE__*/ jsxRuntime.jsx(designSystem.Link, {
184
- href: `https://github.com/strapi/strapi/releases/tag/${latestStrapiReleaseTag}`,
183
+ href: `https://docs.strapi.io/cms/upgrades`,
185
184
  endIcon: /*#__PURE__*/ jsxRuntime.jsx(icons.ExternalLink, {}),
186
185
  target: "_blank",
187
186
  rel: "noopener noreferrer",