diff --git a/src/sileo.tsx b/src/sileo.tsx index 0a7336f..9b0977a 100644 --- a/src/sileo.tsx +++ b/src/sileo.tsx @@ -65,6 +65,7 @@ interface SileoProps { canExpand?: boolean; interruptKey?: string; refreshKey?: string; + closeButton?: boolean; onMouseEnter?: MouseEventHandler; onMouseLeave?: MouseEventHandler; onDismiss?: () => void; @@ -133,6 +134,7 @@ export const Sileo = memo(function Sileo({ canExpand, interruptKey, refreshKey, + closeButton = false, onMouseEnter, onMouseLeave, onDismiss, @@ -652,6 +654,29 @@ export const Sileo = memo(function Sileo({ + {closeButton && onDismiss && ( +
{ + e.preventDefault(); + e.stopPropagation(); + onDismiss(); + }} + onKeyDown={(e) => { + if (e.key === 'Enter' || e.key === ' ') { + e.preventDefault(); + e.stopPropagation(); + onDismiss(); + } + }} + > + +
+ )} + {hasDesc && (
; + closeButton?: boolean; } /* ------------------------------ Global State ------------------------------ */ @@ -218,6 +219,7 @@ export function Toaster({ position = "top-right", offset, options, + closeButton = false, }: SileoToasterProps) { const [toasts, setToasts] = useState(store.toasts); const [activeId, setActiveId] = useState(); @@ -423,6 +425,7 @@ export function Toaster({ onMouseEnter={h.enter} onMouseLeave={h.leave} onDismiss={h.dismiss} + closeButton={closeButton} /> ); })}