| 1 |
import { useEffect } from '@wordpress/element'; |
| 2 |
|
| 3 |
export const useWarnOnLeave = (enabled = true, callback) => { |
| 4 |
// Display warning alert if user tries to exit |
| 5 |
useEffect(() => { |
| 6 |
if (!enabled) return; |
| 7 |
const handleUnload = (event) => { |
| 8 |
event.preventDefault(); |
| 9 |
callback?.(); |
| 10 |
event.returnValue = ''; |
| 11 |
return ''; |
| 12 |
}; |
| 13 |
const opts = { capture: true }; |
| 14 |
window.addEventListener('beforeunload', handleUnload, opts); |
| 15 |
return () => { |
| 16 |
window.removeEventListener('beforeunload', handleUnload, opts); |
| 17 |
}; |
| 18 |
}, [enabled]); |
| 19 |
}; |
| 20 |
|