@strapi/admin 5.49.0 → 5.50.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/admin/admin/src/components/ErrorElement.js +97 -2
- package/dist/admin/admin/src/components/ErrorElement.js.map +1 -1
- package/dist/admin/admin/src/components/ErrorElement.mjs +99 -4
- package/dist/admin/admin/src/components/ErrorElement.mjs.map +1 -1
- package/dist/admin/admin/src/components/FormInputs/Boolean.js +3 -2
- package/dist/admin/admin/src/components/FormInputs/Boolean.js.map +1 -1
- package/dist/admin/admin/src/components/FormInputs/Boolean.mjs +3 -2
- package/dist/admin/admin/src/components/FormInputs/Boolean.mjs.map +1 -1
- package/dist/admin/admin/src/components/LazyOutlet.js +57 -0
- package/dist/admin/admin/src/components/LazyOutlet.js.map +1 -0
- package/dist/admin/admin/src/components/LazyOutlet.mjs +35 -0
- package/dist/admin/admin/src/components/LazyOutlet.mjs.map +1 -0
- package/dist/admin/admin/src/components/MainNav/NavUser.js +10 -0
- package/dist/admin/admin/src/components/MainNav/NavUser.js.map +1 -1
- package/dist/admin/admin/src/components/MainNav/NavUser.mjs +10 -0
- package/dist/admin/admin/src/components/MainNav/NavUser.mjs.map +1 -1
- package/dist/admin/admin/src/components/RelativeTime.js +3 -2
- package/dist/admin/admin/src/components/RelativeTime.js.map +1 -1
- package/dist/admin/admin/src/components/RelativeTime.mjs +3 -2
- package/dist/admin/admin/src/components/RelativeTime.mjs.map +1 -1
- package/dist/admin/admin/src/core/apis/router.js +19 -17
- package/dist/admin/admin/src/core/apis/router.js.map +1 -1
- package/dist/admin/admin/src/core/apis/router.mjs +19 -17
- package/dist/admin/admin/src/core/apis/router.mjs.map +1 -1
- package/dist/admin/admin/src/hooks/useQueryParams.js +0 -1
- package/dist/admin/admin/src/hooks/useQueryParams.js.map +1 -1
- package/dist/admin/admin/src/hooks/useQueryParams.mjs +0 -1
- package/dist/admin/admin/src/hooks/useQueryParams.mjs.map +1 -1
- package/dist/admin/admin/src/layouts/AuthenticatedLayout.js +4 -2
- package/dist/admin/admin/src/layouts/AuthenticatedLayout.js.map +1 -1
- package/dist/admin/admin/src/layouts/AuthenticatedLayout.mjs +4 -2
- package/dist/admin/admin/src/layouts/AuthenticatedLayout.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Auth/AuthPage.js +3 -2
- package/dist/admin/admin/src/pages/Auth/AuthPage.js.map +1 -1
- package/dist/admin/admin/src/pages/Auth/AuthPage.mjs +3 -2
- package/dist/admin/admin/src/pages/Auth/AuthPage.mjs.map +1 -1
- package/dist/admin/admin/src/pages/SessionsPage.js +318 -0
- package/dist/admin/admin/src/pages/SessionsPage.js.map +1 -0
- package/dist/admin/admin/src/pages/SessionsPage.mjs +296 -0
- package/dist/admin/admin/src/pages/SessionsPage.mjs.map +1 -0
- package/dist/admin/admin/src/pages/Settings/Layout.js +4 -1
- package/dist/admin/admin/src/pages/Settings/Layout.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/Layout.mjs +5 -2
- package/dist/admin/admin/src/pages/Settings/Layout.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/ApplicationInfo/ApplicationInfoPage.js +1 -0
- 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 +1 -0
- package/dist/admin/admin/src/pages/Settings/pages/ApplicationInfo/ApplicationInfoPage.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Roles/CreatePage.js +7 -0
- 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 +7 -0
- 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 +7 -1
- 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 +7 -1
- package/dist/admin/admin/src/pages/Settings/pages/Roles/EditPage.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Roles/components/CollapsePropertyMatrix.js +34 -0
- 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 +34 -0
- 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/Permissions.js +38 -2
- 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 +38 -2
- package/dist/admin/admin/src/pages/Settings/pages/Roles/components/Permissions.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Roles/utils/forms.js +18 -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 +18 -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/localePermissionValidation.js +59 -0
- package/dist/admin/admin/src/pages/Settings/pages/Roles/utils/localePermissionValidation.js.map +1 -0
- package/dist/admin/admin/src/pages/Settings/pages/Roles/utils/localePermissionValidation.mjs +52 -0
- package/dist/admin/admin/src/pages/Settings/pages/Roles/utils/localePermissionValidation.mjs.map +1 -0
- package/dist/admin/admin/src/router.js +9 -0
- package/dist/admin/admin/src/router.js.map +1 -1
- package/dist/admin/admin/src/router.mjs +9 -0
- package/dist/admin/admin/src/router.mjs.map +1 -1
- package/dist/admin/admin/src/services/auth.js +43 -2
- package/dist/admin/admin/src/services/auth.js.map +1 -1
- package/dist/admin/admin/src/services/auth.mjs +41 -3
- package/dist/admin/admin/src/services/auth.mjs.map +1 -1
- package/dist/admin/admin/src/translations/en.json.js +22 -0
- package/dist/admin/admin/src/translations/en.json.js.map +1 -1
- package/dist/admin/admin/src/translations/en.json.mjs +22 -0
- package/dist/admin/admin/src/translations/en.json.mjs.map +1 -1
- package/dist/admin/admin/src/translations/ja.json.js +748 -265
- package/dist/admin/admin/src/translations/ja.json.js.map +1 -1
- package/dist/admin/admin/src/translations/ja.json.mjs +745 -266
- package/dist/admin/admin/src/translations/ja.json.mjs.map +1 -1
- package/dist/admin/admin/src/translations/languageNativeNames.js +1 -0
- package/dist/admin/admin/src/translations/languageNativeNames.js.map +1 -1
- package/dist/admin/admin/src/translations/languageNativeNames.mjs +1 -0
- package/dist/admin/admin/src/translations/languageNativeNames.mjs.map +1 -1
- package/dist/admin/admin/src/utils/retryDynamicImport.js +85 -0
- package/dist/admin/admin/src/utils/retryDynamicImport.js.map +1 -0
- package/dist/admin/admin/src/utils/retryDynamicImport.mjs +80 -0
- package/dist/admin/admin/src/utils/retryDynamicImport.mjs.map +1 -0
- package/dist/admin/admin/tests/server.js +25 -0
- package/dist/admin/admin/tests/server.js.map +1 -1
- package/dist/admin/admin/tests/server.mjs +25 -0
- package/dist/admin/admin/tests/server.mjs.map +1 -1
- package/dist/admin/index.js +2 -0
- package/dist/admin/index.js.map +1 -1
- package/dist/admin/index.mjs +1 -0
- package/dist/admin/index.mjs.map +1 -1
- package/dist/admin/src/StrapiApp.d.ts +5 -5
- package/dist/admin/src/components/FormInputs/Boolean.d.ts +0 -1
- package/dist/admin/src/components/FormInputs/Checkbox.d.ts +0 -1
- package/dist/admin/src/components/FormInputs/DateTime.d.ts +0 -1
- package/dist/admin/src/components/FormInputs/Email.d.ts +0 -1
- package/dist/admin/src/components/FormInputs/Enumeration.d.ts +0 -1
- package/dist/admin/src/components/FormInputs/Number.d.ts +0 -1
- package/dist/admin/src/components/FormInputs/Password.d.ts +0 -1
- package/dist/admin/src/components/FormInputs/Renderer.d.ts +0 -1
- package/dist/admin/src/components/FormInputs/String.d.ts +0 -1
- package/dist/admin/src/components/FormInputs/Textarea.d.ts +0 -1
- package/dist/admin/src/components/FormInputs/Time.d.ts +0 -1
- package/dist/admin/src/components/GuidedTour/GuidedTourProvider.d.ts +0 -1
- package/dist/admin/src/components/LazyOutlet.d.ts +20 -0
- package/dist/admin/src/components/MainNav/MainNav.d.ts +1 -1
- package/dist/admin/src/components/MainNav/NavUser.d.ts +0 -1
- package/dist/admin/src/components/SubNav.d.ts +5 -6
- package/dist/admin/src/core/apis/Plugin.d.ts +1 -1
- package/dist/admin/src/core/apis/Widgets.d.ts +0 -1
- package/dist/admin/src/core/apis/router.d.ts +1 -1
- package/dist/admin/src/core/store/configure.d.ts +2 -2
- package/dist/admin/src/core/utils/createHook.d.ts +4 -4
- package/dist/admin/src/features/AppInfo.d.ts +1 -2
- package/dist/admin/src/features/StrapiApp.d.ts +1 -2
- package/dist/admin/src/hooks/useAPIErrorHandler.d.ts +1 -1
- package/dist/admin/src/hooks/useAdminRoles.d.ts +2 -2
- package/dist/admin/src/hooks/useFetchClient.d.ts +1 -1
- package/dist/admin/src/hooks/usePersistentState.d.ts +0 -1
- package/dist/admin/src/hooks/useQueryParams.d.ts +1 -1
- package/dist/admin/src/hooks/useThrottledCallback.d.ts +0 -1
- package/dist/admin/src/index.d.ts +1 -0
- package/dist/admin/src/layouts/UnauthenticatedLayout.d.ts +2 -2
- package/dist/admin/src/pages/SessionsPage.d.ts +2 -0
- package/dist/admin/src/pages/Settings/pages/Roles/components/CollapseLabel.d.ts +2 -3
- package/dist/admin/src/pages/Settings/pages/Roles/components/ConditionsButton.d.ts +2 -2
- package/dist/admin/src/pages/Settings/pages/Roles/components/HiddenAction.d.ts +0 -1
- package/dist/admin/src/pages/Settings/pages/Roles/components/Permissions.d.ts +2 -0
- package/dist/admin/src/pages/Settings/pages/Roles/utils/forms.d.ts +1 -1
- package/dist/admin/src/pages/Settings/pages/Roles/utils/localePermissionValidation.d.ts +5 -0
- package/dist/admin/src/pages/Settings/pages/Roles/utils/permissions.d.ts +3 -1
- package/dist/admin/src/pages/Settings/pages/Webhooks/hooks/useWebhooks.d.ts +8 -8
- package/dist/admin/src/reducer.d.ts +1 -1
- package/dist/admin/src/services/admin.d.ts +2 -2
- 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 +29 -27
- package/dist/admin/src/services/contentApi.d.ts +1 -1
- package/dist/admin/src/services/users.d.ts +7 -7
- package/dist/admin/src/services/webhooks.d.ts +2 -2
- package/dist/admin/src/translations/languageNativeNames.d.ts +1 -0
- package/dist/admin/src/utils/locales.d.ts +0 -1
- package/dist/admin/src/utils/retryDynamicImport.d.ts +19 -0
- package/dist/admin/src/utils/shims.d.ts +1 -1
- package/dist/admin/tests/store.d.ts +4 -4
- package/dist/admin/tests/utils.d.ts +5 -5
- package/dist/ee/admin/src/pages/SettingsPage/pages/AuditLogs/utils/getDisplayedFilters.d.ts +1 -1
- package/dist/ee/admin/src/services/ai.d.ts +2 -2
- package/dist/ee/server/src/audit-logs/services/audit-logs.d.ts +1 -1
- package/dist/ee/server/src/audit-logs/services/audit-logs.d.ts.map +1 -1
- package/dist/ee/server/src/audit-logs/services/lifecycles.d.ts +3 -3
- package/dist/ee/server/src/audit-logs/services/lifecycles.d.ts.map +1 -1
- package/dist/ee/server/src/audit-logs/validation/audit-logs.d.ts +2 -2
- package/dist/ee/server/src/audit-logs/validation/audit-logs.d.ts.map +1 -1
- package/dist/ee/server/src/bootstrap.d.ts.map +1 -1
- package/dist/ee/server/src/controllers/authentication-utils/utils.d.ts +30 -31
- package/dist/ee/server/src/controllers/authentication-utils/utils.d.ts.map +1 -1
- package/dist/ee/server/src/controllers/index.d.ts +1 -2
- package/dist/ee/server/src/controllers/index.d.ts.map +1 -1
- package/dist/ee/server/src/controllers/user.d.ts +1 -1
- package/dist/ee/server/src/destroy.d.ts.map +1 -1
- package/dist/ee/server/src/index.d.ts +2 -3
- package/dist/ee/server/src/index.d.ts.map +1 -1
- package/dist/ee/server/src/register.d.ts.map +1 -1
- package/dist/ee/server/src/routes/utils.d.ts.map +1 -1
- package/dist/ee/server/src/services/auth.d.ts.map +1 -1
- package/dist/ee/server/src/services/index.d.ts +1 -1
- package/dist/ee/server/src/services/metrics.d.ts.map +1 -1
- package/dist/ee/server/src/services/passport/sso.d.ts.map +1 -1
- package/dist/ee/server/src/services/persist-tables.d.ts +1 -1
- package/dist/ee/server/src/services/persist-tables.d.ts.map +1 -1
- package/dist/ee/server/src/services/role.d.ts.map +1 -1
- package/dist/ee/server/src/services/user.d.ts.map +1 -1
- package/dist/ee/server/src/utils/index.d.ts.map +1 -1
- package/dist/ee/server/src/utils/sso-lock.d.ts.map +1 -1
- package/dist/ee/server/src/validation/authentication.d.ts +2 -2
- package/dist/ee/server/src/validation/role.d.ts +6 -6
- package/dist/ee/server/src/validation/role.d.ts.map +1 -1
- package/dist/ee/server/src/validation/user.d.ts.map +1 -1
- package/dist/server/server/src/content-types/session.js +6 -0
- package/dist/server/server/src/content-types/session.js.map +1 -1
- package/dist/server/server/src/content-types/session.mjs +6 -0
- package/dist/server/server/src/content-types/session.mjs.map +1 -1
- package/dist/server/server/src/controllers/admin.js.map +1 -1
- package/dist/server/server/src/controllers/admin.mjs.map +1 -1
- package/dist/server/server/src/controllers/authenticated-session.js +61 -0
- package/dist/server/server/src/controllers/authenticated-session.js.map +1 -0
- package/dist/server/server/src/controllers/authenticated-session.mjs +59 -0
- package/dist/server/server/src/controllers/authenticated-session.mjs.map +1 -0
- package/dist/server/server/src/controllers/authentication.js +11 -4
- package/dist/server/server/src/controllers/authentication.js.map +1 -1
- package/dist/server/server/src/controllers/authentication.mjs +12 -5
- package/dist/server/server/src/controllers/authentication.mjs.map +1 -1
- package/dist/server/server/src/controllers/index.js +2 -0
- package/dist/server/server/src/controllers/index.js.map +1 -1
- package/dist/server/server/src/controllers/index.mjs +2 -0
- package/dist/server/server/src/controllers/index.mjs.map +1 -1
- package/dist/server/server/src/controllers/role.js +2 -4
- package/dist/server/server/src/controllers/role.js.map +1 -1
- package/dist/server/server/src/controllers/role.mjs +2 -4
- package/dist/server/server/src/controllers/role.mjs.map +1 -1
- package/dist/server/server/src/routes/serve-admin-panel.js +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 +1 -1
- package/dist/server/server/src/routes/serve-admin-panel.mjs.map +1 -1
- package/dist/server/server/src/routes/users.js +12 -26
- package/dist/server/server/src/routes/users.js.map +1 -1
- package/dist/server/server/src/routes/users.mjs +12 -26
- package/dist/server/server/src/routes/users.mjs.map +1 -1
- package/dist/server/server/src/services/permission/permissions-manager/sanitize.js +0 -2
- 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 +0 -2
- package/dist/server/server/src/services/permission/permissions-manager/sanitize.mjs.map +1 -1
- package/dist/server/server/src/services/role.js +2 -1
- package/dist/server/server/src/services/role.js.map +1 -1
- package/dist/server/server/src/services/role.mjs +2 -1
- package/dist/server/server/src/services/role.mjs.map +1 -1
- package/dist/server/server/src/strategies/admin.js +4 -0
- package/dist/server/server/src/strategies/admin.js.map +1 -1
- package/dist/server/server/src/strategies/admin.mjs +4 -0
- package/dist/server/server/src/strategies/admin.mjs.map +1 -1
- package/dist/server/src/ai/controllers/ai.d.ts +3 -3
- package/dist/server/src/ai/services/ai.d.ts.map +1 -1
- package/dist/server/src/bootstrap.d.ts.map +1 -1
- package/dist/server/src/config/admin-conditions.d.ts +2 -2
- package/dist/server/src/config/admin-conditions.d.ts.map +1 -1
- package/dist/server/src/content-types/index.d.ts +6 -0
- package/dist/server/src/content-types/index.d.ts.map +1 -1
- package/dist/server/src/content-types/session.d.ts +6 -0
- package/dist/server/src/content-types/session.d.ts.map +1 -1
- package/dist/server/src/controllers/admin-token.d.ts +5 -5
- package/dist/server/src/controllers/api-token.d.ts +1 -1
- package/dist/server/src/controllers/authenticated-session.d.ts +8 -0
- package/dist/server/src/controllers/authenticated-session.d.ts.map +1 -0
- package/dist/server/src/controllers/authenticated-user.d.ts +1 -1
- package/dist/server/src/controllers/authentication.d.ts +4 -4
- package/dist/server/src/controllers/authentication.d.ts.map +1 -1
- package/dist/server/src/controllers/formatters/conditions.d.ts +0 -1
- package/dist/server/src/controllers/formatters/conditions.d.ts.map +1 -1
- package/dist/server/src/controllers/formatters/format-actions-by-sections.d.ts.map +1 -1
- package/dist/server/src/controllers/homepage.d.ts +2 -2
- package/dist/server/src/controllers/homepage.d.ts.map +1 -1
- package/dist/server/src/controllers/index.d.ts +33 -43
- package/dist/server/src/controllers/index.d.ts.map +1 -1
- package/dist/server/src/controllers/role.d.ts +4 -4
- package/dist/server/src/controllers/transfer/runner.d.ts +4 -4
- package/dist/server/src/controllers/transfer/runner.d.ts.map +1 -1
- package/dist/server/src/controllers/transfer/token.d.ts +1 -1
- package/dist/server/src/controllers/user.d.ts +2 -2
- package/dist/server/src/controllers/webhooks.d.ts +4 -4
- package/dist/server/src/domain/action/index.d.ts +4 -65
- package/dist/server/src/domain/action/index.d.ts.map +1 -1
- package/dist/server/src/domain/action/provider.d.ts +30 -3
- package/dist/server/src/domain/action/provider.d.ts.map +1 -1
- package/dist/server/src/domain/condition/index.d.ts.map +1 -1
- package/dist/server/src/domain/condition/provider.d.ts +19 -2
- package/dist/server/src/domain/condition/provider.d.ts.map +1 -1
- package/dist/server/src/domain/permission/index.d.ts +0 -1
- package/dist/server/src/domain/permission/index.d.ts.map +1 -1
- package/dist/server/src/domain/user.d.ts.map +1 -1
- package/dist/server/src/index.d.ts +51 -63
- package/dist/server/src/index.d.ts.map +1 -1
- package/dist/server/src/middlewares/data-transfer.d.ts.map +1 -1
- package/dist/server/src/middlewares/index.d.ts +0 -1
- package/dist/server/src/middlewares/index.d.ts.map +1 -1
- package/dist/server/src/middlewares/rateLimit.d.ts.map +1 -1
- package/dist/server/src/policies/hasPermissions.d.ts.map +1 -1
- package/dist/server/src/policies/index.d.ts.map +1 -1
- package/dist/server/src/policies/isAuthenticatedAdmin.d.ts.map +1 -1
- package/dist/server/src/policies/isTelemetryEnabled.d.ts.map +1 -1
- package/dist/server/src/register.d.ts.map +1 -1
- package/dist/server/src/routes/index.d.ts +0 -1
- package/dist/server/src/routes/index.d.ts.map +1 -1
- package/dist/server/src/routes/serve-admin-panel.d.ts.map +1 -1
- package/dist/server/src/routes/transfer.d.ts +0 -1
- package/dist/server/src/routes/transfer.d.ts.map +1 -1
- package/dist/server/src/routes/users.d.ts.map +1 -1
- package/dist/server/src/services/action.d.ts.map +1 -1
- package/dist/server/src/services/api-token.d.ts +5 -6
- package/dist/server/src/services/api-token.d.ts.map +1 -1
- package/dist/server/src/services/auth.d.ts.map +1 -1
- package/dist/server/src/services/condition.d.ts.map +1 -1
- package/dist/server/src/services/content-type.d.ts.map +1 -1
- package/dist/server/src/services/encryption.d.ts.map +1 -1
- package/dist/server/src/services/homepage.d.ts.map +1 -1
- package/dist/server/src/services/index.d.ts +12 -21
- package/dist/server/src/services/index.d.ts.map +1 -1
- package/dist/server/src/services/metrics.d.ts.map +1 -1
- package/dist/server/src/services/passport/local-strategy.d.ts.map +1 -1
- package/dist/server/src/services/passport.d.ts +0 -1
- package/dist/server/src/services/passport.d.ts.map +1 -1
- package/dist/server/src/services/permission/engine.d.ts +1 -2
- package/dist/server/src/services/permission/engine.d.ts.map +1 -1
- package/dist/server/src/services/permission/permissions-manager/index.d.ts +5 -5
- package/dist/server/src/services/permission/permissions-manager/index.d.ts.map +1 -1
- package/dist/server/src/services/permission/permissions-manager/permission-fields.d.ts.map +1 -1
- package/dist/server/src/services/permission/permissions-manager/query-builders.d.ts.map +1 -1
- package/dist/server/src/services/permission/permissions-manager/sanitize.d.ts +3 -3
- package/dist/server/src/services/permission/permissions-manager/sanitize.d.ts.map +1 -1
- package/dist/server/src/services/permission/permissions-manager/validate.d.ts.map +1 -1
- package/dist/server/src/services/permission/queries.d.ts.map +1 -1
- package/dist/server/src/services/permission/sections-builder/builder.d.ts +4 -4
- package/dist/server/src/services/permission/sections-builder/builder.d.ts.map +1 -1
- package/dist/server/src/services/permission/sections-builder/handlers.d.ts.map +1 -1
- package/dist/server/src/services/permission/sections-builder/index.d.ts +4 -4
- package/dist/server/src/services/permission/sections-builder/section.d.ts.map +1 -1
- package/dist/server/src/services/permission/sections-builder/utils.d.ts +0 -1
- package/dist/server/src/services/permission/sections-builder/utils.d.ts.map +1 -1
- package/dist/server/src/services/permission.d.ts +13 -38
- package/dist/server/src/services/permission.d.ts.map +1 -1
- package/dist/server/src/services/project-settings.d.ts +2 -4
- package/dist/server/src/services/project-settings.d.ts.map +1 -1
- package/dist/server/src/services/role.d.ts +7 -1
- package/dist/server/src/services/role.d.ts.map +1 -1
- package/dist/server/src/services/token.d.ts +1 -1
- package/dist/server/src/services/token.d.ts.map +1 -1
- package/dist/server/src/services/transfer/token.d.ts +11 -11
- package/dist/server/src/services/transfer/token.d.ts.map +1 -1
- package/dist/server/src/services/user.d.ts +3 -3
- package/dist/server/src/services/user.d.ts.map +1 -1
- package/dist/server/src/strategies/admin-token.d.ts +4 -4
- package/dist/server/src/strategies/admin-token.d.ts.map +1 -1
- package/dist/server/src/strategies/admin.d.ts.map +1 -1
- package/dist/server/src/strategies/api-token-utils.d.ts.map +1 -1
- package/dist/server/src/strategies/content-api-token.d.ts.map +1 -1
- package/dist/server/src/strategies/data-transfer.d.ts.map +1 -1
- package/dist/server/src/utils/normalize-email.d.ts.map +1 -1
- package/dist/server/src/validation/action-provider.d.ts +2 -2
- package/dist/server/src/validation/action-provider.d.ts.map +1 -1
- package/dist/server/src/validation/admin-tokens.d.ts +2 -2
- package/dist/server/src/validation/api-tokens.d.ts +4 -4
- package/dist/server/src/validation/authentication/forgot-password.d.ts +1 -1
- package/dist/server/src/validation/authentication/login.d.ts +1 -1
- package/dist/server/src/validation/authentication/register.d.ts +6 -6
- package/dist/server/src/validation/authentication/register.d.ts.map +1 -1
- package/dist/server/src/validation/authentication/reset-password.d.ts +1 -1
- package/dist/server/src/validation/common-functions/check-fields-are-correctly-nested.d.ts.map +1 -1
- package/dist/server/src/validation/common-functions/check-fields-dont-have-duplicates.d.ts.map +1 -1
- package/dist/server/src/validation/common-validators.d.ts.map +1 -1
- package/dist/server/src/validation/permission.d.ts +6 -6
- package/dist/server/src/validation/permission.d.ts.map +1 -1
- package/dist/server/src/validation/policies/hasPermissions.d.ts +2 -2
- package/dist/server/src/validation/project-settings.d.ts +6 -6
- package/dist/server/src/validation/role.d.ts +8 -8
- package/dist/server/src/validation/role.d.ts.map +1 -1
- package/dist/server/src/validation/transfer/token.d.ts +4 -4
- package/dist/server/src/validation/user.d.ts +8 -8
- package/dist/shared/contracts/permissions.d.ts +1 -0
- package/dist/shared/contracts/permissions.d.ts.map +1 -1
- package/dist/shared/contracts/sessions.d.ts +62 -0
- package/dist/shared/contracts/sessions.d.ts.map +1 -0
- package/dist/shared/contracts/shared.d.ts +1 -1
- package/dist/shared/contracts/shared.d.ts.map +1 -1
- package/dist/shared/utils/session-auth.d.ts +1 -1
- package/dist/shared/utils/session-auth.d.ts.map +1 -1
- package/package.json +11 -11
|
@@ -8,6 +8,7 @@ var reactRouterDom = require('react-router-dom');
|
|
|
8
8
|
var styled = require('styled-components');
|
|
9
9
|
var theme = require('../constants/theme.js');
|
|
10
10
|
var useClipboard = require('../hooks/useClipboard.js');
|
|
11
|
+
var retryDynamicImport = require('../utils/retryDynamicImport.js');
|
|
11
12
|
|
|
12
13
|
/**
|
|
13
14
|
* @description this stops the app from going white, and instead shows the error message.
|
|
@@ -18,13 +19,103 @@ var useClipboard = require('../hooks/useClipboard.js');
|
|
|
18
19
|
const { copy } = useClipboard.useClipboard();
|
|
19
20
|
if (error instanceof Error) {
|
|
20
21
|
console.error(error);
|
|
21
|
-
const
|
|
22
|
+
const handleCopy = async ()=>{
|
|
22
23
|
await copy(`
|
|
23
24
|
\`\`\`
|
|
24
25
|
${error.stack}
|
|
25
26
|
\`\`\`
|
|
26
27
|
`);
|
|
27
28
|
};
|
|
29
|
+
if (retryDynamicImport.isChunkLoadError(error)) {
|
|
30
|
+
return /*#__PURE__*/ jsxRuntime.jsx(designSystem.Main, {
|
|
31
|
+
height: "100%",
|
|
32
|
+
children: /*#__PURE__*/ jsxRuntime.jsx(designSystem.Flex, {
|
|
33
|
+
alignItems: "center",
|
|
34
|
+
height: "100%",
|
|
35
|
+
justifyContent: "center",
|
|
36
|
+
paddingLeft: theme.RESPONSIVE_DEFAULT_SPACING,
|
|
37
|
+
paddingRight: theme.RESPONSIVE_DEFAULT_SPACING,
|
|
38
|
+
children: /*#__PURE__*/ jsxRuntime.jsxs(designSystem.Flex, {
|
|
39
|
+
gap: 7,
|
|
40
|
+
padding: {
|
|
41
|
+
initial: 6,
|
|
42
|
+
small: 7,
|
|
43
|
+
medium: 8
|
|
44
|
+
},
|
|
45
|
+
direction: "column",
|
|
46
|
+
width: "100%",
|
|
47
|
+
maxWidth: "512px",
|
|
48
|
+
shadow: "tableShadow",
|
|
49
|
+
borderColor: "neutral150",
|
|
50
|
+
background: "neutral0",
|
|
51
|
+
hasRadius: true,
|
|
52
|
+
children: [
|
|
53
|
+
/*#__PURE__*/ jsxRuntime.jsxs(designSystem.Flex, {
|
|
54
|
+
direction: "column",
|
|
55
|
+
gap: 2,
|
|
56
|
+
children: [
|
|
57
|
+
/*#__PURE__*/ jsxRuntime.jsx(icons.Clock, {
|
|
58
|
+
width: "32px",
|
|
59
|
+
height: "32px",
|
|
60
|
+
fill: "primary600"
|
|
61
|
+
}),
|
|
62
|
+
/*#__PURE__*/ jsxRuntime.jsx(designSystem.Typography, {
|
|
63
|
+
fontSize: 4,
|
|
64
|
+
fontWeight: "bold",
|
|
65
|
+
textAlign: "center",
|
|
66
|
+
children: formatMessage({
|
|
67
|
+
id: 'app.error.chunk.title',
|
|
68
|
+
defaultMessage: "This screen couldn't be loaded"
|
|
69
|
+
})
|
|
70
|
+
}),
|
|
71
|
+
/*#__PURE__*/ jsxRuntime.jsx(designSystem.Typography, {
|
|
72
|
+
variant: "omega",
|
|
73
|
+
textAlign: "center",
|
|
74
|
+
children: formatMessage({
|
|
75
|
+
id: 'app.error.chunk.message',
|
|
76
|
+
defaultMessage: 'The admin could not load a screen. This often happens when the server is starting or the connection was interrupted. Reload the page to try again. If you recently deployed, you may need a full refresh to load the latest version.'
|
|
77
|
+
})
|
|
78
|
+
})
|
|
79
|
+
]
|
|
80
|
+
}),
|
|
81
|
+
/*#__PURE__*/ jsxRuntime.jsxs(designSystem.Flex, {
|
|
82
|
+
gap: 4,
|
|
83
|
+
direction: "column",
|
|
84
|
+
width: "100%",
|
|
85
|
+
children: [
|
|
86
|
+
/*#__PURE__*/ jsxRuntime.jsx(designSystem.Button, {
|
|
87
|
+
onClick: ()=>window.location.reload(),
|
|
88
|
+
fullWidth: true,
|
|
89
|
+
children: formatMessage({
|
|
90
|
+
id: 'app.error.chunk.reload',
|
|
91
|
+
defaultMessage: 'Reload the page'
|
|
92
|
+
})
|
|
93
|
+
}),
|
|
94
|
+
/*#__PURE__*/ jsxRuntime.jsx(StyledAlert, {
|
|
95
|
+
onClose: ()=>{},
|
|
96
|
+
width: "100%",
|
|
97
|
+
closeLabel: "",
|
|
98
|
+
variant: "warning",
|
|
99
|
+
children: /*#__PURE__*/ jsxRuntime.jsx(ChunkErrorType, {
|
|
100
|
+
children: error.message
|
|
101
|
+
})
|
|
102
|
+
}),
|
|
103
|
+
/*#__PURE__*/ jsxRuntime.jsx(designSystem.Button, {
|
|
104
|
+
onClick: handleCopy,
|
|
105
|
+
variant: "tertiary",
|
|
106
|
+
startIcon: /*#__PURE__*/ jsxRuntime.jsx(icons.Duplicate, {}),
|
|
107
|
+
children: formatMessage({
|
|
108
|
+
id: 'app.error.copy',
|
|
109
|
+
defaultMessage: 'Copy to clipboard'
|
|
110
|
+
})
|
|
111
|
+
})
|
|
112
|
+
]
|
|
113
|
+
})
|
|
114
|
+
]
|
|
115
|
+
})
|
|
116
|
+
})
|
|
117
|
+
});
|
|
118
|
+
}
|
|
28
119
|
return /*#__PURE__*/ jsxRuntime.jsx(designSystem.Main, {
|
|
29
120
|
height: "100%",
|
|
30
121
|
children: /*#__PURE__*/ jsxRuntime.jsx(designSystem.Flex, {
|
|
@@ -99,7 +190,7 @@ ${error.stack}
|
|
|
99
190
|
})
|
|
100
191
|
}),
|
|
101
192
|
/*#__PURE__*/ jsxRuntime.jsx(designSystem.Button, {
|
|
102
|
-
onClick:
|
|
193
|
+
onClick: handleCopy,
|
|
103
194
|
variant: "tertiary",
|
|
104
195
|
startIcon: /*#__PURE__*/ jsxRuntime.jsx(icons.Duplicate, {}),
|
|
105
196
|
children: formatMessage({
|
|
@@ -129,6 +220,10 @@ const ErrorType = styled.styled(designSystem.Typography)`
|
|
|
129
220
|
word-break: break-all;
|
|
130
221
|
color: ${({ theme })=>theme.colors.danger600};
|
|
131
222
|
`;
|
|
223
|
+
const ChunkErrorType = styled.styled(designSystem.Typography)`
|
|
224
|
+
word-break: break-all;
|
|
225
|
+
color: ${({ theme })=>theme.colors.warning600};
|
|
226
|
+
`;
|
|
132
227
|
|
|
133
228
|
exports.ErrorElement = ErrorElement;
|
|
134
229
|
//# sourceMappingURL=ErrorElement.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ErrorElement.js","sources":["../../../../../admin/src/components/ErrorElement.tsx"],"sourcesContent":["import {\n Alert,\n Button,\n Flex,\n Main,\n Typography,\n Link,\n TypographyComponent,\n} from '@strapi/design-system';\nimport { Duplicate, WarningCircle } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\nimport { useRouteError } from 'react-router-dom';\nimport { styled } from 'styled-components';\n\nimport { RESPONSIVE_DEFAULT_SPACING } from '../constants/theme';\nimport { useClipboard } from '../hooks/useClipboard';\n\n/**\n * @description this stops the app from going white, and instead shows the error message.\n * But it could be improved for sure.\n */\nconst ErrorElement = () => {\n const error = useRouteError();\n const { formatMessage } = useIntl();\n const { copy } = useClipboard();\n\n if (error instanceof Error) {\n console.error(error);\n\n const handleClick = async () => {\n await copy(`\n\\`\\`\\`\n${error.stack}\n\\`\\`\\`\n `);\n };\n\n return (\n <Main height=\"100%\">\n <Flex\n alignItems=\"center\"\n height=\"100%\"\n justifyContent=\"center\"\n paddingLeft={RESPONSIVE_DEFAULT_SPACING}\n paddingRight={RESPONSIVE_DEFAULT_SPACING}\n >\n <Flex\n gap={7}\n padding={{\n initial: 6,\n small: 7,\n medium: 8,\n }}\n direction=\"column\"\n width=\"100%\"\n maxWidth=\"512px\"\n shadow=\"tableShadow\"\n borderColor=\"neutral150\"\n background=\"neutral0\"\n hasRadius\n >\n <Flex direction=\"column\" gap={2}>\n <WarningCircle width=\"32px\" height=\"32px\" fill=\"danger600\" />\n <Typography fontSize={4} fontWeight=\"bold\" textAlign=\"center\">\n {formatMessage({\n id: 'app.error',\n defaultMessage: 'Something went wrong',\n })}\n </Typography>\n <Typography variant=\"omega\" textAlign=\"center\">\n {formatMessage(\n {\n id: 'app.error.message',\n defaultMessage: `It seems like there is a bug in your instance, but we've got you covered. Please notify your technical team so they can investigate the source of the problem and report the issue to us by opening a bug report on {link}.`,\n },\n {\n link: (\n <Link\n isExternal\n // hack to get rid of the current endIcon, which should be removable by using `null`.\n endIcon\n href=\"https://github.com/strapi/strapi/issues/new?assignees=&labels=&projects=&template=BUG_REPORT.md\"\n >{`Strapi's GitHub`}</Link>\n ),\n }\n )}\n </Typography>\n </Flex>\n {/* the Alert component needs to make its close button optional as well as the icon. */}\n <Flex gap={4} direction=\"column\" width=\"100%\">\n <StyledAlert onClose={() => {}} width=\"100%\" closeLabel=\"\" variant=\"danger\">\n <ErrorType>{error.message}</ErrorType>\n </StyledAlert>\n <Button onClick={handleClick} variant=\"tertiary\" startIcon={<Duplicate />}>\n {formatMessage({\n id: 'app.error.copy',\n defaultMessage: 'Copy to clipboard',\n })}\n </Button>\n </Flex>\n </Flex>\n </Flex>\n </Main>\n );\n }\n\n throw error;\n};\n\nconst StyledAlert = styled(Alert)`\n & > div:first-child {\n display: none;\n }\n\n & > button {\n display: none;\n }\n`;\n\nconst ErrorType = styled<TypographyComponent>(Typography)`\n word-break: break-all;\n color: ${({ theme }) => theme.colors.danger600};\n`;\n\nexport { ErrorElement };\n"],"names":["ErrorElement","error","useRouteError","formatMessage","useIntl","copy","useClipboard","Error","console","handleClick","stack","_jsx","Main","height","Flex","alignItems","justifyContent","paddingLeft","RESPONSIVE_DEFAULT_SPACING","paddingRight","_jsxs","gap","padding","initial","small","medium","direction","width","maxWidth","shadow","borderColor","background","hasRadius","WarningCircle","fill","Typography","fontSize","fontWeight","textAlign","id","defaultMessage","variant","link","Link","isExternal","endIcon","href","StyledAlert","onClose","closeLabel","ErrorType","message","Button","onClick","startIcon","Duplicate","styled","Alert","theme","colors","danger600"],"mappings":";;;;;;;;;;;AAiBA;;;AAGC,UACKA,YAAAA,GAAe,IAAA;AACnB,IAAA,MAAMC,KAAAA,GAAQC,4BAAAA,EAAAA;IACd,MAAM,EAAEC,aAAa,EAAE,GAAGC,iBAAAA,EAAAA;IAC1B,MAAM,EAAEC,IAAI,EAAE,GAAGC,yBAAAA,EAAAA;AAEjB,IAAA,IAAIL,iBAAiBM,KAAAA,EAAO;AAC1BC,QAAAA,OAAAA,CAAQP,KAAK,CAACA,KAAAA,CAAAA;AAEd,QAAA,MAAMQ,WAAAA,GAAc,UAAA;AAClB,YAAA,MAAMJ,KAAK;;AAEjB,EAAEJ,KAAAA,CAAMS,KAAK;;MAEP,CAAC,CAAA;AACH,QAAA,CAAA;AAEA,QAAA,qBACEC,cAAA,CAACC,iBAAAA,EAAAA;YAAKC,MAAAA,EAAO,MAAA;AACX,YAAA,QAAA,gBAAAF,cAAA,CAACG,iBAAAA,EAAAA;gBACCC,UAAAA,EAAW,QAAA;gBACXF,MAAAA,EAAO,MAAA;gBACPG,cAAAA,EAAe,QAAA;gBACfC,WAAAA,EAAaC,gCAAAA;gBACbC,YAAAA,EAAcD,gCAAAA;AAEd,gBAAA,QAAA,gBAAAE,eAAA,CAACN,iBAAAA,EAAAA;oBACCO,GAAAA,EAAK,CAAA;oBACLC,OAAAA,EAAS;wBACPC,OAAAA,EAAS,CAAA;wBACTC,KAAAA,EAAO,CAAA;wBACPC,MAAAA,EAAQ;AACV,qBAAA;oBACAC,SAAAA,EAAU,QAAA;oBACVC,KAAAA,EAAM,MAAA;oBACNC,QAAAA,EAAS,OAAA;oBACTC,MAAAA,EAAO,aAAA;oBACPC,WAAAA,EAAY,YAAA;oBACZC,UAAAA,EAAW,UAAA;oBACXC,SAAS,EAAA,IAAA;;sCAETZ,eAAA,CAACN,iBAAAA,EAAAA;4BAAKY,SAAAA,EAAU,QAAA;4BAASL,GAAAA,EAAK,CAAA;;8CAC5BV,cAAA,CAACsB,mBAAAA,EAAAA;oCAAcN,KAAAA,EAAM,MAAA;oCAAOd,MAAAA,EAAO,MAAA;oCAAOqB,IAAAA,EAAK;;8CAC/CvB,cAAA,CAACwB,uBAAAA,EAAAA;oCAAWC,QAAAA,EAAU,CAAA;oCAAGC,UAAAA,EAAW,MAAA;oCAAOC,SAAAA,EAAU,QAAA;8CAClDnC,aAAAA,CAAc;wCACboC,EAAAA,EAAI,WAAA;wCACJC,cAAAA,EAAgB;AAClB,qCAAA;;8CAEF7B,cAAA,CAACwB,uBAAAA,EAAAA;oCAAWM,OAAAA,EAAQ,OAAA;oCAAQH,SAAAA,EAAU,QAAA;8CACnCnC,aAAAA,CACC;wCACEoC,EAAAA,EAAI,mBAAA;wCACJC,cAAAA,EAAgB,CAAC,2NAA2N;qCAC9O,EACA;AACEE,wCAAAA,IAAAA,gBACE/B,cAAA,CAACgC,iBAAAA,EAAAA;4CACCC,UAAU,EAAA,IAAA;;4CAEVC,OAAO,EAAA,IAAA;4CACPC,IAAAA,EAAK,iGAAA;AACL,4CAAA,QAAA,EAAA,CAAC,eAAe;;AAEtB,qCAAA;;;;sCAKN1B,eAAA,CAACN,iBAAAA,EAAAA;4BAAKO,GAAAA,EAAK,CAAA;4BAAGK,SAAAA,EAAU,QAAA;4BAASC,KAAAA,EAAM,MAAA;;8CACrChB,cAAA,CAACoC,WAAAA,EAAAA;AAAYC,oCAAAA,OAAAA,EAAS,IAAA,CAAO,CAAA;oCAAGrB,KAAAA,EAAM,MAAA;oCAAOsB,UAAAA,EAAW,EAAA;oCAAGR,OAAAA,EAAQ,QAAA;AACjE,oCAAA,QAAA,gBAAA9B,cAAA,CAACuC,SAAAA,EAAAA;AAAWjD,wCAAAA,QAAAA,EAAAA,KAAAA,CAAMkD;;;8CAEpBxC,cAAA,CAACyC,mBAAAA,EAAAA;oCAAOC,OAAAA,EAAS5C,WAAAA;oCAAagC,OAAAA,EAAQ,UAAA;AAAWa,oCAAAA,SAAAA,gBAAW3C,cAAA,CAAC4C,eAAAA,EAAAA,EAAAA,CAAAA;8CAC1DpD,aAAAA,CAAc;wCACboC,EAAAA,EAAI,gBAAA;wCACJC,cAAAA,EAAgB;AAClB,qCAAA;;;;;;;;AAOd,IAAA;IAEA,MAAMvC,KAAAA;AACR;AAEA,MAAM8C,WAAAA,GAAcS,aAAAA,CAAOC,kBAAAA,CAAM;;;;;;;;AAQjC,CAAC;AAED,MAAMP,SAAAA,GAAYM,aAAAA,CAA4BrB,uBAAAA,CAAW;;SAEhD,EAAE,CAAC,EAAEuB,KAAK,EAAE,GAAKA,KAAAA,CAAMC,MAAM,CAACC,SAAS,CAAC;AACjD,CAAC;;;;"}
|
|
1
|
+
{"version":3,"file":"ErrorElement.js","sources":["../../../../../admin/src/components/ErrorElement.tsx"],"sourcesContent":["import {\n Alert,\n Button,\n Flex,\n Main,\n Typography,\n Link,\n TypographyComponent,\n} from '@strapi/design-system';\nimport { Clock, Duplicate, WarningCircle } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\nimport { useRouteError } from 'react-router-dom';\nimport { styled } from 'styled-components';\n\nimport { RESPONSIVE_DEFAULT_SPACING } from '../constants/theme';\nimport { useClipboard } from '../hooks/useClipboard';\nimport { isChunkLoadError } from '../utils/retryDynamicImport';\n\n/**\n * @description this stops the app from going white, and instead shows the error message.\n * But it could be improved for sure.\n */\nconst ErrorElement = () => {\n const error = useRouteError();\n const { formatMessage } = useIntl();\n const { copy } = useClipboard();\n\n if (error instanceof Error) {\n console.error(error);\n\n const handleCopy = async () => {\n await copy(`\n\\`\\`\\`\n${error.stack}\n\\`\\`\\`\n `);\n };\n\n if (isChunkLoadError(error)) {\n return (\n <Main height=\"100%\">\n <Flex\n alignItems=\"center\"\n height=\"100%\"\n justifyContent=\"center\"\n paddingLeft={RESPONSIVE_DEFAULT_SPACING}\n paddingRight={RESPONSIVE_DEFAULT_SPACING}\n >\n <Flex\n gap={7}\n padding={{\n initial: 6,\n small: 7,\n medium: 8,\n }}\n direction=\"column\"\n width=\"100%\"\n maxWidth=\"512px\"\n shadow=\"tableShadow\"\n borderColor=\"neutral150\"\n background=\"neutral0\"\n hasRadius\n >\n <Flex direction=\"column\" gap={2}>\n <Clock width=\"32px\" height=\"32px\" fill=\"primary600\" />\n <Typography fontSize={4} fontWeight=\"bold\" textAlign=\"center\">\n {formatMessage({\n id: 'app.error.chunk.title',\n defaultMessage: \"This screen couldn't be loaded\",\n })}\n </Typography>\n <Typography variant=\"omega\" textAlign=\"center\">\n {formatMessage({\n id: 'app.error.chunk.message',\n defaultMessage:\n 'The admin could not load a screen. This often happens when the server is starting or the connection was interrupted. Reload the page to try again. If you recently deployed, you may need a full refresh to load the latest version.',\n })}\n </Typography>\n </Flex>\n <Flex gap={4} direction=\"column\" width=\"100%\">\n <Button onClick={() => window.location.reload()} fullWidth>\n {formatMessage({\n id: 'app.error.chunk.reload',\n defaultMessage: 'Reload the page',\n })}\n </Button>\n <StyledAlert onClose={() => {}} width=\"100%\" closeLabel=\"\" variant=\"warning\">\n <ChunkErrorType>{error.message}</ChunkErrorType>\n </StyledAlert>\n <Button onClick={handleCopy} variant=\"tertiary\" startIcon={<Duplicate />}>\n {formatMessage({\n id: 'app.error.copy',\n defaultMessage: 'Copy to clipboard',\n })}\n </Button>\n </Flex>\n </Flex>\n </Flex>\n </Main>\n );\n }\n\n return (\n <Main height=\"100%\">\n <Flex\n alignItems=\"center\"\n height=\"100%\"\n justifyContent=\"center\"\n paddingLeft={RESPONSIVE_DEFAULT_SPACING}\n paddingRight={RESPONSIVE_DEFAULT_SPACING}\n >\n <Flex\n gap={7}\n padding={{\n initial: 6,\n small: 7,\n medium: 8,\n }}\n direction=\"column\"\n width=\"100%\"\n maxWidth=\"512px\"\n shadow=\"tableShadow\"\n borderColor=\"neutral150\"\n background=\"neutral0\"\n hasRadius\n >\n <Flex direction=\"column\" gap={2}>\n <WarningCircle width=\"32px\" height=\"32px\" fill=\"danger600\" />\n <Typography fontSize={4} fontWeight=\"bold\" textAlign=\"center\">\n {formatMessage({\n id: 'app.error',\n defaultMessage: 'Something went wrong',\n })}\n </Typography>\n <Typography variant=\"omega\" textAlign=\"center\">\n {formatMessage(\n {\n id: 'app.error.message',\n defaultMessage: `It seems like there is a bug in your instance, but we've got you covered. Please notify your technical team so they can investigate the source of the problem and report the issue to us by opening a bug report on {link}.`,\n },\n {\n link: (\n <Link\n isExternal\n // hack to get rid of the current endIcon, which should be removable by using `null`.\n endIcon\n href=\"https://github.com/strapi/strapi/issues/new?assignees=&labels=&projects=&template=BUG_REPORT.md\"\n >{`Strapi's GitHub`}</Link>\n ),\n }\n )}\n </Typography>\n </Flex>\n {/* the Alert component needs to make its close button optional as well as the icon. */}\n <Flex gap={4} direction=\"column\" width=\"100%\">\n <StyledAlert onClose={() => {}} width=\"100%\" closeLabel=\"\" variant=\"danger\">\n <ErrorType>{error.message}</ErrorType>\n </StyledAlert>\n <Button onClick={handleCopy} variant=\"tertiary\" startIcon={<Duplicate />}>\n {formatMessage({\n id: 'app.error.copy',\n defaultMessage: 'Copy to clipboard',\n })}\n </Button>\n </Flex>\n </Flex>\n </Flex>\n </Main>\n );\n }\n\n throw error;\n};\n\nconst StyledAlert = styled(Alert)`\n & > div:first-child {\n display: none;\n }\n\n & > button {\n display: none;\n }\n`;\n\nconst ErrorType = styled<TypographyComponent>(Typography)`\n word-break: break-all;\n color: ${({ theme }) => theme.colors.danger600};\n`;\n\nconst ChunkErrorType = styled<TypographyComponent>(Typography)`\n word-break: break-all;\n color: ${({ theme }) => theme.colors.warning600};\n`;\n\nexport { ErrorElement };\n"],"names":["ErrorElement","error","useRouteError","formatMessage","useIntl","copy","useClipboard","Error","console","handleCopy","stack","isChunkLoadError","_jsx","Main","height","Flex","alignItems","justifyContent","paddingLeft","RESPONSIVE_DEFAULT_SPACING","paddingRight","_jsxs","gap","padding","initial","small","medium","direction","width","maxWidth","shadow","borderColor","background","hasRadius","Clock","fill","Typography","fontSize","fontWeight","textAlign","id","defaultMessage","variant","Button","onClick","window","location","reload","fullWidth","StyledAlert","onClose","closeLabel","ChunkErrorType","message","startIcon","Duplicate","WarningCircle","link","Link","isExternal","endIcon","href","ErrorType","styled","Alert","theme","colors","danger600","warning600"],"mappings":"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"}
|
|
@@ -1,11 +1,12 @@
|
|
|
1
1
|
import { jsx, jsxs } from 'react/jsx-runtime';
|
|
2
|
-
import { Alert, Typography, Main, Flex,
|
|
3
|
-
import {
|
|
2
|
+
import { Alert, Typography, Main, Flex, Button, Link } from '@strapi/design-system';
|
|
3
|
+
import { Clock, Duplicate, WarningCircle } from '@strapi/icons';
|
|
4
4
|
import { useIntl } from 'react-intl';
|
|
5
5
|
import { useRouteError } from 'react-router-dom';
|
|
6
6
|
import { styled } from 'styled-components';
|
|
7
7
|
import { RESPONSIVE_DEFAULT_SPACING } from '../constants/theme.mjs';
|
|
8
8
|
import { useClipboard } from '../hooks/useClipboard.mjs';
|
|
9
|
+
import { isChunkLoadError } from '../utils/retryDynamicImport.mjs';
|
|
9
10
|
|
|
10
11
|
/**
|
|
11
12
|
* @description this stops the app from going white, and instead shows the error message.
|
|
@@ -16,13 +17,103 @@ import { useClipboard } from '../hooks/useClipboard.mjs';
|
|
|
16
17
|
const { copy } = useClipboard();
|
|
17
18
|
if (error instanceof Error) {
|
|
18
19
|
console.error(error);
|
|
19
|
-
const
|
|
20
|
+
const handleCopy = async ()=>{
|
|
20
21
|
await copy(`
|
|
21
22
|
\`\`\`
|
|
22
23
|
${error.stack}
|
|
23
24
|
\`\`\`
|
|
24
25
|
`);
|
|
25
26
|
};
|
|
27
|
+
if (isChunkLoadError(error)) {
|
|
28
|
+
return /*#__PURE__*/ jsx(Main, {
|
|
29
|
+
height: "100%",
|
|
30
|
+
children: /*#__PURE__*/ jsx(Flex, {
|
|
31
|
+
alignItems: "center",
|
|
32
|
+
height: "100%",
|
|
33
|
+
justifyContent: "center",
|
|
34
|
+
paddingLeft: RESPONSIVE_DEFAULT_SPACING,
|
|
35
|
+
paddingRight: RESPONSIVE_DEFAULT_SPACING,
|
|
36
|
+
children: /*#__PURE__*/ jsxs(Flex, {
|
|
37
|
+
gap: 7,
|
|
38
|
+
padding: {
|
|
39
|
+
initial: 6,
|
|
40
|
+
small: 7,
|
|
41
|
+
medium: 8
|
|
42
|
+
},
|
|
43
|
+
direction: "column",
|
|
44
|
+
width: "100%",
|
|
45
|
+
maxWidth: "512px",
|
|
46
|
+
shadow: "tableShadow",
|
|
47
|
+
borderColor: "neutral150",
|
|
48
|
+
background: "neutral0",
|
|
49
|
+
hasRadius: true,
|
|
50
|
+
children: [
|
|
51
|
+
/*#__PURE__*/ jsxs(Flex, {
|
|
52
|
+
direction: "column",
|
|
53
|
+
gap: 2,
|
|
54
|
+
children: [
|
|
55
|
+
/*#__PURE__*/ jsx(Clock, {
|
|
56
|
+
width: "32px",
|
|
57
|
+
height: "32px",
|
|
58
|
+
fill: "primary600"
|
|
59
|
+
}),
|
|
60
|
+
/*#__PURE__*/ jsx(Typography, {
|
|
61
|
+
fontSize: 4,
|
|
62
|
+
fontWeight: "bold",
|
|
63
|
+
textAlign: "center",
|
|
64
|
+
children: formatMessage({
|
|
65
|
+
id: 'app.error.chunk.title',
|
|
66
|
+
defaultMessage: "This screen couldn't be loaded"
|
|
67
|
+
})
|
|
68
|
+
}),
|
|
69
|
+
/*#__PURE__*/ jsx(Typography, {
|
|
70
|
+
variant: "omega",
|
|
71
|
+
textAlign: "center",
|
|
72
|
+
children: formatMessage({
|
|
73
|
+
id: 'app.error.chunk.message',
|
|
74
|
+
defaultMessage: 'The admin could not load a screen. This often happens when the server is starting or the connection was interrupted. Reload the page to try again. If you recently deployed, you may need a full refresh to load the latest version.'
|
|
75
|
+
})
|
|
76
|
+
})
|
|
77
|
+
]
|
|
78
|
+
}),
|
|
79
|
+
/*#__PURE__*/ jsxs(Flex, {
|
|
80
|
+
gap: 4,
|
|
81
|
+
direction: "column",
|
|
82
|
+
width: "100%",
|
|
83
|
+
children: [
|
|
84
|
+
/*#__PURE__*/ jsx(Button, {
|
|
85
|
+
onClick: ()=>window.location.reload(),
|
|
86
|
+
fullWidth: true,
|
|
87
|
+
children: formatMessage({
|
|
88
|
+
id: 'app.error.chunk.reload',
|
|
89
|
+
defaultMessage: 'Reload the page'
|
|
90
|
+
})
|
|
91
|
+
}),
|
|
92
|
+
/*#__PURE__*/ jsx(StyledAlert, {
|
|
93
|
+
onClose: ()=>{},
|
|
94
|
+
width: "100%",
|
|
95
|
+
closeLabel: "",
|
|
96
|
+
variant: "warning",
|
|
97
|
+
children: /*#__PURE__*/ jsx(ChunkErrorType, {
|
|
98
|
+
children: error.message
|
|
99
|
+
})
|
|
100
|
+
}),
|
|
101
|
+
/*#__PURE__*/ jsx(Button, {
|
|
102
|
+
onClick: handleCopy,
|
|
103
|
+
variant: "tertiary",
|
|
104
|
+
startIcon: /*#__PURE__*/ jsx(Duplicate, {}),
|
|
105
|
+
children: formatMessage({
|
|
106
|
+
id: 'app.error.copy',
|
|
107
|
+
defaultMessage: 'Copy to clipboard'
|
|
108
|
+
})
|
|
109
|
+
})
|
|
110
|
+
]
|
|
111
|
+
})
|
|
112
|
+
]
|
|
113
|
+
})
|
|
114
|
+
})
|
|
115
|
+
});
|
|
116
|
+
}
|
|
26
117
|
return /*#__PURE__*/ jsx(Main, {
|
|
27
118
|
height: "100%",
|
|
28
119
|
children: /*#__PURE__*/ jsx(Flex, {
|
|
@@ -97,7 +188,7 @@ ${error.stack}
|
|
|
97
188
|
})
|
|
98
189
|
}),
|
|
99
190
|
/*#__PURE__*/ jsx(Button, {
|
|
100
|
-
onClick:
|
|
191
|
+
onClick: handleCopy,
|
|
101
192
|
variant: "tertiary",
|
|
102
193
|
startIcon: /*#__PURE__*/ jsx(Duplicate, {}),
|
|
103
194
|
children: formatMessage({
|
|
@@ -127,6 +218,10 @@ const ErrorType = styled(Typography)`
|
|
|
127
218
|
word-break: break-all;
|
|
128
219
|
color: ${({ theme })=>theme.colors.danger600};
|
|
129
220
|
`;
|
|
221
|
+
const ChunkErrorType = styled(Typography)`
|
|
222
|
+
word-break: break-all;
|
|
223
|
+
color: ${({ theme })=>theme.colors.warning600};
|
|
224
|
+
`;
|
|
130
225
|
|
|
131
226
|
export { ErrorElement };
|
|
132
227
|
//# sourceMappingURL=ErrorElement.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ErrorElement.mjs","sources":["../../../../../admin/src/components/ErrorElement.tsx"],"sourcesContent":["import {\n Alert,\n Button,\n Flex,\n Main,\n Typography,\n Link,\n TypographyComponent,\n} from '@strapi/design-system';\nimport { Duplicate, WarningCircle } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\nimport { useRouteError } from 'react-router-dom';\nimport { styled } from 'styled-components';\n\nimport { RESPONSIVE_DEFAULT_SPACING } from '../constants/theme';\nimport { useClipboard } from '../hooks/useClipboard';\n\n/**\n * @description this stops the app from going white, and instead shows the error message.\n * But it could be improved for sure.\n */\nconst ErrorElement = () => {\n const error = useRouteError();\n const { formatMessage } = useIntl();\n const { copy } = useClipboard();\n\n if (error instanceof Error) {\n console.error(error);\n\n const handleClick = async () => {\n await copy(`\n\\`\\`\\`\n${error.stack}\n\\`\\`\\`\n `);\n };\n\n return (\n <Main height=\"100%\">\n <Flex\n alignItems=\"center\"\n height=\"100%\"\n justifyContent=\"center\"\n paddingLeft={RESPONSIVE_DEFAULT_SPACING}\n paddingRight={RESPONSIVE_DEFAULT_SPACING}\n >\n <Flex\n gap={7}\n padding={{\n initial: 6,\n small: 7,\n medium: 8,\n }}\n direction=\"column\"\n width=\"100%\"\n maxWidth=\"512px\"\n shadow=\"tableShadow\"\n borderColor=\"neutral150\"\n background=\"neutral0\"\n hasRadius\n >\n <Flex direction=\"column\" gap={2}>\n <WarningCircle width=\"32px\" height=\"32px\" fill=\"danger600\" />\n <Typography fontSize={4} fontWeight=\"bold\" textAlign=\"center\">\n {formatMessage({\n id: 'app.error',\n defaultMessage: 'Something went wrong',\n })}\n </Typography>\n <Typography variant=\"omega\" textAlign=\"center\">\n {formatMessage(\n {\n id: 'app.error.message',\n defaultMessage: `It seems like there is a bug in your instance, but we've got you covered. Please notify your technical team so they can investigate the source of the problem and report the issue to us by opening a bug report on {link}.`,\n },\n {\n link: (\n <Link\n isExternal\n // hack to get rid of the current endIcon, which should be removable by using `null`.\n endIcon\n href=\"https://github.com/strapi/strapi/issues/new?assignees=&labels=&projects=&template=BUG_REPORT.md\"\n >{`Strapi's GitHub`}</Link>\n ),\n }\n )}\n </Typography>\n </Flex>\n {/* the Alert component needs to make its close button optional as well as the icon. */}\n <Flex gap={4} direction=\"column\" width=\"100%\">\n <StyledAlert onClose={() => {}} width=\"100%\" closeLabel=\"\" variant=\"danger\">\n <ErrorType>{error.message}</ErrorType>\n </StyledAlert>\n <Button onClick={handleClick} variant=\"tertiary\" startIcon={<Duplicate />}>\n {formatMessage({\n id: 'app.error.copy',\n defaultMessage: 'Copy to clipboard',\n })}\n </Button>\n </Flex>\n </Flex>\n </Flex>\n </Main>\n );\n }\n\n throw error;\n};\n\nconst StyledAlert = styled(Alert)`\n & > div:first-child {\n display: none;\n }\n\n & > button {\n display: none;\n }\n`;\n\nconst ErrorType = styled<TypographyComponent>(Typography)`\n word-break: break-all;\n color: ${({ theme }) => theme.colors.danger600};\n`;\n\nexport { ErrorElement };\n"],"names":["ErrorElement","error","useRouteError","formatMessage","useIntl","copy","useClipboard","Error","console","handleClick","stack","_jsx","Main","height","Flex","alignItems","justifyContent","paddingLeft","RESPONSIVE_DEFAULT_SPACING","paddingRight","_jsxs","gap","padding","initial","small","medium","direction","width","maxWidth","shadow","borderColor","background","hasRadius","WarningCircle","fill","Typography","fontSize","fontWeight","textAlign","id","defaultMessage","variant","link","Link","isExternal","endIcon","href","StyledAlert","onClose","closeLabel","ErrorType","message","Button","onClick","startIcon","Duplicate","styled","Alert","theme","colors","danger600"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ErrorElement.mjs","sources":["../../../../../admin/src/components/ErrorElement.tsx"],"sourcesContent":["import {\n Alert,\n Button,\n Flex,\n Main,\n Typography,\n Link,\n TypographyComponent,\n} from '@strapi/design-system';\nimport { Clock, Duplicate, WarningCircle } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\nimport { useRouteError } from 'react-router-dom';\nimport { styled } from 'styled-components';\n\nimport { RESPONSIVE_DEFAULT_SPACING } from '../constants/theme';\nimport { useClipboard } from '../hooks/useClipboard';\nimport { isChunkLoadError } from '../utils/retryDynamicImport';\n\n/**\n * @description this stops the app from going white, and instead shows the error message.\n * But it could be improved for sure.\n */\nconst ErrorElement = () => {\n const error = useRouteError();\n const { formatMessage } = useIntl();\n const { copy } = useClipboard();\n\n if (error instanceof Error) {\n console.error(error);\n\n const handleCopy = async () => {\n await copy(`\n\\`\\`\\`\n${error.stack}\n\\`\\`\\`\n `);\n };\n\n if (isChunkLoadError(error)) {\n return (\n <Main height=\"100%\">\n <Flex\n alignItems=\"center\"\n height=\"100%\"\n justifyContent=\"center\"\n paddingLeft={RESPONSIVE_DEFAULT_SPACING}\n paddingRight={RESPONSIVE_DEFAULT_SPACING}\n >\n <Flex\n gap={7}\n padding={{\n initial: 6,\n small: 7,\n medium: 8,\n }}\n direction=\"column\"\n width=\"100%\"\n maxWidth=\"512px\"\n shadow=\"tableShadow\"\n borderColor=\"neutral150\"\n background=\"neutral0\"\n hasRadius\n >\n <Flex direction=\"column\" gap={2}>\n <Clock width=\"32px\" height=\"32px\" fill=\"primary600\" />\n <Typography fontSize={4} fontWeight=\"bold\" textAlign=\"center\">\n {formatMessage({\n id: 'app.error.chunk.title',\n defaultMessage: \"This screen couldn't be loaded\",\n })}\n </Typography>\n <Typography variant=\"omega\" textAlign=\"center\">\n {formatMessage({\n id: 'app.error.chunk.message',\n defaultMessage:\n 'The admin could not load a screen. This often happens when the server is starting or the connection was interrupted. Reload the page to try again. If you recently deployed, you may need a full refresh to load the latest version.',\n })}\n </Typography>\n </Flex>\n <Flex gap={4} direction=\"column\" width=\"100%\">\n <Button onClick={() => window.location.reload()} fullWidth>\n {formatMessage({\n id: 'app.error.chunk.reload',\n defaultMessage: 'Reload the page',\n })}\n </Button>\n <StyledAlert onClose={() => {}} width=\"100%\" closeLabel=\"\" variant=\"warning\">\n <ChunkErrorType>{error.message}</ChunkErrorType>\n </StyledAlert>\n <Button onClick={handleCopy} variant=\"tertiary\" startIcon={<Duplicate />}>\n {formatMessage({\n id: 'app.error.copy',\n defaultMessage: 'Copy to clipboard',\n })}\n </Button>\n </Flex>\n </Flex>\n </Flex>\n </Main>\n );\n }\n\n return (\n <Main height=\"100%\">\n <Flex\n alignItems=\"center\"\n height=\"100%\"\n justifyContent=\"center\"\n paddingLeft={RESPONSIVE_DEFAULT_SPACING}\n paddingRight={RESPONSIVE_DEFAULT_SPACING}\n >\n <Flex\n gap={7}\n padding={{\n initial: 6,\n small: 7,\n medium: 8,\n }}\n direction=\"column\"\n width=\"100%\"\n maxWidth=\"512px\"\n shadow=\"tableShadow\"\n borderColor=\"neutral150\"\n background=\"neutral0\"\n hasRadius\n >\n <Flex direction=\"column\" gap={2}>\n <WarningCircle width=\"32px\" height=\"32px\" fill=\"danger600\" />\n <Typography fontSize={4} fontWeight=\"bold\" textAlign=\"center\">\n {formatMessage({\n id: 'app.error',\n defaultMessage: 'Something went wrong',\n })}\n </Typography>\n <Typography variant=\"omega\" textAlign=\"center\">\n {formatMessage(\n {\n id: 'app.error.message',\n defaultMessage: `It seems like there is a bug in your instance, but we've got you covered. Please notify your technical team so they can investigate the source of the problem and report the issue to us by opening a bug report on {link}.`,\n },\n {\n link: (\n <Link\n isExternal\n // hack to get rid of the current endIcon, which should be removable by using `null`.\n endIcon\n href=\"https://github.com/strapi/strapi/issues/new?assignees=&labels=&projects=&template=BUG_REPORT.md\"\n >{`Strapi's GitHub`}</Link>\n ),\n }\n )}\n </Typography>\n </Flex>\n {/* the Alert component needs to make its close button optional as well as the icon. */}\n <Flex gap={4} direction=\"column\" width=\"100%\">\n <StyledAlert onClose={() => {}} width=\"100%\" closeLabel=\"\" variant=\"danger\">\n <ErrorType>{error.message}</ErrorType>\n </StyledAlert>\n <Button onClick={handleCopy} variant=\"tertiary\" startIcon={<Duplicate />}>\n {formatMessage({\n id: 'app.error.copy',\n defaultMessage: 'Copy to clipboard',\n })}\n </Button>\n </Flex>\n </Flex>\n </Flex>\n </Main>\n );\n }\n\n throw error;\n};\n\nconst StyledAlert = styled(Alert)`\n & > div:first-child {\n display: none;\n }\n\n & > button {\n display: none;\n }\n`;\n\nconst ErrorType = styled<TypographyComponent>(Typography)`\n word-break: break-all;\n color: ${({ theme }) => theme.colors.danger600};\n`;\n\nconst ChunkErrorType = styled<TypographyComponent>(Typography)`\n word-break: break-all;\n color: ${({ theme }) => theme.colors.warning600};\n`;\n\nexport { ErrorElement };\n"],"names":["ErrorElement","error","useRouteError","formatMessage","useIntl","copy","useClipboard","Error","console","handleCopy","stack","isChunkLoadError","_jsx","Main","height","Flex","alignItems","justifyContent","paddingLeft","RESPONSIVE_DEFAULT_SPACING","paddingRight","_jsxs","gap","padding","initial","small","medium","direction","width","maxWidth","shadow","borderColor","background","hasRadius","Clock","fill","Typography","fontSize","fontWeight","textAlign","id","defaultMessage","variant","Button","onClick","window","location","reload","fullWidth","StyledAlert","onClose","closeLabel","ChunkErrorType","message","startIcon","Duplicate","WarningCircle","link","Link","isExternal","endIcon","href","ErrorType","styled","Alert","theme","colors","danger600","warning600"],"mappings":"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"}
|
|
@@ -7,7 +7,7 @@ var reactIntl = require('react-intl');
|
|
|
7
7
|
var useFocusInputField = require('../../hooks/useFocusInputField.js');
|
|
8
8
|
var Form = require('../Form.js');
|
|
9
9
|
|
|
10
|
-
const BooleanInput = /*#__PURE__*/ React.forwardRef(({ name, required, label, hint, labelAction, ...props }, ref)=>{
|
|
10
|
+
const BooleanInput = /*#__PURE__*/ React.forwardRef(({ name, required, label, hint, labelAction, disabled, ...props }, ref)=>{
|
|
11
11
|
const { formatMessage } = reactIntl.useIntl();
|
|
12
12
|
const field = Form.useField(name);
|
|
13
13
|
const fieldRef = useFocusInputField.useFocusInputField(name);
|
|
@@ -15,7 +15,7 @@ const BooleanInput = /*#__PURE__*/ React.forwardRef(({ name, required, label, hi
|
|
|
15
15
|
const handleClear = ()=>{
|
|
16
16
|
field.onChange(name, null);
|
|
17
17
|
};
|
|
18
|
-
const showClearButton = !required && field.value !== null;
|
|
18
|
+
const showClearButton = !required && field.value !== null && !disabled;
|
|
19
19
|
return /*#__PURE__*/ jsxRuntime.jsxs(designSystem.Field.Root, {
|
|
20
20
|
error: field.error,
|
|
21
21
|
name: name,
|
|
@@ -54,6 +54,7 @@ const BooleanInput = /*#__PURE__*/ React.forwardRef(({ name, required, label, hi
|
|
|
54
54
|
}),
|
|
55
55
|
onChange: field.onChange,
|
|
56
56
|
name: name,
|
|
57
|
+
disabled: disabled,
|
|
57
58
|
...props
|
|
58
59
|
}),
|
|
59
60
|
/*#__PURE__*/ jsxRuntime.jsx(designSystem.Field.Hint, {}),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Boolean.js","sources":["../../../../../../admin/src/components/FormInputs/Boolean.tsx"],"sourcesContent":["import { forwardRef, memo } from 'react';\n\nimport { Toggle, useComposedRefs, Field, Flex, TextButton } from '@strapi/design-system';\nimport { useIntl } from 'react-intl';\n\nimport { useFocusInputField } from '../../hooks/useFocusInputField';\nimport { useField } from '../Form';\n\nimport { InputProps } from './types';\n\nconst BooleanInput = forwardRef<HTMLInputElement, InputProps>(\n ({ name, required, label, hint, labelAction, ...props }, ref) => {\n const { formatMessage } = useIntl();\n const field = useField<boolean | null>(name);\n const fieldRef = useFocusInputField<HTMLInputElement>(name);\n\n const composedRefs = useComposedRefs(ref, fieldRef);\n\n const handleClear = () => {\n field.onChange(name, null);\n };\n\n const showClearButton = !required && field.value !== null;\n\n return (\n <Field.Root error={field.error} name={name} hint={hint} required={required} maxWidth=\"320px\">\n <Flex justifyContent=\"space-between\" alignItems=\"flex-end\" gap={2}>\n <Field.Label action={labelAction}>{label}</Field.Label>\n {showClearButton && (\n <TextButton onClick={handleClear}>\n {formatMessage({ id: 'clearLabel', defaultMessage: 'Clear' })}\n </TextButton>\n )}\n </Flex>\n <Toggle\n ref={composedRefs}\n checked={field.value === null ? null : field.value || false}\n offLabel={formatMessage({\n id: 'app.components.ToggleCheckbox.off-label',\n defaultMessage: 'False',\n })}\n onLabel={formatMessage({\n id: 'app.components.ToggleCheckbox.on-label',\n defaultMessage: 'True',\n })}\n onChange={field.onChange}\n name={name}\n {...props}\n />\n <Field.Hint />\n <Field.Error />\n </Field.Root>\n );\n }\n);\n\nconst MemoizedBooleanInput = memo(BooleanInput);\n\nexport { MemoizedBooleanInput as BooleanInput };\n"],"names":["BooleanInput","forwardRef","name","required","label","hint","labelAction","props","ref","formatMessage","useIntl","field","useField","fieldRef","useFocusInputField","composedRefs","useComposedRefs","handleClear","onChange","showClearButton","value","_jsxs","Field","Root","error","maxWidth","Flex","justifyContent","alignItems","gap","_jsx","Label","action","TextButton","onClick","id","defaultMessage","Toggle","checked","offLabel","onLabel","Hint","Error","MemoizedBooleanInput","memo"],"mappings":";;;;;;;;;AAUA,MAAMA,6BAAeC,gBAAAA,CACnB,CAAC,EAAEC,IAAI,EAAEC,QAAQ,EAAEC,KAAK,EAAEC,IAAI,EAAEC,WAAW,EAAE,GAAGC,OAAO,EAAEC,GAAAA,GAAAA;
|
|
1
|
+
{"version":3,"file":"Boolean.js","sources":["../../../../../../admin/src/components/FormInputs/Boolean.tsx"],"sourcesContent":["import { forwardRef, memo } from 'react';\n\nimport { Toggle, useComposedRefs, Field, Flex, TextButton } from '@strapi/design-system';\nimport { useIntl } from 'react-intl';\n\nimport { useFocusInputField } from '../../hooks/useFocusInputField';\nimport { useField } from '../Form';\n\nimport { InputProps } from './types';\n\nconst BooleanInput = forwardRef<HTMLInputElement, InputProps>(\n ({ name, required, label, hint, labelAction, disabled, ...props }, ref) => {\n const { formatMessage } = useIntl();\n const field = useField<boolean | null>(name);\n const fieldRef = useFocusInputField<HTMLInputElement>(name);\n\n const composedRefs = useComposedRefs(ref, fieldRef);\n\n const handleClear = () => {\n field.onChange(name, null);\n };\n\n const showClearButton = !required && field.value !== null && !disabled;\n\n return (\n <Field.Root error={field.error} name={name} hint={hint} required={required} maxWidth=\"320px\">\n <Flex justifyContent=\"space-between\" alignItems=\"flex-end\" gap={2}>\n <Field.Label action={labelAction}>{label}</Field.Label>\n {showClearButton && (\n <TextButton onClick={handleClear}>\n {formatMessage({ id: 'clearLabel', defaultMessage: 'Clear' })}\n </TextButton>\n )}\n </Flex>\n <Toggle\n ref={composedRefs}\n checked={field.value === null ? null : field.value || false}\n offLabel={formatMessage({\n id: 'app.components.ToggleCheckbox.off-label',\n defaultMessage: 'False',\n })}\n onLabel={formatMessage({\n id: 'app.components.ToggleCheckbox.on-label',\n defaultMessage: 'True',\n })}\n onChange={field.onChange}\n name={name}\n disabled={disabled}\n {...props}\n />\n <Field.Hint />\n <Field.Error />\n </Field.Root>\n );\n }\n);\n\nconst MemoizedBooleanInput = memo(BooleanInput);\n\nexport { MemoizedBooleanInput as BooleanInput };\n"],"names":["BooleanInput","forwardRef","name","required","label","hint","labelAction","disabled","props","ref","formatMessage","useIntl","field","useField","fieldRef","useFocusInputField","composedRefs","useComposedRefs","handleClear","onChange","showClearButton","value","_jsxs","Field","Root","error","maxWidth","Flex","justifyContent","alignItems","gap","_jsx","Label","action","TextButton","onClick","id","defaultMessage","Toggle","checked","offLabel","onLabel","Hint","Error","MemoizedBooleanInput","memo"],"mappings":";;;;;;;;;AAUA,MAAMA,6BAAeC,gBAAAA,CACnB,CAAC,EAAEC,IAAI,EAAEC,QAAQ,EAAEC,KAAK,EAAEC,IAAI,EAAEC,WAAW,EAAEC,QAAQ,EAAE,GAAGC,OAAO,EAAEC,GAAAA,GAAAA;IACjE,MAAM,EAAEC,aAAa,EAAE,GAAGC,iBAAAA,EAAAA;AAC1B,IAAA,MAAMC,QAAQC,aAAAA,CAAyBX,IAAAA,CAAAA;AACvC,IAAA,MAAMY,WAAWC,qCAAAA,CAAqCb,IAAAA,CAAAA;IAEtD,MAAMc,YAAAA,GAAeC,6BAAgBR,GAAAA,EAAKK,QAAAA,CAAAA;AAE1C,IAAA,MAAMI,WAAAA,GAAc,IAAA;QAClBN,KAAAA,CAAMO,QAAQ,CAACjB,IAAAA,EAAM,IAAA,CAAA;AACvB,IAAA,CAAA;AAEA,IAAA,MAAMkB,kBAAkB,CAACjB,QAAAA,IAAYS,MAAMS,KAAK,KAAK,QAAQ,CAACd,QAAAA;IAE9D,qBACEe,eAAA,CAACC,mBAAMC,IAAI,EAAA;AAACC,QAAAA,KAAAA,EAAOb,MAAMa,KAAK;QAAEvB,IAAAA,EAAMA,IAAAA;QAAMG,IAAAA,EAAMA,IAAAA;QAAMF,QAAAA,EAAUA,QAAAA;QAAUuB,QAAAA,EAAS,OAAA;;0BACnFJ,eAAA,CAACK,iBAAAA,EAAAA;gBAAKC,cAAAA,EAAe,eAAA;gBAAgBC,UAAAA,EAAW,UAAA;gBAAWC,GAAAA,EAAK,CAAA;;AAC9D,kCAAAC,cAAA,CAACR,mBAAMS,KAAK,EAAA;wBAACC,MAAAA,EAAQ3B,WAAAA;AAAcF,wBAAAA,QAAAA,EAAAA;;AAClCgB,oBAAAA,eAAAA,kBACCW,cAAA,CAACG,uBAAAA,EAAAA;wBAAWC,OAAAA,EAASjB,WAAAA;kCAClBR,aAAAA,CAAc;4BAAE0B,EAAAA,EAAI,YAAA;4BAAcC,cAAAA,EAAgB;AAAQ,yBAAA;;;;0BAIjEN,cAAA,CAACO,mBAAAA,EAAAA;gBACC7B,GAAAA,EAAKO,YAAAA;AACLuB,gBAAAA,OAAAA,EAAS3B,MAAMS,KAAK,KAAK,OAAO,IAAA,GAAOT,KAAAA,CAAMS,KAAK,IAAI,KAAA;AACtDmB,gBAAAA,QAAAA,EAAU9B,aAAAA,CAAc;oBACtB0B,EAAAA,EAAI,yCAAA;oBACJC,cAAAA,EAAgB;AAClB,iBAAA,CAAA;AACAI,gBAAAA,OAAAA,EAAS/B,aAAAA,CAAc;oBACrB0B,EAAAA,EAAI,wCAAA;oBACJC,cAAAA,EAAgB;AAClB,iBAAA,CAAA;AACAlB,gBAAAA,QAAAA,EAAUP,MAAMO,QAAQ;gBACxBjB,IAAAA,EAAMA,IAAAA;gBACNK,QAAAA,EAAUA,QAAAA;AACT,gBAAA,GAAGC;;AAEN,0BAAAuB,cAAA,CAACR,mBAAMmB,IAAI,EAAA,EAAA,CAAA;AACX,0BAAAX,cAAA,CAACR,mBAAMoB,KAAK,EAAA,EAAA;;;AAGlB,CAAA,CAAA;AAGF,MAAMC,qCAAuBC,UAAAA,CAAK7C,YAAAA;;;;"}
|
|
@@ -5,7 +5,7 @@ import { useIntl } from 'react-intl';
|
|
|
5
5
|
import { useFocusInputField } from '../../hooks/useFocusInputField.mjs';
|
|
6
6
|
import { useField } from '../Form.mjs';
|
|
7
7
|
|
|
8
|
-
const BooleanInput = /*#__PURE__*/ forwardRef(({ name, required, label, hint, labelAction, ...props }, ref)=>{
|
|
8
|
+
const BooleanInput = /*#__PURE__*/ forwardRef(({ name, required, label, hint, labelAction, disabled, ...props }, ref)=>{
|
|
9
9
|
const { formatMessage } = useIntl();
|
|
10
10
|
const field = useField(name);
|
|
11
11
|
const fieldRef = useFocusInputField(name);
|
|
@@ -13,7 +13,7 @@ const BooleanInput = /*#__PURE__*/ forwardRef(({ name, required, label, hint, la
|
|
|
13
13
|
const handleClear = ()=>{
|
|
14
14
|
field.onChange(name, null);
|
|
15
15
|
};
|
|
16
|
-
const showClearButton = !required && field.value !== null;
|
|
16
|
+
const showClearButton = !required && field.value !== null && !disabled;
|
|
17
17
|
return /*#__PURE__*/ jsxs(Field.Root, {
|
|
18
18
|
error: field.error,
|
|
19
19
|
name: name,
|
|
@@ -52,6 +52,7 @@ const BooleanInput = /*#__PURE__*/ forwardRef(({ name, required, label, hint, la
|
|
|
52
52
|
}),
|
|
53
53
|
onChange: field.onChange,
|
|
54
54
|
name: name,
|
|
55
|
+
disabled: disabled,
|
|
55
56
|
...props
|
|
56
57
|
}),
|
|
57
58
|
/*#__PURE__*/ jsx(Field.Hint, {}),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Boolean.mjs","sources":["../../../../../../admin/src/components/FormInputs/Boolean.tsx"],"sourcesContent":["import { forwardRef, memo } from 'react';\n\nimport { Toggle, useComposedRefs, Field, Flex, TextButton } from '@strapi/design-system';\nimport { useIntl } from 'react-intl';\n\nimport { useFocusInputField } from '../../hooks/useFocusInputField';\nimport { useField } from '../Form';\n\nimport { InputProps } from './types';\n\nconst BooleanInput = forwardRef<HTMLInputElement, InputProps>(\n ({ name, required, label, hint, labelAction, ...props }, ref) => {\n const { formatMessage } = useIntl();\n const field = useField<boolean | null>(name);\n const fieldRef = useFocusInputField<HTMLInputElement>(name);\n\n const composedRefs = useComposedRefs(ref, fieldRef);\n\n const handleClear = () => {\n field.onChange(name, null);\n };\n\n const showClearButton = !required && field.value !== null;\n\n return (\n <Field.Root error={field.error} name={name} hint={hint} required={required} maxWidth=\"320px\">\n <Flex justifyContent=\"space-between\" alignItems=\"flex-end\" gap={2}>\n <Field.Label action={labelAction}>{label}</Field.Label>\n {showClearButton && (\n <TextButton onClick={handleClear}>\n {formatMessage({ id: 'clearLabel', defaultMessage: 'Clear' })}\n </TextButton>\n )}\n </Flex>\n <Toggle\n ref={composedRefs}\n checked={field.value === null ? null : field.value || false}\n offLabel={formatMessage({\n id: 'app.components.ToggleCheckbox.off-label',\n defaultMessage: 'False',\n })}\n onLabel={formatMessage({\n id: 'app.components.ToggleCheckbox.on-label',\n defaultMessage: 'True',\n })}\n onChange={field.onChange}\n name={name}\n {...props}\n />\n <Field.Hint />\n <Field.Error />\n </Field.Root>\n );\n }\n);\n\nconst MemoizedBooleanInput = memo(BooleanInput);\n\nexport { MemoizedBooleanInput as BooleanInput };\n"],"names":["BooleanInput","forwardRef","name","required","label","hint","labelAction","props","ref","formatMessage","useIntl","field","useField","fieldRef","useFocusInputField","composedRefs","useComposedRefs","handleClear","onChange","showClearButton","value","_jsxs","Field","Root","error","maxWidth","Flex","justifyContent","alignItems","gap","_jsx","Label","action","TextButton","onClick","id","defaultMessage","Toggle","checked","offLabel","onLabel","Hint","Error","MemoizedBooleanInput","memo"],"mappings":";;;;;;;AAUA,MAAMA,6BAAeC,UAAAA,CACnB,CAAC,EAAEC,IAAI,EAAEC,QAAQ,EAAEC,KAAK,EAAEC,IAAI,EAAEC,WAAW,EAAE,GAAGC,OAAO,EAAEC,GAAAA,GAAAA;
|
|
1
|
+
{"version":3,"file":"Boolean.mjs","sources":["../../../../../../admin/src/components/FormInputs/Boolean.tsx"],"sourcesContent":["import { forwardRef, memo } from 'react';\n\nimport { Toggle, useComposedRefs, Field, Flex, TextButton } from '@strapi/design-system';\nimport { useIntl } from 'react-intl';\n\nimport { useFocusInputField } from '../../hooks/useFocusInputField';\nimport { useField } from '../Form';\n\nimport { InputProps } from './types';\n\nconst BooleanInput = forwardRef<HTMLInputElement, InputProps>(\n ({ name, required, label, hint, labelAction, disabled, ...props }, ref) => {\n const { formatMessage } = useIntl();\n const field = useField<boolean | null>(name);\n const fieldRef = useFocusInputField<HTMLInputElement>(name);\n\n const composedRefs = useComposedRefs(ref, fieldRef);\n\n const handleClear = () => {\n field.onChange(name, null);\n };\n\n const showClearButton = !required && field.value !== null && !disabled;\n\n return (\n <Field.Root error={field.error} name={name} hint={hint} required={required} maxWidth=\"320px\">\n <Flex justifyContent=\"space-between\" alignItems=\"flex-end\" gap={2}>\n <Field.Label action={labelAction}>{label}</Field.Label>\n {showClearButton && (\n <TextButton onClick={handleClear}>\n {formatMessage({ id: 'clearLabel', defaultMessage: 'Clear' })}\n </TextButton>\n )}\n </Flex>\n <Toggle\n ref={composedRefs}\n checked={field.value === null ? null : field.value || false}\n offLabel={formatMessage({\n id: 'app.components.ToggleCheckbox.off-label',\n defaultMessage: 'False',\n })}\n onLabel={formatMessage({\n id: 'app.components.ToggleCheckbox.on-label',\n defaultMessage: 'True',\n })}\n onChange={field.onChange}\n name={name}\n disabled={disabled}\n {...props}\n />\n <Field.Hint />\n <Field.Error />\n </Field.Root>\n );\n }\n);\n\nconst MemoizedBooleanInput = memo(BooleanInput);\n\nexport { MemoizedBooleanInput as BooleanInput };\n"],"names":["BooleanInput","forwardRef","name","required","label","hint","labelAction","disabled","props","ref","formatMessage","useIntl","field","useField","fieldRef","useFocusInputField","composedRefs","useComposedRefs","handleClear","onChange","showClearButton","value","_jsxs","Field","Root","error","maxWidth","Flex","justifyContent","alignItems","gap","_jsx","Label","action","TextButton","onClick","id","defaultMessage","Toggle","checked","offLabel","onLabel","Hint","Error","MemoizedBooleanInput","memo"],"mappings":";;;;;;;AAUA,MAAMA,6BAAeC,UAAAA,CACnB,CAAC,EAAEC,IAAI,EAAEC,QAAQ,EAAEC,KAAK,EAAEC,IAAI,EAAEC,WAAW,EAAEC,QAAQ,EAAE,GAAGC,OAAO,EAAEC,GAAAA,GAAAA;IACjE,MAAM,EAAEC,aAAa,EAAE,GAAGC,OAAAA,EAAAA;AAC1B,IAAA,MAAMC,QAAQC,QAAAA,CAAyBX,IAAAA,CAAAA;AACvC,IAAA,MAAMY,WAAWC,kBAAAA,CAAqCb,IAAAA,CAAAA;IAEtD,MAAMc,YAAAA,GAAeC,gBAAgBR,GAAAA,EAAKK,QAAAA,CAAAA;AAE1C,IAAA,MAAMI,WAAAA,GAAc,IAAA;QAClBN,KAAAA,CAAMO,QAAQ,CAACjB,IAAAA,EAAM,IAAA,CAAA;AACvB,IAAA,CAAA;AAEA,IAAA,MAAMkB,kBAAkB,CAACjB,QAAAA,IAAYS,MAAMS,KAAK,KAAK,QAAQ,CAACd,QAAAA;IAE9D,qBACEe,IAAA,CAACC,MAAMC,IAAI,EAAA;AAACC,QAAAA,KAAAA,EAAOb,MAAMa,KAAK;QAAEvB,IAAAA,EAAMA,IAAAA;QAAMG,IAAAA,EAAMA,IAAAA;QAAMF,QAAAA,EAAUA,QAAAA;QAAUuB,QAAAA,EAAS,OAAA;;0BACnFJ,IAAA,CAACK,IAAAA,EAAAA;gBAAKC,cAAAA,EAAe,eAAA;gBAAgBC,UAAAA,EAAW,UAAA;gBAAWC,GAAAA,EAAK,CAAA;;AAC9D,kCAAAC,GAAA,CAACR,MAAMS,KAAK,EAAA;wBAACC,MAAAA,EAAQ3B,WAAAA;AAAcF,wBAAAA,QAAAA,EAAAA;;AAClCgB,oBAAAA,eAAAA,kBACCW,GAAA,CAACG,UAAAA,EAAAA;wBAAWC,OAAAA,EAASjB,WAAAA;kCAClBR,aAAAA,CAAc;4BAAE0B,EAAAA,EAAI,YAAA;4BAAcC,cAAAA,EAAgB;AAAQ,yBAAA;;;;0BAIjEN,GAAA,CAACO,MAAAA,EAAAA;gBACC7B,GAAAA,EAAKO,YAAAA;AACLuB,gBAAAA,OAAAA,EAAS3B,MAAMS,KAAK,KAAK,OAAO,IAAA,GAAOT,KAAAA,CAAMS,KAAK,IAAI,KAAA;AACtDmB,gBAAAA,QAAAA,EAAU9B,aAAAA,CAAc;oBACtB0B,EAAAA,EAAI,yCAAA;oBACJC,cAAAA,EAAgB;AAClB,iBAAA,CAAA;AACAI,gBAAAA,OAAAA,EAAS/B,aAAAA,CAAc;oBACrB0B,EAAAA,EAAI,wCAAA;oBACJC,cAAAA,EAAgB;AAClB,iBAAA,CAAA;AACAlB,gBAAAA,QAAAA,EAAUP,MAAMO,QAAQ;gBACxBjB,IAAAA,EAAMA,IAAAA;gBACNK,QAAAA,EAAUA,QAAAA;AACT,gBAAA,GAAGC;;AAEN,0BAAAuB,GAAA,CAACR,MAAMmB,IAAI,EAAA,EAAA,CAAA;AACX,0BAAAX,GAAA,CAACR,MAAMoB,KAAK,EAAA,EAAA;;;AAGlB,CAAA,CAAA;AAGF,MAAMC,qCAAuBC,IAAAA,CAAK7C,YAAAA;;;;"}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var jsxRuntime = require('react/jsx-runtime');
|
|
4
|
+
var React = require('react');
|
|
5
|
+
var designSystem = require('@strapi/design-system');
|
|
6
|
+
var reactRouterDom = require('react-router-dom');
|
|
7
|
+
var PageHelpers = require('./PageHelpers.js');
|
|
8
|
+
|
|
9
|
+
function _interopNamespace(e) {
|
|
10
|
+
if (e && e.__esModule) return e;
|
|
11
|
+
var n = Object.create(null);
|
|
12
|
+
if (e) {
|
|
13
|
+
Object.keys(e).forEach(function (k) {
|
|
14
|
+
if (k !== 'default') {
|
|
15
|
+
var d = Object.getOwnPropertyDescriptor(e, k);
|
|
16
|
+
Object.defineProperty(n, k, d.get ? d : {
|
|
17
|
+
enumerable: true,
|
|
18
|
+
get: function () { return e[k]; }
|
|
19
|
+
});
|
|
20
|
+
}
|
|
21
|
+
});
|
|
22
|
+
}
|
|
23
|
+
n.default = e;
|
|
24
|
+
return Object.freeze(n);
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
var React__namespace = /*#__PURE__*/_interopNamespace(React);
|
|
28
|
+
|
|
29
|
+
const NestedLoading = ()=>/*#__PURE__*/ jsxRuntime.jsx(designSystem.Flex, {
|
|
30
|
+
alignItems: "center",
|
|
31
|
+
justifyContent: "center",
|
|
32
|
+
minHeight: "50vh",
|
|
33
|
+
padding: 8,
|
|
34
|
+
"aria-busy": true,
|
|
35
|
+
children: /*#__PURE__*/ jsxRuntime.jsx(designSystem.Loader, {
|
|
36
|
+
children: "Loading content."
|
|
37
|
+
})
|
|
38
|
+
});
|
|
39
|
+
/**
|
|
40
|
+
* Renders child routes with a visible loading state while lazy chunks load.
|
|
41
|
+
* Suspense fallbacks are suppressed during React Router transitions, so we also
|
|
42
|
+
* check `useNavigation().state` to replace stale outlet content while navigating.
|
|
43
|
+
*/ const LazyOutlet = ({ nested = false, suspenseOnly = false })=>{
|
|
44
|
+
const navigation = reactRouterDom.useNavigation();
|
|
45
|
+
const isNavigating = !suspenseOnly && navigation.state === 'loading';
|
|
46
|
+
const fallback = nested ? /*#__PURE__*/ jsxRuntime.jsx(NestedLoading, {}) : /*#__PURE__*/ jsxRuntime.jsx(PageHelpers.Page.Loading, {});
|
|
47
|
+
if (isNavigating) {
|
|
48
|
+
return fallback;
|
|
49
|
+
}
|
|
50
|
+
return /*#__PURE__*/ jsxRuntime.jsx(React__namespace.Suspense, {
|
|
51
|
+
fallback: fallback,
|
|
52
|
+
children: /*#__PURE__*/ jsxRuntime.jsx(reactRouterDom.Outlet, {})
|
|
53
|
+
});
|
|
54
|
+
};
|
|
55
|
+
|
|
56
|
+
exports.LazyOutlet = LazyOutlet;
|
|
57
|
+
//# sourceMappingURL=LazyOutlet.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"LazyOutlet.js","sources":["../../../../../admin/src/components/LazyOutlet.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { Flex, Loader } from '@strapi/design-system';\nimport { Outlet, useNavigation } from 'react-router-dom';\n\nimport { Page } from './PageHelpers';\n\ninterface LazyOutletProps {\n /**\n * Compact loader for nested layout content columns (e.g. Settings, Content Manager)\n * where the parent shell should stay visible.\n */\n nested?: boolean;\n /**\n * Parent outlets only use Suspense so nested layouts can own navigation loading UX\n * (side nav stays visible while a child chunk loads).\n */\n suspenseOnly?: boolean;\n}\n\nconst NestedLoading = () => (\n <Flex alignItems=\"center\" justifyContent=\"center\" minHeight=\"50vh\" padding={8} aria-busy>\n <Loader>Loading content.</Loader>\n </Flex>\n);\n\n/**\n * Renders child routes with a visible loading state while lazy chunks load.\n * Suspense fallbacks are suppressed during React Router transitions, so we also\n * check `useNavigation().state` to replace stale outlet content while navigating.\n */\nconst LazyOutlet = ({ nested = false, suspenseOnly = false }: LazyOutletProps) => {\n const navigation = useNavigation();\n const isNavigating = !suspenseOnly && navigation.state === 'loading';\n const fallback = nested ? <NestedLoading /> : <Page.Loading />;\n\n if (isNavigating) {\n return fallback;\n }\n\n return (\n <React.Suspense fallback={fallback}>\n <Outlet />\n </React.Suspense>\n );\n};\n\nexport { LazyOutlet };\nexport type { LazyOutletProps };\n"],"names":["NestedLoading","_jsx","Flex","alignItems","justifyContent","minHeight","padding","aria-busy","Loader","LazyOutlet","nested","suspenseOnly","navigation","useNavigation","isNavigating","state","fallback","Page","Loading","React","Suspense","Outlet"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAoBA,MAAMA,aAAAA,GAAgB,kBACpBC,cAAA,CAACC,iBAAAA,EAAAA;QAAKC,UAAAA,EAAW,QAAA;QAASC,cAAAA,EAAe,QAAA;QAASC,SAAAA,EAAU,MAAA;QAAOC,OAAAA,EAAS,CAAA;QAAGC,WAAS,EAAA,IAAA;AACtF,QAAA,QAAA,gBAAAN,cAAA,CAACO,mBAAAA,EAAAA;AAAO,YAAA,QAAA,EAAA;;;AAIZ;;;;IAKA,MAAMC,aAAa,CAAC,EAAEC,SAAS,KAAK,EAAEC,YAAAA,GAAe,KAAK,EAAmB,GAAA;AAC3E,IAAA,MAAMC,UAAAA,GAAaC,4BAAAA,EAAAA;AACnB,IAAA,MAAMC,YAAAA,GAAe,CAACH,YAAAA,IAAgBC,UAAAA,CAAWG,KAAK,KAAK,SAAA;AAC3D,IAAA,MAAMC,WAAWN,MAAAA,iBAAST,cAAA,CAACD,aAAAA,EAAAA,EAAAA,CAAAA,iBAAmBC,cAAA,CAACgB,iBAAKC,OAAO,EAAA,EAAA,CAAA;AAE3D,IAAA,IAAIJ,YAAAA,EAAc;QAChB,OAAOE,QAAAA;AACT,IAAA;IAEA,qBACEf,cAAA,CAACkB,iBAAMC,QAAQ,EAAA;QAACJ,QAAAA,EAAUA,QAAAA;AACxB,QAAA,QAAA,gBAAAf,cAAA,CAACoB,qBAAAA,EAAAA,EAAAA;;AAGP;;;;"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import { jsx } from 'react/jsx-runtime';
|
|
2
|
+
import * as React from 'react';
|
|
3
|
+
import { Flex, Loader } from '@strapi/design-system';
|
|
4
|
+
import { useNavigation, Outlet } from 'react-router-dom';
|
|
5
|
+
import { Page } from './PageHelpers.mjs';
|
|
6
|
+
|
|
7
|
+
const NestedLoading = ()=>/*#__PURE__*/ jsx(Flex, {
|
|
8
|
+
alignItems: "center",
|
|
9
|
+
justifyContent: "center",
|
|
10
|
+
minHeight: "50vh",
|
|
11
|
+
padding: 8,
|
|
12
|
+
"aria-busy": true,
|
|
13
|
+
children: /*#__PURE__*/ jsx(Loader, {
|
|
14
|
+
children: "Loading content."
|
|
15
|
+
})
|
|
16
|
+
});
|
|
17
|
+
/**
|
|
18
|
+
* Renders child routes with a visible loading state while lazy chunks load.
|
|
19
|
+
* Suspense fallbacks are suppressed during React Router transitions, so we also
|
|
20
|
+
* check `useNavigation().state` to replace stale outlet content while navigating.
|
|
21
|
+
*/ const LazyOutlet = ({ nested = false, suspenseOnly = false })=>{
|
|
22
|
+
const navigation = useNavigation();
|
|
23
|
+
const isNavigating = !suspenseOnly && navigation.state === 'loading';
|
|
24
|
+
const fallback = nested ? /*#__PURE__*/ jsx(NestedLoading, {}) : /*#__PURE__*/ jsx(Page.Loading, {});
|
|
25
|
+
if (isNavigating) {
|
|
26
|
+
return fallback;
|
|
27
|
+
}
|
|
28
|
+
return /*#__PURE__*/ jsx(React.Suspense, {
|
|
29
|
+
fallback: fallback,
|
|
30
|
+
children: /*#__PURE__*/ jsx(Outlet, {})
|
|
31
|
+
});
|
|
32
|
+
};
|
|
33
|
+
|
|
34
|
+
export { LazyOutlet };
|
|
35
|
+
//# sourceMappingURL=LazyOutlet.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"LazyOutlet.mjs","sources":["../../../../../admin/src/components/LazyOutlet.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { Flex, Loader } from '@strapi/design-system';\nimport { Outlet, useNavigation } from 'react-router-dom';\n\nimport { Page } from './PageHelpers';\n\ninterface LazyOutletProps {\n /**\n * Compact loader for nested layout content columns (e.g. Settings, Content Manager)\n * where the parent shell should stay visible.\n */\n nested?: boolean;\n /**\n * Parent outlets only use Suspense so nested layouts can own navigation loading UX\n * (side nav stays visible while a child chunk loads).\n */\n suspenseOnly?: boolean;\n}\n\nconst NestedLoading = () => (\n <Flex alignItems=\"center\" justifyContent=\"center\" minHeight=\"50vh\" padding={8} aria-busy>\n <Loader>Loading content.</Loader>\n </Flex>\n);\n\n/**\n * Renders child routes with a visible loading state while lazy chunks load.\n * Suspense fallbacks are suppressed during React Router transitions, so we also\n * check `useNavigation().state` to replace stale outlet content while navigating.\n */\nconst LazyOutlet = ({ nested = false, suspenseOnly = false }: LazyOutletProps) => {\n const navigation = useNavigation();\n const isNavigating = !suspenseOnly && navigation.state === 'loading';\n const fallback = nested ? <NestedLoading /> : <Page.Loading />;\n\n if (isNavigating) {\n return fallback;\n }\n\n return (\n <React.Suspense fallback={fallback}>\n <Outlet />\n </React.Suspense>\n );\n};\n\nexport { LazyOutlet };\nexport type { LazyOutletProps };\n"],"names":["NestedLoading","_jsx","Flex","alignItems","justifyContent","minHeight","padding","aria-busy","Loader","LazyOutlet","nested","suspenseOnly","navigation","useNavigation","isNavigating","state","fallback","Page","Loading","React","Suspense","Outlet"],"mappings":";;;;;;AAoBA,MAAMA,aAAAA,GAAgB,kBACpBC,GAAA,CAACC,IAAAA,EAAAA;QAAKC,UAAAA,EAAW,QAAA;QAASC,cAAAA,EAAe,QAAA;QAASC,SAAAA,EAAU,MAAA;QAAOC,OAAAA,EAAS,CAAA;QAAGC,WAAS,EAAA,IAAA;AACtF,QAAA,QAAA,gBAAAN,GAAA,CAACO,MAAAA,EAAAA;AAAO,YAAA,QAAA,EAAA;;;AAIZ;;;;IAKA,MAAMC,aAAa,CAAC,EAAEC,SAAS,KAAK,EAAEC,YAAAA,GAAe,KAAK,EAAmB,GAAA;AAC3E,IAAA,MAAMC,UAAAA,GAAaC,aAAAA,EAAAA;AACnB,IAAA,MAAMC,YAAAA,GAAe,CAACH,YAAAA,IAAgBC,UAAAA,CAAWG,KAAK,KAAK,SAAA;AAC3D,IAAA,MAAMC,WAAWN,MAAAA,iBAAST,GAAA,CAACD,aAAAA,EAAAA,EAAAA,CAAAA,iBAAmBC,GAAA,CAACgB,KAAKC,OAAO,EAAA,EAAA,CAAA;AAE3D,IAAA,IAAIJ,YAAAA,EAAc;QAChB,OAAOE,QAAAA;AACT,IAAA;IAEA,qBACEf,GAAA,CAACkB,MAAMC,QAAQ,EAAA;QAACJ,QAAAA,EAAUA,QAAAA;AACxB,QAAA,QAAA,gBAAAf,GAAA,CAACoB,MAAAA,EAAAA,EAAAA;;AAGP;;;;"}
|
|
@@ -56,6 +56,9 @@ const NavUser = ({ initials, showDisplayName = false, children, ...props })=>{
|
|
|
56
56
|
const redirection = '/me';
|
|
57
57
|
navigate(redirection);
|
|
58
58
|
};
|
|
59
|
+
const handleSessions = ()=>{
|
|
60
|
+
navigate('/me/sessions');
|
|
61
|
+
};
|
|
59
62
|
const handleLogout = ()=>{
|
|
60
63
|
const redirection = '/auth/login';
|
|
61
64
|
logout();
|
|
@@ -125,6 +128,13 @@ const NavUser = ({ initials, showDisplayName = false, children, ...props })=>{
|
|
|
125
128
|
defaultMessage: 'Profile settings'
|
|
126
129
|
})
|
|
127
130
|
}),
|
|
131
|
+
/*#__PURE__*/ jsxRuntime.jsx(designSystem.Menu.Item, {
|
|
132
|
+
onSelect: handleSessions,
|
|
133
|
+
children: formatMessage({
|
|
134
|
+
id: 'global.sessions.active-devices',
|
|
135
|
+
defaultMessage: 'Active devices'
|
|
136
|
+
})
|
|
137
|
+
}),
|
|
128
138
|
/*#__PURE__*/ jsxRuntime.jsx(designSystem.Menu.Item, {
|
|
129
139
|
variant: "danger",
|
|
130
140
|
onSelect: handleLogout,
|