@shopgate/engage 7.27.3-alpha.17 → 7.27.3-alpha.18
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/action-creators/index.js +9 -0
- package/a11y/components/FocusTrap/index.js +1 -0
- package/a11y/components/LiveMessage/index.js +1 -1
- package/a11y/components/LiveMessenger/helpers.js +1 -1
- package/a11y/components/LiveMessenger/index.js +2 -2
- package/a11y/components/ModalStateTracker/index.js +14 -0
- package/a11y/components/Navigation/index.js +1 -1
- package/a11y/components/Section/index.js +3 -3
- package/a11y/components/VisuallyHidden/index.js +1 -1
- package/a11y/components/index.js +1 -1
- package/a11y/constants/index.js +1 -0
- package/a11y/helpers/index.js +1 -0
- package/a11y/hooks/index.js +37 -0
- package/a11y/index.js +1 -4
- package/a11y/reducers/index.js +6 -0
- package/a11y/selectors/index.js +8 -0
- package/a11y/styles.js +2 -0
- package/account/actions/addContacts.js +4 -0
- package/account/actions/deleteContact.js +5 -0
- package/account/actions/deleteCustomer.js +4 -0
- package/account/actions/fetchContacts.js +4 -0
- package/account/actions/fetchCustomer.js +4 -0
- package/account/actions/updateContact.js +4 -0
- package/account/actions/updateCustomer.js +4 -0
- package/account/components/Account/Account.connector.js +5 -0
- package/account/components/Account/Account.js +4 -0
- package/account/components/Account/Account.style.js +1 -0
- package/account/components/Account/index.js +1 -0
- package/account/components/Profile/Profile.config.js +11 -0
- package/account/components/Profile/Profile.constraints.js +1 -0
- package/account/components/Profile/Profile.js +1 -0
- package/account/components/Profile/Profile.provider.js +22 -0
- package/account/components/Profile/ProfileAddressBook.js +6 -0
- package/account/components/Profile/ProfileAddressCard.js +3 -0
- package/account/components/Profile/ProfileForm.js +3 -0
- package/account/components/Profile/ProfileHeader.js +3 -0
- package/account/components/Profile/index.js +1 -0
- package/account/components/ProfileContact/ProfileContact.config.js +11 -0
- package/account/components/ProfileContact/ProfileContact.constraints.js +5 -0
- package/account/components/ProfileContact/ProfileContact.js +13 -0
- package/account/components/ProfileContact/index.js +1 -0
- package/account/components/index.js +1 -0
- package/account/constants/actions.js +1 -0
- package/account/constants/index.js +1 -1
- package/account/constants/pipelines.js +1 -0
- package/account/helper/form.js +61 -0
- package/account/index.js +1 -1
- package/account/reducers/index.js +6 -0
- package/account/selectors/contacts.js +7 -0
- package/account/selectors/customer.js +7 -0
- package/app-rating/actions/showModal.js +3 -3
- package/app-rating/helpers/index.js +1 -1
- package/app-rating/subscriptions/index.js +11 -6
- package/back-in-stock/actions/index.js +1 -1
- package/back-in-stock/components/BackInStockButton/index.js +3 -3
- package/back-in-stock/components/CharacteristicsButton/index.js +1 -1
- package/back-in-stock/components/ProductInfoBackInStockButton/index.js +1 -1
- package/back-in-stock/components/Subscriptions/components/List/index.js +2 -2
- package/back-in-stock/components/Subscriptions/components/Subscription/index.js +2 -2
- package/back-in-stock/components/Subscriptions/index.js +1 -1
- package/back-in-stock/providers/BackInStockSubscriptionsProvider.context.js +1 -1
- package/back-in-stock/providers/BackInStockSubscriptionsProvider.js +1 -1
- package/back-in-stock/selectors/index.js +5 -3
- package/back-in-stock/streams/index.js +1 -1
- package/back-in-stock/subscriptions/index.js +2 -2
- package/cart/cart.constants.js +1 -0
- package/cart/cart.context.js +1 -0
- package/cart/cart.helpers.js +15 -0
- package/cart/cart.hooks.js +4 -0
- package/cart/cart.selectors.js +34 -0
- package/cart/cart.types.js +1 -0
- package/cart/components/CartHeaderWide/CartHeaderWide.js +3 -0
- package/cart/components/CartHeaderWide/CartHeaderWide.style.js +1 -0
- package/cart/components/CartHeaderWide/index.js +1 -0
- package/cart/components/CartItem/CartItem.hooks.js +7 -0
- package/cart/components/CartItem/CartItem.js +7 -0
- package/cart/components/CartItem/CartItem.style.js +1 -0
- package/cart/components/CartItem/CartItemCoupon.connector.js +7 -0
- package/cart/components/CartItem/CartItemCoupon.js +20 -0
- package/cart/components/CartItem/CartItemCoupon.style.js +5 -0
- package/cart/components/CartItem/CartItemCoupon.types.js +0 -0
- package/cart/components/CartItem/CartItemCouponCode.js +5 -0
- package/cart/components/CartItem/CartItemCouponDelete.js +5 -0
- package/cart/components/CartItem/CartItemCouponDelete.style.js +1 -0
- package/cart/components/CartItem/CartItemCouponFreeShipping.js +5 -0
- package/cart/components/CartItem/CartItemCouponIcon.js +4 -0
- package/cart/components/CartItem/CartItemCouponLayout.js +6 -0
- package/cart/components/CartItem/CartItemCouponLayout.style.js +5 -0
- package/cart/components/CartItem/CartItemCouponPrice.js +5 -0
- package/cart/components/CartItem/CartItemCouponPrice.style.js +1 -0
- package/cart/components/CartItem/CartItemCouponTitle.js +5 -0
- package/cart/components/CartItem/CartItemCouponTitle.style.js +1 -0
- package/cart/components/CartItem/CartItemProduct.js +5 -0
- package/cart/components/CartItem/CartItemProduct.style.js +1 -0
- package/cart/components/CartItem/CartItemProductLayout.js +6 -0
- package/cart/components/CartItem/CartItemProductLayout.style.js +1 -0
- package/cart/components/CartItem/CartItemProductLayoutWide.js +4 -0
- package/cart/components/CartItem/CartItemProductLayoutWide.style.js +1 -0
- package/cart/components/CartItem/CartItemProductLayoutWideFulfillmentLabel.js +4 -0
- package/cart/components/CartItem/CartItemProductLayoutWideFulfillmentLabel.style.js +1 -0
- package/cart/components/CartItem/CartItemProductLayoutWideOrderDetails.js +3 -0
- package/cart/components/CartItem/CartItemProductLayoutWideRemoveItem.js +4 -0
- package/cart/components/CartItem/CartItemProductLayoutWideRemoveItem.style.js +1 -0
- package/cart/components/CartItem/CartItemProductOrderDetails.js +3 -0
- package/cart/components/CartItem/CartItemProductOrderDetails.style.js +1 -0
- package/cart/components/CartItem/CartItemProductPriceCaption.js +4 -0
- package/cart/components/CartItem/CartItemProductPriceCaption.style.js +1 -0
- package/cart/components/CartItem/CartItemProductPriceList.js +5 -0
- package/cart/components/CartItem/CartItemProductPriceListPromotion.js +10 -0
- package/cart/components/CartItem/CartItemProductProvider.connector.js +9 -0
- package/cart/components/CartItem/CartItemProductProvider.context.js +1 -0
- package/cart/components/CartItem/CartItemProductProvider.js +12 -0
- package/cart/components/CartItem/CartItemProductProvider.types.js +1 -0
- package/cart/components/CartItem/CartItemProductProviderLegacy.js +22 -0
- package/cart/components/CartItem/CartItemProductTitle.js +7 -0
- package/cart/components/CartItem/CartItemProductTitle.style.js +1 -0
- package/cart/components/CartItem/CartItemProvider.connector.js +3 -0
- package/cart/components/CartItem/CartItemProvider.context.js +1 -0
- package/cart/components/CartItem/CartItemProvider.js +5 -0
- package/cart/components/CartItem/CartItemQuantityPicker.js +38 -0
- package/cart/components/CartItem/CartItemQuantityPicker.style.js +1 -0
- package/cart/components/CartItem/CartItemSubstitution.connector.js +5 -0
- package/cart/components/CartItem/CartItemSubstitution.js +5 -0
- package/cart/components/CartItem/CartItemSubstitution.style.js +1 -0
- package/cart/components/CartItem/index.js +1 -0
- package/cart/components/CartItems/CartItem.connector.js +4 -0
- package/cart/components/CartItems/CartItemCard.js +5 -0
- package/cart/components/CartItems/CartItemCard.style.js +1 -0
- package/cart/components/CartItems/CartItemCardReservation.js +5 -0
- package/cart/components/CartItems/CartItemCardReservationAccordion.js +4 -0
- package/cart/components/CartItems/CartItemCardReservationLabel.js +5 -0
- package/cart/components/CartItems/CartItemCardReservationLabelChangeStore.js +3 -0
- package/cart/components/CartItems/CartItemCardReservationLabelChangeStore.style.js +1 -0
- package/cart/components/CartItems/CartItemGroup.js +5 -0
- package/cart/components/CartItems/CartItemGroup.style.js +1 -0
- package/cart/components/CartItems/CartItemGroupReservation.js +5 -0
- package/cart/components/CartItems/CartItemGroupReservationLabel.js +5 -0
- package/cart/components/CartItems/CartItemGroupShipping.js +4 -0
- package/cart/components/CartItems/CartItems.js +5 -0
- package/cart/components/CartItems/CartItems.style.js +1 -0
- package/cart/components/CartItems/CartItemsHeaderWide.connector.js +3 -0
- package/cart/components/CartItems/CartItemsHeaderWide.js +3 -0
- package/cart/components/CartItems/CartItemsHeaderWide.style.js +1 -0
- package/cart/components/CartItems/CartItemsSubscription.connector.js +5 -0
- package/cart/components/CartItems/CartItemsSubstitution.js +5 -0
- package/cart/components/CartItems/index.js +1 -0
- package/cart/components/CartSummaryWide/CartSummaryWide.connector.js +4 -0
- package/cart/components/CartSummaryWide/CartSummaryWide.js +4 -0
- package/cart/components/CartSummaryWide/CartSummaryWide.style.js +1 -0
- package/cart/components/CartSummaryWide/CartSummaryWideCheckoutButton.connector.js +5 -0
- package/cart/components/CartSummaryWide/CartSummaryWideCheckoutButton.js +4 -0
- package/cart/components/CartSummaryWide/CartSummaryWideCheckoutButton.style.js +1 -0
- package/cart/components/CartSummaryWide/CartSummaryWideFooter.js +3 -0
- package/cart/components/CartSummaryWide/index.js +1 -0
- package/cart/components/PaymentBar/PaymentBar.js +5 -0
- package/cart/components/PaymentBar/PaymentBarAppliedPromotions.connector.js +5 -0
- package/cart/components/PaymentBar/PaymentBarAppliedPromotions.js +3 -0
- package/cart/components/PaymentBar/PaymentBarCheckoutButton.connector.js +5 -0
- package/cart/components/PaymentBar/PaymentBarCheckoutButton.js +5 -0
- package/cart/components/PaymentBar/PaymentBarCheckoutButton.style.js +1 -0
- package/cart/components/PaymentBar/PaymentBarContent.js +4 -0
- package/cart/components/PaymentBar/PaymentBarContent.style.js +1 -0
- package/cart/components/PaymentBar/PaymentBarDiscounts.connector.js +5 -0
- package/cart/components/PaymentBar/PaymentBarDiscounts.js +4 -0
- package/cart/components/PaymentBar/PaymentBarGrandTotal.connector.js +5 -0
- package/cart/components/PaymentBar/PaymentBarGrandTotal.js +4 -0
- package/cart/components/PaymentBar/PaymentBarPromotionCouponMessages.js +4 -0
- package/cart/components/PaymentBar/PaymentBarPromotionCoupons.connector.js +8 -0
- package/cart/components/PaymentBar/PaymentBarPromotionCoupons.js +3 -0
- package/cart/components/PaymentBar/PaymentBarPromotionalText.js +4 -0
- package/cart/components/PaymentBar/PaymentBarReserveButton.connector.js +1 -0
- package/cart/components/PaymentBar/PaymentBarReserveButton.js +7 -0
- package/cart/components/PaymentBar/PaymentBarShippingCost.connector.js +5 -0
- package/cart/components/PaymentBar/PaymentBarShippingCost.js +3 -0
- package/cart/components/PaymentBar/PaymentBarSubTotal.connector.js +5 -0
- package/cart/components/PaymentBar/PaymentBarSubTotal.js +3 -0
- package/cart/components/PaymentBar/PaymentBarTax.connector.js +5 -0
- package/cart/components/PaymentBar/PaymentBarTax.js +4 -0
- package/cart/components/PaymentBar/index.js +1 -0
- package/cart/components/Substitution/connector.js +5 -0
- package/cart/components/Substitution/index.js +9 -0
- package/cart/components/Substitution/style.js +1 -0
- package/cart/components/SupplementalContent/SupplementalContent.connector.js +4 -0
- package/cart/components/SupplementalContent/SupplementalContent.js +5 -0
- package/cart/components/SupplementalContent/SupplementalContent.styles.js +1 -0
- package/cart/components/SupplementalContent/index.js +1 -0
- package/cart/index.js +10 -5
- package/cart/streams/index.js +1 -0
- package/category/actions/index.js +1 -0
- package/category/components/CategoryImage/connector.js +5 -0
- package/category/components/CategoryImage/index.js +5 -0
- package/category/components/CategoryList/index.js +2 -2
- package/category/components/CategoryList/style.js +1 -1
- package/category/components/index.js +1 -0
- package/category/constants/index.js +1 -0
- package/category/helpers/index.js +1 -0
- package/category/index.js +1 -7
- package/category/selectors/index.js +2 -0
- package/category/streams/index.js +1 -0
- package/checkout/action-creators/addCheckoutCampaign.js +5 -0
- package/checkout/action-creators/clearCheckoutCampaign.js +5 -0
- package/checkout/action-creators/clearCheckoutOrder.js +4 -0
- package/checkout/action-creators/index.js +1 -0
- package/checkout/action-creators/validationErrorsCheckout.js +5 -0
- package/checkout/actions/errorCheckout.js +17 -0
- package/checkout/actions/fetchCheckoutOrder.js +4 -0
- package/checkout/actions/fetchPaymentMethods.js +4 -0
- package/checkout/actions/index.js +1 -0
- package/checkout/actions/initializeCheckout.js +4 -0
- package/checkout/actions/prepareCheckout.js +8 -0
- package/checkout/actions/submitCheckoutOrder.js +5 -0
- package/checkout/actions/updateCheckoutOrder.js +5 -0
- package/checkout/components/AddressBook/AddressBook.js +5 -0
- package/checkout/components/AddressBook/AddressList.js +9 -0
- package/checkout/components/AddressBook/index.js +1 -0
- package/checkout/components/AddressBookContact/AddressBookContact.js +5 -0
- package/checkout/components/AddressBookContact/index.js +1 -0
- package/checkout/components/Checkout/Checkout.js +4 -0
- package/checkout/components/Checkout/CheckoutActions.js +4 -0
- package/checkout/components/Checkout/CheckoutAddress.js +6 -0
- package/checkout/components/Checkout/CheckoutHeader.js +4 -0
- package/checkout/components/Checkout/CheckoutPickupContactForm.config.js +8 -0
- package/checkout/components/Checkout/CheckoutPickupContactForm.js +4 -0
- package/checkout/components/Checkout/CheckoutSection.js +4 -0
- package/checkout/components/Checkout/CheckoutSectionInfo.js +4 -0
- package/checkout/components/Checkout/CheckoutSectionMessages.js +4 -0
- package/checkout/components/Checkout/CheckoutSummary.js +4 -0
- package/checkout/components/CheckoutConfirmation/CheckoutConfirmation.connector.js +3 -0
- package/checkout/components/CheckoutConfirmation/CheckoutConfirmation.js +7 -0
- package/checkout/components/CheckoutConfirmation/CheckoutConfirmationBilledTo.js +4 -0
- package/checkout/components/CheckoutConfirmation/CheckoutConfirmationOrderContact.js +4 -0
- package/checkout/components/CheckoutConfirmation/CheckoutConfirmationOrderSummary.js +4 -0
- package/checkout/components/CheckoutConfirmation/CheckoutConfirmationPickUpContact.js +4 -0
- package/checkout/components/CheckoutConfirmation/CheckoutConfirmationPickupNotes.js +4 -0
- package/checkout/components/CheckoutConfirmation/CheckoutConfirmationSection.js +4 -0
- package/checkout/components/CheckoutConfirmation/CheckoutConfirmationShippedTo.js +4 -0
- package/checkout/components/CheckoutConfirmation/index.js +1 -0
- package/checkout/components/GuestCheckout/GuestCheckout.js +4 -0
- package/checkout/components/GuestCheckout/GuestCheckoutOptIn.config.js +4 -0
- package/checkout/components/GuestCheckout/GuestCheckoutOptIn.js +3 -0
- package/checkout/components/GuestCheckout/GuestCheckoutPickup.js +4 -0
- package/checkout/components/GuestCheckout/GuestCheckoutPickupNotes.config.js +4 -0
- package/checkout/components/GuestCheckout/GuestCheckoutPickupNotes.js +4 -0
- package/checkout/components/PaymentMethodButton/PaymentMethodButton.js +5 -0
- package/checkout/components/PaymentMethodButton/index.js +1 -0
- package/checkout/components/ResponsiveBackButton/ResponsiveBackButton.js +4 -0
- package/checkout/components/ResponsiveBackButton/ResponsiveBackButton.style.js +1 -0
- package/checkout/components/ResponsiveBackButton/index.js +1 -0
- package/checkout/components/ShippingMethods/ShippingMethod.js +5 -0
- package/checkout/components/ShippingMethods/ShippingMethods.js +23 -0
- package/checkout/components/ShippingMethods/connector.js +7 -0
- package/checkout/components/ShippingMethods/index.js +1 -0
- package/checkout/components/SupplementalContent/SupplementalContent.connector.js +4 -0
- package/checkout/components/SupplementalContent/SupplementalContent.js +5 -0
- package/checkout/components/SupplementalContent/SupplementalContent.styles.js +1 -0
- package/checkout/components/SupplementalContent/index.js +1 -0
- package/checkout/components/index.js +1 -0
- package/checkout/constants/actionTypes.js +1 -0
- package/checkout/constants/errorCodes.js +1 -0
- package/checkout/constants/index.js +1 -0
- package/checkout/constants/routes.js +1 -0
- package/checkout/helpers/index.js +34 -0
- package/checkout/hooks/common.js +7 -0
- package/checkout/index.js +6 -5
- package/checkout/paymentMethods/context.js +1 -0
- package/checkout/paymentMethods/index.js +28 -0
- package/checkout/paymentMethods/paypal/PaypalButton.js +5 -0
- package/checkout/paymentMethods/paypal/PaypalButtonApp.js +4 -0
- package/checkout/paymentMethods/paypal/PaypalButtonWeb.js +8 -0
- package/checkout/paymentMethods/paypal/PaypalPayButton.js +12 -0
- package/checkout/paymentMethods/paypal/PaypalProvider.js +6 -0
- package/checkout/paymentMethods/paypal/index.js +1 -0
- package/checkout/paymentMethods/paypal/paypal_logo.png +0 -0
- package/checkout/paymentMethods/paypal/sdk.js +9 -0
- package/checkout/paymentMethods/stripe/StripeButton.connector.js +6 -0
- package/checkout/paymentMethods/stripe/StripeButton.js +5 -0
- package/checkout/paymentMethods/stripe/StripeCreditCard.js +10 -0
- package/checkout/paymentMethods/stripe/StripePayButton.js +6 -0
- package/checkout/paymentMethods/stripe/StripeProvider.connector.js +6 -0
- package/checkout/paymentMethods/stripe/StripeProvider.context.js +1 -0
- package/checkout/paymentMethods/stripe/StripeProvider.js +33 -0
- package/checkout/paymentMethods/stripe/applepay.svg +84 -0
- package/checkout/paymentMethods/stripe/googlepay.png +0 -0
- package/checkout/paymentMethods/stripe/index.js +1 -0
- package/checkout/paymentMethods/stripe/sdk.js +9 -0
- package/checkout/providers/AddressBookProvider.context.js +1 -0
- package/checkout/providers/AddressBookProvider.js +11 -0
- package/checkout/providers/CheckoutProvider.connector.js +7 -0
- package/checkout/providers/CheckoutProvider.constraints.js +1 -0
- package/checkout/providers/CheckoutProvider.context.js +1 -0
- package/checkout/providers/CheckoutProvider.js +28 -0
- package/checkout/reducers/index.js +6 -0
- package/checkout/selectors/campaign.js +5 -0
- package/checkout/selectors/guestCheckout.js +5 -0
- package/checkout/selectors/order.js +59 -0
- package/checkout/selectors/payment.js +17 -0
- package/checkout/selectors/route.js +4 -0
- package/checkout/streams/index.js +1 -0
- package/checkout/subscriptions/index.js +3 -0
- package/components/BrandingColorBanner/BrandingColorBanner.js +5 -0
- package/components/BrandingColorBanner/index.js +1 -0
- package/components/ChipLayout/index.js +7 -7
- package/components/ChipLayout/spec.js +1 -1
- package/components/ChipLayout/style.js +2 -2
- package/components/ConditionalWrapper/ConditionalWrapper.js +10 -0
- package/components/ConditionalWrapper/index.js +1 -5
- package/components/ConnectedReactPortal/index.js +13 -0
- package/components/Footer/Footer.js +4 -23
- package/components/Footer/Footer.style.js +1 -7
- package/components/Footer/constants.js +1 -0
- package/components/Footer/helpers.js +75 -0
- package/components/Form/Builder/Builder.constants.js +1 -1
- package/components/Form/Builder/Builder.js +53 -37
- package/components/Form/Builder/ElementCheckbox.js +2 -2
- package/components/Form/Builder/ElementMultiSelect.js +6 -0
- package/components/Form/Builder/ElementPhoneNumber.js +20 -0
- package/components/Form/Builder/ElementRadio.js +2 -2
- package/components/Form/Builder/ElementSelect.js +3 -3
- package/components/Form/Builder/ElementText.js +4 -4
- package/components/Form/Builder/FormHelper.js +5 -0
- package/components/Form/Builder/classes/ActionListener.constants.js +2 -2
- package/components/Form/Builder/classes/ActionListener.js +72 -15
- package/components/Form/Builder/helpers/buildCountryList.js +3 -3
- package/components/Form/Builder/helpers/buildFormDefaults.js +1 -1
- package/components/Form/Builder/helpers/buildProvinceList.js +1 -1
- package/components/Form/Builder/helpers/common.js +6 -0
- package/components/Form/Builder/stylePresets.js +1 -0
- package/components/Form/Form.js +11 -8
- package/components/Form/index.js +1 -1
- package/components/IntersectionVisibility/index.js +13 -6
- package/components/Logo/connector.js +4 -0
- package/components/Logo/index.js +2 -2
- package/components/Logo/spec.js +1 -1
- package/components/Logo/style.js +1 -1
- package/components/Menu/components/Item/index.js +8 -0
- package/components/Menu/components/Item/style.js +4 -0
- package/components/Menu/components/Position/index.js +16 -0
- package/components/Menu/components/Position/style.js +1 -0
- package/components/Menu/index.js +12 -0
- package/components/Menu/style.js +1 -0
- package/components/MessageBar/MessageBar.js +9 -0
- package/components/MessageBar/MessageBar.style.js +11 -0
- package/components/MessageBar/index.js +1 -7
- package/components/NavigationHandler/connector.js +1 -1
- package/components/NavigationHandler/index.js +6 -6
- package/components/NavigationHandler/spec.js +1 -1
- package/components/Picker/components/Button/index.js +1 -1
- package/components/Picker/components/List/index.js +2 -2
- package/components/Picker/components/Modal/index.js +7 -7
- package/components/Picker/index.js +19 -10
- package/components/Picker/spec.js +2 -2
- package/components/PickerUtilize/components/Button/index.js +1 -1
- package/components/PickerUtilize/index.js +8 -6
- package/components/PickerUtilize/spec.js +2 -1
- package/components/QuantityInput/QuantityInput.js +5 -4
- package/components/QuantityLabel/QuantityLabel.js +4 -0
- package/components/QuantityLabel/index.js +1 -0
- package/components/Radio/Radio.js +5 -0
- package/components/Radio/index.js +1 -0
- package/components/RadioCard/RadioCard.js +9 -0
- package/components/RadioCard/index.js +1 -0
- package/components/RadioGroup/RadioGroup.context.js +1 -0
- package/components/RadioGroup/RadioGroup.js +4 -0
- package/components/RadioGroup/index.js +1 -0
- package/components/RadioGroup/useRadioGroup.js +4 -0
- package/components/RangeSlider/components/Handle/index.js +2 -2
- package/components/RangeSlider/components/Handle/style.js +1 -1
- package/components/RangeSlider/helper.js +3 -3
- package/components/RangeSlider/index.js +35 -23
- package/components/RangeSlider/spec.js +4 -4
- package/components/ResponsiveContainer/ResponsiveContainer.js +6 -0
- package/components/ResponsiveContainer/breakpoints.js +14 -0
- package/components/ResponsiveContainer/condition.js +6 -0
- package/components/ResponsiveContainer/hooks.js +20 -0
- package/components/ResponsiveContainer/index.js +1 -0
- package/components/ResponsiveContainer/listener.js +10 -0
- package/components/ResponsiveContainer/mediaQuery.js +8 -0
- package/components/ScrollHeader/index.js +22 -5
- package/components/ScrollHeader/style.js +1 -1
- package/components/SheetDrawer/index.js +4 -3
- package/components/SheetList/components/Item/index.js +5 -5
- package/components/SheetList/components/Item/spec.js +2 -2
- package/components/SheetList/components/Item/style.js +1 -1
- package/components/SheetList/index.js +4 -4
- package/components/SheetList/spec.js +1 -1
- package/components/SheetList/style.js +1 -1
- package/components/SideNavigation/SideNavigation.hooks.js +4 -0
- package/components/SideNavigation/SideNavigation.js +4 -0
- package/components/SideNavigation/SideNavigationCategories.connector.js +8 -0
- package/components/SideNavigation/SideNavigationCategories.js +4 -0
- package/components/SideNavigation/SideNavigationCategories.style.js +1 -0
- package/components/SideNavigation/SideNavigationCategoriesItem.connector.js +8 -0
- package/components/SideNavigation/SideNavigationCategoriesItem.js +5 -0
- package/components/SideNavigation/SideNavigationCategoriesItem.style.js +2 -0
- package/components/SideNavigation/SideNavigationCategoriesItemChildren.js +5 -0
- package/components/SideNavigation/SideNavigationContent.js +3 -0
- package/components/SideNavigation/SideNavigationContent.style.js +4 -0
- package/components/SideNavigation/SideNavigationItem.js +4 -0
- package/components/SideNavigation/SideNavigationItem.style.js +4 -0
- package/components/SideNavigation/SideNavigationLinks.js +4 -0
- package/components/SideNavigation/SideNavigationLinksLegal.connector.js +4 -0
- package/components/SideNavigation/SideNavigationLinksLegal.js +5 -0
- package/components/SideNavigation/SideNavigationLinksQuicklinks.connector.js +4 -0
- package/components/SideNavigation/SideNavigationLinksQuicklinks.js +5 -0
- package/components/SideNavigation/SideNavigationNestedItem.js +4 -0
- package/components/SideNavigation/SideNavigationProvider.connector.js +8 -0
- package/components/SideNavigation/SideNavigationProvider.context.js +1 -0
- package/components/SideNavigation/SideNavigationProvider.js +4 -0
- package/components/SideNavigation/index.js +1 -0
- package/components/SideNavigation/selectors.js +17 -0
- package/components/SnackBarContainer/index.js +1 -1
- package/components/Switch/index.js +1 -1
- package/components/Tabs/TabContext.js +7 -0
- package/components/Tabs/components/Tab.js +11 -0
- package/components/Tabs/components/Tab.style.js +1 -0
- package/components/Tabs/components/TabIndicator.js +5 -0
- package/components/Tabs/components/TabIndicator.style.js +1 -0
- package/components/Tabs/components/TabPanel.js +5 -0
- package/components/Tabs/components/Tabs.js +11 -0
- package/components/Tabs/components/Tabs.style.js +2 -0
- package/components/Tabs/debounce.js +11 -0
- package/components/Tabs/index.js +1 -0
- package/components/Tabs/ownerDocument.js +4 -0
- package/components/Tabs/ownerWindow.js +4 -0
- package/components/Tabs/useEventCallback.js +6 -0
- package/components/TextLink/TextLink.js +5 -0
- package/components/TextLink/TextLink.style.js +1 -0
- package/components/TimeBoundary/index.js +10 -8
- package/components/TimeBoundary/spec.js +3 -3
- package/components/Toggle/index.js +5 -0
- package/components/Toggle/style.js +1 -0
- package/components/VideoPlayer/index.js +9 -6
- package/components/View/components/Above/index.js +1 -1
- package/components/View/components/Below/index.js +1 -1
- package/components/View/components/Content/index.js +13 -13
- package/components/View/components/Content/style.js +1 -1
- package/components/View/context.js +1 -1
- package/components/View/index.js +5 -5
- package/components/View/provider.js +24 -7
- package/components/View/style.js +1 -6
- package/components/index.js +4 -4
- package/core/action-creators/appPermissions.js +1 -1
- package/core/action-creators/index.js +1 -1
- package/core/action-creators/merchantSettings.js +5 -0
- package/core/action-creators/optIns.js +37 -0
- package/core/action-creators/shopSettings.js +9 -0
- package/core/actions/getGeolocation.js +2 -2
- package/core/actions/grantAppTrackingTransparencyPermission.js +3 -1
- package/core/actions/grantGeolocationPermissions.js +6 -2
- package/core/actions/grantPermissions.js +16 -4
- package/core/actions/grantPushPermissions.js +4 -3
- package/core/actions/index.js +2 -2
- package/core/actions/requestAppPermission.js +7 -2
- package/core/actions/requestAppPermissionStatus.js +7 -2
- package/core/actions/updateStatusBarBackground.js +3 -3
- package/core/classes/GeolocationRequest.js +8 -4
- package/core/classes/GeolocationRequestApp.js +16 -0
- package/core/classes/GeolocationRequestBrowser.js +8 -0
- package/core/collections/AppInitialization.js +4 -6
- package/core/config/ThemeConfigResolver.js +3 -3
- package/core/config/config.action-creators.js +12 -0
- package/core/config/config.actions.js +3 -0
- package/core/config/config.constants.js +1 -0
- package/core/config/config.reducers.js +6 -0
- package/core/config/config.selectors.js +39 -0
- package/core/config/config.streams.js +1 -0
- package/core/config/config.subscriptions.js +4 -0
- package/core/config/config.types.js +0 -0
- package/core/config/index.js +1 -0
- package/core/constants/appFeatures.js +1 -1
- package/core/constants/deviceTypes.js +1 -0
- package/core/constants/geolocationRequest.js +1 -1
- package/core/constants/index.js +3 -3
- package/core/constants/merchantSettings.js +1 -0
- package/core/constants/optIns.js +1 -0
- package/core/constants/pipelines.js +1 -0
- package/core/constants/shopSettings.js +2 -0
- package/core/contexts/AppContext.js +1 -1
- package/core/contexts/ThemeResourcesContext.d.ts +60 -0
- package/core/contexts/ThemeResourcesContext.js +3 -0
- package/core/contexts/index.js +1 -0
- package/core/events/index.js +1 -0
- package/core/helpers/androidNavigationBar.js +12 -0
- package/core/helpers/appFeatures.js +21 -9
- package/core/helpers/appPermissions.js +58 -0
- package/core/helpers/baseUrl.js +1 -1
- package/core/helpers/bridge.js +4 -0
- package/core/helpers/deviceType.js +5 -0
- package/core/helpers/environment.js +4 -0
- package/core/helpers/errorBehavior.js +32 -0
- package/core/helpers/featureFlag.js +11 -0
- package/core/helpers/getFullImageSource.js +21 -2
- package/core/helpers/googleMaps.js +8 -0
- package/core/helpers/i18n.js +10 -5
- package/core/helpers/index.js +3 -3
- package/core/helpers/isIOSTheme.js +4 -0
- package/core/helpers/isTouchDevice.js +4 -0
- package/core/helpers/nl2br.js +1 -0
- package/core/helpers/scrollContainer.js +4 -0
- package/core/helpers/string.js +9 -0
- package/core/helpers/svgToDataUrl.js +9 -0
- package/core/helpers/updateLegacyNavigationBar.js +5 -2
- package/core/hocs/index.js +1 -0
- package/core/hocs/withApp.js +1 -1
- package/core/hocs/withCurrentProduct.js +3 -3
- package/core/hocs/withForwardedRef.js +1 -1
- package/core/hocs/withNavigation.js +1 -1
- package/core/hocs/withRoute.js +1 -1
- package/core/hocs/withTheme.js +42 -3
- package/core/hocs/withThemeResources.js +16 -0
- package/core/hocs/withWidgetSettings.js +1 -1
- package/core/hocs/withWidgetStyles.js +1 -1
- package/core/hooks/events/index.js +1 -0
- package/core/hooks/events/useLongPress.d.ts +68 -0
- package/core/hooks/events/useLongPress.js +13 -0
- package/core/hooks/events/useScrollDirectionChange.d.ts +74 -0
- package/core/hooks/events/useScrollDirectionChange.js +18 -0
- package/core/hooks/html/useLoadImage.js +1 -1
- package/core/hooks/index.js +1 -0
- package/core/hooks/layout/index.js +1 -0
- package/core/hooks/layout/useElementSize.d.ts +46 -0
- package/core/hooks/layout/useElementSize.js +18 -0
- package/core/hooks/useAsyncMemo.js +12 -0
- package/core/hooks/useFormState.js +27 -0
- package/core/hooks/usePrevious.js +2 -0
- package/core/hooks/useScrollTo.js +5 -0
- package/core/hooks/useTheme.js +38 -2
- package/core/hooks/useThemeResources.js +21 -0
- package/core/hooks/useWidgetStyles.js +1 -1
- package/core/index.js +5 -11
- package/core/initialization/index.js +19 -4
- package/core/providers/AppProvider.js +9 -9
- package/core/providers/ThemeResourcesProvider.js +15 -0
- package/core/providers/index.js +1 -0
- package/core/reducers/index.js +1 -1
- package/core/reducers/merchantSettings.js +6 -0
- package/core/reducers/shopSettings.js +6 -0
- package/core/selectors/index.js +1 -1
- package/core/selectors/merchantSettings.js +10 -0
- package/core/selectors/shopSettings.js +25 -0
- package/core/streams/app.js +1 -1
- package/core/streams/index.js +1 -1
- package/core/streams/optIns.js +13 -0
- package/core/subscriptions/app.js +4 -3
- package/core/validation/index.js +1 -0
- package/core/validation/validation.hooks.js +4 -0
- package/core/validation/validation.js +12 -0
- package/development/action-creators/index.js +1 -0
- package/development/action-creators/settings.js +9 -0
- package/development/action-creators/storage.js +6 -0
- package/development/components/DevelopmentTools/DevelopmentTools.js +6 -0
- package/development/components/DevelopmentTools/Shortcuts.js +4 -0
- package/development/components/DevelopmentTools/hooks.js +8 -0
- package/development/components/DevelopmentTools/index.js +1 -0
- package/development/components/SimulatedInsets/SimulatedInsetBottom.js +7 -0
- package/development/components/SimulatedInsets/SimulatedInsetTop.js +12 -0
- package/development/components/SimulatedInsets/SimulatedInsets.js +6 -0
- package/development/components/SimulatedInsets/index.js +1 -0
- package/development/components/index.js +1 -0
- package/development/constants/actionTypes.js +1 -0
- package/development/constants/index.js +1 -0
- package/development/reducers/index.js +1 -0
- package/development/reducers/settings.js +10 -0
- package/development/reducers/storage.js +9 -0
- package/development/selectors/index.js +1 -0
- package/development/selectors/settings.js +21 -0
- package/development/selectors/storage.js +16 -0
- package/development/streams/index.js +1 -0
- package/development/streams/insets.js +4 -0
- package/development/subscriptions/index.js +6 -0
- package/favorites/components/CommentDialog/CommentDialog.js +12 -0
- package/favorites/components/CommentDialog/index.js +1 -0
- package/favorites/components/FavoriteButtonWide/FavoriteButtonWide.js +8 -0
- package/favorites/components/FavoriteButtonWide/index.js +1 -0
- package/favorites/components/Item/Item.js +13 -9
- package/favorites/components/Item/ItemCharacteristics.js +2 -2
- package/favorites/components/Item/ItemNotes.js +7 -0
- package/favorites/components/Item/ItemQuantity.js +7 -0
- package/favorites/components/ItemFulfillmentMethod/ItemFulfillmentMethod.js +4 -0
- package/favorites/components/ItemFulfillmentMethod/index.js +1 -0
- package/favorites/components/List/List.js +19 -15
- package/favorites/components/List/ListAccordionHeader.js +8 -0
- package/favorites/components/List/ListAccordionLabel.js +5 -0
- package/favorites/components/List/ListContent.js +8 -0
- package/favorites/components/List/ListItemWrapper.js +6 -0
- package/favorites/components/List/styles.js +1 -0
- package/favorites/components/ListChooser/ListChooser.js +2 -2
- package/favorites/components/ListChooser/ListChooserItem.js +4 -5
- package/favorites/components/Lists/Lists.js +17 -13
- package/favorites/components/Lists/ListsModal.js +3 -4
- package/favorites/components/RemoveButton/RemoveButton.js +2 -2
- package/favorites/constants/Portals.js +1 -2
- package/favorites/constants/index.js +1 -0
- package/favorites/index.js +2 -2
- package/filter/actions/index.js +1 -0
- package/filter/components/FilterItem/index.js +2 -2
- package/filter/components/FilterItem/spec.js +1 -1
- package/filter/components/FilterPageContent/components/ApplyButton/index.js +7 -0
- package/filter/components/FilterPageContent/components/ApplyButton/spec.js +1 -0
- package/filter/components/FilterPageContent/components/ApplyButton/style.js +1 -0
- package/filter/components/FilterPageContent/components/ResetButton/index.js +7 -0
- package/filter/components/FilterPageContent/components/ResetButton/spec.js +1 -0
- package/filter/components/FilterPageContent/components/ResetButton/style.js +1 -0
- package/filter/components/FilterPageContent/components/Selector/components/Selected/index.js +7 -0
- package/filter/components/FilterPageContent/components/Selector/components/Selected/spec.js +1 -0
- package/filter/components/FilterPageContent/components/Selector/components/Selected/style.js +1 -0
- package/filter/components/FilterPageContent/components/Selector/components/Toggle/index.js +7 -0
- package/filter/components/FilterPageContent/components/Selector/components/Toggle/spec.js +1 -0
- package/filter/components/FilterPageContent/components/Selector/components/Toggle/style.js +1 -0
- package/filter/components/FilterPageContent/components/Selector/components/ValueButton/index.js +7 -0
- package/filter/components/FilterPageContent/components/Selector/components/ValueButton/spec.js +1 -0
- package/filter/components/FilterPageContent/components/Selector/components/ValueButton/style.js +1 -0
- package/filter/components/FilterPageContent/components/Selector/index.js +19 -0
- package/filter/components/FilterPageContent/components/Selector/spec.js +1 -0
- package/filter/components/FilterPageContent/components/Selector/style.js +1 -0
- package/filter/components/FilterPageContent/index.js +6 -0
- package/filter/components/FilterPageContentWithProvider/index.js +16 -0
- package/filter/components/PriceSlider/components/Label/index.js +3 -3
- package/filter/components/PriceSlider/components/Label/spec.js +1 -1
- package/filter/components/PriceSlider/index.js +8 -8
- package/filter/components/PriceSlider/spec.js +1 -1
- package/filter/components/PriceSlider/style.js +1 -1
- package/filter/components/index.js +1 -0
- package/filter/constants/index.js +1 -0
- package/filter/constants/sort.js +11 -0
- package/filter/helpers/buildFilterParamsForFetchFiltersRequest.js +2 -2
- package/filter/helpers/buildInitialFilters.js +2 -2
- package/filter/helpers/buildUpdatedFilters.js +2 -2
- package/filter/helpers/index.js +1 -0
- package/filter/helpers/translateFilterLabel.js +3 -3
- package/filter/hocs/index.js +1 -0
- package/filter/hocs/withSort.js +16 -0
- package/filter/hooks/filterPage.js +5 -0
- package/filter/hooks/index.js +4 -0
- package/filter/index.js +2 -7
- package/filter/providers/FilterPageProvider.context.js +54 -0
- package/filter/providers/FilterPageProvider.js +98 -0
- package/filter/providers/SortProvider.connector.js +3 -0
- package/filter/providers/SortProvider.context.js +1 -0
- package/filter/providers/SortProvider.helpers.js +8 -0
- package/filter/providers/SortProvider.js +6 -0
- package/filter/providers/index.js +1 -0
- package/filter/selectors/index.js +17 -0
- package/filter/streams/index.js +1 -0
- package/i18n/countries.helpers.js +6 -0
- package/i18n/countries.hooks.js +6 -0
- package/i18n/index.js +1 -0
- package/i18n/locale/cs-cz/countries.json +255 -0
- package/i18n/locale/de-de/countries.json +255 -0
- package/i18n/locale/el-gr/countries.json +255 -0
- package/i18n/locale/en-us/countries.json +255 -0
- package/i18n/locale/es-es/countries.json +255 -0
- package/i18n/locale/fi-fi/countries.json +255 -0
- package/i18n/locale/fr-fr/countries.json +255 -0
- package/i18n/locale/hu-hu/countries.json +255 -0
- package/i18n/locale/it-it/countries.json +255 -0
- package/i18n/locale/nl-nl/countries.json +255 -0
- package/i18n/locale/pl-pl/countries.json +255 -0
- package/i18n/locale/pt-pt/countries.json +255 -0
- package/i18n/locale/ro-ro/countries.json +255 -0
- package/i18n/locale/sv-se/countries.json +255 -0
- package/locations/action-creators/errorInventories.js +7 -0
- package/locations/action-creators/errorLocations.js +6 -0
- package/locations/action-creators/errorProductInventories.js +7 -0
- package/locations/action-creators/errorProductLocations.js +6 -0
- package/locations/action-creators/index.js +1 -0
- package/locations/action-creators/provideProductAlternativeLocation.js +5 -0
- package/locations/action-creators/receiveInventories.js +5 -0
- package/locations/action-creators/receiveLocations.js +6 -0
- package/locations/action-creators/receiveProductInventories.js +7 -0
- package/locations/action-creators/receiveProductLocations.js +7 -0
- package/locations/action-creators/requestInventories.js +6 -0
- package/locations/action-creators/requestLocations.js +5 -0
- package/locations/action-creators/requestProductInventories.js +6 -0
- package/locations/action-creators/requestProductLocations.js +5 -0
- package/locations/action-creators/selectGlobalLocation.js +5 -0
- package/locations/action-creators/selectLocation.js +6 -0
- package/locations/action-creators/setStoreFinderSearchRadius.js +5 -0
- package/locations/action-creators/setUserGeolocation.js +5 -0
- package/locations/action-creators/setUserSearchCountryCode.js +7 -0
- package/locations/action-creators/setUserSearchGeolocation.js +8 -0
- package/locations/action-creators/setUserSearchPostalCode.js +7 -0
- package/locations/action-creators/storeFormInput.js +5 -0
- package/locations/action-creators/storeFulfillmentMethod.js +5 -0
- package/locations/action-creators/submitReservationError.js +5 -0
- package/locations/action-creators/submitReservationRequest.js +5 -0
- package/locations/action-creators/submitReservationSuccess.js +5 -0
- package/locations/actions/fetchDefaultLocation.js +4 -0
- package/locations/actions/fetchFulfillmentSlots.js +6 -0
- package/locations/actions/fetchInventories.js +6 -0
- package/locations/actions/fetchLocations.js +19 -0
- package/locations/actions/fetchProductInventories.js +7 -0
- package/locations/actions/fetchProductLocations.js +12 -0
- package/locations/actions/index.js +5 -0
- package/locations/actions/sendDefaultLocationCode.js +6 -0
- package/locations/actions/setUserGeolocation.js +1 -0
- package/locations/actions/setUserSearchGeolocation.js +1 -0
- package/locations/actions/submitReservation.js +5 -0
- package/locations/assets/leaflet.css +765 -0
- package/locations/components/Cart/CartChangeFulfillmentMethod.connector.js +4 -0
- package/locations/components/Cart/CartChangeFulfillmentMethod.js +8 -0
- package/locations/components/Cart/CartChangeFulfillmentMethod.types.js +0 -0
- package/locations/components/Cart/CartContextMenuChangeFulfillment.js +6 -0
- package/locations/components/Cart/CartContextMenuChangeFulfillmentContent.js +5 -0
- package/locations/components/Cart/CartContextMenuChangeFulfillmentContent.style.js +1 -0
- package/locations/components/Cart/CartContextMenuItemChangeFulfillment.connector.js +4 -0
- package/locations/components/Cart/CartContextMenuItemChangeFulfillment.js +6 -0
- package/locations/components/Cart/CartContextMenuItemChangeLocation.js +7 -0
- package/locations/components/Cart/CartItemProductChangeLocation.connector.js +5 -0
- package/locations/components/Cart/CartItemProductChangeLocation.js +11 -0
- package/locations/components/Cart/CartItemProductChangeLocation.types.js +0 -0
- package/locations/components/Cart/index.js +1 -0
- package/locations/components/ChangeLocationButton/ChangeLocationButton.js +4 -0
- package/locations/components/ChangeLocationButton/ChangeLocationButton.style.js +2 -0
- package/locations/components/ChangeLocationButton/index.js +1 -0
- package/locations/components/FulfillmentPath/FulfillmentPath.js +4 -0
- package/locations/components/FulfillmentPath/FulfillmentPath.style.js +2 -0
- package/locations/components/FulfillmentPath/FulfillmentPathItem.js +6 -0
- package/locations/components/FulfillmentPath/index.js +1 -0
- package/locations/components/FulfillmentPathSelector/FulfillmentPathSelector.js +14 -0
- package/locations/components/FulfillmentPathSelector/FulfillmentPathSelector.style.js +1 -0
- package/locations/components/FulfillmentPathSelector/index.js +1 -0
- package/locations/components/FulfillmentSelector/FulfillmentSelector.connector.js +9 -0
- package/locations/components/FulfillmentSelector/FulfillmentSelector.context.js +1 -0
- package/locations/components/FulfillmentSelector/FulfillmentSelector.hooks.js +3 -0
- package/locations/components/FulfillmentSelector/FulfillmentSelector.js +20 -0
- package/locations/components/FulfillmentSelector/FulfillmentSelector.style.js +1 -0
- package/locations/components/FulfillmentSelector/FulfillmentSelector.types.js +1 -0
- package/locations/components/FulfillmentSelector/FulfillmentSelectorAddToCart.js +10 -0
- package/locations/components/FulfillmentSelector/FulfillmentSelectorAlternativeLocation.js +8 -0
- package/locations/components/FulfillmentSelector/FulfillmentSelectorBOPIS.js +4 -0
- package/locations/components/FulfillmentSelector/FulfillmentSelectorDirectShip.js +5 -0
- package/locations/components/FulfillmentSelector/FulfillmentSelectorHeader.js +4 -0
- package/locations/components/FulfillmentSelector/FulfillmentSelectorHeader.style.js +1 -0
- package/locations/components/FulfillmentSelector/FulfillmentSelectorImpossibleError.js +4 -0
- package/locations/components/FulfillmentSelector/FulfillmentSelectorImpossibleError.style.js +1 -0
- package/locations/components/FulfillmentSelector/FulfillmentSelectorItem.js +8 -0
- package/locations/components/FulfillmentSelector/FulfillmentSelectorItem.style.js +1 -0
- package/locations/components/FulfillmentSelector/FulfillmentSelectorLocation.js +4 -0
- package/locations/components/FulfillmentSelector/FulfillmentSelectorLocation.style.js +1 -0
- package/locations/components/FulfillmentSelector/FulfillmentSelectorLocationMethodNotAvailable.js +3 -0
- package/locations/components/FulfillmentSelector/FulfillmentSelectorROPIS.js +4 -0
- package/locations/components/FulfillmentSelector/index.js +1 -0
- package/locations/components/FulfillmentSheet/FulfillmentSheet.js +6 -0
- package/locations/components/FulfillmentSheet/FulfillmentSheet.style.js +1 -0
- package/locations/components/FulfillmentSheet/FulfillmentSheetContent.js +6 -0
- package/locations/components/FulfillmentSheet/index.js +1 -0
- package/locations/components/FulfillmentSlotSwitcher/FulfillmentSlotDialog.js +28 -0
- package/locations/components/FulfillmentSlotSwitcher/FulfillmentSlotProvider.connector.js +8 -0
- package/locations/components/FulfillmentSlotSwitcher/FulfillmentSlotProvider.context.js +1 -0
- package/locations/components/FulfillmentSlotSwitcher/FulfillmentSlotProvider.js +9 -0
- package/locations/components/FulfillmentSlotSwitcher/FulfillmentSlotSwitcher.connector.js +4 -0
- package/locations/components/FulfillmentSlotSwitcher/FulfillmentSlotSwitcher.js +4 -0
- package/locations/components/FulfillmentSlotSwitcher/FulfillmentSlotSwitcherBar.js +3 -0
- package/locations/components/FulfillmentSlotSwitcher/FulfillmentSlotSwitcherBar.style.js +1 -0
- package/locations/components/FulfillmentSlotSwitcher/FulfillmentSlotSwitcherDefault.js +3 -0
- package/locations/components/FulfillmentSlotSwitcher/FulfillmentSlotSwitcherDefault.style.js +1 -0
- package/locations/components/FulfillmentSlotSwitcher/index.js +1 -0
- package/locations/components/FulfillmentSlotSwitcher/time.js +5 -0
- package/locations/components/GlobalLocationSelector/GlobalLocationSelector.js +16 -0
- package/locations/components/GlobalLocationSelector/index.js +1 -0
- package/locations/components/GlobalLocationSwitcher/GlobalLocationSwitcher.connector.js +8 -0
- package/locations/components/GlobalLocationSwitcher/GlobalLocationSwitcher.js +3 -0
- package/locations/components/GlobalLocationSwitcher/GlobalLocationSwitcherBar.js +3 -0
- package/locations/components/GlobalLocationSwitcher/GlobalLocationSwitcherBar.style.js +1 -0
- package/locations/components/GlobalLocationSwitcher/GlobalLocationSwitcherDefault.js +3 -0
- package/locations/components/GlobalLocationSwitcher/GlobalLocationSwitcherDefault.style.js +1 -0
- package/locations/components/GlobalLocationSwitcher/index.js +1 -0
- package/locations/components/ReservationResponses/ReservationError.js +4 -0
- package/locations/components/ReservationResponses/ReservationResponse.style.js +1 -0
- package/locations/components/ReservationResponses/ReservationSuccess.js +4 -0
- package/locations/components/ReservationResponses/index.js +1 -0
- package/locations/components/ReserveForm/ReserveForm.constraints.js +1 -0
- package/locations/components/ReserveForm/ReserveForm.js +10 -0
- package/locations/components/ReserveForm/ReserveForm.style.js +1 -0
- package/locations/components/ReserveForm/ReserveFormPhone.connector.js +3 -0
- package/locations/components/ReserveForm/ReserveFormPhone.js +5 -0
- package/locations/components/ReserveForm/ReserveFormPhone.types.js +0 -0
- package/locations/components/ReserveForm/index.js +1 -0
- package/locations/components/StockInfo/StockInfo.defaultSettings.js +1 -0
- package/locations/components/StockInfo/StockInfo.js +8 -0
- package/locations/components/StockInfo/StockInfoInventory.js +9 -0
- package/locations/components/StockInfo/index.js +1 -0
- package/locations/components/StockInfoLists/index.js +9 -0
- package/locations/components/StoreDetails/components/FindMoreStores.js +4 -0
- package/locations/components/StoreDetails/components/GetDirectionsButton.js +7 -0
- package/locations/components/StoreDetails/components/StoreDetails.js +5 -0
- package/locations/components/StoreDetails/components/StoreFinderMap.js +20 -0
- package/locations/components/StoreDetails/components/StoreFinderMap.style.js +1 -0
- package/locations/components/StoreDetails/components/StoreLocationMap.js +4 -0
- package/locations/components/StoreDetails/components/StoresNearby.js +4 -0
- package/locations/components/StoreDetails/components/StoresNearbyListItem.js +9 -0
- package/locations/components/StoreDetails/index.js +4 -0
- package/locations/components/StoreFinder/Store.context.js +1 -0
- package/locations/components/StoreFinder/StoreFinder.js +3 -0
- package/locations/components/StoreFinder/StoreFinder.style.js +1 -0
- package/locations/components/StoreFinder/StoreFinderGetDirectionsButton.connector.js +4 -0
- package/locations/components/StoreFinder/StoreFinderGetDirectionsButton.js +4 -0
- package/locations/components/StoreFinder/StoreFinderGetDirectionsButton.style.js +1 -0
- package/locations/components/StoreFinder/StoreFinderLocation.js +3 -0
- package/locations/components/StoreFinder/StoreFinderLocation.style.js +1 -0
- package/locations/components/StoreFinder/StoreFinderLocationDetails.js +3 -0
- package/locations/components/StoreFinder/StoreFinderLocationDetails.style.js +1 -0
- package/locations/components/StoreFinder/StoreFinderLocationHeader.js +3 -0
- package/locations/components/StoreFinder/StoreFinderLocationHeader.style.js +1 -0
- package/locations/components/StoreFinder/StoreFinderLocationHeaderPhoneNumber.js +4 -0
- package/locations/components/StoreFinder/StoreFinderLocations.js +5 -0
- package/locations/components/StoreFinder/StoreFinderLocations.style.js +1 -0
- package/locations/components/StoreFinder/StoreFinderSearch.js +3 -0
- package/locations/components/StoreFinder/StoreFinderSearch.style.js +1 -0
- package/locations/components/StoreFinder/StoreFinderSelectLocationButton.js +5 -0
- package/locations/components/StoreFinder/StoreFinderStoreInfoButton.js +8 -0
- package/locations/components/StoreFinder/index.js +1 -0
- package/locations/components/StoreList/Store.context.js +1 -0
- package/locations/components/StoreList/Store.style.js +1 -0
- package/locations/components/StoreList/StoreAddress.js +7 -0
- package/locations/components/StoreList/StoreAddressShort.js +7 -0
- package/locations/components/StoreList/StoreCard.js +4 -0
- package/locations/components/StoreList/StoreDetails.js +4 -0
- package/locations/components/StoreList/StoreDetailsLine.js +8 -0
- package/locations/components/StoreList/StoreDistance.js +7 -0
- package/locations/components/StoreList/StoreHeader.js +4 -0
- package/locations/components/StoreList/StoreHoursToday.js +7 -0
- package/locations/components/StoreList/StoreList.js +4 -0
- package/locations/components/StoreList/StoreListLocations.js +4 -0
- package/locations/components/StoreList/StoreListProduct.js +4 -0
- package/locations/components/StoreList/StoreListProduct.style.js +1 -0
- package/locations/components/StoreList/StoreListProductInfo.js +4 -0
- package/locations/components/StoreList/StoreListProductName.js +4 -0
- package/locations/components/StoreList/StoreListSearch.connector.js +7 -0
- package/locations/components/StoreList/StoreListSearch.js +23 -0
- package/locations/components/StoreList/StoreListSearch.style.js +1 -0
- package/locations/components/StoreList/StoreListSearchRadius.connector.js +7 -0
- package/locations/components/StoreList/StoreListSearchRadius.js +4 -0
- package/locations/components/StoreList/StoreListSearchRadius.style.js +1 -0
- package/locations/components/StoreList/StoreOpeningHours.js +7 -0
- package/locations/components/StoreList/StoreOpeningHoursLine.js +7 -0
- package/locations/components/StoreList/StorePhoneNumber.js +6 -0
- package/locations/components/StoreList/StoreSelectLocationButton.js +4 -0
- package/locations/components/StoreList/index.js +1 -0
- package/locations/components/index.js +1 -0
- package/locations/constants/ActionTypes.js +10 -0
- package/locations/constants/Pipelines.js +1 -0
- package/locations/constants/Portals.js +2 -0
- package/locations/constants/Stages.js +1 -0
- package/locations/constants/index.js +7 -0
- package/locations/constants/routes.js +1 -0
- package/locations/helpers/createOrder.js +28 -0
- package/locations/helpers/formatDistance.js +9 -0
- package/locations/helpers/getAvailabilitySettings.js +12 -0
- package/locations/helpers/index.js +1 -0
- package/locations/helpers/productInventory.js +7 -0
- package/locations/helpers/showInventoryInLists.js +7 -0
- package/locations/index.js +9 -0
- package/locations/locations.context.js +1 -0
- package/locations/locations.hooks.js +4 -0
- package/locations/locations.streams.js +1 -0
- package/locations/locations.types.js +1 -0
- package/locations/providers/FulfillmentProvider.connector.js +10 -0
- package/locations/providers/FulfillmentProvider.js +49 -0
- package/locations/providers/FulfillmentProvider.types.js +1 -0
- package/locations/providers/StoreDetailsContext.js +1 -0
- package/locations/providers/StoreDetailsProvider.js +4 -0
- package/locations/providers/StoreFinder.connector.js +3 -0
- package/locations/providers/StoreFinderProvider.js +7 -0
- package/locations/providers/index.js +1 -0
- package/locations/reducers/index.js +1 -0
- package/locations/reducers/storage.js +24 -0
- package/locations/reducers/storeFinderSearch.js +6 -0
- package/locations/reducers/user.js +5 -0
- package/locations/reducers/userFormInput.js +8 -0
- package/locations/reducers/userSearch.js +6 -0
- package/locations/selectors/index.js +145 -0
- package/locations/subscriptions.js +27 -0
- package/login/action-creators/index.js +1 -0
- package/login/action-creators/resetPassword.js +14 -0
- package/login/actions/index.js +1 -0
- package/login/actions/resetPassword.js +5 -0
- package/login/components/ForgotPassword/ForgotPassword.connector.js +5 -0
- package/login/components/ForgotPassword/ForgotPassword.js +5 -0
- package/login/components/ForgotPassword/ForgotPassword.style.js +1 -0
- package/login/components/ForgotPassword/index.js +1 -0
- package/login/constants/actions.js +1 -0
- package/login/constants/index.js +1 -0
- package/login/constants/pipelines.js +1 -0
- package/login/constants/routes.js +1 -0
- package/login/index.js +1 -0
- package/orders/action-creators/index.js +1 -0
- package/orders/action-creators/orderDetails.js +22 -0
- package/orders/action-creators/orders.js +21 -0
- package/orders/actions/cancelOrder.js +8 -0
- package/orders/actions/fetchOrderDetails.js +10 -0
- package/orders/actions/fetchOrderHistory.js +7 -0
- package/orders/actions/index.js +1 -0
- package/orders/components/OrderDetails/OrderDetails.js +4 -0
- package/orders/components/OrderDetails/OrderDetailsAuthenticate.js +3 -0
- package/orders/components/OrderDetails/OrderDetailsAuthenticate.style.js +1 -0
- package/orders/components/OrderDetails/OrderDetailsAuthenticateForm.config.js +8 -0
- package/orders/components/OrderDetails/OrderDetailsContent.js +3 -0
- package/orders/components/OrderDetails/OrderDetailsContent.style.js +1 -0
- package/orders/components/OrderDetails/OrderDetailsOrder.js +4 -0
- package/orders/components/OrderDetails/OrderDetailsOrder.style.js +1 -0
- package/orders/components/OrderDetails/OrderDetailsOrderHeader.js +4 -0
- package/orders/components/OrderDetails/OrderDetailsOrderHeader.style.js +1 -0
- package/orders/components/OrderDetails/OrderDetailsOrderPickupLocation.connector.js +3 -0
- package/orders/components/OrderDetails/OrderDetailsOrderPickupLocation.js +4 -0
- package/orders/components/OrderDetails/OrderDetailsOrderPickupLocation.style.js +1 -0
- package/orders/components/OrderDetails/index.js +1 -0
- package/orders/components/OrderHistory/OrderHistory.js +4 -0
- package/orders/components/OrderHistory/OrderHistory.style.js +1 -0
- package/orders/components/OrderHistory/OrderHistoryList.js +9 -0
- package/orders/components/OrderHistory/OrderHistoryList.style.js +1 -0
- package/orders/components/OrderHistory/OrderHistoryLoader.js +4 -0
- package/orders/components/OrderHistory/OrderHistoryTable.js +9 -0
- package/orders/components/OrderHistory/OrderHistoryTable.style.js +1 -0
- package/orders/components/OrderHistory/index.js +1 -0
- package/orders/components/index.js +1 -0
- package/orders/constants/actionTypes.js +1 -0
- package/orders/constants/index.js +1 -0
- package/orders/constants/pipelines.js +1 -0
- package/orders/constants/routes.js +1 -0
- package/orders/constants/status.js +12 -0
- package/orders/helpers/index.js +1 -0
- package/orders/helpers/orderDetails.js +5 -0
- package/orders/helpers/orderStatus.js +15 -0
- package/orders/hooks/index.js +7 -0
- package/orders/index.js +1 -1
- package/orders/providers/OrderDetailsPrivateProvider.connector.js +11 -0
- package/orders/providers/OrderDetailsPrivateProvider.js +5 -0
- package/orders/providers/OrderDetailsProvider.connector.js +11 -0
- package/orders/providers/OrderDetailsProvider.constraints.js +1 -0
- package/orders/providers/OrderDetailsProvider.context.js +1 -0
- package/orders/providers/OrderDetailsProvider.js +11 -0
- package/orders/providers/OrderHistoryProvider.connector.js +9 -0
- package/orders/providers/OrderHistoryProvider.context.js +1 -0
- package/orders/providers/OrderHistoryProvider.js +4 -0
- package/orders/reducers/index.js +1 -0
- package/orders/reducers/orders.js +7 -0
- package/orders/reducers/ordersById.js +7 -0
- package/orders/reducers/ordersByNumber.js +7 -0
- package/orders/selectors/index.js +27 -0
- package/orders/subscriptions/index.js +4 -0
- package/package.json +26 -18
- package/page/actions/index.js +1 -0
- package/page/components/NotFound.js +3 -0
- package/page/components/index.js +1 -0
- package/page/index.js +2 -4
- package/page/selectors/index.js +7 -0
- package/product/collections/index.js +1 -0
- package/product/components/Availability/Availability.connector.js +5 -0
- package/product/components/Availability/Availability.js +6 -0
- package/product/components/Availability/Availability.style.js +1 -0
- package/product/components/Availability/index.js +1 -0
- package/product/components/Characteristics/Characteristic/components/Sheet/index.js +16 -4
- package/product/components/Characteristics/Characteristic/components/SheetItem/index.js +8 -3
- package/product/components/Characteristics/Characteristic/components/SheetItem/style.js +1 -1
- package/product/components/Characteristics/Characteristic/index.js +15 -6
- package/product/components/Characteristics/Characteristic/style.js +1 -1
- package/product/components/Characteristics/Swatch/index.js +8 -6
- package/product/components/Characteristics/index.js +10 -3
- package/product/components/Characteristics/transition.js +1 -1
- package/product/components/Description/index.js +5 -6
- package/product/components/Description/style.js +1 -1
- package/product/components/EffectivityDates/helpers.js +5 -5
- package/product/components/EffectivityDates/index.js +2 -2
- package/product/components/EffectivityDates/style.js +1 -1
- package/product/components/Header/PriceStriked/index.js +2 -5
- package/product/components/Header/PriceStriked/style.js +1 -1
- package/product/components/Header/Shipping/components/Label/index.js +3 -3
- package/product/components/Header/Shipping/components/Label/style.js +1 -1
- package/product/components/Header/Shipping/index.js +1 -1
- package/product/components/Header/Shipping/spec.js +1 -1
- package/product/components/Header/Tiers/components/Tier/index.js +2 -2
- package/product/components/Header/Tiers/components/Tier/spec.js +1 -1
- package/product/components/Header/Tiers/index.js +1 -1
- package/product/components/Header/Tiers/spec.js +1 -1
- package/product/components/Header/index.js +1 -0
- package/product/components/MapPriceHint/index.js +1 -1
- package/product/components/Media/FeaturedMedia.js +2 -2
- package/product/components/Media/MediaImage.js +3 -3
- package/product/components/Media/MediaPlaceholder.js +1 -1
- package/product/components/MediaSlider/components/MediaImage/index.js +1 -1
- package/product/components/MediaSlider/components/MediaVideo/index.js +1 -1
- package/product/components/MediaSlider/index.js +4 -4
- package/product/components/Options/components/Content/index.js +8 -8
- package/product/components/Options/components/Content/spec.js +2 -2
- package/product/components/Options/components/Option/index.js +2 -2
- package/product/components/Options/components/TextOption/components/OptionInfo/index.js +3 -3
- package/product/components/Options/components/TextOption/components/OptionInfo/spec.js +1 -1
- package/product/components/Options/components/TextOption/components/OptionInfo/style.js +1 -1
- package/product/components/Options/components/TextOption/index.js +19 -7
- package/product/components/Options/components/TextOption/style.js +1 -1
- package/product/components/Options/index.js +2 -2
- package/product/components/OrderQuantityHint/index.js +3 -2
- package/product/components/OrderQuantityHint/style.js +1 -1
- package/product/components/PriceDifference/index.js +1 -1
- package/product/components/PriceDifference/style.js +1 -1
- package/product/components/PriceInfo/PriceInfo.connector.js +4 -0
- package/product/components/PriceInfo/PriceInfo.js +4 -0
- package/product/components/PriceInfo/index.js +1 -0
- package/product/components/ProductBadges/index.js +2 -2
- package/product/components/ProductCard/index.js +12 -3
- package/product/components/ProductCard/style.js +1 -1
- package/product/components/ProductCharacteristics/context.js +1 -1
- package/product/components/ProductCharacteristics/helpers/index.js +1 -1
- package/product/components/ProductCharacteristics/index.js +30 -16
- package/product/components/ProductDiscountBadge/index.js +2 -2
- package/product/components/ProductDiscountBadge/spec.js +2 -2
- package/product/components/ProductDiscountBadge/style.js +1 -1
- package/product/components/ProductGridPrice/index.js +3 -3
- package/product/components/ProductGridPrice/style.js +1 -1
- package/product/components/ProductImage/ProductImagePlaceholder.js +5 -0
- package/product/components/ProductImage/connector.js +5 -0
- package/product/components/ProductImage/index.js +17 -13
- package/product/components/ProductImage/spec.js +1 -1
- package/product/components/ProductList/components/Item/index.js +2 -2
- package/product/components/ProductList/components/Iterator/index.js +1 -1
- package/product/components/ProductList/components/Layout/index.js +1 -1
- package/product/components/ProductList/index.js +2 -2
- package/product/components/ProductName/ProductName.js +4 -0
- package/product/components/ProductName/ProductNameContent.js +4 -0
- package/product/components/ProductName/index.js +1 -0
- package/product/components/ProductProperties/Content.js +4 -4
- package/product/components/ProductProperties/Group.js +1 -1
- package/product/components/ProductProperties/GroupedProperties.js +2 -2
- package/product/components/ProductProperties/Lists.js +1 -1
- package/product/components/ProductProperties/ListsHTML.js +5 -0
- package/product/components/ProductProperties/ProductProperties.js +2 -2
- package/product/components/ProductProperties/Row.js +1 -1
- package/product/components/ProductProperties/RowHTML.js +5 -0
- package/product/components/ProductProperties/Rows.js +2 -2
- package/product/components/ProductProperties/Wrapper.js +1 -1
- package/product/components/ProductProperties/helpers/getGroupsFromProperties.js +7 -2
- package/product/components/ProductProperties/style.js +1 -1
- package/product/components/ProductSlider/index.js +3 -2
- package/product/components/ProductSlider/spec.js +1 -1
- package/product/components/ProductVariants/VariantAvailability.connector.js +5 -0
- package/product/components/ProductVariants/VariantAvailability.js +5 -0
- package/product/components/ProductVariants/index.js +1 -0
- package/product/components/QuantityPicker/hooks.js +5 -0
- package/product/components/QuantityPicker/index.js +4 -3
- package/product/components/Rating/index.js +3 -3
- package/product/components/Rating/spec.js +2 -2
- package/product/components/RelationsSlider/RelationsSheet.js +2 -2
- package/product/components/RelationsSlider/RelationsSlider.js +1 -1
- package/product/components/RelationsSlider/RelationsSliderContent.js +1 -1
- package/product/components/RelationsSlider/style.js +1 -1
- package/product/components/Swatch/Swatch.js +1 -1
- package/product/components/Swatch/SwatchContent.js +1 -1
- package/product/components/Swatch/VariantSwatch.js +1 -1
- package/product/components/Swatch/style.js +1 -1
- package/product/components/Swatches/Swatches.js +1 -1
- package/product/components/UnitQuantityPicker/CartUnitQuantityPicker.js +4 -0
- package/product/components/UnitQuantityPicker/ProductUnitQuantityPicker.js +3 -6
- package/product/components/UnitQuantityPicker/UnitQuantityPicker.js +11 -13
- package/product/components/UnitQuantityPicker/UnitQuantityPickerWithSection.js +5 -2
- package/product/components/UnitQuantityPicker/index.js +1 -1
- package/product/components/UnitQuantityPicker/styles.js +1 -0
- package/product/components/context.js +1 -1
- package/product/components/index.js +1 -0
- package/product/constants/index.js +2 -1
- package/product/contexts/index.js +1 -0
- package/product/helpers/index.js +2 -2
- package/product/helpers/redirects.js +2 -2
- package/product/hocs/index.js +1 -0
- package/product/hocs/withMapPricing.js +4 -4
- package/product/hocs/withPriceCalculation.js +2 -2
- package/product/hocs/withProduct.js +6 -0
- package/product/hocs/withProductListEntry.js +1 -1
- package/product/hocs/withProductListEntryProduct.js +12 -0
- package/product/hocs/withProductListType.js +1 -1
- package/product/hooks/index.js +1 -0
- package/product/hooks/useLoadProductImage.js +1 -1
- package/product/index.js +4 -11
- package/product/product.types.js +0 -0
- package/product/{components/ProductProvider → providers/Product}/index.js +1 -1
- package/product/providers/ProductListEntry/context.js +1 -1
- package/product/providers/ProductListEntry/index.js +1 -1
- package/product/providers/ProductListType/context.js +2 -1
- package/product/providers/ProductListType/index.js +2 -1
- package/product/providers/index.js +1 -0
- package/product/selectors/product.js +75 -6
- package/product/selectors/variants.js +4 -1
- package/product/streams/index.js +1 -0
- package/push-opt-in/action-creators/pushOptIn.js +2 -1
- package/push-opt-in/actions/pushOptInModal.js +3 -3
- package/push-opt-in/components/PushOptInModal/index.js +3 -6
- package/push-opt-in/components/PushOptInModal/push-opt-in.svg +58 -58
- package/push-opt-in/reducers/optInModal.js +2 -2
- package/push-opt-in/reducers/optInTrigger.js +2 -2
- package/push-opt-in/selectors/optInModal.js +5 -2
- package/push-opt-in/selectors/optInTrigger.js +4 -2
- package/push-opt-in/subscriptions/index.js +1 -1
- package/push-opt-in/subscriptions/optInTracking.js +4 -0
- package/push-opt-in/subscriptions/optInTrigger.js +6 -6
- package/registration/action-creators/index.js +18 -0
- package/registration/actions/index.js +1 -0
- package/registration/actions/submitRegistration.js +4 -0
- package/registration/components/GuestRegistration/GuestRegistration.js +4 -0
- package/registration/components/GuestRegistration/GuestRegistrationContent.js +4 -0
- package/registration/components/GuestRegistration/GuestRegistrationFormPickup.config.js +8 -0
- package/registration/components/GuestRegistration/GuestRegistrationFormPickup.js +4 -0
- package/registration/components/Registration/Registration.js +4 -0
- package/registration/components/Registration/RegistrationContent.js +4 -0
- package/registration/components/Registration/RegistrationContent.style.js +2 -0
- package/registration/components/Registration/RegistrationFormActions.js +5 -0
- package/registration/components/Registration/RegistrationFormBase.config.js +4 -0
- package/registration/components/Registration/RegistrationFormBase.js +4 -0
- package/registration/components/Registration/RegistrationFormBilling.config.js +5 -0
- package/registration/components/Registration/RegistrationFormBilling.js +5 -0
- package/registration/components/Registration/RegistrationFormExtra.config.js +5 -0
- package/registration/components/Registration/RegistrationFormExtra.js +5 -0
- package/registration/components/Registration/RegistrationFormShipping.config.js +5 -0
- package/registration/components/Registration/RegistrationFormShipping.js +5 -0
- package/registration/components/Registration/RegistrationFormToggle.js +4 -0
- package/registration/components/index.js +1 -0
- package/registration/constants/actionTypes.js +1 -0
- package/registration/constants/index.js +1 -0
- package/registration/constants/pipelines.js +1 -0
- package/registration/hooks/index.js +5 -0
- package/registration/index.js +2 -0
- package/registration/providers/GuestRegistrationProvider.actions.js +4 -0
- package/registration/providers/GuestRegistrationProvider.connector.js +7 -0
- package/registration/providers/GuestRegistrationProvider.constraints.js +18 -0
- package/registration/providers/GuestRegistrationProvider.context.js +1 -0
- package/registration/providers/GuestRegistrationProvider.js +22 -0
- package/registration/providers/RegistrationProvider.actions.js +8 -0
- package/registration/providers/RegistrationProvider.connector.js +6 -0
- package/registration/providers/RegistrationProvider.constraints.js +27 -0
- package/registration/providers/RegistrationProvider.context.js +1 -0
- package/registration/providers/RegistrationProvider.js +17 -0
- package/registration/streams/index.js +4 -0
- package/registration/subscriptions/index.js +5 -0
- package/reviews/actions/index.js +1 -0
- package/reviews/components/Reviews/components/AllReviewsLink/index.js +1 -1
- package/reviews/components/Reviews/components/Header/components/AverageRating/index.js +8 -6
- package/reviews/components/Reviews/components/Header/components/NoReviews/index.js +3 -3
- package/reviews/components/Reviews/components/Header/components/ReviewsExcerpt/index.js +3 -3
- package/reviews/components/Reviews/components/Header/components/ReviewsExcerpt/style.js +1 -1
- package/reviews/components/Reviews/components/Header/components/WriteReviewLink/index.js +3 -3
- package/reviews/components/Reviews/components/Header/components/WriteReviewLink/spec.js +2 -2
- package/reviews/components/Reviews/components/Header/index.js +6 -4
- package/reviews/components/Reviews/components/Header/spec.js +2 -2
- package/reviews/components/Reviews/components/List/components/Info/components/Author/index.js +1 -1
- package/reviews/components/Reviews/components/List/components/Info/components/ReviewDate/index.js +1 -1
- package/reviews/components/Reviews/components/List/components/Info/index.js +2 -2
- package/reviews/components/Reviews/components/List/components/Info/style.js +1 -1
- package/reviews/components/Reviews/components/List/components/Rating/index.js +1 -1
- package/reviews/components/Reviews/components/List/components/Review/index.js +1 -1
- package/reviews/components/Reviews/components/List/components/Text/index.js +1 -1
- package/reviews/components/Reviews/components/List/components/Title/index.js +1 -1
- package/reviews/components/Reviews/components/List/index.js +3 -3
- package/reviews/components/Reviews/components/List/spec.js +1 -1
- package/reviews/components/Reviews/components/RatingCount/index.js +1 -1
- package/reviews/components/Reviews/components/RatingCount/spec.js +1 -1
- package/reviews/components/Reviews/components/RatingCount/style.js +1 -1
- package/reviews/components/Reviews/components/ReviewsInfo/index.js +3 -4
- package/reviews/components/Reviews/connector.js +2 -6
- package/reviews/components/Reviews/index.js +1 -1
- package/reviews/components/Reviews/mock.js +2 -6
- package/reviews/components/Reviews/spec.js +4 -3
- package/reviews/components/index.js +1 -0
- package/reviews/constants/index.js +1 -0
- package/reviews/index.js +3 -6
- package/reviews/selectors/index.js +1 -0
- package/reviews/streams/index.js +1 -0
- package/scanner/action-creators/index.js +1 -0
- package/scanner/actions/index.js +1 -0
- package/scanner/classes/index.js +1 -0
- package/scanner/constants/index.js +1 -0
- package/scanner/helpers/index.js +1 -0
- package/scanner/index.js +1 -6
- package/scanner/streams/index.js +1 -0
- package/search/actions/index.js +1 -0
- package/search/constants/index.js +1 -0
- package/search/helpers/index.js +1 -0
- package/search/index.js +1 -6
- package/search/selectors/index.js +1 -0
- package/search/streams/index.js +1 -0
- package/styles/helpers/cssCustomProperties.js +16 -0
- package/styles/helpers/index.js +1 -0
- package/styles/helpers/initCSSCustomProperties.js +10 -0
- package/styles/helpers/loadCustomStyles.js +6 -0
- package/styles/helpers/setPageBackgroundColor.js +5 -0
- package/styles/helpers/setPageContentWidth.js +5 -0
- package/styles/helpers/setViewportHeight.js +3 -0
- package/styles/helpers/toggleBodyScroll.js +5 -0
- package/styles/helpers/updatePageInsets.js +15 -0
- package/styles/index.js +1 -0
- package/styles/reset/form.js +8 -0
- package/styles/reset/index.js +1 -0
- package/styles/reset/media.js +1 -0
- package/styles/reset/root.js +3 -0
- package/styles/reset/table.js +1 -0
- package/styles/reset/typography.js +1 -0
- package/tracking/action-creators/cookieConsent.js +2 -2
- package/tracking/actions/cookieConsent.js +17 -5
- package/tracking/components/CookieConsentModal/connector.js +3 -5
- package/tracking/components/CookieConsentModal/index.js +3 -6
- package/tracking/components/CookieConsentModal/tracking-opt-in.svg +14 -14
- package/tracking/components/PrivacySettings/connector.js +3 -5
- package/tracking/components/PrivacySettings/index.js +2 -2
- package/tracking/helpers/index.js +1 -0
- package/tracking/selectors/cookieConsent.js +10 -5
- package/tracking/streams/cookieConsent.js +10 -3
- package/tracking/subscriptions/analytics.js +5 -4
- package/tracking/subscriptions/cookieConsent.js +6 -10
- package/types.js +0 -0
- package/user/index.js +2 -2
- package/user/selectors/data.js +10 -0
- package/components/MessageBar/spec.js +0 -1
- package/components/MessageBar/style.js +0 -2
- package/favorites/constants/constants.js +0 -1
- package/product/components/Characteristics/Characteristic/components/VariantAvailability/connector.js +0 -9
- package/product/components/Characteristics/Characteristic/components/VariantAvailability/index.js +0 -5
- package/product/components/QuantityPicker/helpers.js +0 -5
- /package/product/components/{Characteristics/Characteristic/components/VariantAvailability/style.js → ProductVariants/VariantAvailability.style.js} +0 -0
- /package/product/{components/ProductProvider → providers/Product}/connector.js +0 -0
|
@@ -1,13 +1,25 @@
|
|
|
1
|
-
import{APP_FEATURE_PUSH_OPT_IN,APP_FEATURE_COOKIE_CONSENT}from'@shopgate/engage/core/constants';import{hasSGJavaScriptBridge}from'@shopgate/
|
|
1
|
+
import{APP_FEATURE_PUSH_OPT_IN,APP_FEATURE_COOKIE_CONSENT,APP_FEATURE_ANDROID_EDGE_TO_EDGE}from'@shopgate/engage/core/constants';import{hasSGJavaScriptBridge,hasWebBridge,hasNewServices,isAndroidOs}from'@shopgate/engage/core/helpers';/**
|
|
2
|
+
* Checks if a specific feature flag is enabled.
|
|
3
|
+
*
|
|
4
|
+
* @param {string} category The top-level category of the featureFlags object
|
|
5
|
+
* (e.g., 'Push', 'Analytics', 'StatusBar').
|
|
6
|
+
* @param {string} flag The feature flag constant to look for.
|
|
7
|
+
* @returns {boolean}
|
|
8
|
+
*/function isFeatureFlagEnabled(category,flag){var _window,_window$SGAppInfo,_window$SGAppInfo$fea,_window$SGAppInfo$fea2,_window$SGAppInfo$fea3;// Check if app provides the feature flags of the requested category
|
|
9
|
+
var flags=(_window=window)===null||_window===void 0?void 0:(_window$SGAppInfo=_window.SGAppInfo)===null||_window$SGAppInfo===void 0?void 0:(_window$SGAppInfo$fea=_window$SGAppInfo.featureFlags)===null||_window$SGAppInfo$fea===void 0?void 0:(_window$SGAppInfo$fea2=_window$SGAppInfo$fea[category])===null||_window$SGAppInfo$fea2===void 0?void 0:(_window$SGAppInfo$fea3=_window$SGAppInfo$fea2['1'])===null||_window$SGAppInfo$fea3===void 0?void 0:_window$SGAppInfo$fea3.flags;// CHeck if the feature flag is provided
|
|
10
|
+
return Array.isArray(flags)&&flags.includes(flag);}/**
|
|
2
11
|
* Determines if the app supports the push opt-in feature
|
|
3
12
|
* @returns {boolean}
|
|
4
|
-
*/export var appSupportsPushOptIn=function appSupportsPushOptIn(){
|
|
5
|
-
return
|
|
6
|
-
return
|
|
7
|
-
return window.SGAppInfo.featureFlags.Push['1'].flags.includes(APP_FEATURE_PUSH_OPT_IN);};/**
|
|
13
|
+
*/export var appSupportsPushOptIn=function appSupportsPushOptIn(){if(hasWebBridge()||hasNewServices()){// Not push notifications in browser mode. Deactivated for new system for now
|
|
14
|
+
return false;}if(!hasSGJavaScriptBridge()){// Always supported in development
|
|
15
|
+
return true;}return isFeatureFlagEnabled('Push',APP_FEATURE_PUSH_OPT_IN);};/**
|
|
8
16
|
* Determines if the app supports the cookie consent feature
|
|
9
17
|
* @returns {boolean}
|
|
10
|
-
*/export var appSupportsCookieConsent=function appSupportsCookieConsent(){
|
|
11
|
-
return
|
|
12
|
-
return
|
|
13
|
-
|
|
18
|
+
*/export var appSupportsCookieConsent=function appSupportsCookieConsent(){if(hasWebBridge()){// Deactivated in browser mode for now
|
|
19
|
+
return false;}if(!hasSGJavaScriptBridge()){// Always supported in development
|
|
20
|
+
return true;}return isFeatureFlagEnabled('Analytics',APP_FEATURE_COOKIE_CONSENT);};/**
|
|
21
|
+
* Determines if the app supports Android with edge-to-edge screens
|
|
22
|
+
* @returns {boolean}
|
|
23
|
+
*/export var appSupportsAndroidEdgeToEdge=function appSupportsAndroidEdgeToEdge(){if(hasWebBridge()){// Deactivated in browser mode
|
|
24
|
+
return false;}if(!hasSGJavaScriptBridge()&&isAndroidOs){// Active in dev environment with Android user agent
|
|
25
|
+
return true;}return isFeatureFlagEnabled('StatusBar',APP_FEATURE_ANDROID_EDGE_TO_EDGE);};
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
import _regeneratorRuntime from"@babel/runtime/regenerator";function _extends(){_extends=Object.assign||function(target){for(var i=1;i<arguments.length;i++){var source=arguments[i];for(var key in source){if(Object.prototype.hasOwnProperty.call(source,key)){target[key]=source[key];}}}return target;};return _extends.apply(this,arguments);}function asyncGeneratorStep(gen,resolve,reject,_next,_throw,key,arg){try{var info=gen[key](arg);var value=info.value;}catch(error){reject(error);return;}if(info.done){resolve(value);}else{Promise.resolve(value).then(_next,_throw);}}function _asyncToGenerator(fn){return function(){var self=this,args=arguments;return new Promise(function(resolve,reject){var gen=fn.apply(self,args);function _next(value){asyncGeneratorStep(gen,resolve,reject,_next,_throw,"next",value);}function _throw(err){asyncGeneratorStep(gen,resolve,reject,_next,_throw,"throw",err);}_next(undefined);});};}import{COMMAND_GET_APP_PERMISSIONS,COMMAND_REQUEST_APP_PERMISSIONS}from'@shopgate/pwa-core/constants/AppCommands';import{PERMISSION_STATUS_NOT_DETERMINED,PERMISSION_STATUS_NOT_SUPPORTED,PERMISSION_STATUS_GRANTED,PERMISSION_STATUS_DENIED,PERMISSION_ID_LOCATION,PERMISSION_ID_PUSH,PERMISSION_ID_CAMERA}from'@shopgate/pwa-core/constants/AppPermissions';import geolocationRequestBrowser from"../classes/GeolocationRequestBrowser";var MOCK_PERMISSIONS_KEY='sg-mocked-app-permissions';var getMockedAppPermissions;/**
|
|
2
|
+
* In development within the browser, app permissions can be mocked by calling a global functions
|
|
3
|
+
* on the MockedPermissions object. The values are persisted in local storage, so that they survive
|
|
4
|
+
* reload of the PWA.
|
|
5
|
+
*
|
|
6
|
+
* Permissions are stored "globally" and will affect every shop.
|
|
7
|
+
*
|
|
8
|
+
* Example:
|
|
9
|
+
* MockedAppPermissions.setGetAppPermissionsResponse('push', 'notDetermined')
|
|
10
|
+
* MockedAppPermissions.setRequestAppPermissionsResponse('push', 'denied')
|
|
11
|
+
*
|
|
12
|
+
* The object also provides access to the relevant constants.
|
|
13
|
+
*
|
|
14
|
+
* Example:
|
|
15
|
+
* MockedAppPermissions.ID_PUSH
|
|
16
|
+
* MockedAppPermissions.STATUS_DENIED
|
|
17
|
+
*
|
|
18
|
+
* Complete Example:
|
|
19
|
+
* MockedAppPermissions.setRequestAppPermissionsResponse(
|
|
20
|
+
* MockedAppPermissions.ID_PUSH,
|
|
21
|
+
* MockedAppPermissions.STATUS_DENIED
|
|
22
|
+
* )
|
|
23
|
+
*/if(process.env.NODE_ENV==='development'){/**
|
|
24
|
+
* Retrieves mocked app permissions from the local storage
|
|
25
|
+
* @returns {Object|null}
|
|
26
|
+
*/getMockedAppPermissions=function getMockedAppPermissions(){return JSON.parse(localStorage.getItem(MOCK_PERMISSIONS_KEY));};/**
|
|
27
|
+
* Sets a single mocked app permission status from the local storage
|
|
28
|
+
* @param {string} commandType Command type for which the status is set (get / request)
|
|
29
|
+
* @param {string} permissionId The permissionId for which the status is set
|
|
30
|
+
* @param {string} status The mocked permission status
|
|
31
|
+
*/var setMockedAppPermission=function setMockedAppPermission(commandType,permissionId,status){var _current;var current=getMockedAppPermissions();if(current===null){current={};}if(!((_current=current)===null||_current===void 0?void 0:_current[permissionId])){// Add defaults for the permissionId when not set yet
|
|
32
|
+
current[permissionId]={get:PERMISSION_STATUS_GRANTED,request:PERMISSION_STATUS_GRANTED};}// Add the status to the mocked app permissions
|
|
33
|
+
current[permissionId][commandType]=status;// Update local storage
|
|
34
|
+
localStorage.setItem(MOCK_PERMISSIONS_KEY,JSON.stringify(current));};/**
|
|
35
|
+
* Prepare global object in DEV environment to mock app permissions
|
|
36
|
+
*/var obj={setGetAppPermissionsResponse:function setGetAppPermissionsResponse(permissionId){var status=arguments.length>1&&arguments[1]!==undefined?arguments[1]:PERMISSION_STATUS_GRANTED;setMockedAppPermission('get',permissionId,status);},setRequestAppPermissionsResponse:function setRequestAppPermissionsResponse(permissionId){var status=arguments.length>1&&arguments[1]!==undefined?arguments[1]:PERMISSION_STATUS_GRANTED;setMockedAppPermission('request',permissionId,status);}};// Populate useful constants
|
|
37
|
+
obj.STATUS_GRANTED=PERMISSION_STATUS_GRANTED;obj.STATUS_DENIED=PERMISSION_STATUS_DENIED;obj.STATUS_NOT_DETERMINED=PERMISSION_STATUS_NOT_DETERMINED;obj.STATUS_NOT_SUPPORTED=PERMISSION_STATUS_NOT_SUPPORTED;obj.ID_PUSH=PERMISSION_ID_PUSH;obj.ID_CAMERA=PERMISSION_ID_CAMERA;obj.ID_LOCATION=PERMISSION_ID_LOCATION;window.MockedAppPermissions=obj;}/**
|
|
38
|
+
* Mapping of states from the browser permissions API to app permissions.
|
|
39
|
+
*/var permissionsApiStateMapping={prompt:PERMISSION_STATUS_NOT_DETERMINED,granted:PERMISSION_STATUS_GRANTED,denied:PERMISSION_STATUS_DENIED};/**
|
|
40
|
+
* Determines geolocation permissions from the browser permissions API.
|
|
41
|
+
* @see https://developer.mozilla.org/en-US/docs/Web/API/Permissions_API
|
|
42
|
+
* @returns {string|null}
|
|
43
|
+
*/var getGeolocationPermissionsFromPermissionsApi=/*#__PURE__*/function(){var _ref=_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee(){var state,_ref2;return _regeneratorRuntime.wrap(function _callee$(_context){while(1)switch(_context.prev=_context.next){case 0:_context.prev=0;_context.next=3;return navigator.permissions.query({name:'geolocation'});case 3:_ref2=_context.sent;state=_ref2.state;_context.next=9;break;case 7:_context.prev=7;_context.t0=_context["catch"](0);case 9:return _context.abrupt("return",{state:permissionsApiStateMapping[state]||null});case 10:case"end":return _context.stop();}},_callee,null,[[0,7]]);}));return function getGeolocationPermissionsFromPermissionsApi(){return _ref.apply(this,arguments);};}();/**
|
|
44
|
+
* Determines geolocation permissions from the browser geolocation API.
|
|
45
|
+
* @see https://developer.mozilla.org/en-US/docs/Web/API/Geolocation_API
|
|
46
|
+
* @returns {string}
|
|
47
|
+
*/var getGeolocationPermissionsFromGeolocationApi=/*#__PURE__*/function(){var _ref3=_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee2(){var state,geolocation,_ref4$code,code;return _regeneratorRuntime.wrap(function _callee2$(_context2){while(1)switch(_context2.prev=_context2.next){case 0:state=PERMISSION_STATUS_GRANTED;_context2.prev=1;_context2.next=4;return geolocationRequestBrowser.dispatch();case 4:geolocation=_context2.sent;_context2.next=12;break;case 7:_context2.prev=7;_context2.t0=_context2["catch"](1);_ref4$code=_context2.t0.code;code=_ref4$code===void 0?null:_ref4$code;if(code!==null){state=PERMISSION_STATUS_DENIED;}case 12:return _context2.abrupt("return",{state:state,geolocation:geolocation});case 13:case"end":return _context2.stop();}},_callee2,null,[[1,7]]);}));return function getGeolocationPermissionsFromGeolocationApi(){return _ref3.apply(this,arguments);};}();/**
|
|
48
|
+
* Creates mocked app permissions to support development within browser environments.
|
|
49
|
+
* @param {string} commandName The name of the command for which the permissions are created
|
|
50
|
+
* @param {Object} [commandParams={}] The command params.
|
|
51
|
+
* @param {string} [fallbackStatus] The status that's returned when no status could be determined.
|
|
52
|
+
* @returns {Array}
|
|
53
|
+
*/var mockedPermissions=/*#__PURE__*/function(){var _ref5=_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee3(commandName){var commandParams,fallbackStatus,permissionIds,permissions,geolocationState,result,_args3=arguments;return _regeneratorRuntime.wrap(function _callee3$(_context3){while(1)switch(_context3.prev=_context3.next){case 0:commandParams=_args3.length>1&&_args3[1]!==undefined?_args3[1]:{};fallbackStatus=_args3.length>2&&_args3[2]!==undefined?_args3[2]:PERMISSION_STATUS_GRANTED;permissionIds=commandParams.permissionIds;permissions=commandParams.permissions;if(permissions){permissionIds=permissions.map(function(permission){return permission.permissionId;});}if(!permissionIds.includes(PERMISSION_ID_LOCATION)){_context3.next=14;break;}if(!(commandName===COMMAND_GET_APP_PERMISSIONS)){_context3.next=10;break;}_context3.next=9;return getGeolocationPermissionsFromPermissionsApi();case 9:geolocationState=_context3.sent;case 10:if(!(commandName===COMMAND_REQUEST_APP_PERMISSIONS)){_context3.next=14;break;}_context3.next=13;return getGeolocationPermissionsFromGeolocationApi();case 13:geolocationState=_context3.sent;case 14:result=permissionIds.map(function(permissionId){var _geolocationState;var state=fallbackStatus;var geolocation;var useLocalStorageMock=false;// Use mocked permissions from local storage if available
|
|
54
|
+
if(typeof getMockedAppPermissions==='function'){var _permissionMock$permi;var permissionMock=getMockedAppPermissions();var type=commandName===COMMAND_GET_APP_PERMISSIONS?'get':'request';var mockValue=permissionMock===null||permissionMock===void 0?void 0:(_permissionMock$permi=permissionMock[permissionId])===null||_permissionMock$permi===void 0?void 0:_permissionMock$permi[type];if(mockValue){useLocalStorageMock=true;state=mockValue||PERMISSION_STATUS_GRANTED;}}if(!useLocalStorageMock&&permissionId===PERMISSION_ID_LOCATION&&((_geolocationState=geolocationState)===null||_geolocationState===void 0?void 0:_geolocationState.state)){var _geolocationState2=geolocationState;state=_geolocationState2.state;geolocation=_geolocationState2.geolocation;}return _extends({permissionId:permissionId,status:state},geolocation?{data:geolocation}:{});});return _context3.abrupt("return",result);case 16:case"end":return _context3.stop();}},_callee3);}));return function mockedPermissions(_x){return _ref5.apply(this,arguments);};}();/**
|
|
55
|
+
* Creates a function to mock app permissions.
|
|
56
|
+
* @param {string} [fallbackStatus] The status that's returned when no status could be determined.
|
|
57
|
+
* @returns {Function}
|
|
58
|
+
*/export var createMockedPermissions=function createMockedPermissions(){var fallbackStatus=arguments.length>0&&arguments[0]!==undefined?arguments[0]:PERMISSION_STATUS_GRANTED;return function(commandName,commandParams){return mockedPermissions(commandName,commandParams,fallbackStatus);};};
|
package/core/helpers/baseUrl.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
function _slicedToArray(arr,i){return _arrayWithHoles(arr)||_iterableToArrayLimit(arr,i)||
|
|
1
|
+
function _slicedToArray(arr,i){return _arrayWithHoles(arr)||_iterableToArrayLimit(arr,i)||_nonIterableRest();}function _nonIterableRest(){throw new TypeError("Invalid attempt to destructure non-iterable instance");}function _iterableToArrayLimit(arr,i){var _arr=[];var _n=true;var _d=false;var _e=undefined;try{for(var _i=arr[Symbol.iterator](),_s;!(_n=(_s=_i.next()).done);_n=true){_arr.push(_s.value);if(i&&_arr.length===i)break;}}catch(err){_d=true;_e=err;}finally{try{if(!_n&&_i["return"]!=null)_i["return"]();}finally{if(_d)throw _e;}}return _arr;}function _arrayWithHoles(arr){if(Array.isArray(arr))return arr;}/**
|
|
2
2
|
* Regular expression to decode all possible types of base url from an url
|
|
3
3
|
*
|
|
4
4
|
* URLs of deployed apps
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
/* global SGJavascriptBridge */import{hasSGJavaScriptBridge}from'@shopgate/pwa-core';/**
|
|
2
|
+
* Checks whether the web bridge is active.
|
|
3
|
+
* @returns {boolean}
|
|
4
|
+
*/export function hasWebBridge(){var _SGJavascriptBridge;if(!hasSGJavaScriptBridge()){return false;}return['web','desktop','mobile'].includes((_SGJavascriptBridge=SGJavascriptBridge)===null||_SGJavascriptBridge===void 0?void 0:_SGJavascriptBridge.type);}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import{hasWebBridge}from"./bridge";import{DEVICE_TYPE_SMARTPHONE,DEVICE_TYPE_TABLET}from"../constants/deviceTypes";/**
|
|
2
|
+
* Determines the type of device that should be used for CMS pages.
|
|
3
|
+
* @returns {string}
|
|
4
|
+
*/export var getDeviceTypeForCms=function getDeviceTypeForCms(){return(// use the CMS pages configured for tablets for the storefront website
|
|
5
|
+
hasWebBridge()?DEVICE_TYPE_TABLET:DEVICE_TYPE_SMARTPHONE);};
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import{configuration}from'@shopgate/pwa-common/collections';import{IS_CONNECT_EXTENSION_ATTACHED}from'@shopgate/pwa-common/constants/Configuration';/**
|
|
2
|
+
* Determines if the PWA uses the new backend services
|
|
3
|
+
* @returns {boolean}
|
|
4
|
+
*/export var hasNewServices=function hasNewServices(){return!!configuration.get(IS_CONNECT_EXTENSION_ATTACHED);};
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import{ToastProvider}from'@shopgate/pwa-common/providers';import{MODAL_PIPELINE_ERROR}from'@shopgate/pwa-common/constants/ModalTypes';import showModal from'@shopgate/pwa-common/actions/modal/showModal';import{logger,i18n}from'@shopgate/engage/core/helpers';/**
|
|
2
|
+
* Creates an error message for a pipeline and a code
|
|
3
|
+
* @param {string} message The pipeline message
|
|
4
|
+
* @param {Object} params Additional params for the message
|
|
5
|
+
* @param {string} [pipeline=''] Name of the pipeline which caused the error
|
|
6
|
+
* @returns {string}
|
|
7
|
+
*/var getErrorMessage=function getErrorMessage(message){var params=arguments.length>1&&arguments[1]!==undefined?arguments[1]:{};var pipeline=arguments.length>2&&arguments[2]!==undefined?arguments[2]:'';if(!/^((\w+)\.){1,}/gi.test(message)){// Stop processing when the message is no i18n key
|
|
8
|
+
return i18n.text(message,params);}var segments=message.split('.');var code=segments.pop();var pipelineKeys=[];var codeKeys=[];var genericKeys=[];var keys=[];// Generate a bunch of lookup keys from the message
|
|
9
|
+
while(segments.length){pipelineKeys.push([].concat(segments,[pipeline,code]));codeKeys.push([].concat(segments,[code]));genericKeys.push([].concat(segments,['generic']));segments.pop();}// Add common keys
|
|
10
|
+
keys=[].concat(pipelineKeys,codeKeys,genericKeys,["common.errors.".concat(code),'common.errors.generic']);var match=keys.find(function(key){return i18n.getPath(key);});try{return i18n.text(match,params);}catch(e){return i18n.text(keys[keys.length-1]);}};/**
|
|
11
|
+
* Generates an error object for the error behaviors
|
|
12
|
+
* @param {Object} originalError The original error object
|
|
13
|
+
* @returns {Object}
|
|
14
|
+
*/var getErrorObject=function getErrorObject(originalError){var code=originalError.code,_originalError$contex=originalError.context,pipeline=_originalError$contex===void 0?'':_originalError$contex,meta=originalError.meta;var _meta$input=meta.input,pipelineInput=_meta$input===void 0?{}:_meta$input,originalMessage=meta.message,additionalParams=meta.additionalParams,translated=meta.translated;var message=translated?originalMessage:getErrorMessage(originalMessage,additionalParams,pipeline);var sanitized={code:code?code.toString():code,pipeline:pipeline,pipelineInput:pipelineInput,originalMessage:originalMessage,message:message,additionalParams:additionalParams,translated:translated};return sanitized;};/**
|
|
15
|
+
* Enables a custom implementation for an error behavior. The passed callback will be invoked with
|
|
16
|
+
* an object similar to streams (dispatch, getState, events). Additionally it contains the error
|
|
17
|
+
* object and the error message.
|
|
18
|
+
* @param {Function} callback A callback function for the custom error behavior
|
|
19
|
+
* @returns {Function}
|
|
20
|
+
*/var custom=function custom(callback){return function(_ref){var dispatch=_ref.dispatch,getState=_ref.getState,events=_ref.events,error=_ref.error;if(typeof callback!=='function'){logger.error('errorBehavior.custom: Please provide a callback function');return;}var sanitized=getErrorObject(error);callback({dispatch:dispatch,getState:getState,events:events,error:sanitized,message:sanitized.message});};};/**
|
|
21
|
+
* Enables to dispatch a Redux action via a passed callback.
|
|
22
|
+
* The callback is invoked with the error message.
|
|
23
|
+
* @param {Function} callback A callback function for the custom error behavior
|
|
24
|
+
* @returns {Function}
|
|
25
|
+
*/var dispatchAction=function dispatchAction(callback){return function(_ref2){var dispatch=_ref2.dispatch,error=_ref2.error;var _getErrorObject=getErrorObject(error),message=_getErrorObject.message;dispatch(callback(message));};};/**
|
|
26
|
+
* Displays a pipeline error as a modal.
|
|
27
|
+
* @returns {Function}
|
|
28
|
+
*/var modal=function modal(){return function(_ref3){var dispatch=_ref3.dispatch,error=_ref3.error;var _getErrorObject2=getErrorObject(error),code=_getErrorObject2.code,pipeline=_getErrorObject2.pipeline,message=_getErrorObject2.message,pipelineInput=_getErrorObject2.pipelineInput,originalMessage=_getErrorObject2.originalMessage,additionalParams=_getErrorObject2.additionalParams,translated=_getErrorObject2.translated;dispatch(showModal({confirm:'modal.ok',dismiss:null,title:null,message:message,type:MODAL_PIPELINE_ERROR,params:{pipeline:pipeline,request:pipelineInput,message:originalMessage,code:code,translated:translated,messageParams:additionalParams}}));};};/**
|
|
29
|
+
* Displays a pipeline error as a toast message.
|
|
30
|
+
* @param {number} duration An optional display duration in ms for the toast
|
|
31
|
+
* @returns {Function}
|
|
32
|
+
*/var toast=function toast(duration){return function(_ref4){var events=_ref4.events,error=_ref4.error;var _getErrorObject3=getErrorObject(error),message=_getErrorObject3.message;events.emit(ToastProvider.ADD,{id:'pipeline.error',message:message,duration:duration});};};export default{getErrorMessage:getErrorMessage,toast:toast,modal:modal,custom:custom,dispatchAction:dispatchAction};
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import{themeName,shopNumber}from'@shopgate/pwa-common/helpers/config';import{isDev}from'@shopgate/engage/core/helpers';var STORE_KEY_PREFIX="sgFeatureFlag_".concat(shopNumber,"_").concat(themeName,"__");/**
|
|
2
|
+
* @param {string} key key
|
|
3
|
+
* @returns {string}
|
|
4
|
+
*/export function getFeatureFlag(key){return window.localStorage.getItem("".concat(STORE_KEY_PREFIX).concat(key));}/**
|
|
5
|
+
* @param {string} key key
|
|
6
|
+
*/export function setABFeatureFlag(key){var hasFlag=getFeatureFlag(key);// flag is already set for user
|
|
7
|
+
if(hasFlag!==null){return;}var random=Math.round(Math.random()*100+1);window.localStorage.setItem("".concat(STORE_KEY_PREFIX).concat(key),random);}/**
|
|
8
|
+
* @param {string} key Key
|
|
9
|
+
* @param {number} percentage percentage for how many users the flag should be set
|
|
10
|
+
* @returns {boolean}
|
|
11
|
+
*/export function isFeatureEnabled(key){var percentage=arguments.length>1&&arguments[1]!==undefined?arguments[1]:10;if(isDev){return true;}var featureFlagRandomNumber=getFeatureFlag(key);return featureFlagRandomNumber<=percentage;}
|
|
@@ -1,8 +1,27 @@
|
|
|
1
|
-
import{getProductImageSettings}from"../../product/helpers";import{getImageFormat}from"./getImageFormat";/**
|
|
1
|
+
import{CONFIGURATION_COLLECTION_CREATE_EXTERNAL_IMAGE_URL}from'@shopgate/engage/core/constants';import{configuration}from'@shopgate/engage/core/collections';import{getProductImageSettings}from"../../product/helpers";import{getImageFormat}from"./getImageFormat";/**
|
|
2
|
+
* Regex to detect the "fill" query parameter
|
|
3
|
+
*/var fillParamRegex=/(fill|fillc)=(\w+)%2C(\d)($|&)/i;/**
|
|
4
|
+
* Appends image service parameters to an image service url
|
|
5
|
+
* @param {string} baseUrl The base url
|
|
6
|
+
* @param {Object} params Additional params for the url
|
|
7
|
+
* @returns {string}
|
|
8
|
+
*/var buildUrl=function buildUrl(baseUrl){var params=arguments.length>1&&arguments[1]!==undefined?arguments[1]:{};var parsedUrl=new URL(baseUrl);/**
|
|
9
|
+
* To improve caching of images, we need to create urls with a consistent order of query params.
|
|
10
|
+
* Otherwise it can happen that different urls create equal images, just because of different
|
|
11
|
+
* ordered query params.
|
|
12
|
+
* To reach this goal we utilize the "append" method of the URLSearchParams object and apply
|
|
13
|
+
* the params in the order given by the "params" object. Since "append" could create duplicate
|
|
14
|
+
* query params, each param needs to be removed from the URLSearchParams before it's added again.
|
|
15
|
+
*/Object.keys(params).forEach(function(key){parsedUrl.searchParams["delete"](key);return parsedUrl.searchParams.append(key,params[key]);});/**
|
|
16
|
+
* The "fill" parameter contains a ",". Since this would be url encoded by toString(), and the
|
|
17
|
+
* service will not recognize it anymore, we need to replace the encoding with a ",".
|
|
18
|
+
*/return parsedUrl.toString().replace(fillParamRegex,'$1=$2,$3$4');};/**
|
|
2
19
|
* Returns the actual url to the image, by adding url parameters with the dimensions for img-cdn
|
|
3
20
|
* @param {string} src Source to the image.
|
|
4
21
|
* @param {Object} dimension Dimension of the requested image.
|
|
5
22
|
* @param {number} dimension.width Width in pixels.
|
|
6
23
|
* @param {number} dimension.height Height in pixels.
|
|
7
24
|
* @returns {string}
|
|
8
|
-
*/export var getFullImageSource=function getFullImageSource(src
|
|
25
|
+
*/export var getFullImageSource=function getFullImageSource(src){var _ref=arguments.length>1&&arguments[1]!==undefined?arguments[1]:{},width=_ref.width,height=_ref.height;if(src&&src.includes('images.shopgate.services/v2/images')){var _getProductImageSetti2=getProductImageSettings(),fillColor=_getProductImageSetti2.fillColor,quality=_getProductImageSetti2.quality;var format=getImageFormat();return buildUrl(src,{format:format,width:width,height:height,quality:quality,fill:fillColor.replace('#','')});}if(src&&src.startsWith('https://img-cdn.shopgate.com')&&!src.includes('?')){return buildUrl(src,{w:width,h:height,q:70,zd:'resize',fillc:'FFFFFF'});}// Check if an extension registered an external image url handler within the config collection.
|
|
26
|
+
var createUrlFn=configuration.get(CONFIGURATION_COLLECTION_CREATE_EXTERNAL_IMAGE_URL);if(typeof createUrlFn==='function'){var _getProductImageSetti4=getProductImageSettings(),_fillColor=_getProductImageSetti4.fillColor,_quality=_getProductImageSetti4.quality;var _format=getImageFormat();// Invoke the handler with all relevant parameters.
|
|
27
|
+
var externalUrl=createUrlFn(src,{width:width,height:height,fillColor:_fillColor,quality:_quality,format:_format});if(!!externalUrl&&typeof externalUrl==='string'){return externalUrl;}}return src;};
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
var BASE_URL='https://www.google.com/maps';/**
|
|
2
|
+
* Generates a universal link to google maps that shows the direction to given address.
|
|
3
|
+
* @param {Object} address The address object.
|
|
4
|
+
* @param {string} address.street Street name and number
|
|
5
|
+
* @param {string} address.city City name
|
|
6
|
+
* @param {string} address.postalCode Postal code.
|
|
7
|
+
* @returns {string}
|
|
8
|
+
*/export var generateGoogleMapsDirectionsUrl=function generateGoogleMapsDirectionsUrl(){var address=arguments.length>0&&arguments[0]!==undefined?arguments[0]:{};var mapDestination=encodeURIComponent("".concat(address.street,", ").concat(address.city," ").concat(address.postalCode));var url="".concat(BASE_URL,"/dir/?api=1&destination=").concat(mapDestination);return url;};
|
package/core/helpers/i18n.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{getTranslator,getPriceFormatter,getDateFormatter,getTimeFormatter,getNumberFormatter}from'@shopgate/pwa-common/helpers/i18n';import{logger}from'@shopgate/pwa-core/helpers';/**
|
|
1
|
+
import get from'lodash/get';import{getTranslator,getPriceFormatter,getDateFormatter,getTimeFormatter,getNumberFormatter}from'@shopgate/pwa-common/helpers/i18n';import{logger}from'@shopgate/pwa-core/helpers';/**
|
|
2
2
|
* @typedef {Object} I18nHelpers
|
|
3
3
|
* @property {Function} init - Inits locales.
|
|
4
4
|
* @property {Function} text - Text translator.
|
|
@@ -7,14 +7,19 @@ import{getTranslator,getPriceFormatter,getDateFormatter,getTimeFormatter,getNumb
|
|
|
7
7
|
* @property {Function} date - Date translator.
|
|
8
8
|
* @property {Function} time - Time translator.
|
|
9
9
|
* @property {Function} number - Number translator
|
|
10
|
+
* @property {Function} getSupplementalData - Get Supplemental Data
|
|
11
|
+
* @property {Function} getPath - Get locale data by path
|
|
12
|
+
* @property {Function} getLang - Get locale lang code, eg de-DE
|
|
10
13
|
*/ /**
|
|
11
14
|
* I18n helpers.
|
|
12
15
|
* @returns {I18nHelpers}
|
|
13
16
|
*/var I18n=function I18n(){var didInit=false;/**
|
|
14
17
|
* Function that throws when called. Used in a default instance of i18n to notify developer
|
|
15
18
|
* when the module is used without initialization.
|
|
16
|
-
*/var notReadyCb=function notReadyCb(){logger.error('i18n is not yet ready. Please postpone translations until App is bootstrapped.');};return{init:function init(_ref){var _this=this;var locales=_ref.locales,lang=_ref.lang,_ref$currencyLocale=_ref.currencyLocale,currencyLocale=_ref$currencyLocale===void 0?null:_ref$currencyLocale;if(didInit){logger.warn('Looks like i18n locales are already
|
|
17
|
-
this.ready=true;},text:notReadyCb,textWithDefault:notReadyCb,price:notReadyCb,date:notReadyCb,time:notReadyCb,number:notReadyCb,ready:false};};/**
|
|
18
|
-
*
|
|
19
|
+
*/var notReadyCb=function notReadyCb(){logger.error('i18n is not yet ready. Please postpone translations until App is bootstrapped.');};return{init:function init(_ref){var _this=this;var locales=_ref.locales,lang=_ref.lang,_ref$currencyLocale=_ref.currencyLocale,currencyLocale=_ref$currencyLocale===void 0?null:_ref$currencyLocale;if(didInit){logger.warn('Looks like i18n locales are already initialized. Changing locales now may lead to inconsistent translations.');}didInit=true;this.text=getTranslator(locales,lang);this.textWithDefault=function(key,defaultText){var text=_this.text(key);return text===key?defaultText:text;};this.price=getPriceFormatter(currencyLocale||lang);this.date=getDateFormatter(lang);this.time=getTimeFormatter(lang);this.number=getNumberFormatter(lang);this.getSupplementalData=function(){return locales.supplementalData||{};};this.getPath=function(path){return get(locales,path);};this.getLang=function(){return lang;};// If component decides to act accordingly this information should be exposed.
|
|
20
|
+
this.ready=true;},text:notReadyCb,textWithDefault:notReadyCb,price:notReadyCb,date:notReadyCb,time:notReadyCb,number:notReadyCb,getSupplementalData:notReadyCb,getPath:notReadyCb,getLang:notReadyCb,ready:false};};/**
|
|
19
21
|
* @type {I18nHelpers}
|
|
20
|
-
*/export var i18n=I18n()
|
|
22
|
+
*/export var i18n=I18n();/**
|
|
23
|
+
* Return order of week days, based on firstDay of week locale settings
|
|
24
|
+
* @returns {string[]}
|
|
25
|
+
*/export var getWeekDaysOrder=function getWeekDaysOrder(){var _i18n$getSupplemental=i18n.getSupplementalData(),_i18n$getSupplemental2=_i18n$getSupplemental.weekData,_i18n$getSupplemental3=_i18n$getSupplemental2===void 0?{}:_i18n$getSupplemental2,_i18n$getSupplemental4=_i18n$getSupplemental3.firstDay,firstDay=_i18n$getSupplemental4===void 0?'sun':_i18n$getSupplemental4;var days=['sun','mon','tue','wed','thu','fri','sat'];var dayIndex=days.findIndex(function(d){return d===firstDay;});return days.slice(dayIndex).concat(days.slice(0,dayIndex));};
|
package/core/helpers/index.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
/** @module core */import{getCurrentRoute as getCurrentRouteHelper,router,history,parseQueryStringToObject,parseObjectToQueryString}from'@shopgate/pwa-common/helpers/router';export*from"./appFeatures";export*from"./baseUrl";export{getFullImageSource}from"./getFullImageSource";export{getImageFormat}from"./getImageFormat";export{i18n}from"./i18n";export{updateLegacyNavigationBar}from"./updateLegacyNavigationBar";// --------------- CORE --------------- //
|
|
2
|
-
export
|
|
1
|
+
/** @module core */import{getCurrentRoute as getCurrentRouteHelper,router,history,parseQueryStringToObject,parseObjectToQueryString}from'@shopgate/pwa-common/helpers/router';export*from"./environment";export*from"./appFeatures";export*from"./appPermissions";export*from"./baseUrl";export*from"./bridge";export{isBeta}from"../config/isBeta";export{getFullImageSource}from"./getFullImageSource";export{getImageFormat}from"./getImageFormat";export{svgToDataUrl}from"./svgToDataUrl";export{i18n,getWeekDaysOrder}from"./i18n";export{updateLegacyNavigationBar}from"./updateLegacyNavigationBar";export{updateAndroidNavigationBarColor}from"./androidNavigationBar";export{default as nl2br}from"./nl2br";export*from"./string";export{isIOSTheme}from"./isIOSTheme";export{isTouchDevice}from"./isTouchDevice";export{generateGoogleMapsDirectionsUrl}from"./googleMaps";export{useScrollContainer}from"./scrollContainer";export{getDeviceTypeForCms}from"./deviceType";export*from"./featureFlag";// --------------- CORE --------------- //
|
|
2
|
+
export{logger,ajaxUrl,hasSGJavaScriptBridge,useBrowserConnector,hasWebBridgeCore,logDeprecationMessage}from'@shopgate/pwa-core/helpers';export{default as logGroup}from'@shopgate/pwa-core/helpers/logGroup';export*from'@shopgate/pwa-core/helpers/version';export*from'@shopgate/pwa-common/helpers/data';export*from'@shopgate/pwa-common/helpers/date';export*from'@shopgate/pwa-common/helpers/dom';export{env,isDev,isProd,isRemote,isStaging,isWindows}from'@shopgate/pwa-common/helpers/environment';export{default as decodeHTML}from'@shopgate/pwa-common/helpers/html/decodeHTML';export*from'@shopgate/pwa-common/helpers/html/handleDOM';export{default as parseHTML}from'@shopgate/pwa-common/helpers/html/parseHTML';export{default as getTranslator}from'@shopgate/pwa-common/helpers/i18n/getTranslator';export{default as getPriceFormatter}from'@shopgate/pwa-common/helpers/i18n/getPriceFormatter';export{default as getDateFormatter}from'@shopgate/pwa-common/helpers/i18n/getDateFormatter';export{default as getTimeFormatter}from'@shopgate/pwa-common/helpers/i18n/getTimeFormatter';export{default as getNumberFormatter}from'@shopgate/pwa-common/helpers/i18n/getNumberFormatter';export*from'@shopgate/pwa-common/helpers/legacy';// TODO: Can only be exported once the theme uses it. causes issues with the custom routes feature.
|
|
3
3
|
/*
|
|
4
4
|
export { default as portalCollection } from '@shopgate/pwa-common/helpers/portals/portalCollection';
|
|
5
5
|
export { default as routePortals } from '@shopgate/pwa-common/helpers/portals/routePortals';
|
|
6
|
-
*/export*from'@shopgate/pwa-common/helpers/redux';export*from'@shopgate/pwa-common/helpers/style';export*from'@shopgate/pwa-common/helpers/tracking';export*from'@shopgate/pwa-common/helpers/validation';// --------------- ROUTER --------------- //
|
|
6
|
+
*/export*from'@shopgate/pwa-common/helpers/redux';export*from'@shopgate/pwa-common/helpers/style';export*from'@shopgate/pwa-common/helpers/tracking';export*from'@shopgate/pwa-common/helpers/validation';export{default as errorBehavior}from"./errorBehavior";// --------------- ROUTER --------------- //
|
|
7
7
|
export{getCurrentRouteHelper,router,history,parseQueryStringToObject,parseObjectToQueryString};export{push,pop,replace,reset}from"../router/helpers";
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export default(function(str){var isXhtml=arguments.length>1&&arguments[1]!==undefined?arguments[1]:false;var breakTag=isXhtml?'<br />':'<br>';return String(str).replace(/([^>\r\n]?)(\r\n|\n\r|\r|\n)/g,"$1".concat(breakTag,"$2"));});
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Takes a string and transforms the string into upper case.
|
|
3
|
+
* @param {string} text The string to modify.
|
|
4
|
+
* @returns {string}
|
|
5
|
+
*/export var toUpperCase=function toUpperCase(text){return text.toUpperCase();};/**
|
|
6
|
+
* Takes a string and transforms the string into lower case.
|
|
7
|
+
* @param {string} text The string to modify.
|
|
8
|
+
* @returns {string}
|
|
9
|
+
*/export var toLowerCase=function toLowerCase(text){return text.toLowerCase();};
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Converts a raw SVG markup string into a Base64-encoded data URL
|
|
3
|
+
* @param {string} svg the SVG which should be converted
|
|
4
|
+
* @param {string} [fallbackSVG] the fallback SVG in case the first isn't available
|
|
5
|
+
* @returns {string|null} data URL
|
|
6
|
+
*/export var svgToDataUrl=function svgToDataUrl(svg,fallbackSVG){if(!svg){return fallbackSVG||null;}try{// encode svg string to UTF-8 byte array to handle non-Latin1 characters
|
|
7
|
+
// (e.g. Unicode characters like emojis)
|
|
8
|
+
var utf8Encoder=new TextEncoder();var svgBytes=utf8Encoder.encode(svg);// Convert the byte array to a Base64 string
|
|
9
|
+
var base64Svg=btoa(String.fromCharCode.apply(null,svgBytes));return"data:image/svg+xml;base64,".concat(base64Svg);}catch(e){return fallbackSVG||null;}};
|
|
@@ -1,4 +1,7 @@
|
|
|
1
|
-
function _extends(){_extends=Object.assign||function(target){for(var i=1;i<arguments.length;i++){var source=arguments[i];for(var key in source){if(Object.prototype.hasOwnProperty.call(source,key)){target[key]=source[key];}}}return target;};return _extends.apply(this,arguments);}import Color from'color';import
|
|
1
|
+
function _extends(){_extends=Object.assign||function(target){for(var i=1;i<arguments.length;i++){var source=arguments[i];for(var key in source){if(Object.prototype.hasOwnProperty.call(source,key)){target[key]=source[key];}}}return target;};return _extends.apply(this,arguments);}import Color from'color';import{isAvailable,StatusBar}from'@shopgate/native-modules';import{broadcastEvent}from'@shopgate/engage/core/commands';import{isDev}from'@shopgate/engage/core/helpers';import{UIEvents}from'@shopgate/engage/core/events';/**
|
|
2
2
|
* Updates the styles of the navigation bar of iOS devices.
|
|
3
3
|
* @param {Object} options Options for the status bar.
|
|
4
|
-
*/export var updateLegacyNavigationBar=function updateLegacyNavigationBar(){var options=arguments.length>0&&arguments[0]!==undefined?arguments[0]:{};var targetTab=options.targetTab||'main';var isDefault=options.isDefault;var styles=_extends({},options.color&&{color:options.color},options.background&&{background:options.background},options.buttonColor&&{buttonColor:options.buttonColor},options.buttonColorDisabled&&{buttonColorDisabled:options.buttonColorDisabled},options.statusBarBackground&&{statusBarBackground:options.statusBarBackground});if(!styles.statusBarBackground&&styles.background){styles.statusBarBackground=styles.background;}var statusBarStyle;if(options.statusBarStyle){statusBarStyle=options.statusBarStyle;}else if(styles.statusBarBackground){statusBarStyle=Color(styles.statusBarBackground).isDark()?'light':'dark';}
|
|
4
|
+
*/export var updateLegacyNavigationBar=function updateLegacyNavigationBar(){var options=arguments.length>0&&arguments[0]!==undefined?arguments[0]:{};var targetTab=options.targetTab||'main';var isDefault=options.isDefault;var styles=_extends({},options.color&&{color:options.color},{},options.background&&{background:options.background},{},options.buttonColor&&{buttonColor:options.buttonColor},{},options.buttonColorDisabled&&{buttonColorDisabled:options.buttonColorDisabled},{},options.statusBarBackground&&{statusBarBackground:options.statusBarBackground});if(!styles.statusBarBackground&&styles.background){styles.statusBarBackground=styles.background;}var statusBarStyle;if(options.statusBarStyle){statusBarStyle=options.statusBarStyle;}else if(styles.statusBarBackground){if(styles.statusBarBackground==='transparent'){statusBarStyle='none';}else{statusBarStyle=Color(styles.statusBarBackground).isDark()?'light':'dark';}}// Status bar update via native-modules deactivated for now since it doesn't work
|
|
5
|
+
// reliable when opening a page inside the In-App-Browser.
|
|
6
|
+
if(false&&isAvailable()){var style=statusBarStyle==='dark'?'dark-content':'light-content';StatusBar.setBarStyle({style:style});if(styles.statusBarBackground){StatusBar.setBackgroundColor({color:styles.statusBarBackground});}return;}var payload=_extends({},statusBarStyle&&{statusBarStyle:statusBarStyle},{},isDefault&&{isDefault:isDefault},{targetTab:targetTab,styles:styles});broadcastEvent({event:'updateNavigationBarStyle',parameters:[payload]});if(isDev){// Dispatch the payload in dev as regular event, so that simulated top inset can adopt the color
|
|
7
|
+
UIEvents.emit('devInternalUpdateStatusBarStyle',payload);}};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export{default as withShowModal}from'@shopgate/pwa-common/helpers/modal/withShowModal';export{withTheme}from"./withTheme";export{withRoute}from"./withRoute";export{withCurrentProduct}from"./withCurrentProduct";export{withForwardedRef}from"./withForwardedRef";export{withNavigation}from"./withNavigation";export{withWidgetSettings}from"./withWidgetSettings";export{withWidgetStyles}from"./withWidgetStyles";export{withApp}from"./withApp";export{withThemeResources,withThemeComponents,withThemeWidgets}from"./withThemeResources";
|
package/core/hocs/withApp.js
CHANGED
|
@@ -6,4 +6,4 @@ function _extends(){_extends=Object.assign||function(target){for(var i=1;i<argum
|
|
|
6
6
|
* The actual HOC.
|
|
7
7
|
* @param {Object} props The component props.
|
|
8
8
|
* @returns {JSX}
|
|
9
|
-
*/var WithApp=function WithApp(props){return
|
|
9
|
+
*/var WithApp=function WithApp(props){return React.createElement(AppContext.Consumer,null,function(appContext){return React.createElement(WrappedComponent,_extends({app:appContext},props));});};var displayName=WrappedComponent.displayName||WrappedComponent.name||'Component';WithApp.displayName="WithApp(".concat(displayName,")");return WithApp;}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
function _defineProperty(obj,key,value){if(key in obj){Object.defineProperty(obj,key,{value:value,enumerable:true,configurable:true,writable:true});}else{obj[key]=value;}return obj;}function _extends(){_extends=Object.assign||function(target){for(var i=1;i<arguments.length;i++){var source=arguments[i];for(var key in source){if(Object.prototype.hasOwnProperty.call(source,key)){target[key]=source[key];}}}return target;};return _extends.apply(this,arguments);}import React
|
|
1
|
+
function _defineProperty(obj,key,value){if(key in obj){Object.defineProperty(obj,key,{value:value,enumerable:true,configurable:true,writable:true});}else{obj[key]=value;}return obj;}function _extends(){_extends=Object.assign||function(target){for(var i=1;i<arguments.length;i++){var source=arguments[i];for(var key in source){if(Object.prototype.hasOwnProperty.call(source,key)){target[key]=source[key];}}}return target;};return _extends.apply(this,arguments);}import React,{useContext}from'react';import{ThemeContext}from'@shopgate/pwa-common/context';/**
|
|
2
2
|
* Gets the context props for the wrapped component.
|
|
3
3
|
* @param {Object} context The context.
|
|
4
4
|
* @param {string|null} prop The optional prop name.
|
|
@@ -7,10 +7,10 @@ function _defineProperty(obj,key,value){if(key in obj){Object.defineProperty(obj
|
|
|
7
7
|
* Injects the current Product Context information into the desired component.
|
|
8
8
|
* @param {Function} WrappedComponent The react component to wrap.
|
|
9
9
|
* @param {Object} [options] A optional prop name to inject the current product properties.
|
|
10
|
-
* @param {string} options.prop An optional prop name to inject the current product properties.
|
|
10
|
+
* @param {string} [options.prop] An optional prop name to inject the current product properties.
|
|
11
11
|
* @returns {JSX}
|
|
12
12
|
*/export function withCurrentProduct(WrappedComponent){var options=arguments.length>1&&arguments[1]!==undefined?arguments[1]:{};/**
|
|
13
13
|
* The actual HOC.
|
|
14
14
|
* @param {Object} props The component props.
|
|
15
15
|
* @returns {JSX}
|
|
16
|
-
*/
|
|
16
|
+
*/function WithCurrentProduct(props){var _useContext=useContext(ThemeContext),ProductContext=_useContext.contexts.ProductContext;var productProps=useContext(ProductContext);return React.createElement(WrappedComponent,_extends({},getInjectedProps(productProps,options.prop),props));}var displayName=WrappedComponent.displayName||WrappedComponent.name||'Component';WithCurrentProduct.displayName="WithCurrentProduct(".concat(displayName,")");return WithCurrentProduct;}
|
|
@@ -10,4 +10,4 @@ function _extends(){_extends=Object.assign||function(target){for(var i=1;i<argum
|
|
|
10
10
|
* @param {Object} props The component props.
|
|
11
11
|
* @param {Object} ref The forwarded ref.
|
|
12
12
|
* @returns {JSX}
|
|
13
|
-
*/var WithForwardedRef=function WithForwardedRef(props,ref){var injected=_defineProperty({},options.prop||'forwardedRef',ref);return
|
|
13
|
+
*/var WithForwardedRef=function WithForwardedRef(props,ref){var injected=_defineProperty({},options.prop||'forwardedRef',ref);return React.createElement(WrappedComponent,_extends({},props,injected));};var displayName=WrappedComponent.displayName||WrappedComponent.name||'Component';WithForwardedRef.displayName="WithForwardedRef(".concat(displayName,")");return forwardRef(WithForwardedRef);}
|
|
@@ -12,4 +12,4 @@ function _defineProperty(obj,key,value){if(key in obj){Object.defineProperty(obj
|
|
|
12
12
|
* The actual HOC.
|
|
13
13
|
* @param {Object} props The component props.
|
|
14
14
|
* @returns {JSX}
|
|
15
|
-
*/var WithNavigation=function WithNavigation(props){return
|
|
15
|
+
*/var WithNavigation=function WithNavigation(props){return React.createElement(WrappedComponent,_extends({},getInjectedProps(options.prop),props));};var displayName=WrappedComponent.displayName||WrappedComponent.name||'Component';WithNavigation.displayName="WithNavigation(".concat(displayName,")");return WithNavigation;}
|
package/core/hocs/withRoute.js
CHANGED
|
@@ -13,4 +13,4 @@ function _defineProperty(obj,key,value){if(key in obj){Object.defineProperty(obj
|
|
|
13
13
|
* The actual HOC.
|
|
14
14
|
* @param {Object} props The component props.
|
|
15
15
|
* @returns {JSX}
|
|
16
|
-
*/var WithRoute=function WithRoute(props){return
|
|
16
|
+
*/var WithRoute=function WithRoute(props){return React.createElement(RouteContext.Consumer,null,function(routeContext){return React.createElement(WrappedComponent,_extends({},getInjectedProps(routeContext,options.prop),props));});};var displayName=WrappedComponent.displayName||WrappedComponent.name||'Component';WithRoute.displayName="WithRoute(".concat(displayName,")");return WithRoute;}
|
package/core/hocs/withTheme.js
CHANGED
|
@@ -8,10 +8,49 @@ var _excluded=["contexts"];function _objectWithoutProperties(source,excluded){if
|
|
|
8
8
|
* @param {Function} WrappedComponent The react component to wrap.
|
|
9
9
|
* @param {Object} [options={}] Options for the HOC.
|
|
10
10
|
* @param {string} [options.prop] An optional prop name to inject the theme properties.
|
|
11
|
-
* @
|
|
11
|
+
* @deprecated
|
|
12
|
+
*
|
|
13
|
+
* Use `withThemeComponents()` instead.
|
|
14
|
+
* ```js
|
|
15
|
+
* import { withThemeComponents } from '@shopgate/engage/core/hocs';
|
|
16
|
+
*
|
|
17
|
+
* function MyComponent({ themeComponents }) {
|
|
18
|
+
* const { ProductCard } = themeComponents;
|
|
19
|
+
* return <ProductCard />;
|
|
20
|
+
* }
|
|
21
|
+
* ````
|
|
22
|
+
* This HOC will NOT expose components that can be imported directly from the `@shopgate/engage`
|
|
23
|
+
* package (see list below).
|
|
24
|
+
*
|
|
25
|
+
* ---
|
|
26
|
+
* Use these updated imports instead of deprecated context values:
|
|
27
|
+
*
|
|
28
|
+
* ```js
|
|
29
|
+
* // Deprecated: Drawer → use SheetDrawer
|
|
30
|
+
* import { SheetDrawer } from '@shopgate/engage/components';
|
|
31
|
+
*
|
|
32
|
+
* // Deprecated: PriceDifference → use PriceDifference
|
|
33
|
+
* import { PriceDifference } from '@shopgate/engage/product/components';
|
|
34
|
+
*
|
|
35
|
+
* // Deprecated: ProductSlider → use ProductSlider
|
|
36
|
+
* import { ProductSlider } from '@shopgate/engage/product/components';
|
|
37
|
+
*
|
|
38
|
+
* // Deprecated: SelectOption → use SelectOption
|
|
39
|
+
* import { SelectOption } from '@shopgate/engage/product/components';
|
|
40
|
+
*
|
|
41
|
+
* // Deprecated: TextOption → use TextOption
|
|
42
|
+
* import { TextOption } from '@shopgate/engage/product/components';
|
|
43
|
+
*
|
|
44
|
+
* // Deprecated: View → use View
|
|
45
|
+
* import { View } from '@shopgate/engage/components'
|
|
46
|
+
*
|
|
47
|
+
* // Deprecated: { contexts: { ProductContext }} → use ProductContext
|
|
48
|
+
* import { ProductContext } from '@shopgate/engage/product/contexts';
|
|
49
|
+
* ```
|
|
50
|
+
* @returns {JSX.Element}
|
|
12
51
|
*/export function withTheme(WrappedComponent){var options=arguments.length>1&&arguments[1]!==undefined?arguments[1]:{};/**
|
|
13
52
|
* The actual HOC.
|
|
14
53
|
* @param {Object} props The component props.
|
|
15
|
-
* @returns {JSX}
|
|
16
|
-
*/var WithTheme=function WithTheme(props){return
|
|
54
|
+
* @returns {JSX.Element}
|
|
55
|
+
*/var WithTheme=function WithTheme(props){return React.createElement(ThemeContext.Consumer,null,function(_ref2){var contexts=_ref2.contexts,themeContext=_objectWithoutProperties(_ref2,_excluded);return(// The contexts are left out in favor of other HOCs.
|
|
17
56
|
React.createElement(WrappedComponent,_extends({},getInjectedProps(themeContext,options.prop),props)));});};var displayName=WrappedComponent.displayName||WrappedComponent.name||'Component';WithTheme.displayName="WithTheme(".concat(displayName,")");return WithTheme;}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
function _extends(){_extends=Object.assign||function(target){for(var i=1;i<arguments.length;i++){var source=arguments[i];for(var key in source){if(Object.prototype.hasOwnProperty.call(source,key)){target[key]=source[key];}}}return target;};return _extends.apply(this,arguments);}import React from'react';import{useThemeResources,useThemeComponents,useThemeWidgets}from'@shopgate/engage/core/hooks';/**
|
|
2
|
+
* HOC that injects the value of the ThemeResources context as a prop called `themeResources`.
|
|
3
|
+
* The context provides access to different groups of React components provided by the theme.
|
|
4
|
+
* @param {React.ComponentType<any>} WrappedComponent The wrapped component
|
|
5
|
+
* @returns {React.FC<any>}
|
|
6
|
+
*/export var withThemeResources=function withThemeResources(WrappedComponent){return function ThemeResourcesWrapper(props){var themeResources=useThemeResources();return React.createElement(WrappedComponent,_extends({},props,{themeResources:themeResources}));};};/**
|
|
7
|
+
* HOC that injects the `components` value of the ThemeResources context as a prop called
|
|
8
|
+
* `themeComponents`.
|
|
9
|
+
* @param {React.ComponentType<any>} WrappedComponent The wrapped component
|
|
10
|
+
* @returns {React.FC<any>}
|
|
11
|
+
*/export var withThemeComponents=function withThemeComponents(WrappedComponent){return function ThemeResourcesWrapper(props){var themeComponents=useThemeComponents();return React.createElement(WrappedComponent,_extends({},props,{themeComponents:themeComponents}));};};/**
|
|
12
|
+
* HOC that injects the `widgets` value of the ThemeResources context as a prop called
|
|
13
|
+
* `themeWidgets`.
|
|
14
|
+
* @param {React.ComponentType<any>} WrappedComponent The wrapped component
|
|
15
|
+
* @returns {React.FC<any>}
|
|
16
|
+
*/export var withThemeWidgets=function withThemeWidgets(WrappedComponent){return function ThemeResourcesWrapper(props){var themeWidgets=useThemeWidgets();return React.createElement(WrappedComponent,_extends({},props,{themeWidgets:themeWidgets}));};};
|
|
@@ -10,4 +10,4 @@ function _extends(){_extends=Object.assign||function(target){for(var i=1;i<argum
|
|
|
10
10
|
* The actual HOC.
|
|
11
11
|
* @param {Object} props The component props.
|
|
12
12
|
* @returns {JSX}
|
|
13
|
-
*/var WithWidgetSettings=function WithWidgetSettings(props){var settings=useWidgetSettings(widgetId,index);return
|
|
13
|
+
*/var WithWidgetSettings=function WithWidgetSettings(props){var settings=useWidgetSettings(widgetId,index);return React.createElement(WrappedComponent,_extends({widgetSettings:settings},props));};var displayName=WrappedComponent.displayName||WrappedComponent.name||'Component';WithWidgetSettings.displayName="WithWidgetSettings(".concat(displayName,")");return WithWidgetSettings;}
|
|
@@ -8,4 +8,4 @@ function _extends(){_extends=Object.assign||function(target){for(var i=1;i<argum
|
|
|
8
8
|
* The actual HOC.
|
|
9
9
|
* @param {Object} props The component props.
|
|
10
10
|
* @returns {JSX}
|
|
11
|
-
*/var WithWidgetStyles=function WithWidgetStyles(props){var styles=useWidgetStyles(widgetId,index);return
|
|
11
|
+
*/var WithWidgetStyles=function WithWidgetStyles(props){var styles=useWidgetStyles(widgetId,index);return React.createElement(WrappedComponent,_extends({widgetStyles:styles},props));};var displayName=WrappedComponent.displayName||WrappedComponent.name||'Component';WithWidgetStyles.displayName="WithWidgetStyles(".concat(displayName,")");return WithWidgetStyles;}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export{default as useLongPress}from"./useLongPress";export{default as useScrollDirectionChange}from"./useScrollDirectionChange";
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
import { MouseEvent as ReactMouseEvent, TouchEvent as ReactTouchEvent } from 'react';
|
|
2
|
+
|
|
3
|
+
export interface LongPressHandlers {
|
|
4
|
+
/**
|
|
5
|
+
* Attach to `onMouseDown` event.
|
|
6
|
+
*/
|
|
7
|
+
onMouseDown: (e: ReactMouseEvent | TouchEvent) => void;
|
|
8
|
+
|
|
9
|
+
/**
|
|
10
|
+
* Attach to `onTouchStart` event.
|
|
11
|
+
*/
|
|
12
|
+
onTouchStart: (e: ReactTouchEvent | TouchEvent) => void;
|
|
13
|
+
|
|
14
|
+
/**
|
|
15
|
+
* Attach to `onMouseUp` event.
|
|
16
|
+
*/
|
|
17
|
+
onMouseUp: (e: ReactMouseEvent | TouchEvent) => void;
|
|
18
|
+
|
|
19
|
+
/**
|
|
20
|
+
* Attach to `onMouseLeave` event.
|
|
21
|
+
*/
|
|
22
|
+
onMouseLeave: (e: ReactMouseEvent | TouchEvent) => void;
|
|
23
|
+
|
|
24
|
+
/**
|
|
25
|
+
* Attach to `onTouchEnd` event.
|
|
26
|
+
*/
|
|
27
|
+
onTouchEnd: (e: ReactTouchEvent | TouchEvent) => void;
|
|
28
|
+
|
|
29
|
+
/**
|
|
30
|
+
* Attach to `onContextMenu` event to prevent the native context menu.
|
|
31
|
+
*/
|
|
32
|
+
onContextMenu: (e: MouseEvent) => void;
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
export interface UseLongPressOptions {
|
|
36
|
+
/**
|
|
37
|
+
* Duration in milliseconds to trigger long press.
|
|
38
|
+
* @default 1000
|
|
39
|
+
*/
|
|
40
|
+
threshold?: number;
|
|
41
|
+
|
|
42
|
+
/**
|
|
43
|
+
* Called when the press starts.
|
|
44
|
+
*/
|
|
45
|
+
onStart?: (e: ReactMouseEvent | ReactTouchEvent) => void;
|
|
46
|
+
|
|
47
|
+
/**
|
|
48
|
+
* Called when the long press completes.
|
|
49
|
+
*/
|
|
50
|
+
onFinish?: (e: ReactMouseEvent | ReactTouchEvent) => void;
|
|
51
|
+
|
|
52
|
+
/**
|
|
53
|
+
* Called when the press is cancelled before the threshold.
|
|
54
|
+
*/
|
|
55
|
+
onCancel?: (e: ReactMouseEvent | ReactTouchEvent) => void;
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
/**
|
|
59
|
+
* Custom hook to handle long press interactions.
|
|
60
|
+
*
|
|
61
|
+
* @param callback Function to call on long press.
|
|
62
|
+
* @param options Configuration and lifecycle callbacks.
|
|
63
|
+
* @returns An object containing event handlers for mouse and touch events.
|
|
64
|
+
*/
|
|
65
|
+
export default function useLongPress(
|
|
66
|
+
callback: (e: ReactMouseEvent | ReactTouchEvent) => void,
|
|
67
|
+
options?: UseLongPressOptions
|
|
68
|
+
): LongPressHandlers;
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
// @ts-check
|
|
2
|
+
import{useRef,useCallback}from'react';/** @typedef {import('./useLongPress').LongPressHandlers} LongPressHandlers */ /** @typedef {import('./useLongPress').UseLongPressOptions} UseLongPressOptions */ /**
|
|
3
|
+
* Prevents the default context menu from appearing on long press.
|
|
4
|
+
* @param {MouseEvent} e The event object.
|
|
5
|
+
*/var preventContextMenu=function preventContextMenu(e){e.preventDefault();};// eslint-disable-next-line valid-jsdoc
|
|
6
|
+
/**
|
|
7
|
+
* Custom hook to handle long press interactions.
|
|
8
|
+
*
|
|
9
|
+
* @param {(e: Event) => void} callback - Function to call on long press.
|
|
10
|
+
* @param {UseLongPressOptions} [options={}] - Configuration and lifecycle callbacks.
|
|
11
|
+
* @returns {LongPressHandlers} An object containing event handlers for mouse and touch events.
|
|
12
|
+
*/export default function useLongPress(callback){var _ref=arguments.length>1&&arguments[1]!==undefined?arguments[1]:{},_ref$threshold=_ref.threshold,threshold=_ref$threshold===void 0?1000:_ref$threshold,onStart=_ref.onStart,onFinish=_ref.onFinish,onCancel=_ref.onCancel;var timerRef=useRef(null);var triggeredRef=useRef(false);var start=useCallback(function(e){if(onStart)onStart(e);triggeredRef.current=false;timerRef.current=setTimeout(function(){callback(e);triggeredRef.current=true;if(onFinish)onFinish(e);},threshold);},[onStart,threshold,callback,onFinish]);var cancel=useCallback(function(e){clearTimeout(timerRef.current);if(!triggeredRef.current&&onCancel){onCancel(e);}},[onCancel]);return{onMouseDown:start,onTouchStart:start,onMouseUp:cancel,onMouseLeave:cancel,onTouchEnd:cancel,// prevents right-click or long-press menu
|
|
13
|
+
onContextMenu:preventContextMenu};}
|