Toggle layout button: Create a reusable function to animate pill

This commit is contained in:
2020-02-26 16:00:49 +01:00
parent a5e692eeb2
commit aba1f87482

View File

@@ -19,11 +19,15 @@
const grid = document.querySelector('.photos')
const toggle = document.querySelector('.toggle')
const pill = toggle.querySelector('.pill')
const activeButton = document.querySelector(`.toggle [data-layout="${layoutSetting}"]`)
// Change active pill
const toggleAnimate = (elem, pill, toggle) => {
pill.style.width = Math.round(elem.getBoundingClientRect().width) + 'px'
pill.style.left = Math.round(elem.getBoundingClientRect().left - toggle.getBoundingClientRect().left) + 'px'
}
// Init of first option
pill.style.width = activeButton.getBoundingClientRect().width + 'px'
pill.style.left = activeButton.getBoundingClientRect().left - toggle.getBoundingClientRect().left + 'px'
toggleAnimate(document.querySelector(`.toggle [data-layout="${layoutSetting}"]`), pill, toggle)
// Toggle layout
toggleLayout = event => {
@@ -44,8 +48,7 @@
}
// Animate the active pill
pill.style.width = clicked.getBoundingClientRect().width + 'px'
pill.style.left = clicked.getBoundingClientRect().left - toggle.getBoundingClientRect().left + 'px'
toggleAnimate(clicked, pill, toggle)
// Add/Remove active classes
document.querySelectorAll('.toggle button').forEach(button => button.classList.remove('active'))