q42-cms-components
Version:
Front-end package that provides a UI on top of the QMS back-end
27 lines (25 loc) • 874 B
JavaScript
// Allows only scrolling inside this element, prevents scrolling of any ancestor element
const VueScrollStop = {
install: function(Vue) {
Vue.directive('scroll-stop', {
bind(el) {
el.preventScroll = function(event) {
var t = event.currentTarget;
if (
(t.scrollTop === 0 && event.deltaY < 0) ||
(t.scrollTop === t.scrollHeight - t.offsetHeight && event.deltaY > 0) ||
(t.scrollLeft === 0 && event.deltaX < 0) ||
(t.scrollLeft === t.scrollWidth - t.offsetWidth && event.deltaX > 0)
) {
event.preventDefault();
}
};
el.addEventListener('mousewheel', el.preventScroll);
},
unbind(el) {
el.removeEventListener('mousewheel', el.preventScroll);
}
});
}
};
export default VueScrollStop;