Merge pull request #84 from chenjiahan/dev

fix: popup will not preventScroll by default
This commit is contained in:
neverland 2017-08-21 22:12:56 +08:00 committed by GitHub
commit 0b76216e9c
2 changed files with 31 additions and 21 deletions

View File

@ -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: {
value(val) {
this.currentValue = val;
@ -102,7 +110,7 @@ export default {
currentValue(val) {
if (this.autosize && this.type === 'textarea') {
this.$nextTick(() => this.sizeAdjust());
this.$nextTick(this.sizeAdjust);
}
this.$emit('input', val);
}
@ -125,12 +133,9 @@ export default {
},
sizeAdjust() {
const textareaElement = this.$refs.textareaElement;
const textAreaDiff = (parseInt(textareaElement.style.paddingBottom, 10) +
parseInt(textareaElement.style.paddingTop, 10)) || 0;
// 0 scrollHeight
textareaElement.style.height = 0 + 'px';
textareaElement.style.height = (textareaElement.scrollHeight - textAreaDiff) + 'px';
const el = this.$refs.textareaElement;
el.style.height = 'auto';
el.style.height = el.scrollHeight + 'px';
},
handleInputFocus() {

View File

@ -4,16 +4,12 @@ import PopupContext from './popup-context';
export default {
props: {
/**
* popup当前显示状态
*/
// popup当前显示状态
value: {
type: Boolean,
default: false
},
/**
* 是否显示遮罩层
*/
// 是否显示遮罩层
overlay: {
type: Boolean,
default: false
@ -26,13 +22,16 @@ export default {
default: false
},
zIndex: [String, Number],
/**
* popup滚动时是否body内容也滚动
* 默认为不滚动
*/
// popup滚动时是否body内容也滚动
// 默认为不滚动
lockOnScroll: {
type: Boolean,
default: true
},
// 防止滚动穿透
preventScroll: {
type: Boolean,
default: false
}
},
@ -137,8 +136,11 @@ export default {
this.$el.style.zIndex = PopupManager.nextZIndex();
this.opened = true;
this.opening = false;
document.addEventListener('touchstart', this.recordPosition, false);
document.addEventListener('touchmove', this.watchTouchMove, false);
if (this.preventScroll) {
document.addEventListener('touchstart', this.recordPosition, false);
document.addEventListener('touchmove', this.watchTouchMove, false);
}
},
/**
@ -167,8 +169,11 @@ export default {
doAfterClose() {
this.closing = false;
PopupManager.closeModal(this._popupId);
document.removeEventListener('touchstart', this.recordPosition, false);
document.removeEventListener('touchmove', this.watchTouchMove, false);
if (this.preventScroll) {
document.removeEventListener('touchstart', this.recordPosition, false);
document.removeEventListener('touchmove', this.watchTouchMove, false);
}
}
},