PluginProbe
QuadMenu – Mega Menu / 1.8.8
QuadMenu – Mega Menu v1.8.8
3.3.8 3.3.7 3.3.6 trunk 1.8.4 1.8.5 1.8.7 1.8.8 1.8.9 1.9.0 1.9.2 1.9.3 1.9.4 1.9.5 1.9.6 1.9.7 1.9.8 1.9.9 2.0.0 2.0.1 2.0.2 2.0.3 2.0.4 2.0.5 2.0.6 All 88 releases
quadmenu / lib / ReduxCore / inc / fields / slider / field_slider.js

field_slider.js in QuadMenu – Mega Menu 1.8.8, at lib/ReduxCore/inc/fields/slider/field_slider.js

270 lines 11.6 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 /*global redux_change, redux*/
2
3 (function( $ ) {
4 "use strict";
5
6 redux.field_objects = redux.field_objects || {};
7 redux.field_objects.slider = redux.field_objects.slider || {};
8
9 $( document ).ready(
10 function() {
11
12 }
13 );
14
15 redux.field_objects.slider.init = function( selector ) {
16
17 if ( !selector ) {
18 selector = $( document ).find( ".redux-group-tab:visible" ).find( '.redux-container-slider:visible' );
19 }
20
21 $( selector ).each(
22 function() {
23 var el = $( this );
24 var parent = el;
25
26 if ( !el.hasClass( 'redux-field-container' ) ) {
27 parent = el.parents( '.redux-field-container:first' );
28 }
29 if ( parent.is( ":hidden" ) ) { // Skip hidden fields
30 return;
31 }
32 if ( parent.hasClass( 'redux-field-init' ) ) {
33 parent.removeClass( 'redux-field-init' );
34 } else {
35 return;
36 }
37
38 el.find( 'div.redux-slider-container' ).each(
39 function() {
40
41 var start, toClass, defClassOne, defClassTwo, connectVal;
42 var DISPLAY_NONE = 0;
43 var DISPLAY_LABEL = 1;
44 var DISPLAY_TEXT = 2;
45 var DISPLAY_SELECT = 3;
46
47 var mainID = $( this ).data( 'id' );
48 var minVal = $( this ).data( 'min' );
49 var maxVal = $( this ).data( 'max' );
50 var stepVal = $( this ).data( 'step' );
51 var handles = $( this ).data( 'handles' );
52 var defValOne = $( this ).data( 'default-one' );
53 var defValTwo = $( this ).data( 'default-two' );
54 var resVal = $( this ).data( 'resolution' );
55 var displayValue = parseInt( ($( this ).data( 'display' )) );
56 var rtlVal = Boolean( $( this ).data( 'rtl' ) );
57 var floatMark = ($( this ).data( 'float-mark' ));
58 var forced = Boolean($( this ).data( 'forced' ));
59
60 var rtl;
61 if ( rtlVal === true ) {
62 rtl = 'rtl';
63 } else {
64 rtl = 'ltr';
65 }
66
67 // range array
68 var range = [minVal, maxVal];
69
70 // Set default values for dual slides.
71 var startTwo = [defValOne, defValTwo];
72
73 // Set default value for single slide
74 var startOne = [defValOne];
75
76 var inputOne, inputTwo;
77 if ( displayValue == DISPLAY_TEXT ) {
78 defClassOne = el.find( '.redux-slider-input-one-' + mainID );
79 defClassTwo = el.find( '.redux-slider-input-two-' + mainID );
80
81 inputOne = defClassOne;
82 inputTwo = defClassTwo;
83 } else if ( displayValue == DISPLAY_SELECT ) {
84 defClassOne = el.find( '.redux-slider-select-one-' + mainID );
85 defClassTwo = el.find( '.redux-slider-select-two-' + mainID );
86
87 redux.field_objects.slider.loadSelect( defClassOne, minVal, maxVal, resVal, stepVal );
88
89 if ( handles === 2 ) {
90 redux.field_objects.slider.loadSelect( defClassTwo, minVal, maxVal, resVal, stepVal );
91 }
92
93 } else if ( displayValue == DISPLAY_LABEL ) {
94 defClassOne = el.find( '#redux-slider-label-one-' + mainID );
95 defClassTwo = el.find( '#redux-slider-label-two-' + mainID );
96 } else if ( displayValue == DISPLAY_NONE ) {
97 defClassOne = el.find( '.redux-slider-value-one-' + mainID );
98 defClassTwo = el.find( '.redux-slider-value-two-' + mainID );
99 }
100
101 var classOne, classTwo;
102 if ( displayValue == DISPLAY_LABEL ) {
103 var x = [defClassOne, 'html'];
104 var y = [defClassTwo, 'html'];
105
106 classOne = [x];
107 classTwo = [x, y];
108 } else {
109 classOne = [defClassOne];
110 classTwo = [defClassOne, defClassTwo];
111 }
112
113 if ( handles === 2 ) {
114 start = startTwo;
115 toClass = classTwo;
116 connectVal = true;
117 } else {
118 start = startOne;
119 toClass = classOne;
120 connectVal = 'lower';
121 }
122
123 var slider = $( this ).noUiSlider(
124 {
125 range: range,
126 start: start,
127 handles: handles,
128 step: stepVal,
129 connect: connectVal,
130 behaviour: "tap-drag",
131 direction: rtl,
132 serialization: {
133 resolution: resVal,
134 to: toClass,
135 mark: floatMark,
136 },
137 slide: function() {
138 if ( displayValue == DISPLAY_LABEL ) {
139 if ( handles === 2 ) {
140 var inpSliderVal = slider.val();
141 el.find( 'input.redux-slider-value-one-' + mainID ).attr(
142 'value', inpSliderVal[0]
143 );
144 el.find( 'input.redux-slider-value-two-' + mainID ).attr(
145 'value', inpSliderVal[1]
146 );
147 } else {
148 el.find( 'input.redux-slider-value-one-' + mainID ).attr(
149 'value', slider.val()
150 );
151 }
152 }
153
154 if ( displayValue == DISPLAY_SELECT ) {
155 if ( handles === 2 ) {
156 el.find( '.redux-slider-select-one' ).select2( 'val', slider.val()[0] );
157 el.find( '.redux-slider-select-two' ).select2( 'val', slider.val()[1] );
158 } else {
159 el.find( '.redux-slider-select-one' ).select2( 'val', slider.val() );
160 }
161 }
162
163 redux_change( $( this ).parents( '.redux-field-container:first' ).find( 'input' ) );
164 }
165 }
166 );
167
168 if ( displayValue === DISPLAY_TEXT ) {
169 inputOne.keydown(
170 function( e ) {
171
172 var sliderOne = slider.val();
173 var value = parseInt( sliderOne[0] );
174
175 switch ( e.which ) {
176 case 38:
177 slider.val( [value + 1, null] );
178 break;
179 case 40:
180 slider.val( [value - 1, null] );
181 break;
182 case 13:
183 e.preventDefault();
184 break;
185 }
186 }
187 );
188
189 if ( handles === 2 ) {
190 inputTwo.keydown(
191 function( e ) {
192 var sliderTwo = slider.val();
193 var value = parseInt( sliderTwo[1] );
194
195 switch ( e.which ) {
196 case 38:
197 slider.val( [null, value + 1] );
198 break;
199 case 40:
200 slider.val( [null, value - 1] );
201 break;
202 case 13:
203 e.preventDefault();
204 break;
205 }
206 }
207 );
208 }
209 }
210 }
211 );
212
213 var default_params = {
214 width: 'resolve',
215 triggerChange: true,
216 allowClear: true
217 };
218
219 var select2_handle = el.find( '.select2_params' );
220 if ( select2_handle.size() > 0 ) {
221 var select2_params = select2_handle.val();
222
223 select2_params = JSON.parse( select2_params );
224 default_params = $.extend( {}, default_params, select2_params );
225 }
226
227 el.find( 'select.redux-slider-select-one, select.redux-slider-select-two' ).select2( default_params );
228
229 }
230 );
231
232 };
233
234 // Return true for float value, false otherwise
235 redux.field_objects.slider.isFloat = function( mixed_var ) {
236 return +mixed_var === mixed_var && (!(isFinite( mixed_var ))) || Boolean( (mixed_var % 1) );
237 };
238
239 // Return number of integers after the decimal point.
240 redux.field_objects.slider.decimalCount = function( res ) {
241 var q = res.toString().split( '.' );
242 return q[1].length;
243 };
244
245 redux.field_objects.slider.loadSelect = function( myClass, min, max, res, step ) {
246
247 //var j = step + ((decCount ) - (step )); // 18;
248
249 for ( var i = min; i <= max; i = i + res ) {
250 //var step = 2;
251
252 //if (j === (step + ((decCount ) - (step )))) {
253 var n = i;
254 if ( redux.field_objects.slider.isFloat( res ) ) {
255 var decCount = redux.field_objects.slider.decimalCount( res );
256 n = i.toFixed( decCount );
257 }
258
259 $( myClass ).append(
260 '<option value="' + n + '">' + n + '</option>'
261 );
262 //j = 0;
263 //}
264 //j++;
265 }
266 };
267
268
269 })( jQuery );
270