Merge pull request #1538 from virtuacoplenny/lenny/device-selection-disabled

fix(device-selection): do not create a dropdown menu if disabled
This commit is contained in:
yanas 2017-04-26 17:16:28 -05:00 committed by GitHub
commit 6c676f8d5f
3 changed files with 23 additions and 10 deletions

View File

@ -36,6 +36,12 @@
background-color: rgba(9,30,66,.08); background-color: rgba(9,30,66,.08);
} }
} }
.device-selector-trigger-disabled {
.device-selector-trigger {
color: #a5adba;
cursor: default;
}
}
.device-selector-trigger-text { .device-selector-trigger-text {
overflow: hidden; overflow: hidden;

View File

@ -149,7 +149,6 @@
"selectAudioOutput": "Audio output", "selectAudioOutput": "Audio output",
"followMe": "Everyone follows me", "followMe": "Everyone follows me",
"noDevice": "None", "noDevice": "None",
"noPermission": "Permission to use device is not granted",
"cameraAndMic": "Camera and microphone", "cameraAndMic": "Camera and microphone",
"moderator": "MODERATOR", "moderator": "MODERATOR",
"password": "SET PASSWORD", "password": "SET PASSWORD",
@ -423,7 +422,7 @@
"deviceSelection": { "deviceSelection": {
"currentlyVideoMuted": "Video is currently muted", "currentlyVideoMuted": "Video is currently muted",
"deviceSettings": "Device settings", "deviceSettings": "Device settings",
"noOtherDevices": "No other devices available", "noPermission": "Permission not granted",
"selectADevice": "Select a device", "selectADevice": "Select a device",
"testAudio": "Test sound" "testAudio": "Test sound"
}, },

View File

@ -138,13 +138,15 @@ class DeviceSelector extends Component {
} }
/** /**
* Creates a AKDropdownMenu Component using passed in props and options. * Creates a AKDropdownMenu Component using passed in props and options. If
* the dropdown needs to be disabled, then only the AKDropdownMenu trigger
* element is returned to simulate a disabled state.
* *
* @param {Object} options - Additional configuration for display. * @param {Object} options - Additional configuration for display.
* @param {Object} options.defaultSelected - The option that should be set * @param {Object} options.defaultSelected - The option that should be set
* as currently chosen. * as currently chosen.
* @param {boolean} options.isDisabled - If true, AKDropdownMenu will not * @param {boolean} options.isDisabled - If true, only the AKDropdownMenu
* open on click. * trigger component will be returned to simulate a disabled dropdown.
* @param {Array} options.items - All the selectable options to display. * @param {Array} options.items - All the selectable options to display.
* @param {string} options.placeholder - The translation key to display when * @param {string} options.placeholder - The translation key to display when
* no selection has been made. * no selection has been made.
@ -155,16 +157,22 @@ class DeviceSelector extends Component {
const triggerText const triggerText
= (options.defaultSelected && options.defaultSelected.content) = (options.defaultSelected && options.defaultSelected.content)
|| options.placeholder; || options.placeholder;
const trigger = this._createDropdownTrigger(triggerText);
if (options.isDisabled) {
return (
<div className = 'device-selector-trigger-disabled'>
{ trigger }
</div>
);
}
return ( return (
<AKDropdownMenu <AKDropdownMenu
{ ...(options.isDisabled && { isOpen: !options.isDisabled }) }
items = { [ { items: options.items || [] } ] } items = { [ { items: options.items || [] } ] }
noMatchesFound
= { this.props.t('deviceSelection.noOtherDevices') }
onItemActivated = { this._onSelect } onItemActivated = { this._onSelect }
shouldFitContainer = { true }> shouldFitContainer = { true }>
{ this._createDropdownTrigger(triggerText) } { trigger }
</AKDropdownMenu> </AKDropdownMenu>
); );
} }
@ -208,7 +216,7 @@ class DeviceSelector extends Component {
_renderNoPermission() { _renderNoPermission() {
return this._createDropdown({ return this._createDropdown({
isDisabled: true, isDisabled: true,
placeholder: this.props.t('settings.noPermission') placeholder: this.props.t('deviceSelection.noPermission')
}); });
} }
} }