diff --git a/src/sileo.tsx b/src/sileo.tsx index 0a7336f..73d3c21 100644 --- a/src/sileo.tsx +++ b/src/sileo.tsx @@ -68,6 +68,7 @@ interface SileoProps { onMouseEnter?: MouseEventHandler; onMouseLeave?: MouseEventHandler; onDismiss?: () => void; + dismiss?: boolean; } /* ---------------------------------- Icons --------------------------------- */ @@ -136,6 +137,7 @@ export const Sileo = memo(function Sileo({ onMouseEnter, onMouseLeave, onDismiss, + dismiss, }: SileoProps) { const next: View = useMemo( () => ({ title, description, state, icon, styles, button, fill }), @@ -542,6 +544,12 @@ export const Sileo = memo(function Sileo({ if (exiting || !onDismiss) return; const target = e.target as HTMLElement; if (target.closest("[data-sileo-button]")) return; + + if (dismiss) { + onDismiss(); + return; + } + pointerStartRef.current = e.clientY; e.currentTarget.setPointerCapture(e.pointerId); const el = buttonRef.current; @@ -551,7 +559,7 @@ export const Sileo = memo(function Sileo({ el.addEventListener("pointerup", h.onUp, { passive: true }); } }, - [exiting, onDismiss], + [exiting, onDismiss, dismiss], ); /* --------------------------------- Render --------------------------------- */ diff --git a/src/toast.tsx b/src/toast.tsx index 9256a98..e9b61fb 100644 --- a/src/toast.tsx +++ b/src/toast.tsx @@ -423,6 +423,7 @@ export function Toaster({ onMouseEnter={h.enter} onMouseLeave={h.leave} onDismiss={h.dismiss} + dismiss={item.dismiss} /> ); })} diff --git a/src/types.ts b/src/types.ts index 0e51f43..4092969 100644 --- a/src/types.ts +++ b/src/types.ts @@ -42,4 +42,5 @@ export interface SileoOptions { roundness?: number; autopilot?: boolean | { expand?: number; collapse?: number }; button?: SileoButton; + dismiss?: boolean; }