From b8a0195379ea0862ae2464a68e92396c17e68604 Mon Sep 17 00:00:00 2001 From: tangjinzhou <415800467@qq.com> Date: Wed, 15 Jan 2020 21:03:36 +0800 Subject: [PATCH] feat: add parentContext for api modal #1709 --- components/modal/confirm.js | 4 ++- components/modal/index.en-US.md | 45 +++++++++++++++++---------------- components/modal/index.zh-CN.md | 45 +++++++++++++++++---------------- types/modal.d.ts | 2 ++ 4 files changed, 51 insertions(+), 45 deletions(-) diff --git a/components/modal/confirm.js b/components/modal/confirm.js index d9bb0a85a..c319d4654 100644 --- a/components/modal/confirm.js +++ b/components/modal/confirm.js @@ -2,13 +2,14 @@ import Vue from 'vue'; import ConfirmDialog from './ConfirmDialog'; import { destroyFns } from './Modal'; import Base from '../base'; +import Omit from 'omit.js'; export default function confirm(config) { const div = document.createElement('div'); const el = document.createElement('div'); div.appendChild(el); document.body.appendChild(div); - let currentConfig = { ...config, close, visible: true }; + let currentConfig = { ...Omit(config, ['parentContext']), close, visible: true }; let confirmDialogInstance = null; const confirmDialogProps = { props: {} }; @@ -46,6 +47,7 @@ export default function confirm(config) { const V = Base.Vue || Vue; return new V({ el: el, + parent: config.parentContext, data() { return { confirmDialogProps }; }, diff --git a/components/modal/index.en-US.md b/components/modal/index.en-US.md index 57744ef12..a5484beec 100644 --- a/components/modal/index.en-US.md +++ b/components/modal/index.en-US.md @@ -48,28 +48,29 @@ There are five ways to display the information based on the content's nature: The items listed above are all functions, expecting a settings object as parameter. The properties of the object are follows: -| Property | Description | Type | Default | -| --- | --- | --- | --- | -| autoFocusButton | Specify which button to autofocus | null\|string: `ok` `cancel` | `ok` | -| cancelText | Text of the Cancel button | string | `Cancel` | -| centered | Centered Modal | Boolean | `false` | -| closable | Whether a close (x) button is visible on top right of the modal dialog or not | boolean | `false` | -| class | class of container | string | - | -| content | Content | string\|vNode \|function(h) | - | -| icon | custom icon (`Added in 1.14.0`) | string\|()=>VNode | `` | -| iconType | Icon `type` of the Icon component (deperated after `1.14.0`) | string | `question-circle` | -| keyboard | Whether support press esc to close | Boolean | true | -| mask | Whether show mask or not. | Boolean | true | -| maskClosable | Whether to close the modal dialog when the mask (area outside the modal) is clicked | Boolean | `false` | -| okText | Text of the OK button | string | `OK` | -| okType | Button `type` of the OK button | string | `primary` | -| okButtonProps | The ok button props | [ButtonProps](/components/button) | - | -| cancelButtonProps | The cancel button props | [ButtonProps](/components/button) | - | -| title | Title | string\|vNode \|function(h) | - | -| width | Width of the modal dialog | string\|number | 416 | -| zIndex | The `z-index` of the Modal | Number | 1000 | -| onCancel | Specify a function that will be called when the user clicks the Cancel button. The parameter of this function is a function whose execution should include closing the dialog. You can also just return a promise and when the promise is resolved, the modal dialog will also be closed | function | - | -| onOk | Specify a function that will be called when the user clicks the OK button. The parameter of this function is a function whose execution should include closing the dialog. You can also just return a promise and when the promise is resolved, the modal dialog will also be closed | function | - | +| Property | Description | Type | Default | Version | +| --- | --- | --- | --- | --- | +| autoFocusButton | Specify which button to autofocus | null\|string: `ok` `cancel` | `ok` | | +| cancelText | Text of the Cancel button | string | `Cancel` | | +| centered | Centered Modal | Boolean | `false` | | +| closable | Whether a close (x) button is visible on top right of the modal dialog or not | boolean | `false` | | +| class | class of container | string | - | | +| content | Content | string\|vNode \|function(h) | - | | +| icon | custom icon (`Added in 1.14.0`) | string\|()=>VNode | `` | | +| iconType | Icon `type` of the Icon component (deperated after `1.14.0`) | string | `question-circle` | | +| keyboard | Whether support press esc to close | Boolean | true | | +| mask | Whether show mask or not. | Boolean | true | | +| maskClosable | Whether to close the modal dialog when the mask (area outside the modal) is clicked | Boolean | `false` | | +| okText | Text of the OK button | string | `OK` | | +| okType | Button `type` of the OK button | string | `primary` | | +| okButtonProps | The ok button props | [ButtonProps](/components/button) | - | | +| cancelButtonProps | The cancel button props | [ButtonProps](/components/button) | - | | +| title | Title | string\|vNode \|function(h) | - | | +| width | Width of the modal dialog | string\|number | 416 | | +| zIndex | The `z-index` of the Modal | Number | 1000 | | +| onCancel | Specify a function that will be called when the user clicks the Cancel button. The parameter of this function is a function whose execution should include closing the dialog. You can also just return a promise and when the promise is resolved, the modal dialog will also be closed | function | - | | +| onOk | Specify a function that will be called when the user clicks the OK button. The parameter of this function is a function whose execution should include closing the dialog. You can also just return a promise and when the promise is resolved, the modal dialog will also be closed | function | - | | +| parentContext | The parent context of the popup is generally used to get the parent provider, such as the configuration of `ConfigProvider` | vue instance | - | 1.4.11 | All the `Modal.method`s will return a reference, and then we can update and close the modal dialog by the reference. diff --git a/components/modal/index.zh-CN.md b/components/modal/index.zh-CN.md index aac086355..fe62bb5ef 100644 --- a/components/modal/index.zh-CN.md +++ b/components/modal/index.zh-CN.md @@ -49,28 +49,29 @@ 以上均为一个函数,参数为 object,具体属性如下: -| 参数 | 说明 | 类型 | 默认值 | -| --- | --- | --- | --- | -| autoFocusButton | 指定自动获得焦点的按钮 | null\|string: `ok` `cancel` | `ok` | -| cancelText | 取消按钮文字 | string | 取消 | -| centered | 垂直居中展示 Modal | Boolean | `false` | -| closable | 是否显示右上角的关闭按钮 | boolean | `false` | -| class | 容器类名 | string | - | -| content | 内容 | string \|vNode \|function(h) | 无 | -| icon | 自定义图标(1.14.0 新增) | string\|()=>VNode | `` | -| iconType | 图标类型(1.14.0 后废弃,请使用 `icon`) | string | `question-circle` | -| mask | 是否展示遮罩 | Boolean | true | -| maskClosable | 点击蒙层是否允许关闭 | Boolean | `false` | -| keyboard | 是否支持键盘 esc 关闭 | boolean | true | -| okText | 确认按钮文字 | string | 确定 | -| okType | 确认按钮类型 | string | primary | -| okButtonProps | ok 按钮 props | [ButtonProps](/components/button) | - | -| cancelButtonProps | cancel 按钮 props | [ButtonProps](/components/button) | - | -| title | 标题 | string\|vNode \|function(h) | 无 | -| width | 宽度 | string\|number | 416 | -| zIndex | 设置 Modal 的 `z-index` | Number | 1000 | -| onCancel | 取消回调,参数为关闭函数,返回 promise 时 resolve 后自动关闭 | function | 无 | -| onOk | 点击确定回调,参数为关闭函数,返回 promise 时 resolve 后自动关闭 | function | 无 | +| 参数 | 说明 | 类型 | 默认值 | 版本 | +| --- | --- | --- | --- | --- | +| autoFocusButton | 指定自动获得焦点的按钮 | null\|string: `ok` `cancel` | `ok` | | +| cancelText | 取消按钮文字 | string | 取消 | | +| centered | 垂直居中展示 Modal | Boolean | `false` | | +| closable | 是否显示右上角的关闭按钮 | boolean | `false` | | +| class | 容器类名 | string | - | | +| content | 内容 | string \|vNode \|function(h) | 无 | | +| icon | 自定义图标(1.14.0 新增) | string\|()=>VNode | `` | | +| iconType | 图标类型(1.14.0 后废弃,请使用 `icon`) | string | `question-circle` | | +| mask | 是否展示遮罩 | Boolean | true | | +| maskClosable | 点击蒙层是否允许关闭 | Boolean | `false` | | +| keyboard | 是否支持键盘 esc 关闭 | boolean | true | | +| okText | 确认按钮文字 | string | 确定 | | +| okType | 确认按钮类型 | string | primary | | +| okButtonProps | ok 按钮 props | [ButtonProps](/components/button) | - | | +| cancelButtonProps | cancel 按钮 props | [ButtonProps](/components/button) | - | | +| title | 标题 | string\|vNode \|function(h) | 无 | | +| width | 宽度 | string\|number | 416 | | +| zIndex | 设置 Modal 的 `z-index` | Number | 1000 | | +| onCancel | 取消回调,参数为关闭函数,返回 promise 时 resolve 后自动关闭 | function | 无 | | +| onOk | 点击确定回调,参数为关闭函数,返回 promise 时 resolve 后自动关闭 | function | 无 | | +| parentContext | 弹窗的父级上下文,一般用于获取父级 provider, 如获取 `ConfigProvider` 的配置 | vue instance | - | 1.4.11 | 以上函数调用后,会返回一个引用,可以通过该引用更新和关闭弹窗。 diff --git a/types/modal.d.ts b/types/modal.d.ts index 6a416adae..b49ccd77b 100644 --- a/types/modal.d.ts +++ b/types/modal.d.ts @@ -127,6 +127,8 @@ export interface ModalOptions { * @type Function */ onOk?: () => any; + + parentContext: Object; } export interface ModalConfirm {