X-Git-Url: http://source.bookstackapp.com/bookstack/blobdiff_plain/ddb7f33868ea499ab8f48a7062f145e8c0fbe02f..refs/heads/user_permissions:/resources/js/components/tri-layout.js diff --git a/resources/js/components/tri-layout.js b/resources/js/components/tri-layout.js index 905ca03b1..ead2ac3d0 100644 --- a/resources/js/components/tri-layout.js +++ b/resources/js/components/tri-layout.js @@ -1,8 +1,10 @@ +import {Component} from "./component"; -class TriLayout { +export class TriLayout extends Component { - constructor(elem) { - this.elem = elem; + setup() { + this.container = this.$refs.container; + this.tabs = this.$manyRefs.tab; this.lastLayoutType = 'none'; this.onDestroy = null; @@ -43,13 +45,12 @@ class TriLayout { } setupMobile() { - const layoutTabs = document.querySelectorAll('[tri-layout-mobile-tab]'); - for (let tab of layoutTabs) { + for (const tab of this.tabs) { tab.addEventListener('click', this.mobileTabClick); } this.onDestroy = () => { - for (let tab of layoutTabs) { + for (const tab of this.tabs) { tab.removeEventListener('click', this.mobileTabClick); } } @@ -65,7 +66,7 @@ class TriLayout { * @param event */ mobileTabClick(event) { - const tab = event.target.getAttribute('tri-layout-mobile-tab'); + const tab = event.target.dataset.tab; this.showTab(tab); } @@ -79,21 +80,21 @@ class TriLayout { /** * Show the given tab - * @param tabName + * @param {String} tabName + * @param {Boolean }scroll */ showTab(tabName, scroll = true) { this.scrollCache[this.lastTabShown] = document.documentElement.scrollTop; // Set tab status - const tabs = document.querySelectorAll('.tri-layout-mobile-tab'); - for (let tab of tabs) { - const isActive = (tab.getAttribute('tri-layout-mobile-tab') === tabName); - tab.classList.toggle('active', isActive); + for (const tab of this.tabs) { + const isActive = (tab.dataset.tab === tabName); + tab.setAttribute('aria-selected', isActive ? 'true' : 'false'); } // Toggle section const showInfo = (tabName === 'info'); - this.elem.classList.toggle('show-info', showInfo); + this.container.classList.toggle('show-info', showInfo); // Set the scroll position from cache if (scroll) { @@ -108,6 +109,4 @@ class TriLayout { this.lastTabShown = tabName; } -} - -export default TriLayout; \ No newline at end of file +} \ No newline at end of file