mirror of https://github.com/ElemeFE/element
Slider: feature - add format-tooltip prop (#3657)
* Slider: add format-tooltip prop * Docs: update slider.md * Docs: update slider.mdpull/3984/head
parent
f9d8a0e03f
commit
6afa2ba690
|
@ -5,12 +5,18 @@
|
||||||
value1: 0,
|
value1: 0,
|
||||||
value2: 50,
|
value2: 50,
|
||||||
value3: 36,
|
value3: 36,
|
||||||
value4: 42,
|
value4: 48,
|
||||||
value5: 0,
|
value5: 42,
|
||||||
value6: 0,
|
value6: 0,
|
||||||
value7: 0,
|
value7: 0,
|
||||||
value8: [4, 8]
|
value8: 0,
|
||||||
|
value9: [4, 8]
|
||||||
};
|
};
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
formatTooltip(val) {
|
||||||
|
return val / 100;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
|
@ -39,9 +45,13 @@ The current value is displayed when the slider is being dragged.
|
||||||
<span class="demonstration">Hide Tooltip</span>
|
<span class="demonstration">Hide Tooltip</span>
|
||||||
<el-slider v-model="value3" :show-tooltip="false"></el-slider>
|
<el-slider v-model="value3" :show-tooltip="false"></el-slider>
|
||||||
</div>
|
</div>
|
||||||
|
<div class="block">
|
||||||
|
<span class="demonstration">Format Tooltip</span>
|
||||||
|
<el-slider v-model="value4" :format-tooltip="formatTooltip"></el-slider>
|
||||||
|
</div>
|
||||||
<div class="block">
|
<div class="block">
|
||||||
<span class="demonstration">Disabled</span>
|
<span class="demonstration">Disabled</span>
|
||||||
<el-slider v-model="value4" disabled></el-slider>
|
<el-slider v-model="value5" disabled></el-slider>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
|
@ -52,7 +62,13 @@ The current value is displayed when the slider is being dragged.
|
||||||
value1: 0,
|
value1: 0,
|
||||||
value2: 50,
|
value2: 50,
|
||||||
value3: 36,
|
value3: 36,
|
||||||
value4: 42
|
value4: 48,
|
||||||
|
value5: 42
|
||||||
|
}
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
formatTooltip(val) {
|
||||||
|
return val / 100;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -71,14 +87,14 @@ The options can be discrete.
|
||||||
<div class="block">
|
<div class="block">
|
||||||
<span class="demonstration">Breakpoints not displayed</span>
|
<span class="demonstration">Breakpoints not displayed</span>
|
||||||
<el-slider
|
<el-slider
|
||||||
v-model="value5"
|
v-model="value6"
|
||||||
:step="10">
|
:step="10">
|
||||||
</el-slider>
|
</el-slider>
|
||||||
</div>
|
</div>
|
||||||
<div class="block">
|
<div class="block">
|
||||||
<span class="demonstration">Breakpoints displayed</span>
|
<span class="demonstration">Breakpoints displayed</span>
|
||||||
<el-slider
|
<el-slider
|
||||||
v-model="value6"
|
v-model="value7"
|
||||||
:step="10"
|
:step="10"
|
||||||
show-stops>
|
show-stops>
|
||||||
</el-slider>
|
</el-slider>
|
||||||
|
@ -89,8 +105,8 @@ The options can be discrete.
|
||||||
export default {
|
export default {
|
||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
value5: 0,
|
value6: 0,
|
||||||
value6: 0
|
value7: 0
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -108,7 +124,7 @@ Set value via a input box.
|
||||||
<template>
|
<template>
|
||||||
<div class="block">
|
<div class="block">
|
||||||
<el-slider
|
<el-slider
|
||||||
v-model="value7"
|
v-model="value8"
|
||||||
show-input>
|
show-input>
|
||||||
</el-slider>
|
</el-slider>
|
||||||
</div>
|
</div>
|
||||||
|
@ -118,7 +134,7 @@ Set value via a input box.
|
||||||
export default {
|
export default {
|
||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
value7: 0
|
value8: 0
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -135,7 +151,7 @@ Selecting a range of values is supported.
|
||||||
<template>
|
<template>
|
||||||
<div class="block">
|
<div class="block">
|
||||||
<el-slider
|
<el-slider
|
||||||
v-model="value8"
|
v-model="value9"
|
||||||
range
|
range
|
||||||
show-stops
|
show-stops
|
||||||
:max="10">
|
:max="10">
|
||||||
|
@ -147,7 +163,7 @@ Selecting a range of values is supported.
|
||||||
export default {
|
export default {
|
||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
value8: [4, 8]
|
value9: [4, 8]
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -166,6 +182,7 @@ Selecting a range of values is supported.
|
||||||
| show-input-controls | whether to display control buttons when `show-input` is true | boolean | — | true |
|
| show-input-controls | whether to display control buttons when `show-input` is true | boolean | — | true |
|
||||||
| show-stops | whether to display breakpoints | boolean | — | false |
|
| show-stops | whether to display breakpoints | boolean | — | false |
|
||||||
| show-tooltip | whether to display tooltip value | boolean | — | true |
|
| show-tooltip | whether to display tooltip value | boolean | — | true |
|
||||||
|
| format-tooltip | format to display tooltip value | Function(value) | — | — |
|
||||||
| range | whether to select a range | boolean | — | false |
|
| range | whether to select a range | boolean | — | false |
|
||||||
|
|
||||||
## Events
|
## Events
|
||||||
|
|
|
@ -5,12 +5,18 @@
|
||||||
value1: 0,
|
value1: 0,
|
||||||
value2: 50,
|
value2: 50,
|
||||||
value3: 36,
|
value3: 36,
|
||||||
value4: 42,
|
value4: 48,
|
||||||
value5: 0,
|
value5: 42,
|
||||||
value6: 0,
|
value6: 0,
|
||||||
value7: 0,
|
value7: 0,
|
||||||
value8: [4, 8]
|
value8: 0,
|
||||||
|
value9: [4, 8]
|
||||||
};
|
};
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
formatTooltip(val) {
|
||||||
|
return val / 100;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
|
@ -65,9 +71,13 @@
|
||||||
<span class="demonstration">隐藏 Tooltip</span>
|
<span class="demonstration">隐藏 Tooltip</span>
|
||||||
<el-slider v-model="value3" :show-tooltip="false"></el-slider>
|
<el-slider v-model="value3" :show-tooltip="false"></el-slider>
|
||||||
</div>
|
</div>
|
||||||
|
<div class="block">
|
||||||
|
<span class="demonstration">格式化 Tooltip</span>
|
||||||
|
<el-slider v-model="value4" :format-tooltip="formatTooltip"></el-slider>
|
||||||
|
</div>
|
||||||
<div class="block">
|
<div class="block">
|
||||||
<span class="demonstration">禁用</span>
|
<span class="demonstration">禁用</span>
|
||||||
<el-slider v-model="value4" disabled></el-slider>
|
<el-slider v-model="value5" disabled></el-slider>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
|
@ -78,7 +88,13 @@
|
||||||
value1: 0,
|
value1: 0,
|
||||||
value2: 50,
|
value2: 50,
|
||||||
value3: 36,
|
value3: 36,
|
||||||
value4: 42
|
value4: 48,
|
||||||
|
value5: 42
|
||||||
|
}
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
formatTooltip(val) {
|
||||||
|
return val / 100;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -96,14 +112,14 @@
|
||||||
<div class="block">
|
<div class="block">
|
||||||
<span class="demonstration">不显示间断点</span>
|
<span class="demonstration">不显示间断点</span>
|
||||||
<el-slider
|
<el-slider
|
||||||
v-model="value5"
|
v-model="value6"
|
||||||
:step="10">
|
:step="10">
|
||||||
</el-slider>
|
</el-slider>
|
||||||
</div>
|
</div>
|
||||||
<div class="block">
|
<div class="block">
|
||||||
<span class="demonstration">显示间断点</span>
|
<span class="demonstration">显示间断点</span>
|
||||||
<el-slider
|
<el-slider
|
||||||
v-model="value6"
|
v-model="value7"
|
||||||
:step="10"
|
:step="10"
|
||||||
show-stops>
|
show-stops>
|
||||||
</el-slider>
|
</el-slider>
|
||||||
|
@ -114,8 +130,8 @@
|
||||||
export default {
|
export default {
|
||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
value5: 0,
|
value6: 0,
|
||||||
value6: 0
|
value7: 0
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -132,7 +148,7 @@
|
||||||
<template>
|
<template>
|
||||||
<div class="block">
|
<div class="block">
|
||||||
<el-slider
|
<el-slider
|
||||||
v-model="value7"
|
v-model="value8"
|
||||||
show-input>
|
show-input>
|
||||||
</el-slider>
|
</el-slider>
|
||||||
</div>
|
</div>
|
||||||
|
@ -142,7 +158,7 @@
|
||||||
export default {
|
export default {
|
||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
value7: 0
|
value8: 0
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -159,7 +175,7 @@
|
||||||
<template>
|
<template>
|
||||||
<div class="block">
|
<div class="block">
|
||||||
<el-slider
|
<el-slider
|
||||||
v-model="value8"
|
v-model="value9"
|
||||||
range
|
range
|
||||||
show-stops
|
show-stops
|
||||||
:max="10">
|
:max="10">
|
||||||
|
@ -171,7 +187,7 @@
|
||||||
export default {
|
export default {
|
||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
value8: [4, 8]
|
value9: [4, 8]
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -190,6 +206,7 @@
|
||||||
| show-input-controls | 在显示输入框的情况下,是否显示输入框的控制按钮 | boolean | — | true|
|
| show-input-controls | 在显示输入框的情况下,是否显示输入框的控制按钮 | boolean | — | true|
|
||||||
| show-stops | 是否显示间断点 | boolean | — | false |
|
| show-stops | 是否显示间断点 | boolean | — | false |
|
||||||
| show-tooltip | 是否显示 tooltip | boolean | — | true |
|
| show-tooltip | 是否显示 tooltip | boolean | — | true |
|
||||||
|
| format-tooltip | 格式化 tooltip message | Function(value) | — | — |
|
||||||
| range | 是否为范围选择 | boolean | — | false |
|
| range | 是否为范围选择 | boolean | — | false |
|
||||||
|
|
||||||
### Events
|
### Events
|
||||||
|
|
|
@ -8,7 +8,7 @@
|
||||||
:style="{ left: currentPosition }"
|
:style="{ left: currentPosition }"
|
||||||
ref="button">
|
ref="button">
|
||||||
<el-tooltip placement="top" ref="tooltip" :disabled="!showTooltip">
|
<el-tooltip placement="top" ref="tooltip" :disabled="!showTooltip">
|
||||||
<span slot="content">{{ value }}</span>
|
<span slot="content">{{ formatValue }}</span>
|
||||||
<div class="el-slider__button" :class="{ 'hover': hovering, 'dragging': dragging }"></div>
|
<div class="el-slider__button" :class="{ 'hover': hovering, 'dragging': dragging }"></div>
|
||||||
</el-tooltip>
|
</el-tooltip>
|
||||||
</div>
|
</div>
|
||||||
|
@ -70,6 +70,14 @@
|
||||||
|
|
||||||
currentPosition() {
|
currentPosition() {
|
||||||
return `${ (this.value - this.min) / (this.max - this.min) * 100 }%`;
|
return `${ (this.value - this.min) / (this.max - this.min) * 100 }%`;
|
||||||
|
},
|
||||||
|
|
||||||
|
enableFormat() {
|
||||||
|
return this.$parent.formatTooltip instanceof Function;
|
||||||
|
},
|
||||||
|
|
||||||
|
formatValue() {
|
||||||
|
return this.enableFormat && this.$parent.formatTooltip(this.value) || this.value;
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
|
@ -159,4 +167,3 @@
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
|
|
|
@ -83,6 +83,7 @@
|
||||||
type: Boolean,
|
type: Boolean,
|
||||||
default: true
|
default: true
|
||||||
},
|
},
|
||||||
|
formatTooltip: Function,
|
||||||
disabled: {
|
disabled: {
|
||||||
type: Boolean,
|
type: Boolean,
|
||||||
default: false
|
default: false
|
||||||
|
|
|
@ -81,6 +81,33 @@ describe('Slider', () => {
|
||||||
expect(slider.$refs.tooltip.disabled).to.true;
|
expect(slider.$refs.tooltip.disabled).to.true;
|
||||||
});
|
});
|
||||||
|
|
||||||
|
it('format tooltip', () => {
|
||||||
|
vm = createVue({
|
||||||
|
template: `
|
||||||
|
<div>
|
||||||
|
<el-slider v-model="value" :format-tooltip="formatTooltip">
|
||||||
|
</el-slider>
|
||||||
|
</div>
|
||||||
|
`,
|
||||||
|
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
value: 0
|
||||||
|
};
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
formatTooltip(val) {
|
||||||
|
return '$' + val;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}, true);
|
||||||
|
const slider = vm.$children[0].$children[0];
|
||||||
|
expect(slider.formatTooltip).to.function;
|
||||||
|
vm.$nextTick(() => {
|
||||||
|
expect(slider.formatValue).to.equal('$0');
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
it('drag', done => {
|
it('drag', done => {
|
||||||
vm = createVue({
|
vm = createVue({
|
||||||
template: `
|
template: `
|
||||||
|
|
Loading…
Reference in New Issue