@websolutespa/payload-plugin-bowl
Version:
Bowl PayloadCms plugin of the BOM Repository
83 lines (82 loc) • 2.67 kB
JavaScript
'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