@strapi/admin 5.26.0 → 5.28.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/DragLayer.js +67 -0
- package/dist/admin/admin/src/components/DragLayer.js.map +1 -0
- package/dist/admin/admin/src/components/DragLayer.mjs +64 -0
- package/dist/admin/admin/src/components/DragLayer.mjs.map +1 -0
- package/dist/admin/admin/src/components/ErrorElement.js +10 -3
- package/dist/admin/admin/src/components/ErrorElement.js.map +1 -1
- package/dist/admin/admin/src/components/ErrorElement.mjs +10 -3
- package/dist/admin/admin/src/components/ErrorElement.mjs.map +1 -1
- package/dist/admin/admin/src/components/GapDropZone.js +292 -0
- package/dist/admin/admin/src/components/GapDropZone.js.map +1 -0
- package/dist/admin/admin/src/components/GapDropZone.mjs +268 -0
- package/dist/admin/admin/src/components/GapDropZone.mjs.map +1 -0
- package/dist/admin/admin/src/components/GuidedTour/Context.js +15 -0
- package/dist/admin/admin/src/components/GuidedTour/Context.js.map +1 -1
- package/dist/admin/admin/src/components/GuidedTour/Context.mjs +15 -0
- package/dist/admin/admin/src/components/GuidedTour/Context.mjs.map +1 -1
- package/dist/admin/admin/src/components/GuidedTour/GuidedTourProvider.js +15 -0
- package/dist/admin/admin/src/components/GuidedTour/GuidedTourProvider.js.map +1 -0
- package/dist/admin/admin/src/components/GuidedTour/GuidedTourProvider.mjs +13 -0
- package/dist/admin/admin/src/components/GuidedTour/GuidedTourProvider.mjs.map +1 -0
- package/dist/admin/admin/src/components/GuidedTour/Overview.js +2 -1
- package/dist/admin/admin/src/components/GuidedTour/Overview.js.map +1 -1
- package/dist/admin/admin/src/components/GuidedTour/Overview.mjs +2 -1
- package/dist/admin/admin/src/components/GuidedTour/Overview.mjs.map +1 -1
- package/dist/admin/admin/src/components/GuidedTour/Steps/ContentTypeBuilderSteps.js +2 -2
- package/dist/admin/admin/src/components/GuidedTour/Steps/ContentTypeBuilderSteps.js.map +1 -1
- package/dist/admin/admin/src/components/GuidedTour/Steps/ContentTypeBuilderSteps.mjs +2 -2
- package/dist/admin/admin/src/components/GuidedTour/Steps/ContentTypeBuilderSteps.mjs.map +1 -1
- package/dist/admin/admin/src/components/GuidedTour/Tours.js +1 -1
- package/dist/admin/admin/src/components/GuidedTour/Tours.js.map +1 -1
- package/dist/admin/admin/src/components/GuidedTour/Tours.mjs +1 -1
- package/dist/admin/admin/src/components/GuidedTour/Tours.mjs.map +1 -1
- package/dist/admin/admin/src/components/Layouts/ActionLayout.js +3 -2
- package/dist/admin/admin/src/components/Layouts/ActionLayout.js.map +1 -1
- package/dist/admin/admin/src/components/Layouts/ActionLayout.mjs +3 -2
- package/dist/admin/admin/src/components/Layouts/ActionLayout.mjs.map +1 -1
- package/dist/admin/admin/src/components/Layouts/ContentLayout.js +3 -2
- package/dist/admin/admin/src/components/Layouts/ContentLayout.js.map +1 -1
- package/dist/admin/admin/src/components/Layouts/ContentLayout.mjs +3 -2
- package/dist/admin/admin/src/components/Layouts/ContentLayout.mjs.map +1 -1
- package/dist/admin/admin/src/components/Layouts/HeaderLayout.js +65 -32
- package/dist/admin/admin/src/components/Layouts/HeaderLayout.js.map +1 -1
- package/dist/admin/admin/src/components/Layouts/HeaderLayout.mjs +66 -33
- package/dist/admin/admin/src/components/Layouts/HeaderLayout.mjs.map +1 -1
- package/dist/admin/admin/src/components/Layouts/Layout.js +29 -6
- package/dist/admin/admin/src/components/Layouts/Layout.js.map +1 -1
- package/dist/admin/admin/src/components/Layouts/Layout.mjs +30 -7
- package/dist/admin/admin/src/components/Layouts/Layout.mjs.map +1 -1
- package/dist/admin/admin/src/components/LeftMenu.js +147 -92
- package/dist/admin/admin/src/components/LeftMenu.js.map +1 -1
- package/dist/admin/admin/src/components/LeftMenu.mjs +131 -95
- package/dist/admin/admin/src/components/LeftMenu.mjs.map +1 -1
- package/dist/admin/admin/src/components/MainNav/MainNav.js +20 -6
- package/dist/admin/admin/src/components/MainNav/MainNav.js.map +1 -1
- package/dist/admin/admin/src/components/MainNav/MainNav.mjs +20 -6
- package/dist/admin/admin/src/components/MainNav/MainNav.mjs.map +1 -1
- package/dist/admin/admin/src/components/MainNav/MainNavLinks.js +157 -0
- package/dist/admin/admin/src/components/MainNav/MainNavLinks.js.map +1 -0
- package/dist/admin/admin/src/components/MainNav/MainNavLinks.mjs +154 -0
- package/dist/admin/admin/src/components/MainNav/MainNavLinks.mjs.map +1 -0
- package/dist/admin/admin/src/components/MainNav/NavBurgerMenu.js +65 -0
- package/dist/admin/admin/src/components/MainNav/NavBurgerMenu.js.map +1 -0
- package/dist/admin/admin/src/components/MainNav/NavBurgerMenu.mjs +63 -0
- package/dist/admin/admin/src/components/MainNav/NavBurgerMenu.mjs.map +1 -0
- package/dist/admin/admin/src/components/MainNav/NavLink.js +2 -1
- package/dist/admin/admin/src/components/MainNav/NavLink.js.map +1 -1
- package/dist/admin/admin/src/components/MainNav/NavLink.mjs +2 -1
- package/dist/admin/admin/src/components/MainNav/NavLink.mjs.map +1 -1
- package/dist/admin/admin/src/components/MainNav/NavUser.js +39 -22
- package/dist/admin/admin/src/components/MainNav/NavUser.js.map +1 -1
- package/dist/admin/admin/src/components/MainNav/NavUser.mjs +39 -22
- package/dist/admin/admin/src/components/MainNav/NavUser.mjs.map +1 -1
- package/dist/admin/admin/src/components/MainNav/TrialCountdown.js +8 -1
- package/dist/admin/admin/src/components/MainNav/TrialCountdown.js.map +1 -1
- package/dist/admin/admin/src/components/MainNav/TrialCountdown.mjs +9 -2
- package/dist/admin/admin/src/components/MainNav/TrialCountdown.mjs.map +1 -1
- package/dist/admin/admin/src/components/NpsSurvey.js +159 -119
- package/dist/admin/admin/src/components/NpsSurvey.js.map +1 -1
- package/dist/admin/admin/src/components/NpsSurvey.mjs +160 -120
- package/dist/admin/admin/src/components/NpsSurvey.mjs.map +1 -1
- package/dist/admin/admin/src/components/PageHelpers.js +1 -1
- package/dist/admin/admin/src/components/PageHelpers.js.map +1 -1
- package/dist/admin/admin/src/components/PageHelpers.mjs +1 -1
- package/dist/admin/admin/src/components/PageHelpers.mjs.map +1 -1
- package/dist/admin/admin/src/components/Providers.js +2 -4
- package/dist/admin/admin/src/components/Providers.js.map +1 -1
- package/dist/admin/admin/src/components/Providers.mjs +2 -4
- package/dist/admin/admin/src/components/Providers.mjs.map +1 -1
- package/dist/admin/admin/src/components/ResizeIndicator.js +353 -0
- package/dist/admin/admin/src/components/ResizeIndicator.js.map +1 -0
- package/dist/admin/admin/src/components/ResizeIndicator.mjs +332 -0
- package/dist/admin/admin/src/components/ResizeIndicator.mjs.map +1 -0
- package/dist/admin/admin/src/components/SubNav.js +98 -33
- package/dist/admin/admin/src/components/SubNav.js.map +1 -1
- package/dist/admin/admin/src/components/SubNav.mjs +99 -34
- package/dist/admin/admin/src/components/SubNav.mjs.map +1 -1
- package/dist/admin/admin/src/components/UpsellBanner.js +3 -2
- package/dist/admin/admin/src/components/UpsellBanner.js.map +1 -1
- package/dist/admin/admin/src/components/UpsellBanner.mjs +3 -2
- package/dist/admin/admin/src/components/UpsellBanner.mjs.map +1 -1
- package/dist/admin/admin/src/components/WidgetRoot.js +216 -0
- package/dist/admin/admin/src/components/WidgetRoot.js.map +1 -0
- package/dist/admin/admin/src/components/WidgetRoot.mjs +195 -0
- package/dist/admin/admin/src/components/WidgetRoot.mjs.map +1 -0
- package/dist/admin/admin/src/constants/theme.js +12 -0
- package/dist/admin/admin/src/constants/theme.js.map +1 -0
- package/dist/admin/admin/src/constants/theme.mjs +9 -0
- package/dist/admin/admin/src/constants/theme.mjs.map +1 -0
- package/dist/admin/admin/src/features/Notifications.js +14 -7
- package/dist/admin/admin/src/features/Notifications.js.map +1 -1
- package/dist/admin/admin/src/features/Notifications.mjs +15 -8
- package/dist/admin/admin/src/features/Notifications.mjs.map +1 -1
- package/dist/admin/admin/src/features/Tracking.js +5 -1
- package/dist/admin/admin/src/features/Tracking.js.map +1 -1
- package/dist/admin/admin/src/features/Tracking.mjs +5 -1
- package/dist/admin/admin/src/features/Tracking.mjs.map +1 -1
- package/dist/admin/admin/src/features/Widgets.js +276 -0
- package/dist/admin/admin/src/features/Widgets.js.map +1 -0
- package/dist/admin/admin/src/features/Widgets.mjs +255 -0
- package/dist/admin/admin/src/features/Widgets.mjs.map +1 -0
- package/dist/admin/admin/src/hooks/useAPIErrorHandler.js +1 -1
- package/dist/admin/admin/src/hooks/useAPIErrorHandler.js.map +1 -1
- package/dist/admin/admin/src/hooks/useAPIErrorHandler.mjs +1 -1
- package/dist/admin/admin/src/hooks/useAPIErrorHandler.mjs.map +1 -1
- package/dist/admin/admin/src/hooks/useDeviceType.js +43 -0
- package/dist/admin/admin/src/hooks/useDeviceType.js.map +1 -0
- package/dist/admin/admin/src/hooks/useDeviceType.mjs +22 -0
- package/dist/admin/admin/src/hooks/useDeviceType.mjs.map +1 -0
- package/dist/admin/admin/src/hooks/useMediaQuery.js +70 -0
- package/dist/admin/admin/src/hooks/useMediaQuery.js.map +1 -0
- package/dist/admin/admin/src/hooks/useMediaQuery.mjs +46 -0
- package/dist/admin/admin/src/hooks/useMediaQuery.mjs.map +1 -0
- package/dist/admin/admin/src/hooks/useMenu.js +19 -0
- package/dist/admin/admin/src/hooks/useMenu.js.map +1 -1
- package/dist/admin/admin/src/hooks/useMenu.mjs +19 -0
- package/dist/admin/admin/src/hooks/useMenu.mjs.map +1 -1
- package/dist/admin/admin/src/layouts/AuthenticatedLayout.js +15 -2
- package/dist/admin/admin/src/layouts/AuthenticatedLayout.js.map +1 -1
- package/dist/admin/admin/src/layouts/AuthenticatedLayout.mjs +15 -2
- package/dist/admin/admin/src/layouts/AuthenticatedLayout.mjs.map +1 -1
- package/dist/admin/admin/src/layouts/UnauthenticatedLayout.js +11 -7
- package/dist/admin/admin/src/layouts/UnauthenticatedLayout.js.map +1 -1
- package/dist/admin/admin/src/layouts/UnauthenticatedLayout.mjs +11 -7
- package/dist/admin/admin/src/layouts/UnauthenticatedLayout.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Auth/components/Login.js +3 -0
- package/dist/admin/admin/src/pages/Auth/components/Login.js.map +1 -1
- package/dist/admin/admin/src/pages/Auth/components/Login.mjs +3 -0
- package/dist/admin/admin/src/pages/Auth/components/Login.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Home/HomePage.js +200 -130
- package/dist/admin/admin/src/pages/Home/HomePage.js.map +1 -1
- package/dist/admin/admin/src/pages/Home/HomePage.mjs +202 -132
- package/dist/admin/admin/src/pages/Home/HomePage.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Home/components/AddWidgetModal.js +189 -0
- package/dist/admin/admin/src/pages/Home/components/AddWidgetModal.js.map +1 -0
- package/dist/admin/admin/src/pages/Home/components/AddWidgetModal.mjs +168 -0
- package/dist/admin/admin/src/pages/Home/components/AddWidgetModal.mjs.map +1 -0
- package/dist/admin/admin/src/pages/ProfilePage.js +54 -51
- package/dist/admin/admin/src/pages/ProfilePage.js.map +1 -1
- package/dist/admin/admin/src/pages/ProfilePage.mjs +55 -52
- package/dist/admin/admin/src/pages/ProfilePage.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Settings/Layout.js +42 -6
- package/dist/admin/admin/src/pages/Settings/Layout.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/Layout.mjs +43 -7
- package/dist/admin/admin/src/pages/Settings/Layout.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Settings/components/SettingsNav.js +44 -32
- package/dist/admin/admin/src/pages/Settings/components/SettingsNav.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/components/SettingsNav.mjs +45 -33
- package/dist/admin/admin/src/pages/Settings/components/SettingsNav.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/ApplicationInfo/ApplicationInfoPage.js +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 +2 -2
- package/dist/admin/admin/src/pages/Settings/pages/ApplicationInfo/ApplicationInfoPage.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/InstalledPlugins.js +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 +2 -2
- package/dist/admin/admin/src/pages/Settings/pages/InstalledPlugins.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/PurchaseAuditLogs.js +4 -3
- package/dist/admin/admin/src/pages/Settings/pages/PurchaseAuditLogs.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/PurchaseAuditLogs.mjs +5 -4
- package/dist/admin/admin/src/pages/Settings/pages/PurchaseAuditLogs.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/PurchaseContentHistory.js +4 -3
- package/dist/admin/admin/src/pages/Settings/pages/PurchaseContentHistory.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/PurchaseContentHistory.mjs +5 -4
- package/dist/admin/admin/src/pages/Settings/pages/PurchaseContentHistory.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/PurchaseSingleSignOn.js +4 -3
- package/dist/admin/admin/src/pages/Settings/pages/PurchaseSingleSignOn.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/PurchaseSingleSignOn.mjs +5 -4
- package/dist/admin/admin/src/pages/Settings/pages/PurchaseSingleSignOn.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Roles/components/ContentTypeCollapses.js +36 -32
- 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 +36 -32
- package/dist/admin/admin/src/pages/Settings/pages/Roles/components/ContentTypeCollapses.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Webhooks/ListPage.js +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 +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Webhooks/ListPage.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/auth.js +13 -2
- package/dist/admin/admin/src/services/auth.js.map +1 -1
- package/dist/admin/admin/src/services/auth.mjs +12 -3
- package/dist/admin/admin/src/services/auth.mjs.map +1 -1
- package/dist/admin/admin/src/services/homepage.js +11 -4
- package/dist/admin/admin/src/services/homepage.js.map +1 -1
- package/dist/admin/admin/src/services/homepage.mjs +11 -4
- package/dist/admin/admin/src/services/homepage.mjs.map +1 -1
- package/dist/admin/admin/src/translations/en.json.js +7 -1
- package/dist/admin/admin/src/translations/en.json.js.map +1 -1
- package/dist/admin/admin/src/translations/en.json.mjs +7 -1
- package/dist/admin/admin/src/translations/en.json.mjs.map +1 -1
- package/dist/admin/admin/src/translations/uk.json.js +9 -9
- package/dist/admin/admin/src/translations/uk.json.mjs +9 -9
- package/dist/admin/admin/src/utils/resizeHandlers.js +109 -0
- package/dist/admin/admin/src/utils/resizeHandlers.js.map +1 -0
- package/dist/admin/admin/src/utils/resizeHandlers.mjs +100 -0
- package/dist/admin/admin/src/utils/resizeHandlers.mjs.map +1 -0
- package/dist/admin/admin/src/utils/widgetLayout.js +293 -0
- package/dist/admin/admin/src/utils/widgetLayout.js.map +1 -0
- package/dist/admin/admin/src/utils/widgetLayout.mjs +273 -0
- package/dist/admin/admin/src/utils/widgetLayout.mjs.map +1 -0
- package/dist/admin/ee/admin/src/pages/SettingsPage/pages/SingleSignOnPage.js +1 -1
- package/dist/admin/ee/admin/src/pages/SettingsPage/pages/SingleSignOnPage.js.map +1 -1
- package/dist/admin/ee/admin/src/pages/SettingsPage/pages/SingleSignOnPage.mjs +1 -1
- package/dist/admin/ee/admin/src/pages/SettingsPage/pages/SingleSignOnPage.mjs.map +1 -1
- package/dist/admin/ee/admin/src/services/ai.js +5 -2
- package/dist/admin/ee/admin/src/services/ai.js.map +1 -1
- package/dist/admin/ee/admin/src/services/ai.mjs +5 -2
- package/dist/admin/ee/admin/src/services/ai.mjs.map +1 -1
- package/dist/admin/index.js +11 -0
- package/dist/admin/index.js.map +1 -1
- package/dist/admin/index.mjs +4 -0
- package/dist/admin/index.mjs.map +1 -1
- package/dist/admin/src/components/DragLayer.d.ts +8 -4
- package/dist/admin/src/components/GapDropZone.d.ts +36 -0
- package/dist/admin/src/components/GuidedTour/Context.d.ts +4 -0
- package/dist/admin/src/components/GuidedTour/GuidedTourProvider.d.ts +6 -0
- package/dist/admin/src/components/LeftMenu.d.ts +2 -2
- package/dist/admin/src/components/MainNav/MainNavLinks.d.ts +11 -0
- package/dist/admin/src/components/MainNav/NavBurgerMenu.d.ts +9 -0
- package/dist/admin/src/components/MainNav/NavUser.d.ts +5 -4
- package/dist/admin/src/components/ResizeIndicator.d.ts +12 -0
- package/dist/admin/src/components/SubNav.d.ts +18 -5
- package/dist/admin/src/components/WidgetRoot.d.ts +14 -0
- package/dist/admin/src/constants/theme.d.ts +7 -0
- 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/features/Tracking.d.ts +1 -1
- package/dist/admin/src/features/Widgets.d.ts +29 -0
- package/dist/admin/src/hooks/useAdminRoles.d.ts +1 -1
- package/dist/admin/src/hooks/useDeviceType.d.ts +6 -0
- package/dist/admin/src/hooks/useMediaQuery.d.ts +21 -0
- package/dist/admin/src/hooks/useMenu.d.ts +9 -1
- package/dist/admin/src/index.d.ts +4 -0
- package/dist/admin/src/pages/Home/HomePage.d.ts +4 -5
- package/dist/admin/src/pages/Home/components/AddWidgetModal.d.ts +10 -0
- package/dist/admin/src/pages/Settings/components/SettingsNav.d.ts +3 -6
- 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 +21 -12
- 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/src/utils/resizeHandlers.d.ts +58 -0
- package/dist/admin/src/utils/widgetLayout.d.ts +78 -0
- package/dist/admin/tests/utils.d.ts +1 -1
- package/dist/ee/admin/src/services/ai.d.ts +2 -2
- package/dist/ee/admin/src/services/auditLogs.d.ts +1 -1
- package/dist/ee/server/src/controllers/authentication-utils/middlewares.d.ts.map +1 -1
- package/dist/server/ee/server/src/controllers/authentication-utils/middlewares.js +4 -2
- package/dist/server/ee/server/src/controllers/authentication-utils/middlewares.js.map +1 -1
- package/dist/server/ee/server/src/controllers/authentication-utils/middlewares.mjs +4 -2
- package/dist/server/ee/server/src/controllers/authentication-utils/middlewares.mjs.map +1 -1
- package/dist/server/server/src/bootstrap.js +5 -0
- package/dist/server/server/src/bootstrap.js.map +1 -1
- package/dist/server/server/src/bootstrap.mjs +5 -0
- package/dist/server/server/src/bootstrap.mjs.map +1 -1
- package/dist/server/server/src/controllers/authenticated-user.js +15 -0
- package/dist/server/server/src/controllers/authenticated-user.js.map +1 -1
- package/dist/server/server/src/controllers/authenticated-user.mjs +15 -0
- package/dist/server/server/src/controllers/authenticated-user.mjs.map +1 -1
- package/dist/server/server/src/routes/users.js +10 -0
- package/dist/server/server/src/routes/users.js.map +1 -1
- package/dist/server/server/src/routes/users.mjs +10 -0
- package/dist/server/server/src/routes/users.mjs.map +1 -1
- package/dist/server/server/src/services/user.js +113 -1
- package/dist/server/server/src/services/user.js.map +1 -1
- package/dist/server/server/src/services/user.mjs +113 -1
- package/dist/server/server/src/services/user.mjs.map +1 -1
- package/dist/server/shared/utils/session-auth.js +4 -2
- package/dist/server/shared/utils/session-auth.js.map +1 -1
- package/dist/server/shared/utils/session-auth.mjs +4 -2
- package/dist/server/shared/utils/session-auth.mjs.map +1 -1
- package/dist/server/src/bootstrap.d.ts.map +1 -1
- package/dist/server/src/controllers/authenticated-user.d.ts +1 -0
- package/dist/server/src/controllers/authenticated-user.d.ts.map +1 -1
- package/dist/server/src/controllers/index.d.ts +1 -0
- package/dist/server/src/controllers/index.d.ts.map +1 -1
- package/dist/server/src/index.d.ts +5 -0
- package/dist/server/src/index.d.ts.map +1 -1
- package/dist/server/src/routes/users.d.ts.map +1 -1
- package/dist/server/src/services/index.d.ts +4 -0
- package/dist/server/src/services/index.d.ts.map +1 -1
- package/dist/server/src/services/user.d.ts +4 -0
- package/dist/server/src/services/user.d.ts.map +1 -1
- package/dist/shared/contracts/homepage.d.ts +8 -4
- package/dist/shared/contracts/homepage.d.ts.map +1 -1
- package/dist/shared/contracts/users.d.ts +16 -0
- package/dist/shared/contracts/users.d.ts.map +1 -1
- package/dist/shared/utils/session-auth.d.ts.map +1 -1
- package/package.json +7 -7
|
@@ -0,0 +1,216 @@
|
|
|
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 icons = require('@strapi/icons');
|
|
7
|
+
var reactDnd = require('react-dnd');
|
|
8
|
+
var reactDndHtml5Backend = require('react-dnd-html5-backend');
|
|
9
|
+
var reactIntl = require('react-intl');
|
|
10
|
+
var reactRouterDom = require('react-router-dom');
|
|
11
|
+
var styled = require('styled-components');
|
|
12
|
+
var Tracking = require('../features/Tracking.js');
|
|
13
|
+
var widgetLayout = require('../utils/widgetLayout.js');
|
|
14
|
+
|
|
15
|
+
function _interopNamespaceDefault(e) {
|
|
16
|
+
var n = Object.create(null);
|
|
17
|
+
if (e) {
|
|
18
|
+
Object.keys(e).forEach(function (k) {
|
|
19
|
+
if (k !== 'default') {
|
|
20
|
+
var d = Object.getOwnPropertyDescriptor(e, k);
|
|
21
|
+
Object.defineProperty(n, k, d.get ? d : {
|
|
22
|
+
enumerable: true,
|
|
23
|
+
get: function () { return e[k]; }
|
|
24
|
+
});
|
|
25
|
+
}
|
|
26
|
+
});
|
|
27
|
+
}
|
|
28
|
+
n.default = e;
|
|
29
|
+
return Object.freeze(n);
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
var React__namespace = /*#__PURE__*/_interopNamespaceDefault(React);
|
|
33
|
+
|
|
34
|
+
const WidgetActions = styled(designSystem.Flex)`
|
|
35
|
+
display: flex;
|
|
36
|
+
|
|
37
|
+
@media (hover: hover) and (pointer: fine) {
|
|
38
|
+
display: none;
|
|
39
|
+
}
|
|
40
|
+
`;
|
|
41
|
+
const DragIconButton = styled(designSystem.IconButton)`
|
|
42
|
+
display: none;
|
|
43
|
+
|
|
44
|
+
@media (hover: hover) and (pointer: fine) {
|
|
45
|
+
display: flex;
|
|
46
|
+
}
|
|
47
|
+
`;
|
|
48
|
+
const WidgetContainer = styled(designSystem.Flex)`
|
|
49
|
+
@media (hover: hover) and (pointer: fine) {
|
|
50
|
+
&:hover ${WidgetActions} {
|
|
51
|
+
display: flex;
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
&:focus-within ${WidgetActions} {
|
|
56
|
+
display: flex;
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
&:focus-within ${DragIconButton} {
|
|
60
|
+
pointer-events: none;
|
|
61
|
+
|
|
62
|
+
${({ theme })=>theme.breakpoints.medium} {
|
|
63
|
+
pointer-events: auto;
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
`;
|
|
67
|
+
const WidgetRoot = ({ title, icon = icons.PuzzlePiece, children, link, uid, findWidget, deleteWidget, onDragStart, onDragEnd, component })=>{
|
|
68
|
+
const { trackUsage } = Tracking.useTracking();
|
|
69
|
+
const { formatMessage } = reactIntl.useIntl();
|
|
70
|
+
const Icon = icon;
|
|
71
|
+
const handleClickOnLink = ()=>{
|
|
72
|
+
trackUsage('didOpenHomeWidgetLink', {
|
|
73
|
+
widgetUID: uid
|
|
74
|
+
});
|
|
75
|
+
};
|
|
76
|
+
const handleDeleteWidget = ()=>{
|
|
77
|
+
deleteWidget?.(uid);
|
|
78
|
+
};
|
|
79
|
+
const [, drag, preview] = reactDnd.useDrag(()=>({
|
|
80
|
+
type: 'widget',
|
|
81
|
+
item: ()=>{
|
|
82
|
+
onDragStart?.(uid);
|
|
83
|
+
return {
|
|
84
|
+
id: uid,
|
|
85
|
+
originalIndex: findWidget?.(uid)?.index ?? 0,
|
|
86
|
+
title,
|
|
87
|
+
icon,
|
|
88
|
+
link,
|
|
89
|
+
component
|
|
90
|
+
};
|
|
91
|
+
},
|
|
92
|
+
collect: (monitor)=>({
|
|
93
|
+
isDragging: monitor.isDragging()
|
|
94
|
+
}),
|
|
95
|
+
end: ()=>{
|
|
96
|
+
onDragEnd?.();
|
|
97
|
+
}
|
|
98
|
+
}), [
|
|
99
|
+
uid,
|
|
100
|
+
findWidget,
|
|
101
|
+
onDragStart,
|
|
102
|
+
onDragEnd,
|
|
103
|
+
title,
|
|
104
|
+
icon,
|
|
105
|
+
link,
|
|
106
|
+
component
|
|
107
|
+
]);
|
|
108
|
+
// Suppress default drag preview
|
|
109
|
+
React__namespace.useEffect(()=>{
|
|
110
|
+
preview(reactDndHtml5Backend.getEmptyImage(), {
|
|
111
|
+
captureDraggingState: true
|
|
112
|
+
});
|
|
113
|
+
}, [
|
|
114
|
+
preview
|
|
115
|
+
]);
|
|
116
|
+
return /*#__PURE__*/ jsxRuntime.jsxs(WidgetContainer, {
|
|
117
|
+
width: "100%",
|
|
118
|
+
hasRadius: true,
|
|
119
|
+
direction: "column",
|
|
120
|
+
alignItems: "flex-start",
|
|
121
|
+
background: 'neutral0',
|
|
122
|
+
borderColor: 'neutral150',
|
|
123
|
+
shadow: "tableShadow",
|
|
124
|
+
tag: "section",
|
|
125
|
+
gap: 4,
|
|
126
|
+
padding: 6,
|
|
127
|
+
position: "relative",
|
|
128
|
+
"aria-labelledby": uid,
|
|
129
|
+
tabIndex: 0,
|
|
130
|
+
[widgetLayout.WIDGET_DATA_ATTRIBUTES.WIDGET_ID]: uid,
|
|
131
|
+
style: {
|
|
132
|
+
transition: 'all 0.3s cubic-bezier(0.4, 0, 0.2, 1)'
|
|
133
|
+
},
|
|
134
|
+
children: [
|
|
135
|
+
/*#__PURE__*/ jsxRuntime.jsxs(designSystem.Flex, {
|
|
136
|
+
direction: "row",
|
|
137
|
+
gap: 2,
|
|
138
|
+
width: "100%",
|
|
139
|
+
tag: "header",
|
|
140
|
+
alignItems: "center",
|
|
141
|
+
minHeight: "2.25rem",
|
|
142
|
+
children: [
|
|
143
|
+
/*#__PURE__*/ jsxRuntime.jsxs(designSystem.Flex, {
|
|
144
|
+
gap: 2,
|
|
145
|
+
marginRight: "auto",
|
|
146
|
+
children: [
|
|
147
|
+
/*#__PURE__*/ jsxRuntime.jsx(Icon, {
|
|
148
|
+
fill: "neutral500",
|
|
149
|
+
"aria-hidden": true
|
|
150
|
+
}),
|
|
151
|
+
/*#__PURE__*/ jsxRuntime.jsx(designSystem.Typography, {
|
|
152
|
+
textColor: "neutral500",
|
|
153
|
+
variant: "sigma",
|
|
154
|
+
tag: "h2",
|
|
155
|
+
id: uid,
|
|
156
|
+
children: formatMessage(title)
|
|
157
|
+
})
|
|
158
|
+
]
|
|
159
|
+
}),
|
|
160
|
+
link && /*#__PURE__*/ jsxRuntime.jsx(designSystem.Typography, {
|
|
161
|
+
tag: reactRouterDom.Link,
|
|
162
|
+
variant: "omega",
|
|
163
|
+
textColor: "primary600",
|
|
164
|
+
style: {
|
|
165
|
+
textDecoration: 'none'
|
|
166
|
+
},
|
|
167
|
+
textAlign: "right",
|
|
168
|
+
to: link.href,
|
|
169
|
+
onClick: handleClickOnLink,
|
|
170
|
+
children: formatMessage(link.label)
|
|
171
|
+
}),
|
|
172
|
+
/*#__PURE__*/ jsxRuntime.jsxs(WidgetActions, {
|
|
173
|
+
gap: 2,
|
|
174
|
+
children: [
|
|
175
|
+
/*#__PURE__*/ jsxRuntime.jsx(designSystem.IconButton, {
|
|
176
|
+
variant: "danger-light",
|
|
177
|
+
size: "XS",
|
|
178
|
+
onClick: handleDeleteWidget,
|
|
179
|
+
label: formatMessage({
|
|
180
|
+
id: 'HomePage.widget.delete',
|
|
181
|
+
defaultMessage: 'Delete'
|
|
182
|
+
}),
|
|
183
|
+
cursor: "pointer",
|
|
184
|
+
children: /*#__PURE__*/ jsxRuntime.jsx(icons.Trash, {})
|
|
185
|
+
}),
|
|
186
|
+
/*#__PURE__*/ jsxRuntime.jsx(DragIconButton, {
|
|
187
|
+
variant: "tertiary",
|
|
188
|
+
size: "XS",
|
|
189
|
+
ref: drag,
|
|
190
|
+
tabIndex: -1,
|
|
191
|
+
label: formatMessage({
|
|
192
|
+
id: 'HomePage.widget.drag',
|
|
193
|
+
defaultMessage: 'Drag to move'
|
|
194
|
+
}),
|
|
195
|
+
cursor: "grab",
|
|
196
|
+
children: /*#__PURE__*/ jsxRuntime.jsx(icons.Drag, {})
|
|
197
|
+
})
|
|
198
|
+
]
|
|
199
|
+
})
|
|
200
|
+
]
|
|
201
|
+
}),
|
|
202
|
+
/*#__PURE__*/ jsxRuntime.jsx(designSystem.ScrollArea, {
|
|
203
|
+
children: /*#__PURE__*/ jsxRuntime.jsx(designSystem.Box, {
|
|
204
|
+
width: "100%",
|
|
205
|
+
height: "261px",
|
|
206
|
+
overflow: "auto",
|
|
207
|
+
tag: "main",
|
|
208
|
+
children: children
|
|
209
|
+
})
|
|
210
|
+
})
|
|
211
|
+
]
|
|
212
|
+
});
|
|
213
|
+
};
|
|
214
|
+
|
|
215
|
+
exports.WidgetRoot = WidgetRoot;
|
|
216
|
+
//# sourceMappingURL=WidgetRoot.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"WidgetRoot.js","sources":["../../../../../admin/src/components/WidgetRoot.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { Box, Flex, Typography, ScrollArea, IconButton } from '@strapi/design-system';\nimport { PuzzlePiece, Trash, Drag } from '@strapi/icons';\nimport { useDrag } from 'react-dnd';\nimport { getEmptyImage } from 'react-dnd-html5-backend';\nimport { useIntl } from 'react-intl';\nimport { Link as ReactRouterLink } from 'react-router-dom';\nimport styled from 'styled-components';\n\nimport { useTracking } from '../features/Tracking';\nimport { WIDGET_DATA_ATTRIBUTES } from '../utils/widgetLayout';\n\nimport type { FindWidgetFunction, WidgetIdFunction, DragEndFunction } from '../features/Widgets';\nimport type { WidgetType } from '@strapi/admin/strapi-admin';\n\nexport interface BaseWidgetProps\n extends Pick<WidgetType, 'title' | 'icon' | 'permissions' | 'link' | 'uid'> {\n findWidget?: FindWidgetFunction;\n deleteWidget?: WidgetIdFunction;\n onDragStart?: WidgetIdFunction;\n onDragEnd?: DragEndFunction;\n}\n\nexport interface WidgetRootProps extends BaseWidgetProps {\n children: React.ReactNode;\n component?: () => Promise<React.ComponentType>;\n}\n\nconst WidgetActions = styled(Flex)`\n display: flex;\n\n @media (hover: hover) and (pointer: fine) {\n display: none;\n }\n`;\n\nconst DragIconButton = styled(IconButton)`\n display: none;\n\n @media (hover: hover) and (pointer: fine) {\n display: flex;\n }\n`;\n\nconst WidgetContainer = styled(Flex)`\n @media (hover: hover) and (pointer: fine) {\n &:hover ${WidgetActions} {\n display: flex;\n }\n }\n\n &:focus-within ${WidgetActions} {\n display: flex;\n }\n\n &:focus-within ${DragIconButton} {\n pointer-events: none;\n\n ${({ theme }) => theme.breakpoints.medium} {\n pointer-events: auto;\n }\n }\n`;\n\nexport const WidgetRoot = ({\n title,\n icon = PuzzlePiece,\n children,\n link,\n uid,\n findWidget,\n deleteWidget,\n onDragStart,\n onDragEnd,\n component,\n}: WidgetRootProps) => {\n const { trackUsage } = useTracking();\n const { formatMessage } = useIntl();\n const Icon = icon;\n\n const handleClickOnLink = () => {\n trackUsage('didOpenHomeWidgetLink', { widgetUID: uid });\n };\n\n const handleDeleteWidget = () => {\n deleteWidget?.(uid);\n };\n\n const [, drag, preview] = useDrag(\n () => ({\n type: 'widget',\n item: () => {\n onDragStart?.(uid);\n return {\n id: uid,\n originalIndex: findWidget?.(uid)?.index ?? 0,\n title,\n icon,\n link,\n component,\n };\n },\n collect: (monitor) => ({\n isDragging: monitor.isDragging(),\n }),\n end: () => {\n onDragEnd?.();\n },\n }),\n [uid, findWidget, onDragStart, onDragEnd, title, icon, link, component]\n );\n\n // Suppress default drag preview\n React.useEffect(() => {\n preview(getEmptyImage(), { captureDraggingState: true });\n }, [preview]);\n\n return (\n <WidgetContainer\n width=\"100%\"\n hasRadius\n direction=\"column\"\n alignItems=\"flex-start\"\n background={'neutral0'}\n borderColor={'neutral150'}\n shadow=\"tableShadow\"\n tag=\"section\"\n gap={4}\n padding={6}\n position=\"relative\"\n aria-labelledby={uid}\n tabIndex={0}\n {...{ [WIDGET_DATA_ATTRIBUTES.WIDGET_ID]: uid }}\n style={{\n transition: 'all 0.3s cubic-bezier(0.4, 0, 0.2, 1)',\n }}\n >\n <Flex\n direction=\"row\"\n gap={2}\n width=\"100%\"\n tag=\"header\"\n alignItems=\"center\"\n minHeight=\"2.25rem\"\n >\n <Flex gap={2} marginRight=\"auto\">\n <Icon fill=\"neutral500\" aria-hidden />\n <Typography textColor=\"neutral500\" variant=\"sigma\" tag=\"h2\" id={uid}>\n {formatMessage(title)}\n </Typography>\n </Flex>\n {link && (\n <Typography\n tag={ReactRouterLink}\n variant=\"omega\"\n textColor=\"primary600\"\n style={{ textDecoration: 'none' }}\n textAlign=\"right\"\n to={link.href}\n onClick={handleClickOnLink}\n >\n {formatMessage(link.label)}\n </Typography>\n )}\n <WidgetActions gap={2}>\n <IconButton\n variant=\"danger-light\"\n size=\"XS\"\n onClick={handleDeleteWidget}\n label={formatMessage({\n id: 'HomePage.widget.delete',\n defaultMessage: 'Delete',\n })}\n cursor=\"pointer\"\n >\n <Trash />\n </IconButton>\n <DragIconButton\n variant=\"tertiary\"\n size=\"XS\"\n ref={drag}\n tabIndex={-1}\n label={formatMessage({\n id: 'HomePage.widget.drag',\n defaultMessage: 'Drag to move',\n })}\n cursor=\"grab\"\n >\n <Drag />\n </DragIconButton>\n </WidgetActions>\n </Flex>\n <ScrollArea>\n <Box width=\"100%\" height=\"261px\" overflow=\"auto\" tag=\"main\">\n {children}\n </Box>\n </ScrollArea>\n </WidgetContainer>\n );\n};\n"],"names":["WidgetActions","styled","Flex","DragIconButton","IconButton","WidgetContainer","theme","breakpoints","medium","WidgetRoot","title","icon","PuzzlePiece","children","link","uid","findWidget","deleteWidget","onDragStart","onDragEnd","component","trackUsage","useTracking","formatMessage","useIntl","Icon","handleClickOnLink","widgetUID","handleDeleteWidget","drag","preview","useDrag","type","item","id","originalIndex","index","collect","monitor","isDragging","end","React","useEffect","getEmptyImage","captureDraggingState","_jsxs","width","hasRadius","direction","alignItems","background","borderColor","shadow","tag","gap","padding","position","aria-labelledby","tabIndex","WIDGET_DATA_ATTRIBUTES","WIDGET_ID","style","transition","minHeight","marginRight","_jsx","fill","aria-hidden","Typography","textColor","variant","ReactRouterLink","textDecoration","textAlign","to","href","onClick","label","size","defaultMessage","cursor","Trash","ref","Drag","ScrollArea","Box","height","overflow"],"mappings":"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"}
|
|
@@ -0,0 +1,195 @@
|
|
|
1
|
+
import { jsxs, jsx } from 'react/jsx-runtime';
|
|
2
|
+
import * as React from 'react';
|
|
3
|
+
import { Flex, IconButton, Typography, ScrollArea, Box } from '@strapi/design-system';
|
|
4
|
+
import { Trash, Drag, PuzzlePiece } from '@strapi/icons';
|
|
5
|
+
import { useDrag } from 'react-dnd';
|
|
6
|
+
import { getEmptyImage } from 'react-dnd-html5-backend';
|
|
7
|
+
import { useIntl } from 'react-intl';
|
|
8
|
+
import { Link } from 'react-router-dom';
|
|
9
|
+
import styled from 'styled-components';
|
|
10
|
+
import { useTracking } from '../features/Tracking.mjs';
|
|
11
|
+
import { WIDGET_DATA_ATTRIBUTES } from '../utils/widgetLayout.mjs';
|
|
12
|
+
|
|
13
|
+
const WidgetActions = styled(Flex)`
|
|
14
|
+
display: flex;
|
|
15
|
+
|
|
16
|
+
@media (hover: hover) and (pointer: fine) {
|
|
17
|
+
display: none;
|
|
18
|
+
}
|
|
19
|
+
`;
|
|
20
|
+
const DragIconButton = styled(IconButton)`
|
|
21
|
+
display: none;
|
|
22
|
+
|
|
23
|
+
@media (hover: hover) and (pointer: fine) {
|
|
24
|
+
display: flex;
|
|
25
|
+
}
|
|
26
|
+
`;
|
|
27
|
+
const WidgetContainer = styled(Flex)`
|
|
28
|
+
@media (hover: hover) and (pointer: fine) {
|
|
29
|
+
&:hover ${WidgetActions} {
|
|
30
|
+
display: flex;
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
&:focus-within ${WidgetActions} {
|
|
35
|
+
display: flex;
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
&:focus-within ${DragIconButton} {
|
|
39
|
+
pointer-events: none;
|
|
40
|
+
|
|
41
|
+
${({ theme })=>theme.breakpoints.medium} {
|
|
42
|
+
pointer-events: auto;
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
`;
|
|
46
|
+
const WidgetRoot = ({ title, icon = PuzzlePiece, children, link, uid, findWidget, deleteWidget, onDragStart, onDragEnd, component })=>{
|
|
47
|
+
const { trackUsage } = useTracking();
|
|
48
|
+
const { formatMessage } = useIntl();
|
|
49
|
+
const Icon = icon;
|
|
50
|
+
const handleClickOnLink = ()=>{
|
|
51
|
+
trackUsage('didOpenHomeWidgetLink', {
|
|
52
|
+
widgetUID: uid
|
|
53
|
+
});
|
|
54
|
+
};
|
|
55
|
+
const handleDeleteWidget = ()=>{
|
|
56
|
+
deleteWidget?.(uid);
|
|
57
|
+
};
|
|
58
|
+
const [, drag, preview] = useDrag(()=>({
|
|
59
|
+
type: 'widget',
|
|
60
|
+
item: ()=>{
|
|
61
|
+
onDragStart?.(uid);
|
|
62
|
+
return {
|
|
63
|
+
id: uid,
|
|
64
|
+
originalIndex: findWidget?.(uid)?.index ?? 0,
|
|
65
|
+
title,
|
|
66
|
+
icon,
|
|
67
|
+
link,
|
|
68
|
+
component
|
|
69
|
+
};
|
|
70
|
+
},
|
|
71
|
+
collect: (monitor)=>({
|
|
72
|
+
isDragging: monitor.isDragging()
|
|
73
|
+
}),
|
|
74
|
+
end: ()=>{
|
|
75
|
+
onDragEnd?.();
|
|
76
|
+
}
|
|
77
|
+
}), [
|
|
78
|
+
uid,
|
|
79
|
+
findWidget,
|
|
80
|
+
onDragStart,
|
|
81
|
+
onDragEnd,
|
|
82
|
+
title,
|
|
83
|
+
icon,
|
|
84
|
+
link,
|
|
85
|
+
component
|
|
86
|
+
]);
|
|
87
|
+
// Suppress default drag preview
|
|
88
|
+
React.useEffect(()=>{
|
|
89
|
+
preview(getEmptyImage(), {
|
|
90
|
+
captureDraggingState: true
|
|
91
|
+
});
|
|
92
|
+
}, [
|
|
93
|
+
preview
|
|
94
|
+
]);
|
|
95
|
+
return /*#__PURE__*/ jsxs(WidgetContainer, {
|
|
96
|
+
width: "100%",
|
|
97
|
+
hasRadius: true,
|
|
98
|
+
direction: "column",
|
|
99
|
+
alignItems: "flex-start",
|
|
100
|
+
background: 'neutral0',
|
|
101
|
+
borderColor: 'neutral150',
|
|
102
|
+
shadow: "tableShadow",
|
|
103
|
+
tag: "section",
|
|
104
|
+
gap: 4,
|
|
105
|
+
padding: 6,
|
|
106
|
+
position: "relative",
|
|
107
|
+
"aria-labelledby": uid,
|
|
108
|
+
tabIndex: 0,
|
|
109
|
+
[WIDGET_DATA_ATTRIBUTES.WIDGET_ID]: uid,
|
|
110
|
+
style: {
|
|
111
|
+
transition: 'all 0.3s cubic-bezier(0.4, 0, 0.2, 1)'
|
|
112
|
+
},
|
|
113
|
+
children: [
|
|
114
|
+
/*#__PURE__*/ jsxs(Flex, {
|
|
115
|
+
direction: "row",
|
|
116
|
+
gap: 2,
|
|
117
|
+
width: "100%",
|
|
118
|
+
tag: "header",
|
|
119
|
+
alignItems: "center",
|
|
120
|
+
minHeight: "2.25rem",
|
|
121
|
+
children: [
|
|
122
|
+
/*#__PURE__*/ jsxs(Flex, {
|
|
123
|
+
gap: 2,
|
|
124
|
+
marginRight: "auto",
|
|
125
|
+
children: [
|
|
126
|
+
/*#__PURE__*/ jsx(Icon, {
|
|
127
|
+
fill: "neutral500",
|
|
128
|
+
"aria-hidden": true
|
|
129
|
+
}),
|
|
130
|
+
/*#__PURE__*/ jsx(Typography, {
|
|
131
|
+
textColor: "neutral500",
|
|
132
|
+
variant: "sigma",
|
|
133
|
+
tag: "h2",
|
|
134
|
+
id: uid,
|
|
135
|
+
children: formatMessage(title)
|
|
136
|
+
})
|
|
137
|
+
]
|
|
138
|
+
}),
|
|
139
|
+
link && /*#__PURE__*/ jsx(Typography, {
|
|
140
|
+
tag: Link,
|
|
141
|
+
variant: "omega",
|
|
142
|
+
textColor: "primary600",
|
|
143
|
+
style: {
|
|
144
|
+
textDecoration: 'none'
|
|
145
|
+
},
|
|
146
|
+
textAlign: "right",
|
|
147
|
+
to: link.href,
|
|
148
|
+
onClick: handleClickOnLink,
|
|
149
|
+
children: formatMessage(link.label)
|
|
150
|
+
}),
|
|
151
|
+
/*#__PURE__*/ jsxs(WidgetActions, {
|
|
152
|
+
gap: 2,
|
|
153
|
+
children: [
|
|
154
|
+
/*#__PURE__*/ jsx(IconButton, {
|
|
155
|
+
variant: "danger-light",
|
|
156
|
+
size: "XS",
|
|
157
|
+
onClick: handleDeleteWidget,
|
|
158
|
+
label: formatMessage({
|
|
159
|
+
id: 'HomePage.widget.delete',
|
|
160
|
+
defaultMessage: 'Delete'
|
|
161
|
+
}),
|
|
162
|
+
cursor: "pointer",
|
|
163
|
+
children: /*#__PURE__*/ jsx(Trash, {})
|
|
164
|
+
}),
|
|
165
|
+
/*#__PURE__*/ jsx(DragIconButton, {
|
|
166
|
+
variant: "tertiary",
|
|
167
|
+
size: "XS",
|
|
168
|
+
ref: drag,
|
|
169
|
+
tabIndex: -1,
|
|
170
|
+
label: formatMessage({
|
|
171
|
+
id: 'HomePage.widget.drag',
|
|
172
|
+
defaultMessage: 'Drag to move'
|
|
173
|
+
}),
|
|
174
|
+
cursor: "grab",
|
|
175
|
+
children: /*#__PURE__*/ jsx(Drag, {})
|
|
176
|
+
})
|
|
177
|
+
]
|
|
178
|
+
})
|
|
179
|
+
]
|
|
180
|
+
}),
|
|
181
|
+
/*#__PURE__*/ jsx(ScrollArea, {
|
|
182
|
+
children: /*#__PURE__*/ jsx(Box, {
|
|
183
|
+
width: "100%",
|
|
184
|
+
height: "261px",
|
|
185
|
+
overflow: "auto",
|
|
186
|
+
tag: "main",
|
|
187
|
+
children: children
|
|
188
|
+
})
|
|
189
|
+
})
|
|
190
|
+
]
|
|
191
|
+
});
|
|
192
|
+
};
|
|
193
|
+
|
|
194
|
+
export { WidgetRoot };
|
|
195
|
+
//# sourceMappingURL=WidgetRoot.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"WidgetRoot.mjs","sources":["../../../../../admin/src/components/WidgetRoot.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { Box, Flex, Typography, ScrollArea, IconButton } from '@strapi/design-system';\nimport { PuzzlePiece, Trash, Drag } from '@strapi/icons';\nimport { useDrag } from 'react-dnd';\nimport { getEmptyImage } from 'react-dnd-html5-backend';\nimport { useIntl } from 'react-intl';\nimport { Link as ReactRouterLink } from 'react-router-dom';\nimport styled from 'styled-components';\n\nimport { useTracking } from '../features/Tracking';\nimport { WIDGET_DATA_ATTRIBUTES } from '../utils/widgetLayout';\n\nimport type { FindWidgetFunction, WidgetIdFunction, DragEndFunction } from '../features/Widgets';\nimport type { WidgetType } from '@strapi/admin/strapi-admin';\n\nexport interface BaseWidgetProps\n extends Pick<WidgetType, 'title' | 'icon' | 'permissions' | 'link' | 'uid'> {\n findWidget?: FindWidgetFunction;\n deleteWidget?: WidgetIdFunction;\n onDragStart?: WidgetIdFunction;\n onDragEnd?: DragEndFunction;\n}\n\nexport interface WidgetRootProps extends BaseWidgetProps {\n children: React.ReactNode;\n component?: () => Promise<React.ComponentType>;\n}\n\nconst WidgetActions = styled(Flex)`\n display: flex;\n\n @media (hover: hover) and (pointer: fine) {\n display: none;\n }\n`;\n\nconst DragIconButton = styled(IconButton)`\n display: none;\n\n @media (hover: hover) and (pointer: fine) {\n display: flex;\n }\n`;\n\nconst WidgetContainer = styled(Flex)`\n @media (hover: hover) and (pointer: fine) {\n &:hover ${WidgetActions} {\n display: flex;\n }\n }\n\n &:focus-within ${WidgetActions} {\n display: flex;\n }\n\n &:focus-within ${DragIconButton} {\n pointer-events: none;\n\n ${({ theme }) => theme.breakpoints.medium} {\n pointer-events: auto;\n }\n }\n`;\n\nexport const WidgetRoot = ({\n title,\n icon = PuzzlePiece,\n children,\n link,\n uid,\n findWidget,\n deleteWidget,\n onDragStart,\n onDragEnd,\n component,\n}: WidgetRootProps) => {\n const { trackUsage } = useTracking();\n const { formatMessage } = useIntl();\n const Icon = icon;\n\n const handleClickOnLink = () => {\n trackUsage('didOpenHomeWidgetLink', { widgetUID: uid });\n };\n\n const handleDeleteWidget = () => {\n deleteWidget?.(uid);\n };\n\n const [, drag, preview] = useDrag(\n () => ({\n type: 'widget',\n item: () => {\n onDragStart?.(uid);\n return {\n id: uid,\n originalIndex: findWidget?.(uid)?.index ?? 0,\n title,\n icon,\n link,\n component,\n };\n },\n collect: (monitor) => ({\n isDragging: monitor.isDragging(),\n }),\n end: () => {\n onDragEnd?.();\n },\n }),\n [uid, findWidget, onDragStart, onDragEnd, title, icon, link, component]\n );\n\n // Suppress default drag preview\n React.useEffect(() => {\n preview(getEmptyImage(), { captureDraggingState: true });\n }, [preview]);\n\n return (\n <WidgetContainer\n width=\"100%\"\n hasRadius\n direction=\"column\"\n alignItems=\"flex-start\"\n background={'neutral0'}\n borderColor={'neutral150'}\n shadow=\"tableShadow\"\n tag=\"section\"\n gap={4}\n padding={6}\n position=\"relative\"\n aria-labelledby={uid}\n tabIndex={0}\n {...{ [WIDGET_DATA_ATTRIBUTES.WIDGET_ID]: uid }}\n style={{\n transition: 'all 0.3s cubic-bezier(0.4, 0, 0.2, 1)',\n }}\n >\n <Flex\n direction=\"row\"\n gap={2}\n width=\"100%\"\n tag=\"header\"\n alignItems=\"center\"\n minHeight=\"2.25rem\"\n >\n <Flex gap={2} marginRight=\"auto\">\n <Icon fill=\"neutral500\" aria-hidden />\n <Typography textColor=\"neutral500\" variant=\"sigma\" tag=\"h2\" id={uid}>\n {formatMessage(title)}\n </Typography>\n </Flex>\n {link && (\n <Typography\n tag={ReactRouterLink}\n variant=\"omega\"\n textColor=\"primary600\"\n style={{ textDecoration: 'none' }}\n textAlign=\"right\"\n to={link.href}\n onClick={handleClickOnLink}\n >\n {formatMessage(link.label)}\n </Typography>\n )}\n <WidgetActions gap={2}>\n <IconButton\n variant=\"danger-light\"\n size=\"XS\"\n onClick={handleDeleteWidget}\n label={formatMessage({\n id: 'HomePage.widget.delete',\n defaultMessage: 'Delete',\n })}\n cursor=\"pointer\"\n >\n <Trash />\n </IconButton>\n <DragIconButton\n variant=\"tertiary\"\n size=\"XS\"\n ref={drag}\n tabIndex={-1}\n label={formatMessage({\n id: 'HomePage.widget.drag',\n defaultMessage: 'Drag to move',\n })}\n cursor=\"grab\"\n >\n <Drag />\n </DragIconButton>\n </WidgetActions>\n </Flex>\n <ScrollArea>\n <Box width=\"100%\" height=\"261px\" overflow=\"auto\" tag=\"main\">\n {children}\n </Box>\n </ScrollArea>\n </WidgetContainer>\n );\n};\n"],"names":["WidgetActions","styled","Flex","DragIconButton","IconButton","WidgetContainer","theme","breakpoints","medium","WidgetRoot","title","icon","PuzzlePiece","children","link","uid","findWidget","deleteWidget","onDragStart","onDragEnd","component","trackUsage","useTracking","formatMessage","useIntl","Icon","handleClickOnLink","widgetUID","handleDeleteWidget","drag","preview","useDrag","type","item","id","originalIndex","index","collect","monitor","isDragging","end","React","useEffect","getEmptyImage","captureDraggingState","_jsxs","width","hasRadius","direction","alignItems","background","borderColor","shadow","tag","gap","padding","position","aria-labelledby","tabIndex","WIDGET_DATA_ATTRIBUTES","WIDGET_ID","style","transition","minHeight","marginRight","_jsx","fill","aria-hidden","Typography","textColor","variant","ReactRouterLink","textDecoration","textAlign","to","href","onClick","label","size","defaultMessage","cursor","Trash","ref","Drag","ScrollArea","Box","height","overflow"],"mappings":";;;;;;;;;;;;AA6BA,MAAMA,aAAAA,GAAgBC,MAAOC,CAAAA,IAAAA,CAAK;;;;;;AAMlC,CAAC;AAED,MAAMC,cAAAA,GAAiBF,MAAOG,CAAAA,UAAAA,CAAW;;;;;;AAMzC,CAAC;AAED,MAAMC,eAAAA,GAAkBJ,MAAOC,CAAAA,IAAAA,CAAK;;AAExB,YAAA,EAAEF,aAAc,CAAA;;;;;AAKX,iBAAA,EAAEA,aAAc,CAAA;;;;AAIhB,iBAAA,EAAEG,cAAe,CAAA;;;IAG9B,EAAE,CAAC,EAAEG,KAAK,EAAE,GAAKA,KAAMC,CAAAA,WAAW,CAACC,MAAM,CAAC;;;;AAI9C,CAAC;AAEM,MAAMC,UAAa,GAAA,CAAC,EACzBC,KAAK,EACLC,IAAOC,GAAAA,WAAW,EAClBC,QAAQ,EACRC,IAAI,EACJC,GAAG,EACHC,UAAU,EACVC,YAAY,EACZC,WAAW,EACXC,SAAS,EACTC,SAAS,EACO,GAAA;IAChB,MAAM,EAAEC,UAAU,EAAE,GAAGC,WAAAA,EAAAA;IACvB,MAAM,EAAEC,aAAa,EAAE,GAAGC,OAAAA,EAAAA;AAC1B,IAAA,MAAMC,IAAOd,GAAAA,IAAAA;AAEb,IAAA,MAAMe,iBAAoB,GAAA,IAAA;AACxBL,QAAAA,UAAAA,CAAW,uBAAyB,EAAA;YAAEM,SAAWZ,EAAAA;AAAI,SAAA,CAAA;AACvD,KAAA;AAEA,IAAA,MAAMa,kBAAqB,GAAA,IAAA;QACzBX,YAAeF,GAAAA,GAAAA,CAAAA;AACjB,KAAA;AAEA,IAAA,MAAM,GAAGc,IAAMC,EAAAA,OAAAA,CAAQ,GAAGC,OAAAA,CACxB,KAAO;YACLC,IAAM,EAAA,QAAA;YACNC,IAAM,EAAA,IAAA;gBACJf,WAAcH,GAAAA,GAAAA,CAAAA;gBACd,OAAO;oBACLmB,EAAInB,EAAAA,GAAAA;oBACJoB,aAAenB,EAAAA,UAAAA,GAAaD,MAAMqB,KAAS,IAAA,CAAA;AAC3C1B,oBAAAA,KAAAA;AACAC,oBAAAA,IAAAA;AACAG,oBAAAA,IAAAA;AACAM,oBAAAA;AACF,iBAAA;AACF,aAAA;YACAiB,OAAS,EAAA,CAACC,WAAa;AACrBC,oBAAAA,UAAAA,EAAYD,QAAQC,UAAU;iBAChC,CAAA;YACAC,GAAK,EAAA,IAAA;AACHrB,gBAAAA,SAAAA,IAAAA;AACF;AACF,SAAA,CACA,EAAA;AAACJ,QAAAA,GAAAA;AAAKC,QAAAA,UAAAA;AAAYE,QAAAA,WAAAA;AAAaC,QAAAA,SAAAA;AAAWT,QAAAA,KAAAA;AAAOC,QAAAA,IAAAA;AAAMG,QAAAA,IAAAA;AAAMM,QAAAA;AAAU,KAAA,CAAA;;AAIzEqB,IAAAA,KAAAA,CAAMC,SAAS,CAAC,IAAA;AACdZ,QAAAA,OAAAA,CAAQa,aAAiB,EAAA,EAAA;YAAEC,oBAAsB,EAAA;AAAK,SAAA,CAAA;KACrD,EAAA;AAACd,QAAAA;AAAQ,KAAA,CAAA;AAEZ,IAAA,qBACEe,IAACxC,CAAAA,eAAAA,EAAAA;QACCyC,KAAM,EAAA,MAAA;QACNC,SAAS,EAAA,IAAA;QACTC,SAAU,EAAA,QAAA;QACVC,UAAW,EAAA,YAAA;QACXC,UAAY,EAAA,UAAA;QACZC,WAAa,EAAA,YAAA;QACbC,MAAO,EAAA,aAAA;QACPC,GAAI,EAAA,SAAA;QACJC,GAAK,EAAA,CAAA;QACLC,OAAS,EAAA,CAAA;QACTC,QAAS,EAAA,UAAA;QACTC,iBAAiB1C,EAAAA,GAAAA;QACjB2C,QAAU,EAAA,CAAA;QACJ,CAACC,sBAAAA,CAAuBC,SAAS,GAAG7C,GAAAA;QAC1C8C,KAAO,EAAA;YACLC,UAAY,EAAA;AACd,SAAA;;0BAEAjB,IAAC3C,CAAAA,IAAAA,EAAAA;gBACC8C,SAAU,EAAA,KAAA;gBACVM,GAAK,EAAA,CAAA;gBACLR,KAAM,EAAA,MAAA;gBACNO,GAAI,EAAA,QAAA;gBACJJ,UAAW,EAAA,QAAA;gBACXc,SAAU,EAAA,SAAA;;kCAEVlB,IAAC3C,CAAAA,IAAAA,EAAAA;wBAAKoD,GAAK,EAAA,CAAA;wBAAGU,WAAY,EAAA,MAAA;;0CACxBC,GAACxC,CAAAA,IAAAA,EAAAA;gCAAKyC,IAAK,EAAA,YAAA;gCAAaC,aAAW,EAAA;;0CACnCF,GAACG,CAAAA,UAAAA,EAAAA;gCAAWC,SAAU,EAAA,YAAA;gCAAaC,OAAQ,EAAA,OAAA;gCAAQjB,GAAI,EAAA,IAAA;gCAAKnB,EAAInB,EAAAA,GAAAA;0CAC7DQ,aAAcb,CAAAA,KAAAA;;;;AAGlBI,oBAAAA,IAAAA,kBACCmD,GAACG,CAAAA,UAAAA,EAAAA;wBACCf,GAAKkB,EAAAA,IAAAA;wBACLD,OAAQ,EAAA,OAAA;wBACRD,SAAU,EAAA,YAAA;wBACVR,KAAO,EAAA;4BAAEW,cAAgB,EAAA;AAAO,yBAAA;wBAChCC,SAAU,EAAA,OAAA;AACVC,wBAAAA,EAAAA,EAAI5D,KAAK6D,IAAI;wBACbC,OAASlD,EAAAA,iBAAAA;AAERH,wBAAAA,QAAAA,EAAAA,aAAAA,CAAcT,KAAK+D,KAAK;;kCAG7BhC,IAAC7C,CAAAA,aAAAA,EAAAA;wBAAcsD,GAAK,EAAA,CAAA;;0CAClBW,GAAC7D,CAAAA,UAAAA,EAAAA;gCACCkE,OAAQ,EAAA,cAAA;gCACRQ,IAAK,EAAA,IAAA;gCACLF,OAAShD,EAAAA,kBAAAA;AACTiD,gCAAAA,KAAAA,EAAOtD,aAAc,CAAA;oCACnBW,EAAI,EAAA,wBAAA;oCACJ6C,cAAgB,EAAA;AAClB,iCAAA,CAAA;gCACAC,MAAO,EAAA,SAAA;AAEP,gCAAA,QAAA,gBAAAf,GAACgB,CAAAA,KAAAA,EAAAA,EAAAA;;0CAEHhB,GAAC9D,CAAAA,cAAAA,EAAAA;gCACCmE,OAAQ,EAAA,UAAA;gCACRQ,IAAK,EAAA,IAAA;gCACLI,GAAKrD,EAAAA,IAAAA;AACL6B,gCAAAA,QAAAA,EAAU,CAAC,CAAA;AACXmB,gCAAAA,KAAAA,EAAOtD,aAAc,CAAA;oCACnBW,EAAI,EAAA,sBAAA;oCACJ6C,cAAgB,EAAA;AAClB,iCAAA,CAAA;gCACAC,MAAO,EAAA,MAAA;AAEP,gCAAA,QAAA,gBAAAf,GAACkB,CAAAA,IAAAA,EAAAA,EAAAA;;;;;;0BAIPlB,GAACmB,CAAAA,UAAAA,EAAAA;AACC,gBAAA,QAAA,gBAAAnB,GAACoB,CAAAA,GAAAA,EAAAA;oBAAIvC,KAAM,EAAA,MAAA;oBAAOwC,MAAO,EAAA,OAAA;oBAAQC,QAAS,EAAA,MAAA;oBAAOlC,GAAI,EAAA,MAAA;AAClDxC,oBAAAA,QAAAA,EAAAA;;;;;AAKX;;;;"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
const RESPONSIVE_DEFAULT_SPACING = {
|
|
4
|
+
initial: 4,
|
|
5
|
+
medium: 6,
|
|
6
|
+
large: 10
|
|
7
|
+
};
|
|
8
|
+
const HEIGHT_TOP_NAVIGATION = '5.6rem';
|
|
9
|
+
|
|
10
|
+
exports.HEIGHT_TOP_NAVIGATION = HEIGHT_TOP_NAVIGATION;
|
|
11
|
+
exports.RESPONSIVE_DEFAULT_SPACING = RESPONSIVE_DEFAULT_SPACING;
|
|
12
|
+
//# sourceMappingURL=theme.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"theme.js","sources":["../../../../../admin/src/constants/theme.ts"],"sourcesContent":["const RESPONSIVE_DEFAULT_SPACING = {\n initial: 4,\n medium: 6,\n large: 10,\n};\n\nconst HEIGHT_TOP_NAVIGATION = '5.6rem';\n\nexport { RESPONSIVE_DEFAULT_SPACING, HEIGHT_TOP_NAVIGATION };\n"],"names":["RESPONSIVE_DEFAULT_SPACING","initial","medium","large","HEIGHT_TOP_NAVIGATION"],"mappings":";;AAAA,MAAMA,0BAA6B,GAAA;IACjCC,OAAS,EAAA,CAAA;IACTC,MAAQ,EAAA,CAAA;IACRC,KAAO,EAAA;AACT;AAEA,MAAMC,qBAAwB,GAAA;;;;;"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"theme.mjs","sources":["../../../../../admin/src/constants/theme.ts"],"sourcesContent":["const RESPONSIVE_DEFAULT_SPACING = {\n initial: 4,\n medium: 6,\n large: 10,\n};\n\nconst HEIGHT_TOP_NAVIGATION = '5.6rem';\n\nexport { RESPONSIVE_DEFAULT_SPACING, HEIGHT_TOP_NAVIGATION };\n"],"names":["RESPONSIVE_DEFAULT_SPACING","initial","medium","large","HEIGHT_TOP_NAVIGATION"],"mappings":"AAAA,MAAMA,0BAA6B,GAAA;IACjCC,OAAS,EAAA,CAAA;IACTC,MAAQ,EAAA,CAAA;IACRC,KAAO,EAAA;AACT;AAEA,MAAMC,qBAAwB,GAAA;;;;"}
|
|
@@ -4,6 +4,7 @@ var jsxRuntime = require('react/jsx-runtime');
|
|
|
4
4
|
var React = require('react');
|
|
5
5
|
var designSystem = require('@strapi/design-system');
|
|
6
6
|
var reactIntl = require('react-intl');
|
|
7
|
+
var theme = require('../constants/theme.js');
|
|
7
8
|
|
|
8
9
|
function _interopNamespaceDefault(e) {
|
|
9
10
|
var n = Object.create(null);
|
|
@@ -61,18 +62,24 @@ const NotificationsContext = /*#__PURE__*/ React__namespace.createContext({
|
|
|
61
62
|
children: [
|
|
62
63
|
/*#__PURE__*/ jsxRuntime.jsx(designSystem.Flex, {
|
|
63
64
|
left: "50%",
|
|
64
|
-
|
|
65
|
+
transform: "translateX(-50%)",
|
|
65
66
|
position: "fixed",
|
|
66
67
|
direction: "column",
|
|
67
68
|
alignItems: "stretch",
|
|
68
|
-
gap:
|
|
69
|
-
|
|
70
|
-
|
|
69
|
+
gap: 4,
|
|
70
|
+
marginTop: 4,
|
|
71
|
+
top: theme.HEIGHT_TOP_NAVIGATION,
|
|
72
|
+
width: "100%",
|
|
73
|
+
maxWidth: `50rem`,
|
|
71
74
|
zIndex: "notification",
|
|
72
75
|
children: notifications.map((notification)=>{
|
|
73
|
-
return /*#__PURE__*/ jsxRuntime.jsx(
|
|
74
|
-
|
|
75
|
-
|
|
76
|
+
return /*#__PURE__*/ jsxRuntime.jsx(designSystem.Box, {
|
|
77
|
+
paddingLeft: 4,
|
|
78
|
+
paddingRight: 4,
|
|
79
|
+
children: /*#__PURE__*/ jsxRuntime.jsx(Notification, {
|
|
80
|
+
...notification,
|
|
81
|
+
clearNotification: clearNotification
|
|
82
|
+
})
|
|
76
83
|
}, notification.id);
|
|
77
84
|
})
|
|
78
85
|
}),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Notifications.js","sources":["../../../../../admin/src/features/Notifications.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { Alert, AlertVariant, Flex, useCallbackRef, Link } from '@strapi/design-system';\nimport { useIntl } from 'react-intl';\n\ninterface NotificationLink {\n label: string;\n target?: string;\n url: string;\n}\n\ninterface NotificationConfig {\n blockTransition?: boolean;\n link?: NotificationLink;\n message?: string;\n onClose?: () => void;\n timeout?: number;\n title?: string;\n type?: 'info' | 'warning' | 'danger' | 'success';\n}\n\n/* -------------------------------------------------------------------------------------------------\n * Context\n * -----------------------------------------------------------------------------------------------*/\n\ninterface NotificationsContextValue {\n /**\n * Toggles a notification, wrapped in `useCallback` for a stable identity.\n */\n toggleNotification: (config: NotificationConfig) => void;\n}\n\nconst NotificationsContext = React.createContext<NotificationsContextValue>({\n toggleNotification: () => {},\n});\n\n/* -------------------------------------------------------------------------------------------------\n * Provider\n * -----------------------------------------------------------------------------------------------*/\n\ninterface NotificationsProviderProps {\n children: React.ReactNode;\n}\ninterface Notification extends NotificationConfig {\n id: number;\n}\n\n/**\n * @internal\n * @description DO NOT USE. This will be removed before stable release of v5.\n */\nconst NotificationsProvider = ({ children }: NotificationsProviderProps) => {\n const notificationIdRef = React.useRef(0);\n\n const [notifications, setNotifications] = React.useState<Notification[]>([]);\n\n const toggleNotification = React.useCallback(\n ({ type, message, link, timeout, blockTransition, onClose, title }: NotificationConfig) => {\n setNotifications((s) => [\n ...s,\n {\n id: notificationIdRef.current++,\n type,\n message,\n link,\n timeout,\n blockTransition,\n onClose,\n title,\n },\n ]);\n },\n []\n );\n\n const clearNotification = React.useCallback((id: number) => {\n setNotifications((s) => s.filter((n) => n.id !== id));\n }, []);\n\n const value = React.useMemo(() => ({ toggleNotification }), [toggleNotification]);\n\n return (\n <NotificationsContext.Provider value={value}>\n <Flex\n left=\"50%\"\n marginLeft=\"-250px\"\n position=\"fixed\"\n direction=\"column\"\n alignItems=\"stretch\"\n gap={2}\n top={`4.6rem`}\n width={`50rem`}\n zIndex=\"notification\"\n >\n {notifications.map((notification) => {\n return (\n <Notification\n key={notification.id}\n {...notification}\n clearNotification={clearNotification}\n />\n );\n })}\n </Flex>\n {children}\n </NotificationsContext.Provider>\n );\n};\n\ninterface NotificationProps extends Notification {\n clearNotification: (id: number) => void;\n}\n\nconst Notification = ({\n clearNotification,\n blockTransition = false,\n id,\n link,\n message,\n onClose,\n timeout = 2500,\n title,\n type,\n}: NotificationProps) => {\n const { formatMessage } = useIntl();\n /**\n * Chances are `onClose` won't be classed as stabilised,\n * so we use `useCallbackRef` to avoid make it stable.\n */\n const onCloseCallback = useCallbackRef(onClose);\n\n const handleClose = React.useCallback(() => {\n onCloseCallback();\n\n clearNotification(id);\n }, [clearNotification, id, onCloseCallback]);\n\n // eslint-disable-next-line consistent-return\n React.useEffect(() => {\n if (!blockTransition) {\n const timeoutReference = setTimeout(() => {\n handleClose();\n }, timeout);\n\n return () => {\n clearTimeout(timeoutReference);\n };\n }\n }, [blockTransition, handleClose, timeout]);\n\n const getVariant = (): AlertVariant => {\n switch (type) {\n case 'info':\n return 'default';\n case 'danger':\n return 'danger';\n case 'warning':\n return 'warning';\n default:\n return 'success';\n }\n };\n\n return (\n <Alert\n action={\n link ? (\n <Link href={link.url} isExternal>\n {link.label}\n </Link>\n ) : undefined\n }\n onClose={handleClose}\n closeLabel={formatMessage({\n id: 'global.close',\n defaultMessage: 'Close',\n })}\n title={title}\n variant={getVariant()}\n >\n {message}\n </Alert>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * Hook\n * -----------------------------------------------------------------------------------------------*/\n\n/**\n * @preserve\n * @description Returns an object to interact with the notification\n * system. The callbacks are wrapped in `useCallback` for a stable\n * identity.\n *\n * @example\n * ```tsx\n * import { useNotification } from '@strapi/strapi/admin';\n *\n * const MyComponent = () => {\n * const { toggleNotification } = useNotification();\n *\n * return <button onClick={() => toggleNotification({ message: 'Hello world!' })}>Click me</button>;\n */\nconst useNotification = () => React.useContext(NotificationsContext);\n\nexport { NotificationsProvider, useNotification };\nexport type { NotificationConfig, NotificationsContextValue };\n"],"names":["NotificationsContext","React","createContext","toggleNotification","NotificationsProvider","children","notificationIdRef","useRef","notifications","setNotifications","useState","useCallback","type","message","link","timeout","blockTransition","onClose","title","s","id","current","clearNotification","filter","n","value","useMemo","_jsxs","Provider","_jsx","Flex","left","marginLeft","position","direction","alignItems","gap","top","width","zIndex","map","notification","Notification","formatMessage","useIntl","onCloseCallback","useCallbackRef","handleClose","useEffect","timeoutReference","setTimeout","clearTimeout","getVariant","Alert","action","Link","href","url","isExternal","label","undefined","closeLabel","defaultMessage","variant","useNotification","useContext"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Notifications.js","sources":["../../../../../admin/src/features/Notifications.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { Alert, AlertVariant, Flex, useCallbackRef, Link, Box } from '@strapi/design-system';\nimport { useIntl } from 'react-intl';\n\nimport { HEIGHT_TOP_NAVIGATION } from '../constants/theme';\n\ninterface NotificationLink {\n label: string;\n target?: string;\n url: string;\n}\n\ninterface NotificationConfig {\n blockTransition?: boolean;\n link?: NotificationLink;\n message?: string;\n onClose?: () => void;\n timeout?: number;\n title?: string;\n type?: 'info' | 'warning' | 'danger' | 'success';\n}\n\n/* -------------------------------------------------------------------------------------------------\n * Context\n * -----------------------------------------------------------------------------------------------*/\n\ninterface NotificationsContextValue {\n /**\n * Toggles a notification, wrapped in `useCallback` for a stable identity.\n */\n toggleNotification: (config: NotificationConfig) => void;\n}\n\nconst NotificationsContext = React.createContext<NotificationsContextValue>({\n toggleNotification: () => {},\n});\n\n/* -------------------------------------------------------------------------------------------------\n * Provider\n * -----------------------------------------------------------------------------------------------*/\n\ninterface NotificationsProviderProps {\n children: React.ReactNode;\n}\ninterface Notification extends NotificationConfig {\n id: number;\n}\n\n/**\n * @internal\n * @description DO NOT USE. This will be removed before stable release of v5.\n */\nconst NotificationsProvider = ({ children }: NotificationsProviderProps) => {\n const notificationIdRef = React.useRef(0);\n\n const [notifications, setNotifications] = React.useState<Notification[]>([]);\n\n const toggleNotification = React.useCallback(\n ({ type, message, link, timeout, blockTransition, onClose, title }: NotificationConfig) => {\n setNotifications((s) => [\n ...s,\n {\n id: notificationIdRef.current++,\n type,\n message,\n link,\n timeout,\n blockTransition,\n onClose,\n title,\n },\n ]);\n },\n []\n );\n\n const clearNotification = React.useCallback((id: number) => {\n setNotifications((s) => s.filter((n) => n.id !== id));\n }, []);\n\n const value = React.useMemo(() => ({ toggleNotification }), [toggleNotification]);\n\n return (\n <NotificationsContext.Provider value={value}>\n <Flex\n left=\"50%\"\n transform=\"translateX(-50%)\"\n position=\"fixed\"\n direction=\"column\"\n alignItems=\"stretch\"\n gap={4}\n marginTop={4}\n top={HEIGHT_TOP_NAVIGATION}\n width=\"100%\"\n maxWidth={`50rem`}\n zIndex=\"notification\"\n >\n {notifications.map((notification) => {\n return (\n <Box key={notification.id} paddingLeft={4} paddingRight={4}>\n <Notification {...notification} clearNotification={clearNotification} />\n </Box>\n );\n })}\n </Flex>\n {children}\n </NotificationsContext.Provider>\n );\n};\n\ninterface NotificationProps extends Notification {\n clearNotification: (id: number) => void;\n}\n\nconst Notification = ({\n clearNotification,\n blockTransition = false,\n id,\n link,\n message,\n onClose,\n timeout = 2500,\n title,\n type,\n}: NotificationProps) => {\n const { formatMessage } = useIntl();\n /**\n * Chances are `onClose` won't be classed as stabilised,\n * so we use `useCallbackRef` to avoid make it stable.\n */\n const onCloseCallback = useCallbackRef(onClose);\n\n const handleClose = React.useCallback(() => {\n onCloseCallback();\n\n clearNotification(id);\n }, [clearNotification, id, onCloseCallback]);\n\n // eslint-disable-next-line consistent-return\n React.useEffect(() => {\n if (!blockTransition) {\n const timeoutReference = setTimeout(() => {\n handleClose();\n }, timeout);\n\n return () => {\n clearTimeout(timeoutReference);\n };\n }\n }, [blockTransition, handleClose, timeout]);\n\n const getVariant = (): AlertVariant => {\n switch (type) {\n case 'info':\n return 'default';\n case 'danger':\n return 'danger';\n case 'warning':\n return 'warning';\n default:\n return 'success';\n }\n };\n\n return (\n <Alert\n action={\n link ? (\n <Link href={link.url} isExternal>\n {link.label}\n </Link>\n ) : undefined\n }\n onClose={handleClose}\n closeLabel={formatMessage({\n id: 'global.close',\n defaultMessage: 'Close',\n })}\n title={title}\n variant={getVariant()}\n >\n {message}\n </Alert>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * Hook\n * -----------------------------------------------------------------------------------------------*/\n\n/**\n * @preserve\n * @description Returns an object to interact with the notification\n * system. The callbacks are wrapped in `useCallback` for a stable\n * identity.\n *\n * @example\n * ```tsx\n * import { useNotification } from '@strapi/strapi/admin';\n *\n * const MyComponent = () => {\n * const { toggleNotification } = useNotification();\n *\n * return <button onClick={() => toggleNotification({ message: 'Hello world!' })}>Click me</button>;\n */\nconst useNotification = () => React.useContext(NotificationsContext);\n\nexport { NotificationsProvider, useNotification };\nexport type { NotificationConfig, NotificationsContextValue };\n"],"names":["NotificationsContext","React","createContext","toggleNotification","NotificationsProvider","children","notificationIdRef","useRef","notifications","setNotifications","useState","useCallback","type","message","link","timeout","blockTransition","onClose","title","s","id","current","clearNotification","filter","n","value","useMemo","_jsxs","Provider","_jsx","Flex","left","transform","position","direction","alignItems","gap","marginTop","top","HEIGHT_TOP_NAVIGATION","width","maxWidth","zIndex","map","notification","Box","paddingLeft","paddingRight","Notification","formatMessage","useIntl","onCloseCallback","useCallbackRef","handleClose","useEffect","timeoutReference","setTimeout","clearTimeout","getVariant","Alert","action","Link","href","url","isExternal","label","undefined","closeLabel","defaultMessage","variant","useNotification","useContext"],"mappings":"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"}
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
import { jsxs, jsx } from 'react/jsx-runtime';
|
|
2
2
|
import * as React from 'react';
|
|
3
|
-
import { Flex, useCallbackRef, Alert, Link } from '@strapi/design-system';
|
|
3
|
+
import { Flex, Box, useCallbackRef, Alert, Link } from '@strapi/design-system';
|
|
4
4
|
import { useIntl } from 'react-intl';
|
|
5
|
+
import { HEIGHT_TOP_NAVIGATION } from '../constants/theme.mjs';
|
|
5
6
|
|
|
6
7
|
const NotificationsContext = /*#__PURE__*/ React.createContext({
|
|
7
8
|
toggleNotification: ()=>{}
|
|
@@ -40,18 +41,24 @@ const NotificationsContext = /*#__PURE__*/ React.createContext({
|
|
|
40
41
|
children: [
|
|
41
42
|
/*#__PURE__*/ jsx(Flex, {
|
|
42
43
|
left: "50%",
|
|
43
|
-
|
|
44
|
+
transform: "translateX(-50%)",
|
|
44
45
|
position: "fixed",
|
|
45
46
|
direction: "column",
|
|
46
47
|
alignItems: "stretch",
|
|
47
|
-
gap:
|
|
48
|
-
|
|
49
|
-
|
|
48
|
+
gap: 4,
|
|
49
|
+
marginTop: 4,
|
|
50
|
+
top: HEIGHT_TOP_NAVIGATION,
|
|
51
|
+
width: "100%",
|
|
52
|
+
maxWidth: `50rem`,
|
|
50
53
|
zIndex: "notification",
|
|
51
54
|
children: notifications.map((notification)=>{
|
|
52
|
-
return /*#__PURE__*/ jsx(
|
|
53
|
-
|
|
54
|
-
|
|
55
|
+
return /*#__PURE__*/ jsx(Box, {
|
|
56
|
+
paddingLeft: 4,
|
|
57
|
+
paddingRight: 4,
|
|
58
|
+
children: /*#__PURE__*/ jsx(Notification, {
|
|
59
|
+
...notification,
|
|
60
|
+
clearNotification: clearNotification
|
|
61
|
+
})
|
|
55
62
|
}, notification.id);
|
|
56
63
|
})
|
|
57
64
|
}),
|