@v-c/slider 1.0.2 → 1.0.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/docs/handle.vue CHANGED
@@ -1,8 +1,14 @@
1
1
  <script setup lang="ts">
2
2
  import type { CSSProperties } from 'vue'
3
3
  import Slider from '@v-c/slider'
4
+ import { ref } from 'vue'
4
5
  import TooltipSlider, { HandleRender } from './TooltipSlider.tsx'
5
6
 
7
+ const data1 = ref(3)
8
+ const data2 = ref(3)
9
+ const data3 = ref(20)
10
+ const data4 = ref([3, 10])
11
+ const data5 = ref(3)
6
12
  const wrapperStyle: CSSProperties = {
7
13
  width: '400px',
8
14
  margin: '50px',
@@ -13,29 +19,29 @@ const wrapperStyle: CSSProperties = {
13
19
  <div>
14
20
  <div :style="wrapperStyle">
15
21
  <p>Slider with custom handle</p>
16
- <Slider :min="0" :max="20" :default-value="3" :handle-render="HandleRender" />
22
+ <Slider v-model:value="data1" :min="0" :max="20" :handle-render="HandleRender" />
17
23
  </div>
18
24
  <div :style="wrapperStyle">
19
25
  <p>Reversed Slider with custom handle</p>
20
- <Slider :min="0" :max="20" reverse :default-value="3" :handle-render="HandleRender"/>
26
+ <Slider v-model:value="data2" :min="0" :max="20" reverse :handle-render="HandleRender" />
21
27
  </div>
22
28
  <div :style="wrapperStyle">
23
29
  <p>Slider with fixed values</p>
24
- <Slider :min="20" :default-value="20" :marks="{ 20: 20, 40: 40, 100: 100 }" :step="null" />
30
+ <Slider v-model:value="data3" :min="20" :marks="{ 20: 20, 40: 40, 100: 100 }" :step="null" />
25
31
  </div>
26
32
  <div :style="wrapperStyle">
27
33
  <p>Range with custom tooltip</p>
28
34
  <TooltipSlider
35
+ v-model:value="data4"
29
36
  range
30
37
  :min="0"
31
38
  :max="20"
32
- :default-value="[3, 10]"
33
39
  :tip-formatter="(value) => (`${value}!`)"
34
40
  />
35
41
  </div>
36
42
  <div :style="wrapperStyle">
37
43
  <p>Keyboard events disabled</p>
38
- <Slider :default-value="3" :keyboard="false" />
44
+ <Slider v-model:value="data5" :keyboard="false" />
39
45
  </div>
40
46
  </div>
41
47
  </template>
package/docs/marks.vue CHANGED
@@ -1,6 +1,16 @@
1
1
  <script setup lang="ts">
2
2
  import type { CSSProperties } from 'vue'
3
3
  import Slider from '@v-c/slider'
4
+ import { ref } from 'vue'
5
+
6
+ const data1 = ref(20)
7
+ const data2 = ref([-10, 0])
8
+ const data3 = ref(20)
9
+ const data4 = ref(20)
10
+ const data5 = ref(20)
11
+ const data6 = ref(20)
12
+ const data7 = ref([20, 25, 35, 40])
13
+ const data8 = ref([20, 40])
4
14
 
5
15
  const style: CSSProperties = {
6
16
  width: '400px',
@@ -21,8 +31,8 @@ const marks = {
21
31
  },
22
32
  }
23
33
 
24
- function log(value) {
25
- console.log(value); //eslint-disable-line
34
+ function log(value: unknown) {
35
+ console.log(value)
26
36
  }
27
37
  </script>
28
38
 
@@ -31,10 +41,10 @@ function log(value) {
31
41
  <div :style="style">
32
42
  <p>Slider with marks, `step=null`</p>
33
43
  <Slider
44
+ v-model:value="data1"
34
45
  :min="-10"
35
46
  :marks="marks"
36
47
  :step="null"
37
- :default-value="20"
38
48
  @change="log"
39
49
  @change-complete="(v) => console.log('AfterChange', v)"
40
50
  >
@@ -52,11 +62,11 @@ function log(value) {
52
62
  <div :style="style">
53
63
  <p>Range Slider with marks, `step=null`, pushable, draggableTrack</p>
54
64
  <Slider
65
+ v-model:value="data2"
55
66
  range
56
67
  :min="-10"
57
68
  :marks="marks"
58
69
  :step="null"
59
- :default-value="[-10, 0]"
60
70
  :allow-cross="false"
61
71
  pushable
62
72
  @change="log"
@@ -66,29 +76,29 @@ function log(value) {
66
76
 
67
77
  <div :style="style">
68
78
  <p>Slider with marks and steps</p>
69
- <Slider dots :min="-10" :marks="marks" :step="10" :default-value="20" @change="log" />
79
+ <Slider v-model:value="data3" dots :min="-10" :marks="marks" :step="10" @change="log" />
70
80
  </div>
71
81
  <div :style="style">
72
82
  <p>Reversed Slider with marks and steps</p>
73
- <Slider dots reverse :min="-10" :marks="marks" :step="10" :default-value="20" @change="log" />
83
+ <Slider v-model:value="data4" dots reverse :min="-10" :marks="marks" :step="10" @change="log" />
74
84
  </div>
75
85
 
76
86
  <div :style="style">
77
87
  <p>Slider with marks, `included=false`</p>
78
- <Slider :min="-10" :marks="marks" :included="false" :default-value="20" />
88
+ <Slider v-model:value="data5" :min="-10" :marks="marks" :included="false" />
79
89
  </div>
80
90
  <div :style="style">
81
91
  <p>Slider with marks and steps, `included=false`</p>
82
- <Slider :min="-10" :marks="marks" :step="10" :included="false" :default-value="20" />
92
+ <Slider v-model:value="data6" :min="-10" :marks="marks" :step="10" :included="false" />
83
93
  </div>
84
94
 
85
95
  <div :style="style">
86
96
  <p>Range with marks</p>
87
- <Slider range :min="-10" :marks="marks" :default-value="[20, 25, 30, 40]" @change="log" />
97
+ <Slider v-model:value="data7" range :min="-10" :marks="marks" @change="log" />
88
98
  </div>
89
99
  <div :style="style">
90
100
  <p>Range with marks and steps</p>
91
- <Slider range :min="-10" :marks="marks" :step="10" :default-value="[20, 40]" @change="log" />
101
+ <Slider v-model:value="data8" range :min="-10" :marks="marks" :step="10" @change="log" />
92
102
  </div>
93
103
  </div>
94
104
  </template>
package/docs/multiple.vue CHANGED
@@ -8,10 +8,6 @@ const style: CSSProperties = {
8
8
  margin: '50px',
9
9
  }
10
10
 
11
- // const NodeWrapper = ({ children }: { children: React.ReactElement }) => {
12
- // return <div>{React.cloneElement(children, {}, <div>TOOLTIP</div>)}</div>;
13
- // };
14
-
15
11
  function NodeWrapper(props: any): VNode {
16
12
  return h('div', {}, [
17
13
  h('slot', {}, { default: () => props.node }),
@@ -28,10 +24,10 @@ const state = ref([0, 50, 80])
28
24
  <div>
29
25
  <div :style="style">
30
26
  <Slider
27
+ v-model:value="state"
31
28
  range
32
29
  :min="0"
33
30
  :max="100"
34
- :value="state"
35
31
  :styles="{
36
32
  tracks: {
37
33
  background: `linear-gradient(to right, blue, red)`,
package/docs/range.vue CHANGED
@@ -3,6 +3,19 @@ import type { CSSProperties } from 'vue'
3
3
  import Slider from '@v-c/slider'
4
4
  import { reactive, ref } from 'vue'
5
5
 
6
+ const data1 = ref([0, 20])
7
+ const data2 = ref([0, 20])
8
+ const data3 = ref([20, 20])
9
+ const data4 = ref([20, 40])
10
+ const data5 = ref([0, 20])
11
+ const data6 = ref([20, 40, 60, 80])
12
+ const data7 = ref([20, 40, 60, 80])
13
+ const data10 = ref([20, 50])
14
+ const data11 = ref([20, 40, 60, 80])
15
+ const data12 = ref([0, 40])
16
+ const data13 = ref([0, 40])
17
+ const data14 = ref([0, 20, 30, 40, 50])
18
+
6
19
  const style: CSSProperties = {
7
20
  width: '400px',
8
21
  margin: '50px',
@@ -82,23 +95,23 @@ function handlePureRenderRangeChange(value: any) {
82
95
  <div>
83
96
  <div :style="style">
84
97
  <p>Basic Range,`allowCross=false`</p>
85
- <Slider range :allow-cross="false" :default-value="[0, 20]" @change="log" />
98
+ <Slider v-model:value="data1" range :allow-cross="false" @change="log" />
86
99
  </div>
87
100
  <div :style="style">
88
101
  <p>Basic reverse Range`</p>
89
- <Slider range :allow-cross="false" :default-value="[0, 20]" reverse @change="log" />
102
+ <Slider v-model:value="data2" range :allow-cross="false" reverse @change="log" />
90
103
  </div>
91
104
  <div :style="style">
92
105
  <p>Basic Range,`step=20` </p>
93
- <Slider range :step="20" :default-value="[20, 20]" @before-change="log" />
106
+ <Slider v-model:value="data3" range :step="20" @before-change="log" />
94
107
  </div>
95
108
  <div :style="style">
96
109
  <p>Basic Range,`step=20, dots` </p>
97
- <Slider range dots :step="20" :default-value="[20, 40]" @change-complete="log" />
110
+ <Slider v-model:value="data4" range dots :step="20" @change-complete="log" />
98
111
  </div>
99
112
  <div :style="style">
100
113
  <p>Basic Range,disabled</p>
101
- <Slider range :allow-cross="false" :default-value="[0, 20]" disabled @change="log" />
114
+ <Slider v-model:value="data5" range :allow-cross="false" disabled @change="log" />
102
115
  </div>
103
116
  <div :style="style">
104
117
  <p>Controlled Range</p>
@@ -125,14 +138,14 @@ function handlePureRenderRangeChange(value: any) {
125
138
  </div>
126
139
  <div :style="style">
127
140
  <p>Multi Range, count=3 and pushable=true</p>
128
- <Slider range :count="3" :default-value="[20, 40, 60, 80]" pushable />
141
+ <Slider v-model:value="data6" range :count="3" pushable />
129
142
  </div>
130
143
  <div :style="style">
131
144
  <p>Multi Range with custom track and handle style and pushable</p>
132
145
  <Slider
146
+ v-model:value="data7"
133
147
  range
134
148
  :count="3"
135
- :default-value="[20, 40, 60, 80]"
136
149
  pushable
137
150
  :track-style="[{ backgroundColor: 'red' }, { backgroundColor: 'green' }]"
138
151
  :handle-style="[{ backgroundColor: 'yellow' }, { backgroundColor: 'gray' }]"
@@ -167,8 +180,8 @@ function handlePureRenderRangeChange(value: any) {
167
180
  <br>
168
181
  <br>
169
182
  <Slider
183
+ v-model:value="data10"
170
184
  range
171
- :default-value="[20, 50]"
172
185
  :min="dynamicBounds.min"
173
186
  :max="dynamicBounds.max"
174
187
  @change="onDynamicSliderChange"
@@ -178,32 +191,32 @@ function handlePureRenderRangeChange(value: any) {
178
191
  <div :style="style">
179
192
  <p>Range as child component</p>
180
193
  <Slider
194
+ v-model:value="data11"
181
195
  range
182
- :default-value="[20, 40, 60, 80]"
183
196
  :allow-cross="false"
184
197
  @change="handlePureRenderRangeChange"
185
198
  />
186
199
  </div>
187
200
  <div :style="style">
188
201
  <p>draggableTrack two points</p>
189
- <Slider :range="{ draggableTrack: true }" :allow-cross="false" :default-value="[0, 40]" @change="log" />
202
+ <Slider v-model:value="data12" :range="{ draggableTrack: true }" :allow-cross="false" @change="log" />
190
203
  </div>
191
204
  <div :style="style">
192
205
  <p>draggableTrack two points(reverse)</p>
193
206
  <Slider
207
+ v-model:value="data13"
194
208
  :range="{ draggableTrack: true }"
195
209
  :allow-cross="false"
196
210
  reverse
197
- :default-value="[0, 40]"
198
211
  @change="log"
199
212
  />
200
213
  </div>
201
214
  <div :style="style">
202
215
  <p>draggableTrack multiple points</p>
203
216
  <Slider
217
+ v-model:value="data14"
204
218
  :range="{ draggableTrack: true }"
205
219
  :allow-cross="false"
206
- :default-value="[0, 20, 30, 40, 50]"
207
220
  @change="log"
208
221
  />
209
222
  </div>
@@ -80,6 +80,22 @@ function onDynamicStepChange(e: any) {
80
80
  dynamicStep.value = +e.target.value || 1
81
81
  }
82
82
 
83
+ // 新增的data refs用于替换default-value
84
+ const data1 = ref(50)
85
+ const data2 = ref(100)
86
+ const data3 = ref(100)
87
+ const data4 = ref(30)
88
+
89
+ const data5 = ref(50)
90
+ const data6 = ref(30)
91
+ const data7 = ref(30)
92
+ const data8 = ref(30)
93
+ const data9 = ref(50)
94
+ const data10 = ref(null)
95
+ const data11 = ref(null)
96
+ const data12 = ref(20)
97
+ const data13 = ref(0)
98
+
83
99
  const labelStyle = { minWidth: '60px', display: 'inline-block' }
84
100
  const inputStyle = { marginBottom: '10px' }
85
101
  </script>
@@ -88,33 +104,33 @@ const inputStyle = { marginBottom: '10px' }
88
104
  <div>
89
105
  <div :style="style">
90
106
  <p>Basic Slider</p>
91
- <Slider @change="log" />
107
+ <Slider v-model:value="data5" @change="log" />
92
108
  </div>
93
109
  <div :style="style">
94
110
  <p>Basic Slider, `startPoint=50`</p>
95
- <Slider :start-point="50" @change="log" />
111
+ <Slider v-model:value="data9" :start-point="50" @change="log" />
96
112
  </div>
97
113
  <div :style="style">
98
114
  <p>Slider reverse</p>
99
- <Slider reverse :min="20" :max="60" @change="log" />
115
+ <Slider v-model:value="data13" reverse :min="20" :max="60" @change="log" />
100
116
  </div>
101
117
  <div :style="style">
102
118
  <p>Basic Slider,`step=20`</p>
103
- <Slider :step="20" :default-value="50" @before-change="log" />
119
+ <Slider v-model:value="data1" :step="20" @before-change="log" />
104
120
  </div>
105
121
  <div :style="style">
106
122
  <p>Basic Slider,`step=20, dots`</p>
107
- <Slider dots :step="20" :default-value="100" @change-complete="log" />
123
+ <Slider v-model:value="data2" dots :step="20" @change-complete="log" />
108
124
  </div>
109
125
  <div :style="style">
110
126
  <p>
111
- Basic Slider,`step=20, dots, dotStyle={"borderColor: 'orange'"}, activeDotStyle=
112
- {"borderColor: 'yellow'"}`
127
+ Basic Slider,`step=20, dots, dotStyle={"borderColor: 'orange'"}, activeDotStyle= {"borderColor: 'yellow'"}`
113
128
  </p>
129
+ />
114
130
  <Slider
131
+ v-model:value="data3"
115
132
  dots
116
133
  :step="20"
117
- :default-value="100"
118
134
  :dot-style="{ borderColor: 'orange' }"
119
135
  :active-dot-style="{ borderColor: 'yellow' }"
120
136
  @change-complete="log"
@@ -133,7 +149,7 @@ const inputStyle = { marginBottom: '10px' }
133
149
  Slider with custom handle and track style.<strong>(old api, will be deprecated)</strong>
134
150
  </p>
135
151
  <Slider
136
- :default-value="30"
152
+ v-model:value="data4"
137
153
  :rail-style="{ backgroundColor: 'red', height: 10 }"
138
154
  :track-style="{ backgroundColor: 'blue', height: 10 }"
139
155
  :handle-style="{
@@ -151,7 +167,7 @@ const inputStyle = { marginBottom: '10px' }
151
167
  Slider with custom handle and track style.<strong>(The recommended new api)</strong>
152
168
  </p>
153
169
  <Slider
154
- :default-value="30"
170
+ v-model:value="data6"
155
171
  :track-style="{ backgroundColor: 'blue', height: 10 }"
156
172
  :handle-style="{
157
173
  borderColor: 'blue',
@@ -170,7 +186,7 @@ const inputStyle = { marginBottom: '10px' }
170
186
  <strong>(The recommended new api)</strong>
171
187
  </p>
172
188
  <Slider
173
- :default-value="30"
189
+ v-model:value="data4"
174
190
  :track-style="{ backgroundColor: 'blue', height: 10 }"
175
191
  reverse
176
192
  :handle-style="{
@@ -186,16 +202,16 @@ const inputStyle = { marginBottom: '10px' }
186
202
  </div>
187
203
  <div :style="style">
188
204
  <p>Basic Slider, disabled</p>
189
- <Slider disabled @change="log" />
205
+ <Slider v-model:value="data12" disabled @change="log" />
190
206
  </div>
191
207
  <div :style="style">
192
208
  <p>Controlled Slider</p>
193
- <Slider :value="50" />
209
+ <Slider v-model:value="data5" />
194
210
  </div>
195
211
  <div :style="style">
196
212
  <p>Customized Slider</p>
197
213
  <Slider
198
- :value="customizedValue"
214
+ v-model:value="customizedValue"
199
215
  @change="onCustomizedSliderChange"
200
216
  @change-complete="onCustomizedSliderAfterChange"
201
217
  />
@@ -204,7 +220,7 @@ const inputStyle = { marginBottom: '10px' }
204
220
  <p>Slider with null value and reset button</p>
205
221
  <div>
206
222
  <Slider
207
- :value="nullableSliderValue"
223
+ v-model:value="nullableSliderValue"
208
224
  @change="onNullableSliderChange"
209
225
  @change-complete="onNullableSliderAfterChange"
210
226
  />
@@ -216,7 +232,7 @@ const inputStyle = { marginBottom: '10px' }
216
232
  <div :style="style">
217
233
  <p>Range Slider with null value and reset button</p>
218
234
  <div>
219
- <Slider range :value="nullableRangeValue" @change="setNullableRangeValue" />
235
+ <Slider v-model:value="nullableRangeValue" range @change="setNullableRangeValue" />
220
236
  <button type="button" @click="resetNullableRange">
221
237
  Reset
222
238
  </button>
@@ -255,7 +271,7 @@ const inputStyle = { marginBottom: '10px' }
255
271
  <br>
256
272
  <br>
257
273
  <Slider
258
- :value="dynamicValue"
274
+ v-model:value="dynamicValue"
259
275
  :min="dynamicMin"
260
276
  :max="dynamicMax"
261
277
  :step="dynamicStep"
package/docs/vertical.vue CHANGED
@@ -1,6 +1,7 @@
1
1
  <script setup lang="ts">
2
2
  import type { CSSProperties } from 'vue'
3
3
  import Slider from '@v-c/slider'
4
+ import { ref } from 'vue'
4
5
 
5
6
  const style: CSSProperties = {
6
7
  float: 'left',
@@ -28,8 +29,20 @@ const marks = {
28
29
  },
29
30
  }
30
31
 
31
- function log(value) {
32
- console.log(value); //eslint-disable-line
32
+ // 创建响应式数据
33
+ const data1 = ref(20)
34
+ const data2 = ref(20)
35
+ const data3 = ref(20)
36
+ const data4 = ref(20)
37
+ const data5 = ref(20)
38
+ const data6 = ref(20)
39
+ const data7 = ref([20, 40])
40
+ const data8 = ref([20, 40])
41
+ const data9 = ref([20, 40])
42
+ const data10 = ref([20, 40])
43
+
44
+ function log(value: unknown) {
45
+ console.log(value)
33
46
  }
34
47
  </script>
35
48
 
@@ -37,80 +50,80 @@ function log(value) {
37
50
  <div :style="parentStyle">
38
51
  <div :style="style">
39
52
  <p>Slider with marks, `step=null`</p>
40
- <Slider vertical :min="-10" :marks="marks" :step="null" :default-value="20" @change="log" />
53
+ <Slider v-model:value="data1" vertical :min="-10" :marks="marks" :step="null" @change="log" />
41
54
  </div>
42
55
  <div :style="style">
43
56
  <p>Slider with marks, `step=null` and `startPoint=0`</p>
44
57
  <Slider
58
+ v-model:value="data2"
45
59
  vertical
46
60
  :min="-10"
47
61
  :start-point="0"
48
62
  :marks="marks"
49
63
  :step="null"
50
- :default-value="20"
51
64
  @change="log"
52
65
  />
53
66
  </div>
54
67
  <div :style="style">
55
68
  <p>Reverse Slider with marks, `step=null`</p>
56
69
  <Slider
70
+ v-model:value="data3"
57
71
  vertical
58
72
  :min="-10"
59
73
  :marks="marks"
60
74
  :step="null"
61
- :default-value="20"
62
75
  reverse
63
76
  @change="log"
64
77
  />
65
78
  </div>
66
79
  <div :style="style">
67
80
  <p>Slider with marks and steps</p>
68
- <Slider vertical dots :min="-10" :marks="marks" :step="10" :default-value="20" @change="log" />
81
+ <Slider v-model:value="data4" vertical dots :min="-10" :marks="marks" :step="10" @change="log" />
69
82
  </div>
70
83
  <div :style="style">
71
84
  <p>Slider with marks, `included=false`</p>
72
- <Slider vertical :min="-10" :marks="marks" :included="false" :default-value="20" />
85
+ <Slider v-model:value="data5" vertical :min="-10" :marks="marks" :included="false" />
73
86
  </div>
74
87
  <div :style="style">
75
88
  <p>Slider with marks and steps, `included=false`</p>
76
- <Slider vertical :min="-10" :marks="marks" :step="10" :included="false" :default-value="20" />
89
+ <Slider v-model:value="data6" vertical :min="-10" :marks="marks" :step="10" :included="false" />
77
90
  </div>
78
91
  <div :style="style">
79
92
  <p>Range with marks</p>
80
- <Slider range vertical :min="-10" :marks="marks" :default-value="[20, 40]" @change="log" />
93
+ <Slider v-model:value="data7" range vertical :min="-10" :marks="marks" @change="log" />
81
94
  </div>
82
95
  <div :style="style">
83
96
  <p>Range with marks and steps</p>
84
97
  <Slider
98
+ v-model:value="data8"
85
99
  range
86
100
  vertical
87
101
  :min="-10"
88
102
  :marks="marks"
89
103
  :step="10"
90
- :default-value="[20, 40]"
91
104
  @change="log"
92
105
  />
93
106
  </div>
94
107
  <div :style="style">
95
108
  <p>Range with marks and draggableTrack</p>
96
109
  <Slider
110
+ v-model:value="data9"
97
111
  :range="{ draggableTrack: true }"
98
112
  vertical
99
113
  :min="-10"
100
114
  :marks="marks"
101
- :default-value="[20, 40]"
102
115
  @change="log"
103
116
  />
104
117
  </div>
105
118
  <div :style="style">
106
119
  <p>Range with marks and draggableTrack(reverse)</p>
107
120
  <Slider
121
+ v-model:value="data10"
108
122
  :range="{ draggableTrack: true }"
109
123
  vertical
110
124
  reverse
111
125
  :min="-10"
112
126
  :marks="marks"
113
- :default-value="[20, 40]"
114
127
  @change="log"
115
128
  />
116
129
  </div>
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@v-c/slider",
3
3
  "type": "module",
4
- "version": "1.0.2",
4
+ "version": "1.0.3",
5
5
  "description": "",
6
6
  "exports": {
7
7
  ".": {
@@ -6,6 +6,15 @@ import { defineComponent, ref } from 'vue'
6
6
  import { useInjectSlider } from '../context'
7
7
  import { getDirectionStyle, getIndex } from '../util'
8
8
 
9
+ export interface RenderProps {
10
+ index: number
11
+ prefixCls: string
12
+ value: number
13
+ dragging: boolean
14
+ draggingDelete: boolean
15
+ node: any
16
+ }
17
+
9
18
  export default defineComponent({
10
19
  name: 'Handle',
11
20
  props: {
@@ -19,7 +28,7 @@ export default defineComponent({
19
28
  onOffsetChange: { type: Function as PropType<(value: number | 'min' | 'max', valueIndex: number) => void>, required: true },
20
29
  onFocus: { type: Function as PropType<(e: FocusEvent, index: number) => void>, required: true },
21
30
  onMouseenter: { type: Function as PropType<(e: MouseEvent, index: number) => void>, required: true },
22
- render: Function,
31
+ render: { type: Function as PropType<(v: RenderProps) => any> },
23
32
  onChangeComplete: Function as PropType<() => void>,
24
33
  mock: Boolean,
25
34
  classNames: Object as PropType<SliderClassNames>,
@@ -4,6 +4,14 @@ import { defineComponent, ref } from 'vue'
4
4
  import { getIndex } from '../util'
5
5
  import Handle from './Handle'
6
6
 
7
+ export interface RenderProps {
8
+ index: number
9
+ prefixCls: string
10
+ value: number
11
+ dragging: boolean
12
+ draggingDelete: boolean
13
+ node: any
14
+ }
7
15
  export interface HandlesRef {
8
16
  focus: (index: number) => void
9
17
  hideHelp: VoidFunction
@@ -20,8 +28,8 @@ export default defineComponent({
20
28
  onFocus: { type: Function as PropType<(e: FocusEvent) => void> },
21
29
  onBlur: { type: Function as PropType<(e: FocusEvent) => void> },
22
30
  onDelete: { type: Function as PropType<(index: number) => void>, required: true },
23
- handleRender: Function,
24
- activeHandleRender: Function,
31
+ handleRender: { type: Function as PropType<(props: RenderProps) => any> },
32
+ activeHandleRender: { type: Function as PropType<(props: RenderProps) => any> },
25
33
  draggingIndex: { type: Number, default: -1 },
26
34
  draggingDelete: { type: Boolean, default: false },
27
35
  onChangeComplete: Function as PropType<() => void>,
package/src/Slider.tsx CHANGED
@@ -30,6 +30,15 @@ export interface RangeConfig {
30
30
  maxCount?: number
31
31
  }
32
32
 
33
+ export interface RenderProps {
34
+ index: number
35
+ prefixCls: string
36
+ value: number
37
+ dragging: boolean
38
+ draggingDelete: boolean
39
+ node: any
40
+ }
41
+
33
42
  type ValueType = number | number[]
34
43
 
35
44
  function sliderProps() {
@@ -44,8 +53,8 @@ function sliderProps() {
44
53
  autoFocus: Boolean,
45
54
  min: { type: Number, default: 0 },
46
55
  max: { type: Number, default: 100 },
47
- step: { type: Number, default: 1 },
48
- value: [Number, Array] as PropType<ValueType>,
56
+ step: { type: [Number, null], default: 1 },
57
+ value: [Number, Array, null] as PropType<ValueType | null>,
49
58
  defaultValue: [Number, Array] as PropType<ValueType>,
50
59
  range: [Boolean, Object] as PropType<boolean | RangeConfig>,
51
60
  count: Number,
@@ -62,8 +71,8 @@ function sliderProps() {
62
71
  activeDotStyle: [Object, Function] as PropType<Record<string, any> | ((dotValue: number) => Record<string, any>)>,
63
72
  marks: Object as PropType<Record<string | number, any | MarkObj>>,
64
73
  dots: Boolean,
65
- handleRender: Function,
66
- activeHandleRender: Function,
74
+ handleRender: Function as PropType<(props: RenderProps) => any>,
75
+ activeHandleRender: Function as PropType<(props: RenderProps) => any>,
67
76
  track: { type: Boolean, default: true },
68
77
  tabIndex: { type: [Number, Array] as PropType<ValueType>, default: 0 },
69
78
  ariaLabelForHandle: [String, Array] as PropType<string | string[]>,
@@ -94,7 +103,7 @@ export default defineComponent({
94
103
  },
95
104
  emits: ['focus', 'blur', 'change', 'beforeChange', 'afterChange', 'changeComplete'],
96
105
  slots: Object as SlotsType<{
97
- mark: ({ point: number, label: unknown }) => any
106
+ mark: ({ point, label }: { point: number, label: unknown }) => any
98
107
  }>,
99
108
  setup(props, { attrs, emit, expose, slots }) {
100
109
  const handlesRef = ref<HandlesRef>()
@@ -112,10 +121,10 @@ export default defineComponent({
112
121
 
113
122
  const mergedMin = shallowRef(0)
114
123
  const mergedMax = shallowRef(100)
115
- const mergedStep = shallowRef(1)
124
+ const mergedStep = shallowRef<number | null>(1)
116
125
  const markList = ref<InternalMarkObj[]>([])
117
126
 
118
- const mergedValue = ref<ValueType>(props.defaultValue! || props.value!)
127
+ const mergedValue = ref<ValueType | null>(props.defaultValue! || props.value!)
119
128
  const rawValues = ref<number[] | ComputedRef<number[]>>([])
120
129
  const getRange = ref()
121
130
  const getOffset = ref()
@@ -210,7 +219,7 @@ export default defineComponent({
210
219
  : [mergedValue.value]
211
220
 
212
221
  const [val0 = mergedMin.value] = valueList
213
- let returnValues = mergedValue.value === null ? [] : [val0]
222
+ let returnValues: number[] = mergedValue.value === null ? [] : [val0]
214
223
 
215
224
  // Format as range
216
225
  if (rangeEnabled) {