7 this.selector = elem.getAttribute('expand-toggle');
8 elem.addEventListener('click', this.click.bind(this));
12 elemToToggle.style.display = 'block';
13 elemToToggle.style.height = '';
14 let height = elemToToggle.getBoundingClientRect().height;
15 elemToToggle.style.height = '0px';
16 elemToToggle.style.overflow = 'hidden';
17 elemToToggle.style.transition = 'height ease-in-out 240ms';
19 let transitionEndBound = onTransitionEnd.bind(this);
20 function onTransitionEnd() {
21 elemToToggle.style.overflow = '';
22 elemToToggle.style.height = '';
23 elemToToggle.style.transition = '';
24 elemToToggle.removeEventListener('transitionend', transitionEndBound);
28 elemToToggle.style.height = `${height}px`;
29 elemToToggle.addEventListener('transitionend', transitionEndBound)
34 elemToToggle.style.display = 'block';
35 elemToToggle.style.height = elemToToggle.getBoundingClientRect().height + 'px';
36 elemToToggle.style.overflow = 'hidden';
37 elemToToggle.style.transition = 'all ease-in-out 240ms';
39 let transitionEndBound = onTransitionEnd.bind(this);
40 function onTransitionEnd() {
41 elemToToggle.style.overflow = '';
42 elemToToggle.style.height = '';
43 elemToToggle.style.transition = '';
44 elemToToggle.style.display = 'none';
45 elemToToggle.removeEventListener('transitionend', transitionEndBound);
49 elemToToggle.style.height = `0px`;
50 elemToToggle.addEventListener('transitionend', transitionEndBound)
55 event.preventDefault();
56 let matchingElems = document.querySelectorAll(this.selector);
57 for (let i = 0, len = matchingElems.length; i < len; i++) {
58 this.isOpen ? this.close(matchingElems[i]) : this.open(matchingElems[i]);
60 this.isOpen = !this.isOpen;
65 export default ExpandToggle;