Skip to content

Commit b68567e

Browse files
committed
feat(@clayui/language-picker): LPD-45714 Replace selectedLocale with selectedLocaleId to be consistent with the design of the onSelectedLocaleChange API
1 parent ef3b2fa commit b68567e

File tree

3 files changed

+28
-36
lines changed

3 files changed

+28
-36
lines changed

packages/clay-core/src/language-picker/__tests__/index.tsx

+10-10
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@ describe('ClayLanguagePicker', () => {
5050
<ClayLanguagePicker
5151
locales={locales}
5252
onSelectedLocaleChange={onSelectedLocaleChange}
53-
selectedLocale={locales[0]!}
53+
selectedLocaleId={locales[0]!.id}
5454
spritemap="/path/to/svg"
5555
/>
5656
);
@@ -64,7 +64,7 @@ describe('ClayLanguagePicker', () => {
6464
classNamesTrigger="trigger-class"
6565
locales={locales}
6666
onSelectedLocaleChange={onSelectedLocaleChange}
67-
selectedLocale={locales[0]!}
67+
selectedLocaleId={locales[0]!.id}
6868
spritemap="/path/to/svg"
6969
/>
7070
);
@@ -78,7 +78,7 @@ describe('ClayLanguagePicker', () => {
7878
id="pickerId"
7979
locales={locales}
8080
onSelectedLocaleChange={onSelectedLocaleChange}
81-
selectedLocale={locales[0]!}
81+
selectedLocaleId={locales[0]!.id}
8282
spritemap="/path/to/svg"
8383
/>
8484
);
@@ -99,7 +99,7 @@ describe('ClayLanguagePicker', () => {
9999
untranslated: 'Untranslated Label',
100100
}}
101101
onSelectedLocaleChange={onSelectedLocaleChange}
102-
selectedLocale={locales[0]!}
102+
selectedLocaleId={locales[0]!.id}
103103
spritemap="/path/to/svg"
104104
/>
105105
);
@@ -112,7 +112,7 @@ describe('ClayLanguagePicker', () => {
112112
<ClayLanguagePicker
113113
locales={locales}
114114
onSelectedLocaleChange={onSelectedLocaleChange}
115-
selectedLocale={locales[0]!}
115+
selectedLocaleId={locales[0]!.id}
116116
small
117117
spritemap="/path/to/svg"
118118
/>
@@ -126,7 +126,7 @@ describe('ClayLanguagePicker', () => {
126126
<ClayLanguagePicker
127127
locales={locales}
128128
onSelectedLocaleChange={onSelectedLocaleChange}
129-
selectedLocale={locales[0]!}
129+
selectedLocaleId={locales[0]!.id}
130130
spritemap="/path/to/svg"
131131
translations={{
132132
'es-ES': {total: 4, translated: 2},
@@ -144,7 +144,7 @@ describe('ClayLanguagePicker', () => {
144144
hideTriggerText
145145
locales={locales}
146146
onSelectedLocaleChange={onSelectedLocaleChange}
147-
selectedLocale={locales[0]!}
147+
selectedLocaleId={locales[0]!.id}
148148
spritemap="/path/to/svg"
149149
/>
150150
);
@@ -157,7 +157,7 @@ describe('ClayLanguagePicker', () => {
157157
<ClayLanguagePicker
158158
locales={locales}
159159
onSelectedLocaleChange={onSelectedLocaleChange}
160-
selectedLocale={locales[0]!}
160+
selectedLocaleId={locales[0]!.id}
161161
spritemap="/path/to/svg"
162162
translations={{
163163
'es-ES': {total: 4, translated: 2},
@@ -184,7 +184,7 @@ describe('ClayLanguagePicker', () => {
184184
<ClayLanguagePicker
185185
locales={locales}
186186
onSelectedLocaleChange={onSelectedLocaleChange}
187-
selectedLocale={locales[0]!}
187+
selectedLocaleId={locales[0]!.id}
188188
spritemap="/path/to/svg"
189189
/>
190190
);
@@ -204,7 +204,7 @@ describe('ClayLanguagePicker', () => {
204204
locales={locales}
205205
onActiveChange={onActiveChange}
206206
onSelectedLocaleChange={onSelectedLocaleChange}
207-
selectedLocale={locales[0]!}
207+
selectedLocaleId={locales[0]!.id}
208208
spritemap="/path/to/svg"
209209
/>
210210
);

packages/clay-core/src/language-picker/index.tsx

+8-8
Original file line numberDiff line numberDiff line change
@@ -83,12 +83,12 @@ type Props = {
8383
/**
8484
* Callback that gets called when a selected locale gets changed
8585
*/
86-
onSelectedLocaleChange: (val: React.Key) => void;
86+
onSelectedLocaleChange?: InternalDispatch<React.Key>;
8787

8888
/**
89-
* Exposes the currently selected locale
89+
* Exposes the currently selected locale id
9090
*/
91-
selectedLocale: Item;
91+
selectedLocaleId: string;
9292

9393
/**
9494
* Flag to show the picker in small size.
@@ -216,13 +216,15 @@ const ClayLanguagePicker = ({
216216
locales,
217217
onActiveChange,
218218
onSelectedLocaleChange,
219-
selectedLocale,
219+
selectedLocaleId,
220220
small,
221221
spritemap,
222222
translations = {},
223223
}: Props) => {
224224
const defaultLanguage = locales[0];
225225
const hasTranslations = Object.keys(translations).length;
226+
const selectedLocale =
227+
locales.find(({id}) => id === selectedLocaleId) || locales[0]!;
226228

227229
return (
228230
<Picker
@@ -237,10 +239,8 @@ const ClayLanguagePicker = ({
237239
id={id}
238240
items={locales}
239241
onActiveChange={onActiveChange}
240-
onSelectionChange={(id: React.Key) => {
241-
onSelectedLocaleChange(id);
242-
}}
243-
selectedKey={selectedLocale.id}
242+
onSelectionChange={onSelectedLocaleChange}
243+
selectedKey={selectedLocaleId}
244244
selectedLocale={selectedLocale}
245245
small={small}
246246
spritemap={spritemap}

packages/clay-core/stories/LanguagePicker.stories.tsx

+10-18
Original file line numberDiff line numberDiff line change
@@ -40,21 +40,17 @@ const locales = [
4040
];
4141

4242
export const Default = (args: any) => {
43-
const [selectedLocale, setSelectedLocale] = useState<any>(locales[0]);
43+
const [selectedLocaleId, setSelectedLocaleId] = useState<any>(
44+
locales[0]!.id
45+
);
4446

4547
return (
4648
<ClayLanguagePicker
4749
hideTriggerText={args.hideTriggerText}
4850
id="languagePicker"
4951
locales={locales}
50-
onSelectedLocaleChange={(id) => {
51-
const locale = locales.find((locale) => locale.id === id);
52-
53-
if (locale) {
54-
setSelectedLocale(locale);
55-
}
56-
}}
57-
selectedLocale={selectedLocale}
52+
onSelectedLocaleChange={setSelectedLocaleId}
53+
selectedLocaleId={selectedLocaleId}
5854
small={args.small}
5955
/>
6056
);
@@ -66,7 +62,9 @@ Default.args = {
6662
};
6763

6864
export const LanguagePickerWithTranslations = (args: any) => {
69-
const [selectedLocale, setSelectedLocale] = useState<any>(locales[0]);
65+
const [selectedLocaleId, setSelectedLocaleId] = useState<any>(
66+
locales[0]!.id
67+
);
7068
const translations = {
7169
'ca-ES': {total: 4, translated: 2},
7270
'nl-NL': {total: 4, translated: 4},
@@ -77,14 +75,8 @@ export const LanguagePickerWithTranslations = (args: any) => {
7775
hideTriggerText={args.hideTriggerText}
7876
id="languagePicker"
7977
locales={locales}
80-
onSelectedLocaleChange={(id) => {
81-
const locale = locales.find((locale) => locale.id === id);
82-
83-
if (locale) {
84-
setSelectedLocale(locale);
85-
}
86-
}}
87-
selectedLocale={selectedLocale}
78+
onSelectedLocaleChange={setSelectedLocaleId}
79+
selectedLocaleId={selectedLocaleId}
8880
small={args.small}
8981
translations={translations}
9082
/>

0 commit comments

Comments
 (0)