@faststore/core 3.0.148 → 3.0.150
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/.next/BUILD_ID +1 -1
- package/.next/build-manifest.json +46 -46
- package/.next/cache/.tsbuildinfo +1 -1
- package/.next/cache/config.json +3 -3
- package/.next/cache/eslint/.cache_1gneedd +1 -1
- package/.next/cache/webpack/client-production/0.pack +0 -0
- package/.next/cache/webpack/client-production/index.pack +0 -0
- package/.next/cache/webpack/server-production/0.pack +0 -0
- package/.next/cache/webpack/server-production/index.pack +0 -0
- package/.next/next-minimal-server.js.nft.json +1 -1
- package/.next/next-server.js.nft.json +1 -1
- package/.next/prerender-manifest.js +1 -1
- package/.next/prerender-manifest.json +1 -1
- package/.next/react-loadable-manifest.json +60 -11
- package/.next/routes-manifest.json +1 -1
- package/.next/server/chunks/1844.js +1 -1
- package/.next/server/chunks/2195.js +1 -0
- package/.next/server/chunks/2245.js +1 -0
- package/.next/server/chunks/350.js +1 -1
- package/.next/server/chunks/463.js +1 -0
- package/.next/server/chunks/5771.js +1 -0
- package/.next/server/chunks/6150.js +1 -0
- package/.next/server/chunks/6604.js +2 -2
- package/.next/server/chunks/9088.js +1 -0
- package/.next/server/chunks/9646.js +3 -3
- package/.next/server/chunks/UIBannerText.js +1 -0
- package/.next/server/middleware-build-manifest.js +1 -1
- package/.next/server/middleware-react-loadable-manifest.js +1 -1
- package/.next/server/pages/404.js +1 -1
- package/.next/server/pages/404.js.nft.json +1 -1
- package/.next/server/pages/500.js +1 -1
- package/.next/server/pages/500.js.nft.json +1 -1
- package/.next/server/pages/[...slug].js +1 -1
- package/.next/server/pages/[...slug].js.nft.json +1 -1
- package/.next/server/pages/[slug]/p.js +1 -1
- package/.next/server/pages/[slug]/p.js.nft.json +1 -1
- package/.next/server/pages/_app.js.nft.json +1 -1
- package/.next/server/pages/_document.js.nft.json +1 -1
- package/.next/server/pages/_error.js.nft.json +1 -1
- package/.next/server/pages/account.js.nft.json +1 -1
- package/.next/server/pages/api/graphql.js +1 -1
- package/.next/server/pages/api/graphql.js.nft.json +1 -1
- package/.next/server/pages/api/health/live.js.nft.json +1 -1
- package/.next/server/pages/api/health/ready.js.nft.json +1 -1
- package/.next/server/pages/api/preview.js.nft.json +1 -1
- package/.next/server/pages/checkout.js.nft.json +1 -1
- package/.next/server/pages/en-US/404.html +1 -1
- package/.next/server/pages/en-US/404.json +1 -1
- package/.next/server/pages/en-US/500.html +1 -1
- package/.next/server/pages/en-US/500.json +1 -1
- package/.next/server/pages/en-US/account.html +1 -1
- package/.next/server/pages/en-US/account.json +1 -1
- package/.next/server/pages/en-US/checkout.html +1 -1
- package/.next/server/pages/en-US/checkout.json +1 -1
- package/.next/server/pages/en-US/login.html +1 -1
- package/.next/server/pages/en-US/login.json +1 -1
- package/.next/server/pages/en-US/s.html +1 -1
- package/.next/server/pages/en-US/s.json +1 -1
- package/.next/server/pages/en-US.html +2 -2
- package/.next/server/pages/en-US.json +1 -1
- package/.next/server/pages/index.js +1 -1
- package/.next/server/pages/index.js.nft.json +1 -1
- package/.next/server/pages/login.js +1 -1
- package/.next/server/pages/login.js.nft.json +1 -1
- package/.next/server/pages/s.js +1 -1
- package/.next/server/pages/s.js.nft.json +1 -1
- package/.next/server/pages-manifest.json +1 -1
- package/.next/server/webpack-runtime.js +1 -1
- package/.next/static/chunks/16.f4ecc14d79dc118b.js +1 -0
- package/.next/static/chunks/523.fe333b7a44e82888.js +1 -0
- package/.next/static/chunks/707-83d159430b49c007.js +1 -0
- package/.next/static/chunks/721-4610a9b937a1b5e9.js +1 -0
- package/.next/static/chunks/844.dd528a0bb7646dd6.js +1 -0
- package/.next/static/chunks/941-cee2b9776c3d2607.js +33 -0
- package/.next/static/chunks/973-840ef2154b9d2940.js +1 -0
- package/.next/static/chunks/CartItem.1b93d9b5f36a1120.js +1 -0
- package/.next/static/chunks/EmptyCart.a48b5bfb30ee09f0.js +1 -0
- package/.next/static/chunks/Gift.9a645d71d393dd98.js +1 -0
- package/.next/static/chunks/OrderSummary.637b2fff8f2574e1.js +1 -0
- package/.next/static/chunks/Toast.41ed93193046b5a5.js +1 -0
- package/.next/static/chunks/UIBannerText.4e11acdb3624808c.js +1 -0
- package/.next/static/chunks/UIToast.a17cb67e284572a7.js +1 -0
- package/.next/static/chunks/pages/404-8428a5072b126db7.js +1 -0
- package/.next/static/chunks/pages/500-0f7529c8c8b90253.js +1 -0
- package/.next/static/chunks/pages/{[...slug]-7cba9be5af68debd.js → [...slug]-7251a2458aa75965.js} +1 -1
- package/.next/static/chunks/pages/[slug]/p-1433a856605b917b.js +1 -0
- package/.next/static/chunks/pages/{account-4f98162de058e79c.js → account-c0db07a5e90d1ee0.js} +1 -1
- package/.next/static/chunks/pages/{checkout-be462a7367e61849.js → checkout-a751fc8e1dcb5285.js} +1 -1
- package/.next/static/chunks/pages/{index-a8402bc13a271123.js → index-a4ffe552b1b4a4a6.js} +1 -1
- package/.next/static/chunks/pages/login-93bbc8089da5ce4a.js +1 -0
- package/.next/static/chunks/pages/{s-9929660020f45aff.js → s-9002e83fb35c96b7.js} +1 -1
- package/.next/static/chunks/webpack-39f5c3558a96182c.js +1 -0
- package/.next/static/lGVnz_12piw54w7FhWXZY/_buildManifest.js +1 -0
- package/.next/trace +98 -99
- package/.turbo/turbo-build.log +17 -17
- package/.turbo/turbo-lint.log +1 -1
- package/.turbo/turbo-test.log +5 -5
- package/@generated/gql.ts +2 -2
- package/@generated/graphql.ts +5 -2
- package/@generated/persisted-documents.json +1 -1
- package/@generated/schema.graphql +3 -1
- package/package.json +9 -9
- package/src/components/cart/CartSidebar/CartSidebar.tsx +128 -89
- package/src/components/cms/global/Components.ts +40 -0
- package/src/components/sections/BannerText/DefaultComponents.ts +12 -4
- package/src/sdk/cart/index.ts +2 -0
- package/.next/server/chunks/3887.js +0 -1
- package/.next/server/chunks/416.js +0 -1
- package/.next/server/chunks/5110.js +0 -1
- package/.next/server/chunks/5679.js +0 -1
- package/.next/server/chunks/5703.js +0 -1
- package/.next/server/chunks/UINavbarSlider.js +0 -1
- package/.next/static/chunks/16.7f3891e1a4a8aa04.js +0 -1
- package/.next/static/chunks/427-c8efc212fd14e9db.js +0 -33
- package/.next/static/chunks/523.3d7b72011d05148e.js +0 -1
- package/.next/static/chunks/61-85c56c64992419d8.js +0 -1
- package/.next/static/chunks/707-04bc546eb86a5e61.js +0 -1
- package/.next/static/chunks/721-66e815a3ca564aa6.js +0 -1
- package/.next/static/chunks/Toast.9c015005521b0f2d.js +0 -1
- package/.next/static/chunks/UIToast.b5c0885cbd078c88.js +0 -1
- package/.next/static/chunks/pages/404-d7b1eb14a5394ee4.js +0 -1
- package/.next/static/chunks/pages/500-6a48f2fbd9244e01.js +0 -1
- package/.next/static/chunks/pages/[slug]/p-eacbeeb44f49a9ab.js +0 -1
- package/.next/static/chunks/pages/login-678965fdcbeed715.js +0 -1
- package/.next/static/chunks/webpack-642f67e818afdfea.js +0 -1
- package/.next/static/xMJeuq2CpfkQ-Z8xALZD0/_buildManifest.js +0 -1
- /package/.next/static/{xMJeuq2CpfkQ-Z8xALZD0 → lGVnz_12piw54w7FhWXZY}/_ssgManifest.js +0 -0
package/.turbo/turbo-build.log
CHANGED
|
@@ -46,32 +46,32 @@ Warning: Dynamic Content not found for the page: home. Refer to the Dynamic Cont
|
|
|
46
46
|
Collecting build traces ...
|
|
47
47
|
|
|
48
48
|
Route (pages) Size First Load JS
|
|
49
|
-
┌ ● / 1.23 kB
|
|
49
|
+
┌ ● / 1.23 kB 139 kB
|
|
50
50
|
├ └ css/197e314c5a03eabd.css 740 B
|
|
51
|
-
├ /_app 0 B
|
|
52
|
-
├ ● /[...slug] 2.79 kB
|
|
51
|
+
├ /_app 0 B 91 kB
|
|
52
|
+
├ ● /[...slug] 2.79 kB 152 kB
|
|
53
53
|
├ └ css/e47f1a002bdcf76f.css 2.38 kB
|
|
54
|
-
├ ● /[slug]/p
|
|
54
|
+
├ ● /[slug]/p 12.3 kB 150 kB
|
|
55
55
|
├ └ css/9b6bba2472d272ec.css 10.5 kB
|
|
56
|
-
├ ○ /404 1.
|
|
57
|
-
├ ● /500 1.
|
|
58
|
-
├ ● /account
|
|
59
|
-
├ λ /api/graphql 0 B
|
|
60
|
-
├ λ /api/health/live 0 B
|
|
61
|
-
├ λ /api/health/ready 0 B
|
|
62
|
-
├ λ /api/preview 0 B
|
|
63
|
-
├ ● /checkout
|
|
64
|
-
├ ● /login 1.
|
|
65
|
-
└ ● /s 2.23 kB
|
|
66
|
-
+ First Load JS shared by all 94 kB
|
|
56
|
+
├ ○ /404 1.45 kB 122 kB
|
|
57
|
+
├ ● /500 1.45 kB 122 kB
|
|
58
|
+
├ ● /account 678 B 121 kB
|
|
59
|
+
├ λ /api/graphql 0 B 91 kB
|
|
60
|
+
├ λ /api/health/live 0 B 91 kB
|
|
61
|
+
├ λ /api/health/ready 0 B 91 kB
|
|
62
|
+
├ λ /api/preview 0 B 91 kB
|
|
63
|
+
├ ● /checkout 660 B 121 kB
|
|
64
|
+
├ ● /login 1.56 kB 122 kB
|
|
65
|
+
└ ● /s 2.23 kB 152 kB
|
|
66
|
+
+ First Load JS shared by all 94.1 kB
|
|
67
67
|
├ chunks/framework-8e279965036b6169.js 45.4 kB
|
|
68
68
|
├ chunks/main-029f1328cfee9686.js 33.1 kB
|
|
69
69
|
├ chunks/pages/_app-cb1c3a94f987c5c8.js 9.87 kB
|
|
70
|
-
├ chunks/webpack-
|
|
70
|
+
├ chunks/webpack-39f5c3558a96182c.js 2.73 kB
|
|
71
71
|
└ css/ee0556daedda6306.css 3.07 kB
|
|
72
72
|
|
|
73
73
|
λ (Server) server-side renders at runtime (uses getInitialProps or getServerSideProps)
|
|
74
74
|
○ (Static) automatically rendered as static HTML (uses no initial props)
|
|
75
75
|
● (SSG) automatically generated as static HTML + JSON (uses getStaticProps)
|
|
76
76
|
|
|
77
|
-
Done in
|
|
77
|
+
Done in 76.19s.
|
package/.turbo/turbo-lint.log
CHANGED
package/.turbo/turbo-test.log
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
yarn run v1.22.22
|
|
2
2
|
$ jest
|
|
3
|
-
PASS test/
|
|
4
|
-
PASS test/
|
|
5
|
-
PASS test/server/index.test.ts (
|
|
3
|
+
PASS test/server/cms/index.test.ts (35.931 s)
|
|
4
|
+
PASS test/utils/multipleTemplates.test.ts (36.352 s)
|
|
5
|
+
PASS test/server/index.test.ts (39.939 s)
|
|
6
6
|
|
|
7
7
|
Test Suites: 3 passed, 3 total
|
|
8
8
|
Tests: 19 passed, 19 total
|
|
9
9
|
Snapshots: 0 total
|
|
10
|
-
Time:
|
|
10
|
+
Time: 41.087 s
|
|
11
11
|
Ran all test suites.
|
|
12
|
-
Done in
|
|
12
|
+
Done in 43.17s.
|
package/@generated/gql.ts
CHANGED
|
@@ -38,7 +38,7 @@ const documents = {
|
|
|
38
38
|
types.ServerCollectionPageQueryDocument,
|
|
39
39
|
'\n query ServerProductQuery($locator: [IStoreSelectedFacet!]!) {\n ...ServerProduct\n product(locator: $locator) {\n id: productID\n\n seo {\n title\n description\n canonical\n }\n\n brand {\n name\n }\n\n sku\n gtin\n name\n description\n releaseDate\n\n breadcrumbList {\n itemListElement {\n item\n name\n position\n }\n }\n\n image {\n url\n alternateName\n }\n\n offers {\n lowPrice\n highPrice\n lowPriceWithTaxes\n priceCurrency\n offers {\n availability\n price\n priceValidUntil\n priceCurrency\n itemCondition\n seller {\n identifier\n }\n }\n }\n\n isVariantOf {\n productGroupID\n }\n\n ...ProductDetailsFragment_product\n }\n }\n':
|
|
40
40
|
types.ServerProductQueryDocument,
|
|
41
|
-
'\n mutation ValidateCartMutation($cart: IStoreCart!, $session: IStoreSession!) {\n validateCart(cart: $cart, session: $session) {\n order {\n orderNumber\n acceptedOffer {\n ...CartItem\n }\n }\n messages {\n ...CartMessage\n }\n }\n }\n\n fragment CartMessage on StoreCartMessage {\n text\n status\n }\n\n fragment CartItem on StoreOffer {\n seller {\n identifier\n }\n quantity\n price\n priceWithTaxes\n listPrice\n listPriceWithTaxes\n itemOffered {\n ...CartProductItem\n }\n }\n\n fragment CartProductItem on StoreProduct {\n sku\n name\n unitMultiplier\n image {\n url\n alternateName\n }\n brand {\n name\n }\n isVariantOf {\n productGroupID\n name\n skuVariants {\n activeVariations\n slugsMap\n availableVariations\n }\n }\n gtin\n additionalProperty {\n propertyID\n name\n value\n valueReference\n }\n }\n':
|
|
41
|
+
'\n mutation ValidateCartMutation($cart: IStoreCart!, $session: IStoreSession!) {\n validateCart(cart: $cart, session: $session) {\n order {\n orderNumber\n acceptedOffer {\n ...CartItem\n }\n shouldSplitItem\n }\n messages {\n ...CartMessage\n }\n }\n }\n\n fragment CartMessage on StoreCartMessage {\n text\n status\n }\n\n fragment CartItem on StoreOffer {\n seller {\n identifier\n }\n quantity\n price\n priceWithTaxes\n listPrice\n listPriceWithTaxes\n itemOffered {\n ...CartProductItem\n }\n }\n\n fragment CartProductItem on StoreProduct {\n sku\n name\n unitMultiplier\n image {\n url\n alternateName\n }\n brand {\n name\n }\n isVariantOf {\n productGroupID\n name\n skuVariants {\n activeVariations\n slugsMap\n availableVariations\n }\n }\n gtin\n additionalProperty {\n propertyID\n name\n value\n valueReference\n }\n }\n':
|
|
42
42
|
types.ValidateCartMutationDocument,
|
|
43
43
|
'\n mutation SubscribeToNewsletter($data: IPersonNewsletter!) {\n subscribeToNewsletter(data: $data) {\n id\n }\n }\n':
|
|
44
44
|
types.SubscribeToNewsletterDocument,
|
|
@@ -140,7 +140,7 @@ export function gql(
|
|
|
140
140
|
* The gql function is used to parse GraphQL queries into a document that can be used by GraphQL clients.
|
|
141
141
|
*/
|
|
142
142
|
export function gql(
|
|
143
|
-
source: '\n mutation ValidateCartMutation($cart: IStoreCart!, $session: IStoreSession!) {\n validateCart(cart: $cart, session: $session) {\n order {\n orderNumber\n acceptedOffer {\n ...CartItem\n }\n }\n messages {\n ...CartMessage\n }\n }\n }\n\n fragment CartMessage on StoreCartMessage {\n text\n status\n }\n\n fragment CartItem on StoreOffer {\n seller {\n identifier\n }\n quantity\n price\n priceWithTaxes\n listPrice\n listPriceWithTaxes\n itemOffered {\n ...CartProductItem\n }\n }\n\n fragment CartProductItem on StoreProduct {\n sku\n name\n unitMultiplier\n image {\n url\n alternateName\n }\n brand {\n name\n }\n isVariantOf {\n productGroupID\n name\n skuVariants {\n activeVariations\n slugsMap\n availableVariations\n }\n }\n gtin\n additionalProperty {\n propertyID\n name\n value\n valueReference\n }\n }\n'
|
|
143
|
+
source: '\n mutation ValidateCartMutation($cart: IStoreCart!, $session: IStoreSession!) {\n validateCart(cart: $cart, session: $session) {\n order {\n orderNumber\n acceptedOffer {\n ...CartItem\n }\n shouldSplitItem\n }\n messages {\n ...CartMessage\n }\n }\n }\n\n fragment CartMessage on StoreCartMessage {\n text\n status\n }\n\n fragment CartItem on StoreOffer {\n seller {\n identifier\n }\n quantity\n price\n priceWithTaxes\n listPrice\n listPriceWithTaxes\n itemOffered {\n ...CartProductItem\n }\n }\n\n fragment CartProductItem on StoreProduct {\n sku\n name\n unitMultiplier\n image {\n url\n alternateName\n }\n brand {\n name\n }\n isVariantOf {\n productGroupID\n name\n skuVariants {\n activeVariations\n slugsMap\n availableVariations\n }\n }\n gtin\n additionalProperty {\n propertyID\n name\n value\n valueReference\n }\n }\n'
|
|
144
144
|
): typeof import('./graphql').ValidateCartMutationDocument
|
|
145
145
|
/**
|
|
146
146
|
* The gql function is used to parse GraphQL queries into a document that can be used by GraphQL clients.
|
package/@generated/graphql.ts
CHANGED
|
@@ -677,7 +677,7 @@ export type StoreBreadcrumbList = {
|
|
|
677
677
|
export type StoreCart = {
|
|
678
678
|
/** List of shopping cart messages. */
|
|
679
679
|
messages: Array<StoreCartMessage>
|
|
680
|
-
/** Order information, including `orderNumber` and `
|
|
680
|
+
/** Order information, including `orderNumber`, `acceptedOffer` and `shouldSplitItem`. */
|
|
681
681
|
order: StoreOrder
|
|
682
682
|
}
|
|
683
683
|
|
|
@@ -887,6 +887,8 @@ export type StoreOrder = {
|
|
|
887
887
|
acceptedOffer: Array<StoreOffer>
|
|
888
888
|
/** ID of the order in [VTEX order management](https://help.vtex.com/en/tutorial/license-manager-resources-oms--60QcBsvWeum02cFi3GjBzg#). */
|
|
889
889
|
orderNumber: Scalars['String']['output']
|
|
890
|
+
/** Indicates whether or not items with attachments should be split. */
|
|
891
|
+
shouldSplitItem: Maybe<Scalars['Boolean']['output']>
|
|
890
892
|
}
|
|
891
893
|
|
|
892
894
|
/** Organization. */
|
|
@@ -1320,6 +1322,7 @@ export type ValidateCartMutationMutation = {
|
|
|
1320
1322
|
validateCart: {
|
|
1321
1323
|
order: {
|
|
1322
1324
|
orderNumber: string
|
|
1325
|
+
shouldSplitItem: boolean | null
|
|
1323
1326
|
acceptedOffer: Array<{
|
|
1324
1327
|
quantity: number
|
|
1325
1328
|
price: number
|
|
@@ -2069,7 +2072,7 @@ export const ServerProductQueryDocument = {
|
|
|
2069
2072
|
export const ValidateCartMutationDocument = {
|
|
2070
2073
|
__meta__: {
|
|
2071
2074
|
operationName: 'ValidateCartMutation',
|
|
2072
|
-
operationHash: '
|
|
2075
|
+
operationHash: 'c2b3f8bff73ebf6ac79d758c66cabbc21ba9fcc0',
|
|
2073
2076
|
},
|
|
2074
2077
|
} as unknown as TypedDocumentString<
|
|
2075
2078
|
ValidateCartMutationMutation,
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"4b33c5c07f440dc7489e55619dc2211a13786e72": "fragment ServerCollectionPage on Query { collection(slug: $slug) { id } } query ServerCollectionPageQuery($slug: String!) { collection(slug: $slug) { breadcrumbList { itemListElement { item name position } } meta { selectedFacets { key value } } seo { description title } } ...ServerCollectionPage }",
|
|
3
3
|
"46103bee661405bde706d72126fdbf9b0a0c9e6e": "fragment CartProductItem on StoreProduct { additionalProperty { name propertyID value valueReference } brand { name } gtin image { alternateName url } isVariantOf { name productGroupID skuVariants { activeVariations availableVariations slugsMap } } name sku unitMultiplier } fragment ProductDetailsFragment_product on StoreProduct { additionalProperty { name propertyID value valueReference } brand { name } description gtin image { alternateName url } isVariantOf { name productGroupID skuVariants { activeVariations availableVariations slugsMap } } name offers { lowPrice lowPriceWithTaxes offers { availability listPrice listPriceWithTaxes price priceWithTaxes seller { identifier } } } id: productID sku unitMultiplier ...CartProductItem } fragment ServerProduct on Query { product(locator: $locator) { id: productID } } query ServerProductQuery($locator: [IStoreSelectedFacet!]!) { product(locator: $locator) { brand { name } breadcrumbList { itemListElement { item name position } } description gtin image { alternateName url } isVariantOf { productGroupID } name offers { highPrice lowPrice lowPriceWithTaxes offers { availability itemCondition price priceCurrency priceValidUntil seller { identifier } } priceCurrency } id: productID releaseDate seo { canonical description title } sku ...ProductDetailsFragment_product } ...ServerProduct }",
|
|
4
|
-
"
|
|
4
|
+
"c2b3f8bff73ebf6ac79d758c66cabbc21ba9fcc0": "fragment CartItem on StoreOffer { itemOffered { ...CartProductItem } listPrice listPriceWithTaxes price priceWithTaxes quantity seller { identifier } } fragment CartMessage on StoreCartMessage { status text } fragment CartProductItem on StoreProduct { additionalProperty { name propertyID value valueReference } brand { name } gtin image { alternateName url } isVariantOf { name productGroupID skuVariants { activeVariations availableVariations slugsMap } } name sku unitMultiplier } mutation ValidateCartMutation($cart: IStoreCart!, $session: IStoreSession!) { validateCart(cart: $cart, session: $session) { messages { ...CartMessage } order { acceptedOffer { ...CartItem } orderNumber shouldSplitItem } } }",
|
|
5
5
|
"feb7005103a859e2bc8cf2360d568806fd88deba": "mutation SubscribeToNewsletter($data: IPersonNewsletter!) { subscribeToNewsletter(data: $data) { id } }",
|
|
6
6
|
"ad2eb78cfccb9dbd5a9f2d1e150cc70fea5da99a": "fragment ClientManyProducts on Query { search( first: $first after: $after sort: $sort term: $term selectedFacets: $selectedFacets ) { products { pageInfo { totalCount } } } } fragment ProductSummary_product on StoreProduct { additionalProperty { name propertyID value valueReference } advertisement { adId adResponseId } brand { brandName: name } brand { name } gtin image { alternateName url } isVariantOf { name productGroupID } name offers { lowPrice lowPriceWithTaxes offers { availability listPrice listPriceWithTaxes price quantity seller { identifier } } } id: productID sku slug } query ClientManyProductsQuery($after: String, $first: Int!, $selectedFacets: [IStoreSelectedFacet!]!, $sort: StoreSort!, $term: String!) { search( first: $first after: $after sort: $sort term: $term selectedFacets: $selectedFacets ) { products { edges { node { ...ProductSummary_product } } pageInfo { totalCount } } } ...ClientManyProducts }",
|
|
7
7
|
"177fe68cb385737b0901fc9e105f0a4813e18a20": "fragment ClientProductGallery on Query { search( first: $first after: $after sort: $sort term: $term selectedFacets: $selectedFacets ) { products { pageInfo { totalCount } } } } fragment Filter_facets on StoreFacet { ... on StoreFacetBoolean { __typename key label values { label quantity selected value } } ... on StoreFacetRange { __typename key label max { absolute selected } min { absolute selected } } } fragment SearchEvent_metadata on SearchMetadata { isTermMisspelled logicalOperator } query ClientProductGalleryQuery($after: String!, $first: Int!, $selectedFacets: [IStoreSelectedFacet!]!, $sort: StoreSort!, $term: String!) { redirect(term: $term, selectedFacets: $selectedFacets) { url } search( first: $first after: $after sort: $sort term: $term selectedFacets: $selectedFacets ) { facets { ...Filter_facets } metadata { ...SearchEvent_metadata } products { pageInfo { totalCount } } } ...ClientProductGallery }",
|
|
@@ -107,7 +107,7 @@ type StoreCartMessage {
|
|
|
107
107
|
|
|
108
108
|
"""Shopping cart information."""
|
|
109
109
|
type StoreCart {
|
|
110
|
-
"""Order information, including `orderNumber` and `
|
|
110
|
+
"""Order information, including `orderNumber`, `acceptedOffer` and `shouldSplitItem`."""
|
|
111
111
|
order: StoreOrder!
|
|
112
112
|
"""List of shopping cart messages."""
|
|
113
113
|
messages: [StoreCartMessage!]!
|
|
@@ -298,6 +298,8 @@ type StoreOrder {
|
|
|
298
298
|
orderNumber: String!
|
|
299
299
|
"""Array with information on each accepted offer."""
|
|
300
300
|
acceptedOffer: [StoreOffer!]!
|
|
301
|
+
"""Indicates whether or not items with attachments should be split."""
|
|
302
|
+
shouldSplitItem: Boolean
|
|
301
303
|
}
|
|
302
304
|
|
|
303
305
|
"""Order input."""
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@faststore/core",
|
|
3
|
-
"version": "3.0.
|
|
3
|
+
"version": "3.0.150",
|
|
4
4
|
"license": "MIT",
|
|
5
5
|
"repository": "vtex/faststore",
|
|
6
6
|
"browserslist": "supports es6-module and not dead",
|
|
@@ -43,12 +43,12 @@
|
|
|
43
43
|
"@envelop/graphql-jit": "^8.0.3",
|
|
44
44
|
"@envelop/parser-cache": "^6.0.2",
|
|
45
45
|
"@envelop/validation-cache": "^6.0.2",
|
|
46
|
-
"@faststore/api": "^3.0.
|
|
47
|
-
"@faststore/components": "^3.0.
|
|
48
|
-
"@faststore/graphql-utils": "^3.0.
|
|
49
|
-
"@faststore/lighthouse": "^3.0.
|
|
50
|
-
"@faststore/sdk": "^3.0.
|
|
51
|
-
"@faststore/ui": "^3.0.
|
|
46
|
+
"@faststore/api": "^3.0.150",
|
|
47
|
+
"@faststore/components": "^3.0.150",
|
|
48
|
+
"@faststore/graphql-utils": "^3.0.150",
|
|
49
|
+
"@faststore/lighthouse": "^3.0.150",
|
|
50
|
+
"@faststore/sdk": "^3.0.150",
|
|
51
|
+
"@faststore/ui": "^3.0.150",
|
|
52
52
|
"@graphql-codegen/cli": "5.0.2",
|
|
53
53
|
"@graphql-codegen/client-preset": "4.2.6",
|
|
54
54
|
"@graphql-codegen/typescript": "4.0.7",
|
|
@@ -87,7 +87,7 @@
|
|
|
87
87
|
"devDependencies": {
|
|
88
88
|
"@cypress/code-coverage": "^3.12.1",
|
|
89
89
|
"@envelop/testing": "^6.0.0",
|
|
90
|
-
"@faststore/eslint-config": "^3.0.
|
|
90
|
+
"@faststore/eslint-config": "^3.0.150",
|
|
91
91
|
"@lhci/cli": "^0.9.0",
|
|
92
92
|
"@testing-library/cypress": "^10.0.1",
|
|
93
93
|
"@types/cypress": "^1.1.3",
|
|
@@ -128,5 +128,5 @@
|
|
|
128
128
|
"node": "18.19.0",
|
|
129
129
|
"yarn": "1.19.1"
|
|
130
130
|
},
|
|
131
|
-
"gitHead": "
|
|
131
|
+
"gitHead": "5d33a0289de83e8319b4be2f5b28932570a22775"
|
|
132
132
|
}
|
|
@@ -1,23 +1,64 @@
|
|
|
1
|
-
import
|
|
2
|
-
Button as UIButton,
|
|
3
|
-
CartSidebar as UICartSidebar,
|
|
4
|
-
CartSidebarFooter as UICartSidebarFooter,
|
|
5
|
-
CartSidebarList as UICartSidebarList,
|
|
6
|
-
} from '@faststore/ui'
|
|
1
|
+
import dynamic from 'next/dynamic'
|
|
7
2
|
|
|
8
|
-
import type {
|
|
3
|
+
import type {
|
|
4
|
+
ButtonProps,
|
|
5
|
+
CartSidebarProps as UICartSidebarProps,
|
|
6
|
+
} from '@faststore/ui'
|
|
9
7
|
|
|
10
8
|
import type { CurrencyCode, ViewCartEvent } from '@faststore/sdk'
|
|
11
9
|
import { Icon, useFadeEffect, useUI } from '@faststore/ui'
|
|
12
|
-
import {
|
|
10
|
+
import { ReactNode, useCallback, useEffect, useMemo } from 'react'
|
|
13
11
|
import { useCart } from 'src/sdk/cart'
|
|
14
12
|
import { useCheckoutButton } from 'src/sdk/cart/useCheckoutButton'
|
|
15
13
|
import { useSession } from 'src/sdk/session'
|
|
16
14
|
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
import
|
|
20
|
-
|
|
15
|
+
const UIButton = dynamic<ButtonProps>(
|
|
16
|
+
() =>
|
|
17
|
+
import(/* webpackChunkName: "UIButton" */ '@faststore/ui').then(
|
|
18
|
+
(mod) => mod.Button
|
|
19
|
+
),
|
|
20
|
+
{ ssr: false }
|
|
21
|
+
)
|
|
22
|
+
const UICartSidebarFooter = dynamic<{ children: ReactNode }>(
|
|
23
|
+
() =>
|
|
24
|
+
import(/* webpackChunkName: "UICartSidebarFooter" */ '@faststore/ui').then(
|
|
25
|
+
(mod) => mod.CartSidebarFooter
|
|
26
|
+
),
|
|
27
|
+
{ ssr: false }
|
|
28
|
+
)
|
|
29
|
+
const UICartSidebarList = dynamic<{ children: ReactNode }>(
|
|
30
|
+
() =>
|
|
31
|
+
import(/* webpackChunkName: "UICartSidebarList" */ '@faststore/ui').then(
|
|
32
|
+
(mod) => mod.CartSidebarList
|
|
33
|
+
),
|
|
34
|
+
{ ssr: false }
|
|
35
|
+
)
|
|
36
|
+
const UICartSidebar = dynamic<UICartSidebarProps>(
|
|
37
|
+
() =>
|
|
38
|
+
import(/* webpackChunkName: "UICartSidebar" */ '@faststore/ui').then(
|
|
39
|
+
(mod) => mod.CartSidebar
|
|
40
|
+
),
|
|
41
|
+
{ ssr: false }
|
|
42
|
+
)
|
|
43
|
+
const EmptyCart = dynamic(
|
|
44
|
+
() => import(/* webpackChunkName: "EmptyCart" */ '../EmptyCart'),
|
|
45
|
+
{ ssr: false }
|
|
46
|
+
)
|
|
47
|
+
const Gift = dynamic(
|
|
48
|
+
() => import(/* webpackChunkName: "Gift" */ '../../ui/Gift'),
|
|
49
|
+
{
|
|
50
|
+
ssr: false,
|
|
51
|
+
}
|
|
52
|
+
)
|
|
53
|
+
const CartItem = dynamic(
|
|
54
|
+
() => import(/* webpackChunkName: "CartItem" */ '../CartItem'),
|
|
55
|
+
{ ssr: false }
|
|
56
|
+
)
|
|
57
|
+
const OrderSummary = dynamic(
|
|
58
|
+
() => import(/* webpackChunkName: "OrderSummary" */ '../OrderSummary'),
|
|
59
|
+
{ ssr: false }
|
|
60
|
+
)
|
|
61
|
+
|
|
21
62
|
import styles from './section.module.scss'
|
|
22
63
|
|
|
23
64
|
function useViewCartEvent() {
|
|
@@ -121,84 +162,82 @@ function CartSidebar({
|
|
|
121
162
|
return (
|
|
122
163
|
<>
|
|
123
164
|
{displayCart && (
|
|
124
|
-
<
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
{
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
{
|
|
141
|
-
<
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
useUnitMultiplier
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
{
|
|
154
|
-
<
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
</UICartSidebarList>
|
|
165
|
+
<UICartSidebar
|
|
166
|
+
overlayProps={{
|
|
167
|
+
className: `section ${styles.section} section-cart-sidebar`,
|
|
168
|
+
}}
|
|
169
|
+
title={title}
|
|
170
|
+
totalItems={totalItems}
|
|
171
|
+
alertIcon={<Icon name={alertIcon} aria-label={alertIconAlt} />}
|
|
172
|
+
alertText={alertText}
|
|
173
|
+
onClose={fadeOut}
|
|
174
|
+
>
|
|
175
|
+
{isEmpty ? (
|
|
176
|
+
<EmptyCart onDismiss={closeCart} />
|
|
177
|
+
) : (
|
|
178
|
+
<>
|
|
179
|
+
<UICartSidebarList>
|
|
180
|
+
{items.map((item) => (
|
|
181
|
+
<li key={item.id}>
|
|
182
|
+
<CartItem
|
|
183
|
+
item={item}
|
|
184
|
+
taxesConfiguration={taxesConfiguration}
|
|
185
|
+
useUnitMultiplier={
|
|
186
|
+
quantitySelector?.useUnitMultiplier ?? false
|
|
187
|
+
}
|
|
188
|
+
/>
|
|
189
|
+
</li>
|
|
190
|
+
))}
|
|
191
|
+
{gifts.length > 0 && (
|
|
192
|
+
<>
|
|
193
|
+
{gifts.map((item) => (
|
|
194
|
+
<li key={item.id}>
|
|
195
|
+
<Gift item={item} />
|
|
196
|
+
</li>
|
|
197
|
+
))}
|
|
198
|
+
</>
|
|
199
|
+
)}
|
|
200
|
+
</UICartSidebarList>
|
|
161
201
|
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
</Suspense>
|
|
202
|
+
<UICartSidebarFooter>
|
|
203
|
+
<OrderSummary
|
|
204
|
+
subTotal={
|
|
205
|
+
taxesConfiguration?.usePriceWithTaxes
|
|
206
|
+
? subTotalWithTaxes
|
|
207
|
+
: subTotal
|
|
208
|
+
}
|
|
209
|
+
total={
|
|
210
|
+
taxesConfiguration?.usePriceWithTaxes
|
|
211
|
+
? totalWithTaxes
|
|
212
|
+
: total
|
|
213
|
+
}
|
|
214
|
+
includeTaxes={taxesConfiguration?.usePriceWithTaxes}
|
|
215
|
+
includeTaxesLabel={taxesConfiguration?.taxesLabel}
|
|
216
|
+
numberOfItems={totalItems}
|
|
217
|
+
checkoutButton={
|
|
218
|
+
<UIButton
|
|
219
|
+
variant="primary"
|
|
220
|
+
icon={
|
|
221
|
+
!isValidating && (
|
|
222
|
+
<Icon
|
|
223
|
+
name={checkoutButtonIcon}
|
|
224
|
+
aria-label={checkoutButtonIconAlt}
|
|
225
|
+
width={18}
|
|
226
|
+
height={18}
|
|
227
|
+
/>
|
|
228
|
+
)
|
|
229
|
+
}
|
|
230
|
+
iconPosition="right"
|
|
231
|
+
{...btnProps}
|
|
232
|
+
>
|
|
233
|
+
{isValidating ? checkoutLoadingLabel : checkoutLabel}
|
|
234
|
+
</UIButton>
|
|
235
|
+
}
|
|
236
|
+
/>
|
|
237
|
+
</UICartSidebarFooter>
|
|
238
|
+
</>
|
|
239
|
+
)}
|
|
240
|
+
</UICartSidebar>
|
|
202
241
|
)}
|
|
203
242
|
</>
|
|
204
243
|
)
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import dynamic from 'next/dynamic'
|
|
2
|
+
import { ComponentType } from 'react'
|
|
3
|
+
|
|
4
|
+
import { OverriddenDefaultAlert as Alert } from 'src/components/sections/Alert/OverriddenDefaultAlert'
|
|
5
|
+
import { OverriddenDefaultNavbar as Navbar } from 'src/components/sections/Navbar/OverriddenDefaultNavbar'
|
|
6
|
+
import { OverriddenDefaultRegionBar as RegionBar } from 'src/components/sections/RegionBar/OverriddenDefaultRegionBar'
|
|
7
|
+
|
|
8
|
+
import CUSTOM_COMPONENTS from 'src/customizations/src/components'
|
|
9
|
+
|
|
10
|
+
const CartSidebar = dynamic(
|
|
11
|
+
() =>
|
|
12
|
+
import(
|
|
13
|
+
/* webpackChunkName: "CartSidebar" */ 'src/components/cart/CartSidebar'
|
|
14
|
+
),
|
|
15
|
+
{ ssr: false }
|
|
16
|
+
)
|
|
17
|
+
const RegionModal = dynamic(
|
|
18
|
+
() =>
|
|
19
|
+
import(
|
|
20
|
+
/* webpackChunkName: "RegionModal" */ 'src/components/region/RegionModal'
|
|
21
|
+
),
|
|
22
|
+
{ ssr: false }
|
|
23
|
+
)
|
|
24
|
+
const Footer = dynamic(
|
|
25
|
+
() =>
|
|
26
|
+
import(/* webpackChunkName: "Footer" */ 'src/components/sections/Footer'),
|
|
27
|
+
{ ssr: false }
|
|
28
|
+
)
|
|
29
|
+
|
|
30
|
+
const COMPONENTS: Record<string, ComponentType<any>> = {
|
|
31
|
+
Alert,
|
|
32
|
+
Navbar,
|
|
33
|
+
RegionBar,
|
|
34
|
+
CartSidebar, // out of viewport
|
|
35
|
+
RegionModal, // out of viewport
|
|
36
|
+
Footer, // out of viewport
|
|
37
|
+
...CUSTOM_COMPONENTS,
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
export default COMPONENTS
|
|
@@ -1,7 +1,15 @@
|
|
|
1
|
-
import
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
1
|
+
import dynamic from 'next/dynamic'
|
|
2
|
+
|
|
3
|
+
const UIBannerText = dynamic(() =>
|
|
4
|
+
import(/* webpackChunkName: "UIBannerText" */ '@faststore/ui').then(
|
|
5
|
+
(mod) => mod.BannerText
|
|
6
|
+
)
|
|
7
|
+
)
|
|
8
|
+
const UIBannerTextContent = dynamic(() =>
|
|
9
|
+
import(/* webpackChunkName: "UIBannerTextContent" */ '@faststore/ui').then(
|
|
10
|
+
(mod) => mod.BannerTextContent
|
|
11
|
+
)
|
|
12
|
+
)
|
|
5
13
|
|
|
6
14
|
export const BannerTextDefaultComponents = {
|
|
7
15
|
BannerText: UIBannerText,
|
package/src/sdk/cart/index.ts
CHANGED
|
@@ -31,6 +31,7 @@ export const ValidateCartMutation = gql(`
|
|
|
31
31
|
acceptedOffer {
|
|
32
32
|
...CartItem
|
|
33
33
|
}
|
|
34
|
+
shouldSplitItem
|
|
34
35
|
}
|
|
35
36
|
messages {
|
|
36
37
|
...CartMessage
|
|
@@ -144,6 +145,7 @@ const validateCart = async (cart: Cart): Promise<Cart | null> => {
|
|
|
144
145
|
id: getItemId(item),
|
|
145
146
|
})),
|
|
146
147
|
messages: validated.messages,
|
|
148
|
+
shouldSplitItem: validated.order.shouldSplitItem,
|
|
147
149
|
}
|
|
148
150
|
)
|
|
149
151
|
}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
"use strict";exports.id=3887,exports.ids=[3887],exports.modules={2740:(e,t,a)=>{a.d(t,{Z:()=>i});var r=a(6689),l=a.n(r);let n=(0,r.forwardRef)(function({testId:e="fs-checkbox",partial:t,...a},r){return l().createElement("input",{ref:r,"data-fs-checkbox":!0,"data-testid":e,"data-fs-checkbox-partial":t,type:"checkbox",...a})}),i=n},4873:(e,t,a)=>{a.d(t,{Z:()=>u});var r=a(6689),l=a.n(r),n=a(2614);let i=(0,r.forwardRef)(function({options:e,id:t,testId:a="fs-select",...r},i){return l().createElement("div",{"data-fs-select":!0},l().createElement("select",{ref:i,id:t,"data-testid":a,...r},Object.keys(e).map(t=>l().createElement("option",{key:t,value:t},e[t]))),l().createElement(n.Z,{"data-fs-select-icon":!0,name:"CaretDown"}))}),u=i},9395:(e,t,a)=>{a.d(t,{Z:()=>i});var r=a(6689),l=a.n(r);let percent=(e,t,a)=>Math.round((e-t)/(a-t)*100),n=(0,r.forwardRef)(function({min:e,max:t,absoluteValuesLabel:a,onChange:n,onEnd:i,testId:u="fs-slider",getAriaValueText:s,step:o,minValueLabelComponent:m,maxValueLabelComponent:d,...c},f){let b=(0,r.useMemo)(()=>(t.absolute-e.absolute)/100,[t.absolute,e.absolute]),[E,_]=(0,r.useState)(()=>percent(e.selected,e.absolute,t.absolute)),[v,p]=(0,r.useState)(()=>percent(t.selected,e.absolute,t.absolute)),[x,h]=(0,r.useState)(()=>Math.floor(e.absolute+E*b)),[g,M]=(0,r.useState)(()=>Math.round(e.absolute+v*b));return(0,r.useImperativeHandle)(f,()=>({setSliderValues:a=>{let r=Math.min(Number(a.min),g);if(h(r),_(percent(r,e.absolute,t.absolute)),a.max>t.absolute){M(t.absolute),p(percent(t.absolute,e.absolute,t.absolute));return}let l=Math.max(Number(a.max),x);M(l),p(percent(l,e.absolute,t.absolute))}})),l().createElement("div",{"data-fs-slider":!0,"data-testid":u,...c},l().createElement("div",{"data-fs-slider-absolute-values":!0},l().createElement("span",null,a.min),l().createElement("span",null,a.max)),l().createElement("div",{"data-fs-slider-wrapper":!0},l().createElement("div",{"data-fs-slider-range":!0,style:{left:`${E}%`,width:`${v-E}%`}}),l().createElement("input",{type:"range",min:Math.floor(e.absolute),max:Math.round(t.absolute),value:x,step:o,onMouseUp:()=>i?.({min:x,max:g}),onTouchEnd:()=>i?.({min:x,max:g}),onChange:a=>{let r=Math.min(Number(a.target.value),g);h(r),_(percent(r,e.absolute,t.absolute)),n?.({min:r,max:g})},"data-fs-slider-thumb":"left","aria-valuemin":e.absolute,"aria-valuemax":t.absolute,"aria-valuenow":x,"aria-label":String(x),"aria-labelledby":s?.(x,"min")}),m&&l().createElement("span",{"data-fs-slider-value-label":"min",style:{left:`calc(${x/t.absolute*100}% + (${8-.2*(x/t.absolute*100)}px))`}},m(x)),l().createElement("input",{type:"range",min:Math.floor(e.absolute),max:Math.round(t.absolute),value:g,step:o,onMouseUp:()=>i?.({min:x,max:g}),onTouchEnd:()=>i?.({min:x,max:g}),onChange:a=>{let r=Math.max(Number(a.target.value),x);M(r),p(percent(r,e.absolute,t.absolute)),n?.({min:x,max:r})},"data-fs-slider-thumb":"right","aria-valuemin":e.absolute,"aria-valuemax":t.absolute,"aria-valuenow":g,"aria-label":String(g),"aria-labelledby":s?.(g,"max")}),d&&l().createElement("span",{"data-fs-slider-value-label":"max",style:{left:`calc(${g/t.absolute*100}% + (${8-.2*(g/t.absolute*100)}px))`}},d(g))))}),i=n},6335:(e,t,a)=>{a.d(t,{Z:()=>s});var r=a(6689),l=a.n(r),n=a(1953),i=a(4873);let u=(0,r.forwardRef)(function({id:e,label:t,options:a,testId:r="fs-select-field",...u},s){return l().createElement("div",{ref:s,"data-fs-select-field":!0},l().createElement(n.Z,{"data-fs-select-field-label":!0,htmlFor:e},t),l().createElement(i.Z,{id:e,options:a,"data-testid":r,...u}))}),s=u},5699:(e,t,a)=>{a.d(t,{Z:()=>__WEBPACK_DEFAULT_EXPORT__});var r=a(6689),l=a.n(r),n=a(1516);let __WEBPACK_DEFAULT_EXPORT__=function({testId:e,title:t,indicesExpanded:a,onAccordionChange:r,children:i}){return l().createElement("div",{"data-fs-filter":!0,"data-testid":e},l().createElement("h2",{"data-fs-filter-title":!0},t),l().createElement(n.Z,{indices:a,onChange:r,"data-fs-filter-accordion":!0},i))}},2815:(e,t,a)=>{a.d(t,{Z:()=>__WEBPACK_DEFAULT_EXPORT__});var r=a(6689),l=a.n(r),n=a(4564);let __WEBPACK_DEFAULT_EXPORT__=function({children:e}){return l().createElement(n.Z,{"data-fs-filter-list":!0},e)}},6174:(e,t,a)=>{a.d(t,{Z:()=>__WEBPACK_DEFAULT_EXPORT__});var r=a(6689),l=a.n(r),n=a(2740),i=a(1953),u=a(276);let __WEBPACK_DEFAULT_EXPORT__=function({testId:e,id:t,selected:a,value:r,quantity:s,facetKey:o,label:m,onFacetChange:d}){return l().createElement("li",{key:t,"data-fs-filter-list-item":!0},l().createElement(n.Z,{id:t,checked:a,onChange:()=>d({key:o,value:r},"BOOLEAN"),"data-fs-filter-list-item-checkbox":!0,"data-testid":`${e}-accordion-panel-checkbox`,"data-value":r,"data-quantity":s}),l().createElement(i.Z,{htmlFor:t,className:"text__title-mini-alt","data-fs-filter-list-item-label":!0},m," ",l().createElement(u.Z,{"data-fs-filter-list-item-badge":!0},s)))}},2230:(e,t,a)=>{a.d(t,{Z:()=>__WEBPACK_DEFAULT_EXPORT__});var r=a(6689),l=a.n(r),n=a(8110);let formatRange=(e,t)=>`${e.toFixed(2)}-to-${t.toFixed(2)}`,__WEBPACK_DEFAULT_EXPORT__=function({min:e,max:t,formatter:a,facetKey:r,onFacetChange:i}){return l().createElement(n.Z,{"data-fs-filter-facet-range":!0,min:e,max:t,formatter:a,step:1,onEnd:e=>i({key:r,value:formatRange(e.min,e.max)},"RANGE")})}},4199:(e,t,a)=>{a.d(t,{Z:()=>__WEBPACK_DEFAULT_EXPORT__});var r=a(6689),l=a.n(r),n=a(783),i=a(7734),u=a(7583);let __WEBPACK_DEFAULT_EXPORT__=function({testId:e,label:t,index:a,children:r,type:s}){return l().createElement(n.Z,{key:`${t}-${a}`,prefixId:e,testId:`${e}-accordion`,index:a,"data-type":s,"data-fs-filter-accordion-item":!0},l().createElement(i.Z,{testId:`${e}-accordion-button`},t),l().createElement(u.Z,null,r))}},8110:(e,t,a)=>{a.d(t,{Z:()=>o});var r=a(6689),l=a.n(r),n=a(9395),i=a(9767),u=a(3779);let s=(0,r.forwardRef)(function({formatter:e,max:t,min:a,step:s=1,onChange:o,onEnd:m,testId:d="fs-price-range",variant:c,"aria-label":f,...b},E){let _=(0,r.useRef)();(0,r.useImperativeHandle)(E,()=>({setPriceRangeValues:e=>{o?.(e),_.current?.setSliderValues(e)}}));let v=(0,r.useRef)(null),p=(0,r.useRef)(null),[x,h]=(0,r.useState)(),[g,M]=(0,r.useState)(),[Z,R]=(0,r.useState)({min:Math.floor(a.selected),max:Math.round(t.selected)});return l().createElement("div",{"data-fs-price-range":!0,"data-testid":d,...b},l().createElement(n.Z,{ref:_,min:a,max:t,step:s,onEnd:e=>{m?.(e),h(void 0),M(void 0),R({min:e.min,max:e.max}),v.current?.value&&(v.current.value=String(e.min)),p.current?.value&&(p.current.value=String(e.max))},"aria-label":f,onChange:e=>o?.(e),absoluteValuesLabel:{min:l().createElement(i.Z,{value:Math.floor(a.absolute),variant:c,formatter:e}),max:l().createElement(i.Z,{value:Math.round(t.absolute),variant:c,formatter:e})},minValueLabelComponent:t=>l().createElement(i.Z,{value:t,variant:c,formatter:e}),maxValueLabelComponent:t=>l().createElement(i.Z,{value:t,variant:c,formatter:e})}),l().createElement("div",{"data-fs-price-range-inputs":!0},l().createElement(u.Z,{id:"price-range-min",step:s,label:"Min",type:"number",inputMode:"numeric",error:x,inputRef:v,min:Math.floor(a.absolute),max:Z.max,value:Z.min,onChange:e=>{var t;return t=e.target.value,void(h(void 0),Number(t)<Math.floor(a.absolute)||(Number(t)>Math.floor(Z.max)&&h("Min price can't be greater than max"),R({...Z,min:Number(t)}),_.current?.setSliderValues({...Z,min:Number(t)})))},onBlur:()=>!x&&m?.(Z)}),l().createElement(u.Z,{id:"price-range-max",label:"Max",step:s,type:"number",inputMode:"numeric",error:g,inputRef:p,max:Math.round(t.absolute),min:Z.min,value:Z.max,onChange:e=>{var a;return a=e.target.value,void(M(void 0),Number(a)>Math.round(t.absolute)||(Number(a)<Math.round(Z.min)&&M("Max price can't be smaller than min"),R({...Z,max:Number(a)}),_.current?.setSliderValues({...Z,max:Number(a)})))},onBlur:()=>!g&&m?.(Z)})))}),o=s}};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
"use strict";exports.id=416,exports.ids=[416],exports.modules={6476:(e,t,a)=>{a.d(t,{Z:()=>__WEBPACK_DEFAULT_EXPORT__});var l=a(6689),r=a.n(l),n=a(3339);let __WEBPACK_DEFAULT_EXPORT__=function({testId:e="fs-buy-button",icon:t,children:a,...l}){return r().createElement(n.Z,{"data-fs-buy-button":!0,icon:t,iconPosition:"left","data-testid":e,...l},a)}},7876:(e,t,a)=>{a.d(t,{Z:()=>o});var l=a(6689),r=a.n(l),n=a(3024);let i=(0,l.forwardRef)(function({title:e,label:t,refTag:a="Ref.: ",refNumber:l,testId:i="fs-product-title",ratingValue:o,...s},c){return r().createElement("header",{ref:c,"data-fs-product-title":!0,"data-testid":i,...s},r().createElement("div",{"data-fs-product-title-header":!0},e,!!t&&t),(l||o)&&r().createElement("div",{"data-fs-product-title-addendum":!0},o&&r().createElement(n.Z,{value:o}),l&&r().createElement(r().Fragment,null,a," ",l)))}),o=i},5136:(e,t,a)=>{a.d(t,{Z:()=>c});var l=a(6689),r=a.n(l),n=a(1953),i=a(727),o=a(5450);let getImageName=e=>{let t=new URL(e).pathname,a=t.split("/").slice(-1)[0];return a},useDefineVariant=(e,t)=>(0,l.useMemo)(()=>{if(t)return t;let a=e.every(e=>e.hexColor);if(a)return"color";let l=e[0]?.src&&getImageName(e[0].src);if(l&&1===e.length)return"image";let r=e.every(e=>{if(!e.src)return!0;let t=getImageName(e.src);return t===l});return r?"label":"image"},[e,t]),useSkuSlug=(e,t,a,r)=>{let n=(0,l.useCallback)(l=>{if(r)return{getItemHrefProp:r};let n=`/${function(e,t,a){let l=Object.entries(t).flat().join("-");if(l in e)return e[l];let r=Object.keys(e),n=`${a}-${t[a]}`,i=r.filter(e=>e.includes(n)),o=i.length>1?function(e,t){let[a,l]=t.split("-");return e.find(e=>{let t=function(e){let t={},a=e.split("-");for(let e=0;e<a.length;e+=2){let l=a[e].trim(),r=a[e+1]?a[e+1].trim():"";t[l]=r}return t}(e);return t[a]===l})}(i,n):i[0];return e[o??r[0]]}(t,{...e,[a]:l.value},a)}/p`;return n},[e,r,t,a]);return{getItemHref:n}},ImageComponentFallback=({src:e,alt:t,...a})=>r().createElement("img",{src:e,alt:t,...a}),s=(0,l.forwardRef)(function({availableVariations:e,skuPropertyName:t,testId:a,activeVariations:l,linkProps:s,slugsMap:c,getItemHref:d,ImageComponent:m=ImageComponentFallback,variant:u,...f},g){let E=l[t],p=e[t],h=useDefineVariant(p,u),{getItemHref:_}=useSkuSlug(l,c,t,d);return r().createElement("div",{ref:g,"data-fs-sku-selector":!0,"data-testid":a,"data-fs-sku-selector-variant":h,...f},t&&r().createElement(n.Z,{"data-fs-sku-selector-title":!0},t,": ",r().createElement("strong",null,E)),r().createElement("ul",{"data-fs-sku-selector-list":!0},p.map((e,a)=>r().createElement("li",{key:String(a),title:e.label,"data-fs-sku-selector-option":!0,"data-fs-sku-selector-disabled":e.disabled,"data-fs-sku-selector-checked":e.value===l[t]},r().createElement(i.Z,{"data-fs-sku-selector-option-link":!0,href:_(e),...s},r().createElement(o.Z,{text:e.label})),"label"===h&&r().createElement("span",null,e.value),"image"===h&&m&&r().createElement("span",null,r().createElement(m,{src:e.src??"",alt:e.alt??"","data-fs-sku-selector-option-image":!0})),"color"===h&&r().createElement("span",null,r().createElement("div",{"data-fs-sku-selector-option-color":!0,title:e.value,style:{"--data-fs-sku-selector-option-color-bkg-color":e.hexColor}}))))))}),c=s},7336:(e,t,a)=>{a.d(t,{Z:()=>i});var l=a(6689),r=a.n(l);let n=(0,l.forwardRef)(function({children:e,variant:t="colored",testId:a="fs-table",...l},n){return r().createElement("div",{"data-fs-table":!0},r().createElement("table",{ref:n,"data-fs-table-content":!0,"data-fs-table-variant":t,"data-testid":a,...l},e))}),i=n},9336:(e,t,a)=>{a.d(t,{Z:()=>i});var l=a(6689),r=a.n(l);let n=(0,l.forwardRef)(function({children:e,testId:t="fs-table-body",...a},l){return r().createElement("tbody",{ref:l,"data-testid":t,"data-fs-table-body":!0,...a},e)}),i=n},4256:(e,t,a)=>{a.d(t,{Z:()=>i});var l=a(6689),r=a.n(l);let n=(0,l.forwardRef)(function({scope:e,align:t,children:a,variant:l="data",testId:n="fs-table-cell",...i},o){return r().createElement("header"===l?"th":"td",{ref:o,"data-fs-table-cell":l,"data-fs-table-cell-align":t,"data-testid":n,scope:e,...i},a)}),i=n},4236:(e,t,a)=>{a.d(t,{Z:()=>i});var l=a(6689),r=a.n(l);let n=(0,l.forwardRef)(function({children:e,testId:t="fs-table-row",...a},l){return r().createElement("tr",{ref:l,"data-fs-table-row":!0,"data-testid":t,...a},e)}),i=n},165:(e,t,a)=>{a.d(t,{Z:()=>o});var l=a(6689),r=a.n(l),n=a(9362);let i=(0,l.forwardRef)(function({images:e,children:t,ImageComponent:a,selectedImageIdx:l,setSelectedImageIdx:i,testId:o="fs-image-gallery",...s},c){let d=e.length>1;return r().createElement("section",{ref:c,"data-fs-image-gallery":d?"with-selector":"without-selector","data-testid":o,...s},t,d&&r().createElement(n.Z,{images:e,onSelect:i,currentImageIdx:l,ImageComponent:a}))}),o=i},9362:(e,t,a)=>{a.d(t,{Z:()=>__WEBPACK_DEFAULT_EXPORT__});var l=a(6689),r=a.n(l),n=a(9785),i=a(7041),o=a(2614),s=a(3339);let moveScroll=(e,t)=>{e&&(e.scrollHeight>e.clientHeight?(e.style.overflow="auto",window.requestAnimationFrame(()=>e.scrollTo({top:t,behavior:"smooth"})),setTimeout(()=>e.style.overflow="hidden",2e3)):e.scrollLeft+=t)},hasScroll=e=>!!e&&(e.scrollHeight>e.clientHeight||e.scrollWidth>e.clientWidth),__WEBPACK_DEFAULT_EXPORT__=function({images:e,onSelect:t,ImageComponent:a,currentImageIdx:c,testId:d="fs-image-gallery-selector","aria-label":m="Product Images",navigationButtonLeftAriaLabel:u="Backward slide image selector",navigationButtonRightAriaLabel:f="Forward slide image selector"}){let g=(0,l.useRef)(null),E=hasScroll(g.current),[p,h]=(0,l.useState)(!0),[_,b]=(0,l.useState)(!0),v=(0,l.useCallback)((t,a)=>{0===t&&h(a),t===e.length-1&&b(a)},[e.length]);return r().createElement("section",{"data-fs-image-gallery-selector":!0,"data-testid":d,"aria-label":m},E&&!p&&r().createElement("div",{"data-fs-image-gallery-selector-control":!0},r().createElement(i.Z,{"data-fs-image-gallery-selector-control-button":!0,"aria-label":u,icon:r().createElement(o.Z,{name:"ArrowLeft"}),onClick:()=>moveScroll(g.current,-400)})),r().createElement("div",{"data-fs-image-gallery-selector-elements":!0,ref:g},e.map((l,i)=>r().createElement(n.InView,{key:i,onChange:e=>v(i,e)},r().createElement(s.Z,{key:i,"aria-label":`${l.alternateName} - Image ${i+1} of ${e.length}`,onClick:()=>t(i),"data-fs-image-gallery-selector-thumbnail":i===c?"selected":"true"},r().createElement(a,{url:l.url??"",loading:0===i?"eager":"lazy",alternateName:l.alternateName??""}))))),E&&!_&&r().createElement("div",{"data-fs-image-gallery-selector-control":!0},r().createElement(i.Z,{"data-fs-image-gallery-selector-control-button":!0,"aria-label":f,icon:r().createElement(o.Z,{name:"ArrowLeft"}),onClick:()=>moveScroll(g.current,400)})))}},1431:(e,t,a)=>{a.d(t,{Z:()=>__WEBPACK_DEFAULT_EXPORT__});var l=a(6689),r=a.n(l);let __WEBPACK_DEFAULT_EXPORT__=({children:e})=>r().createElement(r().Fragment,null,e)},8878:(e,t,a)=>{a.d(t,{Z:()=>__WEBPACK_DEFAULT_EXPORT__});var l=a(6689),r=a.n(l),n=a(3779),i=a(727),o=a(2614),s=a(7336),c=a(9336),d=a(4236),m=a(4256),u=a(9767);let __WEBPACK_DEFAULT_EXPORT__=function({testId:e="fs-shipping-simulation",formatter:t,title:a="Shipping",inputLabel:l="Postal Code",optionsLabel:f="Shipping options",idkPostalCodeLinkProps:g,onInput:E,onSubmit:p,onClear:h,location:_,options:b=[],displayClearButton:v=!1,errorMessage:Z,postalCode:k,...y}){let w=!!b&&b.length>0;return r().createElement("section",{"data-fs-shipping-simulation":!0,"data-fs-shipping-simulation-empty":w?"false":"true","data-testid":e,...y},r().createElement("h2",{"data-fs-shipping-simulation-title":!0},a),r().createElement(n.Z,{actionable:!0,error:Z,id:`${e}-input-field`,label:l,value:k,onInput:e=>E?.(e),onSubmit:()=>p?.(),onClear:()=>h?.(),displayClearButton:v}),r().createElement(i.Z,{href:"/","data-fs-shipping-simulation-link":!0,size:"small",...g},g?.children??r().createElement(r().Fragment,null,"I don't know my Postal Code",r().createElement(o.Z,{name:"ArrowSquareOut",width:20,height:20}))),w&&r().createElement(r().Fragment,null,r().createElement("header",{"data-fs-shipping-simulation-header":!0},r().createElement("h3",{"data-fs-shipping-simulation-subtitle":!0},f),r().createElement("p",{"data-fs-shipping-simulation-location":!0},_)),r().createElement(s.Z,null,r().createElement(c.Z,null,b.map(e=>r().createElement(d.Z,{key:e.carrier},r().createElement(m.Z,{align:"left"},e.carrier),r().createElement(m.Z,null,e.localizedEstimates),r().createElement(m.Z,{align:"right"},e.price&&r().createElement(u.Z,{formatter:t,value:e.price,SRText:"price"}))))))))}}};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
"use strict";exports.id=5110,exports.ids=[5110],exports.modules={5110:(e,t,r)=>{r.d(t,{C:()=>c});var o=r(7296),n=r(945);function ownKeys(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);t&&(o=o.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),r.push.apply(r,o)}return r}function _objectSpread(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?ownKeys(Object(r),!0).forEach(function(t){var o;o=r[t],t in e?Object.defineProperty(e,t,{value:o,enumerable:!0,configurable:!0,writable:!0}):e[t]=o}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):ownKeys(Object(r)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))})}return e}let c=(0,o.v)(_objectSpread(_objectSpread({},{section:"EmptyState"}),{},{Section:n.Z}))}};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
"use strict";exports.id=5679,exports.ids=[5679],exports.modules={5679:(e,r,t)=>{t.d(r,{w:()=>useProductLink});var i=t(6689),a=t(5238);let useProductLink=({index:e,product:r,selectedOffer:s})=>{let{slug:n}=r,{currency:{code:o}}=(0,a.kP)(),c=(0,i.useCallback)(()=>{Promise.all([t.e(2880),t.e(1153)]).then(t.bind(t,1153)).then(({sendAnalyticsEvent:t})=>{t({name:"select_item",params:{items:[{item_id:r.isVariantOf.productGroupID,item_name:r.isVariantOf.name,item_brand:r.brand.name,item_variant:r.sku,index:e,price:r.offers.offers[s].price,discount:r.offers.offers[s].listPrice-r.offers.offers[s].price,currency:o,item_variant_name:r.name,product_reference_id:r.gtin}]}}),t({name:"search_select_item",params:{url:window.location.href,items:[{item_id:r.isVariantOf.productGroupID,item_variant:r.sku,index:e}]}})})},[o,r,e,s]);return{href:`/${n}/p`,onClick:c,"data-testid":"product-link"}}}};
|