(function (win, doc, crossBoarder) { 'use strict'; crossBoarder.init = function () { const self = this; self.idNames = { triggerButton: 'js-dialog-openButton', target: 'js-dialog-target', closeButton: 'js-dialog-closeButton' }; self.classNames = { show: 'is-show', active: 'is-active' }; self.items = { triggerButton: doc.getElementById(self.idNames.triggerButton), target: doc.getElementById(self.idNames.target), closeButton: doc.getElementById(self.idNames.closeButton) }; self.attributeNames = { expanded: 'aria-expanded', controls: 'aria-controls' }; crossBoarder.setDialog.init(); }; crossBoarder.setDialog = { init: function () { const self = this; if (!crossBoarder.items.triggerButton || !crossBoarder.items.target || !crossBoarder.items.closeButton) { return; } self.setAttribute(); self.addClickEvent(); }, setAttribute: function () { crossBoarder.items.triggerButton.setAttribute(crossBoarder.attributeNames.expanded, false); crossBoarder.items.triggerButton.setAttribute(crossBoarder.attributeNames.controls, crossBoarder.idNames.target); }, addClickEvent: function () { const self = this; crossBoarder.items.triggerButton.addEventListener('click', self.updateDisplayStatus, false); crossBoarder.items.closeButton.addEventListener('click', self.updateDisplayStatus, false); }, updateDisplayStatus: function () { const self = crossBoarder.setDialog; let expanded = false; expanded = self.getTriggerStatus(crossBoarder.items.triggerButton); self.changeTriggerStatus(expanded); }, getTriggerStatus: function (trigger) { let status = false; let expandedValue = ''; if (typeof trigger !== 'object' || !trigger) { return status; } expandedValue = trigger.getAttribute(crossBoarder.attributeNames.expanded); if (expandedValue === 'true') { status = true; } return status; }, changeTriggerStatus: function (isOpened) { if (typeof isOpened !== 'boolean') { return; } if (isOpened === true) { crossBoarder.items.triggerButton.setAttribute(crossBoarder.attributeNames.expanded, false); crossBoarder.items.triggerButton.classList.remove(crossBoarder.classNames.active); crossBoarder.items.target.classList.remove(crossBoarder.classNames.show); } else { crossBoarder.items.triggerButton.setAttribute(crossBoarder.attributeNames.expanded, true); crossBoarder.items.triggerButton.classList.add(crossBoarder.classNames.active); crossBoarder.items.target.classList.add(crossBoarder.classNames.show); } } }; doc.addEventListener('DOMContentLoaded', function () { crossBoarder.init(); }); }(this, this.document, window.crossBoarder = window.crossBoarder || {}));