@faststore/core 3.86.4 → 3.87.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (51) hide show
  1. package/.next/BUILD_ID +1 -1
  2. package/.next/build-manifest.json +23 -23
  3. package/.next/cache/.tsbuildinfo +1 -1
  4. package/.next/cache/config.json +3 -3
  5. package/.next/cache/webpack/client-production/0.pack +0 -0
  6. package/.next/cache/webpack/client-production/index.pack +0 -0
  7. package/.next/cache/webpack/server-production/0.pack +0 -0
  8. package/.next/cache/webpack/server-production/index.pack +0 -0
  9. package/.next/prerender-manifest.js +1 -1
  10. package/.next/prerender-manifest.json +1 -1
  11. package/.next/react-loadable-manifest.json +11 -11
  12. package/.next/routes-manifest.json +1 -1
  13. package/.next/server/chunks/3006.js +1 -1
  14. package/.next/server/chunks/3945.js +1 -1
  15. package/.next/server/chunks/83.js +1 -1
  16. package/.next/server/chunks/9563.js +2 -2
  17. package/.next/server/chunks/9630.js +1 -1
  18. package/.next/server/middleware-build-manifest.js +1 -1
  19. package/.next/server/middleware-react-loadable-manifest.js +1 -1
  20. package/.next/server/pages/api/graphql.js +2 -2
  21. package/.next/server/pages/en-US/404.html +1 -1
  22. package/.next/server/pages/en-US/500.html +1 -1
  23. package/.next/server/pages/en-US/checkout.html +1 -1
  24. package/.next/server/pages/en-US/login.html +1 -1
  25. package/.next/server/pages/en-US/s.html +1 -1
  26. package/.next/server/pages/en-US.html +1 -1
  27. package/.next/server/pages-manifest.json +1 -1
  28. package/.next/static/{-2c_JOi0FOzMdeFIuzNgV → OCdDzXbixjGq2qfKmUzTD}/_buildManifest.js +1 -1
  29. package/.next/static/chunks/3155.0a1b674bbd087938.js +1 -0
  30. package/.next/static/chunks/4836.5450b506133e326f.js +1 -0
  31. package/.next/static/chunks/83.8172f0b21b7683d6.js +1 -0
  32. package/.next/static/chunks/pages/{_app-02ac96e27a9cbbb4.js → _app-ea99eefec89aef24.js} +1 -1
  33. package/.next/static/chunks/pages/pvt/account/{orders-10475517a29223cb.js → orders-07d7ced3a4b845b0.js} +1 -1
  34. package/.next/static/chunks/{webpack-5b7c916f31abc68d.js → webpack-98c08c89b832fbd2.js} +1 -1
  35. package/.next/trace +136 -136
  36. package/.turbo/turbo-build.log +14 -14
  37. package/.turbo/turbo-test.log +5 -5
  38. package/@generated/graphql.ts +3 -3
  39. package/@generated/schema.graphql +1 -1
  40. package/CHANGELOG.md +6 -0
  41. package/cms/faststore/content-types.json +22 -0
  42. package/package.json +4 -4
  43. package/src/components/search/Filter/FilterDesktop.tsx +8 -10
  44. package/src/components/search/Filter/FilterSlider.tsx +9 -10
  45. package/src/sdk/deliveryPromise/index.ts +3 -0
  46. package/src/sdk/deliveryPromise/useDeliveryPromise.ts +124 -92
  47. package/src/utils/globalSettings.ts +5 -0
  48. package/.next/static/chunks/3155.8ff6efc44151971f.js +0 -1
  49. package/.next/static/chunks/4836.ef87204971e182f4.js +0 -1
  50. package/.next/static/chunks/83.730576d7ded8dfe2.js +0 -1
  51. /package/.next/static/{-2c_JOi0FOzMdeFIuzNgV → OCdDzXbixjGq2qfKmUzTD}/_ssgManifest.js +0 -0
@@ -1,23 +1,23 @@
1
1
 
2
- > @faststore/core@3.86.2 prebuild /home/runner/work/faststore/faststore/packages/core
2
+ > @faststore/core@3.86.4 prebuild /home/runner/work/faststore/faststore/packages/core
3
3
  > na run partytown && na run generate
4
4
 
5
5
 
6
- > @faststore/core@3.86.2 partytown /home/runner/work/faststore/faststore/packages/core
6
+ > @faststore/core@3.86.4 partytown /home/runner/work/faststore/faststore/packages/core
7
7
  > partytown copylib ./public/~partytown
8
8
 
9
9
  Partytown lib copied to: /home/runner/work/faststore/faststore/packages/core/public/~partytown
10
10
 
11
- > @faststore/core@3.86.2 generate /home/runner/work/faststore/faststore/packages/core
11
+ > @faststore/core@3.86.4 generate /home/runner/work/faststore/faststore/packages/core
12
12
  > na run generate:schema && na run generate:codegen && na run format:generated
13
13
 
14
14
 
15
- > @faststore/core@3.86.2 generate:schema /home/runner/work/faststore/faststore/packages/core
15
+ > @faststore/core@3.86.4 generate:schema /home/runner/work/faststore/faststore/packages/core
16
16
  > tsx src/server/generator/generateGraphQLSchemaFile.ts
17
17
 
18
18
  Schema GraphQL file generated successfully
19
19
 
20
- > @faststore/core@3.86.2 generate:codegen /home/runner/work/faststore/faststore/packages/core
20
+ > @faststore/core@3.86.4 generate:codegen /home/runner/work/faststore/faststore/packages/core
21
21
  > graphql-codegen
22
22
 
23
23
  [STARTED] Parse Configuration
@@ -37,11 +37,11 @@ Running lifecycle hook "afterStart" scripts...
37
37
  [CLI] Loading Documents
38
38
  [CLI] Generating output
39
39
 
40
- > @faststore/core@3.86.2 format:generated /home/runner/work/faststore/faststore/packages/core
40
+ > @faststore/core@3.86.4 format:generated /home/runner/work/faststore/faststore/packages/core
41
41
  > prettier --write "@generated/**/*.{ts,js,tsx,jsx,json}" --loglevel error
42
42
 
43
43
 
44
- > @faststore/core@3.86.2 build /home/runner/work/faststore/faststore/packages/core
44
+ > @faststore/core@3.86.4 build /home/runner/work/faststore/faststore/packages/core
45
45
  > next build
46
46
 
47
47
  ⚠ No build cache found. Please configure build caching for faster rebuilds. Read more: https://nextjs.org/docs/messages/no-cache
