File tree Expand file tree Collapse file tree 2 files changed +49
-8
lines changed Expand file tree Collapse file tree 2 files changed +49
-8
lines changed Original file line number Diff line number Diff line change 1010 export default {
1111 mixins: [ abstractField ],
1212
13+ data () {
14+ return {
15+ slider: null
16+ }
17+ },
18+
1319 watch: {
1420 model : function () {
1521 if ($ .fn .ionRangeSlider ) {
1925 } else
2026 valueFrom = this .value ;
2127
22- let ionRangeSlider = $ (this .$el ).data (" ionRangeSlider" );
23- if (ionRangeSlider) {
24- ionRangeSlider .update ({
28+ if (this .slider ) {
29+ this .slider .update ({
2530 from: valueFrom,
2631 to: valueTo
2732 });
3843 } else
3944 valueFrom = this .value ;
4045
46+ let self = this ;
4147 $ (this .$el ).ionRangeSlider (defaults (this .schema .sliderOptions || {}, {
4248 type: " single" ,
4349 grid: true ,
4450 hide_min_max: true ,
4551 from: valueFrom,
4652 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 ];
5056 } else {
51- this .value = slider .from ;
57+ self .value = slider .from ;
5258 }
5359 }
5460 }));
61+ this .slider = $ (this .$el ).data (" ionRangeSlider" );
5562 }
5663 else
5764 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+ }
5971 };
6072 </script >
6173
Original file line number Diff line number Diff line change @@ -41,14 +41,43 @@ describe("fieldSlider.vue", () => {
4141 expect ( input . getAttribute ( "data-disable" ) ) . to . be . null ;
4242 } ) ;
4343
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+
4452 it ( "should set disabled" , ( done ) => {
4553 field . disabled = true ;
4654 vm . $nextTick ( ( ) => {
4755 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%" ) ;
4866 done ( ) ;
4967 } ) ;
68+
5069 } ) ;
5170
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+
5281 } ) ;
5382
5483} ) ;
You can’t perform that action at this time.
0 commit comments