Skip to content

Commit 032655f

Browse files
committed
feat: slider add tooltipVisible and optimize experience
1 parent 0d49773 commit 032655f

File tree

8 files changed

+57
-35
lines changed

8 files changed

+57
-35
lines changed

components/slider/__tests__/__snapshots__/demo.test.js.snap

Lines changed: 28 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -2,14 +2,14 @@
22

33
exports[`renders ./components/slider/demo/basic.md correctly 1`] = `
44
<div>
5-
<div class="ant-slider">
5+
<div tabindex="-1" class="ant-slider" id="test">
66
<div class="ant-slider-rail"></div>
77
<div class="ant-slider-track" style="left: 0%; width: 30%;"></div>
88
<div class="ant-slider-step"></div>
99
<div role="slider" tabindex="0" aria-valuemin="0" aria-valuemax="100" aria-valuenow="30" class="ant-slider-handle" style="left: 30%;"></div>
1010
<div class="ant-slider-mark"></div>
1111
</div>
12-
<div class="ant-slider">
12+
<div tabindex="-1" class="ant-slider">
1313
<div class="ant-slider-rail"></div>
1414
<div class="ant-slider-track ant-slider-track-1" style="left: 20%; width: 30%;"></div>
1515
<div class="ant-slider-step"></div>
@@ -23,14 +23,14 @@ exports[`renders ./components/slider/demo/basic.md correctly 1`] = `
2323

