From b36a73ddc922a18b0f876f5ee8d3a44be4e5346b Mon Sep 17 00:00:00 2001 From: Tuukka Turu <tuukka.turu@druid.fi> Date: Fri, 3 Apr 2020 15:15:39 +0300 Subject: [PATCH] Stoppropagation in accordion click event --- .../components/accordion-container/accordion-container.js | 2 +- .../collection/components/accordion-item/accordion-item.js | 1 + src/components/accordion-container/accordion-container.tsx | 2 +- src/components/accordion-item/accordion-item.tsx | 4 ++-- src/index.html | 7 +++++++ www/index.html | 2 +- 6 files changed, 13 insertions(+), 5 deletions(-) diff --git a/dist/collection/components/accordion-container/accordion-container.js b/dist/collection/components/accordion-container/accordion-container.js index c9f08b44..6895cb94 100644 --- a/dist/collection/components/accordion-container/accordion-container.js +++ b/dist/collection/components/accordion-container/accordion-container.js @@ -3,7 +3,7 @@ export class AccordionContainer { render() { const classAttributes = ["hy-accordion-container", "js-hy-accordion"]; const id = this.accordionid.toLowerCase().replace(/\W/g, '-'); - return (h("div", { id: id, class: classAttributes.join(" "), "data-allow-multiple": "true" }, + return (h("div", { id: id, class: classAttributes.join(" "), "data-allow-multiple": "true", "data-allow-toggle": "true" }, h("slot", null))); } static get is() { return "hy-accordion-container"; } diff --git a/dist/collection/components/accordion-item/accordion-item.js b/dist/collection/components/accordion-item/accordion-item.js index ae7ac717..4a021b5e 100644 --- a/dist/collection/components/accordion-item/accordion-item.js +++ b/dist/collection/components/accordion-item/accordion-item.js @@ -57,6 +57,7 @@ export class AccordionItem { accordion.querySelector(`#${target.getAttribute('aria-controls')}`).setAttribute('aria-hidden', 'true'); } event.preventDefault(); + event.stopImmediatePropagation(); } }); if (accordion) { diff --git a/src/components/accordion-container/accordion-container.tsx b/src/components/accordion-container/accordion-container.tsx index ced0a2e5..18b262bd 100644 --- a/src/components/accordion-container/accordion-container.tsx +++ b/src/components/accordion-container/accordion-container.tsx @@ -12,7 +12,7 @@ export class AccordionContainer { const classAttributes = ["hy-accordion-container", "js-hy-accordion"]; const id = this.accordionid.toLowerCase().replace(/\W/g,'-'); return ( - <div id={id} class={classAttributes.join(" ")} data-allow-multiple="true"> + <div id={id} class={classAttributes.join(" ")} data-allow-multiple="true" data-allow-toggle="true"> <slot></slot> </div> ); diff --git a/src/components/accordion-item/accordion-item.tsx b/src/components/accordion-item/accordion-item.tsx index 8fbb57ea..6408ff4b 100644 --- a/src/components/accordion-item/accordion-item.tsx +++ b/src/components/accordion-item/accordion-item.tsx @@ -28,7 +28,6 @@ export class AccordionItem { if (this.ready && containerId.length > 0) { document.querySelectorAll(`#${containerId}`).forEach(function (accordion) { - const allowMultiple = accordion.hasAttribute('data-allow-multiple'); const allowToggle = (allowMultiple) ? allowMultiple : accordion.hasAttribute('data-allow-toggle'); @@ -36,7 +35,7 @@ export class AccordionItem { accordion.addEventListener('click', function (event) { let target = event.target as HTMLTextAreaElement; - + if (target && target.classList.contains('hy-accordion__button')) { let targetParent = target.closest('.hy-accordion__item'); let targetContent = targetParent.querySelectorAll('.hy-accordion__content')[0]; @@ -77,6 +76,7 @@ export class AccordionItem { } event.preventDefault(); + event.stopImmediatePropagation(); } }); diff --git a/src/index.html b/src/index.html index 1f92f1de..13f055de 100644 --- a/src/index.html +++ b/src/index.html @@ -305,6 +305,13 @@ </hy-grid-item> </hy-grid-row> </hy-grid-item> + <hy-grid-item columns="12"> + <hy-accordion-container accordionid="example-2"> + <hy-accordion-item accordiontitle="This is accordion item 1"> + Lorem ipsum dolor sit amet, consectetur adipiscing elit. + </hy-accordion-item> + </hy-accordion-container> + </hy-grid-item> </hy-grid-row> </hy-grid-container> </body> diff --git a/www/index.html b/www/index.html index 285f166e..eece513c 100644 --- a/www/index.html +++ b/www/index.html @@ -40,4 +40,4 @@ elit.</hy-tiny-text> </hy-grid-item> <hy-grid-item columns="4" columnssm="12" columnslg="3" contentalign="right"> <hy-tiny-text>Lorem ipsum dolor sit amet, consectetur adipiscing elit.</hy-tiny-text> </hy-grid-item> <hy-grid-item columns="4" columnssm="12" columnslg="3" contentalign="left"> <hy-tiny-text>Lorem ipsum dolor sit amet, consectetur adipiscing elit.</hy-tiny-text> </hy-grid-item> <hy-grid-item columns="4" columnssm="12" columnslg="3" contentalign="center"> <hy-tiny-text>Lorem ipsum dolor sit amet, consectetur adipiscing - elit.</hy-tiny-text> </hy-grid-item> </hy-grid-row> </hy-grid-item> </hy-grid-row> </hy-grid-container> </body></html> \ No newline at end of file + elit.</hy-tiny-text> </hy-grid-item> </hy-grid-row> </hy-grid-item> <hy-grid-item columns="12"> <hy-accordion-container accordionid="example-2"> <hy-accordion-item accordiontitle="This is accordion item 1"> Lorem ipsum dolor sit amet, consectetur adipiscing elit. </hy-accordion-item> </hy-accordion-container> </hy-grid-item> </hy-grid-row> </hy-grid-container> </body></html> \ No newline at end of file -- GitLab