@shopgate/engage 7.32.0-beta.2 → 7.32.0-beta.20
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/account/components/Profile/Profile.provider.d.ts +1 -1
- package/account/components/Profile/ProfileAddressBook.d.ts.map +1 -1
- package/account/components/Profile/ProfileAddressBook.js +13 -22
- package/account/components/Profile/ProfileAddressCard.d.ts.map +1 -1
- package/account/components/Profile/ProfileAddressCard.js +9 -18
- package/account/components/Profile/ProfileForm.d.ts.map +1 -1
- package/account/components/Profile/ProfileForm.js +15 -42
- package/account/components/ProfileContact/ProfileContact.js +13 -21
- package/admin-preview/components/FrontendSettingsPreviewBridge/FrontendSettingsPreviewBridge.d.ts +2 -1
- package/admin-preview/components/FrontendSettingsPreviewBridge/FrontendSettingsPreviewBridge.d.ts.map +1 -1
- package/admin-preview/components/FrontendSettingsPreviewBridge/FrontendSettingsPreviewBridge.js +61 -5
- package/admin-preview/components/FrontendSettingsPreviewBridge/helpers.d.ts +7 -1
- package/admin-preview/components/FrontendSettingsPreviewBridge/helpers.d.ts.map +1 -1
- package/admin-preview/components/FrontendSettingsPreviewBridge/helpers.js +14 -2
- package/admin-preview/components/FrontendSettingsPreviewBridge/types.d.ts +15 -2
- package/admin-preview/components/FrontendSettingsPreviewBridge/types.d.ts.map +1 -1
- package/admin-preview/constants/index.d.ts +9 -22
- package/admin-preview/constants/index.d.ts.map +1 -1
- package/admin-preview/constants/index.js +10 -27
- package/admin-preview/{detection.d.ts → helpers/_internal/detection.d.ts} +12 -8
- package/admin-preview/helpers/_internal/detection.d.ts.map +1 -0
- package/admin-preview/helpers/_internal/detection.js +93 -0
- package/admin-preview/helpers/_internal/origins.d.ts +20 -0
- package/admin-preview/helpers/_internal/origins.d.ts.map +1 -0
- package/admin-preview/helpers/_internal/origins.js +72 -0
- package/admin-preview/helpers/index.d.ts +20 -0
- package/admin-preview/helpers/index.d.ts.map +1 -1
- package/admin-preview/helpers/index.js +26 -2
- package/admin-preview/hooks/index.d.ts +9 -7
- package/admin-preview/hooks/index.d.ts.map +1 -1
- package/admin-preview/hooks/index.js +21 -18
- package/admin-preview/initialization/_internal/initialFrontendSettings.d.ts +32 -0
- package/admin-preview/initialization/_internal/initialFrontendSettings.d.ts.map +1 -0
- package/admin-preview/initialization/_internal/initialFrontendSettings.js +43 -0
- package/admin-preview/initialization/awaitInitialFrontendSettings.d.ts +23 -0
- package/admin-preview/initialization/awaitInitialFrontendSettings.d.ts.map +1 -0
- package/admin-preview/initialization/awaitInitialFrontendSettings.js +88 -0
- package/back-in-stock/components/BackInStockButton/index.js +5 -5
- package/back-in-stock/components/Subscriptions/components/Subscription/index.js +2 -5
- package/cart/components/CartItem/CartItemProductLayout.js +2 -1
- package/cart/components/CartItem/CartItemProductLayoutWide.js +2 -2
- package/cart/components/CartItem/CartItemProductLayoutWideRemoveItem.js +7 -14
- package/cart/components/CartItem/CartItemQuantityPicker.js +3 -2
- package/cart/components/CartItems/CartItemCardReservationLabelChangeStore.js +6 -24
- package/cart/components/CartItems/CartItems.js +8 -10
- package/cart/components/CartItems/CartItemsSubstitution.js +3 -2
- package/cart/components/CartSummaryWide/CartSummaryWide.js +2 -2
- package/cart/components/CartSummaryWide/CartSummaryWideCheckoutButton.js +9 -23
- package/cart/components/PaymentBar/PaymentBarCheckoutButton.js +8 -30
- package/cart/components/PaymentBar/testUtils/mockFactories.js +4 -11
- package/category/components/CategoryImage/index.js +24 -17
- package/checkout/components/AddressBook/AddressList.js +14 -23
- package/checkout/components/Checkout/CheckoutActions.js +4 -3
- package/checkout/components/Checkout/CheckoutAddress.js +8 -0
- package/checkout/components/Checkout/CheckoutSection.js +6 -2
- package/checkout/components/CheckoutConfirmation/CheckoutConfirmation.js +6 -7
- package/checkout/components/ResponsiveBackButton/ResponsiveBackButton.js +7 -17
- package/components/Badge/Badge.d.ts +30 -0
- package/components/Badge/Badge.d.ts.map +1 -0
- package/components/Badge/Badge.js +49 -0
- package/components/Badge/index.d.ts +3 -0
- package/components/Badge/index.d.ts.map +1 -0
- package/components/Badge/index.js +1 -0
- package/components/Card/Card.d.ts +27 -0
- package/components/Card/Card.d.ts.map +1 -0
- package/components/Card/Card.js +57 -0
- package/components/Card/index.d.ts +4 -0
- package/components/Card/index.d.ts.map +1 -0
- package/components/Card/index.js +2 -0
- package/components/Card/useCardAppearance.d.ts +11 -0
- package/components/Card/useCardAppearance.d.ts.map +1 -0
- package/components/Card/useCardAppearance.js +22 -0
- package/components/ChipLayout/index.js +2 -4
- package/components/NavigationHandler/connector.js +1 -1
- package/components/NavigationHandler/index.d.ts +2 -2
- package/components/Paper/Paper.d.ts +48 -0
- package/components/Paper/Paper.d.ts.map +1 -0
- package/components/Paper/Paper.js +64 -0
- package/components/Paper/index.d.ts +3 -0
- package/components/Paper/index.d.ts.map +1 -0
- package/components/Paper/index.js +1 -0
- package/components/RadioCard/RadioCard.d.ts.map +1 -1
- package/components/RadioCard/RadioCard.js +2 -1
- package/components/SheetList/components/Item/index.js +8 -8
- package/components/Tabs/components/Tab.d.ts.map +1 -1
- package/components/Tabs/components/Tab.js +14 -16
- package/components/Typography/Typography.d.ts +1 -1
- package/components/Typography/Typography.d.ts.map +1 -1
- package/components/Typography/Typography.js +2 -0
- package/components/View/components/Content/index.d.ts.map +1 -1
- package/components/View/components/Content/index.js +4 -1
- package/components/constants.d.ts +6 -0
- package/components/constants.d.ts.map +1 -0
- package/components/index.d.ts +6 -1
- package/components/index.d.ts.map +1 -1
- package/components/index.js +6 -2
- package/components/v2/Button/Button.d.ts +24 -13
- package/components/v2/Button/Button.d.ts.map +1 -1
- package/components/v2/Button/Button.js +139 -41
- package/components/v2/ButtonBase/ButtonBase.d.ts +50 -10
- package/components/v2/ButtonBase/ButtonBase.d.ts.map +1 -1
- package/components/v2/ButtonBase/ButtonBase.js +192 -17
- package/components/v2/ButtonBase/hooks.d.ts +0 -1
- package/components/v2/ButtonBase/hooks.d.ts.map +1 -1
- package/components/v2/ButtonBase/hooks.js +36 -12
- package/components/v2/ButtonGroup/ButtonGroup.d.ts +11 -5
- package/components/v2/ButtonGroup/ButtonGroup.d.ts.map +1 -1
- package/components/v2/ButtonGroup/ButtonGroup.js +49 -26
- package/components/v2/CircularProgress/CircularProgress.d.ts.map +1 -1
- package/components/v2/CircularProgress/CircularProgress.js +10 -5
- package/components/v2/IconButton/IconButton.d.ts +72 -0
- package/components/v2/IconButton/IconButton.d.ts.map +1 -0
- package/components/v2/IconButton/IconButton.js +169 -0
- package/components/v2/IconButton/index.d.ts +3 -0
- package/components/v2/IconButton/index.d.ts.map +1 -0
- package/components/v2/IconButton/index.js +1 -0
- package/components/v2/index.d.ts +1 -0
- package/components/v2/index.d.ts.map +1 -1
- package/components/v2/index.js +1 -0
- package/core/helpers/getFullImageSource.d.ts +5 -1
- package/core/helpers/getFullImageSource.d.ts.map +1 -1
- package/core/helpers/getFullImageSource.js +30 -14
- package/core/helpers/i18n.d.ts +4 -0
- package/core/helpers/i18n.d.ts.map +1 -1
- package/core/helpers/i18n.js +3 -0
- package/core/hooks/events/appEvents.d.ts +31 -46
- package/core/hooks/events/appEvents.d.ts.map +1 -0
- package/core/hooks/events/appEvents.js +26 -29
- package/core/hooks/events/index.d.ts +4 -4
- package/core/hooks/events/index.d.ts.map +1 -1
- package/core/hooks/events/useLongPress.d.ts +55 -58
- package/core/hooks/events/useLongPress.d.ts.map +1 -0
- package/core/hooks/events/useLongPress.js +23 -16
- package/core/hooks/events/usePressHandler.d.ts +32 -21
- package/core/hooks/events/usePressHandler.d.ts.map +1 -1
- package/core/hooks/events/usePressHandler.js +12 -10
- package/core/hooks/events/useScrollDirectionChange.d.ts +72 -61
- package/core/hooks/events/useScrollDirectionChange.d.ts.map +1 -0
- package/core/hooks/events/useScrollDirectionChange.js +36 -43
- package/core/hooks/html/useLoadImage.d.ts +3 -3
- package/core/hooks/html/useLoadImage.d.ts.map +1 -1
- package/core/hooks/html/useLoadImage.js +2 -2
- package/core/hooks/useLocalStorage.d.ts +8 -0
- package/core/hooks/useLocalStorage.d.ts.map +1 -1
- package/core/hooks/useLocalStorage.js +22 -15
- package/core/hooks/useNavigation.d.ts +10 -2
- package/core/hooks/useNavigation.d.ts.map +1 -1
- package/core/hooks/useNavigation.js +1 -2
- package/core/initialization/fetchSettings.d.ts +12 -0
- package/core/initialization/fetchSettings.d.ts.map +1 -0
- package/core/initialization/fetchSettings.js +134 -0
- package/core/initialization/index.d.ts +33 -2
- package/core/initialization/index.d.ts.map +1 -1
- package/core/initialization/index.js +44 -103
- package/core/router/conductor.d.ts +9 -0
- package/core/router/helpers.d.ts +28 -15
- package/core/router/helpers.d.ts.map +1 -1
- package/core/router/helpers.js +8 -8
- package/development/action-creators/index.d.ts +3 -0
- package/development/action-creators/index.d.ts.map +1 -0
- package/development/action-creators/settings.d.ts +45 -0
- package/development/action-creators/settings.d.ts.map +1 -0
- package/development/action-creators/settings.js +21 -10
- package/development/action-creators/storage.d.ts +17 -0
- package/development/action-creators/storage.d.ts.map +1 -0
- package/development/action-creators/storage.js +7 -4
- package/development/components/ClientInformation/ClientInformation.d.ts +6 -0
- package/development/components/ClientInformation/ClientInformation.d.ts.map +1 -0
- package/development/components/ClientInformation/ClientInformation.js +7 -4
- package/development/components/ClientInformation/actions.d.ts +6 -0
- package/development/components/ClientInformation/actions.d.ts.map +1 -0
- package/development/components/ClientInformation/actions.js +1 -1
- package/development/components/ClientInformation/index.d.ts +2 -0
- package/development/components/ClientInformation/index.d.ts.map +1 -0
- package/development/components/DevelopmentSettings/DevelopmentSettings.d.ts +16 -0
- package/development/components/DevelopmentSettings/DevelopmentSettings.d.ts.map +1 -0
- package/development/components/DevelopmentSettings/DevelopmentSettings.js +43 -30
- package/development/components/DevelopmentSettings/index.d.ts +2 -0
- package/development/components/DevelopmentSettings/index.d.ts.map +1 -0
- package/development/components/DevelopmentTools/DevelopmentTools.d.ts +10 -0
- package/development/components/DevelopmentTools/DevelopmentTools.d.ts.map +1 -0
- package/development/components/DevelopmentTools/DevelopmentTools.js +8 -8
- package/development/components/DevelopmentTools/Shortcuts.d.ts +6 -0
- package/development/components/DevelopmentTools/Shortcuts.d.ts.map +1 -0
- package/development/components/DevelopmentTools/Shortcuts.js +0 -1
- package/development/components/DevelopmentTools/hooks.d.ts +8 -0
- package/development/components/DevelopmentTools/hooks.d.ts.map +1 -0
- package/development/components/DevelopmentTools/hooks.js +2 -3
- package/development/components/DevelopmentTools/index.d.ts +2 -0
- package/development/components/DevelopmentTools/index.d.ts.map +1 -0
- package/development/components/SimulatedInsets/SimulatedInsetBottom.d.ts +7 -0
- package/development/components/SimulatedInsets/SimulatedInsetBottom.d.ts.map +1 -0
- package/development/components/SimulatedInsets/SimulatedInsetBottom.js +1 -6
- package/development/components/SimulatedInsets/SimulatedInsetTop.d.ts +7 -0
- package/development/components/SimulatedInsets/SimulatedInsetTop.d.ts.map +1 -0
- package/development/components/SimulatedInsets/SimulatedInsetTop.js +2 -7
- package/development/components/SimulatedInsets/SimulatedInsets.d.ts +13 -0
- package/development/components/SimulatedInsets/SimulatedInsets.d.ts.map +1 -0
- package/development/components/SimulatedInsets/SimulatedInsets.js +2 -7
- package/development/components/SimulatedInsets/index.d.ts +2 -0
- package/development/components/SimulatedInsets/index.d.ts.map +1 -0
- package/development/components/SimulatedInsets/types.d.ts +15 -0
- package/development/components/SimulatedInsets/types.d.ts.map +1 -0
- package/development/components/SimulatedInsets/types.js +1 -0
- package/development/components/index.d.ts +3 -0
- package/development/components/index.d.ts.map +1 -0
- package/development/constants/actionTypes.d.ts +6 -0
- package/development/constants/actionTypes.d.ts.map +1 -0
- package/development/constants/actionTypes.js +2 -1
- package/development/constants/index.d.ts +2 -0
- package/development/constants/index.d.ts.map +1 -0
- package/development/reducers/index.d.ts +24 -0
- package/development/reducers/index.d.ts.map +1 -0
- package/development/reducers/settings.d.ts +17 -0
- package/development/reducers/settings.d.ts.map +1 -0
- package/development/reducers/settings.js +48 -35
- package/development/reducers/storage.d.ts +17 -0
- package/development/reducers/storage.d.ts.map +1 -0
- package/development/reducers/storage.js +24 -24
- package/development/selectors/index.d.ts +3 -0
- package/development/selectors/index.d.ts.map +1 -0
- package/development/selectors/settings.d.ts +52 -0
- package/development/selectors/settings.d.ts.map +1 -0
- package/development/selectors/settings.js +21 -11
- package/development/selectors/storage.d.ts +10 -0
- package/development/selectors/storage.d.ts.map +1 -0
- package/development/selectors/storage.js +6 -18
- package/development/streams/index.d.ts +2 -0
- package/development/streams/index.d.ts.map +1 -0
- package/development/streams/insets.d.ts +8 -0
- package/development/streams/insets.d.ts.map +1 -0
- package/development/streams/insets.js +1 -3
- package/development/subscriptions/index.d.ts +15 -0
- package/development/subscriptions/index.d.ts.map +1 -0
- package/development/subscriptions/index.js +6 -2
- package/development/types/development.d.ts +68 -0
- package/development/types/development.d.ts.map +1 -0
- package/development/types/development.js +1 -0
- package/development/types/index.d.ts +2 -0
- package/development/types/index.d.ts.map +1 -0
- package/development/types/index.js +1 -0
- package/favorites/components/FavoriteButtonWide/FavoriteButtonWide.js +7 -17
- package/favorites/components/Item/Item.d.ts +1 -1
- package/favorites/components/Item/Item.d.ts.map +1 -1
- package/favorites/components/Item/Item.js +2 -5
- package/favorites/components/List/List.d.ts +1 -1
- package/favorites/components/List/List.d.ts.map +1 -1
- package/favorites/components/List/List.js +0 -1
- package/favorites/components/List/ListContent.js +4 -5
- package/favorites/components/Lists/Lists.js +4 -5
- package/filter/components/FilterItem/index.js +12 -2
- package/filter/components/FilterPageContent/components/ApplyButton/index.d.ts +21 -0
- package/filter/components/FilterPageContent/components/ApplyButton/index.d.ts.map +1 -0
- package/filter/components/FilterPageContent/components/ApplyButton/index.js +27 -56
- package/filter/components/FilterPageContent/components/FilterButtonBar/index.d.ts +8 -0
- package/filter/components/FilterPageContent/components/FilterButtonBar/index.d.ts.map +1 -0
- package/filter/components/FilterPageContent/components/FilterButtonBar/index.js +63 -0
- package/filter/components/FilterPageContent/components/ResetButton/index.d.ts +17 -0
- package/filter/components/FilterPageContent/components/ResetButton/index.d.ts.map +1 -0
- package/filter/components/FilterPageContent/components/ResetButton/index.js +26 -46
- package/filter/components/FilterPageContent/components/Selector/components/Selected/index.d.ts +19 -0
- package/filter/components/FilterPageContent/components/Selector/components/Selected/index.d.ts.map +1 -0
- package/filter/components/FilterPageContent/components/Selector/components/Selected/index.js +25 -46
- package/filter/components/FilterPageContent/components/Selector/components/Toggle/index.d.ts +14 -0
- package/filter/components/FilterPageContent/components/Selector/components/Toggle/index.d.ts.map +1 -0
- package/filter/components/FilterPageContent/components/Selector/components/Toggle/index.js +13 -46
- package/filter/components/FilterPageContent/components/Selector/components/ValueCheckbox/index.d.ts +25 -0
- package/filter/components/FilterPageContent/components/Selector/components/ValueCheckbox/index.d.ts.map +1 -0
- package/filter/components/FilterPageContent/components/Selector/components/ValueCheckbox/index.js +77 -0
- package/filter/components/FilterPageContent/components/Selector/index.d.ts +43 -0
- package/filter/components/FilterPageContent/components/Selector/index.d.ts.map +1 -0
- package/filter/components/FilterPageContent/components/Selector/index.js +52 -40
- package/filter/components/FilterPageContent/index.d.ts +16 -0
- package/filter/components/FilterPageContent/index.d.ts.map +1 -0
- package/filter/components/FilterPageContent/index.js +51 -57
- package/filter/components/PriceSlider/components/Label/index.js +86 -94
- package/filter/components/PriceSlider/index.js +43 -30
- package/filter/helpers/buildFilterParamsForFetchFiltersRequest.d.ts +8 -0
- package/filter/helpers/buildFilterParamsForFetchFiltersRequest.d.ts.map +1 -0
- package/filter/helpers/buildInitialFilters.d.ts +7 -0
- package/filter/helpers/buildInitialFilters.d.ts.map +1 -0
- package/filter/helpers/buildUpdatedFilters.d.ts +7 -0
- package/filter/helpers/buildUpdatedFilters.d.ts.map +1 -0
- package/filter/helpers/index.d.ts +5 -0
- package/filter/helpers/index.d.ts.map +1 -0
- package/filter/helpers/translateFilterLabel.d.ts +8 -0
- package/filter/helpers/translateFilterLabel.d.ts.map +1 -0
- package/filter/providers/FilterPageProvider.context.d.ts +157 -0
- package/filter/providers/FilterPageProvider.context.d.ts.map +1 -0
- package/filter/providers/FilterPageProvider.d.ts +24 -0
- package/filter/providers/FilterPageProvider.d.ts.map +1 -0
- package/filter/providers/FilterPageProvider.js +77 -132
- package/locations/components/ChangeLocationButton/ChangeLocationButton.js +10 -14
- package/locations/components/FulfillmentSlotSwitcher/FulfillmentSlotDialog.js +4 -8
- package/locations/components/FulfillmentSlotSwitcher/FulfillmentSlotSwitcher.js +1 -1
- package/locations/components/FulfillmentSlotSwitcher/FulfillmentSlotSwitcherBar.js +8 -13
- package/locations/components/FulfillmentSlotSwitcher/FulfillmentSlotSwitcherDefault.js +10 -10
- package/locations/components/GlobalLocationSwitcher/GlobalLocationSwitcherBar.js +12 -16
- package/locations/components/GlobalLocationSwitcher/GlobalLocationSwitcherDefault.js +9 -10
- package/locations/components/ReserveForm/ReserveForm.js +6 -7
- package/locations/components/StoreDetails/components/GetDirectionsButton.js +2 -4
- package/locations/components/StoreDetails/components/StoreDetails.js +5 -10
- package/locations/components/StoreDetails/components/StoresNearbyListItem.js +13 -21
- package/locations/components/StoreFinder/StoreFinderSelectLocationButton.js +5 -11
- package/locations/components/StoreFinder/StoreFinderStoreInfoButton.js +5 -11
- package/locations/components/StoreList/StoreListProduct.js +2 -3
- package/locations/components/StoreList/StoreListSearch.js +1 -0
- package/locations/components/StoreList/StoreSelectLocationButton.js +5 -11
- package/login/components/ForgotPassword/ForgotPassword.js +11 -23
- package/mocks/date.js +31 -0
- package/mocks/index.js +3 -0
- package/mocks/pipelineRequest.js +1 -0
- package/mocks/subscriptions.js +1 -0
- package/orders/components/OrderDetails/OrderDetailsAuthenticate.js +5 -7
- package/orders/components/OrderHistory/OrderHistoryList.d.ts.map +1 -1
- package/orders/components/OrderHistory/OrderHistoryList.js +8 -9
- package/orders/components/OrderHistory/OrderHistoryTable.d.ts.map +1 -1
- package/orders/components/OrderHistory/OrderHistoryTable.js +4 -0
- package/package.json +9 -9
- package/page/components/NotFound.d.ts +7 -0
- package/page/components/NotFound.d.ts.map +1 -0
- package/page/components/NotFound.js +8 -8
- package/page/components/ResponsiveWidgetImage/ResponsiveWidgetImage.d.ts +52 -0
- package/page/components/ResponsiveWidgetImage/ResponsiveWidgetImage.d.ts.map +1 -0
- package/page/components/ResponsiveWidgetImage/ResponsiveWidgetImage.js +4 -4
- package/page/components/ResponsiveWidgetImage/index.d.ts +2 -0
- package/page/components/ResponsiveWidgetImage/index.d.ts.map +1 -0
- package/page/components/WidgetRichText/WidgetRichText.d.ts +25 -0
- package/page/components/WidgetRichText/WidgetRichText.d.ts.map +1 -0
- package/page/components/WidgetRichText/index.d.ts +2 -0
- package/page/components/WidgetRichText/index.d.ts.map +1 -0
- package/page/components/WidgetVideo/WidgetVideo.d.ts +43 -0
- package/page/components/WidgetVideo/WidgetVideo.d.ts.map +1 -0
- package/page/components/WidgetVideo/WidgetVideo.js +33 -39
- package/page/components/WidgetVideo/index.d.ts +2 -0
- package/page/components/WidgetVideo/index.d.ts.map +1 -0
- package/page/components/Widgets/Overlay.d.ts +17 -0
- package/page/components/Widgets/Overlay.d.ts.map +1 -0
- package/page/components/Widgets/Overlay.js +24 -38
- package/page/components/Widgets/Tooltip.d.ts +20 -0
- package/page/components/Widgets/Tooltip.d.ts.map +1 -0
- package/page/components/Widgets/Tooltip.js +6 -10
- package/page/components/Widgets/Widget.d.ts +32 -0
- package/page/components/Widgets/Widget.d.ts.map +1 -0
- package/page/components/Widgets/Widget.js +14 -28
- package/page/components/Widgets/WidgetContext.d.ts +32 -38
- package/page/components/Widgets/WidgetContext.d.ts.map +1 -0
- package/page/components/Widgets/WidgetContext.js +2 -8
- package/page/components/Widgets/WidgetProvider.d.ts +29 -0
- package/page/components/Widgets/WidgetProvider.d.ts.map +1 -0
- package/page/components/Widgets/WidgetProvider.js +8 -15
- package/page/components/Widgets/Widgets.d.ts +16 -0
- package/page/components/Widgets/Widgets.d.ts.map +1 -0
- package/page/components/Widgets/Widgets.js +5 -12
- package/page/components/Widgets/WidgetsPreviewContext.d.ts +21 -0
- package/page/components/Widgets/WidgetsPreviewContext.d.ts.map +1 -0
- package/page/components/Widgets/WidgetsPreviewContext.js +5 -7
- package/page/components/Widgets/WidgetsPreviewProvider.d.ts +18 -0
- package/page/components/Widgets/WidgetsPreviewProvider.d.ts.map +1 -0
- package/page/components/Widgets/WidgetsPreviewProvider.js +5 -6
- package/page/components/Widgets/constants.d.ts +18 -0
- package/page/components/Widgets/constants.d.ts.map +1 -0
- package/page/components/Widgets/constants.js +24 -2
- package/page/components/Widgets/events.d.ts +38 -0
- package/page/components/Widgets/events.d.ts.map +1 -0
- package/page/components/Widgets/events.js +8 -12
- package/page/components/Widgets/helpers.d.ts +69 -0
- package/page/components/Widgets/helpers.d.ts.map +1 -0
- package/page/components/Widgets/helpers.js +58 -13
- package/page/components/Widgets/hooks.d.ts +13 -0
- package/page/components/Widgets/hooks.d.ts.map +1 -0
- package/page/components/Widgets/hooks.js +18 -12
- package/page/components/Widgets/index.d.ts +3 -0
- package/page/components/Widgets/index.d.ts.map +1 -0
- package/page/components/Widgets/types.d.ts +138 -114
- package/page/components/Widgets/types.d.ts.map +1 -0
- package/page/components/Widgets/types.js +1 -0
- package/page/components/index.d.ts +5 -0
- package/page/components/index.d.ts.map +1 -0
- package/page/constants/actionTypes.d.ts +4 -0
- package/page/constants/actionTypes.d.ts.map +1 -0
- package/page/constants/index.d.ts +25 -0
- package/page/constants/index.d.ts.map +1 -0
- package/page/constants/index.js +5 -3
- package/page/helpers/index.d.ts +70 -62
- package/page/helpers/index.d.ts.map +1 -0
- package/page/helpers/index.js +31 -29
- package/page/hooks/index.d.ts +54 -53
- package/page/hooks/index.d.ts.map +1 -0
- package/page/hooks/index.js +20 -15
- package/page/selectors/index.d.ts +32 -0
- package/page/selectors/index.d.ts.map +1 -0
- package/page/widget.config.schema.json +54 -0
- package/page/widgets/Button/Button.js +2 -3
- package/page/widgets/CategoryList/CategoryList.js +2 -1
- package/page/widgets/HeroBanner/config.json +6 -0
- package/page/widgets/Image/config.json +6 -0
- package/page/widgets/ImageRow/config.json +6 -0
- package/page/widgets/ImageSlider/config.json +6 -0
- package/page/widgets/ImageSlider/hooks.js +4 -2
- package/page/widgets/NestedCategoryFilter/NestedCategoryFilter.js +8 -8
- package/page/widgets/ProductList/ProductList.js +18 -14
- package/page/widgets/ProductSlider/ProductSlider.js +1 -15
- package/page/widgets/README.md +92 -0
- package/page/widgets/Video/Video.d.ts +6 -0
- package/page/widgets/Video/Video.d.ts.map +1 -0
- package/page/widgets/Video/Video.js +0 -2
- package/page/widgets/Video/config.json +6 -0
- package/page/widgets/Video/hooks.d.ts +53 -0
- package/page/widgets/Video/hooks.d.ts.map +1 -0
- package/page/widgets/Video/hooks.js +4 -12
- package/page/widgets/Video/index.d.ts +2 -0
- package/page/widgets/Video/index.d.ts.map +1 -0
- package/product/components/Description/index.js +0 -2
- package/product/components/FilterBar/components/Content/components/FilterButton/index.js +38 -46
- package/product/components/FilterBar/components/Content/components/FilterChips/components/FilterChip/index.d.ts +38 -0
- package/product/components/FilterBar/components/Content/components/FilterChips/components/FilterChip/index.d.ts.map +1 -0
- package/product/components/FilterBar/components/Content/components/FilterChips/components/FilterChip/index.js +88 -0
- package/product/components/FilterBar/components/Content/components/FilterChips/index.js +54 -35
- package/product/components/FilterBar/components/Content/components/Sort/index.js +1 -1
- package/product/components/FilterBar/components/Content/index.js +7 -3
- package/product/components/FilterBar/index.js +11 -22
- package/product/components/Media/FeaturedMedia.js +7 -1
- package/product/components/Media/MediaImage.js +24 -23
- package/product/components/Media/MediaPlaceholder.js +4 -7
- package/product/components/MediaSlider/components/MediaImage/index.js +6 -2
- package/product/components/MediaSlider/constants.js +1 -12
- package/product/components/OrderQuantityHint/index.js +16 -1
- package/product/components/ProductCard/index.js +36 -23
- package/product/components/ProductFilters/index.js +2 -6
- package/product/components/ProductGrid/components/Item/components/ItemDetails/index.js +12 -4
- package/product/components/ProductGrid/components/Item/components/ItemFavoritesButton/index.js +0 -1
- package/product/components/ProductGrid/components/Item/components/ItemImage/index.js +3 -6
- package/product/components/ProductGrid/components/Item/components/ItemName/index.js +6 -1
- package/product/components/ProductGrid/components/Item/index.js +10 -2
- package/product/components/ProductGrid/components/Layout/index.js +19 -4
- package/product/components/ProductGrid/constants.d.ts +2 -0
- package/product/components/ProductGrid/constants.d.ts.map +1 -0
- package/product/components/ProductGrid/constants.js +1 -0
- package/product/components/ProductGrid/hooks.d.ts +11 -0
- package/product/components/ProductGrid/hooks.d.ts.map +1 -0
- package/product/components/ProductGrid/hooks.js +48 -0
- package/product/components/ProductGrid/index.js +3 -6
- package/product/components/ProductGridPrice/index.js +0 -6
- package/product/components/ProductImage/ProductImage.d.ts +42 -0
- package/product/components/ProductImage/ProductImage.d.ts.map +1 -0
- package/product/components/ProductImage/ProductImage.js +158 -0
- package/product/components/ProductImage/ProductImagePlaceholder.d.ts +23 -0
- package/product/components/ProductImage/ProductImagePlaceholder.d.ts.map +1 -0
- package/product/components/ProductImage/ProductImagePlaceholder.js +12 -17
- package/product/components/ProductImage/constants.d.ts +7 -0
- package/product/components/ProductImage/constants.d.ts.map +1 -0
- package/product/components/ProductImage/constants.js +6 -0
- package/product/components/ProductImage/hooks.d.ts +8 -0
- package/product/components/ProductImage/hooks.d.ts.map +1 -0
- package/product/components/ProductImage/hooks.js +32 -0
- package/product/components/ProductImage/index.d.ts +3 -0
- package/product/components/ProductImage/index.d.ts.map +1 -0
- package/product/components/ProductImage/index.js +1 -201
- package/product/components/ProductList/components/Item/index.js +5 -3
- package/product/components/ProductList/components/Layout/index.js +8 -20
- package/product/components/ProductRatingStars/ProductRatingStars.d.ts.map +1 -1
- package/product/components/ProductRatingStars/ProductRatingStars.js +4 -17
- package/product/components/ProductSlider/constants.d.ts +3 -0
- package/product/components/ProductSlider/constants.d.ts.map +1 -0
- package/product/components/ProductSlider/constants.js +2 -0
- package/product/components/ProductSlider/hooks.d.ts +7 -0
- package/product/components/ProductSlider/hooks.d.ts.map +1 -0
- package/product/components/ProductSlider/hooks.js +40 -0
- package/product/components/ProductSlider/index.js +8 -8
- package/product/components/Rating/index.js +12 -21
- package/product/components/RelationsSlider/RelationsSliderContent.js +3 -2
- package/product/components/RelationsSlider/constants.d.ts +3 -0
- package/product/components/RelationsSlider/constants.d.ts.map +1 -0
- package/product/components/RelationsSlider/constants.js +2 -1
- package/product/components/RelationsSlider/hooks.d.ts +6 -0
- package/product/components/RelationsSlider/hooks.d.ts.map +1 -0
- package/product/components/RelationsSlider/hooks.js +34 -0
- package/product/components/UnitQuantityPicker/UnitQuantityPicker.d.ts.map +1 -1
- package/product/components/UnitQuantityPicker/UnitQuantityPicker.js +15 -33
- package/product/helpers/index.js +29 -11
- package/product/hooks/index.js +3 -1
- package/product/hooks/useLoadProductImage.js +4 -2
- package/product/hooks/useShowEmptyRatingStars.d.ts +7 -0
- package/product/hooks/useShowEmptyRatingStars.d.ts.map +1 -0
- package/product/hooks/useShowEmptyRatingStars.js +21 -0
- package/product/index.js +0 -1
- package/product/selectors/mocks/productProperties.mock.js +49 -0
- package/push-opt-in/components/PushOptInModal/index.js +4 -4
- package/registration/components/Registration/RegistrationFormActions.js +4 -4
- package/reviews/components/Reviews/components/AllReviewsLink/index.js +6 -6
- package/reviews/components/Reviews/components/Header/components/WriteReviewLink/index.js +4 -3
- package/settings/action-creators/appSettings.d.ts +3 -3
- package/settings/action-creators/appSettings.d.ts.map +1 -1
- package/settings/constants/appSettings.d.ts +3 -0
- package/settings/constants/appSettings.d.ts.map +1 -1
- package/settings/constants/appSettings.js +6 -1
- package/settings/constants/imageSettings.d.ts +52 -0
- package/settings/constants/imageSettings.d.ts.map +1 -0
- package/settings/constants/imageSettings.js +69 -0
- package/settings/helpers/index.d.ts +3 -0
- package/settings/helpers/index.d.ts.map +1 -0
- package/settings/helpers/index.js +1 -0
- package/settings/helpers/resolveImageSettings.d.ts +70 -0
- package/settings/helpers/resolveImageSettings.d.ts.map +1 -0
- package/settings/helpers/resolveImageSettings.js +171 -0
- package/settings/helpers/toImageQuality.d.ts +7 -0
- package/settings/helpers/toImageQuality.d.ts.map +1 -0
- package/settings/helpers/toImageQuality.js +44 -0
- package/settings/helpers/toThumborColor.d.ts +15 -0
- package/settings/helpers/toThumborColor.d.ts.map +1 -0
- package/settings/helpers/toThumborColor.js +51 -0
- package/settings/hooks/index.d.ts +2 -0
- package/settings/hooks/index.d.ts.map +1 -0
- package/settings/hooks/index.js +1 -0
- package/settings/hooks/useImageSettings.d.ts +28 -0
- package/settings/hooks/useImageSettings.d.ts.map +1 -0
- package/settings/hooks/useImageSettings.js +39 -0
- package/settings/reducers/appSettings.d.ts.map +1 -1
- package/settings/reducers/appSettings.js +123 -8
- package/settings/reducers/index.d.ts +3 -3
- package/settings/selectors/appSettings.d.ts +122 -1
- package/settings/selectors/appSettings.d.ts.map +1 -1
- package/settings/selectors/appSettings.js +80 -1
- package/settings/types/appSettings.d.ts +279 -0
- package/settings/types/appSettings.d.ts.map +1 -1
- package/settings/types/appSettings.js +133 -1
- package/styles/helpers/index.d.ts +2 -0
- package/styles/helpers/index.js +2 -0
- package/styles/helpers/loadFontCss.d.ts +22 -0
- package/styles/helpers/loadFontCss.d.ts.map +1 -0
- package/styles/helpers/loadFontCss.js +138 -0
- package/styles/helpers/loadThemeCss.d.ts +14 -0
- package/styles/helpers/loadThemeCss.d.ts.map +1 -0
- package/styles/helpers/loadThemeCss.js +123 -0
- package/styles/index.d.ts +1 -1
- package/styles/index.d.ts.map +1 -1
- package/styles/reset/root.js +23 -4
- package/styles/reset/typographyCustomProps.d.ts +12 -0
- package/styles/reset/typographyCustomProps.d.ts.map +1 -0
- package/styles/reset/typographyCustomProps.js +11 -0
- package/styles/theme/createDefaultThemeOptions/index.d.ts +11 -1
- package/styles/theme/createDefaultThemeOptions/index.d.ts.map +1 -1
- package/styles/theme/createDefaultThemeOptions/index.js +129 -10
- package/styles/theme/createTheme/createComponents.types.d.ts +118 -4
- package/styles/theme/createTheme/createComponents.types.d.ts.map +1 -1
- package/styles/theme/createTheme/createComponents.types.js +122 -8
- package/styles/theme/createTheme/createCssVarsForColorSchemeThemes.d.ts.map +1 -1
- package/styles/theme/createTheme/createCssVarsForColorSchemeThemes.js +13 -3
- package/styles/theme/createTheme/createPalette.types.d.ts +5 -0
- package/styles/theme/createTheme/createPalette.types.d.ts.map +1 -1
- package/styles/theme/createTheme/createPalette.types.js +7 -2
- package/styles/theme/createTheme/createShape.d.ts +3 -0
- package/styles/theme/createTheme/createShape.d.ts.map +1 -1
- package/styles/theme/createTheme/createThemeFromColorScheme.d.ts +3 -1
- package/styles/theme/createTheme/createThemeFromColorScheme.d.ts.map +1 -1
- package/styles/theme/createTheme/createThemeFromColorScheme.js +6 -3
- package/styles/theme/createTheme/createTypography.d.ts +4 -2
- package/styles/theme/createTheme/createTypography.js +60 -18
- package/styles/theme/createTheme/helpers/cssVarsParser.d.ts.map +1 -1
- package/styles/theme/createTheme/helpers/cssVarsParser.js +10 -3
- package/styles/theme/createTheme/index.d.ts +2 -1
- package/styles/theme/createTheme/index.d.ts.map +1 -1
- package/styles/theme/createTheme/index.js +3 -1
- package/styles/theme/createTheme/shadows.d.ts +11 -1
- package/styles/theme/createTheme/shadows.d.ts.map +1 -1
- package/styles/theme/createTheme/shadows.js +41 -7
- package/styles/theme/createTheme/types.d.ts +16 -5
- package/styles/theme/createTheme/types.d.ts.map +1 -1
- package/styles/theme/createTheme/types.js +8 -3
- package/styles/theme/hooks/useColorScheme.d.ts +4 -3
- package/styles/theme/hooks/useColorScheme.d.ts.map +1 -1
- package/styles/theme/hooks/useColorScheme.js +4 -3
- package/styles/theme/hooks/useMediaQuery.d.ts +7 -0
- package/styles/theme/hooks/useMediaQuery.d.ts.map +1 -1
- package/styles/theme/hooks/useMediaQuery.js +5 -5
- package/styles/theme/hooks/useTheme.js +1 -1
- package/styles/theme/index.d.ts +4 -1
- package/styles/theme/index.d.ts.map +1 -1
- package/styles/theme/providers/ColorSchemeContext.d.ts +40 -0
- package/styles/theme/providers/ColorSchemeContext.d.ts.map +1 -0
- package/styles/theme/providers/ColorSchemeContext.js +14 -0
- package/styles/theme/providers/ThemeContext.d.ts +3 -0
- package/styles/theme/providers/ThemeContext.d.ts.map +1 -0
- package/styles/theme/providers/ThemeContext.js +2 -0
- package/styles/theme/providers/ThemeProvider.d.ts +3 -13
- package/styles/theme/providers/ThemeProvider.d.ts.map +1 -1
- package/styles/theme/providers/ThemeProvider.js +86 -13
- package/styles/theme/utils/color.d.ts +12 -12
- package/styles/theme/utils/color.d.ts.map +1 -1
- package/tracking/components/CookieConsentModal/index.js +3 -4
- package/tracking/components/PrivacySettings/index.js +3 -3
- package/admin-preview/detection.d.ts.map +0 -1
- package/admin-preview/detection.js +0 -166
- package/cart/components/PaymentBar/PaymentBarReserveButton.connector.js +0 -6
- package/cart/components/PaymentBar/PaymentBarReserveButton.js +0 -71
- package/components/ChipLayout/spec.js +0 -41
- package/components/Logo/spec.js +0 -12
- package/components/NavigationHandler/spec.js +0 -84
- package/components/Picker/spec.js +0 -94
- package/components/PickerUtilize/spec.js +0 -35
- package/components/RangeSlider/spec.js +0 -190
- package/components/SheetList/components/Item/spec.js +0 -101
- package/components/SheetList/spec.js +0 -43
- package/components/TimeBoundary/spec.js +0 -83
- package/filter/components/FilterItem/spec.js +0 -14
- package/filter/components/FilterPageContent/components/ApplyButton/spec.js +0 -46
- package/filter/components/FilterPageContent/components/ResetButton/spec.js +0 -29
- package/filter/components/FilterPageContent/components/Selector/components/Selected/spec.js +0 -26
- package/filter/components/FilterPageContent/components/Selector/components/Toggle/spec.js +0 -34
- package/filter/components/FilterPageContent/components/Selector/components/ValueButton/index.js +0 -69
- package/filter/components/FilterPageContent/components/Selector/components/ValueButton/spec.js +0 -32
- package/filter/components/FilterPageContent/components/Selector/spec.js +0 -33
- package/filter/components/PriceSlider/components/Label/spec.js +0 -26
- package/filter/components/PriceSlider/spec.js +0 -30
- package/locations/components/StoreFinder/StoreFinderGetDirectionsButton.connector.js +0 -16
- package/locations/components/StoreFinder/StoreFinderGetDirectionsButton.js +0 -52
- package/product/collections/index.js +0 -1
- package/product/components/EffectivityDates/constants.d.ts +0 -3
- package/product/components/EffectivityDates/constants.d.ts.map +0 -1
- package/product/components/EffectivityDates/helpers.d.ts +0 -6
- package/product/components/EffectivityDates/helpers.d.ts.map +0 -1
- package/product/components/FilterBar/components/Content/components/FilterChips/connector.js +0 -22
- package/product/components/FilterBar/components/Content/spec.js +0 -136
- package/product/components/Header/Shipping/spec.js +0 -36
- package/product/components/Header/Tiers/components/Tier/spec.js +0 -48
- package/product/components/Header/Tiers/spec.js +0 -64
- package/product/components/Media/helpers.d.ts +0 -2
- package/product/components/Media/helpers.d.ts.map +0 -1
- package/product/components/Options/components/Content/spec.js +0 -73
- package/product/components/Options/components/TextOption/components/OptionInfo/spec.js +0 -72
- package/product/components/ProductDiscountBadge/spec.js +0 -58
- package/product/components/ProductGrid/components/Item/components/ItemDetails/spec.js +0 -73
- package/product/components/ProductGrid/components/Item/components/ItemFavoritesButton/spec.js +0 -33
- package/product/components/ProductGrid/components/Item/components/ItemImage/spec.js +0 -16
- package/product/components/ProductGrid/components/Item/components/ItemName/spec.js +0 -21
- package/product/components/ProductGrid/components/Item/components/ItemPrice/spec.js +0 -37
- package/product/components/ProductGrid/spec.js +0 -52
- package/product/components/ProductImage/connector.js +0 -12
- package/product/components/ProductImage/spec.js +0 -87
- package/product/components/ProductSlider/spec.js +0 -37
- package/product/components/Rating/connector.js +0 -26
- package/product/components/Rating/spec.js +0 -58
- package/product/helpers/index.d.ts +0 -13
- package/product/helpers/index.d.ts.map +0 -1
- package/product/helpers/redirects.d.ts +0 -2
- package/product/helpers/redirects.d.ts.map +0 -1
- package/product/selectors/helpers/filterProperties.d.ts +0 -8
- package/product/selectors/helpers/filterProperties.d.ts.map +0 -1
- package/product/selectors/helpers/index.d.ts +0 -3
- package/product/selectors/helpers/index.d.ts.map +0 -1
- package/product/selectors/helpers/wrapMemoizedSelector.d.ts +0 -2
- package/product/selectors/helpers/wrapMemoizedSelector.d.ts.map +0 -1
- package/product/selectors/product.d.ts +0 -112
- package/product/selectors/product.d.ts.map +0 -1
- package/reviews/components/Reviews/components/Header/components/WriteReviewLink/spec.js +0 -52
- package/reviews/components/Reviews/components/Header/spec.js +0 -78
- package/reviews/components/Reviews/components/List/spec.js +0 -108
- package/reviews/components/Reviews/components/RatingCount/spec.js +0 -38
- package/reviews/components/Reviews/spec.js +0 -101
- package/tsconfig.build.json +0 -26
- package/tsconfig.json +0 -19
|
@@ -1,15 +1,23 @@
|
|
|
1
|
-
import
|
|
1
|
+
import "core-js/modules/es.array.includes.js";
|
|
2
|
+
import { memo, useCallback, useEffect, useMemo, useLayoutEffect } from 'react';
|
|
3
|
+
import { useSelector } from 'react-redux';
|
|
2
4
|
import useLocalStorage from '@shopgate/engage/core/hooks/useLocalStorage';
|
|
5
|
+
import { logger } from '@shopgate/engage/core/helpers';
|
|
3
6
|
import { GlobalStyles } from '@shopgate/engage/styles';
|
|
4
|
-
import {
|
|
7
|
+
import { isFrontendSettingsAdminPreviewActive } from '@shopgate/engage/admin-preview/helpers';
|
|
5
8
|
import { FrontendSettingsPreviewBridge } from '@shopgate/engage/admin-preview/components';
|
|
9
|
+
// Imported via its module path rather than a settings barrel, to keep this module out of an import
|
|
10
|
+
// cycle - the settings types reach back into the "styles/theme" barrel, which exports this file.
|
|
11
|
+
import { getCanSelectColorScheme, getDefaultColorSchemeMode } from '@shopgate/engage/settings/selectors/appSettings';
|
|
12
|
+
import { getIsColorSchemeSelectionEnabled } from '@shopgate/engage/development/selectors';
|
|
6
13
|
import ActiveBreakpointProvider from "./ActiveBreakpointProvider";
|
|
14
|
+
import { ColorSchemeContext } from "./ColorSchemeContext";
|
|
15
|
+
import { ThemeContext } from "./ThemeContext";
|
|
16
|
+
import { useMatchMedia } from "../hooks/useMediaQuery";
|
|
17
|
+
import { COLOR_SCHEME_SYSTEM } from "../createTheme";
|
|
7
18
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
8
|
-
export
|
|
9
|
-
export
|
|
10
|
-
mode: 'light',
|
|
11
|
-
setMode: () => ''
|
|
12
|
-
});
|
|
19
|
+
export { ColorSchemeContext } from "./ColorSchemeContext";
|
|
20
|
+
export { ThemeContext } from "./ThemeContext";
|
|
13
21
|
|
|
14
22
|
/**
|
|
15
23
|
* The ThemeProvider component provides the theme context to its children.
|
|
@@ -18,13 +26,78 @@ const ThemeProvider = ({
|
|
|
18
26
|
children,
|
|
19
27
|
theme
|
|
20
28
|
}) => {
|
|
21
|
-
|
|
22
|
-
|
|
29
|
+
// The color schemes the active theme actually provides. createTheme() can be configured with only
|
|
30
|
+
// a subset of the possible schemes (it defaults to just `light`), so this list and the validation
|
|
31
|
+
// below are derived from the resolved theme rather than the full COLOR_SCHEME_NAMES tuple.
|
|
32
|
+
// Otherwise the provider could expose and accept a scheme (e.g. `dark`) the theme doesn't style,
|
|
33
|
+
// and setActiveColorScheme would flip the root selector to an unstyled scheme.
|
|
34
|
+
const colorSchemes = useMemo(() => Object.keys(theme.colorSchemes), [theme]);
|
|
35
|
+
const configuredMode = useSelector(getDefaultColorSchemeMode);
|
|
36
|
+
const isColorSchemeSelectable = useSelector(getCanSelectColorScheme);
|
|
37
|
+
|
|
38
|
+
// The development setting simulates the `selectable` appearance rather than lifting the gate on
|
|
39
|
+
// its own, so a development build resolves the scheme along the very same path a shop does. It is
|
|
40
|
+
// false outside development builds, where the merchant's setting stays the only input.
|
|
41
|
+
const isSelectionEnabledForDevelopment = useSelector(getIsColorSchemeSelectionEnabled);
|
|
42
|
+
|
|
43
|
+
// Whether the merchant lets visitors choose. A binding `light` or `dark` rules a pick out, so one
|
|
44
|
+
// left over from when selecting still was allowed does not keep overriding it - and with it the
|
|
45
|
+
// operating system, which only ever reaches the scheme through a `system` pick.
|
|
46
|
+
const canSelectColorScheme = isColorSchemeSelectable || isSelectionEnabledForDevelopment;
|
|
47
|
+
const defaultMode = isSelectionEnabledForDevelopment ? COLOR_SCHEME_SYSTEM : configuredMode;
|
|
48
|
+
const prefersDarkColorScheme = useMatchMedia('(prefers-color-scheme: dark)');
|
|
49
|
+
const systemColorScheme = prefersDarkColorScheme ? 'dark' : 'light';
|
|
50
|
+
const [pickedMode, setPersistedMode] = useLocalStorage('persistedColorScheme', {
|
|
51
|
+
// The frontend settings preview runs the app in an iframe on the shop origin. Persisting the
|
|
52
|
+
// color scheme there would write the admin's preview choice into the visitor's own storage and
|
|
53
|
+
// outlive the preview, so the scheme is kept in memory only while previewing.
|
|
54
|
+
persist: !isFrontendSettingsAdminPreviewActive()
|
|
23
55
|
});
|
|
56
|
+
|
|
57
|
+
// The preview forces a scheme through the same setter to show the admin either appearance, which
|
|
58
|
+
// has to work regardless of what the previewed settings configure. It stays out of
|
|
59
|
+
// `canSelectColorScheme`, so the previewed shop offers a picker exactly where visitors get one.
|
|
60
|
+
const isPickApplied = canSelectColorScheme || isFrontendSettingsAdminPreviewActive();
|
|
61
|
+
|
|
62
|
+
// The mode the visitor picked wins where it applies, otherwise the configured one does. Resolving
|
|
63
|
+
// that on every render rather than seeding the storage with it keeps `system` following the
|
|
64
|
+
// operating system and lets the preview apply the merchant's edits live.
|
|
65
|
+
const mode = isPickApplied && pickedMode || defaultMode;
|
|
66
|
+
const resolvedColorScheme = useMemo(() => mode === COLOR_SCHEME_SYSTEM ? systemColorScheme : mode, [mode, systemColorScheme]);
|
|
67
|
+
const isSupportedColorScheme = colorSchemes.includes(resolvedColorScheme);
|
|
68
|
+
const activeColorScheme = isSupportedColorScheme ? resolvedColorScheme : theme.defaultColorScheme ?? null;
|
|
69
|
+
useEffect(() => {
|
|
70
|
+
if (isSupportedColorScheme) return;
|
|
71
|
+
logger.warn(`ThemeProvider: "${resolvedColorScheme}" is not a supported color scheme.`);
|
|
72
|
+
}, [isSupportedColorScheme, resolvedColorScheme]);
|
|
73
|
+
|
|
74
|
+
// What a picker can offer and what setMode accepts. 'system' is not a scheme the theme styles -
|
|
75
|
+
// it resolves to one above - so it is added here rather than derived from the theme.
|
|
76
|
+
const modes = useMemo(() => [].concat(colorSchemes, [COLOR_SCHEME_SYSTEM]), [colorSchemes]);
|
|
77
|
+
|
|
78
|
+
// Wraps the raw storage setter, so an unsupported mode is rejected before it is persisted.
|
|
79
|
+
// Setting null is allowed and clears the stored preference, which returns to the configured one.
|
|
80
|
+
const setMode = useCallback(value => {
|
|
81
|
+
setPersistedMode(currentMode => {
|
|
82
|
+
// An updater is resolved the same way `mode` is, so it sees what the context exposes rather
|
|
83
|
+
// than the storage behind it - which holds no value yet, or one that is currently ignored.
|
|
84
|
+
const effectiveMode = isPickApplied && currentMode || defaultMode;
|
|
85
|
+
const nextMode = typeof value === 'function' ? value(effectiveMode) : value;
|
|
86
|
+
if (nextMode !== null && !modes.includes(nextMode)) {
|
|
87
|
+
logger.warn(`ThemeProvider: "${nextMode}" is not a supported color scheme.`);
|
|
88
|
+
return currentMode;
|
|
89
|
+
}
|
|
90
|
+
return nextMode;
|
|
91
|
+
});
|
|
92
|
+
}, [defaultMode, isPickApplied, modes, setPersistedMode]);
|
|
24
93
|
const colorSchemeContextValue = useMemo(() => ({
|
|
25
|
-
mode
|
|
26
|
-
|
|
27
|
-
|
|
94
|
+
mode,
|
|
95
|
+
defaultMode,
|
|
96
|
+
activeColorScheme,
|
|
97
|
+
canSelectColorScheme,
|
|
98
|
+
setMode,
|
|
99
|
+
modes
|
|
100
|
+
}), [mode, defaultMode, activeColorScheme, canSelectColorScheme, modes, setMode]);
|
|
28
101
|
useLayoutEffect(() => {
|
|
29
102
|
if (!activeColorScheme) return;
|
|
30
103
|
theme.setActiveColorScheme(activeColorScheme);
|
|
@@ -32,7 +105,7 @@ const ThemeProvider = ({
|
|
|
32
105
|
const styleSheets = useMemo(() => theme.generateStyleSheets(), [theme]);
|
|
33
106
|
return /*#__PURE__*/_jsxs(ColorSchemeContext.Provider, {
|
|
34
107
|
value: colorSchemeContextValue,
|
|
35
|
-
children: [
|
|
108
|
+
children: [isFrontendSettingsAdminPreviewActive() && /*#__PURE__*/_jsx(FrontendSettingsPreviewBridge, {}), /*#__PURE__*/_jsxs(ThemeContext.Provider, {
|
|
36
109
|
value: theme,
|
|
37
110
|
children: [/*#__PURE__*/_jsx(ActiveBreakpointProvider, {
|
|
38
111
|
children: children
|
|
@@ -24,7 +24,7 @@ export declare const getContrastRatio: (color: string, color2: string, backgroun
|
|
|
24
24
|
* @param returnType The type of return value to create. Defaults to 'hex'.
|
|
25
25
|
* @returns The desired color value
|
|
26
26
|
*/
|
|
27
|
-
export declare const toHex: (color: ColorInstance, returnType?: ColorType) => string | Color<string | number | Color<string | number | Color<string | number | Color<string | number | Color<string | number | Color<string | number | Color<string | number | Color<string | number | Color<string | number | Color<string | number | Color<string | number | Color<string | number | /*elided*/ any | ArrayLike<number> | {
|
|
27
|
+
export declare const toHex: (color: ColorInstance, returnType?: ColorType) => string | number[] | Color<string | number | Color<string | number | Color<string | number | Color<string | number | Color<string | number | Color<string | number | Color<string | number | Color<string | number | Color<string | number | Color<string | number | Color<string | number | Color<string | number | /*elided*/ any | ArrayLike<number> | {
|
|
28
28
|
[key: string]: any;
|
|
29
29
|
}> | ArrayLike<number> | {
|
|
30
30
|
[key: string]: any;
|
|
@@ -48,14 +48,14 @@ export declare const toHex: (color: ColorInstance, returnType?: ColorType) => st
|
|
|
48
48
|
[key: string]: any;
|
|
49
49
|
}> | ArrayLike<number> | {
|
|
50
50
|
[key: string]: any;
|
|
51
|
-
}
|
|
51
|
+
}>;
|
|
52
52
|
/**
|
|
53
53
|
* Converts a passed color to an RGB color
|
|
54
54
|
* @param color The color to convert.
|
|
55
55
|
* @param returnType The type of return value to create. Defaults to 'rgb'.
|
|
56
56
|
* @returns The desired color value
|
|
57
57
|
*/
|
|
58
|
-
export declare const toRgb: (color: ColorInstance, returnType?: ColorType) => string | Color<string | number | Color<string | number | Color<string | number | Color<string | number | Color<string | number | Color<string | number | Color<string | number | Color<string | number | Color<string | number | Color<string | number | Color<string | number | Color<string | number | /*elided*/ any | ArrayLike<number> | {
|
|
58
|
+
export declare const toRgb: (color: ColorInstance, returnType?: ColorType) => string | number[] | Color<string | number | Color<string | number | Color<string | number | Color<string | number | Color<string | number | Color<string | number | Color<string | number | Color<string | number | Color<string | number | Color<string | number | Color<string | number | Color<string | number | /*elided*/ any | ArrayLike<number> | {
|
|
59
59
|
[key: string]: any;
|
|
60
60
|
}> | ArrayLike<number> | {
|
|
61
61
|
[key: string]: any;
|
|
@@ -79,14 +79,14 @@ export declare const toRgb: (color: ColorInstance, returnType?: ColorType) => st
|
|
|
79
79
|
[key: string]: any;
|
|
80
80
|
}> | ArrayLike<number> | {
|
|
81
81
|
[key: string]: any;
|
|
82
|
-
}
|
|
82
|
+
}>;
|
|
83
83
|
/**
|
|
84
84
|
* Converts a passed color to an HSL color
|
|
85
85
|
* @param color The color to convert.
|
|
86
86
|
* @param returnType The type of return value to create. Defaults to 'hsl'.
|
|
87
87
|
* @returns The desired color value
|
|
88
88
|
*/
|
|
89
|
-
export declare const toHsl: (color: ColorInstance, returnType?: ColorType) => string | Color<string | number | Color<string | number | Color<string | number | Color<string | number | Color<string | number | Color<string | number | Color<string | number | Color<string | number | Color<string | number | Color<string | number | Color<string | number | Color<string | number | /*elided*/ any | ArrayLike<number> | {
|
|
89
|
+
export declare const toHsl: (color: ColorInstance, returnType?: ColorType) => string | number[] | Color<string | number | Color<string | number | Color<string | number | Color<string | number | Color<string | number | Color<string | number | Color<string | number | Color<string | number | Color<string | number | Color<string | number | Color<string | number | Color<string | number | /*elided*/ any | ArrayLike<number> | {
|
|
90
90
|
[key: string]: any;
|
|
91
91
|
}> | ArrayLike<number> | {
|
|
92
92
|
[key: string]: any;
|
|
@@ -110,7 +110,7 @@ export declare const toHsl: (color: ColorInstance, returnType?: ColorType) => st
|
|
|
110
110
|
[key: string]: any;
|
|
111
111
|
}> | ArrayLike<number> | {
|
|
112
112
|
[key: string]: any;
|
|
113
|
-
}
|
|
113
|
+
}>;
|
|
114
114
|
/**
|
|
115
115
|
* Adds hsl lightness to a color
|
|
116
116
|
* @param color The color to modify.
|
|
@@ -118,7 +118,7 @@ export declare const toHsl: (color: ColorInstance, returnType?: ColorType) => st
|
|
|
118
118
|
* @param type The type of return value to create. Defaults to 'hsl'.
|
|
119
119
|
* @returns The desired color value
|
|
120
120
|
*/
|
|
121
|
-
export declare const addLightness: (color: ColorInstance, value: number, type?: ColorType) => string | Color<string | number | Color<string | number | Color<string | number | Color<string | number | Color<string | number | Color<string | number | Color<string | number | Color<string | number | Color<string | number | Color<string | number | Color<string | number | Color<string | number | /*elided*/ any | ArrayLike<number> | {
|
|
121
|
+
export declare const addLightness: (color: ColorInstance, value: number, type?: ColorType) => string | number[] | Color<string | number | Color<string | number | Color<string | number | Color<string | number | Color<string | number | Color<string | number | Color<string | number | Color<string | number | Color<string | number | Color<string | number | Color<string | number | Color<string | number | /*elided*/ any | ArrayLike<number> | {
|
|
122
122
|
[key: string]: any;
|
|
123
123
|
}> | ArrayLike<number> | {
|
|
124
124
|
[key: string]: any;
|
|
@@ -142,7 +142,7 @@ export declare const addLightness: (color: ColorInstance, value: number, type?:
|
|
|
142
142
|
[key: string]: any;
|
|
143
143
|
}> | ArrayLike<number> | {
|
|
144
144
|
[key: string]: any;
|
|
145
|
-
}
|
|
145
|
+
}>;
|
|
146
146
|
/**
|
|
147
147
|
* Lightens a color by a given offset
|
|
148
148
|
* @param color The color to modify.
|
|
@@ -150,7 +150,7 @@ export declare const addLightness: (color: ColorInstance, value: number, type?:
|
|
|
150
150
|
* @param type The type of return value to create. Defaults to 'hsl'.
|
|
151
151
|
* @returns The desired color value
|
|
152
152
|
*/
|
|
153
|
-
export declare const lighten: (color: ColorInstance, totalOffset: number, type?: ColorType) => string | Color<string | number | Color<string | number | Color<string | number | Color<string | number | Color<string | number | Color<string | number | Color<string | number | Color<string | number | Color<string | number | Color<string | number | Color<string | number | Color<string | number | /*elided*/ any | ArrayLike<number> | {
|
|
153
|
+
export declare const lighten: (color: ColorInstance, totalOffset: number, type?: ColorType) => string | number[] | Color<string | number | Color<string | number | Color<string | number | Color<string | number | Color<string | number | Color<string | number | Color<string | number | Color<string | number | Color<string | number | Color<string | number | Color<string | number | Color<string | number | /*elided*/ any | ArrayLike<number> | {
|
|
154
154
|
[key: string]: any;
|
|
155
155
|
}> | ArrayLike<number> | {
|
|
156
156
|
[key: string]: any;
|
|
@@ -174,7 +174,7 @@ export declare const lighten: (color: ColorInstance, totalOffset: number, type?:
|
|
|
174
174
|
[key: string]: any;
|
|
175
175
|
}> | ArrayLike<number> | {
|
|
176
176
|
[key: string]: any;
|
|
177
|
-
}
|
|
177
|
+
}>;
|
|
178
178
|
/**
|
|
179
179
|
* Darkens a color by a given offset
|
|
180
180
|
* @param color The color to modify.
|
|
@@ -182,7 +182,7 @@ export declare const lighten: (color: ColorInstance, totalOffset: number, type?:
|
|
|
182
182
|
* @param type The type of return value to create. Defaults to 'hsl'.
|
|
183
183
|
* @returns The desired color value
|
|
184
184
|
*/
|
|
185
|
-
export declare const darken: (color: ColorInstance, totalOffset: number, type?: ColorType) => string | Color<string | number | Color<string | number | Color<string | number | Color<string | number | Color<string | number | Color<string | number | Color<string | number | Color<string | number | Color<string | number | Color<string | number | Color<string | number | Color<string | number | /*elided*/ any | ArrayLike<number> | {
|
|
185
|
+
export declare const darken: (color: ColorInstance, totalOffset: number, type?: ColorType) => string | number[] | Color<string | number | Color<string | number | Color<string | number | Color<string | number | Color<string | number | Color<string | number | Color<string | number | Color<string | number | Color<string | number | Color<string | number | Color<string | number | Color<string | number | /*elided*/ any | ArrayLike<number> | {
|
|
186
186
|
[key: string]: any;
|
|
187
187
|
}> | ArrayLike<number> | {
|
|
188
188
|
[key: string]: any;
|
|
@@ -206,6 +206,6 @@ export declare const darken: (color: ColorInstance, totalOffset: number, type?:
|
|
|
206
206
|
[key: string]: any;
|
|
207
207
|
}> | ArrayLike<number> | {
|
|
208
208
|
[key: string]: any;
|
|
209
|
-
}
|
|
209
|
+
}>;
|
|
210
210
|
export {};
|
|
211
211
|
//# sourceMappingURL=color.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"color.d.ts","sourceRoot":"","sources":["../../../../styles/theme/utils/color.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,KAAK,SAAS,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,OAAO,GAAG,QAAQ,CAAC;AAE5D,KAAK,aAAa,GAAG,YAAY,CAAC,OAAO,KAAK,CAAC,CAAC;AAEhD;;;;GAIG;AACH,eAAO,MAAM,OAAO,GAAI,OAAO,OAAO,YAWrC,CAAC;AAEF;;;;;;;;;GASG;AACH,eAAO,MAAM,gBAAgB,GAC3B,OAAO,MAAM,EACb,QAAQ,MAAM,EACd,mBAAmB,WAYpB,CAAC;AA6BF;;;;;GAKG;AACH,eAAO,MAAM,KAAK,GAChB,OAAO,aAAa,EACpB,aAAY,SAAiB;;;;;;;;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"color.d.ts","sourceRoot":"","sources":["../../../../styles/theme/utils/color.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,KAAK,SAAS,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,OAAO,GAAG,QAAQ,CAAC;AAE5D,KAAK,aAAa,GAAG,YAAY,CAAC,OAAO,KAAK,CAAC,CAAC;AAEhD;;;;GAIG;AACH,eAAO,MAAM,OAAO,GAAI,OAAO,OAAO,YAWrC,CAAC;AAEF;;;;;;;;;GASG;AACH,eAAO,MAAM,gBAAgB,GAC3B,OAAO,MAAM,EACb,QAAQ,MAAM,EACd,mBAAmB,WAYpB,CAAC;AA6BF;;;;;GAKG;AACH,eAAO,MAAM,KAAK,GAChB,OAAO,aAAa,EACpB,aAAY,SAAiB;;;;;;;;;;;;;;;;;;;;;;;;EACuB,CAAC;AAEvD;;;;;GAKG;AACH,eAAO,MAAM,KAAK,GAChB,OAAO,aAAa,EACpB,aAAY,SAAiB;;;;;;;;;;;;;;;;;;;;;;;;EACuB,CAAC;AAEvD;;;;;GAKG;AACH,eAAO,MAAM,KAAK,GAChB,OAAO,aAAa,EACpB,aAAY,SAAiB;;;;;;;;;;;;;;;;;;;;;;;;EACuB,CAAC;AAEvD;;;;;;GAMG;AACH,eAAO,MAAM,YAAY,GACvB,OAAO,aAAa,EACpB,OAAO,MAAM,EACb,OAAM,SAAiB;;;;;;;;;;;;;;;;;;;;;;;;EACkC,CAAC;AAC5D;;;;;;GAMG;AACH,eAAO,MAAM,OAAO,GAClB,OAAO,aAAa,EACpB,aAAa,MAAM,EACnB,OAAM,SAAiB;;;;;;;;;;;;;;;;;;;;;;;;EACsC,CAAC;AAEhE;;;;;;GAMG;AACH,eAAO,MAAM,MAAM,GACjB,OAAO,aAAa,EACpB,aAAa,MAAM,EACnB,OAAM,SAAiB;;;;;;;;;;;;;;;;;;;;;;;;EACqC,CAAC"}
|
|
@@ -2,7 +2,8 @@ import React, { useMemo, useEffect } from 'react';
|
|
|
2
2
|
import PropTypes from 'prop-types';
|
|
3
3
|
import throttle from 'lodash/throttle';
|
|
4
4
|
import { makeStyles } from '@shopgate/engage/styles';
|
|
5
|
-
import { Grid, I18n,
|
|
5
|
+
import { Grid, I18n, Modal, Link, ConditionalWrapper, Typography } from '@shopgate/engage/components';
|
|
6
|
+
import { Button } from '@shopgate/engage/components/v2';
|
|
6
7
|
import { appConfig } from '@shopgate/engage';
|
|
7
8
|
import connect from "./connector";
|
|
8
9
|
import cookieImage from "./tracking-opt-in.svg";
|
|
@@ -164,21 +165,19 @@ const CookieConsentModal = ({
|
|
|
164
165
|
className: classes.buttonWrapper,
|
|
165
166
|
children: [/*#__PURE__*/_jsx(Button, {
|
|
166
167
|
onClick: handleAcceptAllCookies,
|
|
167
|
-
|
|
168
|
+
color: "secondary",
|
|
168
169
|
className: cx(classes.button, 'cookie-consent-modal__button-accept-all'),
|
|
169
170
|
children: /*#__PURE__*/_jsx(I18n.Text, {
|
|
170
171
|
string: modalButtonAcceptAll || 'cookieConsentModal.buttonAcceptAll'
|
|
171
172
|
})
|
|
172
173
|
}), showRequiredCookiesButton ? /*#__PURE__*/_jsx(Button, {
|
|
173
174
|
onClick: handleAcceptRequiredCookies,
|
|
174
|
-
type: "simple",
|
|
175
175
|
className: cx(classes.button, 'cookie-consent-modal__button-accept-required'),
|
|
176
176
|
children: /*#__PURE__*/_jsx(I18n.Text, {
|
|
177
177
|
string: modalButtonOnlyRequired || 'cookieConsentModal.modalButtonOnlyRequired'
|
|
178
178
|
})
|
|
179
179
|
}) : null, /*#__PURE__*/_jsx(Button, {
|
|
180
180
|
onClick: handleOpenPrivacySettings,
|
|
181
|
-
type: "simple",
|
|
182
181
|
className: cx(classes.button, 'cookie-consent-modal__button-open-settings'),
|
|
183
182
|
children: /*#__PURE__*/_jsx(I18n.Text, {
|
|
184
183
|
string: modalButtonConfigureSettings || 'cookieConsentModal.buttonConfigure'
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import React, { useCallback, useState } from 'react';
|
|
2
|
-
import {
|
|
2
|
+
import { Grid, I18n, Link, Switch, ConditionalWrapper } from '@shopgate/engage/components';
|
|
3
|
+
import { Button } from '@shopgate/engage/components/v2';
|
|
3
4
|
import PropTypes from 'prop-types';
|
|
4
5
|
import { makeStyles } from '@shopgate/engage/styles';
|
|
5
6
|
import { appConfig } from '@shopgate/engage';
|
|
@@ -148,7 +149,7 @@ const PrivacySettings = ({
|
|
|
148
149
|
className: classes.buttonWrapper,
|
|
149
150
|
children: [/*#__PURE__*/_jsx(Button, {
|
|
150
151
|
onClick: () => handleAcceptAllCookies(),
|
|
151
|
-
|
|
152
|
+
color: "secondary",
|
|
152
153
|
className: cx(classes.button, 'privacy-settings__button-accept-all'),
|
|
153
154
|
children: /*#__PURE__*/_jsx(I18n.Text, {
|
|
154
155
|
string: "cookieConsentModal.buttonAcceptAll"
|
|
@@ -158,7 +159,6 @@ const PrivacySettings = ({
|
|
|
158
159
|
comfortCookiesAccepted: areComfortCookiesSelected,
|
|
159
160
|
statisticsCookiesAccepted: areStatisticsCookiesSelected
|
|
160
161
|
}),
|
|
161
|
-
type: "simple",
|
|
162
162
|
className: cx(classes.button, 'privacy-settings__button-accept-selected'),
|
|
163
163
|
children: /*#__PURE__*/_jsx(I18n.Text, {
|
|
164
164
|
string: "cookieConsentModal.modalButtonConfirmSelected"
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"detection.d.ts","sourceRoot":"","sources":["../../admin-preview/detection.ts"],"names":[],"mappings":"AAKA,eAAO,MAAM,oBAAoB,oCAAoC,CAAC;AAEtE,eAAO,MAAM,+BAA+B,iCAAiC,CAAC;AAE9E,eAAO,MAAM,gCAAgC,uBAAuB,CAAC;AAErE,eAAO,MAAM,6CAA6C,mCAAmC,CAAC;AAyF9F;;;;GAIG;AACH,eAAO,MAAM,sBAAsB,QAAO,OAYzC,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,kCAAkC,QAAO,OAYrD,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,kBAAkB,QAAO,OAC4B,CAAC;AAEnE;;;;;;;GAOG;AACH,eAAO,MAAM,wBAAwB;;;;;;;;;;;;;;;;;CAiBnC,CAAC"}
|
|
@@ -1,166 +0,0 @@
|
|
|
1
|
-
import "core-js/modules/es.array.includes.js";
|
|
2
|
-
// The logger is imported from @shopgate/pwa-core/helpers rather than @shopgate/engage/core/helpers
|
|
3
|
-
// on purpose: that barrel pulls in scrollContainer, which imports this module back. Since detection
|
|
4
|
-
// runs while the constants module is evaluated, the cycle would resolve to undefined at boot.
|
|
5
|
-
import { logger } from '@shopgate/pwa-core/helpers';
|
|
6
|
-
export const PAGE_PREVIEW_PATTERN = '/shopgate-internal-page-preview';
|
|
7
|
-
export const FRONTEND_SETTINGS_PREVIEW_PARAM = 'frontendSettingsPreview=true';
|
|
8
|
-
export const SESSION_STORAGE_KEY_PAGE_PREVIEW = 'sgPageAdminPreview';
|
|
9
|
-
export const SESSION_STORAGE_KEY_FRONTEND_SETTINGS_PREVIEW = 'sgFrontendSettingsAdminPreview';
|
|
10
|
-
const LOG_PREFIX = '[AdminPreview]';
|
|
11
|
-
|
|
12
|
-
/**
|
|
13
|
-
* The url as it was when this module was first evaluated. Captured here because detection can run
|
|
14
|
-
* again later, when the url may already have been rewritten.
|
|
15
|
-
*/
|
|
16
|
-
const INITIAL_HREF = window.location.href;
|
|
17
|
-
|
|
18
|
-
/**
|
|
19
|
-
* Remembers the last logged result per detector, so repeated calls only log on a real change.
|
|
20
|
-
* isAdminPreviewActive() is called from hot paths like breakpoints and scroll handling.
|
|
21
|
-
*/
|
|
22
|
-
const lastLoggedResults = {};
|
|
23
|
-
|
|
24
|
-
/**
|
|
25
|
-
* Reads a sticky preview flag. Storage access throws in a sandboxed iframe without
|
|
26
|
-
* "allow-same-origin", and is blocked by some browsers in cross-origin iframes - the preview
|
|
27
|
-
* runs in exactly that context, so a throw here would break app boot for everyone.
|
|
28
|
-
* @param key The session storage key to read.
|
|
29
|
-
* @returns True when the flag was persisted before, false otherwise.
|
|
30
|
-
*/
|
|
31
|
-
const readStickyFlag = key => {
|
|
32
|
-
try {
|
|
33
|
-
return window.sessionStorage.getItem(key) === '1';
|
|
34
|
-
} catch (error) {
|
|
35
|
-
logger.warn(`${LOG_PREFIX} session storage is not readable`, {
|
|
36
|
-
key,
|
|
37
|
-
error
|
|
38
|
-
});
|
|
39
|
-
return false;
|
|
40
|
-
}
|
|
41
|
-
};
|
|
42
|
-
|
|
43
|
-
/**
|
|
44
|
-
* Persists a sticky preview flag, so preview mode survives a reload or a url rewrite that drops
|
|
45
|
-
* the query string. See readStickyFlag for why this can throw.
|
|
46
|
-
* @param key The session storage key to write.
|
|
47
|
-
*/
|
|
48
|
-
const writeStickyFlag = key => {
|
|
49
|
-
try {
|
|
50
|
-
window.sessionStorage.setItem(key, '1');
|
|
51
|
-
} catch (error) {
|
|
52
|
-
logger.warn(`${LOG_PREFIX} session storage is not writable`, {
|
|
53
|
-
key,
|
|
54
|
-
error
|
|
55
|
-
});
|
|
56
|
-
}
|
|
57
|
-
};
|
|
58
|
-
|
|
59
|
-
/**
|
|
60
|
-
* Logs how a detection result was reached, but only when it differs from the previous result for
|
|
61
|
-
* that detector. Kept verbose on purpose: it exists to investigate why preview mode is not picked
|
|
62
|
-
* up on deployed builds.
|
|
63
|
-
* @param name The detector that produced the result.
|
|
64
|
-
* @param result The detected result.
|
|
65
|
-
* @param matchedUrl Whether the current url carries the preview marker.
|
|
66
|
-
* @param matchedStickyFlag Whether the persisted sticky flag was set.
|
|
67
|
-
*/
|
|
68
|
-
const logDetection = (name, result, matchedUrl, matchedStickyFlag) => {
|
|
69
|
-
if (lastLoggedResults[name] === result) {
|
|
70
|
-
return;
|
|
71
|
-
}
|
|
72
|
-
lastLoggedResults[name] = result;
|
|
73
|
-
logger.log(`${LOG_PREFIX} ${name} -> ${result}`, {
|
|
74
|
-
result,
|
|
75
|
-
// True when the url still carries the marker.
|
|
76
|
-
matchedUrl,
|
|
77
|
-
// True when the result came from the persisted flag - i.e. the url lost the marker.
|
|
78
|
-
matchedStickyFlag,
|
|
79
|
-
// Compare these two to see whether the url changed since the app booted.
|
|
80
|
-
initialHref: INITIAL_HREF,
|
|
81
|
-
currentHref: window.location.href,
|
|
82
|
-
pathname: window.location.pathname,
|
|
83
|
-
search: window.location.search,
|
|
84
|
-
// A cross-origin parent means the app really is embedded in the admin.
|
|
85
|
-
isInIframe: window.parent !== window,
|
|
86
|
-
referrer: document.referrer
|
|
87
|
-
});
|
|
88
|
-
};
|
|
89
|
-
|
|
90
|
-
/**
|
|
91
|
-
* Detects whether the app is in page admin preview mode. Once detected, the result is remembered
|
|
92
|
-
* for the rest of the session, because the url is not guaranteed to keep the preview marker.
|
|
93
|
-
* @returns True if the app is in page admin preview mode, false otherwise.
|
|
94
|
-
*/
|
|
95
|
-
export const detectPageAdminPreview = () => {
|
|
96
|
-
const matchedUrl = window.location.pathname.startsWith(PAGE_PREVIEW_PATTERN);
|
|
97
|
-
if (matchedUrl) {
|
|
98
|
-
writeStickyFlag(SESSION_STORAGE_KEY_PAGE_PREVIEW);
|
|
99
|
-
logDetection('detectPageAdminPreview', true, true, false);
|
|
100
|
-
return true;
|
|
101
|
-
}
|
|
102
|
-
const matchedStickyFlag = readStickyFlag(SESSION_STORAGE_KEY_PAGE_PREVIEW);
|
|
103
|
-
logDetection('detectPageAdminPreview', matchedStickyFlag, false, matchedStickyFlag);
|
|
104
|
-
return matchedStickyFlag;
|
|
105
|
-
};
|
|
106
|
-
|
|
107
|
-
/**
|
|
108
|
-
* Detects whether the app is in frontend settings admin preview mode. Once detected, the result is
|
|
109
|
-
* remembered for the rest of the session, because the url is not guaranteed to keep the query
|
|
110
|
-
* param.
|
|
111
|
-
* @returns True if the app is in frontend settings admin preview mode, false otherwise.
|
|
112
|
-
*/
|
|
113
|
-
export const detectFrontendSettingsAdminPreview = () => {
|
|
114
|
-
const matchedUrl = window.location.search.includes(FRONTEND_SETTINGS_PREVIEW_PARAM);
|
|
115
|
-
if (matchedUrl) {
|
|
116
|
-
writeStickyFlag(SESSION_STORAGE_KEY_FRONTEND_SETTINGS_PREVIEW);
|
|
117
|
-
logDetection('detectFrontendSettingsAdminPreview', true, true, false);
|
|
118
|
-
return true;
|
|
119
|
-
}
|
|
120
|
-
const matchedStickyFlag = readStickyFlag(SESSION_STORAGE_KEY_FRONTEND_SETTINGS_PREVIEW);
|
|
121
|
-
logDetection('detectFrontendSettingsAdminPreview', matchedStickyFlag, false, matchedStickyFlag);
|
|
122
|
-
return matchedStickyFlag;
|
|
123
|
-
};
|
|
124
|
-
|
|
125
|
-
/**
|
|
126
|
-
* Detects whether the app is in admin preview mode (pages or frontend settings).
|
|
127
|
-
* @returns True if the app is in admin preview mode, false otherwise.
|
|
128
|
-
*/
|
|
129
|
-
export const detectAdminPreview = () => detectPageAdminPreview() || detectFrontendSettingsAdminPreview();
|
|
130
|
-
|
|
131
|
-
/**
|
|
132
|
-
* Returns the current detection state. Exposed on window as SGAdminPreviewDebug so the values can
|
|
133
|
-
* be inspected on a deployed build, from the console of the preview iframe:
|
|
134
|
-
*
|
|
135
|
-
* window.SGAdminPreviewDebug()
|
|
136
|
-
*
|
|
137
|
-
* @returns A snapshot of everything detection depends on.
|
|
138
|
-
*/
|
|
139
|
-
export const getAdminPreviewDebugInfo = () => ({
|
|
140
|
-
initialHref: INITIAL_HREF,
|
|
141
|
-
currentHref: window.location.href,
|
|
142
|
-
pathname: window.location.pathname,
|
|
143
|
-
search: window.location.search,
|
|
144
|
-
urlChangedSinceBoot: INITIAL_HREF !== window.location.href,
|
|
145
|
-
isInIframe: window.parent !== window,
|
|
146
|
-
referrer: document.referrer,
|
|
147
|
-
stickyFlags: {
|
|
148
|
-
page: readStickyFlag(SESSION_STORAGE_KEY_PAGE_PREVIEW),
|
|
149
|
-
frontendSettings: readStickyFlag(SESSION_STORAGE_KEY_FRONTEND_SETTINGS_PREVIEW)
|
|
150
|
-
},
|
|
151
|
-
detected: {
|
|
152
|
-
page: detectPageAdminPreview(),
|
|
153
|
-
frontendSettings: detectFrontendSettingsAdminPreview(),
|
|
154
|
-
any: detectAdminPreview()
|
|
155
|
-
}
|
|
156
|
-
});
|
|
157
|
-
logger.log(`${LOG_PREFIX} module evaluated`, {
|
|
158
|
-
href: INITIAL_HREF,
|
|
159
|
-
search: window.location.search,
|
|
160
|
-
hasParamAtBoot: window.location.search.includes(FRONTEND_SETTINGS_PREVIEW_PARAM),
|
|
161
|
-
isInIframe: window.parent !== window,
|
|
162
|
-
referrer: document.referrer
|
|
163
|
-
});
|
|
164
|
-
|
|
165
|
-
// @ts-expect-error - debug-only global, intentionally not on the Window type.
|
|
166
|
-
window.SGAdminPreviewDebug = getAdminPreviewDebugInfo;
|
|
@@ -1,71 +0,0 @@
|
|
|
1
|
-
import "core-js/modules/es.regexp.flags.js";
|
|
2
|
-
import React from 'react';
|
|
3
|
-
import PropTypes from 'prop-types';
|
|
4
|
-
import { I18n, SurroundPortals, RippleButton } from '@shopgate/engage/components';
|
|
5
|
-
import { makeStyles } from '@shopgate/engage/styles';
|
|
6
|
-
import { CART_CHECKOUT_BUTTON } from '@shopgate/pwa-common-commerce/cart/constants/Portals';
|
|
7
|
-
import { FulfillmentSheet, STAGE_RESERVE_FORM } from "../../../locations";
|
|
8
|
-
import { CartContext } from "../../cart.context";
|
|
9
|
-
import connect from "./PaymentBarReserveButton.connector";
|
|
10
|
-
import { jsx as _jsx } from "react/jsx-runtime";
|
|
11
|
-
const useStyles = makeStyles()(theme => ({
|
|
12
|
-
button: {
|
|
13
|
-
width: '100%',
|
|
14
|
-
background: theme.components.ctaButton.background,
|
|
15
|
-
color: `${theme.contrastColor(theme.components.ctaButton.background)}!important`
|
|
16
|
-
},
|
|
17
|
-
disabledButton: {
|
|
18
|
-
width: '100%',
|
|
19
|
-
background: theme.palette.action.disabledBackground,
|
|
20
|
-
color: `${theme.contrastColor(theme.palette.action.disabledBackground)}!important`
|
|
21
|
-
}
|
|
22
|
-
}));
|
|
23
|
-
|
|
24
|
-
/**
|
|
25
|
-
* The reserve button component.
|
|
26
|
-
* @param {Object} props The component props.
|
|
27
|
-
* @param {Function} props.historyReset The history reset function.
|
|
28
|
-
* @return {JSX.Element} The rendered component.
|
|
29
|
-
*/
|
|
30
|
-
const PaymentBarReserveButton = ({
|
|
31
|
-
historyReset
|
|
32
|
-
}) => {
|
|
33
|
-
const {
|
|
34
|
-
classes
|
|
35
|
-
} = useStyles();
|
|
36
|
-
const {
|
|
37
|
-
flags: {
|
|
38
|
-
orderable
|
|
39
|
-
}
|
|
40
|
-
} = React.useContext(CartContext);
|
|
41
|
-
|
|
42
|
-
/**
|
|
43
|
-
* Handles the click on the button.
|
|
44
|
-
*/
|
|
45
|
-
const handleClick = React.useCallback(() => {
|
|
46
|
-
FulfillmentSheet.open({
|
|
47
|
-
stage: STAGE_RESERVE_FORM,
|
|
48
|
-
callback: (_location, _product, orderSuccess) => {
|
|
49
|
-
if (orderSuccess === true) {
|
|
50
|
-
historyReset();
|
|
51
|
-
}
|
|
52
|
-
}
|
|
53
|
-
});
|
|
54
|
-
}, [historyReset]);
|
|
55
|
-
return /*#__PURE__*/_jsx(SurroundPortals, {
|
|
56
|
-
portalName: CART_CHECKOUT_BUTTON,
|
|
57
|
-
portalProps: {
|
|
58
|
-
isActive: orderable
|
|
59
|
-
},
|
|
60
|
-
children: /*#__PURE__*/_jsx(RippleButton, {
|
|
61
|
-
onClick: handleClick,
|
|
62
|
-
disabled: !orderable,
|
|
63
|
-
type: "regular",
|
|
64
|
-
className: orderable ? classes.button : classes.disabledButton,
|
|
65
|
-
children: /*#__PURE__*/_jsx(I18n.Text, {
|
|
66
|
-
string: "cart.reserve"
|
|
67
|
-
})
|
|
68
|
-
})
|
|
69
|
-
});
|
|
70
|
-
};
|
|
71
|
-
export default connect(PaymentBarReserveButton);
|
|
@@ -1,41 +0,0 @@
|
|
|
1
|
-
import React from 'react';
|
|
2
|
-
import { mount } from 'enzyme';
|
|
3
|
-
import Chip from '@shopgate/pwa-ui-shared/Chip';
|
|
4
|
-
import ChipsLayout from "./index";
|
|
5
|
-
|
|
6
|
-
/**
|
|
7
|
-
* Since the component uses the <Measure> component it needs an actual
|
|
8
|
-
* browser to be tested as it needs a full browser that supports styling and
|
|
9
|
-
* width/height calculation.
|
|
10
|
-
*/
|
|
11
|
-
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
12
|
-
describe('<ChipsLayout />', () => {
|
|
13
|
-
it('should render with one chip', () => {
|
|
14
|
-
const Component = /*#__PURE__*/_jsx(ChipsLayout, {
|
|
15
|
-
children: /*#__PURE__*/_jsx(Chip, {
|
|
16
|
-
id: "some-id",
|
|
17
|
-
children: "foo"
|
|
18
|
-
})
|
|
19
|
-
});
|
|
20
|
-
const wrapper = mount(Component);
|
|
21
|
-
expect(wrapper).toMatchSnapshot();
|
|
22
|
-
expect(wrapper.find(Chip).length).toEqual(1);
|
|
23
|
-
expect(wrapper.find(Chip).at(0).find('button').at(1).text()).toEqual('foo');
|
|
24
|
-
});
|
|
25
|
-
it('should render with two chips', () => {
|
|
26
|
-
const Component = /*#__PURE__*/_jsxs(ChipsLayout, {
|
|
27
|
-
children: [/*#__PURE__*/_jsx(Chip, {
|
|
28
|
-
id: "some-id",
|
|
29
|
-
children: "foo"
|
|
30
|
-
}), /*#__PURE__*/_jsx(Chip, {
|
|
31
|
-
id: "some-other-id",
|
|
32
|
-
children: "bar"
|
|
33
|
-
})]
|
|
34
|
-
});
|
|
35
|
-
const wrapper = mount(Component);
|
|
36
|
-
expect(wrapper).toMatchSnapshot();
|
|
37
|
-
expect(wrapper.find(Chip).length).toEqual(2);
|
|
38
|
-
expect(wrapper.find(Chip).at(0).find('button').at(1).text()).toEqual('foo');
|
|
39
|
-
expect(wrapper.find(Chip).at(1).find('button').at(1).text()).toEqual('bar');
|
|
40
|
-
});
|
|
41
|
-
});
|
package/components/Logo/spec.js
DELETED
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
import React from 'react';
|
|
2
|
-
import { shallow } from 'enzyme';
|
|
3
|
-
import Logo from "./index";
|
|
4
|
-
import { jsx as _jsx } from "react/jsx-runtime";
|
|
5
|
-
jest.mock("./connector", () => Component => Component);
|
|
6
|
-
describe('<Logo />', () => {
|
|
7
|
-
it('should render an image', () => {
|
|
8
|
-
const wrapper = shallow(/*#__PURE__*/_jsx(Logo, {}));
|
|
9
|
-
expect(wrapper).toMatchSnapshot();
|
|
10
|
-
expect(wrapper.find('img').exists()).toBe(true);
|
|
11
|
-
});
|
|
12
|
-
});
|