| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273 | import React, { Component } from 'react';
import { hideDialog } from '../actions';
import { DIALOG_PROP_TYPES } from '../constants';
/**
 * Abstract dialog to display dialogs.
 */
export default class AbstractDialog extends Component {
    /**
     * Abstract Dialog component's property types.
     *
     * @static
     */
    static propTypes = {
        ...DIALOG_PROP_TYPES,
        /**
         * Used to show/hide the dialog on cancel.
         */
        dispatch: React.PropTypes.func
    };
    /**
     * Initializes a new Dialog instance.
     *
     * @param {Object} props - The read-only properties with which the new
     * instance is to be initialized.
     */
    constructor(props) {
        super(props);
        this._onCancel = this._onCancel.bind(this);
        this._onSubmit = this._onSubmit.bind(this);
    }
    /**
     * Dispatches action to hide the dialog.
     *
     * @returns {void}
     */
    _onCancel() {
        let hide = true;
        if (this.props.onCancel) {
            hide = this.props.onCancel();
        }
        if (hide) {
            this.props.dispatch(hideDialog());
        }
    }
    /**
     * Dispatches the action when submitting the dialog.
     *
     * @private
     * @param {string} value - The submitted value if any.
     * @returns {void}
     */
    _onSubmit(value) {
        let hide = true;
        if (this.props.onSubmit) {
            hide = this.props.onSubmit(value);
        }
        if (hide) {
            this.props.dispatch(hideDialog());
        }
    }
}
 |