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: { 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() {

View File

@ -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;
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() { doAfterClose() {
this.closing = false; this.closing = false;
PopupManager.closeModal(this._popupId); 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);
}
} }
}, },