@dropins/storefront-cart 0.1.0 → 0.1.1-alpha68
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/api/addProductsToCart/addProductsToCart.d.ts +13 -0
- package/api/addProductsToCart/addProductsToCart.d.ts.map +1 -0
- package/api/addProductsToCart/graphql/AddProductsToCartMutation.d.ts +2 -0
- package/api/addProductsToCart/graphql/AddProductsToCartMutation.d.ts.map +1 -0
- package/api/addProductsToCart/index.d.ts +2 -0
- package/api/addProductsToCart/index.d.ts.map +1 -0
- package/api/createEmptyCart/createEmptyCart.d.ts +2 -0
- package/api/createEmptyCart/createEmptyCart.d.ts.map +1 -0
- package/api/createEmptyCart/graphql/CreateCartMutation.d.ts +2 -0
- package/api/createEmptyCart/graphql/CreateCartMutation.d.ts.map +1 -0
- package/api/createEmptyCart/index.d.ts +2 -0
- package/api/createEmptyCart/index.d.ts.map +1 -0
- package/api/fetch-graphql/fetch-graphql.d.ts +8 -0
- package/api/fetch-graphql/fetch-graphql.d.ts.map +1 -0
- package/api/fetch-graphql/index.d.ts +2 -0
- package/api/fetch-graphql/index.d.ts.map +1 -0
- package/api/getCartData/getCartData.d.ts +4 -0
- package/api/getCartData/getCartData.d.ts.map +1 -0
- package/api/getCartData/graphql/CartQuery.d.ts +3 -0
- package/api/getCartData/graphql/CartQuery.d.ts.map +1 -0
- package/api/getCartData/index.d.ts +2 -0
- package/api/getCartData/index.d.ts.map +1 -0
- package/api/getEstimateShipping/getEstimateShipping.d.ts +16 -0
- package/api/getEstimateShipping/getEstimateShipping.d.ts.map +1 -0
- package/api/getEstimateShipping/graphql/countriesAndRegionsQueries.d.ts +12 -0
- package/api/getEstimateShipping/graphql/countriesAndRegionsQueries.d.ts.map +1 -0
- package/api/getEstimateShipping/graphql/estimateShippingMethodsMutation.d.ts +2 -0
- package/api/getEstimateShipping/graphql/estimateShippingMethodsMutation.d.ts.map +1 -0
- package/api/getEstimateShipping/index.d.ts +2 -0
- package/api/getEstimateShipping/index.d.ts.map +1 -0
- package/api/getStoreConfig/getStoreConfig.d.ts +4 -0
- package/api/getStoreConfig/getStoreConfig.d.ts.map +1 -0
- package/api/getStoreConfig/graphql/StoreConfigQuery.d.ts +2 -0
- package/api/getStoreConfig/graphql/StoreConfigQuery.d.ts.map +1 -0
- package/api/getStoreConfig/index.d.ts +2 -0
- package/api/getStoreConfig/index.d.ts.map +1 -0
- package/api/graphql/CartFragment.d.ts +3 -0
- package/api/graphql/CartFragment.d.ts.map +1 -0
- package/api/index.d.ts +11 -0
- package/api/index.d.ts.map +1 -0
- package/api/initialize/index.d.ts +2 -0
- package/api/initialize/index.d.ts.map +1 -0
- package/api/initialize/initialize.d.ts +11 -0
- package/api/initialize/initialize.d.ts.map +1 -0
- package/api/initializeCart/graphql/MergeCartsMutation.d.ts +2 -0
- package/api/initializeCart/graphql/MergeCartsMutation.d.ts.map +1 -0
- package/api/initializeCart/index.d.ts +2 -0
- package/api/initializeCart/index.d.ts.map +1 -0
- package/api/initializeCart/initializeCart.d.ts +4 -0
- package/api/initializeCart/initializeCart.d.ts.map +1 -0
- package/api/resetCart/index.d.ts +2 -0
- package/api/resetCart/index.d.ts.map +1 -0
- package/api/resetCart/resetCart.d.ts +4 -0
- package/api/resetCart/resetCart.d.ts.map +1 -0
- package/api/updateProductsFromCart/graphql/UpdateProductsMutation.d.ts +2 -0
- package/api/updateProductsFromCart/graphql/UpdateProductsMutation.d.ts.map +1 -0
- package/api/updateProductsFromCart/index.d.ts +2 -0
- package/api/updateProductsFromCart/index.d.ts.map +1 -0
- package/api/updateProductsFromCart/updateProductsFromCart.d.ts +9 -0
- package/api/updateProductsFromCart/updateProductsFromCart.d.ts.map +1 -0
- package/api.d.ts +1 -0
- package/api.js +26 -1
- package/api.js.map +1 -0
- package/chunks/MiniCart.js +2 -0
- package/chunks/MiniCart.js.map +1 -0
- package/chunks/getEstimateShipping.js +39 -0
- package/chunks/getEstimateShipping.js.map +1 -0
- package/chunks/getStoreConfig.js +253 -0
- package/chunks/getStoreConfig.js.map +1 -0
- package/chunks/updateProductsFromCart.js +21 -0
- package/chunks/updateProductsFromCart.js.map +1 -0
- package/components/Cart/Cart.d.ts +11 -0
- package/components/Cart/Cart.d.ts.map +1 -0
- package/components/Cart/index.d.ts +3 -0
- package/components/Cart/index.d.ts.map +1 -0
- package/components/EmptyCart/EmptyCart.d.ts +8 -0
- package/components/EmptyCart/EmptyCart.d.ts.map +1 -0
- package/components/EmptyCart/index.d.ts +3 -0
- package/components/EmptyCart/index.d.ts.map +1 -0
- package/components/MiniCart/MiniCart.d.ts +12 -0
- package/components/MiniCart/MiniCart.d.ts.map +1 -0
- package/components/MiniCart/index.d.ts +3 -0
- package/components/MiniCart/index.d.ts.map +1 -0
- package/components/index.d.ts +4 -0
- package/components/index.d.ts.map +1 -0
- package/containers/Cart/Cart.d.ts +15 -0
- package/containers/Cart/Cart.d.ts.map +1 -0
- package/containers/Cart/index.d.ts +3 -0
- package/containers/Cart/index.d.ts.map +1 -0
- package/containers/Cart.d.ts +3 -0
- package/containers/Cart.js +2 -1
- package/containers/Cart.js.map +1 -0
- package/containers/MiniCart/MiniCart.d.ts +12 -0
- package/containers/MiniCart/MiniCart.d.ts.map +1 -0
- package/containers/MiniCart/index.d.ts +3 -0
- package/containers/MiniCart/index.d.ts.map +1 -0
- package/containers/MiniCart.d.ts +3 -0
- package/containers/MiniCart.js +2 -1
- package/containers/MiniCart.js.map +1 -0
- package/containers/index.d.ts +3 -0
- package/containers/index.d.ts.map +1 -0
- package/data/models/acdl-models.d.ts +73 -0
- package/data/models/acdl-models.d.ts.map +1 -0
- package/data/models/cart-model.d.ts +82 -0
- package/data/models/cart-model.d.ts.map +1 -0
- package/data/models/index.d.ts +3 -0
- package/data/models/index.d.ts.map +1 -0
- package/data/models/store-models.d.ts +13 -0
- package/data/models/store-models.d.ts.map +1 -0
- package/data/transforms/__fixtures__/cartModel.d.ts +4 -0
- package/data/transforms/__fixtures__/cartModel.d.ts.map +1 -0
- package/data/transforms/__fixtures__/productTypesData.d.ts +640 -0
- package/data/transforms/__fixtures__/productTypesData.d.ts.map +1 -0
- package/data/transforms/acdl-context.d.ts +11 -0
- package/data/transforms/acdl-context.d.ts.map +1 -0
- package/data/transforms/index.d.ts +3 -0
- package/data/transforms/index.d.ts.map +1 -0
- package/data/transforms/transform-cart.d.ts +4 -0
- package/data/transforms/transform-cart.d.ts.map +1 -0
- package/data/transforms/transform-store-config.d.ts +4 -0
- package/data/transforms/transform-store-config.d.ts.map +1 -0
- package/hooks/index.d.ts +2 -0
- package/hooks/index.d.ts.map +1 -0
- package/hooks/useEstimatedShipping.d.ts +26 -0
- package/hooks/useEstimatedShipping.d.ts.map +1 -0
- package/i18n/en_US.json.d.ts +49 -0
- package/lib/acdl.d.ts +26 -0
- package/lib/acdl.d.ts.map +1 -0
- package/lib/cookies.d.ts +2 -0
- package/lib/cookies.d.ts.map +1 -0
- package/lib/fetch-error.d.ts +8 -0
- package/lib/fetch-error.d.ts.map +1 -0
- package/lib/persisted-data.d.ts +5 -0
- package/lib/persisted-data.d.ts.map +1 -0
- package/lib/state.d.ts +11 -0
- package/lib/state.d.ts.map +1 -0
- package/package.json +1 -1
- package/render/Provider.d.ts +8 -0
- package/render/Provider.d.ts.map +1 -0
- package/render/index.d.ts +2 -0
- package/render/index.d.ts.map +1 -0
- package/render/render.d.ts +4 -0
- package/render/render.d.ts.map +1 -0
- package/render.d.ts +1 -0
- package/render.js +3 -1
- package/render.js.map +1 -0
- package/108.js +0 -1
- package/12.js +0 -1
- package/148.js +0 -1
- package/176.js +0 -1
- package/180.js +0 -1
- package/220.js +0 -1
- package/328.js +0 -1
- package/388.js +0 -1
- package/4.js +0 -1
- package/424.js +0 -1
- package/456.js +0 -1
- package/484.js +0 -1
- package/488.js +0 -1
- package/524.js +0 -1
- package/543.js +0 -1
- package/604.js +0 -1
- package/664.js +0 -1
- package/680.js +0 -1
- package/728.js +0 -1
- package/756.js +0 -1
- package/764.js +0 -1
- package/772.js +0 -1
- package/805.js +0 -1
- package/820.js +0 -1
- package/824.js +0 -1
- package/832.js +0 -1
- package/844.js +0 -1
- package/868.js +0 -1
- package/916.js +0 -1
- package/920.js +0 -1
- package/928.js +0 -1
- package/940.js +0 -1
- package/984.js +0 -1
- package/992.js +0 -1
- package/996.js +0 -1
- package/runtime.js +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Cart.js","sources":["../../src/components/Cart/Cart.tsx","../../src/hooks/useEstimatedShipping.ts","../../src/containers/Cart/Cart.tsx"],"sourcesContent":["import { FunctionComponent, VNode } from 'preact';\nimport { HTMLAttributes } from 'preact/compat';\nimport { VComponent, classes } from '@adobe/elsie/lib';\nimport { Divider } from '@adobe/elsie/components';\n\nimport '@/cart/components/Cart/Cart.css';\n\nexport interface CartProps extends HTMLAttributes<HTMLDivElement> {\n emptyCart: VNode;\n heading?: VNode;\n products?: VNode;\n priceSummary?: VNode<HTMLAttributes<HTMLElement>>;\n}\n\nexport const Cart: FunctionComponent<CartProps> = ({\n className,\n children,\n emptyCart,\n heading,\n products,\n priceSummary,\n ...props\n}) => {\n return (\n <div {...props} className={classes(['cart-cart', className])}>\n <div className={classes(['cart-cart__wrapper'])}>\n {/* Heading */}\n {heading && (\n <div\n className={classes([\n 'cart-cart__heading',\n ['cart-cart__heading--full-width', !products || !priceSummary],\n ])}\n >\n <VComponent node={heading} className=\"cart-cart__heading-text\" />\n\n <Divider\n variant=\"primary\"\n className={classes(['cart-cart__heading-divider'])}\n />\n </div>\n )}\n\n {/* Content */}\n <div\n className={classes([\n 'cart-cart__content',\n ['cart-cart__content--empty', !products],\n ['cart-cart__content--full-width', !priceSummary],\n ])}\n >\n {products || (\n <VComponent node={emptyCart} className=\"cart-cart__empty-cart\" />\n )}\n </div>\n {products && priceSummary && (\n <VComponent\n node={priceSummary}\n className={classes(['cart-cart__price-summary'])}\n />\n )}\n </div>\n </div>\n );\n};\n","import { useCallback, useEffect, useState } from 'preact/compat';\n\nimport {\n EstimateAddressInput,\n getCountries,\n getEstimateShipping,\n getRegions,\n} from '@/cart/api';\nimport { PriceProps } from '@adobe/elsie/components';\n\nexport const useEstimatedShipping = () => {\n /* State data related to estimating costs in the Price Summary component */\n const [countries, setCountries] = useState<{ text: string; value: string }[]>(\n []\n );\n const [selectedCountry, setSelectedCountry] = useState<string>('US');\n const [selectedRegion, setSelectedRegion] = useState<string>('');\n const [selectedZip, setSelectedZip] = useState<string>('');\n const [regions, setRegions] = useState<{ text: string; value: string }[]>([]);\n const [regionsLoading, setRegionsLoading] = useState<boolean>(false);\n const [estimatedShippingPrice, setEstimatedShippingPrice] =\n useState<PriceProps | null>();\n const [estimatedDestinationText, setEstimatedDestinationText] =\n useState<string>('');\n const [priceSummaryLoading, setPriceSummaryLoading] =\n useState<boolean>(false);\n\n const handleEstimateShipping = useCallback(\n (formValues: {\n shippingCountry: string;\n shippingState?: string;\n shippingZip?: string;\n }) => {\n const {\n shippingCountry,\n shippingState = '',\n shippingZip = '',\n } = formValues;\n\n const addressData: EstimateAddressInput = {\n countryCode: shippingCountry,\n postcode: shippingZip,\n region: {\n code: shippingState,\n },\n };\n\n setPriceSummaryLoading(true);\n\n getEstimateShipping(addressData)\n .then((data) => {\n if (data) {\n setEstimatedShippingPrice({\n amount: data.amount.value,\n currency: data.amount.currency,\n });\n\n setSelectedCountry(shippingCountry);\n setSelectedRegion(shippingState);\n setSelectedZip(shippingZip);\n\n setEstimatedDestinationText(\n shippingState || shippingZip || shippingCountry\n );\n }\n })\n .finally(() => {\n setPriceSummaryLoading(false);\n });\n },\n []\n );\n\n const handleCountrySelected = (event: Event) => {\n event.preventDefault();\n\n setSelectedRegion('');\n setSelectedZip('');\n\n const value = (event.target as HTMLSelectElement).value;\n setSelectedCountry(value);\n };\n\n // Get list of countries on initial load\n useEffect(() => {\n getCountries().then((countries) => {\n let defaultCountry = 'US';\n const transformedCountries = countries.map((country) => {\n if (country.isDefaultCountry) {\n defaultCountry = country.id;\n }\n return {\n text: country.label,\n value: country.id,\n };\n });\n setCountries(transformedCountries);\n setSelectedCountry(defaultCountry);\n });\n }, []);\n\n // Update regions when country is updated\n useEffect(() => {\n setRegionsLoading(true);\n getRegions(selectedCountry)\n .then((regions) => {\n const transformedRegions = regions.map((region) => {\n return {\n text: region.name,\n value: region.code,\n };\n });\n setRegions(transformedRegions);\n })\n .finally(() => {\n setRegionsLoading(false);\n });\n }, [selectedCountry, setRegionsLoading]);\n\n return {\n loading: priceSummaryLoading,\n regionsLoading,\n estimatedDestinationText,\n countries,\n selectedCountry,\n selectedRegion,\n selectedZip,\n regions,\n estimatedShippingPrice,\n handleEstimateShipping,\n handleCountrySelected,\n };\n};\n","import { HTMLAttributes, useEffect, useState } from 'preact/compat';\nimport { Container } from '@adobe/elsie/lib';\nimport { events } from '@adobe/event-bus';\nimport { CartModel } from '@/cart/data/models';\nimport {\n Button,\n CartItem,\n CartList,\n Input,\n Image,\n Picker,\n Price,\n PriceSummary,\n} from '@adobe/elsie/components';\nimport { Cart as CartComponent, EmptyCart } from '@/cart/components';\nimport { updateProductsFromCart } from '@/cart/api';\nimport { useText } from '@adobe/elsie/i18n';\nimport { getPersistedData } from '@/cart/lib/persisted-data';\n\nimport { publishShoppingCartViewEvent } from '@/cart/lib/acdl';\nimport { state } from '@/cart/lib/state';\nimport { useEstimatedShipping } from '@/cart/hooks';\n\ninterface CheckoutRouteContext {\n cartId: string;\n}\nexport interface CartProps extends HTMLAttributes<HTMLDivElement> {\n // Links\n routeProduct?: (item: CartModel['items'][0]) => string;\n routeEmptyCartCTA?: () => string;\n routeCheckout?: (context: CheckoutRouteContext) => string;\n}\n\nexport const Cart: Container<CartProps, CartModel | null> = ({\n children,\n initialData = null,\n routeProduct,\n routeEmptyCartCTA,\n routeCheckout,\n ...props\n}) => {\n const [data, setData] = useState<CartModel | null>(initialData);\n const [itemsLoading, setItemLoading] = useState<Set<string>>(new Set());\n\n const {\n loading: priceSummaryLoading,\n regionsLoading,\n countries,\n regions,\n selectedCountry,\n selectedRegion,\n selectedZip,\n estimatedDestinationText,\n estimatedShippingPrice,\n handleCountrySelected,\n handleEstimateShipping,\n } = useEstimatedShipping();\n\n const handleItemsLoading = (state: boolean, uid: string) => {\n setItemLoading((prev) => {\n state ? prev.add(uid) : prev.delete(uid);\n return new Set(prev);\n });\n };\n\n const handleItemQuantityUpdate = (uid: string, quantity: number) => {\n handleItemsLoading(true, uid);\n\n updateProductsFromCart([{ uid, quantity }]).finally(() => {\n handleItemsLoading(false, uid);\n });\n };\n\n const dictionary = useText({\n applyButton: 'Cart.PriceSummary.estimatedShippingForm.apply.label',\n checkout: 'Cart.PriceSummary.checkout',\n countryField: 'Cart.PriceSummary.estimatedShippingForm.country.placeholder',\n discountedPrice: 'Cart.CartItem.discountedPrice',\n download: 'Cart.CartItem.download',\n freeShipping: 'Cart.PriceSummary.freeShipping',\n heading: 'Cart.Cart.heading',\n message: 'Cart.CartItem.message',\n regularPrice: 'Cart.CartItem.regularPrice',\n recipient: 'Cart.CartItem.recipient',\n sender: 'Cart.CartItem.sender',\n stateField: 'Cart.PriceSummary.estimatedShippingForm.state.placeholder',\n taxToBeDetermined: 'Cart.PriceSummary.taxToBeDetermined',\n zipField: 'Cart.PriceSummary.estimatedShippingForm.zip.placeholder',\n file: 'Cart.CartItem.file',\n files: 'Cart.CartItem.files',\n });\n\n // Subscribe to cart data events\n useEffect(() => {\n const event = events.on(\n 'cart/data',\n (payload) => {\n setData(payload as CartModel);\n\n const shippingAddress = payload?.addresses?.shipping?.[0];\n\n if (shippingAddress) {\n const { countryCode, regionCode, zipCode } = shippingAddress;\n handleEstimateShipping({\n shippingCountry: countryCode,\n shippingState: regionCode,\n shippingZip: zipCode,\n });\n }\n },\n { eager: true }\n );\n\n return () => {\n event?.off();\n };\n }, [handleEstimateShipping]);\n\n // Publish shopping cart view event only once when the component is mounted and initialData is available\n useEffect(() => {\n if (initialData && Object.keys(initialData).length > 0) {\n publishShoppingCartViewEvent(initialData, state.locale || 'en-US');\n }\n }, [initialData]);\n\n const priceSummary =\n data?.totalQuantity ?? 0 ? (\n <PriceSummary\n data-testid=\"price-summary\"\n loading={priceSummaryLoading}\n heading=\"Order Summary\"\n total={{\n price: (\n <Price amount={data?.total.value} currency={data?.total.currency} />\n ),\n estimated: true,\n }}\n subTotal={{\n price: (\n <Price\n data-testid=\"subtotal\"\n amount={data?.subtotal.excludingTax?.value}\n currency={data?.subtotal.excludingTax?.currency}\n />\n ),\n }}\n shipping={\n data?.isVirtual\n ? undefined\n : {\n price:\n estimatedShippingPrice?.amount == 0 ? (\n <span data-testId=\"free-shipping\">\n {dictionary.freeShipping}\n </span>\n ) : estimatedShippingPrice ? (\n <Price {...estimatedShippingPrice} />\n ) : (\n <span>{dictionary.taxToBeDetermined}</span>\n ),\n estimated: true,\n countryField: (\n <Picker\n name=\"shippingCountry\"\n placeholder={dictionary.countryField}\n value={selectedCountry}\n variant=\"primary\"\n options={countries}\n handleSelect={handleCountrySelected}\n data-testid=\"estimate-shipping-country-selector\"\n />\n ),\n stateField:\n regions.length > 0 ? (\n <Picker\n name=\"shippingState\"\n placeholder={dictionary.stateField}\n variant=\"primary\"\n options={regions}\n value={selectedRegion}\n data-testid=\"estimate-shipping-state-selector\"\n disabled={regionsLoading}\n />\n ) : (\n <Input\n aria-label={dictionary.stateField}\n name=\"shippingState\"\n placeholder={dictionary.stateField}\n variant=\"primary\"\n value={selectedRegion}\n disabled={regionsLoading}\n data-testid=\"estimate-shipping-state-input\"\n maxLength={50}\n />\n ),\n zipField: (\n <Input\n aria-label={dictionary.zipField}\n name=\"shippingZip\"\n placeholder={dictionary.zipField}\n variant=\"primary\"\n data-testid=\"estimate-shipping-zip-input\"\n value={selectedZip}\n maxLength={12}\n />\n ),\n estimateButton: (\n <Button\n variant=\"secondary\"\n data-testid=\"estimate-shipping-apply-button\"\n aria-label={dictionary.applyButton}\n >\n {dictionary.applyButton}\n </Button>\n ),\n destinationText:\n estimatedDestinationText || dictionary.taxToBeDetermined,\n onEstimate: handleEstimateShipping,\n }\n }\n taxTotal={{\n price: data?.totalTax ? (\n <Price\n data-testid=\"tax-total\"\n amount={data?.totalTax?.value}\n currency={data?.totalTax?.currency}\n />\n ) : (\n <span data-testid=\"tax-total\">{dictionary.taxToBeDetermined}</span>\n ),\n estimated: true,\n }}\n primaryAction={\n routeCheckout ? (\n <Button\n data-testid=\"checkout-button\"\n variant=\"primary\"\n href={routeCheckout({\n cartId: data!.id,\n })}\n >\n {dictionary.checkout}\n </Button>\n ) : undefined\n }\n discounts={data?.appliedDiscounts.map((discount) => {\n return {\n label: discount.label,\n price: (\n <Price\n data-testid=\"summary-discount-total\"\n amount={-discount.amount.value}\n currency={discount.amount.currency}\n sale={true}\n />\n ),\n };\n })}\n />\n ) : undefined;\n\n return (\n <CartComponent\n {...props}\n heading={<div>{dictionary.heading}</div>}\n emptyCart={<EmptyCart ctaLinkURL={routeEmptyCartCTA?.()} />}\n priceSummary={priceSummary}\n products={\n data?.totalQuantity ?? 0 ? (\n <CartList>\n {data?.items.map((item, index) => {\n const isLoading = itemsLoading.has(item.uid);\n\n const configurations = {\n ...(item.bundleOptions ?? {}),\n ...(item.selectedOptions ?? {}),\n ...item.customizableOptions,\n ...(item.recipient\n ? { [dictionary.recipient]: item.recipient }\n : {}),\n ...(item.recipientEmail && item.recipient\n ? {\n [dictionary.recipient]: `${item.recipient} (${item.recipientEmail})`,\n }\n : {}),\n ...(item.sender ? { [dictionary.sender]: item.sender } : {}),\n ...(item.senderEmail && item.sender\n ? {\n [dictionary.sender]: `${item.sender} (${item.senderEmail})`,\n }\n : {}),\n ...(item.message ? { [dictionary.message]: item.message } : {}),\n ...(item.links && item.links.count\n ? item.links.count > 1\n ? {\n [dictionary.files.replace(\n '{count}',\n item.links.count.toString()\n )]: item.links.result,\n }\n : {\n [dictionary.file.replace(\n '{count}',\n item.links.count.toString()\n )]: item.links.result,\n }\n : {}),\n };\n\n return (\n <CartItem\n data-testid=\"cart-item\"\n ariaLabel={item.name}\n key={item.uid}\n updating={isLoading}\n image={\n routeProduct ? (\n <a href={routeProduct(item)}>\n <Image\n loading={index < 4 ? 'eager' : 'lazy'}\n src={item.image.src}\n alt={item.image.alt}\n width=\"300\"\n height=\"300\"\n params={{ width: 300 }}\n />\n </a>\n ) : (\n <Image\n loading={index < 4 ? 'eager' : 'lazy'}\n src={item.image.src}\n alt={item.image.alt}\n width=\"300\"\n height=\"300\"\n params={{ width: 300 }}\n />\n )\n }\n title={\n <span>\n {routeProduct ? (\n <a href={routeProduct(item)}>{item.name}</a>\n ) : (\n <>{item.name}</>\n )}\n </span>\n }\n sku={<span>{item.sku}</span>}\n configurations={\n Object.keys(configurations).length > 0\n ? configurations\n : undefined\n }\n quantity={item.quantity}\n price={\n <Price\n amount={item.regularPrice?.value}\n currency={item.regularPrice?.currency}\n style={{ font: 'inherit' }}\n />\n }\n total={\n <>\n <Price\n amount={item.total.value}\n currency={item.total.currency}\n variant={item.discounted ? 'strikethrough' : 'default'}\n data-testid=\"regular-total\"\n aria-label={dictionary.regularPrice}\n />\n\n {item.discounted && (\n <Price\n amount={item.discountedTotal?.value}\n currency={item.discountedTotal?.currency}\n sale={item.discounted}\n data-testid=\"discount-total\"\n aria-label={dictionary.discountedPrice}\n />\n )}\n </>\n }\n onQuantity={(value) => {\n handleItemQuantityUpdate(item.uid, value);\n }}\n onRemove={() => {\n handleItemQuantityUpdate(item.uid, 0);\n }}\n />\n );\n })}\n </CartList>\n ) : undefined\n }\n />\n );\n};\n\nCart.getInitialData = async function () {\n return getPersistedData();\n};\n"],"names":["Cart","className","children","emptyCart","heading","products","priceSummary","props","_jsx","classes","_jsxs","VComponent","node","Divider","variant","useEstimatedShipping","countries","setCountries","useState","selectedCountry","setSelectedCountry","selectedRegion","setSelectedRegion","selectedZip","setSelectedZip","regions","setRegions","regionsLoading","setRegionsLoading","estimatedShippingPrice","setEstimatedShippingPrice","estimatedDestinationText","setEstimatedDestinationText","priceSummaryLoading","setPriceSummaryLoading","handleEstimateShipping","useCallback","formValues","shippingCountry","shippingState","shippingZip","addressData","countryCode","postcode","region","code","then","data","amount","value","currency","finally","handleCountrySelected","event","preventDefault","target","useEffect","getCountries","defaultCountry","transformedCountries","map","country","isDefaultCountry","id","text","label","getRegions","transformedRegions","name","loading","initialData","routeProduct","routeEmptyCartCTA","routeCheckout","setData","itemsLoading","setItemLoading","Set","handleItemsLoading","state","uid","prev","add","delete","handleItemQuantityUpdate","quantity","updateProductsFromCart","dictionary","useText","applyButton","checkout","countryField","discountedPrice","download","freeShipping","message","regularPrice","recipient","sender","stateField","taxToBeDetermined","zipField","file","files","events","on","payload","shippingAddress","addresses","shipping","regionCode","zipCode","eager","off","Object","keys","length","locale","totalQuantity","PriceSummary","total","price","Price","estimated","subTotal","subtotal","excludingTax","isVirtual","undefined","Picker","placeholder","options","handleSelect","disabled","Input","maxLength","estimateButton","Button","destinationText","onEstimate","taxTotal","totalTax","primaryAction","href","cartId","discounts","appliedDiscounts","discount","sale","CartComponent","EmptyCart","ctaLinkURL","CartList","items","item","index","isLoading","has","configurations","bundleOptions","selectedOptions","customizableOptions","recipientEmail","senderEmail","links","count","replace","toString","result","CartItem","ariaLabel","updating","image","Image","src","alt","width","height","params","title","_Fragment","sku","style","font","discounted","discountedTotal","onQuantity","onRemove","getInitialData","getPersistedData"],"mappings":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { HTMLAttributes } from 'preact/compat';
|
|
2
|
+
import { Container } from '@dropins/tools/types/elsie/src/lib';
|
|
3
|
+
import { CartModel } from '../../data/models';
|
|
4
|
+
|
|
5
|
+
export interface MiniCartProps extends HTMLAttributes<HTMLDivElement> {
|
|
6
|
+
routeProduct?: (item: CartModel['items'][0]) => string;
|
|
7
|
+
routeCart?: () => string;
|
|
8
|
+
routeCheckout?: () => string;
|
|
9
|
+
routeEmptyCartCTA?: () => string;
|
|
10
|
+
}
|
|
11
|
+
export declare const MiniCart: Container<MiniCartProps, CartModel | null>;
|
|
12
|
+
//# sourceMappingURL=MiniCart.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MiniCart.d.ts","sourceRoot":"","sources":["../../../src/containers/MiniCart/MiniCart.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAuB,MAAM,eAAe,CAAC;AACpE,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC7C,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAgB/C,MAAM,WAAW,aAAc,SAAQ,cAAc,CAAC,cAAc,CAAC;IACnE,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,MAAM,CAAC;IACvD,SAAS,CAAC,EAAE,MAAM,MAAM,CAAC;IACzB,aAAa,CAAC,EAAE,MAAM,MAAM,CAAC;IAC7B,iBAAiB,CAAC,EAAE,MAAM,MAAM,CAAC;CAClC;AAED,eAAO,MAAM,QAAQ,EAAE,SAAS,CAAC,aAAa,EAAE,SAAS,GAAG,IAAI,CA6N/D,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/containers/MiniCart/index.ts"],"names":[],"mappings":"AAAA,cAAc,qCAAqC,CAAC;AACpD,OAAO,EAAE,QAAQ,IAAI,OAAO,EAAE,MAAM,qCAAqC,CAAC"}
|
package/containers/MiniCart.js
CHANGED
|
@@ -1 +1,2 @@
|
|
|
1
|
-
import*as t from"@dropins/tools/event-bus.js";import*as e from"@dropins/tools/fetch-graphql.js";export const id=836;export const ids=[836];export const modules={5416:(t,e,r)=>{r.d(e,{Y:()=>R,c:()=>R});var n=r(2796),i=r(2336),a=r(8122),o=r(4944),c=r(1044),l=r(5092),s=r(2460),d=r(5536),u=r.n(d),m=r(7008),p=r.n(m),f=r(1496),v=r.n(f),y=r(9356),g=r.n(y),h=r(9904),b=r.n(h),w=r(5984),O={attributes:{"data-dropin":"storefront-cart","data-sdk":"0.21.0"},styleTagTransform:function(t,e){window._loadedStyles=window._loadedStyles??{};const r=t?.match(/^\.dropin-(\w+)/)?.[1],n=e.getAttribute("data-sdk"),i=r?`sdk/${r}`:e.getAttribute("data-dropin");e.setAttribute("data-dropin",i),e.removeAttribute("data-sdk");const a=window._loadedStyles[i];if(a){const i=function(t,e){const[r,n]=t.split("-"),[i,a]=e.split("-"),o=[...r.split("."),n],c=[...i.split("."),a],l=parseInt(o[0],10),s=parseInt(c[0],10);if(l!==s)return l>s?t:e;const d=parseInt(o[1],10),u=parseInt(c[1],10);if(d!==u)return d>u?t:e;const m=parseInt(o[2],10),p=parseInt(c[2],10);if(m!==p)return m>p?t:e;if(o[3]&&c[3]){const r=/(alpha|beta)(.*)/,n=o[3].match(r),i=c[3].match(r),a=n[1],l=i[1],s=parseInt(n[2],10),d=parseInt(i[2],10);if(a===l)return s>d?t:e;if("alpha"===a&&"beta"===l)return e;if("beta"===a&&"alpha"===l)return t}return o[3]?e:t}(n,a.sdk);if(!r||r&&i===a.sdk){const e=a.style.textContent;a.style.textContent=`${e}\n/* --- MERGED --- */\n${t}`}else r&&i!==a.sdk&&(a.style.textContent=`/* --- UPGRADED --- */\n${t}`);return void e.remove()}e.textContent=t,window._loadedStyles[i]={sdk:n,core:r,style:e};const o=document.querySelector("head"),{lastDropinStyleInjected:c,lastSDKStyleInjected:l}=window._loadedStyles;r?(l?o.insertBefore(e,l.nextSibling):o.insertBefore(e,o.firstChild),window._loadedStyles.lastSDKStyleInjected=e):(c?o.insertBefore(e,c.nextSibling):l?o.insertBefore(e,l.nextSibling):o.insertBefore(e,o.firstChild),window._loadedStyles.lastDropinStyleInjected=e)}};O.setAttributes=g(),O.insert=v().bind(null,"head"),O.domAPI=p(),O.insertStyleElement=b();u()(w.c,O);w.c&&w.c.locals&&w.c.locals;var j=r(8412),_=["className","children","emptyCart","heading","products","estimatedTotal","ctas"];function P(t,e){var r=Object.keys(t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(t);e&&(n=n.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),r.push.apply(r,n)}return r}function C(t){for(var e=1;e<arguments.length;e++){var r=null!=arguments[e]?arguments[e]:{};e%2?P(Object(r),!0).forEach((function(e){x(t,e,r[e])})):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(r)):P(Object(r)).forEach((function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(r,e))}))}return t}function x(t,e,r){var n;return(e="symbol"==typeof(n=function(t,e){if("object"!=typeof t||!t)return t;var r=t[Symbol.toPrimitive];if(void 0!==r){var n=r.call(t,e||"default");if("object"!=typeof n)return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===e?String:Number)(t)}(e,"string"))?n:String(n))in t?Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}):t[e]=r,t}function S(t,e){if(null==t)return{};var r,n,i=function(t,e){if(null==t)return{};var r,n,i={},a=Object.keys(t);for(n=0;n<a.length;n++)r=a[n],e.indexOf(r)>=0||(i[r]=t[r]);return i}(t,e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(t);for(n=0;n<a.length;n++)r=a[n],e.indexOf(r)>=0||Object.prototype.propertyIsEnumerable.call(t,r)&&(i[r]=t[r])}return i}var k=t=>{var{className:e,children:r,emptyCart:n,heading:i,products:a,estimatedTotal:d,ctas:u}=t,m=S(t,_),p=(0,s.cF)({estimatedTotal:"Cart.MiniCart.estimatedTotal"});return(0,j.YH)("div",C(C({},m),{},{className:(0,o.i)(["cart-mini-cart",e]),children:[a&&i&&(0,j.YH)("div",{className:"cart-mini-cart__heading",children:[(0,j.im)(c.o,{node:i,className:"cart-mini-cart__heading-text"}),(0,j.im)(l.c,{variant:"primary",className:"cart-mini-cart__heading-divider"})]}),a?(0,j.YH)(j.ae,{children:[(0,j.im)("div",{className:"cart-mini-cart__products",children:a}),(0,j.YH)("div",{className:"cart-mini-cart__footer",children:[d&&(0,j.YH)("div",{className:"cart-mini-cart__footer__estimated-total",children:[p.estimatedTotal,(0,j.im)(c.o,{node:d})]}),u&&(0,j.im)(c.o,{node:u,className:"cart-mini-cart__footer__ctas"})]})]}):(0,j.im)(c.o,{node:n,className:"cart-mini-cart__empty-cart"})]}))},I=r(3912),D=r(8920),T=r(2872),Y=r(3604),E=r(4168),N=r(4072),A=r(1580),L=r(7192),M=r(7218),q=["children","initialData","routeProduct","routeCart","routeCheckout","routeEmptyCartCTA"];function B(t,e,r,n,i,a,o){try{var c=t[a](o),l=c.value}catch(t){return void r(t)}c.done?e(l):Promise.resolve(l).then(n,i)}function H(t){return function(){var e=this,r=arguments;return new Promise((function(n,i){var a=t.apply(e,r);function o(t){B(a,n,i,o,c,"next",t)}function c(t){B(a,n,i,o,c,"throw",t)}o(void 0)}))}}function z(t,e){var r=Object.keys(t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(t);e&&(n=n.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),r.push.apply(r,n)}return r}function Q(t){for(var e=1;e<arguments.length;e++){var r=null!=arguments[e]?arguments[e]:{};e%2?z(Object(r),!0).forEach((function(e){F(t,e,r[e])})):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(r)):z(Object(r)).forEach((function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(r,e))}))}return t}function F(t,e,r){var n;return(e="symbol"==typeof(n=function(t,e){if("object"!=typeof t||!t)return t;var r=t[Symbol.toPrimitive];if(void 0!==r){var n=r.call(t,e||"default");if("object"!=typeof n)return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===e?String:Number)(t)}(e,"string"))?n:String(n))in t?Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}):t[e]=r,t}function G(t,e){if(null==t)return{};var r,n,i=function(t,e){if(null==t)return{};var r,n,i={},a=Object.keys(t);for(n=0;n<a.length;n++)r=a[n],e.indexOf(r)>=0||(i[r]=t[r]);return i}(t,e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(t);for(n=0;n<a.length;n++)r=a[n],e.indexOf(r)>=0||Object.prototype.propertyIsEnumerable.call(t,r)&&(i[r]=t[r])}return i}var R=t=>{var e,r,i,{children:o,initialData:c=null,routeProduct:l,routeCart:d,routeCheckout:u,routeEmptyCartCTA:m}=t,p=G(t,q),[f,v]=(0,n.oT)(c),[y,g]=(0,n.oT)(new Set),h=(t,e)=>{g((r=>(t?r.add(e):r.delete(e),new Set(r))))};(0,n.YB)((()=>{var t=a.events.on("cart/data",(t=>{v(t)}),{eager:!0});return()=>{null==t||t.off()}}),[]);var b=(0,s.cF)({heading:"Cart.MiniCart.heading",regularPrice:"Cart.CartItem.regularPrice",discountedPrice:"Cart.CartItem.discountedPrice",checkoutLink:"Cart.MiniCart.checkoutLink",cartLink:"Cart.MiniCart.cartLink"});return(0,n.YB)((()=>{c&&Object.keys(c).length>0&&(0,L.Ws)(c,M.K.locale||"en-US")}),[c]),(0,j.im)(k,Q(Q({},p),{},{heading:(0,j.im)("div",{children:b.heading.replace("{count}",(null!==(e=null==f?void 0:f.totalQuantity)&&void 0!==e?e:0).toString())}),emptyCart:(0,j.im)(I.Q,{ctaLinkURL:null==m?void 0:m()}),estimatedTotal:(null==f?void 0:f.total)&&(0,j.im)(D.Y,{amount:null==f?void 0:f.total.value,currency:null==f?void 0:f.total.currency,style:{font:"inherit"}}),ctas:(0,j.YH)("div",{children:[u&&(0,j.im)(T.q,{variant:"primary",href:u(),children:b.checkoutLink}),d&&(0,j.im)(T.q,{variant:"tertiary",href:d(),children:b.cartLink})]}),products:null!==(r=null==f?void 0:f.totalQuantity)&&void 0!==r&&r?(0,j.im)(Y.A,{children:null==f||null===(i=f.miniCartMaxItems)||void 0===i?void 0:i.map(((t,e)=>{var r,n,i,a,o=y.has(t.uid);return(0,j.im)(E.Y,{updating:o,image:l?(0,j.im)("a",{href:l(t),children:(0,j.im)(N.W,{loading:e<4?"eager":"lazy",src:t.image.src,alt:t.image.alt,width:"300",height:"300",params:{width:300}})}):(0,j.im)(N.W,{loading:e<4?"eager":"lazy",src:t.image.src,alt:t.image.alt,width:"300",height:"300",params:{width:300}}),title:(0,j.im)("span",{children:l?(0,j.im)("a",{href:l(t),children:t.name}):t.name}),sku:(0,j.im)("span",{children:t.sku}),configurations:t.selectedOptions,quantity:t.quantity,price:(0,j.im)(D.Y,{amount:null===(r=t.regularPrice)||void 0===r?void 0:r.value,currency:null===(n=t.regularPrice)||void 0===n?void 0:n.currency,weight:"normal"}),total:(0,j.YH)(j.ae,{children:[(0,j.im)(D.Y,{amount:t.total.value,currency:t.total.currency,variant:t.discounted?"strikethrough":"default","data-testid":"regular-total","aria-label":b.regularPrice}),t.discounted&&(0,j.im)(D.Y,{amount:null===(i=t.discountedTotal)||void 0===i?void 0:i.value,currency:null===(a=t.discountedTotal)||void 0===a?void 0:a.currency,sale:t.discounted,"data-testid":"discount-total","aria-label":b.discountedPrice})]}),onRemove:()=>{var e,r;e=t.uid,r=0,h(!0,e),(0,A.E)([{uid:e,quantity:r}]).finally((()=>{h(!1,e)}))}},t.uid)}))}):void 0}))};R.getInitialData=H((function*(){return(0,i.u)()}))},5984:(t,e,r)=>{r.d(e,{c:()=>c});var n=r(6008),i=r.n(n),a=r(2076),o=r.n(a)()(i());o.push([t.id,".cart-mini-cart{\n display:flex;\n flex-direction:column;\n height:100%;\n padding:var(--spacing-small) var(--spacing-small) var(--spacing-medium);\n box-sizing:border-box;\n}\n\n.cart-mini-cart__empty-cart{\n width:100%;\n max-width:800px;\n height:100%;\n display:flex;\n flex-direction:column;\n justify-content:center;\n align-self:center;\n}\n\n.cart-mini-cart__heading{\n display:grid;\n row-gap:var(--spacing-xsmall);\n font:var(--type-headline-2-default-font);\n letter-spacing:var(--type-headline-2-default-letter-spacing);\n}\n\n.cart-mini-cart__heading-divider{\n width:100%;\n margin:var(--spacing-xxsmall) 0 0 0;\n}\n\n.cart-mini-cart__products{\n flex:1;\n overflow-y:auto;\n max-height:100%;\n padding-top:var(--spacing-medium);\n padding-bottom:var(--spacing-medium);\n}\n\n.cart-mini-cart__footer{\n display:grid;\n grid-auto-flow:row;\n gap:var(--spacing-small);\n padding-top:var(--spacing-small);\n}\n\n.cart-mini-cart__footer__estimated-total{\n font:var(--type-body-1-emphasized-font);\n letter-spacing:var(--type-body-1-emphasized-letter-spacing);\n display:grid;\n grid-template:max-content / 1fr auto;\n gap:var(--spacing-xsmall);\n}\n\n.cart-mini-cart__footer__ctas{\n display:grid;\n grid-auto-flow:row;\n gap:var(--spacing-xsmall);\n}\n",""]);const c=o},8122:(e,r,n)=>{e.exports=(t=>{var e={};return n.d(e,t),e})({events:()=>t.events})},8616:(t,r,n)=>{t.exports=(t=>{var e={};return n.d(e,t),e})({FetchGraphQL:()=>e.FetchGraphQL})}};import r from"../runtime.js";import*as n from"../756.js";r.C(n);import*as i from"../992.js";r.C(i);import*as a from"../928.js";r.C(a);import*as o from"../805.js";r.C(o);import*as c from"./MiniCart.js";r.C(c);var l,s=(l=5416,r(r.s=l)),d=s.Y,u=s.c;export{d as MiniCart,u as default};
|
|
1
|
+
import{useState as N,useEffect as b}from"@dropins/tools/preact-compat.js";import{s as j,n as E}from"../chunks/getStoreConfig.js";import{events as z}from"@dropins/tools/event-bus.js";import{E as Q}from"../chunks/MiniCart.js";import{classes as U,VComponent as g}from"@dropins/tools/lib.js";import{Divider as q,Price as m,Button as w,CartList as F,CartItem as R,Image as P}from"@dropins/tools/components.js";import{jsxs as i,jsx as r,Fragment as S}from"@dropins/tools/preact-jsx-runtime.js";import{useText as M}from"@dropins/tools/i18n.js";import{b as T,u as V}from"../chunks/updateProductsFromCart.js";import"@dropins/tools/fetch-graphql.js";const B=({className:f,children:c,emptyCart:s,heading:d,products:l,estimatedTotal:o,ctas:h,...a})=>{const p=M({estimatedTotal:"Cart.MiniCart.estimatedTotal"});return i("div",{...a,className:U(["cart-mini-cart",f]),children:[l&&d&&i("div",{className:"cart-mini-cart__heading",children:[r(g,{node:d,className:"cart-mini-cart__heading-text"}),r(q,{variant:"primary",className:"cart-mini-cart__heading-divider"})]}),l?i(S,{children:[r("div",{className:"cart-mini-cart__products",children:l}),i("div",{className:"cart-mini-cart__footer",children:[o&&i("div",{className:"cart-mini-cart__footer__estimated-total",children:[p.estimatedTotal,r(g,{node:o})]}),h&&r(g,{node:h,className:"cart-mini-cart__footer__ctas"})]})]}):r(g,{node:s,className:"cart-mini-cart__empty-cart"})]})},D=({children:f,initialData:c=null,routeProduct:s,routeCart:d,routeCheckout:l,routeEmptyCartCTA:o,...h})=>{var C;const[a,p]=N(c),[x,O]=N(new Set),y=(e,n)=>{O(u=>(e?u.add(n):u.delete(n),new Set(u)))};b(()=>{const e=z.on("cart/data",n=>{p(n)},{eager:!0});return()=>{e==null||e.off()}},[]);const t=M({cartLink:"Cart.MiniCart.cartLink",checkoutLink:"Cart.MiniCart.checkoutLink",discountedPrice:"Cart.CartItem.discountedPrice",heading:"Cart.MiniCart.heading",message:"Cart.CartItem.message",recipient:"Cart.CartItem.recipient",regularPrice:"Cart.CartItem.regularPrice",sender:"Cart.CartItem.sender",file:"Cart.CartItem.file",files:"Cart.CartItem.files"}),$=(e,n)=>{y(!0,e),V([{uid:e,quantity:n}]).finally(()=>{y(!1,e)})};return b(()=>{c&&Object.keys(c).length>0&&T(c,j.locale||"en-US")},[c]),r(B,{...h,heading:r("div",{children:t.heading.replace("{count}",((a==null?void 0:a.totalQuantity)??0).toString())}),emptyCart:r(Q,{ctaLinkURL:o==null?void 0:o()}),estimatedTotal:(a==null?void 0:a.total)&&r(m,{amount:a==null?void 0:a.total.value,currency:a==null?void 0:a.total.currency,style:{font:"inherit"}}),ctas:i("div",{children:[l&&r(w,{variant:"primary",href:l(),children:t.checkoutLink}),d&&r(w,{variant:"tertiary",href:d(),children:t.cartLink})]}),products:(a==null?void 0:a.totalQuantity)??0?r(F,{children:(C=a==null?void 0:a.miniCartMaxItems)==null?void 0:C.map((e,n)=>{var _,v,I,L;const u=x.has(e.uid),k={...e.bundleOptions??{},...e.selectedOptions??{},...e.customizableOptions,...e.recipient?{[t.recipient]:e.recipient}:{},...e.recipientEmail&&e.recipient?{[t.recipient]:`${e.recipient} (${e.recipientEmail})`}:{},...e.sender?{[t.sender]:e.sender}:{},...e.senderEmail&&e.sender?{[t.sender]:`${e.sender} (${e.senderEmail})`}:{},...e.message?{[t.message]:e.message}:{},...e.links&&e.links.count?e.links.count>1?{[t.files.replace("{count}",e.links.count.toString())]:e.links.result}:{[t.file.replace("{count}",e.links.count.toString())]:e.links.result}:{}};return r(R,{"data-testid":"cart-item",updating:u,image:s?r("a",{href:s(e),children:r(P,{loading:n<4?"eager":"lazy",src:e.image.src,alt:e.image.alt,width:"300",height:"300",params:{width:300}})}):r(P,{loading:n<4?"eager":"lazy",src:e.image.src,alt:e.image.alt,width:"300",height:"300",params:{width:300}}),title:r("span",{children:s?r("a",{href:s(e),children:e.name}):e.name}),sku:r("span",{children:e.sku}),configurations:Object.keys(k).length>0?k:void 0,quantity:e.quantity,price:r(m,{amount:(_=e.regularPrice)==null?void 0:_.value,currency:(v=e.regularPrice)==null?void 0:v.currency,weight:"normal"}),total:i(S,{children:[r(m,{amount:e.total.value,currency:e.total.currency,variant:e.discounted?"strikethrough":"default","data-testid":"regular-total","aria-label":t.regularPrice}),e.discounted&&r(m,{amount:(I=e.discountedTotal)==null?void 0:I.value,currency:(L=e.discountedTotal)==null?void 0:L.currency,sale:e.discounted,"data-testid":"discount-total","aria-label":t.discountedPrice})]}),onRemove:()=>{$(e.uid,0)}},e.uid)})}):void 0})};D.getInitialData=async function(){return E()};export{D as MiniCart,D as default};
|
|
2
|
+
//# sourceMappingURL=MiniCart.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MiniCart.js","sources":["../../src/components/MiniCart/MiniCart.tsx","../../src/containers/MiniCart/MiniCart.tsx"],"sourcesContent":["import { FunctionComponent, VNode } from 'preact';\nimport { HTMLAttributes } from 'preact/compat';\nimport { VComponent, classes } from '@adobe/elsie/lib';\nimport { Divider } from '@adobe/elsie/components';\nimport { useText } from '@adobe/elsie/i18n';\n\nimport '@/cart/components/MiniCart/MiniCart.css';\n\nexport interface MiniCartProps extends HTMLAttributes<HTMLDivElement> {\n emptyCart: VNode;\n heading?: VNode;\n products?: VNode;\n estimatedTotal?: VNode;\n ctas?: VNode;\n}\n\nexport const MiniCart: FunctionComponent<MiniCartProps> = ({\n className,\n children,\n emptyCart,\n heading,\n products,\n estimatedTotal,\n ctas,\n ...props\n}) => {\n const dictionary = useText({\n estimatedTotal: 'Cart.MiniCart.estimatedTotal',\n });\n\n return (\n <div {...props} className={classes(['cart-mini-cart', className])}>\n {/* Heading */}\n {products && heading && (\n <div className=\"cart-mini-cart__heading\">\n <VComponent node={heading} className=\"cart-mini-cart__heading-text\" />\n\n <Divider\n variant=\"primary\"\n className=\"cart-mini-cart__heading-divider\"\n />\n </div>\n )}\n\n {/* Content */}\n {products ? (\n <>\n <div className=\"cart-mini-cart__products\">{products}</div>\n\n <div className=\"cart-mini-cart__footer\">\n {estimatedTotal && (\n <div className=\"cart-mini-cart__footer__estimated-total\">\n {dictionary.estimatedTotal}\n <VComponent node={estimatedTotal} />\n </div>\n )}\n\n {ctas && (\n <VComponent\n node={ctas}\n className=\"cart-mini-cart__footer__ctas\"\n />\n )}\n </div>\n </>\n ) : (\n <VComponent node={emptyCart} className=\"cart-mini-cart__empty-cart\" />\n )}\n </div>\n );\n};\n","import { HTMLAttributes, useEffect, useState } from 'preact/compat';\nimport { Container } from '@adobe/elsie/lib';\nimport { CartModel } from '@/cart/data/models';\nimport { getPersistedData } from '@/cart/lib/persisted-data';\nimport { events } from '@adobe/event-bus';\nimport { EmptyCart, MiniCart as MiniCartComponent } from '@/cart/components';\nimport { useText } from '@adobe/elsie/i18n';\nimport {\n Button,\n CartItem,\n CartList,\n Image,\n Price,\n} from '@adobe/elsie/components';\nimport { updateProductsFromCart } from '@/cart/api';\nimport { publishShoppingCartViewEvent } from '@/cart/lib/acdl';\nimport { state } from '@/cart/lib/state';\n\nexport interface MiniCartProps extends HTMLAttributes<HTMLDivElement> {\n routeProduct?: (item: CartModel['items'][0]) => string;\n routeCart?: () => string;\n routeCheckout?: () => string;\n routeEmptyCartCTA?: () => string;\n}\n\nexport const MiniCart: Container<MiniCartProps, CartModel | null> = ({\n children,\n initialData = null,\n routeProduct,\n routeCart,\n routeCheckout,\n routeEmptyCartCTA,\n ...props\n}) => {\n const [data, setData] = useState<CartModel | null>(initialData);\n const [itemsLoading, setItemLoading] = useState<Set<string>>(new Set());\n\n const handleItemsLoading = (state: boolean, uid: string) => {\n setItemLoading((prev) => {\n state ? prev.add(uid) : prev.delete(uid);\n return new Set(prev);\n });\n };\n\n useEffect(() => {\n const event = events.on(\n 'cart/data',\n (payload) => {\n setData(payload);\n },\n { eager: true }\n );\n\n return () => {\n event?.off();\n };\n }, []);\n\n const dictionary = useText({\n cartLink: 'Cart.MiniCart.cartLink',\n checkoutLink: 'Cart.MiniCart.checkoutLink',\n discountedPrice: 'Cart.CartItem.discountedPrice',\n heading: 'Cart.MiniCart.heading',\n message: 'Cart.CartItem.message',\n recipient: 'Cart.CartItem.recipient',\n regularPrice: 'Cart.CartItem.regularPrice',\n sender: 'Cart.CartItem.sender',\n file: 'Cart.CartItem.file',\n files: 'Cart.CartItem.files',\n });\n\n const handleItemQuantityUpdate = (uid: string, quantity: number) => {\n handleItemsLoading(true, uid);\n\n updateProductsFromCart([{ uid, quantity }]).finally(() => {\n handleItemsLoading(false, uid);\n });\n };\n\n // Publish shopping cart view event only once when the component is mounted and initialData is available\n useEffect(() => {\n if (initialData && Object.keys(initialData).length > 0) {\n publishShoppingCartViewEvent(initialData, state.locale || 'en-US');\n }\n }, [initialData]);\n\n return (\n <MiniCartComponent\n {...props}\n heading={\n <div>\n {dictionary.heading.replace(\n '{count}',\n (data?.totalQuantity ?? 0).toString()\n )}\n </div>\n }\n emptyCart={<EmptyCart ctaLinkURL={routeEmptyCartCTA?.()} />}\n estimatedTotal={\n data?.total && (\n <Price\n amount={data?.total.value}\n currency={data?.total.currency}\n style={{ font: 'inherit' }}\n />\n )\n }\n ctas={\n <div>\n {routeCheckout && (\n <Button variant=\"primary\" href={routeCheckout()}>\n {dictionary.checkoutLink}\n </Button>\n )}\n {routeCart && (\n <Button variant=\"tertiary\" href={routeCart()}>\n {dictionary.cartLink}\n </Button>\n )}\n </div>\n }\n products={\n data?.totalQuantity ?? 0 ? (\n <CartList>\n {data?.miniCartMaxItems?.map((item, index) => {\n const isLoading = itemsLoading.has(item.uid);\n\n const configurations = {\n ...(item.bundleOptions ?? {}),\n ...(item.selectedOptions ?? {}),\n ...item.customizableOptions,\n ...(item.recipient\n ? { [dictionary.recipient]: item.recipient }\n : {}),\n ...(item.recipientEmail && item.recipient\n ? {\n [dictionary.recipient]: `${item.recipient} (${item.recipientEmail})`,\n }\n : {}),\n ...(item.sender ? { [dictionary.sender]: item.sender } : {}),\n ...(item.senderEmail && item.sender\n ? {\n [dictionary.sender]: `${item.sender} (${item.senderEmail})`,\n }\n : {}),\n ...(item.message ? { [dictionary.message]: item.message } : {}),\n ...(item.links && item.links.count\n ? item.links.count > 1\n ? {\n [dictionary.files.replace(\n '{count}',\n item.links.count.toString()\n )]: item.links.result,\n }\n : {\n [dictionary.file.replace(\n '{count}',\n item.links.count.toString()\n )]: item.links.result,\n }\n : {}),\n };\n\n return (\n <CartItem\n data-testid=\"cart-item\"\n key={item.uid}\n updating={isLoading}\n image={\n routeProduct ? (\n <a href={routeProduct(item)}>\n <Image\n loading={index < 4 ? 'eager' : 'lazy'}\n src={item.image.src}\n alt={item.image.alt}\n width=\"300\"\n height=\"300\"\n params={{ width: 300 }}\n />\n </a>\n ) : (\n <Image\n loading={index < 4 ? 'eager' : 'lazy'}\n src={item.image.src}\n alt={item.image.alt}\n width=\"300\"\n height=\"300\"\n params={{ width: 300 }}\n />\n )\n }\n title={\n <span>\n {routeProduct ? (\n <a href={routeProduct(item)}>{item.name}</a>\n ) : (\n item.name\n )}\n </span>\n }\n sku={<span>{item.sku}</span>}\n configurations={\n Object.keys(configurations).length > 0\n ? configurations\n : undefined\n }\n quantity={item.quantity}\n price={\n <Price\n amount={item.regularPrice?.value}\n currency={item.regularPrice?.currency}\n weight=\"normal\"\n />\n }\n total={\n <>\n <Price\n amount={item.total.value}\n currency={item.total.currency}\n variant={item.discounted ? 'strikethrough' : 'default'}\n data-testid=\"regular-total\"\n aria-label={dictionary.regularPrice}\n />\n\n {item.discounted && (\n <Price\n amount={item.discountedTotal?.value}\n currency={item.discountedTotal?.currency}\n sale={item.discounted}\n data-testid=\"discount-total\"\n aria-label={dictionary.discountedPrice}\n />\n )}\n </>\n }\n onRemove={() => {\n handleItemQuantityUpdate(item.uid, 0);\n }}\n />\n );\n })}\n </CartList>\n ) : undefined\n }\n />\n );\n};\n\nMiniCart.getInitialData = async function () {\n return getPersistedData();\n};\n"],"names":["MiniCart","className","children","emptyCart","heading","products","estimatedTotal","ctas","props","dictionary","useText","_jsxs","classes","_jsx","VComponent","node","Divider","variant","_Fragment","initialData","routeProduct","routeCart","routeCheckout","routeEmptyCartCTA","data","setData","useState","itemsLoading","setItemLoading","Set","handleItemsLoading","state","uid","prev","add","delete","useEffect","event","events","on","payload","eager","off","cartLink","checkoutLink","discountedPrice","message","recipient","regularPrice","sender","file","files","handleItemQuantityUpdate","quantity","updateProductsFromCart","finally","Object","keys","length","locale","MiniCartComponent","replace","totalQuantity","toString","EmptyCart","ctaLinkURL","total","Price","amount","value","currency","style","font","Button","href","CartList","miniCartMaxItems","map","item","index","isLoading","has","configurations","bundleOptions","selectedOptions","customizableOptions","recipientEmail","senderEmail","links","count","result","CartItem","updating","image","Image","loading","src","alt","width","height","params","title","name","sku","undefined","price","weight","discounted","discountedTotal","sale","onRemove","getInitialData","getPersistedData"],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/containers/index.ts"],"names":[],"mappings":"AAAA,cAAc,wBAAwB,CAAC;AACvC,cAAc,4BAA4B,CAAC"}
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ACDL Shopping Cart Types copied over from:
|
|
3
|
+
* https://github.com/adobe/commerce-events/blob/main/packages/storefront-events-sdk/src/types/schemas/shoppingCart.ts
|
|
4
|
+
*/
|
|
5
|
+
export type ShoppingCartContext = {
|
|
6
|
+
id: string | null;
|
|
7
|
+
items?: Array<ShoppingCartItem>;
|
|
8
|
+
prices?: {
|
|
9
|
+
subtotalExcludingTax?: Price;
|
|
10
|
+
subtotalIncludingTax?: Price;
|
|
11
|
+
};
|
|
12
|
+
totalQuantity: number;
|
|
13
|
+
possibleOnepageCheckout?: boolean;
|
|
14
|
+
giftMessageSelected?: boolean;
|
|
15
|
+
giftWrappingSelected?: boolean;
|
|
16
|
+
source?: string;
|
|
17
|
+
};
|
|
18
|
+
export type ChangedProductsContext = {
|
|
19
|
+
items?: ShoppingCartItem[];
|
|
20
|
+
};
|
|
21
|
+
export type Price = {
|
|
22
|
+
value: number;
|
|
23
|
+
currency?: string;
|
|
24
|
+
regularPrice?: number;
|
|
25
|
+
};
|
|
26
|
+
export type Product = {
|
|
27
|
+
productId: number;
|
|
28
|
+
name: string;
|
|
29
|
+
sku: string;
|
|
30
|
+
topLevelSku?: string | null;
|
|
31
|
+
specialToDate?: string | null;
|
|
32
|
+
specialFromDate?: string | null;
|
|
33
|
+
newToDate?: string | null;
|
|
34
|
+
newFromDate?: string | null;
|
|
35
|
+
createdAt?: string | null;
|
|
36
|
+
updatedAt?: string | null;
|
|
37
|
+
manufacturer?: string | null;
|
|
38
|
+
countryOfManufacture?: string | null;
|
|
39
|
+
categories?: string[] | null;
|
|
40
|
+
productType?: string | null;
|
|
41
|
+
pricing?: {
|
|
42
|
+
regularPrice: number;
|
|
43
|
+
minimalPrice?: number;
|
|
44
|
+
maximalPrice?: number;
|
|
45
|
+
specialPrice?: number;
|
|
46
|
+
tierPricing?: {
|
|
47
|
+
customerGroupId?: number | null;
|
|
48
|
+
qty: number;
|
|
49
|
+
value: number;
|
|
50
|
+
}[];
|
|
51
|
+
currencyCode: string | null;
|
|
52
|
+
};
|
|
53
|
+
canonicalUrl?: string | null;
|
|
54
|
+
mainImageUrl?: string | null;
|
|
55
|
+
};
|
|
56
|
+
export type ShoppingCartItem = {
|
|
57
|
+
canApplyMsrp: boolean;
|
|
58
|
+
formattedPrice: string;
|
|
59
|
+
id: string;
|
|
60
|
+
prices: {
|
|
61
|
+
price: Price;
|
|
62
|
+
};
|
|
63
|
+
product: Product;
|
|
64
|
+
configurableOptions?: Array<ConfigurableOption>;
|
|
65
|
+
quantity: number;
|
|
66
|
+
};
|
|
67
|
+
export type ConfigurableOption = {
|
|
68
|
+
id: number;
|
|
69
|
+
optionLabel: string;
|
|
70
|
+
valueId: number;
|
|
71
|
+
valueLabel: string;
|
|
72
|
+
};
|
|
73
|
+
//# sourceMappingURL=acdl-models.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"acdl-models.d.ts","sourceRoot":"","sources":["../../../src/data/models/acdl-models.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,MAAM,MAAM,mBAAmB,GAAG;IAChC,EAAE,EAAE,MAAM,GAAG,IAAI,CAAC;IAClB,KAAK,CAAC,EAAE,KAAK,CAAC,gBAAgB,CAAC,CAAC;IAChC,MAAM,CAAC,EAAE;QACP,oBAAoB,CAAC,EAAE,KAAK,CAAC;QAC7B,oBAAoB,CAAC,EAAE,KAAK,CAAC;KAC9B,CAAC;IACF,aAAa,EAAE,MAAM,CAAC;IACtB,uBAAuB,CAAC,EAAE,OAAO,CAAC;IAClC,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF,MAAM,MAAM,sBAAsB,GAAG;IACnC,KAAK,CAAC,EAAE,gBAAgB,EAAE,CAAC;CAC5B,CAAC;AAEF,MAAM,MAAM,KAAK,GAAG;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB,CAAC;AAEF,MAAM,MAAM,OAAO,GAAG;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;IACZ,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,eAAe,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,oBAAoB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACrC,UAAU,CAAC,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;IAC7B,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,OAAO,CAAC,EAAE;QACR,YAAY,EAAE,MAAM,CAAC;QACrB,YAAY,CAAC,EAAE,MAAM,CAAC;QACtB,YAAY,CAAC,EAAE,MAAM,CAAC;QACtB,YAAY,CAAC,EAAE,MAAM,CAAC;QACtB,WAAW,CAAC,EAAE;YACZ,eAAe,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;YAChC,GAAG,EAAE,MAAM,CAAC;YACZ,KAAK,EAAE,MAAM,CAAC;SACf,EAAE,CAAC;QACJ,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;KAC7B,CAAC;IACF,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC9B,CAAC;AAEF,MAAM,MAAM,gBAAgB,GAAG;IAC7B,YAAY,EAAE,OAAO,CAAC;IACtB,cAAc,EAAE,MAAM,CAAC;IACvB,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE;QACN,KAAK,EAAE,KAAK,CAAC;KACd,CAAC;IACF,OAAO,EAAE,OAAO,CAAC;IACjB,mBAAmB,CAAC,EAAE,KAAK,CAAC,kBAAkB,CAAC,CAAC;IAChD,QAAQ,EAAE,MAAM,CAAC;CAClB,CAAC;AAEF,MAAM,MAAM,kBAAkB,GAAG;IAC/B,EAAE,EAAE,MAAM,CAAC;IACX,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;CACpB,CAAC"}
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
export interface CartModel {
|
|
2
|
+
id: string;
|
|
3
|
+
totalQuantity: number;
|
|
4
|
+
errors?: ItemError[];
|
|
5
|
+
items: Item[];
|
|
6
|
+
miniCartMaxItems: Item[];
|
|
7
|
+
total: Price;
|
|
8
|
+
discount?: Price;
|
|
9
|
+
subtotal: {
|
|
10
|
+
excludingTax: Price;
|
|
11
|
+
includingTax: Price;
|
|
12
|
+
includingDiscountOnly: Price;
|
|
13
|
+
};
|
|
14
|
+
appliedTaxes: TotalPriceModifier[];
|
|
15
|
+
totalTax?: Price;
|
|
16
|
+
appliedDiscounts: TotalPriceModifier[];
|
|
17
|
+
shipping?: Price;
|
|
18
|
+
isVirtual?: boolean;
|
|
19
|
+
addresses: {
|
|
20
|
+
shipping?: {
|
|
21
|
+
countryCode: string;
|
|
22
|
+
zipCode?: string;
|
|
23
|
+
regionCode?: string;
|
|
24
|
+
}[];
|
|
25
|
+
};
|
|
26
|
+
}
|
|
27
|
+
interface TotalPriceModifier {
|
|
28
|
+
amount: Price;
|
|
29
|
+
label: string;
|
|
30
|
+
}
|
|
31
|
+
export interface Item {
|
|
32
|
+
itemType: string;
|
|
33
|
+
uid: string;
|
|
34
|
+
url: ItemURL;
|
|
35
|
+
quantity: number;
|
|
36
|
+
sku: string;
|
|
37
|
+
name: string;
|
|
38
|
+
image: ItemImage;
|
|
39
|
+
links?: ItemLinks;
|
|
40
|
+
price: Price;
|
|
41
|
+
total: Price;
|
|
42
|
+
discountedTotal?: Price;
|
|
43
|
+
discount?: Price;
|
|
44
|
+
regularPrice: Price;
|
|
45
|
+
discounted: boolean;
|
|
46
|
+
bundleOptions?: {
|
|
47
|
+
[key: string]: any;
|
|
48
|
+
};
|
|
49
|
+
selectedOptions?: {
|
|
50
|
+
[key: string]: any;
|
|
51
|
+
};
|
|
52
|
+
customizableOptions?: {
|
|
53
|
+
[key: string]: any;
|
|
54
|
+
};
|
|
55
|
+
message?: string;
|
|
56
|
+
recipient?: string;
|
|
57
|
+
recipientEmail?: string;
|
|
58
|
+
sender?: string;
|
|
59
|
+
senderEmail?: string;
|
|
60
|
+
}
|
|
61
|
+
interface ItemError {
|
|
62
|
+
id: string;
|
|
63
|
+
text: string;
|
|
64
|
+
}
|
|
65
|
+
interface ItemImage {
|
|
66
|
+
src: string;
|
|
67
|
+
alt: string;
|
|
68
|
+
}
|
|
69
|
+
interface Price {
|
|
70
|
+
value: number;
|
|
71
|
+
currency: string;
|
|
72
|
+
}
|
|
73
|
+
interface ItemURL {
|
|
74
|
+
urlKey: string;
|
|
75
|
+
categories: string[];
|
|
76
|
+
}
|
|
77
|
+
interface ItemLinks {
|
|
78
|
+
count: number;
|
|
79
|
+
result: string;
|
|
80
|
+
}
|
|
81
|
+
export {};
|
|
82
|
+
//# sourceMappingURL=cart-model.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cart-model.d.ts","sourceRoot":"","sources":["../../../src/data/models/cart-model.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,SAAS;IACxB,EAAE,EAAE,MAAM,CAAC;IACX,aAAa,EAAE,MAAM,CAAC;IACtB,MAAM,CAAC,EAAE,SAAS,EAAE,CAAC;IACrB,KAAK,EAAE,IAAI,EAAE,CAAC;IACd,gBAAgB,EAAE,IAAI,EAAE,CAAC;IACzB,KAAK,EAAE,KAAK,CAAC;IACb,QAAQ,CAAC,EAAE,KAAK,CAAC;IACjB,QAAQ,EAAE;QACR,YAAY,EAAE,KAAK,CAAC;QACpB,YAAY,EAAE,KAAK,CAAC;QACpB,qBAAqB,EAAE,KAAK,CAAC;KAC9B,CAAC;IACF,YAAY,EAAE,kBAAkB,EAAE,CAAC;IACnC,QAAQ,CAAC,EAAE,KAAK,CAAC;IACjB,gBAAgB,EAAE,kBAAkB,EAAE,CAAC;IACvC,QAAQ,CAAC,EAAE,KAAK,CAAC;IACjB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,SAAS,EAAE;QACT,QAAQ,CAAC,EAAE;YACT,WAAW,EAAE,MAAM,CAAC;YACpB,OAAO,CAAC,EAAE,MAAM,CAAC;YACjB,UAAU,CAAC,EAAE,MAAM,CAAC;SACrB,EAAE,CAAC;KACL,CAAC;CACH;AAED,UAAU,kBAAkB;IAC1B,MAAM,EAAE,KAAK,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,IAAI;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,EAAE,OAAO,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,SAAS,CAAC;IACjB,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB,KAAK,EAAE,KAAK,CAAC;IACb,KAAK,EAAE,KAAK,CAAC;IACb,eAAe,CAAC,EAAE,KAAK,CAAC;IACxB,QAAQ,CAAC,EAAE,KAAK,CAAC;IACjB,YAAY,EAAE,KAAK,CAAC;IACpB,UAAU,EAAE,OAAO,CAAC;IACpB,aAAa,CAAC,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAA;KAAE,CAAC;IACvC,eAAe,CAAC,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAA;KAAE,CAAC;IACzC,mBAAmB,CAAC,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAA;KAAE,CAAC;IAC7C,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,UAAU,SAAS;IACjB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;CACd;AAED,UAAU,SAAS;IACjB,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,EAAE,MAAM,CAAC;CACb;AAED,UAAU,KAAK;IACb,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,UAAU,OAAO;IACf,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,EAAE,CAAC;CACtB;AAED,UAAU,SAAS;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;CAChB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/data/models/index.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAC;AAC7B,cAAc,gBAAgB,CAAC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
export interface StoreConfigModel {
|
|
2
|
+
displayMiniCart: boolean;
|
|
3
|
+
miniCartMaxItemsDisplay: number;
|
|
4
|
+
cartExpiresInDays: number;
|
|
5
|
+
cartSummaryDisplayTotal: number;
|
|
6
|
+
defaultCountry: string;
|
|
7
|
+
categoryFixedProductTaxDisplaySetting: string;
|
|
8
|
+
productFixedProductTaxDisplaySetting: string;
|
|
9
|
+
salesFixedProductTaxDisplaySetting: string;
|
|
10
|
+
shoppingCartDisplayZeroTax: boolean;
|
|
11
|
+
useConfigurableParentThumbnail: boolean;
|
|
12
|
+
}
|
|
13
|
+
//# sourceMappingURL=store-models.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"store-models.d.ts","sourceRoot":"","sources":["../../../src/data/models/store-models.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,gBAAgB;IAC/B,eAAe,EAAE,OAAO,CAAC;IACzB,uBAAuB,EAAE,MAAM,CAAC;IAChC,iBAAiB,EAAE,MAAM,CAAC;IAC1B,uBAAuB,EAAE,MAAM,CAAC;IAChC,cAAc,EAAE,MAAM,CAAC;IACvB,qCAAqC,EAAE,MAAM,CAAC;IAC9C,oCAAoC,EAAE,MAAM,CAAC;IAC7C,kCAAkC,EAAE,MAAM,CAAC;IAC3C,0BAA0B,EAAE,OAAO,CAAC;IACpC,8BAA8B,EAAE,OAAO,CAAC;CACzC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cartModel.d.ts","sourceRoot":"","sources":["../../../../src/data/transforms/__fixtures__/cartModel.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AAEpD,eAAO,MAAM,IAAI,EAAE,SA2FlB,CAAC"}
|