Current File : /home/resuelf/www/wp-content/plugins/really-simple-ssl/modal/src/components/Modal/RssslModal.js
/** @jsx wp.element.createElement */
import { Modal, Button } from "@wordpress/components";
import {useEffect, useState} from "@wordpress/element";
import { __ } from "@wordpress/i18n";
import './RssslModal.scss';
import ErrorBoundary from "../../../../settings/src/utils/ErrorBoundary";

const RssslModal = ({
                        title,
                        subTitle,
                        buttons,
                        content,
                        list,
                        confirmAction,
                        confirmText,
                        alternativeAction,
                        alternativeText,
                        alternativeClassName,
                        isOpen,
                        setOpen,
                        className,
                        footer,
                    }) => {
    const [Icon, setIcon] = useState(null);
    let pluginUrl = typeof rsssl_modal !== 'undefined' ? rsssl_modal.plugin_url : rsssl_settings.plugin_url;
    alternativeClassName = alternativeClassName ? alternativeClassName : 'rsssl-warning';
    useEffect( () => {
        if (!Icon) {
            import ("../../../../settings/src/utils/Icon").then(({default: Icon}) => {
                setIcon(() => Icon);
            });
        }


    }, []);
    let modalCustomClass = className ? ' '+className : ""
    return (
        <>
            {isOpen && (
                <>
                    <ErrorBoundary fallback={"Error loading modal"}>
                        <Modal
                        className={"rsssl-modal"+modalCustomClass}
                        shouldCloseOnClickOutside={false}
                        shouldCloseOnEsc={false}
                        title={title}
                        onRequestClose={() => setOpen(false)}
                        open={isOpen}>
                        <div className="rsssl-modal-body">
                            {subTitle && <p>{subTitle}</p>}
                            {content && <>{content}</>}
                            {list && Icon && <ul>
                                {list.map((item, index) => <li key={index}><Icon name={item.icon} color={item.color}/>{item.text}</li>)}
                            </ul>}
                        </div>
                        <div className="rsssl-modal-footer">
                            {!footer && <div className="rsssl-modal-footer-image">
                                <img className="rsssl-logo" src={pluginUrl+"assets/img/really-simple-ssl-logo.svg"} alt="Really Simple SSL" />
                            </div>}
                            { footer && <div className="rsssl-modal-footer-feedback">
                                {footer}
                            </div>}
                            <div className="rsssl-modal-footer-buttons">
                                <Button onClick={() => setOpen(false)}>{__("Cancel", "really-simple-ssl")}</Button>
                                { buttons && <>{buttons}</>}
                                { !buttons && <>
                                        {alternativeText && <Button className={alternativeClassName} onClick={() => alternativeAction()}>{alternativeText}</Button>}
                                        {confirmText && <Button isPrimary onClick={()=> confirmAction() }>{confirmText}</Button>}
                                    </>
                                }
                            </div>

                        </div>
                    </Modal>
                    </ErrorBoundary>
                </>


        )}
        </>
    );
}

export default RssslModal;