@evenicanpm/storefront-core 1.2.1 → 1.3.0
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/.storybook/main.ts +1 -1
- package/.storybook/preview.tsx +5 -4
- package/__mocks__/countries.ts +1 -1
- package/__mocks__/create-query.ts +3 -2
- package/package.json +10 -2
- package/src/api-manager/datasources/d365/d365-address.datasource.ts +13 -11
- package/src/api-manager/datasources/d365/d365-base.datasource.ts +1 -1
- package/src/api-manager/datasources/d365/d365-cart.datasource.ts +37 -37
- package/src/api-manager/datasources/d365/d365-categories.datasource.ts +3 -3
- package/src/api-manager/datasources/d365/d365-order.datasource.ts +10 -9
- package/src/api-manager/datasources/d365/d365-organization.datasource.ts +10 -10
- package/src/api-manager/datasources/d365/d365-product.datasource.ts +28 -29
- package/src/api-manager/datasources/d365/d365-session.datasource.ts +4 -4
- package/src/api-manager/datasources/d365/d365-user.datasource.ts +22 -20
- package/src/api-manager/datasources/d365/d365.datasource.ts +15 -15
- package/src/api-manager/datasources/d365/index.ts +1 -1
- package/src/api-manager/datasources/d365/test-context.ts +1 -1
- package/src/api-manager/datasources/d365/utils/create-search-criteria.ts +1 -1
- package/src/api-manager/datasources/d365/utils/decode-jwt.ts +1 -1
- package/src/api-manager/datasources/d365/utils/get-context-cookie.ts +3 -3
- package/src/api-manager/datasources/d365/utils/product-images-utils.ts +29 -10
- package/src/api-manager/datasources/d365/utils/product-inventory-utils.ts +1 -1
- package/src/api-manager/datasources/e4/address/e4-address.datasource.ts +5 -5
- package/src/api-manager/datasources/e4/address/e4-address.remaps.ts +2 -2
- package/src/api-manager/datasources/e4/address/e4-address.translator.ts +8 -8
- package/src/api-manager/datasources/e4/cart/e4-cart.datasource.ts +10 -11
- package/src/api-manager/datasources/e4/cart/e4-cart.remaps.ts +9 -8
- package/src/api-manager/datasources/e4/cart/e4-cart.translator.ts +3 -3
- package/src/api-manager/datasources/e4/categories/e4-categories.datasource.ts +4 -4
- package/src/api-manager/datasources/e4/categories/e4-categories.translator.ts +4 -4
- package/src/api-manager/datasources/e4/e4.datasource.ts +7 -7
- package/src/api-manager/datasources/e4/graphqlRequestSdk.ts +8500 -39780
- package/src/api-manager/datasources/e4/order/e4-order.datasource.ts +7 -7
- package/src/api-manager/datasources/e4/order/e4-order.remaps.ts +6 -5
- package/src/api-manager/datasources/e4/organization/e4-organization.datasource.ts +5 -4
- package/src/api-manager/datasources/e4/product/e4-product.datasource.ts +12 -11
- package/src/api-manager/datasources/e4/product/e4-product.remaps.ts +1 -1
- package/src/api-manager/datasources/e4/product/e4-product.translator.ts +14 -14
- package/src/api-manager/datasources/e4/session/e4-session.datasource.ts +2 -2
- package/src/api-manager/datasources/e4/session/e4-session.translator.ts +2 -2
- package/src/api-manager/datasources/e4/user/e4-user.datasource.ts +10 -10
- package/src/api-manager/datasources/e4/user/e4-user.remaps.ts +4 -4
- package/src/api-manager/datasources/e4/user/e4-user.translator.ts +6 -4
- package/src/api-manager/datasources/e4/utils/unwrap-e4-variants.ts +2 -2
- package/src/api-manager/index.ts +7 -7
- package/src/api-manager/lib/category-helpers.ts +1 -1
- package/src/api-manager/lib/get-dynamics-context.ts +1 -1
- package/src/api-manager/lib/get-graphql-client.ts +3 -4
- 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/d365.schema.ts +207 -206
- 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 +4 -4
- package/src/api-manager/schemas/session.schema.ts +1 -1
- package/src/api-manager/schemas/user.schema.ts +1 -1
- package/src/api-manager/services/address/mutations/create-address.ts +3 -3
- package/src/api-manager/services/address/mutations/delete-address.ts +2 -2
- package/src/api-manager/services/address/mutations/get-delivery-options.ts +4 -4
- package/src/api-manager/services/address/mutations/update-address.ts +3 -3
- package/src/api-manager/services/address/queries/get-countries.ts +6 -4
- package/src/api-manager/services/address/queries/get-states.ts +3 -3
- package/src/api-manager/services/cart/mutations/add-discount-code.ts +4 -4
- package/src/api-manager/services/cart/mutations/add-to-cart.ts +4 -4
- package/src/api-manager/services/cart/mutations/checkout.ts +2 -2
- package/src/api-manager/services/cart/mutations/delete-cart-line.ts +2 -2
- package/src/api-manager/services/cart/mutations/get-payment-accept-result.ts +4 -4
- 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 +2 -2
- package/src/api-manager/services/cart/mutations/update-cart-line-delivery-mode.ts +2 -2
- package/src/api-manager/services/cart/mutations/update-cart-lines.ts +3 -3
- package/src/api-manager/services/cart/mutations/update-cart.ts +2 -2
- package/src/api-manager/services/cart/queries/get-cart-lines-inventory.ts +2 -2
- package/src/api-manager/services/cart/queries/get-cart.ts +5 -3
- package/src/api-manager/services/cart/queries/get-payment-accept-point.ts +3 -3
- package/src/api-manager/services/categories/queries/get-categories.ts +1 -1
- package/src/api-manager/services/create-extension-query.ts +1 -1
- package/src/api-manager/services/create-mutation.ts +2 -2
- package/src/api-manager/services/create-query.ts +6 -6
- package/src/api-manager/services/get-query-client.ts +2 -2
- package/src/api-manager/services/order/queries/get-order-details.ts +2 -2
- package/src/api-manager/services/order/queries/get-orders.ts +1 -1
- package/src/api-manager/services/organization/queries/get-channel-configuration.ts +1 -1
- package/src/api-manager/services/organization/queries/get-stores.ts +1 -1
- package/src/api-manager/services/product/mutations/search-products.ts +3 -4
- package/src/api-manager/services/product/queries/get-product-availability.ts +2 -2
- package/src/api-manager/services/product/queries/get-product-by-id.ts +1 -1
- package/src/api-manager/services/product/queries/get-product-by-ids.ts +2 -2
- package/src/api-manager/services/product/queries/get-product-list.ts +1 -1
- package/src/api-manager/services/product/queries/get-product-prices.ts +2 -2
- package/src/api-manager/services/product/queries/get-related-products.ts +2 -2
- package/src/api-manager/services/product/queries/search-products.ts +2 -2
- package/src/api-manager/services/product/server/product.server.ts +3 -3
- package/src/api-manager/services/session/mutations/session-init.ts +2 -2
- package/src/api-manager/services/session/mutations/session-logout.ts +1 -1
- package/src/api-manager/services/session/queries/get-session.ts +1 -1
- package/src/api-manager/services/user/mutations/add-to-wishlist.ts +3 -3
- package/src/api-manager/services/user/mutations/copy-cart-to-wishlist.ts +3 -3
- package/src/api-manager/services/user/mutations/create-wishlist.ts +4 -4
- package/src/api-manager/services/user/mutations/delete-wishlist.ts +3 -3
- package/src/api-manager/services/user/mutations/remove-from-wishlist.ts +3 -3
- 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 +1 -1
- package/src/api-manager/services/user/queries/get-user.ts +1 -1
- package/src/api-manager/services/user/queries/get-wishlist-details.ts +1 -1
- package/src/api-manager/services/user/queries/get-wishlists.ts +1 -1
- package/src/api-manager/types/Datasource.ts +23 -23
- package/src/auth/auth-options.test.ts +4 -5
- package/src/auth/auth-options.ts +7 -7
- package/src/auth/msal.ts +4 -1
- package/src/auth/next-auth-cookie-manager.ts +8 -7
- package/src/auth/refresh-token.ts +7 -4
- package/src/cms/blocks/block-manager.tsx +10 -10
- package/src/cms/blocks/components/brand-logos-scroller.tsx +4 -4
- package/src/cms/blocks/components/category-card.tsx +2 -2
- package/src/cms/blocks/components/category-carousel/index.tsx +5 -9
- package/src/cms/blocks/components/feature-pill.tsx +5 -4
- package/src/cms/blocks/components/featured-categories.tsx +5 -2
- package/src/cms/blocks/components/featured-products.tsx +2 -2
- package/src/cms/blocks/components/footer/data/index.ts +6 -3
- package/src/cms/blocks/components/footer/index.tsx +7 -11
- package/src/cms/blocks/components/footer/sections/footer-app-store.tsx +2 -2
- package/src/cms/blocks/components/footer/sections/footer-contact.tsx +3 -3
- package/src/cms/blocks/components/footer/sections/footer-links.tsx +3 -3
- package/src/cms/blocks/components/footer/sections/footer-logo.tsx +3 -3
- package/src/cms/blocks/components/footer/sections/footer-social-links.tsx +9 -9
- package/src/cms/blocks/components/footer/styles/index.ts +1 -1
- package/src/cms/blocks/components/footer.tsx +4 -4
- package/src/cms/blocks/components/hero-carousel/index.tsx +3 -4
- package/src/cms/blocks/components/hero.tsx +4 -5
- package/src/cms/blocks/components/image.tsx +4 -5
- package/src/cms/blocks/components/media-card.tsx +2 -2
- package/src/cms/blocks/components/product-carousel/index.tsx +7 -8
- package/src/cms/blocks/components/product-section-fullwidth/index.tsx +16 -20
- package/src/cms/blocks/components/rich-text.tsx +2 -2
- package/src/cms/blocks/components/seo/index.tsx +2 -2
- package/src/cms/blocks/components/services/index.tsx +4 -4
- package/src/cms/blocks/components/services/service-card.tsx +7 -9
- package/src/cms/blocks/components/shared/featured-product-card.tsx +2 -2
- package/src/cms/blocks/components/shared/product-category-item.tsx +4 -5
- package/src/cms/blocks/components/shared/product-grid.tsx +5 -4
- package/src/cms/blocks/components/shared/top-categories-card.tsx +5 -6
- package/src/cms/blocks/components/shared/top-rating-product-card.tsx +3 -3
- package/src/cms/blocks/icons/components/category.tsx +3 -3
- package/src/cms/blocks/icons/components/dotted-star.tsx +1 -1
- package/src/cms/blocks/icons/components/fallback-icon.tsx +1 -1
- package/src/cms/blocks/icons/components/gift-box.tsx +1 -1
- package/src/cms/blocks/icons/components/light.tsx +1 -1
- package/src/cms/blocks/icons/components/new-arrival.tsx +1 -1
- package/src/cms/blocks/icons/components/rank-badge.tsx +1 -1
- package/src/cms/blocks/icons/index.ts +3 -3
- package/src/cms/blocks/index.tsx +6 -6
- package/src/cms/blog.ts +2 -2
- package/src/cms/endpoints.ts +1 -1
- package/src/components-v2/BazaarCard.stories.tsx +1 -1
- package/src/components-v2/BazaarCard.tsx +1 -1
- package/src/components-v2/BazaarImage.tsx +1 -1
- package/src/components-v2/BazaarMenu.stories.tsx +1 -1
- package/src/components-v2/BazaarMenu.tsx +2 -2
- package/src/components-v2/BazaarSwitch.tsx +1 -1
- package/src/components-v2/BazaarTextField.tsx +2 -2
- package/src/components-v2/BorderShadowCard.stories.tsx +2 -2
- package/src/components-v2/CountryInput.stories.tsx +2 -2
- package/src/components-v2/DropZone.stories.tsx +1 -1
- package/src/components-v2/DropZone.tsx +7 -7
- package/src/components-v2/HoverBox.stories.tsx +1 -1
- package/src/components-v2/ImageWithFallback.tsx +3 -2
- package/src/components-v2/LazyImage.tsx +10 -2
- package/src/components-v2/Loading.tsx +1 -2
- package/src/components-v2/SearchInput.stories.tsx +1 -1
- package/src/components-v2/SearchInput.tsx +2 -2
- package/src/components-v2/SnackbarProvider.tsx +1 -1
- package/src/components-v2/T/index.tsx +1 -1
- package/src/components-v2/Typography.stories.tsx +2 -2
- package/src/components-v2/Typography.tsx +1 -1
- package/src/components-v2/WhiteButton.tsx +2 -2
- package/src/components-v2/accordion/accordion-header.tsx +5 -5
- package/src/components-v2/carousel/Carousel.stories.tsx +1 -1
- package/src/components-v2/carousel/carousel.tsx +4 -4
- package/src/components-v2/carousel/components/carousel-arrows.tsx +4 -4
- package/src/components-v2/carousel/components/carousel-dots.tsx +2 -2
- package/src/components-v2/carousel-cards/carousel-card-1/carousel-card-1.tsx +4 -4
- package/src/components-v2/categories/Categories.stories.tsx +6 -5
- package/src/components-v2/categories/category-list/category-list.tsx +4 -5
- package/src/components-v2/categories/category-list/styles.ts +2 -2
- package/src/components-v2/categories/category-list-item/category-menu-item.tsx +5 -5
- package/src/components-v2/categories/category-menu.tsx +2 -2
- package/src/components-v2/categories/mega-menu/banner.tsx +4 -4
- package/src/components-v2/categories/mega-menu/column-list.tsx +6 -6
- package/src/components-v2/categories/mega-menu/mega-menu-1.tsx +7 -7
- package/src/components-v2/categories/mega-menu/mega-menu-2.tsx +3 -2
- package/src/components-v2/categories/types.ts +1 -1
- package/src/components-v2/countries-input.tsx +2 -2
- package/src/components-v2/flex-box/Flex.stories.tsx +1 -1
- package/src/components-v2/flex-box/flex-between.tsx +1 -1
- package/src/components-v2/flex-box/flex-box.tsx +1 -1
- package/src/components-v2/flex-box/flex-row-center.tsx +1 -1
- package/src/components-v2/flex-box/index.ts +1 -1
- package/src/components-v2/header/__tests__/user.test.tsx +3 -3
- package/src/components-v2/header/components/categories-menu.tsx +6 -6
- package/src/components-v2/header/components/mobile-header.tsx +17 -18
- package/src/components-v2/header/components/user.tsx +24 -23
- package/src/components-v2/header/header.tsx +9 -10
- package/src/components-v2/header/sticky-header.tsx +3 -3
- package/src/components-v2/header/styles/index.ts +3 -2
- package/src/components-v2/mini-cart/__tests__/cart-item.test.tsx +6 -6
- package/src/components-v2/mini-cart/__tests__/mini-cart.test.tsx +7 -7
- package/src/components-v2/mini-cart/components/bottom-actions.tsx +3 -2
- package/src/components-v2/mini-cart/components/cart-item.tsx +13 -12
- package/src/components-v2/mini-cart/components/empty-view.tsx +2 -1
- package/src/components-v2/mini-cart/components/top-header.tsx +6 -5
- package/src/components-v2/mini-cart/mini-cart-trigger.tsx +4 -4
- package/src/components-v2/mini-cart/mini-cart.tsx +11 -12
- package/src/components-v2/mobile-navigation/MobileNavigationBar.stories.tsx +2 -2
- package/src/components-v2/mobile-navigation/mobile-navigation-bar.tsx +14 -14
- package/src/components-v2/mobile-navigation/styles/index.ts +2 -2
- package/src/components-v2/nav-link/nav-link-2.tsx +1 -1
- package/src/components-v2/nav-link/nav-link-3.tsx +3 -3
- package/src/components-v2/nav-link/nav-link.tsx +3 -3
- package/src/components-v2/navbar/categories.tsx +5 -5
- package/src/components-v2/navbar/category-based-menu/category-based-menu.tsx +15 -14
- package/src/components-v2/navbar/category-based-menu/styles.ts +3 -3
- package/src/components-v2/navbar/category-based-menu/types.ts +1 -1
- package/src/components-v2/navbar/mega-menu/mega-menu.tsx +11 -10
- package/src/components-v2/navbar/mega-menu/styles.ts +2 -2
- package/src/components-v2/navbar/mobile-menu/mobile-menu.test.tsx +3 -3
- package/src/components-v2/navbar/mobile-menu/mobile-menu.tsx +10 -10
- package/src/components-v2/navbar/nav-list/cms-nav.test.tsx +4 -4
- package/src/components-v2/navbar/nav-list/nav-item-child.tsx +12 -13
- package/src/components-v2/navbar/nav-list/nav-list.tsx +11 -11
- package/src/components-v2/navbar/navbar.tsx +3 -4
- package/src/components-v2/navbar/styles.ts +4 -4
- package/src/components-v2/navbar/utils/transform-nav.test.ts +3 -3
- package/src/components-v2/navbar/utils/transform-nav.ts +3 -3
- package/src/components-v2/no-records.tsx +2 -2
- package/src/components-v2/product-cards/discount-chip.tsx +1 -1
- package/src/components-v2/product-cards/favorite-button.tsx +2 -2
- package/src/components-v2/product-cards/product-card/ProductCard.stories.tsx +2 -2
- package/src/components-v2/product-cards/product-card/product-card.tsx +38 -38
- package/src/components-v2/product-cards/product-card/styles/index.ts +2 -2
- package/src/components-v2/product-cards/product-card-plp/ProductCardPlp.stories.tsx +2 -2
- package/src/components-v2/product-cards/product-card-plp/product-card.tsx +18 -18
- package/src/components-v2/product-cards/product-card-plp-list/ProductCardPlpList.stories.tsx +1 -1
- package/src/components-v2/product-cards/product-card-plp-list/product-card.tsx +15 -15
- package/src/components-v2/product-cards/product-card-search/ProductCardSearch.stories.tsx +2 -2
- package/src/components-v2/product-cards/product-card-search/product-card.tsx +16 -16
- package/src/components-v2/product-cards/product-price.tsx +1 -1
- package/src/components-v2/product-cards/product-rating.tsx +3 -3
- package/src/components-v2/product-cards/product-title.tsx +1 -1
- package/src/components-v2/product-cards/quantity-buttons.tsx +5 -5
- package/src/components-v2/product-dialog/ProductDialog.stories.tsx +2 -2
- package/src/components-v2/product-dialog/compound/product-dialog.tsx +14 -14
- package/src/components-v2/product-dimensions/Dimensions.stories.tsx +3 -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 +5 -4
- package/src/components-v2/product-dimensions/compound/dimensions-group-list.tsx +1 -1
- package/src/components-v2/product-dimensions/compound/dimensions-group.tsx +3 -4
- package/src/components-v2/product-dimensions/compound/dimensions.tsx +6 -2
- package/src/components-v2/product-dimensions/index.tsx +1 -1
- package/src/components-v2/product-dimensions/utils/has-selected-dimension.ts +1 -1
- package/src/components-v2/product-quantity-buttons/ProductQuantity.stories.tsx +2 -1
- package/src/components-v2/product-quantity-buttons/compound/quantity-buttons-root.tsx +7 -7
- package/src/components-v2/product-quantity-buttons/index.tsx +5 -2
- package/src/components-v2/product-quantity-variants/ProductQuantity.stories.tsx +3 -2
- package/src/components-v2/product-quantity-variants/index.tsx +13 -13
- package/src/components-v2/products-view/ProductsGrid.stories.tsx +3 -2
- package/src/components-v2/products-view/ProductsList.stories.tsx +4 -3
- package/src/components-v2/products-view/compound/context.ts +4 -3
- package/src/components-v2/products-view/compound/products-grid-view.tsx +7 -6
- package/src/components-v2/products-view/compound/products-list-view.tsx +6 -5
- package/src/components-v2/products-view/compound/types.ts +2 -2
- package/src/components-v2/products-view/index.tsx +3 -3
- package/src/components-v2/progress/ProgressBar.stories.tsx +2 -2
- package/src/components-v2/progress/progress.tsx +3 -3
- package/src/components-v2/scrollbar/Scrollbar.stories.tsx +2 -1
- package/src/components-v2/scrollbar/scrollbar.tsx +3 -3
- package/src/components-v2/search-bar/SearchBarLarge.stories.tsx +2 -1
- package/src/components-v2/search-bar/compound/context.ts +2 -3
- package/src/components-v2/search-bar/compound/results-item-lg.tsx +3 -2
- package/src/components-v2/search-bar/compound/results-item-sm.tsx +10 -9
- package/src/components-v2/search-bar/compound/results-suspense.tsx +4 -4
- package/src/components-v2/search-bar/compound/results.tsx +5 -4
- package/src/components-v2/search-bar/compound/search-bar-root.tsx +6 -8
- package/src/components-v2/search-bar/compound/textfield-adornment-category.tsx +7 -6
- package/src/components-v2/search-bar/compound/textfield-adornment-search-icon.tsx +3 -2
- package/src/components-v2/search-bar/compound/textfield.tsx +5 -7
- package/src/components-v2/search-bar/hooks/use-search.ts +1 -2
- package/src/components-v2/search-bar/styles/index.ts +2 -2
- package/src/components-v2/search-bar/utils/findCategoryNameById.ts +1 -1
- package/src/components-v2/section/Section.stories.tsx +3 -3
- package/src/components-v2/section/compound/section-header.tsx +7 -7
- package/src/components-v2/section/compound/section.tsx +4 -3
- package/src/components-v2/side-nav/SideNav.stories.tsx +4 -4
- package/src/components-v2/side-nav/side-nav.tsx +2 -2
- package/src/components-v2/wishlist-dialogs/__tests__/create-new-list.test.tsx +5 -7
- package/src/components-v2/wishlist-dialogs/add-to-wishlist/AddToWishlist.stories.tsx +2 -2
- package/src/components-v2/wishlist-dialogs/add-to-wishlist/add-to-wishlist-button.tsx +2 -2
- package/src/components-v2/wishlist-dialogs/add-to-wishlist/compound/add-to-wishlist-bottom-ui.tsx +3 -3
- package/src/components-v2/wishlist-dialogs/add-to-wishlist/compound/add-to-wishlist-dialog.tsx +7 -8
- package/src/components-v2/wishlist-dialogs/add-to-wishlist/compound/add-to-wishlist-list.tsx +4 -5
- package/src/components-v2/wishlist-dialogs/add-to-wishlist/compound/context.ts +2 -1
- package/src/components-v2/wishlist-dialogs/add-to-wishlist/compound/wishlist-dialog-header.tsx +8 -10
- package/src/components-v2/wishlist-dialogs/add-to-wishlist/compound/wishlist-dialog-item.tsx +6 -6
- package/src/components-v2/wishlist-dialogs/add-to-wishlist/hooks/use-add-to-wishlist.ts +4 -6
- package/src/components-v2/wishlist-dialogs/create-wishlist/compound/create-wishlist-bottom-ui.tsx +3 -3
- package/src/components-v2/wishlist-dialogs/create-wishlist/compound/create-wishlist-dialog.tsx +9 -8
- package/src/components-v2/wishlist-dialogs/create-wishlist/compound/create-wishlist-form.tsx +6 -4
- package/src/components-v2/wishlist-dialogs/create-wishlist/create-wishlist-button.tsx +2 -2
- package/src/components-v2/wishlist-dialogs/styles.ts +4 -4
- package/src/hooks/use-cart.ts +1 -1
- package/src/hooks/use-nextauth-session.ts +65 -0
- package/src/hooks/use-overflow-detect.ts +1 -1
- package/src/hooks/use-settings.ts +1 -1
- package/src/hooks/use-variants.ts +6 -6
- package/src/lib/build-product-detail-url.ts +1 -1
- package/src/lib/cart-cookie-handler.ts +1 -1
- package/src/lib/category-helpers.ts +1 -1
- package/src/lib/create-graphql-client.ts +1 -2
- package/src/lib/get-palette-color.ts +1 -1
- package/src/lib/graphqlRequestSdk.ts +2 -3
- package/src/lib/hexToLuma.ts +2 -2
- package/src/lib/product-list-types.ts +1 -1
- package/src/lib/refiner-utils.ts +1 -1
- package/src/lib/store-hours-helper.ts +1 -1
- package/src/pages-v2/account/account-navigation.tsx +13 -13
- package/src/pages-v2/account/addresses/address-form.tsx +16 -15
- package/src/pages-v2/account/addresses/address-item.tsx +13 -14
- package/src/pages-v2/account/dashboard-header.tsx +9 -9
- package/src/pages-v2/account/orders/order-progress.tsx +13 -13
- package/src/pages-v2/account/orders/order-row.tsx +11 -10
- package/src/pages-v2/account/orders/order-summary.tsx +7 -6
- package/src/pages-v2/account/orders/ordered-products.tsx +18 -17
- package/src/pages-v2/account/profile/profile-button.test.tsx +3 -3
- package/src/pages-v2/account/profile/profile-button.tsx +5 -4
- package/src/pages-v2/account/profile/user-info.tsx +8 -9
- package/src/pages-v2/account/styles.ts +1 -1
- package/src/pages-v2/account/wishlist/create-new-list.tsx +10 -9
- package/src/pages-v2/account/wishlist/create-wishlist-button.tsx +2 -2
- package/src/pages-v2/account/wishlist/wishlist-item.tsx +13 -13
- package/src/pages-v2/blog/blog-card.tsx +58 -0
- package/src/pages-v2/blog/pagination.tsx +1 -2
- package/src/pages-v2/cart/__tests__/cart-item.test.tsx +8 -9
- package/src/pages-v2/cart/__tests__/checkout-form.test.tsx +8 -8
- package/src/pages-v2/cart/__tests__/countries.json +19407 -0
- package/src/pages-v2/cart/__tests__/estimate-shipping.test.tsx +11 -11
- package/src/pages-v2/cart/cart-item.tsx +24 -23
- package/src/pages-v2/cart/checkout-form.tsx +16 -18
- package/src/pages-v2/cart/coupon-entry.tsx +9 -7
- package/src/pages-v2/cart/estimate-shipping.tsx +5 -4
- package/src/pages-v2/checkout/checkout-alt-form/checkout-form.tsx +17 -16
- package/src/pages-v2/checkout/checkout-alt-form/checkout-step.tsx +5 -5
- package/src/pages-v2/checkout/checkout-alt-form/step-heading.tsx +3 -3
- package/src/pages-v2/checkout/checkout-alt-form/steps/address/address-card.tsx +4 -4
- package/src/pages-v2/checkout/checkout-alt-form/steps/address/delivery-address.tsx +21 -21
- package/src/pages-v2/checkout/checkout-alt-form/steps/address/new-address-form.tsx +14 -15
- package/src/pages-v2/checkout/checkout-alt-form/steps/address/styles.ts +1 -1
- package/src/pages-v2/checkout/checkout-alt-form/steps/customer-info/customer-information.tsx +8 -8
- package/src/pages-v2/checkout/checkout-alt-form/steps/payment/payment-details.tsx +8 -8
- package/src/pages-v2/checkout/checkout-alt-form/steps/payment/safe-card-preview-data.tsx +2 -2
- package/src/pages-v2/checkout/checkout-alt-form/steps/shipping/delivery-date.tsx +4 -4
- package/src/pages-v2/checkout/checkout-alt-form/steps/shipping/delivery-options.tsx +19 -19
- package/src/pages-v2/checkout/checkout-alt-summary/cart-item.tsx +2 -2
- package/src/pages-v2/checkout/checkout-alt-summary/checkout-alt-summary.tsx +9 -9
- package/src/pages-v2/checkout/checkout-alt-summary/list-item.tsx +2 -2
- package/src/pages-v2/confirmation/address.tsx +4 -4
- package/src/pages-v2/confirmation/confirmation-summary.tsx +3 -3
- package/src/pages-v2/confirmation/ordered-products.tsx +9 -8
- package/src/pages-v2/product-details/available-shops.tsx +6 -6
- package/src/pages-v2/product-details/bopis/find-in-store-button.tsx +3 -3
- package/src/pages-v2/product-details/bopis/find-in-store-modal.tsx +16 -17
- package/src/pages-v2/product-details/bopis/pickup-option-select.tsx +4 -4
- package/src/pages-v2/product-details/bopis/search-header.tsx +3 -2
- package/src/pages-v2/product-details/bopis/store-card/shop-card.tsx +14 -15
- package/src/pages-v2/product-details/bopis/store-card/utils/getDaysResources.ts +1 -1
- package/src/pages-v2/product-details/checkbox-label.tsx +2 -2
- package/src/pages-v2/product-details/currency.ts +1 -0
- package/src/pages-v2/product-details/frequently-bought.tsx +11 -11
- package/src/pages-v2/product-details/frequently-product-card.tsx +4 -4
- package/src/pages-v2/product-details/product-comment.tsx +3 -3
- package/src/pages-v2/product-details/product-description.tsx +1 -1
- package/src/pages-v2/product-details/product-filter-card.tsx +13 -13
- package/src/pages-v2/product-details/product-intro/compound/context.ts +10 -5
- package/src/pages-v2/product-details/product-intro/compound/product-info.tsx +19 -19
- package/src/pages-v2/product-details/product-intro/compound/product-intro-images.tsx +3 -2
- package/src/pages-v2/product-details/product-intro/compound/product-intro.tsx +6 -6
- package/src/pages-v2/product-details/product-intro/compound/thumbnail-with-skeleton.tsx +1 -1
- package/src/pages-v2/product-details/product-intro/utils.ts +1 -1
- package/src/pages-v2/product-details/product-review.tsx +8 -8
- package/src/pages-v2/product-details/product-tabs.tsx +6 -6
- package/src/pages-v2/product-details/related-products.tsx +5 -5
- package/src/pages-v2/product-list/breadcrumbs.tsx +2 -2
- package/src/pages-v2/product-list/checkbox-label.tsx +2 -2
- package/src/pages-v2/product-list/facet-group.tsx +7 -7
- package/src/pages-v2/product-list/facet.tsx +4 -3
- package/src/pages-v2/product-list/list-filter.tsx +4 -4
- package/src/pages-v2/product-list/pagination.tsx +2 -2
- package/src/pages-v2/product-list/product-list-context.tsx +17 -17
- package/src/pages-v2/product-list/product-list-state.ts +14 -14
- package/src/pages-v2/product-list/product-list-view.tsx +14 -16
- package/src/pages-v2/product-list/product-rating.tsx +2 -2
- package/src/pages-v2/product-list/quick-view-dialog-content.tsx +20 -20
- package/src/pages-v2/product-list/quick-view-dialog.tsx +2 -2
- package/src/pages-v2/product-list/range-filter.tsx +5 -5
- package/src/pages-v2/product-list/scrollbar.tsx +3 -3
- package/src/pages-v2/product-list/search-bar.tsx +12 -12
- package/src/pages-v2/product-list/selected-facets.tsx +4 -4
- package/src/pages-v2/product-list/side-nav.tsx +1 -1
- package/src/pages-v2/product-list/swatch.tsx +3 -4
- package/src/pages-v2/product-list/utils/generate-breadcrumbs.ts +1 -1
- package/src/pages-v2/product-list/utils/product-list-helper.ts +4 -4
- package/src/pages-v2/product-list/utils/product-list-types.ts +1 -1
- package/src/pages-v2/product-list/utils/search-for-category.ts +2 -2
- package/src/pages-v2/product-list/utils/sort-options.ts +1 -1
- package/src/pages-v2/quickorder/order-upload.tsx +2 -2
- package/src/pages-v2/quickorder/provider.tsx +8 -7
- package/src/pages-v2/quickorder/quick-order-header.tsx +1 -1
- package/src/pages-v2/quickorder/quick-order-row.tsx +8 -7
- package/src/pages-v2/quickorder/quick-order-table.tsx +3 -3
- package/src/pages-v2/quickorder/quick-order.tsx +20 -24
- package/src/providers/nav-provider/index.tsx +3 -3
- package/src/providers/nav-provider/utils/createLink.ts +1 -1
- package/src/providers/notifications/notification-context.tsx +3 -3
- package/src/providers/notifications/use-notification.ts +1 -1
- package/tsconfig.json +1 -1
- package/src/components-v2/sticky/Sticky.stories.tsx +0 -88
- package/src/components-v2/sticky/index.ts +0 -1
- package/src/components-v2/sticky/sticky.tsx +0 -62
- package/src/components-v2/sticky/styles.ts +0 -38
- package/src/components-v2/utils/constants.ts +0 -8
- package/src/theme/build-mui-theme.ts +0 -104
- package/src/theme/components.ts +0 -163
- package/src/theme/emotion-cache.tsx +0 -101
- package/src/theme/theme-colors.ts +0 -205
- package/src/theme/theme-options-sample.ts +0 -69
- package/src/theme/theme-options.ts +0 -172
- package/src/theme/theme-provider.tsx +0 -44
- package/src/theme/typography.ts +0 -22
- package/src/theme/utils.ts +0 -17
package/.storybook/main.ts
CHANGED
package/.storybook/preview.tsx
CHANGED
|
@@ -1,12 +1,13 @@
|
|
|
1
1
|
import type { Preview } from "@storybook/react-webpack5";
|
|
2
|
-
import React from "react";
|
|
3
|
-
import ThemeProvider from "../src/theme/theme-provider";
|
|
4
2
|
import { QueryClientProvider } from "@tanstack/react-query";
|
|
5
3
|
import { NextIntlClientProvider } from "next-intl";
|
|
6
|
-
import
|
|
7
|
-
import { queryClient } from "../__mocks__/query-client.ts";
|
|
4
|
+
import React from "react";
|
|
8
5
|
import { sb } from "storybook/test";
|
|
9
6
|
import messages from "../../../../../storefront/messages/en-US.json";
|
|
7
|
+
import { queryClient } from "../__mocks__/query-client.ts";
|
|
8
|
+
import { NotificationProvider } from "../src/providers/notifications/notification-context.tsx";
|
|
9
|
+
import ThemeProvider from "../src/theme/theme-provider";
|
|
10
|
+
|
|
10
11
|
// Mock messages or import your actual ones
|
|
11
12
|
|
|
12
13
|
if (typeof global.process === "undefined") {
|
package/__mocks__/countries.ts
CHANGED
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
import { useQuery } from "@tanstack/react-query";
|
|
2
|
-
import wishlists from "../__mocks__/wishlists.json";
|
|
3
2
|
import categories from "../__mocks__/data/categories.json";
|
|
4
3
|
import { data as products } from "../__mocks__/products";
|
|
4
|
+
import wishlists from "../__mocks__/wishlists.json";
|
|
5
|
+
|
|
5
6
|
const cartBase = {
|
|
6
7
|
Id: "cart-123",
|
|
7
8
|
Version: 1,
|
|
@@ -13,7 +14,7 @@ const cartBase = {
|
|
|
13
14
|
},
|
|
14
15
|
],
|
|
15
16
|
};
|
|
16
|
-
|
|
17
|
+
const cart = cartBase;
|
|
17
18
|
|
|
18
19
|
const shippingInventoryData = {
|
|
19
20
|
AggregatedProductInventoryAvailabilities: [
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@evenicanpm/storefront-core",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.3.0",
|
|
4
4
|
"description": "Core module for D365/e4 Headless Storefront",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"scripts": {
|
|
@@ -15,6 +15,9 @@
|
|
|
15
15
|
},
|
|
16
16
|
"author": "Evenica",
|
|
17
17
|
"license": "ISC",
|
|
18
|
+
"dependencies": {
|
|
19
|
+
"@evenicanpm/ui": "^1.3.0"
|
|
20
|
+
},
|
|
18
21
|
"devDependencies": {
|
|
19
22
|
"@storybook/addon-docs": "^9.1.6",
|
|
20
23
|
"@storybook/addon-webpack5-compiler-swc": "^4.0.1",
|
|
@@ -41,5 +44,10 @@
|
|
|
41
44
|
"typescript": "^5.8.3",
|
|
42
45
|
"zod": "^3.25.25"
|
|
43
46
|
},
|
|
44
|
-
"
|
|
47
|
+
"overrides": {
|
|
48
|
+
"@storybook/builder-manager": {
|
|
49
|
+
"esbuild": "0.19.11"
|
|
50
|
+
}
|
|
51
|
+
},
|
|
52
|
+
"gitHead": "074f33378006dfc21ceb49456806a18dbb6e91ad"
|
|
45
53
|
}
|
|
@@ -1,28 +1,30 @@
|
|
|
1
1
|
/* eslint-disable @typescript-eslint/no-explicit-any */
|
|
2
|
-
|
|
2
|
+
|
|
3
|
+
import { D365DatasourceBase } from "@evenicanpm/storefront-core/src/api-manager/datasources/d365/d365-base.datasource";
|
|
4
|
+
import { getContextFromCookie } from "@evenicanpm/storefront-core/src/api-manager/datasources/d365/utils/get-context-cookie";
|
|
5
|
+
import type { AddressApi } from "@evenicanpm/storefront-core/src/api-manager/types/Datasource";
|
|
3
6
|
import {
|
|
4
|
-
CountryRegionInfo,
|
|
5
|
-
DeliveryOption,
|
|
7
|
+
type CountryRegionInfo,
|
|
8
|
+
type DeliveryOption,
|
|
6
9
|
FilterDeliveryModeOption,
|
|
7
|
-
StateProvinceInfo,
|
|
10
|
+
type StateProvinceInfo,
|
|
8
11
|
} from "@msdyn365-commerce/retail-proxy";
|
|
9
12
|
import { getDeliveryOptionsAsync } from "@msdyn365-commerce/retail-proxy/dist/DataActions/CartsDataActions.g";
|
|
13
|
+
import {
|
|
14
|
+
readAsync,
|
|
15
|
+
updateAsync,
|
|
16
|
+
} from "@msdyn365-commerce/retail-proxy/dist/DataActions/CustomersDataActions.g";
|
|
10
17
|
import {
|
|
11
18
|
getCountryRegionsByLanguageIdAsync,
|
|
12
19
|
getStateProvincesAsync,
|
|
13
20
|
} from "@msdyn365-commerce/retail-proxy/dist/DataActions/StoreOperationsDataActions.g";
|
|
14
|
-
import {
|
|
21
|
+
import type {
|
|
15
22
|
Address,
|
|
16
23
|
GetCountriesInput,
|
|
17
24
|
GetDeliveryOptionsInput,
|
|
18
25
|
GetStatesInput,
|
|
19
26
|
} from "@/schemas/address.schema";
|
|
20
|
-
|
|
21
|
-
import {
|
|
22
|
-
readAsync,
|
|
23
|
-
updateAsync,
|
|
24
|
-
} from "@msdyn365-commerce/retail-proxy/dist/DataActions/CustomersDataActions.g";
|
|
25
|
-
import { D365DatasourceBase } from "@evenicanpm/storefront-core/src/api-manager/datasources/d365/d365-base.datasource";
|
|
27
|
+
|
|
26
28
|
class D365AddressDatasource extends D365DatasourceBase implements AddressApi {
|
|
27
29
|
async createAddress(address: Address): Promise<Address> {
|
|
28
30
|
const context = await getContextFromCookie();
|
|
@@ -1,61 +1,61 @@
|
|
|
1
1
|
/* eslint-disable @typescript-eslint/no-explicit-any */
|
|
2
2
|
|
|
3
|
-
import {
|
|
3
|
+
import { D365DatasourceBase } from "@evenicanpm/storefront-core/src/api-manager/datasources/d365/d365-base.datasource";
|
|
4
|
+
import D365OrganizationDatasource from "@evenicanpm/storefront-core/src/api-manager/datasources/d365/d365-organization.datasource";
|
|
5
|
+
import { D365ProductDatasource } from "@evenicanpm/storefront-core/src/api-manager/datasources/d365/d365-product.datasource";
|
|
6
|
+
import type { CartApi } from "@evenicanpm/storefront-core/src/api-manager/types/Datasource";
|
|
7
|
+
import { getCartCookie } from "@evenicanpm/storefront-core/src/lib/cart-cookie-handler";
|
|
4
8
|
import {
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
9
|
+
type CardPaymentAcceptPoint,
|
|
10
|
+
type CardPaymentAcceptResult,
|
|
11
|
+
type CardPaymentAcceptSettings,
|
|
12
|
+
type CartLine,
|
|
13
|
+
type CartSearchCriteria,
|
|
10
14
|
// SalesOrder,
|
|
11
|
-
CartTenderLine,
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
ICallerContext,
|
|
15
|
-
|
|
16
|
-
ProductWarehouse,
|
|
17
|
-
ProductWarehouseInventoryInformation,
|
|
18
|
-
|
|
15
|
+
type CartTenderLine,
|
|
16
|
+
CartType,
|
|
17
|
+
type Cart as DynCart,
|
|
18
|
+
type ICallerContext,
|
|
19
|
+
type InventoryAvailabilitySearchCriteria,
|
|
20
|
+
type ProductWarehouse,
|
|
21
|
+
type ProductWarehouseInventoryInformation,
|
|
22
|
+
type QueryResultSettings,
|
|
19
23
|
} from "@msdyn365-commerce/retail-proxy";
|
|
20
24
|
import {
|
|
21
25
|
addCartLinesAsync,
|
|
26
|
+
addDiscountCodeAsync,
|
|
27
|
+
checkoutAsync,
|
|
22
28
|
createCartAsync,
|
|
29
|
+
getCardPaymentAcceptPointAsync,
|
|
23
30
|
readAsync,
|
|
24
31
|
removeCartLinesAsync,
|
|
25
|
-
updateCartLinesAsync,
|
|
26
|
-
updateAsync,
|
|
27
|
-
addDiscountCodeAsync,
|
|
28
32
|
removeDiscountCodesAsync,
|
|
29
|
-
updateLineDeliverySpecificationsAsync,
|
|
30
|
-
getCardPaymentAcceptPointAsync,
|
|
31
33
|
retrieveCardPaymentAcceptResultAsync,
|
|
32
|
-
checkoutAsync,
|
|
33
34
|
searchAsync,
|
|
35
|
+
updateAsync,
|
|
36
|
+
updateCartLinesAsync,
|
|
37
|
+
updateLineDeliverySpecificationsAsync,
|
|
34
38
|
} from "@msdyn365-commerce/retail-proxy/dist/DataActions/CartsDataActions.g";
|
|
35
39
|
import {
|
|
36
|
-
|
|
40
|
+
getEstimatedAvailabilityAsync,
|
|
41
|
+
getEstimatedProductWarehouseAvailabilityAsync,
|
|
42
|
+
} from "@msdyn365-commerce/retail-proxy/dist/DataActions/ProductsDataActions.g";
|
|
43
|
+
import { omit, uniq } from "lodash";
|
|
44
|
+
import type {
|
|
37
45
|
AddToCartInput,
|
|
38
46
|
Cart,
|
|
47
|
+
CheckoutInput,
|
|
39
48
|
DeleteCartLineInput,
|
|
40
|
-
UpdateCartInput,
|
|
41
|
-
UpdateCartLineInput,
|
|
42
|
-
UpdateCartLineDeliveryModeInput,
|
|
43
|
-
RemoveCartLineDeliveryModeInput,
|
|
44
49
|
GetCardPaymentAcceptPointInput,
|
|
45
|
-
RetrieveCardPaymentAcceptResultInput,
|
|
46
|
-
CheckoutInput,
|
|
47
50
|
InventorySearchCartLinesCriteriaInput,
|
|
51
|
+
ManageDiscountCodeInput,
|
|
52
|
+
RemoveCartLineDeliveryModeInput,
|
|
53
|
+
RetrieveCardPaymentAcceptResultInput,
|
|
54
|
+
UpdateCartInput,
|
|
55
|
+
UpdateCartLineDeliveryModeInput,
|
|
56
|
+
UpdateCartLineInput,
|
|
48
57
|
} from "@/schemas/cart.schema";
|
|
49
|
-
import {
|
|
50
|
-
import { D365ProductDatasource } from "@evenicanpm/storefront-core/src/api-manager/datasources/d365/d365-product.datasource";
|
|
51
|
-
import { getCartCookie } from "@evenicanpm/storefront-core/src/lib/cart-cookie-handler";
|
|
52
|
-
import { SalesOrder } from "@/schemas/order.schema";
|
|
53
|
-
import { D365DatasourceBase } from "@evenicanpm/storefront-core/src/api-manager/datasources/d365/d365-base.datasource";
|
|
54
|
-
import D365OrganizationDatasource from "@evenicanpm/storefront-core/src/api-manager/datasources/d365/d365-organization.datasource";
|
|
55
|
-
import {
|
|
56
|
-
getEstimatedAvailabilityAsync,
|
|
57
|
-
getEstimatedProductWarehouseAvailabilityAsync,
|
|
58
|
-
} from "@msdyn365-commerce/retail-proxy/dist/DataActions/ProductsDataActions.g";
|
|
58
|
+
import type { SalesOrder } from "@/schemas/order.schema";
|
|
59
59
|
|
|
60
60
|
export class D365CartDatasource extends D365DatasourceBase implements CartApi {
|
|
61
61
|
async checkout(input: CheckoutInput): Promise<SalesOrder> {
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
/* eslint-disable @typescript-eslint/no-explicit-any */
|
|
2
2
|
|
|
3
|
-
import {
|
|
3
|
+
import { D365DatasourceBase } from "@evenicanpm/storefront-core/src/api-manager/datasources/d365/d365-base.datasource";
|
|
4
|
+
import type { CategoryApi } from "@evenicanpm/storefront-core/src/api-manager/types/Datasource";
|
|
4
5
|
import {
|
|
5
|
-
CategoryHierarchy,
|
|
6
|
+
type CategoryHierarchy,
|
|
6
7
|
mapCategoryToHierarchy,
|
|
7
8
|
} from "@evenicanpm/storefront-core/src/lib/category-helpers";
|
|
8
9
|
import { getCategoriesAsync } from "@msdyn365-commerce/retail-proxy/dist/DataActions/CategoriesDataActions.g";
|
|
9
|
-
import { D365DatasourceBase } from "@evenicanpm/storefront-core/src/api-manager/datasources/d365/d365-base.datasource";
|
|
10
10
|
|
|
11
11
|
class D365CategoriesDatasource
|
|
12
12
|
extends D365DatasourceBase
|
|
@@ -1,19 +1,20 @@
|
|
|
1
1
|
/* eslint-disable @typescript-eslint/no-explicit-any */
|
|
2
2
|
|
|
3
|
-
import {
|
|
3
|
+
import { D365DatasourceBase } from "@evenicanpm/storefront-core/src/api-manager/datasources/d365/d365-base.datasource";
|
|
4
|
+
import { D365ProductDatasource } from "@evenicanpm/storefront-core/src/api-manager/datasources/d365/d365-product.datasource";
|
|
5
|
+
import type {
|
|
6
|
+
GetSalesOrderDetailsInput,
|
|
7
|
+
SalesOrder,
|
|
8
|
+
} from "@evenicanpm/storefront-core/src/api-manager/schemas/order.schema";
|
|
9
|
+
import type { OrderApi } from "@evenicanpm/storefront-core/src/api-manager/types/Datasource";
|
|
4
10
|
import {
|
|
5
|
-
SalesOrder as DynSalesOrder,
|
|
11
|
+
type SalesOrder as DynSalesOrder,
|
|
12
|
+
type ICallerContext,
|
|
6
13
|
SearchLocation,
|
|
7
|
-
ICallerContext,
|
|
8
14
|
} from "@msdyn365-commerce/retail-proxy";
|
|
9
15
|
import { getSalesOrderDetailsByTransactionIdAsync } from "@msdyn365-commerce/retail-proxy/dist/DataActions/SalesOrdersDataActions.g";
|
|
10
|
-
import {
|
|
11
|
-
GetSalesOrderDetailsInput,
|
|
12
|
-
SalesOrder,
|
|
13
|
-
} from "@evenicanpm/storefront-core/src/api-manager/schemas/order.schema";
|
|
14
|
-
import { D365ProductDatasource } from "@evenicanpm/storefront-core/src/api-manager/datasources/d365/d365-product.datasource";
|
|
15
16
|
import uniq from "lodash/uniq";
|
|
16
|
-
|
|
17
|
+
|
|
17
18
|
class D365OrderDatasource extends D365DatasourceBase implements OrderApi {
|
|
18
19
|
getSalesOrders(): Promise<any> {
|
|
19
20
|
throw new Error("Method not implemented.");
|
|
@@ -1,23 +1,23 @@
|
|
|
1
1
|
/* eslint-disable @typescript-eslint/no-explicit-any */
|
|
2
2
|
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
getChannelDeliveryOptionsAsync,
|
|
6
|
-
getOrgUnitConfigurationAsync,
|
|
7
|
-
getStoreHoursAsync,
|
|
8
|
-
} from "@msdyn365-commerce/retail-proxy/dist/DataActions/OrgUnitsDataActions.g";
|
|
9
|
-
import {
|
|
3
|
+
import { D365DatasourceBase } from "@evenicanpm/storefront-core/src/api-manager/datasources/d365/d365-base.datasource";
|
|
4
|
+
import type {
|
|
10
5
|
ChannelConfiguration,
|
|
11
6
|
GetOrgUnitLocationsByAreaInput,
|
|
12
7
|
OrgUnitLocation,
|
|
13
8
|
OrgUnitLocationReturnType,
|
|
14
9
|
} from "@evenicanpm/storefront-core/src/api-manager/schemas/organization.schema";
|
|
15
|
-
import {
|
|
16
|
-
import {
|
|
10
|
+
import type { OrganizationApi } from "@evenicanpm/storefront-core/src/api-manager/types/Datasource";
|
|
11
|
+
import type {
|
|
17
12
|
ChannelDeliveryOption,
|
|
18
13
|
ICallerContext,
|
|
19
14
|
} from "@msdyn365-commerce/retail-proxy";
|
|
20
|
-
import {
|
|
15
|
+
import {
|
|
16
|
+
getChannelDeliveryOptionsAsync,
|
|
17
|
+
getOrgUnitConfigurationAsync,
|
|
18
|
+
getOrgUnitLocationsByAreaAsync,
|
|
19
|
+
getStoreHoursAsync,
|
|
20
|
+
} from "@msdyn365-commerce/retail-proxy/dist/DataActions/OrgUnitsDataActions.g";
|
|
21
21
|
|
|
22
22
|
class D365OrganizationDatasource
|
|
23
23
|
extends D365DatasourceBase
|
|
@@ -1,44 +1,43 @@
|
|
|
1
1
|
/* eslint-disable @typescript-eslint/no-explicit-any */
|
|
2
2
|
|
|
3
|
-
import {
|
|
4
|
-
import
|
|
5
|
-
|
|
6
|
-
IQueryResultSettings,
|
|
7
|
-
ProductPrice,
|
|
8
|
-
ProductRefinerSource,
|
|
9
|
-
ProductSearchCriteria,
|
|
10
|
-
ProductSearchResult,
|
|
11
|
-
SimpleProduct,
|
|
12
|
-
} from "@msdyn365-commerce/retail-proxy";
|
|
13
|
-
import {
|
|
14
|
-
getByIdAsync,
|
|
15
|
-
getByIdsAsync,
|
|
16
|
-
searchByCriteriaAsync,
|
|
17
|
-
getRelatedProductsAsync,
|
|
18
|
-
getDimensionValuesWithEstimatedAvailabilitiesAsync,
|
|
19
|
-
getAttributeValuesAsync,
|
|
20
|
-
getProductSearchRefinersAsync,
|
|
21
|
-
getEstimatedAvailabilityAsync,
|
|
22
|
-
getActivePricesAsync,
|
|
23
|
-
} from "@msdyn365-commerce/retail-proxy/dist/DataActions/ProductsDataActions.g";
|
|
3
|
+
import { D365DatasourceBase } from "@evenicanpm/storefront-core/src/api-manager/datasources/d365/d365-base.datasource";
|
|
4
|
+
import D365CategoriesDatasource from "@evenicanpm/storefront-core/src/api-manager/datasources/d365/d365-categories.datasource";
|
|
5
|
+
import { createDimSearchCriteria } from "@evenicanpm/storefront-core/src/api-manager/datasources/d365/utils/create-search-criteria";
|
|
24
6
|
import {
|
|
7
|
+
testMedia,
|
|
8
|
+
validateAndSetMediaUrls,
|
|
9
|
+
} from "@evenicanpm/storefront-core/src/api-manager/datasources/d365/utils/product-images-utils";
|
|
10
|
+
import type {
|
|
25
11
|
GetProductByIdInput,
|
|
26
12
|
GetProductByIdsInput,
|
|
27
13
|
GetRelatedProductsInput,
|
|
14
|
+
InventorySearchCriteriaInput,
|
|
28
15
|
ProductPriceInput,
|
|
29
16
|
SearchByCriteriaInput,
|
|
30
17
|
SearchByCriteriaResponse,
|
|
31
18
|
searchProductsInput,
|
|
32
19
|
} from "@evenicanpm/storefront-core/src/api-manager/schemas/product.schema";
|
|
33
|
-
import {
|
|
20
|
+
import type { ProductApi } from "@evenicanpm/storefront-core/src/api-manager/types/Datasource";
|
|
34
21
|
import {
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
22
|
+
type InventoryAvailabilitySearchCriteria,
|
|
23
|
+
type IQueryResultSettings,
|
|
24
|
+
type ProductPrice,
|
|
25
|
+
ProductRefinerSource,
|
|
26
|
+
type ProductSearchCriteria,
|
|
27
|
+
type ProductSearchResult,
|
|
28
|
+
type SimpleProduct,
|
|
29
|
+
} from "@msdyn365-commerce/retail-proxy";
|
|
30
|
+
import {
|
|
31
|
+
getActivePricesAsync,
|
|
32
|
+
getAttributeValuesAsync,
|
|
33
|
+
getByIdAsync,
|
|
34
|
+
getByIdsAsync,
|
|
35
|
+
getDimensionValuesWithEstimatedAvailabilitiesAsync,
|
|
36
|
+
getEstimatedAvailabilityAsync,
|
|
37
|
+
getProductSearchRefinersAsync,
|
|
38
|
+
getRelatedProductsAsync,
|
|
39
|
+
searchByCriteriaAsync,
|
|
40
|
+
} from "@msdyn365-commerce/retail-proxy/dist/DataActions/ProductsDataActions.g";
|
|
42
41
|
|
|
43
42
|
const setFullProductImgUrl = async (
|
|
44
43
|
product: SimpleProduct | ProductSearchResult,
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
/* eslint-disable @typescript-eslint/no-explicit-any */
|
|
2
2
|
|
|
3
|
-
import { SessionApi } from "@evenicanpm/storefront-core/src/api-manager/types/Datasource";
|
|
4
|
-
//import { Customer, ICallerContext } from "@msdyn365-commerce/retail-proxy";
|
|
5
|
-
//import { readAsync } from "@msdyn365-commerce/retail-proxy/dist/DataActions/CustomersDataActions.g";
|
|
6
|
-
import { Session } from "@evenicanpm/storefront-core/src/api-manager/schemas/session.schema";
|
|
7
3
|
//import { getContextFromCookie } from "./utils/get-context-cookie";
|
|
8
4
|
import { D365DatasourceBase } from "@evenicanpm/storefront-core/src/api-manager/datasources/d365/d365-base.datasource";
|
|
5
|
+
//import { Customer, ICallerContext } from "@msdyn365-commerce/retail-proxy";
|
|
6
|
+
//import { readAsync } from "@msdyn365-commerce/retail-proxy/dist/DataActions/CustomersDataActions.g";
|
|
7
|
+
import type { Session } from "@evenicanpm/storefront-core/src/api-manager/schemas/session.schema";
|
|
8
|
+
import type { SessionApi } from "@evenicanpm/storefront-core/src/api-manager/types/Datasource";
|
|
9
9
|
|
|
10
10
|
class D365SessionDatasource extends D365DatasourceBase implements SessionApi {
|
|
11
11
|
async sessionInit(): Promise<Session> {
|
|
@@ -1,30 +1,21 @@
|
|
|
1
1
|
/* eslint-disable @typescript-eslint/no-explicit-any */
|
|
2
|
-
|
|
3
|
-
import {
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
User,
|
|
7
|
-
UserCounts,
|
|
8
|
-
Wishlist,
|
|
9
|
-
WishlistCreateInput,
|
|
10
|
-
WishlistDetailInput,
|
|
11
|
-
WishlistLinesInput,
|
|
12
|
-
} from "@/schemas/user.schema";
|
|
2
|
+
|
|
3
|
+
import { D365DatasourceBase } from "@evenicanpm/storefront-core/src/api-manager/datasources/d365/d365-base.datasource";
|
|
4
|
+
import { D365ProductDatasource } from "@evenicanpm/storefront-core/src/api-manager/datasources/d365/d365-product.datasource";
|
|
5
|
+
import type { UserApi } from "@evenicanpm/storefront-core/src/api-manager/types/Datasource";
|
|
13
6
|
import {
|
|
14
|
-
|
|
15
|
-
|
|
7
|
+
type CommerceProperty,
|
|
8
|
+
type Customer,
|
|
9
|
+
type ProductList,
|
|
10
|
+
type ProductListSearchCriteria,
|
|
16
11
|
ProductListType,
|
|
17
|
-
|
|
18
|
-
SimpleProduct,
|
|
19
|
-
ProductList,
|
|
12
|
+
type SimpleProduct,
|
|
20
13
|
} from "@msdyn365-commerce/retail-proxy";
|
|
21
14
|
import {
|
|
22
15
|
createCustomerAsync,
|
|
23
16
|
readAsync,
|
|
24
17
|
updateAsync,
|
|
25
18
|
} from "@msdyn365-commerce/retail-proxy/dist/DataActions/CustomersDataActions.g";
|
|
26
|
-
import jwt from "jsonwebtoken";
|
|
27
|
-
import { D365DatasourceBase } from "@evenicanpm/storefront-core/src/api-manager/datasources/d365/d365-base.datasource";
|
|
28
19
|
import {
|
|
29
20
|
addProductListLinesAsync,
|
|
30
21
|
copyCartToProductListAsync,
|
|
@@ -33,10 +24,21 @@ import {
|
|
|
33
24
|
removeProductListLinesAsync,
|
|
34
25
|
searchAsync,
|
|
35
26
|
updateProductListLinesAsync,
|
|
27
|
+
readAsync as wishlistReadAsync,
|
|
36
28
|
} from "@msdyn365-commerce/retail-proxy/dist/DataActions/ProductListsDataActions.g";
|
|
37
|
-
import
|
|
29
|
+
import jwt from "jsonwebtoken";
|
|
38
30
|
import { uniq } from "lodash";
|
|
39
|
-
import {
|
|
31
|
+
import type {
|
|
32
|
+
CopyCartToWishlistInput,
|
|
33
|
+
ExtendedWishlist,
|
|
34
|
+
User,
|
|
35
|
+
UserCounts,
|
|
36
|
+
Wishlist,
|
|
37
|
+
WishlistCreateInput,
|
|
38
|
+
WishlistDetailInput,
|
|
39
|
+
WishlistLinesInput,
|
|
40
|
+
} from "@/schemas/user.schema";
|
|
41
|
+
|
|
40
42
|
class D365UserDatasource extends D365DatasourceBase implements UserApi {
|
|
41
43
|
async updateUser(user: User): Promise<User> {
|
|
42
44
|
const context = this.context;
|
|
@@ -1,23 +1,23 @@
|
|
|
1
|
-
import {
|
|
2
|
-
AddressApi,
|
|
3
|
-
CategoryApi,
|
|
4
|
-
Datasource,
|
|
5
|
-
OrderApi,
|
|
6
|
-
OrganizationApi,
|
|
7
|
-
PrimaryDatasource,
|
|
8
|
-
ProductApi,
|
|
9
|
-
SessionApi,
|
|
10
|
-
UserApi,
|
|
11
|
-
} from "@evenicanpm/storefront-core/src/api-manager/types/Datasource";
|
|
12
|
-
import { D365ProductDatasource } from ".";
|
|
13
|
-
import { D365CartDatasource } from "@evenicanpm/storefront-core/src/api-manager/datasources/d365/d365-cart.datasource";
|
|
14
1
|
import D365AddressDatasource from "@evenicanpm/storefront-core/src/api-manager/datasources/d365/d365-address.datasource";
|
|
2
|
+
import { D365CartDatasource } from "@evenicanpm/storefront-core/src/api-manager/datasources/d365/d365-cart.datasource";
|
|
15
3
|
import D365CategoriesDatasource from "@evenicanpm/storefront-core/src/api-manager/datasources/d365/d365-categories.datasource";
|
|
16
|
-
import D365OrganizationDatasource from "@evenicanpm/storefront-core/src/api-manager/datasources/d365/d365-organization.datasource";
|
|
17
4
|
import D365OrderDatasource from "@evenicanpm/storefront-core/src/api-manager/datasources/d365/d365-order.datasource";
|
|
5
|
+
import D365OrganizationDatasource from "@evenicanpm/storefront-core/src/api-manager/datasources/d365/d365-organization.datasource";
|
|
18
6
|
import D365SessionDatasource from "@evenicanpm/storefront-core/src/api-manager/datasources/d365/d365-session.datasource";
|
|
19
7
|
import D365UserDatasource from "@evenicanpm/storefront-core/src/api-manager/datasources/d365/d365-user.datasource";
|
|
20
|
-
import {
|
|
8
|
+
import {
|
|
9
|
+
type AddressApi,
|
|
10
|
+
type CategoryApi,
|
|
11
|
+
Datasource,
|
|
12
|
+
type OrderApi,
|
|
13
|
+
type OrganizationApi,
|
|
14
|
+
type PrimaryDatasource,
|
|
15
|
+
type ProductApi,
|
|
16
|
+
type SessionApi,
|
|
17
|
+
type UserApi,
|
|
18
|
+
} from "@evenicanpm/storefront-core/src/api-manager/types/Datasource";
|
|
19
|
+
import type { ICallerContext } from "@msdyn365-commerce/retail-proxy";
|
|
20
|
+
import { D365ProductDatasource } from ".";
|
|
21
21
|
|
|
22
22
|
export class D365Datasource extends Datasource implements PrimaryDatasource {
|
|
23
23
|
user: UserApi;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { D365ProductDatasource } from "@evenicanpm/storefront-core/src/api-manager/datasources/d365/d365-product.datasource";
|
|
2
1
|
import { D365Datasource } from "@evenicanpm/storefront-core/src/api-manager/datasources/d365/d365.datasource";
|
|
2
|
+
import { D365ProductDatasource } from "@evenicanpm/storefront-core/src/api-manager/datasources/d365/d365-product.datasource";
|
|
3
3
|
|
|
4
4
|
export { D365ProductDatasource, D365Datasource };
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { ProductDimensionAvailabilitySearchCriteria } from "@msdyn365-commerce/retail-proxy";
|
|
1
|
+
import type { ProductDimensionAvailabilitySearchCriteria } from "@msdyn365-commerce/retail-proxy";
|
|
2
2
|
/**
|
|
3
3
|
* Helper: Create search criteria for product dimension availability.
|
|
4
4
|
* @param dimensionTypeValue
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use server";
|
|
2
|
+
import { getSecret } from "@evenicanpm/common-core/src/lib/keyvault";
|
|
2
3
|
import { decode } from "next-auth/jwt";
|
|
3
|
-
import { getSecret } from "@evenicanpm/common-core/keyvault";
|
|
4
4
|
|
|
5
5
|
export async function decodeToken(token: string) {
|
|
6
6
|
const secret = getSecret("NEXTAUTH_SECRET");
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
"use server";
|
|
2
|
-
import {
|
|
3
|
-
import { ICallerContext } from "@msdyn365-commerce/retail-proxy";
|
|
4
|
-
import { getLocale } from "next-intl/server";
|
|
2
|
+
import type { ICallerContext } from "@msdyn365-commerce/retail-proxy";
|
|
5
3
|
import { cookies } from "next/headers";
|
|
4
|
+
import { getLocale } from "next-intl/server";
|
|
5
|
+
import { manuallyRetrieveSessionCookie } from "@/auth/next-auth-cookie-manager";
|
|
6
6
|
|
|
7
7
|
/**
|
|
8
8
|
* Retrieves the D365 context from the "D365Context" cookie, enriches it with the current session token,
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { SimpleProduct } from "@msdyn365-commerce/retail-proxy";
|
|
1
|
+
import type { SimpleProduct } from "@msdyn365-commerce/retail-proxy";
|
|
2
2
|
|
|
3
3
|
const testImageUrl = (url: string) => {
|
|
4
4
|
return new Promise<[string, boolean]>((resolve) => {
|
|
@@ -28,16 +28,35 @@ export const validateAndSetMediaUrls = async (
|
|
|
28
28
|
productData: SimpleProduct,
|
|
29
29
|
baseUrl: string,
|
|
30
30
|
) => {
|
|
31
|
-
const product = productData;
|
|
32
|
-
|
|
31
|
+
const product = { ...productData };
|
|
32
|
+
|
|
33
|
+
let primaryImageUrl = product.PrimaryImageUrl;
|
|
34
|
+
|
|
33
35
|
if (!primaryImageUrl) {
|
|
34
|
-
|
|
36
|
+
primaryImageUrl = `Products/${product.ItemId}_000_001.png`;
|
|
35
37
|
}
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
38
|
+
|
|
39
|
+
let fullPrimaryUrl = `${baseUrl}${primaryImageUrl}`;
|
|
40
|
+
|
|
41
|
+
// Validate the primary image
|
|
42
|
+
const isPrimaryValid = (await testMedia([fullPrimaryUrl])).length > 0;
|
|
43
|
+
if (!isPrimaryValid) {
|
|
44
|
+
fullPrimaryUrl = `${baseUrl}Products/${product.ItemId}_000_001.png`;
|
|
40
45
|
}
|
|
41
|
-
|
|
42
|
-
|
|
46
|
+
|
|
47
|
+
product.PrimaryImageUrl = fullPrimaryUrl;
|
|
48
|
+
|
|
49
|
+
const candidateUrls: string[] = [];
|
|
50
|
+
for (let index = 2; index <= 5; index++) {
|
|
51
|
+
const candidateUrl = fullPrimaryUrl.replace(
|
|
52
|
+
/001(\.[a-z]+)$/i,
|
|
53
|
+
`${String(index).padStart(3, "0")}$1`,
|
|
54
|
+
);
|
|
55
|
+
candidateUrls.push(candidateUrl);
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
// Validate which URLs exist
|
|
59
|
+
const validUrls = await testMedia(candidateUrls);
|
|
60
|
+
|
|
61
|
+
return [product.PrimaryImageUrl, ...validUrls];
|
|
43
62
|
};
|
|
@@ -1,17 +1,17 @@
|
|
|
1
|
+
import { addressMap } from "@evenicanpm/storefront-core/src/api-manager/datasources/e4/address/e4-address.remaps";
|
|
2
|
+
import * as addressTranslator from "@evenicanpm/storefront-core/src/api-manager/datasources/e4/address/e4-address.translator";
|
|
3
|
+
import type { Shipping } from "@evenicanpm/storefront-core/src/api-manager/datasources/e4/graphqlRequestSdk";
|
|
1
4
|
import getGraphqlClient from "@evenicanpm/storefront-core/src/api-manager/lib/get-graphql-client";
|
|
2
|
-
import {
|
|
5
|
+
import type {
|
|
3
6
|
Address,
|
|
4
7
|
GetDeliveryOptionsInput,
|
|
5
8
|
GetStatesInput,
|
|
6
9
|
} from "@evenicanpm/storefront-core/src/api-manager/schemas/address.schema";
|
|
7
|
-
import {
|
|
10
|
+
import type {
|
|
8
11
|
CountryRegionInfo,
|
|
9
12
|
DeliveryOption,
|
|
10
13
|
StateProvinceInfo,
|
|
11
14
|
} from "@msdyn365-commerce/retail-proxy";
|
|
12
|
-
import { Shipping } from "@evenicanpm/storefront-core/src/api-manager/datasources/e4/graphqlRequestSdk";
|
|
13
|
-
import * as addressTranslator from "@evenicanpm/storefront-core/src/api-manager/datasources/e4/address/e4-address.translator";
|
|
14
|
-
import { addressMap } from "@evenicanpm/storefront-core/src/api-manager/datasources/e4/address/e4-address.remaps";
|
|
15
15
|
import { merge } from "object-mapper";
|
|
16
16
|
|
|
17
17
|
const address = {
|