| /* |
| * Copyright © 2016-2018 European Support Limited |
| * |
| * 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 PropTypes from 'prop-types'; |
| import i18n from 'nfvo-utils/i18n/i18n.js'; |
| import Input from 'nfvo-components/input/validation/Input.jsx'; |
| import Form from 'nfvo-components/input/validation/Form.jsx'; |
| import { LICENSE_MODEL_CREATION_FORM_NAME } from './LicenseModelCreationConstants.js'; |
| |
| const LicenseModelPropType = PropTypes.shape({ |
| id: PropTypes.string, |
| vendorName: PropTypes.string, |
| description: PropTypes.string |
| }); |
| |
| class LicenseModelCreationView extends React.Component { |
| static propTypes = { |
| data: LicenseModelPropType, |
| VLMNames: PropTypes.object, |
| usersList: PropTypes.array, |
| onDataChanged: PropTypes.func.isRequired, |
| onSubmit: PropTypes.func.isRequired, |
| onValidateForm: PropTypes.func.isRequired, |
| onCancel: PropTypes.func.isRequired |
| }; |
| |
| render() { |
| let { data = {}, onDataChanged, genericFieldInfo } = this.props; |
| let { vendorName, description } = data; |
| return ( |
| <div className="license-model-modal"> |
| {genericFieldInfo && ( |
| <Form |
| ref="validationForm" |
| hasButtons={true} |
| onSubmit={() => this.submit()} |
| submitButtonText={i18n('Create')} |
| onReset={() => this.props.onCancel()} |
| labledButtons={true} |
| isValid={this.props.isFormValid} |
| formReady={this.props.formReady} |
| btnClassName="sdc-modal__footer" |
| className="license-model-form" |
| onValidateForm={() => this.validate()}> |
| <Input |
| value={vendorName} |
| label={i18n('Vendor Name')} |
| data-test-id="vendor-name" |
| onChange={vendorName => |
| onDataChanged( |
| { vendorName }, |
| LICENSE_MODEL_CREATION_FORM_NAME |
| ) |
| } |
| onBlur={e => |
| this.validateIsNameUnique(e.target.value) |
| } |
| isValid={genericFieldInfo.vendorName.isValid} |
| errorText={genericFieldInfo.vendorName.errorText} |
| type="text" |
| isRequired={true} |
| /> |
| <Input |
| isRequired={true} |
| value={description} |
| label={i18n('Description')} |
| data-test-id="vendor-description" |
| overlayPos="bottom" |
| onChange={description => |
| onDataChanged( |
| { description }, |
| LICENSE_MODEL_CREATION_FORM_NAME |
| ) |
| } |
| isValid={genericFieldInfo.description.isValid} |
| errorText={genericFieldInfo.description.errorText} |
| type="textarea" |
| groupClassName="no-bottom-margin" |
| /> |
| </Form> |
| )} |
| </div> |
| ); |
| } |
| |
| submit() { |
| const { data: licenseModel, usersList } = this.props; |
| this.props.onSubmit(licenseModel, usersList); |
| } |
| |
| validateIsNameUnique(value) { |
| this.props.isNameUnique( |
| value, |
| 'vendorName', |
| LICENSE_MODEL_CREATION_FORM_NAME |
| ); |
| } |
| |
| validate() { |
| this.props.onValidateForm(LICENSE_MODEL_CREATION_FORM_NAME); |
| } |
| } |
| |
| export default LicenseModelCreationView; |