sutty-base-jekyll-theme/_packs/controllers/menu_controller.js

30 lines
604 B
JavaScript

import { Controller } from 'stimulus'
export default class extends Controller {
static targets = [ 'item' ]
connect () {
window.addEventListener('scroll:section', event => this.update(event.detail.id))
}
get items () {
if (!this._items) {
this._items = {}
for (const item of this.itemTargets) {
this._items[item.href.split('#')[1]] = item
}
}
return this._items
}
update (id) {
for (const item of Object.values(this.items)) {
item.classList.remove('active')
}
if (this.items[id]) this.items[id].classList.add('active')
}
}