UNPKG

@stanfordspezi/spezi-web-design-system

Version:

Stanford Biodesign Digital Health Spezi Web Design System

2 lines (1 loc) 1.3 kB
"use strict";const e=require("react/jsx-runtime"),g=require("react"),n=require("./Button-CoJ-cT_W.js"),s=require("./Dialog-BHzDip85.js"),v=require("./circle-alert-CxAIJpxf.js"),j=({status:i="idle",proceed:r,reset:o,enableBeforeUnload:c=!1,shouldBlock:d=!1,title:u="Leave this page?",description:a="You have unsaved changes that will be lost.",stayLabel:m="Stay",leaveLabel:h="Leave anyway",...x})=>{const t=c&&d;return g.useEffect(()=>{if(!t)return;const l=f=>{f.preventDefault()};return window.addEventListener("beforeunload",l),()=>window.removeEventListener("beforeunload",l)},[t]),e.jsx(s.Dialog,{open:i==="blocked",...x,children:e.jsxs(s.DialogContent,{size:"sm",children:[e.jsxs(s.DialogHeader,{className:"items-center sm:items-start",children:[e.jsx("div",{className:"mb-4 size-8 rounded-lg border shadow-xs",children:e.jsx("div",{className:"flex-center size-full",children:e.jsx(v.default,{className:"text-muted-foreground size-4"})})}),e.jsx(s.DialogTitle,{children:u}),a&&e.jsx(s.DialogDescription,{children:a})]}),e.jsxs(s.DialogFooter,{className:"gap-4 pt-2",children:[e.jsx(n.Button,{onClick:o,variant:"outline",size:"sm",className:"sm:flex-1",children:m}),e.jsx(n.Button,{onClick:r,variant:"default",size:"sm",className:"sm:flex-1",children:h})]})]})})};exports.NavigationBlocker=j;