UNPKG

@flexis/ui

Version:

Styleless React Components

86 lines 5.75 kB
import { __decorate } from "tslib"; import React, { PureComponent } from 'react'; import { Bind } from '../../helpers'; import Modal from '../Modal'; import { style, classes } from './ConfirmModal.st.css'; let ConfirmModal = /** @class */ (() => { class ConfirmModal extends PureComponent { constructor() { super(...arguments); this.state = { active: false }; this.resolver = null; this.promise = null; } render() { const { className, children, ...props } = this.props; const { active } = this.state; return (<Modal {...props} className={style(classes.root, className)} onClose={this.onClose} active={active}> <form className={classes.form} onSubmit={this.onSubmit} onClick={this.onClick}> {children} </form> </Modal>); } async onSubmit(event) { event.preventDefault(); event.stopPropagation(); await this.setActiveState(false); this.resolve(true); } onClick({ target }) { if (target.type === 'reset') { this.hide(); } } onClose() { this.hide(); } resolve(state) { const { resolver } = this; if (typeof resolver === 'function') { resolver(state); this.resolver = null; this.promise = null; } } setActiveState(active) { return new Promise((resolve) => { this.setState(() => ({ active }), resolve); }); } show() { if (!this.promise) { this.promise = new Promise((resolve) => { this.resolver = resolve; this.setActiveState(true); }); } return this.promise; } async hide() { await this.setActiveState(false); this.resolve(false); } } ConfirmModal.propTypes = { ...Modal.propTypes }; ConfirmModal.defaultProps = { ...Modal.defaultProps }; __decorate([ Bind() ], ConfirmModal.prototype, "onSubmit", null); __decorate([ Bind() ], ConfirmModal.prototype, "onClick", null); __decorate([ Bind() ], ConfirmModal.prototype, "onClose", null); return ConfirmModal; })(); export default ConfirmModal; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ29uZmlybU1vZGFsLmpzeCIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb21wb25lbnRzL0NvbmZpcm1Nb2RhbC9Db25maXJtTW9kYWwudHN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEtBQUssRUFBRSxFQUdiLGFBQWEsRUFDYixNQUFNLE9BQU8sQ0FBQztBQUNmLE9BQU8sRUFDTixJQUFJLEVBQ0osTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxLQUVOLE1BQU0sVUFBVSxDQUFDO0FBQ2xCLE9BQU8sRUFDTixLQUFLLEVBQ0wsT0FBTyxFQUNQLE1BQU0sdUJBQXVCLENBQUM7QUFRL0I7SUFBQSxNQUFxQixZQUFhLFNBQVEsYUFBNkI7UUFBdkU7O1lBVUMsVUFBSyxHQUFHO2dCQUNQLE1BQU0sRUFBRSxLQUFLO2FBQ2IsQ0FBQztZQUVNLGFBQVEsR0FBNkIsSUFBSSxDQUFDO1lBQzFDLFlBQU8sR0FBcUIsSUFBSSxDQUFDO1FBMkYxQyxDQUFDO1FBekZBLE1BQU07WUFFTCxNQUFNLEVBQ0wsU0FBUyxFQUNULFFBQVEsRUFDUixHQUFHLEtBQUssRUFDUixHQUFHLElBQUksQ0FBQyxLQUFLLENBQUM7WUFDZixNQUFNLEVBQ0wsTUFBTSxFQUNOLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQztZQUVmLE9BQU8sQ0FDTixDQUFDLEtBQUssQ0FDTCxJQUFJLEtBQUssQ0FBQyxDQUNWLFNBQVMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLFNBQVMsQ0FBQyxDQUFDLENBQzFDLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FDdEIsTUFBTSxDQUFDLENBQUMsTUFBTSxDQUFDLENBRWY7SUFBQSxDQUFDLElBQUksQ0FDSixTQUFTLENBQUMsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQ3hCLFFBQVEsQ0FBQyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FDeEIsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUV0QjtLQUFBLENBQUMsUUFBUSxDQUNWO0lBQUEsRUFBRSxJQUFJLENBQ1A7R0FBQSxFQUFFLEtBQUssQ0FBQyxDQUNSLENBQUM7UUFDSCxDQUFDO1FBR08sS0FBSyxDQUFDLFFBQVEsQ0FBQyxLQUFnQjtZQUN0QyxLQUFLLENBQUMsY0FBYyxFQUFFLENBQUM7WUFDdkIsS0FBSyxDQUFDLGVBQWUsRUFBRSxDQUFDO1lBQ3hCLE1BQU0sSUFBSSxDQUFDLGNBQWMsQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUNqQyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3BCLENBQUM7UUFHTyxPQUFPLENBQ2QsRUFBRSxNQUFNLEVBQStEO1lBR3ZFLElBQUksTUFBTSxDQUFDLElBQUksS0FBSyxPQUFPLEVBQUU7Z0JBQzVCLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQzthQUNaO1FBQ0YsQ0FBQztRQUdPLE9BQU87WUFDZCxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDYixDQUFDO1FBRUQsT0FBTyxDQUFDLEtBQWM7WUFFckIsTUFBTSxFQUNMLFFBQVEsRUFDUixHQUFHLElBQUksQ0FBQztZQUVULElBQUksT0FBTyxRQUFRLEtBQUssVUFBVSxFQUFFO2dCQUNuQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUM7Z0JBQ2hCLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDO2dCQUNyQixJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQzthQUNwQjtRQUNGLENBQUM7UUFFRCxjQUFjLENBQUMsTUFBZTtZQUM3QixPQUFPLElBQUksT0FBTyxDQUFDLENBQUMsT0FBTyxFQUFFLEVBQUU7Z0JBQzlCLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQztvQkFDcEIsTUFBTTtpQkFDTixDQUFDLEVBQUUsT0FBTyxDQUFDLENBQUM7WUFDZCxDQUFDLENBQUMsQ0FBQztRQUNKLENBQUM7UUFFRCxJQUFJO1lBRUgsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUU7Z0JBQ2xCLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxPQUFPLENBQVUsQ0FBQyxPQUFPLEVBQUUsRUFBRTtvQkFDL0MsSUFBSSxDQUFDLFFBQVEsR0FBRyxPQUFPLENBQUM7b0JBQ3hCLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLENBQUM7Z0JBQzNCLENBQUMsQ0FBQyxDQUFDO2FBQ0g7WUFFRCxPQUFPLElBQUksQ0FBQyxPQUFPLENBQUM7UUFDckIsQ0FBQztRQUVELEtBQUssQ0FBQyxJQUFJO1lBQ1QsTUFBTSxJQUFJLENBQUMsY0FBYyxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ2pDLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDckIsQ0FBQzs7SUF2R00sc0JBQVMsR0FBRztRQUNsQixHQUFHLEtBQUssQ0FBQyxTQUFTO0tBQ2xCLENBQUM7SUFFSyx5QkFBWSxHQUFHO1FBQ3JCLEdBQUcsS0FBSyxDQUFDLFlBQVk7S0FDckIsQ0FBQztJQXVDRjtRQURDLElBQUksRUFBRTtnREFNTjtJQUdEO1FBREMsSUFBSSxFQUFFOytDQVFOO0lBR0Q7UUFEQyxJQUFJLEVBQUU7K0NBR047SUF1Q0YsbUJBQUM7S0FBQTtlQTFHb0IsWUFBWSJ9