@strapi/admin 5.29.0 → 5.30.1
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/ContentBox.js.map +1 -1
- package/dist/admin/admin/src/components/ContentBox.mjs.map +1 -1
- package/dist/admin/admin/src/components/DescriptionComponentRenderer.js.map +1 -1
- package/dist/admin/admin/src/components/DescriptionComponentRenderer.mjs.map +1 -1
- package/dist/admin/admin/src/components/Filters.js +1 -1
- package/dist/admin/admin/src/components/Filters.js.map +1 -1
- package/dist/admin/admin/src/components/Filters.mjs +1 -1
- package/dist/admin/admin/src/components/Filters.mjs.map +1 -1
- package/dist/admin/admin/src/components/Form.js +8 -3
- package/dist/admin/admin/src/components/Form.js.map +1 -1
- package/dist/admin/admin/src/components/Form.mjs +8 -3
- package/dist/admin/admin/src/components/Form.mjs.map +1 -1
- package/dist/admin/admin/src/components/FormInputs/Enumeration.js +1 -1
- package/dist/admin/admin/src/components/FormInputs/Enumeration.js.map +1 -1
- package/dist/admin/admin/src/components/FormInputs/Enumeration.mjs +1 -1
- package/dist/admin/admin/src/components/FormInputs/Enumeration.mjs.map +1 -1
- package/dist/admin/admin/src/components/FormInputs/Number.js +1 -1
- package/dist/admin/admin/src/components/FormInputs/Number.js.map +1 -1
- package/dist/admin/admin/src/components/FormInputs/Number.mjs +1 -1
- package/dist/admin/admin/src/components/FormInputs/Number.mjs.map +1 -1
- package/dist/admin/admin/src/components/FormInputs/Renderer.js.map +1 -1
- package/dist/admin/admin/src/components/FormInputs/Renderer.mjs.map +1 -1
- package/dist/admin/admin/src/components/FormInputs/String.js +2 -1
- package/dist/admin/admin/src/components/FormInputs/String.js.map +1 -1
- package/dist/admin/admin/src/components/FormInputs/String.mjs +2 -1
- package/dist/admin/admin/src/components/FormInputs/String.mjs.map +1 -1
- package/dist/admin/admin/src/components/FormInputs/Time.js.map +1 -1
- package/dist/admin/admin/src/components/FormInputs/Time.mjs.map +1 -1
- package/dist/admin/admin/src/components/GapDropZone.js.map +1 -1
- package/dist/admin/admin/src/components/GapDropZone.mjs.map +1 -1
- package/dist/admin/admin/src/components/GuidedTour/Overview.js.map +1 -1
- package/dist/admin/admin/src/components/GuidedTour/Overview.mjs.map +1 -1
- package/dist/admin/admin/src/components/GuidedTour/Steps/ContentTypeBuilderSteps.js.map +1 -1
- package/dist/admin/admin/src/components/GuidedTour/Steps/ContentTypeBuilderSteps.mjs.map +1 -1
- package/dist/admin/admin/src/components/GuidedTour/Steps/Step.js.map +1 -1
- package/dist/admin/admin/src/components/GuidedTour/Steps/Step.mjs.map +1 -1
- package/dist/admin/admin/src/components/Layouts/GridLayout.js.map +1 -1
- package/dist/admin/admin/src/components/Layouts/GridLayout.mjs.map +1 -1
- package/dist/admin/admin/src/components/Layouts/HeaderLayout.js +8 -4
- package/dist/admin/admin/src/components/Layouts/HeaderLayout.js.map +1 -1
- package/dist/admin/admin/src/components/Layouts/HeaderLayout.mjs +8 -4
- package/dist/admin/admin/src/components/Layouts/HeaderLayout.mjs.map +1 -1
- package/dist/admin/admin/src/components/NpsSurvey.js +5 -3
- package/dist/admin/admin/src/components/NpsSurvey.js.map +1 -1
- package/dist/admin/admin/src/components/NpsSurvey.mjs +5 -3
- package/dist/admin/admin/src/components/NpsSurvey.mjs.map +1 -1
- package/dist/admin/admin/src/components/PageHelpers.js.map +1 -1
- package/dist/admin/admin/src/components/PageHelpers.mjs.map +1 -1
- package/dist/admin/admin/src/components/PrivateRoute.js.map +1 -1
- package/dist/admin/admin/src/components/PrivateRoute.mjs.map +1 -1
- package/dist/admin/admin/src/components/RelativeTime.js.map +1 -1
- package/dist/admin/admin/src/components/RelativeTime.mjs.map +1 -1
- package/dist/admin/admin/src/components/ResizeIndicator.js.map +1 -1
- package/dist/admin/admin/src/components/ResizeIndicator.mjs.map +1 -1
- package/dist/admin/admin/src/components/Table.js +1 -1
- package/dist/admin/admin/src/components/Table.js.map +1 -1
- package/dist/admin/admin/src/components/Table.mjs +1 -1
- package/dist/admin/admin/src/components/Table.mjs.map +1 -1
- package/dist/admin/admin/src/components/Theme.js +34 -1
- package/dist/admin/admin/src/components/Theme.js.map +1 -1
- package/dist/admin/admin/src/components/Theme.mjs +34 -1
- package/dist/admin/admin/src/components/Theme.mjs.map +1 -1
- package/dist/admin/admin/src/components/Widgets.js.map +1 -1
- package/dist/admin/admin/src/components/Widgets.mjs.map +1 -1
- package/dist/admin/admin/src/core/apis/CustomFields.js.map +1 -1
- package/dist/admin/admin/src/core/apis/CustomFields.mjs.map +1 -1
- package/dist/admin/admin/src/core/apis/Plugin.js +0 -1
- package/dist/admin/admin/src/core/apis/Plugin.js.map +1 -1
- package/dist/admin/admin/src/core/apis/Plugin.mjs +0 -1
- package/dist/admin/admin/src/core/apis/Plugin.mjs.map +1 -1
- package/dist/admin/admin/src/core/apis/Widgets.js.map +1 -1
- package/dist/admin/admin/src/core/apis/Widgets.mjs.map +1 -1
- package/dist/admin/admin/src/core/apis/rbac.js.map +1 -1
- package/dist/admin/admin/src/core/apis/rbac.mjs.map +1 -1
- package/dist/admin/admin/src/core/apis/router.js.map +1 -1
- package/dist/admin/admin/src/core/apis/router.mjs.map +1 -1
- package/dist/admin/admin/src/features/BackButton.js.map +1 -1
- package/dist/admin/admin/src/features/BackButton.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/features/Widgets.js.map +1 -1
- package/dist/admin/admin/src/features/Widgets.mjs.map +1 -1
- package/dist/admin/admin/src/hooks/usePersistentState.js.map +1 -1
- package/dist/admin/admin/src/hooks/usePersistentState.mjs.map +1 -1
- package/dist/admin/admin/src/hooks/useRBAC.js.map +1 -1
- package/dist/admin/admin/src/hooks/useRBAC.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Auth/components/Login.js +1 -1
- package/dist/admin/admin/src/pages/Auth/components/Login.js.map +1 -1
- package/dist/admin/admin/src/pages/Auth/components/Login.mjs +1 -1
- package/dist/admin/admin/src/pages/Auth/components/Login.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Auth/components/Register.js.map +1 -1
- package/dist/admin/admin/src/pages/Auth/components/Register.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Home/HomePage.js.map +1 -1
- package/dist/admin/admin/src/pages/Home/HomePage.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Marketplace/MarketplacePage.js +2 -2
- package/dist/admin/admin/src/pages/Marketplace/MarketplacePage.js.map +1 -1
- package/dist/admin/admin/src/pages/Marketplace/MarketplacePage.mjs +2 -2
- package/dist/admin/admin/src/pages/Marketplace/MarketplacePage.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Marketplace/components/NpmPackageCard.js.map +1 -1
- package/dist/admin/admin/src/pages/Marketplace/components/NpmPackageCard.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Marketplace/components/NpmPackagesFilters.js.map +1 -1
- package/dist/admin/admin/src/pages/Marketplace/components/NpmPackagesFilters.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Marketplace/components/PageHeader.js.map +1 -1
- package/dist/admin/admin/src/pages/Marketplace/components/PageHeader.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Marketplace/hooks/useMarketplaceData.js.map +1 -1
- package/dist/admin/admin/src/pages/Marketplace/hooks/useMarketplaceData.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Settings/components/SettingsNav.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/components/SettingsNav.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Settings/components/Tokens/FormHead.js +8 -1
- package/dist/admin/admin/src/pages/Settings/components/Tokens/FormHead.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/components/Tokens/FormHead.mjs +9 -2
- package/dist/admin/admin/src/pages/Settings/components/Tokens/FormHead.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Settings/components/Tokens/LifeSpanInput.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/components/Tokens/LifeSpanInput.mjs.map +1 -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.map +1 -1
- package/dist/admin/admin/src/pages/Settings/components/Tokens/TokenName.js +1 -0
- package/dist/admin/admin/src/pages/Settings/components/Tokens/TokenName.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/components/Tokens/TokenName.mjs +1 -0
- package/dist/admin/admin/src/pages/Settings/components/Tokens/TokenName.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/EditView/EditViewPage.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/EditView/EditViewPage.mjs.map +1 -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.map +1 -1
- 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.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/ListView.js +2 -0
- package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/ListView.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/ListView.mjs +2 -0
- package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/ListView.mjs.map +1 -1
- 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.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/ApplicationInfo/components/LogoInput.js +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 +1 -0
- package/dist/admin/admin/src/pages/Settings/pages/ApplicationInfo/components/LogoInput.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/ApplicationInfo/utils/files.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/ApplicationInfo/utils/files.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/InstalledPlugins.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/InstalledPlugins.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Roles/CreatePage.js +10 -2
- package/dist/admin/admin/src/pages/Settings/pages/Roles/CreatePage.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Roles/CreatePage.mjs +10 -2
- package/dist/admin/admin/src/pages/Settings/pages/Roles/CreatePage.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Roles/EditPage.js +9 -2
- package/dist/admin/admin/src/pages/Settings/pages/Roles/EditPage.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Roles/EditPage.mjs +9 -2
- package/dist/admin/admin/src/pages/Settings/pages/Roles/EditPage.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Roles/ListPage.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Roles/ListPage.mjs.map +1 -1
- 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.map +1 -1
- 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.map +1 -1
- 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.map +1 -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.map +1 -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.map +1 -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.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Roles/components/RoleForm.js +2 -1
- package/dist/admin/admin/src/pages/Settings/pages/Roles/components/RoleForm.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Roles/components/RoleForm.mjs +2 -1
- package/dist/admin/admin/src/pages/Settings/pages/Roles/components/RoleForm.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Roles/utils/forms.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Roles/utils/forms.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Roles/utils/permissions.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Roles/utils/permissions.mjs.map +1 -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.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/TransferTokens/ListView.js +2 -0
- package/dist/admin/admin/src/pages/Settings/pages/TransferTokens/ListView.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/TransferTokens/ListView.mjs +2 -0
- package/dist/admin/admin/src/pages/Settings/pages/TransferTokens/ListView.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Users/EditPage.js +9 -2
- 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 +9 -2
- 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 +3 -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 +3 -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/MagicLinkCE.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Users/components/MagicLinkCE.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Users/components/SelectRoles.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Users/components/SelectRoles.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Webhooks/EditPage.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Webhooks/EditPage.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Webhooks/ListPage.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Webhooks/ListPage.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Webhooks/components/HeadersInput.js +1 -1
- 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 +1 -1
- 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 +9 -2
- 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 +9 -2
- package/dist/admin/admin/src/pages/Settings/pages/Webhooks/components/WebhookForm.mjs.map +1 -1
- package/dist/admin/admin/src/pages/UseCasePage.js +1 -0
- package/dist/admin/admin/src/pages/UseCasePage.js.map +1 -1
- package/dist/admin/admin/src/pages/UseCasePage.mjs +1 -0
- package/dist/admin/admin/src/pages/UseCasePage.mjs.map +1 -1
- package/dist/admin/admin/src/services/api.js +2 -1
- package/dist/admin/admin/src/services/api.js.map +1 -1
- package/dist/admin/admin/src/services/api.mjs +2 -1
- package/dist/admin/admin/src/services/api.mjs.map +1 -1
- package/dist/admin/admin/src/services/apiTokens.js.map +1 -1
- package/dist/admin/admin/src/services/apiTokens.mjs.map +1 -1
- package/dist/admin/admin/src/services/transferTokens.js.map +1 -1
- package/dist/admin/admin/src/services/transferTokens.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/services/webhooks.js.map +1 -1
- package/dist/admin/admin/src/services/webhooks.mjs.map +1 -1
- package/dist/admin/admin/src/translations/en.json.js +4 -0
- package/dist/admin/admin/src/translations/en.json.js.map +1 -1
- package/dist/admin/admin/src/translations/en.json.mjs +4 -0
- package/dist/admin/admin/src/translations/en.json.mjs.map +1 -1
- package/dist/admin/admin/src/utils/cookies.js.map +1 -1
- package/dist/admin/admin/src/utils/cookies.mjs.map +1 -1
- package/dist/admin/admin/src/utils/getFetchClient.js.map +1 -1
- package/dist/admin/admin/src/utils/getFetchClient.mjs.map +1 -1
- package/dist/admin/admin/src/utils/getPrefixedId.js.map +1 -1
- package/dist/admin/admin/src/utils/getPrefixedId.mjs.map +1 -1
- package/dist/admin/admin/src/utils/rulesEngine.js.map +1 -1
- package/dist/admin/admin/src/utils/rulesEngine.mjs.map +1 -1
- package/dist/admin/admin/src/utils/urls.js.map +1 -1
- package/dist/admin/admin/src/utils/urls.mjs.map +1 -1
- package/dist/admin/admin/src/utils/users.js.map +1 -1
- package/dist/admin/admin/src/utils/users.mjs.map +1 -1
- package/dist/admin/ee/admin/src/components/AuditLogs/Widgets.js.map +1 -1
- package/dist/admin/ee/admin/src/components/AuditLogs/Widgets.mjs.map +1 -1
- package/dist/admin/ee/admin/src/hooks/useLicenseLimitNotification.js.map +1 -1
- package/dist/admin/ee/admin/src/hooks/useLicenseLimitNotification.mjs.map +1 -1
- package/dist/admin/ee/admin/src/pages/AuthPage/components/SSOProviders.js.map +1 -1
- package/dist/admin/ee/admin/src/pages/AuthPage/components/SSOProviders.mjs.map +1 -1
- package/dist/admin/ee/admin/src/pages/AuthResponse.js.map +1 -1
- package/dist/admin/ee/admin/src/pages/AuthResponse.mjs.map +1 -1
- 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.map +1 -1
- package/dist/admin/ee/admin/src/pages/SettingsPage/pages/AuditLogs/ListPage.js +3 -3
- package/dist/admin/ee/admin/src/pages/SettingsPage/pages/AuditLogs/ListPage.js.map +1 -1
- package/dist/admin/ee/admin/src/pages/SettingsPage/pages/AuditLogs/ListPage.mjs +3 -3
- package/dist/admin/ee/admin/src/pages/SettingsPage/pages/AuditLogs/ListPage.mjs.map +1 -1
- package/dist/admin/ee/admin/src/pages/SettingsPage/pages/AuditLogs/components/Modal.js.map +1 -1
- package/dist/admin/ee/admin/src/pages/SettingsPage/pages/AuditLogs/components/Modal.mjs.map +1 -1
- package/dist/admin/ee/admin/src/pages/SettingsPage/pages/AuditLogs/hooks/useFormatTimeStamp.js.map +1 -1
- package/dist/admin/ee/admin/src/pages/SettingsPage/pages/AuditLogs/hooks/useFormatTimeStamp.mjs.map +1 -1
- package/dist/admin/ee/admin/src/pages/SettingsPage/pages/AuditLogs/utils/getDisplayedFilters.js.map +1 -1
- package/dist/admin/ee/admin/src/pages/SettingsPage/pages/AuditLogs/utils/getDisplayedFilters.mjs.map +1 -1
- package/dist/admin/ee/admin/src/pages/SettingsPage/pages/Users/components/MagicLinkEE.js.map +1 -1
- package/dist/admin/ee/admin/src/pages/SettingsPage/pages/Users/components/MagicLinkEE.mjs.map +1 -1
- package/dist/admin/ee/admin/src/services/ai.js +14 -1
- package/dist/admin/ee/admin/src/services/ai.js.map +1 -1
- package/dist/admin/ee/admin/src/services/ai.mjs +14 -2
- package/dist/admin/ee/admin/src/services/ai.mjs.map +1 -1
- package/dist/admin/ee/admin/src/services/auditLogs.js.map +1 -1
- package/dist/admin/ee/admin/src/services/auditLogs.mjs.map +1 -1
- package/dist/admin/ee.js +1 -0
- package/dist/admin/ee.js.map +1 -1
- package/dist/admin/ee.mjs +1 -1
- package/dist/admin/src/components/Form.d.ts +1 -1
- package/dist/admin/src/core/store/configure.d.ts +2 -2
- package/dist/admin/src/core/store/hooks.d.ts +2 -2
- package/dist/admin/src/ee.d.ts +1 -1
- package/dist/admin/src/hooks/useAdminRoles.d.ts +1 -1
- package/dist/admin/src/pages/Settings/pages/Webhooks/hooks/useWebhooks.d.ts +4 -4
- package/dist/admin/src/selectors.d.ts +2 -2
- package/dist/admin/src/services/admin.d.ts +6 -6
- package/dist/admin/src/services/api.d.ts +1 -1
- package/dist/admin/src/services/apiTokens.d.ts +1 -1
- package/dist/admin/src/services/auth.d.ts +13 -13
- package/dist/admin/src/services/contentApi.d.ts +1 -1
- package/dist/admin/src/services/contentManager.d.ts +1 -1
- package/dist/admin/src/services/homepage.d.ts +3 -3
- package/dist/admin/src/services/transferTokens.d.ts +1 -1
- package/dist/admin/src/services/users.d.ts +8 -8
- package/dist/admin/src/services/webhooks.d.ts +2 -2
- package/dist/admin/tests/utils.d.ts +1 -1
- package/dist/ee/admin/src/services/ai.d.ts +6 -3
- package/dist/ee/admin/src/services/auditLogs.d.ts +1 -1
- package/dist/ee/server/src/ai/containers/ai.d.ts +11 -0
- package/dist/ee/server/src/ai/containers/ai.d.ts.map +1 -0
- package/dist/ee/server/src/ai/controllers/ai.d.ts +1 -0
- package/dist/ee/server/src/ai/controllers/ai.d.ts.map +1 -1
- package/dist/ee/server/src/ai/routes/ai.d.ts.map +1 -1
- package/dist/ee/server/src/index.d.ts +1 -0
- package/dist/ee/server/src/index.d.ts.map +1 -1
- package/dist/server/ee/server/src/ai/containers/ai.js +18 -0
- package/dist/server/ee/server/src/ai/containers/ai.js.map +1 -0
- package/dist/server/ee/server/src/ai/containers/ai.mjs +16 -0
- package/dist/server/ee/server/src/ai/containers/ai.mjs.map +1 -0
- package/dist/server/ee/server/src/ai/controllers/ai.js +6 -0
- package/dist/server/ee/server/src/ai/controllers/ai.js.map +1 -1
- package/dist/server/ee/server/src/ai/controllers/ai.mjs +6 -0
- package/dist/server/ee/server/src/ai/controllers/ai.mjs.map +1 -1
- package/dist/server/ee/server/src/ai/routes/ai.js +11 -0
- package/dist/server/ee/server/src/ai/routes/ai.js.map +1 -1
- package/dist/server/ee/server/src/ai/routes/ai.mjs +11 -0
- package/dist/server/ee/server/src/ai/routes/ai.mjs.map +1 -1
- package/dist/server/ee/server/src/audit-logs/services/audit-logs.js.map +1 -1
- package/dist/server/ee/server/src/audit-logs/services/audit-logs.mjs.map +1 -1
- package/dist/server/ee/server/src/controllers/authentication-utils/constants.js.map +1 -1
- package/dist/server/ee/server/src/controllers/authentication-utils/constants.mjs.map +1 -1
- package/dist/server/ee/server/src/controllers/authentication-utils/utils.js.map +1 -1
- package/dist/server/ee/server/src/controllers/authentication-utils/utils.mjs.map +1 -1
- package/dist/server/ee/server/src/controllers/authentication.js.map +1 -1
- package/dist/server/ee/server/src/controllers/authentication.mjs.map +1 -1
- package/dist/server/ee/server/src/controllers/user.js.map +1 -1
- package/dist/server/ee/server/src/controllers/user.mjs.map +1 -1
- package/dist/server/ee/server/src/index.js +7 -0
- package/dist/server/ee/server/src/index.js.map +1 -1
- package/dist/server/ee/server/src/index.mjs +7 -0
- package/dist/server/ee/server/src/index.mjs.map +1 -1
- package/dist/server/ee/server/src/services/auth.js.map +1 -1
- package/dist/server/ee/server/src/services/auth.mjs.map +1 -1
- package/dist/server/ee/server/src/services/passport/sso.js.map +1 -1
- package/dist/server/ee/server/src/services/passport/sso.mjs.map +1 -1
- package/dist/server/ee/server/src/utils/index.js.map +1 -1
- package/dist/server/ee/server/src/utils/index.mjs.map +1 -1
- package/dist/server/server/src/controllers/transfer/index.js.map +1 -1
- package/dist/server/server/src/controllers/transfer/index.mjs.map +1 -1
- package/dist/server/server/src/controllers/user.js +10 -0
- package/dist/server/server/src/controllers/user.js.map +1 -1
- package/dist/server/server/src/controllers/user.mjs +10 -0
- package/dist/server/server/src/controllers/user.mjs.map +1 -1
- package/dist/server/server/src/domain/action/index.js.map +1 -1
- package/dist/server/server/src/domain/action/index.mjs.map +1 -1
- package/dist/server/server/src/domain/condition/index.js.map +1 -1
- package/dist/server/server/src/domain/condition/index.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/middlewares/rateLimit.js.map +1 -1
- package/dist/server/server/src/middlewares/rateLimit.mjs.map +1 -1
- package/dist/server/server/src/routes/serve-admin-panel.js.map +1 -1
- package/dist/server/server/src/routes/serve-admin-panel.mjs.map +1 -1
- package/dist/server/server/src/services/api-token.js.map +1 -1
- package/dist/server/server/src/services/api-token.mjs.map +1 -1
- package/dist/server/server/src/services/auth.js.map +1 -1
- package/dist/server/server/src/services/auth.mjs.map +1 -1
- package/dist/server/server/src/services/content-type.js.map +1 -1
- package/dist/server/server/src/services/content-type.mjs.map +1 -1
- package/dist/server/server/src/services/encryption.js.map +1 -1
- package/dist/server/server/src/services/encryption.mjs.map +1 -1
- package/dist/server/server/src/services/homepage.js.map +1 -1
- package/dist/server/server/src/services/homepage.mjs.map +1 -1
- package/dist/server/server/src/services/permission/permissions-manager/sanitize.js.map +1 -1
- package/dist/server/server/src/services/permission/permissions-manager/sanitize.mjs.map +1 -1
- package/dist/server/server/src/services/permission/permissions-manager/validate.js.map +1 -1
- package/dist/server/server/src/services/permission/permissions-manager/validate.mjs.map +1 -1
- package/dist/server/server/src/services/role.js.map +1 -1
- package/dist/server/server/src/services/role.mjs.map +1 -1
- package/dist/server/server/src/services/transfer/token.js.map +1 -1
- package/dist/server/server/src/services/transfer/token.mjs.map +1 -1
- package/dist/server/server/src/services/user.js +30 -0
- package/dist/server/server/src/services/user.js.map +1 -1
- package/dist/server/server/src/services/user.mjs +30 -0
- package/dist/server/server/src/services/user.mjs.map +1 -1
- package/dist/server/server/src/utils/index.js.map +1 -1
- package/dist/server/server/src/utils/index.mjs.map +1 -1
- package/dist/server/server/src/validation/action-provider.js.map +1 -1
- package/dist/server/server/src/validation/action-provider.mjs.map +1 -1
- package/dist/server/server/src/validation/common-functions/check-fields-are-correctly-nested.js.map +1 -1
- package/dist/server/server/src/validation/common-functions/check-fields-are-correctly-nested.mjs.map +1 -1
- package/dist/server/server/src/validation/common-validators.js.map +1 -1
- package/dist/server/server/src/validation/common-validators.mjs.map +1 -1
- package/dist/server/src/controllers/user.d.ts.map +1 -1
- package/dist/server/src/services/user.d.ts.map +1 -1
- package/dist/shared/contracts/ai.d.ts +16 -0
- package/dist/shared/contracts/ai.d.ts.map +1 -1
- package/package.json +7 -7
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"NpmPackageCard.mjs","sources":["../../../../../../../admin/src/pages/Marketplace/components/NpmPackageCard.tsx"],"sourcesContent":["import {\n Box,\n Flex,\n Tooltip,\n Typography,\n Divider,\n Button,\n LinkButton,\n TypographyComponent,\n} from '@strapi/design-system';\nimport { CheckCircle, ExternalLink, Download, Star, Check, Duplicate } from '@strapi/icons';\nimport { GitHub } from '@strapi/icons/symbols';\nimport pluralize from 'pluralize';\nimport { useIntl } from 'react-intl';\nimport * as semver from 'semver';\nimport { styled } from 'styled-components';\n\nimport StrapiLogo from '../../../assets/images/logo-strapi-2022.svg';\nimport { AppInfoContextValue } from '../../../features/AppInfo';\nimport { useNotification } from '../../../features/Notifications';\nimport { useTracking } from '../../../features/Tracking';\nimport { useClipboard } from '../../../hooks/useClipboard';\n\nimport type { Plugin, Provider } from '../hooks/useMarketplaceData';\nimport type { NpmPackageType } from '../MarketplacePage';\n\n// Custom component to have an ellipsis after the 2nd line\nconst EllipsisText = styled<TypographyComponent<'p'>>(Typography)`\n display: -webkit-box;\n -webkit-box-orient: vertical;\n -webkit-line-clamp: 2;\n overflow: hidden;\n`;\n\ninterface NpmPackageCardProps extends Pick<AppInfoContextValue, 'useYarn'> {\n npmPackage: Plugin | Provider;\n isInstalled: boolean;\n isInDevelopmentMode: AppInfoContextValue['autoReload'];\n npmPackageType: NpmPackageType;\n strapiAppVersion: AppInfoContextValue['strapiVersion'];\n}\n\nconst NpmPackageCard = ({\n npmPackage,\n isInstalled,\n useYarn,\n isInDevelopmentMode,\n npmPackageType,\n strapiAppVersion,\n}: NpmPackageCardProps) => {\n const { attributes } = npmPackage;\n const { formatMessage } = useIntl();\n const { trackUsage } = useTracking();\n\n const commandToCopy = useYarn\n ? `yarn add ${attributes.npmPackageName}`\n : `npm install ${attributes.npmPackageName}`;\n\n const madeByStrapiMessage = formatMessage({\n id: 'admin.pages.MarketPlacePage.plugin.tooltip.madeByStrapi',\n defaultMessage: 'Made by Strapi',\n });\n\n const npmPackageHref = `https://market.strapi.io/${pluralize.plural(npmPackageType)}/${\n attributes.slug\n }`;\n\n const versionRange = semver.validRange(attributes.strapiVersion);\n\n const isCompatible = versionRange\n ? semver.satisfies(strapiAppVersion ?? '', versionRange)\n : false;\n\n return (\n <Flex\n direction=\"column\"\n justifyContent=\"space-between\"\n paddingTop={4}\n paddingRight={4}\n paddingBottom={4}\n paddingLeft={4}\n hasRadius\n background=\"neutral0\"\n shadow=\"tableShadow\"\n height=\"100%\"\n alignItems=\"normal\"\n data-testid=\"npm-package-card\"\n >\n <Box>\n <Flex direction=\"row\" justifyContent=\"space-between\" alignItems=\"flex-start\">\n <Box\n tag=\"img\"\n src={attributes.logo.url}\n alt={`${attributes.name} logo`}\n hasRadius\n width={11}\n height={11}\n />\n <PackageStats\n githubStars={attributes.githubStars}\n npmDownloads={attributes.npmDownloads}\n npmPackageType={npmPackageType}\n />\n </Flex>\n <Box paddingTop={4}>\n <Typography tag=\"h3\" variant=\"delta\">\n <Flex\n alignItems=\"center\"\n gap={attributes.validated && !attributes.madeByStrapi ? 2 : 1}\n >\n {attributes.name}\n {attributes.validated && !attributes.madeByStrapi && (\n <Tooltip\n description={formatMessage({\n id: 'admin.pages.MarketPlacePage.plugin.tooltip.verified',\n defaultMessage: 'Plugin verified by Strapi',\n })}\n >\n <CheckCircle fill=\"success600\" />\n </Tooltip>\n )}\n {attributes.madeByStrapi && (\n <Tooltip description={madeByStrapiMessage}>\n <Box\n tag=\"img\"\n src={StrapiLogo}\n alt={madeByStrapiMessage}\n width={6}\n height=\"auto\"\n />\n </Tooltip>\n )}\n </Flex>\n </Typography>\n </Box>\n <Box paddingTop={2}>\n <EllipsisText tag=\"p\" variant=\"omega\" textColor=\"neutral600\">\n {attributes.description}\n </EllipsisText>\n </Box>\n </Box>\n\n <Flex gap={2} style={{ alignSelf: 'flex-end' }} paddingTop={6}>\n <LinkButton\n size=\"S\"\n href={npmPackageHref}\n isExternal\n endIcon={<ExternalLink />}\n aria-label={formatMessage(\n {\n id: 'admin.pages.MarketPlacePage.plugin.info.label',\n defaultMessage: 'Learn more about {pluginName}',\n },\n { pluginName: attributes.name }\n )}\n variant=\"tertiary\"\n onClick={() => trackUsage('didPluginLearnMore')}\n >\n {formatMessage({\n id: 'admin.pages.MarketPlacePage.plugin.info.text',\n defaultMessage: 'More',\n })}\n </LinkButton>\n <InstallPluginButton\n isInstalled={isInstalled}\n isInDevelopmentMode={isInDevelopmentMode}\n isCompatible={isCompatible}\n commandToCopy={commandToCopy}\n strapiAppVersion={strapiAppVersion}\n strapiPeerDepVersion={attributes.strapiVersion}\n pluginName={attributes.name}\n />\n </Flex>\n </Flex>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * InstallPluginButton\n * -----------------------------------------------------------------------------------------------*/\n\ninterface InstallPluginButtonProps\n extends Pick<NpmPackageCardProps, 'isInstalled' | 'isInDevelopmentMode' | 'strapiAppVersion'> {\n commandToCopy: string;\n pluginName: string;\n strapiPeerDepVersion?: string;\n isCompatible?: boolean;\n}\n\nconst InstallPluginButton = ({\n isInstalled,\n isInDevelopmentMode,\n isCompatible,\n commandToCopy,\n strapiAppVersion,\n strapiPeerDepVersion,\n pluginName,\n}: InstallPluginButtonProps) => {\n const { toggleNotification } = useNotification();\n const { formatMessage } = useIntl();\n const { trackUsage } = useTracking();\n const { copy } = useClipboard();\n\n const handleCopy = async () => {\n const didCopy = await copy(commandToCopy);\n\n if (didCopy) {\n trackUsage('willInstallPlugin');\n toggleNotification({\n type: 'success',\n message: formatMessage({ id: 'admin.pages.MarketPlacePage.plugin.copy.success' }),\n });\n }\n };\n\n // Already installed\n if (isInstalled) {\n return (\n <Flex gap={2} paddingLeft={4}>\n <Check width=\"1.2rem\" height=\"1.2rem\" color=\"success600\" />\n <Typography variant=\"omega\" textColor=\"success600\" fontWeight=\"bold\">\n {formatMessage({\n id: 'admin.pages.MarketPlacePage.plugin.installed',\n defaultMessage: 'Installed',\n })}\n </Typography>\n </Flex>\n );\n }\n\n // In development, show install button\n if (isInDevelopmentMode && isCompatible !== false) {\n return (\n <CardButton\n strapiAppVersion={strapiAppVersion}\n strapiPeerDepVersion={strapiPeerDepVersion}\n handleCopy={handleCopy}\n pluginName={pluginName}\n />\n );\n }\n\n // Not in development and plugin not installed already. Show nothing\n return null;\n};\n\n/* -------------------------------------------------------------------------------------------------\n * CardButton\n * -----------------------------------------------------------------------------------------------*/\n\ninterface CardButtonProps\n extends Pick<NpmPackageCardProps, 'strapiAppVersion'>,\n Pick<InstallPluginButtonProps, 'strapiPeerDepVersion' | 'pluginName'> {\n handleCopy: () => void;\n}\n\nconst CardButton = ({\n strapiPeerDepVersion,\n strapiAppVersion,\n handleCopy,\n pluginName,\n}: CardButtonProps) => {\n const { formatMessage } = useIntl();\n const versionRange = semver.validRange(strapiPeerDepVersion);\n const isCompatible = semver.satisfies(strapiAppVersion ?? '', versionRange ?? '');\n\n const installMessage = formatMessage({\n id: 'admin.pages.MarketPlacePage.plugin.copy',\n defaultMessage: 'Copy install command',\n });\n\n // Only plugins receive a strapiAppVersion\n if (strapiAppVersion) {\n if (!versionRange || !isCompatible) {\n return (\n <Tooltip\n data-testid={`tooltip-${pluginName}`}\n label={formatMessage(\n {\n id: 'admin.pages.MarketPlacePage.plugin.version',\n defaultMessage:\n 'Update your Strapi version: \"{strapiAppVersion}\" to: \"{versionRange}\"',\n },\n {\n strapiAppVersion,\n versionRange,\n }\n )}\n >\n <span>\n <Button\n size=\"S\"\n startIcon={<Duplicate />}\n variant=\"secondary\"\n onClick={handleCopy}\n disabled={!isCompatible}\n >\n {installMessage}\n </Button>\n </span>\n </Tooltip>\n );\n }\n }\n\n return (\n <Button size=\"S\" startIcon={<Duplicate />} variant=\"secondary\" onClick={handleCopy}>\n {installMessage}\n </Button>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * PackageStats\n * -----------------------------------------------------------------------------------------------*/\n\ninterface PackageStatsProps {\n githubStars?: number;\n npmDownloads?: number;\n npmPackageType: NpmPackageType;\n}\n\nconst PackageStats = ({ githubStars = 0, npmDownloads = 0, npmPackageType }: PackageStatsProps) => {\n const { formatMessage } = useIntl();\n\n return (\n <Flex gap={1}>\n {!!githubStars && (\n <>\n <GitHub height=\"1.2rem\" width=\"1.2rem\" aria-hidden />\n <Star height=\"1.2rem\" width=\"1.2rem\" fill=\"warning500\" aria-hidden />\n <p\n aria-label={formatMessage(\n {\n id: `admin.pages.MarketPlacePage.${npmPackageType}.githubStars`,\n defaultMessage: `This {package} was starred {starsCount} on GitHub`,\n },\n {\n starsCount: githubStars,\n package: npmPackageType,\n }\n )}\n >\n <Typography variant=\"pi\" textColor=\"neutral800\">\n {githubStars}\n </Typography>\n </p>\n <VerticalDivider />\n </>\n )}\n <Download height=\"1.2rem\" width=\"1.2rem\" aria-hidden />\n <p\n aria-label={formatMessage(\n {\n id: `admin.pages.MarketPlacePage.${npmPackageType}.downloads`,\n defaultMessage: `This {package} has {downloadsCount} weekly downloads`,\n },\n {\n downloadsCount: npmDownloads,\n package: npmPackageType,\n }\n )}\n >\n <Typography variant=\"pi\" textColor=\"neutral800\">\n {npmDownloads}\n </Typography>\n </p>\n </Flex>\n );\n};\n\nconst VerticalDivider = styled(Divider)`\n width: 1.2rem;\n transform: rotate(90deg);\n`;\n\nexport { NpmPackageCard };\nexport type { NpmPackageCardProps };\n"],"names":["EllipsisText","styled","Typography","NpmPackageCard","npmPackage","isInstalled","useYarn","isInDevelopmentMode","npmPackageType","strapiAppVersion","attributes","formatMessage","useIntl","trackUsage","useTracking","commandToCopy","npmPackageName","madeByStrapiMessage","id","defaultMessage","npmPackageHref","pluralize","plural","slug","versionRange","semver","validRange","strapiVersion","isCompatible","satisfies","_jsxs","Flex","direction","justifyContent","paddingTop","paddingRight","paddingBottom","paddingLeft","hasRadius","background","shadow","height","alignItems","data-testid","Box","_jsx","tag","src","logo","url","alt","name","width","PackageStats","githubStars","npmDownloads","variant","gap","validated","madeByStrapi","Tooltip","description","CheckCircle","fill","StrapiLogo","textColor","style","alignSelf","LinkButton","size","href","isExternal","endIcon","ExternalLink","aria-label","pluginName","onClick","InstallPluginButton","strapiPeerDepVersion","toggleNotification","useNotification","copy","useClipboard","handleCopy","didCopy","type","message","Check","color","fontWeight","CardButton","installMessage","label","span","Button","startIcon","Duplicate","disabled","_Fragment","GitHub","aria-hidden","Star","p","starsCount","package","VerticalDivider","Download","downloadsCount","Divider"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"NpmPackageCard.mjs","sources":["../../../../../../../admin/src/pages/Marketplace/components/NpmPackageCard.tsx"],"sourcesContent":["import {\n Box,\n Flex,\n Tooltip,\n Typography,\n Divider,\n Button,\n LinkButton,\n TypographyComponent,\n} from '@strapi/design-system';\nimport { CheckCircle, ExternalLink, Download, Star, Check, Duplicate } from '@strapi/icons';\nimport { GitHub } from '@strapi/icons/symbols';\nimport pluralize from 'pluralize';\nimport { useIntl } from 'react-intl';\nimport * as semver from 'semver';\nimport { styled } from 'styled-components';\n\nimport StrapiLogo from '../../../assets/images/logo-strapi-2022.svg';\nimport { AppInfoContextValue } from '../../../features/AppInfo';\nimport { useNotification } from '../../../features/Notifications';\nimport { useTracking } from '../../../features/Tracking';\nimport { useClipboard } from '../../../hooks/useClipboard';\n\nimport type { Plugin, Provider } from '../hooks/useMarketplaceData';\nimport type { NpmPackageType } from '../MarketplacePage';\n\n// Custom component to have an ellipsis after the 2nd line\nconst EllipsisText = styled<TypographyComponent<'p'>>(Typography)`\n display: -webkit-box;\n -webkit-box-orient: vertical;\n -webkit-line-clamp: 2;\n overflow: hidden;\n`;\n\ninterface NpmPackageCardProps extends Pick<AppInfoContextValue, 'useYarn'> {\n npmPackage: Plugin | Provider;\n isInstalled: boolean;\n isInDevelopmentMode: AppInfoContextValue['autoReload'];\n npmPackageType: NpmPackageType;\n strapiAppVersion: AppInfoContextValue['strapiVersion'];\n}\n\nconst NpmPackageCard = ({\n npmPackage,\n isInstalled,\n useYarn,\n isInDevelopmentMode,\n npmPackageType,\n strapiAppVersion,\n}: NpmPackageCardProps) => {\n const { attributes } = npmPackage;\n const { formatMessage } = useIntl();\n const { trackUsage } = useTracking();\n\n const commandToCopy = useYarn\n ? `yarn add ${attributes.npmPackageName}`\n : `npm install ${attributes.npmPackageName}`;\n\n const madeByStrapiMessage = formatMessage({\n id: 'admin.pages.MarketPlacePage.plugin.tooltip.madeByStrapi',\n defaultMessage: 'Made by Strapi',\n });\n\n const npmPackageHref = `https://market.strapi.io/${pluralize.plural(npmPackageType)}/${\n attributes.slug\n }`;\n\n const versionRange = semver.validRange(attributes.strapiVersion);\n\n const isCompatible = versionRange\n ? semver.satisfies(strapiAppVersion ?? '', versionRange)\n : false;\n\n return (\n <Flex\n direction=\"column\"\n justifyContent=\"space-between\"\n paddingTop={4}\n paddingRight={4}\n paddingBottom={4}\n paddingLeft={4}\n hasRadius\n background=\"neutral0\"\n shadow=\"tableShadow\"\n height=\"100%\"\n alignItems=\"normal\"\n data-testid=\"npm-package-card\"\n >\n <Box>\n <Flex direction=\"row\" justifyContent=\"space-between\" alignItems=\"flex-start\">\n <Box\n tag=\"img\"\n src={attributes.logo.url}\n alt={`${attributes.name} logo`}\n hasRadius\n width={11}\n height={11}\n />\n <PackageStats\n githubStars={attributes.githubStars}\n npmDownloads={attributes.npmDownloads}\n npmPackageType={npmPackageType}\n />\n </Flex>\n <Box paddingTop={4}>\n <Typography tag=\"h3\" variant=\"delta\">\n <Flex\n alignItems=\"center\"\n gap={attributes.validated && !attributes.madeByStrapi ? 2 : 1}\n >\n {attributes.name}\n {attributes.validated && !attributes.madeByStrapi && (\n <Tooltip\n description={formatMessage({\n id: 'admin.pages.MarketPlacePage.plugin.tooltip.verified',\n defaultMessage: 'Plugin verified by Strapi',\n })}\n >\n <CheckCircle fill=\"success600\" />\n </Tooltip>\n )}\n {attributes.madeByStrapi && (\n <Tooltip description={madeByStrapiMessage}>\n <Box\n tag=\"img\"\n src={StrapiLogo}\n alt={madeByStrapiMessage}\n width={6}\n height=\"auto\"\n />\n </Tooltip>\n )}\n </Flex>\n </Typography>\n </Box>\n <Box paddingTop={2}>\n <EllipsisText tag=\"p\" variant=\"omega\" textColor=\"neutral600\">\n {attributes.description}\n </EllipsisText>\n </Box>\n </Box>\n\n <Flex gap={2} style={{ alignSelf: 'flex-end' }} paddingTop={6}>\n <LinkButton\n size=\"S\"\n href={npmPackageHref}\n isExternal\n endIcon={<ExternalLink />}\n aria-label={formatMessage(\n {\n id: 'admin.pages.MarketPlacePage.plugin.info.label',\n defaultMessage: 'Learn more about {pluginName}',\n },\n { pluginName: attributes.name }\n )}\n variant=\"tertiary\"\n onClick={() => trackUsage('didPluginLearnMore')}\n >\n {formatMessage({\n id: 'admin.pages.MarketPlacePage.plugin.info.text',\n defaultMessage: 'More',\n })}\n </LinkButton>\n <InstallPluginButton\n isInstalled={isInstalled}\n isInDevelopmentMode={isInDevelopmentMode}\n isCompatible={isCompatible}\n commandToCopy={commandToCopy}\n strapiAppVersion={strapiAppVersion}\n strapiPeerDepVersion={attributes.strapiVersion}\n pluginName={attributes.name}\n />\n </Flex>\n </Flex>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * InstallPluginButton\n * -----------------------------------------------------------------------------------------------*/\n\ninterface InstallPluginButtonProps\n extends Pick<NpmPackageCardProps, 'isInstalled' | 'isInDevelopmentMode' | 'strapiAppVersion'> {\n commandToCopy: string;\n pluginName: string;\n strapiPeerDepVersion?: string;\n isCompatible?: boolean;\n}\n\nconst InstallPluginButton = ({\n isInstalled,\n isInDevelopmentMode,\n isCompatible,\n commandToCopy,\n strapiAppVersion,\n strapiPeerDepVersion,\n pluginName,\n}: InstallPluginButtonProps) => {\n const { toggleNotification } = useNotification();\n const { formatMessage } = useIntl();\n const { trackUsage } = useTracking();\n const { copy } = useClipboard();\n\n const handleCopy = async () => {\n const didCopy = await copy(commandToCopy);\n\n if (didCopy) {\n trackUsage('willInstallPlugin');\n toggleNotification({\n type: 'success',\n message: formatMessage({ id: 'admin.pages.MarketPlacePage.plugin.copy.success' }),\n });\n }\n };\n\n // Already installed\n if (isInstalled) {\n return (\n <Flex gap={2} paddingLeft={4}>\n <Check width=\"1.2rem\" height=\"1.2rem\" color=\"success600\" />\n <Typography variant=\"omega\" textColor=\"success600\" fontWeight=\"bold\">\n {formatMessage({\n id: 'admin.pages.MarketPlacePage.plugin.installed',\n defaultMessage: 'Installed',\n })}\n </Typography>\n </Flex>\n );\n }\n\n // In development, show install button\n if (isInDevelopmentMode && isCompatible !== false) {\n return (\n <CardButton\n strapiAppVersion={strapiAppVersion}\n strapiPeerDepVersion={strapiPeerDepVersion}\n handleCopy={handleCopy}\n pluginName={pluginName}\n />\n );\n }\n\n // Not in development and plugin not installed already. Show nothing\n return null;\n};\n\n/* -------------------------------------------------------------------------------------------------\n * CardButton\n * -----------------------------------------------------------------------------------------------*/\n\ninterface CardButtonProps\n extends Pick<NpmPackageCardProps, 'strapiAppVersion'>,\n Pick<InstallPluginButtonProps, 'strapiPeerDepVersion' | 'pluginName'> {\n handleCopy: () => void;\n}\n\nconst CardButton = ({\n strapiPeerDepVersion,\n strapiAppVersion,\n handleCopy,\n pluginName,\n}: CardButtonProps) => {\n const { formatMessage } = useIntl();\n const versionRange = semver.validRange(strapiPeerDepVersion);\n const isCompatible = semver.satisfies(strapiAppVersion ?? '', versionRange ?? '');\n\n const installMessage = formatMessage({\n id: 'admin.pages.MarketPlacePage.plugin.copy',\n defaultMessage: 'Copy install command',\n });\n\n // Only plugins receive a strapiAppVersion\n if (strapiAppVersion) {\n if (!versionRange || !isCompatible) {\n return (\n <Tooltip\n data-testid={`tooltip-${pluginName}`}\n label={formatMessage(\n {\n id: 'admin.pages.MarketPlacePage.plugin.version',\n defaultMessage:\n 'Update your Strapi version: \"{strapiAppVersion}\" to: \"{versionRange}\"',\n },\n {\n strapiAppVersion,\n versionRange,\n }\n )}\n >\n <span>\n <Button\n size=\"S\"\n startIcon={<Duplicate />}\n variant=\"secondary\"\n onClick={handleCopy}\n disabled={!isCompatible}\n >\n {installMessage}\n </Button>\n </span>\n </Tooltip>\n );\n }\n }\n\n return (\n <Button size=\"S\" startIcon={<Duplicate />} variant=\"secondary\" onClick={handleCopy}>\n {installMessage}\n </Button>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * PackageStats\n * -----------------------------------------------------------------------------------------------*/\n\ninterface PackageStatsProps {\n githubStars?: number;\n npmDownloads?: number;\n npmPackageType: NpmPackageType;\n}\n\nconst PackageStats = ({ githubStars = 0, npmDownloads = 0, npmPackageType }: PackageStatsProps) => {\n const { formatMessage } = useIntl();\n\n return (\n <Flex gap={1}>\n {!!githubStars && (\n <>\n <GitHub height=\"1.2rem\" width=\"1.2rem\" aria-hidden />\n <Star height=\"1.2rem\" width=\"1.2rem\" fill=\"warning500\" aria-hidden />\n <p\n aria-label={formatMessage(\n {\n id: `admin.pages.MarketPlacePage.${npmPackageType}.githubStars`,\n defaultMessage: `This {package} was starred {starsCount} on GitHub`,\n },\n {\n starsCount: githubStars,\n package: npmPackageType,\n }\n )}\n >\n <Typography variant=\"pi\" textColor=\"neutral800\">\n {githubStars}\n </Typography>\n </p>\n <VerticalDivider />\n </>\n )}\n <Download height=\"1.2rem\" width=\"1.2rem\" aria-hidden />\n <p\n aria-label={formatMessage(\n {\n id: `admin.pages.MarketPlacePage.${npmPackageType}.downloads`,\n defaultMessage: `This {package} has {downloadsCount} weekly downloads`,\n },\n {\n downloadsCount: npmDownloads,\n package: npmPackageType,\n }\n )}\n >\n <Typography variant=\"pi\" textColor=\"neutral800\">\n {npmDownloads}\n </Typography>\n </p>\n </Flex>\n );\n};\n\nconst VerticalDivider = styled(Divider)`\n width: 1.2rem;\n transform: rotate(90deg);\n`;\n\nexport { NpmPackageCard };\nexport type { NpmPackageCardProps };\n"],"names":["EllipsisText","styled","Typography","NpmPackageCard","npmPackage","isInstalled","useYarn","isInDevelopmentMode","npmPackageType","strapiAppVersion","attributes","formatMessage","useIntl","trackUsage","useTracking","commandToCopy","npmPackageName","madeByStrapiMessage","id","defaultMessage","npmPackageHref","pluralize","plural","slug","versionRange","semver","validRange","strapiVersion","isCompatible","satisfies","_jsxs","Flex","direction","justifyContent","paddingTop","paddingRight","paddingBottom","paddingLeft","hasRadius","background","shadow","height","alignItems","data-testid","Box","_jsx","tag","src","logo","url","alt","name","width","PackageStats","githubStars","npmDownloads","variant","gap","validated","madeByStrapi","Tooltip","description","CheckCircle","fill","StrapiLogo","textColor","style","alignSelf","LinkButton","size","href","isExternal","endIcon","ExternalLink","aria-label","pluginName","onClick","InstallPluginButton","strapiPeerDepVersion","toggleNotification","useNotification","copy","useClipboard","handleCopy","didCopy","type","message","Check","color","fontWeight","CardButton","installMessage","label","span","Button","startIcon","Duplicate","disabled","_Fragment","GitHub","aria-hidden","Star","p","starsCount","package","VerticalDivider","Download","downloadsCount","Divider"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"NpmPackagesFilters.js","sources":["../../../../../../../admin/src/pages/Marketplace/components/NpmPackagesFilters.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport {\n Box,\n Button,\n Tag,\n MultiSelect,\n MultiSelectOption,\n MultiSelectProps,\n Popover,\n Flex,\n} from '@strapi/design-system';\nimport { Cross, Filter } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\n\nimport type { Categories, Collections, FilterTypes } from '../hooks/useMarketplaceData';\nimport type { NpmPackageType, MarketplacePageQuery } from '../MarketplacePage';\n\ninterface NpmPackagesFiltersProps {\n handleSelectClear: (type: FilterTypes) => void;\n handleSelectChange: (update: Partial<MarketplacePageQuery>) => void;\n npmPackageType: NpmPackageType;\n possibleCategories: Partial<Record<Categories, number>>;\n possibleCollections: Partial<Record<Collections, number>>;\n query: MarketplacePageQuery;\n}\n\nconst NpmPackagesFilters = ({\n handleSelectClear,\n handleSelectChange,\n npmPackageType,\n possibleCategories,\n possibleCollections,\n query,\n}: NpmPackagesFiltersProps) => {\n const { formatMessage } = useIntl();\n\n const handleTagRemove = (tagToRemove: string, filterType: FilterTypes) => {\n const update = {\n [filterType]: (query[filterType] ?? []).filter((previousTag) => previousTag !== tagToRemove),\n };\n\n handleSelectChange(update);\n };\n\n return (\n <Popover.Root>\n <Popover.Trigger>\n <Button variant=\"tertiary\" startIcon={<Filter />}>\n {formatMessage({ id: 'app.utils.filters', defaultMessage: 'Filters' })}\n </Button>\n </Popover.Trigger>\n <Popover.Content sideOffset={4}>\n <Flex padding={3} direction=\"column\" alignItems=\"stretch\" gap={1}>\n <FilterSelect\n message={formatMessage({\n id: 'admin.pages.MarketPlacePage.filters.collections',\n defaultMessage: 'Collections',\n })}\n value={query?.collections || []}\n onChange={(newCollections) => {\n const update = { collections: newCollections };\n handleSelectChange(update);\n }}\n onClear={() => handleSelectClear('collections')}\n possibleFilters={possibleCollections}\n customizeContent={(values) =>\n formatMessage(\n {\n id: 'admin.pages.MarketPlacePage.filters.collectionsSelected',\n defaultMessage:\n '{count, plural, =0 {No collections} one {# collection} other {# collections}} selected',\n },\n { count: values?.length ?? 0 }\n )\n }\n />\n {npmPackageType === 'plugin' && (\n <FilterSelect\n message={formatMessage({\n id: 'admin.pages.MarketPlacePage.filters.categories',\n defaultMessage: 'Categories',\n })}\n value={query?.categories || []}\n onChange={(newCategories) => {\n const update = { categories: newCategories };\n handleSelectChange(update);\n }}\n onClear={() => handleSelectClear('categories')}\n possibleFilters={possibleCategories}\n customizeContent={(values) =>\n formatMessage(\n {\n id: 'admin.pages.MarketPlacePage.filters.categoriesSelected',\n defaultMessage:\n '{count, plural, =0 {No categories} one {# category} other {# categories}} selected',\n },\n { count: values?.length ?? 0 }\n )\n }\n />\n )}\n </Flex>\n </Popover.Content>\n\n {query.collections?.map((collection) => (\n <Box key={collection} padding={1}>\n <Tag icon={<Cross />} onClick={() => handleTagRemove(collection, 'collections')}>\n {collection}\n </Tag>\n </Box>\n ))}\n {npmPackageType === 'plugin' &&\n query.categories?.map((category) => (\n <Box key={category} padding={1}>\n <Tag icon={<Cross />} onClick={() => handleTagRemove(category, 'categories')}>\n {category}\n </Tag>\n </Box>\n ))}\n </Popover.Root>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * FilterSelect\n * -----------------------------------------------------------------------------------------------*/\n\ninterface FilterSelectProps\n extends Pick<MultiSelectProps, 'customizeContent' | 'onClear' | 'onChange' | 'value'> {\n message: string;\n possibleFilters:\n | NpmPackagesFiltersProps['possibleCategories']\n | NpmPackagesFiltersProps['possibleCollections'];\n}\n\nconst FilterSelect = ({\n message,\n value,\n onChange,\n possibleFilters,\n onClear,\n customizeContent,\n}: FilterSelectProps) => {\n return (\n <MultiSelect\n data-testid={`${message}-button`}\n aria-label={message}\n placeholder={message}\n onChange={onChange}\n onClear={onClear}\n value={value}\n customizeContent={customizeContent}\n >\n {Object.entries(possibleFilters).map(([filterName, count]) => {\n return (\n <MultiSelectOption\n data-testid={`${filterName}-${count}`}\n key={filterName}\n value={filterName}\n >\n {`${filterName} (${count})`}\n </MultiSelectOption>\n );\n })}\n </MultiSelect>\n );\n};\n\nexport { NpmPackagesFilters };\nexport type { NpmPackagesFiltersProps };\n"],"names":["NpmPackagesFilters","handleSelectClear","handleSelectChange","npmPackageType","possibleCategories","possibleCollections","query","formatMessage","useIntl","handleTagRemove","tagToRemove","filterType","update","filter","previousTag","_jsxs","Popover","Root","_jsx","Trigger","Button","variant","startIcon","Filter","id","defaultMessage","Content","sideOffset","Flex","padding","direction","alignItems","gap","FilterSelect","message","value","collections","onChange","newCollections","onClear","possibleFilters","customizeContent","values","count","length","categories","newCategories","map","collection","Box","Tag","icon","Cross","onClick","category","MultiSelect","data-testid","aria-label","placeholder","Object","entries","filterName","MultiSelectOption"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"NpmPackagesFilters.js","sources":["../../../../../../../admin/src/pages/Marketplace/components/NpmPackagesFilters.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport {\n Box,\n Button,\n Tag,\n MultiSelect,\n MultiSelectOption,\n MultiSelectProps,\n Popover,\n Flex,\n} from '@strapi/design-system';\nimport { Cross, Filter } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\n\nimport type { Categories, Collections, FilterTypes } from '../hooks/useMarketplaceData';\nimport type { NpmPackageType, MarketplacePageQuery } from '../MarketplacePage';\n\ninterface NpmPackagesFiltersProps {\n handleSelectClear: (type: FilterTypes) => void;\n handleSelectChange: (update: Partial<MarketplacePageQuery>) => void;\n npmPackageType: NpmPackageType;\n possibleCategories: Partial<Record<Categories, number>>;\n possibleCollections: Partial<Record<Collections, number>>;\n query: MarketplacePageQuery;\n}\n\nconst NpmPackagesFilters = ({\n handleSelectClear,\n handleSelectChange,\n npmPackageType,\n possibleCategories,\n possibleCollections,\n query,\n}: NpmPackagesFiltersProps) => {\n const { formatMessage } = useIntl();\n\n const handleTagRemove = (tagToRemove: string, filterType: FilterTypes) => {\n const update = {\n [filterType]: (query[filterType] ?? []).filter((previousTag) => previousTag !== tagToRemove),\n };\n\n handleSelectChange(update);\n };\n\n return (\n <Popover.Root>\n <Popover.Trigger>\n <Button variant=\"tertiary\" startIcon={<Filter />}>\n {formatMessage({ id: 'app.utils.filters', defaultMessage: 'Filters' })}\n </Button>\n </Popover.Trigger>\n <Popover.Content sideOffset={4}>\n <Flex padding={3} direction=\"column\" alignItems=\"stretch\" gap={1}>\n <FilterSelect\n message={formatMessage({\n id: 'admin.pages.MarketPlacePage.filters.collections',\n defaultMessage: 'Collections',\n })}\n value={query?.collections || []}\n onChange={(newCollections) => {\n const update = { collections: newCollections };\n handleSelectChange(update);\n }}\n onClear={() => handleSelectClear('collections')}\n possibleFilters={possibleCollections}\n customizeContent={(values) =>\n formatMessage(\n {\n id: 'admin.pages.MarketPlacePage.filters.collectionsSelected',\n defaultMessage:\n '{count, plural, =0 {No collections} one {# collection} other {# collections}} selected',\n },\n { count: values?.length ?? 0 }\n )\n }\n />\n {npmPackageType === 'plugin' && (\n <FilterSelect\n message={formatMessage({\n id: 'admin.pages.MarketPlacePage.filters.categories',\n defaultMessage: 'Categories',\n })}\n value={query?.categories || []}\n onChange={(newCategories) => {\n const update = { categories: newCategories };\n handleSelectChange(update);\n }}\n onClear={() => handleSelectClear('categories')}\n possibleFilters={possibleCategories}\n customizeContent={(values) =>\n formatMessage(\n {\n id: 'admin.pages.MarketPlacePage.filters.categoriesSelected',\n defaultMessage:\n '{count, plural, =0 {No categories} one {# category} other {# categories}} selected',\n },\n { count: values?.length ?? 0 }\n )\n }\n />\n )}\n </Flex>\n </Popover.Content>\n\n {query.collections?.map((collection) => (\n <Box key={collection} padding={1}>\n <Tag icon={<Cross />} onClick={() => handleTagRemove(collection, 'collections')}>\n {collection}\n </Tag>\n </Box>\n ))}\n {npmPackageType === 'plugin' &&\n query.categories?.map((category) => (\n <Box key={category} padding={1}>\n <Tag icon={<Cross />} onClick={() => handleTagRemove(category, 'categories')}>\n {category}\n </Tag>\n </Box>\n ))}\n </Popover.Root>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * FilterSelect\n * -----------------------------------------------------------------------------------------------*/\n\ninterface FilterSelectProps\n extends Pick<MultiSelectProps, 'customizeContent' | 'onClear' | 'onChange' | 'value'> {\n message: string;\n possibleFilters:\n | NpmPackagesFiltersProps['possibleCategories']\n | NpmPackagesFiltersProps['possibleCollections'];\n}\n\nconst FilterSelect = ({\n message,\n value,\n onChange,\n possibleFilters,\n onClear,\n customizeContent,\n}: FilterSelectProps) => {\n return (\n <MultiSelect\n data-testid={`${message}-button`}\n aria-label={message}\n placeholder={message}\n onChange={onChange}\n onClear={onClear}\n value={value}\n customizeContent={customizeContent}\n >\n {Object.entries(possibleFilters).map(([filterName, count]) => {\n return (\n <MultiSelectOption\n data-testid={`${filterName}-${count}`}\n key={filterName}\n value={filterName}\n >\n {`${filterName} (${count})`}\n </MultiSelectOption>\n );\n })}\n </MultiSelect>\n );\n};\n\nexport { NpmPackagesFilters };\nexport type { NpmPackagesFiltersProps };\n"],"names":["NpmPackagesFilters","handleSelectClear","handleSelectChange","npmPackageType","possibleCategories","possibleCollections","query","formatMessage","useIntl","handleTagRemove","tagToRemove","filterType","update","filter","previousTag","_jsxs","Popover","Root","_jsx","Trigger","Button","variant","startIcon","Filter","id","defaultMessage","Content","sideOffset","Flex","padding","direction","alignItems","gap","FilterSelect","message","value","collections","onChange","newCollections","onClear","possibleFilters","customizeContent","values","count","length","categories","newCategories","map","collection","Box","Tag","icon","Cross","onClick","category","MultiSelect","data-testid","aria-label","placeholder","Object","entries","filterName","MultiSelectOption"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"NpmPackagesFilters.mjs","sources":["../../../../../../../admin/src/pages/Marketplace/components/NpmPackagesFilters.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport {\n Box,\n Button,\n Tag,\n MultiSelect,\n MultiSelectOption,\n MultiSelectProps,\n Popover,\n Flex,\n} from '@strapi/design-system';\nimport { Cross, Filter } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\n\nimport type { Categories, Collections, FilterTypes } from '../hooks/useMarketplaceData';\nimport type { NpmPackageType, MarketplacePageQuery } from '../MarketplacePage';\n\ninterface NpmPackagesFiltersProps {\n handleSelectClear: (type: FilterTypes) => void;\n handleSelectChange: (update: Partial<MarketplacePageQuery>) => void;\n npmPackageType: NpmPackageType;\n possibleCategories: Partial<Record<Categories, number>>;\n possibleCollections: Partial<Record<Collections, number>>;\n query: MarketplacePageQuery;\n}\n\nconst NpmPackagesFilters = ({\n handleSelectClear,\n handleSelectChange,\n npmPackageType,\n possibleCategories,\n possibleCollections,\n query,\n}: NpmPackagesFiltersProps) => {\n const { formatMessage } = useIntl();\n\n const handleTagRemove = (tagToRemove: string, filterType: FilterTypes) => {\n const update = {\n [filterType]: (query[filterType] ?? []).filter((previousTag) => previousTag !== tagToRemove),\n };\n\n handleSelectChange(update);\n };\n\n return (\n <Popover.Root>\n <Popover.Trigger>\n <Button variant=\"tertiary\" startIcon={<Filter />}>\n {formatMessage({ id: 'app.utils.filters', defaultMessage: 'Filters' })}\n </Button>\n </Popover.Trigger>\n <Popover.Content sideOffset={4}>\n <Flex padding={3} direction=\"column\" alignItems=\"stretch\" gap={1}>\n <FilterSelect\n message={formatMessage({\n id: 'admin.pages.MarketPlacePage.filters.collections',\n defaultMessage: 'Collections',\n })}\n value={query?.collections || []}\n onChange={(newCollections) => {\n const update = { collections: newCollections };\n handleSelectChange(update);\n }}\n onClear={() => handleSelectClear('collections')}\n possibleFilters={possibleCollections}\n customizeContent={(values) =>\n formatMessage(\n {\n id: 'admin.pages.MarketPlacePage.filters.collectionsSelected',\n defaultMessage:\n '{count, plural, =0 {No collections} one {# collection} other {# collections}} selected',\n },\n { count: values?.length ?? 0 }\n )\n }\n />\n {npmPackageType === 'plugin' && (\n <FilterSelect\n message={formatMessage({\n id: 'admin.pages.MarketPlacePage.filters.categories',\n defaultMessage: 'Categories',\n })}\n value={query?.categories || []}\n onChange={(newCategories) => {\n const update = { categories: newCategories };\n handleSelectChange(update);\n }}\n onClear={() => handleSelectClear('categories')}\n possibleFilters={possibleCategories}\n customizeContent={(values) =>\n formatMessage(\n {\n id: 'admin.pages.MarketPlacePage.filters.categoriesSelected',\n defaultMessage:\n '{count, plural, =0 {No categories} one {# category} other {# categories}} selected',\n },\n { count: values?.length ?? 0 }\n )\n }\n />\n )}\n </Flex>\n </Popover.Content>\n\n {query.collections?.map((collection) => (\n <Box key={collection} padding={1}>\n <Tag icon={<Cross />} onClick={() => handleTagRemove(collection, 'collections')}>\n {collection}\n </Tag>\n </Box>\n ))}\n {npmPackageType === 'plugin' &&\n query.categories?.map((category) => (\n <Box key={category} padding={1}>\n <Tag icon={<Cross />} onClick={() => handleTagRemove(category, 'categories')}>\n {category}\n </Tag>\n </Box>\n ))}\n </Popover.Root>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * FilterSelect\n * -----------------------------------------------------------------------------------------------*/\n\ninterface FilterSelectProps\n extends Pick<MultiSelectProps, 'customizeContent' | 'onClear' | 'onChange' | 'value'> {\n message: string;\n possibleFilters:\n | NpmPackagesFiltersProps['possibleCategories']\n | NpmPackagesFiltersProps['possibleCollections'];\n}\n\nconst FilterSelect = ({\n message,\n value,\n onChange,\n possibleFilters,\n onClear,\n customizeContent,\n}: FilterSelectProps) => {\n return (\n <MultiSelect\n data-testid={`${message}-button`}\n aria-label={message}\n placeholder={message}\n onChange={onChange}\n onClear={onClear}\n value={value}\n customizeContent={customizeContent}\n >\n {Object.entries(possibleFilters).map(([filterName, count]) => {\n return (\n <MultiSelectOption\n data-testid={`${filterName}-${count}`}\n key={filterName}\n value={filterName}\n >\n {`${filterName} (${count})`}\n </MultiSelectOption>\n );\n })}\n </MultiSelect>\n );\n};\n\nexport { NpmPackagesFilters };\nexport type { NpmPackagesFiltersProps };\n"],"names":["NpmPackagesFilters","handleSelectClear","handleSelectChange","npmPackageType","possibleCategories","possibleCollections","query","formatMessage","useIntl","handleTagRemove","tagToRemove","filterType","update","filter","previousTag","_jsxs","Popover","Root","_jsx","Trigger","Button","variant","startIcon","Filter","id","defaultMessage","Content","sideOffset","Flex","padding","direction","alignItems","gap","FilterSelect","message","value","collections","onChange","newCollections","onClear","possibleFilters","customizeContent","values","count","length","categories","newCategories","map","collection","Box","Tag","icon","Cross","onClick","category","MultiSelect","data-testid","aria-label","placeholder","Object","entries","filterName","MultiSelectOption"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"NpmPackagesFilters.mjs","sources":["../../../../../../../admin/src/pages/Marketplace/components/NpmPackagesFilters.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport {\n Box,\n Button,\n Tag,\n MultiSelect,\n MultiSelectOption,\n MultiSelectProps,\n Popover,\n Flex,\n} from '@strapi/design-system';\nimport { Cross, Filter } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\n\nimport type { Categories, Collections, FilterTypes } from '../hooks/useMarketplaceData';\nimport type { NpmPackageType, MarketplacePageQuery } from '../MarketplacePage';\n\ninterface NpmPackagesFiltersProps {\n handleSelectClear: (type: FilterTypes) => void;\n handleSelectChange: (update: Partial<MarketplacePageQuery>) => void;\n npmPackageType: NpmPackageType;\n possibleCategories: Partial<Record<Categories, number>>;\n possibleCollections: Partial<Record<Collections, number>>;\n query: MarketplacePageQuery;\n}\n\nconst NpmPackagesFilters = ({\n handleSelectClear,\n handleSelectChange,\n npmPackageType,\n possibleCategories,\n possibleCollections,\n query,\n}: NpmPackagesFiltersProps) => {\n const { formatMessage } = useIntl();\n\n const handleTagRemove = (tagToRemove: string, filterType: FilterTypes) => {\n const update = {\n [filterType]: (query[filterType] ?? []).filter((previousTag) => previousTag !== tagToRemove),\n };\n\n handleSelectChange(update);\n };\n\n return (\n <Popover.Root>\n <Popover.Trigger>\n <Button variant=\"tertiary\" startIcon={<Filter />}>\n {formatMessage({ id: 'app.utils.filters', defaultMessage: 'Filters' })}\n </Button>\n </Popover.Trigger>\n <Popover.Content sideOffset={4}>\n <Flex padding={3} direction=\"column\" alignItems=\"stretch\" gap={1}>\n <FilterSelect\n message={formatMessage({\n id: 'admin.pages.MarketPlacePage.filters.collections',\n defaultMessage: 'Collections',\n })}\n value={query?.collections || []}\n onChange={(newCollections) => {\n const update = { collections: newCollections };\n handleSelectChange(update);\n }}\n onClear={() => handleSelectClear('collections')}\n possibleFilters={possibleCollections}\n customizeContent={(values) =>\n formatMessage(\n {\n id: 'admin.pages.MarketPlacePage.filters.collectionsSelected',\n defaultMessage:\n '{count, plural, =0 {No collections} one {# collection} other {# collections}} selected',\n },\n { count: values?.length ?? 0 }\n )\n }\n />\n {npmPackageType === 'plugin' && (\n <FilterSelect\n message={formatMessage({\n id: 'admin.pages.MarketPlacePage.filters.categories',\n defaultMessage: 'Categories',\n })}\n value={query?.categories || []}\n onChange={(newCategories) => {\n const update = { categories: newCategories };\n handleSelectChange(update);\n }}\n onClear={() => handleSelectClear('categories')}\n possibleFilters={possibleCategories}\n customizeContent={(values) =>\n formatMessage(\n {\n id: 'admin.pages.MarketPlacePage.filters.categoriesSelected',\n defaultMessage:\n '{count, plural, =0 {No categories} one {# category} other {# categories}} selected',\n },\n { count: values?.length ?? 0 }\n )\n }\n />\n )}\n </Flex>\n </Popover.Content>\n\n {query.collections?.map((collection) => (\n <Box key={collection} padding={1}>\n <Tag icon={<Cross />} onClick={() => handleTagRemove(collection, 'collections')}>\n {collection}\n </Tag>\n </Box>\n ))}\n {npmPackageType === 'plugin' &&\n query.categories?.map((category) => (\n <Box key={category} padding={1}>\n <Tag icon={<Cross />} onClick={() => handleTagRemove(category, 'categories')}>\n {category}\n </Tag>\n </Box>\n ))}\n </Popover.Root>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * FilterSelect\n * -----------------------------------------------------------------------------------------------*/\n\ninterface FilterSelectProps\n extends Pick<MultiSelectProps, 'customizeContent' | 'onClear' | 'onChange' | 'value'> {\n message: string;\n possibleFilters:\n | NpmPackagesFiltersProps['possibleCategories']\n | NpmPackagesFiltersProps['possibleCollections'];\n}\n\nconst FilterSelect = ({\n message,\n value,\n onChange,\n possibleFilters,\n onClear,\n customizeContent,\n}: FilterSelectProps) => {\n return (\n <MultiSelect\n data-testid={`${message}-button`}\n aria-label={message}\n placeholder={message}\n onChange={onChange}\n onClear={onClear}\n value={value}\n customizeContent={customizeContent}\n >\n {Object.entries(possibleFilters).map(([filterName, count]) => {\n return (\n <MultiSelectOption\n data-testid={`${filterName}-${count}`}\n key={filterName}\n value={filterName}\n >\n {`${filterName} (${count})`}\n </MultiSelectOption>\n );\n })}\n </MultiSelect>\n );\n};\n\nexport { NpmPackagesFilters };\nexport type { NpmPackagesFiltersProps };\n"],"names":["NpmPackagesFilters","handleSelectClear","handleSelectChange","npmPackageType","possibleCategories","possibleCollections","query","formatMessage","useIntl","handleTagRemove","tagToRemove","filterType","update","filter","previousTag","_jsxs","Popover","Root","_jsx","Trigger","Button","variant","startIcon","Filter","id","defaultMessage","Content","sideOffset","Flex","padding","direction","alignItems","gap","FilterSelect","message","value","collections","onChange","newCollections","onClear","possibleFilters","customizeContent","values","count","length","categories","newCategories","map","collection","Box","Tag","icon","Cross","onClick","category","MultiSelect","data-testid","aria-label","placeholder","Object","entries","filterName","MultiSelectOption"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PageHeader.js","sources":["../../../../../../../admin/src/pages/Marketplace/components/PageHeader.tsx"],"sourcesContent":["import { LinkButton } from '@strapi/design-system';\nimport { Upload } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\n\nimport { Layouts } from '../../../components/Layouts/Layout';\nimport { useTracking } from '../../../features/Tracking';\n\nimport type { NpmPackageType } from '../MarketplacePage';\n\ninterface PageHeaderProps {\n isOnline?: boolean;\n npmPackageType?: NpmPackageType;\n}\n\nconst PageHeader = ({ isOnline, npmPackageType = 'plugin' }: PageHeaderProps) => {\n const { formatMessage } = useIntl();\n const { trackUsage } = useTracking();\n\n const tracking = npmPackageType === 'provider' ? 'didSubmitProvider' : 'didSubmitPlugin';\n\n return (\n <Layouts.Header\n title={formatMessage({\n id: 'global.marketplace',\n defaultMessage: 'Marketplace',\n })}\n subtitle={formatMessage({\n id: 'admin.pages.MarketPlacePage.subtitle',\n defaultMessage: 'Get more out of Strapi',\n })}\n primaryAction={\n isOnline && (\n <LinkButton\n startIcon={<Upload />}\n variant=\"tertiary\"\n href={`https://market.strapi.io/submit-${npmPackageType}`}\n onClick={() => trackUsage(tracking)}\n isExternal\n >\n {formatMessage({\n id: `admin.pages.MarketPlacePage.submit.${npmPackageType}.link`,\n defaultMessage: `Submit ${npmPackageType}`,\n })}\n </LinkButton>\n )\n }\n />\n );\n};\n\nexport { PageHeader };\nexport type { PageHeaderProps };\n"],"names":["PageHeader","isOnline","npmPackageType","formatMessage","useIntl","trackUsage","useTracking","tracking","_jsx","Layouts","Header","title","id","defaultMessage","subtitle","primaryAction","LinkButton","startIcon","Upload","variant","href","onClick","isExternal"],"mappings":";;;;;;;;;AAcA,MAAMA,aAAa,CAAC,EAAEC,QAAQ,EAAEC,cAAAA,GAAiB,QAAQ,EAAmB,GAAA;IAC1E,MAAM,EAAEC,aAAa,EAAE,GAAGC,iBAAAA,EAAAA;IAC1B,MAAM,EAAEC,UAAU,EAAE,GAAGC,oBAAAA,EAAAA;IAEvB,MAAMC,QAAAA,GAAWL,cAAmB,KAAA,UAAA,GAAa,mBAAsB,GAAA,iBAAA;IAEvE,qBACEM,cAAA,CAACC,eAAQC,MAAM,EAAA;AACbC,QAAAA,KAAAA,EAAOR,aAAc,CAAA;YACnBS,EAAI,EAAA,oBAAA;YACJC,cAAgB,EAAA;AAClB,SAAA,CAAA;AACAC,QAAAA,QAAAA,EAAUX,aAAc,CAAA;YACtBS,EAAI,EAAA,sCAAA;YACJC,cAAgB,EAAA;AAClB,SAAA,CAAA;AACAE,QAAAA,aAAAA,EACEd,0BACEO,cAACQ,CAAAA,uBAAAA,EAAAA;AACCC,YAAAA,SAAAA,gBAAWT,cAACU,CAAAA,YAAAA,EAAAA,EAAAA,CAAAA;YACZC,OAAQ,EAAA,UAAA;
|
|
1
|
+
{"version":3,"file":"PageHeader.js","sources":["../../../../../../../admin/src/pages/Marketplace/components/PageHeader.tsx"],"sourcesContent":["import { LinkButton } from '@strapi/design-system';\nimport { Upload } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\n\nimport { Layouts } from '../../../components/Layouts/Layout';\nimport { useTracking } from '../../../features/Tracking';\n\nimport type { NpmPackageType } from '../MarketplacePage';\n\ninterface PageHeaderProps {\n isOnline?: boolean;\n npmPackageType?: NpmPackageType;\n}\n\nconst PageHeader = ({ isOnline, npmPackageType = 'plugin' }: PageHeaderProps) => {\n const { formatMessage } = useIntl();\n const { trackUsage } = useTracking();\n\n const tracking = npmPackageType === 'provider' ? 'didSubmitProvider' : 'didSubmitPlugin';\n\n return (\n <Layouts.Header\n title={formatMessage({\n id: 'global.marketplace',\n defaultMessage: 'Marketplace',\n })}\n subtitle={formatMessage({\n id: 'admin.pages.MarketPlacePage.subtitle',\n defaultMessage: 'Get more out of Strapi',\n })}\n primaryAction={\n isOnline && (\n <LinkButton\n startIcon={<Upload />}\n variant=\"tertiary\"\n href={`https://market.strapi.io/submit-${npmPackageType}`}\n onClick={() => trackUsage(tracking)}\n isExternal\n >\n {formatMessage({\n id: `admin.pages.MarketPlacePage.submit.${npmPackageType}.link`,\n defaultMessage: `Submit ${npmPackageType}`,\n })}\n </LinkButton>\n )\n }\n />\n );\n};\n\nexport { PageHeader };\nexport type { PageHeaderProps };\n"],"names":["PageHeader","isOnline","npmPackageType","formatMessage","useIntl","trackUsage","useTracking","tracking","_jsx","Layouts","Header","title","id","defaultMessage","subtitle","primaryAction","LinkButton","startIcon","Upload","variant","href","onClick","isExternal"],"mappings":";;;;;;;;;AAcA,MAAMA,aAAa,CAAC,EAAEC,QAAQ,EAAEC,cAAAA,GAAiB,QAAQ,EAAmB,GAAA;IAC1E,MAAM,EAAEC,aAAa,EAAE,GAAGC,iBAAAA,EAAAA;IAC1B,MAAM,EAAEC,UAAU,EAAE,GAAGC,oBAAAA,EAAAA;IAEvB,MAAMC,QAAAA,GAAWL,cAAmB,KAAA,UAAA,GAAa,mBAAsB,GAAA,iBAAA;IAEvE,qBACEM,cAAA,CAACC,eAAQC,MAAM,EAAA;AACbC,QAAAA,KAAAA,EAAOR,aAAc,CAAA;YACnBS,EAAI,EAAA,oBAAA;YACJC,cAAgB,EAAA;AAClB,SAAA,CAAA;AACAC,QAAAA,QAAAA,EAAUX,aAAc,CAAA;YACtBS,EAAI,EAAA,sCAAA;YACJC,cAAgB,EAAA;AAClB,SAAA,CAAA;AACAE,QAAAA,aAAAA,EACEd,0BACEO,cAACQ,CAAAA,uBAAAA,EAAAA;AACCC,YAAAA,SAAAA,gBAAWT,cAACU,CAAAA,YAAAA,EAAAA,EAAAA,CAAAA;YACZC,OAAQ,EAAA,UAAA;YACRC,IAAM,EAAA,CAAC,gCAAgC,EAAElB,cAAgB,CAAA,CAAA;AACzDmB,YAAAA,OAAAA,EAAS,IAAMhB,UAAWE,CAAAA,QAAAA,CAAAA;YAC1Be,UAAU,EAAA,IAAA;sBAETnB,aAAc,CAAA;AACbS,gBAAAA,EAAAA,EAAI,CAAC,mCAAmC,EAAEV,cAAAA,CAAe,KAAK,CAAC;gBAC/DW,cAAgB,EAAA,CAAC,OAAO,EAAEX,cAAgB,CAAA;AAC5C,aAAA;;;AAMZ;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PageHeader.mjs","sources":["../../../../../../../admin/src/pages/Marketplace/components/PageHeader.tsx"],"sourcesContent":["import { LinkButton } from '@strapi/design-system';\nimport { Upload } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\n\nimport { Layouts } from '../../../components/Layouts/Layout';\nimport { useTracking } from '../../../features/Tracking';\n\nimport type { NpmPackageType } from '../MarketplacePage';\n\ninterface PageHeaderProps {\n isOnline?: boolean;\n npmPackageType?: NpmPackageType;\n}\n\nconst PageHeader = ({ isOnline, npmPackageType = 'plugin' }: PageHeaderProps) => {\n const { formatMessage } = useIntl();\n const { trackUsage } = useTracking();\n\n const tracking = npmPackageType === 'provider' ? 'didSubmitProvider' : 'didSubmitPlugin';\n\n return (\n <Layouts.Header\n title={formatMessage({\n id: 'global.marketplace',\n defaultMessage: 'Marketplace',\n })}\n subtitle={formatMessage({\n id: 'admin.pages.MarketPlacePage.subtitle',\n defaultMessage: 'Get more out of Strapi',\n })}\n primaryAction={\n isOnline && (\n <LinkButton\n startIcon={<Upload />}\n variant=\"tertiary\"\n href={`https://market.strapi.io/submit-${npmPackageType}`}\n onClick={() => trackUsage(tracking)}\n isExternal\n >\n {formatMessage({\n id: `admin.pages.MarketPlacePage.submit.${npmPackageType}.link`,\n defaultMessage: `Submit ${npmPackageType}`,\n })}\n </LinkButton>\n )\n }\n />\n );\n};\n\nexport { PageHeader };\nexport type { PageHeaderProps };\n"],"names":["PageHeader","isOnline","npmPackageType","formatMessage","useIntl","trackUsage","useTracking","tracking","_jsx","Layouts","Header","title","id","defaultMessage","subtitle","primaryAction","LinkButton","startIcon","Upload","variant","href","onClick","isExternal"],"mappings":";;;;;;;AAcA,MAAMA,aAAa,CAAC,EAAEC,QAAQ,EAAEC,cAAAA,GAAiB,QAAQ,EAAmB,GAAA;IAC1E,MAAM,EAAEC,aAAa,EAAE,GAAGC,OAAAA,EAAAA;IAC1B,MAAM,EAAEC,UAAU,EAAE,GAAGC,WAAAA,EAAAA;IAEvB,MAAMC,QAAAA,GAAWL,cAAmB,KAAA,UAAA,GAAa,mBAAsB,GAAA,iBAAA;IAEvE,qBACEM,GAAA,CAACC,QAAQC,MAAM,EAAA;AACbC,QAAAA,KAAAA,EAAOR,aAAc,CAAA;YACnBS,EAAI,EAAA,oBAAA;YACJC,cAAgB,EAAA;AAClB,SAAA,CAAA;AACAC,QAAAA,QAAAA,EAAUX,aAAc,CAAA;YACtBS,EAAI,EAAA,sCAAA;YACJC,cAAgB,EAAA;AAClB,SAAA,CAAA;AACAE,QAAAA,aAAAA,EACEd,0BACEO,GAACQ,CAAAA,UAAAA,EAAAA;AACCC,YAAAA,SAAAA,gBAAWT,GAACU,CAAAA,MAAAA,EAAAA,EAAAA,CAAAA;YACZC,OAAQ,EAAA,UAAA;
|
|
1
|
+
{"version":3,"file":"PageHeader.mjs","sources":["../../../../../../../admin/src/pages/Marketplace/components/PageHeader.tsx"],"sourcesContent":["import { LinkButton } from '@strapi/design-system';\nimport { Upload } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\n\nimport { Layouts } from '../../../components/Layouts/Layout';\nimport { useTracking } from '../../../features/Tracking';\n\nimport type { NpmPackageType } from '../MarketplacePage';\n\ninterface PageHeaderProps {\n isOnline?: boolean;\n npmPackageType?: NpmPackageType;\n}\n\nconst PageHeader = ({ isOnline, npmPackageType = 'plugin' }: PageHeaderProps) => {\n const { formatMessage } = useIntl();\n const { trackUsage } = useTracking();\n\n const tracking = npmPackageType === 'provider' ? 'didSubmitProvider' : 'didSubmitPlugin';\n\n return (\n <Layouts.Header\n title={formatMessage({\n id: 'global.marketplace',\n defaultMessage: 'Marketplace',\n })}\n subtitle={formatMessage({\n id: 'admin.pages.MarketPlacePage.subtitle',\n defaultMessage: 'Get more out of Strapi',\n })}\n primaryAction={\n isOnline && (\n <LinkButton\n startIcon={<Upload />}\n variant=\"tertiary\"\n href={`https://market.strapi.io/submit-${npmPackageType}`}\n onClick={() => trackUsage(tracking)}\n isExternal\n >\n {formatMessage({\n id: `admin.pages.MarketPlacePage.submit.${npmPackageType}.link`,\n defaultMessage: `Submit ${npmPackageType}`,\n })}\n </LinkButton>\n )\n }\n />\n );\n};\n\nexport { PageHeader };\nexport type { PageHeaderProps };\n"],"names":["PageHeader","isOnline","npmPackageType","formatMessage","useIntl","trackUsage","useTracking","tracking","_jsx","Layouts","Header","title","id","defaultMessage","subtitle","primaryAction","LinkButton","startIcon","Upload","variant","href","onClick","isExternal"],"mappings":";;;;;;;AAcA,MAAMA,aAAa,CAAC,EAAEC,QAAQ,EAAEC,cAAAA,GAAiB,QAAQ,EAAmB,GAAA;IAC1E,MAAM,EAAEC,aAAa,EAAE,GAAGC,OAAAA,EAAAA;IAC1B,MAAM,EAAEC,UAAU,EAAE,GAAGC,WAAAA,EAAAA;IAEvB,MAAMC,QAAAA,GAAWL,cAAmB,KAAA,UAAA,GAAa,mBAAsB,GAAA,iBAAA;IAEvE,qBACEM,GAAA,CAACC,QAAQC,MAAM,EAAA;AACbC,QAAAA,KAAAA,EAAOR,aAAc,CAAA;YACnBS,EAAI,EAAA,oBAAA;YACJC,cAAgB,EAAA;AAClB,SAAA,CAAA;AACAC,QAAAA,QAAAA,EAAUX,aAAc,CAAA;YACtBS,EAAI,EAAA,sCAAA;YACJC,cAAgB,EAAA;AAClB,SAAA,CAAA;AACAE,QAAAA,aAAAA,EACEd,0BACEO,GAACQ,CAAAA,UAAAA,EAAAA;AACCC,YAAAA,SAAAA,gBAAWT,GAACU,CAAAA,MAAAA,EAAAA,EAAAA,CAAAA;YACZC,OAAQ,EAAA,UAAA;YACRC,IAAM,EAAA,CAAC,gCAAgC,EAAElB,cAAgB,CAAA,CAAA;AACzDmB,YAAAA,OAAAA,EAAS,IAAMhB,UAAWE,CAAAA,QAAAA,CAAAA;YAC1Be,UAAU,EAAA,IAAA;sBAETnB,aAAc,CAAA;AACbS,gBAAAA,EAAAA,EAAI,CAAC,mCAAmC,EAAEV,cAAAA,CAAe,KAAK,CAAC;gBAC/DW,cAAgB,EAAA,CAAC,OAAO,EAAEX,cAAgB,CAAA;AAC5C,aAAA;;;AAMZ;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useMarketplaceData.js","sources":["../../../../../../../admin/src/pages/Marketplace/hooks/useMarketplaceData.ts"],"sourcesContent":["import { useNotifyAT } from '@strapi/design-system';\nimport * as qs from 'qs';\nimport { useIntl } from 'react-intl';\nimport { useQuery } from 'react-query';\n\nimport { useNotification } from '../../../features/Notifications';\n\nimport type { MarketplacePageQuery, NpmPackageType, TabQuery } from '../MarketplacePage';\n\nconst MARKETPLACE_API_URL = 'https://market-api.strapi.io';\n\ninterface UseMarketplaceDataParams {\n npmPackageType: NpmPackageType;\n debouncedSearch: string;\n query?: MarketplacePageQuery;\n tabQuery: TabQuery;\n strapiVersion?: string | null;\n}\n\ntype Collections =\n | 'Verified'\n | 'Made by the community'\n | 'Made by Strapi'\n | 'Made by official partners';\n\ntype Categories = 'Custom fields' | 'Deployment' | 'Monitoring';\n\ntype FilterTypes = 'categories' | 'collections';\n\ninterface Plugin {\n id: string;\n attributes: {\n name: string;\n description: string;\n slug: string;\n npmPackageName: string;\n npmPackageUrl: string;\n npmDownloads: number;\n repositoryUrl: string;\n githubStars: number;\n logo: {\n url: string;\n };\n developerName: string;\n validated: boolean;\n madeByStrapi: boolean;\n strapiCompatibility: string;\n submissionDate: string;\n collections: Collections[];\n categories: Categories[];\n strapiVersion: string;\n screenshots: Array<{\n url: string;\n }>;\n };\n}\n\ninterface Provider {\n id: string;\n attributes: {\n name: string;\n description: string;\n slug: string;\n npmPackageName: string;\n npmPackageUrl: string;\n npmDownloads: number;\n repositoryUrl: string;\n githubStars: number;\n pluginName: string;\n logo: {\n url: string;\n };\n developerName: string;\n validated: boolean;\n madeByStrapi: boolean;\n strapiCompatibility: string;\n strapiVersion?: never;\n submissionDate: string;\n collections: Collections[];\n };\n}\n\ninterface MarketplaceMeta {\n collections: Record<Collections, number>;\n pagination: {\n page: number;\n pageSize: number;\n pageCount: number;\n total: number;\n };\n}\n\ninterface MarketplaceResponse<TData extends Plugin | Provider> {\n data: TData[];\n meta: TData extends Provider\n ? MarketplaceMeta\n : MarketplaceMeta & { categories: Record<Categories, number> };\n}\n\nfunction useMarketplaceData({\n npmPackageType,\n debouncedSearch,\n query,\n tabQuery,\n strapiVersion,\n}: UseMarketplaceDataParams) {\n const { notifyStatus } = useNotifyAT();\n const { formatMessage } = useIntl();\n const { toggleNotification } = useNotification();\n const marketplaceTitle = formatMessage({\n id: 'global.marketplace',\n defaultMessage: 'Marketplace',\n });\n\n const notifyMarketplaceLoad = () => {\n notifyStatus(\n formatMessage(\n {\n id: 'app.utils.notify.data-loaded',\n defaultMessage: 'The {target} has loaded',\n },\n { target: marketplaceTitle }\n )\n );\n };\n\n const paginationParams = {\n page: query?.page || 1,\n pageSize: query?.pageSize || 24,\n };\n\n const pluginParams = {\n ...tabQuery.plugin,\n pagination: paginationParams,\n search: debouncedSearch,\n version: strapiVersion,\n };\n\n const { data: pluginsResponse, status: pluginsStatus } = useQuery(\n ['marketplace', 'plugins', pluginParams],\n async () => {\n try {\n const queryString = qs.stringify(pluginParams);\n const res = await fetch(`${MARKETPLACE_API_URL}/plugins?${queryString}`);\n\n if (!res.ok) {\n throw new Error('Failed to fetch marketplace plugins.');\n }\n\n const data = (await res.json()) as MarketplaceResponse<Plugin>;\n return data;\n } catch (error) {\n // silence\n }\n\n return null;\n },\n {\n onSuccess() {\n notifyMarketplaceLoad();\n },\n onError() {\n toggleNotification({\n type: 'danger',\n message: formatMessage({ id: 'notification.error', defaultMessage: 'An error occured' }),\n });\n },\n }\n );\n\n const providerParams = {\n ...tabQuery.provider,\n pagination: paginationParams,\n search: debouncedSearch,\n version: strapiVersion,\n };\n\n const { data: providersResponse, status: providersStatus } = useQuery(\n ['marketplace', 'providers', providerParams],\n async () => {\n const queryString = qs.stringify(providerParams);\n const res = await fetch(`${MARKETPLACE_API_URL}/providers?${queryString}`);\n\n if (!res.ok) {\n throw new Error('Failed to fetch marketplace providers.');\n }\n\n const data = (await res.json()) as MarketplaceResponse<Provider>;\n\n return data;\n },\n {\n onSuccess() {\n notifyMarketplaceLoad();\n },\n onError() {\n toggleNotification({\n type: 'danger',\n message: formatMessage({ id: 'notification.error', defaultMessage: 'An error occured' }),\n });\n },\n }\n );\n\n const npmPackageTypeResponse = npmPackageType === 'plugin' ? pluginsResponse : providersResponse;\n\n const possibleCollections = npmPackageTypeResponse?.meta.collections ?? {};\n const possibleCategories = pluginsResponse?.meta.categories ?? {};\n\n const { pagination } = npmPackageTypeResponse?.meta ?? {};\n\n return {\n pluginsResponse,\n providersResponse,\n pluginsStatus,\n providersStatus,\n possibleCollections,\n possibleCategories,\n pagination,\n };\n}\n\nexport { useMarketplaceData };\nexport type {\n MarketplaceResponse,\n Plugin,\n Provider,\n MarketplaceMeta,\n Collections,\n Categories,\n FilterTypes,\n UseMarketplaceDataParams,\n};\n"],"names":["MARKETPLACE_API_URL","useMarketplaceData","npmPackageType","debouncedSearch","query","tabQuery","strapiVersion","notifyStatus","useNotifyAT","formatMessage","useIntl","toggleNotification","useNotification","marketplaceTitle","id","defaultMessage","notifyMarketplaceLoad","target","paginationParams","page","pageSize","pluginParams","plugin","pagination","search","version","data","pluginsResponse","status","pluginsStatus","useQuery","queryString","qs","stringify","res","fetch","ok","Error","json","error","onSuccess","onError","type","message","providerParams","provider","providersResponse","providersStatus","npmPackageTypeResponse","possibleCollections","meta","collections","possibleCategories","categories"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;AASA,MAAMA,mBAAsB,GAAA,8BAAA;AA0F5B,SAASC,kBAAAA,CAAmB,EAC1BC,cAAc,EACdC,eAAe,EACfC,KAAK,EACLC,QAAQ,EACRC,aAAa,EACY,EAAA;IACzB,MAAM,EAAEC,YAAY,EAAE,GAAGC,wBAAAA,EAAAA;IACzB,MAAM,EAAEC,aAAa,EAAE,GAAGC,iBAAAA,EAAAA;IAC1B,MAAM,EAAEC,kBAAkB,EAAE,GAAGC,6BAAAA,EAAAA;AAC/B,IAAA,MAAMC,mBAAmBJ,aAAc,CAAA;QACrCK,EAAI,EAAA,oBAAA;QACJC,cAAgB,EAAA;AAClB,KAAA,CAAA;AAEA,IAAA,MAAMC,qBAAwB,GAAA,IAAA;AAC5BT,QAAAA,YAAAA,CACEE,aACE,CAAA;YACEK,EAAI,EAAA,8BAAA;YACJC,cAAgB,EAAA;SAElB,EAAA;YAAEE,MAAQJ,EAAAA;AAAiB,SAAA,CAAA,CAAA;AAGjC,KAAA;AAEA,IAAA,MAAMK,gBAAmB,GAAA;AACvBC,QAAAA,IAAAA,EAAMf,OAAOe,IAAQ,IAAA,CAAA;AACrBC,QAAAA,QAAAA,EAAUhB,OAAOgB,QAAY,IAAA;AAC/B,KAAA;AAEA,IAAA,MAAMC,YAAe,GAAA;AACnB,QAAA,GAAGhB,SAASiB,MAAM;QAClBC,UAAYL,EAAAA,gBAAAA;QACZM,MAAQrB,EAAAA,eAAAA;QACRsB,OAASnB,EAAAA;AACX,KAAA;IAEA,MAAM,EAAEoB,MAAMC,eAAe,EAAEC,QAAQC,aAAa,EAAE,GAAGC,mBACvD,CAAA;AAAC,QAAA,aAAA;AAAe,QAAA,SAAA;AAAWT,QAAAA;KAAa,EACxC,UAAA;QACE,IAAI;YACF,MAAMU,WAAAA,GAAcC,aAAGC,CAAAA,SAAS,CAACZ,YAAAA,CAAAA;
|
|
1
|
+
{"version":3,"file":"useMarketplaceData.js","sources":["../../../../../../../admin/src/pages/Marketplace/hooks/useMarketplaceData.ts"],"sourcesContent":["import { useNotifyAT } from '@strapi/design-system';\nimport * as qs from 'qs';\nimport { useIntl } from 'react-intl';\nimport { useQuery } from 'react-query';\n\nimport { useNotification } from '../../../features/Notifications';\n\nimport type { MarketplacePageQuery, NpmPackageType, TabQuery } from '../MarketplacePage';\n\nconst MARKETPLACE_API_URL = 'https://market-api.strapi.io';\n\ninterface UseMarketplaceDataParams {\n npmPackageType: NpmPackageType;\n debouncedSearch: string;\n query?: MarketplacePageQuery;\n tabQuery: TabQuery;\n strapiVersion?: string | null;\n}\n\ntype Collections =\n | 'Verified'\n | 'Made by the community'\n | 'Made by Strapi'\n | 'Made by official partners';\n\ntype Categories = 'Custom fields' | 'Deployment' | 'Monitoring';\n\ntype FilterTypes = 'categories' | 'collections';\n\ninterface Plugin {\n id: string;\n attributes: {\n name: string;\n description: string;\n slug: string;\n npmPackageName: string;\n npmPackageUrl: string;\n npmDownloads: number;\n repositoryUrl: string;\n githubStars: number;\n logo: {\n url: string;\n };\n developerName: string;\n validated: boolean;\n madeByStrapi: boolean;\n strapiCompatibility: string;\n submissionDate: string;\n collections: Collections[];\n categories: Categories[];\n strapiVersion: string;\n screenshots: Array<{\n url: string;\n }>;\n };\n}\n\ninterface Provider {\n id: string;\n attributes: {\n name: string;\n description: string;\n slug: string;\n npmPackageName: string;\n npmPackageUrl: string;\n npmDownloads: number;\n repositoryUrl: string;\n githubStars: number;\n pluginName: string;\n logo: {\n url: string;\n };\n developerName: string;\n validated: boolean;\n madeByStrapi: boolean;\n strapiCompatibility: string;\n strapiVersion?: never;\n submissionDate: string;\n collections: Collections[];\n };\n}\n\ninterface MarketplaceMeta {\n collections: Record<Collections, number>;\n pagination: {\n page: number;\n pageSize: number;\n pageCount: number;\n total: number;\n };\n}\n\ninterface MarketplaceResponse<TData extends Plugin | Provider> {\n data: TData[];\n meta: TData extends Provider\n ? MarketplaceMeta\n : MarketplaceMeta & { categories: Record<Categories, number> };\n}\n\nfunction useMarketplaceData({\n npmPackageType,\n debouncedSearch,\n query,\n tabQuery,\n strapiVersion,\n}: UseMarketplaceDataParams) {\n const { notifyStatus } = useNotifyAT();\n const { formatMessage } = useIntl();\n const { toggleNotification } = useNotification();\n const marketplaceTitle = formatMessage({\n id: 'global.marketplace',\n defaultMessage: 'Marketplace',\n });\n\n const notifyMarketplaceLoad = () => {\n notifyStatus(\n formatMessage(\n {\n id: 'app.utils.notify.data-loaded',\n defaultMessage: 'The {target} has loaded',\n },\n { target: marketplaceTitle }\n )\n );\n };\n\n const paginationParams = {\n page: query?.page || 1,\n pageSize: query?.pageSize || 24,\n };\n\n const pluginParams = {\n ...tabQuery.plugin,\n pagination: paginationParams,\n search: debouncedSearch,\n version: strapiVersion,\n };\n\n const { data: pluginsResponse, status: pluginsStatus } = useQuery(\n ['marketplace', 'plugins', pluginParams],\n async () => {\n try {\n const queryString = qs.stringify(pluginParams);\n const res = await fetch(`${MARKETPLACE_API_URL}/plugins?${queryString}`);\n\n if (!res.ok) {\n throw new Error('Failed to fetch marketplace plugins.');\n }\n\n const data = (await res.json()) as MarketplaceResponse<Plugin>;\n return data;\n } catch (error) {\n // silence\n }\n\n return null;\n },\n {\n onSuccess() {\n notifyMarketplaceLoad();\n },\n onError() {\n toggleNotification({\n type: 'danger',\n message: formatMessage({ id: 'notification.error', defaultMessage: 'An error occured' }),\n });\n },\n }\n );\n\n const providerParams = {\n ...tabQuery.provider,\n pagination: paginationParams,\n search: debouncedSearch,\n version: strapiVersion,\n };\n\n const { data: providersResponse, status: providersStatus } = useQuery(\n ['marketplace', 'providers', providerParams],\n async () => {\n const queryString = qs.stringify(providerParams);\n const res = await fetch(`${MARKETPLACE_API_URL}/providers?${queryString}`);\n\n if (!res.ok) {\n throw new Error('Failed to fetch marketplace providers.');\n }\n\n const data = (await res.json()) as MarketplaceResponse<Provider>;\n\n return data;\n },\n {\n onSuccess() {\n notifyMarketplaceLoad();\n },\n onError() {\n toggleNotification({\n type: 'danger',\n message: formatMessage({ id: 'notification.error', defaultMessage: 'An error occured' }),\n });\n },\n }\n );\n\n const npmPackageTypeResponse = npmPackageType === 'plugin' ? pluginsResponse : providersResponse;\n\n const possibleCollections = npmPackageTypeResponse?.meta.collections ?? {};\n const possibleCategories = pluginsResponse?.meta.categories ?? {};\n\n const { pagination } = npmPackageTypeResponse?.meta ?? {};\n\n return {\n pluginsResponse,\n providersResponse,\n pluginsStatus,\n providersStatus,\n possibleCollections,\n possibleCategories,\n pagination,\n };\n}\n\nexport { useMarketplaceData };\nexport type {\n MarketplaceResponse,\n Plugin,\n Provider,\n MarketplaceMeta,\n Collections,\n Categories,\n FilterTypes,\n UseMarketplaceDataParams,\n};\n"],"names":["MARKETPLACE_API_URL","useMarketplaceData","npmPackageType","debouncedSearch","query","tabQuery","strapiVersion","notifyStatus","useNotifyAT","formatMessage","useIntl","toggleNotification","useNotification","marketplaceTitle","id","defaultMessage","notifyMarketplaceLoad","target","paginationParams","page","pageSize","pluginParams","plugin","pagination","search","version","data","pluginsResponse","status","pluginsStatus","useQuery","queryString","qs","stringify","res","fetch","ok","Error","json","error","onSuccess","onError","type","message","providerParams","provider","providersResponse","providersStatus","npmPackageTypeResponse","possibleCollections","meta","collections","possibleCategories","categories"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useMarketplaceData.mjs","sources":["../../../../../../../admin/src/pages/Marketplace/hooks/useMarketplaceData.ts"],"sourcesContent":["import { useNotifyAT } from '@strapi/design-system';\nimport * as qs from 'qs';\nimport { useIntl } from 'react-intl';\nimport { useQuery } from 'react-query';\n\nimport { useNotification } from '../../../features/Notifications';\n\nimport type { MarketplacePageQuery, NpmPackageType, TabQuery } from '../MarketplacePage';\n\nconst MARKETPLACE_API_URL = 'https://market-api.strapi.io';\n\ninterface UseMarketplaceDataParams {\n npmPackageType: NpmPackageType;\n debouncedSearch: string;\n query?: MarketplacePageQuery;\n tabQuery: TabQuery;\n strapiVersion?: string | null;\n}\n\ntype Collections =\n | 'Verified'\n | 'Made by the community'\n | 'Made by Strapi'\n | 'Made by official partners';\n\ntype Categories = 'Custom fields' | 'Deployment' | 'Monitoring';\n\ntype FilterTypes = 'categories' | 'collections';\n\ninterface Plugin {\n id: string;\n attributes: {\n name: string;\n description: string;\n slug: string;\n npmPackageName: string;\n npmPackageUrl: string;\n npmDownloads: number;\n repositoryUrl: string;\n githubStars: number;\n logo: {\n url: string;\n };\n developerName: string;\n validated: boolean;\n madeByStrapi: boolean;\n strapiCompatibility: string;\n submissionDate: string;\n collections: Collections[];\n categories: Categories[];\n strapiVersion: string;\n screenshots: Array<{\n url: string;\n }>;\n };\n}\n\ninterface Provider {\n id: string;\n attributes: {\n name: string;\n description: string;\n slug: string;\n npmPackageName: string;\n npmPackageUrl: string;\n npmDownloads: number;\n repositoryUrl: string;\n githubStars: number;\n pluginName: string;\n logo: {\n url: string;\n };\n developerName: string;\n validated: boolean;\n madeByStrapi: boolean;\n strapiCompatibility: string;\n strapiVersion?: never;\n submissionDate: string;\n collections: Collections[];\n };\n}\n\ninterface MarketplaceMeta {\n collections: Record<Collections, number>;\n pagination: {\n page: number;\n pageSize: number;\n pageCount: number;\n total: number;\n };\n}\n\ninterface MarketplaceResponse<TData extends Plugin | Provider> {\n data: TData[];\n meta: TData extends Provider\n ? MarketplaceMeta\n : MarketplaceMeta & { categories: Record<Categories, number> };\n}\n\nfunction useMarketplaceData({\n npmPackageType,\n debouncedSearch,\n query,\n tabQuery,\n strapiVersion,\n}: UseMarketplaceDataParams) {\n const { notifyStatus } = useNotifyAT();\n const { formatMessage } = useIntl();\n const { toggleNotification } = useNotification();\n const marketplaceTitle = formatMessage({\n id: 'global.marketplace',\n defaultMessage: 'Marketplace',\n });\n\n const notifyMarketplaceLoad = () => {\n notifyStatus(\n formatMessage(\n {\n id: 'app.utils.notify.data-loaded',\n defaultMessage: 'The {target} has loaded',\n },\n { target: marketplaceTitle }\n )\n );\n };\n\n const paginationParams = {\n page: query?.page || 1,\n pageSize: query?.pageSize || 24,\n };\n\n const pluginParams = {\n ...tabQuery.plugin,\n pagination: paginationParams,\n search: debouncedSearch,\n version: strapiVersion,\n };\n\n const { data: pluginsResponse, status: pluginsStatus } = useQuery(\n ['marketplace', 'plugins', pluginParams],\n async () => {\n try {\n const queryString = qs.stringify(pluginParams);\n const res = await fetch(`${MARKETPLACE_API_URL}/plugins?${queryString}`);\n\n if (!res.ok) {\n throw new Error('Failed to fetch marketplace plugins.');\n }\n\n const data = (await res.json()) as MarketplaceResponse<Plugin>;\n return data;\n } catch (error) {\n // silence\n }\n\n return null;\n },\n {\n onSuccess() {\n notifyMarketplaceLoad();\n },\n onError() {\n toggleNotification({\n type: 'danger',\n message: formatMessage({ id: 'notification.error', defaultMessage: 'An error occured' }),\n });\n },\n }\n );\n\n const providerParams = {\n ...tabQuery.provider,\n pagination: paginationParams,\n search: debouncedSearch,\n version: strapiVersion,\n };\n\n const { data: providersResponse, status: providersStatus } = useQuery(\n ['marketplace', 'providers', providerParams],\n async () => {\n const queryString = qs.stringify(providerParams);\n const res = await fetch(`${MARKETPLACE_API_URL}/providers?${queryString}`);\n\n if (!res.ok) {\n throw new Error('Failed to fetch marketplace providers.');\n }\n\n const data = (await res.json()) as MarketplaceResponse<Provider>;\n\n return data;\n },\n {\n onSuccess() {\n notifyMarketplaceLoad();\n },\n onError() {\n toggleNotification({\n type: 'danger',\n message: formatMessage({ id: 'notification.error', defaultMessage: 'An error occured' }),\n });\n },\n }\n );\n\n const npmPackageTypeResponse = npmPackageType === 'plugin' ? pluginsResponse : providersResponse;\n\n const possibleCollections = npmPackageTypeResponse?.meta.collections ?? {};\n const possibleCategories = pluginsResponse?.meta.categories ?? {};\n\n const { pagination } = npmPackageTypeResponse?.meta ?? {};\n\n return {\n pluginsResponse,\n providersResponse,\n pluginsStatus,\n providersStatus,\n possibleCollections,\n possibleCategories,\n pagination,\n };\n}\n\nexport { useMarketplaceData };\nexport type {\n MarketplaceResponse,\n Plugin,\n Provider,\n MarketplaceMeta,\n Collections,\n Categories,\n FilterTypes,\n UseMarketplaceDataParams,\n};\n"],"names":["MARKETPLACE_API_URL","useMarketplaceData","npmPackageType","debouncedSearch","query","tabQuery","strapiVersion","notifyStatus","useNotifyAT","formatMessage","useIntl","toggleNotification","useNotification","marketplaceTitle","id","defaultMessage","notifyMarketplaceLoad","target","paginationParams","page","pageSize","pluginParams","plugin","pagination","search","version","data","pluginsResponse","status","pluginsStatus","useQuery","queryString","qs","stringify","res","fetch","ok","Error","json","error","onSuccess","onError","type","message","providerParams","provider","providersResponse","providersStatus","npmPackageTypeResponse","possibleCollections","meta","collections","possibleCategories","categories"],"mappings":";;;;;;AASA,MAAMA,mBAAsB,GAAA,8BAAA;AA0F5B,SAASC,kBAAAA,CAAmB,EAC1BC,cAAc,EACdC,eAAe,EACfC,KAAK,EACLC,QAAQ,EACRC,aAAa,EACY,EAAA;IACzB,MAAM,EAAEC,YAAY,EAAE,GAAGC,WAAAA,EAAAA;IACzB,MAAM,EAAEC,aAAa,EAAE,GAAGC,OAAAA,EAAAA;IAC1B,MAAM,EAAEC,kBAAkB,EAAE,GAAGC,eAAAA,EAAAA;AAC/B,IAAA,MAAMC,mBAAmBJ,aAAc,CAAA;QACrCK,EAAI,EAAA,oBAAA;QACJC,cAAgB,EAAA;AAClB,KAAA,CAAA;AAEA,IAAA,MAAMC,qBAAwB,GAAA,IAAA;AAC5BT,QAAAA,YAAAA,CACEE,aACE,CAAA;YACEK,EAAI,EAAA,8BAAA;YACJC,cAAgB,EAAA;SAElB,EAAA;YAAEE,MAAQJ,EAAAA;AAAiB,SAAA,CAAA,CAAA;AAGjC,KAAA;AAEA,IAAA,MAAMK,gBAAmB,GAAA;AACvBC,QAAAA,IAAAA,EAAMf,OAAOe,IAAQ,IAAA,CAAA;AACrBC,QAAAA,QAAAA,EAAUhB,OAAOgB,QAAY,IAAA;AAC/B,KAAA;AAEA,IAAA,MAAMC,YAAe,GAAA;AACnB,QAAA,GAAGhB,SAASiB,MAAM;QAClBC,UAAYL,EAAAA,gBAAAA;QACZM,MAAQrB,EAAAA,eAAAA;QACRsB,OAASnB,EAAAA;AACX,KAAA;IAEA,MAAM,EAAEoB,MAAMC,eAAe,EAAEC,QAAQC,aAAa,EAAE,GAAGC,QACvD,CAAA;AAAC,QAAA,aAAA;AAAe,QAAA,SAAA;AAAWT,QAAAA;KAAa,EACxC,UAAA;QACE,IAAI;YACF,MAAMU,WAAAA,GAAcC,EAAGC,CAAAA,SAAS,CAACZ,YAAAA,CAAAA;
|
|
1
|
+
{"version":3,"file":"useMarketplaceData.mjs","sources":["../../../../../../../admin/src/pages/Marketplace/hooks/useMarketplaceData.ts"],"sourcesContent":["import { useNotifyAT } from '@strapi/design-system';\nimport * as qs from 'qs';\nimport { useIntl } from 'react-intl';\nimport { useQuery } from 'react-query';\n\nimport { useNotification } from '../../../features/Notifications';\n\nimport type { MarketplacePageQuery, NpmPackageType, TabQuery } from '../MarketplacePage';\n\nconst MARKETPLACE_API_URL = 'https://market-api.strapi.io';\n\ninterface UseMarketplaceDataParams {\n npmPackageType: NpmPackageType;\n debouncedSearch: string;\n query?: MarketplacePageQuery;\n tabQuery: TabQuery;\n strapiVersion?: string | null;\n}\n\ntype Collections =\n | 'Verified'\n | 'Made by the community'\n | 'Made by Strapi'\n | 'Made by official partners';\n\ntype Categories = 'Custom fields' | 'Deployment' | 'Monitoring';\n\ntype FilterTypes = 'categories' | 'collections';\n\ninterface Plugin {\n id: string;\n attributes: {\n name: string;\n description: string;\n slug: string;\n npmPackageName: string;\n npmPackageUrl: string;\n npmDownloads: number;\n repositoryUrl: string;\n githubStars: number;\n logo: {\n url: string;\n };\n developerName: string;\n validated: boolean;\n madeByStrapi: boolean;\n strapiCompatibility: string;\n submissionDate: string;\n collections: Collections[];\n categories: Categories[];\n strapiVersion: string;\n screenshots: Array<{\n url: string;\n }>;\n };\n}\n\ninterface Provider {\n id: string;\n attributes: {\n name: string;\n description: string;\n slug: string;\n npmPackageName: string;\n npmPackageUrl: string;\n npmDownloads: number;\n repositoryUrl: string;\n githubStars: number;\n pluginName: string;\n logo: {\n url: string;\n };\n developerName: string;\n validated: boolean;\n madeByStrapi: boolean;\n strapiCompatibility: string;\n strapiVersion?: never;\n submissionDate: string;\n collections: Collections[];\n };\n}\n\ninterface MarketplaceMeta {\n collections: Record<Collections, number>;\n pagination: {\n page: number;\n pageSize: number;\n pageCount: number;\n total: number;\n };\n}\n\ninterface MarketplaceResponse<TData extends Plugin | Provider> {\n data: TData[];\n meta: TData extends Provider\n ? MarketplaceMeta\n : MarketplaceMeta & { categories: Record<Categories, number> };\n}\n\nfunction useMarketplaceData({\n npmPackageType,\n debouncedSearch,\n query,\n tabQuery,\n strapiVersion,\n}: UseMarketplaceDataParams) {\n const { notifyStatus } = useNotifyAT();\n const { formatMessage } = useIntl();\n const { toggleNotification } = useNotification();\n const marketplaceTitle = formatMessage({\n id: 'global.marketplace',\n defaultMessage: 'Marketplace',\n });\n\n const notifyMarketplaceLoad = () => {\n notifyStatus(\n formatMessage(\n {\n id: 'app.utils.notify.data-loaded',\n defaultMessage: 'The {target} has loaded',\n },\n { target: marketplaceTitle }\n )\n );\n };\n\n const paginationParams = {\n page: query?.page || 1,\n pageSize: query?.pageSize || 24,\n };\n\n const pluginParams = {\n ...tabQuery.plugin,\n pagination: paginationParams,\n search: debouncedSearch,\n version: strapiVersion,\n };\n\n const { data: pluginsResponse, status: pluginsStatus } = useQuery(\n ['marketplace', 'plugins', pluginParams],\n async () => {\n try {\n const queryString = qs.stringify(pluginParams);\n const res = await fetch(`${MARKETPLACE_API_URL}/plugins?${queryString}`);\n\n if (!res.ok) {\n throw new Error('Failed to fetch marketplace plugins.');\n }\n\n const data = (await res.json()) as MarketplaceResponse<Plugin>;\n return data;\n } catch (error) {\n // silence\n }\n\n return null;\n },\n {\n onSuccess() {\n notifyMarketplaceLoad();\n },\n onError() {\n toggleNotification({\n type: 'danger',\n message: formatMessage({ id: 'notification.error', defaultMessage: 'An error occured' }),\n });\n },\n }\n );\n\n const providerParams = {\n ...tabQuery.provider,\n pagination: paginationParams,\n search: debouncedSearch,\n version: strapiVersion,\n };\n\n const { data: providersResponse, status: providersStatus } = useQuery(\n ['marketplace', 'providers', providerParams],\n async () => {\n const queryString = qs.stringify(providerParams);\n const res = await fetch(`${MARKETPLACE_API_URL}/providers?${queryString}`);\n\n if (!res.ok) {\n throw new Error('Failed to fetch marketplace providers.');\n }\n\n const data = (await res.json()) as MarketplaceResponse<Provider>;\n\n return data;\n },\n {\n onSuccess() {\n notifyMarketplaceLoad();\n },\n onError() {\n toggleNotification({\n type: 'danger',\n message: formatMessage({ id: 'notification.error', defaultMessage: 'An error occured' }),\n });\n },\n }\n );\n\n const npmPackageTypeResponse = npmPackageType === 'plugin' ? pluginsResponse : providersResponse;\n\n const possibleCollections = npmPackageTypeResponse?.meta.collections ?? {};\n const possibleCategories = pluginsResponse?.meta.categories ?? {};\n\n const { pagination } = npmPackageTypeResponse?.meta ?? {};\n\n return {\n pluginsResponse,\n providersResponse,\n pluginsStatus,\n providersStatus,\n possibleCollections,\n possibleCategories,\n pagination,\n };\n}\n\nexport { useMarketplaceData };\nexport type {\n MarketplaceResponse,\n Plugin,\n Provider,\n MarketplaceMeta,\n Collections,\n Categories,\n FilterTypes,\n UseMarketplaceDataParams,\n};\n"],"names":["MARKETPLACE_API_URL","useMarketplaceData","npmPackageType","debouncedSearch","query","tabQuery","strapiVersion","notifyStatus","useNotifyAT","formatMessage","useIntl","toggleNotification","useNotification","marketplaceTitle","id","defaultMessage","notifyMarketplaceLoad","target","paginationParams","page","pageSize","pluginParams","plugin","pagination","search","version","data","pluginsResponse","status","pluginsStatus","useQuery","queryString","qs","stringify","res","fetch","ok","Error","json","error","onSuccess","onError","type","message","providerParams","provider","providersResponse","providersStatus","npmPackageTypeResponse","possibleCollections","meta","collections","possibleCategories","categories"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SettingsNav.js","sources":["../../../../../../../admin/src/pages/Settings/components/SettingsNav.tsx"],"sourcesContent":["import { Badge, Divider } from '@strapi/design-system';\nimport { Lightning } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\nimport { useLocation } from 'react-router-dom';\nimport { styled } from 'styled-components';\n\nimport { useLicenseLimits } from '../../../../../ee/admin/src/hooks/useLicenseLimits';\nimport { SubNav } from '../../../components/SubNav';\nimport { useTracking } from '../../../features/Tracking';\nimport { useSettingsMenu } from '../../../hooks/useSettingsMenu';\n\ntype LinkId =\n | 'content-releases'\n | 'review-workflows'\n | 'sso'\n | 'auditLogs'\n | 'auditLogs-purchase-page';\n\ntype FeatureName = 'cms-content-releases' | 'review-workflows' | 'sso' | 'audit-logs';\n\nconst StyledBadge = styled(Badge)`\n border-radius: 50%;\n padding: ${({ theme }) => theme.spaces[2]};\n height: 2rem;\n`;\n\nconst SettingsNav = ({ isFullPage = false }: { isFullPage?: boolean }) => {\n const { menu } = useSettingsMenu();\n const { formatMessage } = useIntl();\n const { trackUsage } = useTracking();\n const { pathname } = useLocation();\n const { license } = useLicenseLimits();\n\n const availableFeatureNames = license?.features.map((feature) => feature.name);\n\n const linksIdsToLicenseFeaturesNames: Record<LinkId, FeatureName> = {\n 'content-releases': 'cms-content-releases',\n 'review-workflows': 'review-workflows',\n sso: 'sso',\n auditLogs: 'audit-logs',\n 'auditLogs-purchase-page': 'audit-logs',\n };\n\n const filteredMenu = menu.filter(\n (section) => !section.links.every((link) => link.isDisplayed === false)\n );\n\n const sections = filteredMenu.map((section) => {\n return {\n ...section,\n title: section.intlLabel,\n links: section.links.map((link) => {\n return {\n ...link,\n id: link.id as LinkId,\n title: link.intlLabel,\n name: link.id,\n to: link.to.startsWith('/') ? link.to : `/settings/${link.to}`,\n };\n }),\n };\n });\n\n const label = formatMessage({\n id: 'global.settings',\n defaultMessage: 'Settings',\n });\n\n const handleClickOnLink = (destination: string) => () => {\n trackUsage('willNavigate', { from: pathname, to: destination });\n };\n\n return (\n <SubNav.Main aria-label={label}>\n {!isFullPage && (\n <>\n <SubNav.Header label={label} />\n <Divider />\n </>\n )}\n <SubNav.Content>\n {isFullPage && <SubNav.Header label={label} />}\n <SubNav.Sections>\n {sections.map((section) => (\n <SubNav.Section key={section.id} label={formatMessage(section.intlLabel)}>\n {section.links.map((link) => {\n return (\n <SubNav.Link\n to={link.to}\n onClick={handleClickOnLink(link.to)}\n key={link.id}\n label={formatMessage(link.intlLabel)}\n endAction={\n <>\n {link?.licenseOnly && (\n <Lightning\n fill={\n (availableFeatureNames || []).includes(\n linksIdsToLicenseFeaturesNames[link.id]\n )\n ? 'primary600'\n : 'neutral300'\n }\n width=\"1.5rem\"\n height=\"1.5rem\"\n />\n )}\n {link?.hasNotification && (\n <StyledBadge\n aria-label=\"Notification\"\n backgroundColor=\"primary600\"\n textColor=\"neutral0\"\n >\n 1\n </StyledBadge>\n )}\n </>\n }\n >\n {formatMessage(link.intlLabel)}\n </SubNav.Link>\n );\n })}\n </SubNav.Section>\n ))}\n </SubNav.Sections>\n </SubNav.Content>\n </SubNav.Main>\n );\n};\n\nexport { SettingsNav };\n"],"names":["StyledBadge","styled","Badge","theme","spaces","SettingsNav","isFullPage","menu","useSettingsMenu","formatMessage","useIntl","trackUsage","useTracking","pathname","useLocation","license","useLicenseLimits","availableFeatureNames","features","map","feature","name","linksIdsToLicenseFeaturesNames","sso","auditLogs","filteredMenu","filter","section","links","every","link","isDisplayed","sections","title","intlLabel","id","to","startsWith","label","defaultMessage","handleClickOnLink","destination","from","_jsxs","SubNav","Main","aria-label","_Fragment","_jsx","Header","Divider","Content","Sections","Section","Link","onClick","endAction","licenseOnly","Lightning","fill","includes","width","height","hasNotification","backgroundColor","textColor"],"mappings":";;;;;;;;;;;;;AAoBA,MAAMA,WAAAA,GAAcC,aAAOC,CAAAA,kBAAAA,CAAM;;WAEtB,EAAE,CAAC,EAAEC,KAAK,EAAE,GAAKA,KAAMC,CAAAA,MAAM,CAAC,CAAA,CAAE,CAAC;;AAE5C,CAAC;AAED,MAAMC,WAAc,GAAA,CAAC,EAAEC,UAAAA,GAAa,KAAK,EAA4B,GAAA;IACnE,MAAM,EAAEC,IAAI,EAAE,GAAGC,+BAAAA,EAAAA;IACjB,MAAM,EAAEC,aAAa,EAAE,GAAGC,iBAAAA,EAAAA;IAC1B,MAAM,EAAEC,UAAU,EAAE,GAAGC,oBAAAA,EAAAA;IACvB,MAAM,EAAEC,QAAQ,EAAE,GAAGC,0BAAAA,EAAAA;IACrB,MAAM,EAAEC,OAAO,EAAE,GAAGC,iCAAAA,EAAAA;AAEpB,IAAA,MAAMC,wBAAwBF,OAASG,EAAAA,QAAAA,CAASC,IAAI,CAACC,OAAAA,GAAYA,QAAQC,IAAI,CAAA;AAE7E,IAAA,MAAMC,8BAA8D,GAAA;QAClE,kBAAoB,EAAA,sBAAA;QACpB,kBAAoB,EAAA,kBAAA;QACpBC,GAAK,EAAA,KAAA;QACLC,SAAW,EAAA,YAAA;QACX,yBAA2B,EAAA;AAC7B,KAAA;AAEA,IAAA,MAAMC,eAAelB,IAAKmB,CAAAA,MAAM,CAC9B,CAACC,UAAY,CAACA,OAAAA,CAAQC,KAAK,CAACC,KAAK,CAAC,CAACC,IAASA,GAAAA,IAAAA,CAAKC,WAAW,KAAK,KAAA,CAAA,CAAA;AAGnE,IAAA,MAAMC,QAAWP,GAAAA,YAAAA,CAAaN,GAAG,CAAC,CAACQ,OAAAA,GAAAA;QACjC,OAAO;AACL,YAAA,GAAGA,OAAO;AACVM,YAAAA,KAAAA,EAAON,QAAQO,SAAS;AACxBN,YAAAA,KAAAA,EAAOD,OAAQC,CAAAA,KAAK,CAACT,GAAG,CAAC,CAACW,IAAAA,GAAAA;gBACxB,OAAO;AACL,oBAAA,GAAGA,IAAI;AACPK,oBAAAA,EAAAA,EAAIL,KAAKK,EAAE;AACXF,oBAAAA,KAAAA,EAAOH,KAAKI,SAAS;AACrBb,oBAAAA,IAAAA,EAAMS,KAAKK,EAAE;AACbC,oBAAAA,EAAAA,EAAIN,IAAKM,CAAAA,EAAE,CAACC,UAAU,CAAC,GAAOP,CAAAA,GAAAA,IAAAA,CAAKM,EAAE,GAAG,CAAC,UAAU,EAAEN,
|
|
1
|
+
{"version":3,"file":"SettingsNav.js","sources":["../../../../../../../admin/src/pages/Settings/components/SettingsNav.tsx"],"sourcesContent":["import { Badge, Divider, Typography } from '@strapi/design-system';\nimport { Lightning } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\nimport { useLocation } from 'react-router-dom';\nimport { styled } from 'styled-components';\n\nimport { useLicenseLimits } from '../../../../../ee/admin/src/hooks/useLicenseLimits';\nimport { SubNav } from '../../../components/SubNav';\nimport { useTracking } from '../../../features/Tracking';\nimport { useSettingsMenu } from '../../../hooks/useSettingsMenu';\n\ntype LinkId =\n | 'content-releases'\n | 'review-workflows'\n | 'sso'\n | 'auditLogs'\n | 'auditLogs-purchase-page';\n\ntype FeatureName = 'cms-content-releases' | 'review-workflows' | 'sso' | 'audit-logs';\n\nconst StyledBadge = styled(Badge)`\n border-radius: 50%;\n padding: ${({ theme }) => theme.spaces[2]};\n height: 2rem;\n`;\n\nconst SettingsNav = ({ isFullPage = false }: { isFullPage?: boolean }) => {\n const { menu } = useSettingsMenu();\n const { formatMessage } = useIntl();\n const { trackUsage } = useTracking();\n const { pathname } = useLocation();\n const { license } = useLicenseLimits();\n\n const availableFeatureNames = license?.features.map((feature) => feature.name);\n\n const linksIdsToLicenseFeaturesNames: Record<LinkId, FeatureName> = {\n 'content-releases': 'cms-content-releases',\n 'review-workflows': 'review-workflows',\n sso: 'sso',\n auditLogs: 'audit-logs',\n 'auditLogs-purchase-page': 'audit-logs',\n };\n\n const filteredMenu = menu.filter(\n (section) => !section.links.every((link) => link.isDisplayed === false)\n );\n\n const sections = filteredMenu.map((section) => {\n return {\n ...section,\n title: section.intlLabel,\n links: section.links.map((link) => {\n return {\n ...link,\n id: link.id as LinkId,\n title: link.intlLabel,\n name: link.id,\n to: link.to.startsWith('/') ? link.to : `/settings/${link.to}`,\n };\n }),\n };\n });\n\n const label = formatMessage({\n id: 'global.settings',\n defaultMessage: 'Settings',\n });\n\n const handleClickOnLink = (destination: string) => () => {\n trackUsage('willNavigate', { from: pathname, to: destination });\n };\n\n return (\n <SubNav.Main aria-label={label}>\n {!isFullPage && (\n <>\n <SubNav.Header label={label} />\n <Divider />\n </>\n )}\n <SubNav.Content>\n {isFullPage && <SubNav.Header label={label} />}\n <SubNav.Sections>\n {sections.map((section) => (\n <SubNav.Section key={section.id} label={formatMessage(section.intlLabel)}>\n {section.links.map((link) => {\n return (\n <SubNav.Link\n to={link.to}\n onClick={handleClickOnLink(link.to)}\n key={link.id}\n label={formatMessage(link.intlLabel)}\n endAction={\n <>\n {link?.licenseOnly && (\n <Lightning\n fill={\n (availableFeatureNames || []).includes(\n linksIdsToLicenseFeaturesNames[link.id]\n )\n ? 'primary600'\n : 'neutral300'\n }\n width=\"1.5rem\"\n height=\"1.5rem\"\n />\n )}\n {link?.hasNotification && (\n <StyledBadge\n aria-label=\"Notification\"\n backgroundColor=\"primary600\"\n textColor=\"neutral0\"\n >\n 1\n </StyledBadge>\n )}\n </>\n }\n >\n {formatMessage(link.intlLabel)}\n </SubNav.Link>\n );\n })}\n </SubNav.Section>\n ))}\n </SubNav.Sections>\n </SubNav.Content>\n </SubNav.Main>\n );\n};\n\nexport { SettingsNav };\n"],"names":["StyledBadge","styled","Badge","theme","spaces","SettingsNav","isFullPage","menu","useSettingsMenu","formatMessage","useIntl","trackUsage","useTracking","pathname","useLocation","license","useLicenseLimits","availableFeatureNames","features","map","feature","name","linksIdsToLicenseFeaturesNames","sso","auditLogs","filteredMenu","filter","section","links","every","link","isDisplayed","sections","title","intlLabel","id","to","startsWith","label","defaultMessage","handleClickOnLink","destination","from","_jsxs","SubNav","Main","aria-label","_Fragment","_jsx","Header","Divider","Content","Sections","Section","Link","onClick","endAction","licenseOnly","Lightning","fill","includes","width","height","hasNotification","backgroundColor","textColor"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SettingsNav.mjs","sources":["../../../../../../../admin/src/pages/Settings/components/SettingsNav.tsx"],"sourcesContent":["import { Badge, Divider } from '@strapi/design-system';\nimport { Lightning } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\nimport { useLocation } from 'react-router-dom';\nimport { styled } from 'styled-components';\n\nimport { useLicenseLimits } from '../../../../../ee/admin/src/hooks/useLicenseLimits';\nimport { SubNav } from '../../../components/SubNav';\nimport { useTracking } from '../../../features/Tracking';\nimport { useSettingsMenu } from '../../../hooks/useSettingsMenu';\n\ntype LinkId =\n | 'content-releases'\n | 'review-workflows'\n | 'sso'\n | 'auditLogs'\n | 'auditLogs-purchase-page';\n\ntype FeatureName = 'cms-content-releases' | 'review-workflows' | 'sso' | 'audit-logs';\n\nconst StyledBadge = styled(Badge)`\n border-radius: 50%;\n padding: ${({ theme }) => theme.spaces[2]};\n height: 2rem;\n`;\n\nconst SettingsNav = ({ isFullPage = false }: { isFullPage?: boolean }) => {\n const { menu } = useSettingsMenu();\n const { formatMessage } = useIntl();\n const { trackUsage } = useTracking();\n const { pathname } = useLocation();\n const { license } = useLicenseLimits();\n\n const availableFeatureNames = license?.features.map((feature) => feature.name);\n\n const linksIdsToLicenseFeaturesNames: Record<LinkId, FeatureName> = {\n 'content-releases': 'cms-content-releases',\n 'review-workflows': 'review-workflows',\n sso: 'sso',\n auditLogs: 'audit-logs',\n 'auditLogs-purchase-page': 'audit-logs',\n };\n\n const filteredMenu = menu.filter(\n (section) => !section.links.every((link) => link.isDisplayed === false)\n );\n\n const sections = filteredMenu.map((section) => {\n return {\n ...section,\n title: section.intlLabel,\n links: section.links.map((link) => {\n return {\n ...link,\n id: link.id as LinkId,\n title: link.intlLabel,\n name: link.id,\n to: link.to.startsWith('/') ? link.to : `/settings/${link.to}`,\n };\n }),\n };\n });\n\n const label = formatMessage({\n id: 'global.settings',\n defaultMessage: 'Settings',\n });\n\n const handleClickOnLink = (destination: string) => () => {\n trackUsage('willNavigate', { from: pathname, to: destination });\n };\n\n return (\n <SubNav.Main aria-label={label}>\n {!isFullPage && (\n <>\n <SubNav.Header label={label} />\n <Divider />\n </>\n )}\n <SubNav.Content>\n {isFullPage && <SubNav.Header label={label} />}\n <SubNav.Sections>\n {sections.map((section) => (\n <SubNav.Section key={section.id} label={formatMessage(section.intlLabel)}>\n {section.links.map((link) => {\n return (\n <SubNav.Link\n to={link.to}\n onClick={handleClickOnLink(link.to)}\n key={link.id}\n label={formatMessage(link.intlLabel)}\n endAction={\n <>\n {link?.licenseOnly && (\n <Lightning\n fill={\n (availableFeatureNames || []).includes(\n linksIdsToLicenseFeaturesNames[link.id]\n )\n ? 'primary600'\n : 'neutral300'\n }\n width=\"1.5rem\"\n height=\"1.5rem\"\n />\n )}\n {link?.hasNotification && (\n <StyledBadge\n aria-label=\"Notification\"\n backgroundColor=\"primary600\"\n textColor=\"neutral0\"\n >\n 1\n </StyledBadge>\n )}\n </>\n }\n >\n {formatMessage(link.intlLabel)}\n </SubNav.Link>\n );\n })}\n </SubNav.Section>\n ))}\n </SubNav.Sections>\n </SubNav.Content>\n </SubNav.Main>\n );\n};\n\nexport { SettingsNav };\n"],"names":["StyledBadge","styled","Badge","theme","spaces","SettingsNav","isFullPage","menu","useSettingsMenu","formatMessage","useIntl","trackUsage","useTracking","pathname","useLocation","license","useLicenseLimits","availableFeatureNames","features","map","feature","name","linksIdsToLicenseFeaturesNames","sso","auditLogs","filteredMenu","filter","section","links","every","link","isDisplayed","sections","title","intlLabel","id","to","startsWith","label","defaultMessage","handleClickOnLink","destination","from","_jsxs","SubNav","Main","aria-label","_Fragment","_jsx","Header","Divider","Content","Sections","Section","Link","onClick","endAction","licenseOnly","Lightning","fill","includes","width","height","hasNotification","backgroundColor","textColor"],"mappings":";;;;;;;;;;;AAoBA,MAAMA,WAAAA,GAAcC,MAAOC,CAAAA,KAAAA,CAAM;;WAEtB,EAAE,CAAC,EAAEC,KAAK,EAAE,GAAKA,KAAMC,CAAAA,MAAM,CAAC,CAAA,CAAE,CAAC;;AAE5C,CAAC;AAED,MAAMC,WAAc,GAAA,CAAC,EAAEC,UAAAA,GAAa,KAAK,EAA4B,GAAA;IACnE,MAAM,EAAEC,IAAI,EAAE,GAAGC,eAAAA,EAAAA;IACjB,MAAM,EAAEC,aAAa,EAAE,GAAGC,OAAAA,EAAAA;IAC1B,MAAM,EAAEC,UAAU,EAAE,GAAGC,WAAAA,EAAAA;IACvB,MAAM,EAAEC,QAAQ,EAAE,GAAGC,WAAAA,EAAAA;IACrB,MAAM,EAAEC,OAAO,EAAE,GAAGC,gBAAAA,EAAAA;AAEpB,IAAA,MAAMC,wBAAwBF,OAASG,EAAAA,QAAAA,CAASC,IAAI,CAACC,OAAAA,GAAYA,QAAQC,IAAI,CAAA;AAE7E,IAAA,MAAMC,8BAA8D,GAAA;QAClE,kBAAoB,EAAA,sBAAA;QACpB,kBAAoB,EAAA,kBAAA;QACpBC,GAAK,EAAA,KAAA;QACLC,SAAW,EAAA,YAAA;QACX,yBAA2B,EAAA;AAC7B,KAAA;AAEA,IAAA,MAAMC,eAAelB,IAAKmB,CAAAA,MAAM,CAC9B,CAACC,UAAY,CAACA,OAAAA,CAAQC,KAAK,CAACC,KAAK,CAAC,CAACC,IAASA,GAAAA,IAAAA,CAAKC,WAAW,KAAK,KAAA,CAAA,CAAA;AAGnE,IAAA,MAAMC,QAAWP,GAAAA,YAAAA,CAAaN,GAAG,CAAC,CAACQ,OAAAA,GAAAA;QACjC,OAAO;AACL,YAAA,GAAGA,OAAO;AACVM,YAAAA,KAAAA,EAAON,QAAQO,SAAS;AACxBN,YAAAA,KAAAA,EAAOD,OAAQC,CAAAA,KAAK,CAACT,GAAG,CAAC,CAACW,IAAAA,GAAAA;gBACxB,OAAO;AACL,oBAAA,GAAGA,IAAI;AACPK,oBAAAA,EAAAA,EAAIL,KAAKK,EAAE;AACXF,oBAAAA,KAAAA,EAAOH,KAAKI,SAAS;AACrBb,oBAAAA,IAAAA,EAAMS,KAAKK,EAAE;AACbC,oBAAAA,EAAAA,EAAIN,IAAKM,CAAAA,EAAE,CAACC,UAAU,CAAC,GAAOP,CAAAA,GAAAA,IAAAA,CAAKM,EAAE,GAAG,CAAC,UAAU,EAAEN,
|
|
1
|
+
{"version":3,"file":"SettingsNav.mjs","sources":["../../../../../../../admin/src/pages/Settings/components/SettingsNav.tsx"],"sourcesContent":["import { Badge, Divider, Typography } from '@strapi/design-system';\nimport { Lightning } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\nimport { useLocation } from 'react-router-dom';\nimport { styled } from 'styled-components';\n\nimport { useLicenseLimits } from '../../../../../ee/admin/src/hooks/useLicenseLimits';\nimport { SubNav } from '../../../components/SubNav';\nimport { useTracking } from '../../../features/Tracking';\nimport { useSettingsMenu } from '../../../hooks/useSettingsMenu';\n\ntype LinkId =\n | 'content-releases'\n | 'review-workflows'\n | 'sso'\n | 'auditLogs'\n | 'auditLogs-purchase-page';\n\ntype FeatureName = 'cms-content-releases' | 'review-workflows' | 'sso' | 'audit-logs';\n\nconst StyledBadge = styled(Badge)`\n border-radius: 50%;\n padding: ${({ theme }) => theme.spaces[2]};\n height: 2rem;\n`;\n\nconst SettingsNav = ({ isFullPage = false }: { isFullPage?: boolean }) => {\n const { menu } = useSettingsMenu();\n const { formatMessage } = useIntl();\n const { trackUsage } = useTracking();\n const { pathname } = useLocation();\n const { license } = useLicenseLimits();\n\n const availableFeatureNames = license?.features.map((feature) => feature.name);\n\n const linksIdsToLicenseFeaturesNames: Record<LinkId, FeatureName> = {\n 'content-releases': 'cms-content-releases',\n 'review-workflows': 'review-workflows',\n sso: 'sso',\n auditLogs: 'audit-logs',\n 'auditLogs-purchase-page': 'audit-logs',\n };\n\n const filteredMenu = menu.filter(\n (section) => !section.links.every((link) => link.isDisplayed === false)\n );\n\n const sections = filteredMenu.map((section) => {\n return {\n ...section,\n title: section.intlLabel,\n links: section.links.map((link) => {\n return {\n ...link,\n id: link.id as LinkId,\n title: link.intlLabel,\n name: link.id,\n to: link.to.startsWith('/') ? link.to : `/settings/${link.to}`,\n };\n }),\n };\n });\n\n const label = formatMessage({\n id: 'global.settings',\n defaultMessage: 'Settings',\n });\n\n const handleClickOnLink = (destination: string) => () => {\n trackUsage('willNavigate', { from: pathname, to: destination });\n };\n\n return (\n <SubNav.Main aria-label={label}>\n {!isFullPage && (\n <>\n <SubNav.Header label={label} />\n <Divider />\n </>\n )}\n <SubNav.Content>\n {isFullPage && <SubNav.Header label={label} />}\n <SubNav.Sections>\n {sections.map((section) => (\n <SubNav.Section key={section.id} label={formatMessage(section.intlLabel)}>\n {section.links.map((link) => {\n return (\n <SubNav.Link\n to={link.to}\n onClick={handleClickOnLink(link.to)}\n key={link.id}\n label={formatMessage(link.intlLabel)}\n endAction={\n <>\n {link?.licenseOnly && (\n <Lightning\n fill={\n (availableFeatureNames || []).includes(\n linksIdsToLicenseFeaturesNames[link.id]\n )\n ? 'primary600'\n : 'neutral300'\n }\n width=\"1.5rem\"\n height=\"1.5rem\"\n />\n )}\n {link?.hasNotification && (\n <StyledBadge\n aria-label=\"Notification\"\n backgroundColor=\"primary600\"\n textColor=\"neutral0\"\n >\n 1\n </StyledBadge>\n )}\n </>\n }\n >\n {formatMessage(link.intlLabel)}\n </SubNav.Link>\n );\n })}\n </SubNav.Section>\n ))}\n </SubNav.Sections>\n </SubNav.Content>\n </SubNav.Main>\n );\n};\n\nexport { SettingsNav };\n"],"names":["StyledBadge","styled","Badge","theme","spaces","SettingsNav","isFullPage","menu","useSettingsMenu","formatMessage","useIntl","trackUsage","useTracking","pathname","useLocation","license","useLicenseLimits","availableFeatureNames","features","map","feature","name","linksIdsToLicenseFeaturesNames","sso","auditLogs","filteredMenu","filter","section","links","every","link","isDisplayed","sections","title","intlLabel","id","to","startsWith","label","defaultMessage","handleClickOnLink","destination","from","_jsxs","SubNav","Main","aria-label","_Fragment","_jsx","Header","Divider","Content","Sections","Section","Link","onClick","endAction","licenseOnly","Lightning","fill","includes","width","height","hasNotification","backgroundColor","textColor"],"mappings":"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"}
|
|
@@ -161,7 +161,14 @@ const FormHead = ({ title, token, setToken, toggleToken, showToken, canShowToken
|
|
|
161
161
|
onRegenerate: handleRegenerate,
|
|
162
162
|
url: `${regenerateUrl}${token?.id ?? ''}`
|
|
163
163
|
}),
|
|
164
|
-
navigationAction:
|
|
164
|
+
navigationAction: // The back link for mobile works differently; it is placed higher up in the DOM.
|
|
165
|
+
/*#__PURE__*/ jsxRuntime.jsx(designSystem.Box, {
|
|
166
|
+
display: {
|
|
167
|
+
initial: 'none',
|
|
168
|
+
medium: 'block'
|
|
169
|
+
},
|
|
170
|
+
children: /*#__PURE__*/ jsxRuntime.jsx(BackButton.BackButton, {})
|
|
171
|
+
}),
|
|
165
172
|
ellipsis: true
|
|
166
173
|
});
|
|
167
174
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FormHead.js","sources":["../../../../../../../../admin/src/pages/Settings/components/Tokens/FormHead.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { Button, Dialog, Flex, Tooltip } from '@strapi/design-system';\nimport { Check, ArrowClockwise, Eye, EyeStriked } from '@strapi/icons';\nimport { MessageDescriptor, useIntl } from 'react-intl';\n\nimport { ConfirmDialog } from '../../../../components/ConfirmDialog';\nimport { tours } from '../../../../components/GuidedTour/Tours';\nimport { Layouts } from '../../../../components/Layouts/Layout';\nimport { BackButton } from '../../../../features/BackButton';\nimport { useNotification } from '../../../../features/Notifications';\nimport { useAPIErrorHandler } from '../../../../hooks/useAPIErrorHandler';\nimport { useRegenerateTokenMutation } from '../../../../services/transferTokens';\n\nimport type { Data } from '@strapi/types';\n\ninterface RegenerateProps {\n onRegenerate?: (newKey: string) => void;\n url: string;\n}\n\nconst Regenerate = ({ onRegenerate, url }: RegenerateProps) => {\n const { formatMessage } = useIntl();\n const [showConfirmDialog, setShowConfirmDialog] = React.useState(false);\n\n const [isLoadingConfirmation, setIsLoadingConfirmation] = React.useState(false);\n const { toggleNotification } = useNotification();\n const { _unstableFormatAPIError: formatAPIError } = useAPIErrorHandler();\n\n const [regenerateToken] = useRegenerateTokenMutation();\n\n const regenerateData = async () => {\n try {\n const res = await regenerateToken(url);\n\n if ('error' in res) {\n toggleNotification({\n type: 'danger',\n message: formatAPIError(res.error),\n });\n\n return;\n }\n\n if (onRegenerate) {\n onRegenerate(res.data.accessKey);\n }\n } catch (error) {\n toggleNotification({\n type: 'danger',\n message: formatMessage({\n id: 'notification.error',\n defaultMessage: 'Something went wrong',\n }),\n });\n } finally {\n setIsLoadingConfirmation(false);\n }\n };\n\n const handleConfirmRegeneration = async () => {\n regenerateData();\n setShowConfirmDialog(false);\n };\n\n return (\n <Dialog.Root open={showConfirmDialog} onOpenChange={setShowConfirmDialog}>\n <Dialog.Trigger>\n <Button\n startIcon={<ArrowClockwise />}\n type=\"button\"\n size=\"S\"\n variant=\"tertiary\"\n onClick={() => setShowConfirmDialog(true)}\n name=\"regenerate\"\n >\n {formatMessage({\n id: 'Settings.tokens.regenerate',\n defaultMessage: 'Regenerate',\n })}\n </Button>\n </Dialog.Trigger>\n\n <ConfirmDialog\n title={formatMessage({\n id: 'Settings.tokens.RegenerateDialog.title',\n defaultMessage: 'Regenerate token',\n })}\n endAction={\n <Button\n startIcon={<ArrowClockwise />}\n loading={isLoadingConfirmation}\n onClick={handleConfirmRegeneration}\n >\n {formatMessage({\n id: 'Settings.tokens.Button.regenerate',\n defaultMessage: 'Regenerate',\n })}\n </Button>\n }\n >\n {formatMessage({\n id: 'Settings.tokens.popUpWarning.message',\n defaultMessage: 'Are you sure you want to regenerate this token?',\n })}\n </ConfirmDialog>\n </Dialog.Root>\n );\n};\n\ninterface Token {\n id: Data.ID;\n name: string;\n}\n\ninterface FormHeadProps<TToken extends Token | null> {\n title: MessageDescriptor;\n token: TToken;\n canEditInputs: boolean;\n canRegenerate: boolean;\n canShowToken?: boolean;\n setToken: (token: TToken) => void;\n toggleToken?: () => void;\n showToken?: boolean;\n isSubmitting: boolean;\n regenerateUrl: string;\n}\n\nexport const FormHead = <TToken extends Token | null>({\n title,\n token,\n setToken,\n toggleToken,\n showToken,\n canShowToken,\n canEditInputs,\n canRegenerate,\n isSubmitting,\n regenerateUrl,\n}: FormHeadProps<TToken>) => {\n const { formatMessage } = useIntl();\n const handleRegenerate = (newKey: string) => {\n setToken({\n ...token,\n accessKey: newKey,\n });\n toggleToken?.();\n };\n\n return (\n <Layouts.Header\n title={token?.name || formatMessage(title)}\n primaryAction={\n canEditInputs ? (\n <Flex gap={2}>\n {canRegenerate && token?.id && (\n <Regenerate\n onRegenerate={handleRegenerate}\n url={`${regenerateUrl}${token?.id ?? ''}`}\n />\n )}\n {token?.id && toggleToken && (\n <tours.apiTokens.ViewAPIToken>\n <Tooltip\n label={\n !canShowToken &&\n formatMessage({\n id: 'Settings.tokens.encryptionKeyMissing',\n defaultMessage:\n 'In order to view the token, you need a valid encryption key in the admin configuration',\n })\n }\n >\n <Button\n type=\"button\"\n startIcon={showToken ? <EyeStriked /> : <Eye />}\n variant=\"secondary\"\n onClick={() => toggleToken?.()}\n disabled={!canShowToken}\n >\n {formatMessage({\n id: 'Settings.tokens.viewToken',\n defaultMessage: 'View token',\n })}\n </Button>\n </Tooltip>\n </tours.apiTokens.ViewAPIToken>\n )}\n <Button\n disabled={isSubmitting}\n loading={isSubmitting}\n startIcon={<Check />}\n type=\"submit\"\n size=\"S\"\n >\n {formatMessage({\n id: 'global.save',\n defaultMessage: 'Save',\n })}\n </Button>\n </Flex>\n ) : (\n canRegenerate &&\n token?.id && (\n <Regenerate\n onRegenerate={handleRegenerate}\n url={`${regenerateUrl}${token?.id ?? ''}`}\n />\n )\n )\n }\n navigationAction={<BackButton />}\n ellipsis\n />\n );\n};\n"],"names":["Regenerate","onRegenerate","url","formatMessage","useIntl","showConfirmDialog","setShowConfirmDialog","React","useState","isLoadingConfirmation","setIsLoadingConfirmation","toggleNotification","useNotification","_unstableFormatAPIError","formatAPIError","useAPIErrorHandler","regenerateToken","useRegenerateTokenMutation","regenerateData","res","type","message","error","data","accessKey","id","defaultMessage","handleConfirmRegeneration","_jsxs","Dialog","Root","open","onOpenChange","_jsx","Trigger","Button","startIcon","ArrowClockwise","size","variant","onClick","name","ConfirmDialog","title","endAction","loading","FormHead","token","setToken","toggleToken","showToken","canShowToken","canEditInputs","canRegenerate","isSubmitting","regenerateUrl","handleRegenerate","newKey","Layouts","Header","primaryAction","Flex","gap","tours","apiTokens","ViewAPIToken","Tooltip","label","EyeStriked","Eye","disabled","Check","navigationAction","BackButton","ellipsis"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"FormHead.js","sources":["../../../../../../../../admin/src/pages/Settings/components/Tokens/FormHead.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { Box, Button, Dialog, Flex, Tooltip } from '@strapi/design-system';\nimport { Check, ArrowClockwise, Eye, EyeStriked } from '@strapi/icons';\nimport { MessageDescriptor, useIntl } from 'react-intl';\n\nimport { ConfirmDialog } from '../../../../components/ConfirmDialog';\nimport { tours } from '../../../../components/GuidedTour/Tours';\nimport { Layouts } from '../../../../components/Layouts/Layout';\nimport { BackButton } from '../../../../features/BackButton';\nimport { useNotification } from '../../../../features/Notifications';\nimport { useAPIErrorHandler } from '../../../../hooks/useAPIErrorHandler';\nimport { useRegenerateTokenMutation } from '../../../../services/transferTokens';\n\nimport type { Data } from '@strapi/types';\n\ninterface RegenerateProps {\n onRegenerate?: (newKey: string) => void;\n url: string;\n}\n\nconst Regenerate = ({ onRegenerate, url }: RegenerateProps) => {\n const { formatMessage } = useIntl();\n const [showConfirmDialog, setShowConfirmDialog] = React.useState(false);\n\n const [isLoadingConfirmation, setIsLoadingConfirmation] = React.useState(false);\n const { toggleNotification } = useNotification();\n const { _unstableFormatAPIError: formatAPIError } = useAPIErrorHandler();\n\n const [regenerateToken] = useRegenerateTokenMutation();\n\n const regenerateData = async () => {\n try {\n const res = await regenerateToken(url);\n\n if ('error' in res) {\n toggleNotification({\n type: 'danger',\n message: formatAPIError(res.error),\n });\n\n return;\n }\n\n if (onRegenerate) {\n onRegenerate(res.data.accessKey);\n }\n } catch (error) {\n toggleNotification({\n type: 'danger',\n message: formatMessage({\n id: 'notification.error',\n defaultMessage: 'Something went wrong',\n }),\n });\n } finally {\n setIsLoadingConfirmation(false);\n }\n };\n\n const handleConfirmRegeneration = async () => {\n regenerateData();\n setShowConfirmDialog(false);\n };\n\n return (\n <Dialog.Root open={showConfirmDialog} onOpenChange={setShowConfirmDialog}>\n <Dialog.Trigger>\n <Button\n startIcon={<ArrowClockwise />}\n type=\"button\"\n size=\"S\"\n variant=\"tertiary\"\n onClick={() => setShowConfirmDialog(true)}\n name=\"regenerate\"\n >\n {formatMessage({\n id: 'Settings.tokens.regenerate',\n defaultMessage: 'Regenerate',\n })}\n </Button>\n </Dialog.Trigger>\n\n <ConfirmDialog\n title={formatMessage({\n id: 'Settings.tokens.RegenerateDialog.title',\n defaultMessage: 'Regenerate token',\n })}\n endAction={\n <Button\n startIcon={<ArrowClockwise />}\n loading={isLoadingConfirmation}\n onClick={handleConfirmRegeneration}\n >\n {formatMessage({\n id: 'Settings.tokens.Button.regenerate',\n defaultMessage: 'Regenerate',\n })}\n </Button>\n }\n >\n {formatMessage({\n id: 'Settings.tokens.popUpWarning.message',\n defaultMessage: 'Are you sure you want to regenerate this token?',\n })}\n </ConfirmDialog>\n </Dialog.Root>\n );\n};\n\ninterface Token {\n id: Data.ID;\n name: string;\n}\n\ninterface FormHeadProps<TToken extends Token | null> {\n title: MessageDescriptor;\n token: TToken;\n canEditInputs: boolean;\n canRegenerate: boolean;\n canShowToken?: boolean;\n setToken: (token: TToken) => void;\n toggleToken?: () => void;\n showToken?: boolean;\n isSubmitting: boolean;\n regenerateUrl: string;\n}\n\nexport const FormHead = <TToken extends Token | null>({\n title,\n token,\n setToken,\n toggleToken,\n showToken,\n canShowToken,\n canEditInputs,\n canRegenerate,\n isSubmitting,\n regenerateUrl,\n}: FormHeadProps<TToken>) => {\n const { formatMessage } = useIntl();\n const handleRegenerate = (newKey: string) => {\n setToken({\n ...token,\n accessKey: newKey,\n });\n toggleToken?.();\n };\n\n return (\n <Layouts.Header\n title={token?.name || formatMessage(title)}\n primaryAction={\n canEditInputs ? (\n <Flex gap={2}>\n {canRegenerate && token?.id && (\n <Regenerate\n onRegenerate={handleRegenerate}\n url={`${regenerateUrl}${token?.id ?? ''}`}\n />\n )}\n {token?.id && toggleToken && (\n <tours.apiTokens.ViewAPIToken>\n <Tooltip\n label={\n !canShowToken &&\n formatMessage({\n id: 'Settings.tokens.encryptionKeyMissing',\n defaultMessage:\n 'In order to view the token, you need a valid encryption key in the admin configuration',\n })\n }\n >\n <Button\n type=\"button\"\n startIcon={showToken ? <EyeStriked /> : <Eye />}\n variant=\"secondary\"\n onClick={() => toggleToken?.()}\n disabled={!canShowToken}\n >\n {formatMessage({\n id: 'Settings.tokens.viewToken',\n defaultMessage: 'View token',\n })}\n </Button>\n </Tooltip>\n </tours.apiTokens.ViewAPIToken>\n )}\n <Button\n disabled={isSubmitting}\n loading={isSubmitting}\n startIcon={<Check />}\n type=\"submit\"\n size=\"S\"\n >\n {formatMessage({\n id: 'global.save',\n defaultMessage: 'Save',\n })}\n </Button>\n </Flex>\n ) : (\n canRegenerate &&\n token?.id && (\n <Regenerate\n onRegenerate={handleRegenerate}\n url={`${regenerateUrl}${token?.id ?? ''}`}\n />\n )\n )\n }\n navigationAction={\n // The back link for mobile works differently; it is placed higher up in the DOM.\n <Box display={{ initial: 'none', medium: 'block' }}>\n <BackButton />\n </Box>\n }\n ellipsis\n />\n );\n};\n"],"names":["Regenerate","onRegenerate","url","formatMessage","useIntl","showConfirmDialog","setShowConfirmDialog","React","useState","isLoadingConfirmation","setIsLoadingConfirmation","toggleNotification","useNotification","_unstableFormatAPIError","formatAPIError","useAPIErrorHandler","regenerateToken","useRegenerateTokenMutation","regenerateData","res","type","message","error","data","accessKey","id","defaultMessage","handleConfirmRegeneration","_jsxs","Dialog","Root","open","onOpenChange","_jsx","Trigger","Button","startIcon","ArrowClockwise","size","variant","onClick","name","ConfirmDialog","title","endAction","loading","FormHead","token","setToken","toggleToken","showToken","canShowToken","canEditInputs","canRegenerate","isSubmitting","regenerateUrl","handleRegenerate","newKey","Layouts","Header","primaryAction","Flex","gap","tours","apiTokens","ViewAPIToken","Tooltip","label","EyeStriked","Eye","disabled","Check","navigationAction","Box","display","initial","medium","BackButton","ellipsis"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAqBA,MAAMA,aAAa,CAAC,EAAEC,YAAY,EAAEC,GAAG,EAAmB,GAAA;IACxD,MAAM,EAAEC,aAAa,EAAE,GAAGC,iBAAAA,EAAAA;AAC1B,IAAA,MAAM,CAACC,iBAAmBC,EAAAA,oBAAAA,CAAqB,GAAGC,gBAAAA,CAAMC,QAAQ,CAAC,KAAA,CAAA;AAEjE,IAAA,MAAM,CAACC,qBAAuBC,EAAAA,wBAAAA,CAAyB,GAAGH,gBAAAA,CAAMC,QAAQ,CAAC,KAAA,CAAA;IACzE,MAAM,EAAEG,kBAAkB,EAAE,GAAGC,6BAAAA,EAAAA;AAC/B,IAAA,MAAM,EAAEC,uBAAAA,EAAyBC,cAAc,EAAE,GAAGC,qCAAAA,EAAAA;IAEpD,MAAM,CAACC,gBAAgB,GAAGC,yCAAAA,EAAAA;AAE1B,IAAA,MAAMC,cAAiB,GAAA,UAAA;QACrB,IAAI;YACF,MAAMC,GAAAA,GAAM,MAAMH,eAAgBd,CAAAA,GAAAA,CAAAA;AAElC,YAAA,IAAI,WAAWiB,GAAK,EAAA;gBAClBR,kBAAmB,CAAA;oBACjBS,IAAM,EAAA,QAAA;oBACNC,OAASP,EAAAA,cAAAA,CAAeK,IAAIG,KAAK;AACnC,iBAAA,CAAA;AAEA,gBAAA;AACF;AAEA,YAAA,IAAIrB,YAAc,EAAA;gBAChBA,YAAakB,CAAAA,GAAAA,CAAII,IAAI,CAACC,SAAS,CAAA;AACjC;AACF,SAAA,CAAE,OAAOF,KAAO,EAAA;YACdX,kBAAmB,CAAA;gBACjBS,IAAM,EAAA,QAAA;AACNC,gBAAAA,OAAAA,EAASlB,aAAc,CAAA;oBACrBsB,EAAI,EAAA,oBAAA;oBACJC,cAAgB,EAAA;AAClB,iBAAA;AACF,aAAA,CAAA;SACQ,QAAA;YACRhB,wBAAyB,CAAA,KAAA,CAAA;AAC3B;AACF,KAAA;AAEA,IAAA,MAAMiB,yBAA4B,GAAA,UAAA;AAChCT,QAAAA,cAAAA,EAAAA;QACAZ,oBAAqB,CAAA,KAAA,CAAA;AACvB,KAAA;IAEA,qBACEsB,eAAA,CAACC,oBAAOC,IAAI,EAAA;QAACC,IAAM1B,EAAAA,iBAAAA;QAAmB2B,YAAc1B,EAAAA,oBAAAA;;AAClD,0BAAA2B,cAAA,CAACJ,oBAAOK,OAAO,EAAA;AACb,gBAAA,QAAA,gBAAAD,cAACE,CAAAA,mBAAAA,EAAAA;AACCC,oBAAAA,SAAAA,gBAAWH,cAACI,CAAAA,oBAAAA,EAAAA,EAAAA,CAAAA;oBACZjB,IAAK,EAAA,QAAA;oBACLkB,IAAK,EAAA,GAAA;oBACLC,OAAQ,EAAA,UAAA;AACRC,oBAAAA,OAAAA,EAAS,IAAMlC,oBAAqB,CAAA,IAAA,CAAA;oBACpCmC,IAAK,EAAA,YAAA;8BAEJtC,aAAc,CAAA;wBACbsB,EAAI,EAAA,4BAAA;wBACJC,cAAgB,EAAA;AAClB,qBAAA;;;0BAIJO,cAACS,CAAAA,2BAAAA,EAAAA;AACCC,gBAAAA,KAAAA,EAAOxC,aAAc,CAAA;oBACnBsB,EAAI,EAAA,wCAAA;oBACJC,cAAgB,EAAA;AAClB,iBAAA,CAAA;AACAkB,gBAAAA,SAAAA,gBACEX,cAACE,CAAAA,mBAAAA,EAAAA;AACCC,oBAAAA,SAAAA,gBAAWH,cAACI,CAAAA,oBAAAA,EAAAA,EAAAA,CAAAA;oBACZQ,OAASpC,EAAAA,qBAAAA;oBACT+B,OAASb,EAAAA,yBAAAA;8BAERxB,aAAc,CAAA;wBACbsB,EAAI,EAAA,mCAAA;wBACJC,cAAgB,EAAA;AAClB,qBAAA;;0BAIHvB,aAAc,CAAA;oBACbsB,EAAI,EAAA,sCAAA;oBACJC,cAAgB,EAAA;AAClB,iBAAA;;;;AAIR,CAAA;AAoBO,MAAMoB,WAAW,CAA8B,EACpDH,KAAK,EACLI,KAAK,EACLC,QAAQ,EACRC,WAAW,EACXC,SAAS,EACTC,YAAY,EACZC,aAAa,EACbC,aAAa,EACbC,YAAY,EACZC,aAAa,EACS,GAAA;IACtB,MAAM,EAAEpD,aAAa,EAAE,GAAGC,iBAAAA,EAAAA;AAC1B,IAAA,MAAMoD,mBAAmB,CAACC,MAAAA,GAAAA;QACxBT,QAAS,CAAA;AACP,YAAA,GAAGD,KAAK;YACRvB,SAAWiC,EAAAA;AACb,SAAA,CAAA;AACAR,QAAAA,WAAAA,IAAAA;AACF,KAAA;IAEA,qBACEhB,cAAA,CAACyB,eAAQC,MAAM,EAAA;QACbhB,KAAOI,EAAAA,KAAAA,EAAON,QAAQtC,aAAcwC,CAAAA,KAAAA,CAAAA;AACpCiB,QAAAA,aAAAA,EACER,8BACExB,eAACiC,CAAAA,iBAAAA,EAAAA;YAAKC,GAAK,EAAA,CAAA;;gBACRT,aAAiBN,IAAAA,KAAAA,EAAOtB,oBACvBQ,cAACjC,CAAAA,UAAAA,EAAAA;oBACCC,YAAcuD,EAAAA,gBAAAA;AACdtD,oBAAAA,GAAAA,EAAK,CAAGqD,EAAAA,aAAAA,CAAAA,EAAgBR,KAAOtB,EAAAA,EAAAA,IAAM,EAAI,CAAA;;AAG5CsB,gBAAAA,KAAAA,EAAOtB,MAAMwB,WACZ,kBAAAhB,cAAA,CAAC8B,WAAMC,CAAAA,SAAS,CAACC,YAAY,EAAA;AAC3B,oBAAA,QAAA,gBAAAhC,cAACiC,CAAAA,oBAAAA,EAAAA;wBACCC,KACE,EAAA,CAAChB,gBACDhD,aAAc,CAAA;4BACZsB,EAAI,EAAA,sCAAA;4BACJC,cACE,EAAA;AACJ,yBAAA,CAAA;AAGF,wBAAA,QAAA,gBAAAO,cAACE,CAAAA,mBAAAA,EAAAA;4BACCf,IAAK,EAAA,QAAA;4BACLgB,SAAWc,EAAAA,SAAAA,iBAAYjB,cAACmC,CAAAA,gBAAAA,EAAAA,EAAAA,CAAAA,iBAAgBnC,cAACoC,CAAAA,SAAAA,EAAAA,EAAAA,CAAAA;4BACzC9B,OAAQ,EAAA,WAAA;AACRC,4BAAAA,OAAAA,EAAS,IAAMS,WAAAA,IAAAA;AACfqB,4BAAAA,QAAAA,EAAU,CAACnB,YAAAA;sCAEVhD,aAAc,CAAA;gCACbsB,EAAI,EAAA,2BAAA;gCACJC,cAAgB,EAAA;AAClB,6BAAA;;;;8BAKRO,cAACE,CAAAA,mBAAAA,EAAAA;oBACCmC,QAAUhB,EAAAA,YAAAA;oBACVT,OAASS,EAAAA,YAAAA;AACTlB,oBAAAA,SAAAA,gBAAWH,cAACsC,CAAAA,WAAAA,EAAAA,EAAAA,CAAAA;oBACZnD,IAAK,EAAA,QAAA;oBACLkB,IAAK,EAAA,GAAA;8BAEJnC,aAAc,CAAA;wBACbsB,EAAI,EAAA,aAAA;wBACJC,cAAgB,EAAA;AAClB,qBAAA;;;aAIJ2B,aACAN,IAAAA,KAAAA,EAAOtB,oBACLQ,cAACjC,CAAAA,UAAAA,EAAAA;YACCC,YAAcuD,EAAAA,gBAAAA;AACdtD,YAAAA,GAAAA,EAAK,CAAGqD,EAAAA,aAAAA,CAAAA,EAAgBR,KAAOtB,EAAAA,EAAAA,IAAM,EAAI,CAAA;;AAKjD+C,QAAAA,gBAAAA;sBAEEvC,cAACwC,CAAAA,gBAAAA,EAAAA;YAAIC,OAAS,EAAA;gBAAEC,OAAS,EAAA,MAAA;gBAAQC,MAAQ,EAAA;AAAQ,aAAA;AAC/C,YAAA,QAAA,gBAAA3C,cAAC4C,CAAAA,qBAAAA,EAAAA,EAAAA;;QAGLC,QAAQ,EAAA;;AAGd;;;;"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { jsx, jsxs } from 'react/jsx-runtime';
|
|
2
2
|
import * as React from 'react';
|
|
3
|
-
import { Flex, Tooltip, Button, Dialog } from '@strapi/design-system';
|
|
3
|
+
import { Flex, Tooltip, Button, Box, Dialog } from '@strapi/design-system';
|
|
4
4
|
import { EyeStriked, Eye, Check, ArrowClockwise } from '@strapi/icons';
|
|
5
5
|
import { useIntl } from 'react-intl';
|
|
6
6
|
import { ConfirmDialog } from '../../../../components/ConfirmDialog.mjs';
|
|
@@ -140,7 +140,14 @@ const FormHead = ({ title, token, setToken, toggleToken, showToken, canShowToken
|
|
|
140
140
|
onRegenerate: handleRegenerate,
|
|
141
141
|
url: `${regenerateUrl}${token?.id ?? ''}`
|
|
142
142
|
}),
|
|
143
|
-
navigationAction:
|
|
143
|
+
navigationAction: // The back link for mobile works differently; it is placed higher up in the DOM.
|
|
144
|
+
/*#__PURE__*/ jsx(Box, {
|
|
145
|
+
display: {
|
|
146
|
+
initial: 'none',
|
|
147
|
+
medium: 'block'
|
|
148
|
+
},
|
|
149
|
+
children: /*#__PURE__*/ jsx(BackButton, {})
|
|
150
|
+
}),
|
|
144
151
|
ellipsis: true
|
|
145
152
|
});
|
|
146
153
|
};
|