Fix overlay pattern dimming and align VSF pages to shared overlay dialog contract
This commit is contained in:
@@ -123,7 +123,7 @@
|
||||
</span>
|
||||
</button>
|
||||
<div class="sg-sandwich-menu-panel" aria-label="Meldungsmenü" data-component-part="sandwich-panel">
|
||||
<a class="sg-sandwich-menu-link" href="#!" data-component-part="sandwich-menu-link" data-vsf-open-dialog="meldungen">Meldungen anpassen</a>
|
||||
<a class="sg-sandwich-menu-link" href="#!" data-component-part="sandwich-menu-link" data-overlay-open-dialog="meldungen">Meldungen anpassen</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -164,12 +164,12 @@
|
||||
</article>
|
||||
</div>
|
||||
|
||||
<article class="sg-card sg-delete-confirmation-pattern__floating-card" aria-label="Meldungen anpassen" role="dialog" aria-modal="true" aria-labelledby="vsf-meldungen-overlay-title" data-vsf-dialog="meldungen" hidden>
|
||||
<article class="sg-card sg-delete-confirmation-pattern__floating-card" aria-label="Meldungen anpassen" role="dialog" aria-modal="true" aria-labelledby="vsf-meldungen-overlay-title" data-overlay-dialog="meldungen" hidden>
|
||||
<div class="sg-card-segment sg-card-segment--body sg-delete-confirmation-pattern__body">
|
||||
<p class="sg-body sg-delete-confirmation-pattern__text" id="vsf-meldungen-overlay-title"><strong>Meldungen anpassen</strong></p>
|
||||
<p class="sg-body sg-delete-confirmation-pattern__text">Passe die Anzeige und Priorisierung der Meldungen an.</p>
|
||||
<div class="sg-delete-confirmation-pattern__actions">
|
||||
<button class="sg-interaction-element sg-button sg-button--active" type="button" data-vsf-dialog-close>Schließen</button>
|
||||
<button class="sg-interaction-element sg-button sg-button--active" type="button" data-overlay-dialog-close>Schließen</button>
|
||||
</div>
|
||||
</div>
|
||||
</article>
|
||||
@@ -378,37 +378,47 @@
|
||||
return;
|
||||
}
|
||||
|
||||
stage.querySelectorAll('[data-vsf-dialog]').forEach((dialog) => {
|
||||
stage.querySelectorAll('[data-overlay-dialog]').forEach((dialog) => {
|
||||
dialog.hidden = true;
|
||||
});
|
||||
stage.dataset.dialogOpen = 'false';
|
||||
};
|
||||
|
||||
document.querySelectorAll('[data-vsf-open-dialog]').forEach((link) => {
|
||||
document.querySelectorAll('[data-overlay-open-dialog]').forEach((link) => {
|
||||
link.addEventListener('click', (event) => {
|
||||
event.preventDefault();
|
||||
event.stopPropagation();
|
||||
|
||||
const stage = link.closest('.sg-delete-confirmation-pattern__stage');
|
||||
if (!stage) {
|
||||
return;
|
||||
}
|
||||
|
||||
const target = link.getAttribute('data-vsf-open-dialog');
|
||||
const dialog = stage.querySelector(`[data-vsf-dialog="${target}"]`);
|
||||
const target = link.getAttribute('data-overlay-open-dialog');
|
||||
const dialog = stage.querySelector(`[data-overlay-dialog="${target}"]`);
|
||||
if (!dialog) {
|
||||
return;
|
||||
}
|
||||
|
||||
stage.querySelectorAll('[data-vsf-dialog]').forEach((otherDialog) => {
|
||||
stage.querySelectorAll('[data-overlay-dialog]').forEach((otherDialog) => {
|
||||
otherDialog.hidden = true;
|
||||
});
|
||||
|
||||
dialog.hidden = false;
|
||||
stage.dataset.dialogOpen = 'true';
|
||||
|
||||
const menuWrap = link.closest('.sg-sandwich-menu-wrap');
|
||||
const menuButton = menuWrap?.querySelector('.sg-sandwich-button');
|
||||
if (menuWrap) {
|
||||
menuWrap.dataset.open = 'false';
|
||||
}
|
||||
if (menuButton) {
|
||||
menuButton.setAttribute('aria-expanded', 'false');
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
document.querySelectorAll('[data-vsf-dialog-close]').forEach((button) => {
|
||||
document.querySelectorAll('[data-overlay-dialog-close]').forEach((button) => {
|
||||
button.addEventListener('click', () => {
|
||||
const stage = button.closest('.sg-delete-confirmation-pattern__stage');
|
||||
closeVsfDialog(stage);
|
||||
@@ -564,7 +574,7 @@
|
||||
});
|
||||
}
|
||||
|
||||
if (!event.target.closest('.sg-delete-confirmation-pattern__floating-card') && !event.target.closest('[data-vsf-open-dialog]')) {
|
||||
if (!event.target.closest('.sg-delete-confirmation-pattern__floating-card') && !event.target.closest('[data-overlay-open-dialog]')) {
|
||||
document.querySelectorAll('.sg-delete-confirmation-pattern__stage').forEach((stage) => {
|
||||
if (stage.dataset.dialogOpen === 'true') {
|
||||
closeVsfDialog(stage);
|
||||
|
||||
Reference in New Issue
Block a user