@@ -87,7 +87,7 @@ Route (pages) Size First Load JS
87
87
  ├ λ /api/health/live 0 B 107 kB
88
88
  ├ λ /api/health/ready 0 B 107 kB
89
89
  ├ λ /api/preview 0 B 107 kB
90
- ├ ● /checkout 737 B 138 kB
90
+ ├ ● /checkout 737 B 139 kB
91
91
  ├ ● /login 1.68 kB 139 kB
92
92
  ├ λ /pvt/account 245 B 107 kB
93
93
  ├ ● /pvt/account/[...unknown] 283 B 107 kB
@@ -99,18 +99,18 @@ Route (pages) Size First Load JS
99
99
  ├ └ css/b7fc24e8f1eb011f.css 12.8 kB
100
100
  ├ λ /pvt/account/orders/[id] 12.2 kB 150 kB
101
101
  ├ └ css/297be4be3be36ff0.css 12.6 kB
102
- ├ λ /pvt/account/profile 1.79 kB 139 kB
102
+ ├ λ /pvt/account/profile 1.79 kB 140 kB
103
103
  ├ └ css/831a1f72fe4b2d80.css 3.97 kB
104
- ├ λ /pvt/account/security 3.77 kB 141 kB
104
+ ├ λ /pvt/account/security 3.77 kB 142 kB
105
105
  ├ └ css/ec7fdad03808422d.css 5.22 kB
106
- ├ λ /pvt/account/user-details 1.74 kB 139 kB
106
+ ├ λ /pvt/account/user-details 1.74 kB 140 kB
107
107
  ├ └ css/e46393a76c5d93a9.css 4.17 kB
108
108
  └ ● /s 3.24 kB 156 kB
109
- + First Load JS shared by all 110 kB
109
+ + First Load JS shared by all 111 kB
110
110
  ├ chunks/framework-807b0f81cbc129f0.js 45.4 kB
111
111
  ├ chunks/main-f658704b53a96ab1.js 33.1 kB
112
- ├ chunks/pages/_app-02ac96e27a9cbbb4.js 24.7 kB
113
- ├ chunks/webpack-5b7c916f31abc68d.js 3.85 kB
112
+ ├ chunks/pages/_app-ea99eefec89aef24.js 24.9 kB
113
+ ├ chunks/webpack-98c08c89b832fbd2.js 3.85 kB
114
114
  └ css/24a5e8f6808266fe.css 3.53 kB
115
115
 
116
116
  λ (Server) server-side renders at runtime (uses getInitialProps or getServerSideProps)
@@ -1,14 +1,14 @@
1
1
 
2
- > @faststore/core@3.86.2 test /home/runner/work/faststore/faststore/packages/core
2
+ > @faststore/core@3.86.4 test /home/runner/work/faststore/faststore/packages/core
3
3
  > jest
4
4
 
5
- PASS test/utils/multipleTemplates.test.ts (25.999 s)
6
- PASS test/server/cms/global.test.ts (26.296 s)
5
+ PASS test/server/cms/global.test.ts (27.821 s)
6
+ PASS test/utils/multipleTemplates.test.ts (28.361 s)
7
7
  PASS test/server/cms/index.test.ts
8
- PASS test/server/index.test.ts (29.916 s)
8
+ PASS test/server/index.test.ts (31.668 s)
9
9
 
10
10
  Test Suites: 4 passed, 4 total
11
11
  Tests: 22 passed, 22 total
12
12
  Snapshots: 0 total
13
- Time: 31.045 s
13
+ Time: 32.928 s
14
14
  Ran all test suites.
@@ -1300,7 +1300,7 @@ export type StoreFacetValueBoolean = {
1300
1300
  /** Facet value label. */
1301
1301
  label: Scalars['String']['output']
1302
1302
  /** Number of items with this facet. */
1303
- quantity: Scalars['Int']['output']
1303
+ quantity: Maybe<Scalars['Int']['output']>
1304
1304
  /** Indicates whether facet is selected. */
1305
1305
  selected: Scalars['Boolean']['output']
1306
1306
  /** Facet value. */
@@ -2470,7 +2470,7 @@ type Filter_Facets_StoreFacetBoolean_Fragment = {
2470
2470
  label: string
2471
2471
  value: string
2472
2472
  selected: boolean
2473
- quantity: number
2473
+ quantity: number | null
2474
2474
  }>
2475
2475
  }
2476
2476
 
@@ -3346,7 +3346,7 @@ export type ClientProductGalleryQueryQuery = {
3346
3346
  label: string
3347
3347
  value: string
3348
3348
  selected: boolean
3349
- quantity: number
3349
+ quantity: number | null
3350
3350
  }>
3351
3351
  }
3352
3352
  | {
@@ -212,7 +212,7 @@ type StoreFacetValueBoolean {
212
212
  """Indicates whether facet is selected."""
213
213
  selected: Boolean!
214
214
  """Number of items with this facet."""
215
- quantity: Int!
215
+ quantity: Int
216
216
  }
217
217
 
218
218
  """Image."""
package/CHANGELOG.md CHANGED
@@ -3,6 +3,12 @@
3
3
  All notable changes to this project will be documented in this file.
4
4
  See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
5
5
 
6
+ # [3.87.0](https://github.com/vtex/faststore/compare/v3.86.4...v3.87.0) (2025-09-18)
7
+
8
+ ### Features
9
+
10
+ - Delivery Promise 2.2 - in stock filter ([#2972](https://github.com/vtex/faststore/issues/2972)) ([7bfb830](https://github.com/vtex/faststore/commit/7bfb8308c76b0914d59875fbe95d3cab6e98eba3))
11
+
6
12
  ## [3.86.4](https://github.com/vtex/faststore/compare/v3.86.3...v3.86.4) (2025-09-17)
7
13
 
8
14
  **Note:** Version bump only for package @faststore/core
@@ -287,6 +287,28 @@
287
287
  "default": "Unavailable for pickup"
288
288
  }
289
289
  }
290
+ },
291
+ "inStock": {
292
+ "title": "PLP/Search Filter: In Stock",
293
+ "type": "object",
294
+ "properties": {
295
+ "enabled": {
296
+ "title": "Should display In Stock filter?",
297
+ "description": "Allow shoppers to filter only products that are currently in stock. Note: When enabling, ensure that the `hideUnavailableItems` property is set to `false` in the store's `discovery.config.js` file.",
298
+ "type": "boolean",
299
+ "default": false
300
+ },
301
+ "title": {
302
+ "title": "In Stock title",
303
+ "type": "string",
304
+ "default": "Availability"
305
+ },
306
+ "label": {
307
+ "title": "In Stock label",
308
+ "type": "string",
309
+ "default": "In-stock only"
310
+ }
311
+ }
290
312
  }
