import { css, cx } from "emotion"; import * as React from "react"; import * as Modal from "react-modal"; import { ButtonAtom, IconAtom, TextAtom } from "../../atoms"; // @ts-ignore import COLORS from "../../constants/colors"; // Make sure to bind modal to your appElement (http://reactcommunity.org/react-modal/accessibility/) // try { // Modal.setAppElement('#root'); // } catch (e) { // try { // Modal.setAppElement('#___gatsby'); // } catch (e) {} // } class AppModalDialog extends React.Component { public state = {}; public afterOpenModal: any; public closeModal = () => { this.props.closeConfirmable(); } public render() { return (
{this.props.title} {this.props.message}
Ya Batal
); } } interface IProps { children: any; } class Confirmable extends React.Component { constructor(props: any) { super(props); this.state = { isVisible: false, title: props.titleMessage ? props.titleMessage : "Apa kamu Yakin?" || null, message: props.confirmationMessage || null, confirmableAction: props.confirmableAction || null, confirmableResponse: null, }; } public setConfirmation = (confirmationMessage: string, titleMessage: string, confirmableAction: any) => { this.setState({ isVisible: true, title: titleMessage, message: confirmationMessage, confirmableAction, confirmableResponse: { isIdle: true, isConfirmed: false, }, }); } public showConfirmation = () => { this.setState({ isVisible: true, confirmableResponse: { isIdle: true, isConfirmed: false, }, }); } public cancel = () => { this.setState({ isVisible: false, confirmableResponse: { isIdle: true, isConfirmed: false, }, }); } public confirm = () => { if (this.state.confirmableAction) { this.state.confirmableAction(); } this.setState({ isVisible: false, confirmableResponse: { isIdle: false, isConfirmed: true, }, }); } public closeConfirmable = () => { this.setState({ isVisible: false }); } public render() { return [ ,
{this.props.children({ confirm: this.setConfirmation, confirmableResponse: this.state.confirmableResponse, // will be deprecated showConfirmation: this.showConfirmation, })}
, ]; } } export { Confirmable };