refactor(ui): move toast stack chrome to a server-rendered partial
Mirrors the detail-drawer move: the .app-toast-stack container is no longer lazy-created in JS on first toast, instead it lives in templates/partials/app-toast-stack.phtml and is mounted once in default.phtml alongside the confirm dialog. The aria-live attribute now sits in the SSR markup so screen readers register the live region from page load, not from the first toast. getToastStack() drops to a plain querySelector and warns via warnOnce when the partial is missing instead of constructing a fallback container. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -337,6 +337,7 @@ $componentPageConfig['moduleRuntimeComponents'] = $moduleRuntimeComponents;
|
||||
|
||||
<script src="<?php e(assetVersion('vendor/fslightbox/fslightbox.js')); ?>"></script>
|
||||
<?php require __DIR__ . '/partials/app-confirm-dialog.phtml'; ?>
|
||||
<?php require __DIR__ . '/partials/app-toast-stack.phtml'; ?>
|
||||
<?php if ($isLoggedIn): ?>
|
||||
<?php require __DIR__ . '/partials/app-search-dialog.phtml'; ?>
|
||||
<?php require __DIR__ . '/partials/app-session-warning-dialog.phtml'; ?>
|
||||
|
||||
12
templates/partials/app-toast-stack.phtml
Normal file
12
templates/partials/app-toast-stack.phtml
Normal file
@@ -0,0 +1,12 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* Async toast stack — global container for JS-triggered notifications.
|
||||
*
|
||||
* Mounted once at the bottom of the shell so any page can fire toasts via
|
||||
* showAsyncFlash() without the JS having to lazy-create the container.
|
||||
* Empty by default; toasts are appended/removed by web/js/components/app-async-flash.js.
|
||||
*/
|
||||
|
||||
?>
|
||||
<div class="app-toast-stack" aria-live="polite"></div>
|
||||
Reference in New Issue
Block a user