diff --git a/assets/js/theme/design-system/modal.js b/assets/js/theme/design-system/modal.js index c0cb609e7edad8fc4b77cf53b6e55111fa998380..3cb342afecbaf17124fe1e67727f0e3e7c25da09 100644 --- a/assets/js/theme/design-system/modal.js +++ b/assets/js/theme/design-system/modal.js @@ -1,7 +1,8 @@ import { focusTrap } from '../utils/focus-trap'; const CLASSES = { - modalOpened: 'has-modal-opened' + modalOpened: 'has-modal-opened', + modalIsOpened: 'is-opened' }; class Modal { @@ -44,7 +45,6 @@ class Modal { }); window.addEventListener('click', (event) => { - console.log(this.element) if (event.target === this.element) { this.toggle(false); } @@ -54,9 +54,14 @@ class Modal { toggle(open = !this.state.isOpened) { this.state.isOpened = open; const classAction = this.state.isOpened ? 'add' : 'remove'; + let transitionDuration = window.getComputedStyle(this.element).transitionDuration; + transitionDuration = parseFloat(transitionDuration.replace('s', '')); this.element.setAttribute('aria-hidden', !this.state.isOpened); document.documentElement.classList[classAction](CLASSES.modalOpened); + setTimeout(() => { + this.element.classList[classAction](CLASSES.modalIsOpened); + }, transitionDuration * 1000); } } diff --git a/assets/sass/_theme/design-system/layout.sass b/assets/sass/_theme/design-system/layout.sass index 832eb64685a8855936fae7eb6c0cbe653f6560d7..d33f9ec5f54f7a55fb5bc87e959e59d8033698fd 100644 --- a/assets/sass/_theme/design-system/layout.sass +++ b/assets/sass/_theme/design-system/layout.sass @@ -92,7 +92,6 @@ details transform: translateY(-5px) .modal align-items: center - display: flex justify-content: center height: 100vh left: 0 @@ -102,6 +101,14 @@ details width: 100% margin: 0 z-index: $zindex-modal + opacity: 0 + transition: opacity $header-transition + html.is-animating & + opacity: 0 + display: flex + &.is-opened + opacity: 1 + display: flex &[aria-hidden="true"] display: none .modal-content