2424
exports[`renders ./components/slider/demo/event.md correctly 1`] = `
2525
<div class="code-box-demo">
26-
<div class="ant-slider">
26+
<div tabindex="-1" class="ant-slider">
2727
<div class="ant-slider-rail"></div>
2828
<div class="ant-slider-track" style="left: 0%; width: 30%;"></div>
2929
<div class="ant-slider-step"></div>
3030
<div role="slider" tabindex="0" aria-valuemin="0" aria-valuemax="100" aria-valuenow="30" class="ant-slider-handle" style="left: 30%;"></div>
3131
<div class="ant-slider-mark"></div>
3232
</div>
33-
<div class="ant-slider">
33+
<div tabindex="-1" class="ant-slider">
3434
<div class="ant-slider-rail"></div>
3535
<div class="ant-slider-track ant-slider-track-1" style="left: 20%; width: 30%;"></div>
3636
<div class="ant-slider-step"></div>
@@ -45,14 +45,14 @@ exports[`renders ./components/slider/demo/icon-slider.md correctly 1`] = `
4545
<div class="icon-wrapper"><i class="anticon anticon-frown-o" style="color: rgba(0, 0, 0, 0.45);"><svg viewBox="64 64 896 896" data-icon="frown" width="1em" height="1em" fill="currentColor" aria-hidden="true" class="">
4646
<path d="M288 421a48 48 0 1 0 96 0 48 48 0 1 0-96 0zm352 0a48 48 0 1 0 96 0 48 48 0 1 0-96 0zM512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm263 711c-34.2 34.2-74 61-118.3 79.8C611 874.2 562.3 884 512 884c-50.3 0-99-9.8-144.8-29.2A370.4 370.4 0 0 1 248.9 775c-34.2-34.2-61-74-79.8-118.3C149.8 611 140 562.3 140 512s9.8-99 29.2-144.8A370.4 370.4 0 0 1 249 248.9c34.2-34.2 74-61 118.3-79.8C413 149.8 461.7 140 512 140c50.3 0 99 9.8 144.8 29.2A370.4 370.4 0 0 1 775.1 249c34.2 34.2 61 74 79.8 118.3C874.2 413 884 461.7 884 512s-9.8 99-29.2 144.8A368.89 368.89 0 0 1 775 775zM512 533c-85.5 0-155.6 67.3-160 151.6a8 8 0 0 0 8 8.4h48.1c4.2 0 7.8-3.2 8.1-7.4C420 636.1 461.5 597 512 597s92.1 39.1 95.8 88.6c.3 4.2 3.9 7.4 8.1 7.4H664a8 8 0 0 0 8-8.4C667.6 600.3 597.5 533 512 533z"></path>
4747
</svg></i>
48-
<div class="ant-slider">
48+
<div tabindex="-1" class="ant-slider">
4949
<div class="ant-slider-rail"></div>
5050
<div class="ant-slider-track" style="left: 0%; width: 0%;"></div>
5151
<div class="ant-slider-step"></div>
5252
<div role="slider" tabindex="0" aria-valuemin="0" aria-valuemax="20" aria-valuenow="0" class="ant-slider-handle" style="left: 0%;"></div>
5353
<div class="ant-slider-mark"></div>
5454
</div>
55-
<div class="ant-slider">
55+
<div tabindex="-1" class="ant-slider">
5656
<div class="ant-slider-rail"></div>
5757
<div class="ant-slider-track" style="left: 0%; width: 0%;"></div>
5858
<div class="ant-slider-step"></div>
@@ -68,7 +68,7 @@ exports[`renders ./components/slider/demo/input-number.md correctly 1`] = `
6868
<div>
6969
<div class="ant-row">
7070
<div class="ant-col-12">
71-
<div class="ant-slider">
71+
<div tabindex="-1" class="ant-slider">
7272
<div class="ant-slider-rail"></div>
7373
<div class="ant-slider-track" style="left: 0%; width: 0%;"></div>
7474
<div class="ant-slider-step"></div>
@@ -85,7 +85,7 @@ exports[`renders ./components/slider/demo/input-number.md correctly 1`] = `
8585
</div>
8686
<div class="ant-row">
8787
<div class="ant-col-12">
88-
<div class="ant-slider">
88+
<div tabindex="-1" class="ant-slider">
8989
<div class="ant-slider-rail"></div>
9090
<div class="ant-slider-track" style="left: 0%; width: 0%;"></div>
9191
<div class="ant-slider-step"></div>
@@ -106,14 +106,14 @@ exports[`renders ./components/slider/demo/input-number.md correctly 1`] = `
106106
exports[`renders ./components/slider/demo/mark.md correctly 1`] = `
107107
<div id="components-slider-demo-mark">
108108
<h4>included=true</h4>
109-
<div class="ant-slider ant-slider-with-marks">
109+
<div tabindex="-1" class="ant-slider ant-slider-with-marks">
110110
<div class="ant-slider-rail"></div>
111111
<div class="ant-slider-track" style="left: 0%; width: 37%;"></div>
112112
<div class="ant-slider-step"><span class="ant-slider-dot ant-slider-dot-active" style="left: 0%;"></span><span class="ant-slider-dot ant-slider-dot-active" style="left: 26%;"></span><span class="ant-slider-dot ant-slider-dot-active" style="left: 37%;"></span><span class="ant-slider-dot" style="left: 100%;"></span></div>
113113
<div role="slider" tabindex="0" aria-valuemin="0" aria-valuemax="100" aria-valuenow="37" class="ant-slider-handle" style="left: 37%;"></div>
114114
<div class="ant-slider-mark"><span class="ant-slider-mark-text ant-slider-mark-text-active" style="width: 30.000000000000004%; margin-left: -15.000000000000002%; left: 0%;">0°C</span><span class="ant-slider-mark-text ant-slider-mark-text-active" style="width: 30.000000000000004%; margin-left: -15.000000000000002%; left: 26%;">26°C</span><span class="ant-slider-mark-text ant-slider-mark-text-active" style="width: 30.000000000000004%; margin-left: -15.000000000000002%; left: 37%;">37°C</span><span class="ant-slider-mark-text" style="width: 30.000000000000004%; margin-left: -15.000000000000002%; left: 100%; color: rgb(255, 85, 0);"><strong>100°C</strong></span></div>
115115
</div>
116-
<div class="ant-slider ant-slider-with-marks">
116+
<div tabindex="-1" class="ant-slider ant-slider-with-marks">
117117
<div class="ant-slider-rail"></div>
118118
<div class="ant-slider-track ant-slider-track-1" style="left: 26%; width: 11%;"></div>
119119
<div class="ant-slider-step"><span class="ant-slider-dot" style="left: 0%;"></span><span class="ant-slider-dot ant-slider-dot-active" style="left: 26%;"></span><span class="ant-slider-dot ant-slider-dot-active" style="left: 37%;"></span><span class="ant-slider-dot" style="left: 100%;"></span></div>
@@ -122,23 +122,23 @@ exports[`renders ./components/slider/demo/mark.md correctly 1`] = `
122122
<div class="ant-slider-mark"><span class="ant-slider-mark-text" style="width: 30.000000000000004%; margin-left: -15.000000000000002%; left: 0%;">0°C</span><span class="ant-slider-mark-text ant-slider-mark-text-active" style="width: 30.000000000000004%; margin-left: -15.000000000000002%; left: 26%;">26°C</span><span class="ant-slider-mark-text ant-slider-mark-text-active" style="width: 30.000000000000004%; margin-left: -15.000000000000002%; left: 37%;">37°C</span><span class="ant-slider-mark-text" style="width: 30.000000000000004%; margin-left: -15.000000000000002%; left: 100%; color: rgb(255, 85, 0);"><strong>100°C</strong></span></div>
123123
</div>
124124
<h4>included=false</h4>
125-
<div class="ant-slider ant-slider-with-marks">
125+
<div tabindex="-1" class="ant-slider ant-slider-with-marks">
126126
<div class="ant-slider-rail"></div>
127127
<!---->
128128
<div class="ant-slider-step"><span class="ant-slider-dot" style="left: 0%;"></span><span class="ant-slider-dot" style="left: 26%;"></span><span class="ant-slider-dot ant-slider-dot-active" style="left: 37%;"></span><span class="ant-slider-dot" style="left: 100%;"></span></div>
129129
<div role="slider" tabindex="0" aria-valuemin="0" aria-valuemax="100" aria-valuenow="37" class="ant-slider-handle" style="left: 37%;"></div>
130130
<div class="ant-slider-mark"><span class="ant-slider-mark-text" style="width: 30.000000000000004%; margin-left: -15.000000000000002%; left: 0%;">0°C</span><span class="ant-slider-mark-text" style="width: 30.000000000000004%; margin-left: -15.000000000000002%; left: 26%;">26°C</span><span class="ant-slider-mark-text ant-slider-mark-text-active" style="width: 30.000000000000004%; margin-left: -15.000000000000002%; left: 37%;">37°C</span><span class="ant-slider-mark-text" style="width: 30.000000000000004%; margin-left: -15.000000000000002%; left: 100%; color: rgb(255, 85, 0);"><strong>100°C</strong></span></div>
131131
</div>
132132
<h4>marks &amp; step</h4>
133-
<div class="ant-slider ant-slider-with-marks">
133+
<div tabindex="-1" class="ant-slider ant-slider-with-marks">
134134
<div class="ant-slider-rail"></div>
135135
<div class="ant-slider-track" style="left: 0%; width: 37%;"></div>
136136
<div class="ant-slider-step"><span class="ant-slider-dot ant-slider-dot-active" style="left: 0%;"></span><span class="ant-slider-dot ant-slider-dot-active" style="left: 26%;"></span><span class="ant-slider-dot ant-slider-dot-active" style="left: 37%;"></span><span class="ant-slider-dot" style="left: 100%;"></span></div>
137137
<div role="slider" tabindex="0" aria-valuemin="0" aria-valuemax="100" aria-valuenow="37" class="ant-slider-handle" style="left: 37%;"></div>
138138
<div class="ant-slider-mark"><span class="ant-slider-mark-text ant-slider-mark-text-active" style="width: 30.000000000000004%; margin-left: -15.000000000000002%; left: 0%;">0°C</span><span class="ant-slider-mark-text ant-slider-mark-text-active" style="width: 30.000000000000004%; margin-left: -15.000000000000002%; left: 26%;">26°C</span><span class="ant-slider-mark-text ant-slider-mark-text-active" style="width: 30.000000000000004%; margin-left: -15.000000000000002%; left: 37%;">37°C</span><span class="ant-slider-mark-text" style="width: 30.000000000000004%; margin-left: -15.000000000000002%; left: 100%; color: rgb(255, 85, 0);"><strong>100°C</strong></span></div>
139139
</div>
140140
<h4>step=null</h4>
141-
<div class="ant-slider ant-slider-with-marks">
141+
<div tabindex="-1" class="ant-slider ant-slider-with-marks">
142142
<div class="ant-slider-rail"></div>
143143
<div class="ant-slider-track" style="left: 0%; width: 37%;"></div>
144144
<div class="ant-slider-step"><span class="ant-slider-dot ant-slider-dot-active" style="left: 0%;"></span><span class="ant-slider-dot ant-slider-dot-active" style="left: 26%;"></span><span class="ant-slider-dot ant-slider-dot-active" style="left: 37%;"></span><span class="ant-slider-dot" style="left: 100%;"></span></div>
@@ -148,16 +148,26 @@ exports[`renders ./components/slider/demo/mark.md correctly 1`] = `
148148
</div>
149149
`;
150150
151+
exports[`renders ./components/slider/demo/show-tooltip.md correctly 1`] = `
152+
<div tabindex="-1" class="ant-slider">
153+
<div class="ant-slider-rail"></div>
154+
<div class="ant-slider-track" style="left: 0%; width: 30%;"></div>
155+
<div class="ant-slider-step"></div>
156+
<div role="slider" tabindex="0" aria-valuemin="0" aria-valuemax="100" aria-valuenow="30" class="ant-slider-handle ant-tooltip-open" style="left: 30%;"></div>
157+
<div class="ant-slider-mark"></div>
158+
</div>
159+
`;
160+
151161
exports[`renders ./components/slider/demo/tip-formatter.md correctly 1`] = `
152162
<div>
153-
<div class="ant-slider">
163+
<div tabindex="-1" class="ant-slider">
154164
<div class="ant-slider-rail"></div>
155165
<div class="ant-slider-track" style="left: 0%; width: 0%;"></div>
156166
<div class="ant-slider-step"></div>
157167
<div role="slider" tabindex="0" aria-valuemin="0" aria-valuemax="100" aria-valuenow="0" class="ant-slider-handle" style="left: 0%;"></div>
158168
<div class="ant-slider-mark"></div>
159169
</div>
160-
<div class="ant-slider">
170+
<div tabindex="-1" class="ant-slider">
161171
<div class="ant-slider-rail"></div>
162172
<div class="ant-slider-track" style="left: 0%; width: 0%;"></div>
163173
<div class="ant-slider-step"></div>
@@ -170,7 +180,7 @@ exports[`renders ./components/slider/demo/tip-formatter.md correctly 1`] = `
170180
exports[`renders ./components/slider/demo/vertical.md correctly 1`] = `
171181
<div style="height: 300px;">
172182
<div style="float: left; height: 300px; margin-left: 70px;">
173-
<div class="ant-slider ant-slider-vertical">
183+
<div tabindex="-1" class="ant-slider ant-slider-vertical">
174184
<div class="ant-slider-rail"></div>
175185
<div class="ant-slider-track" style="bottom: 0%; height: 30%;"></div>
176186
<div class="ant-slider-step"></div>
@@ -179,7 +189,7 @@ exports[`renders ./components/slider/demo/vertical.md correctly 1`] = `
179189
</div>
180190
</div>
181191
<div style="float: left; height: 300px; margin-left: 70px;">
182-
<div class="ant-slider ant-slider-vertical">
192+
<div tabindex="-1" class="ant-slider ant-slider-vertical">
183193
<div class="ant-slider-rail"></div>
184194
<div class="ant-slider-track ant-slider-track-1" style="bottom: 20%; height: 30%;"></div>
185195
<div class="ant-slider-step"></div>
@@ -189,7 +199,7 @@ exports[`renders ./components/slider/demo/vertical.md correctly 1`] = `
189199
</div>
190200
</div>
191201
<div style="float: left; height: 300px; margin-left: 70px;">
192-
<div class="ant-slider ant-slider-with-marks ant-slider-vertical">
202+
<div tabindex="-1" class="ant-slider ant-slider-with-marks ant-slider-vertical">
193203
<div class="ant-slider-rail"></div>
194204
<div class="ant-slider-track ant-slider-track-1" style="bottom: 26%; height: 11%;"></div>
195205
<div class="ant-slider-step"><span class="ant-slider-dot" style="bottom: 0%;"></span><span class="ant-slider-dot ant-slider-dot-active" style="bottom: 26%;"></span><span class="ant-slider-dot ant-slider-dot-active" style="bottom: 37%;"></span><span class="ant-slider-dot" style="bottom: 100%;"></span></div>
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
11
import demoTest from '../../../tests/shared/demoTest'
22

