fix(forms): close completed drawers and restore portal styling

This commit is contained in:
DeCentN2Madness committed 2026-10-30 14:21:27 -07:00
1 parent e97f0ea9b4
commit 55adb79705
15 files changed
+598 -9

No files matched your search

+15
View File
@@ -96,6 +96,7 @@ const headingId = `${idBase}-heading`;
if (timer) window.clearTimeout(timer);
frame.removeEventListener('load', onLoad);
container.removeEventListener('aia:jotform-activate', activate);
container.removeEventListener('aia:jotform-reset', reset);
window.removeEventListener('pagehide', dispose);
document.removeEventListener('astro:before-swap', dispose);
delete container.dataset.jotformFallbackInitialized;
@@ -118,6 +119,20 @@ const headingId = `${idBase}-heading`;
container.dataset.jotformIframeActivated = 'true';
};
// A completed drawer is renewed only on a later deliberate opening.
// Replacing the frame also invalidates messages from its old WindowProxy.
const reset = () => {
if (container.dataset.jotformDeferred !== 'true' || container.dataset.formContext !== 'consultation') return;
dispose();
const freshFrame = frame.cloneNode(false);
freshFrame.removeAttribute('src');
frame.replaceWith(freshFrame);
delete container.dataset.jotformDocumentLoaded;
delete container.dataset.jotformIframeActivated;
initialize(container);
};
container.addEventListener('aia:jotform-reset', reset);
if (container.dataset.jotformDeferred === 'true') {
container.addEventListener('aia:jotform-activate', activate, { once: true });
} else {
@@ -169,6 +169,9 @@ const consultationTestEnabled = formAIframe.enabled && formAIframe.context === '
{consultationTestEnabled
? <div class="service-inquiry-drawer__iframe">
<p data-service-inquiry-completed hidden role="status" aria-live="polite" aria-atomic="true">
{lang === 'es' ? '¡Gracias! Hemos recibido su mensaje.' : 'Thank you! Your message has been received.'}
</p>
<JotformIframe config={formAIframe} heading={serviceCopy.heading} variant="drawer" deferUntilActivated hideHeading />
</div>
: <div class="service-inquiry-form" role="group" data-aia-form data-form-mode={mode} data-form-mode-reason={config.reason} data-logical-form="service" data-mock-result={mockResult} data-mock-success="Demo only: the local fixture completed without sending anything." data-mock-failed="Demo only: the local fixture simulated a failed submission." data-mock-unavailable="Demo only: the local fixture simulated an unavailable service.">
+33 -2
View File
@@ -36,7 +36,38 @@ const serialized = payload ? JSON.stringify(payload).replaceAll('<', '\\u003c')
[hidden] { display: none; }
.employee-portal__content :global(a) { color: var(--color-primary); text-decoration: underline; }
.employee-portal__content :global(a:focus-visible) { outline: 3px solid var(--color-focus, #115bbd); outline-offset: 3px; }
.employee-portal__content :global(table) { display: block; overflow-x: auto; max-width: 100%; }
.employee-portal__content :global(td), .employee-portal__content :global(th) { padding: .5rem; }
.employee-portal__content { line-height: 1.65; }
.employee-portal__content :global(:is(h1, h2, h3, h4, h5, h6)) {
color: var(--color-primary); font-family: var(--font-heading); line-height: 1.25;
margin-block: 2rem 1rem;
}
.employee-portal__content :global(:is(h1, h2)) { font-size: clamp(1.8rem, 3vw, 2.5rem); }
.employee-portal__content :global(h3) { font-size: clamp(1.4rem, 2vw, 1.8rem); }
.employee-portal__content :global(h4) { font-size: 1.25rem; }
.employee-portal__content :global(p) { margin-block: .75rem 1.25rem; }
.employee-portal__content :global(:is(ul, ol)) { padding-inline-start: 1.5rem; margin-block: 1rem 1.5rem; }
.employee-portal__content :global(li) { margin-block: .5rem; }
.employee-portal__content :global(:is(section, article) + :is(section, article)) { margin-block-start: 2.5rem; }
.employee-portal__content :global(hr) { border: 0; border-top: 1px solid var(--color-border); margin-block: 2rem; }
.employee-portal__content :global(a.portal-resource-button) {
display: inline-block; background: var(--color-accent); border: 2px solid var(--color-accent);
border-radius: var(--radius-sm); color: var(--color-primary); font-family: var(--font-body);
font-size: 1rem; font-weight: 400; line-height: 1.5; padding: .65rem 1.2rem;
margin-block: .35rem; max-width: 100%; text-decoration: none;
}
.employee-portal__content :global(a.portal-resource-button:is(:hover, :focus-visible)) {
background: transparent; border-color: var(--color-accent-strong);
}
.employee-portal__content :global(a.portal-contact-link) {
/* Dark orange preserves the source accent with readable contrast on white. */
color: #a94600; text-underline-offset: .2em;
}
.employee-portal__content :global(table) { display: block; overflow-x: auto; max-width: 100%; border-collapse: collapse; margin-block: 1.5rem; }
.employee-portal__content :global(td), .employee-portal__content :global(th) {
padding: .75rem; border-bottom: 1px solid var(--color-border); text-align: start; vertical-align: top;
}
.employee-portal__content :global(th) { background: var(--color-tint); color: var(--color-primary); }
.employee-portal__content :global(dt) { font-weight: 600; margin-top: 1rem; }
.employee-portal__content :global(dd) { margin-inline-start: 1rem; }
@media (max-width: 500px) { .employee-portal__access { align-items: stretch; flex-direction: column; } }
</style>