diff --git a/examples/docs/en-US/dialog.md b/examples/docs/en-US/dialog.md index ae5755149..f8c4049a4 100644 --- a/examples/docs/en-US/dialog.md +++ b/examples/docs/en-US/dialog.md @@ -164,6 +164,7 @@ The content of Dialog can be anything, even a table or a form. This example show | size | size of Dialog | string | tiny/small/large/full | small | | top | value for `top` of Dialog CSS, works when `size` is not `full` | string | — | 15% | | modal | whether a mask is displayed | boolean | — | true | +| modalAppendToBody | whether to append modal to body element. If false, the modal will be appended to Dialog's parent element | boolean | — | true | | lock-scroll | whether scroll of body is disabled while Dialog is displayed | boolean | — | true | | custom-class | custom class names for Dialog | string | — | — | | close-on-click-modal | whether the Dialog can be closed by clicking the mask | boolean | — | true | diff --git a/examples/docs/zh-CN/dialog.md b/examples/docs/zh-CN/dialog.md index 6833e3760..c6fe0888d 100644 --- a/examples/docs/zh-CN/dialog.md +++ b/examples/docs/zh-CN/dialog.md @@ -183,6 +183,7 @@ Dialog 组件的内容可以是任意的,甚至可以是表格或表单,下 | size | Dialog 的大小 | string | tiny/small/large/full | small | | top | Dialog CSS 中的 top 值(仅在 size 不为 full 时有效) | string | — | 15% | | modal | 是否需要遮罩层 | boolean | — | true | +| modalAppendToBody | 遮罩层是否插入至 body 元素上,若为 false,则遮罩层会插入至 Dialog 的父元素上 | boolean | — | true | | lock-scroll | 是否在 Dialog 出现时将 body 滚动锁定 | boolean | — | true | | custom-class | Dialog 的自定义类名 | string | — | — | | close-on-click-modal | 是否可以通过点击 modal 关闭 Dialog | boolean | — | true | diff --git a/packages/dialog/src/component.vue b/packages/dialog/src/component.vue index 080bff6e1..86a142605 100644 --- a/packages/dialog/src/component.vue +++ b/packages/dialog/src/component.vue @@ -39,6 +39,11 @@ type: Boolean, default: true }, + + modalAppendToBody: { + type: Boolean, + default: true + }, lockScroll: { type: Boolean, diff --git a/src/utils/popup/index.js b/src/utils/popup/index.js index 88cf1e214..f2aaba99e 100644 --- a/src/utils/popup/index.js +++ b/src/utils/popup/index.js @@ -93,6 +93,10 @@ export default { }, modalClass: { }, + modalAppendToBody: { + type: Boolean, + default: false + }, lockScroll: { type: Boolean, default: true @@ -208,7 +212,7 @@ export default { PopupManager.closeModal(this._popupId); this._closing = false; } - PopupManager.openModal(this._popupId, PopupManager.nextZIndex(), dom, props.modalClass, props.modalFade); + PopupManager.openModal(this._popupId, PopupManager.nextZIndex(), this.modalAppendToBody ? undefined : dom, props.modalClass, props.modalFade); if (props.lockScroll) { if (!this.bodyOverflow) { this.bodyPaddingRight = document.body.style.paddingRight;