rails-uikit-sass 2.27.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (151) hide show
  1. checksums.yaml +7 -0
  2. data/LICENSE.txt +22 -0
  3. data/README.md +43 -0
  4. data/lib/assets/stylesheets/rails-uikit-sass.scss +3 -0
  5. data/lib/rails-uikit-sass.rb +12 -0
  6. data/vendor/assets/fonts/FontAwesome.otf +0 -0
  7. data/vendor/assets/fonts/fontawesome-webfont.ttf +0 -0
  8. data/vendor/assets/fonts/fontawesome-webfont.woff +0 -0
  9. data/vendor/assets/fonts/fontawesome-webfont.woff2 +0 -0
  10. data/vendor/assets/javascripts/components/accordion.js +180 -0
  11. data/vendor/assets/javascripts/components/accordion.min.js +2 -0
  12. data/vendor/assets/javascripts/components/autocomplete.js +340 -0
  13. data/vendor/assets/javascripts/components/autocomplete.min.js +2 -0
  14. data/vendor/assets/javascripts/components/datepicker.js +3167 -0
  15. data/vendor/assets/javascripts/components/datepicker.min.js +3 -0
  16. data/vendor/assets/javascripts/components/form-password.js +67 -0
  17. data/vendor/assets/javascripts/components/form-password.min.js +2 -0
  18. data/vendor/assets/javascripts/components/form-select.js +85 -0
  19. data/vendor/assets/javascripts/components/form-select.min.js +2 -0
  20. data/vendor/assets/javascripts/components/grid-parallax.js +168 -0
  21. data/vendor/assets/javascripts/components/grid-parallax.min.js +2 -0
  22. data/vendor/assets/javascripts/components/grid.js +540 -0
  23. data/vendor/assets/javascripts/components/grid.min.js +2 -0
  24. data/vendor/assets/javascripts/components/htmleditor.js +679 -0
  25. data/vendor/assets/javascripts/components/htmleditor.min.js +2 -0
  26. data/vendor/assets/javascripts/components/lightbox.js +588 -0
  27. data/vendor/assets/javascripts/components/lightbox.min.js +2 -0
  28. data/vendor/assets/javascripts/components/nestable.js +653 -0
  29. data/vendor/assets/javascripts/components/nestable.min.js +2 -0
  30. data/vendor/assets/javascripts/components/notify.js +189 -0
  31. data/vendor/assets/javascripts/components/notify.min.js +2 -0
  32. data/vendor/assets/javascripts/components/pagination.js +147 -0
  33. data/vendor/assets/javascripts/components/pagination.min.js +2 -0
  34. data/vendor/assets/javascripts/components/parallax.js +462 -0
  35. data/vendor/assets/javascripts/components/parallax.min.js +2 -0
  36. data/vendor/assets/javascripts/components/search.js +92 -0
  37. data/vendor/assets/javascripts/components/search.min.js +2 -0
  38. data/vendor/assets/javascripts/components/slider.js +552 -0
  39. data/vendor/assets/javascripts/components/slider.min.js +2 -0
  40. data/vendor/assets/javascripts/components/slideset.js +523 -0
  41. data/vendor/assets/javascripts/components/slideset.min.js +2 -0
  42. data/vendor/assets/javascripts/components/slideshow-fx.js +382 -0
  43. data/vendor/assets/javascripts/components/slideshow-fx.min.js +2 -0
  44. data/vendor/assets/javascripts/components/slideshow.js +596 -0
  45. data/vendor/assets/javascripts/components/slideshow.min.js +2 -0
  46. data/vendor/assets/javascripts/components/sortable.js +688 -0
  47. data/vendor/assets/javascripts/components/sortable.min.js +2 -0
  48. data/vendor/assets/javascripts/components/sticky.js +364 -0
  49. data/vendor/assets/javascripts/components/sticky.min.js +2 -0
  50. data/vendor/assets/javascripts/components/timepicker.js +192 -0
  51. data/vendor/assets/javascripts/components/timepicker.min.js +2 -0
  52. data/vendor/assets/javascripts/components/tooltip.js +235 -0
  53. data/vendor/assets/javascripts/components/tooltip.min.js +2 -0
  54. data/vendor/assets/javascripts/components/upload.js +262 -0
  55. data/vendor/assets/javascripts/components/upload.min.js +2 -0
  56. data/vendor/assets/javascripts/core/alert.js +66 -0
  57. data/vendor/assets/javascripts/core/alert.min.js +2 -0
  58. data/vendor/assets/javascripts/core/button.js +156 -0
  59. data/vendor/assets/javascripts/core/button.min.js +2 -0
  60. data/vendor/assets/javascripts/core/core.js +820 -0
  61. data/vendor/assets/javascripts/core/core.min.js +2 -0
  62. data/vendor/assets/javascripts/core/cover.js +87 -0
  63. data/vendor/assets/javascripts/core/cover.min.js +2 -0
  64. data/vendor/assets/javascripts/core/dropdown.js +534 -0
  65. data/vendor/assets/javascripts/core/dropdown.min.js +2 -0
  66. data/vendor/assets/javascripts/core/grid.js +117 -0
  67. data/vendor/assets/javascripts/core/grid.min.js +2 -0
  68. data/vendor/assets/javascripts/core/modal.js +387 -0
  69. data/vendor/assets/javascripts/core/modal.min.js +2 -0
  70. data/vendor/assets/javascripts/core/nav.js +153 -0
  71. data/vendor/assets/javascripts/core/nav.min.js +2 -0
  72. data/vendor/assets/javascripts/core/offcanvas.js +197 -0
  73. data/vendor/assets/javascripts/core/offcanvas.min.js +2 -0
  74. data/vendor/assets/javascripts/core/scrollspy.js +209 -0
  75. data/vendor/assets/javascripts/core/scrollspy.min.js +2 -0
  76. data/vendor/assets/javascripts/core/smooth-scroll.js +62 -0
  77. data/vendor/assets/javascripts/core/smooth-scroll.min.js +2 -0
  78. data/vendor/assets/javascripts/core/switcher.js +307 -0
  79. data/vendor/assets/javascripts/core/switcher.min.js +2 -0
  80. data/vendor/assets/javascripts/core/tab.js +169 -0
  81. data/vendor/assets/javascripts/core/tab.min.js +2 -0
  82. data/vendor/assets/javascripts/core/toggle.js +124 -0
  83. data/vendor/assets/javascripts/core/toggle.min.js +2 -0
  84. data/vendor/assets/javascripts/core/touch.js +175 -0
  85. data/vendor/assets/javascripts/core/touch.min.js +2 -0
  86. data/vendor/assets/javascripts/core/utility.js +335 -0
  87. data/vendor/assets/javascripts/core/utility.min.js +2 -0
  88. data/vendor/assets/javascripts/uikit.js +3898 -0
  89. data/vendor/assets/javascripts/uikit.min.js +3 -0
  90. data/vendor/assets/stylesheets/components/accordion.scss +94 -0
  91. data/vendor/assets/stylesheets/components/autocomplete.scss +107 -0
  92. data/vendor/assets/stylesheets/components/datepicker.scss +197 -0
  93. data/vendor/assets/stylesheets/components/dotnav.scss +212 -0
  94. data/vendor/assets/stylesheets/components/form-advanced.scss +128 -0
  95. data/vendor/assets/stylesheets/components/form-file.scss +63 -0
  96. data/vendor/assets/stylesheets/components/form-password.scss +74 -0
  97. data/vendor/assets/stylesheets/components/form-select.scss +66 -0
  98. data/vendor/assets/stylesheets/components/htmleditor.scss +269 -0
  99. data/vendor/assets/stylesheets/components/nestable.scss +231 -0
  100. data/vendor/assets/stylesheets/components/notify.scss +190 -0
  101. data/vendor/assets/stylesheets/components/placeholder.scss +66 -0
  102. data/vendor/assets/stylesheets/components/progress.scss +173 -0
  103. data/vendor/assets/stylesheets/components/search.scss +309 -0
  104. data/vendor/assets/stylesheets/components/slidenav.scss +183 -0
  105. data/vendor/assets/stylesheets/components/slider.scss +139 -0
  106. data/vendor/assets/stylesheets/components/slideshow.scss +208 -0
  107. data/vendor/assets/stylesheets/components/sortable.scss +124 -0
  108. data/vendor/assets/stylesheets/components/sticky.scss +57 -0
  109. data/vendor/assets/stylesheets/components/tooltip.scss +178 -0
  110. data/vendor/assets/stylesheets/components/upload.scss +34 -0
  111. data/vendor/assets/stylesheets/core/alert.scss +141 -0
  112. data/vendor/assets/stylesheets/core/animation.scss +599 -0
  113. data/vendor/assets/stylesheets/core/article.scss +139 -0
  114. data/vendor/assets/stylesheets/core/badge.scss +110 -0
  115. data/vendor/assets/stylesheets/core/base.scss +563 -0
  116. data/vendor/assets/stylesheets/core/block.scss +155 -0
  117. data/vendor/assets/stylesheets/core/breadcrumb.scss +86 -0
  118. data/vendor/assets/stylesheets/core/button.scss +406 -0
  119. data/vendor/assets/stylesheets/core/close.scss +132 -0
  120. data/vendor/assets/stylesheets/core/column.scss +209 -0
  121. data/vendor/assets/stylesheets/core/comment.scss +172 -0
  122. data/vendor/assets/stylesheets/core/contrast.scss +493 -0
  123. data/vendor/assets/stylesheets/core/cover.scss +70 -0
  124. data/vendor/assets/stylesheets/core/description-list.scss +71 -0
  125. data/vendor/assets/stylesheets/core/dropdown.scss +283 -0
  126. data/vendor/assets/stylesheets/core/flex.scss +320 -0
  127. data/vendor/assets/stylesheets/core/form.scss +629 -0
  128. data/vendor/assets/stylesheets/core/grid.scss +731 -0
  129. data/vendor/assets/stylesheets/core/icon.scss +930 -0
  130. data/vendor/assets/stylesheets/core/list.scss +102 -0
  131. data/vendor/assets/stylesheets/core/modal.scss +343 -0
  132. data/vendor/assets/stylesheets/core/nav.scss +468 -0
  133. data/vendor/assets/stylesheets/core/navbar.scss +325 -0
  134. data/vendor/assets/stylesheets/core/offcanvas.scss +203 -0
  135. data/vendor/assets/stylesheets/core/overlay.scss +534 -0
  136. data/vendor/assets/stylesheets/core/pagination.scss +197 -0
  137. data/vendor/assets/stylesheets/core/panel.scss +332 -0
  138. data/vendor/assets/stylesheets/core/print.scss +61 -0
  139. data/vendor/assets/stylesheets/core/subnav.scss +213 -0
  140. data/vendor/assets/stylesheets/core/switcher.scss +38 -0
  141. data/vendor/assets/stylesheets/core/tab.scss +368 -0
  142. data/vendor/assets/stylesheets/core/table.scss +147 -0
  143. data/vendor/assets/stylesheets/core/text.scss +136 -0
  144. data/vendor/assets/stylesheets/core/thumbnail.scss +122 -0
  145. data/vendor/assets/stylesheets/core/thumbnav.scss +122 -0
  146. data/vendor/assets/stylesheets/core/utility.scss +610 -0
  147. data/vendor/assets/stylesheets/core/variables.scss +23 -0
  148. data/vendor/assets/stylesheets/uikit-mixins.scss +327 -0
  149. data/vendor/assets/stylesheets/uikit-variables.scss +819 -0
  150. data/vendor/assets/stylesheets/uikit.scss +52 -0
  151. metadata +251 -0
