Skip to content

Commit 38c315a

Browse files
committed
feat: Add browser back button support for image viewer
- Push history state when image viewer opens - Listen to popstate event to detect back button press - Automatically close viewer when back button is pressed - Clean up event listener on unmount
1 parent c61658b commit 38c315a

1 file changed

Lines changed: 21 additions & 0 deletions

File tree

src/components/ImageViewer.tsx

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -111,6 +111,27 @@ export function ImageViewer({
111111
[currentImage],
112112
)
113113

114+
// Handle browser back button to close viewer
115+
useEffect(() => {
116+
if (!open) return
117+
118+
// Push state when viewer opens
119+
const state = {viewer: true, index: currentIndex}
120+
window.history.pushState(state, '', window.location.href)
121+
122+
// Handle popstate (back button)
123+
const handlePopState = () => {
124+
// Close the viewer when back button is pressed
125+
onOpenChange(false)
126+
}
127+
128+
window.addEventListener('popstate', handlePopState)
129+
130+
return () => {
131+
window.removeEventListener('popstate', handlePopState)
132+
}
133+
}, [open, currentIndex, onOpenChange])
134+
114135
const handleOpenAutoFocus = useCallback((e: Event) => {
115136
e.preventDefault()
116137
if (dialogContentRef.current) {

0 commit comments

Comments
 (0)