uikit-rails 0.0.2 → 1.0.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/.gitignore +9 -3
- data/Gemfile +2 -1
- data/LICENSE.txt +21 -0
- data/README.md +65 -0
- data/Rakefile +0 -1
- data/assets/fonts/FontAwesome.otf +0 -0
- data/assets/fonts/fontawesome-webfont.ttf +0 -0
- data/assets/fonts/fontawesome-webfont.woff +0 -0
- data/assets/fonts/fontawesome-webfont.woff2 +0 -0
- data/assets/javascripts/components/accordion.js +174 -0
- data/assets/javascripts/components/accordion.min.js +2 -0
- data/assets/javascripts/components/autocomplete.js +334 -0
- data/assets/javascripts/components/autocomplete.min.js +2 -0
- data/assets/javascripts/components/datepicker.js +3166 -0
- data/assets/javascripts/components/datepicker.min.js +3 -0
- data/assets/javascripts/components/form-password.js +67 -0
- data/assets/javascripts/components/form-password.min.js +2 -0
- data/assets/javascripts/components/form-select.js +70 -0
- data/assets/javascripts/components/form-select.min.js +2 -0
- data/assets/javascripts/components/grid.js +527 -0
- data/assets/javascripts/components/grid.min.js +2 -0
- data/assets/javascripts/components/htmleditor.js +623 -0
- data/assets/javascripts/components/htmleditor.min.js +2 -0
- data/assets/javascripts/components/lightbox.js +555 -0
- data/assets/javascripts/components/lightbox.min.js +2 -0
- data/assets/javascripts/components/nestable.js +638 -0
- data/assets/javascripts/components/nestable.min.js +2 -0
- data/assets/javascripts/components/notify.js +189 -0
- data/assets/javascripts/components/notify.min.js +2 -0
- data/assets/javascripts/components/pagination.js +147 -0
- data/assets/javascripts/components/pagination.min.js +2 -0
- data/assets/javascripts/components/parallax.js +435 -0
- data/assets/javascripts/components/parallax.min.js +2 -0
- data/assets/javascripts/components/search.js +92 -0
- data/assets/javascripts/components/search.min.js +2 -0
- data/assets/javascripts/components/slider.js +531 -0
- data/assets/javascripts/components/slider.min.js +2 -0
- data/assets/javascripts/components/slideset.js +506 -0
- data/assets/javascripts/components/slideset.min.js +2 -0
- data/assets/javascripts/components/slideshow-fx.js +375 -0
- data/assets/javascripts/components/slideshow-fx.min.js +2 -0
- data/assets/javascripts/components/slideshow.js +562 -0
- data/assets/javascripts/components/slideshow.min.js +2 -0
- data/assets/javascripts/components/sortable.js +688 -0
- data/assets/javascripts/components/sortable.min.js +2 -0
- data/assets/javascripts/components/sticky.js +359 -0
- data/assets/javascripts/components/sticky.min.js +2 -0
- data/assets/javascripts/components/timepicker.js +192 -0
- data/assets/javascripts/components/timepicker.min.js +2 -0
- data/assets/javascripts/components/tooltip.js +234 -0
- data/assets/javascripts/components/tooltip.min.js +2 -0
- data/assets/javascripts/components/upload.js +260 -0
- data/assets/javascripts/components/upload.min.js +2 -0
- data/assets/javascripts/core/alert.js +66 -0
- data/assets/javascripts/core/alert.min.js +2 -0
- data/assets/javascripts/core/button.js +157 -0
- data/assets/javascripts/core/button.min.js +2 -0
- data/assets/javascripts/core/core.js +730 -0
- data/assets/javascripts/core/core.min.js +2 -0
- data/assets/javascripts/core/cover.js +95 -0
- data/assets/javascripts/core/cover.min.js +2 -0
- data/assets/javascripts/core/dropdown.js +514 -0
- data/assets/javascripts/core/dropdown.min.js +2 -0
- data/assets/javascripts/core/grid.js +114 -0
- data/assets/javascripts/core/grid.min.js +2 -0
- data/assets/javascripts/core/modal.js +384 -0
- data/assets/javascripts/core/modal.min.js +2 -0
- data/assets/javascripts/core/nav.js +136 -0
- data/assets/javascripts/core/nav.min.js +2 -0
- data/assets/javascripts/core/offcanvas.js +180 -0
- data/assets/javascripts/core/offcanvas.min.js +2 -0
- data/assets/javascripts/core/scrollspy.js +208 -0
- data/assets/javascripts/core/scrollspy.min.js +2 -0
- data/assets/javascripts/core/smooth-scroll.js +62 -0
- data/assets/javascripts/core/smooth-scroll.min.js +2 -0
- data/assets/javascripts/core/switcher.js +309 -0
- data/assets/javascripts/core/switcher.min.js +2 -0
- data/assets/javascripts/core/tab.js +167 -0
- data/assets/javascripts/core/tab.min.js +2 -0
- data/assets/javascripts/core/toggle.js +120 -0
- data/assets/javascripts/core/toggle.min.js +2 -0
- data/assets/javascripts/core/touch.js +175 -0
- data/assets/javascripts/core/touch.min.js +2 -0
- data/assets/javascripts/core/utility.js +289 -0
- data/assets/javascripts/core/utility.min.js +2 -0
- data/assets/javascripts/uikit-components.js +23 -0
- data/assets/javascripts/uikit.js +3706 -0
- data/assets/javascripts/uikit.min.js +3 -0
- data/assets/stylesheets/components/accordion.scss +94 -0
- data/assets/stylesheets/components/autocomplete.scss +102 -0
- data/assets/stylesheets/components/datepicker.scss +197 -0
- data/assets/stylesheets/components/dotnav.scss +212 -0
- data/assets/stylesheets/components/form-advanced.scss +128 -0
- data/assets/stylesheets/components/form-file.scss +63 -0
- data/assets/stylesheets/components/form-password.scss +74 -0
- data/assets/stylesheets/components/form-select.scss +66 -0
- data/assets/stylesheets/components/htmleditor.scss +269 -0
- data/assets/stylesheets/components/nestable.scss +229 -0
- data/assets/stylesheets/components/notify.scss +190 -0
- data/assets/stylesheets/components/placeholder.scss +66 -0
- data/assets/stylesheets/components/progress.scss +173 -0
- data/assets/stylesheets/components/search.scss +309 -0
- data/assets/stylesheets/components/slidenav.scss +183 -0
- data/assets/stylesheets/components/slider.scss +131 -0
- data/assets/stylesheets/components/slideshow.scss +208 -0
- data/assets/stylesheets/components/sortable.scss +122 -0
- data/assets/stylesheets/components/sticky.scss +64 -0
- data/assets/stylesheets/components/tooltip.scss +177 -0
- data/assets/stylesheets/components/upload.scss +34 -0
- data/assets/stylesheets/core/alert.scss +141 -0
- data/assets/stylesheets/core/animation.scss +599 -0
- data/assets/stylesheets/core/article.scss +139 -0
- data/assets/stylesheets/core/badge.scss +110 -0
- data/assets/stylesheets/core/base-noconflict.scss +397 -0
- data/assets/stylesheets/core/base.scss +541 -0
- data/assets/stylesheets/core/block.scss +153 -0
- data/assets/stylesheets/core/breadcrumb.scss +86 -0
- data/assets/stylesheets/core/button.scss +406 -0
- data/assets/stylesheets/core/close.scss +132 -0
- data/assets/stylesheets/core/column.scss +209 -0
- data/assets/stylesheets/core/comment.scss +172 -0
- data/assets/stylesheets/core/contrast.scss +493 -0
- data/assets/stylesheets/core/cover.scss +70 -0
- data/assets/stylesheets/core/description-list.scss +71 -0
- data/assets/stylesheets/core/dropdown.scss +280 -0
- data/assets/stylesheets/core/flex.scss +320 -0
- data/assets/stylesheets/core/form.scss +627 -0
- data/assets/stylesheets/core/grid.scss +688 -0
- data/assets/stylesheets/core/icon.scss +897 -0
- data/assets/stylesheets/core/list.scss +102 -0
- data/assets/stylesheets/core/modal.scss +341 -0
- data/assets/stylesheets/core/nav.scss +468 -0
- data/assets/stylesheets/core/navbar.scss +325 -0
- data/assets/stylesheets/core/offcanvas.scss +168 -0
- data/assets/stylesheets/core/overlay.scss +534 -0
- data/assets/stylesheets/core/pagination.scss +197 -0
- data/assets/stylesheets/core/panel.scss +332 -0
- data/assets/stylesheets/core/print.scss +59 -0
- data/assets/stylesheets/core/subnav.scss +213 -0
- data/assets/stylesheets/core/switcher.scss +38 -0
- data/assets/stylesheets/core/tab.scss +368 -0
- data/assets/stylesheets/core/table.scss +147 -0
- data/assets/stylesheets/core/text.scss +128 -0
- data/assets/stylesheets/core/thumbnail.scss +122 -0
- data/assets/stylesheets/core/thumbnav.scss +122 -0
- data/assets/stylesheets/core/utility.scss +606 -0
- data/assets/stylesheets/core/variables.scss +23 -0
- data/assets/stylesheets/uikit-components.scss +22 -0
- data/assets/stylesheets/uikit-mixins.scss +327 -0
- data/assets/stylesheets/uikit-variables.scss +817 -0
- data/assets/stylesheets/uikit.scss +56 -0
- data/lib/uikit-rails.rb +2 -2
- data/lib/uikit-rails/engine.rb +11 -1
- data/lib/uikit-rails/version.rb +1 -3
- data/uikit-rails.gemspec +15 -16
- metadata +169 -44
- data/README.rb +0 -1
- data/vendor/assets/javascripts/ui.card.js +0 -115
- data/vendor/assets/javascripts/ui.color-picker.js +0 -351
- data/vendor/assets/javascripts/ui.confirmation.js +0 -133
- data/vendor/assets/javascripts/ui.dialog.js +0 -252
- data/vendor/assets/javascripts/ui.emitter.js +0 -99
- data/vendor/assets/javascripts/ui.js +0 -1641
- data/vendor/assets/javascripts/ui.menu.js +0 -238
- data/vendor/assets/javascripts/ui.notification.js +0 -240
- data/vendor/assets/javascripts/ui.overlay.js +0 -79
- data/vendor/assets/javascripts/ui.split-button.js +0 -108
- data/vendor/assets/stylesheets/ui.card.css +0 -55
- data/vendor/assets/stylesheets/ui.color-picker.css +0 -6
- data/vendor/assets/stylesheets/ui.confirmation.css +0 -7
- data/vendor/assets/stylesheets/ui.css +0 -337
- data/vendor/assets/stylesheets/ui.dialog.css +0 -92
- data/vendor/assets/stylesheets/ui.menu.css +0 -32
- data/vendor/assets/stylesheets/ui.notification.css +0 -107
- data/vendor/assets/stylesheets/ui.overlay.css +0 -16
- data/vendor/assets/stylesheets/ui.split-button.css +0 -27
@@ -0,0 +1,2 @@
|
|
1
|
+
/*! UIkit 2.24.2 | http://www.getuikit.com | (c) 2014 YOOtheme | MIT License */
|
2
|
+
!function(e){var t;window.UIkit&&(t=e(UIkit)),"function"==typeof define&&define.amd&&define("uikit-upload",["uikit"],function(){return t||e(UIkit)})}(function(e){"use strict";function t(o,a){function r(t,n){var o=new FormData,a=new XMLHttpRequest;if(n.before(n,t)!==!1){for(var r,i=0;r=t[i];i++)o.append(n.param,r);for(var l in n.params)o.append(l,n.params[l]);a.upload.addEventListener("progress",function(e){var t=e.loaded/e.total*100;n.progress(t,e)},!1),a.addEventListener("loadstart",function(e){n.loadstart(e)},!1),a.addEventListener("load",function(e){n.load(e)},!1),a.addEventListener("loadend",function(e){n.loadend(e)},!1),a.addEventListener("error",function(e){n.error(e)},!1),a.addEventListener("abort",function(e){n.abort(e)},!1),a.open(n.method,n.action,!0),"json"==n.type&&a.setRequestHeader("Accept","application/json"),a.onreadystatechange=function(){if(n.readystatechange(a),4==a.readyState){var t=a.responseText;if("json"==n.type)try{t=e.$.parseJSON(t)}catch(o){t=!1}n.complete(t,a)}},n.beforeSend(a),a.send(o)}}if(!e.support.ajaxupload)return this;if(a=e.$.extend({},t.defaults,a),o.length){if("*.*"!==a.allow)for(var i,l=0;i=o[l];l++)if(!n(a.allow,i.name))return"string"==typeof a.notallowed?alert(a.notallowed):a.notallowed(i,a),void 0;var s=a.complete;if(a.single){var d=o.length,f=0,p=!0;a.beforeAll(o),a.complete=function(e,t){f+=1,s(e,t),a.filelimit&&f>=a.filelimit&&(p=!1),p&&d>f?r([o[f]],a):a.allcomplete(e,t)},r([o[0]],a)}else a.complete=function(e,t){s(e,t),a.allcomplete(e,t)},r(o,a)}}function n(e,t){var n="^"+e.replace(/\//g,"\\/").replace(/\*\*/g,"(\\/[^\\/]+)*").replace(/\*/g,"[^\\/]+").replace(/((?!\\))\?/g,"$1.")+"$";return n="^"+n+"$",null!==t.match(new RegExp(n,"i"))}return e.component("uploadSelect",{init:function(){var e=this;this.on("change",function(){t(e.element[0].files,e.options);var n=e.element.clone(!0).data("uploadSelect",e);e.element.replaceWith(n),e.element=n})}}),e.component("uploadDrop",{defaults:{dragoverClass:"uk-dragover"},init:function(){var e=this,n=!1;this.on("drop",function(n){n.dataTransfer&&n.dataTransfer.files&&(n.stopPropagation(),n.preventDefault(),e.element.removeClass(e.options.dragoverClass),e.element.trigger("dropped.uk.upload",[n.dataTransfer.files]),t(n.dataTransfer.files,e.options))}).on("dragenter",function(e){e.stopPropagation(),e.preventDefault()}).on("dragover",function(t){t.stopPropagation(),t.preventDefault(),n||(e.element.addClass(e.options.dragoverClass),n=!0)}).on("dragleave",function(t){t.stopPropagation(),t.preventDefault(),e.element.removeClass(e.options.dragoverClass),n=!1})}}),e.support.ajaxupload=function(){function e(){var e=document.createElement("INPUT");return e.type="file","files"in e}function t(){var e=new XMLHttpRequest;return!!(e&&"upload"in e&&"onprogress"in e.upload)}function n(){return!!window.FormData}return e()&&t()&&n()}(),e.support.ajaxupload&&e.$.event.props.push("dataTransfer"),t.defaults={action:"",single:!0,method:"POST",param:"files[]",params:{},allow:"*.*",type:"text",filelimit:!1,before:function(){},beforeSend:function(){},beforeAll:function(){},loadstart:function(){},load:function(){},loadend:function(){},error:function(){},abort:function(){},progress:function(){},complete:function(){},allcomplete:function(){},readystatechange:function(){},notallowed:function(e,t){alert("Only the following file types are allowed: "+t.allow)}},e.Utils.xhrupload=t,t});
|
@@ -0,0 +1,66 @@
|
|
1
|
+
/*! UIkit 2.24.2 | http://www.getuikit.com | (c) 2014 YOOtheme | MIT License */
|
2
|
+
(function(UI) {
|
3
|
+
|
4
|
+
"use strict";
|
5
|
+
|
6
|
+
UI.component('alert', {
|
7
|
+
|
8
|
+
defaults: {
|
9
|
+
"fade": true,
|
10
|
+
"duration": 200,
|
11
|
+
"trigger": ".uk-alert-close"
|
12
|
+
},
|
13
|
+
|
14
|
+
boot: function() {
|
15
|
+
|
16
|
+
// init code
|
17
|
+
UI.$html.on("click.alert.uikit", "[data-uk-alert]", function(e) {
|
18
|
+
|
19
|
+
var ele = UI.$(this);
|
20
|
+
|
21
|
+
if (!ele.data("alert")) {
|
22
|
+
|
23
|
+
var alert = UI.alert(ele, UI.Utils.options(ele.attr("data-uk-alert")));
|
24
|
+
|
25
|
+
if (UI.$(e.target).is(alert.options.trigger)) {
|
26
|
+
e.preventDefault();
|
27
|
+
alert.close();
|
28
|
+
}
|
29
|
+
}
|
30
|
+
});
|
31
|
+
},
|
32
|
+
|
33
|
+
init: function() {
|
34
|
+
|
35
|
+
var $this = this;
|
36
|
+
|
37
|
+
this.on("click", this.options.trigger, function(e) {
|
38
|
+
e.preventDefault();
|
39
|
+
$this.close();
|
40
|
+
});
|
41
|
+
},
|
42
|
+
|
43
|
+
close: function() {
|
44
|
+
|
45
|
+
var element = this.trigger("close.uk.alert"),
|
46
|
+
removeElement = function () {
|
47
|
+
this.trigger("closed.uk.alert").remove();
|
48
|
+
}.bind(this);
|
49
|
+
|
50
|
+
if (this.options.fade) {
|
51
|
+
element.css("overflow", "hidden").css("max-height", element.height()).animate({
|
52
|
+
"height" : 0,
|
53
|
+
"opacity" : 0,
|
54
|
+
"padding-top" : 0,
|
55
|
+
"padding-bottom" : 0,
|
56
|
+
"margin-top" : 0,
|
57
|
+
"margin-bottom" : 0
|
58
|
+
}, this.options.duration, removeElement);
|
59
|
+
} else {
|
60
|
+
removeElement();
|
61
|
+
}
|
62
|
+
}
|
63
|
+
|
64
|
+
});
|
65
|
+
|
66
|
+
})(UIkit);
|
@@ -0,0 +1,2 @@
|
|
1
|
+
/*! UIkit 2.24.2 | http://www.getuikit.com | (c) 2014 YOOtheme | MIT License */
|
2
|
+
!function(t){"use strict";t.component("alert",{defaults:{fade:!0,duration:200,trigger:".uk-alert-close"},boot:function(){t.$html.on("click.alert.uikit","[data-uk-alert]",function(i){var o=t.$(this);if(!o.data("alert")){var e=t.alert(o,t.Utils.options(o.attr("data-uk-alert")));t.$(i.target).is(e.options.trigger)&&(i.preventDefault(),e.close())}})},init:function(){var t=this;this.on("click",this.options.trigger,function(i){i.preventDefault(),t.close()})},close:function(){var t=this.trigger("close.uk.alert"),i=function(){this.trigger("closed.uk.alert").remove()}.bind(this);this.options.fade?t.css("overflow","hidden").css("max-height",t.height()).animate({height:0,opacity:0,"padding-top":0,"padding-bottom":0,"margin-top":0,"margin-bottom":0},this.options.duration,i):i()}})}(UIkit);
|
@@ -0,0 +1,157 @@
|
|
1
|
+
/*! UIkit 2.24.2 | http://www.getuikit.com | (c) 2014 YOOtheme | MIT License */
|
2
|
+
(function(UI) {
|
3
|
+
|
4
|
+
"use strict";
|
5
|
+
|
6
|
+
UI.component('buttonRadio', {
|
7
|
+
|
8
|
+
defaults: {
|
9
|
+
"activeClass": 'uk-active',
|
10
|
+
"target": ".uk-button"
|
11
|
+
},
|
12
|
+
|
13
|
+
boot: function() {
|
14
|
+
|
15
|
+
// init code
|
16
|
+
UI.$html.on("click.buttonradio.uikit", "[data-uk-button-radio]", function(e) {
|
17
|
+
|
18
|
+
var ele = UI.$(this);
|
19
|
+
|
20
|
+
if (!ele.data("buttonRadio")) {
|
21
|
+
|
22
|
+
var obj = UI.buttonRadio(ele, UI.Utils.options(ele.attr("data-uk-button-radio"))),
|
23
|
+
target = UI.$(e.target);
|
24
|
+
|
25
|
+
if (target.is(obj.options.target)) {
|
26
|
+
target.trigger("click");
|
27
|
+
}
|
28
|
+
}
|
29
|
+
});
|
30
|
+
},
|
31
|
+
|
32
|
+
init: function() {
|
33
|
+
|
34
|
+
var $this = this;
|
35
|
+
|
36
|
+
// Init ARIA
|
37
|
+
this.find($this.options.target).attr('aria-checked', 'false').filter('.' + $this.options.activeClass).attr('aria-checked', 'true');
|
38
|
+
|
39
|
+
this.on("click", this.options.target, function(e) {
|
40
|
+
|
41
|
+
var ele = UI.$(this);
|
42
|
+
|
43
|
+
if (ele.is('a[href="#"]')) e.preventDefault();
|
44
|
+
|
45
|
+
$this.find($this.options.target).not(ele).removeClass($this.options.activeClass).blur();
|
46
|
+
ele.addClass($this.options.activeClass);
|
47
|
+
|
48
|
+
// Update ARIA
|
49
|
+
$this.find($this.options.target).not(ele).attr('aria-checked', 'false');
|
50
|
+
ele.attr('aria-checked', 'true');
|
51
|
+
|
52
|
+
$this.trigger("change.uk.button", [ele]);
|
53
|
+
});
|
54
|
+
|
55
|
+
},
|
56
|
+
|
57
|
+
getSelected: function() {
|
58
|
+
return this.find('.' + this.options.activeClass);
|
59
|
+
}
|
60
|
+
});
|
61
|
+
|
62
|
+
UI.component('buttonCheckbox', {
|
63
|
+
|
64
|
+
defaults: {
|
65
|
+
"activeClass": 'uk-active',
|
66
|
+
"target": ".uk-button"
|
67
|
+
},
|
68
|
+
|
69
|
+
boot: function() {
|
70
|
+
|
71
|
+
UI.$html.on("click.buttoncheckbox.uikit", "[data-uk-button-checkbox]", function(e) {
|
72
|
+
var ele = UI.$(this);
|
73
|
+
|
74
|
+
if (!ele.data("buttonCheckbox")) {
|
75
|
+
|
76
|
+
var obj = UI.buttonCheckbox(ele, UI.Utils.options(ele.attr("data-uk-button-checkbox"))),
|
77
|
+
target = UI.$(e.target);
|
78
|
+
|
79
|
+
if (target.is(obj.options.target)) {
|
80
|
+
target.trigger("click");
|
81
|
+
}
|
82
|
+
}
|
83
|
+
});
|
84
|
+
},
|
85
|
+
|
86
|
+
init: function() {
|
87
|
+
|
88
|
+
var $this = this;
|
89
|
+
|
90
|
+
// Init ARIA
|
91
|
+
this.find($this.options.target).attr('aria-checked', 'false').filter('.' + $this.options.activeClass).attr('aria-checked', 'true');
|
92
|
+
|
93
|
+
this.on("click", this.options.target, function(e) {
|
94
|
+
var ele = UI.$(this);
|
95
|
+
|
96
|
+
if (ele.is('a[href="#"]')) e.preventDefault();
|
97
|
+
|
98
|
+
ele.toggleClass($this.options.activeClass).blur();
|
99
|
+
|
100
|
+
// Update ARIA
|
101
|
+
ele.attr('aria-checked', ele.hasClass($this.options.activeClass));
|
102
|
+
|
103
|
+
$this.trigger("change.uk.button", [ele]);
|
104
|
+
});
|
105
|
+
|
106
|
+
},
|
107
|
+
|
108
|
+
getSelected: function() {
|
109
|
+
return this.find('.' + this.options.activeClass);
|
110
|
+
}
|
111
|
+
});
|
112
|
+
|
113
|
+
|
114
|
+
UI.component('button', {
|
115
|
+
|
116
|
+
defaults: {},
|
117
|
+
|
118
|
+
boot: function() {
|
119
|
+
|
120
|
+
UI.$html.on("click.button.uikit", "[data-uk-button]", function(e) {
|
121
|
+
var ele = UI.$(this);
|
122
|
+
|
123
|
+
if (!ele.data("button")) {
|
124
|
+
|
125
|
+
var obj = UI.button(ele, UI.Utils.options(ele.attr("data-uk-button")));
|
126
|
+
ele.trigger("click");
|
127
|
+
}
|
128
|
+
});
|
129
|
+
},
|
130
|
+
|
131
|
+
init: function() {
|
132
|
+
|
133
|
+
var $this = this;
|
134
|
+
|
135
|
+
// Init ARIA
|
136
|
+
this.element.attr('aria-pressed', this.element.hasClass("uk-active"));
|
137
|
+
|
138
|
+
this.on("click", function(e) {
|
139
|
+
|
140
|
+
if ($this.element.is('a[href="#"]')) e.preventDefault();
|
141
|
+
|
142
|
+
$this.toggle();
|
143
|
+
$this.trigger("change.uk.button", [$this.element.blur().hasClass("uk-active")]);
|
144
|
+
});
|
145
|
+
|
146
|
+
},
|
147
|
+
|
148
|
+
toggle: function() {
|
149
|
+
this.element.toggleClass("uk-active");
|
150
|
+
|
151
|
+
// Update ARIA
|
152
|
+
this.element.attr('aria-pressed', this.element.hasClass("uk-active"));
|
153
|
+
}
|
154
|
+
});
|
155
|
+
|
156
|
+
})(UIkit);
|
157
|
+
|
@@ -0,0 +1,2 @@
|
|
1
|
+
/*! UIkit 2.24.2 | http://www.getuikit.com | (c) 2014 YOOtheme | MIT License */
|
2
|
+
!function(t){"use strict";t.component("buttonRadio",{defaults:{activeClass:"uk-active",target:".uk-button"},boot:function(){t.$html.on("click.buttonradio.uikit","[data-uk-button-radio]",function(i){var a=t.$(this);if(!a.data("buttonRadio")){var e=t.buttonRadio(a,t.Utils.options(a.attr("data-uk-button-radio"))),o=t.$(i.target);o.is(e.options.target)&&o.trigger("click")}})},init:function(){var i=this;this.find(i.options.target).attr("aria-checked","false").filter("."+i.options.activeClass).attr("aria-checked","true"),this.on("click",this.options.target,function(a){var e=t.$(this);e.is('a[href="#"]')&&a.preventDefault(),i.find(i.options.target).not(e).removeClass(i.options.activeClass).blur(),e.addClass(i.options.activeClass),i.find(i.options.target).not(e).attr("aria-checked","false"),e.attr("aria-checked","true"),i.trigger("change.uk.button",[e])})},getSelected:function(){return this.find("."+this.options.activeClass)}}),t.component("buttonCheckbox",{defaults:{activeClass:"uk-active",target:".uk-button"},boot:function(){t.$html.on("click.buttoncheckbox.uikit","[data-uk-button-checkbox]",function(i){var a=t.$(this);if(!a.data("buttonCheckbox")){var e=t.buttonCheckbox(a,t.Utils.options(a.attr("data-uk-button-checkbox"))),o=t.$(i.target);o.is(e.options.target)&&o.trigger("click")}})},init:function(){var i=this;this.find(i.options.target).attr("aria-checked","false").filter("."+i.options.activeClass).attr("aria-checked","true"),this.on("click",this.options.target,function(a){var e=t.$(this);e.is('a[href="#"]')&&a.preventDefault(),e.toggleClass(i.options.activeClass).blur(),e.attr("aria-checked",e.hasClass(i.options.activeClass)),i.trigger("change.uk.button",[e])})},getSelected:function(){return this.find("."+this.options.activeClass)}}),t.component("button",{defaults:{},boot:function(){t.$html.on("click.button.uikit","[data-uk-button]",function(){var i=t.$(this);if(!i.data("button")){{t.button(i,t.Utils.options(i.attr("data-uk-button")))}i.trigger("click")}})},init:function(){var t=this;this.element.attr("aria-pressed",this.element.hasClass("uk-active")),this.on("click",function(i){t.element.is('a[href="#"]')&&i.preventDefault(),t.toggle(),t.trigger("change.uk.button",[t.element.blur().hasClass("uk-active")])})},toggle:function(){this.element.toggleClass("uk-active"),this.element.attr("aria-pressed",this.element.hasClass("uk-active"))}})}(UIkit);
|
@@ -0,0 +1,730 @@
|
|
1
|
+
/*! UIkit 2.24.2 | http://www.getuikit.com | (c) 2014 YOOtheme | MIT License */
|
2
|
+
(function(core) {
|
3
|
+
|
4
|
+
if (typeof define == "function" && define.amd) { // AMD
|
5
|
+
|
6
|
+
define("uikit", function(){
|
7
|
+
|
8
|
+
var uikit = window.UIkit || core(window, window.jQuery, window.document);
|
9
|
+
|
10
|
+
uikit.load = function(res, req, onload, config) {
|
11
|
+
|
12
|
+
var resources = res.split(','), load = [], i, base = (config.config && config.config.uikit && config.config.uikit.base ? config.config.uikit.base : "").replace(/\/+$/g, "");
|
13
|
+
|
14
|
+
if (!base) {
|
15
|
+
throw new Error( "Please define base path to UIkit in the requirejs config." );
|
16
|
+
}
|
17
|
+
|
18
|
+
for (i = 0; i < resources.length; i += 1) {
|
19
|
+
var resource = resources[i].replace(/\./g, '/');
|
20
|
+
load.push(base+'/components/'+resource);
|
21
|
+
}
|
22
|
+
|
23
|
+
req(load, function() {
|
24
|
+
onload(uikit);
|
25
|
+
});
|
26
|
+
};
|
27
|
+
|
28
|
+
return uikit;
|
29
|
+
});
|
30
|
+
}
|
31
|
+
|
32
|
+
if (!window.jQuery) {
|
33
|
+
throw new Error( "UIkit requires jQuery" );
|
34
|
+
}
|
35
|
+
|
36
|
+
if (window && window.jQuery) {
|
37
|
+
core(window, window.jQuery, window.document);
|
38
|
+
}
|
39
|
+
|
40
|
+
|
41
|
+
})(function(global, $, doc) {
|
42
|
+
|
43
|
+
"use strict";
|
44
|
+
|
45
|
+
var UI = {}, _UI = global.UIkit ? Object.create(global.UIkit) : undefined;
|
46
|
+
|
47
|
+
UI.version = '2.24.2';
|
48
|
+
|
49
|
+
UI.noConflict = function() {
|
50
|
+
// restore UIkit version
|
51
|
+
if (_UI) {
|
52
|
+
global.UIkit = _UI;
|
53
|
+
$.UIkit = _UI;
|
54
|
+
$.fn.uk = _UI.fn;
|
55
|
+
}
|
56
|
+
|
57
|
+
return UI;
|
58
|
+
};
|
59
|
+
|
60
|
+
UI.prefix = function(str) {
|
61
|
+
return str;
|
62
|
+
};
|
63
|
+
|
64
|
+
// cache jQuery
|
65
|
+
UI.$ = $;
|
66
|
+
|
67
|
+
UI.$doc = UI.$(document);
|
68
|
+
UI.$win = UI.$(window);
|
69
|
+
UI.$html = UI.$('html');
|
70
|
+
|
71
|
+
UI.support = {};
|
72
|
+
UI.support.transition = (function() {
|
73
|
+
|
74
|
+
var transitionEnd = (function() {
|
75
|
+
|
76
|
+
var element = doc.body || doc.documentElement,
|
77
|
+
transEndEventNames = {
|
78
|
+
WebkitTransition : 'webkitTransitionEnd',
|
79
|
+
MozTransition : 'transitionend',
|
80
|
+
OTransition : 'oTransitionEnd otransitionend',
|
81
|
+
transition : 'transitionend'
|
82
|
+
}, name;
|
83
|
+
|
84
|
+
for (name in transEndEventNames) {
|
85
|
+
if (element.style[name] !== undefined) return transEndEventNames[name];
|
86
|
+
}
|
87
|
+
}());
|
88
|
+
|
89
|
+
return transitionEnd && { end: transitionEnd };
|
90
|
+
})();
|
91
|
+
|
92
|
+
UI.support.animation = (function() {
|
93
|
+
|
94
|
+
var animationEnd = (function() {
|
95
|
+
|
96
|
+
var element = doc.body || doc.documentElement,
|
97
|
+
animEndEventNames = {
|
98
|
+
WebkitAnimation : 'webkitAnimationEnd',
|
99
|
+
MozAnimation : 'animationend',
|
100
|
+
OAnimation : 'oAnimationEnd oanimationend',
|
101
|
+
animation : 'animationend'
|
102
|
+
}, name;
|
103
|
+
|
104
|
+
for (name in animEndEventNames) {
|
105
|
+
if (element.style[name] !== undefined) return animEndEventNames[name];
|
106
|
+
}
|
107
|
+
}());
|
108
|
+
|
109
|
+
return animationEnd && { end: animationEnd };
|
110
|
+
})();
|
111
|
+
|
112
|
+
// requestAnimationFrame polyfill
|
113
|
+
//https://github.com/darius/requestAnimationFrame
|
114
|
+
(function() {
|
115
|
+
|
116
|
+
Date.now = Date.now || function() { return new Date().getTime(); };
|
117
|
+
|
118
|
+
var vendors = ['webkit', 'moz'];
|
119
|
+
for (var i = 0; i < vendors.length && !window.requestAnimationFrame; ++i) {
|
120
|
+
var vp = vendors[i];
|
121
|
+
window.requestAnimationFrame = window[vp+'RequestAnimationFrame'];
|
122
|
+
window.cancelAnimationFrame = (window[vp+'CancelAnimationFrame']
|
123
|
+
|| window[vp+'CancelRequestAnimationFrame']);
|
124
|
+
}
|
125
|
+
if (/iP(ad|hone|od).*OS 6/.test(window.navigator.userAgent) // iOS6 is buggy
|
126
|
+
|| !window.requestAnimationFrame || !window.cancelAnimationFrame) {
|
127
|
+
var lastTime = 0;
|
128
|
+
window.requestAnimationFrame = function(callback) {
|
129
|
+
var now = Date.now();
|
130
|
+
var nextTime = Math.max(lastTime + 16, now);
|
131
|
+
return setTimeout(function() { callback(lastTime = nextTime); },
|
132
|
+
nextTime - now);
|
133
|
+
};
|
134
|
+
window.cancelAnimationFrame = clearTimeout;
|
135
|
+
}
|
136
|
+
}());
|
137
|
+
|
138
|
+
UI.support.touch = (
|
139
|
+
('ontouchstart' in document) ||
|
140
|
+
(global.DocumentTouch && document instanceof global.DocumentTouch) ||
|
141
|
+
(global.navigator.msPointerEnabled && global.navigator.msMaxTouchPoints > 0) || //IE 10
|
142
|
+
(global.navigator.pointerEnabled && global.navigator.maxTouchPoints > 0) || //IE >=11
|
143
|
+
false
|
144
|
+
);
|
145
|
+
|
146
|
+
UI.support.mutationobserver = (global.MutationObserver || global.WebKitMutationObserver || null);
|
147
|
+
|
148
|
+
UI.Utils = {};
|
149
|
+
|
150
|
+
UI.Utils.isFullscreen = function() {
|
151
|
+
return document.webkitFullscreenElement || document.mozFullScreenElement || document.msFullscreenElement || document.fullscreenElement || false;
|
152
|
+
};
|
153
|
+
|
154
|
+
UI.Utils.str2json = function(str, notevil) {
|
155
|
+
try {
|
156
|
+
if (notevil) {
|
157
|
+
return JSON.parse(str
|
158
|
+
// wrap keys without quote with valid double quote
|
159
|
+
.replace(/([\$\w]+)\s*:/g, function(_, $1){return '"'+$1+'":';})
|
160
|
+
// replacing single quote wrapped ones to double quote
|
161
|
+
.replace(/'([^']+)'/g, function(_, $1){return '"'+$1+'"';})
|
162
|
+
);
|
163
|
+
} else {
|
164
|
+
return (new Function("", "var json = " + str + "; return JSON.parse(JSON.stringify(json));"))();
|
165
|
+
}
|
166
|
+
} catch(e) { return false; }
|
167
|
+
};
|
168
|
+
|
169
|
+
UI.Utils.debounce = function(func, wait, immediate) {
|
170
|
+
var timeout;
|
171
|
+
return function() {
|
172
|
+
var context = this, args = arguments;
|
173
|
+
var later = function() {
|
174
|
+
timeout = null;
|
175
|
+
if (!immediate) func.apply(context, args);
|
176
|
+
};
|
177
|
+
var callNow = immediate && !timeout;
|
178
|
+
clearTimeout(timeout);
|
179
|
+
timeout = setTimeout(later, wait);
|
180
|
+
if (callNow) func.apply(context, args);
|
181
|
+
};
|
182
|
+
};
|
183
|
+
|
184
|
+
UI.Utils.removeCssRules = function(selectorRegEx) {
|
185
|
+
var idx, idxs, stylesheet, _i, _j, _k, _len, _len1, _len2, _ref;
|
186
|
+
|
187
|
+
if(!selectorRegEx) return;
|
188
|
+
|
189
|
+
setTimeout(function(){
|
190
|
+
try {
|
191
|
+
_ref = document.styleSheets;
|
192
|
+
for (_i = 0, _len = _ref.length; _i < _len; _i++) {
|
193
|
+
stylesheet = _ref[_i];
|
194
|
+
idxs = [];
|
195
|
+
stylesheet.cssRules = stylesheet.cssRules;
|
196
|
+
for (idx = _j = 0, _len1 = stylesheet.cssRules.length; _j < _len1; idx = ++_j) {
|
197
|
+
if (stylesheet.cssRules[idx].type === CSSRule.STYLE_RULE && selectorRegEx.test(stylesheet.cssRules[idx].selectorText)) {
|
198
|
+
idxs.unshift(idx);
|
199
|
+
}
|
200
|
+
}
|
201
|
+
for (_k = 0, _len2 = idxs.length; _k < _len2; _k++) {
|
202
|
+
stylesheet.deleteRule(idxs[_k]);
|
203
|
+
}
|
204
|
+
}
|
205
|
+
} catch (_error) {}
|
206
|
+
}, 0);
|
207
|
+
};
|
208
|
+
|
209
|
+
UI.Utils.isInView = function(element, options) {
|
210
|
+
|
211
|
+
var $element = $(element);
|
212
|
+
|
213
|
+
if (!$element.is(':visible')) {
|
214
|
+
return false;
|
215
|
+
}
|
216
|
+
|
217
|
+
var window_left = UI.$win.scrollLeft(), window_top = UI.$win.scrollTop(), offset = $element.offset(), left = offset.left, top = offset.top;
|
218
|
+
|
219
|
+
options = $.extend({topoffset:0, leftoffset:0}, options);
|
220
|
+
|
221
|
+
if (top + $element.height() >= window_top && top - options.topoffset <= window_top + UI.$win.height() &&
|
222
|
+
left + $element.width() >= window_left && left - options.leftoffset <= window_left + UI.$win.width()) {
|
223
|
+
return true;
|
224
|
+
} else {
|
225
|
+
return false;
|
226
|
+
}
|
227
|
+
};
|
228
|
+
|
229
|
+
UI.Utils.checkDisplay = function(context, initanimation) {
|
230
|
+
|
231
|
+
var elements = UI.$('[data-uk-margin], [data-uk-grid-match], [data-uk-grid-margin], [data-uk-check-display]', context || document), animated;
|
232
|
+
|
233
|
+
if (context && !elements.length) {
|
234
|
+
elements = $(context);
|
235
|
+
}
|
236
|
+
|
237
|
+
elements.trigger('display.uk.check');
|
238
|
+
|
239
|
+
// fix firefox / IE animations
|
240
|
+
if (initanimation) {
|
241
|
+
|
242
|
+
if (typeof(initanimation)!='string') {
|
243
|
+
initanimation = '[class*="uk-animation-"]';
|
244
|
+
}
|
245
|
+
|
246
|
+
elements.find(initanimation).each(function(){
|
247
|
+
|
248
|
+
var ele = UI.$(this),
|
249
|
+
cls = ele.attr('class'),
|
250
|
+
anim = cls.match(/uk\-animation\-(.+)/);
|
251
|
+
|
252
|
+
ele.removeClass(anim[0]).width();
|
253
|
+
|
254
|
+
ele.addClass(anim[0]);
|
255
|
+
});
|
256
|
+
}
|
257
|
+
|
258
|
+
return elements;
|
259
|
+
};
|
260
|
+
|
261
|
+
UI.Utils.options = function(string) {
|
262
|
+
|
263
|
+
if ($.isPlainObject(string)) return string;
|
264
|
+
|
265
|
+
var start = (string ? string.indexOf("{") : -1), options = {};
|
266
|
+
|
267
|
+
if (start != -1) {
|
268
|
+
try {
|
269
|
+
options = UI.Utils.str2json(string.substr(start));
|
270
|
+
} catch (e) {}
|
271
|
+
}
|
272
|
+
|
273
|
+
return options;
|
274
|
+
};
|
275
|
+
|
276
|
+
UI.Utils.animate = function(element, cls) {
|
277
|
+
|
278
|
+
var d = $.Deferred();
|
279
|
+
|
280
|
+
element = UI.$(element);
|
281
|
+
cls = cls;
|
282
|
+
|
283
|
+
element.css('display', 'none').addClass(cls).one(UI.support.animation.end, function() {
|
284
|
+
element.removeClass(cls);
|
285
|
+
d.resolve();
|
286
|
+
}).width();
|
287
|
+
|
288
|
+
element.css('display', '');
|
289
|
+
|
290
|
+
return d.promise();
|
291
|
+
};
|
292
|
+
|
293
|
+
UI.Utils.uid = function(prefix) {
|
294
|
+
return (prefix || 'id') + (new Date().getTime())+"RAND"+(Math.ceil(Math.random() * 100000));
|
295
|
+
};
|
296
|
+
|
297
|
+
UI.Utils.template = function(str, data) {
|
298
|
+
|
299
|
+
var tokens = str.replace(/\n/g, '\\n').replace(/\{\{\{\s*(.+?)\s*\}\}\}/g, "{{!$1}}").split(/(\{\{\s*(.+?)\s*\}\})/g),
|
300
|
+
i=0, toc, cmd, prop, val, fn, output = [], openblocks = 0;
|
301
|
+
|
302
|
+
while(i < tokens.length) {
|
303
|
+
|
304
|
+
toc = tokens[i];
|
305
|
+
|
306
|
+
if(toc.match(/\{\{\s*(.+?)\s*\}\}/)) {
|
307
|
+
i = i + 1;
|
308
|
+
toc = tokens[i];
|
309
|
+
cmd = toc[0];
|
310
|
+
prop = toc.substring(toc.match(/^(\^|\#|\!|\~|\:)/) ? 1:0);
|
311
|
+
|
312
|
+
switch(cmd) {
|
313
|
+
case '~':
|
314
|
+
output.push("for(var $i=0;$i<"+prop+".length;$i++) { var $item = "+prop+"[$i];");
|
315
|
+
openblocks++;
|
316
|
+
break;
|
317
|
+
case ':':
|
318
|
+
output.push("for(var $key in "+prop+") { var $val = "+prop+"[$key];");
|
319
|
+
openblocks++;
|
320
|
+
break;
|
321
|
+
case '#':
|
322
|
+
output.push("if("+prop+") {");
|
323
|
+
openblocks++;
|
324
|
+
break;
|
325
|
+
case '^':
|
326
|
+
output.push("if(!"+prop+") {");
|
327
|
+
openblocks++;
|
328
|
+
break;
|
329
|
+
case '/':
|
330
|
+
output.push("}");
|
331
|
+
openblocks--;
|
332
|
+
break;
|
333
|
+
case '!':
|
334
|
+
output.push("__ret.push("+prop+");");
|
335
|
+
break;
|
336
|
+
default:
|
337
|
+
output.push("__ret.push(escape("+prop+"));");
|
338
|
+
break;
|
339
|
+
}
|
340
|
+
} else {
|
341
|
+
output.push("__ret.push('"+toc.replace(/\'/g, "\\'")+"');");
|
342
|
+
}
|
343
|
+
i = i + 1;
|
344
|
+
}
|
345
|
+
|
346
|
+
fn = new Function('$data', [
|
347
|
+
'var __ret = [];',
|
348
|
+
'try {',
|
349
|
+
'with($data){', (!openblocks ? output.join('') : '__ret = ["Not all blocks are closed correctly."]'), '};',
|
350
|
+
'}catch(e){__ret = [e.message];}',
|
351
|
+
'return __ret.join("").replace(/\\n\\n/g, "\\n");',
|
352
|
+
"function escape(html) { return String(html).replace(/&/g, '&').replace(/\"/g, '"').replace(/</g, '<').replace(/>/g, '>');}"
|
353
|
+
].join("\n"));
|
354
|
+
|
355
|
+
return data ? fn(data) : fn;
|
356
|
+
};
|
357
|
+
|
358
|
+
UI.Utils.events = {};
|
359
|
+
UI.Utils.events.click = UI.support.touch ? 'tap' : 'click';
|
360
|
+
|
361
|
+
global.UIkit = UI;
|
362
|
+
|
363
|
+
// deprecated
|
364
|
+
|
365
|
+
UI.fn = function(command, options) {
|
366
|
+
|
367
|
+
var args = arguments, cmd = command.match(/^([a-z\-]+)(?:\.([a-z]+))?/i), component = cmd[1], method = cmd[2];
|
368
|
+
|
369
|
+
if (!UI[component]) {
|
370
|
+
$.error("UIkit component [" + component + "] does not exist.");
|
371
|
+
return this;
|
372
|
+
}
|
373
|
+
|
374
|
+
return this.each(function() {
|
375
|
+
var $this = $(this), data = $this.data(component);
|
376
|
+
if (!data) $this.data(component, (data = UI[component](this, method ? undefined : options)));
|
377
|
+
if (method) data[method].apply(data, Array.prototype.slice.call(args, 1));
|
378
|
+
});
|
379
|
+
};
|
380
|
+
|
381
|
+
$.UIkit = UI;
|
382
|
+
$.fn.uk = UI.fn;
|
383
|
+
|
384
|
+
UI.langdirection = UI.$html.attr("dir") == "rtl" ? "right" : "left";
|
385
|
+
|
386
|
+
UI.components = {};
|
387
|
+
|
388
|
+
UI.component = function(name, def) {
|
389
|
+
|
390
|
+
var fn = function(element, options) {
|
391
|
+
|
392
|
+
var $this = this;
|
393
|
+
|
394
|
+
this.UIkit = UI;
|
395
|
+
this.element = element ? UI.$(element) : null;
|
396
|
+
this.options = $.extend(true, {}, this.defaults, options);
|
397
|
+
this.plugins = {};
|
398
|
+
|
399
|
+
if (this.element) {
|
400
|
+
this.element.data(name, this);
|
401
|
+
}
|
402
|
+
|
403
|
+
this.init();
|
404
|
+
|
405
|
+
(this.options.plugins.length ? this.options.plugins : Object.keys(fn.plugins)).forEach(function(plugin) {
|
406
|
+
|
407
|
+
if (fn.plugins[plugin].init) {
|
408
|
+
fn.plugins[plugin].init($this);
|
409
|
+
$this.plugins[plugin] = true;
|
410
|
+
}
|
411
|
+
|
412
|
+
});
|
413
|
+
|
414
|
+
this.trigger('init.uk.component', [name, this]);
|
415
|
+
|
416
|
+
return this;
|
417
|
+
};
|
418
|
+
|
419
|
+
fn.plugins = {};
|
420
|
+
|
421
|
+
$.extend(true, fn.prototype, {
|
422
|
+
|
423
|
+
defaults : {plugins: []},
|
424
|
+
|
425
|
+
boot: function(){},
|
426
|
+
init: function(){},
|
427
|
+
|
428
|
+
on: function(a1,a2,a3){
|
429
|
+
return UI.$(this.element || this).on(a1,a2,a3);
|
430
|
+
},
|
431
|
+
|
432
|
+
one: function(a1,a2,a3){
|
433
|
+
return UI.$(this.element || this).one(a1,a2,a3);
|
434
|
+
},
|
435
|
+
|
436
|
+
off: function(evt){
|
437
|
+
return UI.$(this.element || this).off(evt);
|
438
|
+
},
|
439
|
+
|
440
|
+
trigger: function(evt, params) {
|
441
|
+
return UI.$(this.element || this).trigger(evt, params);
|
442
|
+
},
|
443
|
+
|
444
|
+
find: function(selector) {
|
445
|
+
return UI.$(this.element ? this.element: []).find(selector);
|
446
|
+
},
|
447
|
+
|
448
|
+
proxy: function(obj, methods) {
|
449
|
+
|
450
|
+
var $this = this;
|
451
|
+
|
452
|
+
methods.split(' ').forEach(function(method) {
|
453
|
+
if (!$this[method]) $this[method] = function() { return obj[method].apply(obj, arguments); };
|
454
|
+
});
|
455
|
+
},
|
456
|
+
|
457
|
+
mixin: function(obj, methods) {
|
458
|
+
|
459
|
+
var $this = this;
|
460
|
+
|
461
|
+
methods.split(' ').forEach(function(method) {
|
462
|
+
if (!$this[method]) $this[method] = obj[method].bind($this);
|
463
|
+
});
|
464
|
+
},
|
465
|
+
|
466
|
+
option: function() {
|
467
|
+
|
468
|
+
if (arguments.length == 1) {
|
469
|
+
return this.options[arguments[0]] || undefined;
|
470
|
+
} else if (arguments.length == 2) {
|
471
|
+
this.options[arguments[0]] = arguments[1];
|
472
|
+
}
|
473
|
+
}
|
474
|
+
|
475
|
+
}, def);
|
476
|
+
|
477
|
+
this.components[name] = fn;
|
478
|
+
|
479
|
+
this[name] = function() {
|
480
|
+
|
481
|
+
var element, options;
|
482
|
+
|
483
|
+
if (arguments.length) {
|
484
|
+
|
485
|
+
switch(arguments.length) {
|
486
|
+
case 1:
|
487
|
+
|
488
|
+
if (typeof arguments[0] === "string" || arguments[0].nodeType || arguments[0] instanceof jQuery) {
|
489
|
+
element = $(arguments[0]);
|
490
|
+
} else {
|
491
|
+
options = arguments[0];
|
492
|
+
}
|
493
|
+
|
494
|
+
break;
|
495
|
+
case 2:
|
496
|
+
|
497
|
+
element = $(arguments[0]);
|
498
|
+
options = arguments[1];
|
499
|
+
break;
|
500
|
+
}
|
501
|
+
}
|
502
|
+
|
503
|
+
if (element && element.data(name)) {
|
504
|
+
return element.data(name);
|
505
|
+
}
|
506
|
+
|
507
|
+
return (new UI.components[name](element, options));
|
508
|
+
};
|
509
|
+
|
510
|
+
if (UI.domready) {
|
511
|
+
UI.component.boot(name);
|
512
|
+
}
|
513
|
+
|
514
|
+
return fn;
|
515
|
+
};
|
516
|
+
|
517
|
+
UI.plugin = function(component, name, def) {
|
518
|
+
this.components[component].plugins[name] = def;
|
519
|
+
};
|
520
|
+
|
521
|
+
UI.component.boot = function(name) {
|
522
|
+
|
523
|
+
if (UI.components[name].prototype && UI.components[name].prototype.boot && !UI.components[name].booted) {
|
524
|
+
UI.components[name].prototype.boot.apply(UI, []);
|
525
|
+
UI.components[name].booted = true;
|
526
|
+
}
|
527
|
+
};
|
528
|
+
|
529
|
+
UI.component.bootComponents = function() {
|
530
|
+
|
531
|
+
for (var component in UI.components) {
|
532
|
+
UI.component.boot(component);
|
533
|
+
}
|
534
|
+
};
|
535
|
+
|
536
|
+
|
537
|
+
// DOM mutation save ready helper function
|
538
|
+
|
539
|
+
UI.domObservers = [];
|
540
|
+
UI.domready = false;
|
541
|
+
|
542
|
+
UI.ready = function(fn) {
|
543
|
+
|
544
|
+
UI.domObservers.push(fn);
|
545
|
+
|
546
|
+
if (UI.domready) {
|
547
|
+
fn(document);
|
548
|
+
}
|
549
|
+
};
|
550
|
+
|
551
|
+
UI.on = function(a1,a2,a3){
|
552
|
+
|
553
|
+
if (a1 && a1.indexOf('ready.uk.dom') > -1 && UI.domready) {
|
554
|
+
a2.apply(UI.$doc);
|
555
|
+
}
|
556
|
+
|
557
|
+
return UI.$doc.on(a1,a2,a3);
|
558
|
+
};
|
559
|
+
|
560
|
+
UI.one = function(a1,a2,a3){
|
561
|
+
|
562
|
+
if (a1 && a1.indexOf('ready.uk.dom') > -1 && UI.domready) {
|
563
|
+
a2.apply(UI.$doc);
|
564
|
+
return UI.$doc;
|
565
|
+
}
|
566
|
+
|
567
|
+
return UI.$doc.one(a1,a2,a3);
|
568
|
+
};
|
569
|
+
|
570
|
+
UI.trigger = function(evt, params) {
|
571
|
+
return UI.$doc.trigger(evt, params);
|
572
|
+
};
|
573
|
+
|
574
|
+
UI.domObserve = function(selector, fn) {
|
575
|
+
|
576
|
+
if(!UI.support.mutationobserver) return;
|
577
|
+
|
578
|
+
fn = fn || function() {};
|
579
|
+
|
580
|
+
UI.$(selector).each(function() {
|
581
|
+
|
582
|
+
var element = this,
|
583
|
+
$element = UI.$(element);
|
584
|
+
|
585
|
+
if ($element.data('observer')) {
|
586
|
+
return;
|
587
|
+
}
|
588
|
+
|
589
|
+
try {
|
590
|
+
|
591
|
+
var observer = new UI.support.mutationobserver(UI.Utils.debounce(function(mutations) {
|
592
|
+
fn.apply(element, []);
|
593
|
+
$element.trigger('changed.uk.dom');
|
594
|
+
}, 50));
|
595
|
+
|
596
|
+
// pass in the target node, as well as the observer options
|
597
|
+
observer.observe(element, { childList: true, subtree: true });
|
598
|
+
|
599
|
+
$element.data('observer', observer);
|
600
|
+
|
601
|
+
} catch(e) {}
|
602
|
+
});
|
603
|
+
};
|
604
|
+
|
605
|
+
UI.init = function(root) {
|
606
|
+
|
607
|
+
root = root || document;
|
608
|
+
|
609
|
+
UI.domObservers.forEach(function(fn){
|
610
|
+
fn(root);
|
611
|
+
});
|
612
|
+
};
|
613
|
+
|
614
|
+
UI.on('domready.uk.dom', function(){
|
615
|
+
|
616
|
+
UI.init();
|
617
|
+
|
618
|
+
if (UI.domready) UI.Utils.checkDisplay();
|
619
|
+
});
|
620
|
+
|
621
|
+
$(function(){
|
622
|
+
|
623
|
+
UI.$body = UI.$('body');
|
624
|
+
|
625
|
+
UI.ready(function(context){
|
626
|
+
UI.domObserve('[data-uk-observe]');
|
627
|
+
});
|
628
|
+
|
629
|
+
UI.on('changed.uk.dom', function(e) {
|
630
|
+
UI.init(e.target);
|
631
|
+
UI.Utils.checkDisplay(e.target);
|
632
|
+
});
|
633
|
+
|
634
|
+
UI.trigger('beforeready.uk.dom');
|
635
|
+
|
636
|
+
UI.component.bootComponents();
|
637
|
+
|
638
|
+
// custom scroll observer
|
639
|
+
requestAnimationFrame((function(){
|
640
|
+
|
641
|
+
var memory = {x: window.pageXOffset, y:window.pageYOffset}, dir;
|
642
|
+
|
643
|
+
var fn = function(){
|
644
|
+
|
645
|
+
if (memory.x != window.pageXOffset || memory.y != window.pageYOffset) {
|
646
|
+
|
647
|
+
dir = {x: 0 , y: 0};
|
648
|
+
|
649
|
+
if (window.pageXOffset != memory.x) dir.x = window.pageXOffset > memory.x ? 1:-1;
|
650
|
+
if (window.pageYOffset != memory.y) dir.y = window.pageYOffset > memory.y ? 1:-1;
|
651
|
+
|
652
|
+
memory = {
|
653
|
+
"dir": dir, "x": window.pageXOffset, "y": window.pageYOffset
|
654
|
+
};
|
655
|
+
|
656
|
+
UI.$doc.trigger('scrolling.uk.document', [memory]);
|
657
|
+
}
|
658
|
+
|
659
|
+
requestAnimationFrame(fn);
|
660
|
+
};
|
661
|
+
|
662
|
+
if (UI.support.touch) {
|
663
|
+
UI.$html.on('touchmove touchend MSPointerMove MSPointerUp pointermove pointerup', fn);
|
664
|
+
}
|
665
|
+
|
666
|
+
if (memory.x || memory.y) fn();
|
667
|
+
|
668
|
+
return fn;
|
669
|
+
|
670
|
+
})());
|
671
|
+
|
672
|
+
// run component init functions on dom
|
673
|
+
UI.trigger('domready.uk.dom');
|
674
|
+
|
675
|
+
if (UI.support.touch) {
|
676
|
+
|
677
|
+
// remove css hover rules for touch devices
|
678
|
+
// UI.Utils.removeCssRules(/\.uk-(?!navbar).*:hover/);
|
679
|
+
|
680
|
+
// viewport unit fix for uk-height-viewport - should be fixed in iOS 8
|
681
|
+
if (navigator.userAgent.match(/(iPad|iPhone|iPod)/g)) {
|
682
|
+
|
683
|
+
UI.$win.on('load orientationchange resize', UI.Utils.debounce((function(){
|
684
|
+
|
685
|
+
var fn = function() {
|
686
|
+
$('.uk-height-viewport').css('height', window.innerHeight);
|
687
|
+
return fn;
|
688
|
+
};
|
689
|
+
|
690
|
+
return fn();
|
691
|
+
|
692
|
+
})(), 100));
|
693
|
+
}
|
694
|
+
}
|
695
|
+
|
696
|
+
UI.trigger('afterready.uk.dom');
|
697
|
+
|
698
|
+
// mark that domready is left behind
|
699
|
+
UI.domready = true;
|
700
|
+
});
|
701
|
+
|
702
|
+
// add touch identifier class
|
703
|
+
UI.$html.addClass(UI.support.touch ? "uk-touch" : "uk-notouch");
|
704
|
+
|
705
|
+
// add uk-hover class on tap to support overlays on touch devices
|
706
|
+
if (UI.support.touch) {
|
707
|
+
|
708
|
+
var hoverset = false,
|
709
|
+
exclude,
|
710
|
+
hovercls = 'uk-hover',
|
711
|
+
selector = '.uk-overlay, .uk-overlay-hover, .uk-overlay-toggle, .uk-animation-hover, .uk-has-hover';
|
712
|
+
|
713
|
+
UI.$html.on('mouseenter touchstart MSPointerDown pointerdown', selector, function() {
|
714
|
+
|
715
|
+
if (hoverset) $('.'+hovercls).removeClass(hovercls);
|
716
|
+
|
717
|
+
hoverset = $(this).addClass(hovercls);
|
718
|
+
|
719
|
+
}).on('mouseleave touchend MSPointerUp pointerup', function(e) {
|
720
|
+
|
721
|
+
exclude = $(e.target).parents(selector);
|
722
|
+
|
723
|
+
if (hoverset) {
|
724
|
+
hoverset.not(exclude).removeClass(hovercls);
|
725
|
+
}
|
726
|
+
});
|
727
|
+
}
|
728
|
+
|
729
|
+
return UI;
|
730
|
+
});
|