-
Rafael László authoredRafael László authored
AddEventForm.js 3.01 KiB
import { Button, Form, Icon, Input, Modal } from 'semantic-ui-react';
import React, { Component } from 'react';
import { addEvent, eventDate, writeEvent } from '../../actions/statistics';
import { DateTimeInput } from 'semantic-ui-calendar-react';
import { clearWrite } from '../../actions/news';
import { connect } from 'react-redux';
class AddEventForm extends Component {
constructor(props) {
super(props);
this.state = {
showModal: false,
date: '',
};
}
// Handling change in redux action creator throws an exception
// Temporal solotion using the components state to display, instead redux state
handleChange = (event, { name, value }) => {
if (this.state.hasOwnProperty(name)) {
this.setState({ [name]: value });
}
this.props.eventDate(name, value);
};
render() {
const { name, description } = this.props.newEvent;
return (
<Modal
open={this.state.showModal}
trigger={
<Button
size="big"
onClick={() => {
this.setState({ showModal: true });
}}
>
Alkalom hozzáadása
</Button>
}
>
<Modal.Header>Új alkalom:</Modal.Header>
<Modal.Content
style={{
paddingTop: '20px',
}}
>
<Form>
<Form.Field
control={Input}
label="Név"
name="name"
onChange={(e) => this.props.writeEvent(e)}
value={name}
style={{
marginBottom: '20px',
}}
placeholder="Title"
/>
<Form.TextArea
name="description"
label="Leírás:"
placeholder="Rövid leírás"
value={description}
onChange={(e) => this.props.writeEvent(e)}
/>
<DateTimeInput
name="date"
label="Dátum:"
dateFormat="YYYY-MM-DD"
placeholder="Date"
value={this.state.date}
iconPosition="left"
onChange={this.handleChange}
/>
</Form>
</Modal.Content>
<Modal.Actions>
<Button
inverted
color="red"
onClick={() => {
this.setState({ showModal: false });
this.props.clearWrite();
}}
>
<Icon name="remove" />
Cancel
</Button>
<Button
inverted
color="green"
onClick={() => {
this.props.addEvent(this.props.newEvent);
this.setState({ showModal: false, date: '' });
}}
>
<Icon name="checkmark" /> Add
</Button>
</Modal.Actions>
</Modal>
);
}
}
const mapStateToProps = ({ events: { newEvent } }) => ({ newEvent });
export default connect(mapStateToProps, {
writeEvent,
addEvent,
eventDate,
clearWrite,
})(AddEventForm);