3-
demoTest('slider')
3+
demoTest('slider', { skip: process.env.LIB_DIR === 'dist' && ['show-tooltip.md'] })

components/slider/demo/basic.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ Basic slider. When `range` is `true`, display as dual thumb mode. When `disable`
1111
```html
1212
<template>
1313
<div>
14-
<a-slider :defaultValue="30" :disabled="disabled" />
14+
<a-slider id="test" :defaultValue="30" :disabled="disabled" />
1515
<a-slider range :defaultValue="[20, 50]" :disabled="disabled" />
1616
Disabled: <a-switch size="small" :checked="disabled" @change="handleDisabledChange" />
1717
</div>

components/slider/demo/index.vue

Lines changed: 2 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ import TipFormatter from './tip-formatter.md'
66
import Event from './event.md'
77
import Mark from './mark.md'
88
import Vertical from './vertical.md'
9+
import ShowTooltip from './show-tooltip.md'
910
import CN from '../index.zh-CN.md'
1011
import US from '../index.en-US.md'
1112
@@ -31,21 +32,14 @@ export default {
3132
return (
3233
<div>
3334
<md cn={md.cn} us={md.us}/>
34-
<br/>
3535
<Basic />
36-
<br />
3736
<InputNumber />
38-
<br />
3937
<IconSlider />
40-
<br />
4138
<TipFormatter />
42-
<br />
4339
<Event />
44-
<br />
4540
<Mark />
46-
<br />
4741
<Vertical />
48-
<br />
42+
<ShowTooltip />
4943
<api>
5044
<template slot='cn'>
5145
<CN/>
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
<cn>
2+
#### 控制 ToolTip 的显示
3+
`tooltipVisible``true` 时,将始终显示ToolTip;反之则始终不显示,即使在拖动、移入时也是如此。
4+
</cn>
5+
6+
<us>
7+
#### Control visible of ToolTip
8+
When `tooltipVisible` is `true`, ToolTip will show always, or ToolTip will not show anyway, even if dragging or hovering.
9+
</us>
10+
11+
```html
12+
<template>
13+
<a-slider :defaultValue="30" :tooltipVisible="true" />
14+
</template>
15+
```

components/slider/index.en-US.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
| tipFormatter | Slider will pass its value to `tipFormatter`, and display its value in Tooltip, and hide Tooltip when return value is null. | Function\|null | IDENTITY |
1616
| value(v-model) | The value of slider. When `range` is `false`, use `number`, otherwise, use `[number, number]` | number\|number\[] | |
1717
| vertical | If true, the slider will be vertical. | Boolean | false |
18+
| tooltipVisible | If true, Tooltip will show always, or it will not show anyway, even if dragging or hovering. | Boolean | |
1819

1920

2021
### events

components/slider/index.jsx

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@ export const SliderProps = () => ({
4141
PropTypes.func,
4242
PropTypes.object,
4343
]),
44-
id: PropTypes.string,
44+
tooltipVisible: PropTypes.bool,
4545
})
4646

4747
const Slider = {
@@ -74,11 +74,11 @@ const Slider = {
7474
},
7575
}))
7676
},
77-
handleWithTooltip ({ value, dragging, index, ref, ...restProps }) {
78-
const { tooltipPrefixCls, tipFormatter } = this.$props
77+
handleWithTooltip ({ value, dragging, index, directives, on, ...restProps }) {
78+
const { tooltipPrefixCls, tipFormatter, tooltipVisible } = this.$props
7979
const { visibles } = this
80-
const visible = tipFormatter ? (visibles[index] || dragging) : false
81-
80+
const isTipFormatter = tipFormatter ? visibles[index] || dragging : false
81+
const visible = tooltipVisible || (tooltipVisible === undefined && isTipFormatter)
8282
const tooltipProps = {
8383
props: {
8484
prefixCls: tooltipPrefixCls,
@@ -94,8 +94,9 @@ const Slider = {
9494
value,
9595
...restProps,
9696
},
97-
ref,
97+
directives,
9898
on: {
99+
...on,
99100
mouseenter: () => this.toggleTooltipVisible(index, true),
100101
mouseleave: () => this.toggleTooltipVisible(index, false),
101102
},
@@ -114,7 +115,7 @@ const Slider = {
114115
this.$refs.sliderRef.focus()
115116
},
116117
blur () {
117-
this.$refs.sliderRef.focus()
118+
this.$refs.sliderRef.blur()
118119
},
119120
},
120121
render () {

components/slider/index.zh-CN.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
| tipFormatter | Slider 会把当前值传给 `tipFormatter`,并在 Tooltip 中显示 `tipFormatter` 的返回值,若为 null,则隐藏 Tooltip。 | Function\|null | IDENTITY |
1616
| value(v-model) | 设置当前取值。当 `range``false` 时,使用 `number`,否则用 `[number, number]` | number\|number\[] | |
1717
| vertical | 值为 `true` 时,Slider 为垂直方向 | Boolean | false |
18+
| tooltipVisible | 值为`true`时,Tooltip 将会始终显示;否则始终不显示,哪怕在拖拽及移入时。 | Boolean | |
1819

1920
### 事件
2021
| 事件名称 | 说明 | 回调参数 |

0 commit comments

Comments
 (0)