From 8e521fcd52bccc44bda78dffdbcfd2765f8a445b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=A9rgio=20Salgado?= Date: Fri, 8 Jan 2021 14:08:53 +0000 Subject: [PATCH] feat: open prompt on window or tab close --- .../src/components/PromptWhenDirty.js | 20 +++++++++++++++---- 1 file changed, 16 insertions(+), 4 deletions(-) diff --git a/new-lamassu-admin/src/components/PromptWhenDirty.js b/new-lamassu-admin/src/components/PromptWhenDirty.js index 075bd15c..b7c4835a 100644 --- a/new-lamassu-admin/src/components/PromptWhenDirty.js +++ b/new-lamassu-admin/src/components/PromptWhenDirty.js @@ -1,5 +1,5 @@ import { useFormikContext } from 'formik' -import React from 'react' +import React, { useEffect } from 'react' import { Prompt } from 'react-router-dom' const PROMPT_DEFAULT_MESSAGE = @@ -8,9 +8,21 @@ const PROMPT_DEFAULT_MESSAGE = const PromptWhenDirty = ({ message = PROMPT_DEFAULT_MESSAGE }) => { const formik = useFormikContext() - return ( - - ) + const hasChanges = formik.dirty && formik.submitCount === 0 + + useEffect(() => { + if (hasChanges) { + window.onbeforeunload = confirmExit + } else { + window.onbeforeunload = undefined + } + }, [hasChanges]) + + const confirmExit = () => { + return PROMPT_DEFAULT_MESSAGE + } + + return } export default PromptWhenDirty