switchScrollingEffect.js 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. "use strict";
  2. var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
  3. Object.defineProperty(exports, "__esModule", {
  4. value: true
  5. });
  6. exports.default = void 0;
  7. var _getScrollBarSize = _interopRequireDefault(require("./getScrollBarSize"));
  8. var _setStyle = _interopRequireDefault(require("./setStyle"));
  9. function isBodyOverflowing() {
  10. return document.body.scrollHeight > (window.innerHeight || document.documentElement.clientHeight) && window.innerWidth > document.body.offsetWidth;
  11. }
  12. var cacheStyle = {};
  13. var _default = exports.default = function _default(close) {
  14. if (!isBodyOverflowing() && !close) {
  15. return;
  16. }
  17. // https://github.com/ant-design/ant-design/issues/19729
  18. var scrollingEffectClassName = 'ant-scrolling-effect';
  19. var scrollingEffectClassNameReg = new RegExp("".concat(scrollingEffectClassName), 'g');
  20. var bodyClassName = document.body.className;
  21. if (close) {
  22. if (!scrollingEffectClassNameReg.test(bodyClassName)) return;
  23. (0, _setStyle.default)(cacheStyle);
  24. cacheStyle = {};
  25. document.body.className = bodyClassName.replace(scrollingEffectClassNameReg, '').trim();
  26. return;
  27. }
  28. var scrollBarSize = (0, _getScrollBarSize.default)();
  29. if (scrollBarSize) {
  30. cacheStyle = (0, _setStyle.default)({
  31. position: 'relative',
  32. width: "calc(100% - ".concat(scrollBarSize, "px)")
  33. });
  34. if (!scrollingEffectClassNameReg.test(bodyClassName)) {
  35. var addClassName = "".concat(bodyClassName, " ").concat(scrollingEffectClassName);
  36. document.body.className = addClassName.trim();
  37. }
  38. }
  39. };