primevue
Version:
PrimeVue is a premium UI library for Vue featuring a rich set of 90+ components, a theme designer, various theme alternatives such as Material, Bootstrap, Tailwind, premium templates and professional support. In addition, it integrates with PrimeBlock, wh
30 lines (27 loc) • 1.1 kB
JavaScript
import { $dt } from '@primeuix/styled';
import * as utils from '@primeuix/utils';
import { prefixClasses, getClassPrefix, getActiveTheme } from '@primevue/core/utils';
var options = function options(isolation) {
return {
variableName: $dt('scrollbar.width').name,
className: prefixClasses('p-overflow-hidden', getClassPrefix(getActiveTheme(isolation)))
};
};
var bodyLocks = new WeakMap();
function blockBodyScroll(isolation) {
var option = options(isolation);
utils.blockBodyScroll(option);
if (isolation && !bodyLocks.has(isolation) && typeof document !== 'undefined') {
isolation.set('body-scroll-lock', "body.".concat(option.className, "{overflow:hidden;padding-right:var(").concat(option.variableName, ")}"));
bodyLocks.set(isolation, isolation.retain(document));
}
}
function unblockBodyScroll(isolation) {
utils.unblockBodyScroll(options(isolation));
if (isolation && bodyLocks.has(isolation)) {
isolation["delete"]('body-scroll-lock');
bodyLocks.get(isolation)();
bodyLocks["delete"](isolation);
}
}
export { blockBodyScroll, unblockBodyScroll };