55 lines
1.1 KiB
JavaScript
55 lines
1.1 KiB
JavaScript
import Views from '../templates/Views'
|
|
|
|
export default class RouteController {
|
|
|
|
constructor () {
|
|
document.addEventListener('DOMContentLoaded', e => {
|
|
this._navigation()
|
|
this._history()
|
|
})
|
|
}
|
|
|
|
get routes () {
|
|
return window.env.routes
|
|
}
|
|
|
|
/**
|
|
*
|
|
* @returns {*}
|
|
*/
|
|
get navbar () {
|
|
return document.getElementById(window.env.querySelectors.navTabs.slice(1))
|
|
}
|
|
|
|
get page404(){
|
|
document.body.innerHTML = Views.templates.notFound
|
|
setTimeout( () => {
|
|
window.location.assign('/')
|
|
}, 5000)
|
|
}
|
|
|
|
/**
|
|
*
|
|
* @private
|
|
*/
|
|
_navigation(){
|
|
|
|
if( Object.keys(this.routes).filter( path => window.location.pathname === path ).length === 0 ){
|
|
this.page404
|
|
} else{
|
|
document.querySelector( `a[href='${window.location.pathname}']` ).click()
|
|
}
|
|
|
|
}
|
|
|
|
_history(){
|
|
window.addEventListener('popstate', event => {
|
|
try {
|
|
document.querySelector('.uk-active').classList.remove('uk-active')
|
|
document.querySelector(window.env.querySelectors.navTabs + ` a[href='${event.target.location.pathname}']`).closest('.nav-tab').classList.add('uk-active')
|
|
} catch (e) {}
|
|
|
|
})
|
|
}
|
|
|
|
} |