291
313
  }
292
314
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@faststore/core",
3
- "version": "3.86.4",
3
+ "version": "3.87.0",
4
4
  "license": "MIT",
5
5
  "repository": "vtex/faststore",
6
6
  "browserslist": "supports es6-module and not dead",
@@ -44,11 +44,11 @@
44
44
  "@envelop/graphql-jit": "^8.0.3",
45
45
  "@envelop/parser-cache": "^6.0.2",
46
46
  "@envelop/validation-cache": "^6.0.2",
47
- "@faststore/api": "^3.85.0",
47
+ "@faststore/api": "^3.87.0",
48
48
  "@faststore/graphql-utils": "^3.81.0",
49
49
  "@faststore/lighthouse": "^3.81.0",
50
50
  "@faststore/sdk": "^3.85.0",
51
- "@faststore/ui": "^3.86.4",
51
+ "@faststore/ui": "^3.87.0",
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",
@@ -108,5 +108,5 @@
108
108
  "ts-jest": "29.1.1",
109
109
  "typescript": "5.3.2"
110
110
  },
111
- "gitHead": "35335b8d18b1a5ef942d0e7a801f0be404687f44"
111
+ "gitHead": "d0fb33b01f02c4b6a49c31aef3dde512f4ba53ae"
112
112
  }
@@ -18,7 +18,9 @@ import type { useFilter } from 'src/sdk/search/useFilter'
18
18
  import type { FilterSliderProps } from './FilterSlider'
19
19
 
20
20
  import {
21
+ DELIVERY_OPTIONS_FACET_KEY,
21
22
  PICKUP_ALL_FACET_VALUE,
23
+ SHIPPING_FACET_KEY,
22
24
  useDeliveryPromise,
23
25
  } from 'src/sdk/deliveryPromise'
24
26
  import { getGlobalSettings } from 'src/utils/globalSettings'
