Home Reference Source

src/components/TimerForm.js

import React from 'react';

/**
 * This component is a Timer when is being edited
 */
export default class TimerForm extends React.Component {

    state = {
        titleError: false,
        projectError: false
    };

    handleSubmit = () => {
        const titleError = !this.refs.title.value.trim().length;
        const projectError = !this.refs.project.value.trim().length;
        this.setState({
            titleError,
            projectError
        });
        if (!titleError && !projectError) {
            this.props.onFormSubmit({
                id: this.props.id,
                title: this.refs.title.value,
                project: this.refs.project.value
            });
        }
    };

    /**
     * Render
     * @returns {XML}
     */
    render() {
        const submitText = this.props.id ? 'Update' : 'Create';
        const titleClass = this.state.titleError ? 'field error' : 'field';
        const projectClass = this.state.projectError ? 'field error' : 'field';
        return (
            <div className='ui centered card'>
                <div className='content'>
                    <div className='ui form'>
                        <div className={titleClass}>
                            <label>Title</label>
                            <input type='text' ref="title" defaultValue={this.props.title}/></div>
                        <div className={projectClass}>
                            <label>Project</label>
                            <input type='text' ref="project" defaultValue={this.props.project}/></div>
                        <div className='ui two bottom attached buttons'>
                            <button
                                className='ui basic blue button'
                                onClick={this.handleSubmit}
                            >
                                {submitText}
                            </button>
                            <button
                                className='ui basic red button'
                                onClick={this.props.onFormClose}
                            >
                                Cancel
                            </button>
                        </div>
                    </div>
                </div>
            </div> );
    }
}