Skip to content

Commit 847228e

Browse files
committed
feat(@clayui/language-picker): LPD-45714 Add prop to hide the trigger text
1 parent f32db5b commit 847228e

File tree

4 files changed

+98
-1
lines changed

4 files changed

+98
-1
lines changed

packages/clay-language-picker/src/__tests__/__snapshots__/index.tsx.snap

+58
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,11 @@ exports[`ClayLanguagePicker renders 1`] = `
2424
/>
2525
</svg>
2626
</span>
27+
<span
28+
class="font-weight-normal mr-2"
29+
>
30+
en-US
31+
</span>
2732
</button>
2833
</div>
2934
`;
@@ -52,6 +57,11 @@ exports[`ClayLanguagePicker renders a class name for the trigger 1`] = `
5257
/>
5358
</svg>
5459
</span>
60+
<span
61+
class="font-weight-normal mr-2"
62+
>
63+
en-US
64+
</span>
5565
</button>
5666
</div>
5767
`;
@@ -67,6 +77,39 @@ exports[`ClayLanguagePicker renders a small picker 1`] = `
6777
role="combobox"
6878
tabindex="0"
6979
type="button"
80+
>
81+
<span
82+
class="inline-item-before"
83+
>
84+
<svg
85+
class="lexicon-icon lexicon-icon-en-us"
86+
role="presentation"
87+
>
88+
<use
89+
href="/path/to/svg#en-us"
90+
/>
91+
</svg>
92+
</span>
93+
<span
94+
class="font-weight-normal mr-2"
95+
>
96+
en-US
97+
</span>
98+
</button>
99+
</div>
100+
`;
101+
102+
exports[`ClayLanguagePicker renders hidding the trigger text 1`] = `
103+
<div>
104+
<button
105+
aria-activedescendant=""
106+
aria-expanded="false"
107+
aria-haspopup="listbox"
108+
aria-label="Select a language, current language: en-US."
109+
class="form-control-select hidden-label btn btn-secondary"
110+
role="combobox"
111+
tabindex="0"
112+
type="button"
70113
>
71114
<span
72115
class="inline-item-before"
@@ -109,6 +152,11 @@ exports[`ClayLanguagePicker renders the picker with id 1`] = `
109152
/>
110153
</svg>
111154
</span>
155+
<span
156+
class="font-weight-normal mr-2"
157+
>
158+
en-US
159+
</span>
112160
</button>
113161
</div>
114162
`;
@@ -137,6 +185,11 @@ exports[`ClayLanguagePicker renders with custom labels 1`] = `
137185
/>
138186
</svg>
139187
</span>
188+
<span
189+
class="font-weight-normal mr-2"
190+
>
191+
en-US
192+
</span>
140193
</button>
141194
</div>
142195
`;
@@ -165,6 +218,11 @@ exports[`ClayLanguagePicker renders with translations 1`] = `
165218
/>
166219
</svg>
167220
</span>
221+
<span
222+
class="font-weight-normal mr-2"
223+
>
224+
en-US
225+
</span>
168226
</button>
169227
</div>
170228
`;

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

+14
Original file line numberDiff line numberDiff line change
@@ -136,6 +136,20 @@ describe('ClayLanguagePicker', () => {
136136
expect(container).toMatchSnapshot();
137137
});
138138

139+
it('renders hidding the trigger text', () => {
140+
const {container} = render(
141+
<ClayLanguagePicker
142+
hideTriggerText
143+
locales={locales}
144+
onSelectedLocaleChange={onSelectedLocaleChange}
145+
selectedLocale={locales[0]!}
146+
spritemap="/path/to/svg"
147+
/>
148+
);
149+
150+
expect(container).toMatchSnapshot();
151+
});
152+
139153
it('calls onSelectedLocaleChange when a language is selected', () => {
140154
render(
141155
<ClayLanguagePicker

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

+22-1
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,12 @@ type Props = {
3535

3636
classNamesTrigger?: string;
3737

38+
/**
39+
* Flag to hide the text in the trigger.
40+
*/
41+
42+
hideTriggerText?: boolean;
43+
3844
/**
3945
* The id of the component.
4046
*/
@@ -92,6 +98,7 @@ const Trigger = React.forwardRef<HTMLButtonElement>(
9298
{
9399
ariaLabelTrigger,
94100
classNamesTrigger,
101+
hideTriggerText,
95102
selectedLocale,
96103
small,
97104
spritemap,
@@ -103,7 +110,13 @@ const Trigger = React.forwardRef<HTMLButtonElement>(
103110
<ClayButton
104111
{...otherProps}
105112
aria-label={ariaLabelTrigger}
106-
className={classNames(classNamesTrigger, 'form-control-select')}
113+
className={classNames(
114+
classNamesTrigger,
115+
'form-control-select',
116+
{
117+
'hidden-label': hideTriggerText,
118+
}
119+
)}
107120
displayType="secondary"
108121
ref={ref}
109122
size={small ? 'sm' : undefined}
@@ -114,6 +127,12 @@ const Trigger = React.forwardRef<HTMLButtonElement>(
114127
symbol={selectedLocale.symbol}
115128
/>
116129
</span>
130+
131+
{!hideTriggerText ? (
132+
<span className="font-weight-normal mr-2">
133+
{selectedLocale.label}
134+
</span>
135+
) : null}
117136
</ClayButton>
118137
);
119138
}
@@ -130,6 +149,7 @@ const ClayLanguagePicker = ({
130149
},
131150
active,
132151
classNamesTrigger,
152+
hideTriggerText,
133153
id,
134154
locales,
135155
onActiveChange,
@@ -148,6 +168,7 @@ const ClayLanguagePicker = ({
148168
ariaLabelTrigger={sub(labels.trigger, [selectedLocale.label])}
149169
as={Trigger}
150170
classNamesTrigger={classNamesTrigger}
171+
hideTriggerText={hideTriggerText}
151172
id={id}
152173
items={locales}
153174
onActiveChange={onActiveChange}

packages/clay-language-picker/stories/LanguagePicker.stories.tsx

+4
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,7 @@ export const Default = (args: any) => {
4444

4545
return (
4646
<ClayLanguagePicker
47+
hideTriggerText={args.hideTriggerText}
4748
id="languagePicker"
4849
locales={locales}
4950
onSelectedLocaleChange={(id) => {
@@ -60,6 +61,7 @@ export const Default = (args: any) => {
6061
};
6162

6263
Default.args = {
64+
hideTriggerText: false,
6365
small: false,
6466
};
6567

@@ -72,6 +74,7 @@ export const LanguagePickerWithTranslations = (args: any) => {
7274

7375
return (
7476
<ClayLanguagePicker
77+
hideTriggerText={args.hideTriggerText}
7578
id="languagePicker"
7679
locales={locales}
7780
onSelectedLocaleChange={(id) => {
@@ -89,5 +92,6 @@ export const LanguagePickerWithTranslations = (args: any) => {
8992
};
9093

9194
LanguagePickerWithTranslations.args = {
95+
hideTriggerText: false,
9296
small: false,
9397
};

0 commit comments

Comments
 (0)