Home Reference Source

src/components/ToggleableTimerForm.js

import React from 'react';
import TimerForm from './TimerForm';

/**
 * This component shows a timer or a form to edit the timer, based on his internal state
 */
export default class ToggleableTimerForm extends React.Component {

    state = {
        isOpen: false
    };

    handleFormOpen = () => {
        this.setState({
            isOpen: true
        });
    };

    handleFormClose = () => {
        this.setState({ isOpen: false });
    };

    handleFormSubmit = (timer) => {
        this.props.onFormSubmit(timer);
        this.setState({ isOpen: false });
    };

    /**
     * Render
     * @returns {XML}
     */
    render() {
        if (this.state.isOpen) {
            return (
                <TimerForm
                    onFormSubmit={this.handleFormSubmit}
                    onFormClose={this.handleFormClose}
                />
            );
        } else {
            return (
                <div className='ui basic content center aligned segment'>
                    <button
                        className='ui basic button icon'
                        onClick={this.handleFormOpen}
                    >
                        <i className='plus icon'></i>
                    </button>
                </div> );
        }
    }
}