6 this.buttons = elem.querySelectorAll('[toolbox-tab-button]');
7 this.contentElements = elem.querySelectorAll('[toolbox-tab-content]');
8 this.toggleButton = elem.querySelector('[toolbox-toggle]');
10 // Toolbox toggle button click
11 this.toggleButton.addEventListener('click', this.toggle.bind(this));
13 this.elem.addEventListener('click', event => {
14 let button = event.target.closest('[toolbox-tab-button]');
15 if (button === null) return;
16 let name = button.getAttribute('toolbox-tab-button');
17 this.setActiveTab(name, true);
20 // Set the first tab as active on load
21 this.setActiveTab(this.contentElements[0].getAttribute('toolbox-tab-content'));
25 this.elem.classList.toggle('open');
26 const expanded = this.elem.classList.contains('open') ? 'true' : 'false';
27 this.toggleButton.setAttribute('aria-expanded', expanded);
30 setActiveTab(tabName, openToolbox = false) {
31 // Set button visibility
32 for (let i = 0, len = this.buttons.length; i < len; i++) {
33 this.buttons[i].classList.remove('active');
34 let bName = this.buttons[i].getAttribute('toolbox-tab-button');
35 if (bName === tabName) this.buttons[i].classList.add('active');
37 // Set content visibility
38 for (let i = 0, len = this.contentElements.length; i < len; i++) {
39 this.contentElements[i].style.display = 'none';
40 let cName = this.contentElements[i].getAttribute('toolbox-tab-content');
41 if (cName === tabName) this.contentElements[i].style.display = 'block';
44 if (openToolbox && !this.elem.classList.contains('open')) {
51 export default EditorToolbox;