2 * ============LICENSE_START=======================================================
4 * ================================================================================
5 * Copyright © 2017 AT&T Intellectual Property. All rights reserved.
6 * Copyright © 2017 Amdocs
7 * ================================================================================
8 * Licensed under the Apache License, Version 2.0 (the "License");
9 * you may not use this file except in compliance with the License.
10 * You may obtain a copy of the License at
12 * http://www.apache.org/licenses/LICENSE-2.0
14 * Unless required by applicable law or agreed to in writing, software
15 * distributed under the License is distributed on an "AS IS" BASIS,
16 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
17 * See the License for the specific language governing permissions and
18 * limitations under the License.
19 * ============LICENSE_END=========================================================
21 * ECOMP is a trademark and service mark of AT&T Intellectual Property.
24 * The HTML structure here is aligned with bootstrap HTML structure for form
25 * elements. In this way we have proper styling and it is aligned with other
26 * form elements on screen.
28 * Select and MultiSelect options:
30 * label - the label to be shown which paired with the input
32 * all other "react-select" props - as documented on
33 * http://jedwatson.github.io/react-select/
35 * https://github.com/JedWatson/react-select
37 import React, {Component} from 'react';
38 import Select from 'react-select';
39 import 'react-select/dist/react-select.css';
41 class SelectInput extends Component {
46 let {label, value, ...other} = this.props;
48 <div className='validation-input-wrapper dropdown-multi-select'>
49 <div className='form-group'>
50 {label && <label className='control-label'>{label}</label>}
51 <Select ref='_myInput'
52 onChange={value => this.onSelectChanged(value)} {...other}
60 return this.inputValue && this.inputValue.length ? this.inputValue : '';
63 onSelectChanged(value) {
64 this.props.onMultiSelectChanged(value);
68 let {value} = this.props;
69 this.inputValue = value ? value : [];
72 componentDidUpdate() {
73 if (this.inputValue !== this.props.value) {
74 this.inputValue = this.props.value;
79 export default SelectInput;