// Copyright (c) 2016 Mattermost, Inc. All Rights Reserved. // See License.txt for license information. import React from 'react'; import ReactSelect from 'react-select'; import Setting from './setting.jsx'; import FormError from 'components/form_error.jsx'; export default class MultiSelectSetting extends React.Component { constructor(props) { super(props); this.handleChange = this.handleChange.bind(this); this.state = {error: false}; } handleChange(newValue) { const values = newValue.map((n) => { return n.value; }); if (this.props.selected.length > 0 && this.props.mustBePresent && values.join(',').indexOf(this.props.mustBePresent) === -1) { this.setState({error: this.props.notPresent}); } else { this.props.onChange(this.props.id, values); this.setState({error: false}); } } componentWillReceiveProps(newProps) { if (newProps.selected.length > 0 && newProps.mustBePresent && newProps.selected.join(',').indexOf(newProps.mustBePresent) === -1) { this.setState({error: this.props.notPresent}); } else { this.setState({error: false}); } } render() { return ( ); } } MultiSelectSetting.defaultProps = { disabled: false }; MultiSelectSetting.propTypes = { id: React.PropTypes.string.isRequired, values: React.PropTypes.array.isRequired, label: React.PropTypes.node.isRequired, selected: React.PropTypes.array.isRequired, mustBePresent: React.PropTypes.string, onChange: React.PropTypes.func.isRequired, disabled: React.PropTypes.bool, helpText: React.PropTypes.node, noResultText: React.PropTypes.node, errorText: React.PropTypes.node, notPresent: React.PropTypes.node };