@flexis/ui
Version:
Styleless React Components
86 lines • 5.75 kB
JavaScript
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