|
2 | 2 | // Licensed under the MIT license. |
3 | 3 |
|
4 | 4 | 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'; |
6 | 6 | import { useTheme, VideoStreamOptions } from '@internal/react-components'; |
7 | 7 | import React from 'react'; |
8 | 8 | import { useLocale } from '../../localization'; |
@@ -121,52 +121,64 @@ export const LocalDeviceSettings = (props: LocalDeviceSettingsType): JSX.Element |
121 | 121 | }} |
122 | 122 | onRenderTitle={(props?: IDropdownOption[]) => onRenderTitle('Camera', props)} |
123 | 123 | /> |
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> |
170 | 182 | </Stack> |
171 | 183 | ); |
172 | 184 | }; |
|
0 commit comments