44 lines
No EOL
1.4 KiB
JavaScript
44 lines
No EOL
1.4 KiB
JavaScript
(function(window) {
|
|
"use strict";
|
|
|
|
window.ls.container.get("view").add({
|
|
selector: "data-forms-nav",
|
|
repeat: false,
|
|
controller: function(element, view, container, document) {
|
|
let titles = document.querySelectorAll('[data-forms-nav-anchor]');
|
|
let links = element.querySelectorAll('[data-forms-nav-link]');
|
|
let minLink = null;
|
|
|
|
let check = function() {
|
|
let minDistance = null;
|
|
let minElement = null;
|
|
|
|
for (let i = 0; i < titles.length; ++i) {
|
|
let title = titles[i];
|
|
let distance = title.getBoundingClientRect().top;
|
|
|
|
console.log(i);
|
|
|
|
if((minDistance === null || minDistance >= distance) && (distance >= 0)) {
|
|
if(minLink) {
|
|
minLink.classList.remove('selected');
|
|
}
|
|
console.log('old', minLink);
|
|
|
|
minDistance = distance;
|
|
minElement = title;
|
|
minLink = links[i];
|
|
|
|
minLink.classList.add('selected');
|
|
console.log('new', minLink);
|
|
}
|
|
}
|
|
};
|
|
|
|
window.addEventListener('scroll', check);
|
|
|
|
check();
|
|
}
|
|
});
|
|
})(window);
|
|
|