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.
Files changed (48) hide show
  1. data/lib/rails/uikit/engine.rb +6 -0
  2. data/lib/rails/uikit/version.rb +5 -0
  3. data/lib/rails/uikit.rb +8 -0
  4. data/public/fonts/FontAwesome.otf +0 -0
  5. data/public/fonts/fontawesome-webfont.eot +0 -0
  6. data/public/fonts/fontawesome-webfont.ttf +0 -0
  7. data/public/fonts/fontawesome-webfont.woff +0 -0
  8. data/vendor/assets/javascripts/addons/autocomplete.js +306 -0
  9. data/vendor/assets/javascripts/addons/autocomplete.min.js +3 -0
  10. data/vendor/assets/javascripts/addons/datepicker.js +365 -0
  11. data/vendor/assets/javascripts/addons/datepicker.min.js +3 -0
  12. data/vendor/assets/javascripts/addons/form-password.js +62 -0
  13. data/vendor/assets/javascripts/addons/form-password.min.js +3 -0
  14. data/vendor/assets/javascripts/addons/form-select.js +62 -0
  15. data/vendor/assets/javascripts/addons/form-select.min.js +3 -0
  16. data/vendor/assets/javascripts/addons/htmleditor.js +594 -0
  17. data/vendor/assets/javascripts/addons/htmleditor.min.js +3 -0
  18. data/vendor/assets/javascripts/addons/nestable.js +574 -0
  19. data/vendor/assets/javascripts/addons/nestable.min.js +3 -0
  20. data/vendor/assets/javascripts/addons/notify.js +177 -0
  21. data/vendor/assets/javascripts/addons/notify.min.js +3 -0
  22. data/vendor/assets/javascripts/addons/pagination.js +146 -0
  23. data/vendor/assets/javascripts/addons/pagination.min.js +3 -0
  24. data/vendor/assets/javascripts/addons/search.js +90 -0
  25. data/vendor/assets/javascripts/addons/search.min.js +3 -0
  26. data/vendor/assets/javascripts/addons/sortable.js +494 -0
  27. data/vendor/assets/javascripts/addons/sortable.min.js +3 -0
  28. data/vendor/assets/javascripts/addons/sticky.js +130 -0
  29. data/vendor/assets/javascripts/addons/sticky.min.js +3 -0
  30. data/vendor/assets/javascripts/addons/timepicker.js +163 -0
  31. data/vendor/assets/javascripts/addons/timepicker.min.js +3 -0
  32. data/vendor/assets/javascripts/addons/upload.js +239 -0
  33. data/vendor/assets/javascripts/addons/upload.min.js +3 -0
  34. data/vendor/assets/javascripts/uikit.js +2573 -0
  35. data/vendor/assets/javascripts/uikit.min.js +4 -0
  36. data/vendor/assets/stylesheets/addons/uikit.addons.css +1124 -0
  37. data/vendor/assets/stylesheets/addons/uikit.addons.min.css +3 -0
  38. data/vendor/assets/stylesheets/addons/uikit.almost-flat.addons.css +1205 -0
  39. data/vendor/assets/stylesheets/addons/uikit.almost-flat.addons.min.css +3 -0
  40. data/vendor/assets/stylesheets/addons/uikit.gradient.addons.css +1226 -0
  41. data/vendor/assets/stylesheets/addons/uikit.gradient.addons.min.css +3 -0
  42. data/vendor/assets/stylesheets/uikit.almost-flat.css +7022 -0
  43. data/vendor/assets/stylesheets/uikit.almost-flat.min.css +3 -0
  44. data/vendor/assets/stylesheets/uikit.css +6732 -0
  45. data/vendor/assets/stylesheets/uikit.gradient.css +7090 -0
  46. data/vendor/assets/stylesheets/uikit.gradient.min.css +3 -0
  47. data/vendor/assets/stylesheets/uikit.min.css +3 -0
  48. 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});