@faststore/core 4.0.1-dev.0 → 4.0.1-dev.2
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/.turbo/turbo-generate.log +3 -3
- package/.turbo/turbo-test.log +21 -22
- package/CHANGELOG.md +12 -0
- package/cms/faststore/components/cms_component__navbar.jsonc +471 -0
- package/cms/faststore/components/cms_component__shoppingassistant.jsonc +5 -1
- package/cms/faststore/pages/cms_content_type__globalfootersections.jsonc +3 -0
- package/cms/faststore/pages/cms_content_type__globalheadersections.jsonc +3 -0
- package/cms/faststore/pages/cms_content_type__home.jsonc +3 -0
- package/cms/faststore/pages/cms_content_type__landingpage.jsonc +3 -0
- package/cms/faststore/pages/cms_content_type__pdp.jsonc +3 -0
- package/cms/faststore/pages/cms_content_type__plp.jsonc +3 -0
- package/cms/faststore/pages/cms_content_type__search.jsonc +3 -0
- package/cms/faststore/schema.json +639 -117
- package/package.json +7 -7
- package/src/components/ui/LocalizationButton/LocalizationButton.tsx +5 -1
- package/src/sdk/localization/useBindingSelector.ts +31 -1
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@faststore/core",
|
|
3
|
-
"version": "4.0.1-dev.
|
|
3
|
+
"version": "4.0.1-dev.2",
|
|
4
4
|
"license": "MIT",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
@@ -39,11 +39,11 @@
|
|
|
39
39
|
"@envelop/graphql-jit": "catalog:",
|
|
40
40
|
"@envelop/parser-cache": "catalog:",
|
|
41
41
|
"@envelop/validation-cache": "catalog:",
|
|
42
|
-
"@faststore/api": "4.0.1-dev.
|
|
43
|
-
"@faststore/diagnostics": "4.0.1-dev.
|
|
44
|
-
"@faststore/lighthouse": "4.0.1-dev.
|
|
45
|
-
"@faststore/sdk": "4.0.1-dev.
|
|
46
|
-
"@faststore/ui": "4.0.1-dev.
|
|
42
|
+
"@faststore/api": "4.0.1-dev.2",
|
|
43
|
+
"@faststore/diagnostics": "4.0.1-dev.2",
|
|
44
|
+
"@faststore/lighthouse": "4.0.1-dev.2",
|
|
45
|
+
"@faststore/sdk": "4.0.1-dev.2",
|
|
46
|
+
"@faststore/ui": "4.0.1-dev.2",
|
|
47
47
|
"@graphql-codegen/cli": "catalog:",
|
|
48
48
|
"@graphql-codegen/client-preset": "4.2.6",
|
|
49
49
|
"@graphql-codegen/typescript": "catalog:",
|
|
@@ -113,5 +113,5 @@
|
|
|
113
113
|
"react": "catalog:",
|
|
114
114
|
"react-dom": "catalog:"
|
|
115
115
|
},
|
|
116
|
-
"gitHead": "
|
|
116
|
+
"gitHead": "78469e62248563c911ba449ea69fc1edacf7277e"
|
|
117
117
|
}
|
|
@@ -49,6 +49,7 @@ const LocalizationButton = ({
|
|
|
49
49
|
setLocaleCode,
|
|
50
50
|
setCurrencyCode,
|
|
51
51
|
save,
|
|
52
|
+
reset,
|
|
52
53
|
isSaveEnabled,
|
|
53
54
|
error,
|
|
54
55
|
} = useBindingSelector()
|
|
@@ -97,7 +98,10 @@ const LocalizationButton = ({
|
|
|
97
98
|
{isSelectorOpen && (
|
|
98
99
|
<LocalizationSelector
|
|
99
100
|
isOpen={isSelectorOpen}
|
|
100
|
-
onClose={() =>
|
|
101
|
+
onClose={() => {
|
|
102
|
+
setIsSelectorOpen(false)
|
|
103
|
+
reset()
|
|
104
|
+
}}
|
|
101
105
|
triggerRef={buttonRef}
|
|
102
106
|
languages={languages}
|
|
103
107
|
currencies={currencies}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { useCallback, useMemo, useState } from 'react'
|
|
1
|
+
import { useCallback, useEffect, useMemo, useRef, useState } from 'react'
|
|
2
2
|
|
|
3
3
|
import storeConfig from '../../../discovery.config'
|
|
4
4
|
import { buildRedirectUrl } from '../../utils/localization/bindingPaths'
|
|
@@ -56,6 +56,8 @@ export interface UseBindingSelectorReturn {
|
|
|
56
56
|
setCurrencyCode: (code: string) => void
|
|
57
57
|
/** Action to save selections and redirect */
|
|
58
58
|
save: () => void
|
|
59
|
+
/** Discards unsaved changes and resets selections to current session values */
|
|
60
|
+
reset: () => void
|
|
59
61
|
}
|
|
60
62
|
|
|
61
63
|
/**
|
|
@@ -77,6 +79,23 @@ export function useBindingSelector(): UseBindingSelectorReturn {
|
|
|
77
79
|
)
|
|
78
80
|
const [error, setError] = useState<BindingSelectorError | null>(null)
|
|
79
81
|
|
|
82
|
+
const hasUserEditedSelection = useRef(false)
|
|
83
|
+
|
|
84
|
+
// Sync selections when session resolves after initial render (e.g. stale session
|
|
85
|
+
// from a previous locale when navigating between locale-prefixed paths).
|
|
86
|
+
// Skipped once the user has made an in-progress selection; call reset() on close to re-enable.
|
|
87
|
+
useEffect(() => {
|
|
88
|
+
if (!hasUserEditedSelection.current) {
|
|
89
|
+
setLocaleCode(currentLocale ?? null)
|
|
90
|
+
}
|
|
91
|
+
}, [currentLocale])
|
|
92
|
+
|
|
93
|
+
useEffect(() => {
|
|
94
|
+
if (!hasUserEditedSelection.current) {
|
|
95
|
+
setCurrencyCode(currentCurrency?.code ?? null)
|
|
96
|
+
}
|
|
97
|
+
}, [currentCurrency?.code])
|
|
98
|
+
|
|
80
99
|
// Build language options with disambiguation - returns Record<localeCode, languageName>
|
|
81
100
|
const languages = useMemo(
|
|
82
101
|
() => buildLanguageOptions(localizationConfig.locales),
|
|
@@ -98,6 +117,7 @@ export function useBindingSelector(): UseBindingSelectorReturn {
|
|
|
98
117
|
// Handle locale code change
|
|
99
118
|
const handleSetLocaleCode = useCallback(
|
|
100
119
|
(code: string) => {
|
|
120
|
+
hasUserEditedSelection.current = true
|
|
101
121
|
setLocaleCode(code)
|
|
102
122
|
setError(null)
|
|
103
123
|
|
|
@@ -126,6 +146,7 @@ export function useBindingSelector(): UseBindingSelectorReturn {
|
|
|
126
146
|
|
|
127
147
|
// Handle currency code change
|
|
128
148
|
const handleSetCurrencyCode = useCallback((code: string) => {
|
|
149
|
+
hasUserEditedSelection.current = true
|
|
129
150
|
setCurrencyCode(code)
|
|
130
151
|
setError(null)
|
|
131
152
|
}, [])
|
|
@@ -169,6 +190,14 @@ export function useBindingSelector(): UseBindingSelectorReturn {
|
|
|
169
190
|
|
|
170
191
|
const isSaveEnabled = Boolean(localeCode && currencyCode && !error)
|
|
171
192
|
|
|
193
|
+
// Discards unsaved changes and re-enables session syncing
|
|
194
|
+
const reset = useCallback(() => {
|
|
195
|
+
hasUserEditedSelection.current = false
|
|
196
|
+
setLocaleCode(currentLocale ?? null)
|
|
197
|
+
setCurrencyCode(currentCurrency?.code ?? null)
|
|
198
|
+
setError(null)
|
|
199
|
+
}, [currentLocale, currentCurrency?.code])
|
|
200
|
+
|
|
172
201
|
return {
|
|
173
202
|
languages,
|
|
174
203
|
currencies,
|
|
@@ -179,5 +208,6 @@ export function useBindingSelector(): UseBindingSelectorReturn {
|
|
|
179
208
|
setLocaleCode: handleSetLocaleCode,
|
|
180
209
|
setCurrencyCode: handleSetCurrencyCode,
|
|
181
210
|
save,
|
|
211
|
+
reset,
|
|
182
212
|
}
|
|
183
213
|
}
|