Merge pull request #6201 from NineSwordsMonster/fix_modal_drag

Fix the problem of setting both draggable and custom top or left style causes the modal to move down or left when dragging
This commit is contained in:
debugIsFalse 2019-09-12 14:37:27 +08:00 committed by GitHub
commit feec6ef5df
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 15 additions and 3 deletions

View file

@ -1,6 +1,12 @@
<template> <template>
<div> <div>
<Button type="primary" @click="modal1 = true">Display dialog box</Button> <Button type="primary" @click="modal1 = true">Display dialog box</Button>
<Button type="primary" @click="modal2 = true">Display dialog box</Button>
<Modal v-model="modal2" draggable title="Common Modal dialog box title"
@on-ok="ok"
@on-cancel="cancel" :styles="{top: '300px', left: '100px'}">
<p>2123</p>
</Modal>
<Modal <Modal
v-model="modal1" v-model="modal1"
title="Common Modal dialog box title" title="Common Modal dialog box title"
@ -52,6 +58,7 @@
data () { data () {
return { return {
modal1: false, modal1: false,
modal2: false,
cityList: [ cityList: [
{ {
value: 'New York', value: 'New York',

View file

@ -82,7 +82,10 @@
default: false default: false
}, },
styles: { styles: {
type: Object type: Object,
default() {
return {};
}
}, },
className: { className: {
type: String type: String
@ -202,8 +205,10 @@
let style = {}; let style = {};
if (this.draggable) { if (this.draggable) {
if (this.dragData.x !== null) style.left = `${this.dragData.x}px`; let customTop = this.styles.top ? parseFloat(this.styles.top) : 0;
if (this.dragData.y !== null) style.top = `${this.dragData.y}px`; let customLeft = this.styles.left ? parseFloat(this.styles.left) : 0;
if (this.dragData.x !== null) style.left = `${this.dragData.x - customLeft}px`;
if (this.dragData.y !== null) style.top = `${this.dragData.y - customTop}px`;
const width = parseInt(this.width); const width = parseInt(this.width);
const styleWidth = { const styleWidth = {
width: width <= 100 ? `${width}%` : `${width}px` width: width <= 100 ? `${width}%` : `${width}px`