UNPKG

@omit/react-confirm-dialog

Version:
2 lines 9.01 kB
"use strict";var Y=Object.create;var v=Object.defineProperty;var Z=Object.getOwnPropertyDescriptor;var $=Object.getOwnPropertyNames;var ee=Object.getPrototypeOf,te=Object.prototype.hasOwnProperty;var oe=(e,t)=>{for(var o in t)v(e,o,{get:t[o],enumerable:!0})},h=(e,t,o,i)=>{if(t&&typeof t=="object"||typeof t=="function")for(let s of $(t))!te.call(e,s)&&s!==o&&v(e,s,{get:()=>t[s],enumerable:!(i=Z(t,s))||i.enumerable});return e};var ie=(e,t,o)=>(o=e!=null?Y(ee(e)):{},h(t||!e||!e.__esModule?v(o,"default",{value:e,enumerable:!0}):o,e)),ae=e=>h(v({},"__esModule",{value:!0}),e);var de={};oe(de,{ConfirmContext:()=>b,ConfirmDialogProvider:()=>le,useConfirm:()=>se});module.exports=ae(de);var r=require("react");var l=ie(require("@radix-ui/react-alert-dialog"));var P=require("clsx"),y=require("tailwind-merge");function c(...e){return(0,y.twMerge)((0,P.clsx)(e))}var O=require("class-variance-authority"),R=require("@radix-ui/react-slot");var z=require("react/jsx-runtime"),ne=(0,O.cva)("focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive dark:aria-invalid:border-destructive/50 rounded-lg border border-transparent bg-clip-padding text-sm font-medium focus-visible:ring-3 aria-invalid:ring-3 [&_svg:not([class*='size-'])]:size-4 inline-flex items-center justify-center whitespace-nowrap transition-all disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none shrink-0 [&_svg]:shrink-0 outline-none group/button select-none",{variants:{variant:{default:"bg-primary text-primary-foreground [a]:hover:bg-primary/80",outline:"border-border bg-background hover:bg-muted hover:text-foreground dark:bg-input/30 dark:border-input dark:hover:bg-input/50 aria-expanded:bg-muted aria-expanded:text-foreground",secondary:"bg-secondary text-secondary-foreground hover:bg-secondary/80 aria-expanded:bg-secondary aria-expanded:text-secondary-foreground",ghost:"hover:bg-muted hover:text-foreground dark:hover:bg-muted/50 aria-expanded:bg-muted aria-expanded:text-foreground",destructive:"bg-destructive/10 hover:bg-destructive/20 focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40 dark:bg-destructive/20 text-destructive focus-visible:border-destructive/40 dark:hover:bg-destructive/30",link:"text-primary underline-offset-4 hover:underline"},size:{default:"h-8 gap-1.5 px-2.5 has-data-[icon=inline-end]:pr-2 has-data-[icon=inline-start]:pl-2",xs:"h-6 gap-1 rounded-[min(var(--radius-md),10px)] px-2 text-xs in-data-[slot=button-group]:rounded-lg has-data-[icon=inline-end]:pr-1.5 has-data-[icon=inline-start]:pl-1.5 [&_svg:not([class*='size-'])]:size-3",sm:"h-7 gap-1 rounded-[min(var(--radius-md),12px)] px-2.5 text-[0.8rem] in-data-[slot=button-group]:rounded-lg has-data-[icon=inline-end]:pr-1.5 has-data-[icon=inline-start]:pl-1.5 [&_svg:not([class*='size-'])]:size-3.5",lg:"h-9 gap-1.5 px-2.5 has-data-[icon=inline-end]:pr-3 has-data-[icon=inline-start]:pl-3",icon:"size-8","icon-xs":"size-6 rounded-[min(var(--radius-md),10px)] in-data-[slot=button-group]:rounded-lg [&_svg:not([class*='size-'])]:size-3","icon-sm":"size-7 rounded-[min(var(--radius-md),12px)] in-data-[slot=button-group]:rounded-lg","icon-lg":"size-9"}},defaultVariants:{variant:"default",size:"default"}});function A({className:e,variant:t="default",size:o="default",asChild:i=!1,...s}){return(0,z.jsx)(i?R.Slot:"button",{"data-slot":"button","data-variant":t,"data-size":o,className:c(ne({variant:t,size:o,className:e})),...s})}var d=require("react/jsx-runtime");function k({...e}){return(0,d.jsx)(l.Root,{"data-slot":"alert-dialog",...e})}function N({...e}){return(0,d.jsx)(l.Portal,{"data-slot":"alert-dialog-portal",...e})}function T({className:e,...t}){return(0,d.jsx)(l.Overlay,{"data-slot":"alert-dialog-overlay",className:c("data-[state=open]:animate-fade-in data-[state=closed]:animate-fade-out bg-black/10 supports-backdrop-filter:backdrop-blur-xs fixed inset-0 z-50",e),...t})}function w({className:e,size:t="default",...o}){return(0,d.jsx)(l.Content,{"data-slot":"alert-dialog-content","data-size":t,className:c("data-[state=open]:animate-scale-in data-[state=closed]:animate-scale-out bg-background ring-foreground/10 gap-4 rounded-xl p-4 ring-1 data-[size=default]:max-w-xs data-[size=sm]:max-w-xs data-[size=default]:sm:max-w-sm group/alert-dialog-content fixed top-1/2 left-1/2 z-50 grid w-full -translate-x-1/2 -translate-y-1/2 outline-none",e),...o})}function F({className:e,...t}){return(0,d.jsx)("div",{"data-slot":"alert-dialog-header",className:c("grid grid-rows-[auto_1fr] place-items-center gap-1.5 text-center has-data-[slot=alert-dialog-media]:grid-rows-[auto_auto_1fr] has-data-[slot=alert-dialog-media]:gap-x-4 sm:group-data-[size=default]/alert-dialog-content:place-items-start sm:group-data-[size=default]/alert-dialog-content:text-left sm:group-data-[size=default]/alert-dialog-content:has-data-[slot=alert-dialog-media]:grid-rows-[auto_1fr]",e),...t})}function B({className:e,...t}){return(0,d.jsx)("div",{"data-slot":"alert-dialog-footer",className:c("bg-muted/50 -mx-4 -mb-4 rounded-b-xl border-t p-4 flex flex-col-reverse gap-2 group-data-[size=sm]/alert-dialog-content:grid group-data-[size=sm]/alert-dialog-content:grid-cols-2 sm:flex-row sm:justify-end",e),...t})}function V({className:e,...t}){return(0,d.jsx)("div",{"data-slot":"alert-dialog-media",className:c("bg-muted mb-2 inline-flex size-10 items-center justify-center rounded-md sm:group-data-[size=default]/alert-dialog-content:row-span-2 *:[svg:not([class*='size-'])]:size-6",e),...t})}function W({className:e,...t}){return(0,d.jsx)(l.Title,{"data-slot":"alert-dialog-title",className:c("text-base font-medium sm:group-data-[size=default]/alert-dialog-content:group-has-data-[slot=alert-dialog-media]/alert-dialog-content:col-start-2",e),...t})}function _({className:e,...t}){return(0,d.jsx)(l.Description,{"data-slot":"alert-dialog-description",className:c("text-muted-foreground *:[a]:hover:text-foreground text-sm text-balance md:text-pretty *:[a]:underline *:[a]:underline-offset-3",e),...t})}function M({className:e,variant:t="default",size:o="default",...i}){return(0,d.jsx)(A,{variant:t,size:o,asChild:!0,children:(0,d.jsx)(l.Action,{"data-slot":"alert-dialog-action",className:c(e),...i})})}function S({className:e,variant:t="outline",size:o="default",...i}){return(0,d.jsx)(A,{variant:t,size:o,asChild:!0,children:(0,d.jsx)(l.Cancel,{"data-slot":"alert-dialog-cancel",className:c(e),...i})})}var a=require("react/jsx-runtime"),b=(0,r.createContext)(void 0),H={title:"",description:"",confirmText:"Confirm",cancelText:"Cancel",confirmButton:{},cancelButton:{},alertDialogContent:{},alertDialogHeader:{},alertDialogTitle:{},alertDialogMedia:{},alertDialogDescription:{},alertDialogFooter:{}};function re(e){return e.length===2}var L=(0,r.memo)(({config:e,onConfirm:t,onCancel:o,setConfig:i})=>{let{title:s,description:g,cancelButton:u,confirmButton:D,confirmText:m,cancelText:x,icon:C,media:n,contentSlot:p,customActions:f,alertDialogOverlay:U,alertDialogContent:j,alertDialogHeader:q,alertDialogTitle:G,alertDialogMedia:I,alertDialogDescription:J,alertDialogFooter:K}=e,Q=()=>f?re(f)?f(t,o):f({confirm:t,cancel:o,config:e,setConfig:i}):(0,a.jsxs)(a.Fragment,{children:[u!==null&&(0,a.jsx)(S,{onClick:o,...u,children:x}),(0,a.jsx)(M,{onClick:t,...D,children:m})]}),X=()=>!s&&!C?null:(0,a.jsxs)(W,{...G,children:[C,s]});return(0,a.jsxs)(N,{children:[(0,a.jsx)(T,{...U}),(0,a.jsxs)(w,{...j,children:[(0,a.jsxs)(F,{...q,children:[n&&(0,a.jsx)(V,{...I,children:n}),X(),g&&(0,a.jsx)(_,{...J,children:g}),p]}),(0,a.jsx)(B,{...K,children:Q()})]})]})});L.displayName="ConfirmDialogContent";var E=(0,r.memo)(({isOpen:e,onOpenChange:t,config:o,onConfirm:i,onCancel:s,setConfig:g})=>(0,a.jsx)(k,{open:e,onOpenChange:t,children:(0,a.jsx)(L,{config:o,onConfirm:i,onCancel:s,setConfig:g})}));E.displayName="ConfirmDialog";var le=({defaultOptions:e={},children:t})=>{let[o,i]=(0,r.useState)({isOpen:!1,config:H,resolver:null}),s=(0,r.useMemo)(()=>({...H,...e}),[e]),g=(0,r.useCallback)(n=>{i(p=>({...p,config:typeof n=="function"?n(p.config):{...p.config,...n}}))},[]),u=(0,r.useCallback)(n=>(i(p=>({isOpen:!0,config:{...s,...n},resolver:p.resolver})),new Promise(p=>{i(f=>({...f,resolver:p}))})),[s]),D=(0,r.useCallback)(()=>{i(n=>(n.resolver&&n.resolver(!0),{...n,isOpen:!1,resolver:null}))},[]),m=(0,r.useCallback)(()=>{i(n=>(n.resolver&&n.resolver(!1),{...n,isOpen:!1,resolver:null}))},[]),x=(0,r.useCallback)(n=>{n||m()},[m]),C=(0,r.useMemo)(()=>({confirm:u,updateConfig:g}),[u,g]);return(0,a.jsxs)(b.Provider,{value:C,children:[t,(0,a.jsx)(E,{isOpen:o.isOpen,onOpenChange:x,config:o.config,onConfirm:D,onCancel:m,setConfig:g})]})},se=()=>{let e=(0,r.useContext)(b);if(!e)throw new Error("useConfirm must be used within a ConfirmDialogProvider");let{confirm:t,updateConfig:o}=e,i=t;return i.updateConfig=o,i};0&&(module.exports={ConfirmContext,ConfirmDialogProvider,useConfirm}); //# sourceMappingURL=index.js.map