From 1297eb7beedc58ba6037f478221a267e52cb08e1 Mon Sep 17 00:00:00 2001 From: Tuukka Turu <tuukka.turu@druid.fi> Date: Wed, 4 Nov 2020 13:30:50 +0200 Subject: [PATCH] Close language menu on click outside dropdown --- .../menu-language/menu-language.scss | 4 +++ .../menu-language/menu-language.tsx | 29 +++++++------------ 2 files changed, 15 insertions(+), 18 deletions(-) diff --git a/src/components/navigation/menu-language/menu-language.scss b/src/components/navigation/menu-language/menu-language.scss index aa6a38eb..f41bf241 100644 --- a/src/components/navigation/menu-language/menu-language.scss +++ b/src/components/navigation/menu-language/menu-language.scss @@ -42,6 +42,10 @@ outline-offset: 2px; } + &:hover { + cursor: pointer; + } + &.is-open { .menu--language__toggle__caret { transform: rotate(180deg); diff --git a/src/components/navigation/menu-language/menu-language.tsx b/src/components/navigation/menu-language/menu-language.tsx index 4eb8fc6d..6af1f0e7 100644 --- a/src/components/navigation/menu-language/menu-language.tsx +++ b/src/components/navigation/menu-language/menu-language.tsx @@ -51,34 +51,27 @@ export class MenuLanguage { @Listen('click') handleComponentClick(event) { - let target = event.target as HTMLTextAreaElement; - const targetElement = target.tagName.toLowerCase(); - console.log(targetElement); + event.stopPropagation(); } @Listen('click', {target: 'window'}) handleClick(event) { if (this.isMenuOpen) { - let target = event.target as HTMLTextAreaElement; + const target = event.target as HTMLTextAreaElement; const targetElement = target.tagName.toLowerCase(); - console.log(targetElement); - /* - let hyHeader = this.el.closest('.hy-site-header'); - console.log(hyHeader); + if (targetElement !== 'hy-menu-language') { + const hyHeader = this.el.closest('.hy-site-header'); + const hyBackdropDiv = (hyHeader as HTMLElement).children[0]; - if (hyHeader) { - var hyBackdropDiv = (hyHeader as HTMLElement).children[0]; + if (hyBackdropDiv && hyBackdropDiv.classList.contains('is-active')) { + (hyBackdropDiv as HTMLElement).classList.remove('is-active'); + (hyBackdropDiv as HTMLElement).style.top = '0'; + this.isMenuOpen = !this.isMenuOpen; + } } - - if (hyBackdropDiv) { - console.log('backdrop found'); - (hyBackdropDiv as HTMLElement).classList.remove('is-active'); - (hyBackdropDiv as HTMLElement).style.top = '0'; - this.isMenuOpen = !this.isMenuOpen; - } - */ } + event.stopPropagation(); } componentWillRender() { -- GitLab