mirror of https://github.com/ElemeFE/element
Dialog: add chalk theme
parent
27dcb4e40a
commit
41e1f75b8a
|
@ -24,6 +24,7 @@
|
||||||
dialogFormVisible: false,
|
dialogFormVisible: false,
|
||||||
outerVisible: false,
|
outerVisible: false,
|
||||||
innerVisible: false,
|
innerVisible: false,
|
||||||
|
centerDialogVisible: false,
|
||||||
form: {
|
form: {
|
||||||
name: '',
|
name: '',
|
||||||
region: '',
|
region: '',
|
||||||
|
@ -209,10 +210,10 @@ If a Dialog is nested in another Dialog, `append-to-body` is required.
|
||||||
<template>
|
<template>
|
||||||
<el-button type="text" @click="outerVisible = true">open the outer Dialog</el-button>
|
<el-button type="text" @click="outerVisible = true">open the outer Dialog</el-button>
|
||||||
|
|
||||||
<el-dialog title="外层 Dialog" :visible.sync="outerVisible">
|
<el-dialog title="Outter Dialog" :visible.sync="outerVisible">
|
||||||
<el-dialog
|
<el-dialog
|
||||||
width="30%"
|
width="30%"
|
||||||
title="内层 Dialog"
|
title="Inner Dialog"
|
||||||
:visible.sync="innerVisible"
|
:visible.sync="innerVisible"
|
||||||
append-to-body>
|
append-to-body>
|
||||||
</el-dialog>
|
</el-dialog>
|
||||||
|
@ -236,6 +237,40 @@ If a Dialog is nested in another Dialog, `append-to-body` is required.
|
||||||
```
|
```
|
||||||
:::
|
:::
|
||||||
|
|
||||||
|
:::
|
||||||
|
|
||||||
|
### Align in center
|
||||||
|
Make the dialog's header & footer align in center
|
||||||
|
|
||||||
|
:::demo Set `center` to `true` will align dialog's header & footer in center,while the content of it will not, to prevent breaking your own content's layout
|
||||||
|
|
||||||
|
```html
|
||||||
|
<el-button type="text" @click="centerDialogVisible = true">Click to open the Dialog</el-button>
|
||||||
|
|
||||||
|
<el-dialog
|
||||||
|
title="Warning"
|
||||||
|
:visible.sync="centerDialogVisible"
|
||||||
|
width="30%"
|
||||||
|
center>
|
||||||
|
<span>It should be noted that the content will not be aligned in center by default</span>
|
||||||
|
<span slot="footer" class="dialog-footer">
|
||||||
|
<el-button @click="centerDialogVisible = false">Cancel</el-button>
|
||||||
|
<el-button type="primary" @click="centerDialogVisible = false">Confirm</el-button>
|
||||||
|
</span>
|
||||||
|
</el-dialog>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
export default {
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
centerDialogVisible: false
|
||||||
|
};
|
||||||
|
}
|
||||||
|
};
|
||||||
|
</script>
|
||||||
|
```
|
||||||
|
:::
|
||||||
|
|
||||||
:::tip
|
:::tip
|
||||||
If the variable bound to `visible` is managed in Vuex store, the `.sync` can not work properly. In this case, please remove the `.sync` modifier, listen to `open` and `close` events of Dialog, and commit Vuex mutations to update the value of that variable in the event handlers.
|
If the variable bound to `visible` is managed in Vuex store, the `.sync` can not work properly. In this case, please remove the `.sync` modifier, listen to `open` and `close` events of Dialog, and commit Vuex mutations to update the value of that variable in the event handlers.
|
||||||
:::
|
:::
|
||||||
|
@ -258,6 +293,7 @@ If the variable bound to `visible` is managed in Vuex store, the `.sync` can not
|
||||||
| close-on-press-escape | whether the Dialog can be closed by pressing ESC | boolean | — | true |
|
| close-on-press-escape | whether the Dialog can be closed by pressing ESC | boolean | — | true |
|
||||||
| show-close | whether to show a close button | boolean | — | true |
|
| show-close | whether to show a close button | boolean | — | true |
|
||||||
| before-close | callback before Dialog closes, and it will prevent Dialog from closing | function(done),done is used to close the Dialog | — | — |
|
| before-close | callback before Dialog closes, and it will prevent Dialog from closing | function(done),done is used to close the Dialog | — | — |
|
||||||
|
| center | whether to align the header and footer in center | function(done),done is used to close the Dialog | — | — |
|
||||||
|
|
||||||
### Slot
|
### Slot
|
||||||
|
|
||||||
|
|
|
@ -24,6 +24,7 @@
|
||||||
dialogFormVisible: false,
|
dialogFormVisible: false,
|
||||||
outerVisible: false,
|
outerVisible: false,
|
||||||
innerVisible: false,
|
innerVisible: false,
|
||||||
|
centerDialogVisible: false,
|
||||||
form: {
|
form: {
|
||||||
name: '',
|
name: '',
|
||||||
region: '',
|
region: '',
|
||||||
|
@ -233,6 +234,38 @@ Dialog 组件的内容可以是任意的,甚至可以是表格或表单,下
|
||||||
```
|
```
|
||||||
:::
|
:::
|
||||||
|
|
||||||
|
### 居中布局
|
||||||
|
标题和底部采用居中布局
|
||||||
|
|
||||||
|
:::demo 将 `center` 为 `true` 将使标题和底部居中,同时为了防止破坏弹窗内容的布局,内容默认是不局中的
|
||||||
|
|
||||||
|
```html
|
||||||
|
<el-button type="text" @click="centerDialogVisible = true">点击打开 Dialog</el-button>
|
||||||
|
|
||||||
|
<el-dialog
|
||||||
|
title="提示"
|
||||||
|
:visible.sync="centerDialogVisible"
|
||||||
|
width="30%"
|
||||||
|
center>
|
||||||
|
<span>需要注意的是内容是默认不居中的</span>
|
||||||
|
<span slot="footer" class="dialog-footer">
|
||||||
|
<el-button @click="centerDialogVisible = false">取 消</el-button>
|
||||||
|
<el-button type="primary" @click="centerDialogVisible = false">确 定</el-button>
|
||||||
|
</span>
|
||||||
|
</el-dialog>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
export default {
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
centerDialogVisible: false
|
||||||
|
};
|
||||||
|
}
|
||||||
|
};
|
||||||
|
</script>
|
||||||
|
```
|
||||||
|
:::
|
||||||
|
|
||||||
:::tip
|
:::tip
|
||||||
如果 `visible` 属性绑定的变量位于 Vuex 的 store 内,那么 `.sync` 不会正常工作。此时需要去除 `.sync` 修饰符,同时监听 Dialog 的 `open` 和 `close` 事件,在事件回调中执行 Vuex 中对应的 mutation 更新 `visible` 属性绑定的变量的值。
|
如果 `visible` 属性绑定的变量位于 Vuex 的 store 内,那么 `.sync` 不会正常工作。此时需要去除 `.sync` 修饰符,同时监听 Dialog 的 `open` 和 `close` 事件,在事件回调中执行 Vuex 中对应的 mutation 更新 `visible` 属性绑定的变量的值。
|
||||||
:::
|
:::
|
||||||
|
@ -254,6 +287,7 @@ Dialog 组件的内容可以是任意的,甚至可以是表格或表单,下
|
||||||
| close-on-press-escape | 是否可以通过按下 ESC 关闭 Dialog | boolean | — | true |
|
| close-on-press-escape | 是否可以通过按下 ESC 关闭 Dialog | boolean | — | true |
|
||||||
| show-close | 是否显示关闭按钮 | boolean | — | true |
|
| show-close | 是否显示关闭按钮 | boolean | — | true |
|
||||||
| before-close | 关闭前的回调,会暂停 Dialog 的关闭 | function(done),done 用于关闭 Dialog | — | — |
|
| before-close | 关闭前的回调,会暂停 Dialog 的关闭 | function(done),done 用于关闭 Dialog | — | — |
|
||||||
|
| center | 是否对头部和底部采用居中布局 | boolean | — | false |
|
||||||
|
|
||||||
### Slot
|
### Slot
|
||||||
| name | 说明 |
|
| name | 说明 |
|
||||||
|
|
|
@ -3,7 +3,7 @@
|
||||||
<div class="el-dialog__wrapper" v-show="visible" @click.self="handleWrapperClick">
|
<div class="el-dialog__wrapper" v-show="visible" @click.self="handleWrapperClick">
|
||||||
<div
|
<div
|
||||||
class="el-dialog"
|
class="el-dialog"
|
||||||
:class="[{ 'is-fullscreen': fullscreen }, customClass]"
|
:class="[{ 'is-fullscreen': fullscreen, 'el-dialog--center': center }, customClass]"
|
||||||
ref="dialog"
|
ref="dialog"
|
||||||
:style="style">
|
:style="style">
|
||||||
<div class="el-dialog__header">
|
<div class="el-dialog__header">
|
||||||
|
@ -91,7 +91,11 @@
|
||||||
type: String,
|
type: String,
|
||||||
default: '15vh'
|
default: '15vh'
|
||||||
},
|
},
|
||||||
beforeClose: Function
|
beforeClose: Function,
|
||||||
|
center: {
|
||||||
|
type: Boolean,
|
||||||
|
default: false
|
||||||
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
data() {
|
data() {
|
||||||
|
|
|
@ -83,6 +83,7 @@ $--font-size-large: 18px;
|
||||||
$--font-color-base: #5a5e66;
|
$--font-color-base: #5a5e66;
|
||||||
$--font-color-disabled-base: #bbb;
|
$--font-color-disabled-base: #bbb;
|
||||||
$--font-weight-primary: 500;
|
$--font-weight-primary: 500;
|
||||||
|
$--font-line-height-primary: 24px;
|
||||||
|
|
||||||
/* Size
|
/* Size
|
||||||
-------------------------- */
|
-------------------------- */
|
||||||
|
@ -457,10 +458,11 @@ $--switch-button-size: 16px;
|
||||||
-------------------------- */
|
-------------------------- */
|
||||||
$--dialog-background-color: $--color-primary-light-4;
|
$--dialog-background-color: $--color-primary-light-4;
|
||||||
$--dialog-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.3);
|
$--dialog-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.3);
|
||||||
$--dialog-close-color: $--color-text-placeholder;
|
|
||||||
$--dialog-close-hover-color: $--color-primary;
|
$--dialog-close-hover-color: $--color-primary;
|
||||||
$--dialog-title-font-size: 16px;
|
$--dialog-title-font-size: $--font-size-large;
|
||||||
$--dialog-font-size: 14px;
|
$--dialog-font-size: 14px;
|
||||||
|
$--dialog-line-height: $--font-line-height-primary;
|
||||||
|
$--dialog-padding-primary: 15px;
|
||||||
|
|
||||||
/* Table
|
/* Table
|
||||||
-------------------------- */
|
-------------------------- */
|
||||||
|
|
|
@ -32,48 +32,70 @@
|
||||||
}
|
}
|
||||||
|
|
||||||
@include e(header) {
|
@include e(header) {
|
||||||
padding: 20px 20px 0;
|
padding: $--dialog-padding-primary;
|
||||||
@include utils-clearfix;
|
padding-bottom: 10px;
|
||||||
}
|
}
|
||||||
|
|
||||||
@include e(headerbtn) {
|
@include e(headerbtn) {
|
||||||
float: right;
|
position: absolute;
|
||||||
|
top: $--dialog-padding-primary;
|
||||||
|
right: $--dialog-padding-primary;
|
||||||
|
padding: 0;
|
||||||
background: transparent;
|
background: transparent;
|
||||||
border: none;
|
border: none;
|
||||||
outline: none;
|
outline: none;
|
||||||
padding: 0;
|
|
||||||
cursor: pointer;
|
cursor: pointer;
|
||||||
font-size: 16px;
|
font-size: 12px;
|
||||||
|
|
||||||
.el-dialog__close {
|
.el-dialog__close {
|
||||||
color: $--dialog-close-color;
|
color: $--color-info;
|
||||||
}
|
}
|
||||||
|
|
||||||
&:focus, &:hover {
|
&:focus, &:hover {
|
||||||
.el-dialog__close {
|
.el-dialog__close {
|
||||||
color: $--dialog-close-hover-color;
|
color: $--color-primary;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@include e(title) {
|
@include e(title) {
|
||||||
line-height: 1;
|
line-height: $--dialog-line-height;
|
||||||
font-size: $--dialog-title-font-size;
|
font-size: $--dialog-title-font-size;
|
||||||
font-weight: bold;
|
color: $--color-text-primary;
|
||||||
color: $--color-black;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@include e(body) {
|
@include e(body) {
|
||||||
padding: 30px 20px;
|
padding: 30px 20px;
|
||||||
color: $--color-black;
|
color: $--color-text-regular;
|
||||||
|
line-height: $--dialog-line-height;
|
||||||
font-size: $--dialog-font-size;
|
font-size: $--dialog-font-size;
|
||||||
}
|
}
|
||||||
|
|
||||||
@include e(footer) {
|
@include e(footer) {
|
||||||
padding: 10px 20px 15px;
|
padding: $--dialog-padding-primary;
|
||||||
|
padding-top: 10px;
|
||||||
text-align: right;
|
text-align: right;
|
||||||
box-sizing: border-box;
|
box-sizing: border-box;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 内容居中布局
|
||||||
|
@include m(center) {
|
||||||
|
text-align: center;
|
||||||
|
|
||||||
|
@include e(header) {
|
||||||
|
padding-top: 30px;
|
||||||
|
}
|
||||||
|
|
||||||
|
@include e(body) {
|
||||||
|
text-align: initial;
|
||||||
|
padding: 25px ($--dialog-padding-primary + 12px) 30px;
|
||||||
|
}
|
||||||
|
|
||||||
|
@include e(footer) {
|
||||||
|
text-align: inherit;
|
||||||
|
padding-bottom: 30px;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.dialog-fade-enter-active {
|
.dialog-fade-enter-active {
|
||||||
|
|
Loading…
Reference in New Issue