File tree 2 files changed +49
-8
lines changed
2 files changed +49
-8
lines changed Original file line number Diff line number Diff line change 10
10
export default {
11
11
mixins: [ abstractField ],
12
12
13
+ data () {
14
+ return {
15
+ slider: null
16
+ }
17
+ },
18
+
13
19
watch: {
14
20
model : function () {
15
21
if ($ .fn .ionRangeSlider ) {
19
25
} else
20
26
valueFrom = this .value ;
21
27
22
- let ionRangeSlider = $ (this .$el ).data (" ionRangeSlider" );
23
- if (ionRangeSlider) {
24
- ionRangeSlider .update ({
28
+ if (this .slider ) {
29
+ this .slider .update ({
25
30
from: valueFrom,
26
31
to: valueTo
27
32
});
38
43
} else
39
44
valueFrom = this .value ;
40
45
46
+ let self = this ;
41
47
$ (this .$el ).ionRangeSlider (defaults (this .schema .sliderOptions || {}, {
42
48
type: " single" ,
43
49
grid: true ,
44
50
hide_min_max: true ,
45
51
from: valueFrom,
46
52
to: valueTo,
47
- onChange : (slider ) => {
48
- if (this . schema . sliderOptions .type == " double" ) {
49
- this .value = [ slider .from , slider .to ];
53
+ onChange (slider ) {
54
+ if (self . slider . options .type == " double" ) {
55
+ self .value = [ slider .from , slider .to ];
50
56
} else {
51
- this .value = slider .from ;
57
+ self .value = slider .from ;
52
58
}
53
59
}
54
60
}));
61
+ this .slider = $ (this .$el ).data (" ionRangeSlider" );
55
62
}
56
63
else
57
64
console .warn (" ion.rangeSlider library is missing. Please download from https://github.com/IonDen/ion.rangeSlider and load the script and CSS in the HTML head section!" );
58
- }
65
+ },
66
+
67
+ beforeDestroy () {
68
+ if (this .slider )
69
+ this .slider .destroy ();
70
+ }
59
71
};
60
72
</script >
61
73
Original file line number Diff line number Diff line change @@ -41,14 +41,43 @@ describe("fieldSlider.vue", () => {
41
41
expect ( input . getAttribute ( "data-disable" ) ) . to . be . null ;
42
42
} ) ;
43
43
44
+ it ( "should contain the value" , ( done ) => {
45
+ vm . $nextTick ( ( ) => {
46
+ let origin = el . querySelector ( ".irs-slider.single" ) ;
47
+ expect ( origin . style . left ) . to . be . within ( "70%" , "90%" ) ;
48
+ done ( ) ;
49
+ } ) ;
50
+ } ) ;
51
+
44
52
it ( "should set disabled" , ( done ) => {
45
53
field . disabled = true ;
46
54
vm . $nextTick ( ( ) => {
47
55
expect ( input . getAttribute ( "data-disable" ) ) . to . be . equal ( "" ) ;
56
+ field . disabled = false ;
57
+ done ( ) ;
58
+ } ) ;
59
+ } ) ;
60
+
61
+ it ( "input value should be the model value after changed" , ( done ) => {
62
+ field . model = { rating : 3 } ;
63
+ vm . $nextTick ( ( ) => {
64
+ let origin = el . querySelector ( ".irs-slider.single" ) ;
65
+ expect ( origin . style . left ) . to . be . within ( "20%" , "40%" ) ;
48
66
done ( ) ;
49
67
} ) ;
68
+
50
69
} ) ;
51
70
71
+ it ( "model value should be the input value if changed" , ( done ) => {
72
+ field . slider . update ( { from : 6 } ) ;
73
+ field . slider . callOnChange ( field . slider ) ; // trigger changes
74
+ vm . $nextTick ( ( ) => {
75
+ expect ( field . model . rating ) . to . be . equal ( 6 ) ;
76
+ done ( ) ;
77
+ } ) ;
78
+
79
+ } ) ;
80
+
52
81
} ) ;
53
82
54
83
} ) ;
You can’t perform that action at this time.
0 commit comments