tjz
7 years ago
36 changed files with 1255 additions and 44 deletions
@ -0,0 +1,23 @@
|
||||
<cn> |
||||
#### 顶部公告 |
||||
页面顶部通告形式,默认有图标且`type` 为 'warning'。 |
||||
</cn> |
||||
|
||||
<us> |
||||
#### Banner |
||||
Display Alert as a banner at top of page. |
||||
</us> |
||||
|
||||
```html |
||||
<template> |
||||
<div> |
||||
<a-alert message="Warning text" banner /> |
||||
<br /> |
||||
<a-alert message="Very long warning text warning text text text text text text text" banner closable /> |
||||
<br /> |
||||
<a-alert :showIcon="false" message="Warning text without icon" banner /> |
||||
<br /> |
||||
<a-alert type="error" message="Error text" banner /> |
||||
</div> |
||||
</template> |
||||
``` |
@ -0,0 +1,15 @@
|
||||
<cn> |
||||
#### 基本 |
||||
最简单的用法,适用于简短的警告提示。 |
||||
</cn> |
||||
|
||||
<us> |
||||
#### basic |
||||
The simplest usage for short messages. |
||||
</us> |
||||
|
||||
```html |
||||
<template> |
||||
<a-alert message="Success Text" type="success" /> |
||||
</template> |
||||
``` |
@ -0,0 +1,38 @@
|
||||
<cn> |
||||
#### 可关闭的警告提示 |
||||
显示关闭按钮,点击可关闭警告提示。 |
||||
</cn> |
||||
|
||||
<us> |
||||
#### Closable |
||||
To show close button. |
||||
</us> |
||||
|
||||
```html |
||||
<template> |
||||
<div> |
||||
<a-alert |
||||
message="Warning Text Warning Text Warning TextW arning Text Warning Text Warning TextWarning Text" |
||||
type="warning" |
||||
closable |
||||
@close="onClose" |
||||
/> |
||||
<a-alert |
||||
message="Error Text" |
||||
description="Error Description Error Description Error Description Error Description Error Description Error Description" |
||||
type="error" |
||||
closable |
||||
@close="onClose" |
||||
/> |
||||
</div> |
||||
</template> |
||||
<script> |
||||
export default { |
||||
methods: { |
||||
onClose(e) { |
||||
console.log(e, 'I was closed.'); |
||||
} |
||||
} |
||||
} |
||||
</script> |
||||
``` |
@ -0,0 +1,15 @@
|
||||
<cn> |
||||
#### 自定义关闭 |
||||
可以自定义关闭,自定义的文字会替换原先的关闭 `Icon`。 |
||||
</cn> |
||||
|
||||
<us> |
||||
#### Customized Close Text |
||||
Replace the default icon with customized text. |
||||
</us> |
||||
|
||||
```html |
||||
<template> |
||||
<a-alert message="Info Text" type="info" closeText="Close Now" /> |
||||
</template> |
||||
``` |
@ -0,0 +1,39 @@
|
||||
<cn> |
||||
#### 含有辅助性文字介绍 |
||||
含有辅助性文字介绍的警告提示。 |
||||
</cn> |
||||
|
||||
<us> |
||||
#### Description |
||||
Additional description for alert message. |
||||
</us> |
||||
|
||||
```html |
||||
<template> |
||||
<div> |
||||
<a-alert |
||||
message="Success Text" |
||||
type="success" |
||||
> |
||||
<p slot="description"> |
||||
Success Description <span style="color: red">Success</span> Description Success Description |
||||
</p> |
||||
</a-alert> |
||||
<a-alert |
||||
message="Info Text" |
||||
description="Info Description Info Description Info Description Info Description" |
||||
type="info" |
||||
/> |
||||
<a-alert |
||||
message="Warning Text" |
||||
description="Warning Description Warning Description Warning Description Warning Description" |
||||
type="warning" |
||||
/> |
||||
<a-alert |
||||
message="Error Text" |
||||
description="Error Description Error Description Error Description Error Description" |
||||
type="error" |
||||
/> |
||||
</div> |
||||
</template> |
||||
``` |
@ -0,0 +1,44 @@
|
||||
<cn> |
||||
#### 图标 |
||||
可口的图标让信息类型更加醒目。 |
||||
</cn> |
||||
|
||||
<us> |
||||
#### Icon |
||||
Decent icon make information more clear and more friendly. |
||||
</us> |
||||
|
||||
```html |
||||
<template> |
||||
<div> |
||||
<a-alert message="Success Tips" type="success" showIcon /> |
||||
<a-alert message="Informational Notes" type="info" showIcon /> |
||||
<a-alert message="Warning" type="warning" showIcon /> |
||||
<a-alert message="Error" type="error" showIcon /> |
||||
<a-alert |
||||
message="Success Tips" |
||||
description="Detailed description and advices about successful copywriting." |
||||
type="success" |
||||
showIcon |
||||
/> |
||||
<a-alert |
||||
message="Informational Notes" |
||||
description="Additional description and informations about copywriting." |
||||
type="info" |
||||
showIcon |
||||
/> |
||||
<a-alert |
||||
message="Warning" |
||||
description="This is a warning notice about copywriting." |
||||
type="warning" |
||||
showIcon |
||||
/> |
||||
<a-alert |
||||
message="Error" |
||||
description="This is an error message about copywriting." |
||||
type="error" |
||||
showIcon |
||||
/> |
||||
</div> |
||||
</template> |
||||
``` |
@ -0,0 +1,55 @@
|
||||
<script> |
||||
import Banner from './banner' |
||||
import Basic from './basic' |
||||
import Closable from './closable' |
||||
import CloseText from './close-text' |
||||
import Description from './description' |
||||
import Icon from './icon' |
||||
import Style from './style' |
||||
|
||||
import CN from '../index.zh-CN.md' |
||||
import US from '../index.en-US.md' |
||||
const md = { |
||||
cn: `# Alert 警告提示 |
||||
警告提示,展现需要关注的信息。 |
||||
## 何时使用 |
||||
- 当某个页面需要向用户显示警告的信息时。 |
||||
- 非浮层的静态展现形式,始终展现,不会自动消失,用户可以点击关闭。 |
||||
## 代码演示`, |
||||
us: `# Alert |
||||
Alert component for feedback. |
||||
## When To Use |
||||
- When you need to show alert messages to users. |
||||
- When you need a persistent static container which is closable by user actions. |
||||
`, |
||||
} |
||||
export default { |
||||
category: 'Components', |
||||
subtitle: '警告提示', |
||||
type: 'Feedback', |
||||
title: 'Alert', |
||||
render () { |
||||
return ( |
||||
<div> |
||||
<md cn={md.cn} us={md.us}/> |
||||
< Banner/> |
||||
<Basic/> |
||||
<Closable/> |
||||
<CloseText/> |
||||
<Description/> |
||||
<Icon/> |
||||
<Style/> |
||||
<api> |
||||
<CN slot='cn' /> |
||||
<US/> |
||||
</api> |
||||
</div> |
||||
) |
||||
}, |
||||
} |
||||
</script> |
||||
<style> |
||||
.ant-alert { |
||||
margin-bottom: 16px; |
||||
} |
||||
</style> |
@ -0,0 +1,20 @@
|
||||
<cn> |
||||
#### 四种样式 |
||||
共有四种样式 `success`、`info`、`warning`、`error`。 |
||||
</cn> |
||||
|
||||
<us> |
||||
#### More types |
||||
There are 4 types of Alert: `success`, `info`, `warning`, `error`. |
||||
</us> |
||||
|
||||
```html |
||||
<template> |
||||
<div> |
||||
<a-alert message="Success Text" type="success" /> |
||||
<a-alert message="Info Text" type="info" /> |
||||
<a-alert message="Warning Text" type="warning" /> |
||||
<a-alert message="Error Text" type="error" /> |
||||
</div> |
||||
</template> |
||||
``` |
@ -0,0 +1,18 @@
|
||||
|
||||
## API |
||||
|
||||
| Property | Description | Type | Default | |
||||
| -------- | ----------- | ---- | ------- | |
||||
| banner | Whether to show as banner | boolean | false | |
||||
| closable | Whether Alert can be closed | boolean | - | |
||||
| closeText | Close text to show | string\|slot | - | |
||||
| description | Additional content of Alert | string\|slot | - | |
||||
| message | Content of Alert | string\|slot | - | |
||||
| showIcon | Whether to show icon | boolean | false, in `banner` mode default is true | |
||||
| iconType | Icon type, effective when `showIcon` is `true` | string | - | |
||||
| type | Type of Alert styles, options: `success`, `info`, `warning`, `error` | string | `info`, in `banner` mode default is `warning` | |
||||
|
||||
### events |
||||
| Events Name | Description | Arguments | |
||||
| --- | --- | --- | |
||||
| close | Callback when Alert is closed | Function | |
@ -0,0 +1,133 @@
|
||||
<script> |
||||
import Icon from '../icon' |
||||
import classNames from 'classnames' |
||||
import BaseMixin from '../_util/BaseMixin' |
||||
import PropTypes from '../_util/vue-types' |
||||
import getTransitionProps from '../_util/getTransitionProps' |
||||
import { getComponentFromProp } from '../_util/props-util' |
||||
|
||||
export const AlertProps = { |
||||
/** |
||||
* Type of Alert styles, options:`success`, `info`, `warning`, `error` |
||||
*/ |
||||
type: PropTypes.oneOf(['success', 'info', 'warning', 'error']), |
||||
/** Whether Alert can be closed */ |
||||
closable: PropTypes.bool, |
||||
/** Close text to show */ |
||||
closeText: PropTypes.any, |
||||
/** Content of Alert */ |
||||
message: PropTypes.any, |
||||
/** Additional content of Alert */ |
||||
description: PropTypes.any, |
||||
/** Callback when close Alert */ |
||||
// onClose?: React.MouseEventHandler<HTMLAnchorElement>; |
||||
/** Whether to show icon */ |
||||
showIcon: PropTypes.bool, |
||||
iconType: PropTypes.string, |
||||
prefixCls: PropTypes.string, |
||||
banner: PropTypes.bool, |
||||
} |
||||
|
||||
export default { |
||||
props: AlertProps, |
||||
mixins: [BaseMixin], |
||||
name: 'Alert', |
||||
data () { |
||||
return { |
||||
closing: true, |
||||
closed: false, |
||||
} |
||||
}, |
||||
methods: { |
||||
handleClose (e) { |
||||
e.preventDefault() |
||||
const dom = this.$el |
||||
dom.style.height = `${dom.offsetHeight}px` |
||||
// Magic code |
||||
// 重复一次后才能正确设置 height |
||||
dom.style.height = `${dom.offsetHeight}px` |
||||
|
||||
this.setState({ |
||||
closing: false, |
||||
}) |
||||
this.$emit('close', e) |
||||
}, |
||||
animationEnd () { |
||||
this.setState({ |
||||
closed: true, |
||||
closing: true, |
||||
}) |
||||
}, |
||||
}, |
||||
|
||||
render () { |
||||
const { prefixCls = 'ant-alert', banner, closing, closed } = this |
||||
let { closable, type, showIcon, iconType } = this |
||||
const closeText = getComponentFromProp(this, 'closeText') |
||||
const description = getComponentFromProp(this, 'description') |
||||
const message = getComponentFromProp(this, 'message') |
||||
// banner模式默认有 Icon |
||||
showIcon = banner && showIcon === undefined ? true : showIcon |
||||
// banner模式默认为警告 |
||||
type = banner && type === undefined ? 'warning' : type || 'info' |
||||
|
||||
if (!iconType) { |
||||
switch (type) { |
||||
case 'success': |
||||
iconType = 'check-circle' |
||||
break |
||||
case 'info': |
||||
iconType = 'info-circle' |
||||
break |
||||
case 'error': |
||||
iconType = 'cross-circle' |
||||
break |
||||
case 'warning': |
||||
iconType = 'exclamation-circle' |
||||
break |
||||
default: |
||||
iconType = 'default' |
||||
} |
||||
|
||||
// use outline icon in alert with description |
||||
if (description) { |
||||
iconType += '-o' |
||||
} |
||||
} |
||||
|
||||
const alertCls = classNames(prefixCls, { |
||||
[`${prefixCls}-${type}`]: true, |
||||
[`${prefixCls}-close`]: !closing, |
||||
[`${prefixCls}-with-description`]: !!description, |
||||
[`${prefixCls}-no-icon`]: !showIcon, |
||||
[`${prefixCls}-banner`]: !!banner, |
||||
}) |
||||
|
||||
// closeable when closeText is assigned |
||||
if (closeText) { |
||||
closable = true |
||||
} |
||||
|
||||
const closeIcon = closable ? ( |
||||
<a onClick={this.handleClose} class={`${prefixCls}-close-icon`}> |
||||
{closeText || <Icon type='cross' />} |
||||
</a> |
||||
) : null |
||||
const transitionProps = getTransitionProps(`${prefixCls}-slide-up`, { |
||||
appear: false, |
||||
afterLeave: this.animationEnd, |
||||
}) |
||||
return closed ? null : ( |
||||
<transition {...transitionProps}> |
||||
<div v-show={closing} class={alertCls}> |
||||
{showIcon ? <Icon class={`${prefixCls}-icon`} type={iconType} /> : null} |
||||
<span class={`${prefixCls}-message`}>{message}</span> |
||||
<span class={`${prefixCls}-description`}>{description}</span> |
||||
{closeIcon} |
||||
</div> |
||||
</transition> |
||||
) |
||||
}, |
||||
} |
||||
|
||||
</script> |
@ -0,0 +1,18 @@
|
||||
|
||||
## API |
||||
|
||||
| 参数 | 说明 | 类型 | 默认值 | |
||||
| --- | --- | --- | --- | |
||||
| banner | 是否用作顶部公告 | boolean | false | |
||||
| closable | 默认不显示关闭按钮 | boolean | 无 | |
||||
| closeText | 自定义关闭按钮 | string\|slot | 无 | |
||||
| description | 警告提示的辅助性文字介绍 | string\|slot | 无 | |
||||
| message | 警告提示内容 | string\|slot | 无 | |
||||
| showIcon | 是否显示辅助图标 | boolean | false,`banner` 模式下默认值为 true | |
||||
| iconType | 自定义图标类型,`showIcon` 为 `true` 时有效 | string | - | |
||||
| type | 指定警告提示的样式,有四种选择 `success`、`info`、`warning`、`error` | string | `info`,`banner` 模式下默认值为 `warning` | |
||||
|
||||
### 事件 |
||||
| 事件名称 | 说明 | 回调参数 | |
||||
| --- | --- | --- | |
||||
| close | 关闭时触发的回调函数 | Function | |
@ -0,0 +1,2 @@
|
||||
import '../../style/index.less' |
||||
import './index.less' |
@ -0,0 +1,169 @@
|
||||
@import "../../style/themes/default"; |
||||
@import "../../style/mixins/index"; |
||||
|
||||
@alert-prefix-cls: ~"@{ant-prefix}-alert"; |
||||
|
||||
@alert-message-color: @heading-color; |
||||
@alert-text-color: @text-color; |
||||
|
||||
.@{alert-prefix-cls} { |
||||
.reset-component; |
||||
position: relative; |
||||
padding: 8px 15px 8px 37px; |
||||
border-radius: @border-radius-base; |
||||
|
||||
&&-no-icon { |
||||
padding: 8px 15px; |
||||
} |
||||
|
||||
&-icon { |
||||
top: 8px + @font-size-base * @line-height-base / 2 - @font-size-base / 2 + 1px; |
||||
left: 16px; |
||||
position: absolute; |
||||
} |
||||
|
||||
&-description { |
||||
font-size: @font-size-base; |
||||
line-height: 22px; |
||||
display: none; |
||||
} |
||||
|
||||
&-success { |
||||
border: @border-width-base @border-style-base ~`colorPalette("@{success-color}", 3)`; |
||||
background-color: ~`colorPalette("@{success-color}", 1)`; |
||||
.@{alert-prefix-cls}-icon { |
||||
color: @success-color; |
||||
} |
||||
} |
||||
|
||||
&-info { |
||||
border: @border-width-base @border-style-base ~`colorPalette("@{info-color}", 3)`; |
||||
background-color: ~`colorPalette("@{info-color}", 1)`; |
||||
.@{alert-prefix-cls}-icon { |
||||
color: @info-color; |
||||
} |
||||
} |
||||
|
||||
&-warning { |
||||
border: @border-width-base @border-style-base ~`colorPalette("@{warning-color}", 3)`; |
||||
background-color: ~`colorPalette("@{warning-color}", 1)`; |
||||
.@{alert-prefix-cls}-icon { |
||||
color: @warning-color; |
||||
} |
||||
} |
||||
|
||||
&-error { |
||||
border: @border-width-base @border-style-base ~`colorPalette("@{error-color}", 3)`; |
||||
background-color: ~`colorPalette("@{error-color}", 1)`; |
||||
.@{alert-prefix-cls}-icon { |
||||
color: @error-color; |
||||
} |
||||
} |
||||
|
||||
&-close-icon { |
||||
font-size: @font-size-sm; |
||||
position: absolute; |
||||
right: 16px; |
||||
top: 8px; |
||||
line-height: 22px; |
||||
overflow: hidden; |
||||
cursor: pointer; |
||||
|
||||
.@{iconfont-css-prefix}-cross { |
||||
color: @text-color-secondary; |
||||
transition: color .3s; |
||||
&:hover { |
||||
color: #404040; |
||||
} |
||||
} |
||||
} |
||||
|
||||
&-close-text { |
||||
position: absolute; |
||||
right: 16px; |
||||
} |
||||
|
||||
&-with-description { |
||||
padding: 15px 15px 15px 64px; |
||||
position: relative; |
||||
border-radius: @border-radius-base; |
||||
color: @text-color; |
||||
line-height: @line-height-base; |
||||
} |
||||
|
||||
&-with-description&-no-icon { |
||||
padding: 15px; |
||||
} |
||||
|
||||
&-with-description &-icon { |
||||
position: absolute; |
||||
top: 16px; |
||||
left: 24px; |
||||
font-size: 24px; |
||||
} |
||||
|
||||
&-with-description &-close-icon { |
||||
position: absolute; |
||||
top: 16px; |
||||
right: 16px; |
||||
cursor: pointer; |
||||
font-size: @font-size-base; |
||||
} |
||||
|
||||
&-with-description &-message { |
||||
font-size: @font-size-lg; |
||||
color: @alert-message-color; |
||||
display: block; |
||||
margin-bottom: 4px; |
||||
} |
||||
|
||||
&-with-description &-description { |
||||
display: block; |
||||
} |
||||
|
||||
&&-close { |
||||
height: 0 !important; |
||||
margin: 0; |
||||
padding-top: 0; |
||||
padding-bottom: 0; |
||||
transition: all .3s @ease-in-out-circ; |
||||
transform-origin: 50% 0; |
||||
} |
||||
|
||||
&-slide-up-leave { |
||||
animation: antAlertSlideUpOut .3s @ease-in-out-circ; |
||||
animation-fill-mode: both; |
||||
} |
||||
|
||||
&-banner { |
||||
border-radius: 0; |
||||
border: 0; |
||||
margin-bottom: 0; |
||||
} |
||||
} |
||||
|
||||
@keyframes antAlertSlideUpIn { |
||||
0% { |
||||
opacity: 0; |
||||
transform-origin: 0% 0%; |
||||
transform: scaleY(0); |
||||
} |
||||
100% { |
||||
opacity: 1; |
||||
transform-origin: 0% 0%; |
||||
transform: scaleY(1); |
||||
} |
||||
} |
||||
|
||||
@keyframes antAlertSlideUpOut { |
||||
0% { |
||||
opacity: 1; |
||||
transform-origin: 0% 0%; |
||||
transform: scaleY(1); |
||||
} |
||||
100% { |
||||
opacity: 0; |
||||
transform-origin: 0% 0%; |
||||
transform: scaleY(0); |
||||
} |
||||
} |
@ -0,0 +1,57 @@
|
||||
|
||||
<cn> |
||||
#### 异步关闭 |
||||
点击确定后异步关闭对话框,例如提交表单。 |
||||
</cn> |
||||
|
||||
<us> |
||||
#### Asynchronously close |
||||
Asynchronously close a modal dialog when a user clicked OK button, for example, |
||||
you can use this pattern when you submit a form. |
||||
</us> |
||||
|
||||
```html |
||||
<template> |
||||
<div> |
||||
<a-button type="primary" @click="showModal">Open</a-button> |
||||
<a-modal |
||||
title="Title" |
||||
:visible="visible" |
||||
@ok="handleOk" |
||||
:confirmLoading="confirmLoading" |
||||
@cancel="handleCancel" |
||||
> |
||||
<p>{{ModalText}}</p> |
||||
</a-modal> |
||||
</div> |
||||
</template> |
||||
<script> |
||||
export default { |
||||
data() { |
||||
return { |
||||
ModalText: 'Content of the modal', |
||||
visible: false, |
||||
confirmLoading: false, |
||||
} |
||||
}, |
||||
methods: { |
||||
showModal() { |
||||
this.visible = true |
||||
}, |
||||
handleOk(e) { |
||||
this.ModalText = 'The modal will be closed after two seconds'; |
||||
this.confirmLoading = true; |
||||
setTimeout(() => { |
||||
this.visible = false; |
||||
this.confirmLoading = false; |
||||
}, 2000); |
||||
}, |
||||
handleCancel(e) { |
||||
console.log('Clicked cancel button'); |
||||
this.visible = false |
||||
}, |
||||
} |
||||
} |
||||
</script> |
||||
``` |
||||
|
@ -0,0 +1,40 @@
|
||||
|
||||
<cn> |
||||
#### 确认对话框 |
||||
使用 `confirm()` 可以快捷地弹出确认框。onCancel/onOk 返回 promise 可以延迟关闭 |
||||
</cn> |
||||
|
||||
<us> |
||||
#### Confirmation modal dialog |
||||
To use `confirm()` to popup confirmation modal dialog. Let onCancel/onOk function return a promise object to |
||||
delay closing the dialog. |
||||
</us> |
||||
|
||||
```html |
||||
<template> |
||||
<a-button @click="showConfirm"> |
||||
Confirm |
||||
</a-button> |
||||
</template> |
||||
<script> |
||||
import { Modal } from 'antd' |
||||
const confirm = Modal.confirm |
||||
export default { |
||||
methods: { |
||||
showConfirm() { |
||||
confirm({ |
||||
title: 'Do you want to delete these items?', |
||||
content: 'When clicked the OK button, this dialog will be closed after 1 second', |
||||
onOk() { |
||||
return new Promise((resolve, reject) => { |
||||
setTimeout(Math.random() > 0.5 ? resolve : reject, 1000); |
||||
}).catch(() => console.log('Oops errors!')); |
||||
}, |
||||
onCancel() {}, |
||||
}); |
||||
}, |
||||
} |
||||
} |
||||
</script> |
||||
``` |
||||
|
@ -0,0 +1,67 @@
|
||||
|
||||
<cn> |
||||
#### 自定义页脚 |
||||
更复杂的例子,自定义了页脚的按钮,点击提交后进入 loading 状态,完成后关闭。 |
||||
不需要默认确定取消按钮时,你可以把 `footer` 设为 `null`。 |
||||
</cn> |
||||
|
||||
<us> |
||||
#### Customized Footer |
||||
A more complex example which define a customized footer button bar, |
||||
the dialog will change to loading state after clicking submit button, when the loading is over, |
||||
the modal dialog will be closed. |
||||
You could set `footer` to `null` if you don't need default footer buttons. |
||||
</us> |
||||
|
||||
```html |
||||
<template> |
||||
<div> |
||||
<a-button type="primary" @click="showModal"> |
||||
Open |
||||
</a-button> |
||||
<a-modal |
||||
v-model="visible" |
||||
title="Title" |
||||
onOk="handleOk" |
||||
> |
||||
<template slot="footer"> |
||||
<a-button key="back" @click="handleCancel">Return</a-button> |
||||
<a-button key="submit" type="primary" :loading="loading" @click="handleOk"> |
||||
Submit |
||||
</a-button> |
||||
</template> |
||||
<p>Some contents...</p> |
||||
<p>Some contents...</p> |
||||
<p>Some contents...</p> |
||||
<p>Some contents...</p> |
||||
<p>Some contents...</p> |
||||
</a-modal> |
||||
</div> |
||||
</template> |
||||
<script> |
||||
export default { |
||||
data() { |
||||
return { |
||||
loading: false, |
||||
visible: false, |
||||
} |
||||
}, |
||||
methods: { |
||||
showModal() { |
||||
this.visible = true; |
||||
}, |
||||
handleOk(e) { |
||||
this.loading = true; |
||||
setTimeout(() => { |
||||
this.visible = false; |
||||
this.loading = false; |
||||
}, 3000); |
||||
}, |
||||
handleCancel(e) { |
||||
this.visible = false; |
||||
}, |
||||
} |
||||
} |
||||
</script> |
||||
``` |
||||
|
@ -0,0 +1,63 @@
|
||||
<script> |
||||
import Async from './async' |
||||
import Basic from './basic' |
||||
import ConfirmPromise from './confirm-promise' |
||||
import Confirm from './confirm' |
||||
import Footer from './footer' |
||||
import Info from './info' |
||||
import Locale from './locale' |
||||
import Manual from './manual' |
||||
import Position from './position' |
||||
|
||||
import CN from '../index.zh-CN.md' |
||||
import US from '../index.en-US.md' |
||||
const md = { |
||||
cn: `# Modal 对话框 |
||||
模态对话框。 |
||||
## 何时使用 |
||||
需要用户处理事务,又不希望跳转页面以致打断工作流程时,可以使用 \`Modal\` 在当前页面正中打开一个浮层,承载相应的操作。 |
||||
另外当需要一个简洁的确认框询问用户时,可以使用精心封装好的 \`antd.Modal.confirm()\` 等方法。 |
||||
## 代码演示`, |
||||
us: `# Modal |
||||
Modal dialogs. |
||||
## When To Use |
||||
When requiring users to interact with the application, but without jumping to a new page and interrupting |
||||
the user's workflow, you can use \`Modal\` to create a new floating layer over the current page to get user |
||||
feedback or display information. |
||||
Additionally, if you need show a simple confirmation dialog, you can use \`antd.Modal.confirm()\`, |
||||
and so on. |
||||
`, |
||||
} |
||||
export default { |
||||
type: 'Feedback', |
||||
category: 'Components', |
||||
subtitle: '对话框', |
||||
title: 'Modal', |
||||
render () { |
||||
return ( |
||||
<div> |
||||
<md cn={md.cn} us={md.us}/> |
||||
<Async/> |
||||
<Basic/> |
||||
<ConfirmPromise/> |
||||
<Confirm/> |
||||
<Footer/> |
||||
<Info/> |
||||
<Locale/> |
||||
<Manual/> |
||||
<Position/> |
||||
<api> |
||||
<CN slot='cn' /> |
||||
<US/> |
||||
</api> |
||||
</div> |
||||
) |
||||
}, |
||||
} |
||||
</script> |
||||
|
||||
<style> |
||||
.code-box-demo .ant-btn { |
||||
margin-right: 8px; |
||||
} |
||||
</style> |
@ -0,0 +1,66 @@
|
||||
|
||||
<cn> |
||||
#### 信息提示 |
||||
各种类型的信息提示,只提供一个按钮用于关闭。 |
||||
</cn> |
||||
|
||||
<us> |
||||
#### Information modal dialog |
||||
In the various types of information modal dialog, only one button to close dialog is provided. |
||||
</us> |
||||
|
||||
```html |
||||
<template> |
||||
<div> |
||||
<a-button @click="info">Info</a-button> |
||||
<a-button @click="success">Success</a-button> |
||||
<a-button @click="error">Error</a-button> |
||||
<a-button @click="warning">Warning</a-button> |
||||
</div> |
||||
</template> |
||||
<script> |
||||
import { Modal } from 'antd' |
||||
export default { |
||||
methods: { |
||||
info() { |
||||
const h = this.$createElement |
||||
Modal.info({ |
||||
title: 'This is a notification message', |
||||
content: h('div',{}, [ |
||||
h('p', 'some messages...some messages...'), |
||||
h('p', 'some messages...some messages...'), |
||||
]), |
||||
onOk() {}, |
||||
}); |
||||
}, |
||||
|
||||
success() { |
||||
Modal.success({ |
||||
title: 'This is a success message', |
||||
content: ( // JSX support |
||||
<div> |
||||
<p>some messages...some messages...</p> |
||||
<p>some messages...some messages...</p> |
||||
</div> |
||||
), |
||||
}); |
||||
}, |
||||
|
||||
error() { |
||||
Modal.error({ |
||||
title: 'This is an error message', |
||||
content: 'some messages...some messages...', |
||||
}); |
||||
}, |
||||
|
||||
warning() { |
||||
Modal.warning({ |
||||
title: 'This is a warning message', |
||||
content: 'some messages...some messages...', |
||||
}); |
||||
}, |
||||
} |
||||
} |
||||
</script> |
||||
``` |
||||
|
@ -0,0 +1,60 @@
|
||||
|
||||
<cn> |
||||
#### 国际化 |
||||
设置 `okText` 与 `cancelText` 以自定义按钮文字。 |
||||
</cn> |
||||
|
||||
<us> |
||||
#### Internationalization |
||||
To customize the text of the buttons, you need to set `okText` and `cancelText` props. |
||||
</us> |
||||
|
||||
```html |
||||
<template> |
||||
<div> |
||||
<a-button type="primary" @click="showModal">Modal</a-button> |
||||
<a-modal |
||||
title="Modal" |
||||
v-model="visible" |
||||
@ok="hideModal" |
||||
okText="确认" |
||||
cancelText="取消" |
||||
> |
||||
<p>Bla bla ...</p> |
||||
<p>Bla bla ...</p> |
||||
<p>Bla bla ...</p> |
||||
</a-modal> |
||||
<br /> |
||||
<br /> |
||||
<a-button @click="confirm">Confirm</a-button> |
||||
</div> |
||||
</template> |
||||
<script> |
||||
import { Modal } from 'antd' |
||||
const confirm = Modal.confirm |
||||
export default { |
||||
data() { |
||||
return { |
||||
visible: false, |
||||
} |
||||
}, |
||||
methods: { |
||||
showModal() { |
||||
this.visible = true |
||||
}, |
||||
hideModal() { |
||||
this.visible = false |
||||
}, |
||||
confirm() { |
||||
confirm({ |
||||
title: 'Confirm', |
||||
content: 'Bla bla ...', |
||||
okText: '确认', |
||||
cancelText: '取消', |
||||
}); |
||||
} |
||||
} |
||||
} |
||||
</script> |
||||
``` |
||||
|
@ -0,0 +1,31 @@
|
||||
|
||||
<cn> |
||||
#### 手动移除 |
||||
手动关闭modal。 |
||||
</cn> |
||||
|
||||
<us> |
||||
#### Manual to destroy |
||||
Manually destroying a modal. |
||||
</us> |
||||
|
||||
```html |
||||
<template> |
||||
<a-button @click="success">Success</a-button> |
||||
</template> |
||||
<script> |
||||
import { Modal } from 'antd' |
||||
export default { |
||||
methods: { |
||||
success() { |
||||
const modal = Modal.success({ |
||||
title: 'This is a notification message', |
||||
content: 'This modal will be destroyed after 1 second', |
||||
}); |
||||
setTimeout(() => modal.destroy(), 1000); |
||||
} |
||||
} |
||||
} |
||||
</script> |
||||
``` |
||||
|
@ -0,0 +1,92 @@
|
||||
|
||||
<cn> |
||||
#### 自定义位置 |
||||
使用 `style.top` 或配合其他样式来设置对话框位置。 |
||||
</cn> |
||||
|
||||
<us> |
||||
#### To customize the position of modal |
||||
You can use `style.top` or other styles to set position of modal dialog. |
||||
</us> |
||||
|
||||
```html |
||||
<template> |
||||
<div> |
||||
<a-button type="primary" @click="() => setModal1Visible(true)">Display a modal dialog at 20px to Top</a-button> |
||||
<a-modal |
||||
title="20px to Top" |
||||
style="top: 20px;" |
||||
:visible="modal1Visible" |
||||
@ok="() => setModal1Visible(false)" |
||||
@cancel="() => setModal1Visible(false)" |
||||
> |
||||
<p>some contents...</p> |
||||
<p>some contents...</p> |
||||
<p>some contents...</p> |
||||
</a-modal> |
||||
<br /><br /> |
||||
<a-button type="primary" @click="() => modal2Visible = true">Vertically centered modal dialog</a-button> |
||||
<a-modal |
||||
title="Vertically centered modal dialog" |
||||
wrapClassName="vertical-center-modal" |
||||
v-model="modal2Visible" |
||||
@ok="() => modal2Visible = false" |
||||
> |
||||
<p>some contents...</p> |
||||
<p>some contents...</p> |
||||
<p>some contents...</p> |
||||
</a-modal> |
||||
</div> |
||||
</template> |
||||
<script> |
||||
export default { |
||||
data() { |
||||
return { |
||||
modal1Visible: false, |
||||
modal2Visible: false, |
||||
} |
||||
}, |
||||
methods: { |
||||
setModal1Visible(modal1Visible) { |
||||
this.modal1Visible = modal1Visible; |
||||
}, |
||||
} |
||||
} |
||||
</script> |
||||
<style> |
||||
/* use css to set position of modal */ |
||||
.vertical-center-modal { |
||||
text-align: center; |
||||
white-space: nowrap; |
||||
} |
||||
|
||||
.vertical-center-modal:before { |
||||
content: ''; |
||||
display: inline-block; |
||||
height: 100%; |
||||
vertical-align: middle; |
||||
width: 0; |
||||
} |
||||
|
||||
.vertical-center-modal .ant-modal { |
||||
display: inline-block; |
||||
vertical-align: middle; |
||||
top: 0; |
||||
text-align: left; |
||||
} |
||||
|
||||
/* |
||||
// Use flex which not working in IE |
||||
.vertical-center-modal { |
||||
display: flex; |
||||
align-items: center; |
||||
justify-content: center; |
||||
} |
||||
|
||||
.vertical-center-modal .ant-modal { |
||||
top: 0; |
||||
} |
||||
*/ |
||||
</style> |
||||
``` |
||||
|
@ -0,0 +1,69 @@
|
||||
|
||||
## API |
||||
|
||||
| Property | Description | Type | Default | |
||||
| -------- | ----------- | ---- | ------- | |
||||
| afterClose | Specify a function that will be called when modal is closed completely. | function | - | |
||||
| bodyStyle | Body style for modal body element. Such as height, padding etc. | object | {} | |
||||
| cancelText | Text of the Cancel button | string\|slot | `Cancel` | |
||||
| closable | Whether a close (x) button is visible on top right of the modal dialog or not | boolean | true | |
||||
| confirmLoading | Whether to apply loading visual effect for OK button or not | boolean | false | |
||||
| destroyOnClose | Whether to unmount child compenents on onClose | boolean | false | |
||||
| footer | Footer content, set as `:footer="null"` when you don't need default buttons | string\|slot | OK and Cancel buttons | |
||||
| getContainer | Return the mount node for Modal | (instance): HTMLElement | () => document.body | |
||||
| 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 | true | |
||||
| maskStyle | Style for modal's mask element. | object | {} | |
||||
| okText | Text of the OK button | string\|slot | `OK` | |
||||
| okType | Button `type` of the OK button | string | `primary` | |
||||
| style | Style of floating layer, typically used at least for adjusting the position. | object | - | |
||||
| title | The modal dialog's title | string\|slot | - | |
||||
| visible | Whether the modal dialog is visible or not | boolean | false | |
||||
| width | Width of the modal dialog | string\|number | 520 | |
||||
| wrapClassName | The class name of the container of the modal dialog | string | - | |
||||
| zIndex | The `z-index` of the Modal | Number | 1000 | |
||||
|
||||
### events |
||||
| Events Name | Description | Arguments | |
||||
| --- | --- | --- | |
||||
| cancel | Specify a function that will be called when a user clicks mask, close button on top right or Cancel button | function(e) | |
||||
| ok | Specify a function that will be called when a user clicks the OK button | function(e) | |
||||
|
||||
#### Note |
||||
|
||||
> The state of Modal will be preserved at it's component lifecycle by default, if you wish to open it with a brand new state everytime, set `destroyOnClose` on it. |
||||
|
||||
### Modal.method() |
||||
|
||||
There are five ways to display the information based on the content's nature: |
||||
|
||||
- `Modal.info` |
||||
- `Modal.success` |
||||
- `Modal.error` |
||||
- `Modal.warning` |
||||
- `Modal.confirm` |
||||
|
||||
The items listed above are all functions, expecting a settings object as parameter. |
||||
The properties of the object are follows: |
||||
|
||||
| Property | Description | Type | Default | |
||||
| -------- | ----------- | ---- | ------- | |
||||
| cancelText | Text of the Cancel button | string | `Cancel` | |
||||
| class | class of container | string | - | |
||||
| content | Content | string\|vNode | - | |
||||
| iconType | Icon `type` of the Icon component | string | `question-circle` | |
||||
| 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` | |
||||
| title | Title | string\|vNode | - | |
||||
| 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 | - | |
||||
|
||||
All the `Modal.method`s will return a reference, and then we can close the modal dialog by the reference. |
||||
|
||||
```jsx |
||||
const ref = Modal.info(); |
||||
ref.destroy(); |
||||
``` |
@ -0,0 +1,67 @@
|
||||
## API |
||||
|
||||
| 参数 | 说明 | 类型 | 默认值 | |
||||
| --- | --- | --- | --- | |
||||
| afterClose | Modal 完全关闭后的回调 | function | 无 | |
||||
| bodyStyle | Modal body 样式 | object | {} | |
||||
| cancelText | 取消按钮文字 | string\| slot | 取消 | |
||||
| closable | 是否显示右上角的关闭按钮 | boolean | true | |
||||
| confirmLoading | 确定按钮 loading | boolean | 无 | |
||||
| destroyOnClose | 关闭时销毁 Modal 里的子元素 | boolean | false | |
||||
| footer | 底部内容,当不需要默认底部按钮时,可以设为 `:footer="null"` | string\|slot | 确定取消按钮 | |
||||
| getContainer | 指定 Modal 挂载的 HTML 节点 | (instance): HTMLElement | () => document.body | |
||||
| mask | 是否展示遮罩 | Boolean | true | |
||||
| maskClosable | 点击蒙层是否允许关闭 | boolean | true | |
||||
| maskStyle | 遮罩样式 | object | {} | |
||||
| okText | 确认按钮文字 | string\|slot | 确定 | |
||||
| okType | 确认按钮类型 | string | primary | |
||||
| style | 可用于设置浮层的样式,调整浮层位置等 | object | - | |
||||
| title | 标题 | string\|slot | 无 | |
||||
| visible(v-model) | 对话框是否可见 | boolean | 无 | |
||||
| width | 宽度 | string\|number | 520 | |
||||
| wrapClassName | 对话框外层容器的类名 | string | - | |
||||
| zIndex | 设置 Modal 的 `z-index` | Number | 1000 | |
||||
|
||||
### 事件 |
||||
| 事件名称 | 说明 | 回调参数 | |
||||
| --- | --- | --- | |
||||
| cancel | 点击遮罩层或右上角叉或取消按钮的回调 | function(e) | |
||||
| ok | 点击确定回调 | function(e) | |
||||
|
||||
#### 注意 |
||||
|
||||
> `<Modal />` 默认关闭后状态不会自动清空, 如果希望每次打开都是新内容,请设置 `destroyOnClose`。 |
||||
|
||||
### Modal.method() |
||||
|
||||
包括: |
||||
|
||||
- `Modal.info` |
||||
- `Modal.success` |
||||
- `Modal.error` |
||||
- `Modal.warning` |
||||
- `Modal.confirm` |
||||
|
||||
以上均为一个函数,参数为 object,具体属性如下: |
||||
|
||||
| 参数 | 说明 | 类型 | 默认值 | |
||||
| --- | --- | --- | --- | |
||||
| cancelText | 取消按钮文字 | string | 取消 | |
||||
| class | 容器类名 | string | - | |
||||
| content | 内容 | string\|vNode | 无 | |
||||
| iconType | 图标 Icon 类型 | string | question-circle | |
||||
| maskClosable | 点击蒙层是否允许关闭 | Boolean | `false` | |
||||
| okText | 确认按钮文字 | string | 确定 | |
||||
| okType | 确认按钮类型 | string | primary | |
||||
| title | 标题 | string\|vNode | 无 | |
||||
| width | 宽度 | string\|number | 416 | |
||||
| zIndex | 设置 Modal 的 `z-index` | Number | 1000 | |
||||
| onCancel | 取消回调,参数为关闭函数,返回 promise 时 resolve 后自动关闭 | function | 无 | |
||||
| onOk | 点击确定回调,参数为关闭函数,返回 promise 时 resolve 后自动关闭 | function | 无 | |
||||
|
||||
以上函数调用后,会返回一个引用,可以通过该引用关闭弹窗。 |
||||
|
||||
```jsx |
||||
const ref = Modal.info(); |
||||
ref.destroy(); |
||||
``` |
Loading…
Reference in new issue