@shopgate/engage 7.30.0-alpha.8 → 7.30.0-beta.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/a11y/components/FocusTrap/index.js +1 -1
- package/a11y/components/LiveMessage/index.js +8 -6
- package/a11y/components/LiveMessenger/index.js +12 -9
- package/a11y/components/Navigation/index.js +18 -14
- package/a11y/components/Section/index.js +19 -12
- package/account/components/Account/Account.js +49 -38
- package/account/components/Profile/Profile.js +10 -7
- package/account/components/Profile/Profile.provider.js +5 -3
- package/account/components/Profile/ProfileAddressBook.js +25 -19
- package/account/components/Profile/ProfileAddressCard.js +70 -50
- package/account/components/Profile/ProfileForm.js +27 -22
- package/account/components/Profile/ProfileHeader.js +10 -7
- package/account/components/ProfileContact/ProfileContact.js +21 -17
- package/account/helper/form.js +9 -9
- package/back-in-stock/components/BackInStockButton/index.js +28 -21
- package/back-in-stock/components/CharacteristicsButton/index.js +2 -1
- package/back-in-stock/components/ProductInfoBackInStockButton/index.js +11 -9
- package/back-in-stock/components/Subscriptions/components/List/index.js +30 -24
- package/back-in-stock/components/Subscriptions/components/Subscription/index.js +75 -64
- package/back-in-stock/components/Subscriptions/index.js +4 -1
- package/back-in-stock/providers/BackInStockSubscriptionsProvider.js +5 -3
- package/cart/cart.helpers.js +3 -3
- package/cart/components/CartHeaderWide/CartHeaderWide.js +5 -3
- package/cart/components/CartItem/CartItem.js +24 -20
- package/cart/components/CartItem/CartItemCoupon.js +59 -45
- package/cart/components/CartItem/CartItemCouponCode.js +5 -3
- package/cart/components/CartItem/CartItemCouponDelete.js +5 -3
- package/cart/components/CartItem/CartItemCouponFreeShipping.js +4 -1
- package/cart/components/CartItem/CartItemCouponIcon.js +7 -6
- package/cart/components/CartItem/CartItemCouponLayout.js +44 -35
- package/cart/components/CartItem/CartItemCouponPrice.js +6 -4
- package/cart/components/CartItem/CartItemCouponTitle.js +5 -3
- package/cart/components/CartItem/CartItemProduct.js +24 -18
- package/cart/components/CartItem/CartItemProductLayout.js +105 -85
- package/cart/components/CartItem/CartItemProductLayoutWide.js +100 -88
- package/cart/components/CartItem/CartItemProductLayoutWide.style.js +2 -2
- package/cart/components/CartItem/CartItemProductLayoutWideFulfillmentLabel.js +6 -5
- package/cart/components/CartItem/CartItemProductLayoutWideFulfillmentLabel.style.js +1 -1
- package/cart/components/CartItem/CartItemProductLayoutWideOrderDetails.js +19 -13
- package/cart/components/CartItem/CartItemProductLayoutWideRemoveItem.js +8 -7
- package/cart/components/CartItem/CartItemProductOrderDetails.js +54 -40
- package/cart/components/CartItem/CartItemProductPriceCaption.js +8 -6
- package/cart/components/CartItem/CartItemProductPriceList.js +34 -28
- package/cart/components/CartItem/CartItemProductPriceListPromotion.js +40 -33
- package/cart/components/CartItem/CartItemProductProvider.js +7 -3
- package/cart/components/CartItem/CartItemProductProviderLegacy.js +22 -14
- package/cart/components/CartItem/CartItemProductTitle.js +57 -45
- package/cart/components/CartItem/CartItemProvider.js +6 -4
- package/cart/components/CartItem/CartItemQuantityPicker.js +49 -55
- package/cart/components/CartItem/CartItemSubstitution.js +14 -9
- package/cart/components/CartItems/CartItemCard.js +10 -6
- package/cart/components/CartItems/CartItemCardReservation.js +28 -22
- package/cart/components/CartItems/CartItemCardReservationAccordion.js +20 -15
- package/cart/components/CartItems/CartItemCardReservationLabel.js +28 -20
- package/cart/components/CartItems/CartItemCardReservationLabelChangeStore.js +7 -5
- package/cart/components/CartItems/CartItemGroup.js +7 -4
- package/cart/components/CartItems/CartItemGroupReservation.js +25 -19
- package/cart/components/CartItems/CartItemGroupReservationLabel.js +13 -7
- package/cart/components/CartItems/CartItemGroupShipping.js +15 -7
- package/cart/components/CartItems/CartItems.js +56 -45
- package/cart/components/CartItems/CartItemsHeaderWide.js +48 -37
- package/cart/components/CartItems/CartItemsSubstitution.js +18 -12
- package/cart/components/CartSummaryWide/CartSummaryWide.js +34 -30
- package/cart/components/CartSummaryWide/CartSummaryWideCheckoutButton.js +22 -17
- package/cart/components/CartSummaryWide/CartSummaryWideFooter.js +2 -1
- package/cart/components/PaymentBar/PaymentBar.js +2 -1
- package/cart/components/PaymentBar/PaymentBarAppliedPromotions.js +18 -17
- package/cart/components/PaymentBar/PaymentBarCheckoutButton.js +19 -15
- package/cart/components/PaymentBar/PaymentBarContent.js +34 -27
- package/cart/components/PaymentBar/PaymentBarDiscounts.js +24 -22
- package/cart/components/PaymentBar/PaymentBarGrandTotal.js +18 -15
- package/cart/components/PaymentBar/PaymentBarPromotionCouponMessages.js +15 -11
- package/cart/components/PaymentBar/PaymentBarPromotionCoupons.js +40 -36
- package/cart/components/PaymentBar/PaymentBarPromotionalText.js +22 -17
- package/cart/components/PaymentBar/PaymentBarReserveButton.js +15 -12
- package/cart/components/PaymentBar/PaymentBarShippingCost.js +20 -17
- package/cart/components/PaymentBar/PaymentBarSubTotal.js +18 -15
- package/cart/components/PaymentBar/PaymentBarTax.js +20 -17
- package/cart/components/Substitution/index.js +21 -16
- package/cart/components/SupplementalContent/SupplementalContent.js +2 -1
- package/category/components/CategoryImage/index.js +4 -4
- package/category/components/CategoryList/index.js +60 -57
- package/checkout/components/AddressBook/AddressBook.js +6 -1
- package/checkout/components/AddressBook/AddressList.js +31 -24
- package/checkout/components/AddressBookContact/AddressBookContact.js +13 -6
- package/checkout/components/Checkout/Checkout.js +29 -21
- package/checkout/components/Checkout/CheckoutActions.js +17 -12
- package/checkout/components/Checkout/CheckoutAddress.js +40 -16
- package/checkout/components/Checkout/CheckoutHeader.js +17 -12
- package/checkout/components/Checkout/CheckoutPickupContactForm.js +19 -15
- package/checkout/components/Checkout/CheckoutSection.js +73 -52
- package/checkout/components/Checkout/CheckoutSectionInfo.js +6 -4
- package/checkout/components/Checkout/CheckoutSectionMessages.js +16 -14
- package/checkout/components/Checkout/CheckoutSummary.js +18 -13
- package/checkout/components/CheckoutConfirmation/CheckoutConfirmation.js +95 -79
- package/checkout/components/CheckoutConfirmation/CheckoutConfirmationBilledTo.js +6 -5
- package/checkout/components/CheckoutConfirmation/CheckoutConfirmationOrderContact.js +2 -1
- package/checkout/components/CheckoutConfirmation/CheckoutConfirmationOrderSummary.js +13 -9
- package/checkout/components/CheckoutConfirmation/CheckoutConfirmationPickUpContact.js +2 -1
- package/checkout/components/CheckoutConfirmation/CheckoutConfirmationPickupNotes.js +2 -1
- package/checkout/components/CheckoutConfirmation/CheckoutConfirmationSection.js +59 -44
- package/checkout/components/CheckoutConfirmation/CheckoutConfirmationShippedTo.js +4 -3
- package/checkout/components/GuestCheckout/GuestCheckout.js +29 -22
- package/checkout/components/GuestCheckout/GuestCheckoutOptIn.js +17 -13
- package/checkout/components/GuestCheckout/GuestCheckoutPickup.js +16 -7
- package/checkout/components/GuestCheckout/GuestCheckoutPickupNotes.js +16 -13
- package/checkout/components/PaymentMethodButton/PaymentMethodButton.js +5 -3
- package/checkout/components/ResponsiveBackButton/ResponsiveBackButton.js +15 -12
- package/checkout/components/ShippingMethods/ShippingMethod.js +22 -15
- package/checkout/components/ShippingMethods/ShippingMethods.js +49 -41
- package/checkout/components/SupplementalContent/SupplementalContent.js +2 -1
- package/checkout/helpers/index.js +2 -2
- package/checkout/paymentMethods/index.js +33 -28
- package/checkout/paymentMethods/paypal/PaypalButton.js +7 -2
- package/checkout/paymentMethods/paypal/PaypalButtonApp.js +9 -5
- package/checkout/paymentMethods/paypal/PaypalButtonWeb.js +14 -11
- package/checkout/paymentMethods/paypal/PaypalPayButton.js +9 -5
- package/checkout/paymentMethods/stripe/StripeButton.js +33 -25
- package/checkout/paymentMethods/stripe/StripeCreditCard.js +70 -60
- package/checkout/paymentMethods/stripe/StripePayButton.js +5 -3
- package/checkout/paymentMethods/stripe/StripeProvider.js +11 -10
- package/checkout/providers/AddressBookProvider.js +5 -3
- package/checkout/providers/CheckoutProvider.js +24 -19
- package/checkout/selectors/guestCheckout.js +1 -1
- package/components/BrandingColorBanner/BrandingColorBanner.js +7 -5
- package/components/ChipLayout/index.js +64 -49
- package/components/ChipLayout/spec.js +16 -8
- package/components/ConnectedReactPortal/index.js +19 -21
- package/components/Footer/Footer.js +9 -6
- package/components/Form/Builder/Builder.js +85 -74
- package/components/Form/Builder/ElementCheckbox.js +19 -17
- package/components/Form/Builder/ElementMultiSelect.js +42 -38
- package/components/Form/Builder/ElementPhoneNumber.js +39 -36
- package/components/Form/Builder/ElementRadio.js +25 -23
- package/components/Form/Builder/ElementSelect.js +25 -23
- package/components/Form/Builder/ElementText.js +22 -20
- package/components/Form/Builder/FormHelper.js +18 -15
- package/components/Form/Builder/classes/ActionListener.js +400 -401
- package/components/Form/Form.js +23 -15
- package/components/IntersectionVisibility/index.js +23 -17
- package/components/Logo/index.js +9 -7
- package/components/Logo/spec.js +2 -1
- package/components/Menu/components/Item/index.js +12 -8
- package/components/Menu/components/Position/index.js +20 -12
- package/components/Menu/index.js +60 -60
- package/components/MessageBar/MessageBar.js +35 -31
- package/components/NavigationHandler/index.js +14 -8
- package/components/NavigationHandler/spec.js +9 -3
- package/components/Picker/components/Button/index.js +11 -7
- package/components/Picker/components/List/index.js +19 -16
- package/components/Picker/components/Modal/index.js +34 -25
- package/components/Picker/index.js +44 -33
- package/components/Picker/spec.js +4 -1
- package/components/PickerUtilize/components/Button/index.js +11 -7
- package/components/PickerUtilize/index.js +56 -43
- package/components/PickerUtilize/spec.js +2 -1
- package/components/QuantityInput/QuantityInput.js +5 -5
- package/components/QuantityLabel/QuantityLabel.js +5 -3
- package/components/Radio/Radio.js +28 -24
- package/components/RadioCard/RadioCard.js +26 -22
- package/components/RadioGroup/RadioGroup.js +16 -12
- package/components/RangeSlider/components/Handle/index.js +8 -6
- package/components/RangeSlider/index.js +108 -114
- package/components/RangeSlider/spec.js +9 -6
- package/components/ScrollHeader/index.js +5 -3
- package/components/SheetDrawer/index.js +4 -3
- package/components/SheetList/components/Item/index.js +67 -47
- package/components/SheetList/components/Item/spec.js +18 -13
- package/components/SheetList/index.js +40 -30
- package/components/SheetList/spec.js +20 -14
- package/components/SheetList/style.js +1 -1
- package/components/SideNavigation/SideNavigation.js +7 -5
- package/components/SideNavigation/SideNavigationCategories.js +14 -11
- package/components/SideNavigation/SideNavigationCategoriesItem.js +17 -13
- package/components/SideNavigation/SideNavigationCategoriesItemChildren.js +7 -5
- package/components/SideNavigation/SideNavigationContent.js +13 -8
- package/components/SideNavigation/SideNavigationItem.js +24 -19
- package/components/SideNavigation/SideNavigationLinks.js +36 -30
- package/components/SideNavigation/SideNavigationLinksLegal.js +4 -5
- package/components/SideNavigation/SideNavigationLinksQuicklinks.js +3 -3
- package/components/SideNavigation/SideNavigationNestedItem.js +19 -9
- package/components/SideNavigation/SideNavigationProvider.js +5 -3
- package/components/SnackBarContainer/index.js +9 -2
- package/components/Switch/index.js +20 -14
- package/components/Tabs/TabContext.js +5 -3
- package/components/Tabs/components/Tab.js +8 -5
- package/components/Tabs/components/TabIndicator.js +5 -4
- package/components/Tabs/components/TabPanel.js +5 -3
- package/components/Tabs/components/Tabs.js +15 -11
- package/components/Tabs/useEventCallback.js +1 -1
- package/components/TextLink/TextLink.js +4 -3
- package/components/TimeBoundary/index.js +31 -22
- package/components/TimeBoundary/spec.js +13 -9
- package/components/Toggle/index.js +21 -18
- package/components/Typography/Typography.js +5 -5
- package/components/VideoPlayer/index.js +45 -35
- package/components/View/components/Above/index.js +17 -14
- package/components/View/components/Below/index.js +17 -14
- package/components/View/components/Content/components/ParallaxProvider/index.js +8 -5
- package/components/View/components/Content/index.js +102 -83
- package/components/View/index.js +28 -19
- package/components/View/provider.js +61 -50
- package/core/classes/GeolocationRequest.js +9 -7
- package/core/classes/GeolocationRequestApp.js +7 -5
- package/core/classes/GeolocationRequestBrowser.js +7 -4
- package/core/collections/AppInitialization.js +11 -10
- package/core/config/ThemeConfigResolver.js +21 -19
- package/core/helpers/errorBehavior.js +4 -4
- package/core/hocs/withApp.js +7 -4
- package/core/hocs/withCurrentProduct.js +5 -2
- package/core/hocs/withForwardedRef.js +5 -2
- package/core/hocs/withNavigation.js +5 -2
- package/core/hocs/withRoute.js +7 -2
- package/core/hocs/withTheme.js +13 -8
- package/core/hocs/withThemeResources.js +10 -7
- package/core/hocs/withWidgetSettings.js +5 -4
- package/core/hocs/withWidgetStyles.js +5 -4
- package/core/hooks/events/appEvents.d.ts +83 -0
- package/core/hooks/events/appEvents.js +125 -0
- package/core/hooks/events/index.js +1 -0
- package/core/hooks/index.js +1 -0
- package/core/hooks/useLocalStorage.d.ts +8 -0
- package/core/hooks/useLocalStorage.js +38 -0
- package/core/providers/AppProvider.js +38 -27
- package/core/providers/ThemeResourcesProvider.js +8 -5
- package/development/components/ClientInformation/ClientInformation.js +18 -13
- package/development/components/DevelopmentSettings/DevelopmentSettings.js +18 -14
- package/development/components/DevelopmentTools/DevelopmentTools.js +6 -1
- package/development/components/SimulatedInsets/SimulatedInsetBottom.js +9 -8
- package/development/components/SimulatedInsets/SimulatedInsetTop.js +15 -12
- package/development/components/SimulatedInsets/SimulatedInsets.js +12 -8
- package/favorites/components/CommentDialog/CommentDialog.js +29 -27
- package/favorites/components/FavoriteButtonWide/FavoriteButtonWide.js +5 -3
- package/favorites/components/Item/Item.js +120 -100
- package/favorites/components/Item/ItemCharacteristics.js +10 -7
- package/favorites/components/Item/ItemNotes.js +33 -22
- package/favorites/components/Item/ItemQuantity.js +14 -12
- package/favorites/components/ItemFulfillmentMethod/ItemFulfillmentMethod.js +16 -12
- package/favorites/components/List/List.js +32 -27
- package/favorites/components/List/ListAccordionHeader.js +14 -8
- package/favorites/components/List/ListAccordionLabel.js +5 -3
- package/favorites/components/List/ListContent.js +45 -40
- package/favorites/components/List/ListItemWrapper.js +22 -19
- package/favorites/components/ListChooser/ListChooser.js +17 -14
- package/favorites/components/ListChooser/ListChooserItem.js +13 -9
- package/favorites/components/Lists/Lists.js +39 -35
- package/favorites/components/Lists/ListsModal.js +29 -19
- package/favorites/components/RemoveButton/RemoveButton.js +8 -5
- package/filter/components/FilterItem/index.js +5 -3
- package/filter/components/FilterItem/spec.js +6 -1
- package/filter/components/FilterPageContent/components/ApplyButton/index.js +21 -17
- package/filter/components/FilterPageContent/components/ApplyButton/spec.js +8 -7
- package/filter/components/FilterPageContent/components/ResetButton/index.js +17 -13
- package/filter/components/FilterPageContent/components/ResetButton/spec.js +4 -3
- package/filter/components/FilterPageContent/components/Selector/components/Selected/index.js +25 -13
- package/filter/components/FilterPageContent/components/Selector/components/Selected/spec.js +3 -2
- package/filter/components/FilterPageContent/components/Selector/components/Toggle/index.js +38 -24
- package/filter/components/FilterPageContent/components/Selector/components/Toggle/spec.js +5 -4
- package/filter/components/FilterPageContent/components/Selector/components/ValueButton/index.js +31 -19
- package/filter/components/FilterPageContent/components/Selector/components/ValueButton/spec.js +4 -3
- package/filter/components/FilterPageContent/components/Selector/index.js +58 -43
- package/filter/components/FilterPageContent/components/Selector/spec.js +3 -6
- package/filter/components/FilterPageContent/index.js +44 -42
- package/filter/components/FilterPageContentWithProvider/index.js +7 -5
- package/filter/components/PriceSlider/components/Label/index.js +80 -71
- package/filter/components/PriceSlider/components/Label/spec.js +2 -1
- package/filter/components/PriceSlider/index.js +39 -29
- package/filter/components/PriceSlider/spec.js +3 -2
- package/filter/hocs/withSort.js +7 -2
- package/filter/providers/FilterPageProvider.js +6 -4
- package/filter/providers/SortProvider.js +5 -3
- package/locations/components/Cart/CartChangeFulfillmentMethod.js +5 -4
- package/locations/components/Cart/CartContextMenuChangeFulfillment.js +5 -1
- package/locations/components/Cart/CartContextMenuChangeFulfillmentContent.js +10 -8
- package/locations/components/Cart/CartContextMenuItemChangeFulfillment.js +7 -5
- package/locations/components/Cart/CartContextMenuItemChangeLocation.js +7 -5
- package/locations/components/Cart/CartItemProductChangeLocation.js +2 -1
- package/locations/components/ChangeLocationButton/ChangeLocationButton.js +15 -12
- package/locations/components/FulfillmentPath/FulfillmentPath.js +38 -34
- package/locations/components/FulfillmentPath/FulfillmentPathItem.js +10 -6
- package/locations/components/FulfillmentPathSelector/FulfillmentPathSelector.js +13 -9
- package/locations/components/FulfillmentSelector/FulfillmentSelector.js +33 -26
- package/locations/components/FulfillmentSelector/FulfillmentSelectorAlternativeLocation.js +44 -34
- package/locations/components/FulfillmentSelector/FulfillmentSelectorBOPIS.js +5 -3
- package/locations/components/FulfillmentSelector/FulfillmentSelectorDirectShip.js +25 -17
- package/locations/components/FulfillmentSelector/FulfillmentSelectorHeader.js +8 -3
- package/locations/components/FulfillmentSelector/FulfillmentSelectorImpossibleError.js +2 -1
- package/locations/components/FulfillmentSelector/FulfillmentSelectorItem.js +29 -20
- package/locations/components/FulfillmentSelector/FulfillmentSelectorLocation.js +75 -57
- package/locations/components/FulfillmentSelector/FulfillmentSelectorLocationMethodNotAvailable.js +2 -1
- package/locations/components/FulfillmentSelector/FulfillmentSelectorROPIS.js +5 -3
- package/locations/components/FulfillmentSheet/FulfillmentSheet.js +7 -3
- package/locations/components/FulfillmentSheet/FulfillmentSheetContent.js +8 -5
- package/locations/components/FulfillmentSlotSwitcher/FulfillmentSlotDialog.js +53 -42
- package/locations/components/FulfillmentSlotSwitcher/FulfillmentSlotProvider.js +2 -2
- package/locations/components/FulfillmentSlotSwitcher/FulfillmentSlotSwitcher.js +12 -10
- package/locations/components/FulfillmentSlotSwitcher/FulfillmentSlotSwitcherBar.js +23 -17
- package/locations/components/FulfillmentSlotSwitcher/FulfillmentSlotSwitcherDefault.js +22 -15
- package/locations/components/GlobalLocationSelector/GlobalLocationSelector.js +2 -1
- package/locations/components/GlobalLocationSwitcher/GlobalLocationSwitcher.js +23 -20
- package/locations/components/GlobalLocationSwitcher/GlobalLocationSwitcherBar.js +27 -20
- package/locations/components/GlobalLocationSwitcher/GlobalLocationSwitcherDefault.js +22 -15
- package/locations/components/ReservationResponses/ReservationError.js +11 -7
- package/locations/components/ReservationResponses/ReservationSuccess.js +17 -11
- package/locations/components/ReserveForm/ReserveForm.js +99 -89
- package/locations/components/ReserveForm/ReserveFormPhone.js +21 -19
- package/locations/components/StockInfo/StockInfo.js +15 -12
- package/locations/components/StockInfo/StockInfoInventory.js +2 -1
- package/locations/components/StockInfoLists/index.js +24 -19
- package/locations/components/StoreDetails/components/FindMoreStores.js +37 -29
- package/locations/components/StoreDetails/components/GetDirectionsButton.js +13 -9
- package/locations/components/StoreDetails/components/StoreDetails.js +106 -67
- package/locations/components/StoreDetails/components/StoreFinderMap.js +23 -21
- package/locations/components/StoreDetails/components/StoreLocationMap.js +11 -7
- package/locations/components/StoreDetails/components/StoresNearby.js +16 -8
- package/locations/components/StoreDetails/components/StoresNearbyListItem.js +63 -47
- package/locations/components/StoreDetails/index.js +7 -3
- package/locations/components/StoreFinder/StoreFinder.js +16 -11
- package/locations/components/StoreFinder/StoreFinderGetDirectionsButton.js +9 -6
- package/locations/components/StoreFinder/StoreFinderLocation.js +5 -3
- package/locations/components/StoreFinder/StoreFinderLocationDetails.js +11 -8
- package/locations/components/StoreFinder/StoreFinderLocationHeader.js +45 -32
- package/locations/components/StoreFinder/StoreFinderLocationHeaderPhoneNumber.js +12 -8
- package/locations/components/StoreFinder/StoreFinderLocations.js +14 -10
- package/locations/components/StoreFinder/StoreFinderSearch.js +7 -5
- package/locations/components/StoreFinder/StoreFinderSelectLocationButton.js +10 -7
- package/locations/components/StoreFinder/StoreFinderStoreInfoButton.js +10 -7
- package/locations/components/StoreList/StoreAddress.js +33 -21
- package/locations/components/StoreList/StoreAddressShort.js +31 -21
- package/locations/components/StoreList/StoreCard.js +4 -1
- package/locations/components/StoreList/StoreDetails.js +13 -11
- package/locations/components/StoreList/StoreDetailsLine.js +17 -13
- package/locations/components/StoreList/StoreDistance.js +5 -3
- package/locations/components/StoreList/StoreHeader.js +46 -33
- package/locations/components/StoreList/StoreHoursToday.js +7 -5
- package/locations/components/StoreList/StoreList.js +4 -1
- package/locations/components/StoreList/StoreListLocations.js +18 -13
- package/locations/components/StoreList/StoreListProduct.js +20 -14
- package/locations/components/StoreList/StoreListProductInfo.js +17 -13
- package/locations/components/StoreList/StoreListProductName.js +11 -7
- package/locations/components/StoreList/StoreListSearch.js +66 -55
- package/locations/components/StoreList/StoreListSearchRadius.js +19 -16
- package/locations/components/StoreList/StoreOpeningHours.js +19 -13
- package/locations/components/StoreList/StoreOpeningHoursLine.js +12 -8
- package/locations/components/StoreList/StorePhoneNumber.js +17 -13
- package/locations/components/StoreList/StoreSelectLocationButton.js +10 -7
- package/locations/providers/FulfillmentProvider.connector.js +6 -6
- package/locations/providers/FulfillmentProvider.js +24 -23
- package/locations/providers/StoreDetailsProvider.js +5 -3
- package/locations/providers/StoreFinderProvider.js +5 -3
- package/login/components/ForgotPassword/ForgotPassword.js +64 -50
- package/orders/components/OrderDetails/OrderDetails.js +9 -6
- package/orders/components/OrderDetails/OrderDetailsAuthenticate.js +63 -47
- package/orders/components/OrderDetails/OrderDetailsContent.js +9 -5
- package/orders/components/OrderDetails/OrderDetailsOrder.js +44 -39
- package/orders/components/OrderDetails/OrderDetailsOrderHeader.js +39 -31
- package/orders/components/OrderDetails/OrderDetailsOrderPickupLocation.js +2 -1
- package/orders/components/OrderHistory/OrderHistory.js +27 -22
- package/orders/components/OrderHistory/OrderHistoryList.js +47 -35
- package/orders/components/OrderHistory/OrderHistoryLoader.js +19 -16
- package/orders/components/OrderHistory/OrderHistoryTable.js +57 -34
- package/orders/providers/OrderDetailsPrivateProvider.js +5 -3
- package/orders/providers/OrderDetailsProvider.js +6 -4
- package/orders/providers/OrderHistoryProvider.js +5 -3
- package/orders/reducers/orders.js +1 -1
- package/package.json +12 -14
- package/page/components/NotFound.js +28 -23
- package/page/components/ResponsiveWidgetImage/ResponsiveWidgetImage.js +48 -27
- package/page/components/WidgetHeadline/WidgetHeadline.js +6 -4
- package/page/components/WidgetRichText/WidgetRichText.js +5 -3
- package/page/components/WidgetVideo/WidgetVideo.js +159 -0
- package/page/components/WidgetVideo/index.js +1 -0
- package/page/components/Widgets/Overlay.js +12 -12
- package/page/components/Widgets/Tooltip.js +13 -11
- package/page/components/Widgets/Widget.js +34 -25
- package/page/components/Widgets/WidgetProvider.js +5 -3
- package/page/components/Widgets/Widgets.js +22 -19
- package/page/components/Widgets/WidgetsPreviewProvider.js +5 -3
- package/page/hooks/index.js +7 -14
- package/page/selectors/index.js +7 -24
- package/page/widgets/Button/Button.js +19 -12
- package/page/widgets/CategoryList/CategoryList.js +11 -8
- package/page/widgets/CategoryList/hooks.js +1 -1
- package/page/widgets/HTML/HTML.js +5 -3
- package/page/widgets/Headline/Headline.js +2 -1
- package/page/widgets/HeroBanner/HeroBanner.js +51 -23
- package/page/widgets/HeroBanner/hooks.js +19 -4
- package/page/widgets/Image/Image.js +14 -11
- package/page/widgets/ImageRow/ImageRow.js +53 -28
- package/page/widgets/ImageRow/hooks.js +14 -2
- package/page/widgets/ImageSlider/ImageSlider.js +27 -22
- package/page/widgets/NestedCategoryFilter/NestedCategoryFilter.js +164 -0
- package/page/widgets/NestedCategoryFilter/components/Picker/components/Sheet/index.js +59 -0
- package/page/widgets/NestedCategoryFilter/components/Picker/components/SheetItem/index.js +60 -0
- package/page/widgets/NestedCategoryFilter/components/Picker/index.js +124 -0
- package/page/widgets/NestedCategoryFilter/hooks.js +35 -0
- package/page/widgets/NestedCategoryFilter/index.js +1 -0
- package/page/widgets/Placeholder/Placeholder.js +16 -12
- package/page/widgets/ProductList/ProductList.js +34 -18
- package/page/widgets/ProductList/hooks.js +4 -2
- package/page/widgets/ProductSlider/ProductSlider.js +27 -23
- package/page/widgets/RichText/RichText.js +2 -1
- package/page/widgets/Video/Video.js +14 -55
- package/page/widgets/Video/hooks.js +6 -2
- package/page/widgets/index.js +2 -1
- package/page/widgets/widgets.json +3 -0
- package/product/components/Availability/Availability.js +14 -11
- package/product/components/Characteristics/Characteristic/components/Sheet/index.js +104 -84
- package/product/components/Characteristics/Characteristic/components/SheetItem/index.js +41 -27
- package/product/components/Characteristics/Characteristic/index.js +83 -64
- package/product/components/Characteristics/Swatch/index.js +54 -38
- package/product/components/Characteristics/index.js +36 -20
- package/product/components/Description/index.js +27 -20
- package/product/components/EffectivityDates/index.js +42 -37
- package/product/components/FilterBar/FilterBarProvider.js +5 -3
- package/product/components/FilterBar/components/Content/components/FilterButton/index.js +24 -17
- package/product/components/FilterBar/components/Content/components/FilterChips/index.js +24 -19
- package/product/components/FilterBar/components/Content/components/Sort/components/Item/index.js +5 -3
- package/product/components/FilterBar/components/Content/components/Sort/index.js +14 -12
- package/product/components/FilterBar/components/Content/index.js +15 -11
- package/product/components/FilterBar/components/Content/spec.js +7 -6
- package/product/components/FilterBar/components/FilterModal/FilterModal.js +21 -16
- package/product/components/FilterBar/components/FilterModal/FilterModalContent.js +12 -9
- package/product/components/FilterBar/components/FilterModal/FilterModalTitle.js +22 -16
- package/product/components/FilterBar/index.js +16 -10
- package/product/components/Header/PriceStriked/index.js +32 -23
- package/product/components/Header/Shipping/components/Label/index.js +14 -11
- package/product/components/Header/Shipping/index.js +19 -14
- package/product/components/Header/Shipping/spec.js +7 -5
- package/product/components/Header/Tiers/components/Tier/index.js +10 -9
- package/product/components/Header/Tiers/components/Tier/spec.js +3 -2
- package/product/components/Header/Tiers/index.js +17 -13
- package/product/components/Header/Tiers/spec.js +6 -5
- package/product/components/MapPriceHint/index.js +14 -11
- package/product/components/Media/FeaturedMedia.js +8 -6
- package/product/components/Media/MediaImage.js +19 -16
- package/product/components/Media/MediaPlaceholder.js +11 -8
- package/product/components/MediaSlider/components/MediaImage/index.js +9 -7
- package/product/components/MediaSlider/components/MediaVideo/index.js +24 -19
- package/product/components/MediaSlider/index.js +29 -23
- package/product/components/Options/components/Content/index.js +52 -44
- package/product/components/Options/components/Content/spec.js +13 -10
- package/product/components/Options/components/Option/index.js +23 -20
- package/product/components/Options/components/TextOption/components/OptionInfo/index.js +31 -24
- package/product/components/Options/components/TextOption/components/OptionInfo/spec.js +4 -3
- package/product/components/Options/components/TextOption/index.js +84 -69
- package/product/components/Options/index.js +17 -13
- package/product/components/OrderQuantityHint/index.js +29 -24
- package/product/components/PriceDifference/index.js +2 -1
- package/product/components/PriceInfo/PriceInfo.js +13 -11
- package/product/components/ProductBadges/index.js +9 -6
- package/product/components/ProductCard/index.js +54 -47
- package/product/components/ProductCharacteristics/index.js +65 -57
- package/product/components/ProductDiscountBadge/index.js +18 -14
- package/product/components/ProductDiscountBadge/spec.js +7 -5
- package/product/components/ProductFilters/index.js +25 -21
- package/product/components/ProductGrid/components/Item/components/ItemDetails/index.js +29 -25
- package/product/components/ProductGrid/components/Item/components/ItemDetails/spec.js +10 -5
- package/product/components/ProductGrid/components/Item/components/ItemDiscount/index.js +11 -8
- package/product/components/ProductGrid/components/Item/components/ItemFavoritesButton/index.js +14 -11
- package/product/components/ProductGrid/components/Item/components/ItemFavoritesButton/spec.js +14 -11
- package/product/components/ProductGrid/components/Item/components/ItemImage/index.js +10 -8
- package/product/components/ProductGrid/components/Item/components/ItemImage/spec.js +4 -4
- package/product/components/ProductGrid/components/Item/components/ItemName/index.js +11 -8
- package/product/components/ProductGrid/components/Item/components/ItemName/spec.js +5 -1
- package/product/components/ProductGrid/components/Item/components/ItemPrice/index.js +7 -5
- package/product/components/ProductGrid/components/Item/components/ItemPrice/spec.js +8 -9
- package/product/components/ProductGrid/components/Item/index.js +36 -31
- package/product/components/ProductGrid/components/Iterator/index.js +15 -12
- package/product/components/ProductGrid/components/Layout/index.js +5 -3
- package/product/components/ProductGrid/index.js +34 -30
- package/product/components/ProductGrid/spec.js +3 -2
- package/product/components/ProductGridPrice/index.js +37 -24
- package/product/components/ProductImage/ProductImagePlaceholder.js +7 -5
- package/product/components/ProductImage/index.js +57 -45
- package/product/components/ProductImage/spec.js +9 -8
- package/product/components/ProductList/components/Item/index.js +172 -152
- package/product/components/ProductList/components/Iterator/index.js +27 -24
- package/product/components/ProductList/components/Layout/index.js +5 -3
- package/product/components/ProductList/index.js +33 -27
- package/product/components/ProductName/ProductName.js +19 -15
- package/product/components/ProductName/ProductNameContent.js +14 -9
- package/product/components/ProductProperties/Content.js +12 -8
- package/product/components/ProductProperties/Group.js +12 -8
- package/product/components/ProductProperties/GroupedProperties.js +18 -15
- package/product/components/ProductProperties/Lists.js +12 -9
- package/product/components/ProductProperties/ListsHTML.js +11 -9
- package/product/components/ProductProperties/ProductProperties.js +7 -5
- package/product/components/ProductProperties/Row.js +22 -18
- package/product/components/ProductProperties/RowHTML.js +14 -10
- package/product/components/ProductProperties/Rows.js +5 -6
- package/product/components/ProductProperties/Wrapper.js +9 -3
- package/product/components/ProductSlider/index.js +28 -23
- package/product/components/ProductSlider/spec.js +5 -2
- package/product/components/ProductVariants/VariantAvailability.js +9 -7
- package/product/components/QuantityPicker/index.js +11 -8
- package/product/components/Rating/index.js +16 -13
- package/product/components/Rating/spec.js +7 -5
- package/product/components/RelationsSlider/RelationsSheet.js +22 -16
- package/product/components/RelationsSlider/RelationsSlider.js +2 -1
- package/product/components/RelationsSlider/RelationsSliderContent.js +30 -25
- package/product/components/Swatch/Swatch.js +2 -1
- package/product/components/Swatch/SwatchContent.js +25 -23
- package/product/components/Swatch/VariantSwatch.js +2 -1
- package/product/components/Swatches/Swatches.js +10 -8
- package/product/components/UnitQuantityPicker/CartUnitQuantityPicker.js +2 -1
- package/product/components/UnitQuantityPicker/ProductUnitQuantityPicker.js +32 -24
- package/product/components/UnitQuantityPicker/UnitQuantityPicker.js +70 -62
- package/product/components/UnitQuantityPicker/UnitQuantityPickerWithSection.js +17 -14
- package/product/hocs/withMapPricing.js +30 -18
- package/product/hocs/withPriceCalculation.js +7 -2
- package/product/hocs/withProductListEntry.js +7 -4
- package/product/hocs/withProductListEntryProduct.js +4 -1
- package/product/hocs/withProductListType.js +7 -4
- package/product/providers/ProductListEntry/index.js +5 -3
- package/product/providers/ProductListType/index.js +5 -3
- package/product/selectors/helpers/wrapMemoizedSelector.js +2 -2
- package/push-opt-in/components/PushOptInModal/index.js +52 -42
- package/registration/components/GuestRegistration/GuestRegistration.js +8 -5
- package/registration/components/GuestRegistration/GuestRegistrationContent.js +21 -17
- package/registration/components/GuestRegistration/GuestRegistrationFormPickup.js +17 -14
- package/registration/components/Registration/Registration.js +7 -5
- package/registration/components/Registration/RegistrationContent.js +14 -8
- package/registration/components/Registration/RegistrationFormActions.js +11 -8
- package/registration/components/Registration/RegistrationFormBase.js +12 -10
- package/registration/components/Registration/RegistrationFormBilling.js +12 -10
- package/registration/components/Registration/RegistrationFormExtra.js +12 -10
- package/registration/components/Registration/RegistrationFormShipping.js +12 -10
- package/registration/components/Registration/RegistrationFormToggle.js +15 -12
- package/registration/providers/GuestRegistrationProvider.actions.js +3 -3
- package/registration/providers/GuestRegistrationProvider.js +5 -3
- package/registration/providers/RegistrationProvider.actions.js +2 -2
- package/registration/providers/RegistrationProvider.js +7 -5
- package/reviews/components/Reviews/components/AllReviewsLink/index.js +11 -8
- package/reviews/components/Reviews/components/Header/components/AverageRating/index.js +10 -8
- package/reviews/components/Reviews/components/Header/components/NoReviews/index.js +16 -11
- package/reviews/components/Reviews/components/Header/components/ReviewsExcerpt/index.js +21 -17
- package/reviews/components/Reviews/components/Header/components/WriteReviewLink/index.js +12 -9
- package/reviews/components/Reviews/components/Header/components/WriteReviewLink/spec.js +7 -5
- package/reviews/components/Reviews/components/Header/index.js +3 -2
- package/reviews/components/Reviews/components/Header/spec.js +7 -3
- package/reviews/components/Reviews/components/List/components/Info/components/Author/index.js +2 -1
- package/reviews/components/Reviews/components/List/components/Info/components/ReviewDate/index.js +2 -1
- package/reviews/components/Reviews/components/List/components/Info/index.js +9 -7
- package/reviews/components/Reviews/components/List/components/Rating/index.js +8 -6
- package/reviews/components/Reviews/components/List/components/Review/index.js +13 -11
- package/reviews/components/Reviews/components/List/components/Text/index.js +5 -3
- package/reviews/components/Reviews/components/List/components/Title/index.js +5 -3
- package/reviews/components/Reviews/components/List/index.js +34 -24
- package/reviews/components/Reviews/components/List/spec.js +2 -1
- package/reviews/components/Reviews/components/RatingCount/index.js +2 -1
- package/reviews/components/Reviews/components/RatingCount/spec.js +3 -2
- package/reviews/components/Reviews/components/ReviewsInfo/index.js +11 -6
- package/reviews/components/Reviews/index.js +16 -13
- package/reviews/components/Reviews/spec.js +8 -6
- package/styles/theme/createTheme/createBreakpoints.js +1 -1
- package/styles/theme/hooks/useResponsiveValue.js +1 -1
- package/styles/theme/providers/ActiveBreakpointProvider.js +6 -4
- package/styles/theme/providers/ThemeProvider.js +7 -3
- package/tracking/components/CookieConsentModal/index.js +83 -66
- package/tracking/components/PrivacySettings/index.js +104 -78
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
import ResponsiveContainer from '@shopgate/engage/components/ResponsiveContainer';
|
|
3
3
|
import { css } from 'glamor';
|
|
4
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
4
5
|
const brandingColorBanner = css({
|
|
5
6
|
position: 'fixed',
|
|
6
7
|
backgroundColor: 'var(--color-background-gutter-header, var(--color-primary))',
|
|
@@ -14,10 +15,11 @@ const brandingColorBanner = css({
|
|
|
14
15
|
* @param {Object} props The component props.
|
|
15
16
|
* @returns {JSX}
|
|
16
17
|
*/
|
|
17
|
-
const BrandingColorBanner = () => /*#__PURE__*/
|
|
18
|
+
const BrandingColorBanner = () => /*#__PURE__*/_jsx(ResponsiveContainer, {
|
|
18
19
|
breakpoint: ">xs",
|
|
19
|
-
webOnly: true
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
})
|
|
20
|
+
webOnly: true,
|
|
21
|
+
children: /*#__PURE__*/_jsx("div", {
|
|
22
|
+
className: brandingColorBanner
|
|
23
|
+
})
|
|
24
|
+
});
|
|
23
25
|
export default BrandingColorBanner;
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
import _createClass from "@babel/runtime/helpers/createClass";
|
|
2
|
+
import _inheritsLoose from "@babel/runtime/helpers/inheritsLoose";
|
|
1
3
|
import React, { Component } from 'react';
|
|
2
4
|
import PropTypes from 'prop-types';
|
|
3
5
|
import debounce from 'lodash/debounce';
|
|
@@ -5,6 +7,7 @@ import I18n from '@shopgate/pwa-common/components/I18n';
|
|
|
5
7
|
import RippleButton from '@shopgate/pwa-ui-shared/RippleButton';
|
|
6
8
|
import { themeConfig } from '@shopgate/pwa-common/helpers/config';
|
|
7
9
|
import styles from "./style";
|
|
10
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
8
11
|
const {
|
|
9
12
|
variables
|
|
10
13
|
} = themeConfig;
|
|
@@ -24,18 +27,22 @@ export const CHIP_MINIMUM_WIDTH = 60;
|
|
|
24
27
|
/**
|
|
25
28
|
* The ChipLayout component.
|
|
26
29
|
*/
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
+
let ChipLayout = /*#__PURE__*/function (_Component) {
|
|
31
|
+
function ChipLayout(...args) {
|
|
32
|
+
var _this;
|
|
33
|
+
_this = _Component.call.apply(_Component, [this].concat(args)) || this;
|
|
30
34
|
/**
|
|
31
35
|
* Debounced, eg. layout effect
|
|
32
36
|
*/
|
|
33
|
-
|
|
37
|
+
_this.processHiddenElementsDebounced = debounce(_this.processHiddenElements, 50);
|
|
38
|
+
return _this;
|
|
34
39
|
}
|
|
40
|
+
_inheritsLoose(ChipLayout, _Component);
|
|
41
|
+
var _proto = ChipLayout.prototype;
|
|
35
42
|
/**
|
|
36
43
|
* When the component mounts we need to initially process all children.
|
|
37
44
|
*/
|
|
38
|
-
componentDidMount() {
|
|
45
|
+
_proto.componentDidMount = function componentDidMount() {
|
|
39
46
|
this.processHiddenElementsDebounced();
|
|
40
47
|
}
|
|
41
48
|
|
|
@@ -47,35 +54,19 @@ class ChipLayout extends Component {
|
|
|
47
54
|
* It must be done on every prop change, including the pathname.
|
|
48
55
|
* Sometimes this component is rendered invisible, then since `.processHiddenElements` uses
|
|
49
56
|
* refs.clientHeight it would always be zero.
|
|
50
|
-
|
|
51
|
-
componentDidUpdate() {
|
|
57
|
+
*/;
|
|
58
|
+
_proto.componentDidUpdate = function componentDidUpdate() {
|
|
52
59
|
this.processHiddenElementsDebounced();
|
|
53
60
|
}
|
|
54
61
|
|
|
55
62
|
/**
|
|
56
63
|
* Returns the maximum height the container should have.
|
|
57
64
|
* @returns {number}
|
|
58
|
-
|
|
59
|
-
get maxContentHeight() {
|
|
60
|
-
// 8 -> container padding.
|
|
61
|
-
return CHIP_ROW_HEIGHT * this.props.maxRows + 8;
|
|
62
|
-
}
|
|
63
|
-
|
|
64
|
-
/**
|
|
65
|
-
* Returns the more button styles.
|
|
66
|
-
* @return {string} The store button class name.
|
|
67
|
-
*/
|
|
68
|
-
get moreButtonStyles() {
|
|
69
|
-
if (this.props.invertMoreButton) {
|
|
70
|
-
return styles.moreButtonInverted;
|
|
71
|
-
}
|
|
72
|
-
return styles.moreButton;
|
|
73
|
-
}
|
|
74
|
-
|
|
65
|
+
*/;
|
|
75
66
|
/**
|
|
76
67
|
* Loops through all children to make sure the more button appears if there is too much content.
|
|
77
68
|
*/
|
|
78
|
-
processHiddenElements() {
|
|
69
|
+
_proto.processHiddenElements = function processHiddenElements() {
|
|
79
70
|
if (!this.containerRef) {
|
|
80
71
|
return;
|
|
81
72
|
}
|
|
@@ -128,37 +119,61 @@ class ChipLayout extends Component {
|
|
|
128
119
|
element.setAttribute('style', 'display: none');
|
|
129
120
|
return true;
|
|
130
121
|
});
|
|
131
|
-
}
|
|
122
|
+
};
|
|
132
123
|
/**
|
|
133
124
|
* Renders the component.
|
|
134
125
|
* @returns {JSX}
|
|
135
126
|
*/
|
|
136
|
-
render() {
|
|
137
|
-
return /*#__PURE__*/
|
|
127
|
+
_proto.render = function render() {
|
|
128
|
+
return /*#__PURE__*/_jsxs("div", {
|
|
138
129
|
ref: element => {
|
|
139
130
|
this.containerRef = element;
|
|
140
131
|
},
|
|
141
|
-
className: `${styles.container(this.maxContentHeight)} engage__chip-layout
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
}
|
|
132
|
+
className: `${styles.container(this.maxContentHeight)} engage__chip-layout`,
|
|
133
|
+
children: [/*#__PURE__*/_jsx("div", {
|
|
134
|
+
ref: element => {
|
|
135
|
+
this.layoutRef = element;
|
|
136
|
+
},
|
|
137
|
+
className: styles.layout,
|
|
138
|
+
children: this.props.children
|
|
139
|
+
}), /*#__PURE__*/_jsx("div", {
|
|
140
|
+
ref: element => {
|
|
141
|
+
this.moreButtonRef = element;
|
|
142
|
+
},
|
|
143
|
+
className: styles.moreButtonWrapper,
|
|
144
|
+
children: /*#__PURE__*/_jsx(RippleButton, {
|
|
145
|
+
fill: true,
|
|
146
|
+
type: "plain",
|
|
147
|
+
className: this.moreButtonStyles,
|
|
148
|
+
onClick: this.props.handleMoreButton,
|
|
149
|
+
children: /*#__PURE__*/_jsx(I18n.Text, {
|
|
150
|
+
string: this.props.moreLabel
|
|
151
|
+
})
|
|
152
|
+
})
|
|
153
|
+
})]
|
|
154
|
+
});
|
|
155
|
+
};
|
|
156
|
+
return _createClass(ChipLayout, [{
|
|
157
|
+
key: "maxContentHeight",
|
|
158
|
+
get: function () {
|
|
159
|
+
// 8 -> container padding.
|
|
160
|
+
return CHIP_ROW_HEIGHT * this.props.maxRows + 8;
|
|
161
|
+
}
|
|
162
|
+
|
|
163
|
+
/**
|
|
164
|
+
* Returns the more button styles.
|
|
165
|
+
* @return {string} The store button class name.
|
|
166
|
+
*/
|
|
167
|
+
}, {
|
|
168
|
+
key: "moreButtonStyles",
|
|
169
|
+
get: function () {
|
|
170
|
+
if (this.props.invertMoreButton) {
|
|
171
|
+
return styles.moreButtonInverted;
|
|
172
|
+
}
|
|
173
|
+
return styles.moreButton;
|
|
174
|
+
}
|
|
175
|
+
}]);
|
|
176
|
+
}(Component);
|
|
162
177
|
ChipLayout.defaultProps = {
|
|
163
178
|
children: null,
|
|
164
179
|
handleMoreButton: () => {},
|
|
@@ -8,22 +8,30 @@ import ChipsLayout from "./index";
|
|
|
8
8
|
* browser to be tested as it needs a full browser that supports styling and
|
|
9
9
|
* width/height calculation.
|
|
10
10
|
*/
|
|
11
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
11
12
|
describe('<ChipsLayout />', () => {
|
|
12
13
|
it('should render with one chip', () => {
|
|
13
|
-
const Component = /*#__PURE__*/
|
|
14
|
-
|
|
15
|
-
|
|
14
|
+
const Component = /*#__PURE__*/_jsx(ChipsLayout, {
|
|
15
|
+
children: /*#__PURE__*/_jsx(Chip, {
|
|
16
|
+
id: "some-id",
|
|
17
|
+
children: "foo"
|
|
18
|
+
})
|
|
19
|
+
});
|
|
16
20
|
const wrapper = mount(Component);
|
|
17
21
|
expect(wrapper).toMatchSnapshot();
|
|
18
22
|
expect(wrapper.find(Chip).length).toEqual(1);
|
|
19
23
|
expect(wrapper.find(Chip).at(0).find('button').at(1).text()).toEqual('foo');
|
|
20
24
|
});
|
|
21
25
|
it('should render with two chips', () => {
|
|
22
|
-
const Component = /*#__PURE__*/
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
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
|
+
});
|
|
27
35
|
const wrapper = mount(Component);
|
|
28
36
|
expect(wrapper).toMatchSnapshot();
|
|
29
37
|
expect(wrapper.find(Chip).length).toEqual(2);
|
|
@@ -1,30 +1,28 @@
|
|
|
1
|
-
import React from 'react';
|
|
2
1
|
import PropTypes from 'prop-types';
|
|
3
|
-
import {
|
|
4
|
-
|
|
2
|
+
import { createPortal } from 'react-dom';
|
|
3
|
+
const node = document.getElementById('portals');
|
|
5
4
|
|
|
6
5
|
/**
|
|
7
|
-
*
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
*
|
|
13
|
-
* children rendered in the portal have access to the Redux store.
|
|
14
|
-
*
|
|
15
|
-
* This addresses the limitation introduced by the switch to the new Context API in react-redux v6,
|
|
16
|
-
* where the Redux store is only accessible to components within the StoreProvider. Since the Portal
|
|
17
|
-
* component renders its children outside the React component tree, this wrapper bridges the gap.
|
|
18
|
-
*
|
|
19
|
-
* @type {ReactPortal}
|
|
6
|
+
* The connected react portal component rendering its children into a react portal node.
|
|
7
|
+
* @param {Object} props The component props
|
|
8
|
+
* @param {boolean} props.isOpened Whether the portal is open
|
|
9
|
+
* @param {React.ReactNode} props.children The children to render inside the portal
|
|
10
|
+
* @private
|
|
11
|
+
* @returns {React.ReactPortal|null}
|
|
20
12
|
*/
|
|
21
13
|
const ConnectedReactPortal = ({
|
|
22
14
|
children,
|
|
23
|
-
|
|
24
|
-
}) =>
|
|
25
|
-
|
|
26
|
-
|
|
15
|
+
isOpened
|
|
16
|
+
}) => {
|
|
17
|
+
if (!isOpened) return null;
|
|
18
|
+
return /*#__PURE__*/createPortal(children, node);
|
|
19
|
+
};
|
|
20
|
+
ConnectedReactPortal.propTypes = {
|
|
21
|
+
children: PropTypes.node,
|
|
22
|
+
isOpened: PropTypes.bool
|
|
23
|
+
};
|
|
27
24
|
ConnectedReactPortal.defaultProps = {
|
|
28
|
-
children: null
|
|
25
|
+
children: null,
|
|
26
|
+
isOpened: false
|
|
29
27
|
};
|
|
30
28
|
export default ConnectedReactPortal;
|
|
@@ -13,6 +13,7 @@ import { APP_FOOTER_ID, DATA_IGNORED } from "./constants";
|
|
|
13
13
|
* @param {Object} props The component props.
|
|
14
14
|
* @returns {JSX.Element}
|
|
15
15
|
*/
|
|
16
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
16
17
|
const Footer = ({
|
|
17
18
|
children
|
|
18
19
|
}) => {
|
|
@@ -53,12 +54,14 @@ const Footer = ({
|
|
|
53
54
|
observer.disconnect();
|
|
54
55
|
};
|
|
55
56
|
}, [performFooterUpdate]);
|
|
56
|
-
return /*#__PURE__*/
|
|
57
|
-
className: classNames(classes.footer, 'engage__footer')
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
57
|
+
return /*#__PURE__*/_jsx("div", {
|
|
58
|
+
className: classNames(classes.footer, 'engage__footer'),
|
|
59
|
+
children: /*#__PURE__*/_jsx("div", {
|
|
60
|
+
id: APP_FOOTER_ID,
|
|
61
|
+
ref: footerRef,
|
|
62
|
+
children: children
|
|
63
|
+
})
|
|
64
|
+
});
|
|
62
65
|
};
|
|
63
66
|
Footer.defaultProps = {
|
|
64
67
|
children: null
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import _inheritsLoose from "@babel/runtime/helpers/inheritsLoose";
|
|
1
2
|
import _camelCase from "lodash/camelCase";
|
|
2
3
|
var _Builder;
|
|
3
4
|
import React, { Component, Fragment } from 'react';
|
|
@@ -26,6 +27,7 @@ import { sanitizePortalName } from "./helpers/common";
|
|
|
26
27
|
* Optional select element
|
|
27
28
|
* @type {Object}
|
|
28
29
|
*/
|
|
30
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
29
31
|
const emptySelectOption = {
|
|
30
32
|
'': ''
|
|
31
33
|
};
|
|
@@ -34,13 +36,14 @@ const emptySelectOption = {
|
|
|
34
36
|
* Takes a form configuration and handles rendering and updates of the form fields.
|
|
35
37
|
* Note: Only one country and one province element is supported per FormBuilder instance.
|
|
36
38
|
*/
|
|
37
|
-
|
|
39
|
+
let Builder = /*#__PURE__*/function (_Component) {
|
|
38
40
|
/**
|
|
39
41
|
* Initializes the component.
|
|
40
42
|
* @param {Object} props The components props.
|
|
41
43
|
*/
|
|
42
|
-
|
|
43
|
-
|
|
44
|
+
function Builder(props) {
|
|
45
|
+
var _this;
|
|
46
|
+
_this = _Component.call(this, props) || this;
|
|
44
47
|
|
|
45
48
|
// Prepare internal state
|
|
46
49
|
/**
|
|
@@ -48,7 +51,7 @@ class Builder extends Component {
|
|
|
48
51
|
* @param {string} type The type value of the element to return.
|
|
49
52
|
* @returns {*|ElementText|ElementSelect|ElementCheckbox|ElementRadio|null}
|
|
50
53
|
*/
|
|
51
|
-
|
|
54
|
+
_this.getFormElementComponent = type => _this.props.elements[type] || Builder.defaultElements[type] || null;
|
|
52
55
|
/**
|
|
53
56
|
* Sorts the elements by "sortOrder" property
|
|
54
57
|
*
|
|
@@ -59,7 +62,7 @@ class Builder extends Component {
|
|
|
59
62
|
* @param {FormElement} element2 Second element
|
|
60
63
|
* @returns {number}
|
|
61
64
|
*/
|
|
62
|
-
|
|
65
|
+
_this.elementSortFunc = (element1, element2) => {
|
|
63
66
|
// Keep current sort order when no specific sort order was set for both
|
|
64
67
|
if (element1.sortOrder === undefined || element2.sortOrder === undefined) {
|
|
65
68
|
return 0;
|
|
@@ -74,18 +77,18 @@ class Builder extends Component {
|
|
|
74
77
|
* @param {string} elementId Element to create the handler for
|
|
75
78
|
* @param {string} value Element value
|
|
76
79
|
*/
|
|
77
|
-
|
|
80
|
+
_this.elementChangeHandler = (elementId, value) => {
|
|
78
81
|
// "newState" is the state changes before any form actions have been applied
|
|
79
82
|
const newState = {
|
|
80
|
-
...
|
|
83
|
+
..._this.state,
|
|
81
84
|
formData: {
|
|
82
|
-
...
|
|
85
|
+
..._this.state.formData,
|
|
83
86
|
[elementId]: value
|
|
84
87
|
}
|
|
85
88
|
};
|
|
86
89
|
|
|
87
90
|
// Handle context sensitive functionality by via "action" listener and use the "new" state
|
|
88
|
-
const updatedNewState =
|
|
91
|
+
const updatedNewState = _this.actionListener.notify(elementId, _this.state, newState);
|
|
89
92
|
|
|
90
93
|
// Form actions can append validation errors by adding that field to the new state
|
|
91
94
|
// Split out validation errors from final state and
|
|
@@ -98,7 +101,7 @@ class Builder extends Component {
|
|
|
98
101
|
let hasErrors = Object.keys(validationErrors).length > 0;
|
|
99
102
|
|
|
100
103
|
// Check "required" fields for all visible elements and enable rendering on changes
|
|
101
|
-
|
|
104
|
+
_this.formElements.forEach(formElement => {
|
|
102
105
|
if (!finalState.elementVisibility[formElement.id] || !formElement.required) {
|
|
103
106
|
return;
|
|
104
107
|
}
|
|
@@ -108,11 +111,11 @@ class Builder extends Component {
|
|
|
108
111
|
});
|
|
109
112
|
|
|
110
113
|
// Handle state internally and send an "onChange" event to parent if this finished
|
|
111
|
-
|
|
114
|
+
_this.setState(finalState);
|
|
112
115
|
|
|
113
116
|
// Transform to external structure (unavailable ones will be set undefined)
|
|
114
117
|
const updateData = {};
|
|
115
|
-
|
|
118
|
+
_this.formElements.forEach(el => {
|
|
116
119
|
if (el.custom) {
|
|
117
120
|
if (updateData.customAttributes === undefined) {
|
|
118
121
|
updateData.customAttributes = {};
|
|
@@ -124,7 +127,7 @@ class Builder extends Component {
|
|
|
124
127
|
});
|
|
125
128
|
|
|
126
129
|
// Trigger the given update action of the parent and provide all new validation errors to it
|
|
127
|
-
|
|
130
|
+
_this.props.handleUpdate(updateData, hasErrors,
|
|
128
131
|
// Output validation errors in the same structure (array) as the component takes them
|
|
129
132
|
hasErrors ? Object.keys(validationErrors).map(k => ({
|
|
130
133
|
path: k,
|
|
@@ -139,16 +142,16 @@ class Builder extends Component {
|
|
|
139
142
|
* @param {string} elementErrorText The error text to be shown for this specific element
|
|
140
143
|
* @returns {JSX.Element}
|
|
141
144
|
*/
|
|
142
|
-
|
|
145
|
+
_this.renderElement = (formName, element, elementErrorText) => {
|
|
143
146
|
const {
|
|
144
147
|
formData
|
|
145
|
-
} =
|
|
146
|
-
const elementName = `${
|
|
148
|
+
} = _this.state;
|
|
149
|
+
const elementName = `${_this.props.name}_${element.id}`;
|
|
147
150
|
const elementValue = formData[element.id];
|
|
148
|
-
const elementVisible =
|
|
151
|
+
const elementVisible = _this.state.elementVisibility[element.id] || false;
|
|
149
152
|
|
|
150
153
|
// Take a dynamic REACT element based on its type
|
|
151
|
-
const Element =
|
|
154
|
+
const Element = _this.getFormElementComponent(element.type);
|
|
152
155
|
if (!Element) {
|
|
153
156
|
logger.error(`Unknown form element type: ${element.type}`);
|
|
154
157
|
return null;
|
|
@@ -159,13 +162,13 @@ class Builder extends Component {
|
|
|
159
162
|
switch (element.type) {
|
|
160
163
|
case ELEMENT_TYPE_COUNTRY:
|
|
161
164
|
{
|
|
162
|
-
elementData.options = element.options ||
|
|
165
|
+
elementData.options = element.options || _this.countryList;
|
|
163
166
|
break;
|
|
164
167
|
}
|
|
165
168
|
case ELEMENT_TYPE_PROVINCE:
|
|
166
169
|
{
|
|
167
170
|
// Province selection only makes sense with a country being selected, or from custom options
|
|
168
|
-
const countryElement =
|
|
171
|
+
const countryElement = _this.formElements.find(el => el.type === ELEMENT_TYPE_COUNTRY);
|
|
169
172
|
elementData.options = countryElement && formData[countryElement.id] ? buildProvinceList(formData[countryElement.id],
|
|
170
173
|
// Auto-select with "empty" when not required
|
|
171
174
|
element.required ? null : emptySelectOption) : {};
|
|
@@ -174,7 +177,7 @@ class Builder extends Component {
|
|
|
174
177
|
default:
|
|
175
178
|
break;
|
|
176
179
|
}
|
|
177
|
-
return /*#__PURE__*/
|
|
180
|
+
return /*#__PURE__*/_jsx(Element, {
|
|
178
181
|
name: elementName,
|
|
179
182
|
element: elementData,
|
|
180
183
|
errorText: elementErrorText,
|
|
@@ -183,55 +186,58 @@ class Builder extends Component {
|
|
|
183
186
|
formName: formName
|
|
184
187
|
});
|
|
185
188
|
};
|
|
186
|
-
|
|
189
|
+
_this.state = {
|
|
187
190
|
elementVisibility: {},
|
|
188
191
|
formData: {}
|
|
189
192
|
};
|
|
190
193
|
|
|
191
194
|
// Reorganize form elements into a structure that can be easily rendered
|
|
192
|
-
const formElements = buildFormElements(props.config,
|
|
195
|
+
const formElements = buildFormElements(props.config, _this.elementChangeHandler);
|
|
193
196
|
// Compute defaults
|
|
194
197
|
const formDefaults = buildFormDefaults(formElements, props.defaults);
|
|
195
198
|
// Assign defaults to state
|
|
196
|
-
|
|
199
|
+
_this.state.formData = formDefaults;
|
|
197
200
|
|
|
198
201
|
// Handle fixed visibilities
|
|
199
202
|
formElements.forEach(element => {
|
|
200
203
|
// Assume as visible except it's explicitly set to "false"
|
|
201
|
-
|
|
204
|
+
_this.state.elementVisibility[element.id] = element.visible !== false;
|
|
202
205
|
});
|
|
203
|
-
|
|
204
|
-
|
|
206
|
+
_this.actionListener = new ActionListener(buildProvinceList, formDefaults);
|
|
207
|
+
_this.actionListener.attachAll(formElements);
|
|
205
208
|
|
|
206
209
|
// Sort the elements after attaching action listeners to keep action hierarchy same as creation
|
|
207
|
-
|
|
210
|
+
_this.formElements = formElements.sort(_this.elementSortFunc);
|
|
208
211
|
|
|
209
212
|
// Assemble combined country/province list based on the config element
|
|
210
|
-
const _countryElement =
|
|
213
|
+
const _countryElement = _this.formElements.find(el => el.type === ELEMENT_TYPE_COUNTRY);
|
|
211
214
|
if (_countryElement) {
|
|
212
|
-
|
|
213
|
-
const provinceElement =
|
|
215
|
+
_this.countryList = buildCountryList(_countryElement, emptySelectOption);
|
|
216
|
+
const provinceElement = _this.formElements.find(el => el.type === ELEMENT_TYPE_PROVINCE);
|
|
214
217
|
if (provinceElement && provinceElement.required && !!formDefaults[_countryElement.id] && !formDefaults[provinceElement.id]) {
|
|
215
218
|
// Set default for province field for given country
|
|
216
219
|
const [first] = Object.keys(buildProvinceList(formDefaults[_countryElement.id]));
|
|
217
220
|
if (first) {
|
|
218
|
-
|
|
221
|
+
_this.state.formData[provinceElement.id] = first;
|
|
219
222
|
}
|
|
220
223
|
}
|
|
221
224
|
}
|
|
222
225
|
|
|
223
226
|
// Final form initialization, by triggering actionListeners and enable rendering for elements
|
|
224
|
-
let _newState =
|
|
225
|
-
|
|
226
|
-
_newState =
|
|
227
|
+
let _newState = _this.state;
|
|
228
|
+
_this.formElements.forEach(element => {
|
|
229
|
+
_newState = _this.actionListener.notify(element.id, _this.state, _newState);
|
|
227
230
|
});
|
|
228
|
-
|
|
231
|
+
_this.state = _newState;
|
|
232
|
+
return _this;
|
|
229
233
|
}
|
|
234
|
+
_inheritsLoose(Builder, _Component);
|
|
235
|
+
var _proto = Builder.prototype;
|
|
230
236
|
/**
|
|
231
237
|
* Renders the component based on the given config
|
|
232
238
|
* @return {JSX.Element}
|
|
233
239
|
*/
|
|
234
|
-
render() {
|
|
240
|
+
_proto.render = function render() {
|
|
235
241
|
const {
|
|
236
242
|
name,
|
|
237
243
|
className,
|
|
@@ -240,44 +246,49 @@ class Builder extends Component {
|
|
|
240
246
|
// Convert validation errors for easier handling
|
|
241
247
|
const validationErrors = buildValidationErrorList(this.props.validationErrors);
|
|
242
248
|
const validationErrorsAmount = Object.entries(validationErrors).length;
|
|
243
|
-
return /*#__PURE__*/
|
|
249
|
+
return /*#__PURE__*/_jsxs(Form, {
|
|
244
250
|
className: _camelCase(name),
|
|
245
|
-
onSubmit: onSubmit
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
}
|
|
251
|
+
onSubmit: onSubmit,
|
|
252
|
+
children: [validationErrorsAmount > 0 && /*#__PURE__*/_jsx("div", {
|
|
253
|
+
className: "sr-only",
|
|
254
|
+
children: /*#__PURE__*/_jsx(I18n.Text, {
|
|
255
|
+
string: "login.errorAmount",
|
|
256
|
+
params: {
|
|
257
|
+
amount: validationErrorsAmount
|
|
258
|
+
}
|
|
259
|
+
})
|
|
260
|
+
}), /*#__PURE__*/_jsx("div", {
|
|
261
|
+
className: className,
|
|
262
|
+
children: this.formElements.map(element => /*#__PURE__*/_jsxs(Fragment, {
|
|
263
|
+
children: [/*#__PURE__*/_jsx(Portal, {
|
|
264
|
+
name: `${sanitizePortalName(name)}.${sanitizePortalName(element.id)}.${BEFORE}`,
|
|
265
|
+
props: {
|
|
266
|
+
formName: name,
|
|
267
|
+
errorText: validationErrors[element.id] || '',
|
|
268
|
+
element
|
|
269
|
+
}
|
|
270
|
+
}), /*#__PURE__*/_jsx(Portal, {
|
|
271
|
+
name: `${sanitizePortalName(name)}.${sanitizePortalName(element.id)}`,
|
|
272
|
+
props: {
|
|
273
|
+
formName: name,
|
|
274
|
+
errorText: validationErrors[element.id] || '',
|
|
275
|
+
element
|
|
276
|
+
},
|
|
277
|
+
children: this.renderElement(name, element, validationErrors[element.id] || '')
|
|
278
|
+
}), /*#__PURE__*/_jsx(Portal, {
|
|
279
|
+
name: `${sanitizePortalName(name)}.${sanitizePortalName(element.id)}.${AFTER}`,
|
|
280
|
+
props: {
|
|
281
|
+
formName: name,
|
|
282
|
+
errorText: validationErrors[element.id] || '',
|
|
283
|
+
element
|
|
284
|
+
}
|
|
285
|
+
})]
|
|
286
|
+
}, `${name}_${element.id}`))
|
|
287
|
+
})]
|
|
288
|
+
});
|
|
289
|
+
};
|
|
290
|
+
return Builder;
|
|
291
|
+
}(Component);
|
|
281
292
|
_Builder = Builder;
|
|
282
293
|
Builder.defaultElements = {
|
|
283
294
|
[ELEMENT_TYPE_EMAIL]: ElementText,
|