@v-c/slider 1.0.1 → 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/dist/Handles/Handle.cjs +1 -1
- package/dist/Handles/Handle.d.ts +14 -2
- package/dist/Handles/Handle.js +55 -53
- package/dist/Handles/index.cjs +1 -1
- package/dist/Handles/index.d.ts +20 -4
- package/dist/Handles/index.js +6 -2
- package/dist/Marks/index.cjs +1 -1
- package/dist/Marks/index.js +23 -22
- package/dist/Slider.cjs +1 -1
- package/dist/Slider.d.ts +28 -15
- package/dist/Slider.js +113 -111
- package/dist/Tracks/Track.cjs +1 -1
- package/dist/Tracks/Track.js +2 -2
- package/dist/hooks/useDrag.cjs +1 -1
- package/dist/hooks/useDrag.js +39 -39
- package/dist/hooks/useOffset.cjs +1 -1
- package/dist/hooks/useOffset.d.ts +1 -1
- package/dist/hooks/useOffset.js +76 -63
- package/docs/debug.vue +1 -2
- package/docs/editable.vue +3 -4
- package/docs/handle.vue +11 -5
- package/docs/marks.vue +30 -11
- package/docs/multiple.vue +1 -5
- package/docs/range.vue +25 -12
- package/docs/sliderDemo.vue +33 -17
- package/docs/vertical.vue +25 -12
- package/package.json +1 -1
- package/src/Handles/Handle.tsx +11 -5
- package/src/Handles/index.tsx +10 -2
- package/src/Marks/index.tsx +2 -2
- package/src/Slider.tsx +602 -592
- package/src/Tracks/Track.tsx +2 -2
- package/src/hooks/useDrag.ts +0 -1
- package/src/hooks/useOffset.ts +48 -40
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
|
-
|
|
32
|
-
|
|
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"
|
|
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"
|
|
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"
|
|
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"
|
|
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"
|
|
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
package/src/Handles/Handle.tsx
CHANGED
|
@@ -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>,
|
|
@@ -47,19 +56,16 @@ export default defineComponent({
|
|
|
47
56
|
|
|
48
57
|
// ============================ Events ============================
|
|
49
58
|
const onInternalStartMove = (e: MouseEvent | TouchEvent) => {
|
|
50
|
-
console.log('emit-start')
|
|
51
59
|
if (!disabled) {
|
|
52
60
|
emit('startMove', e, props.valueIndex)
|
|
53
61
|
}
|
|
54
62
|
}
|
|
55
63
|
|
|
56
64
|
const onInternalFocus = (e: FocusEvent) => {
|
|
57
|
-
console.log('emit-focus')
|
|
58
65
|
emit('focus', e, props.valueIndex)
|
|
59
66
|
}
|
|
60
67
|
|
|
61
68
|
const onInternalMouseEnter = (e: MouseEvent) => {
|
|
62
|
-
console.log('emit-enter')
|
|
63
69
|
emit('mouseenter', e, props.valueIndex)
|
|
64
70
|
}
|
|
65
71
|
|
|
@@ -216,7 +222,7 @@ export default defineComponent({
|
|
|
216
222
|
draggingDelete,
|
|
217
223
|
node: handleNode,
|
|
218
224
|
}
|
|
219
|
-
|
|
225
|
+
|
|
220
226
|
const RenderNode = () => render(renderProps)
|
|
221
227
|
return <RenderNode />
|
|
222
228
|
}
|
package/src/Handles/index.tsx
CHANGED
|
@@ -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/Marks/index.tsx
CHANGED
|
@@ -16,7 +16,7 @@ export interface MarksProps {
|
|
|
16
16
|
onClick?: (value: number) => void
|
|
17
17
|
}
|
|
18
18
|
|
|
19
|
-
const Marks: FunctionalComponent<MarksProps> = (props, { emit }) => {
|
|
19
|
+
const Marks: FunctionalComponent<MarksProps> = (props, { emit, slots }) => {
|
|
20
20
|
const { prefixCls, marks = [] } = props
|
|
21
21
|
|
|
22
22
|
const markPrefixCls = `${prefixCls}-mark`
|
|
@@ -30,7 +30,7 @@ const Marks: FunctionalComponent<MarksProps> = (props, { emit }) => {
|
|
|
30
30
|
<div class={markPrefixCls}>
|
|
31
31
|
{marks.map(({ value, style, label }) => (
|
|
32
32
|
<Mark key={value} prefixCls={markPrefixCls} style={style} value={value} onClick={() => emit('click', value)}>
|
|
33
|
-
{label}
|
|
33
|
+
{slots.mark?.({ point: value, label }) || label}
|
|
34
34
|
</Mark>
|
|
35
35
|
))}
|
|
36
36
|
</div>
|