mirror of
				https://gitee.com/vant-contrib/vant.git
				synced 2025-11-04 21:02:09 +08:00 
			
		
		
		
	Merge pull request #84 from chenjiahan/dev
fix: popup will not preventScroll by default
This commit is contained in:
		
						commit
						0b76216e9c
					
				@ -95,6 +95,14 @@ export default {
 | 
				
			|||||||
    };
 | 
					    };
 | 
				
			||||||
  },
 | 
					  },
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  mounted() {
 | 
				
			||||||
 | 
					    if (this.autosize && this.type === 'textarea') {
 | 
				
			||||||
 | 
					      const el = this.$refs.textareaElement;
 | 
				
			||||||
 | 
					      el.style.height = el.scrollHeight + 'px';
 | 
				
			||||||
 | 
					      el.style.overflowY = 'hidden';
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					  },
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  watch: {
 | 
					  watch: {
 | 
				
			||||||
    value(val) {
 | 
					    value(val) {
 | 
				
			||||||
      this.currentValue = val;
 | 
					      this.currentValue = val;
 | 
				
			||||||
@ -102,7 +110,7 @@ export default {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    currentValue(val) {
 | 
					    currentValue(val) {
 | 
				
			||||||
      if (this.autosize && this.type === 'textarea') {
 | 
					      if (this.autosize && this.type === 'textarea') {
 | 
				
			||||||
        this.$nextTick(() => this.sizeAdjust());
 | 
					        this.$nextTick(this.sizeAdjust);
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
      this.$emit('input', val);
 | 
					      this.$emit('input', val);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
@ -125,12 +133,9 @@ export default {
 | 
				
			|||||||
    },
 | 
					    },
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    sizeAdjust() {
 | 
					    sizeAdjust() {
 | 
				
			||||||
      const textareaElement = this.$refs.textareaElement;
 | 
					      const el = this.$refs.textareaElement;
 | 
				
			||||||
      const textAreaDiff = (parseInt(textareaElement.style.paddingBottom, 10) +
 | 
					      el.style.height = 'auto';
 | 
				
			||||||
          parseInt(textareaElement.style.paddingTop, 10)) || 0;
 | 
					      el.style.height = el.scrollHeight + 'px';
 | 
				
			||||||
      // 需要先设为0, 才可以让scrollHeight正确计算。
 | 
					 | 
				
			||||||
      textareaElement.style.height = 0 + 'px';
 | 
					 | 
				
			||||||
      textareaElement.style.height = (textareaElement.scrollHeight - textAreaDiff) + 'px';
 | 
					 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    handleInputFocus() {
 | 
					    handleInputFocus() {
 | 
				
			||||||
 | 
				
			|||||||
@ -4,16 +4,12 @@ import PopupContext from './popup-context';
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
export default {
 | 
					export default {
 | 
				
			||||||
  props: {
 | 
					  props: {
 | 
				
			||||||
    /**
 | 
					    // popup当前显示状态
 | 
				
			||||||
     * popup当前显示状态
 | 
					 | 
				
			||||||
     */
 | 
					 | 
				
			||||||
    value: {
 | 
					    value: {
 | 
				
			||||||
      type: Boolean,
 | 
					      type: Boolean,
 | 
				
			||||||
      default: false
 | 
					      default: false
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
    /**
 | 
					    // 是否显示遮罩层
 | 
				
			||||||
     * 是否显示遮罩层
 | 
					 | 
				
			||||||
     */
 | 
					 | 
				
			||||||
    overlay: {
 | 
					    overlay: {
 | 
				
			||||||
      type: Boolean,
 | 
					      type: Boolean,
 | 
				
			||||||
      default: false
 | 
					      default: false
 | 
				
			||||||
@ -26,13 +22,16 @@ export default {
 | 
				
			|||||||
      default: false
 | 
					      default: false
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
    zIndex: [String, Number],
 | 
					    zIndex: [String, Number],
 | 
				
			||||||
    /**
 | 
					    // popup滚动时是否body内容也滚动
 | 
				
			||||||
     * popup滚动时是否body内容也滚动
 | 
					    // 默认为不滚动
 | 
				
			||||||
     * 默认为不滚动
 | 
					 | 
				
			||||||
     */
 | 
					 | 
				
			||||||
    lockOnScroll: {
 | 
					    lockOnScroll: {
 | 
				
			||||||
      type: Boolean,
 | 
					      type: Boolean,
 | 
				
			||||||
      default: true
 | 
					      default: true
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
 | 
					    // 防止滚动穿透
 | 
				
			||||||
 | 
					    preventScroll: {
 | 
				
			||||||
 | 
					      type: Boolean,
 | 
				
			||||||
 | 
					      default: false
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
  },
 | 
					  },
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -137,8 +136,11 @@ export default {
 | 
				
			|||||||
      this.$el.style.zIndex = PopupManager.nextZIndex();
 | 
					      this.$el.style.zIndex = PopupManager.nextZIndex();
 | 
				
			||||||
      this.opened = true;
 | 
					      this.opened = true;
 | 
				
			||||||
      this.opening = false;
 | 
					      this.opening = false;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      if (this.preventScroll) {
 | 
				
			||||||
        document.addEventListener('touchstart', this.recordPosition, false);
 | 
					        document.addEventListener('touchstart', this.recordPosition, false);
 | 
				
			||||||
        document.addEventListener('touchmove', this.watchTouchMove, false);        
 | 
					        document.addEventListener('touchmove', this.watchTouchMove, false);        
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    /**
 | 
					    /**
 | 
				
			||||||
@ -167,9 +169,12 @@ export default {
 | 
				
			|||||||
    doAfterClose() {
 | 
					    doAfterClose() {
 | 
				
			||||||
      this.closing = false;
 | 
					      this.closing = false;
 | 
				
			||||||
      PopupManager.closeModal(this._popupId);
 | 
					      PopupManager.closeModal(this._popupId);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      if (this.preventScroll) {
 | 
				
			||||||
        document.removeEventListener('touchstart', this.recordPosition, false);
 | 
					        document.removeEventListener('touchstart', this.recordPosition, false);
 | 
				
			||||||
        document.removeEventListener('touchmove', this.watchTouchMove, false);
 | 
					        document.removeEventListener('touchmove', this.watchTouchMove, false);
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
  },
 | 
					  },
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  beforeDestroy() {
 | 
					  beforeDestroy() {
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user