Files
ntspi-app/resources/js/mixins/LinksReform.js
T
2025-01-09 13:26:14 +05:00

48 lines
1.6 KiB
JavaScript

export const linksReform = {
data() {
return {
excludedPaths: ['/sveden/', '/storage/']
}
},
methods: {
checkPathname(pathname) {
return this.excludedPaths.some(path => pathname.startsWith(path));
},
getDefaultLinks() {
const links = document.querySelectorAll('a:not([href^="#"]):not([download])');
return Array.from(links);
},
createReactiveLinks(links, hostname) {
return links.filter(link => link.hostname === hostname).filter(link => !this.checkPathname(link.pathname));
},
createStaticLinks(links, hostname) {
return links.filter(link => link.hostname !== hostname);
},
clearBodyStyles() {
const body = document.body;
if (body.style.overflow === 'hidden') {
body.style.overflow = ''; // Сбрасываем overflow до значения по умолчанию
}
},
},
updated() {
this.clearBodyStyles();
const hostname = window.location.hostname;
const defaultLinks = Array.from(this.getDefaultLinks());
const reactiveLinks = this.createReactiveLinks(defaultLinks, hostname);
reactiveLinks.forEach(link => {
link.addEventListener('click', (event) => {
event.preventDefault();
this.clearBodyStyles();
const url = link.getAttribute('href');
this.$inertia.visit(url, {
preserveScroll: false,
});
});
});
}
};