@shopgate/engage 7.27.3-alpha.17 → 7.27.3-alpha.19
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 +9 -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 +69 -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 +19 -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/usePressHandler.js +38 -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 +22 -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 +19 -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 +28 -18
- package/page/action-creators/index.js +22 -0
- package/page/actions/index.js +1 -0
- package/page/components/NotFound.js +3 -0
- package/page/components/Widgets/Overlay.js +51 -0
- package/page/components/Widgets/Tooltip.js +22 -0
- package/page/components/Widgets/Widget.js +15 -0
- package/page/components/Widgets/WidgetContext.d.ts +42 -0
- package/page/components/Widgets/WidgetContext.js +9 -0
- package/page/components/Widgets/WidgetProvider.js +8 -0
- package/page/components/Widgets/Widgets.js +11 -0
- package/page/components/Widgets/WidgetsPreviewContext.js +9 -0
- package/page/components/Widgets/WidgetsPreviewProvider.js +8 -0
- package/page/components/Widgets/constants.js +4 -0
- package/page/components/Widgets/events.js +23 -0
- package/page/components/Widgets/helpers.js +23 -0
- package/page/components/Widgets/hooks.js +69 -0
- package/page/components/Widgets/index.js +1 -0
- package/page/components/Widgets/types.d.ts +127 -0
- package/page/components/index.js +1 -0
- package/page/constants/actionTypes.js +1 -0
- package/page/constants/index.js +5 -1
- package/page/hooks/index.d.ts +60 -0
- package/page/hooks/index.js +25 -0
- package/page/index.js +1 -4
- package/page/reducers/index.js +6 -0
- package/page/selectors/index.js +53 -0
- package/page/subscriptions/index.js +4 -0
- package/page/widgets/HTML/HTML.js +5 -0
- package/page/widgets/HTML/hooks.js +12 -0
- package/page/widgets/HTML/index.js +1 -0
- package/page/widgets/Placeholder/Placeholder.js +5 -0
- package/page/widgets/Placeholder/hooks.js +12 -0
- package/page/widgets/Placeholder/index.js +1 -0
- package/page/widgets/ProductList/ProductList.js +5 -0
- package/page/widgets/ProductList/hooks.js +25 -0
- package/page/widgets/ProductList/index.js +1 -0
- package/page/widgets/ProductSlider/ProductSlider.js +4 -0
- package/page/widgets/ProductSlider/hooks.js +27 -0
- package/page/widgets/ProductSlider/index.js +1 -0
- package/page/widgets/index.js +1 -0
- package/page/widgets/widgets.json +14 -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/ProductGrid/components/Item/components/ItemDetails/index.js +8 -0
- package/product/components/ProductGrid/components/Item/components/ItemDetails/spec.js +1 -0
- package/product/components/ProductGrid/components/Item/components/ItemDiscount/index.js +5 -0
- package/product/components/ProductGrid/components/Item/components/ItemFavoritesButton/index.js +5 -0
- package/product/components/ProductGrid/components/Item/components/ItemFavoritesButton/spec.js +1 -0
- package/product/components/ProductGrid/components/Item/components/ItemImage/index.js +5 -0
- package/product/components/ProductGrid/components/Item/components/ItemImage/spec.js +1 -0
- package/product/components/ProductGrid/components/Item/components/ItemName/index.js +5 -0
- package/product/components/ProductGrid/components/Item/components/ItemName/spec.js +1 -0
- package/product/components/ProductGrid/components/Item/components/ItemPrice/index.js +5 -0
- package/product/components/ProductGrid/components/Item/components/ItemPrice/spec.js +1 -0
- package/product/components/ProductGrid/components/Item/index.js +7 -0
- package/product/components/ProductGrid/components/Iterator/index.js +5 -0
- package/product/components/ProductGrid/components/Layout/index.js +5 -0
- package/product/components/ProductGrid/index.js +22 -0
- package/product/components/ProductGrid/spec.js +1 -0
- package/product/components/ProductGridPrice/index.js +4 -4
- 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 +4 -3
- 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/color.js +23 -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.d.ts +17 -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/styles/theme/createTheme/createBreakpoints.d.ts +114 -0
- package/styles/theme/createTheme/createBreakpoints.js +41 -0
- package/styles/theme/createTheme/createSpacing.d.ts +23 -0
- package/styles/theme/createTheme/createSpacing.js +14 -0
- package/styles/theme/createTheme/index.d.ts +19 -0
- package/styles/theme/createTheme/index.js +5 -0
- package/styles/theme/createTheme/transitions.d.ts +100 -0
- package/styles/theme/createTheme/transitions.js +26 -0
- package/styles/theme/createTheme/zIndex.d.ts +12 -0
- package/styles/theme/createTheme/zIndex.js +3 -0
- package/styles/theme/hooks/index.d.ts +4 -0
- package/styles/theme/hooks/index.js +1 -0
- package/styles/theme/hooks/useActiveBreakpoint.d.ts +18 -0
- package/styles/theme/hooks/useActiveBreakpoint.js +4 -0
- package/styles/theme/hooks/useMediaQuery.d.ts +33 -0
- package/styles/theme/hooks/useMediaQuery.js +20 -0
- package/styles/theme/hooks/useResponsiveValue.d.ts +27 -0
- package/styles/theme/hooks/useResponsiveValue.js +4 -0
- package/styles/theme/hooks/useTheme.d.ts +8 -0
- package/styles/theme/hooks/useTheme.js +4 -0
- package/styles/theme/index.d.ts +8 -0
- package/styles/theme/index.js +1 -0
- package/styles/theme/providers/ActiveBreakpointProvider.d.ts +21 -0
- package/styles/theme/providers/ActiveBreakpointProvider.js +13 -0
- package/styles/theme/providers/ThemeProvider.d.ts +18 -0
- package/styles/theme/providers/ThemeProvider.js +7 -0
- package/styles/tss/index.js +3 -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 +11 -6
- 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
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import React,{Fragment}from'react';import{CART_PATH}from'@shopgate/pwa-common-commerce/cart/constants';import CardListItem from'@shopgate/pwa-ui-shared/CardList/components/Item';import{MessageBar,ResponsiveContainer}from'@shopgate/engage/components';import{getPageSettings}from'@shopgate/engage/core/config';import{messagesContainerCard,messagesCard,messagesContainerLine,messagesLine}from"./CartItem.style";import{CartItemProductLayout}from"./CartItemProductLayout";import{CartItemProductLayoutWide}from"./CartItemProductLayoutWide";import{noGap}from"./CartItemProduct.style";import{useCartItemProduct}from"./CartItem.hooks";import CartItemSubstitution from"./CartItemSubstitution";var messageStyles={card:{container:messagesContainerCard,message:messagesCard},line:{container:messagesContainerLine,message:messagesLine}};/**
|
|
2
|
+
* The CartProduct component.
|
|
3
|
+
* @param {Object} props The component props.
|
|
4
|
+
* @returns {JSX}
|
|
5
|
+
*/var CartItemProduct=function CartItemProduct(){var _useCartItemProduct=useCartItemProduct(),messages=_useCartItemProduct.messages,cartItemRef=_useCartItemProduct.cartItemRef,isEditable=_useCartItemProduct.isEditable;var _getPageSettings=getPageSettings(CART_PATH),_getPageSettings$cart=_getPageSettings.cartItemsDisplay,cartItemsDisplay=_getPageSettings$cart===void 0?'line':_getPageSettings$cart;return React.createElement(CardListItem,{className:cartItemsDisplay==='card'?noGap:null},React.createElement("div",{ref:cartItemRef,"data-test-id":"cartItem"},React.createElement(ResponsiveContainer,{appAlways:true,breakpoint:"<=xs"},React.createElement(Fragment,null,messages.length>0&&React.createElement(MessageBar,{messages:messages,classNames:messageStyles[cartItemsDisplay]}),React.createElement(CartItemProductLayout,null))),React.createElement(ResponsiveContainer,{webOnly:true,breakpoint:">xs"},React.createElement(CartItemProductLayoutWide,null)),React.createElement(CartItemSubstitution,{editable:isEditable})));};export default CartItemProduct;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{css}from'glamor';export var noGap=css({marginBottom:0,background:'none'}).toString();
|
|
@@ -0,0 +1,6 @@
|
|
|
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,{useMemo}from'react';import classNames from'classnames';import{Grid,Link,ProductProperties,SurroundPortals,ConditionalWrapper,I18n}from'@shopgate/engage/components';import{CART_ITEM_IMAGE,CART_ITEM_LINK,CART_ITEM_PROPERTIES,CART_ITEM_QUANTITY_PICKER}from'@shopgate/engage/cart';import{showTaxDisclaimer}from'@shopgate/engage/market';import{bin2hex}from'@shopgate/engage/core/helpers';import{useWidgetSettings}from'@shopgate/engage/core/hooks';import{ProductImage,PriceInfo,ITEM_PATH}from'@shopgate/engage/product';import{CartItemProductChangeLocation,CartChangeFulfillmentMethod}from'@shopgate/engage/locations';import{getLineItemActiveStatus}from'@shopgate/engage/orders';import{CartItemQuantityPicker}from"./CartItemQuantityPicker";import{CartItemProductTitle}from"./CartItemProductTitle";import CartItemProductOrderDetails from"./CartItemProductOrderDetails";import CartItemProductPriceList from"./CartItemProductPriceList";import{useCartItem,useCartItemProduct}from"./CartItem.hooks";import styles from"./CartItemProductLayout.style";/**
|
|
2
|
+
* The Cart Product Layout component.
|
|
3
|
+
* @returns {JSX.Element}
|
|
4
|
+
*/export function CartItemProductLayout(){// Added with PWA 6 - CCP-2372
|
|
5
|
+
var _useWidgetSettings=useWidgetSettings('@shopgate/engage/components/TaxDisclaimer'),show=_useWidgetSettings.show;// use widget setting if set to true/false, otherwise use market logic
|
|
6
|
+
var showDisclaimer=typeof show==='boolean'?show:showTaxDisclaimer;var _useCartItem=useCartItem(),registerFulfillmentAction=_useCartItem.registerFulfillmentAction,isOrderDetails=_useCartItem.isOrderDetails,isCheckoutConfirmation=_useCartItem.isCheckoutConfirmation;var context=useCartItemProduct();var cartItem=context.cartItem,product=context.product,currency=context.currency,editMode=context.editMode,handleUpdate=context.handleUpdate,handleRemove=context.handleRemove,toggleEditMode=context.toggleEditMode,isEditable=context.isEditable,isLinkable=context.isLinkable,allowQuantityChange=context.allowQuantityChange;var portalProps=useMemo(function(){return _extends({context:{type:context.type,cartItemId:context.cartItemId,product:context.product}},context,{isOrderDetails:isOrderDetails,isCheckoutConfirmation:isCheckoutConfirmation,quantity:cartItem.quantity,handleDelete:handleRemove});},[cartItem.quantity,context,handleRemove,isCheckoutConfirmation,isOrderDetails]);var isActive=!isOrderDetails?true:getLineItemActiveStatus(cartItem===null||cartItem===void 0?void 0:cartItem.status,cartItem===null||cartItem===void 0?void 0:cartItem.subStatus);var showLineItemPromotions=useMemo(function(){if(isOrderDetails||isCheckoutConfirmation){return false;}return((cartItem===null||cartItem===void 0?void 0:cartItem.appliedPromotions)||[]).length>0;},[cartItem,isCheckoutConfirmation,isOrderDetails]);return React.createElement(React.Fragment,null,React.createElement(Grid,{className:classNames(styles.item,_defineProperty({},styles.itemInactive,!isActive))},React.createElement(Grid.Item,{className:styles.content,grow:1},React.createElement(SurroundPortals,{portalName:CART_ITEM_LINK,portalProps:portalProps},React.createElement(CartItemProductTitle,{value:product.name,productId:product.id})),React.createElement(Grid,{className:styles.info},React.createElement(Grid.Item,{grow:1,className:styles.properties},React.createElement(SurroundPortals,{portalName:CART_ITEM_PROPERTIES,portalProps:portalProps},React.createElement(ProductProperties,{properties:product.properties,lineClamp:2})),isOrderDetails&&React.createElement(CartItemProductOrderDetails,null)),React.createElement(Grid.Item,{grow:1,className:styles.price},isOrderDetails&&React.createElement(I18n.Text,{string:"cart.subtotal",className:styles.orderDetailsSubtotalLabel}),!showLineItemPromotions&&React.createElement(React.Fragment,null,React.createElement(CartItemProductPriceList,{isSubtotal:true}),React.createElement(PriceInfo,{product:product,currency:currency,className:styles.priceInfo}))),showDisclaimer&&React.createElement(Grid.Item,{className:styles.disclaimerSpacer,grow:0,shrink:0})),showLineItemPromotions&&React.createElement(Grid,{className:classNames(styles.info,styles.promotionLine)},React.createElement(Grid.Item,null),React.createElement(Grid.Item,{className:styles.promotionLineItem},React.createElement(CartItemProductPriceList,{isSubtotal:true,showLabels:true}),React.createElement(PriceInfo,{product:product,currency:currency,className:styles.priceInfo})))),React.createElement(Grid.Item,{className:styles.leftColumn},React.createElement("div",{className:styles.image,"aria-hidden":true},React.createElement(ConditionalWrapper,{condition:isEditable&&isLinkable,wrapper:function wrapper(children){return React.createElement(Link,{tagName:"a",href:"".concat(ITEM_PATH,"/").concat(bin2hex(product.id))},children);}},React.createElement(SurroundPortals,{portalName:CART_ITEM_IMAGE,portalProps:portalProps},React.createElement(ProductImage,{src:product.featuredImageBaseUrl||product.featuredImageUrl})))),!isOrderDetails&&allowQuantityChange&&React.createElement(SurroundPortals,{portalName:CART_ITEM_QUANTITY_PICKER,portalProps:portalProps},React.createElement(CartItemQuantityPicker,{unit:product.unit,hasCatchWeight:product.hasCatchWeight,quantity:cartItem.quantity,editMode:editMode,onChange:handleUpdate,onToggleEditMode:toggleEditMode,disabled:!isEditable})))),React.createElement(CartItemProductChangeLocation,{cartItem:cartItem,registerAction:registerFulfillmentAction}),React.createElement(CartChangeFulfillmentMethod,{cartItem:cartItem,registerAction:registerFulfillmentAction}));}
|
|
@@ -0,0 +1 @@
|
|
|
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;}import{css}from'glamor';import{themeConfig}from'@shopgate/pwa-common/helpers/config';var variables=themeConfig.variables,colors=themeConfig.colors;var leftColumnWidth=72;var item=css({padding:variables.gap.big,/** Row is DOM reversed for a11y navigation */flexDirection:'row-reverse'}).toString();var leftColumn=css({width:leftColumnWidth}).toString();var image=css({background:colors.placeholder,marginBottom:variables.gap.small*1.25,height:leftColumnWidth,width:leftColumnWidth}).toString();var content=css({display:'flex',flexDirection:'column',paddingLeft:variables.gap.big}).toString();var info=css({fontSize:'0.875rem',marginTop:variables.gap.big*0.875,marginBottom:variables.gap.small*0.25,flexGrow:1,alignItems:'flex-end',justifyContent:'space-between'}).toString();var promotionLine=css({marginTop:0}).toString();var promotionLineItem=css({width:'100%'}).toString();var priceInfo=css({textAlign:'right',wordBreak:'break-word'}).toString();var disclaimerSpacer=css({width:10}).toString();var price=css({display:'flex',marginLeft:'1em',alignItems:'flex-end',flexDirection:'column'}).toString();var properties=css(_defineProperty({wordBreak:'break-word',alignSelf:'flex-start',fontSize:'0.875rem',color:"var(--color-text-medium-emphasis, ".concat(colors.shade6,")"),lineHeight:1.3},":not(:empty) + .".concat(price),{textAlign:'right',maxWidth:'40%'})).toString();var itemInactive=css(_defineProperty({' *':{color:'var(--color-text-low-emphasis) !important'}}," .".concat(image),{opacity:0.7})).toString();var orderDetailsSubtotalLabel=css({color:"var(--color-text-low-emphasis, ".concat(colors.shade9,")")}).toString();export default{item:item,itemInactive:itemInactive,leftColumn:leftColumn,image:image,content:content,info:info,promotionLine:promotionLine,promotionLineItem:promotionLineItem,disclaimerSpacer:disclaimerSpacer,priceInfo:priceInfo,price:price,properties:properties,orderDetailsSubtotalLabel:orderDetailsSubtotalLabel};
|
|
@@ -0,0 +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;}import React,{Fragment}from'react';import classNames from'classnames';import{TextLink,ProductProperties,QuantityLabel,ConditionalWrapper,MessageBar,SurroundPortals}from'@shopgate/engage/components';import{ProductImage,CartUnitQuantityPicker,PriceInfo,ProductName,ITEM_PATH}from'@shopgate/engage/product';import{CART_ITEM_NAME,CART_ITEM_QUANTITY_PICKER}from'@shopgate/pwa-common-commerce/cart';import{bin2hex}from'@shopgate/engage/core';import{getLineItemActiveStatus}from'@shopgate/engage/orders';import{CartContextMenuChangeFulfillment}from'@shopgate/engage/locations';import CartItemProductPriceList from"./CartItemProductPriceList";import{CartItemProductLayoutWideRemoveItem}from"./CartItemProductLayoutWideRemoveItem";import{CartItemProductLayoutWideFulfillmentLabel}from"./CartItemProductLayoutWideFulfillmentLabel";import CartItemProductLayoutWideOrderDetails from"./CartItemProductLayoutWideOrderDetails";import{CartItemProductPriceCaption}from"./CartItemProductPriceCaption";import{useCartItem,useCartItemProduct}from"./CartItem.hooks";import{container,containerInactive,imageColumn,detailsColumn,priceColumnWide,productName,productProperties,column,quantityPicker,quantityPickerDisabled,price,priceInfo,priceListEntry,priceListPromo,contextMenu,messageContainer,messageContainerRope}from"./CartItemProductLayoutWide.style";/**
|
|
2
|
+
* @param {Object} props The component properties.
|
|
3
|
+
* @returns {JSX}
|
|
4
|
+
*/var CartItemProductLayoutWide=function CartItemProductLayoutWide(){var _useCartItem=useCartItem(),merchantFulfillmentMethodsCount=_useCartItem.merchantFulfillmentMethodsCount,isOrderDetails=_useCartItem.isOrderDetails,cartHasLineItemPromotions=_useCartItem.cartHasLineItemPromotions;var context=useCartItemProduct();var cartItem=context.cartItem,product=context.product,currency=context.currency,handleUpdate=context.handleUpdate,isEditable=context.isEditable,isLinkable=context.isLinkable,allowQuantityChange=context.allowQuantityChange,messages=context.messages;var hasUnitWithDecimals=product.unit&&product.hasCatchWeight||false;var isActive=!isOrderDetails?true:getLineItemActiveStatus(cartItem===null||cartItem===void 0?void 0:cartItem.status,cartItem===null||cartItem===void 0?void 0:cartItem.subStatus);return React.createElement(Fragment,null,React.createElement("div",{className:classNames(container,_defineProperty({},containerInactive,!isActive))},React.createElement("div",{className:imageColumn},React.createElement(ProductImage,{src:product.featuredImageBaseUrl||product.featuredImageUrl})),React.createElement("div",{className:detailsColumn},React.createElement(ConditionalWrapper,{condition:isEditable&&isLinkable,wrapper:function wrapper(children){return React.createElement(TextLink,{href:"".concat(ITEM_PATH,"/").concat(bin2hex(product.id))},children);}},React.createElement(ProductName,{name:product.name,className:productName,portalName:CART_ITEM_NAME,portalProps:context,testId:product.name})),React.createElement(ProductProperties,{className:productProperties,properties:product.properties,lineClamp:2}),!isOrderDetails&&React.createElement(CartItemProductLayoutWideFulfillmentLabel,null)),React.createElement("div",{className:cartHasLineItemPromotions?priceColumnWide:column},React.createElement(CartItemProductPriceList,{cartItem:cartItem,classes:{price:price,priceStriked:price,entry:priceListEntry,promo:priceListPromo}}),React.createElement(PriceInfo,{product:product,currency:currency,className:priceInfo}),React.createElement(CartItemProductPriceCaption,null)),isOrderDetails&&React.createElement(CartItemProductLayoutWideOrderDetails,null),React.createElement("div",{className:column},isEditable&&allowQuantityChange?React.createElement(SurroundPortals,{portalName:CART_ITEM_QUANTITY_PICKER,portalProps:{product:product,cartItem:cartItem,isOrderDetails:isOrderDetails,handleUpdate:handleUpdate,isEditable:isEditable}},React.createElement(CartUnitQuantityPicker,{productId:product.id,value:isOrderDetails?cartItem.orderedQuantity:cartItem.quantity,unit:product.unit,hasCatchWeight:product.hasCatchWeight,onChange:handleUpdate,classNames:{withDecimals:quantityPicker,withoutDecimals:quantityPicker}})):React.createElement(QuantityLabel,{className:quantityPickerDisabled,value:isOrderDetails?cartItem.orderedQuantity:cartItem.quantity,unit:hasUnitWithDecimals?product.unit:null,maxDecimals:hasUnitWithDecimals?2:0}),isEditable&&React.createElement(CartItemProductLayoutWideRemoveItem,null)),React.createElement("div",{className:column},React.createElement(CartItemProductPriceList,{isSubtotal:true,cartItem:cartItem,classes:{price:price,priceStriked:price,entry:priceListEntry,promo:priceListPromo}}),React.createElement(CartItemProductPriceCaption,null)),isEditable&&merchantFulfillmentMethodsCount>1&&React.createElement("div",{className:contextMenu},React.createElement(CartContextMenuChangeFulfillment,{cartItem:cartItem}))),messages.length>0&&React.createElement(MessageBar,{messages:messages,showIcons:true,classNames:{container:cartItem.fulfillment?messageContainerRope:messageContainer}}));};export{CartItemProductLayoutWide};
|
|
@@ -0,0 +1 @@
|
|
|
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;}import{css}from'glamor';import{themeConfig}from'@shopgate/pwa-common/helpers/config';var variables=themeConfig.variables;export var container=css({display:'flex',flexDirection:'row',justifyContent:'space-between',padding:variables.gap.big}).toString();export var imageColumn=css({width:120,height:120,marginRight:variables.gap.small,flexShrink:0,flexGrow:0});export var column=css({display:'flex',alignItems:'center',flexDirection:'column',flexShrink:1,flexGrow:1,flexBasis:0,padding:"0 ".concat(variables.gap.small,"px"),':last-child':{paddingRight:0}});export var detailsColumn=css(column,{flexShrink:1,flexGrow:3,alignItems:'flex-start'});export var priceColumnWide=css(column,{flexGrow:4,alignItems:'flex-end'});export var locationColumn=css(column,{fontSize:'1.25rem',lineHeight:'1.625rem',fontWeight:500,flexGrow:2});export var statusColumn=css(column,{fontSize:'1.25rem',lineHeight:'1.625rem'});export var productName=css({fontSize:'1.25rem',lineHeight:'1.5rem',fontWeight:500,wordBreak:['keep-all','break-word'],hyphens:'auto'}).toString();export var productProperties=css({paddingTop:variables.gap.small,color:'var(--color-text-low-emphasis)',fontSize:'1rem'}).toString();export var quantityPicker=css({width:140}).toString();export var quantityPickerDisabled=css({padding:"0 ".concat(variables.gap.small,"px"),textAlign:'center',fontSize:'1.25rem',lineHeight:'1.625rem',height:28,width:'100%',fontWeight:500,color:'var(--color-text-high-emphasis)',whiteSpace:'nowrap'}).toString();export var containerInactive=css(_defineProperty(_defineProperty({color:'var(--color-text-low-emphasis)'}," .".concat(quantityPickerDisabled),{color:'var(--color-text-low-emphasis)'})," .".concat(imageColumn),{opacity:0.7})).toString();export var price=css({fontSize:'1.25rem !important',lineHeight:'1.625rem !important'}).toString();export var priceListEntry=css({flexDirection:'column-reverse !important'}).toString();export var priceListPromo=css({paddingRight:0,alignSelf:'flex-end'}).toString();export var priceInfo=css({wordBreak:'break-word',fontSize:'0.75rem',lineHeight:'0.875rem',color:'var(--color-text-low-emphasis)',padding:"".concat(variables.gap.xsmall,"px 0")}).toString();export var contextMenu=css({marginTop:"-".concat(variables.gap.xsmall*3,"px"),marginRight:"-".concat(variables.gap.big,"px")}).toString();export var messageContainer=css({marginTop:0}).toString();export var messageContainerRope=css({marginTop:0,marginBottom:0}).toString();
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import React from'react';import{BOPIS,ROPIS}from'@shopgate/engage/locations';import{i18n}from'@shopgate/engage/core';import{label}from"./CartItemProductLayoutWideFulfillmentLabel.style";import{useCartItemProduct}from"./CartItem.hooks";/**
|
|
2
|
+
* @param {Object} props The component props
|
|
3
|
+
* @returns {JSX}
|
|
4
|
+
*/var CartItemProductLayoutWideFulfillmentLabel=function CartItemProductLayoutWideFulfillmentLabel(){var _cartItem$fulfillment;var _useCartItemProduct=useCartItemProduct(),cartItem=_useCartItemProduct.cartItem;var fulfillmentMethod=(cartItem===null||cartItem===void 0?void 0:(_cartItem$fulfillment=cartItem.fulfillment)===null||_cartItem$fulfillment===void 0?void 0:_cartItem$fulfillment.method)||null;var suffix='direct_ship';if(fulfillmentMethod===BOPIS){suffix='bopis';}else if(fulfillmentMethod===ROPIS){suffix='ropis';}return React.createElement("div",{className:label},i18n.text("locations.method.".concat(suffix)));};export{CartItemProductLayoutWideFulfillmentLabel};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{css}from'glamor';import{themeConfig}from'@shopgate/pwa-common/helpers/config';var colors=themeConfig.colors;export var label=css({color:"var(--color-secondary, ".concat(colors.accent,")"),fontSize:'0.875rem',marginTop:'auto'});
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
import React,{Fragment}from'react';import{QuantityLabel}from'@shopgate/engage/components';import{getTranslatedLineItemStatus}from'@shopgate/engage/orders';import{useCartItem,useCartItemProduct}from"./CartItem.hooks";import{column,locationColumn,statusColumn,quantityPickerDisabled}from"./CartItemProductLayoutWide.style";/**
|
|
2
|
+
* @returns {JSX}
|
|
3
|
+
*/var CartItemProductLayoutWide=function CartItemProductLayoutWide(){var _useCartItem=useCartItem(),location=_useCartItem.location,cartItem=_useCartItem.cartItem,cartIsDirectShipOnly=_useCartItem.cartIsDirectShipOnly;var _useCartItemProduct=useCartItemProduct(),product=_useCartItemProduct.product;var hasUnitWithDecimals=product.unit&&product.hasCatchWeight||false;return React.createElement(Fragment,null,!cartIsDirectShipOnly?React.createElement("div",{className:locationColumn},location===null||location===void 0?void 0:location.name):null,React.createElement("div",{className:statusColumn},getTranslatedLineItemStatus(cartItem===null||cartItem===void 0?void 0:cartItem.status,cartItem===null||cartItem===void 0?void 0:cartItem.subStatus)),React.createElement("div",{className:column},React.createElement(QuantityLabel,{className:quantityPickerDisabled,value:cartItem.quantity,unit:hasUnitWithDecimals?product.unit:null,maxDecimals:hasUnitWithDecimals?2:0})));};export default CartItemProductLayoutWide;
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import React from'react';import{RippleButton,I18n}from'@shopgate/engage/components';import{button,ripple}from"./CartItemProductLayoutWideRemoveItem.style";import{useCartItemProduct}from"./CartItem.hooks";/**
|
|
2
|
+
* @param {Object} props The component props
|
|
3
|
+
* @returns {JSX}
|
|
4
|
+
*/var CartItemProductLayoutWideRemoveItem=function CartItemProductLayoutWideRemoveItem(){var _useCartItemProduct=useCartItemProduct(),handleRemove=_useCartItemProduct.handleRemove;return React.createElement(RippleButton,{onClick:handleRemove,className:button,rippleClassName:ripple,type:"secondary",flat:true},React.createElement(I18n.Text,{string:"cart.remove_item"}));};export{CartItemProductLayoutWideRemoveItem};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{css}from'glamor';import{themeConfig}from'@shopgate/pwa-common/helpers/config';var variables=themeConfig.variables;export var button=css({fontSize:'0.875rem !important',letterSpacing:'0.05em',padding:"".concat(variables.gap.big,"px 0 !important"),' *':{padding:'0 !important'}}).toString();export var ripple=css({padding:0}).toString();
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
import React,{useMemo}from'react';import classNames from'classnames';import{QuantityLabel,I18n,Price}from'@shopgate/engage/components';import{getTranslatedLineItemStatus}from'@shopgate/engage/orders';import{CartItemProductPriceCaption}from"./CartItemProductPriceCaption";import{createCartItemPrices}from"../../cart.helpers";import{useCartItem,useCartItemProduct}from"./CartItem.hooks";import{quantityLabel,label,container,labelValue,fulfillmentLabel}from"./CartItemProductOrderDetails.style";/**
|
|
2
|
+
* @returns {JSX}
|
|
3
|
+
*/var CartItemProductOrderDetails=function CartItemProductOrderDetails(){var _useCartItem=useCartItem(),location=_useCartItem.location,cartItem=_useCartItem.cartItem,cartIsDirectShipOnly=_useCartItem.cartIsDirectShipOnly;var _useCartItemProduct=useCartItemProduct(),product=_useCartItemProduct.product,currency=_useCartItemProduct.currency;var hasUnitWithDecimals=product.unit&&product.hasCatchWeight||false;var unitPrice=useMemo(function(){var result=createCartItemPrices(cartItem).price;return result.slice(-1)[0].price;},[cartItem]);return React.createElement("ul",{className:container},!cartIsDirectShipOnly&&(location===null||location===void 0?void 0:location.name)?React.createElement("li",null,React.createElement(I18n.Text,{string:"cart.location",className:label}),React.createElement("span",{className:labelValue},location===null||location===void 0?void 0:location.name),React.createElement(CartItemProductPriceCaption,{className:fulfillmentLabel})):null,React.createElement("li",null,React.createElement(I18n.Text,{string:"cart.status",className:label}),React.createElement("span",{className:labelValue},getTranslatedLineItemStatus(cartItem===null||cartItem===void 0?void 0:cartItem.status,cartItem===null||cartItem===void 0?void 0:cartItem.subStatus))),React.createElement("li",null,React.createElement(I18n.Text,{string:"cart.fulfilled_quantity",className:label}),React.createElement(QuantityLabel,{className:classNames(quantityLabel,labelValue),value:cartItem.quantity,unit:hasUnitWithDecimals?product.unit:null,maxDecimals:hasUnitWithDecimals?2:0})),React.createElement("li",null,React.createElement(I18n.Text,{string:"cart.ordered_quantity",className:label}),React.createElement(QuantityLabel,{className:classNames(quantityLabel,labelValue),value:cartItem.orderedQuantity,unit:hasUnitWithDecimals?product.unit:null,maxDecimals:hasUnitWithDecimals?2:0})),React.createElement("li",null,React.createElement(I18n.Text,{string:"cart.price",className:label}),React.createElement(Price,{className:labelValue,currency:currency,taxDisclaimer:true,unitPrice:unitPrice,allowFree:true})));};export default CartItemProductOrderDetails;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{css}from'glamor';import{themeConfig}from'@shopgate/pwa-common/helpers/config';var variables=themeConfig.variables;export var container=css({paddingTop:variables.gap.small}).toString();export var quantityLabel=css({textAlign:'center',whiteSpace:'nowrap'}).toString();export var label=css({':after':{content:': '}}).toString();export var labelValue=css({fontWeight:500,display:'inline',color:'var(--color-text-medium-emphasis)'}).toString();export var fulfillmentLabel=css({fontSize:'inherit',':before':{content:' '}}).toString();
|
|
@@ -0,0 +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;}import React,{useMemo}from'react';import PropTypes from'prop-types';import classNames from'classnames';import{ROPIS}from// BOPIS,
|
|
2
|
+
'@shopgate/engage/locations';import{I18n}from'@shopgate/engage/components';import{useCartItemProduct}from"./CartItem.hooks";import{caption}from"./CartItemProductPriceCaption.style";/**
|
|
3
|
+
* @returns {JSX}
|
|
4
|
+
*/var CartItemProductPriceCaption=function CartItemProductPriceCaption(_ref){var className=_ref.className;var _useCartItemProduct=useCartItemProduct(),cartItem=_useCartItemProduct.cartItem;var label=useMemo(function(){var _cartItem$fulfillment;var labels=_defineProperty({},ROPIS,'cart.price_caption.reservation');var fulfillmentMethod=(cartItem===null||cartItem===void 0?void 0:(_cartItem$fulfillment=cartItem.fulfillment)===null||_cartItem$fulfillment===void 0?void 0:_cartItem$fulfillment.method)||null;return labels[fulfillmentMethod];},[cartItem]);if(!label){return null;}return React.createElement("span",{className:classNames(caption,className)},"(",React.createElement(I18n.Text,{string:label}),")");};CartItemProductPriceCaption.defaultProps={className:null};export{CartItemProductPriceCaption};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{css}from'glamor';import{themeConfig}from'@shopgate/pwa-common/helpers/config';var variables=themeConfig.variables;export var caption=css({fontSize:'0.75rem',lineHeight:'0.875rem',color:'var(--color-text-low-emphasis)',paddingTop:variables.gap.xsmall});
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import React,{useMemo}from'react';import PropTypes from'prop-types';import classNames from'classnames';import{css}from'glamor';import Price from'@shopgate/pwa-ui-shared/Price';import PriceStriked from'@shopgate/pwa-ui-shared/PriceStriked';import{useCartItemProduct,useCartItem}from"./CartItem.hooks";import{createCartItemPrices}from"../../cart.helpers";import CartItemProductPriceListPromotion from"./CartItemProductPriceListPromotion";var styles={price:css({fontSize:'1rem',fontWeight:500,marginLeft:'auto'}).toString(),priceStriked:css({fontSize:'.875rem',marginLeft:'auto'}).toString(),priceListEntry:css({display:'flex',flexDirection:'row',justifyContent:'flex-end',alignItems:'center'}).toString()};/**
|
|
2
|
+
* @param {Object} props The component props
|
|
3
|
+
* @returns {JSX}
|
|
4
|
+
*/var CartItemProductPriceList=function CartItemProductPriceList(_ref){var classes=_ref.classes,isSubtotal=_ref.isSubtotal,showLabels=_ref.showLabels;var _useCartItem=useCartItem(),isOrderDetails=_useCartItem.isOrderDetails,isCheckoutConfirmation=_useCartItem.isCheckoutConfirmation;var context=useCartItemProduct();var currency=context.currency,cartItem=context.cartItem;var prices=useMemo(function(){var _result;var result=createCartItemPrices(cartItem)[isSubtotal?'subtotal':'price'];// Not striked prices when the product is free or the cart is used to display an order
|
|
5
|
+
if(((_result=result[result.length-1])===null||_result===void 0?void 0:_result.price)===0||isOrderDetails||isCheckoutConfirmation){return result.slice(-1);}return result;},[cartItem,isCheckoutConfirmation,isOrderDetails,isSubtotal]);return React.createElement("ul",null,prices.map(function(_ref2,index){var price=_ref2.price,isCoupon=_ref2.isCoupon,isPromo=_ref2.isPromo;var isLast=index===prices.length-1;return(/* eslint-disable react/no-array-index-key */React.createElement("li",{key:"total_".concat(index),className:classNames(styles.priceListEntry,classes===null||classes===void 0?void 0:classes.entry)},(showLabels||!isSubtotal)&&React.createElement(CartItemProductPriceListPromotion,{isCoupon:isCoupon,isPromo:isPromo,className:classes===null||classes===void 0?void 0:classes.promo}),!isLast?React.createElement(PriceStriked,{className:classNames(styles.priceStriked,classes===null||classes===void 0?void 0:classes.priceStriked),value:price,currency:currency}):React.createElement(Price,{className:classNames(styles.price,classes===null||classes===void 0?void 0:classes.price),unitPrice:price,currency:currency,discounted:prices.length>1||price===0,taxDisclaimer:true,allowFree:true}))/* eslint-enable react/no-array-index-key */);}));};CartItemProductPriceList.defaultProps={isSubtotal:false,showLabels:false,classes:{price:null,priceStriked:null}};export default CartItemProductPriceList;
|
|
@@ -0,0 +1,10 @@
|
|
|
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;}import React,{useMemo,useContext,useCallback}from'react';import PropTypes from'prop-types';import{connect}from'react-redux';import{css}from'glamor';import classNames from'classnames';import{themeConfig}from'@shopgate/pwa-common/helpers/config';import{responsiveMediaQuery}from'@shopgate/engage/styles';import{showModal}from'@shopgate/engage/core';import{deleteCouponsFromCart}from'@shopgate/engage/cart';import{I18n,CrossIcon,InfoIcon}from'@shopgate/engage/components';import{CartContext}from"../../cart.context";import{useCartItem}from"./CartItem.hooks";var variables=themeConfig.variables;var styles={container:css({flex:'0 1 auto',color:'var(--color-secondary)',paddingRight:8}).toString(),deleteIcon:css(_defineProperty({backgroundColor:'#898989',color:'#fff',borderRadius:32,padding:4,marginRight:variables.gap.small,cursor:'pointer',fontSize:'0.75rem',display:'inline-flex'},responsiveMediaQuery('<=xs',{appAlways:true}),{padding:3})).toString(),infoIconWrapper:css(_defineProperty({cursor:'pointer',color:'var(--color-primary)',fontSize:'1.5rem',display:'inline-flex',verticalAlign:'bottom',paddingBottom:1,marginLeft:variables.gap.small},responsiveMediaQuery('<=xs',{appAlways:true}),{fontSize:'1.375rem',paddingBottom:0})).toString(),icon:css({display:'inline'}).toString(),loading:css({opacity:0.5}).toString()};/**
|
|
2
|
+
* @param {Function} dispatch The redux dispatch function.
|
|
3
|
+
* @return {Object} The extended component props.
|
|
4
|
+
*/var mapDispatchToProps=function mapDispatchToProps(dispatch){return{deleteCoupon:function deleteCoupon(couponCode){return dispatch(deleteCouponsFromCart([couponCode]));},showTextModal:function showTextModal(text){return dispatch(showModal({message:text,title:null,confirm:null,dismiss:'modal.ok'}));}};};/**
|
|
5
|
+
* @param {Object} props The component props
|
|
6
|
+
* @returns {JSX}
|
|
7
|
+
*/var PromotionalTextInfoIcon=function PromotionalTextInfoIcon(_ref){var text=_ref.text,showText=_ref.showText;var _useContext=useContext(CartContext),isLoading=_useContext.isLoading;if(!text){return null;}return React.createElement("span",{onClick:function onClick(){return showText(text);},onKeyDown:function onKeyDown(){return showText(text);},className:classNames(styles.infoIconWrapper,_defineProperty({},styles.loading,isLoading)),role:"button",tabIndex:0},React.createElement(InfoIcon,{className:styles.icon}));};PromotionalTextInfoIcon.defaultProps={text:null};/**
|
|
8
|
+
* @param {Object} props The component props
|
|
9
|
+
* @returns {JSX}
|
|
10
|
+
*/var CartItemProductPriceListPromotion=function CartItemProductPriceListPromotion(_ref2){var isCoupon=_ref2.isCoupon,isPromo=_ref2.isPromo,deleteCoupon=_ref2.deleteCoupon,showTextModal=_ref2.showTextModal,className=_ref2.className;var _useCartItem=useCartItem(),_useCartItem$cartItem=_useCartItem.cartItem,cartItem=_useCartItem$cartItem===void 0?{}:_useCartItem$cartItem;var appliedPromotions=cartItem===null||cartItem===void 0?void 0:cartItem.appliedPromotions;var promo=useMemo(function(){if(!appliedPromotions){return null;}return appliedPromotions.find(function(entry){return entry.coupon===null;});},[appliedPromotions]);var coupon=useMemo(function(){if(!appliedPromotions){return null;}return appliedPromotions.find(function(entry){return entry.coupon!==null;});},[appliedPromotions]);var showText=useCallback(function(text){showTextModal(text);},[showTextModal]);if(isPromo&&promo){var promotionalText=promo===null||promo===void 0?void 0:promo.promotionalText;var name=promo===null||promo===void 0?void 0:promo.name;return React.createElement("div",{className:classNames(styles.container,className)},name,React.createElement(PromotionalTextInfoIcon,{text:promotionalText,showText:showText}));}if(isCoupon&&coupon){var _coupon$coupon;var _promotionalText=coupon===null||coupon===void 0?void 0:coupon.promotionalText;var code=coupon===null||coupon===void 0?void 0:(_coupon$coupon=coupon.coupon)===null||_coupon$coupon===void 0?void 0:_coupon$coupon.code;return React.createElement("div",{className:classNames(styles.container,className)},React.createElement("span",{className:styles.deleteIcon,onClick:function onClick(){deleteCoupon(code);},onKeyDown:function onKeyDown(){deleteCoupon(code);},role:"button",tabIndex:0},React.createElement(CrossIcon,null)),React.createElement(I18n.Text,{string:"cart.coupon_label",params:{label:code}}),React.createElement(PromotionalTextInfoIcon,{text:_promotionalText,showText:showText}));}return null;};CartItemProductPriceListPromotion.defaultProps={isCoupon:false,isPromo:false,className:null};export default connect(null,mapDispatchToProps)(CartItemProductPriceListPromotion);
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import{connect}from'react-redux';import{isAndroid}from'@shopgate/pwa-common/selectors/client';import deleteProductsFromCart from'@shopgate/pwa-common-commerce/cart/actions/deleteProductsFromCart';import updateProductsInCart from'@shopgate/pwa-common-commerce/cart/actions/updateProductsInCart';import{getCurrency}from'@shopgate/pwa-common-commerce/cart/selectors';/**
|
|
2
|
+
* Maps the contents of the state to the component props.
|
|
3
|
+
* @param {Object} state The current application state.
|
|
4
|
+
* @return {Object} The extended component props.
|
|
5
|
+
*/var mapStateToProps=function mapStateToProps(state){return{isAndroid:isAndroid(state),currency:getCurrency(state)};};/**
|
|
6
|
+
* Connects the dispatch function to a callable function in the props.
|
|
7
|
+
* @param {Function} dispatch The redux dispatch function.
|
|
8
|
+
* @return {Object} The extended component props.
|
|
9
|
+
*/var mapDispatchToProps=function mapDispatchToProps(dispatch){return{deleteProduct:function deleteProduct(cartItemId){return dispatch(deleteProductsFromCart([cartItemId]));},updateProduct:function updateProduct(cartItemId,quantity){if(quantity===0){return dispatch(deleteProductsFromCart([cartItemId]));}return dispatch(updateProductsInCart([{cartItemId:cartItemId,quantity:quantity}]));}};};export default connect(mapStateToProps,mapDispatchToProps);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{createContext}from'react';var initialContext={};export default createContext(initialContext);
|
|
@@ -0,0 +1,12 @@
|
|
|
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;}import React,{useMemo,useCallback,useState,useRef}from'react';import{getAbsoluteHeight}from'@shopgate/pwa-common/helpers/dom';import{themeConfig}from'@shopgate/pwa-common/helpers/config';import{CART_ITEM_TYPE_PRODUCT}from'@shopgate/pwa-common-commerce/cart/constants';import{CART_INPUT_AUTO_SCROLL_DELAY}from"../../cart.constants";import Context from"./CartItemProductProvider.context";import connect from"./CartItemProductProvider.connector";import CartItemProductProviderLegacy from"./CartItemProductProviderLegacy";var variables=themeConfig.variables;/**
|
|
2
|
+
* The CartItemProduct Provider
|
|
3
|
+
* @param {Object} props The component props.
|
|
4
|
+
* @returns {JSX}
|
|
5
|
+
*/var CartItemProductProvider=function CartItemProductProvider(_ref){var currency=_ref.currency,deleteProduct=_ref.deleteProduct,updateProduct=_ref.updateProduct,onFocus=_ref.onFocus,cartItem=_ref.cartItem,isEditable=_ref.isEditable,children=_ref.children,isAndroid=_ref.isAndroid,currencyOverride=_ref.currencyOverride;var id=cartItem.id,product=cartItem.product,quantity=cartItem.quantity,_cartItem$fulfillment=cartItem.fulfillment,fulfillment=_cartItem$fulfillment===void 0?null:_cartItem$fulfillment,_cartItem$messages=cartItem.messages,messages=_cartItem$messages===void 0?[]:_cartItem$messages,status=cartItem.status,subStatus=cartItem.subStatus,orderedQuantity=cartItem.orderedQuantity,unitPromoAmount=cartItem.unitPromoAmount,unitDiscountAmount=cartItem.unitDiscountAmount,price=cartItem.price,promoAmount=cartItem.promoAmount,discountAmount=cartItem.discountAmount,extendedPrice=cartItem.extendedPrice,appliedPromotions=cartItem.appliedPromotions,_cartItem$flags=cartItem.flags,flags=_cartItem$flags===void 0?{}:_cartItem$flags;var _useState=useState(false),_useState2=_slicedToArray(_useState,2),editMode=_useState2[0],setEditMode=_useState2[1];var cartItemRef=useRef();var handleRemove=useCallback(function(){deleteProduct(id);},[deleteProduct,id]);var handleUpdate=useCallback(function(updatedQuantity){updateProduct(id,updatedQuantity);},[id,updateProduct]);var toggleEditMode=useCallback(function(isEnabled){if(isAndroid&&isEnabled){/**
|
|
6
|
+
* When the user focuses the quantity input, the keyboard will pop up an overlap the input.
|
|
7
|
+
* Therefor the input has to be scrolled into the viewport again. Since between the focus and
|
|
8
|
+
* the keyboard appearance some time ticks away, the execution of the scroll code is delayed.
|
|
9
|
+
*
|
|
10
|
+
* This should not happen on iOS devices, since their web views behave different.
|
|
11
|
+
*/setTimeout(function(){var yOffset=-(window.innerHeight/2)+getAbsoluteHeight(cartItemRef.current)+variables.paymentBar.height;if(cartItemRef.current){cartItemRef.current.scrollIntoView({behavior:'smooth',yOffset:yOffset});}},CART_INPUT_AUTO_SCROLL_DELAY);}// Give the keyboard some time to slide out after blur, before further actions are taken.
|
|
12
|
+
setTimeout(function(){if(onFocus){onFocus(isEnabled);}},isEnabled?300:0);setEditMode(isEnabled);},[isAndroid,onFocus]);var value=useMemo(function(){var isLinkable=(flags===null||flags===void 0?void 0:flags.disableLink)!==true;var allowQuantityChange=(flags===null||flags===void 0?void 0:flags.disableQuantityField)!==true;return{type:CART_ITEM_TYPE_PRODUCT,currency:currencyOverride||currency,product:product,messages:messages,handleRemove:handleRemove,handleUpdate:handleUpdate,cartItemRef:cartItemRef,toggleEditMode:toggleEditMode,editMode:editMode,isEditable:isEditable,isLinkable:isLinkable,allowQuantityChange:allowQuantityChange,cartItemId:id,cartItem:{id:id,product:product,status:status,subStatus:subStatus,quantity:quantity,orderedQuantity:orderedQuantity,fulfillment:fulfillment,unitPromoAmount:unitPromoAmount,unitDiscountAmount:unitDiscountAmount,price:price,promoAmount:promoAmount,discountAmount:discountAmount,extendedPrice:extendedPrice,appliedPromotions:appliedPromotions}};},[currency,currencyOverride,editMode,fulfillment,handleRemove,handleUpdate,id,isEditable,flags,messages,product,status,subStatus,quantity,orderedQuantity,toggleEditMode,unitPromoAmount,unitDiscountAmount,price,promoAmount,discountAmount,extendedPrice,appliedPromotions]);return React.createElement(Context.Provider,{value:value},React.createElement(CartItemProductProviderLegacy,null,children));};CartItemProductProvider.defaultProps={children:null,isEditable:true,onFocus:function onFocus(){},currencyOverride:null};export default connect(CartItemProductProvider);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import*as React from'react';
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
function _typeof(obj){if(typeof Symbol==="function"&&typeof Symbol.iterator==="symbol"){_typeof=function _typeof(obj){return typeof obj;};}else{_typeof=function _typeof(obj){return obj&&typeof Symbol==="function"&&obj.constructor===Symbol&&obj!==Symbol.prototype?"symbol":typeof obj;};}return _typeof(obj);}function _classCallCheck(instance,Constructor){if(!(instance instanceof Constructor)){throw new TypeError("Cannot call a class as a function");}}function _defineProperties(target,props){for(var i=0;i<props.length;i++){var descriptor=props[i];descriptor.enumerable=descriptor.enumerable||false;descriptor.configurable=true;if("value"in descriptor)descriptor.writable=true;Object.defineProperty(target,descriptor.key,descriptor);}}function _createClass(Constructor,protoProps,staticProps){if(protoProps)_defineProperties(Constructor.prototype,protoProps);if(staticProps)_defineProperties(Constructor,staticProps);return Constructor;}function _callSuper(_this,derived,args){function isNativeReflectConstruct(){if(typeof Reflect==="undefined"||!Reflect.construct)return false;if(Reflect.construct.sham)return false;if(typeof Proxy==="function")return true;try{return!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){}));}catch(e){return false;}}derived=_getPrototypeOf(derived);return _possibleConstructorReturn(_this,isNativeReflectConstruct()?Reflect.construct(derived,args||[],_getPrototypeOf(_this).constructor):derived.apply(_this,args));}function _possibleConstructorReturn(self,call){if(call&&(_typeof(call)==="object"||typeof call==="function")){return call;}return _assertThisInitialized(self);}function _assertThisInitialized(self){if(self===void 0){throw new ReferenceError("this hasn't been initialised - super() hasn't been called");}return self;}function _getPrototypeOf(o){_getPrototypeOf=Object.setPrototypeOf?Object.getPrototypeOf:function _getPrototypeOf(o){return o.__proto__||Object.getPrototypeOf(o);};return _getPrototypeOf(o);}function _inherits(subClass,superClass){if(typeof superClass!=="function"&&superClass!==null){throw new TypeError("Super expression must either be null or a function");}subClass.prototype=Object.create(superClass&&superClass.prototype,{constructor:{value:subClass,writable:true,configurable:true}});if(superClass)_setPrototypeOf(subClass,superClass);}function _setPrototypeOf(o,p){_setPrototypeOf=Object.setPrototypeOf||function _setPrototypeOf(o,p){o.__proto__=p;return o;};return _setPrototypeOf(o,p);}import React from'react';import PropTypes from'prop-types';import{CART_ITEM_TYPE_PRODUCT}from'@shopgate/engage/cart';import{useCartItemProduct}from"./CartItem.hooks";/**
|
|
2
|
+
* Provides legacy context for CartItemProduct component and its children.
|
|
3
|
+
* Within PWA7 the context was refactored to the new context API. To keep compatibility with
|
|
4
|
+
* older extensions, this provider is used to provide the legacy context.
|
|
5
|
+
*
|
|
6
|
+
* Should be removed when PWA 7 is deployed to all of the shops and affected extensions can be
|
|
7
|
+
* updated without the need to support older PWA versions.
|
|
8
|
+
*/var LegacyProvider=/*#__PURE__*/function(_React$Component){/**
|
|
9
|
+
* @param {Object} props The component props.
|
|
10
|
+
*/function LegacyProvider(props){var _this2;_classCallCheck(this,LegacyProvider);_this2=_callSuper(this,LegacyProvider,[props]);_this2.state={cartItemId:props.cartItemId,product:props.product};return _this2;}/**
|
|
11
|
+
* @param {Object} nextProps Next props
|
|
12
|
+
* @param {*} prevState Prev state
|
|
13
|
+
* @returns {Object|null}
|
|
14
|
+
*/_inherits(LegacyProvider,_React$Component);return _createClass(LegacyProvider,[{key:"getChildContext",value:/**
|
|
15
|
+
* @returns {Object}
|
|
16
|
+
*/function getChildContext(){return{type:CART_ITEM_TYPE_PRODUCT,cartItemId:this.state.cartItemId,product:this.state.product};}/**
|
|
17
|
+
* @returns {JSX.Element}
|
|
18
|
+
*/},{key:"render",value:function render(){return this.props.children;}}],[{key:"getDerivedStateFromProps",value:function getDerivedStateFromProps(nextProps,prevState){if(nextProps.cartItemId!==prevState.cartItemId||nextProps.product!==prevState.product){return{cartItemId:nextProps.cartItemId,product:nextProps.product};}return null;}}]);}(React.Component);LegacyProvider.childContextTypes={type:PropTypes.string,cartItemId:PropTypes.string,product:PropTypes.shape()};/**
|
|
19
|
+
* Bridges the CartItemProductContext value to the legacy CartItemProduct context.
|
|
20
|
+
* @param {Object} props The component props.
|
|
21
|
+
* @returns {JSX.Element}
|
|
22
|
+
*/var CartItemProductProviderLegacy=function CartItemProductProviderLegacy(_ref){var children=_ref.children;var _useCartItemProduct=useCartItemProduct(),cartItemId=_useCartItemProduct.cartItemId,product=_useCartItemProduct.product;return React.createElement(LegacyProvider,{cartItemId:cartItemId,product:product},children);};export default CartItemProductProviderLegacy;
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import React,{useCallback}from'react';import PropTypes from'prop-types';import{Grid,I18n,ContextMenu,SurroundPortals,TextLink}from'@shopgate/engage/components';import{CART_ITEM_CONTEXT_MENU,CART_ITEM_CONTEXT_MENU_ITEM_REMOVE,CART_ITEM_NAME}from'@shopgate/engage/cart';import{CartContextMenuItemChangeLocation,CartContextMenuItemChangeFulfillment}from'@shopgate/engage/locations';import{ITEM_PATH,ProductName}from'@shopgate/engage/product';import{bin2hex}from'@shopgate/pwa-common/helpers/data';import{useCartItem,useCartItemProduct}from"./CartItem.hooks";import{menuToggleButton,menuToggleContainer,title,menuContainer}from"./CartItemProductTitle.style";import{ConditionalWrapper}from"../../../components";var contextMenuClasses={button:menuToggleButton,container:menuToggleContainer};/**
|
|
2
|
+
* The Cart Product Title component.
|
|
3
|
+
* @param {Object} props The component properties.
|
|
4
|
+
* @param {string} props.value The product name
|
|
5
|
+
* @param {string} props.productId The product id
|
|
6
|
+
* @returns {JSX.Element}
|
|
7
|
+
*/export function CartItemProductTitle(_ref){var value=_ref.value,productId=_ref.productId;var _useCartItem=useCartItem(),invokeFulfillmentAction=_useCartItem.invokeFulfillmentAction;var context=useCartItemProduct();var handleRemove=context.handleRemove,toggleEditMode=context.toggleEditMode,cartItem=context.cartItem,isEditable=context.isEditable,isLinkable=context.isLinkable;var handleChangeLocationClick=useCallback(function(){if(!cartItem||!cartItem.fulfillment||!cartItem.fulfillment.method){return;}var method=cartItem.fulfillment.method;invokeFulfillmentAction('changeLocation',method);},[cartItem,invokeFulfillmentAction]);var handleChangeFulfillmentClick=useCallback(function(){invokeFulfillmentAction('changeFulfillment');},[invokeFulfillmentAction]);return React.createElement(Grid,null,React.createElement(Grid.Item,{grow:1},React.createElement(ConditionalWrapper,{condition:isEditable&&isLinkable,wrapper:function wrapper(children){return React.createElement(TextLink,{href:"".concat(ITEM_PATH,"/").concat(bin2hex(productId))},children);}},React.createElement(ProductName,{name:value,className:title,portalName:CART_ITEM_NAME,portalProps:context,testId:value,ellipsis:false}))),isEditable&&React.createElement(Grid.Item,{className:menuContainer,shrink:0},React.createElement(SurroundPortals,{portalName:CART_ITEM_CONTEXT_MENU,portalProps:{context:context,handleRemove:handleRemove,toggleEditMode:toggleEditMode}},React.createElement(ContextMenu,{classes:contextMenuClasses},React.createElement(SurroundPortals,{portalName:CART_ITEM_CONTEXT_MENU_ITEM_REMOVE,portalProps:{context:context,handleRemove:handleRemove}},React.createElement("div",{"data-test-id":"cartItemContextMenuItemRemove"},React.createElement(ContextMenu.Item,{onClick:handleRemove},React.createElement(I18n.Text,{string:"cart.remove"})))),React.createElement(CartContextMenuItemChangeLocation,{cartItem:context.cartItem,onClick:handleChangeLocationClick}),React.createElement(CartContextMenuItemChangeFulfillment,{cartItem:context.cartItem,onClick:handleChangeFulfillmentClick})))));}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{css}from'glamor';import{themeConfig}from'@shopgate/pwa-common/helpers/config';var variables=themeConfig.variables;export var title=css({fontWeight:500,lineHeight:1.125,wordBreak:['keep-all','break-word'],hyphens:'auto'}).toString();export var menuContainer=css({marginTop:"-".concat(variables.gap.big,"px"),marginRight:"-".concat(variables.gap.big,"px")}).toString();var menuToggleSize=variables.gap.big*2;var menuToggleFontSize=variables.gap.big*1.5;export var menuToggleContainer=css({margin:variables.gap.small}).toString();export var menuToggleButton=css({height:menuToggleSize,width:menuToggleSize,fontSize:menuToggleFontSize,display:'flex',alignItems:'center',justifyContent:'flex-end'}).toString();
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
import{connect}from'react-redux';import{hasLineItemPromotions}from'@shopgate/engage/cart';import{makeGetEnabledFulfillmentMethodsCount}from'@shopgate/engage/core/config';import{makeGetLocation}from'@shopgate/engage/locations';/**
|
|
2
|
+
* @return {Function} The extended component props.
|
|
3
|
+
*/var makeMapStateToProps=function makeMapStateToProps(){var getEnabledFulfillmentMethods=makeGetEnabledFulfillmentMethodsCount();var getLocation=makeGetLocation(function(state,props){return props.locationId;});return function(state,props){var isOrderDetails=props.isOrderDetails,isCheckoutConfirmation=props.isCheckoutConfirmation;var isCart=!isOrderDetails&&!isCheckoutConfirmation;return{location:getLocation(state,props),enabledFulfillmentMethodsCount:getEnabledFulfillmentMethods(state),cartHasLineItemPromotions:isCart&&hasLineItemPromotions(state)};};};export default connect(makeMapStateToProps);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{createContext}from'react';var initialContext={};export default createContext(initialContext);
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import React,{useMemo,useCallback}from'react';import Context from"./CartItemProvider.context";import connect from"./CartItemProvider.connector";/**
|
|
2
|
+
* The CartItem Provider
|
|
3
|
+
* @param {Object} props The component props.
|
|
4
|
+
* @returns {JSX}
|
|
5
|
+
*/var CartItemProvider=function CartItemProvider(_ref){var cartItem=_ref.cartItem,location=_ref.location,isEditable=_ref.isEditable,children=_ref.children,enabledFulfillmentMethodsCount=_ref.enabledFulfillmentMethodsCount,isOrderDetails=_ref.isOrderDetails,isCheckoutConfirmation=_ref.isCheckoutConfirmation,cartIsDirectShipOnly=_ref.cartIsDirectShipOnly,cartHasLineItemPromotions=_ref.cartHasLineItemPromotions;var actions=useMemo(function(){return new Map();},[]);var registerFulfillmentAction=useCallback(function(action,callback){actions.set(action,callback);},[actions]);var invokeFulfillmentAction=useCallback(function(action){if(!actions.has(action)){return;}for(var _len=arguments.length,args=new Array(_len>1?_len-1:0),_key=1;_key<_len;_key++){args[_key-1]=arguments[_key];}actions.get(action).apply(void 0,args);},[actions]);var value=useMemo(function(){return{registerFulfillmentAction:registerFulfillmentAction,invokeFulfillmentAction:invokeFulfillmentAction,cartItem:cartItem,location:location,isEditable:isEditable,isOrderDetails:isOrderDetails,isCheckoutConfirmation:isCheckoutConfirmation,cartIsDirectShipOnly:cartIsDirectShipOnly,cartHasLineItemPromotions:cartHasLineItemPromotions,merchantFulfillmentMethodsCount:enabledFulfillmentMethodsCount};},[cartItem,location,enabledFulfillmentMethodsCount,invokeFulfillmentAction,isEditable,isOrderDetails,isCheckoutConfirmation,cartIsDirectShipOnly,cartHasLineItemPromotions,registerFulfillmentAction]);return React.createElement(Context.Provider,{value:value},children);};CartItemProvider.defaultProps={children:null,location:null,isEditable:true,isOrderDetails:false,cartIsDirectShipOnly:false,isCheckoutConfirmation:false,cartHasLineItemPromotions:false};export default connect(CartItemProvider);
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
function _typeof(obj){if(typeof Symbol==="function"&&typeof Symbol.iterator==="symbol"){_typeof=function _typeof(obj){return typeof obj;};}else{_typeof=function _typeof(obj){return obj&&typeof Symbol==="function"&&obj.constructor===Symbol&&obj!==Symbol.prototype?"symbol":typeof obj;};}return _typeof(obj);}function _classCallCheck(instance,Constructor){if(!(instance instanceof Constructor)){throw new TypeError("Cannot call a class as a function");}}function _defineProperties(target,props){for(var i=0;i<props.length;i++){var descriptor=props[i];descriptor.enumerable=descriptor.enumerable||false;descriptor.configurable=true;if("value"in descriptor)descriptor.writable=true;Object.defineProperty(target,descriptor.key,descriptor);}}function _createClass(Constructor,protoProps,staticProps){if(protoProps)_defineProperties(Constructor.prototype,protoProps);if(staticProps)_defineProperties(Constructor,staticProps);return Constructor;}function _callSuper(_this,derived,args){function isNativeReflectConstruct(){if(typeof Reflect==="undefined"||!Reflect.construct)return false;if(Reflect.construct.sham)return false;if(typeof Proxy==="function")return true;try{return!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){}));}catch(e){return false;}}derived=_getPrototypeOf(derived);return _possibleConstructorReturn(_this,isNativeReflectConstruct()?Reflect.construct(derived,args||[],_getPrototypeOf(_this).constructor):derived.apply(_this,args));}function _possibleConstructorReturn(self,call){if(call&&(_typeof(call)==="object"||typeof call==="function")){return call;}return _assertThisInitialized(self);}function _assertThisInitialized(self){if(self===void 0){throw new ReferenceError("this hasn't been initialised - super() hasn't been called");}return self;}function _getPrototypeOf(o){_getPrototypeOf=Object.setPrototypeOf?Object.getPrototypeOf:function _getPrototypeOf(o){return o.__proto__||Object.getPrototypeOf(o);};return _getPrototypeOf(o);}function _inherits(subClass,superClass){if(typeof superClass!=="function"&&superClass!==null){throw new TypeError("Super expression must either be null or a function");}subClass.prototype=Object.create(superClass&&superClass.prototype,{constructor:{value:subClass,writable:true,configurable:true}});if(superClass)_setPrototypeOf(subClass,superClass);}function _setPrototypeOf(o,p){_setPrototypeOf=Object.setPrototypeOf||function _setPrototypeOf(o,p){o.__proto__=p;return o;};return _setPrototypeOf(o,p);}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;}import*as React from'react';import{i18n}from'@shopgate/engage/core';import QuantityInput from'@shopgate/engage/components/QuantityInput';import{inputStyle}from"./CartItemQuantityPicker.style";/**
|
|
2
|
+
* The Quantity Picker component.
|
|
3
|
+
*/export var CartItemQuantityPicker=/*#__PURE__*/function(_React$Component){/**
|
|
4
|
+
* Constructor.
|
|
5
|
+
* @param {Object} props The component props.
|
|
6
|
+
*/function CartItemQuantityPicker(props){var _this2;_classCallCheck(this,CartItemQuantityPicker);_this2=_callSuper(this,CartItemQuantityPicker,[props]);/**
|
|
7
|
+
* The default quantity.
|
|
8
|
+
* @type {number}
|
|
9
|
+
*/_defineProperty(_this2,"defaultQuantity",1);/**
|
|
10
|
+
* Event handler for the the onClick event of the input.
|
|
11
|
+
* @param {Object} event The event object.
|
|
12
|
+
*/_defineProperty(_this2,"handleInputClick",function(event){// Prevent the native focus event ...
|
|
13
|
+
event.stopPropagation();event.preventDefault();if(_this2.props.onToggleEditMode){_this2.props.onToggleEditMode(true);}});/**
|
|
14
|
+
* Event handler for the onFocus event of the input.
|
|
15
|
+
*/_defineProperty(_this2,"handleInputFocus",function(){if(_this2.props.onToggleEditMode){_this2.props.onToggleEditMode(true);}});/**
|
|
16
|
+
* Event handler for the onSubmit event of the form which wraps the input.
|
|
17
|
+
* @param {Object} event The event object.
|
|
18
|
+
*/_defineProperty(_this2,"handleSubmitForm",function(event){event.preventDefault();if(_this2.input.current){_this2.input.current.blur();}});/**
|
|
19
|
+
* Event handler for the the onBlur event of the input.
|
|
20
|
+
* @param {Object} event The event object.
|
|
21
|
+
* @param {number} newQuantity The event object.
|
|
22
|
+
*/_defineProperty(_this2,"handleInputBlur",function(event,newQuantity){var onChange=_this2.props.onChange;// Deactivate the edit mode
|
|
23
|
+
if(_this2.props.onToggleEditMode){_this2.props.onToggleEditMode(false);}if(_this2.props.quantity!==newQuantity){if(onChange){onChange(newQuantity);}}});_this2.regex=/^([0-9.,]+)$/;_this2.input=React.createRef();return _this2;}/**
|
|
24
|
+
* Called after mount. Focuses the input if the edit mode is active.
|
|
25
|
+
*/_inherits(CartItemQuantityPicker,_React$Component);return _createClass(CartItemQuantityPicker,[{key:"componentDidMount",value:function componentDidMount(){if(this.props.editMode&&this.input.current){this.input.current.focus();}if(this.input.current){/**
|
|
26
|
+
* Prevent the opening of the context menu when this
|
|
27
|
+
* input is focused and the value is selected.
|
|
28
|
+
*/this.input.current.addEventListener('contextmenu',function(event){event.preventDefault();event.stopPropagation();return false;});}}/**
|
|
29
|
+
* The componentWillReceiveProps lifecycle hook. I will bring the input into the correct state.
|
|
30
|
+
* @param {Object} nextProps The next set of props.
|
|
31
|
+
*/},{key:"UNSAFE_componentWillReceiveProps",value:function UNSAFE_componentWillReceiveProps(nextProps){if(this.input.current){if(nextProps.editMode){this.input.current.focus();}else{this.input.current.blur();}}}},{key:"initialQuantity",get:/**
|
|
32
|
+
* Returns the initial quantity based on the props.
|
|
33
|
+
* If the props are set to 0 or lower, it will fall back to 1.
|
|
34
|
+
* @return {number}
|
|
35
|
+
*/function get(){if(this.props.quantity&&(this.props.quantity===0||this.props.quantity<this.defaultQuantity)){return this.defaultQuantity;}return this.props.quantity||this.defaultQuantity;}},{key:"render",value:/**
|
|
36
|
+
* Renders the component.
|
|
37
|
+
* @return {JSX}
|
|
38
|
+
*/function render(){var _this$props=this.props,unit=_this$props.unit,hasCatchWeight=_this$props.hasCatchWeight;var hasCustomUnit=unit&&hasCatchWeight||false;return React.createElement("form",{onSubmit:this.handleSubmitForm,className:"theme__cart__product__quantity-picker"},React.createElement(QuantityInput,{ref:this.input,className:inputStyle.toString(),value:this.props.quantity,onClick:this.handleInputClick,onFocus:this.handleInputFocus,onBlur:this.handleInputBlur,unit:hasCustomUnit?unit:null,maxDecimals:hasCustomUnit?2:0,"data-test-id":"quantityPicker",disabled:this.props.disabled,"aria-label":i18n.text('product.quantity')}));}}]);}(React.Component);_defineProperty(CartItemQuantityPicker,"defaultProps",{editMode:false,onChange:function onChange(){},unit:null,quantity:1,onToggleEditMode:function onToggleEditMode(){},disabled:false,hasCatchWeight:false});
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{css}from'glamor';import{themeConfig}from'@shopgate/pwa-common/helpers/config';var colors=themeConfig.colors,variables=themeConfig.variables;export var inputStyle=css({border:'none',background:colors.placeholder,display:'block',fontSize:'0.75rem',lineHeight:1,textAlign:'center',padding:"".concat(variables.gap.small*0.75,"px ").concat(variables.gap.small,"px"),outline:0,width:'100%',borderRadius:4});
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import{connect}from'react-redux';import updateProductsInCart from'@shopgate/pwa-common-commerce/cart/actions/updateProductsInCart';/**
|
|
2
|
+
* Connects the dispatch function to a callable function in the props.
|
|
3
|
+
* @param {Function} dispatch The redux dispatch function.
|
|
4
|
+
* @return {Object} The extended component props.
|
|
5
|
+
*/var mapDispatchToProps=function mapDispatchToProps(dispatch){return{setSubstitutionAllowed:function setSubstitutionAllowed(cartItemId,substitutionAllowed){return dispatch(updateProductsInCart([{cartItemId:cartItemId,substitutionAllowed:substitutionAllowed}]));}};};export default connect(null,mapDispatchToProps);
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import React from'react';import PropTypes from'prop-types';import{i18n}from'@shopgate/engage/core';import{BOPIS,ROPIS}from'@shopgate/engage/locations';import connect from"./CartItemSubstitution.connector";import{useCartItem}from"./CartItem.hooks";import Substitution,{SubstitutionWrapper}from"../Substitution";import{root}from"./CartItemSubstitution.style";/**
|
|
2
|
+
* Renders the cart reservation card label.
|
|
3
|
+
* @param {Object} props The component props.
|
|
4
|
+
* @returns {JSX}
|
|
5
|
+
*/var CartItemSubstitution=function CartItemSubstitution(_ref){var setSubstitutionAllowed=_ref.setSubstitutionAllowed,editable=_ref.editable;var _useCartItem=useCartItem(),_useCartItem$cartItem=_useCartItem.cartItem,_useCartItem$cartItem2=_useCartItem$cartItem===void 0?{}:_useCartItem$cartItem,id=_useCartItem$cartItem2.id,substitutionAllowed=_useCartItem$cartItem2.substitutionAllowed,fulfillment=_useCartItem$cartItem2.fulfillment;if(![ROPIS,BOPIS].includes((fulfillment===null||fulfillment===void 0?void 0:fulfillment.method)||[])){return null;}return React.createElement(SubstitutionWrapper,null,React.createElement(Substitution,{className:root,id:"substitution-".concat(id),label:i18n.text('cart.allow_substitution'),checked:substitutionAllowed,onChange:function onChange(){return setSubstitutionAllowed(id,!substitutionAllowed);},disabled:!editable}));};CartItemSubstitution.defaultProps={editable:false};export default connect(CartItemSubstitution);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{css}from'glamor';import{themeColors,themeVariables}from'@shopgate/pwa-common/helpers/config';var gap=themeVariables.gap;export var root=css({padding:gap.big,borderTop:"1px solid ".concat(themeColors.shade7)}).toString();
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export{default as CartItem}from"./CartItem";export{useCartItem,useCartItemProduct}from"./CartItem.hooks";export{default as CartItemProvider}from"./CartItemProvider";
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import{connect}from'react-redux';import{makeGetLocation}from'@shopgate/engage/locations';/**
|
|
2
|
+
* Creates the mapStateToProps connector function.
|
|
3
|
+
* @returns {Function}
|
|
4
|
+
*/var makeMapStateToProps=function makeMapStateToProps(){var getLocation=makeGetLocation(function(_,props){return props.locationId;});return function(state,props){return{location:getLocation(state,props)};};};export default connect(makeMapStateToProps);
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import*as React from'react';import CartItemCardReservation from"./CartItemCardReservation";import{withBorder}from"./CartItemCard.style";/**
|
|
2
|
+
* Renders the cart items.
|
|
3
|
+
* @param {Object} props The component props.
|
|
4
|
+
* @returns {JSX}
|
|
5
|
+
*/export function CartItemCard(props){var multiLineReservation=props.multiLineReservation,fulfillmentLocationId=props.fulfillmentLocationId,children=props.children,fulfillmentMethod=props.fulfillmentMethod,hasMessages=props.hasMessages;if(!multiLineReservation){return children;}return React.createElement(React.Fragment,null,React.createElement("ul",{className:fulfillmentLocationId&&!hasMessages?withBorder:null},children),!!fulfillmentLocationId&&React.createElement(CartItemCardReservation,{locationId:fulfillmentLocationId,fulfillmentMethod:fulfillmentMethod}));}CartItemCard.defaultProps={fulfillmentLocationId:null,fulfillmentMethod:null,multiLineReservation:false,hasMessages:false};
|
|
@@ -0,0 +1 @@
|
|
|
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;}import{css}from'glamor';import{responsiveMediaQuery}from'@shopgate/engage/styles';import{themeColors,themeVariables}from'@shopgate/pwa-common/helpers/config';var gap=themeVariables.gap;export var withBorder=css({borderBottom:"1px solid ".concat(themeColors.shade7)});export var accordionToggle=css({padding:"".concat(gap.big*1.25,"px ").concat(gap.big,"px")}).toString();export var accordionContent=css({paddingLeft:gap.xbig*1.25});export var address=css({display:'flex',flexFlow:'row nowrap'});export var addressIcon=css({fontSize:'1.25rem',marginRight:gap.big*1.25,flexShrink:0,color:'var(--color-text-heigh-emphasis)'});export var titles=css({marginTop:-3,marginBottom:-2,paddingRight:themeVariables.gap.big*2});export var name=css(_defineProperty({fontSize:'0.85rem',fontWeight:500},responsiveMediaQuery('>xs',{webOnly:true}),{fontSize:'1.25rem',lineHeight:'1.5rem'}));export var method=css({fontSize:'0.75rem',color:themeColors.shade11});export var locationAddress=css({fontSize:'0.85rem',color:'var(--color-text-low-emphasis)'});export var locationHours=css({paddingTop:gap.big,fontSize:'0.85rem'});
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import _isEmpty from"lodash/isEmpty";import _every from"lodash/every";import*as React from'react';import{ResponsiveContainer}from'@shopgate/engage/components';import{useCartItem}from"../CartItem";import{CartItemCardReservationLabel}from"./CartItemCardReservationLabel";import connect from"./CartItem.connector";import{CartItemCardReservationAccordion}from"./CartItemCardReservationAccordion";import{accordionToggle}from"./CartItemCard.style";/**
|
|
2
|
+
* Renders the cart item card reservation block,
|
|
3
|
+
* @param {Object} props The component props.
|
|
4
|
+
* @returns {JSX.Element}
|
|
5
|
+
*/function CartItemCardReservation(_ref){var location=_ref.location,fulfillmentMethod=_ref.fulfillmentMethod;var _useCartItem=useCartItem(),isOrderDetails=_useCartItem.isOrderDetails;if(!location){return null;}var operationHours=location.operationHours,_location$address=location.address,_location$address2=_location$address===void 0?{}:_location$address,phoneNumber=_location$address2.phoneNumber;if((!operationHours||_every(operationHours,_isEmpty))&&!phoneNumber&&(!location.address||!location.address.street)){return React.createElement("div",{className:accordionToggle},React.createElement(CartItemCardReservationLabel,{location:location,fulfillmentMethod:fulfillmentMethod}));}return React.createElement(React.Fragment,null,React.createElement(ResponsiveContainer,{webOnly:true,breakpoint:">xs"},!isOrderDetails&&React.createElement(CartItemCardReservationAccordion,{openWithChevron:true,location:location,fulfillmentMethod:fulfillmentMethod,operationHours:operationHours})),React.createElement(ResponsiveContainer,{appAlways:true,breakpoint:"<=xs"},!isOrderDetails&&React.createElement(CartItemCardReservationAccordion,{location:location,fulfillmentMethod:fulfillmentMethod,operationHours:operationHours})));}export default connect(CartItemCardReservation);
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import React from'react';import{Accordion}from'@shopgate/engage/components';import{StoreAddress,StoreOpeningHours}from'@shopgate/engage/locations';import{CartItemCardReservationLabel}from"./CartItemCardReservationLabel";import{accordionToggle,accordionContent,locationAddress,locationHours}from"./CartItemCard.style";/**
|
|
2
|
+
* @param {Object} props The component props.
|
|
3
|
+
* @returns {JSX}
|
|
4
|
+
*/var CartItemCardReservationAccordion=function CartItemCardReservationAccordion(_ref){var openWithChevron=_ref.openWithChevron,location=_ref.location,fulfillmentMethod=_ref.fulfillmentMethod,operationHours=_ref.operationHours;return React.createElement(Accordion,{className:accordionToggle,openWithChevron:openWithChevron,renderLabel:function renderLabel(){return React.createElement(CartItemCardReservationLabel,{location:location,fulfillmentMethod:fulfillmentMethod});}},React.createElement("div",{className:accordionContent},React.createElement("div",{className:locationAddress},React.createElement(StoreAddress,{address:location.address,pure:true})),operationHours&&React.createElement("div",{className:locationHours},React.createElement(StoreOpeningHours,{hours:operationHours,pure:true}))));};CartItemCardReservationAccordion.defaultProps={openWithChevron:false};export{CartItemCardReservationAccordion};
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import*as React from'react';import{i18n}from'@shopgate/engage/core';import{LocationIcon,ResponsiveContainer}from'@shopgate/engage/components';import{BOPIS,CartItemProductChangeLocation}from'@shopgate/engage/locations';import{useCartItem}from"../CartItem";import CartItemCardReservationLabelChangeStore from"./CartItemCardReservationLabelChangeStore";import{address,addressIcon,titles,name,method}from"./CartItemCard.style";/**
|
|
2
|
+
* Renders the cart reservation card label.
|
|
3
|
+
* @param {Object} props The component props.
|
|
4
|
+
* @returns {JSX}
|
|
5
|
+
*/export function CartItemCardReservationLabel(_ref){var location=_ref.location,fulfillmentMethod=_ref.fulfillmentMethod;var _useCartItem=useCartItem(),cartItem=_useCartItem.cartItem,isEditable=_useCartItem.isEditable,registerFulfillmentAction=_useCartItem.registerFulfillmentAction;if(!location){return null;}var suffix=fulfillmentMethod===BOPIS?'bopis':'ropis';return React.createElement("div",{className:address},React.createElement("div",{className:addressIcon},React.createElement(LocationIcon,null)),React.createElement("div",{className:titles},React.createElement("div",{className:name},location.name),isEditable&&React.createElement(ResponsiveContainer,{webOnly:true,breakpoint:">xs"},React.createElement(CartItemCardReservationLabelChangeStore,null),React.createElement(CartItemProductChangeLocation,{cartItem:cartItem,registerAction:registerFulfillmentAction})),React.createElement(ResponsiveContainer,{appAlways:true,breakpoint:"<=xs"},React.createElement("div",{className:method},i18n.text("locations.method.".concat(suffix))))));}
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
import React,{useCallback}from'react';import{RippleButton,I18n}from'@shopgate/engage/components';import{button,ripple}from"./CartItemCardReservationLabelChangeStore.style";import{useCartItem}from"../CartItem";/**
|
|
2
|
+
* @returns {JSX}
|
|
3
|
+
*/var CartItemCardReservationLabelChangeStore=function CartItemCardReservationLabelChangeStore(){var _useCartItem=useCartItem(),invokeFulfillmentAction=_useCartItem.invokeFulfillmentAction,cartItem=_useCartItem.cartItem;var handleChangeLocationClick=useCallback(function(){if(!cartItem||!cartItem.fulfillment||!cartItem.fulfillment.method){return;}var method=cartItem.fulfillment.method;invokeFulfillmentAction('changeLocation',method);},[cartItem,invokeFulfillmentAction]);return React.createElement(RippleButton,{onClick:handleChangeLocationClick,className:button,rippleClassName:ripple,type:"secondary",flat:true},React.createElement(I18n.Text,{string:"locations.change_location"}));};export default CartItemCardReservationLabelChangeStore;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{css}from'glamor';export var button=css({fontSize:'0.875rem !important',letterSpacing:'0.05em',padding:'0px !important',' *':{padding:'0px !important'}}).toString();export var ripple=css({padding:0}).toString();
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import{hot}from'react-hot-loader/root';import*as React from'react';import CartItemGroupReservation from"./CartItemGroupReservation";/**
|
|
2
|
+
* Renders the product group.
|
|
3
|
+
* @param {Object} props The component props.
|
|
4
|
+
* @returns {JSX.Element}
|
|
5
|
+
*/function CartItemGroup(props){var multiLineReservation=props.multiLineReservation,fulfillmentLocationId=props.fulfillmentLocationId,children=props.children,fulfillmentMethod=props.fulfillmentMethod;if(!multiLineReservation){return children;}return React.createElement(React.Fragment,null,!!fulfillmentLocationId&&React.createElement(CartItemGroupReservation,{locationId:fulfillmentLocationId,fulfillmentMethod:fulfillmentMethod}),children);}CartItemGroup.defaultProps={fulfillmentLocationId:null,multiLineReservation:false,fulfillmentMethod:null};export default hot(CartItemGroup);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{css}from'glamor';import{themeVariables}from'@shopgate/pwa-common/helpers/config';var gap=themeVariables.gap;export var accordionToggle=css({paddingTop:gap.xsmall,paddingBottom:gap.xsmall}).toString();export var simpleLabel=css({padding:"".concat(gap.xsmall,"px ").concat(gap.xbig,"px ").concat(gap.xsmall,"px ").concat(gap.big,"px")});export var address=css({display:'flex',flexFlow:'row nowrap',fontSize:'0.875rem'});export var addressIcon=css({fontSize:'1.25rem',padding:"".concat(gap.small,"px ").concat(gap.small,"px 0 0"),paddingTop:gap.small,flexShrink:0});export var shippingIcon=css({fontSize:'1.25rem',padding:"".concat(gap.small,"px ").concat(gap.big,"px ").concat(gap.small,"px 0"),transform:'rotateY(180deg)'});export var title=css({fontWeight:600});export var shippingTitle=css({fontWeight:600,padding:gap.small});export var addressDetails=css({fontSize:'0.875rem',paddingLeft:gap.xbig});
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import _isEmpty from"lodash/isEmpty";import _every from"lodash/every";import React from'react';import CardListItem from'@shopgate/pwa-ui-shared/CardList/components/Item';import{Accordion}from'@shopgate/engage/components';import{StoreOpeningHours,StorePhoneNumber}from'@shopgate/engage/locations';import{CartItemGroupReservationLabel}from"./CartItemGroupReservationLabel";import connect from"./CartItem.connector";import{accordionToggle,addressDetails,simpleLabel}from"./CartItemGroup.style";/**
|
|
2
|
+
* Renders the product group.
|
|
3
|
+
* @param {Object} props The component props.
|
|
4
|
+
* @returns {JSX.Element}
|
|
5
|
+
*/function CartItemGroupReservation(_ref){var location=_ref.location,fulfillmentMethod=_ref.fulfillmentMethod;if(!location){return null;}var operationHours=location.operationHours,_location$address=location.address,_location$address2=_location$address===void 0?{}:_location$address,phoneNumber=_location$address2.phoneNumber;if((!operationHours||_every(operationHours,_isEmpty))&&!phoneNumber){return React.createElement(CardListItem,{className:simpleLabel.toString()},React.createElement(CartItemGroupReservationLabel,{location:location,fulfillmentMethod:fulfillmentMethod}));}return React.createElement(CardListItem,null,React.createElement(Accordion,{renderLabel:function renderLabel(){return React.createElement(CartItemGroupReservationLabel,{location:location,fulfillmentMethod:fulfillmentMethod});},className:accordionToggle},React.createElement("div",{className:addressDetails},React.createElement(StoreOpeningHours,{hours:operationHours}),React.createElement(StorePhoneNumber,{phone:phoneNumber}))));}CartItemGroupReservation.defaultProps={location:null,fulfillmentMethod:null};export default connect(CartItemGroupReservation);
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import React from'react';import{i18n}from'@shopgate/engage/core';import{LocationIcon}from'@shopgate/engage/components';import{BOPIS}from'@shopgate/engage/locations';import{address,addressIcon,title}from"./CartItemGroup.style";/**
|
|
2
|
+
* Renders the cart reservation group label.
|
|
3
|
+
* @param {Object} props The component props.
|
|
4
|
+
* @returns {JSX}
|
|
5
|
+
*/export function CartItemGroupReservationLabel(_ref){var location=_ref.location,fulfillmentMethod=_ref.fulfillmentMethod;if(!location){return null;}var suffix=fulfillmentMethod===BOPIS?'bopis':'ropis';return React.createElement("div",{className:address},React.createElement("div",{className:addressIcon},React.createElement(LocationIcon,null)),React.createElement("div",null,React.createElement("div",{className:title},i18n.text("locations.method.".concat(suffix))),location.name));}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import React from'react';import CardListItem from'@shopgate/pwa-ui-shared/CardList/components/Item';import{LocalShippingIcon}from"../../../components";import{i18n}from"../../../core";import{address,shippingIcon,shippingTitle}from"./CartItemGroup.style";/**
|
|
2
|
+
* Renders the cart item group.
|
|
3
|
+
* @returns {JSX.Element}
|
|
4
|
+
*/export var CartItemGroupShipping=function CartItemGroupShipping(){return React.createElement(CardListItem,null,React.createElement("div",{className:address},React.createElement("div",{className:shippingIcon},React.createElement(LocalShippingIcon,null)),React.createElement("div",null,React.createElement("div",{className:shippingTitle},i18n.text('locations.method.direct_ship')))));};
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import{hot}from'react-hot-loader/root';import*as React from'react';import{CardList,ResponsiveContainer}from'@shopgate/engage/components';import{FulfillmentSlotSwitcher}from'@shopgate/engage/locations';import CartItemsHeaderWide from"./CartItemsHeaderWide";import{CartItemProvider,CartItem}from"../CartItem";import{CartItemCard}from"./CartItemCard";import{items,card}from"./CartItems.style";import CartItemsSubstitution from"./CartItemsSubstitution";/**
|
|
2
|
+
* Renders the cart items.
|
|
3
|
+
* @param {Object} props The component props.
|
|
4
|
+
* @returns {JSX.Element}
|
|
5
|
+
*/function CartItems(_ref){var cartItems=_ref.cartItems,onFocus=_ref.onFocus,multiLineReservation=_ref.multiLineReservation,editable=_ref.editable,isOrderDetails=_ref.isOrderDetails,isCheckoutConfirmation=_ref.isCheckoutConfirmation,currencyOverride=_ref.currencyOverride,isDirectShipOnly=_ref.isDirectShipOnly;if(!cartItems||cartItems.length===0){return null;}return React.createElement(React.Fragment,null,React.createElement(ResponsiveContainer,{breakpoint:">xs",webOnly:true},React.createElement(CartItemsHeaderWide,{editable:editable,isOrderDetails:isOrderDetails,isDirectShipOnly:isDirectShipOnly,isCheckoutConfirmation:isCheckoutConfirmation})),React.createElement(CardList,{className:items},!isOrderDetails?React.createElement(ResponsiveContainer,{appAlways:true,breakpoint:"<=xs"},React.createElement(FulfillmentSlotSwitcher,{renderBar:true,card:true,editable:editable})):null,editable&&!isDirectShipOnly&&React.createElement(ResponsiveContainer,{breakpoint:"<=xs",appAlways:true},React.createElement(CartItemsSubstitution,{cartItems:cartItems,wrapCard:true,className:card})),cartItems.map(function(item){return React.createElement(CardList.Item,{className:card,key:item.id},React.createElement(CartItemProvider,{cartItem:item,isEditable:editable,isOrderDetails:isOrderDetails,cartIsDirectShipOnly:isDirectShipOnly,isCheckoutConfirmation:isCheckoutConfirmation,locationId:item.fulfillmentLocationId},React.createElement("ul",null,React.createElement(CartItemCard,{multiLineReservation:multiLineReservation,fulfillmentLocationId:item.fulfillmentLocationId,fulfillmentMethod:item.fulfillmentMethod,hasMessages:Array.isArray(item.messages)&&item.messages.length>0},React.createElement(CartItem,{item:item,onFocus:onFocus,editable:editable,currencyOverride:currencyOverride})))));})));}CartItems.defaultProps={cartItems:null,multiLineReservation:null,editable:true,isOrderDetails:false,isDirectShipOnly:false,isCheckoutConfirmation:false,currencyOverride:null};export default hot(CartItems);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{css}from'glamor';import{themeVariables,themeColors}from'@shopgate/pwa-common/helpers/config';var gap=themeVariables.gap;export var items=css({background:"var(--color-background-accent, ".concat(themeColors.background,")"),padding:"".concat(gap.small*1.5,"px ").concat(gap.small*1.5,"px ").concat(gap.big,"px"),marginBottom:"-".concat(gap.small*1.5,"px")});export var card=css({background:themeColors.light,marginBottom:gap.small*1.5,':last-of-type':{marginBottom:0},border:"1px solid ".concat(themeColors.shade7),boxSizing:'border-box',boxShadow:'0px 4px 2px rgba(0, 0, 0, 0.05)',borderRadius:5}).toString();
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
import{connect}from'react-redux';import{hasLineItemPromotions}from'@shopgate/engage/cart';import{makeGetEnabledFulfillmentMethodsCount}from'@shopgate/engage/core/config';/**
|
|
2
|
+
* @return {Function} The extended component props.
|
|
3
|
+
*/var makeMapStateToProps=function makeMapStateToProps(){var getEnabledFulfillmentMethodsCount=makeGetEnabledFulfillmentMethodsCount();return function(state,_ref){var isOrderDetails=_ref.isOrderDetails,isCheckoutConfirmation=_ref.isCheckoutConfirmation;var isCart=!isOrderDetails&&!isCheckoutConfirmation;return{enabledFulfillmentMethodsCount:getEnabledFulfillmentMethodsCount(state),hasLineItemPromotions:isCart&&hasLineItemPromotions(state)};};};export default connect(makeMapStateToProps);
|
|
@@ -0,0 +1,3 @@
|
|
|
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;}import React,{Fragment}from'react';import classNames from'classnames';import{hot}from'react-hot-loader/root';import{I18n}from'@shopgate/engage/components';import{header,column,priceColumnWide,imageColumn,detailsColumn,locationColumn,contextMenuColumn,quantityPickerColumn,quantityPickerColumnNotEditable}from"./CartItemsHeaderWide.style";import connect from"./CartItemsHeaderWide.connector";/**
|
|
2
|
+
* @returns {JSX}
|
|
3
|
+
*/var CartItemsHeaderWide=function CartItemsHeaderWide(_ref){var editable=_ref.editable,isOrderDetails=_ref.isOrderDetails,enabledFulfillmentMethodsCount=_ref.enabledFulfillmentMethodsCount,hasLineItemPromotions=_ref.hasLineItemPromotions,isDirectShipOnly=_ref.isDirectShipOnly;return React.createElement("div",{className:header},React.createElement("div",{className:imageColumn},React.createElement(I18n.Text,{string:"cart.items"})),React.createElement("div",{className:detailsColumn}),React.createElement("div",{className:classNames(column.toString(),_defineProperty({},priceColumnWide,hasLineItemPromotions))},React.createElement(I18n.Text,{string:"cart.price"})),isOrderDetails&&React.createElement(Fragment,null,!isDirectShipOnly?React.createElement("div",{className:locationColumn},React.createElement(I18n.Text,{string:"cart.location"})):null,React.createElement("div",{className:column},React.createElement(I18n.Text,{string:"cart.status"})),React.createElement("div",{className:column},React.createElement(I18n.Text,{string:"cart.fulfilled_quantity"}))),React.createElement("div",{className:editable?quantityPickerColumn:quantityPickerColumnNotEditable},React.createElement(I18n.Text,{string:isOrderDetails?'cart.ordered_quantity':'cart.quantity'})),React.createElement("div",{className:column},React.createElement(I18n.Text,{string:"cart.subtotal"})),editable&&enabledFulfillmentMethodsCount>1&&React.createElement("div",{className:contextMenuColumn}));};CartItemsHeaderWide.defaultProps={editable:true,isOrderDetails:false,isDirectShipOnly:false,hasLineItemPromotions:false};export default hot(connect(CartItemsHeaderWide));
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{css}from'glamor';import{themeConfig}from'@shopgate/pwa-common/helpers/config';var variables=themeConfig.variables;export var header=css({display:'flex',flexDirection:'row',justifyContent:'space-between',fontWeight:500,fontSize:'1rem',lineHeight:'1.5rem',padding:"0 ".concat(variables.gap.big,"px ").concat(variables.gap.small,"px ").concat(variables.gap.big,"px")});export var column=css({display:'flex',alignItems:'center',flexDirection:'column',flexShrink:0,flexGrow:1,flexBasis:0,padding:"0 ".concat(variables.gap.small,"px"),textAlign:'center',':last-child':{paddingRight:variables.gap.small}});export var priceColumnWide=css({flexGrow:4,alignItems:'flex-end'}).toString();export var imageColumn=css({flexGrow:0,width:120,margin:"0 ".concat(variables.gap.small,"px 0 ").concat(variables.gap.big,"px"),paddingLeft:0});export var detailsColumn=css(column,{flexShrink:1,flexGrow:3,alignItems:'flex-start',padding:"0 ".concat(variables.gap.small,"px")});export var locationColumn=css(column,{flexGrow:2});export var quantityPickerColumn=css(column,{' > *':{width:140,textAlign:'center'}});export var quantityPickerColumnNotEditable=css(column,{' > *':{textAlign:'center'}});export var contextMenuColumn=css({width:variables.gap.xbig+variables.gap.small});
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import{connect}from'react-redux';import updateProductsInCart from'@shopgate/pwa-common-commerce/cart/actions/updateProductsInCart';/**
|
|
2
|
+
* Connects the dispatch function to a callable function in the props.
|
|
3
|
+
* @param {Function} dispatch The redux dispatch function.
|
|
4
|
+
* @return {Object} The extended component props.
|
|
5
|
+
*/var mapDispatchToProps={updateProductsInCart:updateProductsInCart};export default connect(null,mapDispatchToProps);
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import React,{useMemo,useCallback}from'react';import PropTypes from'prop-types';import{i18n}from'@shopgate/engage/core';import{CardList}from'@shopgate/engage/components';import Substitution,{SubstitutionWrapper}from"../Substitution";import connect from"./CartItemsSubscription.connector";/**
|
|
2
|
+
* Renders the cart reservation card label.
|
|
3
|
+
* @param {Object} props The component props.
|
|
4
|
+
* @returns {JSX}
|
|
5
|
+
*/var CartItemsSubstitution=function CartItemsSubstitution(_ref){var cartItems=_ref.cartItems,updateProductsInCart=_ref.updateProductsInCart,className=_ref.className,wrapCard=_ref.wrapCard;var allAllowed=useMemo(function(){return cartItems.every(function(item){return item.substitutionAllowed;});},[cartItems]);var handleChange=useCallback(function(){return updateProductsInCart(cartItems.map(function(item){return{cartItemId:item.id,substitutionAllowed:!allAllowed};}));},[allAllowed,cartItems,updateProductsInCart]);if(wrapCard){return React.createElement(SubstitutionWrapper,null,React.createElement(CardList.Item,{className:className},React.createElement(Substitution,{id:"substitution-all",label:i18n.text('cart.allow_substitution_all'),checked:allAllowed,onChange:handleChange})));}return React.createElement(SubstitutionWrapper,null,React.createElement(Substitution,{className:className,id:"substitution-all",label:i18n.text('cart.allow_substitution_all'),checked:allAllowed,onChange:handleChange}));};CartItemsSubstitution.defaultProps={className:undefined,wrapCard:false};export default connect(CartItemsSubstitution);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export{default as CartItemGroup}from"./CartItemGroup";export{default as CartItems}from"./CartItems";
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import{connect}from'react-redux';import{getDiscounts,getShippingCost,getSubTotal,getGrandTotal,getTax}from'@shopgate/pwa-common-commerce/cart/selectors';/**
|
|
2
|
+
* Creates the mapStateToProps connector function.
|
|
3
|
+
* @returns {Function}
|
|
4
|
+
*/var makeMapStateToProps=function makeMapStateToProps(){return function(state,props){return{discounts:getDiscounts(state,props),shippingCosts:getShippingCost(state,props),subTotal:getSubTotal(state,props),grandTotal:getGrandTotal(state,props),tax:getTax(state,props)};};};export default connect(makeMapStateToProps);
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import React from'react';import{hot}from'react-hot-loader/root';import{i18n}from'@shopgate/engage/core';import{container,headline,summary,total,grandTotal}from"./CartSummaryWide.style";import PaymentBarSubTotal from"../PaymentBar/PaymentBarSubTotal";import PaymentBarGrandTotal from"../PaymentBar/PaymentBarGrandTotal";import PaymentBarShippingCost from"../PaymentBar/PaymentBarShippingCost";import PaymentBarDiscounts from"../PaymentBar/PaymentBarDiscounts";import PaymentBarTax from"../PaymentBar/PaymentBarTax";import PaymentBarAppliedPromotions from"../PaymentBar/PaymentBarAppliedPromotions";import PaymentBarPromotionCoupons from"../PaymentBar/PaymentBarPromotionCoupons";import CartSummaryWideCheckoutButton from"./CartSummaryWideCheckoutButton";import CartSummaryWideFooter from"./CartSummaryWideFooter";/**
|
|
2
|
+
* @param {Object} The component props
|
|
3
|
+
* @returns {JSX}
|
|
4
|
+
*/var CartSummaryWide=function CartSummaryWide(){return React.createElement("div",{className:container},React.createElement("h2",{className:headline},i18n.text('checkout.summary.headline')),React.createElement("div",{className:summary},React.createElement(PaymentBarSubTotal,{showSeparator:false,label:"cart.subtotal",className:total}),React.createElement(PaymentBarAppliedPromotions,{showSeparator:false,className:total}),React.createElement(PaymentBarPromotionCoupons,{showSeparator:false,className:total}),React.createElement(PaymentBarDiscounts,{showSeparator:false,className:total}),React.createElement(PaymentBarShippingCost,{showSeparator:false,className:total}),React.createElement(PaymentBarTax,{showSeparator:false,className:total}),React.createElement(PaymentBarGrandTotal,{showSeparator:false,label:"cart.grand_total",className:grandTotal})),React.createElement(CartSummaryWideCheckoutButton,null),React.createElement(CartSummaryWideFooter,null));};export default hot(CartSummaryWide);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{css}from'glamor';import{themeConfig}from'@shopgate/pwa-common/helpers/config';var variables=themeConfig.variables,colors=themeConfig.colors;export var container=css({display:'flex',flexDirection:'column',alignSelf:'flex-end',padding:variables.gap.big,width:420});export var headline=css({fontSize:'1.25rem',fontWeight:500,lineHeight:'1.5rem'});export var summary=css({background:'var(--color-background-accent)',padding:variables.gap.big});export var total=css({fontSize:'1rem',padding:"".concat(variables.gap.small,"px 0"),color:'var(--color-text-high-emphasis)'}).toString();export var grandTotal=css({fontSize:'1.25rem !important',fontWeight:500,borderTop:"1px solid ".concat(colors.shade4),padding:"".concat(variables.gap.small,"px 0"),color:'var(--color-text-high-emphasis)','&:last-child':{paddingBottom:0}}).toString();
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import{connect}from'react-redux';import{getOrderableStatus}from'@shopgate/pwa-common-commerce/cart/selectors';/**
|
|
2
|
+
* Maps the contents of the state to the component props.
|
|
3
|
+
* @param {Object} state The current application state.
|
|
4
|
+
* @return {Object} The extended component props.
|
|
5
|
+
*/var mapStateToProps=function mapStateToProps(state){return{isOrderable:getOrderableStatus(state)};};export default connect(mapStateToProps);
|
|
@@ -0,0 +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;}import React,{useContext,useMemo}from'react';import classNames from'classnames';import I18n from'@shopgate/pwa-common/components/I18n';import Link from'@shopgate/pwa-common/components/Link';import{SurroundPortals}from'@shopgate/engage/components';import{CART_CHECKOUT_BUTTON}from'@shopgate/pwa-common-commerce/cart/constants/Portals';import RippleButton from'@shopgate/pwa-ui-shared/RippleButton';import{CHECKOUT_PATH}from'@shopgate/pwa-common/constants/RoutePaths';import{CartContext}from"../../cart.context";import{container,button,disabledButton}from"./CartSummaryWideCheckoutButton.style";import connect from"./CartSummaryWideCheckoutButton.connector";/**
|
|
2
|
+
* @param {Object} props The component props
|
|
3
|
+
* @returns {JSX}
|
|
4
|
+
*/var CartSummaryWideCheckoutButton=function CartSummaryWideCheckoutButton(_ref){var isOrderable=_ref.isOrderable;var _useContext=useContext(CartContext),isLoading=_useContext.isLoading;var isActive=useMemo(function(){return isOrderable&&!isLoading;},[isLoading,isOrderable]);var classes=classNames(button,_defineProperty({},disabledButton,!isActive));return React.createElement("div",{className:container},React.createElement(SurroundPortals,{portalName:CART_CHECKOUT_BUTTON,portalProps:{isActive:isActive}},React.createElement(Link,{href:CHECKOUT_PATH,disabled:!isActive},React.createElement(RippleButton,{disabled:!isActive,type:"regular",className:classes},React.createElement(I18n.Text,{string:"cart.checkout"})))));};CartSummaryWideCheckoutButton.defaultProps={isOrderable:true};export default connect(CartSummaryWideCheckoutButton);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{css}from'glamor';import{themeConfig}from'@shopgate/pwa-common/helpers/config';var colors=themeConfig.colors,variables=themeConfig.variables;export var container=css({display:'flex',flexDirection:'column'});export var button=css({width:'100%',background:"var(--color-button-cta, ".concat(colors.cta,")"),color:"var(--color-button-cta-contrast, ".concat(colors.ctaContrast,")!important"),borderRadius:4,margin:"".concat(variables.gap.big,"px 0")}).toString();export var disabledButton=css({background:colors.shade7,color:"".concat(colors.shade4,"!important")}).toString();
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
import React,{useContext}from'react';import{CartContext}from"../../cart.context";import{FLAG_MULTI_LINE_RESERVE}from"../../cart.constants";import{SupplementalContent}from"../SupplementalContent";/**
|
|
2
|
+
* @returns {JSX}
|
|
3
|
+
*/var CartSummaryWideFooter=function CartSummaryWideFooter(){var _useContext=useContext(CartContext),flags=_useContext.flags;if(!flags[FLAG_MULTI_LINE_RESERVE]){return null;}return React.createElement(SupplementalContent,null);};export default CartSummaryWideFooter;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export{default as CartSummaryWide}from"./CartSummaryWide";
|