From a1108a5a49c2d0d0e6cb8e50ab2fa122653387ca Mon Sep 17 00:00:00 2001 From: "michael.danielczok" <michael@pcsg.de> Date: Wed, 11 May 2022 15:50:21 +0200 Subject: [PATCH] feat: Consider menu typ [Independent]. quiqqer/package-menu#12 feat: Find target for anchors and scroll smoothly. --- bin/MegaMenu.js | 50 ++++++++++++++++++++++++-- src/QUI/Menu/MegaMenu.Independent.html | 6 +++- 2 files changed, 53 insertions(+), 3 deletions(-) diff --git a/bin/MegaMenu.js b/bin/MegaMenu.js index 1fe36bf..ef7fcf6 100644 --- a/bin/MegaMenu.js +++ b/bin/MegaMenu.js @@ -125,7 +125,7 @@ define('package/quiqqer/menu/bin/MegaMenu', [ var SlideNode = document.getElement('[data-qui="package/quiqqer/menu/bin/SlideOut"]'), SlideOut = QUI.Controls.getById(SlideNode.get('data-quiid')), MobileMenu = this.getElm().getElement('.quiqqer-menu-megaMenu-mobile'); - + if (!MobileMenu) { return; } @@ -167,13 +167,59 @@ define('package/quiqqer/menu/bin/MegaMenu', [ this.$Menu.set('html', Menu.get('html')); + let getTarget = function (Link) { + let href = Link.href; + + if (href.indexOf('#') === -1) { + return false; + } + + let targetString = href.substring(href.indexOf('#') + 1); + + if (targetString.length < 1) { + return false; + } + + let TargetElm = document.getElementById(targetString); + + if (!TargetElm) { + return false; + } + + return TargetElm; + }; + + let clickEvent = function (Target, offset) { + new Fx.Scroll(window, { + offset: { + y: -offset + } + }).toElement(Target); + }; + this.$Menu.getElements('a').addEvent('click', function (event) { var Link = event.target; - if (Link.nodeName != 'A') { + + if (Link.nodeName !== 'A') { Link = Link.getParent('a'); } event.stop(); + + let TargetElm = getTarget(Link); + console.log("click auf A"); + if (TargetElm) { + console.log("target gefunden, scrollen"); + let offset = Link.get('data-qui-offset'); + + if (!offset) { + offset = window.SCROLL_OFFSET ? window.SCROLL_OFFSET : 0; + } + + clickEvent(TargetElm, offset); + return; + } + window.location = Link.get('href'); }); diff --git a/src/QUI/Menu/MegaMenu.Independent.html b/src/QUI/Menu/MegaMenu.Independent.html index dc25058..cb3b549 100644 --- a/src/QUI/Menu/MegaMenu.Independent.html +++ b/src/QUI/Menu/MegaMenu.Independent.html @@ -40,7 +40,11 @@ {if count($subchildren)} <span class="fa fa-angle-down"></span> {/if} - </span> + </span> + {/if} + + {if $showMenu && $Child->getMenuType() && $Child->getMenuType() !== ''} + {assign var=usedControl value=$this->getMenuControl($Child->getMenuType())} {/if} {if count($subchildren) && $usedControl} -- GitLab