6 this.middle = elem.querySelector('.tri-layout-middle');
7 this.right = elem.querySelector('.tri-layout-right');
8 this.left = elem.querySelector('.tri-layout-left');
10 this.lastLayoutType = 'none';
11 this.onDestroy = null;
15 window.addEventListener('resize', event => {
21 let newLayout = 'tablet';
22 if (window.innerWidth <= 1000) newLayout = 'mobile';
23 if (window.innerWidth >= 1400) newLayout = 'desktop';
24 if (newLayout === this.lastLayoutType) return;
28 this.onDestroy = null;
31 if (newLayout === 'desktop') {
33 } else if (newLayout === 'mobile') {
37 this.lastLayoutType = newLayout;
41 const mobileSidebarClickBound = this.mobileSidebarClick.bind(this);
42 const mobileContentClickBound = this.mobileContentClick.bind(this);
43 this.left.addEventListener('click', mobileSidebarClickBound);
44 this.right.addEventListener('click', mobileSidebarClickBound);
45 this.middle.addEventListener('click', mobileContentClickBound);
47 this.onDestroy = () => {
48 this.left.removeEventListener('click', mobileSidebarClickBound);
49 this.right.removeEventListener('click', mobileSidebarClickBound);
50 this.middle.removeEventListener('click', mobileContentClickBound);
59 * Slide the main content back into view if clicked and
60 * currently slid out of view.
63 mobileContentClick(event) {
64 this.elem.classList.remove('mobile-open');
68 * On sidebar click, Show the content by sliding the main content out.
71 mobileSidebarClick(event) {
72 if (this.elem.classList.contains('mobile-open')) {
73 this.elem.classList.remove('mobile-open');
75 event.preventDefault();
76 event.stopPropagation();
77 this.elem.classList.add('mobile-open');
83 export default TriLayout;