Blame view

src/components/modal/mixins-scrollbar.js 1.56 KB
297648f1   梁灏   fixed #1063
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
  // used for Modal & $Spin
  import { getScrollBarSize } from '../../utils/assist';
  export default {
      methods: {
          checkScrollBar () {
              let fullWindowWidth = window.innerWidth;
              if (!fullWindowWidth) { // workaround for missing window.innerWidth in IE8
                  const documentElementRect = document.documentElement.getBoundingClientRect();
                  fullWindowWidth = documentElementRect.right - Math.abs(documentElementRect.left);
              }
              this.bodyIsOverflowing = document.body.clientWidth < fullWindowWidth;
              if (this.bodyIsOverflowing) {
                  this.scrollBarWidth = getScrollBarSize();
              }
          },
1635ec37   郑敏   fix bug #3792 Pag...
16
17
18
19
          checkMaskInVisible () {
              let masks = document.getElementsByClassName('ivu-modal-mask') || [];
              return Array.from(masks).every(m => m.style.display === 'none' || m.classList.contains('fade-leave-to'));
          },
297648f1   梁灏   fixed #1063
20
21
22
23
24
25
26
27
28
29
30
31
32
33
          setScrollBar () {
              if (this.bodyIsOverflowing && this.scrollBarWidth !== undefined) {
                  document.body.style.paddingRight = `${this.scrollBarWidth}px`;
              }
          },
          resetScrollBar () {
              document.body.style.paddingRight = '';
          },
          addScrollEffect () {
              this.checkScrollBar();
              this.setScrollBar();
              document.body.style.overflow = 'hidden';
          },
          removeScrollEffect() {
1635ec37   郑敏   fix bug #3792 Pag...
34
35
36
37
              if (this.checkMaskInVisible()) {
                  document.body.style.overflow = '';
                  this.resetScrollBar();
              }
297648f1   梁灏   fixed #1063
38
39
          }
      }
1635ec37   郑敏   fix bug #3792 Pag...
40
  };