diff --git a/src/server/plugins/engine/routes/index.ts b/src/server/plugins/engine/routes/index.ts index e4e765706..9cb681c2c 100644 --- a/src/server/plugins/engine/routes/index.ts +++ b/src/server/plugins/engine/routes/index.ts @@ -150,13 +150,23 @@ async function importExternalComponentState( : { [componentName]: stateAppendage } // Save the external component state immediately - const updatedState = await page.mergeState(request, state, componentState) - - // Merge the stashed payload into the local state + const pageState = page.getStateFromValidForm( + request, + state, + componentState as FormPayload + ) + const savedState = await page.mergeState(request, state, pageState) + + // Merge any stashed payload into the local state const payload = request.yar.flash(EXTERNAL_STATE_PAYLOAD) const stashedPayload = Array.isArray(payload) ? {} : (payload as FormPayload) - return { ...stashedPayload, ...updatedState } + const localState = page.getStateFromValidForm(request, savedState, { + ...stashedPayload, + ...componentState + } as FormPayload) + + return { ...savedState, ...localState } } export function makeLoadFormPreHandler(server: Server, options: PluginOptions) { diff --git a/src/server/plugins/engine/views/components/ukaddressfield.html b/src/server/plugins/engine/views/components/ukaddressfield.html index e2aabbe7e..aef9cddbf 100644 --- a/src/server/plugins/engine/views/components/ukaddressfield.html +++ b/src/server/plugins/engine/views/components/ukaddressfield.html @@ -63,6 +63,10 @@ }) }}

or

+ {# Include a line break if this is the last component #} + {% if components[components.length - 1] == component %} +
+ {% endif %} {% endif %} {% endif %}