import React, { Component } from "react"; import { MDCTextfield } from "@material/textfield/dist/mdc.textfield.js"; import { MDCDialog } from "@material/dialog/dist/mdc.dialog.js"; import "@material/form-field/dist/mdc.form-field.css"; import "@material/select/dist/mdc.select.css"; import "@material/textfield/dist/mdc.textfield.css"; import "@material/button/dist/mdc.button.css"; import "@material/dialog/dist/mdc.dialog.css"; import "./ExpenseForm.css"; class ExpenseForm extends Component { constructor(props) { super(props); this.state = { isValid: false }; } handleInputChange = (event) => { const target = event.target; target.reportValidity(); this.setState({ isValid: this.form.checkValidity() }); this.props.onChange(target.name, target.value); } componentDidMount() { document.querySelectorAll(".mdc-textfield").forEach(selector => { new MDCTextfield(selector); }); if (this.props.expense.id === undefined) { this.amountInput.focus(); } } handleSubmit = (event) => { event.preventDefault(); this.props.onSubmit(); } initializeDeleteModal = (element) => { if (element) { this.dialog = new MDCDialog(element); this.dialog.listen("MDCDialog:accept", () => { // a fix for not closing the modal dialog properly document.body.className = document.body.className.replace( "mdc-dialog-scroll-lock", "" ); this.props.onDelete(this.props.expense); }); } } render() { return (
{ this.form = form; }} noValidate >
{ this.amountInput = el; }} value={this.props.expense.amount} onChange={this.handleInputChange} type="number" step="0.01" min="0" required />
{this.props.expense.id && this.dialog.show()} value="Löschen" />} this.props.onCancel()} value="Schliessen" />
); } } export default ExpenseForm;