blob: 757dc6737ef08cf6c1b37bb569f31630dfa32c4b [file] [log] [blame]
Einav Weiss Keidar1801b242018-08-13 16:19:46 +03001/*
2 * Copyright © 2016-2018 European Support Limited
talig8e9c0652017-12-20 14:30:43 +02003 *
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
7 *
Einav Weiss Keidar1801b242018-08-13 16:19:46 +03008 * http://www.apache.org/licenses/LICENSE-2.0
talig8e9c0652017-12-20 14:30:43 +02009 *
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
Einav Weiss Keidar1801b242018-08-13 16:19:46 +030012 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
talig8e9c0652017-12-20 14:30:43 +020015 */
16
17import React from 'react';
Einav Weiss Keidar7fdf7332018-03-20 14:45:40 +020018import { connect } from 'react-redux';
talig8e9c0652017-12-20 14:30:43 +020019import i18n from 'nfvo-utils/i18n/i18n.js';
20import Form from 'nfvo-components/input/validation/Form.jsx';
21import Input from 'nfvo-components/input/validation/Input.jsx';
Einav Weiss Keidar7fdf7332018-03-20 14:45:40 +020022import { actionTypes as modalActionTypes } from 'nfvo-components/modal/GlobalModalConstants.js';
talig8e9c0652017-12-20 14:30:43 +020023import keyMirror from 'nfvo-utils/KeyMirror.js';
24
25export const CommitModalType = keyMirror({
Einav Weiss Keidar7fdf7332018-03-20 14:45:40 +020026 COMMIT: null,
27 COMMIT_SUBMIT: null
talig8e9c0652017-12-20 14:30:43 +020028});
29
Einav Weiss Keidar7fdf7332018-03-20 14:45:40 +020030export const mapActionToProps = dispatch => {
31 return {
32 onClose: () =>
33 dispatch({
34 type: modalActionTypes.GLOBAL_MODAL_CLOSE
35 })
36 };
talig8e9c0652017-12-20 14:30:43 +020037};
38
39class CommitCommentModal extends React.Component {
Einav Weiss Keidar7fdf7332018-03-20 14:45:40 +020040 state = {
41 comment: ''
42 };
talig8e9c0652017-12-20 14:30:43 +020043
Einav Weiss Keidar7fdf7332018-03-20 14:45:40 +020044 render() {
45 const { onCommit, onClose, type } = this.props;
46 const [commitButtonText, descriptionText] =
47 type === CommitModalType.COMMIT
48 ? [i18n('Commit'), i18n('You are about to commit your version')]
49 : [
50 i18n('Commit & Submit'),
51 i18n('You must commit your changes before the submit')
52 ];
talig8e9c0652017-12-20 14:30:43 +020053
Einav Weiss Keidar7fdf7332018-03-20 14:45:40 +020054 return (
55 <Form
56 ref="validationForm"
57 hasButtons={true}
58 onSubmit={() => {
59 onCommit(this.state.comment);
60 onClose();
61 }}
62 onReset={onClose}
63 submitButtonText={commitButtonText}
64 labledButtons={true}
65 isValid={true}
Einav Weiss Keidar1801b242018-08-13 16:19:46 +030066 btnClassName="sdc-modal__footer"
Einav Weiss Keidar7fdf7332018-03-20 14:45:40 +020067 className="comment-commit-form">
68 <div className="commit-modal-text">{descriptionText}</div>
69 <Input
70 data-test-id="commit-comment-text"
71 onChange={comment => this.setState({ comment: comment })}
72 label={i18n('Enter Commit Comment:')}
73 value={this.state.comment}
74 type="textarea"
Einav Weiss Keidar1801b242018-08-13 16:19:46 +030075 groupClassName="no-bottom-margin"
Einav Weiss Keidar7fdf7332018-03-20 14:45:40 +020076 />
77 </Form>
78 );
79 }
talig8e9c0652017-12-20 14:30:43 +020080}
81
82export default connect(null, mapActionToProps)(CommitCommentModal);