Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

turbolinks support #84

Closed
wants to merge 2 commits into from
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
144 changes: 97 additions & 47 deletions app/assets/javascripts/arctic_admin/main.js
Original file line number Diff line number Diff line change
@@ -1,50 +1,100 @@
document.addEventListener('DOMContentLoaded', () => {

// right filter sidebar
const sidebar = document.querySelector('#sidebar')
if (sidebar) {
sidebar.addEventListener('click', event => {
const insideSection = document.querySelector('#filters_sidebar_section')
if (!(event.target === insideSection || insideSection.contains(event.target))) {
sidebar.classList.toggle('sidebar_open')
}
})
}

const menuButton = document.querySelector('#utility_nav')
const menu = document.querySelector('#tabs')

// toggle menu sidebar with the menu button
menuButton.addEventListener('click', event => {
const currentUser = document.querySelector('#current_user')
const logout = document.querySelector('#logout')
const forbiddenLinks = event.target === logout ||
logout.contains(event.target) ||
event.target === currentUser ||
currentUser.contains(event.target)
if (!forbiddenLinks) {
menu.classList.toggle('tabs_open')
}
})

// close left menu sidebar on any click outside
document.body.addEventListener('click', event => {
const forbiddenLinks = event.target === menu ||
menu.contains(event.target) ||
event.target === menuButton ||
menuButton.contains(event.target)
if (menu.classList.contains('tabs_open') && !forbiddenLinks) {
menu.classList.remove('tabs_open')
}
})

// toggle of nested menu items
const nestedMenuItem = document.querySelector('#tabs .has_nested')
if (nestedMenuItem) {
nestedMenuItem.addEventListener('click', (e) => {
e.stopPropagation()
nestedMenuItem.classList.toggle('open')
})
// right filter sidebar toggle
function sidebar() {
return document.querySelector('#sidebar')
}
function sidebarToggle(event) {
const insideSection = document.querySelector('#filters_sidebar_section')
if (!(event.target === insideSection || insideSection.contains(event.target))) {
sidebar().classList.toggle('sidebar_open')
}
}

// left menu sidebar toggle with menu button
function menuButton() {
return document.querySelector('#utility_nav')
}
function menu() {
return document.querySelector('#tabs')
}
function menuToggle(event) {
const currentUser = document.querySelector('#current_user')
const logout = document.querySelector('#logout')
const forbiddenLinks = event.target === logout ||
logout.contains(event.target) ||
event.target === currentUser ||
currentUser.contains(event.target)
if (!forbiddenLinks) {
menu().classList.toggle('tabs_open')
}
}

// left menu sidebar close on any click outside
function menuClose(event) {
const forbiddenLinks = event.target === menu ||
menu().contains(event.target) ||
event.target === menuButton() ||
menuButton().contains(event.target)
if (menu().classList.contains('tabs_open') && !forbiddenLinks) {
menu().classList.remove('tabs_open')
}
}

// nested menu items toggle
function nestedMenuItem() {
return document.querySelector('#tabs .has_nested')
}
function nestedMenuToggle(event) {
event.stopPropagation()
nestedMenuItem.classList.toggle('open')
}

// add event listeners
function addListeners() {

// right filter sidebar toggle
if (sidebar()) {
sidebar().addEventListener('click', sidebarToggle)
}

// left menu sidebar toggle with menu button
if (menuButton()) {
menuButton().addEventListener('click', menuToggle)
}

// left menu sidebar close on any click outside
document.body.addEventListener('click', menuClose)

// nested menu items toggle
if (nestedMenuItem()) {
nestedMenuItem().addEventListener('click', nestedMenuToggle)
}

}

// remove all previous eventListeners
function removeListeners() {

// right filter sidebar toggle
if (sidebar()) {
sidebar().removeEventListener('click', sidebarToggle)
}

// left menu sidebar toggle with menu button
menuButton().removeEventListener('click', menuToggle)

// left menu sidebar close on any click outside
document.body.removeEventListener('click', menuClose)

// nested menu items toggle
if (nestedMenuItem()) {
nestedMenuItem().removeEventListener('click', nestedMenuToggle)
}

}

document.addEventListener('DOMContentLoaded', addListeners)

document.addEventListener( 'turbolinks:load', () => {
removeListeners()
addListeners()
})
Empty file modified lib/arctic_admin/version.rb
100755 → 100644
Empty file.