MM-32851: honour defaults in interactive dialogs (#5183)
The `select` support for interactive dialogs was missing support for handling the default value provided by the server. Fixes: https://mattermost.atlassian.net/browse/MM-32851
This commit is contained in:
parent
9b8ba4492e
commit
c386fbb0d9
2 changed files with 44 additions and 0 deletions
|
|
@ -36,6 +36,13 @@ export default class DialogElement extends PureComponent {
|
|||
this.state = {
|
||||
selected: null,
|
||||
};
|
||||
|
||||
if (props.type === 'select' && props.value) {
|
||||
const selected = props.options.find((option) => option.value === props.value);
|
||||
if (selected) {
|
||||
this.state.selected = selected;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
onChange = (name, value) => {
|
||||
|
|
|
|||
|
|
@ -7,6 +7,7 @@ import {shallow} from 'enzyme';
|
|||
import Preferences from '@mm-redux/constants/preferences';
|
||||
import RadioSetting from 'app/components/widgets/settings/radio_setting';
|
||||
import BoolSetting from 'app/components/widgets/settings/bool_setting';
|
||||
import AutocompleteSelector from 'app/components/autocomplete_selector';
|
||||
import DialogElement from './dialog_element.js';
|
||||
|
||||
describe('DialogElement', () => {
|
||||
|
|
@ -96,4 +97,40 @@ describe('DialogElement', () => {
|
|||
expect(wrapper.find(BoolSetting).find({value: false}).exists()).toBe(true);
|
||||
});
|
||||
});
|
||||
|
||||
describe('select', () => {
|
||||
const baseProps = {
|
||||
...baseDialogProps,
|
||||
theme,
|
||||
display_name: 'Select',
|
||||
name: 'select',
|
||||
optional: false,
|
||||
type: 'select',
|
||||
options: [
|
||||
{name: 'name1', value: 'value1'},
|
||||
{name: 'name2', value: 'value2'},
|
||||
{name: 'name3', value: 'value3'},
|
||||
],
|
||||
};
|
||||
|
||||
test('handles unknown value', () => {
|
||||
const wrapper = shallow(
|
||||
<DialogElement
|
||||
{...baseProps}
|
||||
value={'unknown'}
|
||||
/>,
|
||||
);
|
||||
expect(wrapper.find(AutocompleteSelector).find({selected: null}).exists()).toBe(true);
|
||||
});
|
||||
|
||||
test('handles known value', () => {
|
||||
const wrapper = shallow(
|
||||
<DialogElement
|
||||
{...baseProps}
|
||||
value={'value2'}
|
||||
/>,
|
||||
);
|
||||
expect(wrapper.find(AutocompleteSelector).find({selected: {name: 'name2', value: 'value2'}}).exists()).toBe(true);
|
||||
});
|
||||
});
|
||||
});
|
||||
|
|
|
|||
Loading…
Reference in a new issue