Merge pull request #106 from ansible/add-select-default-option

Add default option for AnsibleSelect dropdown.
This commit is contained in:
kialam
2019-02-14 11:00:04 -05:00
committed by GitHub
3 changed files with 25 additions and 10 deletions

View File

@@ -11,7 +11,7 @@ describe('<AnsibleSelect />', () => {
value="foo" value="foo"
name="bar" name="bar"
onChange={() => { }} onChange={() => { }}
labelName={label} label={label}
data={mockData} data={mockData}
/> />
); );
@@ -24,7 +24,7 @@ describe('<AnsibleSelect />', () => {
value="foo" value="foo"
name="bar" name="bar"
onChange={() => { }} onChange={() => { }}
labelName={label} label={label}
data={mockData} data={mockData}
/> />
); );
@@ -39,11 +39,24 @@ describe('<AnsibleSelect />', () => {
value="foo" value="foo"
name="bar" name="bar"
onChange={() => { }} onChange={() => { }}
labelName={label} label={label}
data={null} data={null}
/> />
); );
expect(wrapper.find('FormGroup')).toHaveLength(0); expect(wrapper.find('FormGroup')).toHaveLength(0);
expect(wrapper.find('Select')).toHaveLength(0); expect(wrapper.find('Select')).toHaveLength(0);
}); });
test('Returns correct select options if defaultSelected props is passed', () => {
const wrapper = mount(
<AnsibleSelect
value="foo"
name="bar"
onChange={() => { }}
label={label}
data={mockData}
defaultSelected={mockData[1]}
/>
);
expect(wrapper.find('Select')).toHaveLength(1);
});
}); });

View File

@@ -32,22 +32,20 @@ class AnsibleSelect extends React.Component {
render () { render () {
const { count } = this.state; const { count } = this.state;
const { value, data } = this.props; const { label = '', value, data, defaultSelected } = this.props;
let elem; let elem;
if (count > 1) { if (count > 1) {
elem = ( elem = (
<Select value={value} onChange={this.onSelectChange} aria-label="Select Input"> <Select value={value} onChange={this.onSelectChange} aria-label="Select Input">
{data.map((datum) => ( {data.map((datum) => (datum === defaultSelected
<SelectOption isDisabled={datum.disabled} key={datum} value={datum} label={datum} /> ? (<SelectOption key="" value="" label={`Use Default ${label}`} />) : (<SelectOption key={datum} value={datum} label={datum} />)))
))} }
</Select> </Select>
); );
} else { } else {
elem = null; elem = null;
} }
return elem; return elem;
} }
} }
export default AnsibleSelect; export default AnsibleSelect;

View File

@@ -33,6 +33,7 @@ class OrganizationAdd extends React.Component {
custom_virtualenv: '', custom_virtualenv: '',
instanceGroups: [], instanceGroups: [],
error: '', error: '',
defaultEnv: '/venv/ansible/',
}; };
} }
@@ -92,6 +93,7 @@ class OrganizationAdd extends React.Component {
name, name,
description, description,
custom_virtualenv, custom_virtualenv,
defaultEnv,
instanceGroups, instanceGroups,
error error
} = this.state; } = this.state;
@@ -137,10 +139,12 @@ class OrganizationAdd extends React.Component {
{({ custom_virtualenvs }) => ( {({ custom_virtualenvs }) => (
<FormGroup label="Ansible Environment" fieldId="add-org-form-custom-virtualenv"> <FormGroup label="Ansible Environment" fieldId="add-org-form-custom-virtualenv">
<AnsibleSelect <AnsibleSelect
label="Ansible Environment"
name="custom_virtualenv" name="custom_virtualenv"
value={custom_virtualenv} value={custom_virtualenv}
onChange={this.onFieldChange} onChange={this.onFieldChange}
data={custom_virtualenvs} data={custom_virtualenvs}
defaultSelected={defaultEnv}
/> />
</FormGroup> </FormGroup>
)} )}
@@ -151,7 +155,7 @@ class OrganizationAdd extends React.Component {
submitDisabled={!enabled} submitDisabled={!enabled}
onCancel={this.onCancel} onCancel={this.onCancel}
/> />
{ error ? <div>error</div> : '' } {error ? <div>error</div> : ''}
</Form> </Form>
</CardBody> </CardBody>
</Card> </Card>