Skip to content

Commit 6f0a6c0

Browse files
committed
feat(@clayui/language-picker): LPD-45714 Make the language picker work in an uncontrolled way
1 parent 29a032b commit 6f0a6c0

File tree

1 file changed

+16
-8
lines changed
  • packages/clay-core/src/language-picker

1 file changed

+16
-8
lines changed

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

+16-8
Original file line numberDiff line numberDiff line change
@@ -165,20 +165,29 @@ TranslationLabel.displayName = 'Label';
165165
const Trigger = React.forwardRef<HTMLButtonElement>(
166166
(
167167
{
168-
ariaLabelTrigger,
169168
classNamesTrigger,
170169
hideTriggerText,
170+
locales,
171171
selectedLocale,
172172
small,
173173
spritemap,
174+
triggerMessage,
174175
...otherProps
175176
}: Record<string, any>,
176177
ref
177178
) => {
179+
const selectedItem =
180+
selectedLocale ||
181+
locales.find(
182+
(locale: Item) => locale.label === otherProps['children']
183+
);
184+
178185
return (
179186
<button
180187
{...otherProps}
181-
aria-label={ariaLabelTrigger}
188+
aria-label={sub(triggerMessage, [
189+
selectedItem?.displayName || selectedItem?.label,
190+
])}
182191
className={classNames(
183192
classNamesTrigger,
184193
'form-control form-control-select form-control-select-secondary',
@@ -192,11 +201,11 @@ const Trigger = React.forwardRef<HTMLButtonElement>(
192201
<span className="inline-item-before">
193202
<ClayIcon
194203
spritemap={spritemap}
195-
symbol={selectedLocale.symbol}
204+
symbol={selectedItem.symbol}
196205
/>
197206
</span>
198207

199-
{!hideTriggerText ? selectedLocale.label : null}
208+
{!hideTriggerText ? selectedItem.label : null}
200209
</button>
201210
);
202211
}
@@ -229,27 +238,26 @@ const ClayLanguagePicker = ({
229238
}: Props) => {
230239
const defaultLanguage = locales[0];
231240
const hasTranslations = Object.keys(translations).length;
232-
const selectedLocale = locales.find(({id}) => id === selectedLocaleId)!;
241+
const selectedLocale = locales.find(({id}) => id === selectedLocaleId);
233242

234243
return (
235244
<Picker
236245
active={active}
237-
ariaLabelTrigger={sub(messages.trigger, [
238-
selectedLocale.displayName || selectedLocale.label,
239-
])}
240246
as={Trigger}
241247
classNamesTrigger={classNamesTrigger}
242248
defaultActive={defaultActive}
243249
defaultSelectedKey={defaultSelectedLocaleId || locales[0]!.id}
244250
hideTriggerText={hideTriggerText}
245251
id={id}
246252
items={locales}
253+
locales={locales}
247254
onActiveChange={onActiveChange}
248255
onSelectionChange={onSelectedLocaleChange}
249256
selectedKey={selectedLocaleId}
250257
selectedLocale={selectedLocale}
251258
small={small}
252259
spritemap={spritemap}
260+
triggerMessage={messages.trigger}
253261
>
254262
{(locale) => {
255263
return (

0 commit comments

Comments
 (0)