uniformjs-rails 1.5.0
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.
- data/LICENSE +22 -0
- data/README.md +29 -0
- data/lib/uniformjs-rails.rb +8 -0
- data/lib/uniformjs-rails/version.rb +5 -0
- data/vendor/assets/javascripts/jquery.uniform.js +672 -0
- metadata +67 -0
data/LICENSE
ADDED
@@ -0,0 +1,22 @@
|
|
1
|
+
Copyright (c) 2012 Michal Olah
|
2
|
+
|
3
|
+
MIT License
|
4
|
+
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining
|
6
|
+
a copy of this software and associated documentation files (the
|
7
|
+
"Software"), to deal in the Software without restriction, including
|
8
|
+
without limitation the rights to use, copy, modify, merge, publish,
|
9
|
+
distribute, sublicense, and/or sell copies of the Software, and to
|
10
|
+
permit persons to whom the Software is furnished to do so, subject to
|
11
|
+
the following conditions:
|
12
|
+
|
13
|
+
The above copyright notice and this permission notice shall be
|
14
|
+
included in all copies or substantial portions of the Software.
|
15
|
+
|
16
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
17
|
+
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
18
|
+
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
19
|
+
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
20
|
+
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
21
|
+
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
22
|
+
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
data/README.md
ADDED
@@ -0,0 +1,29 @@
|
|
1
|
+
# Uniformjs::Rails
|
2
|
+
|
3
|
+
TODO: Write a gem description
|
4
|
+
|
5
|
+
## Installation
|
6
|
+
|
7
|
+
Add this line to your application's Gemfile:
|
8
|
+
|
9
|
+
gem 'uniformjs-rails'
|
10
|
+
|
11
|
+
And then execute:
|
12
|
+
|
13
|
+
$ bundle
|
14
|
+
|
15
|
+
Or install it yourself as:
|
16
|
+
|
17
|
+
$ gem install uniformjs-rails
|
18
|
+
|
19
|
+
## Usage
|
20
|
+
|
21
|
+
TODO: Write usage instructions here
|
22
|
+
|
23
|
+
## Contributing
|
24
|
+
|
25
|
+
1. Fork it
|
26
|
+
2. Create your feature branch (`git checkout -b my-new-feature`)
|
27
|
+
3. Commit your changes (`git commit -am 'Added some feature'`)
|
28
|
+
4. Push to the branch (`git push origin my-new-feature`)
|
29
|
+
5. Create new Pull Request
|
@@ -0,0 +1,672 @@
|
|
1
|
+
/*
|
2
|
+
|
3
|
+
Uniform v1.7.5
|
4
|
+
Copyright © 2009 Josh Pyles / Pixelmatrix Design LLC
|
5
|
+
http://pixelmatrixdesign.com
|
6
|
+
|
7
|
+
Requires jQuery 1.4 or newer
|
8
|
+
|
9
|
+
Much thanks to Thomas Reynolds and Buck Wilson for their help and advice on this
|
10
|
+
|
11
|
+
Disabling text selection is made possible by Mathias Bynens <http://mathiasbynens.be/>
|
12
|
+
and his noSelect plugin. <http://github.com/mathiasbynens/noSelect-jQuery-Plugin>
|
13
|
+
|
14
|
+
Also, thanks to David Kaneda and Eugene Bond for their contributions to the plugin
|
15
|
+
|
16
|
+
License:
|
17
|
+
MIT License - http://www.opensource.org/licenses/mit-license.php
|
18
|
+
|
19
|
+
Enjoy!
|
20
|
+
|
21
|
+
*/
|
22
|
+
|
23
|
+
(function($) {
|
24
|
+
$.uniform = {
|
25
|
+
options: {
|
26
|
+
selectClass: 'selector',
|
27
|
+
radioClass: 'radio',
|
28
|
+
checkboxClass: 'checker',
|
29
|
+
fileClass: 'uploader',
|
30
|
+
filenameClass: 'filename',
|
31
|
+
fileBtnClass: 'action',
|
32
|
+
fileDefaultText: 'No file selected',
|
33
|
+
fileBtnText: 'Choose File',
|
34
|
+
checkedClass: 'checked',
|
35
|
+
focusClass: 'focus',
|
36
|
+
disabledClass: 'disabled',
|
37
|
+
buttonClass: 'button',
|
38
|
+
activeClass: 'active',
|
39
|
+
hoverClass: 'hover',
|
40
|
+
useID: true,
|
41
|
+
idPrefix: 'uniform',
|
42
|
+
resetSelector: false,
|
43
|
+
autoHide: true
|
44
|
+
},
|
45
|
+
elements: []
|
46
|
+
};
|
47
|
+
|
48
|
+
if($.browser.msie && $.browser.version < 7){
|
49
|
+
$.support.selectOpacity = false;
|
50
|
+
}else{
|
51
|
+
$.support.selectOpacity = true;
|
52
|
+
}
|
53
|
+
|
54
|
+
$.fn.uniform = function(options) {
|
55
|
+
|
56
|
+
options = $.extend($.uniform.options, options);
|
57
|
+
|
58
|
+
var el = this;
|
59
|
+
//code for specifying a reset button
|
60
|
+
if(options.resetSelector != false){
|
61
|
+
$(options.resetSelector).mouseup(function(){
|
62
|
+
function resetThis(){
|
63
|
+
$.uniform.update(el);
|
64
|
+
}
|
65
|
+
setTimeout(resetThis, 10);
|
66
|
+
});
|
67
|
+
}
|
68
|
+
|
69
|
+
function doInput(elem){
|
70
|
+
$el = $(elem);
|
71
|
+
$el.addClass($el.attr("type"));
|
72
|
+
storeElement(elem);
|
73
|
+
}
|
74
|
+
|
75
|
+
function doTextarea(elem){
|
76
|
+
$(elem).addClass("uniform");
|
77
|
+
storeElement(elem);
|
78
|
+
}
|
79
|
+
|
80
|
+
function doButton(elem){
|
81
|
+
var $el = $(elem);
|
82
|
+
|
83
|
+
var divTag = $("<div>"),
|
84
|
+
spanTag = $("<span>");
|
85
|
+
|
86
|
+
divTag.addClass(options.buttonClass);
|
87
|
+
|
88
|
+
if(options.useID && $el.attr("id") != "") divTag.attr("id", options.idPrefix+"-"+$el.attr("id"));
|
89
|
+
|
90
|
+
var btnText;
|
91
|
+
|
92
|
+
if($el.is("a") || $el.is("button")){
|
93
|
+
btnText = $el.text();
|
94
|
+
}else if($el.is(":submit") || $el.is(":reset") || $el.is("input[type=button]")){
|
95
|
+
btnText = $el.attr("value");
|
96
|
+
}
|
97
|
+
|
98
|
+
btnText = btnText == "" ? $el.is(":reset") ? "Reset" : "Submit" : btnText;
|
99
|
+
|
100
|
+
spanTag.html(btnText);
|
101
|
+
|
102
|
+
$el.css("opacity", 0);
|
103
|
+
$el.wrap(divTag);
|
104
|
+
$el.wrap(spanTag);
|
105
|
+
|
106
|
+
//redefine variables
|
107
|
+
divTag = $el.closest("div");
|
108
|
+
spanTag = $el.closest("span");
|
109
|
+
|
110
|
+
if($el.is(":disabled")) divTag.addClass(options.disabledClass);
|
111
|
+
|
112
|
+
divTag.bind({
|
113
|
+
"mouseenter.uniform": function(){
|
114
|
+
divTag.addClass(options.hoverClass);
|
115
|
+
},
|
116
|
+
"mouseleave.uniform": function(){
|
117
|
+
divTag.removeClass(options.hoverClass);
|
118
|
+
divTag.removeClass(options.activeClass);
|
119
|
+
},
|
120
|
+
"mousedown.uniform touchbegin.uniform": function(){
|
121
|
+
divTag.addClass(options.activeClass);
|
122
|
+
},
|
123
|
+
"mouseup.uniform touchend.uniform": function(){
|
124
|
+
divTag.removeClass(options.activeClass);
|
125
|
+
},
|
126
|
+
"click.uniform touchend.uniform": function(e){
|
127
|
+
if($(e.target).is("span") || $(e.target).is("div")){
|
128
|
+
if(elem[0].dispatchEvent){
|
129
|
+
var ev = document.createEvent('MouseEvents');
|
130
|
+
ev.initEvent( 'click', true, true );
|
131
|
+
elem[0].dispatchEvent(ev);
|
132
|
+
}else{
|
133
|
+
elem[0].click();
|
134
|
+
}
|
135
|
+
}
|
136
|
+
}
|
137
|
+
});
|
138
|
+
|
139
|
+
elem.bind({
|
140
|
+
"focus.uniform": function(){
|
141
|
+
divTag.addClass(options.focusClass);
|
142
|
+
},
|
143
|
+
"blur.uniform": function(){
|
144
|
+
divTag.removeClass(options.focusClass);
|
145
|
+
}
|
146
|
+
});
|
147
|
+
|
148
|
+
$.uniform.noSelect(divTag);
|
149
|
+
storeElement(elem);
|
150
|
+
|
151
|
+
}
|
152
|
+
|
153
|
+
function doSelect(elem){
|
154
|
+
var $el = $(elem);
|
155
|
+
|
156
|
+
var divTag = $('<div />'),
|
157
|
+
spanTag = $('<span />');
|
158
|
+
|
159
|
+
if(!$el.css("display") == "none" && options.autoHide){
|
160
|
+
divTag.hide();
|
161
|
+
}
|
162
|
+
|
163
|
+
divTag.addClass(options.selectClass);
|
164
|
+
|
165
|
+
if(options.useID && elem.attr("id") != ""){
|
166
|
+
divTag.attr("id", options.idPrefix+"-"+elem.attr("id"));
|
167
|
+
}
|
168
|
+
|
169
|
+
var selected = elem.find(":selected:first");
|
170
|
+
if(selected.length == 0){
|
171
|
+
selected = elem.find("option:first");
|
172
|
+
}
|
173
|
+
spanTag.html(selected.html());
|
174
|
+
|
175
|
+
elem.css('opacity', 0);
|
176
|
+
elem.wrap(divTag);
|
177
|
+
elem.before(spanTag);
|
178
|
+
|
179
|
+
//redefine variables
|
180
|
+
divTag = elem.parent("div");
|
181
|
+
spanTag = elem.siblings("span");
|
182
|
+
|
183
|
+
elem.bind({
|
184
|
+
"change.uniform": function() {
|
185
|
+
spanTag.text(elem.find(":selected").html());
|
186
|
+
divTag.removeClass(options.activeClass);
|
187
|
+
},
|
188
|
+
"focus.uniform": function() {
|
189
|
+
divTag.addClass(options.focusClass);
|
190
|
+
},
|
191
|
+
"blur.uniform": function() {
|
192
|
+
divTag.removeClass(options.focusClass);
|
193
|
+
divTag.removeClass(options.activeClass);
|
194
|
+
},
|
195
|
+
"mousedown.uniform touchbegin.uniform": function() {
|
196
|
+
divTag.addClass(options.activeClass);
|
197
|
+
},
|
198
|
+
"mouseup.uniform touchend.uniform": function() {
|
199
|
+
divTag.removeClass(options.activeClass);
|
200
|
+
},
|
201
|
+
"click.uniform touchend.uniform": function(){
|
202
|
+
divTag.removeClass(options.activeClass);
|
203
|
+
},
|
204
|
+
"mouseenter.uniform": function() {
|
205
|
+
divTag.addClass(options.hoverClass);
|
206
|
+
},
|
207
|
+
"mouseleave.uniform": function() {
|
208
|
+
divTag.removeClass(options.hoverClass);
|
209
|
+
divTag.removeClass(options.activeClass);
|
210
|
+
},
|
211
|
+
"keyup.uniform": function(){
|
212
|
+
spanTag.text(elem.find(":selected").html());
|
213
|
+
}
|
214
|
+
});
|
215
|
+
|
216
|
+
//handle disabled state
|
217
|
+
if($(elem).attr("disabled")){
|
218
|
+
//box is checked by default, check our box
|
219
|
+
divTag.addClass(options.disabledClass);
|
220
|
+
}
|
221
|
+
$.uniform.noSelect(spanTag);
|
222
|
+
|
223
|
+
storeElement(elem);
|
224
|
+
|
225
|
+
}
|
226
|
+
|
227
|
+
function doCheckbox(elem){
|
228
|
+
var $el = $(elem);
|
229
|
+
|
230
|
+
var divTag = $('<div />'),
|
231
|
+
spanTag = $('<span />');
|
232
|
+
|
233
|
+
if(!$el.css("display") == "none" && options.autoHide){
|
234
|
+
divTag.hide();
|
235
|
+
}
|
236
|
+
|
237
|
+
divTag.addClass(options.checkboxClass);
|
238
|
+
|
239
|
+
//assign the id of the element
|
240
|
+
if(options.useID && elem.attr("id") != ""){
|
241
|
+
divTag.attr("id", options.idPrefix+"-"+elem.attr("id"));
|
242
|
+
}
|
243
|
+
|
244
|
+
//wrap with the proper elements
|
245
|
+
$(elem).wrap(divTag);
|
246
|
+
$(elem).wrap(spanTag);
|
247
|
+
|
248
|
+
//redefine variables
|
249
|
+
spanTag = elem.parent();
|
250
|
+
divTag = spanTag.parent();
|
251
|
+
|
252
|
+
//hide normal input and add focus classes
|
253
|
+
$(elem)
|
254
|
+
.css("opacity", 0)
|
255
|
+
.bind({
|
256
|
+
"focus.uniform": function(){
|
257
|
+
divTag.addClass(options.focusClass);
|
258
|
+
},
|
259
|
+
"blur.uniform": function(){
|
260
|
+
divTag.removeClass(options.focusClass);
|
261
|
+
},
|
262
|
+
"click.uniform touchend.uniform": function(){
|
263
|
+
if(!$(elem).attr("checked")){
|
264
|
+
//box was just unchecked, uncheck span
|
265
|
+
spanTag.removeClass(options.checkedClass);
|
266
|
+
}else{
|
267
|
+
//box was just checked, check span.
|
268
|
+
spanTag.addClass(options.checkedClass);
|
269
|
+
}
|
270
|
+
},
|
271
|
+
"mousedown.uniform touchbegin.uniform": function() {
|
272
|
+
divTag.addClass(options.activeClass);
|
273
|
+
},
|
274
|
+
"mouseup.uniform touchend.uniform": function() {
|
275
|
+
divTag.removeClass(options.activeClass);
|
276
|
+
},
|
277
|
+
"mouseenter.uniform": function() {
|
278
|
+
divTag.addClass(options.hoverClass);
|
279
|
+
},
|
280
|
+
"mouseleave.uniform": function() {
|
281
|
+
divTag.removeClass(options.hoverClass);
|
282
|
+
divTag.removeClass(options.activeClass);
|
283
|
+
}
|
284
|
+
});
|
285
|
+
|
286
|
+
//handle defaults
|
287
|
+
if($(elem).attr("checked")){
|
288
|
+
//box is checked by default, check our box
|
289
|
+
spanTag.addClass(options.checkedClass);
|
290
|
+
}
|
291
|
+
|
292
|
+
//handle disabled state
|
293
|
+
if($(elem).attr("disabled")){
|
294
|
+
//box is checked by default, check our box
|
295
|
+
divTag.addClass(options.disabledClass);
|
296
|
+
}
|
297
|
+
|
298
|
+
storeElement(elem);
|
299
|
+
}
|
300
|
+
|
301
|
+
function doRadio(elem){
|
302
|
+
var $el = $(elem);
|
303
|
+
|
304
|
+
var divTag = $('<div />'),
|
305
|
+
spanTag = $('<span />');
|
306
|
+
|
307
|
+
if(!$el.css("display") == "none" && options.autoHide){
|
308
|
+
divTag.hide();
|
309
|
+
}
|
310
|
+
|
311
|
+
divTag.addClass(options.radioClass);
|
312
|
+
|
313
|
+
if(options.useID && elem.attr("id") != ""){
|
314
|
+
divTag.attr("id", options.idPrefix+"-"+elem.attr("id"));
|
315
|
+
}
|
316
|
+
|
317
|
+
//wrap with the proper elements
|
318
|
+
$(elem).wrap(divTag);
|
319
|
+
$(elem).wrap(spanTag);
|
320
|
+
|
321
|
+
//redefine variables
|
322
|
+
spanTag = elem.parent();
|
323
|
+
divTag = spanTag.parent();
|
324
|
+
|
325
|
+
//hide normal input and add focus classes
|
326
|
+
$(elem)
|
327
|
+
.css("opacity", 0)
|
328
|
+
.bind({
|
329
|
+
"focus.uniform": function(){
|
330
|
+
divTag.addClass(options.focusClass);
|
331
|
+
},
|
332
|
+
"blur.uniform": function(){
|
333
|
+
divTag.removeClass(options.focusClass);
|
334
|
+
},
|
335
|
+
"click.uniform touchend.uniform": function(){
|
336
|
+
if(!$(elem).attr("checked")){
|
337
|
+
//box was just unchecked, uncheck span
|
338
|
+
spanTag.removeClass(options.checkedClass);
|
339
|
+
}else{
|
340
|
+
//box was just checked, check span
|
341
|
+
var classes = options.radioClass.split(" ")[0];
|
342
|
+
$("." + classes + " span." + options.checkedClass + ":has([name='" + $(elem).attr('name') + "'])").removeClass(options.checkedClass);
|
343
|
+
spanTag.addClass(options.checkedClass);
|
344
|
+
}
|
345
|
+
},
|
346
|
+
"mousedown.uniform touchend.uniform": function() {
|
347
|
+
if(!$(elem).is(":disabled")){
|
348
|
+
divTag.addClass(options.activeClass);
|
349
|
+
}
|
350
|
+
},
|
351
|
+
"mouseup.uniform touchbegin.uniform": function() {
|
352
|
+
divTag.removeClass(options.activeClass);
|
353
|
+
},
|
354
|
+
"mouseenter.uniform touchend.uniform": function() {
|
355
|
+
divTag.addClass(options.hoverClass);
|
356
|
+
},
|
357
|
+
"mouseleave.uniform": function() {
|
358
|
+
divTag.removeClass(options.hoverClass);
|
359
|
+
divTag.removeClass(options.activeClass);
|
360
|
+
}
|
361
|
+
});
|
362
|
+
|
363
|
+
//handle defaults
|
364
|
+
if($(elem).attr("checked")){
|
365
|
+
//box is checked by default, check span
|
366
|
+
spanTag.addClass(options.checkedClass);
|
367
|
+
}
|
368
|
+
//handle disabled state
|
369
|
+
if($(elem).attr("disabled")){
|
370
|
+
//box is checked by default, check our box
|
371
|
+
divTag.addClass(options.disabledClass);
|
372
|
+
}
|
373
|
+
|
374
|
+
storeElement(elem);
|
375
|
+
|
376
|
+
}
|
377
|
+
|
378
|
+
function doFile(elem){
|
379
|
+
//sanitize input
|
380
|
+
var $el = $(elem);
|
381
|
+
|
382
|
+
var divTag = $('<div />'),
|
383
|
+
filenameTag = $('<span>'+options.fileDefaultText+'</span>'),
|
384
|
+
btnTag = $('<span>'+options.fileBtnText+'</span>');
|
385
|
+
|
386
|
+
if(!$el.css("display") == "none" && options.autoHide){
|
387
|
+
divTag.hide();
|
388
|
+
}
|
389
|
+
|
390
|
+
divTag.addClass(options.fileClass);
|
391
|
+
filenameTag.addClass(options.filenameClass);
|
392
|
+
btnTag.addClass(options.fileBtnClass);
|
393
|
+
|
394
|
+
if(options.useID && $el.attr("id") != ""){
|
395
|
+
divTag.attr("id", options.idPrefix+"-"+$el.attr("id"));
|
396
|
+
}
|
397
|
+
|
398
|
+
//wrap with the proper elements
|
399
|
+
$el.wrap(divTag);
|
400
|
+
$el.after(btnTag);
|
401
|
+
$el.after(filenameTag);
|
402
|
+
|
403
|
+
//redefine variables
|
404
|
+
divTag = $el.closest("div");
|
405
|
+
filenameTag = $el.siblings("."+options.filenameClass);
|
406
|
+
btnTag = $el.siblings("."+options.fileBtnClass);
|
407
|
+
|
408
|
+
//set the size
|
409
|
+
if(!$el.attr("size")){
|
410
|
+
var divWidth = divTag.width();
|
411
|
+
//$el.css("width", divWidth);
|
412
|
+
$el.attr("size", divWidth/10);
|
413
|
+
}
|
414
|
+
|
415
|
+
//actions
|
416
|
+
var setFilename = function()
|
417
|
+
{
|
418
|
+
var filename = $el.val();
|
419
|
+
if (filename === '')
|
420
|
+
{
|
421
|
+
filename = options.fileDefaultText;
|
422
|
+
}
|
423
|
+
else
|
424
|
+
{
|
425
|
+
filename = filename.split(/[\/\\]+/);
|
426
|
+
filename = filename[(filename.length-1)];
|
427
|
+
}
|
428
|
+
filenameTag.text(filename);
|
429
|
+
};
|
430
|
+
|
431
|
+
// Account for input saved across refreshes
|
432
|
+
setFilename();
|
433
|
+
|
434
|
+
$el
|
435
|
+
.css("opacity", 0)
|
436
|
+
.bind({
|
437
|
+
"focus.uniform": function(){
|
438
|
+
divTag.addClass(options.focusClass);
|
439
|
+
},
|
440
|
+
"blur.uniform": function(){
|
441
|
+
divTag.removeClass(options.focusClass);
|
442
|
+
},
|
443
|
+
"mousedown.uniform": function() {
|
444
|
+
if(!$(elem).is(":disabled")){
|
445
|
+
divTag.addClass(options.activeClass);
|
446
|
+
}
|
447
|
+
},
|
448
|
+
"mouseup.uniform": function() {
|
449
|
+
divTag.removeClass(options.activeClass);
|
450
|
+
},
|
451
|
+
"mouseenter.uniform": function() {
|
452
|
+
divTag.addClass(options.hoverClass);
|
453
|
+
},
|
454
|
+
"mouseleave.uniform": function() {
|
455
|
+
divTag.removeClass(options.hoverClass);
|
456
|
+
divTag.removeClass(options.activeClass);
|
457
|
+
}
|
458
|
+
});
|
459
|
+
|
460
|
+
// IE7 doesn't fire onChange until blur or second fire.
|
461
|
+
if ($.browser.msie){
|
462
|
+
// IE considers browser chrome blocking I/O, so it
|
463
|
+
// suspends tiemouts until after the file has been selected.
|
464
|
+
$el.bind('click.uniform.ie7', function() {
|
465
|
+
setTimeout(setFilename, 0);
|
466
|
+
});
|
467
|
+
}else{
|
468
|
+
// All other browsers behave properly
|
469
|
+
$el.bind('change.uniform', setFilename);
|
470
|
+
}
|
471
|
+
|
472
|
+
//handle defaults
|
473
|
+
if($el.attr("disabled")){
|
474
|
+
//box is checked by default, check our box
|
475
|
+
divTag.addClass(options.disabledClass);
|
476
|
+
}
|
477
|
+
|
478
|
+
$.uniform.noSelect(filenameTag);
|
479
|
+
$.uniform.noSelect(btnTag);
|
480
|
+
|
481
|
+
storeElement(elem);
|
482
|
+
|
483
|
+
}
|
484
|
+
|
485
|
+
$.uniform.restore = function(elem){
|
486
|
+
if(elem == undefined){
|
487
|
+
elem = $($.uniform.elements);
|
488
|
+
}
|
489
|
+
|
490
|
+
$(elem).each(function(){
|
491
|
+
if($(this).is(":checkbox")){
|
492
|
+
//unwrap from span and div
|
493
|
+
$(this).unwrap().unwrap();
|
494
|
+
}else if($(this).is("select")){
|
495
|
+
//remove sibling span
|
496
|
+
$(this).siblings("span").remove();
|
497
|
+
//unwrap parent div
|
498
|
+
$(this).unwrap();
|
499
|
+
}else if($(this).is(":radio")){
|
500
|
+
//unwrap from span and div
|
501
|
+
$(this).unwrap().unwrap();
|
502
|
+
}else if($(this).is(":file")){
|
503
|
+
//remove sibling spans
|
504
|
+
$(this).siblings("span").remove();
|
505
|
+
//unwrap parent div
|
506
|
+
$(this).unwrap();
|
507
|
+
}else if($(this).is("button, :submit, :reset, a, input[type='button']")){
|
508
|
+
//unwrap from span and div
|
509
|
+
$(this).unwrap().unwrap();
|
510
|
+
}
|
511
|
+
|
512
|
+
//unbind events
|
513
|
+
$(this).unbind(".uniform");
|
514
|
+
|
515
|
+
//reset inline style
|
516
|
+
$(this).css("opacity", "1");
|
517
|
+
|
518
|
+
//remove item from list of uniformed elements
|
519
|
+
var index = $.inArray($(elem), $.uniform.elements);
|
520
|
+
$.uniform.elements.splice(index, 1);
|
521
|
+
});
|
522
|
+
};
|
523
|
+
|
524
|
+
function storeElement(elem){
|
525
|
+
//store this element in our global array
|
526
|
+
elem = $(elem).get();
|
527
|
+
if(elem.length > 1){
|
528
|
+
$.each(elem, function(i, val){
|
529
|
+
$.uniform.elements.push(val);
|
530
|
+
});
|
531
|
+
}else{
|
532
|
+
$.uniform.elements.push(elem);
|
533
|
+
}
|
534
|
+
}
|
535
|
+
|
536
|
+
//noSelect v1.0
|
537
|
+
$.uniform.noSelect = function(elem) {
|
538
|
+
function f() {
|
539
|
+
return false;
|
540
|
+
};
|
541
|
+
$(elem).each(function() {
|
542
|
+
this.onselectstart = this.ondragstart = f; // Webkit & IE
|
543
|
+
$(this)
|
544
|
+
.mousedown(f) // Webkit & Opera
|
545
|
+
.css({ MozUserSelect: 'none' }); // Firefox
|
546
|
+
});
|
547
|
+
};
|
548
|
+
|
549
|
+
$.uniform.update = function(elem){
|
550
|
+
if(elem == undefined){
|
551
|
+
elem = $($.uniform.elements);
|
552
|
+
}
|
553
|
+
//sanitize input
|
554
|
+
elem = $(elem);
|
555
|
+
|
556
|
+
elem.each(function(){
|
557
|
+
//do to each item in the selector
|
558
|
+
//function to reset all classes
|
559
|
+
var $e = $(this);
|
560
|
+
|
561
|
+
if($e.is("select")){
|
562
|
+
//element is a select
|
563
|
+
var spanTag = $e.siblings("span");
|
564
|
+
var divTag = $e.parent("div");
|
565
|
+
|
566
|
+
divTag.removeClass(options.hoverClass+" "+options.focusClass+" "+options.activeClass);
|
567
|
+
|
568
|
+
//reset current selected text
|
569
|
+
spanTag.html($e.find(":selected").html());
|
570
|
+
|
571
|
+
if($e.is(":disabled")){
|
572
|
+
divTag.addClass(options.disabledClass);
|
573
|
+
}else{
|
574
|
+
divTag.removeClass(options.disabledClass);
|
575
|
+
}
|
576
|
+
|
577
|
+
}else if($e.is(":checkbox")){
|
578
|
+
//element is a checkbox
|
579
|
+
var spanTag = $e.closest("span");
|
580
|
+
var divTag = $e.closest("div");
|
581
|
+
|
582
|
+
divTag.removeClass(options.hoverClass+" "+options.focusClass+" "+options.activeClass);
|
583
|
+
spanTag.removeClass(options.checkedClass);
|
584
|
+
|
585
|
+
if($e.is(":checked")){
|
586
|
+
spanTag.addClass(options.checkedClass);
|
587
|
+
}
|
588
|
+
if($e.is(":disabled")){
|
589
|
+
divTag.addClass(options.disabledClass);
|
590
|
+
}else{
|
591
|
+
divTag.removeClass(options.disabledClass);
|
592
|
+
}
|
593
|
+
|
594
|
+
}else if($e.is(":radio")){
|
595
|
+
//element is a radio
|
596
|
+
var spanTag = $e.closest("span");
|
597
|
+
var divTag = $e.closest("div");
|
598
|
+
|
599
|
+
divTag.removeClass(options.hoverClass+" "+options.focusClass+" "+options.activeClass);
|
600
|
+
spanTag.removeClass(options.checkedClass);
|
601
|
+
|
602
|
+
if($e.is(":checked")){
|
603
|
+
spanTag.addClass(options.checkedClass);
|
604
|
+
}
|
605
|
+
|
606
|
+
if($e.is(":disabled")){
|
607
|
+
divTag.addClass(options.disabledClass);
|
608
|
+
}else{
|
609
|
+
divTag.removeClass(options.disabledClass);
|
610
|
+
}
|
611
|
+
}else if($e.is(":file")){
|
612
|
+
var divTag = $e.parent("div");
|
613
|
+
var filenameTag = $e.siblings(options.filenameClass);
|
614
|
+
btnTag = $e.siblings(options.fileBtnClass);
|
615
|
+
|
616
|
+
divTag.removeClass(options.hoverClass+" "+options.focusClass+" "+options.activeClass);
|
617
|
+
|
618
|
+
filenameTag.text($e.val());
|
619
|
+
|
620
|
+
if($e.is(":disabled")){
|
621
|
+
divTag.addClass(options.disabledClass);
|
622
|
+
}else{
|
623
|
+
divTag.removeClass(options.disabledClass);
|
624
|
+
}
|
625
|
+
}else if($e.is(":submit") || $e.is(":reset") || $e.is("button") || $e.is("a") || elem.is("input[type=button]")){
|
626
|
+
var divTag = $e.closest("div");
|
627
|
+
divTag.removeClass(options.hoverClass+" "+options.focusClass+" "+options.activeClass);
|
628
|
+
|
629
|
+
if($e.is(":disabled")){
|
630
|
+
divTag.addClass(options.disabledClass);
|
631
|
+
}else{
|
632
|
+
divTag.removeClass(options.disabledClass);
|
633
|
+
}
|
634
|
+
|
635
|
+
}
|
636
|
+
|
637
|
+
});
|
638
|
+
};
|
639
|
+
|
640
|
+
return this.each(function() {
|
641
|
+
if($.support.selectOpacity){
|
642
|
+
var elem = $(this);
|
643
|
+
|
644
|
+
if(elem.is("select")){
|
645
|
+
//element is a select
|
646
|
+
if(elem.attr("multiple") != true){
|
647
|
+
//element is not a multi-select
|
648
|
+
if(elem.attr("size") == undefined || elem.attr("size") <= 1){
|
649
|
+
doSelect(elem);
|
650
|
+
}
|
651
|
+
}
|
652
|
+
}else if(elem.is(":checkbox")){
|
653
|
+
//element is a checkbox
|
654
|
+
doCheckbox(elem);
|
655
|
+
}else if(elem.is(":radio")){
|
656
|
+
//element is a radio
|
657
|
+
doRadio(elem);
|
658
|
+
}else if(elem.is(":file")){
|
659
|
+
//element is a file upload
|
660
|
+
doFile(elem);
|
661
|
+
}else if(elem.is(":text, :password, input[type='email']")){
|
662
|
+
doInput(elem);
|
663
|
+
}else if(elem.is("textarea")){
|
664
|
+
doTextarea(elem);
|
665
|
+
}else if(elem.is("a") || elem.is(":submit") || elem.is(":reset") || elem.is("button") || elem.is("input[type=button]")){
|
666
|
+
doButton(elem);
|
667
|
+
}
|
668
|
+
|
669
|
+
}
|
670
|
+
});
|
671
|
+
};
|
672
|
+
})(jQuery);
|
metadata
ADDED
@@ -0,0 +1,67 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: uniformjs-rails
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 1.5.0
|
5
|
+
prerelease:
|
6
|
+
platform: ruby
|
7
|
+
authors:
|
8
|
+
- Michal Olah
|
9
|
+
autorequire:
|
10
|
+
bindir: bin
|
11
|
+
cert_chain: []
|
12
|
+
date: 2012-08-15 00:00:00.000000000 Z
|
13
|
+
dependencies:
|
14
|
+
- !ruby/object:Gem::Dependency
|
15
|
+
name: railties
|
16
|
+
requirement: !ruby/object:Gem::Requirement
|
17
|
+
none: false
|
18
|
+
requirements:
|
19
|
+
- - ~>
|
20
|
+
- !ruby/object:Gem::Version
|
21
|
+
version: '3.1'
|
22
|
+
type: :runtime
|
23
|
+
prerelease: false
|
24
|
+
version_requirements: !ruby/object:Gem::Requirement
|
25
|
+
none: false
|
26
|
+
requirements:
|
27
|
+
- - ~>
|
28
|
+
- !ruby/object:Gem::Version
|
29
|
+
version: '3.1'
|
30
|
+
description: Uniform masks your standard form controls with custom themed controls.
|
31
|
+
It works in sync with your real form elements to ensure accessibility and compatibility.
|
32
|
+
email:
|
33
|
+
- olahmichal@gmail.com
|
34
|
+
executables: []
|
35
|
+
extensions: []
|
36
|
+
extra_rdoc_files: []
|
37
|
+
files:
|
38
|
+
- lib/uniformjs-rails/version.rb
|
39
|
+
- lib/uniformjs-rails.rb
|
40
|
+
- vendor/assets/javascripts/jquery.uniform.js
|
41
|
+
- LICENSE
|
42
|
+
- README.md
|
43
|
+
homepage: https://github.com/m1k3/uniformjs-rails
|
44
|
+
licenses: []
|
45
|
+
post_install_message:
|
46
|
+
rdoc_options: []
|
47
|
+
require_paths:
|
48
|
+
- lib
|
49
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
50
|
+
none: false
|
51
|
+
requirements:
|
52
|
+
- - ! '>='
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '0'
|
55
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
56
|
+
none: false
|
57
|
+
requirements:
|
58
|
+
- - ! '>='
|
59
|
+
- !ruby/object:Gem::Version
|
60
|
+
version: '0'
|
61
|
+
requirements: []
|
62
|
+
rubyforge_project:
|
63
|
+
rubygems_version: 1.8.23
|
64
|
+
signing_key:
|
65
|
+
specification_version: 3
|
66
|
+
summary: Uniform.js library ready to play with rails
|
67
|
+
test_files: []
|