@strapi/admin 5.57.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.
- package/dist/admin/admin/src/StrapiApp.js.map +1 -1
- package/dist/admin/admin/src/StrapiApp.mjs.map +1 -1
- package/dist/admin/admin/src/components/ConfirmDialog.js +10 -9
- package/dist/admin/admin/src/components/ConfirmDialog.js.map +1 -1
- package/dist/admin/admin/src/components/ConfirmDialog.mjs +10 -9
- package/dist/admin/admin/src/components/ConfirmDialog.mjs.map +1 -1
- package/dist/admin/admin/src/components/Filters.js +57 -12
- package/dist/admin/admin/src/components/Filters.js.map +1 -1
- package/dist/admin/admin/src/components/Filters.mjs +57 -12
- package/dist/admin/admin/src/components/Filters.mjs.map +1 -1
- package/dist/admin/admin/src/components/Form.js +3 -1
- package/dist/admin/admin/src/components/Form.js.map +1 -1
- package/dist/admin/admin/src/components/Form.mjs +3 -1
- package/dist/admin/admin/src/components/Form.mjs.map +1 -1
- package/dist/admin/admin/src/components/FormInputs/Boolean.js +3 -2
- package/dist/admin/admin/src/components/FormInputs/Boolean.js.map +1 -1
- package/dist/admin/admin/src/components/FormInputs/Boolean.mjs +3 -2
- package/dist/admin/admin/src/components/FormInputs/Boolean.mjs.map +1 -1
- package/dist/admin/admin/src/components/FormInputs/Enumeration.js +2 -1
- package/dist/admin/admin/src/components/FormInputs/Enumeration.js.map +1 -1
- package/dist/admin/admin/src/components/FormInputs/Enumeration.mjs +2 -1
- package/dist/admin/admin/src/components/FormInputs/Enumeration.mjs.map +1 -1
- package/dist/admin/admin/src/components/LeftMenu.js +5 -1
- package/dist/admin/admin/src/components/LeftMenu.js.map +1 -1
- package/dist/admin/admin/src/components/LeftMenu.mjs +5 -1
- package/dist/admin/admin/src/components/LeftMenu.mjs.map +1 -1
- package/dist/admin/admin/src/components/PageHelpers.js +2 -1
- package/dist/admin/admin/src/components/PageHelpers.js.map +1 -1
- package/dist/admin/admin/src/components/PageHelpers.mjs +2 -1
- package/dist/admin/admin/src/components/PageHelpers.mjs.map +1 -1
- package/dist/admin/admin/src/components/Pagination.js +7 -6
- package/dist/admin/admin/src/components/Pagination.js.map +1 -1
- package/dist/admin/admin/src/components/Pagination.mjs +7 -6
- package/dist/admin/admin/src/components/Pagination.mjs.map +1 -1
- package/dist/admin/admin/src/components/RelativeTime.js +2 -1
- package/dist/admin/admin/src/components/RelativeTime.js.map +1 -1
- package/dist/admin/admin/src/components/RelativeTime.mjs +2 -1
- package/dist/admin/admin/src/components/RelativeTime.mjs.map +1 -1
- package/dist/admin/admin/src/components/SubNav.js +6 -12
- package/dist/admin/admin/src/components/SubNav.js.map +1 -1
- package/dist/admin/admin/src/components/SubNav.mjs +7 -13
- package/dist/admin/admin/src/components/SubNav.mjs.map +1 -1
- package/dist/admin/admin/src/components/Table.js +3 -1
- package/dist/admin/admin/src/components/Table.js.map +1 -1
- package/dist/admin/admin/src/components/Table.mjs +3 -1
- package/dist/admin/admin/src/components/Table.mjs.map +1 -1
- package/dist/admin/admin/src/components/UpsellBanner.js.map +1 -1
- package/dist/admin/admin/src/components/UpsellBanner.mjs.map +1 -1
- package/dist/admin/admin/src/components/WidgetRoot.js.map +1 -1
- package/dist/admin/admin/src/components/WidgetRoot.mjs.map +1 -1
- package/dist/admin/admin/src/constants.js +14 -0
- package/dist/admin/admin/src/constants.js.map +1 -1
- package/dist/admin/admin/src/constants.mjs +14 -0
- package/dist/admin/admin/src/constants.mjs.map +1 -1
- package/dist/admin/admin/src/core/apis/Plugin.js.map +1 -1
- package/dist/admin/admin/src/core/apis/Plugin.mjs.map +1 -1
- package/dist/admin/admin/src/features/Auth.js +2 -1
- package/dist/admin/admin/src/features/Auth.js.map +1 -1
- package/dist/admin/admin/src/features/Auth.mjs +2 -1
- package/dist/admin/admin/src/features/Auth.mjs.map +1 -1
- package/dist/admin/admin/src/features/StrapiApp.js.map +1 -1
- package/dist/admin/admin/src/features/StrapiApp.mjs.map +1 -1
- package/dist/admin/admin/src/features/Tracking.js.map +1 -1
- package/dist/admin/admin/src/features/Tracking.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Auth/components/ResetPassword.js +6 -12
- package/dist/admin/admin/src/pages/Auth/components/ResetPassword.js.map +1 -1
- package/dist/admin/admin/src/pages/Auth/components/ResetPassword.mjs +6 -12
- package/dist/admin/admin/src/pages/Auth/components/ResetPassword.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Home/components/FreeTrialEndedModal.js.map +1 -1
- package/dist/admin/admin/src/pages/Home/components/FreeTrialEndedModal.mjs.map +1 -1
- package/dist/admin/admin/src/pages/ProfilePage.js +2 -2
- package/dist/admin/admin/src/pages/ProfilePage.js.map +1 -1
- package/dist/admin/admin/src/pages/ProfilePage.mjs +2 -2
- package/dist/admin/admin/src/pages/ProfilePage.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Settings/components/SettingsNav.js +10 -2
- package/dist/admin/admin/src/pages/Settings/components/SettingsNav.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/components/SettingsNav.mjs +10 -2
- package/dist/admin/admin/src/pages/Settings/components/SettingsNav.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Settings/components/Tokens/FormApiTokenContainer.js +4 -1
- package/dist/admin/admin/src/pages/Settings/components/Tokens/FormApiTokenContainer.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/components/Tokens/FormApiTokenContainer.mjs +4 -1
- package/dist/admin/admin/src/pages/Settings/components/Tokens/FormApiTokenContainer.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Settings/components/Tokens/Table.js +3 -1
- package/dist/admin/admin/src/pages/Settings/components/Tokens/Table.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/components/Tokens/Table.mjs +3 -1
- package/dist/admin/admin/src/pages/Settings/components/Tokens/Table.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Settings/components/Tokens/TokenTypeSelect.js +2 -1
- package/dist/admin/admin/src/pages/Settings/components/Tokens/TokenTypeSelect.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/components/Tokens/TokenTypeSelect.mjs +2 -1
- package/dist/admin/admin/src/pages/Settings/components/Tokens/TokenTypeSelect.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/EditView/components/BoundRoute.js +6 -5
- package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/EditView/components/BoundRoute.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/EditView/components/BoundRoute.mjs +6 -5
- package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/EditView/components/BoundRoute.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/EditView/components/CollapsableContentType.js +2 -1
- package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/EditView/components/CollapsableContentType.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/EditView/components/CollapsableContentType.mjs +2 -1
- package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/EditView/components/CollapsableContentType.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/EditView/utils/transformPermissionsData.js +4 -4
- package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/EditView/utils/transformPermissionsData.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/EditView/utils/transformPermissionsData.mjs +4 -4
- package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/EditView/utils/transformPermissionsData.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/ApplicationInfo/ApplicationInfoPage.js +7 -58
- package/dist/admin/admin/src/pages/Settings/pages/ApplicationInfo/ApplicationInfoPage.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/ApplicationInfo/ApplicationInfoPage.mjs +7 -58
- package/dist/admin/admin/src/pages/Settings/pages/ApplicationInfo/ApplicationInfoPage.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/ApplicationInfo/components/DiagnosticSnapshotModal.js +217 -0
- package/dist/admin/admin/src/pages/Settings/pages/ApplicationInfo/components/DiagnosticSnapshotModal.js.map +1 -0
- package/dist/admin/admin/src/pages/Settings/pages/ApplicationInfo/components/DiagnosticSnapshotModal.mjs +195 -0
- package/dist/admin/admin/src/pages/Settings/pages/ApplicationInfo/components/DiagnosticSnapshotModal.mjs.map +1 -0
- package/dist/admin/admin/src/pages/Settings/pages/ApplicationInfo/components/LogoInput.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/ApplicationInfo/components/LogoInput.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/ApplicationInfo/components/PlanCard.js +185 -0
- package/dist/admin/admin/src/pages/Settings/pages/ApplicationInfo/components/PlanCard.js.map +1 -0
- package/dist/admin/admin/src/pages/Settings/pages/ApplicationInfo/components/PlanCard.mjs +162 -0
- package/dist/admin/admin/src/pages/Settings/pages/ApplicationInfo/components/PlanCard.mjs.map +1 -0
- package/dist/admin/admin/src/pages/Settings/pages/ApplicationInfo/components/SupportCard.js +342 -0
- package/dist/admin/admin/src/pages/Settings/pages/ApplicationInfo/components/SupportCard.js.map +1 -0
- package/dist/admin/admin/src/pages/Settings/pages/ApplicationInfo/components/SupportCard.mjs +320 -0
- package/dist/admin/admin/src/pages/Settings/pages/ApplicationInfo/components/SupportCard.mjs.map +1 -0
- package/dist/admin/admin/src/pages/Settings/pages/Roles/components/CollapsePropertyMatrix.js +9 -4
- package/dist/admin/admin/src/pages/Settings/pages/Roles/components/CollapsePropertyMatrix.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Roles/components/CollapsePropertyMatrix.mjs +9 -4
- package/dist/admin/admin/src/pages/Settings/pages/Roles/components/CollapsePropertyMatrix.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Roles/components/ConditionsModal.js +15 -9
- package/dist/admin/admin/src/pages/Settings/pages/Roles/components/ConditionsModal.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Roles/components/ConditionsModal.mjs +15 -9
- package/dist/admin/admin/src/pages/Settings/pages/Roles/components/ConditionsModal.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Roles/components/ContentTypeCollapses.js +5 -2
- package/dist/admin/admin/src/pages/Settings/pages/Roles/components/ContentTypeCollapses.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Roles/components/ContentTypeCollapses.mjs +5 -2
- package/dist/admin/admin/src/pages/Settings/pages/Roles/components/ContentTypeCollapses.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Roles/components/GlobalActions.js +2 -1
- package/dist/admin/admin/src/pages/Settings/pages/Roles/components/GlobalActions.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Roles/components/GlobalActions.mjs +2 -1
- package/dist/admin/admin/src/pages/Settings/pages/Roles/components/GlobalActions.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Roles/components/Permissions.js +2 -1
- package/dist/admin/admin/src/pages/Settings/pages/Roles/components/Permissions.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Roles/components/Permissions.mjs +2 -1
- package/dist/admin/admin/src/pages/Settings/pages/Roles/components/Permissions.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Roles/components/PluginsAndSettings.js +2 -1
- package/dist/admin/admin/src/pages/Settings/pages/Roles/components/PluginsAndSettings.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Roles/components/PluginsAndSettings.mjs +2 -1
- package/dist/admin/admin/src/pages/Settings/pages/Roles/components/PluginsAndSettings.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Roles/hooks/usePermissionsDataManager.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Roles/hooks/usePermissionsDataManager.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/TransferTokens/EditView.js +3 -1
- package/dist/admin/admin/src/pages/Settings/pages/TransferTokens/EditView.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/TransferTokens/EditView.mjs +3 -1
- package/dist/admin/admin/src/pages/Settings/pages/TransferTokens/EditView.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Users/EditPage.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Users/EditPage.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Users/ListPage.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Users/ListPage.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Users/components/NewUserForm.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Users/components/NewUserForm.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Webhooks/components/Events.js +4 -1
- package/dist/admin/admin/src/pages/Settings/pages/Webhooks/components/Events.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Webhooks/components/Events.mjs +4 -1
- package/dist/admin/admin/src/pages/Settings/pages/Webhooks/components/Events.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Webhooks/components/HeadersInput.js +18 -3
- package/dist/admin/admin/src/pages/Settings/pages/Webhooks/components/HeadersInput.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Webhooks/components/HeadersInput.mjs +18 -3
- package/dist/admin/admin/src/pages/Settings/pages/Webhooks/components/HeadersInput.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Webhooks/components/WebhookForm.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Webhooks/components/WebhookForm.mjs.map +1 -1
- package/dist/admin/admin/src/router.js.map +1 -1
- package/dist/admin/admin/src/router.mjs.map +1 -1
- package/dist/admin/admin/src/services/admin.js +11 -1
- package/dist/admin/admin/src/services/admin.js.map +1 -1
- package/dist/admin/admin/src/services/admin.mjs +11 -2
- package/dist/admin/admin/src/services/admin.mjs.map +1 -1
- package/dist/admin/admin/src/services/users.js.map +1 -1
- package/dist/admin/admin/src/services/users.mjs.map +1 -1
- package/dist/admin/admin/src/translations/en.json.js +71 -4
- package/dist/admin/admin/src/translations/en.json.js.map +1 -1
- package/dist/admin/admin/src/translations/en.json.mjs +71 -4
- package/dist/admin/admin/src/translations/en.json.mjs.map +1 -1
- package/dist/admin/admin/src/translations/eu.json.js +1 -1
- package/dist/admin/admin/src/translations/eu.json.mjs +1 -1
- package/dist/admin/admin/src/utils/browserStrapi.js +1 -1
- package/dist/admin/admin/src/utils/browserStrapi.js.map +1 -1
- package/dist/admin/admin/src/utils/browserStrapi.mjs +1 -1
- package/dist/admin/admin/src/utils/browserStrapi.mjs.map +1 -1
- package/dist/admin/admin/src/utils/cookies.js +7 -6
- package/dist/admin/admin/src/utils/cookies.js.map +1 -1
- package/dist/admin/admin/src/utils/cookies.mjs +7 -6
- package/dist/admin/admin/src/utils/cookies.mjs.map +1 -1
- package/dist/admin/admin/src/utils/getFetchClient.js +24 -0
- package/dist/admin/admin/src/utils/getFetchClient.js.map +1 -1
- package/dist/admin/admin/src/utils/getFetchClient.mjs +24 -1
- package/dist/admin/admin/src/utils/getFetchClient.mjs.map +1 -1
- package/dist/admin/admin/tests/utils.js +2 -1
- package/dist/admin/admin/tests/utils.js.map +1 -1
- package/dist/admin/admin/tests/utils.mjs +2 -1
- package/dist/admin/admin/tests/utils.mjs.map +1 -1
- package/dist/admin/ee/admin/src/pages/SettingsPage/pages/ApplicationInfoPage/components/AIUsage.js +52 -22
- package/dist/admin/ee/admin/src/pages/SettingsPage/pages/ApplicationInfoPage/components/AIUsage.js.map +1 -1
- package/dist/admin/ee/admin/src/pages/SettingsPage/pages/ApplicationInfoPage/components/AIUsage.mjs +53 -23
- package/dist/admin/ee/admin/src/pages/SettingsPage/pages/ApplicationInfoPage/components/AIUsage.mjs.map +1 -1
- package/dist/admin/ee/admin/src/pages/SettingsPage/pages/ApplicationInfoPage/components/AdminSeatInfo.js +16 -29
- package/dist/admin/ee/admin/src/pages/SettingsPage/pages/ApplicationInfoPage/components/AdminSeatInfo.js.map +1 -1
- package/dist/admin/ee/admin/src/pages/SettingsPage/pages/ApplicationInfoPage/components/AdminSeatInfo.mjs +18 -31
- package/dist/admin/ee/admin/src/pages/SettingsPage/pages/ApplicationInfoPage/components/AdminSeatInfo.mjs.map +1 -1
- package/dist/admin/ee/admin/src/pages/SettingsPage/pages/ApplicationInfoPage/components/LicenseInfo.js +473 -0
- package/dist/admin/ee/admin/src/pages/SettingsPage/pages/ApplicationInfoPage/components/LicenseInfo.js.map +1 -0
- package/dist/admin/ee/admin/src/pages/SettingsPage/pages/ApplicationInfoPage/components/LicenseInfo.mjs +471 -0
- package/dist/admin/ee/admin/src/pages/SettingsPage/pages/ApplicationInfoPage/components/LicenseInfo.mjs.map +1 -0
- package/dist/admin/ee/admin/src/pages/SettingsPage/pages/AuditLogs/utils/getActionTypesDefaultMessages.js +2 -0
- package/dist/admin/ee/admin/src/pages/SettingsPage/pages/AuditLogs/utils/getActionTypesDefaultMessages.js.map +1 -1
- package/dist/admin/ee/admin/src/pages/SettingsPage/pages/AuditLogs/utils/getActionTypesDefaultMessages.mjs +2 -0
- package/dist/admin/ee/admin/src/pages/SettingsPage/pages/AuditLogs/utils/getActionTypesDefaultMessages.mjs.map +1 -1
- package/dist/admin/index.js +1 -0
- package/dist/admin/index.js.map +1 -1
- package/dist/admin/index.mjs +1 -1
- package/dist/admin/shared/utils/auth-cookie-path.js +13 -10
- package/dist/admin/shared/utils/auth-cookie-path.js.map +1 -1
- package/dist/admin/shared/utils/auth-cookie-path.mjs +13 -10
- package/dist/admin/shared/utils/auth-cookie-path.mjs.map +1 -1
- package/dist/admin/shared/utils/get-project-type.js +49 -0
- package/dist/admin/shared/utils/get-project-type.js.map +1 -0
- package/dist/admin/shared/utils/get-project-type.mjs +46 -0
- package/dist/admin/shared/utils/get-project-type.mjs.map +1 -0
- package/dist/admin/src/components/Filters.d.ts +1 -1
- package/dist/admin/src/components/Form.d.ts +1 -1
- package/dist/admin/src/constants.d.ts +10 -0
- package/dist/admin/src/pages/Settings/pages/ApiTokens/EditView/components/BoundRoute.d.ts +1 -1
- package/dist/admin/src/pages/Settings/pages/ApplicationInfo/ApplicationInfoPage.d.ts +1 -1
- package/dist/admin/src/pages/Settings/pages/ApplicationInfo/components/DiagnosticSnapshotModal.d.ts +12 -0
- package/dist/admin/src/pages/Settings/pages/ApplicationInfo/components/PlanCard.d.ts +14 -0
- package/dist/admin/src/pages/Settings/pages/ApplicationInfo/components/SupportCard.d.ts +2 -0
- package/dist/admin/src/services/admin.d.ts +2 -2
- package/dist/admin/src/types/permissions.d.ts +1 -0
- package/dist/admin/src/utils/cookies.d.ts +7 -6
- package/dist/admin/src/utils/getFetchClient.d.ts +25 -0
- package/dist/ee/admin/src/hooks/useLicenseLimits.d.ts +29 -0
- package/dist/ee/admin/src/pages/SettingsPage/pages/ApplicationInfoPage/components/AIUsage.d.ts +6 -1
- package/dist/ee/admin/src/pages/SettingsPage/pages/ApplicationInfoPage/components/LicenseInfo.d.ts +2 -0
- package/dist/ee/admin/src/pages/SettingsPage/pages/AuditLogs/utils/getActionTypesDefaultMessages.d.ts +2 -0
- package/dist/ee/server/src/audit-logs/entitlements.d.ts +8 -0
- package/dist/ee/server/src/audit-logs/entitlements.d.ts.map +1 -0
- package/dist/ee/server/src/audit-logs/services/lifecycles.d.ts +16 -0
- package/dist/ee/server/src/audit-logs/services/lifecycles.d.ts.map +1 -1
- package/dist/ee/server/src/controllers/admin.d.ts +36 -10
- package/dist/ee/server/src/controllers/admin.d.ts.map +1 -1
- package/dist/ee/server/src/controllers/authentication-utils/middlewares.d.ts.map +1 -1
- package/dist/ee/server/src/controllers/index.d.ts +36 -10
- package/dist/ee/server/src/controllers/index.d.ts.map +1 -1
- package/dist/ee/server/src/index.d.ts +36 -10
- package/dist/ee/server/src/index.d.ts.map +1 -1
- package/dist/ee/server/src/services/seat-enforcement.d.ts.map +1 -1
- package/dist/ee/server/src/validation/role.d.ts.map +1 -1
- package/dist/server/ee/server/src/audit-logs/entitlements.js +25 -0
- package/dist/server/ee/server/src/audit-logs/entitlements.js.map +1 -0
- package/dist/server/ee/server/src/audit-logs/entitlements.mjs +23 -0
- package/dist/server/ee/server/src/audit-logs/entitlements.mjs.map +1 -0
- package/dist/server/ee/server/src/audit-logs/services/lifecycles.js +20 -8
- package/dist/server/ee/server/src/audit-logs/services/lifecycles.js.map +1 -1
- package/dist/server/ee/server/src/audit-logs/services/lifecycles.mjs +19 -9
- package/dist/server/ee/server/src/audit-logs/services/lifecycles.mjs.map +1 -1
- package/dist/server/ee/server/src/audit-logs/utils/csv.js +3 -3
- package/dist/server/ee/server/src/audit-logs/utils/csv.js.map +1 -1
- package/dist/server/ee/server/src/audit-logs/utils/csv.mjs +3 -3
- package/dist/server/ee/server/src/audit-logs/utils/csv.mjs.map +1 -1
- package/dist/server/ee/server/src/controllers/admin.js +76 -3
- package/dist/server/ee/server/src/controllers/admin.js.map +1 -1
- package/dist/server/ee/server/src/controllers/admin.mjs +76 -3
- package/dist/server/ee/server/src/controllers/admin.mjs.map +1 -1
- package/dist/server/ee/server/src/controllers/authentication-utils/middlewares.js +28 -10
- package/dist/server/ee/server/src/controllers/authentication-utils/middlewares.js.map +1 -1
- package/dist/server/ee/server/src/controllers/authentication-utils/middlewares.mjs +28 -10
- package/dist/server/ee/server/src/controllers/authentication-utils/middlewares.mjs.map +1 -1
- package/dist/server/ee/server/src/index.js +2 -0
- package/dist/server/ee/server/src/index.js.map +1 -1
- package/dist/server/ee/server/src/index.mjs +2 -0
- package/dist/server/ee/server/src/index.mjs.map +1 -1
- package/dist/server/ee/server/src/services/seat-enforcement.js.map +1 -1
- package/dist/server/ee/server/src/services/seat-enforcement.mjs.map +1 -1
- package/dist/server/ee/server/src/validation/role.js +4 -2
- package/dist/server/ee/server/src/validation/role.js.map +1 -1
- package/dist/server/ee/server/src/validation/role.mjs +4 -2
- package/dist/server/ee/server/src/validation/role.mjs.map +1 -1
- package/dist/server/server/src/ai/services/ai.js.map +1 -1
- package/dist/server/server/src/ai/services/ai.mjs.map +1 -1
- package/dist/server/server/src/audit-logs/auth.js +72 -0
- package/dist/server/server/src/audit-logs/auth.js.map +1 -0
- package/dist/server/server/src/audit-logs/auth.mjs +67 -0
- package/dist/server/server/src/audit-logs/auth.mjs.map +1 -0
- package/dist/server/server/src/config/admin-actions.js +7 -0
- package/dist/server/server/src/config/admin-actions.js.map +1 -1
- package/dist/server/server/src/config/admin-actions.mjs +7 -0
- package/dist/server/server/src/config/admin-actions.mjs.map +1 -1
- package/dist/server/server/src/controllers/admin.js +17 -12
- package/dist/server/server/src/controllers/admin.js.map +1 -1
- package/dist/server/server/src/controllers/admin.mjs +17 -12
- package/dist/server/server/src/controllers/admin.mjs.map +1 -1
- package/dist/server/server/src/controllers/authentication.js +34 -8
- package/dist/server/server/src/controllers/authentication.js.map +1 -1
- package/dist/server/server/src/controllers/authentication.mjs +34 -8
- package/dist/server/server/src/controllers/authentication.mjs.map +1 -1
- package/dist/server/server/src/domain/permission/index.js.map +1 -1
- package/dist/server/server/src/domain/permission/index.mjs.map +1 -1
- package/dist/server/server/src/register.js +4 -0
- package/dist/server/server/src/register.js.map +1 -1
- package/dist/server/server/src/register.mjs +4 -0
- package/dist/server/server/src/register.mjs.map +1 -1
- package/dist/server/server/src/routes/admin.js +18 -0
- package/dist/server/server/src/routes/admin.js.map +1 -1
- package/dist/server/server/src/routes/admin.mjs +18 -0
- package/dist/server/server/src/routes/admin.mjs.map +1 -1
- package/dist/server/server/src/services/api-token.js +4 -8
- package/dist/server/server/src/services/api-token.js.map +1 -1
- package/dist/server/server/src/services/api-token.mjs +4 -8
- package/dist/server/server/src/services/api-token.mjs.map +1 -1
- package/dist/server/server/src/services/auth.js +4 -2
- package/dist/server/server/src/services/auth.js.map +1 -1
- package/dist/server/server/src/services/auth.mjs +4 -3
- package/dist/server/server/src/services/auth.mjs.map +1 -1
- package/dist/server/server/src/services/constants.js +4 -0
- package/dist/server/server/src/services/constants.js.map +1 -1
- package/dist/server/server/src/services/constants.mjs +4 -0
- package/dist/server/server/src/services/constants.mjs.map +1 -1
- package/dist/server/server/src/services/debug-dump.js +173 -0
- package/dist/server/server/src/services/debug-dump.js.map +1 -0
- package/dist/server/server/src/services/debug-dump.mjs +166 -0
- package/dist/server/server/src/services/debug-dump.mjs.map +1 -0
- package/dist/server/server/src/services/index.js +3 -1
- package/dist/server/server/src/services/index.js.map +1 -1
- package/dist/server/server/src/services/index.mjs +3 -1
- package/dist/server/server/src/services/index.mjs.map +1 -1
- package/dist/server/server/src/services/permission/rename-fields.js.map +1 -1
- package/dist/server/server/src/services/permission/rename-fields.mjs.map +1 -1
- package/dist/server/server/src/services/permission/sections-builder/handlers.js.map +1 -1
- package/dist/server/server/src/services/permission/sections-builder/handlers.mjs.map +1 -1
- package/dist/server/server/src/services/role.js +8 -5
- package/dist/server/server/src/services/role.js.map +1 -1
- package/dist/server/server/src/services/role.mjs +8 -5
- package/dist/server/server/src/services/role.mjs.map +1 -1
- package/dist/server/server/src/utils/debug-dump/redact.js +197 -0
- package/dist/server/server/src/utils/debug-dump/redact.js.map +1 -0
- package/dist/server/server/src/utils/debug-dump/redact.mjs +194 -0
- package/dist/server/server/src/utils/debug-dump/redact.mjs.map +1 -0
- package/dist/server/server/src/validation/admin-tokens.js +4 -4
- package/dist/server/server/src/validation/admin-tokens.js.map +1 -1
- package/dist/server/server/src/validation/admin-tokens.mjs +4 -4
- package/dist/server/server/src/validation/admin-tokens.mjs.map +1 -1
- package/dist/server/server/src/validation/api-tokens.js +4 -4
- package/dist/server/server/src/validation/api-tokens.js.map +1 -1
- package/dist/server/server/src/validation/api-tokens.mjs +4 -4
- package/dist/server/server/src/validation/api-tokens.mjs.map +1 -1
- package/dist/server/server/src/validation/role.js +6 -4
- package/dist/server/server/src/validation/role.js.map +1 -1
- package/dist/server/server/src/validation/role.mjs +6 -4
- package/dist/server/server/src/validation/role.mjs.map +1 -1
- package/dist/server/server/src/validation/transfer/token.js +4 -4
- package/dist/server/server/src/validation/transfer/token.js.map +1 -1
- package/dist/server/server/src/validation/transfer/token.mjs +4 -4
- package/dist/server/server/src/validation/transfer/token.mjs.map +1 -1
- package/dist/server/shared/utils/auth-cookie-path.js +13 -10
- package/dist/server/shared/utils/auth-cookie-path.js.map +1 -1
- package/dist/server/shared/utils/auth-cookie-path.mjs +13 -10
- package/dist/server/shared/utils/auth-cookie-path.mjs.map +1 -1
- package/dist/server/shared/utils/get-project-type.js +49 -0
- package/dist/server/shared/utils/get-project-type.js.map +1 -0
- package/dist/server/shared/utils/get-project-type.mjs +46 -0
- package/dist/server/shared/utils/get-project-type.mjs.map +1 -0
- package/dist/server/shared/utils/session-auth.js +70 -3
- package/dist/server/shared/utils/session-auth.js.map +1 -1
- package/dist/server/shared/utils/session-auth.mjs +70 -4
- package/dist/server/shared/utils/session-auth.mjs.map +1 -1
- package/dist/server/src/ai/services/ai.d.ts.map +1 -1
- package/dist/server/src/audit-logs/auth.d.ts +72 -0
- package/dist/server/src/audit-logs/auth.d.ts.map +1 -0
- package/dist/server/src/config/admin-actions.d.ts.map +1 -1
- package/dist/server/src/controllers/admin.d.ts +3 -0
- package/dist/server/src/controllers/admin.d.ts.map +1 -1
- package/dist/server/src/controllers/authentication.d.ts.map +1 -1
- package/dist/server/src/controllers/index.d.ts +3 -0
- package/dist/server/src/controllers/index.d.ts.map +1 -1
- package/dist/server/src/domain/permission/index.d.ts.map +1 -1
- package/dist/server/src/index.d.ts +8 -0
- package/dist/server/src/index.d.ts.map +1 -1
- package/dist/server/src/register.d.ts.map +1 -1
- package/dist/server/src/routes/admin.d.ts.map +1 -1
- package/dist/server/src/services/auth.d.ts +6 -0
- package/dist/server/src/services/auth.d.ts.map +1 -1
- package/dist/server/src/services/constants.d.ts +2 -0
- package/dist/server/src/services/constants.d.ts.map +1 -1
- package/dist/server/src/services/debug-dump.d.ts +9 -0
- package/dist/server/src/services/debug-dump.d.ts.map +1 -0
- package/dist/server/src/services/index.d.ts +5 -0
- package/dist/server/src/services/index.d.ts.map +1 -1
- package/dist/server/src/services/permission/rename-fields.d.ts.map +1 -1
- package/dist/server/src/services/permission/sections-builder/handlers.d.ts.map +1 -1
- package/dist/server/src/services/role.d.ts.map +1 -1
- package/dist/server/src/utils/debug-dump/redact.d.ts +8 -0
- package/dist/server/src/utils/debug-dump/redact.d.ts.map +1 -0
- package/dist/server/src/validation/role.d.ts.map +1 -1
- package/dist/shared/contracts/admin.d.ts +106 -0
- package/dist/shared/contracts/admin.d.ts.map +1 -1
- package/dist/shared/contracts/transfer.d.ts.map +1 -1
- package/dist/shared/utils/__tests__/get-project-type.test.d.ts +1 -0
- package/dist/shared/utils/__tests__/get-project-type.test.d.ts.map +1 -0
- package/dist/shared/utils/auth-cookie-path.d.ts +13 -10
- package/dist/shared/utils/auth-cookie-path.d.ts.map +1 -1
- package/dist/shared/utils/get-project-type.d.ts +37 -0
- package/dist/shared/utils/get-project-type.d.ts.map +1 -0
- package/dist/shared/utils/session-auth.d.ts +16 -0
- package/dist/shared/utils/session-auth.d.ts.map +1 -1
- package/package.json +8 -8
- package/dist/admin/admin/src/utils/getProjectType.js +0 -22
- package/dist/admin/admin/src/utils/getProjectType.js.map +0 -1
- package/dist/admin/admin/src/utils/getProjectType.mjs +0 -20
- package/dist/admin/admin/src/utils/getProjectType.mjs.map +0 -1
- package/dist/admin/src/utils/getProjectType.d.ts +0 -16
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FormApiTokenContainer.js","sources":["../../../../../../../../admin/src/pages/Settings/components/Tokens/FormApiTokenContainer.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { Box, Field, Flex, Grid, TextInput, Typography } from '@strapi/design-system';\nimport { FormikErrors } from 'formik';\nimport { useIntl } from 'react-intl';\n\nimport { useAuth } from '../../../../features/Auth';\n\nimport { LifeSpanInput } from './LifeSpanInput';\nimport { TokenDescription } from './TokenDescription';\nimport { TokenName } from './TokenName';\nimport { TokenTypeSelect } from './TokenTypeSelect';\n\nimport type { AdminApiToken } from '../../../../../../shared/contracts/admin-token';\nimport type { ApiToken, ContentApiApiToken } from '../../../../../../shared/contracts/api-token';\nimport type { AdminTokenOwner } from '../../../../../../shared/contracts/shared';\nimport type { AuthContextValue } from '../../../../features/Auth';\n\ninterface FormApiTokenContainerProps {\n errors?: FormikErrors<Pick<ContentApiApiToken, 'name' | 'description' | 'lifespan' | 'type'>>;\n onChange: ({ target: { name, value } }: { target: { name: string; value: string } }) => void;\n canEditInputs: boolean;\n values?: Partial<Pick<ContentApiApiToken, 'name' | 'description' | 'lifespan' | 'type'>>;\n isCreating: boolean;\n apiToken?: null | Partial<ApiToken>;\n kind: 'admin' | 'content-api';\n onDispatch: React.Dispatch<{\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n type: any;\n value?: unknown;\n }>;\n setHasChangedPermissions: (hasChanged: boolean) => void;\n}\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\nexport const FormApiTokenContainer = ({\n errors = {},\n onChange,\n canEditInputs,\n isCreating,\n values = {},\n apiToken = {},\n kind,\n onDispatch,\n setHasChangedPermissions,\n}: FormApiTokenContainerProps) => {\n const { formatMessage } = useIntl();\n const currentUser = useAuth('FormApiTokenContainer', (state: AuthContextValue) => state.user);\n\n const ownerToDisplay = (() => {\n const owner =\n kind === 'admin'\n ? (apiToken as Partial<AdminApiToken> | null | undefined)?.adminUserOwner\n : undefined;\n if (owner === undefined || owner === null) return null;\n if (typeof owner !== 'object') return null;\n if (currentUser?.id !== undefined && owner.id === currentUser.id) return null;\n return owner;\n })();\n\n const handleChangeSelectApiTokenType = ({ target: { value } }: { target: { value: string } }) => {\n setHasChangedPermissions(false);\n\n if (value === 'full-access') {\n onDispatch({\n type: 'SELECT_ALL_ACTIONS',\n });\n }\n if (value === 'read-only') {\n onDispatch({\n type: 'ON_CHANGE_READ_ONLY',\n });\n }\n };\n\n const typeOptions = [\n {\n value: 'read-only',\n label: {\n id: 'Settings.tokens.types.read-only',\n defaultMessage: 'Read-only',\n },\n },\n {\n value: 'full-access',\n label: {\n id: 'Settings.tokens.types.full-access',\n defaultMessage: 'Full access',\n },\n },\n {\n value: 'custom',\n label: {\n id: 'Settings.tokens.types.custom',\n defaultMessage: 'Custom',\n },\n },\n ];\n\n return (\n <Box\n background=\"neutral0\"\n hasRadius\n shadow=\"filterShadow\"\n paddingTop={6}\n paddingBottom={6}\n paddingLeft={7}\n paddingRight={7}\n >\n <Flex direction=\"column\" alignItems=\"stretch\" gap={4}>\n <Typography variant=\"delta\" tag=\"h2\">\n {formatMessage({\n id: 'global.details',\n defaultMessage: 'Details',\n })}\n </Typography>\n <Grid.Root gap={5}>\n <Grid.Item key=\"name\" m={6} xs={12} direction=\"column\" alignItems=\"stretch\">\n <TokenName\n error={errors['name']}\n value={values['name']}\n canEditInputs={canEditInputs}\n onChange={onChange}\n />\n </Grid.Item>\n <Grid.Item key=\"description\" m={6} xs={12} direction=\"column\" alignItems=\"stretch\">\n <TokenDescription\n error={errors['description']}\n value={values['description']}\n canEditInputs={canEditInputs}\n onChange={onChange}\n />\n </Grid.Item>\n <Grid.Item key=\"lifespan\" m={6} xs={12} direction=\"column\" alignItems=\"stretch\">\n <LifeSpanInput\n isCreating={isCreating}\n error={errors['lifespan']}\n value={values['lifespan']}\n onChange={onChange}\n token={apiToken}\n />\n </Grid.Item>\n\n {kind === 'content-api' && (\n <Grid.Item key=\"type\" m={6} xs={12} direction=\"column\" alignItems=\"stretch\">\n <TokenTypeSelect\n value={values['type']}\n error={errors['type']}\n label={{\n id: 'Settings.tokens.form.type',\n defaultMessage: 'Token type',\n }}\n onChange={(value) => {\n handleChangeSelectApiTokenType({ target: { value: String(value) } });\n\n onChange({ target: { name: 'type', value: String(value) } });\n }}\n options={typeOptions}\n canEditInputs={canEditInputs}\n />\n </Grid.Item>\n )}\n {ownerToDisplay !== null && (\n <Grid.Item key=\"owner\" m={6} xs={12} direction=\"column\" alignItems=\"stretch\">\n <Field.Root name=\"adminUserOwner\">\n <Field.Label>\n {formatMessage({\n id: 'Settings.tokens.form.owner',\n defaultMessage: 'Owner',\n })}\n </Field.Label>\n <TextInput\n type=\"text\"\n value={formatAdminUserName(ownerToDisplay)}\n disabled\n onChange={() => {}}\n />\n </Field.Root>\n </Grid.Item>\n )}\n </Grid.Root>\n </Flex>\n </Box>\n );\n};\n"],"names":["formatAdminUserName","owner","full","firstname","lastname","filter","Boolean","join","username","email","FormApiTokenContainer","errors","onChange","canEditInputs","isCreating","values","apiToken","kind","onDispatch","setHasChangedPermissions","formatMessage","useIntl","currentUser","useAuth","state","user","ownerToDisplay","adminUserOwner","undefined","id","handleChangeSelectApiTokenType","target","value","type","typeOptions","label","defaultMessage","_jsx","Box","background","hasRadius","shadow","paddingTop","paddingBottom","paddingLeft","paddingRight","_jsxs","Flex","direction","alignItems","gap","Typography","variant","tag","Grid","Root","Item","m","xs","TokenName","error","TokenDescription","LifeSpanInput","token","TokenTypeSelect","String","name","options","Field","Label","TextInput","disabled"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"FormApiTokenContainer.js","sources":["../../../../../../../../admin/src/pages/Settings/components/Tokens/FormApiTokenContainer.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { Box, Field, Flex, Grid, TextInput, Typography } from '@strapi/design-system';\nimport { FormikErrors } from 'formik';\nimport { useIntl } from 'react-intl';\n\nimport { useAuth } from '../../../../features/Auth';\n\nimport { LifeSpanInput } from './LifeSpanInput';\nimport { TokenDescription } from './TokenDescription';\nimport { TokenName } from './TokenName';\nimport { TokenTypeSelect } from './TokenTypeSelect';\n\nimport type { AdminApiToken } from '../../../../../../shared/contracts/admin-token';\nimport type { ApiToken, ContentApiApiToken } from '../../../../../../shared/contracts/api-token';\nimport type { AdminTokenOwner } from '../../../../../../shared/contracts/shared';\nimport type { AuthContextValue } from '../../../../features/Auth';\n\nconst EMPTY_ERRORS: NonNullable<FormApiTokenContainerProps['errors']> = {};\nconst EMPTY_VALUES: NonNullable<FormApiTokenContainerProps['values']> = {};\nconst EMPTY_API_TOKEN: NonNullable<FormApiTokenContainerProps['apiToken']> = {};\n\ninterface FormApiTokenContainerProps {\n errors?: FormikErrors<Pick<ContentApiApiToken, 'name' | 'description' | 'lifespan' | 'type'>>;\n onChange: ({ target: { name, value } }: { target: { name: string; value: string } }) => void;\n canEditInputs: boolean;\n values?: Partial<Pick<ContentApiApiToken, 'name' | 'description' | 'lifespan' | 'type'>>;\n isCreating: boolean;\n apiToken?: null | Partial<ApiToken>;\n kind: 'admin' | 'content-api';\n onDispatch: React.Dispatch<{\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n type: any;\n value?: unknown;\n }>;\n setHasChangedPermissions: (hasChanged: boolean) => void;\n}\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\nexport const FormApiTokenContainer = ({\n errors = EMPTY_ERRORS,\n onChange,\n canEditInputs,\n isCreating,\n values = EMPTY_VALUES,\n apiToken = EMPTY_API_TOKEN,\n kind,\n onDispatch,\n setHasChangedPermissions,\n}: FormApiTokenContainerProps) => {\n const { formatMessage } = useIntl();\n const currentUser = useAuth('FormApiTokenContainer', (state: AuthContextValue) => state.user);\n\n const ownerToDisplay = (() => {\n const owner =\n kind === 'admin'\n ? (apiToken as Partial<AdminApiToken> | null | undefined)?.adminUserOwner\n : undefined;\n if (owner === undefined || owner === null) return null;\n if (typeof owner !== 'object') return null;\n if (currentUser?.id !== undefined && owner.id === currentUser.id) return null;\n return owner;\n })();\n\n const handleChangeSelectApiTokenType = ({ target: { value } }: { target: { value: string } }) => {\n setHasChangedPermissions(false);\n\n if (value === 'full-access') {\n onDispatch({\n type: 'SELECT_ALL_ACTIONS',\n });\n }\n if (value === 'read-only') {\n onDispatch({\n type: 'ON_CHANGE_READ_ONLY',\n });\n }\n };\n\n const typeOptions = [\n {\n value: 'read-only',\n label: {\n id: 'Settings.tokens.types.read-only',\n defaultMessage: 'Read-only',\n },\n },\n {\n value: 'full-access',\n label: {\n id: 'Settings.tokens.types.full-access',\n defaultMessage: 'Full access',\n },\n },\n {\n value: 'custom',\n label: {\n id: 'Settings.tokens.types.custom',\n defaultMessage: 'Custom',\n },\n },\n ];\n\n return (\n <Box\n background=\"neutral0\"\n hasRadius\n shadow=\"filterShadow\"\n paddingTop={6}\n paddingBottom={6}\n paddingLeft={7}\n paddingRight={7}\n >\n <Flex direction=\"column\" alignItems=\"stretch\" gap={4}>\n <Typography variant=\"delta\" tag=\"h2\">\n {formatMessage({\n id: 'global.details',\n defaultMessage: 'Details',\n })}\n </Typography>\n <Grid.Root gap={5}>\n <Grid.Item key=\"name\" m={6} xs={12} direction=\"column\" alignItems=\"stretch\">\n <TokenName\n error={errors['name']}\n value={values['name']}\n canEditInputs={canEditInputs}\n onChange={onChange}\n />\n </Grid.Item>\n <Grid.Item key=\"description\" m={6} xs={12} direction=\"column\" alignItems=\"stretch\">\n <TokenDescription\n error={errors['description']}\n value={values['description']}\n canEditInputs={canEditInputs}\n onChange={onChange}\n />\n </Grid.Item>\n <Grid.Item key=\"lifespan\" m={6} xs={12} direction=\"column\" alignItems=\"stretch\">\n <LifeSpanInput\n isCreating={isCreating}\n error={errors['lifespan']}\n value={values['lifespan']}\n onChange={onChange}\n token={apiToken}\n />\n </Grid.Item>\n\n {kind === 'content-api' && (\n <Grid.Item key=\"type\" m={6} xs={12} direction=\"column\" alignItems=\"stretch\">\n <TokenTypeSelect\n value={values['type']}\n error={errors['type']}\n label={{\n id: 'Settings.tokens.form.type',\n defaultMessage: 'Token type',\n }}\n onChange={(value) => {\n handleChangeSelectApiTokenType({ target: { value: String(value) } });\n\n onChange({ target: { name: 'type', value: String(value) } });\n }}\n options={typeOptions}\n canEditInputs={canEditInputs}\n />\n </Grid.Item>\n )}\n {ownerToDisplay !== null && (\n <Grid.Item key=\"owner\" m={6} xs={12} direction=\"column\" alignItems=\"stretch\">\n <Field.Root name=\"adminUserOwner\">\n <Field.Label>\n {formatMessage({\n id: 'Settings.tokens.form.owner',\n defaultMessage: 'Owner',\n })}\n </Field.Label>\n <TextInput\n type=\"text\"\n value={formatAdminUserName(ownerToDisplay)}\n disabled\n onChange={() => {}}\n />\n </Field.Root>\n </Grid.Item>\n )}\n </Grid.Root>\n </Flex>\n </Box>\n );\n};\n"],"names":["EMPTY_ERRORS","EMPTY_VALUES","EMPTY_API_TOKEN","formatAdminUserName","owner","full","firstname","lastname","filter","Boolean","join","username","email","FormApiTokenContainer","errors","onChange","canEditInputs","isCreating","values","apiToken","kind","onDispatch","setHasChangedPermissions","formatMessage","useIntl","currentUser","useAuth","state","user","ownerToDisplay","adminUserOwner","undefined","id","handleChangeSelectApiTokenType","target","value","type","typeOptions","label","defaultMessage","_jsx","Box","background","hasRadius","shadow","paddingTop","paddingBottom","paddingLeft","paddingRight","_jsxs","Flex","direction","alignItems","gap","Typography","variant","tag","Grid","Root","Item","m","xs","TokenName","error","TokenDescription","LifeSpanInput","token","TokenTypeSelect","String","name","options","Field","Label","TextInput","disabled"],"mappings":"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"}
|
|
@@ -8,6 +8,9 @@ import { TokenDescription } from './TokenDescription.mjs';
|
|
|
8
8
|
import { TokenName } from './TokenName.mjs';
|
|
9
9
|
import { TokenTypeSelect } from './TokenTypeSelect.mjs';
|
|
10
10
|
|
|
11
|
+
const EMPTY_ERRORS = {};
|
|
12
|
+
const EMPTY_VALUES = {};
|
|
13
|
+
const EMPTY_API_TOKEN = {};
|
|
11
14
|
const formatAdminUserName = (owner)=>{
|
|
12
15
|
const full = [
|
|
13
16
|
owner.firstname,
|
|
@@ -15,7 +18,7 @@ const formatAdminUserName = (owner)=>{
|
|
|
15
18
|
].filter(Boolean).join(' ');
|
|
16
19
|
return full || owner.username || owner.email || '';
|
|
17
20
|
};
|
|
18
|
-
const FormApiTokenContainer = ({ errors =
|
|
21
|
+
const FormApiTokenContainer = ({ errors = EMPTY_ERRORS, onChange, canEditInputs, isCreating, values = EMPTY_VALUES, apiToken = EMPTY_API_TOKEN, kind, onDispatch, setHasChangedPermissions })=>{
|
|
19
22
|
const { formatMessage } = useIntl();
|
|
20
23
|
const currentUser = useAuth('FormApiTokenContainer', (state)=>state.user);
|
|
21
24
|
const ownerToDisplay = (()=>{
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FormApiTokenContainer.mjs","sources":["../../../../../../../../admin/src/pages/Settings/components/Tokens/FormApiTokenContainer.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { Box, Field, Flex, Grid, TextInput, Typography } from '@strapi/design-system';\nimport { FormikErrors } from 'formik';\nimport { useIntl } from 'react-intl';\n\nimport { useAuth } from '../../../../features/Auth';\n\nimport { LifeSpanInput } from './LifeSpanInput';\nimport { TokenDescription } from './TokenDescription';\nimport { TokenName } from './TokenName';\nimport { TokenTypeSelect } from './TokenTypeSelect';\n\nimport type { AdminApiToken } from '../../../../../../shared/contracts/admin-token';\nimport type { ApiToken, ContentApiApiToken } from '../../../../../../shared/contracts/api-token';\nimport type { AdminTokenOwner } from '../../../../../../shared/contracts/shared';\nimport type { AuthContextValue } from '../../../../features/Auth';\n\ninterface FormApiTokenContainerProps {\n errors?: FormikErrors<Pick<ContentApiApiToken, 'name' | 'description' | 'lifespan' | 'type'>>;\n onChange: ({ target: { name, value } }: { target: { name: string; value: string } }) => void;\n canEditInputs: boolean;\n values?: Partial<Pick<ContentApiApiToken, 'name' | 'description' | 'lifespan' | 'type'>>;\n isCreating: boolean;\n apiToken?: null | Partial<ApiToken>;\n kind: 'admin' | 'content-api';\n onDispatch: React.Dispatch<{\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n type: any;\n value?: unknown;\n }>;\n setHasChangedPermissions: (hasChanged: boolean) => void;\n}\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\nexport const FormApiTokenContainer = ({\n errors = {},\n onChange,\n canEditInputs,\n isCreating,\n values = {},\n apiToken = {},\n kind,\n onDispatch,\n setHasChangedPermissions,\n}: FormApiTokenContainerProps) => {\n const { formatMessage } = useIntl();\n const currentUser = useAuth('FormApiTokenContainer', (state: AuthContextValue) => state.user);\n\n const ownerToDisplay = (() => {\n const owner =\n kind === 'admin'\n ? (apiToken as Partial<AdminApiToken> | null | undefined)?.adminUserOwner\n : undefined;\n if (owner === undefined || owner === null) return null;\n if (typeof owner !== 'object') return null;\n if (currentUser?.id !== undefined && owner.id === currentUser.id) return null;\n return owner;\n })();\n\n const handleChangeSelectApiTokenType = ({ target: { value } }: { target: { value: string } }) => {\n setHasChangedPermissions(false);\n\n if (value === 'full-access') {\n onDispatch({\n type: 'SELECT_ALL_ACTIONS',\n });\n }\n if (value === 'read-only') {\n onDispatch({\n type: 'ON_CHANGE_READ_ONLY',\n });\n }\n };\n\n const typeOptions = [\n {\n value: 'read-only',\n label: {\n id: 'Settings.tokens.types.read-only',\n defaultMessage: 'Read-only',\n },\n },\n {\n value: 'full-access',\n label: {\n id: 'Settings.tokens.types.full-access',\n defaultMessage: 'Full access',\n },\n },\n {\n value: 'custom',\n label: {\n id: 'Settings.tokens.types.custom',\n defaultMessage: 'Custom',\n },\n },\n ];\n\n return (\n <Box\n background=\"neutral0\"\n hasRadius\n shadow=\"filterShadow\"\n paddingTop={6}\n paddingBottom={6}\n paddingLeft={7}\n paddingRight={7}\n >\n <Flex direction=\"column\" alignItems=\"stretch\" gap={4}>\n <Typography variant=\"delta\" tag=\"h2\">\n {formatMessage({\n id: 'global.details',\n defaultMessage: 'Details',\n })}\n </Typography>\n <Grid.Root gap={5}>\n <Grid.Item key=\"name\" m={6} xs={12} direction=\"column\" alignItems=\"stretch\">\n <TokenName\n error={errors['name']}\n value={values['name']}\n canEditInputs={canEditInputs}\n onChange={onChange}\n />\n </Grid.Item>\n <Grid.Item key=\"description\" m={6} xs={12} direction=\"column\" alignItems=\"stretch\">\n <TokenDescription\n error={errors['description']}\n value={values['description']}\n canEditInputs={canEditInputs}\n onChange={onChange}\n />\n </Grid.Item>\n <Grid.Item key=\"lifespan\" m={6} xs={12} direction=\"column\" alignItems=\"stretch\">\n <LifeSpanInput\n isCreating={isCreating}\n error={errors['lifespan']}\n value={values['lifespan']}\n onChange={onChange}\n token={apiToken}\n />\n </Grid.Item>\n\n {kind === 'content-api' && (\n <Grid.Item key=\"type\" m={6} xs={12} direction=\"column\" alignItems=\"stretch\">\n <TokenTypeSelect\n value={values['type']}\n error={errors['type']}\n label={{\n id: 'Settings.tokens.form.type',\n defaultMessage: 'Token type',\n }}\n onChange={(value) => {\n handleChangeSelectApiTokenType({ target: { value: String(value) } });\n\n onChange({ target: { name: 'type', value: String(value) } });\n }}\n options={typeOptions}\n canEditInputs={canEditInputs}\n />\n </Grid.Item>\n )}\n {ownerToDisplay !== null && (\n <Grid.Item key=\"owner\" m={6} xs={12} direction=\"column\" alignItems=\"stretch\">\n <Field.Root name=\"adminUserOwner\">\n <Field.Label>\n {formatMessage({\n id: 'Settings.tokens.form.owner',\n defaultMessage: 'Owner',\n })}\n </Field.Label>\n <TextInput\n type=\"text\"\n value={formatAdminUserName(ownerToDisplay)}\n disabled\n onChange={() => {}}\n />\n </Field.Root>\n </Grid.Item>\n )}\n </Grid.Root>\n </Flex>\n </Box>\n );\n};\n"],"names":["formatAdminUserName","owner","full","firstname","lastname","filter","Boolean","join","username","email","FormApiTokenContainer","errors","onChange","canEditInputs","isCreating","values","apiToken","kind","onDispatch","setHasChangedPermissions","formatMessage","useIntl","currentUser","useAuth","state","user","ownerToDisplay","adminUserOwner","undefined","id","handleChangeSelectApiTokenType","target","value","type","typeOptions","label","defaultMessage","_jsx","Box","background","hasRadius","shadow","paddingTop","paddingBottom","paddingLeft","paddingRight","_jsxs","Flex","direction","alignItems","gap","Typography","variant","tag","Grid","Root","Item","m","xs","TokenName","error","TokenDescription","LifeSpanInput","token","TokenTypeSelect","String","name","options","Field","Label","TextInput","disabled"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"FormApiTokenContainer.mjs","sources":["../../../../../../../../admin/src/pages/Settings/components/Tokens/FormApiTokenContainer.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { Box, Field, Flex, Grid, TextInput, Typography } from '@strapi/design-system';\nimport { FormikErrors } from 'formik';\nimport { useIntl } from 'react-intl';\n\nimport { useAuth } from '../../../../features/Auth';\n\nimport { LifeSpanInput } from './LifeSpanInput';\nimport { TokenDescription } from './TokenDescription';\nimport { TokenName } from './TokenName';\nimport { TokenTypeSelect } from './TokenTypeSelect';\n\nimport type { AdminApiToken } from '../../../../../../shared/contracts/admin-token';\nimport type { ApiToken, ContentApiApiToken } from '../../../../../../shared/contracts/api-token';\nimport type { AdminTokenOwner } from '../../../../../../shared/contracts/shared';\nimport type { AuthContextValue } from '../../../../features/Auth';\n\nconst EMPTY_ERRORS: NonNullable<FormApiTokenContainerProps['errors']> = {};\nconst EMPTY_VALUES: NonNullable<FormApiTokenContainerProps['values']> = {};\nconst EMPTY_API_TOKEN: NonNullable<FormApiTokenContainerProps['apiToken']> = {};\n\ninterface FormApiTokenContainerProps {\n errors?: FormikErrors<Pick<ContentApiApiToken, 'name' | 'description' | 'lifespan' | 'type'>>;\n onChange: ({ target: { name, value } }: { target: { name: string; value: string } }) => void;\n canEditInputs: boolean;\n values?: Partial<Pick<ContentApiApiToken, 'name' | 'description' | 'lifespan' | 'type'>>;\n isCreating: boolean;\n apiToken?: null | Partial<ApiToken>;\n kind: 'admin' | 'content-api';\n onDispatch: React.Dispatch<{\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n type: any;\n value?: unknown;\n }>;\n setHasChangedPermissions: (hasChanged: boolean) => void;\n}\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\nexport const FormApiTokenContainer = ({\n errors = EMPTY_ERRORS,\n onChange,\n canEditInputs,\n isCreating,\n values = EMPTY_VALUES,\n apiToken = EMPTY_API_TOKEN,\n kind,\n onDispatch,\n setHasChangedPermissions,\n}: FormApiTokenContainerProps) => {\n const { formatMessage } = useIntl();\n const currentUser = useAuth('FormApiTokenContainer', (state: AuthContextValue) => state.user);\n\n const ownerToDisplay = (() => {\n const owner =\n kind === 'admin'\n ? (apiToken as Partial<AdminApiToken> | null | undefined)?.adminUserOwner\n : undefined;\n if (owner === undefined || owner === null) return null;\n if (typeof owner !== 'object') return null;\n if (currentUser?.id !== undefined && owner.id === currentUser.id) return null;\n return owner;\n })();\n\n const handleChangeSelectApiTokenType = ({ target: { value } }: { target: { value: string } }) => {\n setHasChangedPermissions(false);\n\n if (value === 'full-access') {\n onDispatch({\n type: 'SELECT_ALL_ACTIONS',\n });\n }\n if (value === 'read-only') {\n onDispatch({\n type: 'ON_CHANGE_READ_ONLY',\n });\n }\n };\n\n const typeOptions = [\n {\n value: 'read-only',\n label: {\n id: 'Settings.tokens.types.read-only',\n defaultMessage: 'Read-only',\n },\n },\n {\n value: 'full-access',\n label: {\n id: 'Settings.tokens.types.full-access',\n defaultMessage: 'Full access',\n },\n },\n {\n value: 'custom',\n label: {\n id: 'Settings.tokens.types.custom',\n defaultMessage: 'Custom',\n },\n },\n ];\n\n return (\n <Box\n background=\"neutral0\"\n hasRadius\n shadow=\"filterShadow\"\n paddingTop={6}\n paddingBottom={6}\n paddingLeft={7}\n paddingRight={7}\n >\n <Flex direction=\"column\" alignItems=\"stretch\" gap={4}>\n <Typography variant=\"delta\" tag=\"h2\">\n {formatMessage({\n id: 'global.details',\n defaultMessage: 'Details',\n })}\n </Typography>\n <Grid.Root gap={5}>\n <Grid.Item key=\"name\" m={6} xs={12} direction=\"column\" alignItems=\"stretch\">\n <TokenName\n error={errors['name']}\n value={values['name']}\n canEditInputs={canEditInputs}\n onChange={onChange}\n />\n </Grid.Item>\n <Grid.Item key=\"description\" m={6} xs={12} direction=\"column\" alignItems=\"stretch\">\n <TokenDescription\n error={errors['description']}\n value={values['description']}\n canEditInputs={canEditInputs}\n onChange={onChange}\n />\n </Grid.Item>\n <Grid.Item key=\"lifespan\" m={6} xs={12} direction=\"column\" alignItems=\"stretch\">\n <LifeSpanInput\n isCreating={isCreating}\n error={errors['lifespan']}\n value={values['lifespan']}\n onChange={onChange}\n token={apiToken}\n />\n </Grid.Item>\n\n {kind === 'content-api' && (\n <Grid.Item key=\"type\" m={6} xs={12} direction=\"column\" alignItems=\"stretch\">\n <TokenTypeSelect\n value={values['type']}\n error={errors['type']}\n label={{\n id: 'Settings.tokens.form.type',\n defaultMessage: 'Token type',\n }}\n onChange={(value) => {\n handleChangeSelectApiTokenType({ target: { value: String(value) } });\n\n onChange({ target: { name: 'type', value: String(value) } });\n }}\n options={typeOptions}\n canEditInputs={canEditInputs}\n />\n </Grid.Item>\n )}\n {ownerToDisplay !== null && (\n <Grid.Item key=\"owner\" m={6} xs={12} direction=\"column\" alignItems=\"stretch\">\n <Field.Root name=\"adminUserOwner\">\n <Field.Label>\n {formatMessage({\n id: 'Settings.tokens.form.owner',\n defaultMessage: 'Owner',\n })}\n </Field.Label>\n <TextInput\n type=\"text\"\n value={formatAdminUserName(ownerToDisplay)}\n disabled\n onChange={() => {}}\n />\n </Field.Root>\n </Grid.Item>\n )}\n </Grid.Root>\n </Flex>\n </Box>\n );\n};\n"],"names":["EMPTY_ERRORS","EMPTY_VALUES","EMPTY_API_TOKEN","formatAdminUserName","owner","full","firstname","lastname","filter","Boolean","join","username","email","FormApiTokenContainer","errors","onChange","canEditInputs","isCreating","values","apiToken","kind","onDispatch","setHasChangedPermissions","formatMessage","useIntl","currentUser","useAuth","state","user","ownerToDisplay","adminUserOwner","undefined","id","handleChangeSelectApiTokenType","target","value","type","typeOptions","label","defaultMessage","_jsx","Box","background","hasRadius","shadow","paddingTop","paddingBottom","paddingLeft","paddingRight","_jsxs","Flex","direction","alignItems","gap","Typography","variant","tag","Grid","Root","Item","m","xs","TokenName","error","TokenDescription","LifeSpanInput","token","TokenTypeSelect","String","name","options","Field","Label","TextInput","disabled"],"mappings":";;;;;;;;;;AAkBA,MAAMA,eAAkE,EAAC;AACzE,MAAMC,eAAkE,EAAC;AACzE,MAAMC,kBAAuE,EAAC;AAkB9E,MAAMC,sBAAsB,CAC1BC,KAAAA,GAAAA;AAEA,IAAA,MAAMC,IAAAA,GAAO;AAACD,QAAAA,KAAAA,CAAME,SAAS;AAAEF,QAAAA,KAAAA,CAAMG;AAAS,KAAA,CAACC,MAAM,CAACC,OAAAA,CAAAA,CAASC,IAAI,CAAC,GAAA,CAAA;AACpE,IAAA,OAAOL,QAAQD,KAAAA,CAAMO,QAAQ,IAAIP,KAAAA,CAAMQ,KAAK,IAAI,EAAA;AAClD,CAAA;AAEO,MAAMC,qBAAAA,GAAwB,CAAC,EACpCC,MAAAA,GAASd,YAAY,EACrBe,QAAQ,EACRC,aAAa,EACbC,UAAU,EACVC,MAAAA,GAASjB,YAAY,EACrBkB,QAAAA,GAAWjB,eAAe,EAC1BkB,IAAI,EACJC,UAAU,EACVC,wBAAwB,EACG,GAAA;IAC3B,MAAM,EAAEC,aAAa,EAAE,GAAGC,OAAAA,EAAAA;AAC1B,IAAA,MAAMC,cAAcC,OAAAA,CAAQ,uBAAA,EAAyB,CAACC,KAAAA,GAA4BA,MAAMC,IAAI,CAAA;IAE5F,MAAMC,cAAAA,GAAiB,CAAC,IAAA;AACtB,QAAA,MAAMzB,KAAAA,GACJgB,IAAAA,KAAS,OAAA,GACJD,QAAAA,EAAwDW,cAAAA,GACzDC,SAAAA;AACN,QAAA,IAAI3B,KAAAA,KAAU2B,SAAAA,IAAa3B,KAAAA,KAAU,IAAA,EAAM,OAAO,IAAA;QAClD,IAAI,OAAOA,KAAAA,KAAU,QAAA,EAAU,OAAO,IAAA;QACtC,IAAIqB,WAAAA,EAAaO,OAAOD,SAAAA,IAAa3B,KAAAA,CAAM4B,EAAE,KAAKP,WAAAA,CAAYO,EAAE,EAAE,OAAO,IAAA;QACzE,OAAO5B,KAAAA;IACT,CAAA,GAAA;AAEA,IAAA,MAAM6B,iCAAiC,CAAC,EAAEC,QAAQ,EAAEC,KAAK,EAAE,EAAiC,GAAA;QAC1Fb,wBAAAA,CAAyB,KAAA,CAAA;AAEzB,QAAA,IAAIa,UAAU,aAAA,EAAe;YAC3Bd,UAAAA,CAAW;gBACTe,IAAAA,EAAM;AACR,aAAA,CAAA;AACF,QAAA;AACA,QAAA,IAAID,UAAU,WAAA,EAAa;YACzBd,UAAAA,CAAW;gBACTe,IAAAA,EAAM;AACR,aAAA,CAAA;AACF,QAAA;AACF,IAAA,CAAA;AAEA,IAAA,MAAMC,WAAAA,GAAc;AAClB,QAAA;YACEF,KAAAA,EAAO,WAAA;YACPG,KAAAA,EAAO;gBACLN,EAAAA,EAAI,iCAAA;gBACJO,cAAAA,EAAgB;AAClB;AACF,SAAA;AACA,QAAA;YACEJ,KAAAA,EAAO,aAAA;YACPG,KAAAA,EAAO;gBACLN,EAAAA,EAAI,mCAAA;gBACJO,cAAAA,EAAgB;AAClB;AACF,SAAA;AACA,QAAA;YACEJ,KAAAA,EAAO,QAAA;YACPG,KAAAA,EAAO;gBACLN,EAAAA,EAAI,8BAAA;gBACJO,cAAAA,EAAgB;AAClB;AACF;AACD,KAAA;AAED,IAAA,qBACEC,GAAA,CAACC,GAAAA,EAAAA;QACCC,UAAAA,EAAW,UAAA;QACXC,SAAS,EAAA,IAAA;QACTC,MAAAA,EAAO,cAAA;QACPC,UAAAA,EAAY,CAAA;QACZC,aAAAA,EAAe,CAAA;QACfC,WAAAA,EAAa,CAAA;QACbC,YAAAA,EAAc,CAAA;AAEd,QAAA,QAAA,gBAAAC,IAAA,CAACC,IAAAA,EAAAA;YAAKC,SAAAA,EAAU,QAAA;YAASC,UAAAA,EAAW,SAAA;YAAUC,GAAAA,EAAK,CAAA;;8BACjDb,GAAA,CAACc,UAAAA,EAAAA;oBAAWC,OAAAA,EAAQ,OAAA;oBAAQC,GAAAA,EAAI,IAAA;8BAC7BjC,aAAAA,CAAc;wBACbS,EAAAA,EAAI,gBAAA;wBACJO,cAAAA,EAAgB;AAClB,qBAAA;;AAEF,8BAAAU,IAAA,CAACQ,KAAKC,IAAI,EAAA;oBAACL,GAAAA,EAAK,CAAA;;AACd,sCAAAb,GAAA,CAACiB,KAAKE,IAAI,EAAA;4BAAYC,CAAAA,EAAG,CAAA;4BAAGC,EAAAA,EAAI,EAAA;4BAAIV,SAAAA,EAAU,QAAA;4BAASC,UAAAA,EAAW,SAAA;AAChE,4BAAA,QAAA,gBAAAZ,GAAA,CAACsB,SAAAA,EAAAA;gCACCC,KAAAA,EAAOjD,MAAM,CAAC,MAAA,CAAO;gCACrBqB,KAAAA,EAAOjB,MAAM,CAAC,MAAA,CAAO;gCACrBF,aAAAA,EAAeA,aAAAA;gCACfD,QAAAA,EAAUA;;AALC,yBAAA,EAAA,MAAA,CAAA;AAQf,sCAAAyB,GAAA,CAACiB,KAAKE,IAAI,EAAA;4BAAmBC,CAAAA,EAAG,CAAA;4BAAGC,EAAAA,EAAI,EAAA;4BAAIV,SAAAA,EAAU,QAAA;4BAASC,UAAAA,EAAW,SAAA;AACvE,4BAAA,QAAA,gBAAAZ,GAAA,CAACwB,gBAAAA,EAAAA;gCACCD,KAAAA,EAAOjD,MAAM,CAAC,aAAA,CAAc;gCAC5BqB,KAAAA,EAAOjB,MAAM,CAAC,aAAA,CAAc;gCAC5BF,aAAAA,EAAeA,aAAAA;gCACfD,QAAAA,EAAUA;;AALC,yBAAA,EAAA,aAAA,CAAA;AAQf,sCAAAyB,GAAA,CAACiB,KAAKE,IAAI,EAAA;4BAAgBC,CAAAA,EAAG,CAAA;4BAAGC,EAAAA,EAAI,EAAA;4BAAIV,SAAAA,EAAU,QAAA;4BAASC,UAAAA,EAAW,SAAA;AACpE,4BAAA,QAAA,gBAAAZ,GAAA,CAACyB,aAAAA,EAAAA;gCACChD,UAAAA,EAAYA,UAAAA;gCACZ8C,KAAAA,EAAOjD,MAAM,CAAC,UAAA,CAAW;gCACzBqB,KAAAA,EAAOjB,MAAM,CAAC,UAAA,CAAW;gCACzBH,QAAAA,EAAUA,QAAAA;gCACVmD,KAAAA,EAAO/C;;AANI,yBAAA,EAAA,UAAA,CAAA;wBAUdC,IAAAA,KAAS,aAAA,kBACRoB,GAAA,CAACiB,IAAAA,CAAKE,IAAI,EAAA;4BAAYC,CAAAA,EAAG,CAAA;4BAAGC,EAAAA,EAAI,EAAA;4BAAIV,SAAAA,EAAU,QAAA;4BAASC,UAAAA,EAAW,SAAA;AAChE,4BAAA,QAAA,gBAAAZ,GAAA,CAAC2B,eAAAA,EAAAA;gCACChC,KAAAA,EAAOjB,MAAM,CAAC,MAAA,CAAO;gCACrB6C,KAAAA,EAAOjD,MAAM,CAAC,MAAA,CAAO;gCACrBwB,KAAAA,EAAO;oCACLN,EAAAA,EAAI,2BAAA;oCACJO,cAAAA,EAAgB;AAClB,iCAAA;AACAxB,gCAAAA,QAAAA,EAAU,CAACoB,KAAAA,GAAAA;oCACTF,8BAAAA,CAA+B;wCAAEC,MAAAA,EAAQ;AAAEC,4CAAAA,KAAAA,EAAOiC,MAAAA,CAAOjC,KAAAA;AAAO;AAAE,qCAAA,CAAA;oCAElEpB,QAAAA,CAAS;wCAAEmB,MAAAA,EAAQ;4CAAEmC,IAAAA,EAAM,MAAA;AAAQlC,4CAAAA,KAAAA,EAAOiC,MAAAA,CAAOjC,KAAAA;AAAO;AAAE,qCAAA,CAAA;AAC5D,gCAAA,CAAA;gCACAmC,OAAAA,EAASjC,WAAAA;gCACTrB,aAAAA,EAAeA;;AAdJ,yBAAA,EAAA,MAAA,CAAA;wBAkBhBa,cAAAA,KAAmB,IAAA,kBAClBW,GAAA,CAACiB,IAAAA,CAAKE,IAAI,EAAA;4BAAaC,CAAAA,EAAG,CAAA;4BAAGC,EAAAA,EAAI,EAAA;4BAAIV,SAAAA,EAAU,QAAA;4BAASC,UAAAA,EAAW,SAAA;oDACjEH,IAAA,CAACsB,MAAMb,IAAI,EAAA;gCAACW,IAAAA,EAAK,gBAAA;;AACf,kDAAA7B,GAAA,CAAC+B,MAAMC,KAAK,EAAA;kDACTjD,aAAAA,CAAc;4CACbS,EAAAA,EAAI,4BAAA;4CACJO,cAAAA,EAAgB;AAClB,yCAAA;;kDAEFC,GAAA,CAACiC,SAAAA,EAAAA;wCACCrC,IAAAA,EAAK,MAAA;AACLD,wCAAAA,KAAAA,EAAOhC,mBAAAA,CAAoB0B,cAAAA,CAAAA;wCAC3B6C,QAAQ,EAAA,IAAA;AACR3D,wCAAAA,QAAAA,EAAU,IAAA,CAAO;;;;AAZR,yBAAA,EAAA,OAAA;;;;;;AAqB3B;;;;"}
|
|
@@ -34,6 +34,8 @@ function _interopNamespace(e) {
|
|
|
34
34
|
|
|
35
35
|
var React__namespace = /*#__PURE__*/_interopNamespace(React);
|
|
36
36
|
|
|
37
|
+
const EMPTY_HEADERS = [];
|
|
38
|
+
const EMPTY_TOKENS = [];
|
|
37
39
|
const formatAdminUserName = (owner)=>{
|
|
38
40
|
const full = [
|
|
39
41
|
owner.firstname,
|
|
@@ -41,7 +43,7 @@ const formatAdminUserName = (owner)=>{
|
|
|
41
43
|
].filter(Boolean).join(' ');
|
|
42
44
|
return full || owner.username || owner.email || '';
|
|
43
45
|
};
|
|
44
|
-
const Table = ({ permissions, headers =
|
|
46
|
+
const Table = ({ permissions, headers = EMPTY_HEADERS, isLoading = false, tokens = EMPTY_TOKENS, onConfirmDelete, tokenType, showOwner = false })=>{
|
|
45
47
|
const [{ query }] = useQueryParams.useQueryParams();
|
|
46
48
|
const { formatMessage, locale } = reactIntl.useIntl();
|
|
47
49
|
const [, sortOrder] = query && query.sort ? query.sort.split(':') : [
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Table.js","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.js","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":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA4BA,MAAMA,gBAAoD,EAAE;AAC5D,MAAMC,eAAkD,EAAE;AAE1D,MAAMC,sBAAsB,CAC1BC,KAAAA,GAAAA;AAEA,IAAA,MAAMC,IAAAA,GAAO;AAACD,QAAAA,KAAAA,CAAME,SAAS;AAAEF,QAAAA,KAAAA,CAAMG;AAAS,KAAA,CAACC,MAAM,CAACC,OAAAA,CAAAA,CAASC,IAAI,CAAC,GAAA,CAAA;AACpE,IAAA,OAAOL,QAAQD,KAAAA,CAAMO,QAAQ,IAAIP,KAAAA,CAAMQ,KAAK,IAAI,EAAA;AAClD,CAAA;AAqBA,MAAMC,KAAAA,GAAQ,CAAC,EACbC,WAAW,EACXC,OAAAA,GAAUd,aAAa,EACvBe,SAAAA,GAAY,KAAK,EACjBC,MAAAA,GAASf,YAAY,EACrBgB,eAAe,EACfC,SAAS,EACTC,SAAAA,GAAY,KAAK,EACN,GAAA;AACX,IAAA,MAAM,CAAC,EAAEC,KAAK,EAAE,CAAC,GAAGC,6BAAAA,EAAAA;AACpB,IAAA,MAAM,EAAEC,aAAa,EAAEC,MAAM,EAAE,GAAGC,iBAAAA,EAAAA;AAClC,IAAA,MAAM,GAAGC,SAAAA,CAAU,GAAGL,KAAAA,IAASA,KAAAA,CAAMM,IAAI,GAAGN,KAAAA,CAAMM,IAAI,CAACC,KAAK,CAAC,GAAA,CAAA,GAAO;AAACC,QAAAA,SAAAA;AAAW,QAAA;AAAM,KAAA;AACtF,IAAA,MAAMC,QAAAA,GAAWC,0BAAAA,EAAAA;IACjB,MAAM,EAAEC,UAAU,EAAE,GAAGC,oBAAAA,EAAAA;AACvB,IAAA,MAAMC,YAAYC,wBAAAA,CAAYX,MAAAA,CAAAA;AAE9B,IAAA,MAAMY,YAAAA,GAAe;AAAInB,QAAAA,GAAAA;KAAO,CAACU,IAAI,CAAC,CAACU,CAAAA,EAAGC,CAAAA,GAAAA;AACxC,QAAA,OAAOZ,cAAc,MAAA,GACjBQ,SAAAA,CAAUK,OAAO,CAACD,CAAAA,CAAEE,IAAI,EAAEH,CAAAA,CAAEG,IAAI,CAAA,GAChCN,UAAUK,OAAO,CAACF,EAAEG,IAAI,EAAEF,EAAEE,IAAI,CAAA;AACtC,IAAA,CAAA,CAAA;AAEA,IAAA,MAAM,EAAEC,SAAS,EAAEC,SAAS,EAAEC,OAAO,EAAE,GAAG7B,WAAAA;IAE1C,MAAM8B,cAAAA,GAAiB,CAACC,EAAAA,GAAgB,IAAA;AACtC,YAAA,IAAIF,OAAAA,EAAS;AACXX,gBAAAA,UAAAA,CAAW,uBAAA,EAAyB;AAClCb,oBAAAA;AACF,iBAAA,CAAA;AACAW,gBAAAA,QAAAA,CAASe,GAAGC,QAAQ,EAAA,CAAA;AACtB,YAAA;AACF,QAAA,CAAA;IAEA,qBACEC,cAAA,CAACC,cAAUC,IAAI,EAAA;QAAClC,OAAAA,EAASA,OAAAA;QAASmC,IAAAA,EAAMd,YAAAA;QAAcpB,SAAAA,EAAWA,SAAAA;gCAC/DmC,eAAA,CAACH,cAAUI,OAAO,EAAA;;AAChB,8BAAAL,cAAA,CAACC,cAAUK,IAAI,EAAA;AACZtC,oBAAAA,QAAAA,EAAAA,OAAAA,CAAQuC,GAAG,CAAC,CAACC,MAAAA,iBACZR,cAAA,CAACC,cAAUQ,UAAU,EAAA;AAAoB,4BAAA,GAAGD;AAAjBA,yBAAAA,EAAAA,MAAAA,CAAOf,IAAI,CAAA;;AAG1C,8BAAAO,cAAA,CAACC,cAAUS,KAAK,EAAA,EAAA,CAAA;AAChB,8BAAAV,cAAA,CAACC,cAAUU,OAAO,EAAA,EAAA,CAAA;AAClB,8BAAAX,cAAA,CAACC,cAAUW,IAAI,EAAA;8BACZvB,YAAAA,CAAakB,GAAG,CAAC,CAACM,KAAAA,GAAAA;wBACjB,MAAMC,iBAAAA,GACJD,KAAAA,CAAMpB,IAAI,KAAK,WAAA,GAAcsB,WAAAA,CAAMC,SAAS,CAACC,cAAc,GAAGC,gBAAAA,CAAMC,QAAQ;wBAC9E,qBACEf,eAAA,CAACH,cAAUmB,GAAG,EAAA;4BAAgBC,OAAAA,EAASxB,cAAAA,CAAegB,MAAMf,EAAE,CAAA;;AAC5D,8CAAAE,cAAA,CAACC,cAAUqB,IAAI,EAAA;oCAACC,QAAAA,EAAS,OAAA;AACvB,oCAAA,QAAA,gBAAAvB,cAAA,CAACwB,uBAAAA,EAAAA;wCAAWC,SAAAA,EAAU,YAAA;wCAAaC,UAAAA,EAAW,MAAA;wCAAOC,QAAQ,EAAA,IAAA;AAC1Dd,wCAAAA,QAAAA,EAAAA,KAAAA,CAAMpB;;;AAGX,8CAAAO,cAAA,CAACC,cAAUqB,IAAI,EAAA;oCAACC,QAAAA,EAAS,OAAA;AACvB,oCAAA,QAAA,gBAAAvB,cAAA,CAACwB,uBAAAA,EAAAA;wCAAWC,SAAAA,EAAU,YAAA;wCAAaE,QAAQ,EAAA,IAAA;AACxCd,wCAAAA,QAAAA,EAAAA,KAAAA,CAAMe;;;AAGX,8CAAA5B,cAAA,CAACC,cAAUqB,IAAI,EAAA;AACb,oCAAA,QAAA,gBAAAtB,cAAA,CAACwB,uBAAAA,EAAAA;wCAAWC,SAAAA,EAAU,YAAA;AAEpB,wCAAA,QAAA,gBAAAzB,cAAA,CAAC6B,yBAAAA,EAAAA;4CAAaC,SAAAA,EAAW,IAAIC,IAAAA,CAAKlB,KAAAA,CAAMmB,SAAS;;;;AAGrD,8CAAAhC,cAAA,CAACC,cAAUqB,IAAI,EAAA;8CACZT,KAAAA,CAAMoB,UAAU,kBACfjC,cAAA,CAACwB,uBAAAA,EAAAA;wCAAWC,SAAAA,EAAU,YAAA;AACpB,wCAAA,QAAA,gBAAAzB,cAAA,CAAC6B,yBAAAA,EAAAA;4CACCC,SAAAA,EAAW,IAAIC,IAAAA,CAAKlB,KAAAA,CAAMoB,UAAU,CAAA;4CACpCC,eAAAA,EAAiB;AACf,gDAAA;oDACEC,IAAAA,EAAM,OAAA;oDACNC,SAAAA,EAAW,CAAA;AACXC,oDAAAA,IAAAA,EAAM7D,aAAAA,CAAc;wDAClBsB,EAAAA,EAAI,6BAAA;wDACJwC,cAAAA,EAAgB;AAClB,qDAAA;AACF;AACD;;;;gCAKRjE,SAAAA,KAAc,IAAA,IACb,CAAC,IAAA;AACC,oCAAA,MAAMkE,QAAAA,GAAW1B,KAAAA;AACjB,oCAAA,MAAMxD,QAAQkF,QAAAA,CAASC,IAAI,KAAK,OAAA,GAAUD,QAAAA,CAASE,cAAc,GAAG3D,SAAAA;oCACpE,MAAM4D,SAAAA,GACJrF,UAAUyB,SAAAA,IAAazB,KAAAA,KAAU,QAAQ,OAAOA,KAAAA,KAAU,QAAA,GACtDD,mBAAAA,CAAoBC,KAAAA,CAAAA,GACpB,EAAA;oCACN,qBACE2C,cAAA,CAACC,cAAUqB,IAAI,EAAA;wCAACC,QAAAA,EAAS,OAAA;AACvB,wCAAA,QAAA,gBAAAvB,cAAA,CAACwB,uBAAAA,EAAAA;4CAAWC,SAAAA,EAAU,YAAA;4CAAaE,QAAQ,EAAA,IAAA;AACxCe,4CAAAA,QAAAA,EAAAA;;;gCAIT,CAAA,GAAA;AACD/C,gCAAAA,SAAAA,IAAaC,OAAAA,IAAWF,SAAAA,iBACvBM,cAAA,CAACC,aAAAA,CAAUqB,IAAI,EAAA;AACb,oCAAA,QAAA,gBAAAlB,eAAA,CAACuC,iBAAAA,EAAAA;wCAAKC,cAAAA,EAAe,KAAA;;0DACnB5C,cAAA,CAACc,iBAAAA,EAAAA;AACEnB,gDAAAA,QAAAA,EAAAA,SAAAA,kBAAaK,cAAA,CAAC6C,YAAAA,EAAAA;AAAaC,oDAAAA,SAAAA,EAAWjC,MAAMpB,IAAI;AAAEsD,oDAAAA,OAAAA,EAASlC,MAAMf;;;AAEnEJ,4CAAAA,SAAAA,kBACCM,cAAA,CAACgD,YAAAA,EAAAA;AACCF,gDAAAA,SAAAA,EAAWjC,MAAMpB,IAAI;gDACrBwD,aAAAA,EAAe,IAAM9E,eAAAA,GAAkB0C,KAAAA,CAAMf,EAAE,CAAA;gDAC/C1B,SAAAA,EAAWA;;;;AAKjB,iCAAA,CAAA,GAAA;;AAnEcyC,yBAAAA,EAAAA,KAAAA,CAAMf,EAAE,CAAA;AAsEhC,oBAAA,CAAA;;;;;AAKV;AAEA;;AAEkG,qGAElG,MAAMoD,YAAAA,GAAe;IACnBC,IAAAA,EAAM;QACJrD,EAAAA,EAAI,0BAAA;QACJwC,cAAAA,EAAgB;AAClB,KAAA;IACAc,IAAAA,EAAM;QACJtD,EAAAA,EAAI,0BAAA;QACJwC,cAAAA,EAAgB;AAClB;AACF,CAAA;AASA,MAAMe,aAAAA,GAAgB,CAAC,EACrBP,SAAS,EACTC,OAAO,EACPO,UAAAA,GAAa,MAAM,EACnBC,QAAQ,EACW,GAAA;IACnB,MAAM,EAAE/E,aAAa,EAAE,GAAGE,iBAAAA,EAAAA;AAE1B,IAAA,qBACEsB,cAAA,CAACwD,gBAAAA,EAAAA;QACCC,GAAAA,EAAKC,sBAAAA;AACLC,QAAAA,EAAAA,EAAIZ,QAAQhD,QAAQ,EAAA;QACpBsB,OAAAA,EAAS,CAACuC,CAAAA,GAAwBA,CAAAA,CAAEC,eAAe,EAAA;AACnDC,QAAAA,KAAAA,EAAOtF,aAAAA,CAAc0E,YAAY,CAACI,UAAAA,CAAW,EAAE;YAAES,MAAAA,EAAQjB;AAAU,SAAA,CAAA;QACnEkB,OAAAA,EAAQ,OAAA;QACRC,IAAAA,EAAK,GAAA;AAEJV,QAAAA,QAAAA,EAAAA;;AAGP,CAAA;AAEA,MAAMC,gBAAAA,GAAmBU,uBAAAA,CAAOC,uBAAAA,CAAW;;;;;;AAM3C,CAAC;AAMD,MAAMnB,YAAAA,GAAe,CAAC,EAAEF,SAAS,EAAEG,aAAa,EAAE7E,SAAS,EAAqB,GAAA;IAC9E,MAAM,EAAEI,aAAa,EAAE,GAAGE,iBAAAA,EAAAA;IAC1B,MAAM,EAAEO,UAAU,EAAE,GAAGC,oBAAAA,EAAAA;AACvB,IAAA,MAAMkF,iBAAAA,GAAoB,IAAA;AACxBnF,QAAAA,UAAAA,CAAW,iBAAA,EAAmB;AAC5Bb,YAAAA;AACF,SAAA,CAAA;AACA6E,QAAAA,aAAAA,EAAAA;AACF,IAAA,CAAA;IAEA,qBACEjD,cAAA,CAACqE,oBAAOnE,IAAI,EAAA;AACV,QAAA,QAAA,gBAAAE,eAAA,CAACkE,gBAAAA,EAAAA;YAAWC,WAAAA,EAAa,CAAA;YAAGlD,OAAAA,EAAS,CAACuC,CAAAA,GAAMA,CAAAA,CAAEC,eAAe,EAAA;;AAC3D,8BAAA7D,cAAA,CAACqE,oBAAOG,OAAO,EAAA;AACb,oBAAA,QAAA,gBAAAxE,cAAA,CAACyE,uBAAAA,EAAAA;AACCC,wBAAAA,KAAAA,EAAOlG,aAAAA,CACL;4BACEsB,EAAAA,EAAI,sBAAA;4BACJwC,cAAAA,EAAgB;yBAClB,EACA;AAAEyB,4BAAAA,MAAAA,EAAQ,GAAGjB,SAAAA,CAAAA;AAAY,yBAAA,CAAA;wBAE3BrD,IAAAA,EAAK,QAAA;wBACLuE,OAAAA,EAAQ,OAAA;AAER,wBAAA,QAAA,gBAAAhE,cAAA,CAAC2E,WAAAA,EAAAA,EAAAA;;;8BAGL3E,cAAA,CAAC4E,2BAAAA,EAAAA;oBAAcC,SAAAA,EAAWT;;;;;AAIlC,CAAA;AAOA,MAAMvB,eAAe,CAAC,EAAEC,SAAS,EAAEC,OAAO,EAAe,GAAA;AACvD,IAAA,qBACE/C,cAAA,CAACqD,aAAAA,EAAAA;QAAcP,SAAAA,EAAWA,SAAAA;QAAWC,OAAAA,EAASA,OAAAA;AAC5C,QAAA,QAAA,gBAAA/C,cAAA,CAAC8E,YAAAA,EAAAA,EAAAA;;AAGP,CAAA;;;;"}
|
|
@@ -12,6 +12,8 @@ import { Table as Table$1 } from '../../../../components/Table.mjs';
|
|
|
12
12
|
import { useTracking } from '../../../../features/Tracking.mjs';
|
|
13
13
|
import { useQueryParams } from '../../../../hooks/useQueryParams.mjs';
|
|
14
14
|
|
|
15
|
+
const EMPTY_HEADERS = [];
|
|
16
|
+
const EMPTY_TOKENS = [];
|
|
15
17
|
const formatAdminUserName = (owner)=>{
|
|
16
18
|
const full = [
|
|
17
19
|
owner.firstname,
|
|
@@ -19,7 +21,7 @@ const formatAdminUserName = (owner)=>{
|
|
|
19
21
|
].filter(Boolean).join(' ');
|
|
20
22
|
return full || owner.username || owner.email || '';
|
|
21
23
|
};
|
|
22
|
-
const Table = ({ permissions, headers =
|
|
24
|
+
const Table = ({ permissions, headers = EMPTY_HEADERS, isLoading = false, tokens = EMPTY_TOKENS, onConfirmDelete, tokenType, showOwner = false })=>{
|
|
23
25
|
const [{ query }] = useQueryParams();
|
|
24
26
|
const { formatMessage, locale } = useIntl();
|
|
25
27
|
const [, sortOrder] = query && query.sort ? query.sort.split(':') : [
|
|
@@ -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":";;;;;;;;;;;;;;AA4BA,MAAMA,sBAAsB,CAC1BC,KAAAA,GAAAA;AAEA,IAAA,MAAMC,IAAAA,GAAO;AAACD,QAAAA,KAAAA,CAAME,SAAS;AAAEF,QAAAA,KAAAA,CAAMG;AAAS,KAAA,CAACC,MAAM,CAACC,OAAAA,CAAAA,CAASC,IAAI,CAAC,GAAA,CAAA;AACpE,IAAA,OAAOL,QAAQD,KAAAA,CAAMO,QAAQ,IAAIP,KAAAA,CAAMQ,KAAK,IAAI,EAAA;AAClD,CAAA;AAmBA,MAAMC,KAAAA,GAAQ,CAAC,EACbC,WAAW,EACXC,OAAAA,GAAU,EAAE,EACZC,SAAAA,GAAY,KAAK,EACjBC,MAAAA,GAAS,EAAE,EACXC,eAAe,EACfC,SAAS,EACTC,SAAAA,GAAY,KAAK,EACN,GAAA;AACX,IAAA,MAAM,CAAC,EAAEC,KAAK,EAAE,CAAC,GAAGC,cAAAA,EAAAA;AACpB,IAAA,MAAM,EAAEC,aAAa,EAAEC,MAAM,EAAE,GAAGC,OAAAA,EAAAA;AAClC,IAAA,MAAM,GAAGC,SAAAA,CAAU,GAAGL,KAAAA,IAASA,KAAAA,CAAMM,IAAI,GAAGN,KAAAA,CAAMM,IAAI,CAACC,KAAK,CAAC,GAAA,CAAA,GAAO;AAACC,QAAAA,SAAAA;AAAW,QAAA;AAAM,KAAA;AACtF,IAAA,MAAMC,QAAAA,GAAWC,WAAAA,EAAAA;IACjB,MAAM,EAAEC,UAAU,EAAE,GAAGC,WAAAA,EAAAA;AACvB,IAAA,MAAMC,YAAYC,WAAAA,CAAYX,MAAAA,CAAAA;AAE9B,IAAA,MAAMY,YAAAA,GAAe;AAAInB,QAAAA,GAAAA;KAAO,CAACU,IAAI,CAAC,CAACU,CAAAA,EAAGC,CAAAA,GAAAA;AACxC,QAAA,OAAOZ,cAAc,MAAA,GACjBQ,SAAAA,CAAUK,OAAO,CAACD,CAAAA,CAAEE,IAAI,EAAEH,CAAAA,CAAEG,IAAI,CAAA,GAChCN,UAAUK,OAAO,CAACF,EAAEG,IAAI,EAAEF,EAAEE,IAAI,CAAA;AACtC,IAAA,CAAA,CAAA;AAEA,IAAA,MAAM,EAAEC,SAAS,EAAEC,SAAS,EAAEC,OAAO,EAAE,GAAG7B,WAAAA;IAE1C,MAAM8B,cAAAA,GAAiB,CAACC,EAAAA,GAAgB,IAAA;AACtC,YAAA,IAAIF,OAAAA,EAAS;AACXX,gBAAAA,UAAAA,CAAW,uBAAA,EAAyB;AAClCb,oBAAAA;AACF,iBAAA,CAAA;AACAW,gBAAAA,QAAAA,CAASe,GAAGC,QAAQ,EAAA,CAAA;AACtB,YAAA;AACF,QAAA,CAAA;IAEA,qBACEC,GAAA,CAACC,QAAUC,IAAI,EAAA;QAAClC,OAAAA,EAASA,OAAAA;QAASmC,IAAAA,EAAMd,YAAAA;QAAcpB,SAAAA,EAAWA,SAAAA;gCAC/DmC,IAAA,CAACH,QAAUI,OAAO,EAAA;;AAChB,8BAAAL,GAAA,CAACC,QAAUK,IAAI,EAAA;AACZtC,oBAAAA,QAAAA,EAAAA,OAAAA,CAAQuC,GAAG,CAAC,CAACC,MAAAA,iBACZR,GAAA,CAACC,QAAUQ,UAAU,EAAA;AAAoB,4BAAA,GAAGD;AAAjBA,yBAAAA,EAAAA,MAAAA,CAAOf,IAAI,CAAA;;AAG1C,8BAAAO,GAAA,CAACC,QAAUS,KAAK,EAAA,EAAA,CAAA;AAChB,8BAAAV,GAAA,CAACC,QAAUU,OAAO,EAAA,EAAA,CAAA;AAClB,8BAAAX,GAAA,CAACC,QAAUW,IAAI,EAAA;8BACZvB,YAAAA,CAAakB,GAAG,CAAC,CAACM,KAAAA,GAAAA;wBACjB,MAAMC,iBAAAA,GACJD,KAAAA,CAAMpB,IAAI,KAAK,WAAA,GAAcsB,KAAAA,CAAMC,SAAS,CAACC,cAAc,GAAGC,KAAAA,CAAMC,QAAQ;wBAC9E,qBACEf,IAAA,CAACH,QAAUmB,GAAG,EAAA;4BAAgBC,OAAAA,EAASxB,cAAAA,CAAegB,MAAMf,EAAE,CAAA;;AAC5D,8CAAAE,GAAA,CAACC,QAAUqB,IAAI,EAAA;oCAACC,QAAAA,EAAS,OAAA;AACvB,oCAAA,QAAA,gBAAAvB,GAAA,CAACwB,UAAAA,EAAAA;wCAAWC,SAAAA,EAAU,YAAA;wCAAaC,UAAAA,EAAW,MAAA;wCAAOC,QAAQ,EAAA,IAAA;AAC1Dd,wCAAAA,QAAAA,EAAAA,KAAAA,CAAMpB;;;AAGX,8CAAAO,GAAA,CAACC,QAAUqB,IAAI,EAAA;oCAACC,QAAAA,EAAS,OAAA;AACvB,oCAAA,QAAA,gBAAAvB,GAAA,CAACwB,UAAAA,EAAAA;wCAAWC,SAAAA,EAAU,YAAA;wCAAaE,QAAQ,EAAA,IAAA;AACxCd,wCAAAA,QAAAA,EAAAA,KAAAA,CAAMe;;;AAGX,8CAAA5B,GAAA,CAACC,QAAUqB,IAAI,EAAA;AACb,oCAAA,QAAA,gBAAAtB,GAAA,CAACwB,UAAAA,EAAAA;wCAAWC,SAAAA,EAAU,YAAA;AAEpB,wCAAA,QAAA,gBAAAzB,GAAA,CAAC6B,YAAAA,EAAAA;4CAAaC,SAAAA,EAAW,IAAIC,IAAAA,CAAKlB,KAAAA,CAAMmB,SAAS;;;;AAGrD,8CAAAhC,GAAA,CAACC,QAAUqB,IAAI,EAAA;8CACZT,KAAAA,CAAMoB,UAAU,kBACfjC,GAAA,CAACwB,UAAAA,EAAAA;wCAAWC,SAAAA,EAAU,YAAA;AACpB,wCAAA,QAAA,gBAAAzB,GAAA,CAAC6B,YAAAA,EAAAA;4CACCC,SAAAA,EAAW,IAAIC,IAAAA,CAAKlB,KAAAA,CAAMoB,UAAU,CAAA;4CACpCC,eAAAA,EAAiB;AACf,gDAAA;oDACEC,IAAAA,EAAM,OAAA;oDACNC,SAAAA,EAAW,CAAA;AACXC,oDAAAA,IAAAA,EAAM7D,aAAAA,CAAc;wDAClBsB,EAAAA,EAAI,6BAAA;wDACJwC,cAAAA,EAAgB;AAClB,qDAAA;AACF;AACD;;;;gCAKRjE,SAAAA,KAAc,IAAA,IACb,CAAC,IAAA;AACC,oCAAA,MAAMkE,QAAAA,GAAW1B,KAAAA;AACjB,oCAAA,MAAMxD,QAAQkF,QAAAA,CAASC,IAAI,KAAK,OAAA,GAAUD,QAAAA,CAASE,cAAc,GAAG3D,SAAAA;oCACpE,MAAM4D,SAAAA,GACJrF,UAAUyB,SAAAA,IAAazB,KAAAA,KAAU,QAAQ,OAAOA,KAAAA,KAAU,QAAA,GACtDD,mBAAAA,CAAoBC,KAAAA,CAAAA,GACpB,EAAA;oCACN,qBACE2C,GAAA,CAACC,QAAUqB,IAAI,EAAA;wCAACC,QAAAA,EAAS,OAAA;AACvB,wCAAA,QAAA,gBAAAvB,GAAA,CAACwB,UAAAA,EAAAA;4CAAWC,SAAAA,EAAU,YAAA;4CAAaE,QAAQ,EAAA,IAAA;AACxCe,4CAAAA,QAAAA,EAAAA;;;gCAIT,CAAA,GAAA;AACD/C,gCAAAA,SAAAA,IAAaC,OAAAA,IAAWF,SAAAA,iBACvBM,GAAA,CAACC,OAAAA,CAAUqB,IAAI,EAAA;AACb,oCAAA,QAAA,gBAAAlB,IAAA,CAACuC,IAAAA,EAAAA;wCAAKC,cAAAA,EAAe,KAAA;;0DACnB5C,GAAA,CAACc,iBAAAA,EAAAA;AACEnB,gDAAAA,QAAAA,EAAAA,SAAAA,kBAAaK,GAAA,CAAC6C,YAAAA,EAAAA;AAAaC,oDAAAA,SAAAA,EAAWjC,MAAMpB,IAAI;AAAEsD,oDAAAA,OAAAA,EAASlC,MAAMf;;;AAEnEJ,4CAAAA,SAAAA,kBACCM,GAAA,CAACgD,YAAAA,EAAAA;AACCF,gDAAAA,SAAAA,EAAWjC,MAAMpB,IAAI;gDACrBwD,aAAAA,EAAe,IAAM9E,eAAAA,GAAkB0C,KAAAA,CAAMf,EAAE,CAAA;gDAC/C1B,SAAAA,EAAWA;;;;AAKjB,iCAAA,CAAA,GAAA;;AAnEcyC,yBAAAA,EAAAA,KAAAA,CAAMf,EAAE,CAAA;AAsEhC,oBAAA,CAAA;;;;;AAKV;AAEA;;AAEkG,qGAElG,MAAMoD,YAAAA,GAAe;IACnBC,IAAAA,EAAM;QACJrD,EAAAA,EAAI,0BAAA;QACJwC,cAAAA,EAAgB;AAClB,KAAA;IACAc,IAAAA,EAAM;QACJtD,EAAAA,EAAI,0BAAA;QACJwC,cAAAA,EAAgB;AAClB;AACF,CAAA;AASA,MAAMe,aAAAA,GAAgB,CAAC,EACrBP,SAAS,EACTC,OAAO,EACPO,UAAAA,GAAa,MAAM,EACnBC,QAAQ,EACW,GAAA;IACnB,MAAM,EAAE/E,aAAa,EAAE,GAAGE,OAAAA,EAAAA;AAE1B,IAAA,qBACEsB,GAAA,CAACwD,gBAAAA,EAAAA;QACCC,GAAAA,EAAKC,OAAAA;AACLC,QAAAA,EAAAA,EAAIZ,QAAQhD,QAAQ,EAAA;QACpBsB,OAAAA,EAAS,CAACuC,CAAAA,GAAwBA,CAAAA,CAAEC,eAAe,EAAA;AACnDC,QAAAA,KAAAA,EAAOtF,aAAAA,CAAc0E,YAAY,CAACI,UAAAA,CAAW,EAAE;YAAES,MAAAA,EAAQjB;AAAU,SAAA,CAAA;QACnEkB,OAAAA,EAAQ,OAAA;QACRC,IAAAA,EAAK,GAAA;AAEJV,QAAAA,QAAAA,EAAAA;;AAGP,CAAA;AAEA,MAAMC,gBAAAA,GAAmBU,MAAAA,CAAOC,UAAAA,CAAW;;;;;;AAM3C,CAAC;AAMD,MAAMnB,YAAAA,GAAe,CAAC,EAAEF,SAAS,EAAEG,aAAa,EAAE7E,SAAS,EAAqB,GAAA;IAC9E,MAAM,EAAEI,aAAa,EAAE,GAAGE,OAAAA,EAAAA;IAC1B,MAAM,EAAEO,UAAU,EAAE,GAAGC,WAAAA,EAAAA;AACvB,IAAA,MAAMkF,iBAAAA,GAAoB,IAAA;AACxBnF,QAAAA,UAAAA,CAAW,iBAAA,EAAmB;AAC5Bb,YAAAA;AACF,SAAA,CAAA;AACA6E,QAAAA,aAAAA,EAAAA;AACF,IAAA,CAAA;IAEA,qBACEjD,GAAA,CAACqE,OAAOnE,IAAI,EAAA;AACV,QAAA,QAAA,gBAAAE,IAAA,CAACkE,GAAAA,EAAAA;YAAWC,WAAAA,EAAa,CAAA;YAAGlD,OAAAA,EAAS,CAACuC,CAAAA,GAAMA,CAAAA,CAAEC,eAAe,EAAA;;AAC3D,8BAAA7D,GAAA,CAACqE,OAAOG,OAAO,EAAA;AACb,oBAAA,QAAA,gBAAAxE,GAAA,CAACyE,UAAAA,EAAAA;AACCC,wBAAAA,KAAAA,EAAOlG,aAAAA,CACL;4BACEsB,EAAAA,EAAI,sBAAA;4BACJwC,cAAAA,EAAgB;yBAClB,EACA;AAAEyB,4BAAAA,MAAAA,EAAQ,GAAGjB,SAAAA,CAAAA;AAAY,yBAAA,CAAA;wBAE3BrD,IAAAA,EAAK,QAAA;wBACLuE,OAAAA,EAAQ,OAAA;AAER,wBAAA,QAAA,gBAAAhE,GAAA,CAAC2E,KAAAA,EAAAA,EAAAA;;;8BAGL3E,GAAA,CAAC4E,aAAAA,EAAAA;oBAAcC,SAAAA,EAAWT;;;;;AAIlC,CAAA;AAOA,MAAMvB,eAAe,CAAC,EAAEC,SAAS,EAAEC,OAAO,EAAe,GAAA;AACvD,IAAA,qBACE/C,GAAA,CAACqD,aAAAA,EAAAA;QAAcP,SAAAA,EAAWA,SAAAA;QAAWC,OAAAA,EAASA,OAAAA;AAC5C,QAAA,QAAA,gBAAA/C,GAAA,CAAC8E,MAAAA,EAAAA,EAAAA;;AAGP,CAAA;;;;"}
|
|
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
|
|
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 =
|
|
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
|
|
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 =
|
|
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;;;;"}
|
package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/EditView/components/BoundRoute.js
CHANGED
|
@@ -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('/')) : [];
|
package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/EditView/components/BoundRoute.js.map
CHANGED
|
@@ -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 = ({
|
|
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 \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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"}
|
package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/EditView/components/BoundRoute.mjs
CHANGED
|
@@ -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('/')) : [];
|
package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/EditView/components/BoundRoute.mjs.map
CHANGED
|
@@ -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 = ({
|
|
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 \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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"}
|