diff options
| author | Roger Rehnelt <noreply@maennchen1.de> | 2026-10-03 15:23:59 +0200 |
|---|---|---|
| committer | Roger Rehnelt <noreply@maennchen1.de> | 2026-10-03 15:23:59 +0200 |
| commit | 6b03b7e7a5b47b52ea5d5b6aae2efb945f4dd686 (patch) | |
| tree | 09be466f7d00258aa5072cd844d5ff3bfd76de3f /views/js/frontend.js | |
| parent | 24481a9557d656cc69c75eda9f598f993db5b728 (diff) | |
GARAN: Label per Tipp und Tastatur aufklappbar
Der erste Tipp oder der Tastaturfokus zeigt das Label, ein zweiter Tipp folgt dem Link zur EU-Seite; Escape oder ein Tipp daneben schließt es.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Diffstat (limited to 'views/js/frontend.js')
| -rw-r--r-- | views/js/frontend.js | 45 |
1 files changed, 45 insertions, 0 deletions
diff --git a/views/js/frontend.js b/views/js/frontend.js index d622596..6663ea5 100644 --- a/views/js/frontend.js +++ b/views/js/frontend.js @@ -309,3 +309,48 @@ if (document.readyState === 'loading') document.addEventListener('DOMContentLoaded', wpsg_garanTooltipPosition); else wpsg_garanTooltipPosition();
window.addEventListener('resize', wpsg_garanTooltipPosition);
jQuery(document).ajaxComplete(wpsg_garanTooltipPosition);
+
+ /**
+ * GARAN-Label per Tipp und Tastatur (K69)
+ *
+ * Der erste Tipp klappt das Label auf, der zweite folgt dem Link zur EU-Seite. Maus: Darüberfahren zeigt es,
+ * Klick folgt dem Link. Tastatur: Der Fokus zeigt es (CSS :focus-visible), Enter folgt dem Link.
+ * Escape oder ein Tipp daneben schließt es.
+ */
+ var wpsg_garanPointer = '';
+
+ function wpsg_garanSet(label, open, dismissed) {
+
+ label.classList.toggle('is-open', open);
+ label.classList.toggle('is-dismissed', !!dismissed);
+ label.setAttribute('aria-expanded', ((open)?'true':'false'));
+
+ } // function wpsg_garanSet(label, open, dismissed)
+
+ document.addEventListener('pointerdown', function(event) { wpsg_garanPointer = event.pointerType; }, true);
+ document.addEventListener('keydown', function(event) {
+
+ wpsg_garanPointer = '';
+
+ if (event.key === 'Escape') document.querySelectorAll('a.wpsg_product_garan').forEach(function(label) { if (label.classList.contains('is-open') || label === document.activeElement) wpsg_garanSet(label, false, true); } );
+
+ }, true);
+
+ document.addEventListener('click', function(event) {
+
+ var label = event.target.closest('a.wpsg_product_garan');
+
+ document.querySelectorAll('a.wpsg_product_garan.is-open').forEach(function(open) { if (open !== label) wpsg_garanSet(open, false); } );
+
+ if (!label || (wpsg_garanPointer !== 'touch' && wpsg_garanPointer !== 'pen')) return;
+
+ if (!label.classList.contains('is-open')) {
+
+ event.preventDefault();
+ wpsg_garanSet(label, true);
+
+ }
+
+ } );
+
+ document.addEventListener('focusout', function(event) { if (event.target.matches && event.target.matches('a.wpsg_product_garan')) event.target.classList.remove('is-dismissed'); } );
|
