Skip to content

Commit 533ed4a

Browse files
authored
aria label missing in Call composite configuration page (#1172)
* fix common label for mic and speakers in config * update disabled state of Sound settings label to follow page "Start" button's * Change files
1 parent 05b503c commit 533ed4a

2 files changed

Lines changed: 66 additions & 47 deletions

File tree

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
{
2+
"type": "none",
3+
"comment": "fix common label for mic and speakers in Call composite configuration page",
4+
"packageName": "@internal/react-composites",
5+
"email": "alcail@microsoft.com",
6+
"dependentChangeType": "none"
7+
}

packages/react-composites/src/composites/CallComposite/components/LocalDeviceSettings.tsx

Lines changed: 59 additions & 47 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
// Licensed under the MIT license.
33

44
import { AudioDeviceInfo, VideoDeviceInfo } from '@azure/communication-calling';
5-
import { Dropdown, Icon, IDropdownOption, Stack } from '@fluentui/react';
5+
import { Dropdown, Icon, IDropdownOption, Label, mergeStyles, Stack } from '@fluentui/react';
66
import { useTheme, VideoStreamOptions } from '@internal/react-components';
77
import React from 'react';
88
import { useLocale } from '../../localization';
@@ -121,52 +121,64 @@ export const LocalDeviceSettings = (props: LocalDeviceSettingsType): JSX.Element
121121
}}
122122
onRenderTitle={(props?: IDropdownOption[]) => onRenderTitle('Camera', props)}
123123
/>
124-
<Dropdown
125-
label={soundLabel}
126-
placeholder={defaultPlaceHolder}
127-
styles={dropDownStyles(theme)}
128-
disabled={!props.microphonePermissionGranted}
129-
errorMessage={
130-
props.microphonePermissionGranted === undefined || props.microphonePermissionGranted
131-
? undefined
132-
: locale.strings.call.microphonePermissionDenied
133-
}
134-
options={
135-
props.microphonePermissionGranted
136-
? getDropDownList(props.microphones)
137-
: [{ key: 'deniedOrUnknown', text: '' }]
138-
}
139-
defaultSelectedKey={
140-
props.microphonePermissionGranted
141-
? props.selectedMicrophone
142-
? props.selectedMicrophone.id
143-
: defaultDeviceId(props.microphones)
144-
: 'deniedOrUnknown'
145-
}
146-
onChange={(
147-
event: React.FormEvent<HTMLDivElement>,
148-
option?: IDropdownOption | undefined,
149-
index?: number | undefined
150-
) => {
151-
props.onSelectMicrophone(props.microphones[index ?? 0]);
152-
}}
153-
onRenderTitle={(props?: IDropdownOption[]) => onRenderTitle('Microphone', props)}
154-
/>
155-
<Dropdown
156-
placeholder={defaultPlaceHolder}
157-
styles={dropDownStyles(theme)}
158-
disabled={props.speakers.length === 0}
159-
options={getDropDownList(props.speakers)}
160-
defaultSelectedKey={props.selectedSpeaker ? props.selectedSpeaker.id : defaultDeviceId(props.speakers)}
161-
onChange={(
162-
event: React.FormEvent<HTMLDivElement>,
163-
option?: IDropdownOption | undefined,
164-
index?: number | undefined
165-
) => {
166-
props.onSelectSpeaker(props.speakers[index ?? 0]);
167-
}}
168-
onRenderTitle={(props?: IDropdownOption[]) => onRenderTitle('Speaker', props)}
169-
/>
124+
<Stack>
125+
<Label
126+
id={'call-composite-local-sound-settings-label'}
127+
className={mergeStyles(dropDownStyles(theme).label)}
128+
disabled={!props.microphonePermissionGranted} // follows Start button disabled state in ConfigurationPage
129+
>
130+
{soundLabel}
131+
</Label>
132+
<Stack data-ui-id="call-composite-sound-settings" tokens={mainStackTokens}>
133+
<Dropdown
134+
aria-labelledby={'call-composite-local-sound-settings-label'}
135+
placeholder={defaultPlaceHolder}
136+
styles={dropDownStyles(theme)}
137+
disabled={!props.microphonePermissionGranted}
138+
errorMessage={
139+
props.microphonePermissionGranted === undefined || props.microphonePermissionGranted
140+
? undefined
141+
: locale.strings.call.microphonePermissionDenied
142+
}
143+
options={
144+
props.microphonePermissionGranted
145+
? getDropDownList(props.microphones)
146+
: [{ key: 'deniedOrUnknown', text: '' }]
147+
}
148+
defaultSelectedKey={
149+
props.microphonePermissionGranted
150+
? props.selectedMicrophone
151+
? props.selectedMicrophone.id
152+
: defaultDeviceId(props.microphones)
153+
: 'deniedOrUnknown'
154+
}
155+
onChange={(
156+
event: React.FormEvent<HTMLDivElement>,
157+
option?: IDropdownOption | undefined,
158+
index?: number | undefined
159+
) => {
160+
props.onSelectMicrophone(props.microphones[index ?? 0]);
161+
}}
162+
onRenderTitle={(props?: IDropdownOption[]) => onRenderTitle('Microphone', props)}
163+
/>
164+
<Dropdown
165+
aria-labelledby={'call-composite-local-sound-settings-label'}
166+
placeholder={defaultPlaceHolder}
167+
styles={dropDownStyles(theme)}
168+
disabled={props.speakers.length === 0}
169+
options={getDropDownList(props.speakers)}
170+
defaultSelectedKey={props.selectedSpeaker ? props.selectedSpeaker.id : defaultDeviceId(props.speakers)}
171+
onChange={(
172+
event: React.FormEvent<HTMLDivElement>,
173+
option?: IDropdownOption | undefined,
174+
index?: number | undefined
175+
) => {
176+
props.onSelectSpeaker(props.speakers[index ?? 0]);
177+
}}
178+
onRenderTitle={(props?: IDropdownOption[]) => onRenderTitle('Speaker', props)}
179+
/>
180+
</Stack>
181+
</Stack>
170182
</Stack>
171183
);
172184
};

0 commit comments

Comments
 (0)