/*!
* Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
* or implied. See the License for the specific language governing
* permissions and limitations under the License.
*/
import React from 'react';
import ReactDOM from 'react-dom';
import i18n from 'nfvo-utils/i18n/i18n.js';
import classNames from 'classnames';
import Select from 'nfvo-components/input/SelectInput.jsx';
import Overlay from 'react-bootstrap/lib/Overlay.js';
import Tooltip from 'react-bootstrap/lib/Tooltip.js';
export const other = {OTHER: 'Other'};
class InputOptions extends React.Component {
static propTypes = {
values: React.PropTypes.arrayOf(React.PropTypes.shape({
enum: React.PropTypes.string,
title: React.PropTypes.string
})),
isEnabledOther: React.PropTypes.bool,
label: React.PropTypes.string,
selectedValue: React.PropTypes.string,
multiSelectedEnum: React.PropTypes.oneOfType([
React.PropTypes.string,
React.PropTypes.array
]),
selectedEnum: React.PropTypes.string,
otherValue: React.PropTypes.string,
overlayPos: React.PropTypes.string,
onEnumChange: React.PropTypes.func,
onOtherChange: React.PropTypes.func,
onBlur: React.PropTypes.func,
isRequired: React.PropTypes.bool,
isMultiSelect: React.PropTypes.bool,
isValid: React.PropTypes.bool,
disabled: React.PropTypes.bool
};
state = {
otherInputDisabled: !this.props.otherValue
};
oldProps = {
selectedEnum: '',
otherValue: '',
multiSelectedEnum: []
};
render() {
let {label, isRequired, values, otherValue, onOtherChange, isMultiSelect, onBlur, multiSelectedEnum, selectedEnum, isValid, children, isReadOnlyMode} = this.props;
const dataTestId = this.props['data-test-id'] ? {'data-test-id': this.props['data-test-id']} : {};
let currentMultiSelectedEnum = [];
let currentSelectedEnum = '';
let otherInputDisabled = (isMultiSelect && (multiSelectedEnum === undefined || multiSelectedEnum.length === 0 || multiSelectedEnum[0] !== other.OTHER))
|| (!isMultiSelect && (selectedEnum === undefined || selectedEnum !== other.OTHER));
if (isMultiSelect) {
currentMultiSelectedEnum = multiSelectedEnum;
if(!otherInputDisabled) {
currentSelectedEnum = multiSelectedEnum ? multiSelectedEnum.toString() : undefined;
}
}
else if(selectedEnum){
currentSelectedEnum = selectedEnum;
}
if (!onBlur) {
onBlur = () => {};
}
return(