169 lines
5.5 KiB
JavaScript
Raw Normal View History

2017-11-08 12:22:03 +01:00
/**
*
* PopUpForm
*
*/
import React from 'react';
import { Button, Modal, ModalHeader, ModalBody, ModalFooter } from 'reactstrap';
import { FormattedMessage } from 'react-intl';
import PropTypes from 'prop-types';
2017-11-08 16:06:21 +01:00
import { get } from 'lodash';
import { router } from 'app';
2017-11-08 12:22:03 +01:00
import Input from 'components/Input';
import styles from './styles.scss';
class PopUpForm extends React.Component { // eslint-disable-line react/prefer-stateless-function
toggleModal = () => router.push(router.location.pathname);
renderButton = () => {
if (this.props.showLoader) {
return (
<Button onClick={() => {}} type="submit" className={styles.primary} disabled>
<p className={styles.saving}>
<span>.</span><span>.</span><span>.</span>
</p>
</Button>
);
}
return (
<Button type="submit" onClick={this.props.onSubmit} className={styles.primary}>
<FormattedMessage id="users-permissions.popUpForm.button.save" />
</Button>
);
}
renderForm = () => {
if (this.props.settingType === 'providers') {
return (
<div className="row">
<Input
2017-11-08 16:06:21 +01:00
autoFocus
2017-11-08 12:22:03 +01:00
label="users-permissions.popUpForm.inputSelect.providers.label"
name="provider"
2017-11-08 16:06:21 +01:00
onChange={this.props.onChange}
2017-11-08 12:22:03 +01:00
selectOptions={[{ value: 'Email'}, { value: 'Facebook' }, { value: 'Google' }]}
type="select"
validations={{ required: true }}
2017-11-08 16:06:21 +01:00
value={get(this.props.values, 'provider')}
2017-11-08 12:22:03 +01:00
/>
<div className="col-md-6" />
<Input
inputDescription="users-permissions.popUpForm.inputToggle.providers.description"
label="users-permissions.popUpForm.inputToggle.providers.label"
name="enabled"
2017-11-08 16:06:21 +01:00
onChange={this.props.onChange}
2017-11-08 12:22:03 +01:00
type="toggle"
validations={{}}
2017-11-08 16:06:21 +01:00
value={get(this.props.values, 'enabled')}
2017-11-08 12:22:03 +01:00
/>
</div>
);
}
return (
<div className="row">
<Input
2017-11-08 16:06:21 +01:00
autoFocus
2017-11-08 12:22:03 +01:00
label="users-permissions.popUpForm.inputText.shipperName.label"
name="shipperName"
2017-11-08 16:06:21 +01:00
onChange={this.props.onChange}
value={get(this.props.values, 'shipperName')}
placeholder="users-permissions.popUpForm.inputText.shipperName.placeholder"
2017-11-08 12:22:03 +01:00
type="text"
validations={{}}
/>
<Input
label="users-permissions.popUpForm.inputEmail.shipperEmail.label"
name="shipperEmail"
2017-11-08 16:06:21 +01:00
onChange={this.props.onChange}
placeholder="users-permissions.popUpForm.inputEmail.placeholder"
2017-11-08 12:22:03 +01:00
type="email"
validations={{ required: true }}
2017-11-08 16:06:21 +01:00
value={get(this.props.values, 'shipperEmail')}
2017-11-08 12:22:03 +01:00
/>
<Input
label="users-permissions.popUpForm.inputEmail.responseEmail.label"
name="responseEmail"
2017-11-08 16:06:21 +01:00
onChange={this.props.onChange}
placeholder="users-permissions.popUpForm.inputEmail.placeholder"
2017-11-08 12:22:03 +01:00
type="email"
validations={{}}
2017-11-08 16:06:21 +01:00
value={get(this.props.values, 'responseEmail')}
2017-11-08 12:22:03 +01:00
/>
<div className="col-md-6" />
2017-11-08 16:06:21 +01:00
<Input
customBootstrapClass="col-md-12"
label="users-permissions.popUpForm.inputText.emailObject.label"
name="emailObject"
onChange={this.props.onChange}
placeholder="users-permissions.popUpForm.inputText.emailObject.placeholder"
type="text"
validations={{}}
value={get(this.props.values, 'emailObject')}
/>
<Input
customBootstrapClass="col-md-12"
label="users-permissions.popUpForm.inputTextArea.message.label"
name="message"
onChange={this.props.onChange}
placeholder="users-permissions.popUpForm.inputTextArea.message.placeholder"
type="textarea"
validations={{}}
value={get(this.props.values, 'message')}
/>
2017-11-08 12:22:03 +01:00
</div>
);
}
render() {
return (
<div className={styles.popUpForm}>
<Modal isOpen={this.props.isOpen} toggle={this.toggleModal} className={`${styles.modalPosition}`}>
<ModalHeader toggle={this.toggleModal} className={styles.modalHeader} />
<div className={styles.headerContainer}>
<div>
{this.props.actionType ? (
<FormattedMessage id={`users-permissions.popUpForm.header.${this.props.actionType}.${this.props.settingType}`} />
) : <div />}
</div>
</div>
2017-11-08 16:06:21 +01:00
<form onSubmit={this.props.onSubmit}>
<ModalBody className={styles.modalBody}>
<div className="container-fluid">
{this.renderForm()}
</div>
</ModalBody>
<ModalFooter className={styles.modalFooter}>
<Button onClick={() => router.push(router.location.pathname)} className={styles.secondary}>
<FormattedMessage id="users-permissions.popUpForm.button.cancel" />
</Button>
{this.renderButton()}
</ModalFooter>
</form>
2017-11-08 12:22:03 +01:00
</Modal>
</div>
);
}
}
2017-11-08 16:06:21 +01:00
PopUpForm.defaultProps = {
settingType: 'providers',
showLoader: false,
};
PopUpForm.propTypes = {
2017-11-08 12:22:03 +01:00
actionType: PropTypes.string.isRequired,
isOpen: PropTypes.bool.isRequired,
2017-11-08 16:06:21 +01:00
onChange: PropTypes.func.isRequired,
onSubmit: PropTypes.func.isRequired,
settingType: PropTypes.string,
showLoader: PropTypes.bool,
values: PropTypes.object.isRequired,
2017-11-08 12:22:03 +01:00
};
export default PopUpForm;