@@ -0,0 +1,2 @@
1
+ /*! UIkit 2.27.2 | http://www.getuikit.com | (c) 2014 YOOtheme | MIT License */
2
+ !function(t){var e;window.UIkit&&(e=t(UIkit)),"function"==typeof define&&define.amd&&define("uikit-timepicker",["uikit"],function(){return e||t(UIkit)})}(function(t){"use strict";function e(t,e){t=t||0,e=e||24;var i,o,a={"12h":[],"24h":[]};for(i=t,o="";e>i;i++)o=""+i,10>i&&(o="0"+o),a["24h"].push({value:o+":00"}),a["24h"].push({value:o+":30"}),0===i&&(o=12,a["12h"].push({value:o+":00 AM"}),a["12h"].push({value:o+":30 AM"})),i>0&&13>i&&12!==i&&(a["12h"].push({value:o+":00 AM"}),a["12h"].push({value:o+":30 AM"})),i>=12&&(o-=12,0===o&&(o=12),10>o&&(o="0"+String(o)),a["12h"].push({value:o+":00 PM"}),a["12h"].push({value:o+":30 PM"}));return a}t.component("timepicker",{defaults:{format:"24h",delay:0,start:0,end:24},boot:function(){t.$html.on("focus.timepicker.uikit","[data-uk-timepicker]",function(){var e=t.$(this);if(!e.data("timepicker")){var i=t.timepicker(e,t.Utils.options(e.attr("data-uk-timepicker")));setTimeout(function(){i.autocomplete.input.focus()},40)}})},init:function(){var i,o=this,a=e(this.options.start,this.options.end);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(t){t(a[o.options.format]||a["12h"])},this.element.is("input")?(this.element.wrap('<div class="uk-autocomplete"></div>'),i=this.element.parent()):i=this.element.addClass("uk-autocomplete"),this.autocomplete=t.autocomplete(i,this.options),this.autocomplete.dropdown.addClass("uk-dropdown-small uk-dropdown-scrollable"),this.autocomplete.on("show.uk.autocomplete",function(){var t=o.autocomplete.dropdown.find('[data-value="'+o.autocomplete.input.val()+'"]');setTimeout(function(){o.autocomplete.pick(t,!0)},10)}),this.autocomplete.input.on("focus",function(){o.autocomplete.value=Math.random(),o.autocomplete.triggercomplete()}).on("blur",t.Utils.debounce(function(){o.checkTime()},100)),this.element.data("timepicker",this)},checkTime:function(){var t,e,i,o,a="AM",u=this.autocomplete.input.val();"12h"==this.options.format?(t=u.split(" "),e=t[0].split(":"),a=t[1]):e=u.split(":"),i=parseInt(e[0],10),o=parseInt(e[1],10),isNaN(i)&&(i=0),isNaN(o)&&(o=0),"12h"==this.options.format?(i>12?i=12:0>i&&(i=12),"am"===a||"a"===a?a="AM":("pm"===a||"p"===a)&&(a="PM"),"AM"!==a&&"PM"!==a&&(a="AM")):i>=24?i=23:0>i&&(i=0),0>o?o=0:o>=60&&(o=0),this.autocomplete.input.val(this.formatTime(i,o,a)).trigger("change")},formatTime:function(t,e,i){return t=10>t?"0"+t:t,e=10>e?"0"+e:e,t+":"+e+("12h"==this.options.format?" "+i:"")}})});
@@ -0,0 +1,235 @@
1
+ /*! UIkit 2.27.2 | http://www.getuikit.com | (c) 2014 YOOtheme | MIT License */
2
+ (function(addon) {
3
+ var component;
4
+
5
+ if (window.UIkit) {
6
+ component = addon(UIkit);
7
+ }
8
+
9
+ if (typeof define == 'function' && define.amd) {
10
+ define('uikit-tooltip', ['uikit'], function(){
11
+ return component || addon(UIkit);
12
+ });
13
+ }
14
+
15
+ })(function(UI){
16
+
17
+ "use strict";
18
+
19
+ var $tooltip, // tooltip container
20
+ tooltipdelay, checkIdle;
21
+
22
+ UI.component('tooltip', {
23
+
24
+ defaults: {
25
+ offset: 5,
26
+ pos: 'top',
27
+ animation: false,
28
+ delay: 0, // in miliseconds
29
+ cls: '',
30
+ activeClass: 'uk-active',
31
+ src: function(ele) {
32
+ var title = ele.attr('title');
33
+
34
+ if (title !== undefined) {
35
+ ele.data('cached-title', title).removeAttr('title');
36
+ }
37
+
38
+ return ele.data("cached-title");
39
+ }
40
+ },
41
+
42
+ tip: '',
43
+
44
+ boot: function() {
45
+
46
+ // init code
47
+ UI.$html.on('mouseenter.tooltip.uikit focus.tooltip.uikit', '[data-uk-tooltip]', function(e) {
48
+ var ele = UI.$(this);
49
+
50
+ if (!ele.data('tooltip')) {
51
+ UI.tooltip(ele, UI.Utils.options(ele.attr('data-uk-tooltip')));
52
+ ele.trigger('mouseenter');
53
+ }
54
+ });
55
+ },
56
+
57
+ init: function() {
58
+
59
+ var $this = this;
60
+
61
+ if (!$tooltip) {
62
+ $tooltip = UI.$('<div class="uk-tooltip"></div>').appendTo("body");
63
+ }
64
+
65
+ this.on({
66
+ focus : function(e) { $this.show(); },
67
+ blur : function(e) { $this.hide(); },
68
+ mouseenter : function(e) { $this.show(); },
69
+ mouseleave : function(e) { $this.hide(); }
70
+ });
71
+ },
72
+
73
+ show: function() {
74
+
75
+ this.tip = typeof(this.options.src) === 'function' ? this.options.src(this.element) : this.options.src;
76
+
77
+ if (tooltipdelay) clearTimeout(tooltipdelay);
78
+ if (checkIdle) clearInterval(checkIdle);
79
+
80
+ if (typeof(this.tip) === 'string' ? !this.tip.length:true) return;
81
+
82
+ $tooltip.stop().css({top: -2000, visibility: 'hidden'}).removeClass(this.options.activeClass).show();
83
+ $tooltip.html('<div class="uk-tooltip-inner">' + this.tip + '</div>');
84
+
85
+ var $this = this,
86
+ pos = UI.$.extend({}, this.element.offset(), {width: this.element[0].offsetWidth, height: this.element[0].offsetHeight}),
87
+ width = $tooltip[0].offsetWidth,
88
+ height = $tooltip[0].offsetHeight,
89
+ offset = typeof(this.options.offset) === "function" ? this.options.offset.call(this.element) : this.options.offset,
90
+ position = typeof(this.options.pos) === "function" ? this.options.pos.call(this.element) : this.options.pos,
91
+ tmppos = position.split("-"),
92
+ tcss = {
93
+ display : 'none',
94
+ visibility : 'visible',
95
+ top : (pos.top + pos.height + height),
96
+ left : pos.left
97
+ };
98
+
99
+
100
+ // prevent strange position
101
+ // when tooltip is in offcanvas etc.
102
+ if (UI.$html.css('position')=='fixed' || UI.$body.css('position')=='fixed'){
103
+ var bodyoffset = UI.$('body').offset(),
104
+ htmloffset = UI.$('html').offset(),
105
+ docoffset = {top: (htmloffset.top + bodyoffset.top), left: (htmloffset.left + bodyoffset.left)};
106
+
107
+ pos.left -= docoffset.left;
108
+ pos.top -= docoffset.top;
109
+ }
110
+
111
+
112
+ if ((tmppos[0] == 'left' || tmppos[0] == 'right') && UI.langdirection == 'right') {
113
+ tmppos[0] = tmppos[0] == 'left' ? 'right' : 'left';
114
+ }
115
+
116
+ var variants = {
117
+ bottom : {top: pos.top + pos.height + offset, left: pos.left + pos.width / 2 - width / 2},
118
+ top : {top: pos.top - height - offset, left: pos.left + pos.width / 2 - width / 2},
119
+ left : {top: pos.top + pos.height / 2 - height / 2, left: pos.left - width - offset},
120
+ right : {top: pos.top + pos.height / 2 - height / 2, left: pos.left + pos.width + offset}
121
+ };
122
+
123
+ UI.$.extend(tcss, variants[tmppos[0]]);
124
+
125
+ if (tmppos.length == 2) tcss.left = (tmppos[1] == 'left') ? (pos.left) : ((pos.left + pos.width) - width);
126
+
127
+ var boundary = this.checkBoundary(tcss.left, tcss.top, width, height);
128
+
129
+ if(boundary) {
130
+
131
+ switch(boundary) {
132
+ case 'x':
133
+
134
+ if (tmppos.length == 2) {
135
+ position = tmppos[0]+"-"+(tcss.left < 0 ? 'left': 'right');
136
+ } else {
137
+ position = tcss.left < 0 ? 'right': 'left';
138
+ }
139
+
140
+ break;
141
+
142
+ case 'y':
143
+ if (tmppos.length == 2) {
144
+ position = (tcss.top < 0 ? 'bottom': 'top')+'-'+tmppos[1];
145
+ } else {
146
+ position = (tcss.top < 0 ? 'bottom': 'top');
147
+ }
148
+
149
+ break;
150
+
151
+ case 'xy':
152
+ if (tmppos.length == 2) {
153
+ position = (tcss.top < 0 ? 'bottom': 'top')+'-'+(tcss.left < 0 ? 'left': 'right');
154
+ } else {
155
+ position = tcss.left < 0 ? 'right': 'left';
156
+ }
157
+
158
+ break;
159
+
160
+ }
161
+
162
+ tmppos = position.split('-');
163
+
164
+ UI.$.extend(tcss, variants[tmppos[0]]);
165
+
166
+ if (tmppos.length == 2) tcss.left = (tmppos[1] == 'left') ? (pos.left) : ((pos.left + pos.width) - width);
167
+ }
168
+
169
+
170
+ tcss.left -= UI.$body.position().left;
171
+
172
+ tooltipdelay = setTimeout(function(){
173
+
174
+ $tooltip.css(tcss).attr('class', ['uk-tooltip', 'uk-tooltip-'+position, $this.options.cls].join(' '));
175
+
176
+ if ($this.options.animation) {
177
+ $tooltip.css({opacity: 0, display: 'block'}).addClass($this.options.activeClass).animate({opacity: 1}, parseInt($this.options.animation, 10) || 400);
178
+ } else {
179
+ $tooltip.show().addClass($this.options.activeClass);
180
+ }
181
+
182
+ tooltipdelay = false;
183
+
184
+ // close tooltip if element was removed or hidden
185
+ checkIdle = setInterval(function(){
186
+ if(!$this.element.is(':visible')) $this.hide();
187
+ }, 150);
188
+
189
+ }, parseInt(this.options.delay, 10) || 0);
190
+ },
191
+
192
+ hide: function() {
193
+
194
+ if (this.element.is('input') && this.element[0]===document.activeElement) return;
195
+
196
+ if (tooltipdelay) clearTimeout(tooltipdelay);
197
+ if (checkIdle) clearInterval(checkIdle);
198
+
199
+ $tooltip.stop();
200
+
201
+ if (this.options.animation) {
202
+
203
+ var $this = this;
204
+
205
+ $tooltip.fadeOut(parseInt(this.options.animation, 10) || 400, function(){
206
+ $tooltip.removeClass($this.options.activeClass)
207
+ });
208
+
209
+ } else {
210
+ $tooltip.hide().removeClass(this.options.activeClass);
211
+ }
212
+ },
213
+
214
+ content: function() {
215
+ return this.tip;
216
+ },
217
+
218
+ checkBoundary: function(left, top, width, height) {
219
+
220
+ var axis = "";
221
+
222
+ if(left < 0 || ((left - UI.$win.scrollLeft())+width) > window.innerWidth) {
223
+ axis += "x";
224
+ }
225
+
226
+ if(top < 0 || ((top - UI.$win.scrollTop())+height) > window.innerHeight) {
227
+ axis += "y";
228
+ }
229
+
230
+ return axis;
231
+ }
232
+ });
233
+
234
+ return UI.tooltip;
235
+ });
@@ -0,0 +1,2 @@
1
+ /*! UIkit 2.27.2 | http://www.getuikit.com | (c) 2014 YOOtheme | MIT License */
2
+ !function(t){var i;window.UIkit&&(i=t(UIkit)),"function"==typeof define&&define.amd&&define("uikit-tooltip",["uikit"],function(){return i||t(UIkit)})}(function(t){"use strict";var i,o,e;return t.component("tooltip",{defaults:{offset:5,pos:"top",animation:!1,delay:0,cls:"",activeClass:"uk-active",src:function(t){var i=t.attr("title");return void 0!==i&&t.data("cached-title",i).removeAttr("title"),t.data("cached-title")}},tip:"",boot:function(){t.$html.on("mouseenter.tooltip.uikit focus.tooltip.uikit","[data-uk-tooltip]",function(){var i=t.$(this);i.data("tooltip")||(t.tooltip(i,t.Utils.options(i.attr("data-uk-tooltip"))),i.trigger("mouseenter"))})},init:function(){var o=this;i||(i=t.$('<div class="uk-tooltip"></div>').appendTo("body")),this.on({focus:function(){o.show()},blur:function(){o.hide()},mouseenter:function(){o.show()},mouseleave:function(){o.hide()}})},show:function(){if(this.tip="function"==typeof this.options.src?this.options.src(this.element):this.options.src,o&&clearTimeout(o),e&&clearInterval(e),"string"==typeof this.tip?this.tip.length:0){i.stop().css({top:-2e3,visibility:"hidden"}).removeClass(this.options.activeClass).show(),i.html('<div class="uk-tooltip-inner">'+this.tip+"</div>");var s=this,n=t.$.extend({},this.element.offset(),{width:this.element[0].offsetWidth,height:this.element[0].offsetHeight}),l=i[0].offsetWidth,f=i[0].offsetHeight,a="function"==typeof this.options.offset?this.options.offset.call(this.element):this.options.offset,p="function"==typeof this.options.pos?this.options.pos.call(this.element):this.options.pos,h=p.split("-"),c={display:"none",visibility:"visible",top:n.top+n.height+f,left:n.left};if("fixed"==t.$html.css("position")||"fixed"==t.$body.css("position")){var r=t.$("body").offset(),d=t.$("html").offset(),u={top:d.top+r.top,left:d.left+r.left};n.left-=u.left,n.top-=u.top}"left"!=h[0]&&"right"!=h[0]||"right"!=t.langdirection||(h[0]="left"==h[0]?"right":"left");var m={bottom:{top:n.top+n.height+a,left:n.left+n.width/2-l/2},top:{top:n.top-f-a,left:n.left+n.width/2-l/2},left:{top:n.top+n.height/2-f/2,left:n.left-l-a},right:{top:n.top+n.height/2-f/2,left:n.left+n.width+a}};t.$.extend(c,m[h[0]]),2==h.length&&(c.left="left"==h[1]?n.left:n.left+n.width-l);var v=this.checkBoundary(c.left,c.top,l,f);if(v){switch(v){case"x":p=2==h.length?h[0]+"-"+(c.left<0?"left":"right"):c.left<0?"right":"left";break;case"y":p=2==h.length?(c.top<0?"bottom":"top")+"-"+h[1]:c.top<0?"bottom":"top";break;case"xy":p=2==h.length?(c.top<0?"bottom":"top")+"-"+(c.left<0?"left":"right"):c.left<0?"right":"left"}h=p.split("-"),t.$.extend(c,m[h[0]]),2==h.length&&(c.left="left"==h[1]?n.left:n.left+n.width-l)}c.left-=t.$body.position().left,o=setTimeout(function(){i.css(c).attr("class",["uk-tooltip","uk-tooltip-"+p,s.options.cls].join(" ")),s.options.animation?i.css({opacity:0,display:"block"}).addClass(s.options.activeClass).animate({opacity:1},parseInt(s.options.animation,10)||400):i.show().addClass(s.options.activeClass),o=!1,e=setInterval(function(){s.element.is(":visible")||s.hide()},150)},parseInt(this.options.delay,10)||0)}},hide:function(){if(!this.element.is("input")||this.element[0]!==document.activeElement)if(o&&clearTimeout(o),e&&clearInterval(e),i.stop(),this.options.animation){var t=this;i.fadeOut(parseInt(this.options.animation,10)||400,function(){i.removeClass(t.options.activeClass)})}else i.hide().removeClass(this.options.activeClass)},content:function(){return this.tip},checkBoundary:function(i,o,e,s){var n="";return(0>i||i-t.$win.scrollLeft()+e>window.innerWidth)&&(n+="x"),(0>o||o-t.$win.scrollTop()+s>window.innerHeight)&&(n+="y"),n}}),t.tooltip});
@@ -0,0 +1,262 @@
1
+ /*! UIkit 2.27.2 | http://www.getuikit.com | (c) 2014 YOOtheme | MIT License */
2
+ (function(addon) {
3
+
4
+ var component;
5
+
6
+ if (window.UIkit) {
7
+ component = addon(UIkit);
8
+ }
9
+
10
+ if (typeof define == 'function' && define.amd) {
11
+ define('uikit-upload', ['uikit'], function(){
12
+ return component || addon(UIkit);
13
+ });
14
+ }
15
+
16
+ })(function(UI){
17
+
18
+ "use strict";
19
+
20
+ UI.component('uploadSelect', {
21
+
22
+ init: function() {
23
+
24
+ var $this = this;
25
+
26
+ this.on('change', function() {
27
+ xhrupload($this.element[0].files, $this.options);
28
+ var twin = $this.element.clone(true).data('uploadSelect', $this);
29
+ $this.element.replaceWith(twin);
30
+ $this.element = twin;
31
+ });
32
+ }
33
+ });
34
+
35
+ UI.component('uploadDrop', {
36
+
37
+ defaults: {
38
+ 'dragoverClass': 'uk-dragover'
39
+ },
40
+
41
+ init: function() {
42
+
43
+ var $this = this, hasdragCls = false;
44
+
45
+ this.on('drop', function(e){
46
+
47
+ if (e.originalEvent.dataTransfer && e.originalEvent.dataTransfer.files) {
48
+
49
+ e.stopPropagation();
50
+ e.preventDefault();
51
+
52
+ $this.element.removeClass($this.options.dragoverClass);
53
+ $this.element.trigger('dropped.uk.upload', [e.originalEvent.dataTransfer.files]);
54
+
55
+ xhrupload(e.originalEvent.dataTransfer.files, $this.options);
56
+ }
57
+
58
+ }).on('dragenter', function(e){
59
+ e.stopPropagation();
60
+ e.preventDefault();
61
+ }).on('dragover', function(e){
62
+ e.stopPropagation();
63
+ e.preventDefault();
64
+
65
+ if (!hasdragCls) {
66
+ $this.element.addClass($this.options.dragoverClass);
67
+ hasdragCls = true;
68
+ }
69
+ }).on('dragleave', function(e){
70
+ e.stopPropagation();
71
+ e.preventDefault();
72
+ $this.element.removeClass($this.options.dragoverClass);
73
+ hasdragCls = false;
74
+ });
75
+ }
76
+ });
77
+
78
+
79
+ UI.support.ajaxupload = (function() {
80
+
81
+ function supportFileAPI() {
82
+ var fi = document.createElement('INPUT'); fi.type = 'file'; return 'files' in fi;
83
+ }
84
+
85
+ function supportAjaxUploadProgressEvents() {
86
+ var xhr = new XMLHttpRequest(); return !! (xhr && ('upload' in xhr) && ('onprogress' in xhr.upload));
87
+ }
88
+
89
+ function supportFormData() {
90
+ return !! window.FormData;
91
+ }
92
+
93
+ return supportFileAPI() && supportAjaxUploadProgressEvents() && supportFormData();
94
+ })();
95
+
96
+
97
+ function xhrupload(files, settings) {
98
+
99
+ if (!UI.support.ajaxupload){
100
+ return this;
101
+ }
102
+
103
+ settings = UI.$.extend({}, xhrupload.defaults, settings);
104
+
105
+ if (!files.length){
106
+ return;
107
+ }
108
+
109
+ if (settings.allow !== '*.*') {
110
+
111
+ for(var i=0,file;file=files[i];i++) {
112
+
113
+ if(!matchName(settings.allow, file.name)) {
114
+
115
+ if(typeof(settings.notallowed) == 'string') {
116
+ alert(settings.notallowed);
117
+ } else {
118
+ settings.notallowed(file, settings);
119
+ }
120
+ return;
121
+ }
122
+ }
123
+ }
124
+
125
+ var complete = settings.complete;
126
+
127
+ if (settings.single){
128
+
129
+ var count = files.length,
130
+ uploaded = 0,
131
+ allow = true;
132
+
133
+ settings.beforeAll(files);
134
+
135
+ settings.complete = function(response, xhr){
136
+
137
+ uploaded = uploaded + 1;
138
+
139
+ complete(response, xhr);
140
+
141
+ if (settings.filelimit && uploaded >= settings.filelimit){
142
+ allow = false;
143
+ }
144
+
145
+ if (allow && uploaded<count){
146
+ upload([files[uploaded]], settings);
147
+ } else {
148
+ settings.allcomplete(response, xhr);
149
+ }
150
+ };
151
+
152
+ upload([files[0]], settings);
153
+
154
+ } else {
155
+
156
+ settings.complete = function(response, xhr){
157
+ complete(response, xhr);
158
+ settings.allcomplete(response, xhr);
159
+ };
160
+
161
+ upload(files, settings);
162
+ }
163
+
164
+ function upload(files, settings){
165
+
166
+ // upload all at once
167
+ var formData = new FormData(), xhr = new XMLHttpRequest();
168
+
169
+ if (settings.before(settings, files)===false) return;
170
+
171
+ for (var i = 0, f; f = files[i]; i++) { formData.append(settings.param, f); }
172
+ for (var p in settings.params) { formData.append(p, settings.params[p]); }
173
+
174
+ // Add any event handlers here...
175
+ xhr.upload.addEventListener('progress', function(e){
176
+ var percent = (e.loaded / e.total)*100;
177
+ settings.progress(percent, e);
178
+ }, false);
179
+
180
+ xhr.addEventListener('loadstart', function(e){ settings.loadstart(e); }, false);
181
+ xhr.addEventListener('load', function(e){ settings.load(e); }, false);
182
+ xhr.addEventListener('loadend', function(e){ settings.loadend(e); }, false);
183
+ xhr.addEventListener('error', function(e){ settings.error(e); }, false);
184
+ xhr.addEventListener('abort', function(e){ settings.abort(e); }, false);
185
+
186
+ xhr.open(settings.method, settings.action, true);
187
+
188
+ if (settings.type=='json') {
189
+ xhr.setRequestHeader('Accept', 'application/json');
190
+ }
191
+
192
+ for (var h in settings.headers) {
193
+ xhr.setRequestHeader(h, settings.headers[h]);
194
+ }
195
+
196
+ xhr.onreadystatechange = function() {
197
+
198
+ settings.readystatechange(xhr);
199
+
200
+ if (xhr.readyState==4){
201
+
202
+ var response = xhr.responseText;
203
+
204
+ if (settings.type=='json') {
205
+ try {
206
+ response = UI.$.parseJSON(response);
207
+ } catch(e) {
208
+ response = false;
209
+ }
210
+ }
211
+
212
+ settings.complete(response, xhr);
213
+ }
214
+ };
215
+ settings.beforeSend(xhr);
216
+ xhr.send(formData);
217
+ }
218
+ }
219
+
220
+ xhrupload.defaults = {
221
+ action: '',
222
+ single: true,
223
+ method: 'POST',
224
+ param : 'files[]',
225
+ params: {},
226
+ allow : '*.*',
227
+ type : 'text',
228
+ filelimit: false,
229
+ headers: {},
230
+
231
+ // events
232
+ before : function(o){},
233
+ beforeSend : function(xhr){},
234
+ beforeAll : function(){},
235
+ loadstart : function(){},
236
+ load : function(){},
237
+ loadend : function(){},
238
+ error : function(){},
239
+ abort : function(){},
240
+ progress : function(){},
241
+ complete : function(){},
242
+ allcomplete : function(){},
243
+ readystatechange: function(){},
244
+ notallowed : function(file, settings){ alert('Only the following file types are allowed: '+settings.allow); }
245
+ };
246
+
247
+ function matchName(pattern, path) {
248
+
249
+ var parsedPattern = '^' + pattern.replace(/\//g, '\\/').
250
+ replace(/\*\*/g, '(\\/[^\\/]+)*').
251
+ replace(/\*/g, '[^\\/]+').
252
+ replace(/((?!\\))\?/g, '$1.') + '$';
253
+
254
+ parsedPattern = '^' + parsedPattern + '$';
255
+
256
+ return (path.match(new RegExp(parsedPattern, 'i')) !== null);
257
+ }
258
+
259
+ UI.Utils.xhrupload = xhrupload;
260
+
261
+ return xhrupload;
262
+ });