rails-uikit 2.8.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/lib/rails/uikit/engine.rb +6 -0
- data/lib/rails/uikit/version.rb +5 -0
- data/lib/rails/uikit.rb +8 -0
- data/public/fonts/FontAwesome.otf +0 -0
- data/public/fonts/fontawesome-webfont.eot +0 -0
- data/public/fonts/fontawesome-webfont.ttf +0 -0
- data/public/fonts/fontawesome-webfont.woff +0 -0
- data/vendor/assets/javascripts/addons/autocomplete.js +306 -0
- data/vendor/assets/javascripts/addons/autocomplete.min.js +3 -0
- data/vendor/assets/javascripts/addons/datepicker.js +365 -0
- data/vendor/assets/javascripts/addons/datepicker.min.js +3 -0
- data/vendor/assets/javascripts/addons/form-password.js +62 -0
- data/vendor/assets/javascripts/addons/form-password.min.js +3 -0
- data/vendor/assets/javascripts/addons/form-select.js +62 -0
- data/vendor/assets/javascripts/addons/form-select.min.js +3 -0
- data/vendor/assets/javascripts/addons/htmleditor.js +594 -0
- data/vendor/assets/javascripts/addons/htmleditor.min.js +3 -0
- data/vendor/assets/javascripts/addons/nestable.js +574 -0
- data/vendor/assets/javascripts/addons/nestable.min.js +3 -0
- data/vendor/assets/javascripts/addons/notify.js +177 -0
- data/vendor/assets/javascripts/addons/notify.min.js +3 -0
- data/vendor/assets/javascripts/addons/pagination.js +146 -0
- data/vendor/assets/javascripts/addons/pagination.min.js +3 -0
- data/vendor/assets/javascripts/addons/search.js +90 -0
- data/vendor/assets/javascripts/addons/search.min.js +3 -0
- data/vendor/assets/javascripts/addons/sortable.js +494 -0
- data/vendor/assets/javascripts/addons/sortable.min.js +3 -0
- data/vendor/assets/javascripts/addons/sticky.js +130 -0
- data/vendor/assets/javascripts/addons/sticky.min.js +3 -0
- data/vendor/assets/javascripts/addons/timepicker.js +163 -0
- data/vendor/assets/javascripts/addons/timepicker.min.js +3 -0
- data/vendor/assets/javascripts/addons/upload.js +239 -0
- data/vendor/assets/javascripts/addons/upload.min.js +3 -0
- data/vendor/assets/javascripts/uikit.js +2573 -0
- data/vendor/assets/javascripts/uikit.min.js +4 -0
- data/vendor/assets/stylesheets/addons/uikit.addons.css +1124 -0
- data/vendor/assets/stylesheets/addons/uikit.addons.min.css +3 -0
- data/vendor/assets/stylesheets/addons/uikit.almost-flat.addons.css +1205 -0
- data/vendor/assets/stylesheets/addons/uikit.almost-flat.addons.min.css +3 -0
- data/vendor/assets/stylesheets/addons/uikit.gradient.addons.css +1226 -0
- data/vendor/assets/stylesheets/addons/uikit.gradient.addons.min.css +3 -0
- data/vendor/assets/stylesheets/uikit.almost-flat.css +7022 -0
- data/vendor/assets/stylesheets/uikit.almost-flat.min.css +3 -0
- data/vendor/assets/stylesheets/uikit.css +6732 -0
- data/vendor/assets/stylesheets/uikit.gradient.css +7090 -0
- data/vendor/assets/stylesheets/uikit.gradient.min.css +3 -0
- data/vendor/assets/stylesheets/uikit.min.css +3 -0
- metadata +125 -0
@@ -0,0 +1,163 @@
|
|
1
|
+
/*! UIkit 2.8.0 | http://www.getuikit.com | (c) 2014 YOOtheme | MIT License */
|
2
|
+
|
3
|
+
(function(addon) {
|
4
|
+
|
5
|
+
var component;
|
6
|
+
|
7
|
+
if (jQuery && jQuery.UIkit) {
|
8
|
+
component = addon(jQuery, jQuery.UIkit);
|
9
|
+
}
|
10
|
+
|
11
|
+
if (typeof define == "function" && define.amd) {
|
12
|
+
define("uikit-search", ["uikit"], function(){
|
13
|
+
return component || addon(jQuery, jQuery.UIkit);
|
14
|
+
});
|
15
|
+
}
|
16
|
+
|
17
|
+
})(function($, UI){
|
18
|
+
|
19
|
+
"use strict";
|
20
|
+
|
21
|
+
var times = {'12h':[], '24h':[]};
|
22
|
+
|
23
|
+
for(var i = 0, h=''; i<24; i++) {
|
24
|
+
|
25
|
+
h = ''+i;
|
26
|
+
|
27
|
+
if(i<10) h = '0'+h;
|
28
|
+
|
29
|
+
times['24h'].push({value: (h+':00')});
|
30
|
+
times['24h'].push({value: (h+':30')});
|
31
|
+
|
32
|
+
if (i<13) {
|
33
|
+
times['12h'].push({value: (h+':00 AM')});
|
34
|
+
times['12h'].push({value: (h+':30 AM')});
|
35
|
+
}
|
36
|
+
|
37
|
+
if (i > 12) {
|
38
|
+
|
39
|
+
h = h-12;
|
40
|
+
|
41
|
+
if (h < 10) h = '0'+String(h);
|
42
|
+
|
43
|
+
times['12h'].push({value: (h+':00 PM')});
|
44
|
+
times['12h'].push({value: (h+':30 PM')});
|
45
|
+
}
|
46
|
+
}
|
47
|
+
|
48
|
+
|
49
|
+
UI.component('timepicker', {
|
50
|
+
|
51
|
+
defaults: {
|
52
|
+
format : '24h',
|
53
|
+
delay : 0
|
54
|
+
},
|
55
|
+
|
56
|
+
init: function() {
|
57
|
+
|
58
|
+
var $this = this;
|
59
|
+
|
60
|
+
this.options.minLength = 0;
|
61
|
+
this.options.template = '<ul class="uk-nav uk-nav-autocomplete uk-autocomplete-results">{{~items}}<li data-value="{{$item.value}}"><a>{{$item.value}}</a></li>{{/items}}</ul>';
|
62
|
+
|
63
|
+
this.options.source = function(release) {
|
64
|
+
release(times[$this.options.format] || times['12h']);
|
65
|
+
};
|
66
|
+
|
67
|
+
this.element.wrap('<div class="uk-autocomplete"></div>');
|
68
|
+
|
69
|
+
this.autocomplete = UI.autocomplete(this.element.parent(), this.options);
|
70
|
+
this.autocomplete.dropdown.addClass('uk-dropdown-scrollable');
|
71
|
+
|
72
|
+
this.autocomplete.on('autocomplete-show', function() {
|
73
|
+
|
74
|
+
var selected = $this.autocomplete.dropdown.find('[data-value="'+$this.element.val()+'"]');
|
75
|
+
|
76
|
+
setTimeout(function(){
|
77
|
+
$this.autocomplete.pick(selected, true);
|
78
|
+
}, 10);
|
79
|
+
});
|
80
|
+
|
81
|
+
this.element.on('focus', function(){
|
82
|
+
|
83
|
+
$this.autocomplete.value = Math.random();
|
84
|
+
$this.autocomplete.triggercomplete();
|
85
|
+
|
86
|
+
}).on('blur', function() {
|
87
|
+
$this.checkTime();
|
88
|
+
});
|
89
|
+
|
90
|
+
this.element.data("timepicker", this);
|
91
|
+
},
|
92
|
+
|
93
|
+
checkTime: function() {
|
94
|
+
|
95
|
+
var arr, timeArray, meridian = 'AM', hour, minute, time = this.element.val();
|
96
|
+
|
97
|
+
if (this.options.format == '12h') {
|
98
|
+
arr = time.split(' ');
|
99
|
+
timeArray = arr[0].split(':');
|
100
|
+
meridian = arr[1];
|
101
|
+
} else {
|
102
|
+
timeArray = time.split(':');
|
103
|
+
}
|
104
|
+
|
105
|
+
hour = parseInt(timeArray[0], 10);
|
106
|
+
minute = parseInt(timeArray[1], 10);
|
107
|
+
|
108
|
+
if (isNaN(hour)) hour = 0;
|
109
|
+
if (isNaN(minute)) minute = 0;
|
110
|
+
|
111
|
+
if (this.options.format == '12h') {
|
112
|
+
if (hour > 12) {
|
113
|
+
hour = 12;
|
114
|
+
} else if (hour < 0) {
|
115
|
+
hour = 12;
|
116
|
+
}
|
117
|
+
|
118
|
+
if (meridian === 'am' || meridian === 'a') {
|
119
|
+
meridian = 'AM';
|
120
|
+
} else if (meridian === 'pm' || meridian === 'p') {
|
121
|
+
meridian = 'PM';
|
122
|
+
}
|
123
|
+
|
124
|
+
if (meridian !== 'AM' && meridian !== 'PM') {
|
125
|
+
meridian = 'AM';
|
126
|
+
}
|
127
|
+
|
128
|
+
} else {
|
129
|
+
|
130
|
+
if (hour >= 24) {
|
131
|
+
hour = 23;
|
132
|
+
} else if (hour < 0) {
|
133
|
+
hour = 0;
|
134
|
+
}
|
135
|
+
}
|
136
|
+
|
137
|
+
if (minute < 0) {
|
138
|
+
minute = 0;
|
139
|
+
} else if (minute >= 60) {
|
140
|
+
minute = 0;
|
141
|
+
}
|
142
|
+
|
143
|
+
this.element.val(this.formatTime(hour, minute, meridian));
|
144
|
+
},
|
145
|
+
|
146
|
+
formatTime: function(hour, minute, meridian) {
|
147
|
+
hour = hour < 10 ? '0' + hour : hour;
|
148
|
+
minute = minute < 10 ? '0' + minute : minute;
|
149
|
+
return hour + ':' + minute + (this.options.format == '12h' ? ' ' + meridian : '');
|
150
|
+
}
|
151
|
+
});
|
152
|
+
|
153
|
+
// init code
|
154
|
+
$(document).on("focus.timepicker.uikit", "[data-uk-timepicker]", function(e) {
|
155
|
+
var ele = $(this);
|
156
|
+
|
157
|
+
if (!ele.data("timepicker")) {
|
158
|
+
var obj = UI.timepicker(ele, UI.Utils.options(ele.attr("data-uk-timepicker")));
|
159
|
+
|
160
|
+
ele.focus();
|
161
|
+
}
|
162
|
+
});
|
163
|
+
});
|
@@ -0,0 +1,3 @@
|
|
1
|
+
/*! UIkit 2.8.0 | http://www.getuikit.com | (c) 2014 YOOtheme | MIT License */
|
2
|
+
|
3
|
+
!function(a){var b;jQuery&&jQuery.UIkit&&(b=a(jQuery,jQuery.UIkit)),"function"==typeof define&&define.amd&&define("uikit-search",["uikit"],function(){return b||a(jQuery,jQuery.UIkit)})}(function(a,b){"use strict";for(var c={"12h":[],"24h":[]},d=0,e="";24>d;d++)e=""+d,10>d&&(e="0"+e),c["24h"].push({value:e+":00"}),c["24h"].push({value:e+":30"}),13>d&&(c["12h"].push({value:e+":00 AM"}),c["12h"].push({value:e+":30 AM"})),d>12&&(e-=12,10>e&&(e="0"+String(e)),c["12h"].push({value:e+":00 PM"}),c["12h"].push({value:e+":30 PM"}));b.component("timepicker",{defaults:{format:"24h",delay:0},init:function(){var a=this;this.options.minLength=0,this.options.template='<ul class="uk-nav uk-nav-autocomplete uk-autocomplete-results">{{~items}}<li data-value="{{$item.value}}"><a>{{$item.value}}</a></li>{{/items}}</ul>',this.options.source=function(b){b(c[a.options.format]||c["12h"])},this.element.wrap('<div class="uk-autocomplete"></div>'),this.autocomplete=b.autocomplete(this.element.parent(),this.options),this.autocomplete.dropdown.addClass("uk-dropdown-scrollable"),this.autocomplete.on("autocomplete-show",function(){var b=a.autocomplete.dropdown.find('[data-value="'+a.element.val()+'"]');setTimeout(function(){a.autocomplete.pick(b,!0)},10)}),this.element.on("focus",function(){a.autocomplete.value=Math.random(),a.autocomplete.triggercomplete()}).on("blur",function(){a.checkTime()}),this.element.data("timepicker",this)},checkTime:function(){var a,b,c,d,e="AM",f=this.element.val();"12h"==this.options.format?(a=f.split(" "),b=a[0].split(":"),e=a[1]):b=f.split(":"),c=parseInt(b[0],10),d=parseInt(b[1],10),isNaN(c)&&(c=0),isNaN(d)&&(d=0),"12h"==this.options.format?(c>12?c=12:0>c&&(c=12),"am"===e||"a"===e?e="AM":("pm"===e||"p"===e)&&(e="PM"),"AM"!==e&&"PM"!==e&&(e="AM")):c>=24?c=23:0>c&&(c=0),0>d?d=0:d>=60&&(d=0),this.element.val(this.formatTime(c,d,e))},formatTime:function(a,b,c){return a=10>a?"0"+a:a,b=10>b?"0"+b:b,a+":"+b+("12h"==this.options.format?" "+c:"")}}),a(document).on("focus.timepicker.uikit","[data-uk-timepicker]",function(){var c=a(this);if(!c.data("timepicker")){{b.timepicker(c,b.Utils.options(c.attr("data-uk-timepicker")))}c.focus()}})});
|
@@ -0,0 +1,239 @@
|
|
1
|
+
/*! UIkit 2.8.0 | http://www.getuikit.com | (c) 2014 YOOtheme | MIT License */
|
2
|
+
|
3
|
+
(function(addon) {
|
4
|
+
|
5
|
+
var component;
|
6
|
+
|
7
|
+
if (jQuery && jQuery.UIkit) {
|
8
|
+
component = addon(jQuery, jQuery.UIkit);
|
9
|
+
}
|
10
|
+
|
11
|
+
if (typeof define == "function" && define.amd) {
|
12
|
+
define("uikit-upload", ["uikit"], function(){
|
13
|
+
return component || addon(jQuery, jQuery.UIkit);
|
14
|
+
});
|
15
|
+
}
|
16
|
+
|
17
|
+
})(function($, UI){
|
18
|
+
|
19
|
+
UI.component('uploadSelect', {
|
20
|
+
|
21
|
+
|
22
|
+
init: function() {
|
23
|
+
|
24
|
+
var $this = this;
|
25
|
+
|
26
|
+
this.on("change", function() {
|
27
|
+
xhrupload($this.element[0].files, $this.options);
|
28
|
+
});
|
29
|
+
}
|
30
|
+
});
|
31
|
+
|
32
|
+
UI.component('uploadDrop', {
|
33
|
+
|
34
|
+
defaults: {
|
35
|
+
'dragoverClass': 'uk-dragover'
|
36
|
+
},
|
37
|
+
|
38
|
+
init: function() {
|
39
|
+
|
40
|
+
var $this = this, hasdragCls = false;
|
41
|
+
|
42
|
+
this.on("drop", function(e){
|
43
|
+
|
44
|
+
if (e.dataTransfer && e.dataTransfer.files) {
|
45
|
+
|
46
|
+
e.stopPropagation();
|
47
|
+
e.preventDefault();
|
48
|
+
|
49
|
+
$this.element.removeClass($this.options.dragoverClass);
|
50
|
+
|
51
|
+
xhrupload(e.dataTransfer.files, $this.options);
|
52
|
+
}
|
53
|
+
|
54
|
+
}).on("dragenter", function(e){
|
55
|
+
e.stopPropagation();
|
56
|
+
e.preventDefault();
|
57
|
+
}).on("dragover", function(e){
|
58
|
+
e.stopPropagation();
|
59
|
+
e.preventDefault();
|
60
|
+
|
61
|
+
if (!hasdragCls) {
|
62
|
+
$this.element.addClass($this.options.dragoverClass);
|
63
|
+
hasdragCls = true;
|
64
|
+
}
|
65
|
+
}).on("dragleave", function(e){
|
66
|
+
e.stopPropagation();
|
67
|
+
e.preventDefault();
|
68
|
+
$this.element.removeClass($this.options.dragoverClass);
|
69
|
+
hasdragCls = false;
|
70
|
+
});
|
71
|
+
}
|
72
|
+
});
|
73
|
+
|
74
|
+
|
75
|
+
UI.support.ajaxupload = (function() {
|
76
|
+
|
77
|
+
function supportFileAPI() {
|
78
|
+
var fi = document.createElement('INPUT'); fi.type = 'file'; return 'files' in fi;
|
79
|
+
}
|
80
|
+
|
81
|
+
function supportAjaxUploadProgressEvents() {
|
82
|
+
var xhr = new XMLHttpRequest(); return !! (xhr && ('upload' in xhr) && ('onprogress' in xhr.upload));
|
83
|
+
}
|
84
|
+
|
85
|
+
function supportFormData() {
|
86
|
+
return !! window.FormData;
|
87
|
+
}
|
88
|
+
|
89
|
+
return supportFileAPI() && supportAjaxUploadProgressEvents() && supportFormData();
|
90
|
+
})();
|
91
|
+
|
92
|
+
if (UI.support.ajaxupload){
|
93
|
+
$.event.props.push("dataTransfer");
|
94
|
+
}
|
95
|
+
|
96
|
+
function xhrupload(files, settings) {
|
97
|
+
|
98
|
+
if (!UI.support.ajaxupload){
|
99
|
+
return this;
|
100
|
+
}
|
101
|
+
|
102
|
+
settings = $.extend({}, xhrupload.defaults, settings);
|
103
|
+
|
104
|
+
if (!files.length){
|
105
|
+
return;
|
106
|
+
}
|
107
|
+
|
108
|
+
if (settings.allow !== '*.*') {
|
109
|
+
|
110
|
+
for(var i=0,file;file=files[i];i++) {
|
111
|
+
|
112
|
+
if(!matchName(settings.allow, file.name)) {
|
113
|
+
|
114
|
+
if(typeof(settings.notallowed) == 'string') {
|
115
|
+
alert(settings.notallowed);
|
116
|
+
} else {
|
117
|
+
settings.notallowed(file, settings);
|
118
|
+
}
|
119
|
+
return;
|
120
|
+
}
|
121
|
+
}
|
122
|
+
}
|
123
|
+
|
124
|
+
var complete = settings.complete;
|
125
|
+
|
126
|
+
if (settings.single){
|
127
|
+
|
128
|
+
var count = files.length,
|
129
|
+
uploaded = 0;
|
130
|
+
|
131
|
+
settings.complete = function(response, xhr){
|
132
|
+
uploaded = uploaded+1;
|
133
|
+
complete(response, xhr);
|
134
|
+
if (uploaded<count){
|
135
|
+
upload([files[uploaded]], settings);
|
136
|
+
} else {
|
137
|
+
settings.allcomplete(response, xhr);
|
138
|
+
}
|
139
|
+
};
|
140
|
+
|
141
|
+
upload([files[0]], settings);
|
142
|
+
|
143
|
+
} else {
|
144
|
+
|
145
|
+
settings.complete = function(response, xhr){
|
146
|
+
complete(response, xhr);
|
147
|
+
settings.allcomplete(response, xhr);
|
148
|
+
};
|
149
|
+
|
150
|
+
upload(files, settings);
|
151
|
+
}
|
152
|
+
|
153
|
+
function upload(files, settings){
|
154
|
+
|
155
|
+
// upload all at once
|
156
|
+
var formData = new FormData(), xhr = new XMLHttpRequest();
|
157
|
+
|
158
|
+
if (settings.before(settings, files)===false) return;
|
159
|
+
|
160
|
+
for (var i = 0, f; f = files[i]; i++) { formData.append(settings.param, f); }
|
161
|
+
for (var p in settings.params) { formData.append(p, settings.params[p]); }
|
162
|
+
|
163
|
+
// Add any event handlers here...
|
164
|
+
xhr.upload.addEventListener("progress", function(e){
|
165
|
+
var percent = (e.loaded / e.total)*100;
|
166
|
+
settings.progress(percent, e);
|
167
|
+
}, false);
|
168
|
+
|
169
|
+
xhr.addEventListener("loadstart", function(e){ settings.loadstart(e); }, false);
|
170
|
+
xhr.addEventListener("load", function(e){ settings.load(e); }, false);
|
171
|
+
xhr.addEventListener("loadend", function(e){ settings.loadend(e); }, false);
|
172
|
+
xhr.addEventListener("error", function(e){ settings.error(e); }, false);
|
173
|
+
xhr.addEventListener("abort", function(e){ settings.abort(e); }, false);
|
174
|
+
|
175
|
+
xhr.open(settings.method, settings.action, true);
|
176
|
+
|
177
|
+
xhr.onreadystatechange = function() {
|
178
|
+
|
179
|
+
settings.readystatechange(xhr);
|
180
|
+
|
181
|
+
if (xhr.readyState==4){
|
182
|
+
|
183
|
+
var response = xhr.responseText;
|
184
|
+
|
185
|
+
if (settings.type=="json") {
|
186
|
+
try {
|
187
|
+
response = $.parseJSON(response);
|
188
|
+
} catch(e) {
|
189
|
+
response = false;
|
190
|
+
}
|
191
|
+
}
|
192
|
+
|
193
|
+
settings.complete(response, xhr);
|
194
|
+
}
|
195
|
+
};
|
196
|
+
|
197
|
+
xhr.send(formData);
|
198
|
+
}
|
199
|
+
}
|
200
|
+
|
201
|
+
xhrupload.defaults = {
|
202
|
+
'action': '',
|
203
|
+
'single': true,
|
204
|
+
'method': 'POST',
|
205
|
+
'param' : 'files[]',
|
206
|
+
'params': {},
|
207
|
+
'allow' : '*.*',
|
208
|
+
'type' : 'text',
|
209
|
+
|
210
|
+
// events
|
211
|
+
'before' : function(o){},
|
212
|
+
'loadstart' : function(){},
|
213
|
+
'load' : function(){},
|
214
|
+
'loadend' : function(){},
|
215
|
+
'error' : function(){},
|
216
|
+
'abort' : function(){},
|
217
|
+
'progress' : function(){},
|
218
|
+
'complete' : function(){},
|
219
|
+
'allcomplete' : function(){},
|
220
|
+
'readystatechange': function(){},
|
221
|
+
'notallowed' : function(file, settings){ alert('Only the following file types are allowed: '+settings.allow); }
|
222
|
+
};
|
223
|
+
|
224
|
+
function matchName(pattern, path) {
|
225
|
+
|
226
|
+
var parsedPattern = '^' + pattern.replace(/\//g, '\\/').
|
227
|
+
replace(/\*\*/g, '(\\/[^\\/]+)*').
|
228
|
+
replace(/\*/g, '[^\\/]+').
|
229
|
+
replace(/((?!\\))\?/g, '$1.') + '$';
|
230
|
+
|
231
|
+
parsedPattern = '^' + parsedPattern + '$';
|
232
|
+
|
233
|
+
return (path.match(new RegExp(parsedPattern, 'i')) !== null);
|
234
|
+
}
|
235
|
+
|
236
|
+
UI.Utils.xhrupload = xhrupload;
|
237
|
+
|
238
|
+
return xhrupload;
|
239
|
+
});
|
@@ -0,0 +1,3 @@
|
|
1
|
+
/*! UIkit 2.8.0 | http://www.getuikit.com | (c) 2014 YOOtheme | MIT License */
|
2
|
+
|
3
|
+
!function(a){var b;jQuery&&jQuery.UIkit&&(b=a(jQuery,jQuery.UIkit)),"function"==typeof define&&define.amd&&define("uikit-upload",["uikit"],function(){return b||a(jQuery,jQuery.UIkit)})}(function(a,b){function c(e,f){function g(b,c){var d=new FormData,e=new XMLHttpRequest;if(c.before(c,b)!==!1){for(var f,g=0;f=b[g];g++)d.append(c.param,f);for(var h in c.params)d.append(h,c.params[h]);e.upload.addEventListener("progress",function(a){var b=a.loaded/a.total*100;c.progress(b,a)},!1),e.addEventListener("loadstart",function(a){c.loadstart(a)},!1),e.addEventListener("load",function(a){c.load(a)},!1),e.addEventListener("loadend",function(a){c.loadend(a)},!1),e.addEventListener("error",function(a){c.error(a)},!1),e.addEventListener("abort",function(a){c.abort(a)},!1),e.open(c.method,c.action,!0),e.onreadystatechange=function(){if(c.readystatechange(e),4==e.readyState){var b=e.responseText;if("json"==c.type)try{b=a.parseJSON(b)}catch(d){b=!1}c.complete(b,e)}},e.send(d)}}if(!b.support.ajaxupload)return this;if(f=a.extend({},c.defaults,f),e.length){if("*.*"!==f.allow)for(var h,i=0;h=e[i];i++)if(!d(f.allow,h.name))return void("string"==typeof f.notallowed?alert(f.notallowed):f.notallowed(h,f));var j=f.complete;if(f.single){var k=e.length,l=0;f.complete=function(a,b){l+=1,j(a,b),k>l?g([e[l]],f):f.allcomplete(a,b)},g([e[0]],f)}else f.complete=function(a,b){j(a,b),f.allcomplete(a,b)},g(e,f)}}function d(a,b){var c="^"+a.replace(/\//g,"\\/").replace(/\*\*/g,"(\\/[^\\/]+)*").replace(/\*/g,"[^\\/]+").replace(/((?!\\))\?/g,"$1.")+"$";return c="^"+c+"$",null!==b.match(new RegExp(c,"i"))}return b.component("uploadSelect",{init:function(){var a=this;this.on("change",function(){c(a.element[0].files,a.options)})}}),b.component("uploadDrop",{defaults:{dragoverClass:"uk-dragover"},init:function(){var a=this,b=!1;this.on("drop",function(b){b.dataTransfer&&b.dataTransfer.files&&(b.stopPropagation(),b.preventDefault(),a.element.removeClass(a.options.dragoverClass),c(b.dataTransfer.files,a.options))}).on("dragenter",function(a){a.stopPropagation(),a.preventDefault()}).on("dragover",function(c){c.stopPropagation(),c.preventDefault(),b||(a.element.addClass(a.options.dragoverClass),b=!0)}).on("dragleave",function(c){c.stopPropagation(),c.preventDefault(),a.element.removeClass(a.options.dragoverClass),b=!1})}}),b.support.ajaxupload=function(){function a(){var a=document.createElement("INPUT");return a.type="file","files"in a}function b(){var a=new XMLHttpRequest;return!!(a&&"upload"in a&&"onprogress"in a.upload)}function c(){return!!window.FormData}return a()&&b()&&c()}(),b.support.ajaxupload&&a.event.props.push("dataTransfer"),c.defaults={action:"",single:!0,method:"POST",param:"files[]",params:{},allow:"*.*",type:"text",before:function(){},loadstart:function(){},load:function(){},loadend:function(){},error:function(){},abort:function(){},progress:function(){},complete:function(){},allcomplete:function(){},readystatechange:function(){},notallowed:function(a,b){alert("Only the following file types are allowed: "+b.allow)}},b.Utils.xhrupload=c,c});
|