@evenicanpm/storefront-core 1.0.4 → 1.0.5
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/package.json +8 -10
- package/src/api-manager/datasources/d365/d365-address.datasource.ts +2 -2
- package/src/api-manager/datasources/d365/d365-cart.datasource.ts +3 -3
- package/src/api-manager/datasources/d365/d365-categories.datasource.ts +2 -2
- package/src/api-manager/datasources/d365/d365-order.datasource.ts +3 -3
- package/src/api-manager/datasources/d365/d365-organization.datasource.ts +2 -2
- package/src/api-manager/datasources/d365/d365-product.datasource.ts +5 -5
- package/src/api-manager/datasources/d365/d365-session.datasource.ts +2 -2
- package/src/api-manager/datasources/d365/d365-user.datasource.ts +2 -2
- package/src/api-manager/datasources/d365/d365.datasource.ts +8 -8
- package/src/api-manager/datasources/d365/index.ts +2 -2
- package/src/api-manager/datasources/e4/address/e4-address.datasource.ts +4 -4
- package/src/api-manager/datasources/e4/address/e4-address.remaps.ts +1 -1
- package/src/api-manager/datasources/e4/address/e4-address.translator.ts +7 -3
- package/src/api-manager/datasources/e4/cart/e4-cart.datasource.ts +7 -7
- package/src/api-manager/datasources/e4/cart/e4-cart.remaps.ts +7 -3
- package/src/api-manager/datasources/e4/cart/e4-cart.translator.ts +2 -2
- package/src/api-manager/datasources/e4/categories/e4-categories.datasource.ts +2 -2
- package/src/api-manager/datasources/e4/categories/e4-categories.translator.ts +1 -1
- package/src/api-manager/datasources/e4/e4.datasource.ts +9 -9
- package/src/api-manager/datasources/e4/graphqlRequestSdk.ts +2175 -138
- package/src/api-manager/datasources/e4/order/e4-order.datasource.ts +6 -3
- package/src/api-manager/datasources/e4/order/e4-order.remaps.ts +2 -2
- package/src/api-manager/datasources/e4/organization/e4-organization.datasource.ts +1 -1
- package/src/api-manager/datasources/e4/product/e4-product.datasource.ts +4 -4
- package/src/api-manager/datasources/e4/product/e4-product.remaps.ts +2 -2
- package/src/api-manager/datasources/e4/product/e4-product.translator.ts +3 -3
- package/src/api-manager/datasources/e4/session/e4-session.datasource.ts +2 -2
- package/src/api-manager/datasources/e4/session/e4-session.translator.ts +1 -1
- package/src/api-manager/datasources/e4/user/e4-user.datasource.ts +4 -4
- package/src/api-manager/datasources/e4/user/e4-user.remaps.ts +5 -2
- package/src/api-manager/datasources/e4/user/e4-user.translator.ts +5 -2
- package/src/api-manager/datasources/e4/utils/unwrap-e4-variants.ts +6 -2
- package/src/api-manager/index.ts +4 -4
- package/src/api-manager/lib/get-graphql-client.ts +1 -1
- package/src/api-manager/schemas/address.schema.ts +1 -1
- package/src/api-manager/schemas/cart.schema.ts +1 -1
- package/src/api-manager/schemas/order.schema.ts +1 -1
- package/src/api-manager/schemas/organization.schema.ts +1 -1
- package/src/api-manager/schemas/product.schema.ts +1 -1
- package/src/api-manager/schemas/session.schema.ts +2 -2
- package/src/api-manager/schemas/user.schema.ts +1 -1
- package/src/api-manager/services/address/mutations/create-address.ts +2 -2
- package/src/api-manager/services/address/mutations/delete-address.ts +2 -2
- package/src/api-manager/services/address/mutations/get-delivery-options.ts +2 -2
- package/src/api-manager/services/address/mutations/update-address.ts +2 -2
- package/src/api-manager/services/address/queries/get-countries.ts +2 -2
- package/src/api-manager/services/address/queries/get-states.ts +4 -1
- package/src/api-manager/services/cart/mutations/add-discount-code.ts +3 -3
- package/src/api-manager/services/cart/mutations/add-to-cart.ts +3 -3
- package/src/api-manager/services/cart/mutations/checkout.ts +2 -2
- package/src/api-manager/services/cart/mutations/delete-cart-line.ts +3 -3
- package/src/api-manager/services/cart/mutations/get-payment-accept-result.ts +2 -2
- package/src/api-manager/services/cart/mutations/remove-cart-line-delivery-mode.ts +3 -3
- package/src/api-manager/services/cart/mutations/remove-discount-code.ts +3 -3
- package/src/api-manager/services/cart/mutations/update-cart-line-delivery-mode.ts +3 -3
- package/src/api-manager/services/cart/mutations/update-cart-lines.ts +3 -3
- package/src/api-manager/services/cart/mutations/update-cart.ts +3 -3
- package/src/api-manager/services/cart/queries/get-cart-lines-inventory.ts +4 -1
- package/src/api-manager/services/cart/queries/get-cart.ts +2 -2
- package/src/api-manager/services/cart/queries/get-payment-accept-point.ts +4 -1
- package/src/api-manager/services/categories/queries/get-categories.ts +5 -2
- package/src/api-manager/services/create-mutation.ts +2 -2
- package/src/api-manager/services/create-query.ts +2 -2
- package/src/api-manager/services/order/queries/get-order-details.ts +4 -1
- package/src/api-manager/services/order/queries/get-orders.ts +4 -1
- package/src/api-manager/services/organization/queries/get-channel-configuration.ts +4 -1
- package/src/api-manager/services/organization/queries/get-stores.ts +4 -1
- package/src/api-manager/services/product/mutations/search-products.ts +1 -1
- package/src/api-manager/services/product/queries/get-product-availability.ts +4 -1
- package/src/api-manager/services/product/queries/get-product-by-id.ts +5 -2
- package/src/api-manager/services/product/queries/get-product-by-ids.ts +5 -2
- package/src/api-manager/services/product/queries/get-product-list.ts +4 -1
- package/src/api-manager/services/product/queries/get-product-prices.ts +4 -1
- package/src/api-manager/services/product/queries/get-related-products.ts +5 -2
- package/src/api-manager/services/product/queries/search-products.ts +4 -1
- package/src/api-manager/services/product/server/product.server.ts +2 -2
- package/src/api-manager/services/session/mutations/session-init.ts +2 -2
- package/src/api-manager/services/session/mutations/session-logout.ts +2 -2
- package/src/api-manager/services/session/queries/get-session.ts +4 -1
- package/src/api-manager/services/user/mutations/add-to-wishlist.ts +5 -3
- package/src/api-manager/services/user/mutations/copy-cart-to-wishlist.ts +2 -2
- package/src/api-manager/services/user/mutations/create-wishlist.ts +2 -2
- package/src/api-manager/services/user/mutations/delete-wishlist.ts +3 -3
- package/src/api-manager/services/user/mutations/remove-from-wishlist.ts +6 -4
- package/src/api-manager/services/user/mutations/update-user.ts +2 -2
- package/src/api-manager/services/user/mutations/update-wishlist.ts +2 -2
- package/src/api-manager/services/user/queries/get-user-counts.ts +4 -1
- package/src/api-manager/services/user/queries/get-user.ts +4 -1
- package/src/api-manager/services/user/queries/get-wishlist-details.ts +4 -1
- package/src/api-manager/services/user/queries/get-wishlists.ts +4 -1
- package/src/api-manager/types/Datasource.ts +2 -2
- package/src/auth/auth-options.test.ts +1 -1
- package/src/auth/auth-options.ts +1 -1
- package/src/auth/providers/index.ts +3 -3
- package/src/auth/refresh-token.ts +2 -2
- package/src/cms/blocks/{BlockManager.tsx → block-manager.tsx} +2 -2
- package/src/cms/blocks/{Components/BrandLogosScroller.tsx → components/brand-logos-scroller.tsx} +1 -1
- package/src/cms/blocks/{Components/CategoryCarousel → components/category-carousel}/index.tsx +3 -3
- package/src/cms/blocks/{Components/FeaturePill.tsx → components/feature-pill.tsx} +1 -1
- package/src/cms/blocks/{Components/FeaturedCategories.tsx → components/featured-categories.tsx} +2 -2
- package/src/cms/blocks/{Components/FeaturedProducts.tsx → components/featured-products.tsx} +2 -2
- package/src/cms/blocks/{Components/Footer → components/footer}/index.tsx +7 -4
- package/src/cms/blocks/{Components/Footer/sections/FooterContact.tsx → components/footer/sections/footer-contact.tsx} +3 -3
- package/src/cms/blocks/{Components/Footer/sections/FooterLinks.tsx → components/footer/sections/footer-links.tsx} +5 -2
- package/src/cms/blocks/{Components/Footer/sections/FooterSocialLinks.tsx → components/footer/sections/footer-social-links.tsx} +1 -1
- package/src/cms/blocks/{Components/Footer.tsx → components/footer.tsx} +1 -1
- package/src/cms/blocks/{Components/HeroCarousel → components/hero-carousel}/index.tsx +1 -1
- package/src/cms/blocks/{Components/Hero.tsx → components/hero.tsx} +1 -1
- package/src/cms/blocks/{Components/Image.tsx → components/image.tsx} +1 -1
- package/src/cms/blocks/{Components/ProductCarousel → components/product-carousel}/index.tsx +2 -2
- package/src/cms/blocks/{Components/ProductSectionFullWidth → components/product-section-fullwidth}/index.tsx +2 -2
- package/src/cms/blocks/{Components/Seo → components/seo}/index.tsx +1 -1
- package/src/cms/blocks/{Components/Services → components/services}/index.tsx +2 -2
- package/src/cms/blocks/{Components/Services → components/services}/service-card.tsx +1 -1
- package/src/cms/blocks/{Icons → icons}/index.ts +7 -7
- package/src/cms/blocks/index.tsx +15 -15
- package/src/cms/blog.ts +2 -2
- package/src/cms/endpoints.ts +1 -1
- package/src/cms/interfaces/navigation.ts +9 -9
- package/src/cms/pages.ts +1 -1
- package/src/components-v2/BazaarMenu.tsx +2 -0
- package/src/components-v2/BazaarTextField.tsx +1 -1
- package/src/components-v2/DropZone.tsx +4 -1
- package/src/components-v2/ImageWithFallback.tsx +1 -1
- package/src/components-v2/accordion/index.ts +1 -1
- package/src/components-v2/carousel/carousel.tsx +3 -3
- package/src/components-v2/carousel/components/carousel-arrows.tsx +1 -1
- package/src/components-v2/carousel/components/carousel-dots.tsx +4 -1
- package/src/components-v2/carousel/index.ts +1 -1
- package/src/components-v2/carousel-cards/carousel-card-1/carousel-card-1.tsx +1 -1
- package/src/components-v2/carousel-cards/carousel-card-1/index.ts +1 -1
- package/src/components-v2/categories/category-list/category-list.tsx +7 -4
- package/src/components-v2/categories/category-list/index.ts +1 -1
- package/src/components-v2/categories/category-list/styles.ts +1 -1
- package/src/components-v2/categories/category-list-item/category-menu-item.tsx +1 -1
- package/src/components-v2/categories/category-list-item/index.ts +1 -1
- package/src/components-v2/categories/category-menu.tsx +1 -1
- package/src/components-v2/categories/mega-menu/column-list.tsx +1 -1
- package/src/components-v2/categories/mega-menu/mega-menu-1.tsx +2 -2
- package/src/components-v2/categories/mega-menu/mega-menu-2.tsx +4 -4
- package/src/components-v2/flex-box/index.ts +3 -3
- package/src/components-v2/header/{components → __tests__}/user.test.tsx +51 -29
- package/src/components-v2/header/components/mobile-header.tsx +3 -3
- package/src/components-v2/header/components/user.tsx +8 -5
- package/src/components-v2/header/header.tsx +8 -5
- package/src/components-v2/header/index.ts +1 -1
- package/src/components-v2/header/sticky-header.tsx +1 -1
- package/src/components-v2/mini-cart/__tests__/cart-item.test.tsx +31 -40
- package/src/components-v2/mini-cart/__tests__/mini-cart.test.tsx +7 -8
- package/src/components-v2/mini-cart/index.ts +1 -1
- package/src/components-v2/mini-cart/mini-cart-trigger.tsx +1 -1
- package/src/components-v2/mini-cart/mini-cart.tsx +7 -7
- package/src/components-v2/mobile-navigation/index.ts +1 -1
- package/src/components-v2/mobile-navigation/mobile-navigation-bar.tsx +6 -1
- package/src/components-v2/nav-link/index.ts +3 -3
- package/src/components-v2/navbar/categories.tsx +1 -1
- package/src/components-v2/navbar/category-based-menu/category-based-menu.tsx +2 -2
- package/src/components-v2/navbar/category-based-menu/index.ts +1 -1
- package/src/components-v2/navbar/index.ts +1 -1
- package/src/components-v2/navbar/mega-menu/index.ts +1 -1
- package/src/components-v2/navbar/mega-menu/mega-menu.tsx +6 -1
- package/src/components-v2/navbar/mobile-menu/index.ts +1 -1
- package/src/components-v2/navbar/mobile-menu/mobile-menu.test.tsx +7 -13
- package/src/components-v2/navbar/mobile-menu/mobile-menu.tsx +1 -1
- package/src/components-v2/navbar/nav-list/cms-nav.test.tsx +16 -10
- package/src/components-v2/navbar/nav-list/index.ts +1 -1
- package/src/components-v2/navbar/nav-list/nav-item-child.tsx +4 -1
- package/src/components-v2/navbar/nav-list/nav-list.tsx +8 -4
- package/src/components-v2/navbar/navbar.tsx +6 -3
- package/src/components-v2/navbar/utils/transform-nav.test.ts +4 -1
- package/src/components-v2/product-cards/product-card/components/hover-actions.tsx +1 -1
- package/src/components-v2/product-cards/product-card/index.ts +1 -1
- package/src/components-v2/product-cards/product-card/product-card.tsx +10 -6
- package/src/components-v2/product-cards/product-card-plp/index.ts +1 -1
- package/src/components-v2/product-cards/product-card-plp/product-card.tsx +5 -5
- package/src/components-v2/product-cards/product-card-plp-list/index.ts +1 -1
- package/src/components-v2/product-cards/product-card-plp-list/product-card.tsx +7 -8
- package/src/components-v2/product-cards/product-card-search/index.ts +1 -1
- package/src/components-v2/product-cards/product-card-search/product-card.tsx +2 -2
- package/src/components-v2/product-dialog/compound/product-dialog.tsx +61 -45
- package/src/components-v2/product-dialog/index.tsx +1 -2
- package/src/components-v2/product-dimensions/compound/dimensions-group-error.tsx +3 -3
- package/src/components-v2/product-dimensions/compound/dimensions-group-label.tsx +1 -1
- package/src/components-v2/product-dimensions/compound/dimensions-group-list-chip.tsx +1 -1
- package/src/components-v2/product-dimensions/compound/dimensions-group-list.tsx +2 -2
- package/src/components-v2/product-dimensions/compound/dimensions-group.tsx +3 -3
- package/src/components-v2/product-dimensions/compound/dimensions.tsx +1 -1
- package/src/components-v2/product-dimensions/index.tsx +1 -1
- package/src/components-v2/product-quantity-buttons/compound/quantity-buttons-root.tsx +1 -1
- package/src/components-v2/product-quantity-buttons/index.tsx +2 -2
- package/src/components-v2/products-view/compound/products-grid-view.tsx +2 -2
- package/src/components-v2/products-view/compound/products-list-view.tsx +2 -2
- package/src/components-v2/products-view/compound/types.ts +1 -1
- package/src/components-v2/products-view/index.tsx +2 -2
- package/src/components-v2/progress/index.ts +1 -1
- package/src/components-v2/scrollbar/index.ts +1 -1
- package/src/components-v2/scrollbar/scrollbar.tsx +1 -1
- package/src/components-v2/search-bar/compound/results-item-lg.tsx +4 -1
- package/src/components-v2/search-bar/compound/results-item-sm.tsx +4 -1
- package/src/components-v2/search-bar/compound/results-suspense.tsx +4 -4
- package/src/components-v2/search-bar/compound/results.tsx +5 -2
- package/src/components-v2/search-bar/compound/search-bar-root.tsx +5 -5
- package/src/components-v2/search-bar/compound/textfield-adornment-category.tsx +2 -2
- package/src/components-v2/search-bar/compound/textfield.tsx +5 -5
- package/src/components-v2/search-bar/index.tsx +1 -1
- package/src/components-v2/section/compound/section-header.tsx +6 -3
- package/src/components-v2/section/compound/section.tsx +1 -1
- package/src/components-v2/section/index.ts +1 -1
- package/src/components-v2/side-nav/index.ts +1 -1
- package/src/components-v2/sticky/index.ts +1 -1
- package/src/components-v2/sticky/sticky.tsx +1 -1
- package/src/components-v2/wishlist-dialogs/__tests__/create-new-list.test.tsx +82 -0
- package/src/components-v2/wishlist-dialogs/__tests__/wishlistDetailData.json +280 -0
- package/src/components-v2/wishlist-dialogs/__tests__/wishlistsData.json +38 -0
- package/src/components-v2/wishlist-dialogs/add-to-wishlist/add-to-wishlist-button.tsx +1 -1
- package/src/components-v2/wishlist-dialogs/add-to-wishlist/compound/add-to-wishlist-bottom-ui.tsx +1 -1
- package/src/components-v2/wishlist-dialogs/add-to-wishlist/compound/add-to-wishlist-dialog.tsx +4 -4
- package/src/components-v2/wishlist-dialogs/add-to-wishlist/compound/add-to-wishlist-list.tsx +5 -2
- package/src/components-v2/wishlist-dialogs/add-to-wishlist/compound/context.ts +1 -1
- package/src/components-v2/wishlist-dialogs/add-to-wishlist/compound/wishlist-dialog-header.tsx +1 -1
- package/src/components-v2/wishlist-dialogs/add-to-wishlist/compound/wishlist-dialog-item.tsx +6 -3
- package/src/components-v2/wishlist-dialogs/add-to-wishlist/hooks/use-add-to-wishlist.ts +1 -1
- package/src/components-v2/wishlist-dialogs/add-to-wishlist/index.tsx +1 -1
- package/src/components-v2/wishlist-dialogs/create-wishlist/compound/create-wishlist-bottom-ui.tsx +1 -1
- package/src/components-v2/wishlist-dialogs/create-wishlist/compound/create-wishlist-dialog.tsx +2 -2
- package/src/components-v2/wishlist-dialogs/create-wishlist/compound/create-wishlist-form.tsx +2 -2
- package/src/components-v2/wishlist-dialogs/create-wishlist/create-wishlist-button.tsx +1 -1
- package/src/components-v2/wishlist-dialogs/create-wishlist/index.tsx +1 -1
- package/src/lib/build-detail-url.ts +1 -1
- package/src/lib/cart-cookie-handler.ts +1 -1
- package/src/pages-v2/account/account-navigation.tsx +183 -0
- package/src/pages-v2/account/addresses/address-form.tsx +187 -186
- package/src/pages-v2/account/addresses/address-item.tsx +118 -56
- package/src/pages-v2/account/dashboard-header.tsx +103 -76
- package/src/pages-v2/account/orders/order-progress.tsx +104 -65
- package/src/pages-v2/account/orders/order-row.tsx +69 -32
- package/src/pages-v2/account/orders/order-summary.tsx +96 -62
- package/src/pages-v2/account/orders/ordered-products.tsx +128 -87
- package/src/pages-v2/account/profile/profile-button.test.tsx +1 -1
- package/src/pages-v2/account/profile/user-info.tsx +59 -34
- package/src/pages-v2/account/wishlist/create-new-list.tsx +181 -127
- package/src/pages-v2/account/wishlist/create-wishlist-button.tsx +16 -3
- package/src/pages-v2/account/wishlist/wishlist-item.tsx +93 -42
- package/src/pages-v2/cart/__tests__/cart-item.test.tsx +225 -0
- package/src/pages-v2/cart/__tests__/cart-with-items.json +811 -0
- package/src/pages-v2/cart/__tests__/checkout-form.test.tsx +148 -0
- package/src/pages-v2/cart/__tests__/conutries.json +19407 -0
- package/src/pages-v2/cart/__tests__/estimate-shipping.test.tsx +86 -0
- package/src/pages-v2/cart/cart-item.tsx +387 -258
- package/src/pages-v2/cart/checkout-form.tsx +141 -48
- package/src/pages-v2/cart/coupon-entry.tsx +121 -58
- package/src/pages-v2/cart/estimate-shipping.tsx +174 -118
- package/src/pages-v2/checkout/checkout-alt-form/checkout-form.tsx +153 -76
- package/src/pages-v2/checkout/checkout-alt-form/checkout-step.tsx +128 -77
- package/src/pages-v2/checkout/checkout-alt-form/index.ts +1 -1
- package/src/pages-v2/checkout/checkout-alt-form/{heading.tsx → step-heading.tsx} +1 -1
- package/src/pages-v2/checkout/checkout-alt-form/steps/address/address-card.tsx +131 -0
- package/src/pages-v2/checkout/checkout-alt-form/steps/address/delivery-address.tsx +450 -0
- package/src/pages-v2/checkout/checkout-alt-form/steps/address/new-address-form.tsx +322 -0
- package/src/pages-v2/checkout/checkout-alt-form/steps/address/styles.ts +27 -0
- package/src/pages-v2/checkout/checkout-alt-form/steps/customer-info/customer-information.tsx +139 -0
- package/src/pages-v2/checkout/checkout-alt-form/{payment-details.tsx → steps/payment/payment-details.tsx} +123 -141
- package/src/pages-v2/checkout/checkout-alt-form/{delivery-date.tsx → steps/shipping/delivery-date.tsx} +3 -3
- package/src/pages-v2/checkout/checkout-alt-form/{delivery-options.tsx → steps/shipping/delivery-options.tsx} +97 -50
- package/src/pages-v2/checkout/checkout-alt-summary/cart-item.tsx +58 -28
- package/src/pages-v2/checkout/checkout-alt-summary/checkout-alt-summary.tsx +69 -22
- package/src/pages-v2/checkout/checkout-alt-summary/index.ts +1 -1
- package/src/pages-v2/checkout/checkout-alt-summary/list-item.tsx +56 -14
- package/src/pages-v2/confirmation/address.tsx +37 -15
- package/src/pages-v2/confirmation/confirmation-summary.tsx +80 -41
- package/src/pages-v2/confirmation/ordered-products.tsx +127 -95
- package/src/pages-v2/product-details/bopis/find-in-store-button.tsx +2 -2
- package/src/pages-v2/product-details/bopis/find-in-store-modal.tsx +4 -4
- package/src/pages-v2/product-details/bopis/pickup-option-select.tsx +1 -1
- package/src/pages-v2/product-details/bopis/store-card/index.ts +1 -1
- package/src/pages-v2/product-details/bopis/store-card/shop-card.tsx +3 -3
- package/src/pages-v2/product-details/frequently-bought.tsx +1 -1
- package/src/pages-v2/product-details/product-filter-card.tsx +2 -2
- package/src/pages-v2/product-details/product-intro/compound/context.ts +1 -4
- package/src/pages-v2/product-details/product-intro/compound/product-info.tsx +6 -3
- package/src/pages-v2/product-details/product-intro/compound/product-intro-images.tsx +6 -3
- package/src/pages-v2/product-details/product-intro/compound/product-intro.tsx +4 -4
- package/src/pages-v2/product-details/product-intro/utils.ts +0 -1
- package/src/pages-v2/product-details/product-review.tsx +5 -2
- package/src/pages-v2/product-details/product-tabs.tsx +1 -1
- package/src/pages-v2/quickorder/context.ts +39 -0
- package/src/pages-v2/quickorder/index.tsx +31 -0
- package/src/pages-v2/quickorder/order-upload.tsx +19 -26
- package/src/pages-v2/quickorder/provider.tsx +187 -0
- package/src/pages-v2/quickorder/quick-order-actions.tsx +30 -0
- package/src/pages-v2/quickorder/quick-order-header.tsx +22 -0
- package/src/pages-v2/quickorder/quick-order-row.tsx +8 -17
- package/src/pages-v2/quickorder/quick-order-table.tsx +63 -0
- package/src/pages-v2/quickorder/quick-order-upload.tsx +20 -0
- package/src/providers/nav-provider/index.tsx +1 -1
- package/src/providers/notifications/notification-context.tsx +1 -1
- package/src/providers/notifications/use-notification.ts +1 -1
- package/tsconfig.json +2 -1
- package/src/api-manager/lib/get-graphql-client.test.ts +0 -106
- package/src/components/_components/header/components/user.test.tsx +0 -200
- package/src/components/_components/mini-cart/__tests__/cart-item.test.tsx +0 -174
- package/src/components/_components/mini-cart/__tests__/mini-cart.test.tsx +0 -121
- package/src/components/_components/mini-cart/__tests__/test-cart-empty.json +0 -84
- package/src/components/_components/mini-cart/__tests__/test-cart-with-item.json +0 -244
- package/src/components/_components/navbar/mobile-menu/render-levels.test.tsx +0 -71
- package/src/components/_components/navbar/nav-list/cms-nav.test.tsx +0 -84
- package/src/components/_components/navbar/utils/transform-nav.test.ts +0 -209
- package/src/components/_components/search-box/__test__/search-input-category.test.tsx +0 -110
- package/src/components/_components/search-box/__test__/search-input.test.tsx +0 -137
- package/src/components/_components/search-box/__test__/search-results.json +0 -165
- package/src/components/_components/search-box/search-input-category.test.tsx +0 -110
- package/src/components/_components/search-box/search-input.test.tsx +0 -41
- package/src/components-v2/bazaar-types.ts +0 -84
- package/src/pages-v2/account/navigation.tsx +0 -87
- package/src/pages-v2/checkout/checkout-alt-form/address-card.tsx +0 -76
- package/src/pages-v2/checkout/checkout-alt-form/customer-information.tsx +0 -94
- package/src/pages-v2/checkout/checkout-alt-form/delivery-address.tsx +0 -174
- package/src/pages-v2/checkout/checkout-alt-form/edit-address-form.tsx +0 -130
- package/src/pages-v2/checkout/checkout-alt-form/new-address-form.tsx +0 -299
- package/src/pages-v2/quickorder/quick-order-form.tsx +0 -346
- /package/src/cms/blocks/{Components/CategoryCard.tsx → components/category-card.tsx} +0 -0
- /package/src/cms/blocks/{Components/Footer → components/footer}/data/index.ts +0 -0
- /package/src/cms/blocks/{Components/Footer → components/footer}/interfaces.ts +0 -0
- /package/src/cms/blocks/{Components/Footer/sections/FooterAppStore.tsx → components/footer/sections/footer-app-store.tsx} +0 -0
- /package/src/cms/blocks/{Components/Footer/sections/FooterLogo.tsx → components/footer/sections/footer-logo.tsx} +0 -0
- /package/src/cms/blocks/{Components/Footer → components/footer}/styles/index.ts +0 -0
- /package/src/cms/blocks/{Components/MediaCard.tsx → components/media-card.tsx} +0 -0
- /package/src/cms/blocks/{Components/RichText.tsx → components/rich-text.tsx} +0 -0
- /package/src/cms/blocks/{Components → components}/shared/featured-product-card.tsx +0 -0
- /package/src/cms/blocks/{Components → components}/shared/product-category-item.tsx +0 -0
- /package/src/cms/blocks/{Components → components}/shared/product-grid.tsx +0 -0
- /package/src/cms/blocks/{Components → components}/shared/top-categories-card.tsx +0 -0
- /package/src/cms/blocks/{Components → components}/shared/top-rating-product-card.tsx +0 -0
- /package/src/cms/blocks/{Icons/Components/Category.tsx → icons/components/category.tsx} +0 -0
- /package/src/cms/blocks/{Icons/Components/DottedStar.tsx → icons/components/dotted-star.tsx} +0 -0
- /package/src/cms/blocks/{Icons/Components/FallbackIcon.tsx → icons/components/fallback-icon.tsx} +0 -0
- /package/src/cms/blocks/{Icons/Components/GiftBox.tsx → icons/components/gift-box.tsx} +0 -0
- /package/src/cms/blocks/{Icons/Components/Light.tsx → icons/components/light.tsx} +0 -0
- /package/src/cms/blocks/{Icons/Components/NewArrival.tsx → icons/components/new-arrival.tsx} +0 -0
- /package/src/cms/blocks/{Icons/Components/RankBadge.tsx → icons/components/rank-badge.tsx} +0 -0
- /package/src/cms/interfaces/{productData.ts → product-data.ts} +0 -0
- /package/src/pages-v2/checkout/checkout-alt-form/{safe-card-preview-data.tsx → steps/payment/safe-card-preview-data.tsx} +0 -0
|
@@ -1,4 +1,6 @@
|
|
|
1
|
-
|
|
1
|
+
"use client";
|
|
2
|
+
|
|
3
|
+
import React, { createContext, useContext, useMemo, useState } from "react";
|
|
2
4
|
import Link from "next/link";
|
|
3
5
|
import {
|
|
4
6
|
Button,
|
|
@@ -8,22 +10,20 @@ import {
|
|
|
8
10
|
Typography,
|
|
9
11
|
TextField,
|
|
10
12
|
} from "@mui/material";
|
|
11
|
-
|
|
12
13
|
import { useTranslations } from "next-intl";
|
|
13
|
-
// MUI
|
|
14
|
+
// MUI Icons
|
|
14
15
|
import Add from "@mui/icons-material/Add";
|
|
15
16
|
import Close from "@mui/icons-material/Close";
|
|
16
17
|
import Remove from "@mui/icons-material/Remove";
|
|
17
|
-
//
|
|
18
|
+
// Local components
|
|
18
19
|
import {
|
|
19
20
|
H6,
|
|
20
21
|
Span,
|
|
21
22
|
Tiny,
|
|
22
23
|
} from "@evenicanpm/storefront-core/src/components-v2/Typography";
|
|
23
|
-
import { FlexBox } from "@evenicanpm/storefront-core/src/components-v2/flex-box
|
|
24
|
+
import { FlexBox } from "@evenicanpm/storefront-core/src/components-v2/flex-box";
|
|
24
25
|
import Image from "@evenicanpm/storefront-core/src/components-v2/ImageWithFallback";
|
|
25
|
-
|
|
26
|
-
import { Wrapper } from "./wrapper";
|
|
26
|
+
import { Wrapper } from "@evenicanpm/storefront-core/src/pages-v2/cart/wrapper";
|
|
27
27
|
// API
|
|
28
28
|
import { ProductDimensionType } from "@msdyn365-commerce/retail-proxy";
|
|
29
29
|
import useUpdateCartLines from "@evenicanpm/storefront-core/src/api-manager/services/cart/mutations/update-cart-lines";
|
|
@@ -33,280 +33,409 @@ import { CartLine } from "@evenicanpm/storefront-core/src/api-manager/schemas/ca
|
|
|
33
33
|
import useCurrencyFormatter from "@evenicanpm/storefront-core/src/lib/currency-formatter";
|
|
34
34
|
import { getProductDetailUrl } from "@evenicanpm/storefront-core/src/lib/build-product-detail-url";
|
|
35
35
|
|
|
36
|
-
|
|
37
|
-
type Props = {
|
|
36
|
+
type CartItemContextValue = {
|
|
38
37
|
cartLine: CartLine;
|
|
39
38
|
cartId: string;
|
|
40
39
|
cartVersion: number;
|
|
41
|
-
|
|
40
|
+
qty: number;
|
|
41
|
+
isLoading: boolean;
|
|
42
|
+
|
|
43
|
+
// local UI state for comment editing
|
|
44
|
+
isWritingComment: boolean;
|
|
45
|
+
setIsWritingComment: (b: boolean) => void;
|
|
46
|
+
comment: string;
|
|
47
|
+
setComment: (v: string) => void;
|
|
48
|
+
|
|
49
|
+
// actions
|
|
50
|
+
increase: () => void;
|
|
51
|
+
decrease: () => void;
|
|
52
|
+
remove: () => void;
|
|
53
|
+
saveComment: () => void;
|
|
54
|
+
cancelComment: () => void;
|
|
42
55
|
};
|
|
43
|
-
// =========================================================
|
|
44
56
|
|
|
45
|
-
|
|
57
|
+
const CartItemContext = createContext<CartItemContextValue | null>(null);
|
|
58
|
+
|
|
59
|
+
// --------------------
|
|
60
|
+
// Root
|
|
61
|
+
// --------------------
|
|
62
|
+
type CartItemProps = {
|
|
63
|
+
cartLine: CartLine;
|
|
64
|
+
cartId: string;
|
|
65
|
+
cartVersion: number;
|
|
66
|
+
children: React.ReactNode;
|
|
67
|
+
};
|
|
68
|
+
|
|
69
|
+
function CartItemRoot({
|
|
46
70
|
cartLine,
|
|
47
71
|
cartId,
|
|
48
72
|
cartVersion,
|
|
49
|
-
|
|
50
|
-
}:
|
|
73
|
+
children,
|
|
74
|
+
}: CartItemProps) {
|
|
51
75
|
const [isWritingComment, setIsWritingComment] = useState(false);
|
|
52
76
|
const [comment, setComment] = useState(cartLine.Comment || "");
|
|
53
|
-
|
|
77
|
+
|
|
54
78
|
const { mutate: updateCartLine, isPending: updatePending } =
|
|
55
79
|
useUpdateCartLines();
|
|
56
80
|
const { mutate: deleteCartLine, isPending: deletePending } =
|
|
57
81
|
useDeleteCartLine();
|
|
58
|
-
const { formatCurrency } = useCurrencyFormatter();
|
|
59
|
-
const handleCartAmountChange = (cartLineChange: CartLine) => () => {
|
|
60
|
-
if (cartLineChange.Quantity === 0) {
|
|
61
|
-
deleteCartLine({
|
|
62
|
-
cartLine: [cartLineChange],
|
|
63
|
-
cartId,
|
|
64
|
-
version: cartVersion,
|
|
65
|
-
});
|
|
66
|
-
} else {
|
|
67
|
-
updateCartLine({
|
|
68
|
-
cartLine: [cartLineChange],
|
|
69
|
-
cartId,
|
|
70
|
-
version: cartVersion,
|
|
71
|
-
});
|
|
72
|
-
}
|
|
73
|
-
};
|
|
74
82
|
|
|
75
|
-
const
|
|
76
|
-
|
|
77
|
-
return (
|
|
78
|
-
<Span fontWeight={600} color="primary.main">
|
|
79
|
-
<s data-testid={"discount-strikethru"}>
|
|
80
|
-
{formatCurrency(cartLine.NetPrice ?? 0)}
|
|
81
|
-
</s>
|
|
82
|
-
</Span>
|
|
83
|
-
);
|
|
84
|
-
}
|
|
83
|
+
const qty = cartLine.Quantity || 1;
|
|
84
|
+
const isLoading = updatePending || deletePending;
|
|
85
85
|
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
{formatCurrency(cartLine.NetPrice ?? 0)}
|
|
89
|
-
</Span>
|
|
90
|
-
);
|
|
86
|
+
const performUpdate = (updated: CartLine) => {
|
|
87
|
+
updateCartLine({ cartLine: [updated], cartId, version: cartVersion });
|
|
91
88
|
};
|
|
92
89
|
|
|
93
|
-
const
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
{formatCurrency(cartLine.TotalAmount ?? 0)}
|
|
98
|
-
</Span>
|
|
99
|
-
);
|
|
100
|
-
}
|
|
90
|
+
const increase = () => performUpdate({ ...cartLine, Quantity: qty + 1 });
|
|
91
|
+
const decrease = () => {
|
|
92
|
+
if (qty === 1) return;
|
|
93
|
+
performUpdate({ ...cartLine, Quantity: qty - 1 });
|
|
101
94
|
};
|
|
95
|
+
const remove = () =>
|
|
96
|
+
deleteCartLine({
|
|
97
|
+
cartLine: [{ ...cartLine, Quantity: 0 }],
|
|
98
|
+
cartId,
|
|
99
|
+
version: cartVersion,
|
|
100
|
+
});
|
|
101
|
+
|
|
102
|
+
const saveComment = () => {
|
|
103
|
+
performUpdate({ ...cartLine, Comment: comment });
|
|
104
|
+
setIsWritingComment(false);
|
|
105
|
+
};
|
|
106
|
+
const cancelComment = () => {
|
|
107
|
+
setComment(cartLine.Comment || "");
|
|
108
|
+
setIsWritingComment(false);
|
|
109
|
+
};
|
|
110
|
+
|
|
111
|
+
const value = useMemo<CartItemContextValue>(
|
|
112
|
+
() => ({
|
|
113
|
+
cartLine,
|
|
114
|
+
cartId,
|
|
115
|
+
cartVersion,
|
|
116
|
+
qty,
|
|
117
|
+
isLoading,
|
|
118
|
+
isWritingComment,
|
|
119
|
+
setIsWritingComment,
|
|
120
|
+
comment,
|
|
121
|
+
setComment,
|
|
122
|
+
increase,
|
|
123
|
+
decrease,
|
|
124
|
+
remove,
|
|
125
|
+
saveComment,
|
|
126
|
+
cancelComment,
|
|
127
|
+
}),
|
|
128
|
+
[cartLine, cartId, cartVersion, qty, isLoading, isWritingComment, comment],
|
|
129
|
+
);
|
|
102
130
|
|
|
103
|
-
const shouldDisplaySpinner = () => updatePending || deletePending;
|
|
104
|
-
const qty = cartLine.Quantity || 1;
|
|
105
131
|
return (
|
|
106
|
-
<
|
|
107
|
-
<
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
+
<CartItemContext.Provider value={value}>
|
|
133
|
+
<Wrapper>{children}</Wrapper>
|
|
134
|
+
</CartItemContext.Provider>
|
|
135
|
+
);
|
|
136
|
+
}
|
|
137
|
+
|
|
138
|
+
// --------------------
|
|
139
|
+
// Wrapper subcomponents
|
|
140
|
+
// -------------------
|
|
141
|
+
|
|
142
|
+
CartItemRoot.Body = ({ children }: { children: React.ReactNode }) => {
|
|
143
|
+
return (
|
|
144
|
+
<FlexBox p={2} rowGap={2} width="100%" flexDirection="column">
|
|
145
|
+
{children}
|
|
146
|
+
</FlexBox>
|
|
147
|
+
);
|
|
148
|
+
};
|
|
149
|
+
|
|
150
|
+
CartItemRoot.Row = ({ children }: { children: React.ReactNode }) => {
|
|
151
|
+
return (
|
|
152
|
+
<FlexBox width="100%" sx={{ flexDirection: { xs: "column", md: "row" } }}>
|
|
153
|
+
{children}
|
|
154
|
+
</FlexBox>
|
|
155
|
+
);
|
|
156
|
+
};
|
|
157
|
+
|
|
158
|
+
CartItemRoot.Left = ({ children }: { children: React.ReactNode }) => {
|
|
159
|
+
return (
|
|
160
|
+
<FlexBox rowGap={2} width="100%" flexDirection="column">
|
|
161
|
+
{children}
|
|
162
|
+
</FlexBox>
|
|
163
|
+
);
|
|
164
|
+
};
|
|
165
|
+
|
|
166
|
+
CartItemRoot.Right = ({ children }: { children: React.ReactNode }) => {
|
|
167
|
+
return (
|
|
168
|
+
<FlexBox width="100%" flexDirection="column" mt={1}>
|
|
169
|
+
{children}
|
|
170
|
+
</FlexBox>
|
|
171
|
+
);
|
|
172
|
+
};
|
|
173
|
+
|
|
174
|
+
// --------------------
|
|
175
|
+
// Functional subcomponents
|
|
176
|
+
// --------------------
|
|
177
|
+
CartItemRoot.Image = () => {
|
|
178
|
+
const ctx = useContext(CartItemContext);
|
|
179
|
+
if (!ctx) return null;
|
|
180
|
+
const { cartLine } = ctx;
|
|
181
|
+
return (
|
|
182
|
+
<Box className="img-wrapper">
|
|
183
|
+
<Image
|
|
184
|
+
alt={cartLine.Product?.Name || ""}
|
|
185
|
+
width={150}
|
|
186
|
+
height={150}
|
|
187
|
+
src={cartLine.Product?.PrimaryImageUrl || ""}
|
|
188
|
+
/>
|
|
189
|
+
</Box>
|
|
190
|
+
);
|
|
191
|
+
};
|
|
192
|
+
|
|
193
|
+
CartItemRoot.RemoveButton = () => {
|
|
194
|
+
const ctx = useContext(CartItemContext);
|
|
195
|
+
if (!ctx) return null;
|
|
196
|
+
const { remove } = ctx;
|
|
197
|
+
const t = useTranslations("Cart.CartLine");
|
|
198
|
+
return (
|
|
199
|
+
<IconButton
|
|
200
|
+
size="small"
|
|
201
|
+
onClick={remove}
|
|
202
|
+
sx={{ position: "absolute", right: 15, top: 15 }}
|
|
203
|
+
title={t("removeItem")}
|
|
204
|
+
aria-label={t("removeItem")}
|
|
205
|
+
>
|
|
206
|
+
<Close fontSize="small" />
|
|
207
|
+
</IconButton>
|
|
208
|
+
);
|
|
209
|
+
};
|
|
210
|
+
|
|
211
|
+
CartItemRoot.Title = () => {
|
|
212
|
+
const ctx = useContext(CartItemContext);
|
|
213
|
+
if (!ctx) return null;
|
|
214
|
+
const { cartLine } = ctx;
|
|
215
|
+
if (!cartLine.Product) return null;
|
|
216
|
+
return (
|
|
217
|
+
<Link href={getProductDetailUrl(cartLine.Product)}>
|
|
218
|
+
<Span ellipsis fontWeight="600" fontSize={18}>
|
|
219
|
+
{cartLine.Product.Name}
|
|
220
|
+
</Span>
|
|
221
|
+
</Link>
|
|
222
|
+
);
|
|
223
|
+
};
|
|
224
|
+
|
|
225
|
+
CartItemRoot.Dimensions = () => {
|
|
226
|
+
const ctx = useContext(CartItemContext);
|
|
227
|
+
if (!ctx) return null;
|
|
228
|
+
const { cartLine } = ctx;
|
|
229
|
+
const dims = cartLine.Product?.Dimensions || [];
|
|
230
|
+
if (!dims.length) return null;
|
|
231
|
+
|
|
232
|
+
return (
|
|
233
|
+
<Span ellipsis fontWeight="200" fontSize={14}>
|
|
234
|
+
{dims.map((d, i) => (
|
|
235
|
+
<span key={i}>
|
|
236
|
+
{`${ProductDimensionType[d.DimensionTypeValue]}: ${d?.DimensionValue?.Value}${
|
|
237
|
+
i + 1 !== dims.length ? " | " : ""
|
|
238
|
+
} `}
|
|
239
|
+
</span>
|
|
240
|
+
))}
|
|
241
|
+
</Span>
|
|
242
|
+
);
|
|
243
|
+
};
|
|
244
|
+
|
|
245
|
+
CartItemRoot.Price = () => {
|
|
246
|
+
const ctx = useContext(CartItemContext);
|
|
247
|
+
if (!ctx) return null;
|
|
248
|
+
const { cartLine } = ctx;
|
|
249
|
+
const { formatCurrency } = useCurrencyFormatter();
|
|
250
|
+
|
|
251
|
+
const hasDiscount = (cartLine.DiscountLines?.length ?? 0) > 0;
|
|
252
|
+
const qty = cartLine.Quantity ?? 1;
|
|
253
|
+
|
|
254
|
+
return (
|
|
255
|
+
<>
|
|
256
|
+
<FlexBox gap={1} flexWrap="wrap" alignItems="center">
|
|
257
|
+
<Span color="grey.600">
|
|
258
|
+
{formatCurrency(cartLine.Price ?? 0)} x {qty}{" "}
|
|
259
|
+
<Tiny>{cartLine.UnitOfMeasureSymbol}</Tiny>
|
|
260
|
+
</Span>
|
|
261
|
+
|
|
262
|
+
{hasDiscount ? (
|
|
263
|
+
<>
|
|
264
|
+
<Span fontWeight={600} color="primary.main">
|
|
265
|
+
<s data-testid="discount-strikethru">
|
|
266
|
+
{formatCurrency(cartLine.NetPrice ?? 0)}
|
|
267
|
+
</s>
|
|
268
|
+
</Span>
|
|
269
|
+
<Span fontWeight={600} color="primary.main">
|
|
270
|
+
{formatCurrency(cartLine.TotalAmount ?? 0)}
|
|
132
271
|
</Span>
|
|
133
|
-
|
|
272
|
+
</>
|
|
273
|
+
) : (
|
|
274
|
+
<Span fontWeight={600} color="primary.main">
|
|
275
|
+
{formatCurrency(cartLine.NetPrice ?? 0)}
|
|
276
|
+
</Span>
|
|
134
277
|
)}
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
>
|
|
139
|
-
|
|
140
|
-
<Span
|
|
141
|
-
{
|
|
142
|
-
<span
|
|
143
|
-
key={i}
|
|
144
|
-
>{`${ProductDimensionType[d.DimensionTypeValue]}: ${
|
|
145
|
-
d?.DimensionValue?.Value
|
|
146
|
-
} ${
|
|
147
|
-
i + 1 !== cartLine?.Product?.Dimensions?.length ? "|" : ""
|
|
148
|
-
} `}</span>
|
|
149
|
-
))}
|
|
278
|
+
</FlexBox>
|
|
279
|
+
|
|
280
|
+
{!!cartLine.DiscountLines?.length && (
|
|
281
|
+
<FlexBox gap={1} flexWrap="wrap" alignItems="center">
|
|
282
|
+
{cartLine.DiscountLines?.map((d, i) => (
|
|
283
|
+
<Span key={i} color="error.main">
|
|
284
|
+
{d.DiscountCode} - {d.OfferName}
|
|
150
285
|
</Span>
|
|
151
|
-
|
|
152
|
-
<FlexBox gap={1} flexWrap="wrap" alignItems="center">
|
|
153
|
-
<Span color="grey.600">
|
|
154
|
-
{formatCurrency(cartLine.Price ?? 0)} x {cartLine.Quantity}
|
|
155
|
-
<Tiny>{cartLine.UnitOfMeasureSymbol}</Tiny>
|
|
156
|
-
</Span>
|
|
157
|
-
{renderTotalPrice()}
|
|
158
|
-
{renderDiscountPrice()}
|
|
159
|
-
</FlexBox>
|
|
160
|
-
|
|
161
|
-
<FlexBox gap={1} flexWrap="wrap" alignItems="center">
|
|
162
|
-
{cartLine.DiscountLines?.map((discount, index) => (
|
|
163
|
-
<Span key={index} color="error.main">
|
|
164
|
-
{discount.DiscountCode} - {discount.OfferName}
|
|
165
|
-
</Span>
|
|
166
|
-
))}
|
|
167
|
-
</FlexBox>
|
|
168
|
-
|
|
169
|
-
{/* PRODUCT QUANTITY INC/DEC BUTTONS */}
|
|
170
|
-
{!shouldDisplaySpinner() ? (
|
|
171
|
-
<FlexBox alignItems="center">
|
|
172
|
-
<Button
|
|
173
|
-
color="primary"
|
|
174
|
-
sx={{ p: "5px" }}
|
|
175
|
-
variant="outlined"
|
|
176
|
-
disabled={qty === 1}
|
|
177
|
-
onClick={handleCartAmountChange({
|
|
178
|
-
...cartLine,
|
|
179
|
-
Quantity: qty - 1,
|
|
180
|
-
})}
|
|
181
|
-
title={t("decreaseQuantity")}
|
|
182
|
-
aria-label={t("decreaseQuantity")}
|
|
183
|
-
>
|
|
184
|
-
<Remove fontSize="small" />
|
|
185
|
-
</Button>
|
|
186
|
-
|
|
187
|
-
<Span mx={1} fontWeight={600} fontSize={15}>
|
|
188
|
-
{qty}
|
|
189
|
-
</Span>
|
|
190
|
-
|
|
191
|
-
<Button
|
|
192
|
-
color="primary"
|
|
193
|
-
sx={{ p: "5px" }}
|
|
194
|
-
variant="outlined"
|
|
195
|
-
onClick={handleCartAmountChange({
|
|
196
|
-
...cartLine,
|
|
197
|
-
Quantity: qty + 1,
|
|
198
|
-
})}
|
|
199
|
-
title={t("increaseQuantity")}
|
|
200
|
-
aria-label={t("increaseQuantity")}
|
|
201
|
-
>
|
|
202
|
-
<Add fontSize="small" />
|
|
203
|
-
</Button>
|
|
204
|
-
</FlexBox>
|
|
205
|
-
) : (
|
|
206
|
-
<CircularProgress size={30} />
|
|
207
|
-
)}
|
|
208
|
-
</FlexBox>
|
|
209
|
-
{/* CART LINE COMMENTS */}
|
|
210
|
-
{showCartLineComments && (
|
|
211
|
-
<FlexBox width="100%" flexDirection="column" mt={1}>
|
|
212
|
-
{isWritingComment ? (
|
|
213
|
-
<>
|
|
214
|
-
<TextField
|
|
215
|
-
label={t("addComment")}
|
|
216
|
-
variant="outlined"
|
|
217
|
-
multiline
|
|
218
|
-
minRows={2}
|
|
219
|
-
maxRows={2}
|
|
220
|
-
fullWidth
|
|
221
|
-
value={comment}
|
|
222
|
-
onChange={(e) => setComment(e.target.value)}
|
|
223
|
-
sx={{ marginBottom: 1 }}
|
|
224
|
-
/>
|
|
225
|
-
<FlexBox
|
|
226
|
-
flexDirection="row"
|
|
227
|
-
sx={{ marginTop: "auto", marginLeft: "auto" }}
|
|
228
|
-
>
|
|
229
|
-
<Button
|
|
230
|
-
color="primary"
|
|
231
|
-
variant="outlined"
|
|
232
|
-
sx={{
|
|
233
|
-
width: "100px",
|
|
234
|
-
}}
|
|
235
|
-
onClick={() => {
|
|
236
|
-
setIsWritingComment(false);
|
|
237
|
-
setComment(cartLine.Comment || "");
|
|
238
|
-
}}
|
|
239
|
-
>
|
|
240
|
-
{t("cancelComment")}
|
|
241
|
-
</Button>
|
|
242
|
-
<Button
|
|
243
|
-
color="primary"
|
|
244
|
-
variant="contained"
|
|
245
|
-
sx={{
|
|
246
|
-
width: "150px",
|
|
247
|
-
marginLeft: 1,
|
|
248
|
-
}}
|
|
249
|
-
onClick={() => {
|
|
250
|
-
handleCartAmountChange({
|
|
251
|
-
...cartLine,
|
|
252
|
-
Comment: comment,
|
|
253
|
-
})();
|
|
254
|
-
setIsWritingComment(false);
|
|
255
|
-
}}
|
|
256
|
-
>
|
|
257
|
-
{t("saveComment")}
|
|
258
|
-
</Button>
|
|
259
|
-
</FlexBox>
|
|
260
|
-
</>
|
|
261
|
-
) : shouldDisplaySpinner() ? (
|
|
262
|
-
<CircularProgress
|
|
263
|
-
size={30}
|
|
264
|
-
sx={{ marginTop: "auto", marginLeft: "auto" }}
|
|
265
|
-
/>
|
|
266
|
-
) : (
|
|
267
|
-
<>
|
|
268
|
-
<Typography
|
|
269
|
-
sx={{
|
|
270
|
-
marginBottom: 1,
|
|
271
|
-
marginTop: "auto",
|
|
272
|
-
// marginLeft: "auto",
|
|
273
|
-
maxWidth: {
|
|
274
|
-
xs: "250px",
|
|
275
|
-
lg: "350px",
|
|
276
|
-
},
|
|
277
|
-
whiteSpace: "nowrap",
|
|
278
|
-
overflow: "hidden",
|
|
279
|
-
textOverflow: "ellipsis",
|
|
280
|
-
}}
|
|
281
|
-
title={cartLine.Comment || ""}
|
|
282
|
-
>
|
|
283
|
-
{cartLine.Comment ? (
|
|
284
|
-
<>
|
|
285
|
-
<H6 sx={{ display: "inline" }}>
|
|
286
|
-
{t("commentLabel")}:{" "}
|
|
287
|
-
</H6>
|
|
288
|
-
{cartLine.Comment}
|
|
289
|
-
</>
|
|
290
|
-
) : null}
|
|
291
|
-
</Typography>
|
|
292
|
-
<Button
|
|
293
|
-
color="primary"
|
|
294
|
-
variant="outlined"
|
|
295
|
-
sx={{
|
|
296
|
-
width: "150px",
|
|
297
|
-
marginTop: "auto",
|
|
298
|
-
marginLeft: "auto",
|
|
299
|
-
}}
|
|
300
|
-
onClick={() => setIsWritingComment(true)}
|
|
301
|
-
>
|
|
302
|
-
{t("addComment")}
|
|
303
|
-
</Button>
|
|
304
|
-
</>
|
|
305
|
-
)}
|
|
306
|
-
</FlexBox>
|
|
307
|
-
)}
|
|
286
|
+
))}
|
|
308
287
|
</FlexBox>
|
|
309
|
-
|
|
310
|
-
|
|
288
|
+
)}
|
|
289
|
+
</>
|
|
311
290
|
);
|
|
312
|
-
}
|
|
291
|
+
};
|
|
292
|
+
|
|
293
|
+
CartItemRoot.Quantity = () => {
|
|
294
|
+
const ctx = useContext(CartItemContext);
|
|
295
|
+
if (!ctx) return null;
|
|
296
|
+
const { qty, increase, decrease, isLoading } = ctx;
|
|
297
|
+
const t = useTranslations("Cart.CartLine");
|
|
298
|
+
|
|
299
|
+
if (isLoading) return <CircularProgress size={30} />;
|
|
300
|
+
|
|
301
|
+
return (
|
|
302
|
+
<FlexBox alignItems="center">
|
|
303
|
+
<Button
|
|
304
|
+
color="primary"
|
|
305
|
+
sx={{ p: "5px" }}
|
|
306
|
+
variant="outlined"
|
|
307
|
+
disabled={qty === 1}
|
|
308
|
+
onClick={decrease}
|
|
309
|
+
title={t("decreaseQuantity")}
|
|
310
|
+
aria-label={t("decreaseQuantity")}
|
|
311
|
+
>
|
|
312
|
+
<Remove fontSize="small" />
|
|
313
|
+
</Button>
|
|
314
|
+
|
|
315
|
+
<Span mx={1} fontWeight={600} fontSize={15}>
|
|
316
|
+
{qty}
|
|
317
|
+
</Span>
|
|
318
|
+
|
|
319
|
+
<Button
|
|
320
|
+
color="primary"
|
|
321
|
+
sx={{ p: "5px" }}
|
|
322
|
+
variant="outlined"
|
|
323
|
+
onClick={increase}
|
|
324
|
+
title={t("increaseQuantity")}
|
|
325
|
+
aria-label={t("increaseQuantity")}
|
|
326
|
+
>
|
|
327
|
+
<Add fontSize="small" />
|
|
328
|
+
</Button>
|
|
329
|
+
</FlexBox>
|
|
330
|
+
);
|
|
331
|
+
};
|
|
332
|
+
|
|
333
|
+
CartItemRoot.Comment = () => {
|
|
334
|
+
const ctx = useContext(CartItemContext);
|
|
335
|
+
if (!ctx) return null;
|
|
336
|
+
const {
|
|
337
|
+
isWritingComment,
|
|
338
|
+
setIsWritingComment,
|
|
339
|
+
comment,
|
|
340
|
+
setComment,
|
|
341
|
+
saveComment,
|
|
342
|
+
cancelComment,
|
|
343
|
+
isLoading,
|
|
344
|
+
cartLine,
|
|
345
|
+
} = ctx;
|
|
346
|
+
const t = useTranslations("Cart.CartLine");
|
|
347
|
+
|
|
348
|
+
return (
|
|
349
|
+
<CartItemRoot.Right>
|
|
350
|
+
{isWritingComment ? (
|
|
351
|
+
<>
|
|
352
|
+
<TextField
|
|
353
|
+
label={t("addComment")}
|
|
354
|
+
variant="outlined"
|
|
355
|
+
multiline
|
|
356
|
+
minRows={2}
|
|
357
|
+
maxRows={2}
|
|
358
|
+
fullWidth
|
|
359
|
+
value={comment}
|
|
360
|
+
onChange={(e) => setComment(e.target.value)}
|
|
361
|
+
sx={{ marginBottom: 1 }}
|
|
362
|
+
/>
|
|
363
|
+
<FlexBox
|
|
364
|
+
flexDirection="row"
|
|
365
|
+
sx={{ marginTop: "auto", marginLeft: "auto" }}
|
|
366
|
+
>
|
|
367
|
+
<Button
|
|
368
|
+
color="primary"
|
|
369
|
+
variant="outlined"
|
|
370
|
+
sx={{ width: 100 }}
|
|
371
|
+
onClick={cancelComment}
|
|
372
|
+
>
|
|
373
|
+
{t("cancelComment")}
|
|
374
|
+
</Button>
|
|
375
|
+
<Button
|
|
376
|
+
color="primary"
|
|
377
|
+
variant="contained"
|
|
378
|
+
sx={{ width: 150, ml: 1 }}
|
|
379
|
+
onClick={saveComment}
|
|
380
|
+
>
|
|
381
|
+
{t("saveComment")}
|
|
382
|
+
</Button>
|
|
383
|
+
</FlexBox>
|
|
384
|
+
</>
|
|
385
|
+
) : isLoading ? (
|
|
386
|
+
<CircularProgress
|
|
387
|
+
size={30}
|
|
388
|
+
sx={{ marginTop: "auto", marginLeft: "auto" }}
|
|
389
|
+
/>
|
|
390
|
+
) : (
|
|
391
|
+
<>
|
|
392
|
+
<Typography
|
|
393
|
+
component="div"
|
|
394
|
+
sx={{
|
|
395
|
+
mb: 1,
|
|
396
|
+
mt: "auto",
|
|
397
|
+
maxWidth: { xs: "250px", lg: "350px" },
|
|
398
|
+
whiteSpace: "nowrap",
|
|
399
|
+
overflow: "hidden",
|
|
400
|
+
textOverflow: "ellipsis",
|
|
401
|
+
}}
|
|
402
|
+
title={cartLine.Comment || ""}
|
|
403
|
+
>
|
|
404
|
+
{cartLine.Comment ? (
|
|
405
|
+
<>
|
|
406
|
+
<H6 sx={{ display: "inline" }}>{t("commentLabel")}: </H6>
|
|
407
|
+
{cartLine.Comment}
|
|
408
|
+
</>
|
|
409
|
+
) : null}
|
|
410
|
+
</Typography>
|
|
411
|
+
<Button
|
|
412
|
+
color="primary"
|
|
413
|
+
variant="outlined"
|
|
414
|
+
sx={{ width: 150, mt: "auto", ml: "auto" }}
|
|
415
|
+
onClick={() => setIsWritingComment(true)}
|
|
416
|
+
>
|
|
417
|
+
{t("addComment")}
|
|
418
|
+
</Button>
|
|
419
|
+
</>
|
|
420
|
+
)}
|
|
421
|
+
</CartItemRoot.Right>
|
|
422
|
+
);
|
|
423
|
+
};
|
|
424
|
+
|
|
425
|
+
const CartItem = Object.assign(CartItemRoot, {
|
|
426
|
+
// wrappers
|
|
427
|
+
Body: CartItemRoot.Body,
|
|
428
|
+
Row: CartItemRoot.Row,
|
|
429
|
+
Left: CartItemRoot.Left,
|
|
430
|
+
Right: CartItemRoot.Right,
|
|
431
|
+
// functional parts
|
|
432
|
+
Image: CartItemRoot.Image,
|
|
433
|
+
RemoveButton: CartItemRoot.RemoveButton,
|
|
434
|
+
Title: CartItemRoot.Title,
|
|
435
|
+
Dimensions: CartItemRoot.Dimensions,
|
|
436
|
+
Price: CartItemRoot.Price,
|
|
437
|
+
Quantity: CartItemRoot.Quantity,
|
|
438
|
+
Comment: CartItemRoot.Comment,
|
|
439
|
+
});
|
|
440
|
+
|
|
441
|
+
export default CartItem;
|