@@ -47,8 +49,7 @@ function FilterDesktop({
47
49
  const { openRegionSlider } = useUI()
48
50
  const {
49
51
  facets: filteredFacets,
50
- deliveryLabel,
51
- deliveryOptionsLabel,
52
+ labelsMap,
52
53
  isPickupAllEnabled,
53
54
  shouldDisplayDeliveryButton,
54
55
  onDeliveryFacetChange,
@@ -74,7 +75,7 @@ function FilterDesktop({
74
75
  testId={testId}
75
76
  index={0}
76
77
  type=""
77
- label={deliveryLabel}
78
+ label={labelsMap[SHIPPING_FACET_KEY] ?? 'Delivery'}
78
79
  description={deliveryPromiseSettings?.deliveryMethods?.description}
79
80
  >
80
81
  <UIButton
@@ -93,14 +94,11 @@ function FilterDesktop({
93
94
  const index = shouldDisplayDeliveryButton ? idx + 1 : idx
94
95
  const { __typename: type, label } = facet
95
96
  const isExpanded = expanded.has(index)
96
- const isDeliveryMethodFacet = facet.key === 'shipping'
97
- const isDeliveryOptionFacet = facet.key === 'delivery-options'
97
+ const isDeliveryMethodFacet = facet.key === SHIPPING_FACET_KEY
98
+ const isDeliveryOptionFacet = facet.key === DELIVERY_OPTIONS_FACET_KEY
98
99
 
99
- const sectionLabel = isDeliveryMethodFacet
100
- ? deliveryLabel
101
- : isDeliveryOptionFacet
102
- ? deliveryOptionsLabel
103
- : label
100
+ const sectionLabel =
101
+ labelsMap[facet.key as keyof typeof labelsMap] ?? label
104
102
 
105
103
  return (
106
104
  <UIFilterFacets
@@ -18,7 +18,9 @@ import type { Filter_FacetsFragment } from '@generated/graphql'
18
18
  import FilterDeliveryMethodFacet from './FilterDeliveryMethodFacet'
19
19
 
20
20
  import {
21
+ DELIVERY_OPTIONS_FACET_KEY,
21
22
  PICKUP_ALL_FACET_VALUE,
23
+ SHIPPING_FACET_KEY,
22
24
  useDeliveryPromise,
23
25
  } from 'src/sdk/deliveryPromise'
24
26
  import type { useFilter } from 'src/sdk/search/useFilter'
@@ -102,8 +104,7 @@ function FilterSlider({
102
104
 
103
105
  const {
104
106
  facets: filteredFacets,
105
- deliveryLabel,
106
- deliveryOptionsLabel,
107
+ labelsMap,
107
108
  isPickupAllEnabled,
108
109
  shouldDisplayDeliveryButton,
109
110
  onDeliveryFacetChange,
@@ -169,7 +170,7 @@ function FilterSlider({
169
170
  testId={testId}
170
171
  index={0}
171
172
  type=""
172
- label={deliveryLabel}
173
+ label={labelsMap[SHIPPING_FACET_KEY] ?? 'Delivery'}
173
174
  description={
174
175
  deliveryPromiseSettings?.deliveryMethods?.description
175
176
  }
@@ -190,14 +191,12 @@ function FilterSlider({
190
191
  const index = shouldDisplayDeliveryButton ? idx + 1 : idx
191
192
  const { __typename: type, label } = facet
192
193
  const isExpanded = expanded.has(index)
193
- const isDeliveryMethodFacet = facet.key === 'shipping'
194
- const isDeliveryOptionFacet = facet.key === 'delivery-options'
194
+ const isDeliveryMethodFacet = facet.key === SHIPPING_FACET_KEY
195
+ const isDeliveryOptionFacet =
196
+ facet.key === DELIVERY_OPTIONS_FACET_KEY
195
197
 
196
- const sectionLabel = isDeliveryMethodFacet
197
- ? deliveryLabel
198
- : isDeliveryOptionFacet
199
- ? deliveryOptionsLabel
200
- : label
198
+ const sectionLabel =
199
+ labelsMap[facet.key as keyof typeof labelsMap] ?? label
201
200
 
202
201
  return (
203
202
  <UIFilterFacets
@@ -1,5 +1,8 @@
1
1
  export {
2
+ DELIVERY_OPTIONS_FACET_KEY,
2
3
  deliveryPromiseStore,
4
+ DYNAMIC_ESTIMATE_FACET_KEY,
5
+ IN_STOCK_FACET_KEY,
3
6
  PICKUP_ALL_FACET_VALUE,
4
7
  PICKUP_IN_POINT_FACET_VALUE,
5
8
  PICKUP_POINT_FACET_KEY,
@@ -14,9 +14,10 @@ import type {
14
14
  } from '@generated/graphql'
15
15
 
16
16
  import type { useFilter } from 'src/sdk/search/useFilter'
17
- import { useSession } from 'src/sdk/session'
18
17
  import type { GlobalCmsData } from 'src/utils/globalSettings'
19
18
 
19
+ import { useSession } from 'src/sdk/session'
20
+
20
21
  import { deliveryPromise as deliveryPromiseConfig } from 'discovery.config'
21
22
  import {
22
23
  initialPickupPointsSimulation,
@@ -32,6 +33,7 @@ export const PICKUP_ALL_FACET_VALUE = 'pickup-all' as const
32
33
  export const ALL_DELIVERY_OPTIONS_FACET_VALUE = 'all-delivery-options' as const
33
34
  export const DELIVERY_OPTIONS_FACET_KEY = 'delivery-options' as const
34
35
  export const DYNAMIC_ESTIMATE_FACET_KEY = 'dynamic-estimate' as const
36
+ export const IN_STOCK_FACET_KEY = 'in-stock' as const
35
37
 
36
38
  type Facet = SearchState['selectedFacets'][number]
37
39
  type DeliveryType = 'delivery' | 'pickup-in-point'
@@ -116,6 +118,7 @@ export function useDeliveryPromise({
116
118
  const isDeliveryPromiseEnabled = deliveryPromiseConfig.enabled
117
119
  const isDeliveryOptionsEnabled =
118
120
  deliveryPromiseSettings?.deliveryOptions?.enabled ?? true
121
+ const isInStockEnabled = deliveryPromiseSettings?.inStock?.enabled ?? false
119
122
 
120
123
  const selectedFacets = useMemo(
121
124
  () => selectedFilterFacets ?? searchState.selectedFacets,
@@ -210,6 +213,25 @@ export function useDeliveryPromise({
210
213
  [defaultPickupPoint, selectedFacets]
211
214
  )
212
215
 
216
+ const inStockFacet = useMemo(
217
+ (): Filter_FacetsFragment => ({
218
+ key: IN_STOCK_FACET_KEY,
219
+ label: IN_STOCK_FACET_KEY,
220
+ __typename: 'StoreFacetBoolean',
221
+ values: [
222
+ {
223
+ value: 'true',
224
+ label: deliveryPromiseSettings?.inStock?.label ?? 'In-stock only',
225
+ selected: selectedFacets.some(
226
+ ({ key, value }) => key === IN_STOCK_FACET_KEY && value === 'true'
227
+ ),
228
+ quantity: null,
229
+ },
230
+ ],
231
+ }),
232
+ [deliveryPromiseSettings, selectedFacets]
233
+ )
234
+
213
235
  const [allDeliveryMethodsFacet, allDeliveryOptionsFacet] = useMemo(
214
236
  () => [
215
237
  {
@@ -300,101 +322,105 @@ export function useDeliveryPromise({
300
322
  const facets = useMemo(() => {
301
323
  if (!allFacets) return []
302
324
 
303
- return !isDeliveryPromiseEnabled || !postalCode
304
- ? allFacets.filter(
305
- ({ key }) =>
306
- key !== SHIPPING_FACET_KEY &&
307
- key !== DELIVERY_OPTIONS_FACET_KEY &&
308
- key !== DYNAMIC_ESTIMATE_FACET_KEY
309
- )
310
- : allFacets
311
- .filter(({ key }) => key !== DYNAMIC_ESTIMATE_FACET_KEY) // TODO: remove this filter when dynamic estimate is implemented
312
- .filter(({ key }) => {
313
- if (
314
- !isDeliveryOptionsEnabled &&
315
- key === DELIVERY_OPTIONS_FACET_KEY
316
- ) {
317
- return false
318
- }
325
+ if (!isDeliveryPromiseEnabled || !postalCode) {
326
+ return allFacets.filter(
327
+ ({ key }) =>
328
+ key !== SHIPPING_FACET_KEY &&
329
+ key !== DELIVERY_OPTIONS_FACET_KEY &&
330
+ key !== DYNAMIC_ESTIMATE_FACET_KEY
331
+ )
332
+ }
319
333
 
320
- return true
321
- })
322
- .map((facet) => {
323
- if (facet.__typename !== 'StoreFacetBoolean') return facet
334
+ const filteredFacets = allFacets
335
+ .filter(({ key }) => key !== DYNAMIC_ESTIMATE_FACET_KEY) // TODO: remove this filter when dynamic estimate is implemented
336
+ .filter(({ key }) => {
337
+ if (!isDeliveryOptionsEnabled && key === DELIVERY_OPTIONS_FACET_KEY) {
338
+ return false
339
+ }
324
340
 
325
- if (facet.key === DELIVERY_OPTIONS_FACET_KEY) {
326
- facet.values = withUniqueFacet(
327
- facet.values,
328
- allDeliveryOptionsFacet
329
- )
341
+ return true
342
+ })
330
343
 
331
- return facet
332
- }
344
+ if (
345
+ isInStockEnabled &&
346
+ !filteredFacets.find(({ key }) => key === IN_STOCK_FACET_KEY) &&
347
+ filteredFacets.find(({ key }) => key === SHIPPING_FACET_KEY) // Avoid adding in-stock facet if IS doesn't return any shipping facet
348
+ ) {
349
+ filteredFacets.push(inStockFacet)
350
+ }
333
351
 
334
- if (facet.key !== SHIPPING_FACET_KEY) return facet
352
+ return filteredFacets
353
+ .map((facet) => {
354
+ if (facet.__typename !== 'StoreFacetBoolean') return facet
335
355
 
336
- facet.values = withUniqueFacet(
337
- facet.values,
338
- allDeliveryMethodsFacet
339
- )
340
- const pickupInPointFacetIndex = facet.values.findIndex(
341
- (item) => item?.value === PICKUP_IN_POINT_FACET_VALUE
342
- )
356
+ if (facet.key === DELIVERY_OPTIONS_FACET_KEY) {
357
+ facet.values = withUniqueFacet(facet.values, allDeliveryOptionsFacet)
343
358
 
344
- // Remove old pickup `pickup in point` facet from list and search state
345
- if (pickupInPointFacetIndex !== -1 && !defaultPickupPoint) {
346
- const selectedShippingFacet = selectedFacets.find(
347
- ({ key }) => key === SHIPPING_FACET_KEY
348
- )
349
-
350
- if (selectedShippingFacet) {
351
- const selectedPickupInPointFacets = selectedFacets.filter(
352
- ({ key, value }) =>
353
- value === PICKUP_IN_POINT_FACET_VALUE ||
354
- key === PICKUP_POINT_FACET_KEY
355
- )
356
-
357
- selectedPickupInPointFacets.length
358
- ? onDeliveryFacetChange({
359
- facets: selectedPickupInPointFacets,
360
- })
361
- : onDeliveryFacetChange({ facet: selectedShippingFacet })
362
- }
363
-
364
- // Removes pickupInPointIndex from array
365
- facet.values = facet.values.filter(
366
- (_, index) => index !== pickupInPointFacetIndex
367
- )
368
- }
369
- // Prevent multiple `pickup in point` facet
370
- else if (pickupInPointFacetIndex === -1 && defaultPickupPoint) {
371
- facet.values.push(pickupInPointFacet)
372
- }
373
- // Replace current `pickup-in-point` facet with the updated one
374
- else if (
375
- facet.values[pickupInPointFacetIndex] &&
376
- facet.values[pickupInPointFacetIndex]?.label !==
377
- pickupInPointFacet.label
378
- ) {
379
- facet.values[pickupInPointFacetIndex] = pickupInPointFacet
380
- }
359
+ return facet
360
+ }
361
+
362
+ if (facet.key !== SHIPPING_FACET_KEY) return facet
363
+
364
+ facet.values = withUniqueFacet(facet.values, allDeliveryMethodsFacet)
365
+ const pickupInPointFacetIndex = facet.values.findIndex(
366
+ (item) => item?.value === PICKUP_IN_POINT_FACET_VALUE
367
+ )
381
368
 
382
- facet.values = facet.values.sort((a, b) =>
383
- (a.value ?? '').localeCompare(b.value ?? '')
369
+ // Remove old pickup `pickup in point` facet from list and search state
370
+ if (pickupInPointFacetIndex !== -1 && !defaultPickupPoint) {
371
+ const selectedShippingFacet = selectedFacets.find(
372
+ ({ key }) => key === SHIPPING_FACET_KEY
373
+ )
374
+
375
+ if (selectedShippingFacet) {
376
+ const selectedPickupInPointFacets = selectedFacets.filter(
377
+ ({ key, value }) =>
378
+ value === PICKUP_IN_POINT_FACET_VALUE ||
379
+ key === PICKUP_POINT_FACET_KEY
384
380
  )
385
381
 
386
- return facet
387
- })
388
- .sort((a, b) => {
389
- // Define priority order: shipping (0), delivery-options (1), others (2)
390
- const getPriority = (key: string) => {
391
- if (key === SHIPPING_FACET_KEY) return 0
392
- if (key === DELIVERY_OPTIONS_FACET_KEY) return 1
393
- return 2
394
- }
382
+ selectedPickupInPointFacets.length
383
+ ? onDeliveryFacetChange({
384
+ facets: selectedPickupInPointFacets,
385
+ })
386
+ : onDeliveryFacetChange({ facet: selectedShippingFacet })
387
+ }
388
+
389
+ // Removes pickupInPointIndex from array
390
+ facet.values = facet.values.filter(
391
+ (_, index) => index !== pickupInPointFacetIndex
392
+ )
393
+ }
394
+ // Prevent multiple `pickup in point` facet
395
+ else if (pickupInPointFacetIndex === -1 && defaultPickupPoint) {
396
+ facet.values.push(pickupInPointFacet)
397
+ }
398
+ // Replace current `pickup-in-point` facet with the updated one
399
+ else if (
400
+ facet.values[pickupInPointFacetIndex] &&
401
+ facet.values[pickupInPointFacetIndex]?.label !==
402
+ pickupInPointFacet.label
403
+ ) {
404
+ facet.values[pickupInPointFacetIndex] = pickupInPointFacet
405
+ }
406
+
407
+ facet.values = facet.values.sort((a, b) =>
408
+ (a.value ?? '').localeCompare(b.value ?? '')
409
+ )
395
410
 
396
- return getPriority(a.key) - getPriority(b.key)
397
- })
411
+ return facet
412
+ })
413
+ .sort((a, b) => {
414
+ // Define priority order: shipping (0), delivery-options (1), in-stock (2), others (3)
415
+ const getPriority = (key: string) => {
416
+ if (key === SHIPPING_FACET_KEY) return 0
417
+ if (key === DELIVERY_OPTIONS_FACET_KEY) return 1
418
+ if (key === IN_STOCK_FACET_KEY) return 2
419
+ return 3
420
+ }
421
+
422
+ return getPriority(a.key) - getPriority(b.key)
423
+ })
398
424
  }, [
399
425
  allDeliveryMethodsFacet,
400
426
  pickupInPointFacet,
@@ -441,6 +467,15 @@ export function useDeliveryPromise({
441
467
  []
442
468
  )
443
469
 
470
+ const labelsMap = {
471
+ [SHIPPING_FACET_KEY]:
472
+ deliveryPromiseSettings?.deliveryMethods?.title ?? 'Delivery',
473
+ [DELIVERY_OPTIONS_FACET_KEY]:
474
+ deliveryPromiseSettings?.deliveryOptions?.title ?? 'Delivery Option',
475
+ [IN_STOCK_FACET_KEY]:
476
+ deliveryPromiseSettings?.inStock?.title ?? 'Availability',
477
+ }
478
+
444
479
  function getBadgeLabel(value: DeliveryType, isAvailable: boolean) {
445
480
  const labelMap: Record<
446
481
  DeliveryType,
@@ -539,10 +574,7 @@ export function useDeliveryPromise({
539
574
  facets,
540
575
  onPostalCodeChange,
541
576
  onDeliveryFacetChange,
542
- deliveryLabel:
543
- deliveryPromiseSettings?.deliveryMethods?.title ?? 'Delivery',
544
- deliveryOptionsLabel:
545
- deliveryPromiseSettings?.deliveryOptions?.title ?? 'Delivery Option',
577
+ labelsMap,
546
578
  isPickupAllEnabled:
547
579
  pickupPoints?.length > 0 &&
548
580
  (deliveryPromiseSettings?.deliveryMethods?.pickupAll?.enabled ?? false),
@@ -552,12 +584,12 @@ export function useDeliveryPromise({
552
584
  }
553
585
  }
554
586
 
555
- type BoleanFacet = Extract<
587
+ type BooleanFacet = Extract<
556
588
  Filter_FacetsFragment,
557
589
  { __typename: 'StoreFacetBoolean' }
558
590
  >['values'][number]
559
591
 
560
- function withUniqueFacet(facets: Array<BoleanFacet>, facet: BoleanFacet) {
592
+ function withUniqueFacet(facets: Array<BooleanFacet>, facet: BooleanFacet) {
561
593
  return [facet, ...facets.filter((item) => item.value !== facet.value)]
562
594
  }
563
595
 
@@ -70,6 +70,11 @@ type DeliveryPromiseCmsData = {
70
70
  pickupInPoint?: string
71
71
  pickupInPointUnavailable?: string
72
72
  }
73
+ inStock?: {
74
+ enabled?: boolean
75
+ title?: string
76
+ label?: string
77
+ }
73
78
  }
74
79
 
75
80
  export function getGlobalSettings(
@@ -1 +0,0 @@
1
- "use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[3155],{2430:function(e,t,a){a.d(t,{Z:function(){return FilterDeliveryMethodFacet}});var n=a(6652),r=a(9009),l=a(7358),i=a(4018),o=a(1549);function FilterDeliveryMethodFacet(e){var t,a,c,u,d,s,{item:m,deliveryMethods:f}=e,{city:v,postalCode:p}=l.Qf.read(),{openRegionSlider:b}=(0,n.l8)(),h=v?"".concat((0,i._W)(v),", ").concat(p):p,x={delivery:null!==(t=null==f?void 0:f.delivery)&&void 0!==t?t:"Shipping to","pickup-in-point":null!==(a=null==f?void 0:f.pickupInPoint)&&void 0!==a?a:"Pickup at","pickup-nearby":null!==(c=null==f?void 0:f.pickupNearby)&&void 0!==c?c:"Pickup Nearby","pickup-all":null!==(u=null==f?void 0:null===(d=f.pickupAll)||void 0===d?void 0:d.label)&&void 0!==u?u:"Pickup Anywhere"};return"delivery"===m.value?(0,o.jsxs)(o.Fragment,{children:[x[m.value],(0,o.jsx)(r.Z,{"data-fs-filter-list-item-button":!0,size:"small",onClick:()=>{b(n.gK.changeLocation)},children:h})]}):"pickup-in-point"===m.value?(0,o.jsxs)(o.Fragment,{children:[x[m.value],(0,o.jsx)(r.Z,{"data-fs-filter-list-item-button":!0,size:"small",onClick:()=>{b(n.gK.changePickupPoint)},children:m.label})]}):(0,o.jsx)(o.Fragment,{children:null!==(s=x[m.value])&&void 0!==s?s:m.label})}},3155:function(e,t,a){a.r(t),a.d(t,{fragment:function(){return E}});var n=a(5487),r=a(9029),l=a(9664),i=a(6652),o=a(5699),c=a(4199),u=a(9009),d=a(2614),s=a(2815),m=a(6174),f=a(2230),v=a(643),p=a(2011),b=a(3303),h=a(2430),x=a(1549),E=n.j9;t.default=function(e){var t,a,n,{facets:E,testId:y,dispatch:g,expanded:Z,title:k}=e,M=(0,b.T)(),{deliveryPromise:w}=null!=M?M:{},{resetInfiniteScroll:C,state:$,setState:N}=(0,r.R)(),{openRegionSlider:F}=(0,i.l8)(),{facets:A,deliveryLabel:S,deliveryOptionsLabel:R,isPickupAllEnabled:I,shouldDisplayDeliveryButton:j,onDeliveryFacetChange:P}=(0,p.z0)({allFacets:E,selectedFilterFacets:$.selectedFacets,deliveryPromiseSettings:w});return(0,x.jsx)(x.Fragment,{children:(0,x.jsxs)(o.Z,{testId:"desktop-".concat(y),title:k,indicesExpanded:Z,onAccordionChange:e=>g({type:"toggleExpanded",payload:e}),children:[j&&(0,x.jsx)(c.Z,{testId:y,index:0,type:"",label:S,description:null==w?void 0:null===(t=w.deliveryMethods)||void 0===t?void 0:t.description,children:(0,x.jsx)(u.Z,{"data-fs-filter-list-delivery-button":!0,variant:"secondary",onClick:()=>F(i.gK.setLocation),icon:(0,x.jsx)(d.Z,{name:"MapPin"}),children:null!==(a=null==w?void 0:null===(n=w.deliveryMethods)||void 0===n?void 0:n.setLocationButtonLabel)&&void 0!==a?a:"Set Location"})},"".concat(y,"-delivery-unset")),A.map((e,t)=>{var a,n=j?t+1:t,{__typename:r,label:i}=e,o=Z.has(n),u="shipping"===e.key,d="delivery-options"===e.key,b=u?S:d?R:i;return(0,x.jsxs)(c.Z,{testId:y,index:n,type:r,label:b,description:u?null==w?void 0:null===(a=w.deliveryMethods)||void 0===a?void 0:a.description:void 0,children:["StoreFacetBoolean"===r&&o&&(0,x.jsx)(s.Z,{children:e.values.map(t=>(t.value!==p.d||I)&&(0,x.jsx)(m.Z,{id:"".concat(y,"-").concat(e.label,"-").concat(t.value),testId:y,onFacetChange:e=>{P({facet:e}),C(0)},selected:t.selected,value:t.value,quantity:t.quantity,facetKey:e.key,label:u?(0,x.jsx)(h.Z,{item:t,deliveryMethods:null==w?void 0:w.deliveryMethods}):t.label,type:u||d?"radio":"checkbox"},"".concat(y,"-").concat(e.label,"-").concat(t.value)))}),"StoreFacetRange"===r&&o&&(0,x.jsx)(f.Z,{facetKey:e.key,min:e.min,max:e.max,formatter:"price"===e.key.toLowerCase()?v.P:void 0,onFacetChange:e=>{N({selectedFacets:(0,l.uL)($.selectedFacets,e,!0),page:0}),C(0)}})]},"".concat(y,"-").concat(b,"-").concat(n))})]})})}},2740:function(e,t,a){var n=a(4194);let r=(0,n.forwardRef)(function({testId:e="fs-checkbox",partial:t,...a},r){return n.createElement("input",{ref:r,"data-fs-checkbox":!0,"data-testid":e,"data-fs-checkbox-partial":t,type:"checkbox",...a})});t.Z=r},6735:function(e,t,a){var n=a(4194);let r=(0,n.forwardRef)(function({testId:e="fs-radio",...t},a){return n.createElement("input",{ref:a,"data-fs-radio":!0,type:"radio","data-testid":e,...t})});t.Z=r},9395:function(e,t,a){var n=a(4194);let percent=(e,t,a)=>Math.round((e-t)/(a-t)*100),r=(0,n.forwardRef)(function({min:e,max:t,absoluteValuesLabel:a,onChange:r,onEnd:l,testId:i="fs-slider",getAriaValueText:o,step:c,minValueLabelComponent:u,maxValueLabelComponent:d,...s},m){let f=(0,n.useMemo)(()=>(t.absolute-e.absolute)/100,[t.absolute,e.absolute]),[v,p]=(0,n.useState)(()=>percent(e.selected,e.absolute,t.absolute)),[b,h]=(0,n.useState)(()=>percent(t.selected,e.absolute,t.absolute)),[x,E]=(0,n.useState)(()=>Math.floor(e.absolute+v*f)),[y,g]=(0,n.useState)(()=>Math.round(e.absolute+b*f));return(0,n.useImperativeHandle)(m,()=>({setSliderValues:a=>{let n=Math.min(Number(a.min),y);if(E(n),p(percent(n,e.absolute,t.absolute)),a.max>t.absolute){g(t.absolute),h(percent(t.absolute,e.absolute,t.absolute));return}let r=Math.max(Number(a.max),x);g(r),h(percent(r,e.absolute,t.absolute))}})),n.createElement("div",{"data-fs-slider":!0,"data-testid":i,...s},n.createElement("div",{"data-fs-slider-absolute-values":!0},n.createElement("span",null,a.min),n.createElement("span",null,a.max)),n.createElement("div",{"data-fs-slider-wrapper":!0},n.createElement("div",{"data-fs-slider-range":!0,style:{left:`${v}%`,width:`${b-v}%`}}),n.createElement("input",{type:"range",min:Math.floor(e.absolute),max:Math.round(t.absolute),value:x,step:c,onMouseUp:()=>l?.({min:x,max:y}),onTouchEnd:()=>l?.({min:x,max:y}),onChange:a=>{let n=Math.min(Number(a.target.value),y);E(n),p(percent(n,e.absolute,t.absolute)),r?.({min:n,max:y})},"data-fs-slider-thumb":"left","aria-valuemin":e.absolute,"aria-valuemax":t.absolute,"aria-valuenow":x,"aria-label":String(x),"aria-labelledby":o?.(x,"min")}),u&&n.createElement("span",{"data-fs-slider-value-label":"min",style:{left:`calc(${x/t.absolute*100}% + (${8-.2*(x/t.absolute*100)}px))`}},u(x)),n.createElement("input",{type:"range",min:Math.floor(e.absolute),max:Math.round(t.absolute),value:y,step:c,onMouseUp:()=>l?.({min:x,max:y}),onTouchEnd:()=>l?.({min:x,max:y}),onChange:a=>{let n=Math.max(Number(a.target.value),x);g(n),h(percent(n,e.absolute,t.absolute)),r?.({min:x,max:n})},"data-fs-slider-thumb":"right","aria-valuemin":e.absolute,"aria-valuemax":t.absolute,"aria-valuenow":y,"aria-label":String(y),"aria-labelledby":o?.(y,"max")}),d&&n.createElement("span",{"data-fs-slider-value-label":"max",style:{left:`calc(${y/t.absolute*100}% + (${8-.2*(y/t.absolute*100)}px))`}},d(y))))});t.Z=r},1516:function(e,t,a){a.d(t,{A:function(){return useAccordion}});var n=a(4194);let r=(0,n.createContext)(void 0),l=(0,n.forwardRef)(function({testId:e="fs-accordion",indices:t,onChange:a,children:l,...i},o){let c=n.Children.map(l,(e,t)=>{if(e)return(0,n.cloneElement)(e,{index:e.props.index??t})}),u={indices:new Set(t),onChange:a,numberOfItems:c.length};return n.createElement(r.Provider,{value:u},n.createElement("div",{ref:o,"data-fs-accordion":!0,role:"region","data-testid":e,...i},c))});function useAccordion(){let e=(0,n.useContext)(r);if(void 0===e)throw Error("Do not use Accordion components outside the Accordion context.");return e}t.Z=l},7734:function(e,t,a){var n=a(4194),r=a(1516),l=a(783),i=a(2614),o=a(9009);let c=(0,n.forwardRef)(function({testId:e="fs-accordion-button",expandedIcon:t=n.createElement(i.Z,{name:"MinusCircle","data-icon":"expanded"}),collapsedIcon:a=n.createElement(i.Z,{name:"PlusCircle","data-icon":"collapsed"}),children:c,...u},d){let{indices:s,onChange:m,numberOfItems:f}=(0,r.A)(),{index:v,panel:p,button:b,prefixId:h}=(0,l.D)();return n.createElement(o.Z,{ref:d,id:b,variant:"tertiary","data-fs-accordion-button":s.has(v)?"expanded":"collapsed","aria-expanded":s.has(v),icon:s.has(v)?t:a,iconPosition:"right","aria-controls":p,onKeyDown:e=>{if(["ArrowDown","ArrowUp"].includes(e.key))switch(e.key){case"ArrowDown":e.preventDefault(),(()=>{let e=Number(v)+1===f?0:Number(v)+1;return document.getElementById(`${h&&`${h}-`}button--${e}`)})()?.focus();break;case"ArrowUp":e.preventDefault(),(()=>{let e=Number(v)-1<0?f-1:Number(v)-1;return document.getElementById(`${h&&`${h}-`}button--${e}`)})()?.focus()}},onClick:()=>{m(v)},"data-testid":e,...u},c)});t.Z=c},783:function(e,t,a){a.d(t,{D:function(){return useAccordionItem}});var n=a(4194);let r=(0,n.createContext)(void 0),l=(0,n.forwardRef)(function({prefixId:e="",index:t=0,as:a,children:l,testId:i="fs-accordion-item",...o},c){let u=a??"div",d={index:t,prefixId:e,panel:`${e&&`${e}-`}panel--${t}`,button:`${e&&`${e}-`}button--${t}`};return n.createElement(r.Provider,{value:d},n.createElement(u,{ref:c,"data-fs-accordion-item":!0,"data-testid":i,...o},l))});function useAccordionItem(){let e=(0,n.useContext)(r);if(void 0===e)throw Error("Do not use AccordionItem components outside the AccordionItem context.");return e}t.Z=l},7583:function(e,t,a){var n=a(4194),r=a(1516),l=a(783);let i=(0,n.forwardRef)(function({testId:e="fs-accordion-panel",children:t,...a},i){let{indices:o}=(0,r.A)(),{index:c,button:u,panel:d}=(0,l.D)();return n.createElement("div",{ref:i,id:d,"data-fs-accordion-panel":!0,"aria-labelledby":u,role:"region",hidden:!o.has(c),"data-testid":e,...a},t)});t.Z=i},5737:function(e,t,a){var n=a(4194),r=a(1953),l=a(6735);let i=(0,n.forwardRef)(function({testId:e="fs-radio-field",id:t,label:a,value:i,name:o,...c},u){return n.createElement("div",{ref:u,"data-fs-radio-field":!0,"data-testid":e},n.createElement(l.Z,{id:t,value:"string"==typeof a?a:i,name:o,...c}),n.createElement(r.Z,{htmlFor:t},a))});t.Z=i},5699:function(e,t,a){var n=a(4194),r=a(1516);t.Z=function({testId:e,title:t,indicesExpanded:a,onAccordionChange:l,children:i}){return n.createElement("div",{"data-fs-filter":!0,"data-testid":e},n.createElement("h2",{"data-fs-filter-title":!0},t),n.createElement(r.Z,{indices:a,onChange:l,"data-fs-filter-accordion":!0},i))}},2815:function(e,t,a){var n=a(4194),r=a(4564);t.Z=function({children:e}){return n.createElement(r.Z,{"data-fs-filter-list":!0},e)}},6174:function(e,t,a){var n=a(4194),r=a(2740),l=a(1953),i=a(276),o=a(5737);t.Z=function({testId:e,id:t,selected:a,value:c,quantity:u,facetKey:d,label:s,type:m="checkbox",onFacetChange:f}){return n.createElement("li",{key:t,"data-fs-filter-list-item":!0},"checkbox"===m?n.createElement(n.Fragment,null,n.createElement(r.Z,{id:t,checked:a,onChange:()=>f({key:d,value:c},"BOOLEAN"),"data-fs-filter-list-item-checkbox":!0,"data-testid":`${e}-accordion-panel-checkbox`,"data-value":c,"data-quantity":u}),n.createElement(l.Z,{htmlFor:t,className:"text__title-mini-alt","data-fs-filter-list-item-label":!0},s," ",n.createElement(i.Z,{"data-fs-filter-list-item-badge":!0},u))):n.createElement(o.Z,{id:t,name:d,value:c,checked:a,onChange:()=>f({key:d,value:c},"BOOLEAN"),"data-fs-filter-list-item-radio":!0,"data-testid":`${e}-accordion-panel-radio`,"data-value":c,label:s}))}},2230:function(e,t,a){var n=a(4194),r=a(8110);let formatRange=(e,t)=>`${e.toFixed(2)}-to-${t.toFixed(2)}`;t.Z=function({min:e,max:t,formatter:a,facetKey:l,onFacetChange:i}){return n.createElement(r.Z,{"data-fs-filter-facet-range":!0,min:e,max:t,formatter:a,step:1,onEnd:e=>i({key:l,value:formatRange(e.min,e.max)},"RANGE")})}},4199:function(e,t,a){var n=a(4194),r=a(783),l=a(7734),i=a(7583);t.Z=function({testId:e,label:t,index:a,children:o,type:c,description:u}){return n.createElement(r.Z,{key:`${t}-${a}`,prefixId:e,testId:`${e}-accordion`,index:a,"data-type":c,"data-fs-filter-accordion-item":!0},n.createElement(l.Z,{testId:`${e}-accordion-button`},t),n.createElement(i.Z,null,u&&n.createElement("span",{"data-fs-filter-accordion-item-description":!0},u),o))}},8110:function(e,t,a){var n=a(4194),r=a(9395),l=a(9767),i=a(3779);let o=(0,n.forwardRef)(function({formatter:e,max:t,min:a,step:o=1,onChange:c,onEnd:u,testId:d="fs-price-range",variant:s,"aria-label":m,...f},v){let p=(0,n.useRef)();(0,n.useImperativeHandle)(v,()=>({setPriceRangeValues:e=>{c?.(e),p.current?.setSliderValues(e)}}));let b=(0,n.useRef)(null),h=(0,n.useRef)(null),[x,E]=(0,n.useState)(),[y,g]=(0,n.useState)(),[Z,k]=(0,n.useState)({min:Math.floor(a.selected),max:Math.round(t.selected)});return n.createElement("div",{"data-fs-price-range":!0,"data-testid":d,...f},n.createElement(r.Z,{ref:p,min:a,max:t,step:o,onEnd:e=>{u?.(e),E(void 0),g(void 0),k({min:e.min,max:e.max}),b.current?.value&&(b.current.value=String(e.min)),h.current?.value&&(h.current.value=String(e.max))},"aria-label":m,onChange:e=>c?.(e),absoluteValuesLabel:{min:n.createElement(l.Z,{value:Math.floor(a.absolute),variant:s,formatter:e}),max:n.createElement(l.Z,{value:Math.round(t.absolute),variant:s,formatter:e})},minValueLabelComponent:t=>n.createElement(l.Z,{value:t,variant:s,formatter:e}),maxValueLabelComponent:t=>n.createElement(l.Z,{value:t,variant:s,formatter:e})}),n.createElement("div",{"data-fs-price-range-inputs":!0},n.createElement(i.Z,{id:"price-range-min",step:o,label:"Min",type:"number",inputMode:"numeric",error:x,inputRef:b,min:Math.floor(a.absolute),max:Z.max,value:Z.min,onChange:e=>{var t;return t=e.target.value,void(E(void 0),Number(t)<Math.floor(a.absolute)||(Number(t)>Math.floor(Z.max)&&E("Min price can't be greater than max"),k({...Z,min:Number(t)}),p.current?.setSliderValues({...Z,min:Number(t)})))},onBlur:()=>!x&&u?.(Z)}),n.createElement(i.Z,{id:"price-range-max",label:"Max",step:o,type:"number",inputMode:"numeric",error:y,inputRef:h,max:Math.round(t.absolute),min:Z.min,value:Z.max,onChange:e=>{var a;return a=e.target.value,void(g(void 0),Number(a)>Math.round(t.absolute)||(Number(a)<Math.round(Z.min)&&g("Max price can't be smaller than min"),k({...Z,max:Number(a)}),p.current?.setSliderValues({...Z,max:Number(a)})))},onBlur:()=>!y&&u?.(Z)})))});t.Z=o}}]);