simple_form_extension 1.2.7 → 1.2.8
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.
- checksums.yaml +4 -4
- data/lib/simple_form_extension/inputs/numeric_input.rb +4 -4
- data/lib/simple_form_extension/version.rb +1 -1
- data/vendor/assets/javascripts/simple_form_extension/datetimepicker.coffee +3 -0
- data/vendor/assets/javascripts/simple_form_extension/spinbox.coffee +2 -1
- data/vendor/assets/javascripts/spinbox.js +178 -187
- data/vendor/assets/stylesheets/simple_form_extension.sass +1 -1
- metadata +2 -7
- data/vendor/assets/stylesheets/overrides/_variables.scss +0 -86
- data/vendor/assets/stylesheets/overrides/fuelux.sass +0 -40
- data/vendor/assets/stylesheets/overrides/jasny.bootstrap.sass +0 -41
- data/vendor/assets/stylesheets/overrides/redactor.css.sass +0 -88
- data/vendor/assets/stylesheets/overrides/selectize.sass +0 -39
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 1837eee35ab3f9670489245780d9d06bb8db5151
|
4
|
+
data.tar.gz: c6bbc67de650599e311a50342e024120fb2a370a
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 98619e0b84070c615da6f51fe138ed3ac762e7ddd3a48ea4a5d685bfb6ce95b2e81d161752977613409797ad887b168f2f38a1477df3c631c487e760a9a8723f
|
7
|
+
data.tar.gz: e66b63f26c685cac5c485eca8ff3c85e192b2208d950e7a16079b8f766490a28e50e5ec6acf1721cea244eb1e7fec5b64152f8e26b961c9e1ee51047af4c54f4
|
@@ -4,14 +4,14 @@ module SimpleFormExtension
|
|
4
4
|
def input(wrapper_options = nil)
|
5
5
|
input_html_options[:class] << "form-control spinbox-input"
|
6
6
|
if options.fetch(:spinner, true)
|
7
|
-
"<div class=\"input-group
|
7
|
+
"<div class=\"input-group spinbox\">
|
8
8
|
#{@builder.text_field(attribute_name, input_html_options)}
|
9
9
|
<span class=\"input-group-btn\">
|
10
|
-
<span class=\"
|
11
|
-
<button class=\"btn btn-default
|
10
|
+
<span class=\"spinbox-buttons btn-group-vertical\">
|
11
|
+
<button class=\"btn btn-default spinbox-up\" type=\"button\" tabindex=\"-1\">
|
12
12
|
<i class=\"fa fa-chevron-up\"></i>
|
13
13
|
</button>
|
14
|
-
<button class=\"btn btn-default
|
14
|
+
<button class=\"btn btn-default spinbox-down\" type=\"button\" tabindex=\"-1\">
|
15
15
|
<i class=\"fa fa-chevron-down\"></i>
|
16
16
|
</button>
|
17
17
|
</span>
|
@@ -14,6 +14,7 @@ class DateTimePicker
|
|
14
14
|
@$input.datetimepicker(
|
15
15
|
lang: @locale
|
16
16
|
format: @$input.data('format')
|
17
|
+
step: @$input.data('step')
|
17
18
|
dayOfWeekStart: @$input.data('week-start-day')
|
18
19
|
)
|
19
20
|
|
@@ -25,6 +26,7 @@ class DatePicker extends DateTimePicker
|
|
25
26
|
@$input.datetimepicker(
|
26
27
|
lang: @locale
|
27
28
|
timepicker: false
|
29
|
+
step: @$input.data('step')
|
28
30
|
format: @$input.data('format')
|
29
31
|
dayOfWeekStart: @$input.data('week-start-day')
|
30
32
|
)
|
@@ -34,6 +36,7 @@ class TimePicker extends DateTimePicker
|
|
34
36
|
@$input.datetimepicker(
|
35
37
|
lang: @locale
|
36
38
|
datepicker: false,
|
39
|
+
step: @$input.data('step')
|
37
40
|
format: @$input.data('format')
|
38
41
|
)
|
39
42
|
|
@@ -1,26 +1,13 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
// For more information on UMD visit:
|
12
|
-
// https://github.com/umdjs/umd/blob/master/jqueryPlugin.js
|
13
|
-
|
14
|
-
(function(factory) {
|
15
|
-
if (typeof define === 'function' && define.amd) {
|
16
|
-
// if AMD loader is available, register as an anonymous module.
|
17
|
-
define(['jquery'], factory);
|
18
|
-
} else {
|
19
|
-
// OR use browser globals if AMD is not present
|
20
|
-
factory(jQuery);
|
21
|
-
}
|
22
|
-
}(function($) {
|
23
|
-
// -- END UMD WRAPPER PREFACE --
|
1
|
+
( function( $ ) {
|
2
|
+
/*
|
3
|
+
* Fuel UX Spinbox
|
4
|
+
* https://github.com/ExactTarget/fuelux
|
5
|
+
*
|
6
|
+
* Copyright (c) 2014 ExactTarget
|
7
|
+
* Licensed under the BSD New license.
|
8
|
+
*/
|
9
|
+
|
10
|
+
|
24
11
|
|
25
12
|
// -- BEGIN MODULE CODE HERE --
|
26
13
|
|
@@ -28,38 +15,38 @@
|
|
28
15
|
|
29
16
|
// SPINBOX CONSTRUCTOR AND PROTOTYPE
|
30
17
|
|
31
|
-
var Spinbox = function(element, options) {
|
32
|
-
this.$element = $(element);
|
33
|
-
this.$element.find('.btn').on('click', function(e) {
|
18
|
+
var Spinbox = function( element, options ) {
|
19
|
+
this.$element = $( element );
|
20
|
+
this.$element.find( '.btn' ).on( 'click', function( e ) {
|
34
21
|
//keep spinbox from submitting if they forgot to say type="button" on their spinner buttons
|
35
22
|
e.preventDefault();
|
36
|
-
});
|
37
|
-
this.options = $.extend({}, $.fn.spinbox.defaults, options);
|
38
|
-
this.$input = this.$element.find('.spinbox-input');
|
39
|
-
this.$element.on('focusin.fu.spinbox', this.$input, $.proxy(this.changeFlag, this));
|
40
|
-
this.$element.on('focusout.fu.spinbox', this.$input, $.proxy(this.change, this));
|
41
|
-
this.$element.on('keydown.fu.spinbox', this.$input, $.proxy(this.keydown, this));
|
42
|
-
this.$element.on('keyup.fu.spinbox', this.$input, $.proxy(this.keyup, this));
|
23
|
+
} );
|
24
|
+
this.options = $.extend( {}, $.fn.spinbox.defaults, options );
|
25
|
+
this.$input = this.$element.find( '.spinbox-input' );
|
26
|
+
this.$element.on( 'focusin.fu.spinbox', this.$input, $.proxy( this.changeFlag, this ) );
|
27
|
+
this.$element.on( 'focusout.fu.spinbox', this.$input, $.proxy( this.change, this ) );
|
28
|
+
this.$element.on( 'keydown.fu.spinbox', this.$input, $.proxy( this.keydown, this ) );
|
29
|
+
this.$element.on( 'keyup.fu.spinbox', this.$input, $.proxy( this.keyup, this ) );
|
43
30
|
|
44
31
|
this.bindMousewheelListeners();
|
45
32
|
this.mousewheelTimeout = {};
|
46
33
|
|
47
|
-
if (this.options.hold) {
|
48
|
-
this.$element.on('mousedown.fu.spinbox', '.spinbox-up', $.proxy(function() {
|
49
|
-
this.startSpin(true);
|
50
|
-
}, this));
|
51
|
-
this.$element.on('mouseup.fu.spinbox', '.spinbox-up, .spinbox-down', $.proxy(this.stopSpin, this));
|
52
|
-
this.$element.on('mouseout.fu.spinbox', '.spinbox-up, .spinbox-down', $.proxy(this.stopSpin, this));
|
53
|
-
this.$element.on('mousedown.fu.spinbox', '.spinbox-down', $.proxy(function() {
|
54
|
-
this.startSpin(false);
|
55
|
-
}, this));
|
34
|
+
if ( this.options.hold ) {
|
35
|
+
this.$element.on( 'mousedown.fu.spinbox', '.spinbox-up', $.proxy( function() {
|
36
|
+
this.startSpin( true );
|
37
|
+
}, this ) );
|
38
|
+
this.$element.on( 'mouseup.fu.spinbox', '.spinbox-up, .spinbox-down', $.proxy( this.stopSpin, this ) );
|
39
|
+
this.$element.on( 'mouseout.fu.spinbox', '.spinbox-up, .spinbox-down', $.proxy( this.stopSpin, this ) );
|
40
|
+
this.$element.on( 'mousedown.fu.spinbox', '.spinbox-down', $.proxy( function() {
|
41
|
+
this.startSpin( false );
|
42
|
+
}, this ) );
|
56
43
|
} else {
|
57
|
-
this.$element.on('click.fu.spinbox', '.spinbox-up', $.proxy(function() {
|
58
|
-
this.step(true);
|
59
|
-
}, this));
|
60
|
-
this.$element.on('click.fu.spinbox', '.spinbox-down', $.proxy(function() {
|
61
|
-
this.step(false);
|
62
|
-
}, this));
|
44
|
+
this.$element.on( 'click.fu.spinbox', '.spinbox-up', $.proxy( function() {
|
45
|
+
this.step( true );
|
46
|
+
}, this ) );
|
47
|
+
this.$element.on( 'click.fu.spinbox', '.spinbox-down', $.proxy( function() {
|
48
|
+
this.step( false );
|
49
|
+
}, this ) );
|
63
50
|
}
|
64
51
|
|
65
52
|
this.switches = {
|
@@ -67,9 +54,9 @@
|
|
67
54
|
enabled: true
|
68
55
|
};
|
69
56
|
|
70
|
-
if (this.options.speed === 'medium') {
|
57
|
+
if ( this.options.speed === 'medium' ) {
|
71
58
|
this.switches.speed = 300;
|
72
|
-
} else if (this.options.speed === 'fast') {
|
59
|
+
} else if ( this.options.speed === 'fast' ) {
|
73
60
|
this.switches.speed = 100;
|
74
61
|
} else {
|
75
62
|
this.switches.speed = 500;
|
@@ -79,7 +66,7 @@
|
|
79
66
|
|
80
67
|
this.render();
|
81
68
|
|
82
|
-
if (this.options.disabled) {
|
69
|
+
if ( this.options.disabled ) {
|
83
70
|
this.disable();
|
84
71
|
}
|
85
72
|
};
|
@@ -92,64 +79,64 @@
|
|
92
79
|
// any external bindings
|
93
80
|
// [none]
|
94
81
|
// set input value attrbute
|
95
|
-
this.$element.find('input').each(function() {
|
96
|
-
$(this).attr('value', $(this).val());
|
97
|
-
});
|
82
|
+
this.$element.find( 'input' ).each( function() {
|
83
|
+
$( this ).attr( 'value', $( this ).val() );
|
84
|
+
} );
|
98
85
|
// empty elements to return to original markup
|
99
86
|
// [none]
|
100
87
|
// returns string of markup
|
101
|
-
return this.$element[0].outerHTML;
|
88
|
+
return this.$element[ 0 ].outerHTML;
|
102
89
|
},
|
103
90
|
|
104
91
|
render: function() {
|
105
|
-
var inputValue = this.parseInput(this.$input.val());
|
92
|
+
var inputValue = this.parseInput( this.$input.val() );
|
106
93
|
var maxUnitLength = '';
|
107
94
|
|
108
95
|
// if input is empty and option value is default, 0
|
109
|
-
if (inputValue !== '' && this.options.value === 0) {
|
110
|
-
this.value(inputValue);
|
96
|
+
if ( inputValue !== '' && this.options.value === 0 ) {
|
97
|
+
this.value( inputValue );
|
111
98
|
} else {
|
112
|
-
this.output
|
99
|
+
this.output( this.options.value );
|
113
100
|
}
|
114
101
|
|
115
|
-
if (this.options.units.length) {
|
116
|
-
$.each(this.options.units, function(index, value) {
|
117
|
-
if (value.length > maxUnitLength.length) {
|
102
|
+
if ( this.options.units.length ) {
|
103
|
+
$.each( this.options.units, function( index, value ) {
|
104
|
+
if ( value.length > maxUnitLength.length ) {
|
118
105
|
maxUnitLength = value;
|
119
106
|
}
|
120
|
-
});
|
107
|
+
} );
|
121
108
|
}
|
122
|
-
|
123
109
|
},
|
124
110
|
|
125
|
-
output: function(value, updateField) {
|
126
|
-
value = (value + '').split('.').join(this.options.decimalMark);
|
127
|
-
updateField = (updateField || true);
|
128
|
-
if (updateField) {
|
129
|
-
this.$input.val(value);
|
111
|
+
output: function( value, updateField ) {
|
112
|
+
value = ( value + '' ).split( '.' ).join( this.options.decimalMark );
|
113
|
+
updateField = ( updateField || true );
|
114
|
+
if ( updateField ) {
|
115
|
+
this.$input.val( value );
|
130
116
|
}
|
131
117
|
|
132
118
|
return value;
|
133
119
|
},
|
134
120
|
|
135
|
-
parseInput: function(value) {
|
136
|
-
value = (value + '').split(this.options.decimalMark).join('.');
|
121
|
+
parseInput: function( value ) {
|
122
|
+
value = ( value + '' ).split( this.options.decimalMark ).join( '.' );
|
137
123
|
|
138
124
|
return value;
|
139
125
|
},
|
140
126
|
|
141
127
|
change: function() {
|
142
|
-
var newVal = this.parseInput(this.$input.val()) || '';
|
128
|
+
var newVal = this.parseInput( this.$input.val() ) || '';
|
143
129
|
|
144
|
-
if (this.options.units.length || this.options.decimalMark !== '.') {
|
145
|
-
newVal = this.parseValueWithUnit(newVal);
|
146
|
-
} else if (newVal / 1) {
|
147
|
-
newVal = this.options.value = this.checkMaxMin(newVal / 1);
|
130
|
+
if ( this.options.units.length || this.options.decimalMark !== '.' ) {
|
131
|
+
newVal = this.parseValueWithUnit( newVal );
|
132
|
+
} else if ( newVal / 1 ) {
|
133
|
+
newVal = this.options.value = this.checkMaxMin( newVal / 1 );
|
148
134
|
} else {
|
149
|
-
newVal = this.checkMaxMin(newVal.replace(/[^0-9.-]/g, '') || '');
|
135
|
+
newVal = this.checkMaxMin( newVal.replace( /[^0-9.-]/g, '' ) || '' );
|
150
136
|
this.options.value = newVal / 1;
|
151
137
|
}
|
152
|
-
|
138
|
+
|
139
|
+
this.output( newVal );
|
153
140
|
|
154
141
|
this.changeFlag = false;
|
155
142
|
this.triggerChangedEvent();
|
@@ -160,8 +147,8 @@
|
|
160
147
|
},
|
161
148
|
|
162
149
|
stopSpin: function() {
|
163
|
-
if (this.switches.timeout !== undefined) {
|
164
|
-
clearTimeout(this.switches.timeout);
|
150
|
+
if ( this.switches.timeout !== undefined ) {
|
151
|
+
clearTimeout( this.switches.timeout );
|
165
152
|
this.switches.count = 1;
|
166
153
|
this.triggerChangedEvent();
|
167
154
|
}
|
@@ -169,49 +156,47 @@
|
|
169
156
|
|
170
157
|
triggerChangedEvent: function() {
|
171
158
|
var currentValue = this.value();
|
172
|
-
if (currentValue === this.lastValue) return;
|
173
|
-
|
159
|
+
if ( currentValue === this.lastValue ) return;
|
174
160
|
this.lastValue = currentValue;
|
175
161
|
|
176
162
|
// Primary changed event
|
177
|
-
this.$element.trigger('changed.fu.spinbox', this.output(currentValue, false)); // no DOM update
|
163
|
+
this.$element.trigger( 'changed.fu.spinbox', this.output( currentValue, false ) ); // no DOM update
|
178
164
|
},
|
179
165
|
|
180
|
-
startSpin: function(type) {
|
181
|
-
|
182
|
-
if (!this.options.disabled) {
|
166
|
+
startSpin: function( type ) {
|
167
|
+
if ( !this.options.disabled ) {
|
183
168
|
var divisor = this.switches.count;
|
184
169
|
|
185
|
-
if (divisor === 1) {
|
186
|
-
this.step(type);
|
170
|
+
if ( divisor === 1 ) {
|
171
|
+
this.step( type );
|
187
172
|
divisor = 1;
|
188
|
-
} else if (divisor < 3) {
|
173
|
+
} else if ( divisor < 3 ) {
|
189
174
|
divisor = 1.5;
|
190
|
-
} else if (divisor < 8) {
|
175
|
+
} else if ( divisor < 8 ) {
|
191
176
|
divisor = 2.5;
|
192
177
|
} else {
|
193
178
|
divisor = 4;
|
194
179
|
}
|
195
180
|
|
196
|
-
this.switches.timeout = setTimeout($.proxy(function() {
|
197
|
-
this.iterate(type);
|
198
|
-
}, this), this.switches.speed / divisor);
|
181
|
+
this.switches.timeout = setTimeout( $.proxy( function() {
|
182
|
+
this.iterate( type );
|
183
|
+
}, this ), this.switches.speed / divisor );
|
199
184
|
this.switches.count++;
|
200
185
|
}
|
201
186
|
},
|
202
187
|
|
203
|
-
iterate: function(type) {
|
204
|
-
this.step(type);
|
205
|
-
this.startSpin(type);
|
188
|
+
iterate: function( type ) {
|
189
|
+
this.step( type );
|
190
|
+
this.startSpin( type );
|
206
191
|
},
|
207
192
|
|
208
|
-
step: function(isIncrease) {
|
193
|
+
step: function( isIncrease ) {
|
209
194
|
// isIncrease: true is up, false is down
|
210
195
|
|
211
196
|
var digits, multiple, currentValue, limitValue;
|
212
197
|
|
213
198
|
// trigger change event
|
214
|
-
if (this.changeFlag) {
|
199
|
+
if ( this.changeFlag ) {
|
215
200
|
this.change();
|
216
201
|
}
|
217
202
|
|
@@ -219,160 +204,164 @@
|
|
219
204
|
currentValue = this.options.value;
|
220
205
|
limitValue = isIncrease ? this.options.max : this.options.min;
|
221
206
|
|
222
|
-
if ( (isIncrease ? currentValue < limitValue : currentValue > limitValue) ) {
|
223
|
-
var newVal = currentValue + (isIncrease ? 1 : -1) * this.options.step;
|
207
|
+
if ( ( isIncrease ? currentValue < limitValue : currentValue > limitValue ) ) {
|
208
|
+
var newVal = currentValue + ( isIncrease ? 1 : -1 ) * this.options.step;
|
224
209
|
|
225
210
|
// raise to power of 10 x number of decimal places, then round
|
226
|
-
if (this.options.step % 1 !== 0) {
|
227
|
-
digits = (this.options.step + '').split('.')[1].length;
|
228
|
-
multiple = Math.pow(10, digits);
|
229
|
-
newVal = Math.round(newVal * multiple) / multiple;
|
211
|
+
if ( this.options.step % 1 !== 0 ) {
|
212
|
+
digits = ( this.options.step + '' ).split( '.' )[ 1 ].length;
|
213
|
+
multiple = Math.pow( 10, digits );
|
214
|
+
newVal = Math.round( newVal * multiple ) / multiple;
|
230
215
|
}
|
231
216
|
|
232
217
|
// if outside limits, set to limit value
|
233
|
-
if (isIncrease ? newVal > limitValue : newVal < limitValue) {
|
234
|
-
this.value(limitValue);
|
218
|
+
if ( isIncrease ? newVal > limitValue : newVal < limitValue ) {
|
219
|
+
this.value( limitValue );
|
235
220
|
} else {
|
236
|
-
this.value(newVal);
|
221
|
+
this.value( newVal );
|
237
222
|
}
|
238
223
|
|
239
|
-
} else if (this.options.cycle) {
|
224
|
+
} else if ( this.options.cycle ) {
|
240
225
|
var cycleVal = isIncrease ? this.options.min : this.options.max;
|
241
|
-
this.value(cycleVal);
|
226
|
+
this.value( cycleVal );
|
242
227
|
}
|
243
228
|
},
|
244
229
|
|
245
|
-
value: function(value) {
|
246
|
-
|
247
|
-
|
248
|
-
|
249
|
-
this.output(this.parseValueWithUnit(value + (this.unit || '')));
|
230
|
+
value: function( value ) {
|
231
|
+
if ( value || value === 0 ) {
|
232
|
+
if ( this.options.units.length || this.options.decimalMark !== '.' ) {
|
233
|
+
this.output( this.parseValueWithUnit( value + ( this.unit || '' ) ) );
|
250
234
|
return this;
|
251
235
|
|
252
|
-
} else if (!isNaN(parseFloat(value)) && isFinite(value)) {
|
236
|
+
} else if ( !isNaN( parseFloat( value ) ) && isFinite( value ) ) {
|
253
237
|
this.options.value = value / 1;
|
254
|
-
this.output
|
238
|
+
this.output( value + ( this.unit ? this.unit : '' ) );
|
255
239
|
return this;
|
256
240
|
|
257
241
|
}
|
242
|
+
|
258
243
|
} else {
|
259
|
-
if (this.changeFlag) {
|
244
|
+
if ( this.changeFlag ) {
|
260
245
|
this.change();
|
261
246
|
}
|
262
247
|
|
263
|
-
if (this.unit) {
|
248
|
+
if ( this.unit ) {
|
264
249
|
return this.options.value + this.unit;
|
265
250
|
} else {
|
266
|
-
return this.output(this.options.value, false); // no DOM update
|
251
|
+
return this.output( this.options.value, false ); // no DOM update
|
267
252
|
}
|
253
|
+
|
268
254
|
}
|
269
255
|
},
|
270
256
|
|
271
|
-
isUnitLegal: function(unit) {
|
257
|
+
isUnitLegal: function( unit ) {
|
272
258
|
var legalUnit;
|
273
259
|
|
274
|
-
$.each(this.options.units, function(index, value) {
|
275
|
-
if (value.toLowerCase() === unit.toLowerCase()) {
|
260
|
+
$.each( this.options.units, function( index, value ) {
|
261
|
+
if ( value.toLowerCase() === unit.toLowerCase() ) {
|
276
262
|
legalUnit = unit.toLowerCase();
|
277
263
|
return false;
|
278
264
|
}
|
279
|
-
});
|
265
|
+
} );
|
280
266
|
|
281
267
|
return legalUnit;
|
282
268
|
},
|
283
269
|
|
284
270
|
// strips units and add them back
|
285
|
-
parseValueWithUnit: function(value) {
|
286
|
-
var unit = value.replace(/[^a-zA-Z]/g, '');
|
287
|
-
var number = value.replace(/[^0-9.-]/g, '');
|
271
|
+
parseValueWithUnit: function( value ) {
|
272
|
+
var unit = value.replace( /[^a-zA-Z]/g, '' );
|
273
|
+
var number = value.replace( /[^0-9.-]/g, '' );
|
288
274
|
|
289
|
-
if (unit) {
|
290
|
-
unit = this.isUnitLegal(unit);
|
275
|
+
if ( unit ) {
|
276
|
+
unit = this.isUnitLegal( unit );
|
291
277
|
}
|
292
278
|
|
293
|
-
this.options.value = this.checkMaxMin(number / 1);
|
279
|
+
this.options.value = this.checkMaxMin( number / 1 );
|
294
280
|
this.unit = unit || undefined;
|
295
|
-
return this.options.value + (unit || '');
|
281
|
+
return this.options.value + ( unit || '' );
|
296
282
|
},
|
297
283
|
|
298
|
-
checkMaxMin: function(value) {
|
284
|
+
checkMaxMin: function( value ) {
|
299
285
|
// if unreadable
|
300
|
-
if (isNaN(parseFloat(value))) {
|
286
|
+
if ( isNaN( parseFloat( value ) ) ) {
|
301
287
|
return value;
|
302
288
|
}
|
289
|
+
|
303
290
|
// if not within range return the limit
|
304
|
-
if (!(value <= this.options.max && value >= this.options.min)) {
|
291
|
+
if ( !( value <= this.options.max && value >= this.options.min ) ) {
|
305
292
|
value = value >= this.options.max ? this.options.max : this.options.min;
|
306
293
|
}
|
294
|
+
|
307
295
|
return value;
|
308
296
|
},
|
309
297
|
|
310
298
|
disable: function() {
|
311
299
|
this.options.disabled = true;
|
312
|
-
this.$element.addClass('disabled');
|
313
|
-
this.$input.attr('disabled', '');
|
314
|
-
this.$element.find('button').addClass('disabled');
|
300
|
+
this.$element.addClass( 'disabled' );
|
301
|
+
this.$input.attr( 'disabled', '' );
|
302
|
+
this.$element.find( 'button' ).addClass( 'disabled' );
|
315
303
|
},
|
316
304
|
|
317
305
|
enable: function() {
|
318
306
|
this.options.disabled = false;
|
319
|
-
this.$element.removeClass('disabled');
|
320
|
-
this.$input.removeAttr('disabled');
|
321
|
-
this.$element.find('button').removeClass('disabled');
|
307
|
+
this.$element.removeClass( 'disabled' );
|
308
|
+
this.$input.removeAttr( 'disabled' );
|
309
|
+
this.$element.find( 'button' ).removeClass( 'disabled' );
|
322
310
|
},
|
323
311
|
|
324
|
-
keydown: function(event) {
|
312
|
+
keydown: function( event ) {
|
325
313
|
var keyCode = event.keyCode;
|
326
|
-
if (keyCode === 38) {
|
327
|
-
this.step(true);
|
328
|
-
} else if (keyCode === 40) {
|
329
|
-
this.step(false);
|
314
|
+
if ( keyCode === 38 ) {
|
315
|
+
this.step( true );
|
316
|
+
} else if ( keyCode === 40 ) {
|
317
|
+
this.step( false );
|
330
318
|
}
|
331
319
|
},
|
332
320
|
|
333
|
-
keyup: function(event) {
|
321
|
+
keyup: function( event ) {
|
334
322
|
var keyCode = event.keyCode;
|
335
323
|
|
336
|
-
if (keyCode === 38 || keyCode === 40) {
|
324
|
+
if ( keyCode === 38 || keyCode === 40 ) {
|
337
325
|
this.triggerChangedEvent();
|
338
326
|
}
|
339
327
|
},
|
340
328
|
|
341
329
|
bindMousewheelListeners: function() {
|
342
|
-
var inputEl = this.$input.get(0);
|
343
|
-
if (inputEl.addEventListener) {
|
330
|
+
var inputEl = this.$input.get( 0 );
|
331
|
+
if ( inputEl.addEventListener ) {
|
344
332
|
//IE 9, Chrome, Safari, Opera
|
345
|
-
inputEl.addEventListener('mousewheel', $.proxy(this.mousewheelHandler, this), false);
|
333
|
+
inputEl.addEventListener( 'mousewheel', $.proxy( this.mousewheelHandler, this ), false );
|
346
334
|
// Firefox
|
347
|
-
inputEl.addEventListener('DOMMouseScroll', $.proxy(this.mousewheelHandler, this), false);
|
335
|
+
inputEl.addEventListener( 'DOMMouseScroll', $.proxy( this.mousewheelHandler, this ), false );
|
348
336
|
} else {
|
349
337
|
// IE <9
|
350
|
-
inputEl.attachEvent('onmousewheel', $.proxy(this.mousewheelHandler, this));
|
338
|
+
inputEl.attachEvent( 'onmousewheel', $.proxy( this.mousewheelHandler, this ) );
|
351
339
|
}
|
352
340
|
},
|
353
341
|
|
354
|
-
mousewheelHandler: function(event) {
|
355
|
-
if (!this.options.disabled) {
|
342
|
+
mousewheelHandler: function( event ) {
|
343
|
+
if ( !this.options.disabled ) {
|
356
344
|
var e = window.event || event; // old IE support
|
357
|
-
var delta = Math.max(-1, Math.min(1, (e.wheelDelta || -e.detail)));
|
345
|
+
var delta = Math.max( -1, Math.min( 1, ( e.wheelDelta || -e.detail ) ) );
|
358
346
|
var self = this;
|
359
347
|
|
360
|
-
clearTimeout(this.mousewheelTimeout);
|
361
|
-
this.mousewheelTimeout = setTimeout(function
|
348
|
+
clearTimeout( this.mousewheelTimeout );
|
349
|
+
this.mousewheelTimeout = setTimeout( function() {
|
362
350
|
self.triggerChangedEvent();
|
363
|
-
}, 300);
|
351
|
+
}, 300 );
|
364
352
|
|
365
|
-
if (delta < 0) {
|
366
|
-
this.step(true);
|
353
|
+
if ( delta < 0 ) {
|
354
|
+
this.step( true );
|
367
355
|
} else {
|
368
|
-
this.step(false);
|
356
|
+
this.step( false );
|
369
357
|
}
|
370
358
|
|
371
|
-
if (e.preventDefault) {
|
359
|
+
if ( e.preventDefault ) {
|
372
360
|
e.preventDefault();
|
373
361
|
} else {
|
374
362
|
e.returnValue = false;
|
375
363
|
}
|
364
|
+
|
376
365
|
return false;
|
377
366
|
}
|
378
367
|
}
|
@@ -381,24 +370,25 @@
|
|
381
370
|
|
382
371
|
// SPINBOX PLUGIN DEFINITION
|
383
372
|
|
384
|
-
$.fn.spinbox = function(option) {
|
385
|
-
var args = Array.prototype.slice.call(arguments, 1);
|
373
|
+
$.fn.spinbox = function( option ) {
|
374
|
+
var args = Array.prototype.slice.call( arguments, 1 );
|
386
375
|
var methodReturn;
|
387
376
|
|
388
|
-
var $set = this.each(function() {
|
389
|
-
var $this = $(this);
|
390
|
-
var data = $this.data('fu.spinbox');
|
377
|
+
var $set = this.each( function() {
|
378
|
+
var $this = $( this );
|
379
|
+
var data = $this.data( 'fu.spinbox' );
|
391
380
|
var options = typeof option === 'object' && option;
|
392
381
|
|
393
|
-
if (!data) {
|
394
|
-
$this.data('fu.spinbox', (data = new Spinbox(this, options)));
|
382
|
+
if ( !data ) {
|
383
|
+
$this.data( 'fu.spinbox', ( data = new Spinbox( this, options ) ) );
|
395
384
|
}
|
396
|
-
|
397
|
-
|
385
|
+
|
386
|
+
if ( typeof option === 'string' ) {
|
387
|
+
methodReturn = data[ option ].apply( data, args );
|
398
388
|
}
|
399
|
-
});
|
389
|
+
} );
|
400
390
|
|
401
|
-
return (methodReturn === undefined) ? $set : methodReturn;
|
391
|
+
return ( methodReturn === undefined ) ? $set : methodReturn;
|
402
392
|
};
|
403
393
|
|
404
394
|
// value needs to be 0 for this.render();
|
@@ -425,23 +415,24 @@
|
|
425
415
|
|
426
416
|
// DATA-API
|
427
417
|
|
428
|
-
$(document).on('mousedown.fu.spinbox.data-api', '[data-initialize=spinbox]', function(e) {
|
429
|
-
var $control = $(e.target).closest('.spinbox');
|
430
|
-
if (!$control.data('fu.spinbox')) {
|
431
|
-
$control.spinbox($control.data());
|
418
|
+
$( document ).on( 'mousedown.fu.spinbox.data-api', '[data-initialize=spinbox]', function( e ) {
|
419
|
+
var $control = $( e.target ).closest( '.spinbox' );
|
420
|
+
if ( !$control.data( 'fu.spinbox' ) ) {
|
421
|
+
$control.spinbox( $control.data() );
|
432
422
|
}
|
433
|
-
});
|
423
|
+
} );
|
434
424
|
|
435
425
|
// Must be domReady for AMD compatibility
|
436
|
-
$(function() {
|
437
|
-
$('[data-initialize=spinbox]').each(function() {
|
438
|
-
var $this = $(this);
|
439
|
-
if (!$this.data('fu.spinbox')) {
|
440
|
-
$this.spinbox($this.data());
|
426
|
+
$( function() {
|
427
|
+
$( '[data-initialize=spinbox]' ).each( function() {
|
428
|
+
var $this = $( this );
|
429
|
+
if ( !$this.data( 'fu.spinbox' ) ) {
|
430
|
+
$this.spinbox( $this.data() );
|
441
431
|
}
|
442
|
-
});
|
443
|
-
});
|
432
|
+
} );
|
433
|
+
} );
|
434
|
+
|
435
|
+
|
436
|
+
|
437
|
+
} )( jQuery );
|
444
438
|
|
445
|
-
// -- BEGIN UMD WRAPPER AFTERWORD --
|
446
|
-
}));
|
447
|
-
// -- END UMD WRAPPER AFTERWORD --
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: simple_form_extension
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.2.
|
4
|
+
version: 1.2.8
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Alexandre Vasseur
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-04-
|
11
|
+
date: 2015-04-08 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rails
|
@@ -159,11 +159,6 @@ files:
|
|
159
159
|
- vendor/assets/javascripts/spinbox.js
|
160
160
|
- vendor/assets/stylesheets/jasny-bootstrap.css
|
161
161
|
- vendor/assets/stylesheets/jquery.datetimepicker.css
|
162
|
-
- vendor/assets/stylesheets/overrides/_variables.scss
|
163
|
-
- vendor/assets/stylesheets/overrides/fuelux.sass
|
164
|
-
- vendor/assets/stylesheets/overrides/jasny.bootstrap.sass
|
165
|
-
- vendor/assets/stylesheets/overrides/redactor.css.sass
|
166
|
-
- vendor/assets/stylesheets/overrides/selectize.sass
|
167
162
|
- vendor/assets/stylesheets/simple_form_extension.sass
|
168
163
|
homepage: http://www.glyph.fr
|
169
164
|
licenses:
|
@@ -1,86 +0,0 @@
|
|
1
|
-
// Grays
|
2
|
-
// -------------------------
|
3
|
-
$gray-darker: lighten(#000, 13.5%) !default; // #222
|
4
|
-
$gray-dark: #999999 !default;
|
5
|
-
$gray: #CCCCCC !default;
|
6
|
-
$gray-light: #EEEEEE !default;
|
7
|
-
$gray-lighter: #D5D5D5 !default;
|
8
|
-
|
9
|
-
|
10
|
-
// Brand colors
|
11
|
-
// -------------------------
|
12
|
-
$brand-primary: #33414e !default;
|
13
|
-
$brand-success: #95b75d !default;
|
14
|
-
$brand-warning: #fea223 !default;
|
15
|
-
$brand-danger: #b64645 !default;
|
16
|
-
$brand-info: #3fbae4 !default;
|
17
|
-
|
18
|
-
|
19
|
-
// Components
|
20
|
-
// -------------------------
|
21
|
-
$border-radius-base: 2px !default;
|
22
|
-
|
23
|
-
$component-active-color: #fff !default;
|
24
|
-
$component-active-bg: $gray-light !default;
|
25
|
-
|
26
|
-
|
27
|
-
// Buttons
|
28
|
-
// -------------------------
|
29
|
-
$btn-default-color: #333 !default;
|
30
|
-
$btn-default-bg: #f5f5f5 !default;
|
31
|
-
$btn-default-border: #ccc !default;
|
32
|
-
|
33
|
-
$btn-primary-color: #fff !default;
|
34
|
-
$btn-primary-bg: $brand-primary !default;
|
35
|
-
$btn-primary-border: #29343f !default;
|
36
|
-
|
37
|
-
$btn-success-color: #fff !default;
|
38
|
-
$btn-success-bg: $brand-success !default;
|
39
|
-
$btn-success-border: #89ad4d !default;
|
40
|
-
|
41
|
-
$btn-warning-color: #fff !default;
|
42
|
-
$btn-warning-bg: $brand-warning !default;
|
43
|
-
$btn-warning-border: #fe970a !default;
|
44
|
-
|
45
|
-
$btn-danger-color: #fff !default;
|
46
|
-
$btn-danger-bg: $brand-danger !default;
|
47
|
-
$btn-danger-border: #a43f3e !default;
|
48
|
-
|
49
|
-
$btn-info-color: #fff !default;
|
50
|
-
$btn-info-bg: $brand-info !default;
|
51
|
-
$btn-info-border: #29b2e1 !default;
|
52
|
-
|
53
|
-
$btn-link-disabled-color: $gray-light !default;
|
54
|
-
|
55
|
-
|
56
|
-
// Forms
|
57
|
-
// -------------------------
|
58
|
-
$input-bg: #F9F9F9 !default;
|
59
|
-
$input-bg-disabled: $gray-light !default;
|
60
|
-
|
61
|
-
$input-color: $gray-darker !default;
|
62
|
-
$input-border: $gray-lighter !default;
|
63
|
-
$input-border-radius: $border-radius-base !default;
|
64
|
-
$input-border-focus: #C1C1C1 !default;
|
65
|
-
|
66
|
-
$input-group-addon-bg: $gray-lighter !default;
|
67
|
-
$input-group-addon-border-color: $input-border !default;
|
68
|
-
|
69
|
-
|
70
|
-
// Dropdowns
|
71
|
-
// -------------------------
|
72
|
-
$dropdown-bg: #fff !default;
|
73
|
-
$dropdown-border: #e5e5e5 !default;
|
74
|
-
$dropdown-fallback-border: #ccc !default;
|
75
|
-
$dropdown-divider-bg: #e5e5e5 !default;
|
76
|
-
|
77
|
-
$dropdown-link-color: $gray-darker !default;
|
78
|
-
$dropdown-link-hover-color: darken($gray-darker, 5%) !default;
|
79
|
-
$dropdown-link-hover-bg: darken(#fff, 5%) !default;
|
80
|
-
|
81
|
-
$dropdown-link-active-color: $component-active-color !default;
|
82
|
-
$dropdown-link-active-bg: $component-active-bg !default;
|
83
|
-
|
84
|
-
$dropdown-link-disabled-color: $gray-light !default;
|
85
|
-
|
86
|
-
$dropdown-header-color: #777 !default;
|
@@ -1,40 +0,0 @@
|
|
1
|
-
@import "variables"
|
2
|
-
|
3
|
-
@import "compass/css3/box-shadow"
|
4
|
-
@import "compass/css3/border-radius"
|
5
|
-
|
6
|
-
input[type=number]::-webkit-inner-spin-button,
|
7
|
-
input[type=number]::-webkit-outer-spin-button
|
8
|
-
-webkit-appearance: none
|
9
|
-
margin: 0
|
10
|
-
|
11
|
-
.spinner,
|
12
|
-
.spinner-box-input
|
13
|
-
.spinner-buttons
|
14
|
-
height: 100%
|
15
|
-
.btn
|
16
|
-
position: relative
|
17
|
-
height: 50%
|
18
|
-
padding: 3px 9px
|
19
|
-
line-height: 0px
|
20
|
-
font-size: 10px
|
21
|
-
top: 0px
|
22
|
-
margin-left: -1px !important
|
23
|
-
border-color: $input-border
|
24
|
-
+box-shadow(none)
|
25
|
-
z-index: 2
|
26
|
-
.fa
|
27
|
-
font-size: 1em
|
28
|
-
margin-right: 0
|
29
|
-
line-height: 9px
|
30
|
-
&.disabled
|
31
|
-
cursor: not-allowed
|
32
|
-
&:hover,
|
33
|
-
&:focus
|
34
|
-
+box-shadow(none)
|
35
|
-
.spinner-up
|
36
|
-
+border-top-left-radius(0 !important)
|
37
|
-
+border-top-right-radius($input-border-radius !important)
|
38
|
-
.spinner-down
|
39
|
-
+border-bottom-left-radius(0 !important)
|
40
|
-
padding: 3px 9px 2px 9px
|
@@ -1,41 +0,0 @@
|
|
1
|
-
/* Jasny Bootstrap Fileupload overrides */
|
2
|
-
|
3
|
-
@import "variables"
|
4
|
-
@import "compass/css3/border-radius"
|
5
|
-
|
6
|
-
.fileinput
|
7
|
-
margin-bottom: 0
|
8
|
-
display: block
|
9
|
-
.uneditable-input
|
10
|
-
background-color: $input-bg-disabled
|
11
|
-
|
12
|
-
.fileinput-new.input-group .btn-file
|
13
|
-
.fileinput.input-group .btn-file
|
14
|
-
+border-right-radius($border-radius-base)
|
15
|
-
border-color: $input-border
|
16
|
-
|
17
|
-
.fileinput.input-group .input-group-btn
|
18
|
-
.form-control.file
|
19
|
-
padding: 0 !important
|
20
|
-
position: absolute
|
21
|
-
|
22
|
-
.fileinput
|
23
|
-
.input-group-btn > .btn:hover,
|
24
|
-
.input-group-btn > .btn:focus,
|
25
|
-
.input-group-btn > .btn:active
|
26
|
-
z-index: 0
|
27
|
-
|
28
|
-
.fileinput-preview.thumbnail
|
29
|
-
width: auto
|
30
|
-
height: auto
|
31
|
-
min-width: 80px
|
32
|
-
min-height: 80px
|
33
|
-
max-height: 500px
|
34
|
-
margin-bottom: 0
|
35
|
-
margin-top: 5px
|
36
|
-
background-color: $input-bg
|
37
|
-
|
38
|
-
.empty-thumbnail
|
39
|
-
width: 250px
|
40
|
-
height: 200px
|
41
|
-
background-color: $input-bg
|
@@ -1,88 +0,0 @@
|
|
1
|
-
@import "variables"
|
2
|
-
@import "compass/css3/border-radius"
|
3
|
-
@import "compass/css3/box-shadow"
|
4
|
-
|
5
|
-
.redactor-button-disabled
|
6
|
-
&:hover,
|
7
|
-
&:focus
|
8
|
-
background-color: transparent !important
|
9
|
-
color: #333 !important
|
10
|
-
cursor: disabled
|
11
|
-
|
12
|
-
.redactor-dropdown a
|
13
|
-
color: $dropdown-link-color
|
14
|
-
&:hover,
|
15
|
-
&:focus
|
16
|
-
background-color: $dropdown-link-hover-bg
|
17
|
-
color: $dropdown-link-hover-color !important
|
18
|
-
|
19
|
-
.redactor-box
|
20
|
-
.redactor-toolbar
|
21
|
-
/* Override z-index because we don't whant */
|
22
|
-
/* redactor_toolbar fixed somewhere or on top of everythink ..*/
|
23
|
-
z-index: 1 !important
|
24
|
-
+box-shadow(none)
|
25
|
-
+border-radius($input-border-radius $input-border-radius 0 0)
|
26
|
-
border: 1px solid $input-border
|
27
|
-
li a
|
28
|
-
&:hover,
|
29
|
-
&:focus
|
30
|
-
background-color: $btn-primary-bg
|
31
|
-
color: $btn-primary-color
|
32
|
-
|
33
|
-
.redactor-editor
|
34
|
-
background-color: $input-bg
|
35
|
-
border: 1px solid $input-border
|
36
|
-
border-top-width: 0px
|
37
|
-
+border-radius(0 0 $input-border-radius $input-border-radius)
|
38
|
-
&:focus
|
39
|
-
border-color: $input-border-focus
|
40
|
-
background: #FFF
|
41
|
-
&[disabled], &[readonly]
|
42
|
-
color: #CCC
|
43
|
-
&[disabled]:focus, &[readonly]:focus
|
44
|
-
background: $input-bg-disabled
|
45
|
-
color: #CCC
|
46
|
-
border-color: $gray-lighter
|
47
|
-
|
48
|
-
textarea.form-control
|
49
|
-
background-color: $input-bg
|
50
|
-
color: $input-color
|
51
|
-
border: 1px solid $input-border
|
52
|
-
border-top-width: 0px
|
53
|
-
&:focus
|
54
|
-
background-color: #111
|
55
|
-
color: $gray-lighter
|
56
|
-
|
57
|
-
.redactor-editor
|
58
|
-
div.row
|
59
|
-
margin-left: -15px
|
60
|
-
margin-right: -15px
|
61
|
-
margin-bottom: 0
|
62
|
-
div[class^=col-lg-], div[class^=col-md-], div[class^=col-sm-], div[class^=col-xs-]
|
63
|
-
padding-left: 15px
|
64
|
-
padding-right: 15px
|
65
|
-
border: 1px dashed $gray-light
|
66
|
-
margin-bottom: 0
|
67
|
-
|
68
|
-
#redactor-modal
|
69
|
-
input[type="text"],
|
70
|
-
input[type="password"],
|
71
|
-
input[type="email"],
|
72
|
-
textarea
|
73
|
-
border-color: $input-border
|
74
|
-
background-color: $input-bg
|
75
|
-
color: $input-color
|
76
|
-
+box-shadow(none)
|
77
|
-
&:focus
|
78
|
-
background-color: #fff
|
79
|
-
border-color: $input-border-focus
|
80
|
-
+box-shadow(none)
|
81
|
-
|
82
|
-
footer
|
83
|
-
button.redactor-modal-action-btn
|
84
|
-
background-color: $btn-primary-bg
|
85
|
-
color: $btn-primary-color
|
86
|
-
&:hover,
|
87
|
-
&:focus
|
88
|
-
background-color: darken($btn-primary-bg, 5%)
|
@@ -1,39 +0,0 @@
|
|
1
|
-
@import "variables"
|
2
|
-
@import "compass/css3/border-radius"
|
3
|
-
|
4
|
-
.selectize-dropdown,
|
5
|
-
.selectize-dropdown.form-control
|
6
|
-
+border-radius($border-radius-base)
|
7
|
-
|
8
|
-
.selectize-input
|
9
|
-
border-color: $input-border
|
10
|
-
+border-radius($input-border-radius)
|
11
|
-
&.focus
|
12
|
-
border-color: $input-border-focus
|
13
|
-
&.dropdown-active
|
14
|
-
+border-radius($input-border-radius)
|
15
|
-
|
16
|
-
.selectize-dropdown,
|
17
|
-
.selectize-input,
|
18
|
-
.selectize-input input
|
19
|
-
color: $input-color
|
20
|
-
|
21
|
-
.selectize-input,
|
22
|
-
.selectize-control.single
|
23
|
-
.selectize-input.input-active
|
24
|
-
background: $input-bg
|
25
|
-
|
26
|
-
.selectize-dropdown
|
27
|
-
[data-selectable]
|
28
|
-
background-color: $dropdown-bg
|
29
|
-
color: $dropdown-link-color
|
30
|
-
.active
|
31
|
-
background-color: $dropdown-link-hover-bg
|
32
|
-
color: $dropdown-link-hover-color
|
33
|
-
.selected
|
34
|
-
background-color: $dropdown-link-active-bg
|
35
|
-
color: $dropdown-link-active-color
|
36
|
-
|
37
|
-
.selectize-dropdown-content
|
38
|
-
padding: 0
|
39
|
-
|