diff --git a/packages/builder/src/components/design/settings/controls/ButtonActionEditor/actions/CloseScreenModal.svelte b/packages/builder/src/components/design/settings/controls/ButtonActionEditor/actions/CloseScreenModal.svelte index 873c9ccf65..5f3b3ef639 100644 --- a/packages/builder/src/components/design/settings/controls/ButtonActionEditor/actions/CloseScreenModal.svelte +++ b/packages/builder/src/components/design/settings/controls/ButtonActionEditor/actions/CloseScreenModal.svelte @@ -1,16 +1,31 @@ +Navigate To screen, or leave blank. +
- This action doesn't require any additional settings. - - This action won't do anything if there isn't a screen modal open. - + + (parameters.url = value.detail)} + {bindings} + />
diff --git a/packages/client/src/components/overlay/PeekScreenDisplay.svelte b/packages/client/src/components/overlay/PeekScreenDisplay.svelte index d6da9ca3f0..b9f4914624 100644 --- a/packages/client/src/components/overlay/PeekScreenDisplay.svelte +++ b/packages/client/src/components/overlay/PeekScreenDisplay.svelte @@ -45,6 +45,9 @@ }, [MessageTypes.CLOSE_SCREEN_MODAL]: () => { peekStore.actions.hidePeek() + if (message.data?.url) { + routeStore.actions.navigate(message.data.url) + } }, [MessageTypes.INVALIDATE_DATASOURCE]: () => { proxyInvalidation(message.data) diff --git a/packages/client/src/utils/buttonActions.js b/packages/client/src/utils/buttonActions.js index a534ee8326..e44ed2451c 100644 --- a/packages/client/src/utils/buttonActions.js +++ b/packages/client/src/utils/buttonActions.js @@ -224,10 +224,11 @@ const changeFormStepHandler = async (action, context) => { ) } -const closeScreenModalHandler = () => { +const closeScreenModalHandler = action => { + let { url } = action.parameters // 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" }) + window.parent.postMessage({ type: "close-screen-modal", url }) } const updateStateHandler = action => {