From df5d609298d7686b8a18d34c397bc6cf6fecbd9f Mon Sep 17 00:00:00 2001 From: Mel O'Hagan Date: Wed, 28 Sep 2022 13:50:23 +0100 Subject: [PATCH] Handle navigation on close modal --- packages/client/src/utils/buttonActions.js | 22 +++++++++++++++++++++- 1 file changed, 21 insertions(+), 1 deletion(-) diff --git a/packages/client/src/utils/buttonActions.js b/packages/client/src/utils/buttonActions.js index a534ee8326..74c4504ca6 100644 --- a/packages/client/src/utils/buttonActions.js +++ b/packages/client/src/utils/buttonActions.js @@ -224,7 +224,27 @@ const changeFormStepHandler = async (action, context) => { ) } -const closeScreenModalHandler = () => { +const closeScreenModalHandler = action => { + let { url } = action.parameters + if (url) { + window.parent.addEventListener("message", event => { + const location = event.target.location + //remove any trailing slash + if (url.charAt(url.length - 1) === "/") { + url = url.substring(0, url.length - 1) + } + //need to reload if hash route has not changed + let shouldReload = + `#${url.substring(0, url.lastIndexOf("/"))}` === + location.hash?.substring(0, location.hash.lastIndexOf("/")) + + window.parent.location.href = `${location.origin}${location.pathname}#${url}` + if (shouldReload) { + window.parent.location.reload() + } + }) + } + // Emit this as a window event, so parent screens which are iframing us in // can close the modal window.parent.postMessage({ type: "close-screen-modal" })