UNPKG

@websolutespa/payload-plugin-bowl

Version:

Bowl PayloadCms plugin of the BOM Repository

83 lines (82 loc) 2.67 kB
'use client'; import { jsx as _jsx } from "react/jsx-runtime"; import { ConfirmationModal, Modal, useAuth, useModal, useTranslation } from '@payloadcms/ui'; import React, { useCallback } from 'react'; import { usePreventLeave } from './usePreventLeave'; // import './LeaveWithoutSaving.scss'; export const modalSlug = 'leave-without-saving'; export const LeaveWithoutSavingModal = (props)=>{ const { onConfirm, onCancel } = props; const { t } = useTranslation(); return /*#__PURE__*/ _jsx(ConfirmationModal, { body: t('general:changesNotSaved'), cancelLabel: t('general:stayOnThisPage'), confirmLabel: t('general:leaveAnyway'), heading: t('general:leaveWithoutSaving'), modalSlug: modalSlug, onCancel: onCancel, onConfirm: onConfirm }); }; export const LeaveModal = (props)=>{ const { visible } = props; const { openModal, isModalOpen, closeModal } = useModal(); const onConfirm = ()=>{ closeModal(modalSlug); }; const onCancel = ()=>{ closeModal(modalSlug); }; return /*#__PURE__*/ _jsx(Modal, { slug: modalSlug, className: `${modalSlug}__modal`, children: visible && /*#__PURE__*/ _jsx(LeaveWithoutSavingModal, { onConfirm: onConfirm, onCancel: onCancel }) }); }; const LeaveWithoutSaving = (props)=>{ const { modified } = props; const { closeModal, openModal } = useModal(); const { user } = useAuth(); const [hasAccepted, setHasAccepted] = React.useState(false); const { t } = useTranslation(); // const { isValid } = useForm(); const prevent = Boolean(modified && user); // Boolean((modified || !isValid) && user); const onPrevent = useCallback(()=>{ openModal(modalSlug); }, [ openModal ]); const handleAccept = useCallback(()=>{ closeModal(modalSlug); }, [ closeModal ]); usePreventLeave({ hasAccepted, onAccept: handleAccept, onPrevent, prevent }); const onCancel = useCallback(()=>{ closeModal(modalSlug); }, [ closeModal ]); const onConfirm = useCallback(()=>{ setHasAccepted(true); }, []); return /*#__PURE__*/ _jsx(ConfirmationModal, { body: t('general:changesNotSaved'), cancelLabel: t('general:stayOnThisPage'), confirmLabel: t('general:leaveAnyway'), heading: t('general:leaveWithoutSaving'), modalSlug: modalSlug, onCancel: onCancel, onConfirm: onConfirm }); }; export default LeaveWithoutSaving; //# sourceMappingURL=LeaveWithoutSaving.js.map