Merge pull request #112 from Leopoldthecoder/next

Rate/Slider/Message doc update
pull/2/head
baiyaaaaa 2016-08-29 18:52:00 +08:00 committed by GitHub
commit 57b33a3e36
12 changed files with 259 additions and 284 deletions

View File

@ -2,9 +2,7 @@
module.exports = {
methods: {
open() {
this.$message({
message: '这是一条消息提示'
});
this.$message('这是一条消息提示');
},
open2() {
@ -70,11 +68,13 @@
}
</style>
## 基本用法
## Message 消息提示
Message 系统了反馈提示,比 Notification 更为小巧,可以根据需要来使用它们,在配置上,它们非常类似,所以部分 Notification 的 options 我们不会做详尽解释,文末有 options 列表,可以结合 Notification 的文档理解它们。
反馈提示,比 Notification 更为小巧
:::demo Element 注册了一个`$message`方法用于调用Message 同样接收一个`options`字面量,`message`参数能定义正文内容。
### 基础用法
:::demo Message 在配置上与 Notification 非常类似,所以部分 options 在此不做详尽解释,文末有 options 列表,可以结合 Notification 的文档理解它们。Element 注册了一个`$message`方法用于调用Message 可以接收一个字符串作为参数,它会被显示为正文内容。
```html
<template>
@ -85,9 +85,7 @@ Message 系统了反馈提示,它比 Notification 更为小巧,可以根据
export default {
methods: {
open() {
this.$message({
message: '这是一条消息提示'
});
this.$message('这是一条消息提示');
}
}
}
@ -95,13 +93,11 @@ Message 系统了反馈提示,它比 Notification 更为小巧,可以根据
```
:::
## 不同状态
### 不同状态
Message 同样提供了四种类型:`success``info``warning``error`,由不同图标表示。
Message 提供了四种类型:`success``info``warning``error`,由不同图标表示。
你可以通过下面的按钮来体验它们:
:::demo 设置`type`字段来定义它们,默认为`info`,如果设置其他值将被忽略。
:::demo 当需要自定义更多属性时Message 也可以接收一个对象为参数。比如,设置`type`字段可以定义不同的状态,默认为`info`。此时正文内容以`message`的值传入。
```html
<template>
<el-button :plain="true" @click.native="open2">成功</el-button>
@ -138,13 +134,11 @@ Message 同样提供了四种类型:`success``info``warning``error`
```
:::
## 可关闭
### 可关闭
默认的 Message 是不可以被人工关闭的,如果需要可关闭的 Message可以使用`showClose`字段。
可以设置为手动关闭的 Message
注意:和 Notification 一样Message 拥有可控的`duration`,设置`0`为不会被自动关闭,默认为 3000 毫秒。
:::demo
:::demo 默认的 Message 是不可以被人工关闭的,如果需要可手动关闭的 Message可以使用`showClose`字段。此外,和 Notification 一样Message 拥有可控的`duration`,设置`0`为不会被自动关闭,默认为 3000 毫秒。
```html
<template>
<el-button :plain="true" @click.native="open5">消息</el-button>
@ -209,8 +203,8 @@ import { Message } from 'element-ui';
## Options
| 参数 | 说明 | 类型 | 可选值 | 默认值 |
|---------- |-------------- |---------- |-------------------------------- |-------- |
| message | 消息文字 | string | | |
| type | 主题 | string | 'success', 'warning', 'info', 'error' | 'info' |
| duration | 显示时间, 毫秒。设为 0 则不会自动关闭 | number | | 3000 |
| showClose | 是否显示关闭按钮 | boolean | | false |
| onClose | 关闭时的回调函数, 参数为被关闭的 message 实例 | function | | |
| message | 消息文字 | string | - | - |
| type | 主题 | string | success/warning/info/error | info |
| duration | 显示时间, 毫秒。设为 0 则不会自动关闭 | number | - | 3000 |
| showClose | 是否显示关闭按钮 | boolean | - | false |
| onClose | 关闭时的回调函数, 参数为被关闭的 message 实例 | function | - | - |

View File

@ -16,46 +16,50 @@
margin: 20px 0;
}
</style>
## 基础用法
<div class="demo-box demo-rate">
<el-rate v-model="value1"></el-rate>
</div>
## Rate 评分
评分组件
### 基础用法
适用广泛的基础用法
:::demo
``` html
<el-rate v-model="value1"></el-rate>
```
:::
## 区分颜色
### 区分颜色
利用颜色对分数及情感倾向进行分级。分数可以被分为三个等级,对应的两个阈值可分别通过 `low-threshold``high-threshold` 设定。
<div class="demo-box demo-rate">
<el-rate v-model="value2" :colors="['#99A9BF', '#F7BA2A', '#FF9900']"></el-rate>
</div>
利用颜色对分数及情感倾向进行分级
:::demo 分数可以被分为三个等级,对应的两个阈值可分别通过 `low-threshold``high-threshold` 设定。
``` html
<el-rate v-model="value2" :colors="['#99A9BF', '#F7BA2A', '#FF9900']"></el-rate>
<el-rate
v-model="value2"
:colors="['#99A9BF', '#F7BA2A', '#FF9900']">
</el-rate>
```
:::
## 辅助文字
### 辅助文字
为组件设置 `show-text` 属性会在右侧显示辅助文字。通过设置 `texts` 可以为每一个分值指定对应的辅助文字。`texts` 为一个数组,长度应等于最大值 `max`
<div class="demo-box demo-rate">
<el-rate v-model="value3" show-text></el-rate>
</div>
用辅助文字直接地表达对应分数
:::demo 为组件设置 `show-text` 属性会在右侧显示辅助文字。通过设置 `texts` 可以为每一个分值指定对应的辅助文字。`texts` 为一个数组,长度应等于最大值 `max`
``` html
<el-rate v-model="value3" show-text></el-rate>
<el-rate
v-model="value3"
show-text>
</el-rate>
```
:::
## 其他 icon
<div class="demo-box demo-rate">
<el-rate v-model="value4" :icon-classes="['icon-rate-face-1', 'icon-rate-face-2', 'icon-rate-face-3']" void-icon-class="icon-rate-face-off" :colors="['#99A9BF', '#F7BA2A', '#FF9900']"></el-rate>
</div>
### 其他 icon
:::demo 当有多层评价时,可以用不同类型的 icon 区分评分层级
``` html
<el-rate
v-model="value4"
@ -64,38 +68,44 @@
:colors="['#99A9BF', '#F7BA2A', '#FF9900']">
</el-rate>
```
:::
## 只读
为组件设置 `disabled` 属性表示组件为只读,支持小数分值。此时若设置 `show-text`,则会在右侧显示目前的分值。可以提供 `text-template` 作为显示模板,模板为一个包含了 `{value}` 的字符串,`{value}` 会被解析为分值。
### 只读
<div class="demo-box demo-rate">
<el-rate v-model="value5" disabled show-text text-color="#ff9900" text-template="{value} 分"></el-rate>
</div>
只读的评分用来展示分数,允许出现半星
:::demo 为组件设置 `disabled` 属性表示组件为只读,支持小数分值。此时若设置 `show-text`,则会在右侧显示目前的分值。可以提供 `text-template` 作为显示模板,模板为一个包含了 `{value}` 的字符串,`{value}` 会被解析为分值。
``` html
<el-rate v-model="value5" disabled show-text text-color="#ff9900" text-template="{value} 分"></el-rate>
<el-rate
v-model="value5"
disabled
show-text
text-color="#ff9900"
text-template="{value} 分">
</el-rate>
```
## Attributes
:::
### Attributes
| 参数 | 说明 | 类型 | 可选值 | 默认值 |
|---------- |-------- |---------- |------------- |-------- |
| v-model | 绑定值 | Number | | 0 |
| max | 最大分值 | Number | | 5 |
| disabled | 是否为只读 | Boolean | | false |
| allow-half | 是否允许半选 | Boolean | | false |
| low-threshold | 低分和中等分数的界限值,值本身被划分在低分中 | Number | | 2 |
| high-threshold | 高分和中等分数的界限值,值本身被划分在高分中 | Number | | 4 |
| colors | icon 的颜色数组,共有 3 个元素,为 3 个分段所对应的颜色 | Array | | ['#F7BA2A', '#F7BA2A', '#F7BA2A'] |
| void-color | 未选中 icon 的颜色 | String | | '#C6D1DE' |
| disabled-void-color | 只读时未选中 icon 的颜色 | String | | '#EFF2F7' |
| icon-classes | icon 的类名数组,共有 3 个元素,为 3 个分段所对应的类名 | Array | | ['el-icon-star-on', 'el-icon-star-on', 'el-icon-star-on'] |
| void-icon-class | 未选中 icon 的类名 | String | | 'el-icon-star-off' |
| disabled-void-icon-class | 只读时未选中 icon 的类名 | String | | 'el-icon-star-on' |
| show-text | 是否显示辅助文字 | Boolean | | false |
| text-color | 辅助文字的颜色 | String | | '1F2D3D' |
| texts | 辅助文字数组 | Array | | ['极差', '失望', '一般', '满意', '惊喜'] |
| text-template | 只读时的辅助文字模板 | String | | '{value}' |
| max | 最大分值 | Number | - | 5 |
| disabled | 是否为只读 | Boolean | - | false |
| allow-half | 是否允许半选 | Boolean | - | false |
| low-threshold | 低分和中等分数的界限值,值本身被划分在低分中 | Number | - | 2 |
| high-threshold | 高分和中等分数的界限值,值本身被划分在高分中 | Number | - | 4 |
| colors | icon 的颜色数组,共有 3 个元素,为 3 个分段所对应的颜色 | Array | - | ['#F7BA2A', '#F7BA2A', '#F7BA2A'] |
| void-color | 未选中 icon 的颜色 | String | - | #C6D1DE |
| disabled-void-color | 只读时未选中 icon 的颜色 | String | - | #EFF2F7 |
| icon-classes | icon 的类名数组,共有 3 个元素,为 3 个分段所对应的类名 | Array | - | ['el-icon-star-on', 'el-icon-star-on', 'el-icon-star-on'] |
| void-icon-class | 未选中 icon 的类名 | String | - | el-icon-star-off |
| disabled-void-icon-class | 只读时未选中 icon 的类名 | String | - | el-icon-star-on |
| show-text | 是否显示辅助文字 | Boolean | - | false |
| text-color | 辅助文字的颜色 | String | - | 1F2D3D |
| texts | 辅助文字数组 | Array | - | ['极差', '失望', '一般', '满意', '惊喜'] |
| text-template | 只读时的辅助文字模板 | String | - | {value} |
## Events
### Events
| 事件名称 | 说明 | 回调参数 |
|---------- |-------- |---------- |
| change | 分值改变时触发 | 改变后的分值 |

View File

@ -6,69 +6,147 @@
value2: 50,
value3: null,
value4: null,
value5: null,
value6: null,
value7: null
value5: null
};
}
}
</script>
## 基本用法
<style>
.demo-box.demo-slider .source {
padding: 0;
}
.demo-box.demo-slider .block {
padding: 30px 24px;
overflow: hidden;
border-bottom: solid 1px #EFF2F6;
&:last-child {
border-bottom: none;
}
}
.demo-box.demo-slider .demonstration {
font-size: 14px;
color: #8492a6;
line-height: 44px;
}
.demo-box.demo-slider .demonstration + .el-slider {
float: right;
width: 70%;
margin-right: 20px;
}
</style>
<el-slider v-model="value1"></el-slider>
## Slider 滑块
通过拖动滑块在一个固定区间内进行选择
### 基础用法
在拖动滑块时,显示当前值
:::demo 通过设置绑定值自定义滑块的初始值
```html
<el-slider v-model="value1"></el-slider>
<template>
<div class="block">
<span class="demonstration">默认</span>
<el-slider v-model="value1"></el-slider>
</div>
<div class="block">
<span class="demonstration">自定义初始值</span>
<el-slider v-model="value2"></el-slider>
</div>
</template>
<script>
export default {
data() {
return {
value1: 0,
value2: 50
}
}
}
</script>
```
:::
## 定义初始值
### 离散
<el-slider v-model="value2"></el-slider>
选项可以是离散的
:::demo 改变`step`的值可以改变步长,通过设置`show-step`属性可以显示间断点
```html
<el-slider v-model="value2"></el-slider>
<template>
<div class="block">
<span class="demonstration">不显示间断点</span>
<el-slider
v-model="value3"
:step="10">
</el-slider>
</div>
<div class="block">
<span class="demonstration">显示间断点</span>
<el-slider
v-model="value4"
:step="10"
show-stops>
</el-slider>
</div>
</template>
<script>
export default {
data() {
return {
value3: 0,
value4: 0
}
}
}
</script>
```
:::
## 定义区间
### 带有输入框
<el-slider :min="20" :max="80" v-model="value3"></el-slider>
通过输入框设置精确数值
:::demo 设置`show-input`属性会在右侧显示一个输入框
```html
<el-slider :min="20" :max="80" v-model="value3"></el-slider>
<template>
<div class="block">
<el-slider
v-model="value5"
show-input>
</el-slider>
</div>
</template>
<script>
export default {
data() {
return {
value5: 0
}
}
}
</script>
```
:::
## 定义步长
<el-slider :step="10" v-model="value4"></el-slider>
```html
<el-slider :step="10" v-model="value4"></el-slider>
```
## 显示间断点
<el-slider :step="10" show-stops v-model="value5"></el-slider>
```html
<el-slider :step="10" show-stops v-model="value5"></el-slider>
```
## 带有输入框
<el-slider show-input v-model="value6"></el-slider>
```html
<el-slider show-input v-model="value6"></el-slider>
```
## API
## Attributes
| 参数 | 说明 | 类型 | 可选值 | 默认值 |
|---------- |-------------- |---------- |-------------------------------- |-------- |
| value | 绑定值 | number | | 最小值 min |
| min | 最小值 | number | | 0 |
| max | 最大值 | number | | 100 |
| step | 步长 | number | | 1 |
| showInput | 是否显示输入框 | boolean | | false |
| showStops | 是否显示间断点 | boolean | | false |
| change | 值改变时的回调函数 | function | | |
| min | 最小值 | number | - | 0 |
| max | 最大值 | number | - | 100 |
| step | 步长 | number | - | 1 |
| showInput | 是否显示输入框 | boolean | - | false |
| showStops | 是否显示间断点 | boolean | - | false |
## Events
| 事件名称 | 说明 | 回调参数 |
|---------- |-------- |---------- |
| change | 值改变时触发 | 改变后的值 |

View File

@ -6,23 +6,18 @@
}
</style>
## 固定时间点
提供几个固定的时间点供用户选择。
<div class="demo-box">
<el-time-select
v-model="value1"
:picker-options="{
start: '08:30',
step: '00:15',
end: '18:30'
}"
placeholder="选择时间">
</el-time-select>
</div>
## Time Picker 时间选择器
用于选择或输入日期
### 固定时间点
提供几个固定的时间点供用户选择
:::demo 使用 el-time-select 标签,分别通过`star`、`end`和`step`指定可选的起始时间、结束时间和步长
```html
<el-time-select
v-model="value"
v-model="value1"
:picker-options="{
start: '08:30',
step: '00:15',
@ -31,89 +26,29 @@
placeholder="选择时间">
</el-time-select>
```
:::
## 任意时间点
可以选择任意时间。
### 任意时间点
<div class="demo-box">
<el-time-picker
v-model="value2"
placeholder="任意时间点">
</el-time-picker>
</div>
可以选择任意时间
:::demo 使用 el-time-picker 标签,通过`selectableRange`限制可选时间范围
```html
<el-time-picker
v-model="value"
placeholder="任意时间点">
</el-time-picker>
```
### 通用 - 手动输入规则
<div class="demo-box">
<el-time-picker
v-model="value3"
placeholder="任意时间点">
</el-time-picker>
</div>
```html
<el-time-picker
v-model="value"
placeholder="任意时间点">
</el-time-picker>
```
### 通用 - 限制时间范围
<div class="demo-box">
<el-time-picker
v-model="value4"
:picker-options="{
selectableRange: '18:30:00 - 20:30:00'
}"
placeholder="任意时间点">
</el-time-picker>
</div>
```html
<el-time-picker
v-model="value"
v-model="value2"
:picker-options="{
selectableRange: '18:30:00 - 20:30:00'
}"
placeholder="任意时间点">
</el-time-picker>
```
:::
### 固定时间范围
## 固定时间范围
### 先选择开始时间
先选择开始时间,结束时间内备选项的状态会随之改变。
<div class="demo-box">
<el-time-select
placeholder="起始时间"
v-model="startTime"
:picker-options="{
start: '08:30',
step: '00:15',
end: '18:30'
}">
</el-time-select>
<el-time-select
placeholder="结束时间"
v-model="endTime"
:picker-options="{
start: '08:30',
step: '00:15',
end: '18:30',
minTime: startTime
}">
</el-time-select>
</div>
若先选择开始时间,则结束时间内备选项的状态会随之改变
:::demo
```html
<el-time-select
placeholder="起始时间"
@ -135,72 +70,21 @@
}">
</el-time-select>
```
:::
### 先选择结束时间
开始时间的备选项不随结束时间的选择改变。
### 任意时间范围
<div class="demo-box">
<el-time-select
placeholder="起始时间"
v-model="startTime2"
:picker-options="{
start: '08:30',
step: '00:15',
end: '18:30'
}">
</el-time-select>
<el-time-select
placeholder="结束时间"
v-model="endTime2"
:picker-options="{
start: '08:30',
step: '00:15',
end: '18:30',
minTime: startTime2
}">
</el-time-select>
</div>
```html
<el-time-select
placeholder="起始时间"
v-model="startTime2"
:picker-options="{
start: '08:30',
step: '00:15',
end: '18:30'
}">
</el-time-select>
<el-time-select
placeholder="结束时间"
v-model="endTime2"
:picker-options="{
start: '08:30',
step: '00:15',
end: '18:30',
minTime: startTime2
}">
</el-time-select>
```
## 任意时间范围
可选择任意的时间范围。
<div class="demo-box">
<el-time-picker
is-range
v-model="value5"
placeholder="选择时间范围">
</el-time-picker>
</div>
可选择任意的时间范围
:::demo 添加`is-range`属性即可选择时间范围
```html
<el-time-picker
is-range
v-model="value"
v-model="value3"
placeholder="选择时间范围">
</el-time-picker>
```
:::
<script>
export default {
@ -209,36 +93,32 @@
value1: '',
value2: '',
value3: '',
value4: '',
value5: '',
startTime: '',
endTime: '',
startTime2: '',
endTime2: ''
endTime: ''
};
}
}
</script>
## API
### Attributes
| 参数 | 说明 | 类型 | 可选值 | 默认值 |
|---------- |-------------- |---------- |-------------------------------- |-------- |
| value | 绑定值,需双向绑定 | String | | |
| readonly | 只读 | Boolean | | false |
| placeholder | 占位内容 | String | | |
| format | 时间格式化 | String | 小时: `HH`, 分`mm`, 秒`ss` | 'HH:mm:ss' |
| picker-options | 当前时间日期选择器特有的选项,参考下表 | Object | | {} |
| value | 绑定值,需双向绑定 | string | - | - |
| readonly | 只读 | boolean | - | false |
| placeholder | 占位内容 | string | - | - |
| format | 时间格式化 | string | 小时:`HH`,分:`mm`,秒:`ss` | 'HH:mm:ss' |
| picker-options | 当前时间日期选择器特有的选项,参考下表 | object | - | {} |
### time-select Options
### Time Select Options
| 参数 | 说明 | 类型 | 可选值 | 默认值 |
|---------- |-------------- |---------- |-------------------------------- |-------- |
| start | 开始时间 | String | |09:00 |
| end | 结束时间 | String | |18:00 |
| step | 间隔时间 | String | | 00:30 |
| minTime | 最小时间,小于该时间的时间段将被禁用 | String | | 00:00 |
| start | 开始时间 | string | - | 09:00 |
| end | 结束时间 | string | - | 18:00 |
| step | 间隔时间 | string | - | 00:30 |
| minTime | 最小时间,小于该时间的时间段将被禁用 | string | - | 00:00 |
### time-picker Options
### Time Picker Options
| 参数 | 说明 | 类型 | 可选值 | 默认值 |
|---------- |-------------- |---------- |-------------------------------- |-------- |
| selectableRange | 可选时间段,例如 `18:30:00 - 20:30:00`,或者传入数组 `['09:30:00 - 12:00:00', '14:30:00 - 18:30:00']` | String, Array | | |
| selectableRange | 可选时间段,例如<br>`'18:30:00 - 20:30:00'`<br>或者传入数组<br>`['09:30:00 - 12:00:00', '14:30:00 - 18:30:00']` | string/array | - | - |

View File

@ -14,6 +14,7 @@
background-color: #fff;
color: #5e6d82;
font-size: 14px;
margin-bottom: 45px;
strong {
font-weight: normal;

View File

@ -105,7 +105,7 @@
if (start && end && step) {
let current = start;
while (compareTime(current, end) === -1) {
while (compareTime(current, end) <= 0) {
result.push({
value: current,
disabled: compareTime(current, this.minTime || '00:00') <= 0

View File

@ -9,7 +9,7 @@
</div>
</div>
<div class="el-dialog__body"><slot></slot></div>
<div class="el-dialog__footer">
<div class="el-dialog__footer" v-if="$slots.footer">
<slot name="footer"></slot>
</div>
</div>

View File

@ -7,6 +7,11 @@ let seed = 1;
var Message = function(options) {
options = options || {};
if (typeof options === 'string') {
options = {
message: options
}
}
let userOnClose = options.onClose;
let id = 'message_' + seed++;

View File

@ -373,6 +373,13 @@
--card-border-radius: 4px;
--card-padding: 20px;
/*Slider
--------------------------*/
--slider-main-background-color: var(--color-primary);
--slider-runway-background-color: #e5e9f2;
--slider-runway-hover-color: #1d8ce0;
--slider-stop-background-color: #c0ccda;
/*Steps
--------------------------*/
--steps-border-color: var(--disabled-border-base);

View File

@ -15,7 +15,7 @@
background-color: #fff;
transition: opacity 0.3s, top 0.4s;
overflow: hidden;
z-index: 1000;
z-index: var(--index-popper);
@e group {
margin-left: 28px;

View File

@ -14,7 +14,7 @@
box-shadow: 0 0 6px rgba(0, 0, 0, .04), 0 2px 4px rgba(0, 0, 0, .12);
transition: opacity 0.3s, transform .3s, right .3s, top 0.4s;
overflow: hidden;
z-index: 1000;
z-index: var(--index-popper);
@e group {
& span {

View File

@ -7,7 +7,7 @@
width: 100%;
height: 4px;
margin: 20px 0;
background-color: #E5E9F2;
background-color: var(--slider-runway-background-color);
border-radius: 3px;
position: relative;
cursor: pointer;
@ -30,7 +30,7 @@
@e bar {
height: 4px;
background-color: #20A0FF;
background-color: var(--slider-main-background-color);
border-top-left-radius: 3px;
border-bottom-left-radius: 3px;
position: absolute;
@ -47,7 +47,7 @@
@e button {
size: 12px;
background-color: #20A0FF;
background-color: var(--slider-main-background-color);
border-radius: 50%;
position: absolute;
top: 12px;
@ -70,7 +70,7 @@
text-align: center;
size: 26px;
border-radius: 50%;
background-color: #20A0FF;
background-color: var(--slider-main-background-color);
color: #fff;
cursor: default;
z-index: var(--index-top);
@ -78,14 +78,14 @@
transform-origin: center bottom;
&::before {
triangle: 9px top #20A0FF;
triangle: 9px top var(--slider-main-background-color);
position: absolute;
top: -14px;
left: 4px;
}
&::after {
triangle: 9px bottom #20A0FF;
triangle: 9px bottom var(--slider-main-background-color);
position: absolute;
bottom: -14px;
left: 4px;
@ -104,7 +104,7 @@
position: absolute;
size: 4px;
border-radius: 50%;
background-color: #c0ccda;
background-color: var(--slider-stop-background-color);
transform: translateX(-50%);
}