@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/dist/Handles/Handle.cjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const o=require("vue"),e=require("@v-c/util/dist/KeyCode"),B=require("classnames"),L=require("../context.cjs"),s=require("../util.cjs"),U=o.defineComponent({name:"Handle",props:{prefixCls:{type:String,required:!0},value:{type:Number,required:!0},valueIndex:{type:Number,required:!0},dragging:{type:Boolean,default:!1},draggingDelete:{type:Boolean,default:!1},onStartMove:{type:Function,required:!0},onDelete:{type:Function,required:!0},onOffsetChange:{type:Function,required:!0},onFocus:{type:Function,required:!0},onMouseenter:{type:Function,required:!0},render:Function,onChangeComplete:Function,mock:Boolean,classNames:Object,styles:Object},emits:["focus","mouseenter","startMove","delete","offsetChange","changeComplete"],setup(
|
|
1
|
+
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const o=require("vue"),e=require("@v-c/util/dist/KeyCode"),B=require("classnames"),L=require("../context.cjs"),s=require("../util.cjs"),U=o.defineComponent({name:"Handle",props:{prefixCls:{type:String,required:!0},value:{type:Number,required:!0},valueIndex:{type:Number,required:!0},dragging:{type:Boolean,default:!1},draggingDelete:{type:Boolean,default:!1},onStartMove:{type:Function,required:!0},onDelete:{type:Function,required:!0},onOffsetChange:{type:Function,required:!0},onFocus:{type:Function,required:!0},onMouseenter:{type:Function,required:!0},render:{type:Function},onChangeComplete:Function,mock:Boolean,classNames:Object,styles:Object},emits:["focus","mouseenter","startMove","delete","offsetChange","changeComplete"],setup(l,{attrs:p,emit:u,expose:F}){const{min:v,max:g,direction:t,disabled:d,keyboard:q,range:E,tabIndex:P,ariaLabelForHandle:k,ariaLabelledByForHandle:D,ariaRequired:M,ariaValueTextFormatterForHandle:N}=L.useInjectSlider(),c=o.ref({}),f=o.ref({}),b=o.ref({}),y=a=>{d||u("startMove",a,l.valueIndex)},O=a=>{u("focus",a,l.valueIndex)},S=a=>{u("mouseenter",a,l.valueIndex)},H=a=>{if(!d&&q){let n=null;switch(a.which||a.keyCode){case e.LEFT:n=t.value==="ltr"||t.value==="btt"?-1:1;break;case e.RIGHT:n=t.value==="ltr"||t.value==="btt"?1:-1;break;case e.UP:n=t.value!=="ttb"?1:-1;break;case e.DOWN:n=t.value!=="ttb"?-1:1;break;case e.HOME:n="min";break;case e.END:n="max";break;case e.PAGE_UP:n=2;break;case e.PAGE_DOWN:n=-2;break;case e.BACKSPACE:case e.DELETE:u("delete",a,l.valueIndex);break}n!==null&&(a.preventDefault(),u("offsetChange",n,l.valueIndex))}},w=a=>{switch(a.which||a.keyCode){case e.LEFT:case e.RIGHT:case e.UP:case e.DOWN:case e.HOME:case e.END:case e.PAGE_UP:case e.PAGE_DOWN:u("changeComplete");break}};return F({focus:()=>l.valueIndex}),()=>{const{prefixCls:a,value:n,valueIndex:r,onStartMove:$,onDelete:j,render:x,dragging:h,draggingDelete:C,onOffsetChange:R,onChangeComplete:W,onFocus:V,onMouseenter:z,styles:T,classNames:A,...I}=l,G=s.getDirectionStyle(t.value,n,v.value,g.value);r!==null?c.value={tabindex:d?null:s.getIndex(P,r),role:"slider","aria-valuemin":v.value,"aria-valuemax":g.value,"aria-valuenow":n,"aria-disabled":d,"aria-label":s.getIndex(k,r),"aria-labelledby":s.getIndex(D,r),"aria-required":s.getIndex(M,r),"aria-valuetext":s.getIndex(N,r)?.(n),"aria-orientation":t.value==="ltr"||t.value==="rtl"?"horizontal":"vertical",onMousedown:y,onTouchstart:y,onFocus:O,onMouseenter:S,onKeydown:H,onKeyup:w,...I}:c.value={...I};const i=`${a}-handle`;f.value=B(i,{[`${i}-${r+1}`]:r!==null&&E,[`${i}-dragging`]:h,[`${i}-dragging-delete`]:C},A?.handle),b.value={...G,...p.style,...T?.handle};const m=o.createVNode("div",o.mergeProps({class:f.value,style:b.value},c.value),null);if(x){const K={index:r,prefixCls:a,value:n,dragging:h,draggingDelete:C,node:m},_=()=>x(K);return o.createVNode(_,null,null)}return m}}});exports.default=U;
|
package/dist/Handles/Handle.d.ts
CHANGED
|
@@ -1,5 +1,13 @@
|
|
|
1
1
|
import { PropType } from 'vue';
|
|
2
2
|
import { OnStartMove, SliderClassNames, SliderStyles } from '../interface';
|
|
3
|
+
export interface RenderProps {
|
|
4
|
+
index: number;
|
|
5
|
+
prefixCls: string;
|
|
6
|
+
value: number;
|
|
7
|
+
dragging: boolean;
|
|
8
|
+
draggingDelete: boolean;
|
|
9
|
+
node: any;
|
|
10
|
+
}
|
|
3
11
|
declare const _default: import('vue').DefineComponent<import('vue').ExtractPropTypes<{
|
|
4
12
|
prefixCls: {
|
|
5
13
|
type: StringConstructor;
|
|
@@ -41,7 +49,9 @@ declare const _default: import('vue').DefineComponent<import('vue').ExtractPropT
|
|
|
41
49
|
type: PropType<(e: MouseEvent, index: number) => void>;
|
|
42
50
|
required: true;
|
|
43
51
|
};
|
|
44
|
-
render:
|
|
52
|
+
render: {
|
|
53
|
+
type: PropType<(v: RenderProps) => any>;
|
|
54
|
+
};
|
|
45
55
|
onChangeComplete: PropType<() => void>;
|
|
46
56
|
mock: BooleanConstructor;
|
|
47
57
|
classNames: PropType<SliderClassNames>;
|
|
@@ -87,7 +97,9 @@ declare const _default: import('vue').DefineComponent<import('vue').ExtractPropT
|
|
|
87
97
|
type: PropType<(e: MouseEvent, index: number) => void>;
|
|
88
98
|
required: true;
|
|
89
99
|
};
|
|
90
|
-
render:
|
|
100
|
+
render: {
|
|
101
|
+
type: PropType<(v: RenderProps) => any>;
|
|
102
|
+
};
|
|
91
103
|
onChangeComplete: PropType<() => void>;
|
|
92
104
|
mock: BooleanConstructor;
|
|
93
105
|
classNames: PropType<SliderClassNames>;
|
package/dist/Handles/Handle.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { defineComponent as L, ref as c, createVNode as
|
|
1
|
+
import { defineComponent as L, ref as c, createVNode as F, mergeProps as R } from "vue";
|
|
2
2
|
import e from "@v-c/util/dist/KeyCode";
|
|
3
3
|
import U from "classnames";
|
|
4
4
|
import { useInjectSlider as $ } from "../context.js";
|
|
@@ -46,38 +46,40 @@ const te = /* @__PURE__ */ L({
|
|
|
46
46
|
type: Function,
|
|
47
47
|
required: !0
|
|
48
48
|
},
|
|
49
|
-
render:
|
|
49
|
+
render: {
|
|
50
|
+
type: Function
|
|
51
|
+
},
|
|
50
52
|
onChangeComplete: Function,
|
|
51
53
|
mock: Boolean,
|
|
52
54
|
classNames: Object,
|
|
53
55
|
styles: Object
|
|
54
56
|
},
|
|
55
57
|
emits: ["focus", "mouseenter", "startMove", "delete", "offsetChange", "changeComplete"],
|
|
56
|
-
setup(
|
|
57
|
-
attrs:
|
|
58
|
-
emit:
|
|
59
|
-
expose:
|
|
58
|
+
setup(l, {
|
|
59
|
+
attrs: I,
|
|
60
|
+
emit: o,
|
|
61
|
+
expose: E
|
|
60
62
|
}) {
|
|
61
63
|
const {
|
|
62
64
|
min: v,
|
|
63
65
|
max: f,
|
|
64
66
|
direction: t,
|
|
65
67
|
disabled: s,
|
|
66
|
-
keyboard:
|
|
67
|
-
range:
|
|
68
|
-
tabIndex:
|
|
69
|
-
ariaLabelForHandle:
|
|
70
|
-
ariaLabelledByForHandle:
|
|
71
|
-
ariaRequired:
|
|
72
|
-
ariaValueTextFormatterForHandle:
|
|
73
|
-
} = $(), i = c({}), g = c({}),
|
|
74
|
-
|
|
68
|
+
keyboard: k,
|
|
69
|
+
range: D,
|
|
70
|
+
tabIndex: N,
|
|
71
|
+
ariaLabelForHandle: P,
|
|
72
|
+
ariaLabelledByForHandle: M,
|
|
73
|
+
ariaRequired: q,
|
|
74
|
+
ariaValueTextFormatterForHandle: O
|
|
75
|
+
} = $(), i = c({}), g = c({}), b = c({}), y = (a) => {
|
|
76
|
+
s || o("startMove", a, l.valueIndex);
|
|
77
|
+
}, H = (a) => {
|
|
78
|
+
o("focus", a, l.valueIndex);
|
|
75
79
|
}, S = (a) => {
|
|
76
|
-
|
|
80
|
+
o("mouseenter", a, l.valueIndex);
|
|
77
81
|
}, w = (a) => {
|
|
78
|
-
|
|
79
|
-
}, T = (a) => {
|
|
80
|
-
if (!s && D) {
|
|
82
|
+
if (!s && k) {
|
|
81
83
|
let n = null;
|
|
82
84
|
switch (a.which || a.keyCode) {
|
|
83
85
|
case e.LEFT:
|
|
@@ -108,12 +110,12 @@ const te = /* @__PURE__ */ L({
|
|
|
108
110
|
break;
|
|
109
111
|
case e.BACKSPACE:
|
|
110
112
|
case e.DELETE:
|
|
111
|
-
|
|
113
|
+
o("delete", a, l.valueIndex);
|
|
112
114
|
break;
|
|
113
115
|
}
|
|
114
|
-
n !== null && (a.preventDefault(),
|
|
116
|
+
n !== null && (a.preventDefault(), o("offsetChange", n, l.valueIndex));
|
|
115
117
|
}
|
|
116
|
-
},
|
|
118
|
+
}, T = (a) => {
|
|
117
119
|
switch (a.which || a.keyCode) {
|
|
118
120
|
case e.LEFT:
|
|
119
121
|
case e.RIGHT:
|
|
@@ -123,76 +125,76 @@ const te = /* @__PURE__ */ L({
|
|
|
123
125
|
case e.END:
|
|
124
126
|
case e.PAGE_UP:
|
|
125
127
|
case e.PAGE_DOWN:
|
|
126
|
-
|
|
128
|
+
o("changeComplete");
|
|
127
129
|
break;
|
|
128
130
|
}
|
|
129
131
|
};
|
|
130
|
-
return
|
|
131
|
-
focus: () =>
|
|
132
|
+
return E({
|
|
133
|
+
focus: () => l.valueIndex
|
|
132
134
|
}), () => {
|
|
133
135
|
const {
|
|
134
136
|
prefixCls: a,
|
|
135
137
|
value: n,
|
|
136
|
-
valueIndex:
|
|
138
|
+
valueIndex: r,
|
|
137
139
|
onStartMove: _,
|
|
138
140
|
onDelete: j,
|
|
139
|
-
render:
|
|
141
|
+
render: m,
|
|
140
142
|
dragging: h,
|
|
141
143
|
draggingDelete: p,
|
|
142
144
|
onOffsetChange: V,
|
|
143
145
|
onChangeComplete: z,
|
|
144
146
|
onFocus: J,
|
|
145
147
|
onMouseenter: Q,
|
|
146
|
-
styles:
|
|
147
|
-
classNames:
|
|
148
|
+
styles: A,
|
|
149
|
+
classNames: G,
|
|
148
150
|
...x
|
|
149
|
-
} =
|
|
150
|
-
|
|
151
|
-
tabindex: s ? null : u(
|
|
151
|
+
} = l, K = W(t.value, n, v.value, f.value);
|
|
152
|
+
r !== null ? i.value = {
|
|
153
|
+
tabindex: s ? null : u(N, r),
|
|
152
154
|
role: "slider",
|
|
153
155
|
"aria-valuemin": v.value,
|
|
154
156
|
"aria-valuemax": f.value,
|
|
155
157
|
"aria-valuenow": n,
|
|
156
158
|
"aria-disabled": s,
|
|
157
|
-
"aria-label": u(
|
|
158
|
-
"aria-labelledby": u(
|
|
159
|
-
"aria-required": u(
|
|
160
|
-
"aria-valuetext": u(
|
|
159
|
+
"aria-label": u(P, r),
|
|
160
|
+
"aria-labelledby": u(M, r),
|
|
161
|
+
"aria-required": u(q, r),
|
|
162
|
+
"aria-valuetext": u(O, r)?.(n),
|
|
161
163
|
"aria-orientation": t.value === "ltr" || t.value === "rtl" ? "horizontal" : "vertical",
|
|
162
|
-
onMousedown:
|
|
163
|
-
onTouchstart:
|
|
164
|
-
onFocus:
|
|
165
|
-
onMouseenter:
|
|
166
|
-
onKeydown:
|
|
167
|
-
onKeyup:
|
|
164
|
+
onMousedown: y,
|
|
165
|
+
onTouchstart: y,
|
|
166
|
+
onFocus: H,
|
|
167
|
+
onMouseenter: S,
|
|
168
|
+
onKeydown: w,
|
|
169
|
+
onKeyup: T,
|
|
168
170
|
...x
|
|
169
171
|
} : i.value = {
|
|
170
172
|
...x
|
|
171
173
|
};
|
|
172
174
|
const d = `${a}-handle`;
|
|
173
175
|
g.value = U(d, {
|
|
174
|
-
[`${d}-${
|
|
176
|
+
[`${d}-${r + 1}`]: r !== null && D,
|
|
175
177
|
[`${d}-dragging`]: h,
|
|
176
178
|
[`${d}-dragging-delete`]: p
|
|
177
|
-
},
|
|
178
|
-
...
|
|
179
|
-
...
|
|
180
|
-
...
|
|
179
|
+
}, G?.handle), b.value = {
|
|
180
|
+
...K,
|
|
181
|
+
...I.style,
|
|
182
|
+
...A?.handle
|
|
181
183
|
};
|
|
182
|
-
const C =
|
|
184
|
+
const C = F("div", R({
|
|
183
185
|
class: g.value,
|
|
184
|
-
style:
|
|
186
|
+
style: b.value
|
|
185
187
|
}, i.value), null);
|
|
186
|
-
if (
|
|
187
|
-
const
|
|
188
|
-
index:
|
|
188
|
+
if (m) {
|
|
189
|
+
const B = {
|
|
190
|
+
index: r,
|
|
189
191
|
prefixCls: a,
|
|
190
192
|
value: n,
|
|
191
193
|
dragging: h,
|
|
192
194
|
draggingDelete: p,
|
|
193
195
|
node: C
|
|
194
196
|
};
|
|
195
|
-
return
|
|
197
|
+
return F(() => m(B), null, null);
|
|
196
198
|
}
|
|
197
199
|
return C;
|
|
198
200
|
};
|
package/dist/Handles/index.cjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const e=require("vue"),I=require("../util.cjs"),
|
|
1
|
+
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const e=require("vue"),I=require("../util.cjs"),f=require("./Handle.cjs"),M=e.defineComponent({name:"Handles",props:{prefixCls:{type:String,required:!0},values:{type:Array,required:!0},handleStyle:{type:[Object,Array]},onStartMove:{type:Function,required:!0},onOffsetChange:{type:Function,required:!0},onFocus:{type:Function},onBlur:{type:Function},onDelete:{type:Function,required:!0},handleRender:{type:Function},activeHandleRender:{type:Function},draggingIndex:{type:Number,default:-1},draggingDelete:{type:Boolean,default:!1},onChangeComplete:Function},emits:["focus"],slots:Object,setup(v,{emit:y,expose:F}){const u=e.ref(),o=e.ref(!1),a=e.ref(-1),l=n=>{a.value=n,o.value=!0},h=(n,t)=>{l(t),y("focus",n)},m=(n,t)=>{l(t)};return F({focus:()=>u.value?.focus(),hideHelp:()=>{o.value=!1}}),()=>{const{prefixCls:n,onStartMove:t,onOffsetChange:q,values:s,handleRender:H,activeHandleRender:d,draggingIndex:i,draggingDelete:c,onFocus:x,handleStyle:C,...S}=v,g={prefixCls:n,onStartMove:t,onOffsetChange:q,render:H,onFocus:h,onMouseenter:m,...S};return e.createVNode(e.Fragment,null,[s?.map((b,r)=>{const p=i===r;return e.createVNode(f.default,e.mergeProps({ref:u.value,dragging:p,draggingDelete:p&&c,style:I.getIndex(C,r),key:r,value:b,valueIndex:r},g),null)}),d&&o.value&&e.createVNode(f.default,e.mergeProps({key:"a11y"},g,{value:s[a.value],valueIndex:1,dragging:i!==-1,draggingDelete:c,render:d,style:{pointerEvents:"none"},"aria-hidden":!0}),null)])}}});exports.default=M;
|
package/dist/Handles/index.d.ts
CHANGED
|
@@ -1,5 +1,13 @@
|
|
|
1
1
|
import { CSSProperties, PropType, SlotsType } from 'vue';
|
|
2
2
|
import { OnStartMove } from '../interface';
|
|
3
|
+
export interface RenderProps {
|
|
4
|
+
index: number;
|
|
5
|
+
prefixCls: string;
|
|
6
|
+
value: number;
|
|
7
|
+
dragging: boolean;
|
|
8
|
+
draggingDelete: boolean;
|
|
9
|
+
node: any;
|
|
10
|
+
}
|
|
3
11
|
export interface HandlesRef {
|
|
4
12
|
focus: (index: number) => void;
|
|
5
13
|
hideHelp: VoidFunction;
|
|
@@ -34,8 +42,12 @@ declare const _default: import('vue').DefineComponent<import('vue').ExtractPropT
|
|
|
34
42
|
type: PropType<(index: number) => void>;
|
|
35
43
|
required: true;
|
|
36
44
|
};
|
|
37
|
-
handleRender:
|
|
38
|
-
|
|
45
|
+
handleRender: {
|
|
46
|
+
type: PropType<(props: RenderProps) => any>;
|
|
47
|
+
};
|
|
48
|
+
activeHandleRender: {
|
|
49
|
+
type: PropType<(props: RenderProps) => any>;
|
|
50
|
+
};
|
|
39
51
|
draggingIndex: {
|
|
40
52
|
type: NumberConstructor;
|
|
41
53
|
default: number;
|
|
@@ -75,8 +87,12 @@ declare const _default: import('vue').DefineComponent<import('vue').ExtractPropT
|
|
|
75
87
|
type: PropType<(index: number) => void>;
|
|
76
88
|
required: true;
|
|
77
89
|
};
|
|
78
|
-
handleRender:
|
|
79
|
-
|
|
90
|
+
handleRender: {
|
|
91
|
+
type: PropType<(props: RenderProps) => any>;
|
|
92
|
+
};
|
|
93
|
+
activeHandleRender: {
|
|
94
|
+
type: PropType<(props: RenderProps) => any>;
|
|
95
|
+
};
|
|
80
96
|
draggingIndex: {
|
|
81
97
|
type: NumberConstructor;
|
|
82
98
|
default: number;
|
package/dist/Handles/index.js
CHANGED
|
@@ -33,8 +33,12 @@ const k = /* @__PURE__ */ S({
|
|
|
33
33
|
type: Function,
|
|
34
34
|
required: !0
|
|
35
35
|
},
|
|
36
|
-
handleRender:
|
|
37
|
-
|
|
36
|
+
handleRender: {
|
|
37
|
+
type: Function
|
|
38
|
+
},
|
|
39
|
+
activeHandleRender: {
|
|
40
|
+
type: Function
|
|
41
|
+
},
|
|
38
42
|
draggingIndex: {
|
|
39
43
|
type: Number,
|
|
40
44
|
default: -1
|
package/dist/Marks/index.cjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const
|
|
1
|
+
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const i=require("vue"),u=require("./Mark.cjs"),d=(l,{emit:o,slots:a})=>{const{prefixCls:c,marks:r=[]}=l,t=`${c}-mark`;return r.length?i.createVNode("div",{class:t},[r.map(({value:e,style:n,label:s})=>i.createVNode(u.default,{key:e,prefixCls:t,style:n,value:e,onClick:()=>o("click",e)},{default:()=>[a.mark?.({point:e,label:s})||s]}))]):null};exports.default=d;
|
package/dist/Marks/index.js
CHANGED
|
@@ -1,31 +1,32 @@
|
|
|
1
|
-
import { createVNode as
|
|
2
|
-
import
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
const u = (t, {
|
|
7
|
-
emit: n
|
|
1
|
+
import { createVNode as o } from "vue";
|
|
2
|
+
import c from "./Mark.js";
|
|
3
|
+
const p = (i, {
|
|
4
|
+
emit: a,
|
|
5
|
+
slots: k
|
|
8
6
|
}) => {
|
|
9
7
|
const {
|
|
10
|
-
prefixCls:
|
|
11
|
-
marks:
|
|
12
|
-
} =
|
|
13
|
-
return
|
|
14
|
-
class:
|
|
15
|
-
}, [
|
|
8
|
+
prefixCls: m,
|
|
9
|
+
marks: t = []
|
|
10
|
+
} = i, s = `${m}-mark`;
|
|
11
|
+
return t.length ? o("div", {
|
|
12
|
+
class: s
|
|
13
|
+
}, [t.map(({
|
|
16
14
|
value: r,
|
|
17
|
-
style:
|
|
18
|
-
label:
|
|
19
|
-
}) =>
|
|
15
|
+
style: n,
|
|
16
|
+
label: e
|
|
17
|
+
}) => o(c, {
|
|
20
18
|
key: r,
|
|
21
|
-
prefixCls:
|
|
22
|
-
style:
|
|
19
|
+
prefixCls: s,
|
|
20
|
+
style: n,
|
|
23
21
|
value: r,
|
|
24
|
-
onClick: () =>
|
|
25
|
-
},
|
|
26
|
-
default: () => [
|
|
22
|
+
onClick: () => a("click", r)
|
|
23
|
+
}, {
|
|
24
|
+
default: () => [k.mark?.({
|
|
25
|
+
point: r,
|
|
26
|
+
label: e
|
|
27
|
+
}) || e]
|
|
27
28
|
}))]) : null;
|
|
28
29
|
};
|
|
29
30
|
export {
|
|
30
|
-
|
|
31
|
+
p as default
|
|
31
32
|
};
|
package/dist/Slider.cjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const a=require("vue"),
|
|
1
|
+
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const a=require("vue"),se=require("@v-c/util/dist/isEqual"),P=require("@v-c/util/dist/warning"),J=require("classnames"),ce=require("./context.cjs"),ie=require("./Handles/index.cjs"),de=require("./hooks/useDrag.cjs"),fe=require("./hooks/useOffset.cjs"),ve=require("./hooks/useRange.cjs"),ge=require("./Marks/index.cjs"),be=require("./Steps/index.cjs"),he=require("./Tracks/index.cjs");function me(){return{prefixCls:{type:String,default:"vc-slider"},className:String,classNames:Object,styles:Object,id:String,disabled:{type:Boolean,default:!1},keyboard:{type:Boolean,default:!0},autoFocus:Boolean,min:{type:Number,default:0},max:{type:Number,default:100},step:{type:[Number,null],default:1},value:[Number,Array,null],defaultValue:[Number,Array],range:[Boolean,Object],count:Number,allowCross:{type:Boolean,default:!0},pushable:{type:[Boolean,Number],default:!1},reverse:Boolean,vertical:Boolean,included:{type:Boolean,default:!0},startPoint:Number,trackStyle:[Object,Array],handleStyle:[Object,Array],railStyle:Object,dotStyle:[Object,Function],activeDotStyle:[Object,Function],marks:Object,dots:Boolean,handleRender:Function,activeHandleRender:Function,track:{type:Boolean,default:!0},tabIndex:{type:[Number,Array],default:0},ariaLabelForHandle:[String,Array],ariaLabelledByForHandle:[String,Array],ariaRequired:Boolean,ariaValueTextFormatterForHandle:[Function,Array],onFocus:Function,onBlur:Function,onChange:Function,onBeforeChange:Function,onAfterChange:Function,onChangeComplete:Function}}const ye=a.defineComponent({name:"Slider",props:{...me()},emits:["focus","blur","change","beforeChange","afterChange","changeComplete"],slots:Object,setup(t,{attrs:$,emit:f,expose:K,slots:Q}){const y=a.ref(),R=a.ref(),k=a.shallowRef("ltr");a.watch([()=>t.reverse,()=>t.vertical],([e,l])=>{l?k.value=e?"ttb":"btt":k.value=e?"rtl":"ltr"},{immediate:!0});const b=a.shallowRef(0),S=a.shallowRef(100),E=a.shallowRef(1),p=a.ref([]),C=a.ref(t.defaultValue||t.value),u=a.ref([]),o=a.ref(),B=a.ref();a.watchEffect(()=>{const{range:e,min:l,max:n,step:s,pushable:i,marks:h,allowCross:x,value:v,count:g}=t,[c,F,H,j,I]=ve.default(e);o.value={rangeEnabled:c,rangeEditable:F,rangeDraggableTrack:H,minCount:j,maxCount:I},b.value=isFinite(l)?l:0,S.value=isFinite(n)?n:100,E.value=s!==null&&s<=0?1:s;const M=a.computed(()=>typeof i=="boolean"?i?E.value:!1:i>=0?i:!1);p.value=Object.keys(h||{}).map(m=>{const d=h?.[m],r={value:Number(m)};return d&&typeof d=="object"&&!a.isVNode(d)&&("label"in d||"style"in d)?(r.style=d.style,r.label=d.label):r.label=d,r}).filter(({label:m})=>m||typeof m=="number").sort((m,d)=>m.value-d.value);const[A,O]=fe.default(b.value,S.value,E.value,p.value,x,M.value);B.value={formatValue:A,offsetValues:O},v!==void 0&&(C.value=v);const oe=a.computed(()=>{const m=C.value===null||C.value===void 0?[]:Array.isArray(C.value)?C.value:[C.value],[d=b.value]=m;let r=C.value===null?[]:[d];if(c){if(r=[...m],g||C.value===void 0){const N=g>=0?g+1:2;for(r=r.slice(0,N);r.length<N;)r.push(r[r.length-1]??b.value)}r.sort((N,T)=>N-T)}return r.forEach((N,T)=>{r[T]=A(N)}),r});u.value=oe.value});const V=e=>o.value.rangeEnabled?e:e[0],q=e=>{const l=[...e].sort((n,s)=>n-s);se(l,u.value,!0)||f("change",V(l)),C.value=l},L=e=>{e&&y.value?.hideHelp();const l=V(u.value);t.onAfterChange&&(f("afterChange",l),P(!1,"[vc-slider] `onAfterChange` is deprecated. Please use `onChangeComplete` instead.")),f("changeComplete",l)},U=e=>{if(t.disabled||!o.value.rangeEditable||u.value.length<=o.value.minCount)return;const l=[...u.value];l.splice(e,1),f("beforeChange",V(l)),q(l);const n=Math.max(0,e-1);y.value?.hideHelp(),y.value?.focus(n)},[_,W,Z,z,X]=de.default(R,k,u,b,S,B.value.formatValue,q,L,B.value.offsetValues,o.value.rangeEditable,o.value.minCount),Y=(e,l)=>{if(!t.disabled){const n=[...u.value];let s=0,i=0,h=S.value-b.value;u.value.forEach((g,c)=>{const F=Math.abs(e-g);F<=h&&(h=F,s=c),g<e&&(i=c)});let x=s;o.value.rangeEditable&&h!==0&&(!o.value.maxCount||u.value.length<o.value.maxCount)?(n.splice(i+1,0,e),x=i+1):n[s]=e,o.value.rangeEnabled&&!u.value.length&&t.count===void 0&&n.push(e);const v=V(n);f("beforeChange",v),q(n),l?(document.activeElement?.blur?.(),y.value?.focus(x),X(l,x,n)):(t.onAfterChange&&(f("afterChange",v),P(!1,"[vc-slider] `onAfterChange` is deprecated. Please use `onChangeComplete` instead.")),f("changeComplete",v))}},ee=e=>{e.preventDefault();const{width:l,height:n,left:s,top:i,bottom:h,right:x}=R.value.getBoundingClientRect(),{clientX:v,clientY:g}=e;let c;switch(k.value){case"btt":c=(h-g)/n;break;case"ttb":c=(g-i)/n;break;case"rtl":c=(x-v)/l;break;default:c=(v-s)/l}const F=b.value+c*(S.value-b.value);Y(B.value.formatValue(F),e)},w=a.ref(null),ae=(e,l)=>{if(!t.disabled){const n=B.value.offsetValues(u.value,e,l);f("beforeChange",V(u.value)),q(n.values),w.value=n.value}};a.watchEffect(()=>{if(w.value!==null){const e=u.value.indexOf(w.value);e>=0&&y.value?.focus(e)}w.value=null});const le=a.computed(()=>o.value.rangeDraggableTrack&&E.value===null?(process.env.NODE_ENV!=="production"&&P(!1,"`draggableTrack` is not supported when `step` is `null`."),!1):o.value.rangeDraggableTrack),G=(e,l)=>{X(e,l),f("beforeChange",V(u.value))},te=a.computed(()=>_.value!==-1);a.watchEffect(()=>{if(!te.value){const e=u.value.lastIndexOf(W.value);y.value?.focus(e)}});const D=a.computed(()=>[...z.value].sort((e,l)=>e-l)),[ne,ue]=a.computed(()=>o.value.rangeEnabled?[D.value[0],D.value[D.value.length-1]]:[b.value,D.value[0]]).value;K({focus:()=>{y.value?.focus(0)},blur:()=>{const{activeElement:e}=document;R.value?.contains(e)&&e?.blur()}}),a.watchEffect(()=>{t.autoFocus&&y.value?.focus(0)});const re=a.computed(()=>({min:b,max:S,direction:k,disabled:t.disabled,keyboard:t.keyboard,step:E,included:t.included,includedStart:ne,includedEnd:ue,range:o.value.rangeEnabled,tabIndex:t.tabIndex,ariaLabelForHandle:t.ariaLabelForHandle,ariaLabelledByForHandle:t.ariaLabelledByForHandle,ariaRequired:t.ariaRequired,ariaValueTextFormatterForHandle:t.ariaValueTextFormatterForHandle,styles:t.styles||{},classNames:t.classNames||{}}));return ce.useProviderSliderContext(re.value),()=>{const{prefixCls:e="vc-slider",id:l,disabled:n=!1,vertical:s,startPoint:i,trackStyle:h,handleStyle:x,railStyle:v,dotStyle:g,activeDotStyle:c,dots:F,handleRender:H,activeHandleRender:j,track:I,classNames:M,styles:A}=t;return a.createVNode("div",{ref:R,class:J(e,[$.class],{[`${e}-disabled`]:n,[`${e}-vertical`]:s,[`${e}-horizontal`]:!s,[`${e}-with-marks`]:p.value.length}),style:$.style,onMousedown:ee,id:l},[a.createVNode("div",{class:J(`${e}-rail`,M?.rail),style:{...v,...A?.rail}},null),I&&a.createVNode(he.default,{prefixCls:e,trackStyle:h,values:u.value,startPoint:i,onStartMove:le.value?G:void 0},null),a.createVNode(be.default,{prefixCls:e,marks:p.value,dots:F,style:g,activeStyle:c},null),a.createVNode(ie.default,{ref:y,prefixCls:e,handleStyle:x,values:z.value,draggingIndex:_.value,draggingDelete:Z.value,onStartMove:G,onOffsetChange:ae,onFocus:O=>f("focus",O),onBlur:O=>f("blur",O),handleRender:H,activeHandleRender:j,onChangeComplete:L,onDelete:o.value.rangeEditable?U:()=>{}},null),a.createVNode(ge.default,{prefixCls:e,marks:p.value,onClick:Y},Q)])}}});exports.default=ye;
|
package/dist/Slider.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { ExtractPropTypes, PropType } from 'vue';
|
|
1
|
+
import { ExtractPropTypes, PropType, SlotsType } from 'vue';
|
|
2
2
|
import { AriaValueFormat, SliderClassNames, SliderStyles } from './interface';
|
|
3
3
|
import { MarkObj } from './Marks';
|
|
4
4
|
export interface RangeConfig {
|
|
@@ -9,6 +9,14 @@ export interface RangeConfig {
|
|
|
9
9
|
/** Set max count when `editable` */
|
|
10
10
|
maxCount?: number;
|
|
11
11
|
}
|
|
12
|
+
export interface RenderProps {
|
|
13
|
+
index: number;
|
|
14
|
+
prefixCls: string;
|
|
15
|
+
value: number;
|
|
16
|
+
dragging: boolean;
|
|
17
|
+
draggingDelete: boolean;
|
|
18
|
+
node: any;
|
|
19
|
+
}
|
|
12
20
|
type ValueType = number | number[];
|
|
13
21
|
declare function sliderProps(): {
|
|
14
22
|
prefixCls: {
|
|
@@ -37,10 +45,10 @@ declare function sliderProps(): {
|
|
|
37
45
|
default: number;
|
|
38
46
|
};
|
|
39
47
|
step: {
|
|
40
|
-
type: NumberConstructor;
|
|
48
|
+
type: (NumberConstructor | null)[];
|
|
41
49
|
default: number;
|
|
42
50
|
};
|
|
43
|
-
value: PropType<ValueType>;
|
|
51
|
+
value: PropType<ValueType | null>;
|
|
44
52
|
defaultValue: PropType<ValueType>;
|
|
45
53
|
range: PropType<boolean | RangeConfig>;
|
|
46
54
|
count: NumberConstructor;
|
|
@@ -66,8 +74,8 @@ declare function sliderProps(): {
|
|
|
66
74
|
activeDotStyle: PropType<Record<string, any> | ((dotValue: number) => Record<string, any>)>;
|
|
67
75
|
marks: PropType<Record<string | number, any | MarkObj>>;
|
|
68
76
|
dots: BooleanConstructor;
|
|
69
|
-
handleRender:
|
|
70
|
-
activeHandleRender:
|
|
77
|
+
handleRender: PropType<(props: RenderProps) => any>;
|
|
78
|
+
activeHandleRender: PropType<(props: RenderProps) => any>;
|
|
71
79
|
track: {
|
|
72
80
|
type: BooleanConstructor;
|
|
73
81
|
default: boolean;
|
|
@@ -121,10 +129,10 @@ declare const _default: import('vue').DefineComponent<ExtractPropTypes<{
|
|
|
121
129
|
default: number;
|
|
122
130
|
};
|
|
123
131
|
step: {
|
|
124
|
-
type: NumberConstructor;
|
|
132
|
+
type: (NumberConstructor | null)[];
|
|
125
133
|
default: number;
|
|
126
134
|
};
|
|
127
|
-
value: PropType<ValueType>;
|
|
135
|
+
value: PropType<ValueType | null>;
|
|
128
136
|
defaultValue: PropType<ValueType>;
|
|
129
137
|
range: PropType<boolean | RangeConfig>;
|
|
130
138
|
count: NumberConstructor;
|
|
@@ -150,8 +158,8 @@ declare const _default: import('vue').DefineComponent<ExtractPropTypes<{
|
|
|
150
158
|
activeDotStyle: PropType<Record<string, any> | ((dotValue: number) => Record<string, any>)>;
|
|
151
159
|
marks: PropType<Record<string | number, any | MarkObj>>;
|
|
152
160
|
dots: BooleanConstructor;
|
|
153
|
-
handleRender:
|
|
154
|
-
activeHandleRender:
|
|
161
|
+
handleRender: PropType<(props: RenderProps) => any>;
|
|
162
|
+
activeHandleRender: PropType<(props: RenderProps) => any>;
|
|
155
163
|
track: {
|
|
156
164
|
type: BooleanConstructor;
|
|
157
165
|
default: boolean;
|
|
@@ -199,10 +207,10 @@ declare const _default: import('vue').DefineComponent<ExtractPropTypes<{
|
|
|
199
207
|
default: number;
|
|
200
208
|
};
|
|
201
209
|
step: {
|
|
202
|
-
type: NumberConstructor;
|
|
210
|
+
type: (NumberConstructor | null)[];
|
|
203
211
|
default: number;
|
|
204
212
|
};
|
|
205
|
-
value: PropType<ValueType>;
|
|
213
|
+
value: PropType<ValueType | null>;
|
|
206
214
|
defaultValue: PropType<ValueType>;
|
|
207
215
|
range: PropType<boolean | RangeConfig>;
|
|
208
216
|
count: NumberConstructor;
|
|
@@ -228,8 +236,8 @@ declare const _default: import('vue').DefineComponent<ExtractPropTypes<{
|
|
|
228
236
|
activeDotStyle: PropType<Record<string, any> | ((dotValue: number) => Record<string, any>)>;
|
|
229
237
|
marks: PropType<Record<string | number, any | MarkObj>>;
|
|
230
238
|
dots: BooleanConstructor;
|
|
231
|
-
handleRender:
|
|
232
|
-
activeHandleRender:
|
|
239
|
+
handleRender: PropType<(props: RenderProps) => any>;
|
|
240
|
+
activeHandleRender: PropType<(props: RenderProps) => any>;
|
|
233
241
|
track: {
|
|
234
242
|
type: BooleanConstructor;
|
|
235
243
|
default: boolean;
|
|
@@ -270,9 +278,14 @@ declare const _default: import('vue').DefineComponent<ExtractPropTypes<{
|
|
|
270
278
|
vertical: boolean;
|
|
271
279
|
included: boolean;
|
|
272
280
|
autoFocus: boolean;
|
|
273
|
-
step: number;
|
|
281
|
+
step: number | null;
|
|
274
282
|
allowCross: boolean;
|
|
275
283
|
pushable: number | boolean;
|
|
276
284
|
dots: boolean;
|
|
277
|
-
}, {
|
|
285
|
+
}, SlotsType<{
|
|
286
|
+
mark: ({ point, label }: {
|
|
287
|
+
point: number;
|
|
288
|
+
label: unknown;
|
|
289
|
+
}) => any;
|
|
290
|
+
}>, {}, {}, string, import('vue').ComponentProvideOptions, true, {}, any>;
|
|
278
291
|
export default _default;
|