quickbuild
Version:
A mature, feature-complete application generator with an emphasis on speed
77 lines (63 loc) • 2.25 kB
JavaScript
const settings = require('electron-settings')
document.body.addEventListener('click', (event) => {
if (event.target.dataset.section) {
handleSectionTrigger(event)
} else if (event.target.dataset.modal) {
handleModalTrigger(event)
} else if (event.target.classList.contains('modal-hide')) {
hideAllModals()
}
})
function handleSectionTrigger (event) {
hideAllSectionsAndDeselectButtons()
// Highlight clicked button and show view
event.target.classList.add('is-selected')
// Display the current section
const sectionId = `${event.target.dataset.section}-section`
document.getElementById(sectionId).classList.add('is-shown')
// Save currently active button in localStorage
const buttonId = event.target.getAttribute('id')
settings.set('activeSectionButtonId', buttonId)
}
function activateDefaultSection () {
document.getElementById('button-windows').click()
}
function showMainContent () {
document.querySelector('.js-nav').classList.add('is-shown')
document.querySelector('.js-content').classList.add('is-shown')
}
function handleModalTrigger (event) {
hideAllModals()
const modalId = `${event.target.dataset.modal}-modal`
document.getElementById(modalId).classList.add('is-shown')
}
function hideAllModals () {
const modals = document.querySelectorAll('.modal.is-shown')
Array.prototype.forEach.call(modals, (modal) => {
modal.classList.remove('is-shown')
})
showMainContent()
}
function hideAllSectionsAndDeselectButtons () {
const sections = document.querySelectorAll('.js-section.is-shown')
Array.prototype.forEach.call(sections, (section) => {
section.classList.remove('is-shown')
})
const buttons = document.querySelectorAll('.nav-button.is-selected')
Array.prototype.forEach.call(buttons, (button) => {
button.classList.remove('is-selected')
})
}
function displayAbout () {
document.querySelector('#about-modal').classList.add('is-shown')
}
// Default to the view that was active the last time the app was open
const sectionId = settings.get('activeSectionButtonId')
if (sectionId) {
showMainContent()
const section = document.getElementById(sectionId)
if (section) section.click()
} else {
activateDefaultSection()
displayAbout()
}