first commit of free version

This commit is contained in:
2016-01-30 22:28:43 +02:00
commit ecf47809f9
1834 changed files with 447351 additions and 0 deletions

View File

@ -0,0 +1,172 @@
/*! UIkit 2.21.0 | http://www.getuikit.com | (c) 2014 YOOtheme | MIT License */
(function(addon) {
var component;
if (window.UIkit) {
component = addon(UIkit);
}
if (typeof define == "function" && define.amd) {
define("uikit-accordion", ["uikit"], function(){
return component || addon(UIkit);
});
}
})(function(UI){
"use strict";
UI.component('accordion', {
defaults: {
showfirst : true,
collapse : true,
animate : true,
easing : 'swing',
duration : 300,
toggle : '.uk-accordion-title',
containers : '.uk-accordion-content',
clsactive : 'uk-active'
},
boot: function() {
// init code
UI.ready(function(context) {
setTimeout(function(){
UI.$("[data-uk-accordion]", context).each(function(){
var ele = UI.$(this);
if(!ele.data("accordion")) {
UI.accordion(ele, UI.Utils.options(ele.attr('data-uk-accordion')));
}
});
}, 0);
});
},
init: function() {
var $this = this;
this.element.on('click.uikit.accordion', this.options.toggle, function(e) {
e.preventDefault();
$this.toggleItem(UI.$(this).data('wrapper'), $this.options.animate, $this.options.collapse);
});
this.update();
if (this.options.showfirst) {
this.toggleItem(this.toggle.eq(0).data('wrapper'), false, false);
}
},
toggleItem: function(wrapper, animated, collapse) {
var $this = this;
wrapper.data('toggle').toggleClass(this.options.clsactive);
var active = wrapper.data('toggle').hasClass(this.options.clsactive);
if (collapse) {
this.toggle.not(wrapper.data('toggle')).removeClass(this.options.clsactive);
this.content.not(wrapper.data('content')).parent().stop().css('overflow', 'hidden').animate({ height: 0 }, {easing: this.options.easing, duration: animated ? this.options.duration : 0}).attr('aria-expanded', 'false');
}
wrapper.stop().css('overflow', 'hidden');
if (animated) {
wrapper.animate({ height: active ? getHeight(wrapper.data('content')) : 0 }, {easing: this.options.easing, duration: this.options.duration, complete: function() {
if (active) {
wrapper.css({'overflow': '', 'height': 'auto'});
UI.Utils.checkDisplay(wrapper.data('content'));
}
$this.trigger('display.uk.check');
}});
} else {
wrapper.height(active ? 'auto' : 0);
if (active) {
wrapper.css({'overflow': ''});
UI.Utils.checkDisplay(wrapper.data('content'));
}
this.trigger('display.uk.check');
}
// Update ARIA
wrapper.attr('aria-expanded', active);
this.element.trigger('toggle.uk.accordion', [active, wrapper.data('toggle'), wrapper.data('content')]);
},
update: function() {
var $this = this, $content, $wrapper, $toggle;
this.toggle = this.find(this.options.toggle);
this.content = this.find(this.options.containers);
this.content.each(function(index) {
$content = UI.$(this);
if ($content.parent().data('wrapper')) {
$wrapper = $content.parent();
} else {
$wrapper = UI.$(this).wrap('<div data-wrapper="true" style="overflow:hidden;height:0;position:relative;"></div>').parent();
// Init ARIA
$wrapper.attr('aria-expanded', 'false');
}
$toggle = $this.toggle.eq(index);
$wrapper.data('toggle', $toggle);
$wrapper.data('content', $content);
$toggle.data('wrapper', $wrapper);
$content.data('wrapper', $wrapper);
});
this.element.trigger('update.uk.accordion', [this]);
}
});
// helper
function getHeight(ele) {
var $ele = UI.$(ele), height = "auto";
if ($ele.is(":visible")) {
height = $ele.outerHeight();
} else {
var tmp = {
position : $ele.css("position"),
visibility : $ele.css("visibility"),
display : $ele.css("display")
};
height = $ele.css({position: 'absolute', visibility: 'hidden', display: 'block'}).outerHeight();
$ele.css(tmp); // reset element
}
return height;
}
return UI.accordion;
});

View File

@ -0,0 +1,2 @@
/*! UIkit 2.21.0 | http://www.getuikit.com | (c) 2014 YOOtheme | MIT License */
!function(t){var i;window.UIkit&&(i=t(UIkit)),"function"==typeof define&&define.amd&&define("uikit-accordion",["uikit"],function(){return i||t(UIkit)})}(function(t){"use strict";function i(i){var o=t.$(i),e="auto";if(o.is(":visible"))e=o.outerHeight();else{var a={position:o.css("position"),visibility:o.css("visibility"),display:o.css("display")};e=o.css({position:"absolute",visibility:"hidden",display:"block"}).outerHeight(),o.css(a)}return e}return t.component("accordion",{defaults:{showfirst:!0,collapse:!0,animate:!0,easing:"swing",duration:300,toggle:".uk-accordion-title",containers:".uk-accordion-content",clsactive:"uk-active"},boot:function(){t.ready(function(i){setTimeout(function(){t.$("[data-uk-accordion]",i).each(function(){var i=t.$(this);i.data("accordion")||t.accordion(i,t.Utils.options(i.attr("data-uk-accordion")))})},0)})},init:function(){var i=this;this.element.on("click.uikit.accordion",this.options.toggle,function(o){o.preventDefault(),i.toggleItem(t.$(this).data("wrapper"),i.options.animate,i.options.collapse)}),this.update(),this.options.showfirst&&this.toggleItem(this.toggle.eq(0).data("wrapper"),!1,!1)},toggleItem:function(o,e,a){var n=this;o.data("toggle").toggleClass(this.options.clsactive);var s=o.data("toggle").hasClass(this.options.clsactive);a&&(this.toggle.not(o.data("toggle")).removeClass(this.options.clsactive),this.content.not(o.data("content")).parent().stop().css("overflow","hidden").animate({height:0},{easing:this.options.easing,duration:e?this.options.duration:0}).attr("aria-expanded","false")),o.stop().css("overflow","hidden"),e?o.animate({height:s?i(o.data("content")):0},{easing:this.options.easing,duration:this.options.duration,complete:function(){s&&(o.css({overflow:"",height:"auto"}),t.Utils.checkDisplay(o.data("content"))),n.trigger("display.uk.check")}}):(o.height(s?"auto":0),s&&(o.css({overflow:""}),t.Utils.checkDisplay(o.data("content"))),this.trigger("display.uk.check")),o.attr("aria-expanded",s),this.element.trigger("toggle.uk.accordion",[s,o.data("toggle"),o.data("content")])},update:function(){var i,o,e,a=this;this.toggle=this.find(this.options.toggle),this.content=this.find(this.options.containers),this.content.each(function(n){i=t.$(this),i.parent().data("wrapper")?o=i.parent():(o=t.$(this).wrap('<div data-wrapper="true" style="overflow:hidden;height:0;position:relative;"></div>').parent(),o.attr("aria-expanded","false")),e=a.toggle.eq(n),o.data("toggle",e),o.data("content",i),e.data("wrapper",o),i.data("wrapper",o)}),this.element.trigger("update.uk.accordion",[this])}}),t.accordion});

View File

@ -0,0 +1,336 @@
/*! UIkit 2.21.0 | http://www.getuikit.com | (c) 2014 YOOtheme | MIT License */
(function(addon) {
var component;
if (window.UIkit) {
component = addon(UIkit);
}
if (typeof define == "function" && define.amd) {
define("uikit-autocomplete", ["uikit"], function(){
return component || addon(UIkit);
});
}
})(function(UI){
"use strict";
var active;
UI.component('autocomplete', {
defaults: {
minLength: 3,
param: 'search',
method: 'post',
delay: 300,
loadingClass: 'uk-loading',
flipDropdown: false,
skipClass: 'uk-skip',
hoverClass: 'uk-active',
source: null,
renderer: null,
// template
template: '<ul class="uk-nav uk-nav-autocomplete uk-autocomplete-results">{{~items}}<li data-value="{{$item.value}}"><a>{{$item.value}}</a></li>{{/items}}</ul>'
},
visible : false,
value : null,
selected : null,
boot: function() {
// init code
UI.$html.on("focus.autocomplete.uikit", "[data-uk-autocomplete]", function(e) {
var ele = UI.$(this);
if (!ele.data("autocomplete")) {
var obj = UI.autocomplete(ele, UI.Utils.options(ele.attr("data-uk-autocomplete")));
}
});
// register outer click for autocompletes
UI.$html.on("click.autocomplete.uikit", function(e) {
if (active && e.target!=active.input[0]) active.hide();
});
},
init: function() {
var $this = this,
select = false,
trigger = UI.Utils.debounce(function(e) {
if(select) {
return (select = false);
}
$this.handle();
}, this.options.delay);
this.dropdown = this.find('.uk-dropdown');
this.template = this.find('script[type="text/autocomplete"]').html();
this.template = UI.Utils.template(this.template || this.options.template);
this.input = this.find("input:first").attr("autocomplete", "off");
if (!this.dropdown.length) {
this.dropdown = UI.$('<div class="uk-dropdown"></div>').appendTo(this.element);
}
if (this.options.flipDropdown) {
this.dropdown.addClass('uk-dropdown-flip');
}
this.dropdown.attr('aria-expanded', 'false');
this.input.on({
"keydown": function(e) {
if (e && e.which && !e.shiftKey) {
switch (e.which) {
case 13: // enter
select = true;
if ($this.selected) {
e.preventDefault();
$this.select();
}
break;
case 38: // up
e.preventDefault();
$this.pick('prev', true);
break;
case 40: // down
e.preventDefault();
$this.pick('next', true);
break;
case 27:
case 9: // esc, tab
$this.hide();
break;
default:
break;
}
}
},
"keyup": trigger
});
this.dropdown.on("click", ".uk-autocomplete-results > *", function(){
$this.select();
});
this.dropdown.on("mouseover", ".uk-autocomplete-results > *", function(){
$this.pick(UI.$(this));
});
this.triggercomplete = trigger;
},
handle: function() {
var $this = this, old = this.value;
this.value = this.input.val();
if (this.value.length < this.options.minLength) return this.hide();
if (this.value != old) {
$this.request();
}
return this;
},
pick: function(item, scrollinview) {
var $this = this,
items = UI.$(this.dropdown.find('.uk-autocomplete-results').children(':not(.'+this.options.skipClass+')')),
selected = false;
if (typeof item !== "string" && !item.hasClass(this.options.skipClass)) {
selected = item;
} else if (item == 'next' || item == 'prev') {
if (this.selected) {
var index = items.index(this.selected);
if (item == 'next') {
selected = items.eq(index + 1 < items.length ? index + 1 : 0);
} else {
selected = items.eq(index - 1 < 0 ? items.length - 1 : index - 1);
}
} else {
selected = items[(item == 'next') ? 'first' : 'last']();
}
selected = UI.$(selected);
}
if (selected && selected.length) {
this.selected = selected;
items.removeClass(this.options.hoverClass);
this.selected.addClass(this.options.hoverClass);
// jump to selected if not in view
if (scrollinview) {
var top = selected.position().top,
scrollTop = $this.dropdown.scrollTop(),
dpheight = $this.dropdown.height();
if (top > dpheight || top < 0) {
$this.dropdown.scrollTop(scrollTop + top);
}
}
}
},
select: function() {
if(!this.selected) return;
var data = this.selected.data();
this.trigger("selectitem.uk.autocomplete", [data, this]);
if (data.value) {
this.input.val(data.value).trigger('change');
}
this.hide();
},
show: function() {
if (this.visible) return;
this.visible = true;
this.element.addClass("uk-open");
if (active && active!==this) {
active.hide();
}
active = this;
// Update aria
this.dropdown.attr('aria-expanded', 'true');
return this;
},
hide: function() {
if (!this.visible) return;
this.visible = false;
this.element.removeClass("uk-open");
if (active === this) {
active = false;
}
// Update aria
this.dropdown.attr('aria-expanded', 'false');
return this;
},
request: function() {
var $this = this,
release = function(data) {
if(data) {
$this.render(data);
}
$this.element.removeClass($this.options.loadingClass);
};
this.element.addClass(this.options.loadingClass);
if (this.options.source) {
var source = this.options.source;
switch(typeof(this.options.source)) {
case 'function':
this.options.source.apply(this, [release]);
break;
case 'object':
if(source.length) {
var items = [];
source.forEach(function(item){
if(item.value && item.value.toLowerCase().indexOf($this.value.toLowerCase())!=-1) {
items.push(item);
}
});
release(items);
}
break;
case 'string':
var params ={};
params[this.options.param] = this.value;
UI.$.ajax({
url: this.options.source,
data: params,
type: this.options.method,
dataType: 'json'
}).done(function(json) {
release(json || []);
});
break;
default:
release(null);
}
} else {
this.element.removeClass($this.options.loadingClass);
}
},
render: function(data) {
var $this = this;
this.dropdown.empty();
this.selected = false;
if (this.options.renderer) {
this.options.renderer.apply(this, [data]);
} else if(data && data.length) {
this.dropdown.append(this.template({"items":data}));
this.show();
this.trigger('show.uk.autocomplete');
}
return this;
}
});
return UI.autocomplete;
});

View File

@ -0,0 +1,2 @@
/*! UIkit 2.21.0 | http://www.getuikit.com | (c) 2014 YOOtheme | MIT License */
!function(t){var e;window.UIkit&&(e=t(UIkit)),"function"==typeof define&&define.amd&&define("uikit-autocomplete",["uikit"],function(){return e||t(UIkit)})}(function(t){"use strict";var e;return t.component("autocomplete",{defaults:{minLength:3,param:"search",method:"post",delay:300,loadingClass:"uk-loading",flipDropdown:!1,skipClass:"uk-skip",hoverClass:"uk-active",source:null,renderer:null,template:'<ul class="uk-nav uk-nav-autocomplete uk-autocomplete-results">{{~items}}<li data-value="{{$item.value}}"><a>{{$item.value}}</a></li>{{/items}}</ul>'},visible:!1,value:null,selected:null,boot:function(){t.$html.on("focus.autocomplete.uikit","[data-uk-autocomplete]",function(){var e=t.$(this);if(!e.data("autocomplete")){t.autocomplete(e,t.Utils.options(e.attr("data-uk-autocomplete")))}}),t.$html.on("click.autocomplete.uikit",function(t){e&&t.target!=e.input[0]&&e.hide()})},init:function(){var e=this,i=!1,s=t.Utils.debounce(function(){return i?i=!1:(e.handle(),void 0)},this.options.delay);this.dropdown=this.find(".uk-dropdown"),this.template=this.find('script[type="text/autocomplete"]').html(),this.template=t.Utils.template(this.template||this.options.template),this.input=this.find("input:first").attr("autocomplete","off"),this.dropdown.length||(this.dropdown=t.$('<div class="uk-dropdown"></div>').appendTo(this.element)),this.options.flipDropdown&&this.dropdown.addClass("uk-dropdown-flip"),this.dropdown.attr("aria-expanded","false"),this.input.on({keydown:function(t){if(t&&t.which&&!t.shiftKey)switch(t.which){case 13:i=!0,e.selected&&(t.preventDefault(),e.select());break;case 38:t.preventDefault(),e.pick("prev",!0);break;case 40:t.preventDefault(),e.pick("next",!0);break;case 27:case 9:e.hide()}},keyup:s}),this.dropdown.on("click",".uk-autocomplete-results > *",function(){e.select()}),this.dropdown.on("mouseover",".uk-autocomplete-results > *",function(){e.pick(t.$(this))}),this.triggercomplete=s},handle:function(){var t=this,e=this.value;return this.value=this.input.val(),this.value.length<this.options.minLength?this.hide():(this.value!=e&&t.request(),this)},pick:function(e,i){var s=this,o=t.$(this.dropdown.find(".uk-autocomplete-results").children(":not(."+this.options.skipClass+")")),n=!1;if("string"==typeof e||e.hasClass(this.options.skipClass)){if("next"==e||"prev"==e){if(this.selected){var a=o.index(this.selected);n="next"==e?o.eq(a+1<o.length?a+1:0):o.eq(0>a-1?o.length-1:a-1)}else n=o["next"==e?"first":"last"]();n=t.$(n)}}else n=e;if(n&&n.length&&(this.selected=n,o.removeClass(this.options.hoverClass),this.selected.addClass(this.options.hoverClass),i)){var l=n.position().top,h=s.dropdown.scrollTop(),r=s.dropdown.height();(l>r||0>l)&&s.dropdown.scrollTop(h+l)}},select:function(){if(this.selected){var t=this.selected.data();this.trigger("selectitem.uk.autocomplete",[t,this]),t.value&&this.input.val(t.value).trigger("change"),this.hide()}},show:function(){return this.visible?void 0:(this.visible=!0,this.element.addClass("uk-open"),e&&e!==this&&e.hide(),e=this,this.dropdown.attr("aria-expanded","true"),this)},hide:function(){return this.visible?(this.visible=!1,this.element.removeClass("uk-open"),e===this&&(e=!1),this.dropdown.attr("aria-expanded","false"),this):void 0},request:function(){var e=this,i=function(t){t&&e.render(t),e.element.removeClass(e.options.loadingClass)};if(this.element.addClass(this.options.loadingClass),this.options.source){var s=this.options.source;switch(typeof this.options.source){case"function":this.options.source.apply(this,[i]);break;case"object":if(s.length){var o=[];s.forEach(function(t){t.value&&-1!=t.value.toLowerCase().indexOf(e.value.toLowerCase())&&o.push(t)}),i(o)}break;case"string":var n={};n[this.options.param]=this.value,t.$.ajax({url:this.options.source,data:n,type:this.options.method,dataType:"json"}).done(function(t){i(t||[])});break;default:i(null)}}else this.element.removeClass(e.options.loadingClass)},render:function(t){return this.dropdown.empty(),this.selected=!1,this.options.renderer?this.options.renderer.apply(this,[t]):t&&t.length&&(this.dropdown.append(this.template({items:t})),this.show(),this.trigger("show.uk.autocomplete")),this}}),t.autocomplete});

File diff suppressed because it is too large Load Diff

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1,66 @@
/*! UIkit 2.21.0 | http://www.getuikit.com | (c) 2014 YOOtheme | MIT License */
(function(addon) {
var component;
if (window.UIkit) {
component = addon(UIkit);
}
if (typeof define == "function" && define.amd) {
define("uikit-form-password", ["uikit"], function(){
return component || addon(UIkit);
});
}
})(function(UI){
"use strict";
UI.component('formPassword', {
defaults: {
"lblShow": "Show",
"lblHide": "Hide"
},
boot: function() {
// init code
UI.$html.on("click.formpassword.uikit", "[data-uk-form-password]", function(e) {
var ele = UI.$(this);
if (!ele.data("formPassword")) {
e.preventDefault();
var obj = UI.formPassword(ele, UI.Utils.options(ele.attr("data-uk-form-password")));
ele.trigger("click");
}
});
},
init: function() {
var $this = this;
this.on("click", function(e) {
e.preventDefault();
if($this.input.length) {
var type = $this.input.attr("type");
$this.input.attr("type", type=="text" ? "password":"text");
$this.element.text($this.options[type=="text" ? "lblShow":"lblHide"]);
}
});
this.input = this.element.next("input").length ? this.element.next("input") : this.element.prev("input");
this.element.text(this.options[this.input.is("[type='password']") ? "lblShow":"lblHide"]);
this.element.data("formPassword", this);
}
});
return UI.formPassword;
});

View File

@ -0,0 +1,2 @@
/*! UIkit 2.21.0 | http://www.getuikit.com | (c) 2014 YOOtheme | MIT License */
!function(t){var i;window.UIkit&&(i=t(UIkit)),"function"==typeof define&&define.amd&&define("uikit-form-password",["uikit"],function(){return i||t(UIkit)})}(function(t){"use strict";return t.component("formPassword",{defaults:{lblShow:"Show",lblHide:"Hide"},boot:function(){t.$html.on("click.formpassword.uikit","[data-uk-form-password]",function(i){var e=t.$(this);if(!e.data("formPassword")){i.preventDefault();{t.formPassword(e,t.Utils.options(e.attr("data-uk-form-password")))}e.trigger("click")}})},init:function(){var t=this;this.on("click",function(i){if(i.preventDefault(),t.input.length){var e=t.input.attr("type");t.input.attr("type","text"==e?"password":"text"),t.element.text(t.options["text"==e?"lblShow":"lblHide"])}}),this.input=this.element.next("input").length?this.element.next("input"):this.element.prev("input"),this.element.text(this.options[this.input.is("[type='password']")?"lblShow":"lblHide"]),this.element.data("formPassword",this)}}),t.formPassword});

View File

@ -0,0 +1,70 @@
/*! UIkit 2.21.0 | http://www.getuikit.com | (c) 2014 YOOtheme | MIT License */
(function(addon) {
var component;
if (window.UIkit) {
component = addon(UIkit);
}
if (typeof define == "function" && define.amd) {
define("uikit-form-select", ["uikit"], function(){
return component || addon(UIkit);
});
}
})(function(UI){
"use strict";
UI.component('formSelect', {
defaults: {
'target': '>span:first',
'activeClass': 'uk-active'
},
boot: function() {
// init code
UI.ready(function(context) {
UI.$("[data-uk-form-select]", context).each(function(){
var ele = UI.$(this);
if (!ele.data("formSelect")) {
var obj = UI.formSelect(ele, UI.Utils.options(ele.attr("data-uk-form-select")));
}
});
});
},
init: function() {
var $this = this;
this.target = this.find(this.options.target);
this.select = this.find('select');
// init + on change event
this.select.on("change", (function(){
var select = $this.select[0], fn = function(){
try {
$this.target.text(select.options[select.selectedIndex].text);
} catch(e) {}
$this.element[$this.select.val() ? 'addClass':'removeClass']($this.options.activeClass);
return fn;
};
return fn();
})());
this.element.data("formSelect", this);
}
});
return UI.formSelect;
});

View File

@ -0,0 +1,2 @@
/*! UIkit 2.21.0 | http://www.getuikit.com | (c) 2014 YOOtheme | MIT License */
!function(t){var e;window.UIkit&&(e=t(UIkit)),"function"==typeof define&&define.amd&&define("uikit-form-select",["uikit"],function(){return e||t(UIkit)})}(function(t){"use strict";return t.component("formSelect",{defaults:{target:">span:first",activeClass:"uk-active"},boot:function(){t.ready(function(e){t.$("[data-uk-form-select]",e).each(function(){var e=t.$(this);if(!e.data("formSelect")){t.formSelect(e,t.Utils.options(e.attr("data-uk-form-select")))}})})},init:function(){var t=this;this.target=this.find(this.options.target),this.select=this.find("select"),this.select.on("change",function(){var e=t.select[0],i=function(){try{t.target.text(e.options[e.selectedIndex].text)}catch(n){}return t.element[t.select.val()?"addClass":"removeClass"](t.options.activeClass),i};return i()}()),this.element.data("formSelect",this)}}),t.formSelect});

View File

@ -0,0 +1,524 @@
/*! UIkit 2.21.0 | http://www.getuikit.com | (c) 2014 YOOtheme | MIT License */
(function(addon) {
var component;
if (window.UIkit) {
component = addon(UIkit);
}
if (typeof define == "function" && define.amd) {
define("uikit-grid", ["uikit"], function(){
return component || addon(UIkit);
});
}
})(function(UI){
"use strict";
UI.component('grid', {
defaults: {
colwidth : 'auto',
animation : true,
duration : 300,
gutter : 0,
controls : false,
filter : false
},
boot: function() {
// init code
UI.ready(function(context) {
UI.$('[data-uk-grid]', context).each(function(){
var ele = UI.$(this);
if(!ele.data("grid")) {
var plugin = UI.grid(ele, UI.Utils.options(ele.attr('data-uk-grid')));
}
});
});
},
init: function() {
var $this = this, gutter = String(this.options.gutter).trim().split(' ');
this.gutterv = parseInt(gutter[0], 10);
this.gutterh = parseInt((gutter[1] || gutter[0]), 10);
// make sure parent element has the right position property
this.element.css({'position': 'relative'});
this.controls = null;
if (this.options.controls) {
this.controls = UI.$(this.options.controls);
// filter
this.controls.on('click', '[data-uk-filter]', function(e){
e.preventDefault();
$this.filter(UI.$(this).data('ukFilter'));
});
// sort
this.controls.on('click', '[data-uk-sort]', function(e){
e.preventDefault();
var cmd = UI.$(this).attr('data-uk-sort').split(':');
$this.sort(cmd[0], cmd[1]);
});
}
UI.$win.on('load resize orientationchange', UI.Utils.debounce(function(){
if ($this.currentfilter) {
$this.filter($this.currentfilter);
} else {
this.updateLayout();
}
}.bind(this), 100));
this.on('display.uk.check', function(){
if ($this.element.is(":visible")) $this.updateLayout();
});
UI.$html.on("changed.uk.dom", function(e) {
$this.updateLayout();
});
if (this.options.filter !== false) {
this.filter(this.options.filter);
} else {
this.updateLayout();
}
},
_prepareElements: function() {
var children = this.element.children(':not([data-grid-prepared])'), css;
// exit if no already prepared elements found
if (!children.length) {
return;
}
css = {
'position' : 'absolute',
'box-sizing' : 'border-box',
'width' : this.options.colwidth == 'auto' ? '' : this.options.colwidth
};
if (this.options.gutter) {
css['padding-left'] = this.gutterh;
css['padding-bottom'] = this.gutterv;
this.element.css('margin-left', this.gutterh * -1);
}
children.attr('data-grid-prepared', 'true').css(css);
},
updateLayout: function(elements) {
this._prepareElements();
elements = elements || this.element.children(':visible');
var $this = this,
children = elements,
maxwidth = this.element.width() + (2*this.gutterh) + 2,
left = 0,
top = 0,
positions = [],
item, width, height, pos, aX, aY, i, z, max, size;
this.trigger('beforeupdate.uk.grid', [children]);
children.each(function(index){
size = getElementSize(this);
item = UI.$(this);
width = size.outerWidth;
height = size.outerHeight;
left = 0;
top = 0;
for (i=0,max=positions.length;i<max;i++) {
pos = positions[i];
if (left <= pos.aX) { left = pos.aX; }
if (maxwidth < (left + width)) { left = 0; }
if (top <= pos.aY) { top = pos.aY; }
}
positions.push({
"ele" : item,
"top" : top,
"left" : left,
"width" : width,
"height" : height,
"aY" : (top + height),
"aX" : (left + width)
});
});
var posPrev, maxHeight = 0;
// fix top
for (i=0,max=positions.length;i<max;i++) {
pos = positions[i];
top = 0;
for (z=0;z<i;z++) {
posPrev = positions[z];
// (posPrev.left + 1) fixex 1px bug when using % based widths
if (pos.left < posPrev.aX && (posPrev.left +1) < pos.aX) {
top = posPrev.aY;
}
}
pos.top = top;
pos.aY = top + pos.height;
maxHeight = Math.max(maxHeight, pos.aY);
}
maxHeight = maxHeight - this.gutterv;
if (this.options.animation) {
this.element.stop().animate({'height': maxHeight}, 100);
positions.forEach(function(pos){
pos.ele.stop().animate({"top": pos.top, "left": pos.left, opacity: 1}, this.options.duration);
}.bind(this));
} else {
this.element.css('height', maxHeight);
positions.forEach(function(pos){
pos.ele.css({"top": pos.top, "left": pos.left, opacity: 1});
}.bind(this));
}
// make sure to trigger possible scrollpies etc.
setTimeout(function() {
UI.$doc.trigger('scrolling.uk.document');
}, 2 * this.options.duration * (this.options.animation ? 1:0));
this.trigger('afterupdate.uk.grid', [children]);
},
filter: function(filter) {
this.currentfilter = filter;
filter = filter || [];
if (typeof(filter) === 'string') {
filter = filter.split(/,/).map(function(item){ return item.trim(); });
}
var $this = this, children = this.element.children(), elements = {"visible": [], "hidden": []}, visible, hidden;
children.each(function(index){
var ele = UI.$(this), f = ele.attr('data-uk-filter'), infilter = filter.length ? false : true;
if (f) {
f = f.split(/,/).map(function(item){ return item.trim(); });
filter.forEach(function(item){
if (f.indexOf(item) > -1) infilter = true;
});
}
elements[infilter ? "visible":"hidden"].push(ele);
});
// convert to jQuery collections
elements.hidden = UI.$(elements.hidden).map(function () {return this[0];});
elements.visible = UI.$(elements.visible).map(function () {return this[0];});
elements.hidden.attr('aria-hidden', 'true').filter(':visible').fadeOut(this.options.duration);
elements.visible.attr('aria-hidden', 'false').filter(':hidden').css('opacity', 0).show();
$this.updateLayout(elements.visible);
if (this.controls && this.controls.length) {
this.controls.find('[data-uk-filter]').removeClass('uk-active').filter('[data-uk-filter="'+filter+'"]').addClass('uk-active');
}
},
sort: function(by, order){
order = order || 1;
// covert from string (asc|desc) to number
if (typeof(order) === 'string') {
order = order.toLowerCase() == 'desc' ? -1 : 1;
}
var elements = this.element.children();
elements.sort(function(a, b){
a = UI.$(a);
b = UI.$(b);
return (b.data(by) || '') < (a.data(by) || '') ? order : (order*-1);
}).appendTo(this.element);
this.updateLayout(elements.filter(':visible'));
if (this.controls && this.controls.length) {
this.controls.find('[data-uk-sort]').removeClass('uk-active').filter('[data-uk-sort="'+by+':'+(order == -1 ? 'desc':'asc')+'"]').addClass('uk-active');
}
}
});
/*!
* getSize v1.2.2
* measure size of elements
* MIT license
* https://github.com/desandro/get-size
*/
var _getSize = (function(){
var prefixes = 'Webkit Moz ms Ms O'.split(' ');
var docElemStyle = document.documentElement.style;
function getStyleProperty( propName ) {
if ( !propName ) {
return;
}
// test standard property first
if ( typeof docElemStyle[ propName ] === 'string' ) {
return propName;
}
// capitalize
propName = propName.charAt(0).toUpperCase() + propName.slice(1);
// test vendor specific properties
var prefixed;
for ( var i=0, len = prefixes.length; i < len; i++ ) {
prefixed = prefixes[i] + propName;
if ( typeof docElemStyle[ prefixed ] === 'string' ) {
return prefixed;
}
}
}
// -------------------------- helpers -------------------------- //
// get a number from a string, not a percentage
function getStyleSize( value ) {
var num = parseFloat( value );
// not a percent like '100%', and a number
var isValid = value.indexOf('%') === -1 && !isNaN( num );
return isValid && num;
}
function noop() {}
var logError = typeof console === 'undefined' ? noop : function( message ) {
console.error( message );
};
// -------------------------- measurements -------------------------- //
var measurements = [
'paddingLeft',
'paddingRight',
'paddingTop',
'paddingBottom',
'marginLeft',
'marginRight',
'marginTop',
'marginBottom',
'borderLeftWidth',
'borderRightWidth',
'borderTopWidth',
'borderBottomWidth'
];
function getZeroSize() {
var size = {
width: 0,
height: 0,
innerWidth: 0,
innerHeight: 0,
outerWidth: 0,
outerHeight: 0
};
for ( var i=0, len = measurements.length; i < len; i++ ) {
var measurement = measurements[i];
size[ measurement ] = 0;
}
return size;
}
// -------------------------- setup -------------------------- //
var isSetup = false;
var getStyle, boxSizingProp, isBoxSizeOuter;
/**
* setup vars and functions
* do it on initial getSize(), rather than on script load
* For Firefox bug https://bugzilla.mozilla.org/show_bug.cgi?id=548397
*/
function setup() {
// setup once
if ( isSetup ) {
return;
}
isSetup = true;
var getComputedStyle = window.getComputedStyle;
getStyle = ( function() {
var getStyleFn = getComputedStyle ?
function( elem ) {
return getComputedStyle( elem, null );
} :
function( elem ) {
return elem.currentStyle;
};
return function getStyle( elem ) {
var style = getStyleFn( elem );
if ( !style ) {
logError( 'Style returned ' + style +
'. Are you running this code in a hidden iframe on Firefox? ' +
'See http://bit.ly/getsizebug1' );
}
return style;
};
})();
// -------------------------- box sizing -------------------------- //
boxSizingProp = getStyleProperty('boxSizing');
/**
* WebKit measures the outer-width on style.width on border-box elems
* IE & Firefox measures the inner-width
*/
if ( boxSizingProp ) {
var div = document.createElement('div');
div.style.width = '200px';
div.style.padding = '1px 2px 3px 4px';
div.style.borderStyle = 'solid';
div.style.borderWidth = '1px 2px 3px 4px';
div.style[ boxSizingProp ] = 'border-box';
var body = document.body || document.documentElement;
body.appendChild( div );
var style = getStyle( div );
isBoxSizeOuter = getStyleSize( style.width ) === 200;
body.removeChild( div );
}
}
// -------------------------- getSize -------------------------- //
function getSize( elem ) {
setup();
// use querySeletor if elem is string
if ( typeof elem === 'string' ) {
elem = document.querySelector( elem );
}
// do not proceed on non-objects
if ( !elem || typeof elem !== 'object' || !elem.nodeType ) {
return;
}
var style = getStyle( elem );
// if hidden, everything is 0
if ( style.display === 'none' ) {
return getZeroSize();
}
var size = {};
size.width = elem.offsetWidth;
size.height = elem.offsetHeight;
var isBorderBox = size.isBorderBox = !!( boxSizingProp &&
style[ boxSizingProp ] && style[ boxSizingProp ] === 'border-box' );
// get all measurements
for ( var i=0, len = measurements.length; i < len; i++ ) {
var measurement = measurements[i];
var value = style[ measurement ];
var num = parseFloat( value );
// any 'auto', 'medium' value will be 0
size[ measurement ] = !isNaN( num ) ? num : 0;
}
var paddingWidth = size.paddingLeft + size.paddingRight;
var paddingHeight = size.paddingTop + size.paddingBottom;
var marginWidth = size.marginLeft + size.marginRight;
var marginHeight = size.marginTop + size.marginBottom;
var borderWidth = size.borderLeftWidth + size.borderRightWidth;
var borderHeight = size.borderTopWidth + size.borderBottomWidth;
var isBorderBoxSizeOuter = isBorderBox && isBoxSizeOuter;
// overwrite width and height if we can get it from style
var styleWidth = getStyleSize( style.width );
if ( styleWidth !== false ) {
size.width = styleWidth +
// add padding and border unless it's already including it
( isBorderBoxSizeOuter ? 0 : paddingWidth + borderWidth );
}
var styleHeight = getStyleSize( style.height );
if ( styleHeight !== false ) {
size.height = styleHeight +
// add padding and border unless it's already including it
( isBorderBoxSizeOuter ? 0 : paddingHeight + borderHeight );
}
size.innerWidth = size.width - ( paddingWidth + borderWidth );
size.innerHeight = size.height - ( paddingHeight + borderHeight );
size.outerWidth = size.width + marginWidth;
size.outerHeight = size.height + marginHeight;
return size;
}
return getSize;
})();
function getElementSize(ele) {
return _getSize(ele);
}
});

2
media/uikit/js/components/grid.min.js vendored Normal file

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1,621 @@
/*! UIkit 2.21.0 | http://www.getuikit.com | (c) 2014 YOOtheme | MIT License */
(function(addon) {
var component;
if (window.UIkit) {
component = addon(UIkit);
}
if (typeof define == "function" && define.amd) {
define("uikit-htmleditor", ["uikit"], function(){
return component || addon(UIkit);
});
}
})(function(UI) {
"use strict";
var editors = [];
UI.component('htmleditor', {
defaults: {
iframe : false,
mode : 'split',
markdown : false,
autocomplete : true,
height : 500,
maxsplitsize : 1000,
codemirror : { mode: 'htmlmixed', lineWrapping: true, dragDrop: false, autoCloseTags: true, matchTags: true, autoCloseBrackets: true, matchBrackets: true, indentUnit: 4, indentWithTabs: false, tabSize: 4, hintOptions: {completionSingle:false} },
toolbar : [ 'bold', 'italic', 'strike', 'link', 'image', 'blockquote', 'listUl', 'listOl' ],
lblPreview : 'Preview',
lblCodeview : 'HTML',
lblMarkedview: 'Markdown'
},
boot: function() {
// init code
UI.ready(function(context) {
UI.$('textarea[data-uk-htmleditor]', context).each(function() {
var editor = UI.$(this), obj;
if (!editor.data('htmleditor')) {
obj = UI.htmleditor(editor, UI.Utils.options(editor.attr('data-uk-htmleditor')));
}
});
});
},
init: function() {
var $this = this, tpl = UI.components.htmleditor.template;
this.CodeMirror = this.options.CodeMirror || CodeMirror;
this.buttons = {};
tpl = tpl.replace(/\{:lblPreview\}/g, this.options.lblPreview);
tpl = tpl.replace(/\{:lblCodeview\}/g, this.options.lblCodeview);
this.htmleditor = UI.$(tpl);
this.content = this.htmleditor.find('.uk-htmleditor-content');
this.toolbar = this.htmleditor.find('.uk-htmleditor-toolbar');
this.preview = this.htmleditor.find('.uk-htmleditor-preview').children().eq(0);
this.code = this.htmleditor.find('.uk-htmleditor-code');
this.element.before(this.htmleditor).appendTo(this.code);
this.editor = this.CodeMirror.fromTextArea(this.element[0], this.options.codemirror);
this.editor.htmleditor = this;
this.editor.on('change', UI.Utils.debounce(function() { $this.render(); }, 150));
this.editor.on('change', function() {
$this.editor.save();
$this.element.trigger('input');
});
this.code.find('.CodeMirror').css('height', this.options.height);
// iframe mode?
if (this.options.iframe) {
this.iframe = UI.$('<iframe class="uk-htmleditor-iframe" frameborder="0" scrolling="auto" height="100" width="100%"></iframe>');
this.preview.append(this.iframe);
// must open and close document object to start using it!
this.iframe[0].contentWindow.document.open();
this.iframe[0].contentWindow.document.close();
this.preview.container = UI.$(this.iframe[0].contentWindow.document).find('body');
// append custom stylesheet
if (typeof(this.options.iframe) === 'string') {
this.preview.container.parent().append('<link rel="stylesheet" href="'+this.options.iframe+'">');
}
} else {
this.preview.container = this.preview;
}
UI.$win.on('resize load', UI.Utils.debounce(function() { $this.fit(); }, 200));
var previewContainer = this.iframe ? this.preview.container:$this.preview.parent(),
codeContent = this.code.find('.CodeMirror-sizer'),
codeScroll = this.code.find('.CodeMirror-scroll').on('scroll', UI.Utils.debounce(function() {
if ($this.htmleditor.attr('data-mode') == 'tab') return;
// calc position
var codeHeight = codeContent.height() - codeScroll.height(),
previewHeight = previewContainer[0].scrollHeight - ($this.iframe ? $this.iframe.height() : previewContainer.height()),
ratio = previewHeight / codeHeight,
previewPostition = codeScroll.scrollTop() * ratio;
// apply new scroll
previewContainer.scrollTop(previewPostition);
}, 10));
this.htmleditor.on('click', '.uk-htmleditor-button-code, .uk-htmleditor-button-preview', function(e) {
e.preventDefault();
if ($this.htmleditor.attr('data-mode') == 'tab') {
$this.htmleditor.find('.uk-htmleditor-button-code, .uk-htmleditor-button-preview').removeClass('uk-active').filter(this).addClass('uk-active');
$this.activetab = UI.$(this).hasClass('uk-htmleditor-button-code') ? 'code' : 'preview';
$this.htmleditor.attr('data-active-tab', $this.activetab);
$this.editor.refresh();
}
});
// toolbar actions
this.htmleditor.on('click', 'a[data-htmleditor-button]', function() {
if (!$this.code.is(':visible')) return;
$this.trigger('action.' + UI.$(this).data('htmleditor-button'), [$this.editor]);
});
this.preview.parent().css('height', this.code.height());
// autocomplete
if (this.options.autocomplete && this.CodeMirror.showHint && this.CodeMirror.hint && this.CodeMirror.hint.html) {
this.editor.on('inputRead', UI.Utils.debounce(function() {
var doc = $this.editor.getDoc(), POS = doc.getCursor(), mode = $this.CodeMirror.innerMode($this.editor.getMode(), $this.editor.getTokenAt(POS).state).mode.name;
if (mode == 'xml') { //html depends on xml
var cur = $this.editor.getCursor(), token = $this.editor.getTokenAt(cur);
if (token.string.charAt(0) == '<' || token.type == 'attribute') {
$this.CodeMirror.showHint($this.editor, $this.CodeMirror.hint.html, { completeSingle: false });
}
}
}, 100));
}
this.debouncedRedraw = UI.Utils.debounce(function () { $this.redraw(); }, 5);
this.on('init.uk.component', function() {
$this.redraw();
});
this.element.attr('data-uk-check-display', 1).on('display.uk.check', function(e) {
if (this.htmleditor.is(":visible")) this.fit();
}.bind(this));
editors.push(this);
},
addButton: function(name, button) {
this.buttons[name] = button;
},
addButtons: function(buttons) {
UI.$.extend(this.buttons, buttons);
},
replaceInPreview: function(regexp, callback) {
var editor = this.editor, results = [], value = editor.getValue(), offset = -1;
this.currentvalue = this.currentvalue.replace(regexp, function() {
offset = value.indexOf(arguments[0], ++offset);
var match = {
matches: arguments,
from : translateOffset(offset),
to : translateOffset(offset + arguments[0].length),
replace: function(value) {
editor.replaceRange(value, match.from, match.to);
},
inRange: function(cursor) {
if (cursor.line === match.from.line && cursor.line === match.to.line) {
return cursor.ch >= match.from.ch && cursor.ch < match.to.ch;
}
return (cursor.line === match.from.line && cursor.ch >= match.from.ch) ||
(cursor.line > match.from.line && cursor.line < match.to.line) ||
(cursor.line === match.to.line && cursor.ch < match.to.ch);
}
};
var result = callback(match);
if (!result) {
return arguments[0];
}
results.push(match);
return result;
});
function translateOffset(offset) {
var result = editor.getValue().substring(0, offset).split('\n');
return { line: result.length - 1, ch: result[result.length - 1].length }
}
return results;
},
_buildtoolbar: function() {
if (!(this.options.toolbar && this.options.toolbar.length)) return;
var $this = this, bar = [];
this.toolbar.empty();
this.options.toolbar.forEach(function(button) {
if (!$this.buttons[button]) return;
var title = $this.buttons[button].title ? $this.buttons[button].title : button;
bar.push('<li><a data-htmleditor-button="'+button+'" title="'+title+'" data-uk-tooltip>'+$this.buttons[button].label+'</a></li>');
});
this.toolbar.html(bar.join('\n'));
},
fit: function() {
var mode = this.options.mode;
if (mode == 'split' && this.htmleditor.width() < this.options.maxsplitsize) {
mode = 'tab';
}
if (mode == 'tab') {
if (!this.activetab) {
this.activetab = 'code';
this.htmleditor.attr('data-active-tab', this.activetab);
}
this.htmleditor.find('.uk-htmleditor-button-code, .uk-htmleditor-button-preview').removeClass('uk-active')
.filter(this.activetab == 'code' ? '.uk-htmleditor-button-code' : '.uk-htmleditor-button-preview')
.addClass('uk-active');
}
this.editor.refresh();
this.preview.parent().css('height', this.code.height());
this.htmleditor.attr('data-mode', mode);
},
redraw: function() {
this._buildtoolbar();
this.render();
this.fit();
},
getMode: function() {
return this.editor.getOption('mode');
},
getCursorMode: function() {
var param = { mode: 'html'};
this.trigger('cursorMode', [param]);
return param.mode;
},
render: function() {
this.currentvalue = this.editor.getValue();
// empty code
if (!this.currentvalue) {
this.element.val('');
this.preview.container.html('');
return;
}
this.trigger('render', [this]);
this.trigger('renderLate', [this]);
this.preview.container.html(this.currentvalue);
},
addShortcut: function(name, callback) {
var map = {};
if (!UI.$.isArray(name)) {
name = [name];
}
name.forEach(function(key) {
map[key] = callback;
});
this.editor.addKeyMap(map);
return map;
},
addShortcutAction: function(action, shortcuts) {
var editor = this;
this.addShortcut(shortcuts, function() {
editor.element.trigger('action.' + action, [editor.editor]);
});
},
replaceSelection: function(replace) {
var text = this.editor.getSelection();
if (!text.length) {
var cur = this.editor.getCursor(),
curLine = this.editor.getLine(cur.line),
start = cur.ch,
end = start;
while (end < curLine.length && /[\w$]+/.test(curLine.charAt(end))) ++end;
while (start && /[\w$]+/.test(curLine.charAt(start - 1))) --start;
var curWord = start != end && curLine.slice(start, end);
if (curWord) {
this.editor.setSelection({ line: cur.line, ch: start}, { line: cur.line, ch: end });
text = curWord;
}
}
var html = replace.replace('$1', text);
this.editor.replaceSelection(html, 'end');
this.editor.focus();
},
replaceLine: function(replace) {
var pos = this.editor.getDoc().getCursor(),
text = this.editor.getLine(pos.line),
html = replace.replace('$1', text);
this.editor.replaceRange(html , { line: pos.line, ch: 0 }, { line: pos.line, ch: text.length });
this.editor.setCursor({ line: pos.line, ch: html.length });
this.editor.focus();
},
save: function() {
this.editor.save();
}
});
UI.components.htmleditor.template = [
'<div class="uk-htmleditor uk-clearfix" data-mode="split">',
'<div class="uk-htmleditor-navbar">',
'<ul class="uk-htmleditor-navbar-nav uk-htmleditor-toolbar"></ul>',
'<div class="uk-htmleditor-navbar-flip">',
'<ul class="uk-htmleditor-navbar-nav">',
'<li class="uk-htmleditor-button-code"><a>{:lblCodeview}</a></li>',
'<li class="uk-htmleditor-button-preview"><a>{:lblPreview}</a></li>',
'<li><a data-htmleditor-button="fullscreen"><i class="uk-icon-expand"></i></a></li>',
'</ul>',
'</div>',
'</div>',
'<div class="uk-htmleditor-content">',
'<div class="uk-htmleditor-code"></div>',
'<div class="uk-htmleditor-preview"><div></div></div>',
'</div>',
'</div>'
].join('');
UI.plugin('htmleditor', 'base', {
init: function(editor) {
editor.addButtons({
fullscreen: {
title : 'Fullscreen',
label : '<i class="uk-icon-expand"></i>'
},
bold : {
title : 'Bold',
label : '<i class="uk-icon-bold"></i>'
},
italic : {
title : 'Italic',
label : '<i class="uk-icon-italic"></i>'
},
strike : {
title : 'Strikethrough',
label : '<i class="uk-icon-strikethrough"></i>'
},
blockquote : {
title : 'Blockquote',
label : '<i class="uk-icon-quote-right"></i>'
},
link : {
title : 'Link',
label : '<i class="uk-icon-link"></i>'
},
image : {
title : 'Image',
label : '<i class="uk-icon-picture-o"></i>'
},
listUl : {
title : 'Unordered List',
label : '<i class="uk-icon-list-ul"></i>'
},
listOl : {
title : 'Ordered List',
label : '<i class="uk-icon-list-ol"></i>'
}
});
addAction('bold', '<strong>$1</strong>');
addAction('italic', '<em>$1</em>');
addAction('strike', '<del>$1</del>');
addAction('blockquote', '<blockquote><p>$1</p></blockquote>', 'replaceLine');
addAction('link', '<a href="http://">$1</a>');
addAction('image', '<img src="http://" alt="$1">');
var listfn = function() {
if (editor.getCursorMode() == 'html') {
var cm = editor.editor,
pos = cm.getDoc().getCursor(true),
posend = cm.getDoc().getCursor(false);
for (var i=pos.line; i<(posend.line+1);i++) {
cm.replaceRange('<li>'+cm.getLine(i)+'</li>', { line: i, ch: 0 }, { line: i, ch: cm.getLine(i).length });
}
cm.setCursor({ line: posend.line, ch: cm.getLine(posend.line).length });
cm.focus();
}
}
editor.on('action.listUl', function() {
listfn();
});
editor.on('action.listOl', function() {
listfn();
});
editor.htmleditor.on('click', 'a[data-htmleditor-button="fullscreen"]', function() {
editor.htmleditor.toggleClass('uk-htmleditor-fullscreen');
var wrap = editor.editor.getWrapperElement();
if (editor.htmleditor.hasClass('uk-htmleditor-fullscreen')) {
editor.editor.state.fullScreenRestore = {scrollTop: window.pageYOffset, scrollLeft: window.pageXOffset, width: wrap.style.width, height: wrap.style.height};
wrap.style.width = '';
wrap.style.height = editor.content.height()+'px';
document.documentElement.style.overflow = 'hidden';
} else {
document.documentElement.style.overflow = '';
var info = editor.editor.state.fullScreenRestore;
wrap.style.width = info.width; wrap.style.height = info.height;
window.scrollTo(info.scrollLeft, info.scrollTop);
}
setTimeout(function() {
editor.fit();
UI.$win.trigger('resize');
}, 50);
});
editor.addShortcut(['Ctrl-S', 'Cmd-S'], function() { editor.element.trigger('htmleditor-save', [editor]); });
editor.addShortcutAction('bold', ['Ctrl-B', 'Cmd-B']);
function addAction(name, replace, mode) {
editor.on('action.'+name, function() {
if (editor.getCursorMode() == 'html') {
editor[mode == 'replaceLine' ? 'replaceLine' : 'replaceSelection'](replace);
}
});
}
}
});
UI.plugin('htmleditor', 'markdown', {
init: function(editor) {
var parser = editor.options.mdparser || marked || null;
if (!parser) return;
if (editor.options.markdown) {
enableMarkdown();
}
addAction('bold', '**$1**');
addAction('italic', '*$1*');
addAction('strike', '~~$1~~');
addAction('blockquote', '> $1', 'replaceLine');
addAction('link', '[$1](http://)');
addAction('image', '![$1](http://)');
editor.on('action.listUl', function() {
if (editor.getCursorMode() == 'markdown') {
var cm = editor.editor,
pos = cm.getDoc().getCursor(true),
posend = cm.getDoc().getCursor(false);
for (var i=pos.line; i<(posend.line+1);i++) {
cm.replaceRange('* '+cm.getLine(i), { line: i, ch: 0 }, { line: i, ch: cm.getLine(i).length });
}
cm.setCursor({ line: posend.line, ch: cm.getLine(posend.line).length });
cm.focus();
}
});
editor.on('action.listOl', function() {
if (editor.getCursorMode() == 'markdown') {
var cm = editor.editor,
pos = cm.getDoc().getCursor(true),
posend = cm.getDoc().getCursor(false),
prefix = 1;
if (pos.line > 0) {
var prevline = cm.getLine(pos.line-1), matches;
if(matches = prevline.match(/^(\d+)\./)) {
prefix = Number(matches[1])+1;
}
}
for (var i=pos.line; i<(posend.line+1);i++) {
cm.replaceRange(prefix+'. '+cm.getLine(i), { line: i, ch: 0 }, { line: i, ch: cm.getLine(i).length });
prefix++;
}
cm.setCursor({ line: posend.line, ch: cm.getLine(posend.line).length });
cm.focus();
}
});
editor.on('renderLate', function() {
if (editor.editor.options.mode == 'gfm') {
editor.currentvalue = parser(editor.currentvalue);
}
});
editor.on('cursorMode', function(e, param) {
if (editor.editor.options.mode == 'gfm') {
var pos = editor.editor.getDoc().getCursor();
if (!editor.editor.getTokenAt(pos).state.base.htmlState) {
param.mode = 'markdown';
}
}
});
UI.$.extend(editor, {
enableMarkdown: function() {
enableMarkdown()
this.render();
},
disableMarkdown: function() {
this.editor.setOption('mode', 'htmlmixed');
this.htmleditor.find('.uk-htmleditor-button-code a').html(this.options.lblCodeview);
this.render();
}
});
// switch markdown mode on event
editor.on({
enableMarkdown : function() { editor.enableMarkdown(); },
disableMarkdown : function() { editor.disableMarkdown(); }
});
function enableMarkdown() {
editor.editor.setOption('mode', 'gfm');
editor.htmleditor.find('.uk-htmleditor-button-code a').html(editor.options.lblMarkedview);
}
function addAction(name, replace, mode) {
editor.on('action.'+name, function() {
if (editor.getCursorMode() == 'markdown') {
editor[mode == 'replaceLine' ? 'replaceLine' : 'replaceSelection'](replace);
}
});
}
}
});
return UI.htmleditor;
});

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1 @@
<html><body bgcolor="#FFFFFF"></body></html>

View File

@ -0,0 +1,544 @@
/*! UIkit 2.21.0 | http://www.getuikit.com | (c) 2014 YOOtheme | MIT License */
(function(addon) {
var component;
if (window.UIkit) {
component = addon(UIkit);
}
if (typeof define == "function" && define.amd) { // AMD
define("uikit-lightbox", ["uikit"], function(){
return component || addon(UIkit);
});
}
})(function(UI){
"use strict";
var modal, cache = {};
UI.component('lightbox', {
defaults: {
"group" : false,
"duration" : 400,
"keyboard" : true
},
index : 0,
items : false,
boot: function() {
UI.$html.on('click', '[data-uk-lightbox]', function(e){
e.preventDefault();
var link = UI.$(this);
if (!link.data("lightbox")) {
UI.lightbox(link, UI.Utils.options(link.attr("data-uk-lightbox")));
}
link.data("lightbox").show(link);
});
// keyboard navigation
UI.$doc.on('keyup', function(e) {
if (modal && modal.is(':visible') && modal.lightbox.options.keyboard) {
e.preventDefault();
switch(e.keyCode) {
case 37:
modal.lightbox.previous();
break;
case 39:
modal.lightbox.next();
break;
}
}
});
},
init: function() {
var $this = this, siblings = [];
this.index = 0;
this.siblings = [];
if (this.element && this.element.length) {
var domSiblings = this.options.group ? UI.$([
'[data-uk-lightbox*="'+this.options.group+'"]',
"[data-uk-lightbox*='"+this.options.group+"']"
].join(',')) : this.element;
domSiblings.each(function() {
var ele = UI.$(this);
siblings.push({
'source': ele.attr('href'),
'title' : ele.attr('title'),
'type' : ele.attr("data-lightbox-type") || 'auto',
'link' : ele
});
});
this.index = domSiblings.index(this.element);
this.siblings = siblings;
} else if (this.options.group && this.options.group.length) {
this.siblings = this.options.group;
}
this.trigger('lightbox-init', [this]);
},
show: function(index) {
this.modal = getModal(this);
// stop previous animation
this.modal.dialog.stop();
this.modal.content.stop();
var $this = this, promise = UI.$.Deferred(), data, item;
index = index || 0;
// index is a jQuery object or DOM element
if (typeof(index) == 'object') {
this.siblings.forEach(function(s, idx){
if (index[0] === s.link[0]) {
index = idx;
}
});
}
// fix index if needed
if ( index < 0 ) {
index = this.siblings.length - index;
} else if (!this.siblings[index]) {
index = 0;
}
item = this.siblings[index];
data = {
"lightbox" : $this,
"source" : item.source,
"type" : item.type,
"index" : index,
"promise" : promise,
"title" : item.title,
"item" : item,
"meta" : {
"content" : '',
"width" : null,
"height" : null
}
};
this.index = index;
this.modal.content.empty();
if (!this.modal.is(':visible')) {
this.modal.content.css({width:'', height:''}).empty();
this.modal.modal.show();
}
this.modal.loader.removeClass('uk-hidden');
promise.promise().done(function() {
$this.data = data;
$this.fitSize(data);
}).fail(function(){
data.meta.content = '<div class="uk-position-cover uk-flex uk-flex-middle uk-flex-center"><strong>Loading resource failed!</strong></div>';
data.meta.width = 400;
data.meta.height = 300;
$this.data = data;
$this.fitSize(data);
});
$this.trigger('showitem.uk.lightbox', [data]);
},
fitSize: function() {
var $this = this,
data = this.data,
pad = this.modal.dialog.outerWidth() - this.modal.dialog.width(),
dpadTop = parseInt(this.modal.dialog.css('margin-top'), 10),
dpadBot = parseInt(this.modal.dialog.css('margin-bottom'), 10),
dpad = dpadTop + dpadBot,
content = data.meta.content,
duration = $this.options.duration;
if (this.siblings.length > 1) {
content = [
content,
'<a href="#" class="uk-slidenav uk-slidenav-contrast uk-slidenav-previous uk-hidden-touch" data-lightbox-previous></a>',
'<a href="#" class="uk-slidenav uk-slidenav-contrast uk-slidenav-next uk-hidden-touch" data-lightbox-next></a>'
].join('');
}
// calculate width
var tmp = UI.$('<div>&nbsp;</div>').css({
'opacity' : 0,
'position' : 'absolute',
'top' : 0,
'left' : 0,
'width' : '100%',
'max-width' : $this.modal.dialog.css('max-width'),
'padding' : $this.modal.dialog.css('padding'),
'margin' : $this.modal.dialog.css('margin')
}), maxwidth, maxheight, w = data.meta.width, h = data.meta.height;
tmp.appendTo('body').width();
maxwidth = tmp.width();
maxheight = window.innerHeight - dpad;
tmp.remove();
this.modal.dialog.find('.uk-modal-caption').remove();
if (data.title) {
this.modal.dialog.append('<div class="uk-modal-caption">'+data.title+'</div>');
maxheight -= this.modal.dialog.find('.uk-modal-caption').outerHeight();
}
if (maxwidth < data.meta.width) {
h = Math.floor( h * (maxwidth / w) );
w = maxwidth;
}
if (maxheight < h) {
h = Math.floor(maxheight);
w = Math.ceil(data.meta.width * (maxheight/data.meta.height));
}
this.modal.content.css('opacity', 0).width(w).html(content);
if (data.type == 'iframe') {
this.modal.content.find('iframe:first').height(h);
}
var dh = h + pad,
t = Math.floor(window.innerHeight/2 - dh/2) - dpad;
if (t < 0) { t = 0; }
this.modal.closer.addClass('uk-hidden');
if ($this.modal.data('mwidth') == w && $this.modal.data('mheight') == h) {
duration = 0;
}
this.modal.dialog.animate({width: w + pad, height: h + pad, top: t }, duration, 'swing', function() {
$this.modal.loader.addClass('uk-hidden');
$this.modal.content.css({width:''}).animate({'opacity': 1}, function() {
$this.modal.closer.removeClass('uk-hidden');
});
$this.modal.data({'mwidth': w, 'mheight': h});
});
},
next: function() {
this.show(this.siblings[(this.index+1)] ? (this.index+1) : 0);
},
previous: function() {
this.show(this.siblings[(this.index-1)] ? (this.index-1) : this.siblings.length-1);
}
});
// Plugins
UI.plugin('lightbox', 'image', {
init: function(lightbox) {
lightbox.on("showitem.uk.lightbox", function(e, data){
if (data.type == 'image' || data.source && data.source.match(/\.(jpg|jpeg|png|gif|svg)$/i)) {
var resolve = function(source, width, height) {
data.meta = {
"content" : '<img class="uk-responsive-width" width="'+width+'" height="'+height+'" src ="'+source+'">',
"width" : width,
"height" : height
};
data.type = 'image';
data.promise.resolve();
};
if (!cache[data.source]) {
var img = new Image();
img.onerror = function(){
data.promise.reject('Loading image failed');
};
img.onload = function(){
cache[data.source] = {width: img.width, height: img.height};
resolve(data.source, cache[data.source].width, cache[data.source].height);
};
img.src = data.source;
} else {
resolve(data.source, cache[data.source].width, cache[data.source].height);
}
}
});
}
});
UI.plugin("lightbox", "youtube", {
init: function(lightbox) {
var youtubeRegExp = /(\/\/.*?youtube\.[a-z]+)\/watch\?v=([^&]+)&?(.*)/,
youtubeRegExpShort = /youtu\.be\/(.*)/;
lightbox.on("showitem.uk.lightbox", function(e, data){
var id, matches, resolve = function(id, width, height) {
data.meta = {
'content': '<iframe src="//www.youtube.com/embed/'+id+'" width="'+width+'" height="'+height+'" style="max-width:100%;"></iframe>',
'width': width,
'height': height
};
data.type = 'iframe';
data.promise.resolve();
};
if (matches = data.source.match(youtubeRegExp)) {
id = matches[2];
}
if (matches = data.source.match(youtubeRegExpShort)) {
id = matches[1];
}
if (id) {
if(!cache[id]) {
var img = new Image();
img.onerror = function(){
cache[id] = {width:640, height:320};
resolve(id, cache[id].width, cache[id].height);
};
img.onload = function(){
cache[id] = {width:img.width, height:img.height};
resolve(id, img.width, img.height);
};
img.src = '//img.youtube.com/vi/'+id+'/0.jpg';
} else {
resolve(id, cache[id].width, cache[id].height);
}
e.stopImmediatePropagation();
}
});
}
});
UI.plugin("lightbox", "vimeo", {
init: function(lightbox) {
var regex = /(\/\/.*?)vimeo\.[a-z]+\/([0-9]+).*?/, matches;
lightbox.on("showitem.uk.lightbox", function(e, data){
var id, resolve = function(id, width, height) {
data.meta = {
'content': '<iframe src="//player.vimeo.com/video/'+id+'" width="'+width+'" height="'+height+'" style="width:100%;box-sizing:border-box;"></iframe>',
'width': width,
'height': height
};
data.type = 'iframe';
data.promise.resolve();
};
if (matches = data.source.match(regex)) {
id = matches[2];
if(!cache[id]) {
UI.$.ajax({
type : 'GET',
url : 'http://vimeo.com/api/oembed.json?url=' + encodeURI(data.source),
jsonp : 'callback',
dataType : 'jsonp',
success : function(data) {
cache[id] = {width:data.width, height:data.height};
resolve(id, cache[id].width, cache[id].height);
}
});
} else {
resolve(id, cache[id].width, cache[id].height);
}
e.stopImmediatePropagation();
}
});
}
});
UI.plugin("lightbox", "video", {
init: function(lightbox) {
lightbox.on("showitem.uk.lightbox", function(e, data){
var resolve = function(source, width, height) {
data.meta = {
'content': '<video class="uk-responsive-width" src="'+source+'" width="'+width+'" height="'+height+'" controls></video>',
'width': width,
'height': height
};
data.type = 'video';
data.promise.resolve();
};
if (data.type == 'video' || data.source.match(/\.(mp4|webm|ogv)$/i)) {
if (!cache[data.source]) {
var vid = UI.$('<video style="position:fixed;visibility:hidden;top:-10000px;"></video>').attr('src', data.source).appendTo('body');
var idle = setInterval(function() {
if (vid[0].videoWidth) {
clearInterval(idle);
cache[data.source] = {width: vid[0].videoWidth, height: vid[0].videoHeight};
resolve(data.source, cache[data.source].width, cache[data.source].height);
vid.remove();
}
}, 20);
} else {
resolve(data.source, cache[data.source].width, cache[data.source].height);
}
}
});
}
});
function getModal(lightbox) {
if (modal) {
modal.lightbox = lightbox;
return modal;
}
// init lightbox container
modal = UI.$([
'<div class="uk-modal">',
'<div class="uk-modal-dialog uk-modal-dialog-lightbox uk-slidenav-position" style="margin-left:auto;margin-right:auto;width:200px;height:200px;top:'+Math.abs(window.innerHeight/2 - 200)+'px;">',
'<a href="#" class="uk-modal-close uk-close uk-close-alt"></a>',
'<div class="uk-lightbox-content"></div>',
'<div class="uk-modal-spinner uk-hidden"></div>',
'</div>',
'</div>'
].join('')).appendTo('body');
modal.dialog = modal.find('.uk-modal-dialog:first');
modal.content = modal.find('.uk-lightbox-content:first');
modal.loader = modal.find('.uk-modal-spinner:first');
modal.closer = modal.find('.uk-close.uk-close-alt');
modal.modal = UI.modal(modal, {modal:false});
// next / previous
modal.on("swipeRight swipeLeft", function(e) {
modal.lightbox[e.type=='swipeLeft' ? 'next':'previous']();
}).on("click", "[data-lightbox-previous], [data-lightbox-next]", function(e){
e.preventDefault();
modal.lightbox[UI.$(this).is('[data-lightbox-next]') ? 'next':'previous']();
});
// destroy content on modal hide
modal.on("hide.uk.modal", function(e) {
modal.content.html('');
});
UI.$win.on('load resize orientationchange', UI.Utils.debounce(function(e){
if (modal.is(':visible') && !UI.Utils.isFullscreen()) modal.lightbox.fitSize();
}.bind(this), 100));
modal.lightbox = lightbox;
return modal;
}
UI.lightbox.create = function(items, options) {
if (!items) return;
var group = [], o;
items.forEach(function(item) {
group.push(UI.$.extend({
'source' : '',
'title' : '',
'type' : 'auto',
'link' : false
}, (typeof(item) == 'string' ? {'source': item} : item)));
});
o = UI.lightbox(UI.$.extend({}, options, {'group':group}));
return o;
};
return UI.lightbox;
});

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1,625 @@
/*! UIkit 2.21.0 | http://www.getuikit.com | (c) 2014 YOOtheme | MIT License */
/*
* Based on Nestable jQuery Plugin - Copyright (c) 2012 David Bushell - http://dbushell.com/
*/
(function(addon) {
var component;
if (window.UIkit) {
component = addon(UIkit);
}
if (typeof define == "function" && define.amd) {
define("uikit-nestable", ["uikit"], function(){
return component || addon(UIkit);
});
}
})(function(UI) {
"use strict";
var hasTouch = 'ontouchstart' in window,
html = UI.$html,
touchedlists = [],
$win = UI.$win,
draggingElement, dragSource;
var eStart = hasTouch ? 'touchstart' : 'mousedown',
eMove = hasTouch ? 'touchmove' : 'mousemove',
eEnd = hasTouch ? 'touchend' : 'mouseup',
eCancel = hasTouch ? 'touchcancel' : 'mouseup';
UI.component('nestable', {
defaults: {
listBaseClass : 'uk-nestable',
listClass : 'uk-nestable-list',
listItemClass : 'uk-nestable-item',
dragClass : 'uk-nestable-dragged',
movingClass : 'uk-nestable-moving',
handleClass : '',
collapsedClass : 'uk-collapsed',
placeholderClass: 'uk-nestable-placeholder',
noDragClass : 'uk-nestable-nodrag',
group : false,
maxDepth : 10,
threshold : 20,
idlethreshold : 10
},
boot: function() {
// adjust document scrolling
UI.$html.on('mousemove touchmove', function(e) {
if (draggingElement) {
var top = draggingElement.offset().top;
if (top < UI.$win.scrollTop()) {
UI.$win.scrollTop(UI.$win.scrollTop() - Math.ceil(draggingElement.height()/2));
} else if ( (top + draggingElement.height()) > (window.innerHeight + UI.$win.scrollTop()) ) {
UI.$win.scrollTop(UI.$win.scrollTop() + Math.ceil(draggingElement.height()/2));
}
}
});
// init code
UI.ready(function(context) {
UI.$("[data-uk-nestable]", context).each(function(){
var ele = UI.$(this);
if (!ele.data("nestable")) {
UI.nestable(ele, UI.Utils.options(ele.attr("data-uk-nestable")));
}
});
});
},
init: function() {
var $this = this;
Object.keys(this.options).forEach(function(key){
if(String(key).indexOf('Class')!=-1) {
$this.options['_'+key] = '.' + $this.options[key];
}
});
this.find(this.options._listItemClass).find(">ul").addClass(this.options.listClass);
this.checkEmptyList();
this.reset();
this.element.data('nestable-group', this.options.group || UI.Utils.uid('nestable-group'));
this.find(this.options._listItemClass).each(function() {
$this.setParent(UI.$(this));
});
this.on('click', '[data-nestable-action]', function(e) {
if ($this.dragEl || (!hasTouch && e.button !== 0)) {
return;
}
e.preventDefault();
var target = UI.$(e.currentTarget),
action = target.data('nestableAction'),
item = target.closest($this.options._listItemClass);
if (action === 'collapse') {
$this.collapseItem(item);
}
if (action === 'expand') {
$this.expandItem(item);
}
if (action === 'toggle') {
$this.toggleItem(item);
}
});
var onStartEvent = function(e) {
var handle = UI.$(e.target);
if (e.target === $this.element[0]) {
return;
}
if (handle.is($this.options._noDragClass) || handle.closest($this.options._noDragClass).length) {
return;
}
if (handle.is('[data-nestable-action]') || handle.closest('[data-nestable-action]').length) {
return;
}
if ($this.options.handleClass && !handle.hasClass($this.options.handleClass)) {
if ($this.options.handleClass) {
handle = handle.closest($this.options._handleClass);
}
}
if (!handle.length || $this.dragEl || (!hasTouch && e.button !== 0) || (hasTouch && e.touches.length !== 1)) {
return;
}
if (e.originalEvent && e.originalEvent.touches) {
e = evt.originalEvent.touches[0];
}
$this.delayMove = function(evt) {
evt.preventDefault();
$this.dragStart(e);
$this.trigger('start.uk.nestable', [$this]);
$this.delayMove = false;
};
$this.delayMove.x = parseInt(e.pageX, 10);
$this.delayMove.y = parseInt(e.pageY, 10);
$this.delayMove.threshold = $this.options.idlethreshold;
e.preventDefault();
};
var onMoveEvent = function(e) {
if (e.originalEvent && e.originalEvent.touches) {
e = e.originalEvent.touches[0];
}
if ($this.delayMove && (Math.abs(e.pageX - $this.delayMove.x) > $this.delayMove.threshold || Math.abs(e.pageY - $this.delayMove.y) > $this.delayMove.threshold)) {
if (!window.getSelection().toString()) {
$this.delayMove(e);
} else {
$this.delayMove = false;
}
}
if ($this.dragEl) {
e.preventDefault();
$this.dragMove(e);
$this.trigger('move.uk.nestable', [$this]);
}
};
var onEndEvent = function(e) {
if ($this.dragEl) {
e.preventDefault();
$this.dragStop(hasTouch ? e.touches[0] : e);
}
draggingElement = false;
$this.delayMove = false;
};
if (hasTouch) {
this.element[0].addEventListener(eStart, onStartEvent, false);
window.addEventListener(eMove, onMoveEvent, false);
window.addEventListener(eEnd, onEndEvent, false);
window.addEventListener(eCancel, onEndEvent, false);
} else {
this.on(eStart, onStartEvent);
$win.on(eMove, onMoveEvent);
$win.on(eEnd, onEndEvent);
}
},
serialize: function() {
var data,
depth = 0,
list = this,
step = function(level, depth) {
var array = [ ], items = level.children(list.options._listItemClass);
items.each(function() {
var li = UI.$(this),
item = {}, attribute,
sub = li.children(list.options._listClass);
for (var i = 0; i < li[0].attributes.length; i++) {
attribute = li[0].attributes[i];
if (attribute.name.indexOf('data-') === 0) {
item[attribute.name.substr(5)] = UI.Utils.str2json(attribute.value);
}
}
if (sub.length) {
item.children = step(sub, depth + 1);
}
array.push(item);
});
return array;
};
data = step(list.element, depth);
return data;
},
list: function(options) {
var data = [],
list = this,
depth = 0,
step = function(level, depth, parent) {
var items = level.children(options._listItemClass);
items.each(function(index) {
var li = UI.$(this),
item = UI.$.extend({parent_id: (parent ? parent : null), depth: depth, order: index}, li.data()),
sub = li.children(options._listClass);
data.push(item);
if (sub.length) {
step(sub, depth + 1, li.data(options.idProperty || 'id'));
}
});
};
options = UI.$.extend({}, list.options, options);
step(list.element, depth);
return data;
},
reset: function() {
this.mouse = {
offsetX : 0,
offsetY : 0,
startX : 0,
startY : 0,
lastX : 0,
lastY : 0,
nowX : 0,
nowY : 0,
distX : 0,
distY : 0,
dirAx : 0,
dirX : 0,
dirY : 0,
lastDirX : 0,
lastDirY : 0,
distAxX : 0,
distAxY : 0
};
this.moving = false;
this.dragEl = null;
this.dragRootEl = null;
this.dragDepth = 0;
this.hasNewRoot = false;
this.pointEl = null;
for (var i=0; i<touchedlists.length; i++) {
this.checkEmptyList(touchedlists[i]);
}
touchedlists = [];
},
toggleItem: function(li) {
this[li.hasClass(this.options.collapsedClass) ? "expandItem":"collapseItem"](li);
},
expandItem: function(li) {
li.removeClass(this.options.collapsedClass);
},
collapseItem: function(li) {
var lists = li.children(this.options._listClass);
if (lists.length) {
li.addClass(this.options.collapsedClass);
}
},
expandAll: function() {
var list = this;
this.find(list.options._listItemClass).each(function() {
list.expandItem(UI.$(this));
});
},
collapseAll: function() {
var list = this;
this.find(list.options._listItemClass).each(function() {
list.collapseItem(UI.$(this));
});
},
setParent: function(li) {
if (li.children(this.options._listClass).length) {
li.addClass("uk-parent");
}
},
unsetParent: function(li) {
li.removeClass('uk-parent '+this.options.collapsedClass);
li.children(this.options._listClass).remove();
},
dragStart: function(e) {
var mouse = this.mouse,
target = UI.$(e.target),
dragItem = target.closest(this.options._listItemClass),
offset = dragItem.offset();
this.placeEl = dragItem;
mouse.offsetX = e.pageX - offset.left;
mouse.offsetY = e.pageY - offset.top;
mouse.startX = mouse.lastX = offset.left;
mouse.startY = mouse.lastY = offset.top;
this.dragRootEl = this.element;
this.dragEl = UI.$('<ul></ul>').addClass(this.options.listClass + ' ' + this.options.dragClass).append(dragItem.clone());
this.dragEl.css('width', dragItem.width());
this.placeEl.addClass(this.options.placeholderClass);
draggingElement = this.dragEl;
this.tmpDragOnSiblings = [dragItem[0].previousSibling, dragItem[0].nextSibling];
UI.$body.append(this.dragEl);
this.dragEl.css({
left : offset.left,
top : offset.top
});
// total depth of dragging item
var i, depth, items = this.dragEl.find(this.options._listItemClass);
for (i = 0; i < items.length; i++) {
depth = UI.$(items[i]).parents(this.options._listClass+','+this.options._listBaseClass).length;
if (depth > this.dragDepth) {
this.dragDepth = depth;
}
}
html.addClass(this.options.movingClass);
},
dragStop: function(e) {
var el = this.placeEl,
root = this.placeEl.parents(this.options._listBaseClass+':first');
this.placeEl.removeClass(this.options.placeholderClass);
this.dragEl.remove();
if (this.element[0] !== root[0]) {
root.trigger('change.uk.nestable',[el, "added", root, root.data('nestable')]);
this.element.trigger('change.uk.nestable', [el, "removed", this.element, this]);
} else {
this.element.trigger('change.uk.nestable',[el, "moved", this.element, this]);
}
this.trigger('stop.uk.nestable', [this, el]);
this.reset();
html.removeClass(this.options.movingClass);
},
dragMove: function(e) {
var list, parent, prev, next, depth,
opt = this.options,
mouse = this.mouse,
maxDepth = this.dragRootEl ? this.dragRootEl.data('nestable').options.maxDepth : opt.maxDepth;
this.dragEl.css({
left : e.pageX - mouse.offsetX,
top : e.pageY - mouse.offsetY
});
// mouse position last events
mouse.lastX = mouse.nowX;
mouse.lastY = mouse.nowY;
// mouse position this events
mouse.nowX = e.pageX;
mouse.nowY = e.pageY;
// distance mouse moved between events
mouse.distX = mouse.nowX - mouse.lastX;
mouse.distY = mouse.nowY - mouse.lastY;
// direction mouse was moving
mouse.lastDirX = mouse.dirX;
mouse.lastDirY = mouse.dirY;
// direction mouse is now moving (on both axis)
mouse.dirX = mouse.distX === 0 ? 0 : mouse.distX > 0 ? 1 : -1;
mouse.dirY = mouse.distY === 0 ? 0 : mouse.distY > 0 ? 1 : -1;
// axis mouse is now moving on
var newAx = Math.abs(mouse.distX) > Math.abs(mouse.distY) ? 1 : 0;
// do nothing on first move
if (!mouse.moving) {
mouse.dirAx = newAx;
mouse.moving = true;
return;
}
// calc distance moved on this axis (and direction)
if (mouse.dirAx !== newAx) {
mouse.distAxX = 0;
mouse.distAxY = 0;
} else {
mouse.distAxX += Math.abs(mouse.distX);
if (mouse.dirX !== 0 && mouse.dirX !== mouse.lastDirX) {
mouse.distAxX = 0;
}
mouse.distAxY += Math.abs(mouse.distY);
if (mouse.dirY !== 0 && mouse.dirY !== mouse.lastDirY) {
mouse.distAxY = 0;
}
}
mouse.dirAx = newAx;
/**
* move horizontal
*/
if (mouse.dirAx && mouse.distAxX >= opt.threshold) {
// reset move distance on x-axis for new phase
mouse.distAxX = 0;
prev = this.placeEl.prev('li');
// increase horizontal level if previous sibling exists and is not collapsed
if (mouse.distX > 0 && prev.length && !prev.hasClass(opt.collapsedClass)) {
// cannot increase level when item above is collapsed
list = prev.find(opt._listClass).last();
// check if depth limit has reached
depth = this.placeEl.parents(opt._listClass+','+opt._listBaseClass).length;
if (depth + this.dragDepth <= maxDepth) {
// create new sub-level if one doesn't exist
if (!list.length) {
list = UI.$('<ul/>').addClass(opt.listClass);
list.append(this.placeEl);
prev.append(list);
this.setParent(prev);
} else {
// else append to next level up
list = prev.children(opt._listClass).last();
list.append(this.placeEl);
}
}
}
// decrease horizontal level
if (mouse.distX < 0) {
// we can't decrease a level if an item preceeds the current one
next = this.placeEl.next('li');
if (!next.length) {
parent = this.placeEl.parent();
this.placeEl.closest(opt._listItemClass).after(this.placeEl);
if (!parent.children().length) {
this.unsetParent(parent.parent());
}
}
}
}
var isEmpty = false;
// find list item under cursor
var pointX = this.dragEl.offset().left - (window.pageXOffset || document.scrollLeft || 0),
pointY = e.pageY - (window.pageYOffset || document.documentElement.scrollTop);
this.pointEl = UI.$(document.elementFromPoint(pointX, pointY));
if (opt.handleClass && this.pointEl.hasClass(opt.handleClass)) {
this.pointEl = this.pointEl.closest(opt._listItemClass);
} else {
var nestableitem = this.pointEl.closest(opt._listItemClass);
if (nestableitem.length) {
this.pointEl = nestableitem;
}
}
if (this.placeEl.find(this.pointEl).length) {
return;
}
if (this.pointEl.data('nestable') && !this.pointEl.children().length) {
isEmpty = true;
this.checkEmptyList(this.pointEl);
} else if (!this.pointEl.length || !this.pointEl.hasClass(opt.listItemClass)) {
return;
}
// find parent list of item under cursor
var pointElRoot = this.element,
tmpRoot = this.pointEl.closest(this.options._listBaseClass),
isNewRoot = pointElRoot[0] !== this.pointEl.closest(this.options._listBaseClass)[0];
/**
* move vertical
*/
if (!mouse.dirAx || isNewRoot || isEmpty) {
// check if groups match if dragging over new root
if (isNewRoot && opt.group !== tmpRoot.data('nestable-group')) {
return;
} else {
touchedlists.push(pointElRoot);
}
// check depth limit
depth = this.dragDepth - 1 + this.pointEl.parents(opt._listClass+','+opt._listBaseClass).length;
if (depth > maxDepth) {
return;
}
var before = e.pageY < (this.pointEl.offset().top + this.pointEl.height() / 2);
parent = this.placeEl.parent();
if (isEmpty) {
this.pointEl.append(this.placeEl);
} else if (before) {
this.pointEl.before(this.placeEl);
} else {
this.pointEl.after(this.placeEl);
}
if (!parent.children().length) {
if (!parent.data("nestable")) this.unsetParent(parent.parent());
}
this.checkEmptyList(this.dragRootEl);
this.checkEmptyList(pointElRoot);
// parent root list has changed
if (isNewRoot) {
this.dragRootEl = tmpRoot;
this.hasNewRoot = this.element[0] !== this.dragRootEl[0];
}
}
},
checkEmptyList: function(list) {
list = list ? UI.$(list) : this.element;
if (!list.children().length) {
list.html('');
}
}
});
return UI.nestable;
});

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1,191 @@
/*! UIkit 2.21.0 | http://www.getuikit.com | (c) 2014 YOOtheme | MIT License */
(function(addon) {
var component;
if (window.UIkit) {
component = addon(UIkit);
}
if (typeof define == "function" && define.amd) {
define("uikit-notify", ["uikit"], function(){
return component || addon(UIkit);
});
}
})(function(UI){
"use strict";
var containers = {},
messages = {},
notify = function(options){
if (UI.$.type(options) == 'string') {
options = { message: options };
}
if (arguments[1]) {
options = UI.$.extend(options, UI.$.type(arguments[1]) == 'string' ? {status:arguments[1]} : arguments[1]);
}
return (new Message(options)).show();
},
closeAll = function(group, instantly){
var id;
if (group) {
for(id in messages) { if(group===messages[id].group) messages[id].close(instantly); }
} else {
for(id in messages) { messages[id].close(instantly); }
}
};
var Message = function(options){
var $this = this;
this.options = UI.$.extend({}, Message.defaults, options);
this.uuid = UI.Utils.uid("notifymsg");
this.element = UI.$([
'<div class="uk-notify-message">',
'<a class="uk-close"></a>',
'<div></div>',
'</div>'
].join('')).data("notifyMessage", this);
this.content(this.options.message);
// status
if (this.options.status) {
this.element.addClass('uk-notify-message-'+this.options.status);
this.currentstatus = this.options.status;
}
this.group = this.options.group;
messages[this.uuid] = this;
if(!containers[this.options.pos]) {
containers[this.options.pos] = UI.$('<div class="uk-notify uk-notify-'+this.options.pos+'"></div>').appendTo('body').on("click", ".uk-notify-message", function(){
var message = UI.$(this).data("notifyMessage");
message.element.trigger('manualclose.uk.notify', [message]);
message.close();
});
}
};
UI.$.extend(Message.prototype, {
uuid: false,
element: false,
timout: false,
currentstatus: "",
group: false,
show: function() {
if (this.element.is(":visible")) return;
var $this = this;
containers[this.options.pos].show().prepend(this.element);
var marginbottom = parseInt(this.element.css("margin-bottom"), 10);
this.element.css({"opacity":0, "margin-top": -1*this.element.outerHeight(), "margin-bottom":0}).animate({"opacity":1, "margin-top": 0, "margin-bottom":marginbottom}, function(){
if ($this.options.timeout) {
var closefn = function(){ $this.close(); };
$this.timeout = setTimeout(closefn, $this.options.timeout);
$this.element.hover(
function() { clearTimeout($this.timeout); },
function() { $this.timeout = setTimeout(closefn, $this.options.timeout); }
);
}
});
return this;
},
close: function(instantly) {
var $this = this,
finalize = function(){
$this.element.remove();
if (!containers[$this.options.pos].children().length) {
containers[$this.options.pos].hide();
}
$this.options.onClose.apply($this, []);
$this.element.trigger('close.uk.notify', [$this]);
delete messages[$this.uuid];
};
if (this.timeout) clearTimeout(this.timeout);
if (instantly) {
finalize();
} else {
this.element.animate({"opacity":0, "margin-top": -1* this.element.outerHeight(), "margin-bottom":0}, function(){
finalize();
});
}
},
content: function(html){
var container = this.element.find(">div");
if(!html) {
return container.html();
}
container.html(html);
return this;
},
status: function(status) {
if (!status) {
return this.currentstatus;
}
this.element.removeClass('uk-notify-message-'+this.currentstatus).addClass('uk-notify-message-'+status);
this.currentstatus = status;
return this;
}
});
Message.defaults = {
message: "",
status: "",
timeout: 5000,
group: null,
pos: 'top-center',
onClose: function() {}
};
UI.notify = notify;
UI.notify.message = Message;
UI.notify.closeAll = closeAll;
return notify;
});

View File

@ -0,0 +1,2 @@
/*! UIkit 2.21.0 | http://www.getuikit.com | (c) 2014 YOOtheme | MIT License */
!function(t){var e;window.UIkit&&(e=t(UIkit)),"function"==typeof define&&define.amd&&define("uikit-notify",["uikit"],function(){return e||t(UIkit)})}(function(t){"use strict";var e={},i={},s=function(e){return"string"==t.$.type(e)&&(e={message:e}),arguments[1]&&(e=t.$.extend(e,"string"==t.$.type(arguments[1])?{status:arguments[1]}:arguments[1])),new n(e).show()},o=function(t,e){var s;if(t)for(s in i)t===i[s].group&&i[s].close(e);else for(s in i)i[s].close(e)},n=function(s){this.options=t.$.extend({},n.defaults,s),this.uuid=t.Utils.uid("notifymsg"),this.element=t.$(['<div class="uk-notify-message">','<a class="uk-close"></a>',"<div></div>","</div>"].join("")).data("notifyMessage",this),this.content(this.options.message),this.options.status&&(this.element.addClass("uk-notify-message-"+this.options.status),this.currentstatus=this.options.status),this.group=this.options.group,i[this.uuid]=this,e[this.options.pos]||(e[this.options.pos]=t.$('<div class="uk-notify uk-notify-'+this.options.pos+'"></div>').appendTo("body").on("click",".uk-notify-message",function(){var e=t.$(this).data("notifyMessage");e.element.trigger("manualclose.uk.notify",[e]),e.close()}))};return t.$.extend(n.prototype,{uuid:!1,element:!1,timout:!1,currentstatus:"",group:!1,show:function(){if(!this.element.is(":visible")){var t=this;e[this.options.pos].show().prepend(this.element);var i=parseInt(this.element.css("margin-bottom"),10);return this.element.css({opacity:0,"margin-top":-1*this.element.outerHeight(),"margin-bottom":0}).animate({opacity:1,"margin-top":0,"margin-bottom":i},function(){if(t.options.timeout){var e=function(){t.close()};t.timeout=setTimeout(e,t.options.timeout),t.element.hover(function(){clearTimeout(t.timeout)},function(){t.timeout=setTimeout(e,t.options.timeout)})}}),this}},close:function(t){var s=this,o=function(){s.element.remove(),e[s.options.pos].children().length||e[s.options.pos].hide(),s.options.onClose.apply(s,[]),s.element.trigger("close.uk.notify",[s]),delete i[s.uuid]};this.timeout&&clearTimeout(this.timeout),t?o():this.element.animate({opacity:0,"margin-top":-1*this.element.outerHeight(),"margin-bottom":0},function(){o()})},content:function(t){var e=this.element.find(">div");return t?(e.html(t),this):e.html()},status:function(t){return t?(this.element.removeClass("uk-notify-message-"+this.currentstatus).addClass("uk-notify-message-"+t),this.currentstatus=t,this):this.currentstatus}}),n.defaults={message:"",status:"",timeout:5e3,group:null,pos:"top-center",onClose:function(){}},t.notify=s,t.notify.message=n,t.notify.closeAll=o,s});

View File

@ -0,0 +1,148 @@
/*! UIkit 2.21.0 | http://www.getuikit.com | (c) 2014 YOOtheme | MIT License */
/*
* Based on simplePagination - Copyright (c) 2012 Flavius Matis - http://flaviusmatis.github.com/simplePagination.js/ (MIT)
*/
(function(addon) {
var component;
if (window.UIkit) {
component = addon(UIkit);
}
if (typeof define == "function" && define.amd) {
define("uikit-pagination", ["uikit"], function(){
return component || addon(UIkit);
});
}
})(function(UI){
"use strict";
UI.component('pagination', {
defaults: {
items : 1,
itemsOnPage : 1,
pages : 0,
displayedPages : 3,
edges : 3,
currentPage : 1,
lblPrev : false,
lblNext : false,
onSelectPage : function() {}
},
boot: function() {
// init code
UI.ready(function(context) {
UI.$("[data-uk-pagination]", context).each(function(){
var ele = UI.$(this);
if (!ele.data("pagination")) {
var obj = UI.pagination(ele, UI.Utils.options(ele.attr("data-uk-pagination")));
}
});
});
},
init: function() {
var $this = this;
this.pages = this.options.pages ? this.options.pages : Math.ceil(this.options.items / this.options.itemsOnPage) ? Math.ceil(this.options.items / this.options.itemsOnPage) : 1;
this.currentPage = this.options.currentPage - 1;
this.halfDisplayed = this.options.displayedPages / 2;
this.on("click", "a[data-page]", function(e){
e.preventDefault();
$this.selectPage(UI.$(this).data("page"));
});
this._render();
},
_getInterval: function() {
return {
start: Math.ceil(this.currentPage > this.halfDisplayed ? Math.max(Math.min(this.currentPage - this.halfDisplayed, (this.pages - this.options.displayedPages)), 0) : 0),
end : Math.ceil(this.currentPage > this.halfDisplayed ? Math.min(this.currentPage + this.halfDisplayed, this.pages) : Math.min(this.options.displayedPages, this.pages))
};
},
render: function(pages) {
this.pages = pages ? pages : this.pages;
this._render();
},
selectPage: function(pageIndex, pages) {
this.currentPage = pageIndex;
this.render(pages);
this.options.onSelectPage.apply(this, [pageIndex]);
this.trigger('select.uk.pagination', [pageIndex, this]);
},
_render: function() {
var o = this.options, interval = this._getInterval(), i;
this.element.empty();
// Generate Prev link
if (o.lblPrev) this._append(o.currentPage - 1, {text: o.lblPrev});
// Generate start edges
if (interval.start > 0 && o.edges > 0) {
var end = Math.min(o.edges, interval.start);
for (i = 0; i < end; i++) this._append(i);
if (o.edges < interval.start && (interval.start - o.edges != 1)) {
this.element.append('<li><span>...</span></li>');
} else if (interval.start - o.edges == 1) {
this._append(o.edges);
}
}
// Generate interval links
for (i = interval.start; i < interval.end; i++) this._append(i);
// Generate end edges
if (interval.end < this.pages && o.edges > 0) {
if (this.pages - o.edges > interval.end && (this.pages - o.edges - interval.end != 1)) {
this.element.append('<li><span>...</span></li>');
} else if (this.pages - o.edges - interval.end == 1) {
this._append(interval.end++);
}
var begin = Math.max(this.pages - o.edges, interval.end);
for (i = begin; i < this.pages; i++) this._append(i);
}
// Generate Next link (unless option is set for at front)
if (o.lblNext) this._append(o.currentPage + 1, {text: o.lblNext});
},
_append: function(pageIndex, opts) {
var $this = this, item, link, options;
pageIndex = pageIndex < 0 ? 0 : (pageIndex < this.pages ? pageIndex : this.pages - 1);
options = UI.$.extend({ text: pageIndex + 1 }, opts);
item = (pageIndex == this.currentPage) ? '<li class="uk-active"><span>' + (options.text) + '</span></li>'
: '<li><a href="#page-'+(pageIndex+1)+'" data-page="'+pageIndex+'">'+options.text+'</a></li>';
this.element.append(item);
}
});
return UI.pagination;
});

View File

@ -0,0 +1,2 @@
/*! UIkit 2.21.0 | http://www.getuikit.com | (c) 2014 YOOtheme | MIT License */
!function(t){var e;window.UIkit&&(e=t(UIkit)),"function"==typeof define&&define.amd&&define("uikit-pagination",["uikit"],function(){return e||t(UIkit)})}(function(t){"use strict";return t.component("pagination",{defaults:{items:1,itemsOnPage:1,pages:0,displayedPages:3,edges:3,currentPage:1,lblPrev:!1,lblNext:!1,onSelectPage:function(){}},boot:function(){t.ready(function(e){t.$("[data-uk-pagination]",e).each(function(){var e=t.$(this);if(!e.data("pagination")){t.pagination(e,t.Utils.options(e.attr("data-uk-pagination")))}})})},init:function(){var e=this;this.pages=this.options.pages?this.options.pages:Math.ceil(this.options.items/this.options.itemsOnPage)?Math.ceil(this.options.items/this.options.itemsOnPage):1,this.currentPage=this.options.currentPage-1,this.halfDisplayed=this.options.displayedPages/2,this.on("click","a[data-page]",function(i){i.preventDefault(),e.selectPage(t.$(this).data("page"))}),this._render()},_getInterval:function(){return{start:Math.ceil(this.currentPage>this.halfDisplayed?Math.max(Math.min(this.currentPage-this.halfDisplayed,this.pages-this.options.displayedPages),0):0),end:Math.ceil(this.currentPage>this.halfDisplayed?Math.min(this.currentPage+this.halfDisplayed,this.pages):Math.min(this.options.displayedPages,this.pages))}},render:function(t){this.pages=t?t:this.pages,this._render()},selectPage:function(t,e){this.currentPage=t,this.render(e),this.options.onSelectPage.apply(this,[t]),this.trigger("select.uk.pagination",[t,this])},_render:function(){var t,e=this.options,i=this._getInterval();if(this.element.empty(),e.lblPrev&&this._append(e.currentPage-1,{text:e.lblPrev}),i.start>0&&e.edges>0){var s=Math.min(e.edges,i.start);for(t=0;s>t;t++)this._append(t);e.edges<i.start&&i.start-e.edges!=1?this.element.append("<li><span>...</span></li>"):i.start-e.edges==1&&this._append(e.edges)}for(t=i.start;t<i.end;t++)this._append(t);if(i.end<this.pages&&e.edges>0){this.pages-e.edges>i.end&&this.pages-e.edges-i.end!=1?this.element.append("<li><span>...</span></li>"):this.pages-e.edges-i.end==1&&this._append(i.end++);var a=Math.max(this.pages-e.edges,i.end);for(t=a;t<this.pages;t++)this._append(t)}e.lblNext&&this._append(e.currentPage+1,{text:e.lblNext})},_append:function(e,i){var s,a;e=0>e?0:e<this.pages?e:this.pages-1,a=t.$.extend({text:e+1},i),s=e==this.currentPage?'<li class="uk-active"><span>'+a.text+"</span></li>":'<li><a href="#page-'+(e+1)+'" data-page="'+e+'">'+a.text+"</a></li>",this.element.append(s)}}),t.pagination});

View File

@ -0,0 +1,417 @@
/*! UIkit 2.21.0 | http://www.getuikit.com | (c) 2014 YOOtheme | MIT License */
(function(addon) {
var component;
if (window.UIkit) {
component = addon(UIkit);
}
if (typeof define == "function" && define.amd) {
define("uikit-parallax", ["uikit"], function(){
return component || addon(UIkit);
});
}
})(function(UI){
"use strict";
var parallaxes = [],
supports3d = false,
scrolltop = 0,
wh = window.innerHeight,
checkParallaxes = function() {
scrolltop = UI.$win.scrollTop();
window.requestAnimationFrame.apply(window, [function(){
for (var i=0; i < parallaxes.length; i++) {
parallaxes[i].process();
}
}]);
};
UI.component('parallax', {
defaults: {
velocity : 0.5,
target : false,
viewport : false,
media : false
},
boot: function() {
supports3d = (function(){
var el = document.createElement('div'),
has3d,
transforms = {
'WebkitTransform':'-webkit-transform',
'MSTransform':'-ms-transform',
'MozTransform':'-moz-transform',
'Transform':'transform'
};
// Add it to the body to get the computed style.
document.body.insertBefore(el, null);
for (var t in transforms) {
if (el.style[t] !== undefined) {
el.style[t] = "translate3d(1px,1px,1px)";
has3d = window.getComputedStyle(el).getPropertyValue(transforms[t]);
}
}
document.body.removeChild(el);
return (has3d !== undefined && has3d.length > 0 && has3d !== "none");
})();
// listen to scroll and resize
UI.$doc.on("scrolling.uk.document", checkParallaxes);
UI.$win.on("load resize orientationchange", UI.Utils.debounce(function(){
wh = window.innerHeight;
checkParallaxes();
}, 50));
// init code
UI.ready(function(context) {
UI.$('[data-uk-parallax]', context).each(function() {
var parallax = UI.$(this);
if (!parallax.data("parallax")) {
var obj = UI.parallax(parallax, UI.Utils.options(parallax.attr("data-uk-parallax")));
}
});
});
},
init: function() {
this.base = this.options.target ? UI.$(this.options.target) : this.element;
this.props = {};
this.velocity = (this.options.velocity || 1);
var reserved = ['target','velocity','viewport','plugins','media'];
Object.keys(this.options).forEach(function(prop){
if (reserved.indexOf(prop) !== -1) {
return;
}
var start, end, dir, diff, startend = String(this.options[prop]).split(',');
if (prop.match(/color/i)) {
start = startend[1] ? startend[0] : this._getStartValue(prop),
end = startend[1] ? startend[1] : startend[0];
if (!start) {
start = 'rgba(255,255,255,0)';
}
} else {
start = parseFloat(startend[1] ? startend[0] : this._getStartValue(prop)),
end = parseFloat(startend[1] ? startend[1] : startend[0]);
diff = (start < end ? (end-start):(start-end));
dir = (start < end ? 1:-1);
}
this.props[prop] = { 'start': start, 'end': end, 'dir': dir, 'diff': diff };
}.bind(this));
parallaxes.push(this);
},
process: function() {
if (this.options.media) {
switch(typeof(this.options.media)) {
case 'number':
if (window.innerWidth < this.options.media) {
return false;
}
break;
case 'string':
if (window.matchMedia && !window.matchMedia(this.options.media).matches) {
return false;
}
break;
}
}
var percent = this.percentageInViewport();
if (this.options.viewport !== false) {
percent = (this.options.viewport === 0) ? 1 : percent / this.options.viewport;
}
this.update(percent);
},
percentageInViewport: function() {
var top = this.base.offset().top,
height = this.base.outerHeight(),
distance, percentage, percent;
if (top > (scrolltop + wh)) {
percent = 0;
} else if ((top + height) < scrolltop) {
percent = 1;
} else {
if ((top + height) < wh) {
percent = (scrolltop < wh ? scrolltop : scrolltop - wh) / (top+height);
} else {
distance = (scrolltop + wh) - top;
percentage = Math.round(distance / ((wh + height) / 100));
percent = percentage/100;
}
}
return percent;
},
update: function(percent) {
var css = {'transform':''},
compercent = percent * (1 - (this.velocity - (this.velocity * percent))),
opts, val;
if (compercent < 0) compercent = 0;
if (compercent > 1) compercent = 1;
if (this._percent !== undefined && this._percent == compercent) {
return;
}
Object.keys(this.props).forEach(function(prop) {
opts = this.props[prop];
if (percent === 0) {
val = opts.start;
} else if(percent === 1) {
val = opts.end;
} else if(opts.diff !== undefined) {
val = opts.start + (opts.diff * compercent * opts.dir);
}
if ((prop == 'bg' || prop == 'bgp') && !this._bgcover) {
this._bgcover = initBgImageParallax(this, prop, opts);
}
switch(prop) {
// transforms
case "x":
css.transform += supports3d ? ' translate3d('+val+'px, 0, 0)':' translateX('+val+'px)';
break;
case "xp":
css.transform += supports3d ? ' translate3d('+val+'%, 0, 0)':' translateX('+val+'%)';
break;
case "y":
css.transform += supports3d ? ' translate3d(0, '+val+'px, 0)':' translateY('+val+'px)';
break;
case "yp":
css.transform += supports3d ? ' translate3d(0, '+val+'%, 0)':' translateY('+val+'%)';
break;
case "rotate":
css.transform += ' rotate('+val+'deg)';
break;
case "scale":
css.transform += ' scale('+val+')';
break;
// bg image
case "bg":
css['background-position'] = '50% '+val+'px';
break;
case "bgp":
css['background-position'] = '50% '+val+'%';
break;
// color
case "color":
case "background-color":
case "border-color":
css[prop] = calcColor(opts.start, opts.end, compercent);
break;
default:
css[prop] = val;
break;
}
}.bind(this));
this.element.css(css);
this._percent = compercent;
},
_getStartValue: function(prop) {
var value = 0;
switch(prop) {
case 'scale':
value = 1;
break;
default:
value = this.element.css(prop);
}
return (value || 0);
}
});
// helper
function initBgImageParallax(obj, prop, opts) {
var img = new Image(), url, loaded, element, size, check, ratio, width, height;
element = obj.element.css({'background-size': 'cover', 'background-repeat': 'no-repeat'});
url = element.css('background-image').replace(/^url\(/g, '').replace(/\)$/g, '').replace(/("|')/g, '');
check = function() {
var w = element.width(), h = element.height(), extra = (prop=='bg') ? opts.diff : (opts.diff/100) * h;
h += extra;
w += Math.ceil(extra * ratio);
// if element height < parent height (gap underneath)
if ((w / ratio) < h) {
width = Math.ceil(h * ratio);
height = h;
// element width < parent width (gap to right)
} else {
width = w;
height = Math.ceil(w / ratio);
}
obj.element.css({'background-size': (width+'px '+height+'px')});
};
img.onerror = function(){
// image url doesn't exist
};
img.onload = function(){
size = {w:img.width, height:img.height};
ratio = img.width / img.height;
UI.$win.on("load resize orientationchange", UI.Utils.debounce(function(){
check();
}, 50));
check();
};
img.src = url;
return true;
}
// Some named colors to work with, added by Bradley Ayers
// From Interface by Stefan Petre
// http://interface.eyecon.ro/
var colors = {
'black': [0,0,0,1],
'blue': [0,0,255,1],
'brown': [165,42,42,1],
'cyan': [0,255,255,1],
'fuchsia': [255,0,255,1],
'gold': [255,215,0,1],
'green': [0,128,0,1],
'indigo': [75,0,130,1],
'khaki': [240,230,140,1],
'lime': [0,255,0,1],
'magenta': [255,0,255,1],
'maroon': [128,0,0,1],
'navy': [0,0,128,1],
'olive': [128,128,0,1],
'orange': [255,165,0,1],
'pink': [255,192,203,1],
'purple': [128,0,128,1],
'violet': [128,0,128,1],
'red': [255,0,0,1],
'silver': [192,192,192,1],
'white': [255,255,255,1],
'yellow': [255,255,0,1],
'transparent': [255,255,255,0]
};
function calcColor(start, end, pos) {
start = parseColor(start);
end = parseColor(end);
pos = pos || 0;
return calculateColor(start, end, pos);
}
/**!
* @preserve Color animation 1.6.0
* http://www.bitstorm.org/jquery/color-animation/
* Copyright 2011, 2013 Edwin Martin <edwin@bitstorm.org>
* Released under the MIT and GPL licenses.
*/
// Calculate an in-between color. Returns "#aabbcc"-like string.
function calculateColor(begin, end, pos) {
var color = 'rgba('
+ parseInt((begin[0] + pos * (end[0] - begin[0])), 10) + ','
+ parseInt((begin[1] + pos * (end[1] - begin[1])), 10) + ','
+ parseInt((begin[2] + pos * (end[2] - begin[2])), 10) + ','
+ (begin && end ? parseFloat(begin[3] + pos * (end[3] - begin[3])) : 1);
color += ')';
return color;
}
// Parse an CSS-syntax color. Outputs an array [r, g, b]
function parseColor(color) {
var match, quadruplet;
// Match #aabbcc
if (match = /#([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})/.exec(color)) {
quadruplet = [parseInt(match[1], 16), parseInt(match[2], 16), parseInt(match[3], 16), 1];
// Match #abc
} else if (match = /#([0-9a-fA-F])([0-9a-fA-F])([0-9a-fA-F])/.exec(color)) {
quadruplet = [parseInt(match[1], 16) * 17, parseInt(match[2], 16) * 17, parseInt(match[3], 16) * 17, 1];
// Match rgb(n, n, n)
} else if (match = /rgb\(\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*\)/.exec(color)) {
quadruplet = [parseInt(match[1]), parseInt(match[2]), parseInt(match[3]), 1];
} else if (match = /rgba\(\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*,\s*([0-9\.]*)\s*\)/.exec(color)) {
quadruplet = [parseInt(match[1], 10), parseInt(match[2], 10), parseInt(match[3], 10),parseFloat(match[4])];
// No browser returns rgb(n%, n%, n%), so little reason to support this format.
} else {
quadruplet = colors[color] || [255,255,255,0];
}
return quadruplet;
}
return UI.parallax;
});

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1,92 @@
/*! UIkit 2.21.0 | http://www.getuikit.com | (c) 2014 YOOtheme | MIT License */
(function(addon) {
var component;
if (window.UIkit) {
component = addon(UIkit);
}
if (typeof define == "function" && define.amd) {
define("uikit-search", ["uikit"], function(){
return component || addon(UIkit);
});
}
})(function(UI){
"use strict";
UI.component('search', {
defaults: {
msgResultsHeader : 'Search Results',
msgMoreResults : 'More Results',
msgNoResults : 'No results found',
template : '<ul class="uk-nav uk-nav-search uk-autocomplete-results">\
{{#msgResultsHeader}}<li class="uk-nav-header uk-skip">{{msgResultsHeader}}</li>{{/msgResultsHeader}}\
{{#items && items.length}}\
{{~items}}\
<li data-url="{{!$item.url}}">\
<a href="{{!$item.url}}">\
{{{$item.title}}}\
{{#$item.text}}<div>{{{$item.text}}}</div>{{/$item.text}}\
</a>\
</li>\
{{/items}}\
{{#msgMoreResults}}\
<li class="uk-nav-divider uk-skip"></li>\
<li class="uk-search-moreresults" data-moreresults="true"><a href="#" onclick="jQuery(this).closest(\'form\').submit();">{{msgMoreResults}}</a></li>\
{{/msgMoreResults}}\
{{/end}}\
{{^items.length}}\
{{#msgNoResults}}<li class="uk-skip"><a>{{msgNoResults}}</a></li>{{/msgNoResults}}\
{{/end}}\
</ul>',
renderer: function(data) {
var $this = this, opts = this.options;
this.dropdown.append(this.template({"items":data.results || [], "msgResultsHeader":opts.msgResultsHeader, "msgMoreResults": opts.msgMoreResults, "msgNoResults": opts.msgNoResults}));
this.show();
}
},
boot: function() {
// init code
UI.$html.on("focus.search.uikit", "[data-uk-search]", function(e) {
var ele =UI.$(this);
if (!ele.data("search")) {
var obj = UI.search(ele, UI.Utils.options(ele.attr("data-uk-search")));
}
});
},
init: function() {
var $this = this;
this.autocomplete = UI.autocomplete(this.element, this.options);
this.autocomplete.dropdown.addClass('uk-dropdown-search');
this.autocomplete.input.on("keyup", function(){
$this.element[$this.autocomplete.input.val() ? "addClass":"removeClass"]("uk-active");
}).closest("form").on("reset", function(){
$this.value="";
$this.element.removeClass("uk-active");
});
this.on('selectitem.uk.autocomplete', function(e, data) {
if (data.url) {
location.href = data.url;
} else if(data.moreresults) {
$this.autocomplete.input.closest('form').submit();
}
});
this.element.data("search", this);
}
});
});

View File

@ -0,0 +1,2 @@
/*! UIkit 2.21.0 | http://www.getuikit.com | (c) 2014 YOOtheme | MIT License */
!function(e){var s;window.UIkit&&(s=e(UIkit)),"function"==typeof define&&define.amd&&define("uikit-search",["uikit"],function(){return s||e(UIkit)})}(function(e){"use strict";e.component("search",{defaults:{msgResultsHeader:"Search Results",msgMoreResults:"More Results",msgNoResults:"No results found",template:'<ul class="uk-nav uk-nav-search uk-autocomplete-results"> {{#msgResultsHeader}}<li class="uk-nav-header uk-skip">{{msgResultsHeader}}</li>{{/msgResultsHeader}} {{#items && items.length}} {{~items}} <li data-url="{{!$item.url}}"> <a href="{{!$item.url}}"> {{{$item.title}}} {{#$item.text}}<div>{{{$item.text}}}</div>{{/$item.text}} </a> </li> {{/items}} {{#msgMoreResults}} <li class="uk-nav-divider uk-skip"></li> <li class="uk-search-moreresults" data-moreresults="true"><a href="#" onclick="jQuery(this).closest(\'form\').submit();">{{msgMoreResults}}</a></li> {{/msgMoreResults}} {{/end}} {{^items.length}} {{#msgNoResults}}<li class="uk-skip"><a>{{msgNoResults}}</a></li>{{/msgNoResults}} {{/end}} </ul>',renderer:function(e){var s=this.options;this.dropdown.append(this.template({items:e.results||[],msgResultsHeader:s.msgResultsHeader,msgMoreResults:s.msgMoreResults,msgNoResults:s.msgNoResults})),this.show()}},boot:function(){e.$html.on("focus.search.uikit","[data-uk-search]",function(){var s=e.$(this);if(!s.data("search")){e.search(s,e.Utils.options(s.attr("data-uk-search")))}})},init:function(){var s=this;this.autocomplete=e.autocomplete(this.element,this.options),this.autocomplete.dropdown.addClass("uk-dropdown-search"),this.autocomplete.input.on("keyup",function(){s.element[s.autocomplete.input.val()?"addClass":"removeClass"]("uk-active")}).closest("form").on("reset",function(){s.value="",s.element.removeClass("uk-active")}),this.on("selectitem.uk.autocomplete",function(e,t){t.url?location.href=t.url:t.moreresults&&s.autocomplete.input.closest("form").submit()}),this.element.data("search",this)}})});

View File

@ -0,0 +1,482 @@
/*! UIkit 2.21.0 | http://www.getuikit.com | (c) 2014 YOOtheme | MIT License */
(function(addon) {
var component;
if (window.UIkit) {
component = addon(UIkit);
}
if (typeof define == "function" && define.amd) {
define("uikit-slider", ["uikit"], function(){
return component || addon(UIkit);
});
}
})(function(UI){
"use strict";
var dragging, delayIdle, anchor, dragged, store = {};
UI.component('slider', {
defaults: {
center : false,
threshold : 10,
infinite : true,
activecls : 'uk-active'
},
boot: function() {
// init code
UI.ready(function(context) {
setTimeout(function(){
UI.$("[data-uk-slider]", context).each(function(){
var ele = UI.$(this);
if (!ele.data("slider")) {
UI.slider(ele, UI.Utils.options(ele.attr('data-uk-slider')));
}
});
}, 0);
});
},
init: function() {
var $this = this;
this.container = this.element.find('.uk-slider');
this.focus = 0;
UI.$win.on("resize load", UI.Utils.debounce(function() {
$this.resize(true);
}, 100));
this.on("click.uikit.slider", '[data-uk-slider-item]', function(e) {
e.preventDefault();
var item = UI.$(this).attr('data-uk-slider-item');
if ($this.focus == item) return;
switch(item) {
case 'next':
case 'previous':
$this[item=='next' ? 'next':'previous']();
break;
default:
$this.updateFocus(parseInt(slide, 10));
}
});
this.container.on('touchstart mousedown', function(evt) {
if (evt.originalEvent && evt.originalEvent.touches) {
evt = evt.originalEvent.touches[0];
}
// ignore right click button
if (evt.button && evt.button==2 || !$this.active) {
return;
}
anchor = UI.$(evt.target).is('a') ? UI.$(evt.target) : UI.$(evt.target).parents('a:first');
dragged = false;
if (anchor.length) {
anchor.one('click', function(e){
if (dragged) e.preventDefault();
});
}
delayIdle = function(e) {
dragged = true;
dragging = $this;
store = {
touchx : parseInt(e.pageX, 10),
dir : 1,
focus : $this.focus,
base : $this.options.center ? 'center':'area'
};
if (e.originalEvent && e.originalEvent.touches) {
e = e.originalEvent.touches[0];
}
dragging.element.data({
'pointer-start': {x: parseInt(e.pageX, 10), y: parseInt(e.pageY, 10)},
'pointer-pos-start': $this.pos
});
$this.container.addClass('uk-drag');
delayIdle = false;
};
delayIdle.x = parseInt(evt.pageX, 10);
delayIdle.threshold = $this.options.threshold;
});
this.resize(true);
this.on('display.uk.check', function(){
if ($this.element.is(":visible")) {
$this.resize(true);
}
});
// prevent dragging links + images
this.element.find('a,img').attr('draggable', 'false');
},
resize: function(focus) {
var $this = this, pos = 0, maxheight = 0, item, width, cwidth, size;
this.items = this.container.children().filter(':visible');
this.vp = this.element[0].getBoundingClientRect().width;
this.container.css({'min-width': '', 'min-height': ''});
this.items.each(function(idx){
item = UI.$(this);
size = item.css({'left': '', 'width':''})[0].getBoundingClientRect();
width = size.width;
cwidth = item.width();
maxheight = Math.max(maxheight, size.height);
item.css({'left': pos, 'width':width}).data({'idx':idx, 'left': pos, 'width': width, 'cwidth':cwidth, 'area': (pos+width), 'center':(pos - ($this.vp/2 - cwidth/2))});
pos += width;
});
this.container.css({'min-width': pos, 'min-height': maxheight});
if (this.options.infinite && pos <= (2*this.vp) && !this.itemsResized) {
// fill with cloned items
this.container.children().each(function(idx){
$this.container.append($this.items.eq(idx).clone(true).attr('id', ''));
}).each(function(idx){
$this.container.append($this.items.eq(idx).clone(true).attr('id', ''));
});
this.itemsResized = true;
return this.resize();
}
this.cw = pos;
this.pos = 0;
this.active = pos >= this.vp;
this.container.css({
'-ms-transform': '',
'-webkit-transform': '',
'transform': ''
});
this.updateFocus(0);
},
updatePos: function(pos) {
this.pos = pos;
this.container.css({
'-ms-transform': 'translateX('+pos+'px)',
'-webkit-transform': 'translateX('+pos+'px)',
'transform': 'translateX('+pos+'px)'
});
},
updateFocus: function(idx, dir) {
if (!this.active) {
return;
}
dir = dir || (idx > this.focus ? 1:-1);
var $this = this, item = this.items.eq(idx), area, i;
if (this.options.infinite) {
this.infinite(idx, dir);
}
if (this.options.center) {
this.updatePos(item.data('center')*-1);
this.items.filter('.'+this.options.activecls).removeClass(this.options.activecls);
item.addClass(this.options.activecls);
} else {
if (this.options.infinite) {
this.updatePos(item.data('left')*-1);
} else {
area = 0;
for (i=idx;i<this.items.length;i++) {
area += this.items.eq(i).data('width');
}
if (area > this.vp) {
this.updatePos(item.data('left')*-1);
} else {
if (dir == 1) {
area = 0;
for (i=this.items.length-1;i>=0;i--) {
area += this.items.eq(i).data('width');
if (area >= this.vp) {
idx = i;
break;
}
}
this.updatePos(this.items.eq(idx).data('left')*-1);
}
}
}
}
this.focus = idx;
this.trigger('focusitem.uk.slider', [idx,this.items.eq(idx),this]);
},
next: function() {
var focus = this.items[this.focus + 1] ? (this.focus + 1) : (this.options.infinite ? 0:this.focus);
this.updateFocus(focus, 1);
},
previous: function() {
var focus = this.items[this.focus - 1] ? (this.focus - 1) : (this.options.infinite ? (this.items[this.focus - 1] ? this.items-1:this.items.length-1):this.focus);
this.updateFocus(focus, -1);
},
infinite: function(baseidx, direction) {
var $this = this, item = this.items.eq(baseidx), i, z = baseidx, move = [], lastvisible, area = 0;
if (direction == 1) {
for (i=0;i<this.items.length;i++) {
if (z != baseidx) {
area += this.items.eq(z).data('width');
move.push(this.items.eq(z));
}
if (area > this.vp) {
break;
}
z = z+1 == this.items.length ? 0:z+1;
}
if (move.length) {
move.forEach(function(itm){
var left = item.data('area');
itm.css({'left': left}).data({
'left' : left,
'area' : (left+itm.data('width')),
'center': (left - ($this.vp/2 - itm.data('cwidth')/2))
});
item = itm;
});
}
} else {
for (i=this.items.length-1;i >-1 ;i--) {
area += this.items.eq(z).data('width');
if (z != baseidx) {
move.push(this.items.eq(z));
}
if (area > this.vp) {
break;
}
z = z-1 == -1 ? this.items.length-1:z-1;
}
if (move.length) {
move.forEach(function(itm){
var left = item.data('left') - itm.data('width');
itm.css({'left': left}).data({
'left' : left,
'area' : (left+itm.data('width')),
'center': (left - ($this.vp/2 - itm.data('cwidth')/2))
});
item = itm;
});
}
}
}
});
// handle dragging
UI.$doc.on('mousemove.uikit.slider touchmove.uikit.slider', function(e) {
if (e.originalEvent && e.originalEvent.touches) {
e = e.originalEvent.touches[0];
}
if (delayIdle && Math.abs(e.pageX - delayIdle.x) > delayIdle.threshold) {
if (!window.getSelection().toString()) {
delayIdle(e);
} else {
dragging = delayIdle = false;
}
}
if (!dragging) {
return;
}
var x, xDiff, pos, dir, focus, item, next, diff, i, z, itm;
if (e.clientX || e.clientY) {
x = e.clientX;
} else if (e.pageX || e.pageY) {
x = e.pageX - document.body.scrollLeft - document.documentElement.scrollLeft;
}
focus = store.focus;
xDiff = x - dragging.element.data('pointer-start').x;
pos = dragging.element.data('pointer-pos-start') + xDiff;
dir = x > dragging.element.data('pointer-start').x ? -1:1;
item = dragging.items.eq(store.focus);
if (dir == 1) {
diff = item.data('left') + Math.abs(xDiff);
for (i=0,z=store.focus;i<dragging.items.length;i++) {
itm = dragging.items.eq(z);
if (z != store.focus && itm.data('left') < diff && itm.data('area') > diff) {
focus = z;
break;
}
z = z+1 == dragging.items.length ? 0:z+1;
}
} else {
diff = item.data('left') - Math.abs(xDiff);
for (i=0,z=store.focus;i<dragging.items.length;i++) {
itm = dragging.items.eq(z);
if (z != store.focus && itm.data('area') <= item.data('left') && itm.data('center') < diff) {
focus = z;
break;
}
z = z-1 == -1 ? dragging.items.length-1:z-1;
}
}
if (dragging.options.infinite && focus!=store._focus) {
dragging.infinite(focus, dir);
}
dragging.updatePos(pos);
store.dir = dir;
store._focus = focus;
store.touchx = parseInt(e.pageX, 10);
store.diff = diff;
});
UI.$doc.on('mouseup.uikit.slider touchend.uikit.slider', function(e) {
if (dragging) {
dragging.container.removeClass('uk-drag');
var item = dragging.items.eq(store.focus), itm, focus = false, i, z;
if (store.dir == 1) {
for (i=0,z=store.focus;i<dragging.items.length;i++) {
itm = dragging.items.eq(z);
if (z != store.focus && itm.data('left') > store.diff) {
focus = z;
break;
}
z = z+1 == dragging.items.length ? 0:z+1;
}
} else {
for (i=0,z=store.focus;i<dragging.items.length;i++) {
itm = dragging.items.eq(z);
if (z != store.focus && itm.data('left') < store.diff) {
focus = z;
break;
}
z = z-1 == -1 ? dragging.items.length-1:z-1;
}
}
dragging.updateFocus(focus!==false ? focus:store._focus);
}
dragging = delayIdle = false;
});
return UI.slider;
});

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1,503 @@
/*! UIkit 2.21.0 | http://www.getuikit.com | (c) 2014 YOOtheme | MIT License */
(function(addon) {
var component;
if (window.UIkit) {
component = addon(UIkit);
}
if (typeof define == "function" && define.amd) {
define("uikit-slideset", ["uikit"], function(){
return component || addon(UIkit);
});
}
})(function(UI){
"use strict";
var Animations;
UI.component('slideset', {
defaults: {
default : 1,
animation : 'fade',
duration : 200,
filter : '',
delay : false,
controls : false,
autoplay : false,
autoplayInterval : 7000,
pauseOnHover : true
},
sets: [],
boot: function() {
// auto init
UI.ready(function(context) {
UI.$("[data-uk-slideset]", context).each(function(){
var ele = UI.$(this);
if(!ele.data("slideset")) {
var plugin = UI.slideset(ele, UI.Utils.options(ele.attr("data-uk-slideset")));
}
});
});
},
init: function() {
var $this = this;
this.activeSet = false;
this.list = this.element.find('.uk-slideset');
this.nav = this.element.find('.uk-slideset-nav');
this.controls = this.options.controls ? UI.$(this.options.controls) : this.element;
UI.$win.on("resize load", UI.Utils.debounce(function() {
$this.updateSets();
}, 100));
$this.list.addClass('uk-grid-width-1-'+$this.options.default);
['xlarge', 'large', 'medium', 'small'].forEach(function(bp) {
if (!$this.options[bp]) {
return;
}
$this.list.addClass('uk-grid-width-'+bp+'-1-'+$this.options[bp]);
});
this.on("click.uikit.slideset", '[data-uk-slideset-item]', function(e) {
e.preventDefault();
if ($this.animating) {
return;
}
var set = UI.$(this).attr('data-uk-slideset-item');
if ($this.activeSet === set) return;
switch(set) {
case 'next':
case 'previous':
$this[set=='next' ? 'next':'previous']();
break;
default:
$this.show(parseInt(set, 10));
}
});
this.controls.on('click.uikit.slideset', '[data-uk-filter]', function(e) {
var ele = UI.$(this);
if (ele.parent().hasClass('uk-slideset')) {
return;
}
e.preventDefault();
if ($this.animating || $this.currentFilter == ele.attr('data-uk-filter')) {
return;
}
$this.updateFilter(ele.attr('data-uk-filter'));
$this._hide().then(function(){
$this.updateSets(true, true);
});
});
this.on('swipeRight swipeLeft', function(e) {
$this[e.type=='swipeLeft' ? 'next' : 'previous']();
});
this.updateFilter(this.options.filter);
this.updateSets();
this.element.on({
mouseenter: function() { if ($this.options.pauseOnHover) $this.hovering = true; },
mouseleave: function() { $this.hovering = false; }
});
// Set autoplay
if (this.options.autoplay) {
this.start();
}
},
updateSets: function(animate, force) {
var $this = this, visible = this.visible, i;
this.visible = this.getVisibleOnCurrenBreakpoint();
if (visible == this.visible && !force) {
return;
}
this.children = this.list.children().hide();
this.items = this.getItems();
this.sets = array_chunk(this.items, this.visible);
for (i=0;i<this.sets.length;i++) {
this.sets[i].css({'display': 'none'});
}
// update nav
if (this.nav.length && this.nav.empty()) {
for (i=0;i<this.sets.length;i++) {
this.nav.append('<li data-uk-slideset-item="'+i+'"><a></a></li>');
}
this.nav[this.nav.children().length==1 ? 'addClass':'removeClass']('uk-invisible');
}
this.activeSet = false;
this.show(0, !animate);
},
updateFilter: function(currentfilter) {
var $this = this, filter;
this.currentFilter = currentfilter;
this.controls.find('[data-uk-filter]').each(function(){
filter = UI.$(this);
if (!filter.parent().hasClass('uk-slideset')) {
if (filter.attr('data-uk-filter') == $this.currentFilter) {
filter.addClass('uk-active');
} else {
filter.removeClass('uk-active');
}
}
});
},
getVisibleOnCurrenBreakpoint: function() {
var breakpoint = null,
tmp = UI.$('<div style="position:absolute;height:1px;top:-1000px;width:100px"><div></div></div>').appendTo('body'),
testdiv = tmp.children().eq(0),
breakpoints = this.options;
['xlarge', 'large', 'medium', 'small'].forEach(function(bp) {
if (!breakpoints[bp] || breakpoint) {
return;
}
tmp.attr('class', 'uk-grid-width-'+bp+'-1-2').width();
if (testdiv.width() == 50) {
breakpoint = bp;
}
});
tmp.remove();
return this.options[breakpoint] || this.options['default'];
},
getItems: function() {
var items = [], filter;
if (this.currentFilter) {
filter = this.currentFilter || [];
if (typeof(filter) === 'string') {
filter = filter.split(/,/).map(function(item){ return item.trim(); });
}
this.children.each(function(index){
var ele = UI.$(this), f = ele.attr('data-uk-filter'), infilter = filter.length ? false : true;
if (f) {
f = f.split(/,/).map(function(item){ return item.trim(); });
filter.forEach(function(item){
if (f.indexOf(item) > -1) infilter = true;
});
}
if(infilter) items.push(ele[0]);
});
items = UI.$(items);
} else {
items = this.list.children();
}
return items;
},
show: function(setIndex, noanimate, dir) {
var $this = this;
if (this.activeSet === setIndex || this.animating) {
return;
}
dir = dir || (setIndex < this.activeSet ? -1:1);
var current = this.sets[this.activeSet] || [],
next = this.sets[setIndex],
animation = this._getAnimation();
if (noanimate || !UI.support.animation) {
animation = Animations.none;
}
this.animating = true;
if (this.nav.length) {
this.nav.children().removeClass('uk-active').eq(setIndex).addClass('uk-active');
}
animation.apply($this, [current, next, dir]).then(function(){
UI.Utils.checkDisplay(next, true);
$this.children.hide().removeClass('uk-active');
next.addClass('uk-active').css({'display': '', 'opacity':''});
$this.animating = false;
$this.activeSet = setIndex;
UI.Utils.checkDisplay(next, true);
$this.trigger('show.uk.slideset', [next]);
});
},
_getAnimation: function() {
var $this = this,
animation = Animations[this.options.animation] || Animations.none;
if (!UI.support.animation) {
animation = Animations.none;
}
return animation;
},
_hide: function() {
var $this = this,
current = this.sets[this.activeSet] || [],
animation = this._getAnimation();
this.animating = true;
return animation.apply($this, [current, [], 1]).then(function(){
$this.animating = false;
});
},
next: function() {
this.show(this.sets[this.activeSet + 1] ? (this.activeSet + 1) : 0, false, 1);
},
previous: function() {
this.show(this.sets[this.activeSet - 1] ? (this.activeSet - 1) : (this.sets.length - 1), false, -1);
},
start: function() {
this.stop();
var $this = this;
this.interval = setInterval(function() {
if (!$this.hovering && !$this.animating) $this.next();
}, this.options.autoplayInterval);
},
stop: function() {
if (this.interval) clearInterval(this.interval);
}
});
Animations = {
'none': function() {
var d = UI.$.Deferred();
d.resolve();
return d.promise();
},
'fade': function(current, next) {
return coreAnimation.apply(this, ['uk-animation-fade', current, next]);
},
'slide-bottom': function(current, next) {
return coreAnimation.apply(this, ['uk-animation-slide-bottom', current, next]);
},
'slide-top': function(current, next) {
return coreAnimation.apply(this, ['uk-animation-slide-top', current, next]);
},
'slide-vertical': function(current, next, dir) {
var anim = ['uk-animation-slide-top', 'uk-animation-slide-bottom'];
if (dir == -1) {
anim.reverse();
}
return coreAnimation.apply(this, [anim, current, next]);
},
'slide-horizontal': function(current, next, dir) {
var anim = ['uk-animation-slide-right', 'uk-animation-slide-left'];
if (dir == -1) {
anim.reverse();
}
return coreAnimation.apply(this, [anim, current, next, dir]);
},
'scale': function(current, next) {
return coreAnimation.apply(this, ['uk-animation-scale-up', current, next]);
}
};
UI.slideset.animations = Animations;
// helpers
function coreAnimation(cls, current, next, dir) {
var d = UI.$.Deferred(),
delay = (this.options.delay === false) ? Math.floor(this.options.duration/2) : this.options.delay,
$this = this, clsIn, clsOut, release, i;
dir = dir || 1;
this.element.css('min-height', this.element.height());
if (next[0]===current[0]) {
d.resolve();
return d.promise();
}
if (typeof(cls) == 'object') {
clsIn = cls[0];
clsOut = cls[1] || cls[0];
} else {
clsIn = cls;
clsOut = clsIn;
}
release = function() {
if (current && current.length) {
current.hide().removeClass(clsOut+' uk-animation-reverse').css({'opacity':'', 'animation-delay': '', 'animation':''});
}
if (!next.length) {
d.resolve();
return;
}
for (i=0;i<next.length;i++) {
next.eq(dir == 1 ? i:(next.length - i)-1).css('animation-delay', (i*delay)+'ms');
}
next.addClass(clsIn)[dir==1 ? 'last':'first']().one(UI.support.animation.end, function() {
next.removeClass(''+clsIn+'').css({opacity:'', display:'', 'animation-delay':'', 'animation':''});
d.resolve();
$this.element.css('min-height', '');
}).end().css('display', '');
};
if (next.length) {
next.css('animation-duration', this.options.duration+'ms');
}
if (current && current.length) {
current.css('animation-duration', this.options.duration+'ms')[dir==1 ? 'last':'first']().one(UI.support.animation.end, function() {
release();
});
for (i=0;i<current.length;i++) {
(function (index, ele){
setTimeout(function(){
ele.css('display', 'none').css('display', '').css('opacity', 0).addClass(clsOut+' uk-animation-reverse');
}.bind(this), i * delay);
})(i, current.eq(dir == 1 ? i:(current.length - i)-1));
}
} else {
release();
}
return d.promise();
}
function array_chunk(input, size) {
var x, i = 0, c = -1, l = input.length || 0, n = [];
if (size < 1) return null;
while (i < l) {
x = i % size;
if(x) {
n[c][x] = input[i];
} else {
n[++c] = [input[i]];
}
i++;
}
i = 0;
l = n.length;
while (i < l) {
n[i] = jQuery(n[i]);
i++;
}
return n;
}
});

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1,377 @@
/*! UIkit 2.21.0 | http://www.getuikit.com | (c) 2014 YOOtheme | MIT License */
(function(addon) {
var component;
if (window.UIkit) {
component = addon(UIkit);
}
if (typeof define == "function" && define.amd) {
define("uikit-slideshow-fx", ["uikit"], function() {
return component || addon(UIkit);
});
}
})(function(UI) {
"use strict";
var Animations = UI.slideshow.animations;
UI.$.extend(UI.slideshow.animations, {
'slice': function(current, next, dir, fromfx) {
if (!current.data('cover')) {
return Animations.fade.apply(this, arguments);
}
var d = UI.$.Deferred();
var sliceWidth = Math.ceil(this.element.width() / this.options.slices),
bgimage = next.data('cover').css('background-image'),
ghost = UI.$('<li></li>').css({
top : 0,
left : 0,
width : this.container.width(),
height : this.container.height(),
opacity: 1,
zIndex : 15
}),
ghostWidth = ghost.width(),
ghostHeight = ghost.height(),
pos = fromfx == 'slice-up' ? ghostHeight:'0',
bar;
for (var i = 0; i < this.options.slices; i++) {
if (fromfx == 'slice-up-down') {
pos = ((i % 2) + 2) % 2==0 ? '0':ghostHeight;
}
var width = (i == this.options.slices-1) ? sliceWidth : sliceWidth,
clipto = ('rect(0px, '+(width*(i+1))+'px, '+ghostHeight+'px, '+(sliceWidth*i)+'px)'),
clipfrom;
//slice-down - default
clipfrom = ('rect(0px, '+(width*(i+1))+'px, 0px, '+(sliceWidth*i)+'px)');
if (fromfx == 'slice-up' || (fromfx == 'slice-up-down' && ((i % 2) + 2) % 2==0 )) {
clipfrom = ('rect('+ghostHeight+'px, '+(width*(i+1))+'px, '+ghostHeight+'px, '+(sliceWidth*i)+'px)');
}
bar = UI.$('<div class="uk-cover-background"></div>').css({
'position' : 'absolute',
'top' : 0,
'left' : 0,
'width' : ghostWidth,
'height' : ghostHeight,
'background-image' : bgimage,
'clip' : clipfrom,
'opacity' : 0,
'transition' : 'all '+this.options.duration+'ms ease-in-out '+(i*60)+'ms',
'-webkit-transition' : 'all '+this.options.duration+'ms ease-in-out '+(i*60)+'ms'
}).data('clip', clipto);
ghost.append(bar);
}
this.container.append(ghost);
ghost.children().last().on(UI.support.transition.end, function() {
ghost.remove();
d.resolve();
});
ghost.width();
ghost.children().each(function() {
var bar = UI.$(this);
bar.css({
'clip': bar.data('clip'),
'opacity': 1
});
});
return d.promise();
},
'slice-up': function(current, next, dir) {
return Animations.slice.apply(this, [current, next, dir, 'slice-up']);
},
'slice-down': function(current, next, dir) {
return Animations.slice.apply(this, [current, next, dir, 'slice-down']);
},
'slice-up-down': function(current, next, dir) {
return Animations.slice.apply(this, [current, next, dir, 'slice-up-down']);
},
'fold': function(current, next, dir) {
if (!next.data('cover')) {
return Animations.fade.apply(this, arguments);
}
var d = UI.$.Deferred();
var sliceWidth = Math.ceil(this.element.width() / this.options.slices),
bgimage = next.data('cover').css('background-image'),
ghost = UI.$('<li></li>').css({
width : next.width(),
height : next.height(),
opacity: 1,
zIndex : 15
}),
ghostWidth = next.width(),
ghostHeight = next.height(),
bar;
for (var i = 0; i < this.options.slices; i++) {
var width = (i == this.options.slices-1) ? (ghostWidth - (sliceWidth*i)) : sliceWidth;
bar = UI.$('<div class="uk-cover-background"></div>').css({
'position' : 'absolute',
'top' : 0,
'left' : 0,
'width' : ghostWidth,
'height' : ghostHeight,
'background-image' : bgimage,
'transform-origin' : (sliceWidth*i)+'px 0 0',
'clip' : ('rect(0px, '+(sliceWidth*(i+1))+'px, '+ghostHeight+'px, '+(sliceWidth*i)+'px)'),
'opacity' : 0,
'transform' : 'scaleX(0.000001)',
'transition' : 'all '+this.options.duration+'ms ease-in-out '+(100+i*60)+'ms',
'-webkit-transition' : 'all '+this.options.duration+'ms ease-in-out '+(100+i*60)+'ms'
});
ghost.prepend(bar);
}
this.container.append(ghost);
ghost.width();
ghost.children().first().on(UI.support.transition.end, function() {
ghost.remove();
d.resolve();
}).end().css({
'transform': 'scaleX(1)',
'opacity': 1
});
return d.promise();
},
'puzzle': function(current, next, dir) {
if (!next.data('cover')) {
return Animations.fade.apply(this, arguments);
}
var d = UI.$.Deferred(), $this = this;
var boxCols = Math.round(this.options.slices/2),
boxWidth = Math.round(next.width()/boxCols),
boxRows = Math.round(next.height()/boxWidth),
boxHeight = Math.round(next.height()/boxRows)+1,
bgimage = next.data('cover').css('background-image'),
ghost = UI.$('<li></li>').css({
width : this.container.width(),
height : this.container.height(),
opacity : 1,
zIndex : 15
}),
ghostWidth = this.container.width(),
ghostHeight = this.container.height(),
box, rect, width;
for (var rows = 0; rows < boxRows; rows++) {
for (var cols = 0; cols < boxCols; cols++) {
width = (cols == boxCols-1) ? (boxWidth + 2) : boxWidth;
rect = [
(boxHeight * rows) +'px', // top
(width * (cols+1)) +'px', // right
(boxHeight * (rows + 1)) +'px', // bottom
(boxWidth * cols) +'px' // left
];
box = UI.$('<div class="uk-cover-background"></div>').css({
'position' : 'absolute',
'top' : 0,
'left' : 0,
'opacity' : 0,
'width' : ghostWidth,
'height' : ghostHeight,
'background-image' : bgimage,
'clip' : ('rect('+rect.join(',')+')'),
'-webkit-transform' : 'translateZ(0)', // fixes webkit opacity flickering bug
'transform' : 'translateZ(0)' // fixes moz opacity flickering bug
});
ghost.append(box);
}
}
this.container.append(ghost);
var boxes = shuffle(ghost.children());
boxes.each(function(i) {
UI.$(this).css({
'transition': 'all '+$this.options.duration+'ms ease-in-out '+(50+i*25)+'ms',
'-webkit-transition': 'all '+$this.options.duration+'ms ease-in-out '+(50+i*25)+'ms'
});
}).last().on(UI.support.transition.end, function() {
ghost.remove();
d.resolve();
});
ghost.width();
boxes.css({'opacity': 1});
return d.promise();
},
'boxes': function(current, next, dir, fromfx) {
if (!next.data('cover')) {
return Animations.fade.apply(this, arguments);
}
var d = UI.$.Deferred();
var boxCols = Math.round(this.options.slices/2),
boxWidth = Math.round(next.width()/boxCols),
boxRows = Math.round(next.height()/boxWidth),
boxHeight = Math.round(next.height()/boxRows)+1,
bgimage = next.data('cover').css('background-image'),
ghost = UI.$('<li></li>').css({
width : next.width(),
height : next.height(),
opacity : 1,
zIndex : 15
}),
ghostWidth = next.width(),
ghostHeight = next.height(),
box, rect, width, cols;
for (var rows = 0; rows < boxRows; rows++) {
for (cols = 0; cols < boxCols; cols++) {
width = (cols == boxCols-1) ? (boxWidth + 2) : boxWidth;
rect = [
(boxHeight * rows) +'px', // top
(width * (cols+1)) +'px', // right
(boxHeight * (rows + 1)) +'px', // bottom
(boxWidth * cols) +'px' // left
];
box = UI.$('<div class="uk-cover-background"></div>').css({
'position' : 'absolute',
'top' : 0,
'left' : 0,
'opacity' : 1,
'width' : ghostWidth,
'height' : ghostHeight,
'background-image' : bgimage,
'transform-origin' : rect[3]+' '+rect[0]+' 0',
'clip' : ('rect('+rect.join(',')+')'),
'-webkit-transform' : 'scale(0.0000000000000001)',
'transform' : 'scale(0.0000000000000001)'
});
ghost.append(box);
}
}
this.container.append(ghost);
var rowIndex = 0, colIndex = 0, timeBuff = 0, box2Darr = [[]], boxes = ghost.children(), prevCol;
if (fromfx == 'boxes-reverse') {
boxes = [].reverse.apply(boxes);
}
boxes.each(function() {
box2Darr[rowIndex][colIndex] = UI.$(this);
colIndex++;
if(colIndex == boxCols) {
rowIndex++;
colIndex = 0;
box2Darr[rowIndex] = [];
}
});
for (cols = 0, prevCol = 0; cols < (boxCols * boxRows); cols++) {
prevCol = cols;
for (var row = 0; row < boxRows; row++) {
if (prevCol >= 0 && prevCol < boxCols) {
box2Darr[row][prevCol].css({
'transition': 'all '+this.options.duration+'ms linear '+(50+timeBuff)+'ms',
'-webkit-transition': 'all '+this.options.duration+'ms linear '+(50+timeBuff)+'ms'
});
}
prevCol--;
}
timeBuff += 100;
}
boxes.last().on(UI.support.transition.end, function() {
ghost.remove();
d.resolve();
});
ghost.width();
boxes.css({
'-webkit-transform': 'scale(1)',
'transform': 'scale(1)'
});
return d.promise();
},
'boxes-reverse': function(current, next, dir) {
return Animations.boxes.apply(this, [current, next, dir, 'boxes-reverse']);
},
'random-fx': function(){
var animations = ['slice-up', 'fold', 'puzzle', 'slice-down', 'boxes', 'slice-up-down', 'boxes-reverse'];
this.fxIndex = (this.fxIndex === undefined ? -1 : this.fxIndex) + 1;
if (!animations[this.fxIndex]) this.fxIndex = 0;
return Animations[animations[this.fxIndex]].apply(this, arguments);
},
});
// helper functions
// Shuffle an array
var shuffle = function(arr) {
for (var j, x, i = arr.length; i; j = parseInt(Math.random() * i), x = arr[--i], arr[i] = arr[j], arr[j] = x) {}
return arr;
};
return UI.slideshow.animations;
});

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1,545 @@
/*! UIkit 2.21.0 | http://www.getuikit.com | (c) 2014 YOOtheme | MIT License */
(function(addon) {
var component;
if (window.UIkit) {
component = addon(UIkit);
}
if (typeof define == "function" && define.amd) {
define("uikit-slideshow", ["uikit"], function() {
return component || addon(UIkit);
});
}
})(function(UI) {
"use strict";
var Animations, playerId = 0;
UI.component('slideshow', {
defaults: {
animation : "fade",
duration : 500,
height : "auto",
start : 0,
autoplay : false,
autoplayInterval : 7000,
videoautoplay : true,
videomute : true,
slices : 15,
pauseOnHover : true,
kenburns : false,
kenburnsanimations : [
'uk-animation-middle-left',
'uk-animation-top-right',
'uk-animation-bottom-left',
'uk-animation-top-center',
'', // middle-center
'uk-animation-bottom-right'
],
},
current : false,
interval : null,
hovering : false,
boot: function() {
// init code
UI.ready(function(context) {
UI.$('[data-uk-slideshow]', context).each(function() {
var slideshow = UI.$(this);
if (!slideshow.data("slideshow")) {
var obj = UI.slideshow(slideshow, UI.Utils.options(slideshow.attr("data-uk-slideshow")));
}
});
});
},
init: function() {
var $this = this, canvas, kbanimduration;
this.container = this.element.hasClass('uk-slideshow') ? this.element : UI.$(this.find('.uk-slideshow'));
this.slides = this.container.children();
this.slidesCount = this.slides.length;
this.current = this.options.start;
this.animating = false;
this.triggers = this.find('[data-uk-slideshow-item]');
this.fixFullscreen = navigator.userAgent.match(/(iPad|iPhone|iPod)/g) && this.container.hasClass('uk-slideshow-fullscreen'); // viewport unit fix for height:100vh - should be fixed in iOS 8
if (this.options.kenburns) {
kbanimduration = this.options.kenburns === true ? '15s': this.options.kenburns;
if (!String(kbanimduration).match(/(ms|s)$/)) {
kbanimduration += 'ms';
}
if (typeof(this.options.kenburnsanimations) == 'string') {
this.options.kenburnsanimations = this.options.kenburnsanimations.split(',');
}
}
this.slides.each(function(index) {
var slide = UI.$(this),
media = slide.children('img,video,iframe').eq(0);
slide.data('media', media);
slide.data('sizer', media);
if (media.length) {
var placeholder;
switch(media[0].nodeName) {
case 'IMG':
var cover = UI.$('<div class="uk-cover-background uk-position-cover"></div>').css({'background-image':'url('+ media.attr('src') + ')'});
media.css({'width': '100%','height': 'auto'});
slide.prepend(cover).data('cover', cover);
break;
case 'IFRAME':
var src = media[0].src, iframeId = 'sw-'+(++playerId);
media
.attr('src', '').on('load', function(){
if (index !== $this.current || (index == $this.current && !$this.options.videoautoplay)) {
$this.pausemedia(media);
}
if ($this.options.videomute) {
$this.mutemedia(media);
var inv = setInterval((function(ic) {
return function() {
$this.mutemedia(media);
if (++ic >= 4) clearInterval(inv);
}
})(0), 250);
}
})
.data('slideshow', $this) // add self-reference for the vimeo-ready listener
.attr('data-player-id', iframeId) // add frameId for the vimeo-ready listener
.attr('src', [src, (src.indexOf('?') > -1 ? '&':'?'), 'enablejsapi=1&api=1&player_id='+iframeId].join(''))
.addClass('uk-position-absolute');
// disable pointer events
if(!UI.support.touch) media.css('pointer-events', 'none');
placeholder = true;
if (UI.cover) {
UI.cover(media);
media.attr('data-uk-cover', '{}');
}
break;
case 'VIDEO':
media.addClass('uk-cover-object uk-position-absolute');
placeholder = true;
if ($this.options.videomute) $this.mutemedia(media);
}
if (placeholder) {
canvas = UI.$('<canvas></canvas>').attr({'width': media[0].width, 'height': media[0].height});
var img = UI.$('<img style="width:100%;height:auto;">').attr('src', canvas[0].toDataURL());
slide.prepend(img);
slide.data('sizer', img);
}
} else {
slide.data('sizer', slide);
}
if ($this.hasKenBurns(slide)) {
slide.data('cover').css({
'-webkit-animation-duration': kbanimduration,
'animation-duration': kbanimduration
});
}
});
this.on("click.uikit.slideshow", '[data-uk-slideshow-item]', function(e) {
e.preventDefault();
var slide = UI.$(this).attr('data-uk-slideshow-item');
if ($this.current == slide) return;
switch(slide) {
case 'next':
case 'previous':
$this[slide=='next' ? 'next':'previous']();
break;
default:
$this.show(parseInt(slide, 10));
}
$this.stop();
});
// Set start slide
this.slides.attr('aria-hidden', 'true').eq(this.current).addClass('uk-active').attr('aria-hidden', 'false');
this.triggers.filter('[data-uk-slideshow-item="'+this.current+'"]').addClass('uk-active');
UI.$win.on("resize load", UI.Utils.debounce(function() {
$this.resize();
if ($this.fixFullscreen) {
$this.container.css('height', window.innerHeight);
$this.slides.css('height', window.innerHeight);
}
}, 100));
// chrome image load fix
setTimeout(function(){
$this.resize();
}, 80);
// Set autoplay
if (this.options.autoplay) {
this.start();
}
if (this.options.videoautoplay && this.slides.eq(this.current).data('media')) {
this.playmedia(this.slides.eq(this.current).data('media'));
}
if (this.options.kenburns) {
this.applyKenBurns(this.slides.eq(this.current));
}
this.container.on({
mouseenter: function() { if ($this.options.pauseOnHover) $this.hovering = true; },
mouseleave: function() { $this.hovering = false; }
});
this.on('swipeRight swipeLeft', function(e) {
$this[e.type=='swipeLeft' ? 'next' : 'previous']();
});
this.on('display.uk.check', function(){
if ($this.element.is(":visible")) {
$this.resize();
if ($this.fixFullscreen) {
$this.container.css('height', window.innerHeight);
$this.slides.css('height', window.innerHeight);
}
}
});
},
resize: function() {
if (this.container.hasClass('uk-slideshow-fullscreen')) return;
var $this = this, height = this.options.height;
if (this.options.height === 'auto') {
height = 0;
this.slides.css('height', '').each(function() {
height = Math.max(height, UI.$(this).height());
});
}
this.container.css('height', height);
this.slides.css('height', height);
},
show: function(index, direction) {
if (this.animating || this.current == index) return;
this.animating = true;
var $this = this,
current = this.slides.eq(this.current),
next = this.slides.eq(index),
dir = direction ? direction : this.current < index ? -1 : 1,
currentmedia = current.data('media'),
animation = Animations[this.options.animation] ? this.options.animation : 'fade',
nextmedia = next.data('media'),
finalize = function() {
if (!$this.animating) return;
if (currentmedia && currentmedia.is('video,iframe')) {
$this.pausemedia(currentmedia);
}
if (nextmedia && nextmedia.is('video,iframe')) {
$this.playmedia(nextmedia);
}
next.addClass("uk-active").attr('aria-hidden', 'false');
current.removeClass("uk-active").attr('aria-hidden', 'true');
$this.animating = false;
$this.current = index;
UI.Utils.checkDisplay(next, '[class*="uk-animation-"]:not(.uk-cover-background.uk-position-cover)');
$this.trigger('show.uk.slideshow', [next]);
};
$this.applyKenBurns(next);
// animation fallback
if (!UI.support.animation) {
animation = 'none';
}
current = UI.$(current);
next = UI.$(next);
Animations[animation].apply(this, [current, next, dir]).then(finalize);
$this.triggers.removeClass('uk-active');
$this.triggers.filter('[data-uk-slideshow-item="'+index+'"]').addClass('uk-active');
},
applyKenBurns: function(slide) {
if (!this.hasKenBurns(slide)) {
return;
}
var animations = this.options.kenburnsanimations,
index = this.kbindex || 0;
slide.data('cover').attr('class', 'uk-cover-background uk-position-cover').width();
slide.data('cover').addClass(['uk-animation-scale', 'uk-animation-reverse', animations[index].trim()].join(' '));
this.kbindex = animations[index + 1] ? (index+1):0;
},
hasKenBurns: function(slide) {
return (this.options.kenburns && slide.data('cover'));
},
next: function() {
this.show(this.slides[this.current + 1] ? (this.current + 1) : 0);
},
previous: function() {
this.show(this.slides[this.current - 1] ? (this.current - 1) : (this.slides.length - 1));
},
start: function() {
this.stop();
var $this = this;
this.interval = setInterval(function() {
if (!$this.hovering) $this.next();
}, this.options.autoplayInterval);
},
stop: function() {
if (this.interval) clearInterval(this.interval);
},
playmedia: function(media) {
if (!(media && media[0])) return;
switch(media[0].nodeName) {
case 'VIDEO':
if (!this.options.videomute) {
media[0].muted = false;
}
media[0].play();
break;
case 'IFRAME':
if (!this.options.videomute) {
media[0].contentWindow.postMessage('{ "event": "command", "func": "unmute", "method":"setVolume", "value":1}', '*');
}
media[0].contentWindow.postMessage('{ "event": "command", "func": "playVideo", "method":"play"}', '*');
break;
}
},
pausemedia: function(media) {
switch(media[0].nodeName) {
case 'VIDEO':
media[0].pause();
break;
case 'IFRAME':
media[0].contentWindow.postMessage('{ "event": "command", "func": "pauseVideo", "method":"pause"}', '*');
break;
}
},
mutemedia: function(media) {
switch(media[0].nodeName) {
case 'VIDEO':
media[0].muted = true;
break;
case 'IFRAME':
media[0].contentWindow.postMessage('{ "event": "command", "func": "mute", "method":"setVolume", "value":0}', '*');
break;
}
}
});
Animations = {
'none': function() {
var d = UI.$.Deferred();
d.resolve();
return d.promise();
},
'scroll': function(current, next, dir) {
var d = UI.$.Deferred();
current.css('animation-duration', this.options.duration+'ms');
next.css('animation-duration', this.options.duration+'ms');
next.css('opacity', 1).one(UI.support.animation.end, function() {
current.removeClass(dir === 1 ? 'uk-slideshow-scroll-backward-out' : 'uk-slideshow-scroll-forward-out');
next.css('opacity', '').removeClass(dir === 1 ? 'uk-slideshow-scroll-backward-in' : 'uk-slideshow-scroll-forward-in');
d.resolve();
}.bind(this));
current.addClass(dir == 1 ? 'uk-slideshow-scroll-backward-out' : 'uk-slideshow-scroll-forward-out');
next.addClass(dir == 1 ? 'uk-slideshow-scroll-backward-in' : 'uk-slideshow-scroll-forward-in');
next.width(); // force redraw
return d.promise();
},
'swipe': function(current, next, dir) {
var d = UI.$.Deferred();
current.css('animation-duration', this.options.duration+'ms');
next.css('animation-duration', this.options.duration+'ms');
next.css('opacity', 1).one(UI.support.animation.end, function() {
current.removeClass(dir === 1 ? 'uk-slideshow-swipe-backward-out' : 'uk-slideshow-swipe-forward-out');
next.css('opacity', '').removeClass(dir === 1 ? 'uk-slideshow-swipe-backward-in' : 'uk-slideshow-swipe-forward-in');
d.resolve();
}.bind(this));
current.addClass(dir == 1 ? 'uk-slideshow-swipe-backward-out' : 'uk-slideshow-swipe-forward-out');
next.addClass(dir == 1 ? 'uk-slideshow-swipe-backward-in' : 'uk-slideshow-swipe-forward-in');
next.width(); // force redraw
return d.promise();
},
'scale': function(current, next, dir) {
var d = UI.$.Deferred();
current.css('animation-duration', this.options.duration+'ms');
next.css('animation-duration', this.options.duration+'ms');
next.css('opacity', 1);
current.one(UI.support.animation.end, function() {
current.removeClass('uk-slideshow-scale-out');
next.css('opacity', '');
d.resolve();
}.bind(this));
current.addClass('uk-slideshow-scale-out');
current.width(); // force redraw
return d.promise();
},
'fade': function(current, next, dir) {
var d = UI.$.Deferred();
current.css('animation-duration', this.options.duration+'ms');
next.css('animation-duration', this.options.duration+'ms');
next.css('opacity', 1);
current.one(UI.support.animation.end, function() {
current.removeClass('uk-slideshow-fade-out');
next.css('opacity', '');
d.resolve();
}.bind(this));
current.addClass('uk-slideshow-fade-out');
current.width(); // force redraw
return d.promise();
}
};
UI.slideshow.animations = Animations;
// Listen for messages from the vimeo player
window.addEventListener('message', function onMessageReceived(e) {
var data = e.data, iframe;
if (typeof(data) == 'string') {
try {
data = JSON.parse(data);
} catch(err) {
data = {};
}
}
if (e.origin && e.origin.indexOf('vimeo') > -1 && data.event == 'ready' && data.player_id) {
iframe = UI.$('[data-player-id="'+ data.player_id+'"]');
if (iframe.length) {
iframe.data('slideshow').mutemedia(iframe);
}
}
}, false);
});

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1,643 @@
/*! UIkit 2.21.0 | http://www.getuikit.com | (c) 2014 YOOtheme | MIT License */
/*
* Based on nativesortable - Copyright (c) Brian Grinstead - https://github.com/bgrins/nativesortable
*/
(function(addon) {
var component;
if (window.UIkit) {
component = addon(UIkit);
}
if (typeof define == "function" && define.amd) {
define("uikit-sortable", ["uikit"], function(){
return component || addon(UIkit);
});
}
})(function(UI){
"use strict";
var supportsTouch = ('ontouchstart' in window) || (window.DocumentTouch && document instanceof DocumentTouch),
draggingPlaceholder, currentlyDraggingElement, currentlyDraggingTarget, dragging, moving, clickedlink, delayIdle, touchedlists, moved;
function closestSortable(ele) {
ele = UI.$(ele);
do {
if (ele.data('sortable')) {
return ele;
}
ele = UI.$(ele).parent();
} while(ele.length);
return ele;
}
UI.component('sortable', {
defaults: {
animation : 150,
threshold : 10,
childClass : 'uk-sortable-item',
placeholderClass : 'uk-sortable-placeholder',
overClass : 'uk-sortable-over',
draggingClass : 'uk-sortable-dragged',
dragMovingClass : 'uk-sortable-moving',
baseClass : 'uk-sortable',
noDragClass : 'uk-sortable-nodrag',
dragCustomClass : '',
handleClass : false,
group : false,
stop : function() {},
start : function() {},
change : function() {}
},
boot: function() {
// auto init
UI.ready(function(context) {
UI.$("[data-uk-sortable]", context).each(function(){
var ele = UI.$(this);
if(!ele.data("sortable")) {
var plugin = UI.sortable(ele, UI.Utils.options(ele.attr("data-uk-sortable")));
}
});
});
UI.$html.on('mousemove touchmove', function(e) {
if (delayIdle) {
var src = e.originalEvent.targetTouches ? e.originalEvent.targetTouches[0] : e;
if (Math.abs(src.pageX - delayIdle.pos.x) > delayIdle.threshold || Math.abs(src.pageY - delayIdle.pos.y) > delayIdle.threshold) {
delayIdle.apply(src);
}
}
if (draggingPlaceholder) {
if (!moving) {
moving = true;
draggingPlaceholder.show();
draggingPlaceholder.$current.addClass(draggingPlaceholder.$sortable.options.placeholderClass);
draggingPlaceholder.$sortable.element.children().addClass(draggingPlaceholder.$sortable.options.childClass);
UI.$html.addClass(draggingPlaceholder.$sortable.options.dragMovingClass);
}
var offset = draggingPlaceholder.data('mouse-offset'),
left = parseInt(e.originalEvent.pageX, 10) + offset.left,
top = parseInt(e.originalEvent.pageY, 10) + offset.top;
draggingPlaceholder.css({'left': left, 'top': top });
// adjust document scrolling
if (top < UI.$win.scrollTop()) {
UI.$win.scrollTop(UI.$win.scrollTop() - Math.ceil(draggingPlaceholder.height()/2));
} else if ( (top + draggingPlaceholder.height()) > (window.innerHeight + UI.$win.scrollTop()) ) {
UI.$win.scrollTop(UI.$win.scrollTop() + Math.ceil(draggingPlaceholder.height()/2));
}
}
});
UI.$html.on('mouseup touchend', function(e) {
delayIdle = clickedlink = false;
// dragging?
if (!currentlyDraggingElement || !draggingPlaceholder) {
// completely reset dragging attempt. will cause weird delay behavior elsewise
currentlyDraggingElement = draggingPlaceholder = null;
return;
}
// inside or outside of sortable?
var sortable = closestSortable(e.target),
component = draggingPlaceholder.$sortable,
ev = { type: e.type };
if (sortable[0]) {
component.dragDrop(ev, component.element);
}
component.dragEnd(ev, component.element);
});
},
init: function() {
var $this = this,
element = this.element[0],
children;
touchedlists = [];
// make sure :empty selector works on empty lists
if (this.element.children().length === 0) {
this.element.html('');
}
this.element.data('sortable-group', this.options.group ? this.options.group : UI.Utils.uid('sortable-group'));
var handleDragStart = delegate(function(e) {
var $target = UI.$(e.target),
$link = $target.is('a[href]') ? $target:$target.parents('a[href]');
if ($target.is(':input')) {
return;
}
e.preventDefault();
if (!supportsTouch && $link.length) {
$link.one('click', function(e){
e.preventDefault();
}).one('mouseup', function(){
if(!moved) $link.trigger('click');
});
}
return $this.dragStart(e, this);
});
var handleDragOver = delegate(function(e) {
if (!currentlyDraggingElement) {
return true;
}
if (e.preventDefault) {
e.preventDefault();
}
return false;
});
var handleDragEnter = delegate(UI.Utils.debounce(function(e) {
return $this.dragEnter(e, this);
}), 40);
var handleDragLeave = delegate(function(e) {
// Prevent dragenter on a child from allowing a dragleave on the container
var previousCounter = $this.dragenterData(this);
$this.dragenterData(this, previousCounter - 1);
// This is a fix for child elements firing dragenter before the parent fires dragleave
if (!$this.dragenterData(this)) {
UI.$(this).removeClass($this.options.overClass);
$this.dragenterData(this, false);
}
});
var handleTouchMove = delegate(function(e) {
if (!currentlyDraggingElement ||
currentlyDraggingElement === this ||
currentlyDraggingTarget === this) {
return true;
}
$this.element.children().removeClass($this.options.overClass);
currentlyDraggingTarget = this;
$this.moveElementNextTo(currentlyDraggingElement, this);
return prevent(e);
});
// Bind/unbind standard mouse/touch events as a polyfill.
function addDragHandlers() {
if (supportsTouch) {
element.addEventListener("touchmove", handleTouchMove, false);
} else {
element.addEventListener('mouseover', handleDragEnter, false);
element.addEventListener('mouseout', handleDragLeave, false);
}
// document.addEventListener("selectstart", prevent, false);
}
function removeDragHandlers() {
if (supportsTouch) {
element.removeEventListener("touchmove", handleTouchMove, false);
} else {
element.removeEventListener('mouseover', handleDragEnter, false);
element.removeEventListener('mouseout', handleDragLeave, false);
}
// document.removeEventListener("selectstart", prevent, false);
}
this.addDragHandlers = addDragHandlers;
this.removeDragHandlers = removeDragHandlers;
function handleDragMove(e) {
if (!currentlyDraggingElement) {
return;
}
$this.dragMove(e, $this);
}
function delegate(fn) {
return function(e) {
var touch, target, context;
if (e) {
touch = (supportsTouch && e.touches && e.touches[0]) || { };
target = touch.target || e.target;
// Fix event.target for a touch event
if (supportsTouch && document.elementFromPoint) {
target = document.elementFromPoint(e.pageX - document.body.scrollLeft, e.pageY - document.body.scrollTop);
}
}
if (UI.$(target).hasClass($this.options.childClass)) {
fn.apply(target, [e]);
} else if (target !== element) {
// If a child is initiating the event or ending it, then use the container as context for the callback.
context = moveUpToChildNode(element, target);
if (context) {
fn.apply(context, [e]);
}
}
};
}
window.addEventListener(supportsTouch ? 'touchmove' : 'mousemove', handleDragMove, false);
element.addEventListener(supportsTouch ? 'touchstart': 'mousedown', handleDragStart, false);
},
dragStart: function(e, elem) {
moved = false;
moving = false;
dragging = false;
var $this = this,
target = UI.$(e.target),
children = $this.element.children();
if (!supportsTouch && e.button==2) {
return;
}
if ($this.options.handleClass) {
var handle = target.hasClass($this.options.handleClass) ? target : target.closest('.'+$this.options.handleClass, $this.element);
if (!handle.length) {
//e.preventDefault();
return;
}
}
if (target.is('.'+$this.options.noDragClass) || target.closest('.'+$this.options._noDragClass).length) {
return;
}
// prevent dragging if taget is a form field
if (target.is(':input')) {
return;
}
currentlyDraggingElement = elem;
// init drag placeholder
if (draggingPlaceholder) {
draggingPlaceholder.remove();
}
var $current = UI.$(currentlyDraggingElement), offset = $current.offset();
delayIdle = {
pos : { x:e.pageX, y:e.pageY },
threshold : $this.options.threshold,
apply : function(evt) {
draggingPlaceholder = UI.$('<div class="'+([$this.options.draggingClass, $this.options.dragCustomClass].join(' '))+'"></div>').css({
display : 'none',
top : offset.top,
left : offset.left,
width : $current.width(),
height : $current.height(),
padding : $current.css('padding')
}).data({
'mouse-offset': {
'left' : offset.left - parseInt(evt.pageX, 10),
'top' : offset.top - parseInt(evt.pageY, 10)
},
'origin' : $this.element,
'index' : $current.index()
}).append($current.html()).appendTo('body');
draggingPlaceholder.$current = $current;
draggingPlaceholder.$sortable = $this;
$current.data('sortable-group', $this.options.group);
$this.addDragHandlers();
$this.options.start(this, currentlyDraggingElement);
$this.trigger('start.uk.sortable', [$this, currentlyDraggingElement]);
moved = true;
delayIdle = false;
}
};
},
dragMove: function(e, elem) {
var overEl = UI.$(document.elementFromPoint(e.pageX - document.body.scrollLeft, e.pageY - (window.pageYOffset || document.documentElement.scrollTop))),
overRoot = overEl.closest('.'+this.options.baseClass),
groupOver = overRoot.data("sortable-group"),
$current = UI.$(currentlyDraggingElement),
currentRoot = $current.parent(),
groupCurrent = $current.data("sortable-group"),
overChild;
if (overRoot[0] !== currentRoot[0] && groupCurrent !== undefined && groupOver === groupCurrent) {
overRoot.data('sortable').addDragHandlers();
touchedlists.push(overRoot);
overRoot.children().addClass(this.options.childClass);
// swap root
if (overRoot.children().length > 0) {
overChild = overEl.closest('.'+this.options.childClass);
overChild.before($current);
} else { // empty list
overEl.append($current);
}
// list empty? remove inner whitespace to make sure :empty selector works
if (currentRoot.children().length === 0) {
currentRoot.html('');
}
UIkit.$doc.trigger('mouseover');
}
},
dragEnter: function(e, elem) {
if (!currentlyDraggingElement || currentlyDraggingElement === elem) {
return true;
}
// Prevent dragenter on a child from allowing a dragleave on the container
var previousCounter = this.dragenterData(elem);
this.dragenterData(elem, previousCounter + 1);
if (previousCounter === 0) {
UI.$(elem).addClass(this.options.overClass);
this.moveElementNextTo(currentlyDraggingElement, elem);
}
return false;
},
dragEnd: function(e, elem) {
var $this = this;
// avoid triggering event twice
if (currentlyDraggingElement) {
// TODO: trigger on right element?
this.options.stop(elem);
this.trigger('stop.uk.sortable', [this]);
}
currentlyDraggingElement = null;
currentlyDraggingTarget = null;
touchedlists.push(this.element);
touchedlists.forEach(function(el, i) {
UI.$(el).children().each(function() {
if (this.nodeType === 1) {
UI.$(this).removeClass($this.options.overClass)
.removeClass($this.options.placeholderClass)
.removeClass($this.options.childClass);
$this.dragenterData(this, false);
}
});
});
touchedlists = [];
UI.$html.removeClass(this.options.dragMovingClass);
this.removeDragHandlers();
if (draggingPlaceholder) {
draggingPlaceholder.remove();
draggingPlaceholder = null;
}
},
dragDrop: function(e, elem) {
if (e.type === 'drop') {
if (e.stopPropagation) {
e.stopPropagation();
}
if (e.preventDefault) {
e.preventDefault();
}
}
this.triggerChangeEvents();
},
triggerChangeEvents: function() {
// trigger events once
if (!currentlyDraggingElement) return;
var $current = UI.$(currentlyDraggingElement),
oldRoot = draggingPlaceholder.data("origin"),
newRoot = $current.closest('.'+this.options.baseClass),
triggers = [];
// events depending on move inside lists or across lists
if (oldRoot[0] === newRoot[0] && draggingPlaceholder.data('index') != $current.index() ) {
triggers.push({el: this, mode: 'moved'});
} else if (oldRoot[0] != newRoot[0]) {
triggers.push({el: newRoot, mode: 'added'}, {el: oldRoot, mode: 'removed'});
}
triggers.forEach(function (trigger, i) {
trigger.el.trigger('change.uk.sortable', [trigger.el, currentlyDraggingElement, trigger.mode]);
});
},
dragenterData: function(element, val) {
element = UI.$(element);
if (arguments.length == 1) {
return parseInt(element.data('child-dragenter'), 10) || 0;
} else if (!val) {
element.removeData('child-dragenter');
} else {
element.data('child-dragenter', Math.max(0, val));
}
},
moveElementNextTo: function(element, elementToMoveNextTo) {
dragging = true;
var $this = this,
list = UI.$(element).parent().css('min-height', ''),
next = isBelow(element, elementToMoveNextTo) ? elementToMoveNextTo : elementToMoveNextTo.nextSibling,
children = list.children(),
count = children.length;
if (!$this.options.animation) {
elementToMoveNextTo.parentNode.insertBefore(element, next);
UI.Utils.checkDisplay($this.element.parent());
return;
}
list.css('min-height', list.height());
children.stop().each(function(){
var ele = UI.$(this),
offset = ele.position();
offset.width = ele.width();
ele.data('offset-before', offset);
});
elementToMoveNextTo.parentNode.insertBefore(element, next);
UI.Utils.checkDisplay($this.element.parent());
children = list.children().each(function() {
var ele = UI.$(this);
ele.data('offset-after', ele.position());
}).each(function() {
var ele = UI.$(this),
before = ele.data('offset-before');
ele.css({'position':'absolute', 'top':before.top, 'left':before.left, 'min-width':before.width });
});
children.each(function(){
var ele = UI.$(this),
before = ele.data('offset-before'),
offset = ele.data('offset-after');
ele.css('pointer-events', 'none').width();
setTimeout(function(){
ele.animate({'top':offset.top, 'left':offset.left}, $this.options.animation, function() {
ele.css({'position':'','top':'', 'left':'', 'min-width': '', 'pointer-events':''}).removeClass($this.options.overClass).removeData('child-dragenter');
count--;
if (!count) {
list.css('min-height', '');
UI.Utils.checkDisplay($this.element.parent());
}
});
}, 0);
});
},
serialize: function() {
var data = [], item, attribute;
this.element.children().each(function(j, child) {
item = {};
for (var i = 0; i < child.attributes.length; i++) {
attribute = child.attributes[i];
if (attribute.name.indexOf('data-') === 0) {
item[attribute.name.substr(5)] = UI.Utils.str2json(attribute.value);
}
}
data.push(item);
});
return data;
}
});
// helpers
function isBelow(el1, el2) {
var parent = el1.parentNode;
if (el2.parentNode != parent) {
return false;
}
var cur = el1.previousSibling;
while (cur && cur.nodeType !== 9) {
if (cur === el2) {
return true;
}
cur = cur.previousSibling;
}
return false;
}
function moveUpToChildNode(parent, child) {
var cur = child;
if (cur == parent) { return null; }
while (cur) {
if (cur.parentNode === parent) {
return cur;
}
cur = cur.parentNode;
if ( !cur || !cur.ownerDocument || cur.nodeType === 11 ) {
break;
}
}
return null;
}
function prevent(e) {
if (e.stopPropagation) {
e.stopPropagation();
}
if (e.preventDefault) {
e.preventDefault();
}
e.returnValue = false;
}
return UI.sortable;
});

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1,298 @@
/*! UIkit 2.21.0 | http://www.getuikit.com | (c) 2014 YOOtheme | MIT License */
(function(addon) {
var component;
if (window.UIkit) {
component = addon(UIkit);
}
if (typeof define == "function" && define.amd) {
define("uikit-sticky", ["uikit"], function(){
return component || addon(UIkit);
});
}
})(function(UI){
"use strict";
var $win = UI.$win,
$doc = UI.$doc,
sticked = [];
UI.component('sticky', {
defaults: {
top : 0,
bottom : 0,
animation : '',
clsinit : 'uk-sticky-init',
clsactive : 'uk-active',
getWidthFrom : '',
boundary : false,
media : false,
target : false,
disabled : false
},
boot: function() {
// should be more efficient than using $win.scroll(checkscrollposition):
UI.$doc.on('scrolling.uk.document', function() { checkscrollposition(); });
UI.$win.on('resize orientationchange', UI.Utils.debounce(function() {
if (!sticked.length) return;
for (var i = 0; i < sticked.length; i++) {
sticked[i].reset(true);
sticked[i].self.computeWrapper();
}
checkscrollposition();
}, 100));
// init code
UI.ready(function(context) {
setTimeout(function(){
UI.$("[data-uk-sticky]", context).each(function(){
var $ele = UI.$(this);
if(!$ele.data("sticky")) {
UI.sticky($ele, UI.Utils.options($ele.attr('data-uk-sticky')));
}
});
checkscrollposition();
}, 0);
});
},
init: function() {
var wrapper = UI.$('<div class="uk-sticky-placeholder"></div>'), boundary = this.options.boundary, boundtoparent;
this.wrapper = this.element.css('margin', 0).wrap(wrapper).parent();
this.computeWrapper();
if (boundary) {
if (boundary === true) {
boundary = this.wrapper.parent();
boundtoparent = true;
} else if (typeof boundary === "string") {
boundary = UI.$(boundary);
}
}
this.sticky = {
self : this,
options : this.options,
element : this.element,
currentTop : null,
wrapper : this.wrapper,
init : false,
getWidthFrom : this.options.getWidthFrom || this.wrapper,
boundary : boundary,
boundtoparent : boundtoparent,
reset : function(force) {
var finalize = function() {
this.element.css({"position":"", "top":"", "width":"", "left":"", "margin":"0"});
this.element.removeClass([this.options.animation, 'uk-animation-reverse', this.options.clsactive].join(' '));
this.currentTop = null;
this.animate = false;
}.bind(this);
if (!force && this.options.animation && UI.support.animation) {
this.animate = true;
this.element.removeClass(this.options.animation).one(UI.support.animation.end, function(){
finalize();
}).width(); // force redraw
this.element.addClass(this.options.animation+' '+'uk-animation-reverse');
} else {
finalize();
}
},
check: function() {
if (this.options.disabled) {
return false;
}
if (this.options.media) {
switch(typeof(this.options.media)) {
case 'number':
if (window.innerWidth < this.options.media) {
return false;
}
break;
case 'string':
if (window.matchMedia && !window.matchMedia(this.options.media).matches) {
return false;
}
break;
}
}
var scrollTop = $win.scrollTop(),
documentHeight = $doc.height(),
dwh = documentHeight - window.innerHeight,
extra = (scrollTop > dwh) ? dwh - scrollTop : 0,
elementTop = this.wrapper.offset().top,
etse = elementTop - this.options.top - extra;
return (scrollTop >= etse);
}
};
sticked.push(this.sticky);
},
update: function() {
checkscrollposition(this.sticky);
},
enable: function() {
this.options.disabled = false;
this.update();
},
disable: function(force) {
this.options.disabled = true;
this.sticky.reset(force);
},
computeWrapper: function() {
this.wrapper.css({
'height' : this.element.css('position') != 'absolute' ? this.element.outerHeight() : '',
'float' : this.element.css("float") != "none" ? this.element.css("float") : '',
'margin' : this.element.css("margin")
});
}
});
function checkscrollposition() {
var stickies = arguments.length ? arguments : sticked;
if (!stickies.length || $win.scrollTop() < 0) return;
var scrollTop = $win.scrollTop(),
documentHeight = $doc.height(),
windowHeight = $win.height(),
dwh = documentHeight - windowHeight,
extra = (scrollTop > dwh) ? dwh - scrollTop : 0,
newTop, containerBottom, stickyHeight, sticky;
for (var i = 0; i < stickies.length; i++) {
sticky = stickies[i];
if (!sticky.element.is(":visible") || sticky.animate) {
continue;
}
if (!sticky.check()) {
if (sticky.currentTop !== null) {
sticky.reset();
}
} else {
if (sticky.options.top < 0) {
newTop = 0;
} else {
stickyHeight = sticky.element.outerHeight();
newTop = documentHeight - stickyHeight - sticky.options.top - sticky.options.bottom - scrollTop - extra;
newTop = newTop < 0 ? newTop + sticky.options.top : sticky.options.top;
}
if (sticky.boundary && sticky.boundary.length) {
var bTop = sticky.boundary.position().top;
if (sticky.boundtoparent) {
containerBottom = documentHeight - (bTop + sticky.boundary.outerHeight()) + parseInt(sticky.boundary.css('padding-bottom'));
} else {
containerBottom = documentHeight - bTop - parseInt(sticky.boundary.css('margin-top'));
}
newTop = (scrollTop + stickyHeight) > (documentHeight - containerBottom - (sticky.options.top < 0 ? 0 : sticky.options.top)) ? (documentHeight - containerBottom) - (scrollTop + stickyHeight) : newTop;
}
if (sticky.currentTop != newTop) {
sticky.element.css({
"position" : "fixed",
"top" : newTop,
"width" : (typeof sticky.getWidthFrom !== 'undefined') ? UI.$(sticky.getWidthFrom).width() : sticky.element.width(),
"left" : sticky.wrapper.offset().left
});
if (!sticky.init) {
sticky.element.addClass(sticky.options.clsinit);
if (location.hash && scrollTop > 0 && sticky.options.target) {
var $target = UI.$(location.hash);
if ($target.length) {
setTimeout((function($target, sticky){
return function() {
sticky.element.width(); // force redraw
var offset = $target.offset(),
maxoffset = offset.top + $target.outerHeight(),
stickyOffset = sticky.element.offset(),
stickyHeight = sticky.element.outerHeight(),
stickyMaxOffset = stickyOffset.top + stickyHeight;
if (stickyOffset.top < maxoffset && offset.top < stickyMaxOffset) {
scrollTop = offset.top - stickyHeight - sticky.options.target;
window.scrollTo(0, scrollTop);
}
};
})($target, sticky), 0);
}
}
}
sticky.element.addClass(sticky.options.clsactive);
sticky.element.css('margin', '');
if (sticky.options.animation && sticky.init) {
sticky.element.addClass(sticky.options.animation);
}
sticky.currentTop = newTop;
}
}
sticky.init = true;
}
}
return UI.sticky;
});

View File

@ -0,0 +1,2 @@
/*! UIkit 2.21.0 | http://www.getuikit.com | (c) 2014 YOOtheme | MIT License */
!function(t){var i;window.UIkit&&(i=t(UIkit)),"function"==typeof define&&define.amd&&define("uikit-sticky",["uikit"],function(){return i||t(UIkit)})}(function(t){"use strict";function i(){var i=arguments.length?arguments:o;if(i.length&&!(e.scrollTop()<0))for(var s,a,r,p,h=e.scrollTop(),c=n.height(),l=e.height(),u=c-l,d=h>u?u-h:0,m=0;m<i.length;m++)if(p=i[m],p.element.is(":visible")&&!p.animate){if(p.check()){if(p.options.top<0?s=0:(r=p.element.outerHeight(),s=c-r-p.options.top-p.options.bottom-h-d,s=0>s?s+p.options.top:p.options.top),p.boundary&&p.boundary.length){var f=p.boundary.position().top;a=p.boundtoparent?c-(f+p.boundary.outerHeight())+parseInt(p.boundary.css("padding-bottom")):c-f-parseInt(p.boundary.css("margin-top")),s=h+r>c-a-(p.options.top<0?0:p.options.top)?c-a-(h+r):s}if(p.currentTop!=s){if(p.element.css({position:"fixed",top:s,width:"undefined"!=typeof p.getWidthFrom?t.$(p.getWidthFrom).width():p.element.width(),left:p.wrapper.offset().left}),!p.init&&(p.element.addClass(p.options.clsinit),location.hash&&h>0&&p.options.target)){var g=t.$(location.hash);g.length&&setTimeout(function(t,i){return function(){i.element.width();var e=t.offset(),n=e.top+t.outerHeight(),o=i.element.offset(),s=i.element.outerHeight(),a=o.top+s;o.top<n&&e.top<a&&(h=e.top-s-i.options.target,window.scrollTo(0,h))}}(g,p),0)}p.element.addClass(p.options.clsactive),p.element.css("margin",""),p.options.animation&&p.init&&p.element.addClass(p.options.animation),p.currentTop=s}}else null!==p.currentTop&&p.reset();p.init=!0}}var e=t.$win,n=t.$doc,o=[];return t.component("sticky",{defaults:{top:0,bottom:0,animation:"",clsinit:"uk-sticky-init",clsactive:"uk-active",getWidthFrom:"",boundary:!1,media:!1,target:!1,disabled:!1},boot:function(){t.$doc.on("scrolling.uk.document",function(){i()}),t.$win.on("resize orientationchange",t.Utils.debounce(function(){if(o.length){for(var t=0;t<o.length;t++)o[t].reset(!0),o[t].self.computeWrapper();i()}},100)),t.ready(function(e){setTimeout(function(){t.$("[data-uk-sticky]",e).each(function(){var i=t.$(this);i.data("sticky")||t.sticky(i,t.Utils.options(i.attr("data-uk-sticky")))}),i()},0)})},init:function(){var i,s=t.$('<div class="uk-sticky-placeholder"></div>'),a=this.options.boundary;this.wrapper=this.element.css("margin",0).wrap(s).parent(),this.computeWrapper(),a&&(a===!0?(a=this.wrapper.parent(),i=!0):"string"==typeof a&&(a=t.$(a))),this.sticky={self:this,options:this.options,element:this.element,currentTop:null,wrapper:this.wrapper,init:!1,getWidthFrom:this.options.getWidthFrom||this.wrapper,boundary:a,boundtoparent:i,reset:function(i){var e=function(){this.element.css({position:"",top:"",width:"",left:"",margin:"0"}),this.element.removeClass([this.options.animation,"uk-animation-reverse",this.options.clsactive].join(" ")),this.currentTop=null,this.animate=!1}.bind(this);!i&&this.options.animation&&t.support.animation?(this.animate=!0,this.element.removeClass(this.options.animation).one(t.support.animation.end,function(){e()}).width(),this.element.addClass(this.options.animation+" uk-animation-reverse")):e()},check:function(){if(this.options.disabled)return!1;if(this.options.media)switch(typeof this.options.media){case"number":if(window.innerWidth<this.options.media)return!1;break;case"string":if(window.matchMedia&&!window.matchMedia(this.options.media).matches)return!1}var t=e.scrollTop(),i=n.height(),o=i-window.innerHeight,s=t>o?o-t:0,a=this.wrapper.offset().top,r=a-this.options.top-s;return t>=r}},o.push(this.sticky)},update:function(){i(this.sticky)},enable:function(){this.options.disabled=!1,this.update()},disable:function(t){this.options.disabled=!0,this.sticky.reset(t)},computeWrapper:function(){this.wrapper.css({height:"absolute"!=this.element.css("position")?this.element.outerHeight():"","float":"none"!=this.element.css("float")?this.element.css("float"):"",margin:this.element.css("margin")})}}),t.sticky});

View File

@ -0,0 +1,192 @@
/*! UIkit 2.21.0 | http://www.getuikit.com | (c) 2014 YOOtheme | MIT License */
(function(addon) {
var component;
if (window.UIkit) {
component = addon(UIkit);
}
if (typeof define == "function" && define.amd) {
define("uikit-search", ["uikit"], function(){
return component || addon(UIkit);
});
}
})(function(UI){
"use strict";
UI.component('timepicker', {
defaults: {
format : '24h',
delay : 0,
start : 0,
end : 24
},
boot: function() {
// init code
UI.$html.on("focus.timepicker.uikit", "[data-uk-timepicker]", function(e) {
var ele = UI.$(this);
if (!ele.data("timepicker")) {
var obj = UI.timepicker(ele, UI.Utils.options(ele.attr("data-uk-timepicker")));
setTimeout(function(){
obj.autocomplete.input.focus();
}, 40);
}
});
},
init: function() {
var $this = this, times = getTimeRange(this.options.start, this.options.end), container;
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(release) {
release(times[$this.options.format] || times['12h']);
};
if (this.element.is('input')) {
this.element.wrap('<div class="uk-autocomplete"></div>');
container = this.element.parent();
} else {
container = this.element.addClass('uk-autocomplete');
}
this.autocomplete = UI.autocomplete(container, this.options);
this.autocomplete.dropdown.addClass('uk-dropdown-small uk-dropdown-scrollable');
this.autocomplete.on('show.uk.autocomplete', function() {
var selected = $this.autocomplete.dropdown.find('[data-value="'+$this.autocomplete.input.val()+'"]');
setTimeout(function(){
$this.autocomplete.pick(selected, true);
}, 10);
});
this.autocomplete.input.on('focus', function(){
$this.autocomplete.value = Math.random();
$this.autocomplete.triggercomplete();
}).on('blur', function() {
$this.checkTime();
});
this.element.data("timepicker", this);
},
checkTime: function() {
var arr, timeArray, meridian = 'AM', hour, minute, time = this.autocomplete.input.val();
if (this.options.format == '12h') {
arr = time.split(' ');
timeArray = arr[0].split(':');
meridian = arr[1];
} else {
timeArray = time.split(':');
}
hour = parseInt(timeArray[0], 10);
minute = parseInt(timeArray[1], 10);
if (isNaN(hour)) hour = 0;
if (isNaN(minute)) minute = 0;
if (this.options.format == '12h') {
if (hour > 12) {
hour = 12;
} else if (hour < 0) {
hour = 12;
}
if (meridian === 'am' || meridian === 'a') {
meridian = 'AM';
} else if (meridian === 'pm' || meridian === 'p') {
meridian = 'PM';
}
if (meridian !== 'AM' && meridian !== 'PM') {
meridian = 'AM';
}
} else {
if (hour >= 24) {
hour = 23;
} else if (hour < 0) {
hour = 0;
}
}
if (minute < 0) {
minute = 0;
} else if (minute >= 60) {
minute = 0;
}
this.autocomplete.input.val(this.formatTime(hour, minute, meridian)).trigger('change');
},
formatTime: function(hour, minute, meridian) {
hour = hour < 10 ? '0' + hour : hour;
minute = minute < 10 ? '0' + minute : minute;
return hour + ':' + minute + (this.options.format == '12h' ? ' ' + meridian : '');
}
});
// helper
function getTimeRange(start, end) {
start = start || 0;
end = end || 24;
var times = {'12h':[], '24h':[]}, i, h;
for (i = start, h=''; i<end; i++) {
h = ''+i;
if (i<10) h = '0'+h;
times['24h'].push({value: (h+':00')});
times['24h'].push({value: (h+':30')});
if (i === 0) {
h = 12;
times['12h'].push({value: (h+':00 AM')});
times['12h'].push({value: (h+':30 AM')});
}
if (i > 0 && i<13 && i!==12) {
times['12h'].push({value: (h+':00 AM')});
times['12h'].push({value: (h+':30 AM')});
}
if (i >= 12) {
h = h-12;
if (h === 0) h = 12;
if (h < 10) h = '0'+String(h);
times['12h'].push({value: (h+':00 PM')});
times['12h'].push({value: (h+':30 PM')});
}
}
return times;
}
});

View File

@ -0,0 +1,2 @@
/*! UIkit 2.21.0 | http://www.getuikit.com | (c) 2014 YOOtheme | MIT License */
!function(t){var e;window.UIkit&&(e=t(UIkit)),"function"==typeof define&&define.amd&&define("uikit-search",["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",function(){o.checkTime()}),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:"")}})});

View File

@ -0,0 +1,234 @@
/*! UIkit 2.21.0 | http://www.getuikit.com | (c) 2014 YOOtheme | MIT License */
(function(addon) {
var component;
if (window.UIkit) {
component = addon(UIkit);
}
if (typeof define == "function" && define.amd) {
define("uikit-tooltip", ["uikit"], function(){
return component || addon(UIkit);
});
}
})(function(UI){
"use strict";
var $tooltip, // tooltip container
tooltipdelay, checkdelay;
UI.component('tooltip', {
defaults: {
"offset": 5,
"pos": "top",
"animation": false,
"delay": 0, // in miliseconds
"cls": "",
"activeClass": "uk-active",
"src": function(ele, title) {
title = ele.attr('title');
if (title) {
ele.data('cached-title', title).removeAttr('title');
}
return ele.data("cached-title");
}
},
tip: "",
boot: function() {
// init code
UI.$html.on("mouseenter.tooltip.uikit focus.tooltip.uikit", "[data-uk-tooltip]", function(e) {
var ele = UI.$(this);
if (!ele.data("tooltip")) {
var obj = UI.tooltip(ele, UI.Utils.options(ele.attr("data-uk-tooltip")));
ele.trigger("mouseenter");
}
});
},
init: function() {
var $this = this;
if (!$tooltip) {
$tooltip = UI.$('<div class="uk-tooltip"></div>').appendTo("body");
}
this.on({
focus : function(e) { $this.show(); },
blur : function(e) { $this.hide(); },
mouseenter : function(e) { $this.show(); },
mouseleave : function(e) { $this.hide(); }
});
},
show: function() {
this.tip = typeof(this.options.src) === "function" ? this.options.src(this.element) : this.options.src;
if (tooltipdelay) clearTimeout(tooltipdelay);
if (checkdelay) clearTimeout(checkdelay);
if (!this.tip.length) return;
$tooltip.stop().css({"top": -2000, "visibility": "hidden"}).removeClass(this.options.activeClass).show();
$tooltip.html('<div class="uk-tooltip-inner">' + this.tip + '</div>');
var $this = this,
pos = UI.$.extend({}, this.element.offset(), {width: this.element[0].offsetWidth, height: this.element[0].offsetHeight}),
width = $tooltip[0].offsetWidth,
height = $tooltip[0].offsetHeight,
offset = typeof(this.options.offset) === "function" ? this.options.offset.call(this.element) : this.options.offset,
position = typeof(this.options.pos) === "function" ? this.options.pos.call(this.element) : this.options.pos,
tmppos = position.split("-"),
tcss = {
"display" : "none",
"visibility" : "visible",
"top" : (pos.top + pos.height + height),
"left" : pos.left
};
// prevent strange position
// when tooltip is in offcanvas etc.
if (UI.$html.css('position')=='fixed' || UI.$body.css('position')=='fixed'){
var bodyoffset = UI.$('body').offset(),
htmloffset = UI.$('html').offset(),
docoffset = {'top': (htmloffset.top + bodyoffset.top), 'left': (htmloffset.left + bodyoffset.left)};
pos.left -= docoffset.left;
pos.top -= docoffset.top;
}
if ((tmppos[0] == "left" || tmppos[0] == "right") && UI.langdirection == 'right') {
tmppos[0] = tmppos[0] == "left" ? "right" : "left";
}
var variants = {
"bottom" : {top: pos.top + pos.height + offset, left: pos.left + pos.width / 2 - width / 2},
"top" : {top: pos.top - height - offset, left: pos.left + pos.width / 2 - width / 2},
"left" : {top: pos.top + pos.height / 2 - height / 2, left: pos.left - width - offset},
"right" : {top: pos.top + pos.height / 2 - height / 2, left: pos.left + pos.width + offset}
};
UI.$.extend(tcss, variants[tmppos[0]]);
if (tmppos.length == 2) tcss.left = (tmppos[1] == 'left') ? (pos.left) : ((pos.left + pos.width) - width);
var boundary = this.checkBoundary(tcss.left, tcss.top, width, height);
if(boundary) {
switch(boundary) {
case "x":
if (tmppos.length == 2) {
position = tmppos[0]+"-"+(tcss.left < 0 ? "left": "right");
} else {
position = tcss.left < 0 ? "right": "left";
}
break;
case "y":
if (tmppos.length == 2) {
position = (tcss.top < 0 ? "bottom": "top")+"-"+tmppos[1];
} else {
position = (tcss.top < 0 ? "bottom": "top");
}
break;
case "xy":
if (tmppos.length == 2) {
position = (tcss.top < 0 ? "bottom": "top")+"-"+(tcss.left < 0 ? "left": "right");
} else {
position = tcss.left < 0 ? "right": "left";
}
break;
}
tmppos = position.split("-");
UI.$.extend(tcss, variants[tmppos[0]]);
if (tmppos.length == 2) tcss.left = (tmppos[1] == 'left') ? (pos.left) : ((pos.left + pos.width) - width);
}
tcss.left -= UI.$body.position().left;
tooltipdelay = setTimeout(function(){
$tooltip.css(tcss).attr("class", ["uk-tooltip", "uk-tooltip-"+position, $this.options.cls].join(' '));
if ($this.options.animation) {
$tooltip.css({opacity: 0, display: 'block'}).addClass($this.options.activeClass).animate({opacity: 1}, parseInt($this.options.animation, 10) || 400);
} else {
$tooltip.show().addClass($this.options.activeClass);
}
tooltipdelay = false;
// close tooltip if element was removed or hidden
checkdelay = setInterval(function(){
if(!$this.element.is(':visible')) $this.hide();
}, 150);
}, parseInt(this.options.delay, 10) || 0);
},
hide: function() {
if(this.element.is("input") && this.element[0]===document.activeElement) return;
if(tooltipdelay) clearTimeout(tooltipdelay);
if (checkdelay) clearTimeout(checkdelay);
$tooltip.stop();
if (this.options.animation) {
var $this = this;
$tooltip.fadeOut(parseInt(this.options.animation, 10) || 400, function(){
$tooltip.removeClass($this.options.activeClass)
});
} else {
$tooltip.hide().removeClass(this.options.activeClass);
}
},
content: function() {
return this.tip;
},
checkBoundary: function(left, top, width, height) {
var axis = "";
if(left < 0 || ((left - UI.$win.scrollLeft())+width) > window.innerWidth) {
axis += "x";
}
if(top < 0 || ((top - UI.$win.scrollTop())+height) > window.innerHeight) {
axis += "y";
}
return axis;
}
});
return UI.tooltip;
});

View File

@ -0,0 +1,2 @@
/*! UIkit 2.21.0 | http://www.getuikit.com | (c) 2014 YOOtheme | MIT License */
!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,i){return i=t.attr("title"),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);if(!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&&clearTimeout(e),this.tip.length){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,p="function"==typeof this.options.offset?this.options.offset.call(this.element):this.options.offset,a="function"==typeof this.options.pos?this.options.pos.call(this.element):this.options.pos,h=a.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+p,left:n.left+n.width/2-l/2},top:{top:n.top-f-p,left:n.left+n.width/2-l/2},left:{top:n.top+n.height/2-f/2,left:n.left-l-p},right:{top:n.top+n.height/2-f/2,left:n.left+n.width+p}};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":a=2==h.length?h[0]+"-"+(c.left<0?"left":"right"):c.left<0?"right":"left";break;case"y":a=2==h.length?(c.top<0?"bottom":"top")+"-"+h[1]:c.top<0?"bottom":"top";break;case"xy":a=2==h.length?(c.top<0?"bottom":"top")+"-"+(c.left<0?"left":"right"):c.left<0?"right":"left"}h=a.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-"+a,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&&clearTimeout(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});

View File

@ -0,0 +1,256 @@
/*! UIkit 2.21.0 | http://www.getuikit.com | (c) 2014 YOOtheme | MIT License */
(function(addon) {
var component;
if (window.UIkit) {
component = addon(UIkit);
}
if (typeof define == "function" && define.amd) {
define("uikit-upload", ["uikit"], function(){
return component || addon(UIkit);
});
}
})(function(UI){
"use strict";
UI.component('uploadSelect', {
init: function() {
var $this = this;
this.on("change", function() {
xhrupload($this.element[0].files, $this.options);
var twin = $this.element.clone(true).data('uploadSelect', $this);
$this.element.replaceWith(twin);
$this.element = twin;
});
}
});
UI.component('uploadDrop', {
defaults: {
'dragoverClass': 'uk-dragover'
},
init: function() {
var $this = this, hasdragCls = false;
this.on("drop", function(e){
if (e.dataTransfer && e.dataTransfer.files) {
e.stopPropagation();
e.preventDefault();
$this.element.removeClass($this.options.dragoverClass);
$this.element.trigger('dropped.uk.upload', [e.dataTransfer.files]);
xhrupload(e.dataTransfer.files, $this.options);
}
}).on("dragenter", function(e){
e.stopPropagation();
e.preventDefault();
}).on("dragover", function(e){
e.stopPropagation();
e.preventDefault();
if (!hasdragCls) {
$this.element.addClass($this.options.dragoverClass);
hasdragCls = true;
}
}).on("dragleave", function(e){
e.stopPropagation();
e.preventDefault();
$this.element.removeClass($this.options.dragoverClass);
hasdragCls = false;
});
}
});
UI.support.ajaxupload = (function() {
function supportFileAPI() {
var fi = document.createElement('INPUT'); fi.type = 'file'; return 'files' in fi;
}
function supportAjaxUploadProgressEvents() {
var xhr = new XMLHttpRequest(); return !! (xhr && ('upload' in xhr) && ('onprogress' in xhr.upload));
}
function supportFormData() {
return !! window.FormData;
}
return supportFileAPI() && supportAjaxUploadProgressEvents() && supportFormData();
})();
if (UI.support.ajaxupload){
UI.$.event.props.push("dataTransfer");
}
function xhrupload(files, settings) {
if (!UI.support.ajaxupload){
return this;
}
settings = UI.$.extend({}, xhrupload.defaults, settings);
if (!files.length){
return;
}
if (settings.allow !== '*.*') {
for(var i=0,file;file=files[i];i++) {
if(!matchName(settings.allow, file.name)) {
if(typeof(settings.notallowed) == 'string') {
alert(settings.notallowed);
} else {
settings.notallowed(file, settings);
}
return;
}
}
}
var complete = settings.complete;
if (settings.single){
var count = files.length,
uploaded = 0,
allow = true;
settings.beforeAll(files);
settings.complete = function(response, xhr){
uploaded = uploaded + 1;
complete(response, xhr);
if (settings.filelimit && uploaded >= settings.filelimit){
allow = false;
}
if (allow && uploaded<count){
upload([files[uploaded]], settings);
} else {
settings.allcomplete(response, xhr);
}
};
upload([files[0]], settings);
} else {
settings.complete = function(response, xhr){
complete(response, xhr);
settings.allcomplete(response, xhr);
};
upload(files, settings);
}
function upload(files, settings){
// upload all at once
var formData = new FormData(), xhr = new XMLHttpRequest();
if (settings.before(settings, files)===false) return;
for (var i = 0, f; f = files[i]; i++) { formData.append(settings.param, f); }
for (var p in settings.params) { formData.append(p, settings.params[p]); }
// Add any event handlers here...
xhr.upload.addEventListener("progress", function(e){
var percent = (e.loaded / e.total)*100;
settings.progress(percent, e);
}, false);
xhr.addEventListener("loadstart", function(e){ settings.loadstart(e); }, false);
xhr.addEventListener("load", function(e){ settings.load(e); }, false);
xhr.addEventListener("loadend", function(e){ settings.loadend(e); }, false);
xhr.addEventListener("error", function(e){ settings.error(e); }, false);
xhr.addEventListener("abort", function(e){ settings.abort(e); }, false);
xhr.open(settings.method, settings.action, true);
xhr.onreadystatechange = function() {
settings.readystatechange(xhr);
if (xhr.readyState==4){
var response = xhr.responseText;
if (settings.type=="json") {
try {
response = UI.$.parseJSON(response);
} catch(e) {
response = false;
}
}
settings.complete(response, xhr);
}
};
settings.beforeSend(xhr);
xhr.send(formData);
}
}
xhrupload.defaults = {
'action': '',
'single': true,
'method': 'POST',
'param' : 'files[]',
'params': {},
'allow' : '*.*',
'type' : 'text',
'filelimit': false,
// events
'before' : function(o){},
'beforeSend' : function(xhr){},
'beforeAll' : function(){},
'loadstart' : function(){},
'load' : function(){},
'loadend' : function(){},
'error' : function(){},
'abort' : function(){},
'progress' : function(){},
'complete' : function(){},
'allcomplete' : function(){},
'readystatechange': function(){},
'notallowed' : function(file, settings){ alert('Only the following file types are allowed: '+settings.allow); }
};
function matchName(pattern, path) {
var parsedPattern = '^' + pattern.replace(/\//g, '\\/').
replace(/\*\*/g, '(\\/[^\\/]+)*').
replace(/\*/g, '[^\\/]+').
replace(/((?!\\))\?/g, '$1.') + '$';
parsedPattern = '^' + parsedPattern + '$';
return (path.match(new RegExp(parsedPattern, 'i')) !== null);
}
UI.Utils.xhrupload = xhrupload;
return xhrupload;
});

View File

@ -0,0 +1,2 @@
/*! UIkit 2.21.0 | http://www.getuikit.com | (c) 2014 YOOtheme | MIT License */
!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,l=0;r=t[l];l++)o.append(n.param,r);for(var i in n.params)o.append(i,n.params[i]);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),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 l,i=0;l=o[i];i++)if(!n(a.allow,l.name))return"string"==typeof a.notallowed?alert(a.notallowed):a.notallowed(l,a),void 0;var f=a.complete;if(a.single){var d=o.length,s=0,p=!0;a.beforeAll(o),a.complete=function(e,t){s+=1,f(e,t),a.filelimit&&s>=a.filelimit&&(p=!1),p&&d>s?r([o[s]],a):a.allcomplete(e,t)},r([o[0]],a)}else a.complete=function(e,t){f(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});

View File

@ -0,0 +1,66 @@
/*! UIkit 2.21.0 | http://www.getuikit.com | (c) 2014 YOOtheme | MIT License */
(function(UI) {
"use strict";
UI.component('alert', {
defaults: {
"fade": true,
"duration": 200,
"trigger": ".uk-alert-close"
},
boot: function() {
// init code
UI.$html.on("click.alert.uikit", "[data-uk-alert]", function(e) {
var ele = UI.$(this);
if (!ele.data("alert")) {
var alert = UI.alert(ele, UI.Utils.options(ele.attr("data-uk-alert")));
if (UI.$(e.target).is(alert.options.trigger)) {
e.preventDefault();
alert.close();
}
}
});
},
init: function() {
var $this = this;
this.on("click", this.options.trigger, function(e) {
e.preventDefault();
$this.close();
});
},
close: function() {
var element = this.trigger("close.uk.alert"),
removeElement = function () {
this.trigger("closed.uk.alert").remove();
}.bind(this);
if (this.options.fade) {
element.css("overflow", "hidden").css("max-height", element.height()).animate({
"height" : 0,
"opacity" : 0,
"padding-top" : 0,
"padding-bottom" : 0,
"margin-top" : 0,
"margin-bottom" : 0
}, this.options.duration, removeElement);
} else {
removeElement();
}
}
});
})(UIkit);

2
media/uikit/js/core/alert.min.js vendored Normal file
View File

@ -0,0 +1,2 @@
/*! UIkit 2.21.0 | http://www.getuikit.com | (c) 2014 YOOtheme | MIT License */
!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);

View File

@ -0,0 +1,154 @@
/*! UIkit 2.21.0 | http://www.getuikit.com | (c) 2014 YOOtheme | MIT License */
(function(UI) {
"use strict";
UI.component('buttonRadio', {
defaults: {
"target": ".uk-button"
},
boot: function() {
// init code
UI.$html.on("click.buttonradio.uikit", "[data-uk-button-radio]", function(e) {
var ele = UI.$(this);
if (!ele.data("buttonRadio")) {
var obj = UI.buttonRadio(ele, UI.Utils.options(ele.attr("data-uk-button-radio"))),
target = UI.$(e.target);
if (target.is(obj.options.target)) {
target.trigger("click");
}
}
});
},
init: function() {
var $this = this;
// Init ARIA
this.find($this.options.target).attr('aria-checked', 'false').filter(".uk-active").attr('aria-checked', 'true');
this.on("click", this.options.target, function(e) {
var ele = UI.$(this);
if (ele.is('a[href="#"]')) e.preventDefault();
$this.find($this.options.target).not(ele).removeClass("uk-active").blur();
ele.addClass("uk-active");
// Update ARIA
$this.find($this.options.target).not(ele).attr('aria-checked', 'false');
ele.attr('aria-checked', 'true');
$this.trigger("change.uk.button", [ele]);
});
},
getSelected: function() {
return this.find(".uk-active");
}
});
UI.component('buttonCheckbox', {
defaults: {
"target": ".uk-button"
},
boot: function() {
UI.$html.on("click.buttoncheckbox.uikit", "[data-uk-button-checkbox]", function(e) {
var ele = UI.$(this);
if (!ele.data("buttonCheckbox")) {
var obj = UI.buttonCheckbox(ele, UI.Utils.options(ele.attr("data-uk-button-checkbox"))),
target = UI.$(e.target);
if (target.is(obj.options.target)) {
target.trigger("click");
}
}
});
},
init: function() {
var $this = this;
// Init ARIA
this.find($this.options.target).attr('aria-checked', 'false').filter(".uk-active").attr('aria-checked', 'true');
this.on("click", this.options.target, function(e) {
var ele = UI.$(this);
if (ele.is('a[href="#"]')) e.preventDefault();
ele.toggleClass("uk-active").blur();
// Update ARIA
ele.attr('aria-checked', ele.hasClass("uk-active"));
$this.trigger("change.uk.button", [ele]);
});
},
getSelected: function() {
return this.find(".uk-active");
}
});
UI.component('button', {
defaults: {},
boot: function() {
UI.$html.on("click.button.uikit", "[data-uk-button]", function(e) {
var ele = UI.$(this);
if (!ele.data("button")) {
var obj = UI.button(ele, UI.Utils.options(ele.attr("data-uk-button")));
ele.trigger("click");
}
});
},
init: function() {
var $this = this;
// Init ARIA
this.element.attr('aria-pressed', this.element.hasClass("uk-active"));
this.on("click", function(e) {
if ($this.element.is('a[href="#"]')) e.preventDefault();
$this.toggle();
$this.trigger("change.uk.button", [$this.element.blur().hasClass("uk-active")]);
});
},
toggle: function() {
this.element.toggleClass("uk-active");
// Update ARIA
this.element.attr('aria-pressed', this.element.hasClass("uk-active"));
}
});
})(UIkit);

2
media/uikit/js/core/button.min.js vendored Normal file
View File

@ -0,0 +1,2 @@
/*! UIkit 2.21.0 | http://www.getuikit.com | (c) 2014 YOOtheme | MIT License */
!function(t){"use strict";t.component("buttonRadio",{defaults:{target:".uk-button"},boot:function(){t.$html.on("click.buttonradio.uikit","[data-uk-button-radio]",function(i){var e=t.$(this);if(!e.data("buttonRadio")){var a=t.buttonRadio(e,t.Utils.options(e.attr("data-uk-button-radio"))),n=t.$(i.target);n.is(a.options.target)&&n.trigger("click")}})},init:function(){var i=this;this.find(i.options.target).attr("aria-checked","false").filter(".uk-active").attr("aria-checked","true"),this.on("click",this.options.target,function(e){var a=t.$(this);a.is('a[href="#"]')&&e.preventDefault(),i.find(i.options.target).not(a).removeClass("uk-active").blur(),a.addClass("uk-active"),i.find(i.options.target).not(a).attr("aria-checked","false"),a.attr("aria-checked","true"),i.trigger("change.uk.button",[a])})},getSelected:function(){return this.find(".uk-active")}}),t.component("buttonCheckbox",{defaults:{target:".uk-button"},boot:function(){t.$html.on("click.buttoncheckbox.uikit","[data-uk-button-checkbox]",function(i){var e=t.$(this);if(!e.data("buttonCheckbox")){var a=t.buttonCheckbox(e,t.Utils.options(e.attr("data-uk-button-checkbox"))),n=t.$(i.target);n.is(a.options.target)&&n.trigger("click")}})},init:function(){var i=this;this.find(i.options.target).attr("aria-checked","false").filter(".uk-active").attr("aria-checked","true"),this.on("click",this.options.target,function(e){var a=t.$(this);a.is('a[href="#"]')&&e.preventDefault(),a.toggleClass("uk-active").blur(),a.attr("aria-checked",a.hasClass("uk-active")),i.trigger("change.uk.button",[a])})},getSelected:function(){return this.find(".uk-active")}}),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);

722
media/uikit/js/core/core.js Normal file
View File

@ -0,0 +1,722 @@
/*! UIkit 2.21.0 | http://www.getuikit.com | (c) 2014 YOOtheme | MIT License */
(function(core) {
if (typeof define == "function" && define.amd) { // AMD
define("uikit", function(){
var uikit = window.UIkit || core(window, window.jQuery, window.document);
uikit.load = function(res, req, onload, config) {
var resources = res.split(','), load = [], i, base = (config.config && config.config.uikit && config.config.uikit.base ? config.config.uikit.base : "").replace(/\/+$/g, "");
if (!base) {
throw new Error( "Please define base path to UIkit in the requirejs config." );
}
for (i = 0; i < resources.length; i += 1) {
var resource = resources[i].replace(/\./g, '/');
load.push(base+'/components/'+resource);
}
req(load, function() {
onload(uikit);
});
};
return uikit;
});
}
if (!window.jQuery) {
throw new Error( "UIkit requires jQuery" );
}
if (window && window.jQuery) {
core(window, window.jQuery, window.document);
}
})(function(global, $, doc) {
"use strict";
var UI = {}, _UI = global.UIkit ? Object.create(global.UIkit) : undefined;
UI.version = '2.21.0';
UI.noConflict = function() {
// restore UIkit version
if (_UI) {
global.UIkit = _UI;
$.UIkit = _UI;
$.fn.uk = _UI.fn;
}
return UI;
};
UI.prefix = function(str) {
return str;
};
// cache jQuery
UI.$ = $;
UI.$doc = UI.$(document);
UI.$win = UI.$(window);
UI.$html = UI.$('html');
UI.support = {};
UI.support.transition = (function() {
var transitionEnd = (function() {
var element = doc.body || doc.documentElement,
transEndEventNames = {
WebkitTransition : 'webkitTransitionEnd',
MozTransition : 'transitionend',
OTransition : 'oTransitionEnd otransitionend',
transition : 'transitionend'
}, name;
for (name in transEndEventNames) {
if (element.style[name] !== undefined) return transEndEventNames[name];
}
}());
return transitionEnd && { end: transitionEnd };
})();
UI.support.animation = (function() {
var animationEnd = (function() {
var element = doc.body || doc.documentElement,
animEndEventNames = {
WebkitAnimation : 'webkitAnimationEnd',
MozAnimation : 'animationend',
OAnimation : 'oAnimationEnd oanimationend',
animation : 'animationend'
}, name;
for (name in animEndEventNames) {
if (element.style[name] !== undefined) return animEndEventNames[name];
}
}());
return animationEnd && { end: animationEnd };
})();
// requestAnimationFrame polyfill
// https://gist.github.com/paulirish/1579671
(function(){
var lastTime = 0;
global.requestAnimationFrame = global.requestAnimationFrame || global.webkitRequestAnimationFrame || function(callback, element) {
var currTime = new Date().getTime();
var timeToCall = Math.max(0, 16 - (currTime - lastTime));
var id = global.setTimeout(function() { callback(currTime + timeToCall); }, timeToCall);
lastTime = currTime + timeToCall;
return id;
};
if (!global.cancelAnimationFrame) {
global.cancelAnimationFrame = function(id) {
clearTimeout(id);
};
}
})();
UI.support.touch = (
('ontouchstart' in document) ||
(global.DocumentTouch && document instanceof global.DocumentTouch) ||
(global.navigator.msPointerEnabled && global.navigator.msMaxTouchPoints > 0) || //IE 10
(global.navigator.pointerEnabled && global.navigator.maxTouchPoints > 0) || //IE >=11
false
);
UI.support.mutationobserver = (global.MutationObserver || global.WebKitMutationObserver || null);
UI.Utils = {};
UI.Utils.isFullscreen = function() {
return document.webkitFullscreenElement || document.mozFullScreenElement || document.msFullscreenElement || document.fullscreenElement || false;
};
UI.Utils.str2json = function(str, notevil) {
try {
if (notevil) {
return JSON.parse(str
// wrap keys without quote with valid double quote
.replace(/([\$\w]+)\s*:/g, function(_, $1){return '"'+$1+'":';})
// replacing single quote wrapped ones to double quote
.replace(/'([^']+)'/g, function(_, $1){return '"'+$1+'"';})
);
} else {
return (new Function("", "var json = " + str + "; return JSON.parse(JSON.stringify(json));"))();
}
} catch(e) { return false; }
};
UI.Utils.debounce = function(func, wait, immediate) {
var timeout;
return function() {
var context = this, args = arguments;
var later = function() {
timeout = null;
if (!immediate) func.apply(context, args);
};
var callNow = immediate && !timeout;
clearTimeout(timeout);
timeout = setTimeout(later, wait);
if (callNow) func.apply(context, args);
};
};
UI.Utils.removeCssRules = function(selectorRegEx) {
var idx, idxs, stylesheet, _i, _j, _k, _len, _len1, _len2, _ref;
if(!selectorRegEx) return;
setTimeout(function(){
try {
_ref = document.styleSheets;
for (_i = 0, _len = _ref.length; _i < _len; _i++) {
stylesheet = _ref[_i];
idxs = [];
stylesheet.cssRules = stylesheet.cssRules;
for (idx = _j = 0, _len1 = stylesheet.cssRules.length; _j < _len1; idx = ++_j) {
if (stylesheet.cssRules[idx].type === CSSRule.STYLE_RULE && selectorRegEx.test(stylesheet.cssRules[idx].selectorText)) {
idxs.unshift(idx);
}
}
for (_k = 0, _len2 = idxs.length; _k < _len2; _k++) {
stylesheet.deleteRule(idxs[_k]);
}
}
} catch (_error) {}
}, 0);
};
UI.Utils.isInView = function(element, options) {
var $element = $(element);
if (!$element.is(':visible')) {
return false;
}
var window_left = UI.$win.scrollLeft(), window_top = UI.$win.scrollTop(), offset = $element.offset(), left = offset.left, top = offset.top;
options = $.extend({topoffset:0, leftoffset:0}, options);
if (top + $element.height() >= window_top && top - options.topoffset <= window_top + UI.$win.height() &&
left + $element.width() >= window_left && left - options.leftoffset <= window_left + UI.$win.width()) {
return true;
} else {
return false;
}
};
UI.Utils.checkDisplay = function(context, initanimation) {
var elements = UI.$('[data-uk-margin], [data-uk-grid-match], [data-uk-grid-margin], [data-uk-check-display]', context || document), animated;
if (context && !elements.length) {
elements = $(context);
}
elements.trigger('display.uk.check');
// fix firefox / IE animations
if (initanimation) {
if (typeof(initanimation)!='string') {
initanimation = '[class*="uk-animation-"]';
}
elements.find(initanimation).each(function(){
var ele = UI.$(this),
cls = ele.attr('class'),
anim = cls.match(/uk\-animation\-(.+)/);
ele.removeClass(anim[0]).width();
ele.addClass(anim[0]);
});
}
return elements;
};
UI.Utils.options = function(string) {
if ($.isPlainObject(string)) return string;
var start = (string ? string.indexOf("{") : -1), options = {};
if (start != -1) {
try {
options = UI.Utils.str2json(string.substr(start));
} catch (e) {}
}
return options;
};
UI.Utils.animate = function(element, cls) {
var d = $.Deferred();
element = UI.$(element);
cls = cls;
element.css('display', 'none').addClass(cls).one(UI.support.animation.end, function() {
element.removeClass(cls);
d.resolve();
}).width();
element.css('display', '');
return d.promise();
};
UI.Utils.uid = function(prefix) {
return (prefix || 'id') + (new Date().getTime())+"RAND"+(Math.ceil(Math.random() * 100000));
};
UI.Utils.template = function(str, data) {
var tokens = str.replace(/\n/g, '\\n').replace(/\{\{\{\s*(.+?)\s*\}\}\}/g, "{{!$1}}").split(/(\{\{\s*(.+?)\s*\}\})/g),
i=0, toc, cmd, prop, val, fn, output = [], openblocks = 0;
while(i < tokens.length) {
toc = tokens[i];
if(toc.match(/\{\{\s*(.+?)\s*\}\}/)) {
i = i + 1;
toc = tokens[i];
cmd = toc[0];
prop = toc.substring(toc.match(/^(\^|\#|\!|\~|\:)/) ? 1:0);
switch(cmd) {
case '~':
output.push("for(var $i=0;$i<"+prop+".length;$i++) { var $item = "+prop+"[$i];");
openblocks++;
break;
case ':':
output.push("for(var $key in "+prop+") { var $val = "+prop+"[$key];");
openblocks++;
break;
case '#':
output.push("if("+prop+") {");
openblocks++;
break;
case '^':
output.push("if(!"+prop+") {");
openblocks++;
break;
case '/':
output.push("}");
openblocks--;
break;
case '!':
output.push("__ret.push("+prop+");");
break;
default:
output.push("__ret.push(escape("+prop+"));");
break;
}
} else {
output.push("__ret.push('"+toc.replace(/\'/g, "\\'")+"');");
}
i = i + 1;
}
fn = new Function('$data', [
'var __ret = [];',
'try {',
'with($data){', (!openblocks ? output.join('') : '__ret = ["Not all blocks are closed correctly."]'), '};',
'}catch(e){__ret = [e.message];}',
'return __ret.join("").replace(/\\n\\n/g, "\\n");',
"function escape(html) { return String(html).replace(/&/g, '&amp;').replace(/\"/g, '&quot;').replace(/</g, '&lt;').replace(/>/g, '&gt;');}"
].join("\n"));
return data ? fn(data) : fn;
};
UI.Utils.events = {};
UI.Utils.events.click = UI.support.touch ? 'tap' : 'click';
global.UIkit = UI;
// deprecated
UI.fn = function(command, options) {
var args = arguments, cmd = command.match(/^([a-z\-]+)(?:\.([a-z]+))?/i), component = cmd[1], method = cmd[2];
if (!UI[component]) {
$.error("UIkit component [" + component + "] does not exist.");
return this;
}
return this.each(function() {
var $this = $(this), data = $this.data(component);
if (!data) $this.data(component, (data = UI[component](this, method ? undefined : options)));
if (method) data[method].apply(data, Array.prototype.slice.call(args, 1));
});
};
$.UIkit = UI;
$.fn.uk = UI.fn;
UI.langdirection = UI.$html.attr("dir") == "rtl" ? "right" : "left";
UI.components = {};
UI.component = function(name, def) {
var fn = function(element, options) {
var $this = this;
this.UIkit = UI;
this.element = element ? UI.$(element) : null;
this.options = $.extend(true, {}, this.defaults, options);
this.plugins = {};
if (this.element) {
this.element.data(name, this);
}
this.init();
(this.options.plugins.length ? this.options.plugins : Object.keys(fn.plugins)).forEach(function(plugin) {
if (fn.plugins[plugin].init) {
fn.plugins[plugin].init($this);
$this.plugins[plugin] = true;
}
});
this.trigger('init.uk.component', [name, this]);
return this;
};
fn.plugins = {};
$.extend(true, fn.prototype, {
defaults : {plugins: []},
boot: function(){},
init: function(){},
on: function(a1,a2,a3){
return UI.$(this.element || this).on(a1,a2,a3);
},
one: function(a1,a2,a3){
return UI.$(this.element || this).one(a1,a2,a3);
},
off: function(evt){
return UI.$(this.element || this).off(evt);
},
trigger: function(evt, params) {
return UI.$(this.element || this).trigger(evt, params);
},
find: function(selector) {
return UI.$(this.element ? this.element: []).find(selector);
},
proxy: function(obj, methods) {
var $this = this;
methods.split(' ').forEach(function(method) {
if (!$this[method]) $this[method] = function() { return obj[method].apply(obj, arguments); };
});
},
mixin: function(obj, methods) {
var $this = this;
methods.split(' ').forEach(function(method) {
if (!$this[method]) $this[method] = obj[method].bind($this);
});
},
option: function() {
if (arguments.length == 1) {
return this.options[arguments[0]] || undefined;
} else if (arguments.length == 2) {
this.options[arguments[0]] = arguments[1];
}
}
}, def);
this.components[name] = fn;
this[name] = function() {
var element, options;
if (arguments.length) {
switch(arguments.length) {
case 1:
if (typeof arguments[0] === "string" || arguments[0].nodeType || arguments[0] instanceof jQuery) {
element = $(arguments[0]);
} else {
options = arguments[0];
}
break;
case 2:
element = $(arguments[0]);
options = arguments[1];
break;
}
}
if (element && element.data(name)) {
return element.data(name);
}
return (new UI.components[name](element, options));
};
if (UI.domready) {
UI.component.boot(name);
}
return fn;
};
UI.plugin = function(component, name, def) {
this.components[component].plugins[name] = def;
};
UI.component.boot = function(name) {
if (UI.components[name].prototype && UI.components[name].prototype.boot && !UI.components[name].booted) {
UI.components[name].prototype.boot.apply(UI, []);
UI.components[name].booted = true;
}
};
UI.component.bootComponents = function() {
for (var component in UI.components) {
UI.component.boot(component);
}
};
// DOM mutation save ready helper function
UI.domObservers = [];
UI.domready = false;
UI.ready = function(fn) {
UI.domObservers.push(fn);
if (UI.domready) {
fn(document);
}
};
UI.on = function(a1,a2,a3){
if (a1 && a1.indexOf('ready.uk.dom') > -1 && UI.domready) {
a2.apply(UI.$doc);
}
return UI.$doc.on(a1,a2,a3);
};
UI.one = function(a1,a2,a3){
if (a1 && a1.indexOf('ready.uk.dom') > -1 && UI.domready) {
a2.apply(UI.$doc);
return UI.$doc;
}
return UI.$doc.one(a1,a2,a3);
};
UI.trigger = function(evt, params) {
return UI.$doc.trigger(evt, params);
};
UI.domObserve = function(selector, fn) {
if(!UI.support.mutationobserver) return;
fn = fn || function() {};
UI.$(selector).each(function() {
var element = this,
$element = UI.$(element);
if ($element.data('observer')) {
return;
}
try {
var observer = new UI.support.mutationobserver(UI.Utils.debounce(function(mutations) {
fn.apply(element, []);
$element.trigger('changed.uk.dom');
}, 50));
// pass in the target node, as well as the observer options
observer.observe(element, { childList: true, subtree: true });
$element.data('observer', observer);
} catch(e) {}
});
};
UI.init = function(root) {
root = root || document;
UI.domObservers.forEach(function(fn){
fn(root);
});
};
UI.on('domready.uk.dom', function(){
UI.init();
if (UI.domready) UI.Utils.checkDisplay();
});
$(function(){
UI.$body = UI.$('body');
UI.ready(function(context){
UI.domObserve('[data-uk-observe]');
});
UI.on('changed.uk.dom', function(e) {
UI.init(e.target);
UI.Utils.checkDisplay(e.target);
});
UI.trigger('beforeready.uk.dom');
UI.component.bootComponents();
// custom scroll observer
setInterval((function(){
var memory = {x: window.pageXOffset, y:window.pageYOffset}, dir;
var fn = function(){
if (memory.x != window.pageXOffset || memory.y != window.pageYOffset) {
dir = {x: 0 , y: 0};
if (window.pageXOffset != memory.x) dir.x = window.pageXOffset > memory.x ? 1:-1;
if (window.pageYOffset != memory.y) dir.y = window.pageYOffset > memory.y ? 1:-1;
memory = {
"dir": dir, "x": window.pageXOffset, "y": window.pageYOffset
};
UI.$doc.trigger('scrolling.uk.document', [memory]);
}
};
if (UI.support.touch) {
UI.$html.on('touchmove touchend MSPointerMove MSPointerUp pointermove pointerup', fn);
}
if (memory.x || memory.y) fn();
return fn;
})(), 15);
// run component init functions on dom
UI.trigger('domready.uk.dom');
if (UI.support.touch) {
// remove css hover rules for touch devices
// UI.Utils.removeCssRules(/\.uk-(?!navbar).*:hover/);
// viewport unit fix for uk-height-viewport - should be fixed in iOS 8
if (navigator.userAgent.match(/(iPad|iPhone|iPod)/g)) {
UI.$win.on('load orientationchange resize', UI.Utils.debounce((function(){
var fn = function() {
$('.uk-height-viewport').css('height', window.innerHeight);
return fn;
};
return fn();
})(), 100));
}
}
UI.trigger('afterready.uk.dom');
// mark that domready is left behind
UI.domready = true;
});
// add touch identifier class
UI.$html.addClass(UI.support.touch ? "uk-touch" : "uk-notouch");
// add uk-hover class on tap to support overlays on touch devices
if (UI.support.touch) {
var hoverset = false, exclude, hovercls = 'uk-hover', selector = '.uk-overlay, .uk-overlay-hover, .uk-overlay-toggle, .uk-animation-hover, .uk-has-hover';
UI.$html.on('touchstart MSPointerDown pointerdown', selector, function() {
if (hoverset) $('.'+hovercls).removeClass(hovercls);
hoverset = $(this).addClass(hovercls);
}).on('touchend MSPointerUp pointerup', function(e) {
exclude = $(e.target).parents(selector);
if (hoverset) {
hoverset.not(exclude).removeClass(hovercls);
}
});
}
return UI;
});

2
media/uikit/js/core/core.min.js vendored Normal file

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1,95 @@
/*! UIkit 2.21.0 | http://www.getuikit.com | (c) 2014 YOOtheme | MIT License */
(function(UI){
"use strict";
UI.component('cover', {
defaults: {
automute : true
},
boot: function() {
// auto init
UI.ready(function(context) {
UI.$("[data-uk-cover]", context).each(function(){
var ele = UI.$(this);
if(!ele.data("cover")) {
var plugin = UI.cover(ele, UI.Utils.options(ele.attr("data-uk-cover")));
}
});
});
},
init: function() {
this.parent = this.element.parent();
UI.$win.on('load resize orientationchange', UI.Utils.debounce(function(){
this.check();
}.bind(this), 100));
this.on("display.uk.check", function(e) {
if(this.element.is(":visible")) this.check();
}.bind(this));
this.check();
if (this.element.is('iframe') && this.options.automute) {
var src = this.element.attr('src');
this.element.attr('src', '').on('load', function(){
this.contentWindow.postMessage('{ "event": "command", "func": "mute", "method":"setVolume", "value":0}', '*');
}).attr('src', [src, (src.indexOf('?') > -1 ? '&':'?'), 'enablejsapi=1&api=1'].join(''));
}
},
check: function() {
this.element.css({
'width' : '',
'height' : ''
});
this.dimension = {w: this.element.width(), h: this.element.height()};
if (this.element.attr('width') && !isNaN(this.element.attr('width'))) {
this.dimension.w = this.element.attr('width');
}
if (this.element.attr('height') && !isNaN(this.element.attr('height'))) {
this.dimension.h = this.element.attr('height');
}
this.ratio = this.dimension.w / this.dimension.h;
var w = this.parent.width(), h = this.parent.height(), width, height;
// if element height < parent height (gap underneath)
if ((w / this.ratio) < h) {
width = Math.ceil(h * this.ratio);
height = h;
// element width < parent width (gap to right)
} else {
width = w;
height = Math.ceil(w / this.ratio);
}
this.element.css({
'width' : width,
'height' : height
});
}
});
})(UIkit);

2
media/uikit/js/core/cover.min.js vendored Normal file
View File

@ -0,0 +1,2 @@
/*! UIkit 2.21.0 | http://www.getuikit.com | (c) 2014 YOOtheme | MIT License */
!function(t){"use strict";t.component("cover",{defaults:{automute:!0},boot:function(){t.ready(function(i){t.$("[data-uk-cover]",i).each(function(){var i=t.$(this);if(!i.data("cover")){t.cover(i,t.Utils.options(i.attr("data-uk-cover")))}})})},init:function(){if(this.parent=this.element.parent(),t.$win.on("load resize orientationchange",t.Utils.debounce(function(){this.check()}.bind(this),100)),this.on("display.uk.check",function(){this.element.is(":visible")&&this.check()}.bind(this)),this.check(),this.element.is("iframe")&&this.options.automute){var i=this.element.attr("src");this.element.attr("src","").on("load",function(){this.contentWindow.postMessage('{ "event": "command", "func": "mute", "method":"setVolume", "value":0}',"*")}).attr("src",[i,i.indexOf("?")>-1?"&":"?","enablejsapi=1&api=1"].join(""))}},check:function(){this.element.css({width:"",height:""}),this.dimension={w:this.element.width(),h:this.element.height()},this.element.attr("width")&&!isNaN(this.element.attr("width"))&&(this.dimension.w=this.element.attr("width")),this.element.attr("height")&&!isNaN(this.element.attr("height"))&&(this.dimension.h=this.element.attr("height")),this.ratio=this.dimension.w/this.dimension.h;var t,i,e=this.parent.width(),n=this.parent.height();e/this.ratio<n?(t=Math.ceil(n*this.ratio),i=n):(t=e,i=Math.ceil(e/this.ratio)),this.element.css({width:t,height:i})}})}(UIkit);

View File

@ -0,0 +1,296 @@
/*! UIkit 2.21.0 | http://www.getuikit.com | (c) 2014 YOOtheme | MIT License */
(function(UI) {
"use strict";
var active = false, hoverIdle;
UI.component('dropdown', {
defaults: {
'mode' : 'hover',
'remaintime' : 800,
'justify' : false,
'boundary' : UI.$win,
'delay' : 0,
'hoverDelayIdle' : 250
},
remainIdle: false,
boot: function() {
var triggerevent = UI.support.touch ? "click" : "mouseenter";
// init code
UI.$html.on(triggerevent+".dropdown.uikit", "[data-uk-dropdown]", function(e) {
var ele = UI.$(this);
if (!ele.data("dropdown")) {
var dropdown = UI.dropdown(ele, UI.Utils.options(ele.attr("data-uk-dropdown")));
if (triggerevent=="click" || (triggerevent=="mouseenter" && dropdown.options.mode=="hover")) {
dropdown.element.trigger(triggerevent);
}
if (dropdown.element.find('.uk-dropdown').length) {
e.preventDefault();
}
}
});
},
init: function() {
var $this = this;
this.dropdown = this.find('.uk-dropdown');
this.centered = this.dropdown.hasClass('uk-dropdown-center');
this.justified = this.options.justify ? UI.$(this.options.justify) : false;
this.boundary = UI.$(this.options.boundary);
this.flipped = this.dropdown.hasClass('uk-dropdown-flip');
if (!this.boundary.length) {
this.boundary = UI.$win;
}
// Init ARIA
this.element.attr('aria-haspopup', 'true');
this.element.attr('aria-expanded', this.element.hasClass("uk-open"));
if (this.options.mode == "click" || UI.support.touch) {
this.on("click.uikit.dropdown", function(e) {
var $target = UI.$(e.target);
if (!$target.parents(".uk-dropdown").length) {
if ($target.is("a[href='#']") || $target.parent().is("a[href='#']") || ($this.dropdown.length && !$this.dropdown.is(":visible")) ){
e.preventDefault();
}
$target.blur();
}
if (!$this.element.hasClass('uk-open')) {
$this.show();
} else {
if ($target.is("a:not(.js-uk-prevent)") || $target.is(".uk-dropdown-close") || !$this.dropdown.find(e.target).length) {
$this.hide();
}
}
});
} else {
this.on("mouseenter", function(e) {
if ($this.remainIdle) {
clearTimeout($this.remainIdle);
}
if (hoverIdle) {
clearTimeout(hoverIdle);
}
if (active && active == $this) {
return;
}
// pseudo manuAim
if (active && active != $this) {
hoverIdle = setTimeout(function() {
hoverIdle = setTimeout($this.show.bind($this), $this.options.delay);
}, $this.options.hoverDelayIdle);
} else {
hoverIdle = setTimeout($this.show.bind($this), $this.options.delay);
}
}).on("mouseleave", function() {
if (hoverIdle) {
clearTimeout(hoverIdle);
}
$this.remainIdle = setTimeout(function() {
if (active && active == $this) $this.hide();
}, $this.options.remaintime);
}).on("click", function(e){
var $target = UI.$(e.target);
if ($this.remainIdle) {
clearTimeout($this.remainIdle);
}
if ($target.is("a[href='#']") || $target.parent().is("a[href='#']")){
e.preventDefault();
}
$this.show();
});
}
},
show: function(){
UI.$html.off("click.outer.dropdown");
if (active && active != this) {
active.hide();
}
if (hoverIdle) {
clearTimeout(hoverIdle);
}
this.checkDimensions();
this.element.addClass('uk-open');
// Update ARIA
this.element.attr('aria-expanded', 'true');
this.trigger('show.uk.dropdown', [this]);
UI.Utils.checkDisplay(this.dropdown, true);
active = this;
this.registerOuterClick();
},
hide: function() {
this.element.removeClass('uk-open');
if (this.remainIdle) {
clearTimeout(this.remainIdle);
}
this.remainIdle = false;
// Update ARIA
this.element.attr('aria-expanded', 'false');
this.trigger('hide.uk.dropdown', [this]);
if (active == this) active = false;
},
registerOuterClick: function(){
var $this = this;
UI.$html.off("click.outer.dropdown");
setTimeout(function() {
UI.$html.on("click.outer.dropdown", function(e) {
if (hoverIdle) {
clearTimeout(hoverIdle);
}
var $target = UI.$(e.target);
if (active == $this && ($target.is("a:not(.js-uk-prevent)") || $target.is(".uk-dropdown-close") || !$this.dropdown.find(e.target).length)) {
$this.hide();
UI.$html.off("click.outer.dropdown");
}
});
}, 10);
},
checkDimensions: function() {
if (!this.dropdown.length) return;
if (this.justified && this.justified.length) {
this.dropdown.css("min-width", "");
}
var $this = this,
dropdown = this.dropdown.css("margin-" + UI.langdirection, ""),
offset = dropdown.show().offset(),
width = dropdown.outerWidth(),
boundarywidth = this.boundary.width(),
boundaryoffset = this.boundary.offset() ? this.boundary.offset().left:0;
// centered dropdown
if (this.centered) {
dropdown.css("margin-" + UI.langdirection, (parseFloat(width) / 2 - dropdown.parent().width() / 2) * -1);
offset = dropdown.offset();
// reset dropdown
if ((width + offset.left) > boundarywidth || offset.left < 0) {
dropdown.css("margin-" + UI.langdirection, "");
offset = dropdown.offset();
}
}
// justify dropdown
if (this.justified && this.justified.length) {
var jwidth = this.justified.outerWidth();
dropdown.css("min-width", jwidth);
if (UI.langdirection == 'right') {
var right1 = boundarywidth - (this.justified.offset().left + jwidth),
right2 = boundarywidth - (dropdown.offset().left + dropdown.outerWidth());
dropdown.css("margin-right", right1 - right2);
} else {
dropdown.css("margin-left", this.justified.offset().left - offset.left);
}
offset = dropdown.offset();
}
if ((width + (offset.left-boundaryoffset)) > boundarywidth) {
dropdown.addClass('uk-dropdown-flip');
offset = dropdown.offset();
}
if ((offset.left-boundaryoffset) < 0) {
dropdown.addClass("uk-dropdown-stack");
if (dropdown.hasClass('uk-dropdown-flip')) {
if (!this.flipped) {
dropdown.removeClass('uk-dropdown-flip');
offset = dropdown.offset();
dropdown.addClass('uk-dropdown-flip');
}
setTimeout(function(){
if ((dropdown.offset().left-boundaryoffset) < 0 || !$this.flipped && (dropdown.outerWidth() + (offset.left-boundaryoffset)) < boundarywidth) {
dropdown.removeClass('uk-dropdown-flip');
}
}, 0);
}
this.trigger('stack.uk.dropdown', [this]);
}
dropdown.css("display", "");
}
});
})(UIkit);

2
media/uikit/js/core/dropdown.min.js vendored Normal file
View File

@ -0,0 +1,2 @@
/*! UIkit 2.21.0 | http://www.getuikit.com | (c) 2014 YOOtheme | MIT License */
!function(t){"use strict";var e,i=!1;t.component("dropdown",{defaults:{mode:"hover",remaintime:800,justify:!1,boundary:t.$win,delay:0,hoverDelayIdle:250},remainIdle:!1,boot:function(){var e=t.support.touch?"click":"mouseenter";t.$html.on(e+".dropdown.uikit","[data-uk-dropdown]",function(i){var o=t.$(this);if(!o.data("dropdown")){var s=t.dropdown(o,t.Utils.options(o.attr("data-uk-dropdown")));("click"==e||"mouseenter"==e&&"hover"==s.options.mode)&&s.element.trigger(e),s.element.find(".uk-dropdown").length&&i.preventDefault()}})},init:function(){var o=this;this.dropdown=this.find(".uk-dropdown"),this.centered=this.dropdown.hasClass("uk-dropdown-center"),this.justified=this.options.justify?t.$(this.options.justify):!1,this.boundary=t.$(this.options.boundary),this.flipped=this.dropdown.hasClass("uk-dropdown-flip"),this.boundary.length||(this.boundary=t.$win),this.element.attr("aria-haspopup","true"),this.element.attr("aria-expanded",this.element.hasClass("uk-open")),"click"==this.options.mode||t.support.touch?this.on("click.uikit.dropdown",function(e){var i=t.$(e.target);i.parents(".uk-dropdown").length||((i.is("a[href='#']")||i.parent().is("a[href='#']")||o.dropdown.length&&!o.dropdown.is(":visible"))&&e.preventDefault(),i.blur()),o.element.hasClass("uk-open")?(i.is("a:not(.js-uk-prevent)")||i.is(".uk-dropdown-close")||!o.dropdown.find(e.target).length)&&o.hide():o.show()}):this.on("mouseenter",function(){o.remainIdle&&clearTimeout(o.remainIdle),e&&clearTimeout(e),i&&i==o||(e=i&&i!=o?setTimeout(function(){e=setTimeout(o.show.bind(o),o.options.delay)},o.options.hoverDelayIdle):setTimeout(o.show.bind(o),o.options.delay))}).on("mouseleave",function(){e&&clearTimeout(e),o.remainIdle=setTimeout(function(){i&&i==o&&o.hide()},o.options.remaintime)}).on("click",function(e){var i=t.$(e.target);o.remainIdle&&clearTimeout(o.remainIdle),(i.is("a[href='#']")||i.parent().is("a[href='#']"))&&e.preventDefault(),o.show()})},show:function(){t.$html.off("click.outer.dropdown"),i&&i!=this&&i.hide(),e&&clearTimeout(e),this.checkDimensions(),this.element.addClass("uk-open"),this.element.attr("aria-expanded","true"),this.trigger("show.uk.dropdown",[this]),t.Utils.checkDisplay(this.dropdown,!0),i=this,this.registerOuterClick()},hide:function(){this.element.removeClass("uk-open"),this.remainIdle&&clearTimeout(this.remainIdle),this.remainIdle=!1,this.element.attr("aria-expanded","false"),this.trigger("hide.uk.dropdown",[this]),i==this&&(i=!1)},registerOuterClick:function(){var o=this;t.$html.off("click.outer.dropdown"),setTimeout(function(){t.$html.on("click.outer.dropdown",function(s){e&&clearTimeout(e);var n=t.$(s.target);i!=o||!n.is("a:not(.js-uk-prevent)")&&!n.is(".uk-dropdown-close")&&o.dropdown.find(s.target).length||(o.hide(),t.$html.off("click.outer.dropdown"))})},10)},checkDimensions:function(){if(this.dropdown.length){this.justified&&this.justified.length&&this.dropdown.css("min-width","");var e=this,i=this.dropdown.css("margin-"+t.langdirection,""),o=i.show().offset(),s=i.outerWidth(),n=this.boundary.width(),d=this.boundary.offset()?this.boundary.offset().left:0;if(this.centered&&(i.css("margin-"+t.langdirection,-1*(parseFloat(s)/2-i.parent().width()/2)),o=i.offset(),(s+o.left>n||o.left<0)&&(i.css("margin-"+t.langdirection,""),o=i.offset())),this.justified&&this.justified.length){var r=this.justified.outerWidth();if(i.css("min-width",r),"right"==t.langdirection){var a=n-(this.justified.offset().left+r),h=n-(i.offset().left+i.outerWidth());i.css("margin-right",a-h)}else i.css("margin-left",this.justified.offset().left-o.left);o=i.offset()}s+(o.left-d)>n&&(i.addClass("uk-dropdown-flip"),o=i.offset()),o.left-d<0&&(i.addClass("uk-dropdown-stack"),i.hasClass("uk-dropdown-flip")&&(this.flipped||(i.removeClass("uk-dropdown-flip"),o=i.offset(),i.addClass("uk-dropdown-flip")),setTimeout(function(){(i.offset().left-d<0||!e.flipped&&i.outerWidth()+(o.left-d)<n)&&i.removeClass("uk-dropdown-flip")},0)),this.trigger("stack.uk.dropdown",[this])),i.css("display","")}}})}(UIkit);

114
media/uikit/js/core/grid.js Normal file
View File

@ -0,0 +1,114 @@
/*! UIkit 2.21.0 | http://www.getuikit.com | (c) 2014 YOOtheme | MIT License */
(function(UI) {
"use strict";
var grids = [];
UI.component('gridMatchHeight', {
defaults: {
"target" : false,
"row" : true,
"ignorestacked" : false
},
boot: function() {
// init code
UI.ready(function(context) {
UI.$("[data-uk-grid-match]", context).each(function() {
var grid = UI.$(this), obj;
if (!grid.data("gridMatchHeight")) {
obj = UI.gridMatchHeight(grid, UI.Utils.options(grid.attr("data-uk-grid-match")));
}
});
});
},
init: function() {
var $this = this;
this.columns = this.element.children();
this.elements = this.options.target ? this.find(this.options.target) : this.columns;
if (!this.columns.length) return;
UI.$win.on('load resize orientationchange', (function() {
var fn = function() {
$this.match();
};
UI.$(function() { fn(); });
return UI.Utils.debounce(fn, 50);
})());
UI.$html.on("changed.uk.dom", function(e) {
$this.columns = $this.element.children();
$this.elements = $this.options.target ? $this.find($this.options.target) : $this.columns;
$this.match();
});
this.on("display.uk.check", function(e) {
if(this.element.is(":visible")) this.match();
}.bind(this));
grids.push(this);
},
match: function() {
var firstvisible = this.columns.filter(":visible:first");
if (!firstvisible.length) return;
var stacked = Math.ceil(100 * parseFloat(firstvisible.css('width')) / parseFloat(firstvisible.parent().css('width'))) >= 100;
if (stacked && !this.options.ignorestacked) {
this.revert();
} else {
UI.Utils.matchHeights(this.elements, this.options);
}
return this;
},
revert: function() {
this.elements.css('min-height', '');
return this;
}
});
UI.component('gridMargin', {
defaults: {
"cls": "uk-grid-margin"
},
boot: function() {
// init code
UI.ready(function(context) {
UI.$("[data-uk-grid-margin]", context).each(function() {
var grid = UI.$(this), obj;
if (!grid.data("gridMargin")) {
obj = UI.gridMargin(grid, UI.Utils.options(grid.attr("data-uk-grid-margin")));
}
});
});
},
init: function() {
var stackMargin = UI.stackMargin(this.element, this.options);
}
});
})(UIkit);

2
media/uikit/js/core/grid.min.js vendored Normal file
View File

@ -0,0 +1,2 @@
/*! UIkit 2.21.0 | http://www.getuikit.com | (c) 2014 YOOtheme | MIT License */
!function(t){"use strict";var i=[];t.component("gridMatchHeight",{defaults:{target:!1,row:!0,ignorestacked:!1},boot:function(){t.ready(function(i){t.$("[data-uk-grid-match]",i).each(function(){var i,n=t.$(this);n.data("gridMatchHeight")||(i=t.gridMatchHeight(n,t.Utils.options(n.attr("data-uk-grid-match"))))})})},init:function(){var n=this;this.columns=this.element.children(),this.elements=this.options.target?this.find(this.options.target):this.columns,this.columns.length&&(t.$win.on("load resize orientationchange",function(){var i=function(){n.match()};return t.$(function(){i()}),t.Utils.debounce(i,50)}()),t.$html.on("changed.uk.dom",function(){n.columns=n.element.children(),n.elements=n.options.target?n.find(n.options.target):n.columns,n.match()}),this.on("display.uk.check",function(){this.element.is(":visible")&&this.match()}.bind(this)),i.push(this))},match:function(){var i=this.columns.filter(":visible:first");if(i.length){var n=Math.ceil(100*parseFloat(i.css("width"))/parseFloat(i.parent().css("width")))>=100;return n&&!this.options.ignorestacked?this.revert():t.Utils.matchHeights(this.elements,this.options),this}},revert:function(){return this.elements.css("min-height",""),this}}),t.component("gridMargin",{defaults:{cls:"uk-grid-margin"},boot:function(){t.ready(function(i){t.$("[data-uk-grid-margin]",i).each(function(){var i,n=t.$(this);n.data("gridMargin")||(i=t.gridMargin(n,t.Utils.options(n.attr("data-uk-grid-margin"))))})})},init:function(){t.stackMargin(this.element,this.options)}})}(UIkit);

View File

@ -0,0 +1 @@
<html><body bgcolor="#FFFFFF"></body></html>

View File

@ -0,0 +1,373 @@
/*! UIkit 2.21.0 | http://www.getuikit.com | (c) 2014 YOOtheme | MIT License */
(function(UI) {
"use strict";
var active = false, activeCount = 0, $html = UI.$html, body;
UI.component('modal', {
defaults: {
keyboard: true,
bgclose: true,
minScrollHeight: 150,
center: false,
modal: true
},
scrollable: false,
transition: false,
init: function() {
if (!body) body = UI.$('body');
if (!this.element.length) return;
var $this = this;
this.paddingdir = "padding-" + (UI.langdirection == 'left' ? "right":"left");
this.dialog = this.find(".uk-modal-dialog");
this.active = false;
// Update ARIA
this.element.attr('aria-hidden', this.element.hasClass("uk-open"));
this.on("click", ".uk-modal-close", function(e) {
e.preventDefault();
$this.hide();
}).on("click", function(e) {
var target = UI.$(e.target);
if (target[0] == $this.element[0] && $this.options.bgclose) {
$this.hide();
}
});
},
toggle: function() {
return this[this.isActive() ? "hide" : "show"]();
},
show: function() {
if (!this.element.length) return;
var $this = this;
if (this.isActive()) return;
if (this.options.modal && active) {
active.hide(true);
}
this.element.removeClass("uk-open").show();
this.resize();
if (this.options.modal) {
active = this;
}
this.active = true;
activeCount++;
this.element.addClass("uk-open");
$html.addClass("uk-modal-page").height(); // force browser engine redraw
// Update ARIA
this.element.attr('aria-hidden', 'false');
this.element.trigger("show.uk.modal");
UI.Utils.checkDisplay(this.dialog, true);
return this;
},
hide: function(force) {
if (!force && UI.support.transition) {
var $this = this;
this.one(UI.support.transition.end, function() {
$this._hide();
}).removeClass("uk-open");
} else {
this._hide();
}
return this;
},
resize: function() {
var bodywidth = body.width();
this.scrollbarwidth = window.innerWidth - bodywidth;
body.css(this.paddingdir, this.scrollbarwidth);
this.element.css('overflow-y', this.scrollbarwidth ? 'scroll' : 'auto');
if (!this.updateScrollable() && this.options.center) {
var dh = this.dialog.outerHeight(),
pad = parseInt(this.dialog.css('margin-top'), 10) + parseInt(this.dialog.css('margin-bottom'), 10);
if ((dh + pad) < window.innerHeight) {
this.dialog.css({'top': (window.innerHeight/2 - dh/2) - pad });
} else {
this.dialog.css({'top': ''});
}
}
},
updateScrollable: function() {
// has scrollable?
var scrollable = this.dialog.find('.uk-overflow-container:visible:first');
if (scrollable.length) {
scrollable.css("height", 0);
var offset = Math.abs(parseInt(this.dialog.css("margin-top"), 10)),
dh = this.dialog.outerHeight(),
wh = window.innerHeight,
h = wh - 2*(offset < 20 ? 20:offset) - dh;
scrollable.css("height", h < this.options.minScrollHeight ? "":h);
return true;
}
return false;
},
_hide: function() {
this.active = false;
activeCount--;
this.element.hide().removeClass("uk-open");
// Update ARIA
this.element.attr('aria-hidden', 'true');
if (!activeCount) {
$html.removeClass("uk-modal-page");
body.css(this.paddingdir, "");
}
if(active===this) active = false;
this.trigger("hide.uk.modal");
},
isActive: function() {
return this.active;
}
});
UI.component('modalTrigger', {
boot: function() {
// init code
UI.$html.on("click.modal.uikit", "[data-uk-modal]", function(e) {
var ele = UI.$(this);
if (ele.is("a")) {
e.preventDefault();
}
if (!ele.data("modalTrigger")) {
var modal = UI.modalTrigger(ele, UI.Utils.options(ele.attr("data-uk-modal")));
modal.show();
}
});
// close modal on esc button
UI.$html.on('keydown.modal.uikit', function (e) {
if (active && e.keyCode === 27 && active.options.keyboard) { // ESC
e.preventDefault();
active.hide();
}
});
UI.$win.on("resize orientationchange", UI.Utils.debounce(function(){
if (active) active.resize();
}, 150));
},
init: function() {
var $this = this;
this.options = UI.$.extend({
"target": $this.element.is("a") ? $this.element.attr("href") : false
}, this.options);
this.modal = UI.modal(this.options.target, this.options);
this.on("click", function(e) {
e.preventDefault();
$this.show();
});
//methods
this.proxy(this.modal, "show hide isActive");
}
});
UI.modal.dialog = function(content, options) {
var modal = UI.modal(UI.$(UI.modal.dialog.template).appendTo("body"), options);
modal.on("hide.uk.modal", function(){
if (modal.persist) {
modal.persist.appendTo(modal.persist.data("modalPersistParent"));
modal.persist = false;
}
modal.element.remove();
});
setContent(content, modal);
return modal;
};
UI.modal.dialog.template = '<div class="uk-modal"><div class="uk-modal-dialog" style="min-height:0;"></div></div>';
UI.modal.alert = function(content, options) {
options = UI.$.extend(true, {bgclose:false, keyboard:false, modal:false, labels:UI.modal.labels}, options);
var modal = UI.modal.dialog(([
'<div class="uk-margin uk-modal-content">'+String(content)+'</div>',
'<div class="uk-modal-footer uk-text-right"><button class="uk-button uk-button-primary uk-modal-close">'+options.labels.Ok+'</button></div>'
]).join(""), options);
modal.on('show.uk.modal', function(){
setTimeout(function(){
modal.element.find('button:first').focus();
}, 50);
});
modal.show();
};
UI.modal.confirm = function(content, onconfirm, options) {
onconfirm = UI.$.isFunction(onconfirm) ? onconfirm : function(){};
options = UI.$.extend(true, {bgclose:false, keyboard:false, modal:false, labels:UI.modal.labels}, options);
var modal = UI.modal.dialog(([
'<div class="uk-margin uk-modal-content">'+String(content)+'</div>',
'<div class="uk-modal-footer uk-text-right"><button class="uk-button uk-button-primary js-modal-confirm">'+options.labels.Ok+'</button> <button class="uk-button uk-modal-close">'+options.labels.Cancel+'</button></div>'
]).join(""), options);
modal.element.find(".js-modal-confirm").on("click", function(){
onconfirm();
modal.hide();
});
modal.on('show.uk.modal', function(){
setTimeout(function(){
modal.element.find('button:first').focus();
}, 50);
});
modal.show();
};
UI.modal.prompt = function(text, value, onsubmit, options) {
onsubmit = UI.$.isFunction(onsubmit) ? onsubmit : function(value){};
options = UI.$.extend(true, {bgclose:false, keyboard:false, modal:false, labels:UI.modal.labels}, options);
var modal = UI.modal.dialog(([
text ? '<div class="uk-modal-content uk-form">'+String(text)+'</div>':'',
'<div class="uk-margin-small-top uk-modal-content uk-form"><p><input type="text" class="uk-width-1-1"></p></div>',
'<div class="uk-modal-footer uk-text-right"><button class="uk-button uk-button-primary js-modal-ok">'+options.labels.Ok+'</button> <button class="uk-button uk-modal-close">'+options.labels.Cancel+'</button></div>'
]).join(""), options),
input = modal.element.find("input[type='text']").val(value || '').on('keyup', function(e){
if (e.keyCode == 13) {
modal.element.find(".js-modal-ok").trigger('click');
}
});
modal.element.find(".js-modal-ok").on("click", function(){
if (onsubmit(input.val())!==false){
modal.hide();
}
});
modal.on('show.uk.modal', function(){
setTimeout(function(){
input.focus();
}, 50);
});
modal.show();
};
UI.modal.blockUI = function(content, options) {
var modal = UI.modal.dialog(([
'<div class="uk-margin uk-modal-content">'+String(content || '<div class="uk-text-center">...</div>')+'</div>'
]).join(""), UI.$.extend({bgclose:false, keyboard:false, modal:false}, options));
modal.content = modal.element.find('.uk-modal-content:first');
modal.show();
return modal;
};
UI.modal.labels = {
'Ok': 'Ok',
'Cancel': 'Cancel'
};
// helper functions
function setContent(content, modal){
if(!modal) return;
if (typeof content === 'object') {
// convert DOM object to a jQuery object
content = content instanceof jQuery ? content : UI.$(content);
if(content.parent().length) {
modal.persist = content;
modal.persist.data("modalPersistParent", content.parent());
}
}else if (typeof content === 'string' || typeof content === 'number') {
// just insert the data as innerHTML
content = UI.$('<div></div>').html(content);
}else {
// unsupported data type!
content = UI.$('<div></div>').html('UIkit.modal Error: Unsupported data type: ' + typeof content);
}
content.appendTo(modal.element.find('.uk-modal-dialog'));
return modal;
}
})(UIkit);

2
media/uikit/js/core/modal.min.js vendored Normal file

File diff suppressed because one or more lines are too long

136
media/uikit/js/core/nav.js Normal file
View File

@ -0,0 +1,136 @@
/*! UIkit 2.21.0 | http://www.getuikit.com | (c) 2014 YOOtheme | MIT License */
(function(UI) {
"use strict";
UI.component('nav', {
defaults: {
"toggle": ">li.uk-parent > a[href='#']",
"lists": ">li.uk-parent > ul",
"multiple": false
},
boot: function() {
// init code
UI.ready(function(context) {
UI.$("[data-uk-nav]", context).each(function() {
var nav = UI.$(this);
if (!nav.data("nav")) {
var obj = UI.nav(nav, UI.Utils.options(nav.attr("data-uk-nav")));
}
});
});
},
init: function() {
var $this = this;
this.on("click.uikit.nav", this.options.toggle, function(e) {
e.preventDefault();
var ele = UI.$(this);
$this.open(ele.parent()[0] == $this.element[0] ? ele : ele.parent("li"));
});
this.find(this.options.lists).each(function() {
var $ele = UI.$(this),
parent = $ele.parent(),
active = parent.hasClass("uk-active");
$ele.wrap('<div style="overflow:hidden;height:0;position:relative;"></div>');
parent.data("list-container", $ele.parent()[active ? 'removeClass':'addClass']('uk-hidden'));
// Init ARIA
parent.attr('aria-expanded', parent.hasClass("uk-open"));
if (active) $this.open(parent, true);
});
},
open: function(li, noanimation) {
var $this = this, element = this.element, $li = UI.$(li), $container = $li.data('list-container');
if (!this.options.multiple) {
element.children('.uk-open').not(li).each(function() {
var ele = UI.$(this);
if (ele.data('list-container')) {
ele.data('list-container').stop().animate({height: 0}, function() {
UI.$(this).parent().removeClass('uk-open').end().addClass('uk-hidden');
});
}
});
}
$li.toggleClass('uk-open');
// Update ARIA
$li.attr('aria-expanded', $li.hasClass('uk-open'));
if ($container) {
if ($li.hasClass('uk-open')) {
$container.removeClass('uk-hidden');
}
if (noanimation) {
$container.stop().height($li.hasClass('uk-open') ? 'auto' : 0);
if (!$li.hasClass('uk-open')) {
$container.addClass('uk-hidden');
}
this.trigger('display.uk.check');
} else {
$container.stop().animate({
height: ($li.hasClass('uk-open') ? getHeight($container.find('ul:first')) : 0)
}, function() {
if (!$li.hasClass('uk-open')) {
$container.addClass('uk-hidden');
} else {
$container.css('height', '');
}
$this.trigger('display.uk.check');
});
}
}
}
});
// helper
function getHeight(ele) {
var $ele = UI.$(ele), height = "auto";
if ($ele.is(":visible")) {
height = $ele.outerHeight();
} else {
var tmp = {
position: $ele.css("position"),
visibility: $ele.css("visibility"),
display: $ele.css("display")
};
height = $ele.css({position: 'absolute', visibility: 'hidden', display: 'block'}).outerHeight();
$ele.css(tmp); // reset element
}
return height;
}
})(UIkit);

2
media/uikit/js/core/nav.min.js vendored Normal file
View File

@ -0,0 +1,2 @@
/*! UIkit 2.21.0 | http://www.getuikit.com | (c) 2014 YOOtheme | MIT License */
!function(i){"use strict";function t(t){var s=i.$(t),a="auto";if(s.is(":visible"))a=s.outerHeight();else{var e={position:s.css("position"),visibility:s.css("visibility"),display:s.css("display")};a=s.css({position:"absolute",visibility:"hidden",display:"block"}).outerHeight(),s.css(e)}return a}i.component("nav",{defaults:{toggle:">li.uk-parent > a[href='#']",lists:">li.uk-parent > ul",multiple:!1},boot:function(){i.ready(function(t){i.$("[data-uk-nav]",t).each(function(){var t=i.$(this);if(!t.data("nav")){i.nav(t,i.Utils.options(t.attr("data-uk-nav")))}})})},init:function(){var t=this;this.on("click.uikit.nav",this.options.toggle,function(s){s.preventDefault();var a=i.$(this);t.open(a.parent()[0]==t.element[0]?a:a.parent("li"))}),this.find(this.options.lists).each(function(){var s=i.$(this),a=s.parent(),e=a.hasClass("uk-active");s.wrap('<div style="overflow:hidden;height:0;position:relative;"></div>'),a.data("list-container",s.parent()[e?"removeClass":"addClass"]("uk-hidden")),a.attr("aria-expanded",a.hasClass("uk-open")),e&&t.open(a,!0)})},open:function(s,a){var e=this,n=this.element,o=i.$(s),l=o.data("list-container");this.options.multiple||n.children(".uk-open").not(s).each(function(){var t=i.$(this);t.data("list-container")&&t.data("list-container").stop().animate({height:0},function(){i.$(this).parent().removeClass("uk-open").end().addClass("uk-hidden")})}),o.toggleClass("uk-open"),o.attr("aria-expanded",o.hasClass("uk-open")),l&&(o.hasClass("uk-open")&&l.removeClass("uk-hidden"),a?(l.stop().height(o.hasClass("uk-open")?"auto":0),o.hasClass("uk-open")||l.addClass("uk-hidden"),this.trigger("display.uk.check")):l.stop().animate({height:o.hasClass("uk-open")?t(l.find("ul:first")):0},function(){o.hasClass("uk-open")?l.css("height",""):l.addClass("uk-hidden"),e.trigger("display.uk.check")}))}})}(UIkit);

View File

@ -0,0 +1,178 @@
/*! UIkit 2.21.0 | http://www.getuikit.com | (c) 2014 YOOtheme | MIT License */
(function(UI) {
"use strict";
var scrollpos = {x: window.scrollX, y: window.scrollY},
$win = UI.$win,
$doc = UI.$doc,
$html = UI.$html,
Offcanvas = {
show: function(element) {
element = UI.$(element);
if (!element.length) return;
var $body = UI.$('body'),
bar = element.find(".uk-offcanvas-bar:first"),
rtl = (UI.langdirection == "right"),
flip = bar.hasClass("uk-offcanvas-bar-flip") ? -1:1,
dir = flip * (rtl ? -1 : 1);
scrollpos = {x: window.pageXOffset, y: window.pageYOffset};
element.addClass("uk-active");
$body.css({"width": window.innerWidth, "height": window.innerHeight}).addClass("uk-offcanvas-page");
$body.css((rtl ? "margin-right" : "margin-left"), (rtl ? -1 : 1) * (bar.outerWidth() * dir)).width(); // .width() - force redraw
$html.css('margin-top', scrollpos.y * -1);
bar.addClass("uk-offcanvas-bar-show");
this._initElement(element);
bar.trigger('show.uk.offcanvas', [element, bar]);
// Update ARIA
element.attr('aria-hidden', 'false');
},
hide: function(force) {
var $body = UI.$('body'),
panel = UI.$(".uk-offcanvas.uk-active"),
rtl = (UI.langdirection == "right"),
bar = panel.find(".uk-offcanvas-bar:first"),
finalize = function() {
$body.removeClass("uk-offcanvas-page").css({"width": "", "height": "", "margin-left": "", "margin-right": ""});
panel.removeClass("uk-active");
bar.removeClass("uk-offcanvas-bar-show");
$html.css('margin-top', '');
window.scrollTo(scrollpos.x, scrollpos.y);
bar.trigger('hide.uk.offcanvas', [panel, bar]);
// Update ARIA
panel.attr('aria-hidden', 'true');
};
if (!panel.length) return;
if (UI.support.transition && !force) {
$body.one(UI.support.transition.end, function() {
finalize();
}).css((rtl ? "margin-right" : "margin-left"), "");
setTimeout(function(){
bar.removeClass("uk-offcanvas-bar-show");
}, 0);
} else {
finalize();
}
},
_initElement: function(element) {
if (element.data("OffcanvasInit")) return;
element.on("click.uk.offcanvas swipeRight.uk.offcanvas swipeLeft.uk.offcanvas", function(e) {
var target = UI.$(e.target);
if (!e.type.match(/swipe/)) {
if (!target.hasClass("uk-offcanvas-close")) {
if (target.hasClass("uk-offcanvas-bar")) return;
if (target.parents(".uk-offcanvas-bar:first").length) return;
}
}
e.stopImmediatePropagation();
Offcanvas.hide();
});
element.on("click", "a[href^='#']", function(e){
var link = UI.$(this),
href = link.attr("href");
if (href == "#") {
return;
}
UI.$doc.one('hide.uk.offcanvas', function() {
var target;
try {
target = UI.$(href);
} catch (e){
target = ""
}
if (!target.length) {
target = UI.$('[name="'+href.replace('#','')+'"]');
}
if (target.length && link.attr('data-uk-smooth-scroll') && UI.Utils.scrollToElement) {
UI.Utils.scrollToElement(target, UI.Utils.options(link.attr('data-uk-smooth-scroll') || '{}'));
} else {
window.location.href = href;
}
});
Offcanvas.hide();
});
element.data("OffcanvasInit", true);
}
};
UI.component('offcanvasTrigger', {
boot: function() {
// init code
$html.on("click.offcanvas.uikit", "[data-uk-offcanvas]", function(e) {
e.preventDefault();
var ele = UI.$(this);
if (!ele.data("offcanvasTrigger")) {
var obj = UI.offcanvasTrigger(ele, UI.Utils.options(ele.attr("data-uk-offcanvas")));
ele.trigger("click");
}
});
$html.on('keydown.uk.offcanvas', function(e) {
if (e.keyCode === 27) { // ESC
Offcanvas.hide();
}
});
},
init: function() {
var $this = this;
this.options = UI.$.extend({
"target": $this.element.is("a") ? $this.element.attr("href") : false
}, this.options);
this.on("click", function(e) {
e.preventDefault();
Offcanvas.show($this.options.target);
});
}
});
UI.offcanvas = Offcanvas;
})(UIkit);

2
media/uikit/js/core/offcanvas.min.js vendored Normal file
View File

@ -0,0 +1,2 @@
/*! UIkit 2.21.0 | http://www.getuikit.com | (c) 2014 YOOtheme | MIT License */
!function(a){"use strict";var t={x:window.scrollX,y:window.scrollY},n=(a.$win,a.$doc,a.$html),i={show:function(i){if(i=a.$(i),i.length){var o=a.$("body"),s=i.find(".uk-offcanvas-bar:first"),e="right"==a.langdirection,f=s.hasClass("uk-offcanvas-bar-flip")?-1:1,r=f*(e?-1:1);t={x:window.pageXOffset,y:window.pageYOffset},i.addClass("uk-active"),o.css({width:window.innerWidth,height:window.innerHeight}).addClass("uk-offcanvas-page"),o.css(e?"margin-right":"margin-left",(e?-1:1)*s.outerWidth()*r).width(),n.css("margin-top",-1*t.y),s.addClass("uk-offcanvas-bar-show"),this._initElement(i),s.trigger("show.uk.offcanvas",[i,s]),i.attr("aria-hidden","false")}},hide:function(i){var o=a.$("body"),s=a.$(".uk-offcanvas.uk-active"),e="right"==a.langdirection,f=s.find(".uk-offcanvas-bar:first"),r=function(){o.removeClass("uk-offcanvas-page").css({width:"",height:"","margin-left":"","margin-right":""}),s.removeClass("uk-active"),f.removeClass("uk-offcanvas-bar-show"),n.css("margin-top",""),window.scrollTo(t.x,t.y),f.trigger("hide.uk.offcanvas",[s,f]),s.attr("aria-hidden","true")};s.length&&(a.support.transition&&!i?(o.one(a.support.transition.end,function(){r()}).css(e?"margin-right":"margin-left",""),setTimeout(function(){f.removeClass("uk-offcanvas-bar-show")},0)):r())},_initElement:function(t){t.data("OffcanvasInit")||(t.on("click.uk.offcanvas swipeRight.uk.offcanvas swipeLeft.uk.offcanvas",function(t){var n=a.$(t.target);if(!t.type.match(/swipe/)&&!n.hasClass("uk-offcanvas-close")){if(n.hasClass("uk-offcanvas-bar"))return;if(n.parents(".uk-offcanvas-bar:first").length)return}t.stopImmediatePropagation(),i.hide()}),t.on("click","a[href^='#']",function(){var t=a.$(this),n=t.attr("href");"#"!=n&&(a.$doc.one("hide.uk.offcanvas",function(){var i;try{i=a.$(n)}catch(o){i=""}i.length||(i=a.$('[name="'+n.replace("#","")+'"]')),i.length&&t.attr("data-uk-smooth-scroll")&&a.Utils.scrollToElement?a.Utils.scrollToElement(i,a.Utils.options(t.attr("data-uk-smooth-scroll")||"{}")):window.location.href=n}),i.hide())}),t.data("OffcanvasInit",!0))}};a.component("offcanvasTrigger",{boot:function(){n.on("click.offcanvas.uikit","[data-uk-offcanvas]",function(t){t.preventDefault();var n=a.$(this);if(!n.data("offcanvasTrigger")){{a.offcanvasTrigger(n,a.Utils.options(n.attr("data-uk-offcanvas")))}n.trigger("click")}}),n.on("keydown.uk.offcanvas",function(a){27===a.keyCode&&i.hide()})},init:function(){var t=this;this.options=a.$.extend({target:t.element.is("a")?t.element.attr("href"):!1},this.options),this.on("click",function(a){a.preventDefault(),i.show(t.options.target)})}}),a.offcanvas=i}(UIkit);

View File

@ -0,0 +1,208 @@
/*! UIkit 2.21.0 | http://www.getuikit.com | (c) 2014 YOOtheme | MIT License */
(function(UI) {
"use strict";
var $win = UI.$win,
$doc = UI.$doc,
scrollspies = [],
checkScrollSpy = function() {
for(var i=0; i < scrollspies.length; i++) {
window.requestAnimationFrame.apply(window, [scrollspies[i].check]);
}
};
UI.component('scrollspy', {
defaults: {
"target" : false,
"cls" : "uk-scrollspy-inview",
"initcls" : "uk-scrollspy-init-inview",
"topoffset" : 0,
"leftoffset" : 0,
"repeat" : false,
"delay" : 0
},
boot: function() {
// listen to scroll and resize
$doc.on("scrolling.uk.document", checkScrollSpy);
$win.on("load resize orientationchange", UI.Utils.debounce(checkScrollSpy, 50));
// init code
UI.ready(function(context) {
UI.$("[data-uk-scrollspy]", context).each(function() {
var element = UI.$(this);
if (!element.data("scrollspy")) {
var obj = UI.scrollspy(element, UI.Utils.options(element.attr("data-uk-scrollspy")));
}
});
});
},
init: function() {
var $this = this, inviewstate, initinview, togglecls = this.options.cls.split(/,/), fn = function(){
var elements = $this.options.target ? $this.element.find($this.options.target) : $this.element,
delayIdx = elements.length === 1 ? 1 : 0,
toggleclsIdx = 0;
elements.each(function(idx){
var element = UI.$(this),
inviewstate = element.data('inviewstate'),
inview = UI.Utils.isInView(element, $this.options),
toggle = element.data('ukScrollspyCls') || togglecls[toggleclsIdx].trim();
if (inview && !inviewstate && !element.data('scrollspy-idle')) {
if (!initinview) {
element.addClass($this.options.initcls);
$this.offset = element.offset();
initinview = true;
element.trigger("init.uk.scrollspy");
}
element.data('scrollspy-idle', setTimeout(function(){
element.addClass("uk-scrollspy-inview").toggleClass(toggle).width();
element.trigger("inview.uk.scrollspy");
element.data('scrollspy-idle', false);
element.data('inviewstate', true);
}, $this.options.delay * delayIdx));
delayIdx++;
}
if (!inview && inviewstate && $this.options.repeat) {
if (element.data('scrollspy-idle')) {
clearTimeout(element.data('scrollspy-idle'));
}
element.removeClass("uk-scrollspy-inview").toggleClass(toggle);
element.data('inviewstate', false);
element.trigger("outview.uk.scrollspy");
}
toggleclsIdx = togglecls[toggleclsIdx + 1] ? (toggleclsIdx + 1) : 0;
});
};
fn();
this.check = fn;
scrollspies.push(this);
}
});
var scrollspynavs = [],
checkScrollSpyNavs = function() {
for(var i=0; i < scrollspynavs.length; i++) {
window.requestAnimationFrame.apply(window, [scrollspynavs[i].check]);
}
};
UI.component('scrollspynav', {
defaults: {
"cls" : 'uk-active',
"closest" : false,
"topoffset" : 0,
"leftoffset" : 0,
"smoothscroll" : false
},
boot: function() {
// listen to scroll and resize
$doc.on("scrolling.uk.document", checkScrollSpyNavs);
$win.on("resize orientationchange", UI.Utils.debounce(checkScrollSpyNavs, 50));
// init code
UI.ready(function(context) {
UI.$("[data-uk-scrollspy-nav]", context).each(function() {
var element = UI.$(this);
if (!element.data("scrollspynav")) {
var obj = UI.scrollspynav(element, UI.Utils.options(element.attr("data-uk-scrollspy-nav")));
}
});
});
},
init: function() {
var ids = [],
links = this.find("a[href^='#']").each(function(){ ids.push(UI.$(this).attr("href")); }),
targets = UI.$(ids.join(",")),
clsActive = this.options.cls,
clsClosest = this.options.closest || this.options.closest;
var $this = this, inviews, fn = function(){
inviews = [];
for (var i=0 ; i < targets.length ; i++) {
if (UI.Utils.isInView(targets.eq(i), $this.options)) {
inviews.push(targets.eq(i));
}
}
if (inviews.length) {
var navitems,
scrollTop = $win.scrollTop(),
target = (function(){
for(var i=0; i< inviews.length;i++){
if(inviews[i].offset().top >= scrollTop){
return inviews[i];
}
}
})();
if (!target) return;
if ($this.options.closest) {
links.closest(clsClosest).removeClass(clsActive);
navitems = links.filter("a[href='#"+target.attr("id")+"']").closest(clsClosest).addClass(clsActive);
} else {
navitems = links.removeClass(clsActive).filter("a[href='#"+target.attr("id")+"']").addClass(clsActive);
}
$this.element.trigger("inview.uk.scrollspynav", [target, navitems]);
}
};
if (this.options.smoothscroll && UI.smoothScroll) {
links.each(function(){
UI.smoothScroll(this, $this.options.smoothscroll);
});
}
fn();
this.element.data("scrollspynav", this);
this.check = fn;
scrollspynavs.push(this);
}
});
})(UIkit);

2
media/uikit/js/core/scrollspy.min.js vendored Normal file
View File

@ -0,0 +1,2 @@
/*! UIkit 2.21.0 | http://www.getuikit.com | (c) 2014 YOOtheme | MIT License */
!function(t){"use strict";var s=t.$win,o=t.$doc,i=[],e=function(){for(var t=0;t<i.length;t++)window.requestAnimationFrame.apply(window,[i[t].check])};t.component("scrollspy",{defaults:{target:!1,cls:"uk-scrollspy-inview",initcls:"uk-scrollspy-init-inview",topoffset:0,leftoffset:0,repeat:!1,delay:0},boot:function(){o.on("scrolling.uk.document",e),s.on("load resize orientationchange",t.Utils.debounce(e,50)),t.ready(function(s){t.$("[data-uk-scrollspy]",s).each(function(){var s=t.$(this);if(!s.data("scrollspy")){t.scrollspy(s,t.Utils.options(s.attr("data-uk-scrollspy")))}})})},init:function(){var s,o=this,e=this.options.cls.split(/,/),l=function(){var i=o.options.target?o.element.find(o.options.target):o.element,l=1===i.length?1:0,n=0;i.each(function(){var i=t.$(this),a=i.data("inviewstate"),r=t.Utils.isInView(i,o.options),c=i.data("ukScrollspyCls")||e[n].trim();!r||a||i.data("scrollspy-idle")||(s||(i.addClass(o.options.initcls),o.offset=i.offset(),s=!0,i.trigger("init.uk.scrollspy")),i.data("scrollspy-idle",setTimeout(function(){i.addClass("uk-scrollspy-inview").toggleClass(c).width(),i.trigger("inview.uk.scrollspy"),i.data("scrollspy-idle",!1),i.data("inviewstate",!0)},o.options.delay*l)),l++),!r&&a&&o.options.repeat&&(i.data("scrollspy-idle")&&clearTimeout(i.data("scrollspy-idle")),i.removeClass("uk-scrollspy-inview").toggleClass(c),i.data("inviewstate",!1),i.trigger("outview.uk.scrollspy")),n=e[n+1]?n+1:0})};l(),this.check=l,i.push(this)}});var l=[],n=function(){for(var t=0;t<l.length;t++)window.requestAnimationFrame.apply(window,[l[t].check])};t.component("scrollspynav",{defaults:{cls:"uk-active",closest:!1,topoffset:0,leftoffset:0,smoothscroll:!1},boot:function(){o.on("scrolling.uk.document",n),s.on("resize orientationchange",t.Utils.debounce(n,50)),t.ready(function(s){t.$("[data-uk-scrollspy-nav]",s).each(function(){var s=t.$(this);if(!s.data("scrollspynav")){t.scrollspynav(s,t.Utils.options(s.attr("data-uk-scrollspy-nav")))}})})},init:function(){var o,i=[],e=this.find("a[href^='#']").each(function(){i.push(t.$(this).attr("href"))}),n=t.$(i.join(",")),a=this.options.cls,r=this.options.closest||this.options.closest,c=this,p=function(){o=[];for(var i=0;i<n.length;i++)t.Utils.isInView(n.eq(i),c.options)&&o.push(n.eq(i));if(o.length){var l,p=s.scrollTop(),f=function(){for(var t=0;t<o.length;t++)if(o[t].offset().top>=p)return o[t]}();if(!f)return;c.options.closest?(e.closest(r).removeClass(a),l=e.filter("a[href='#"+f.attr("id")+"']").closest(r).addClass(a)):l=e.removeClass(a).filter("a[href='#"+f.attr("id")+"']").addClass(a),c.element.trigger("inview.uk.scrollspynav",[f,l])}};this.options.smoothscroll&&t.smoothScroll&&e.each(function(){t.smoothScroll(this,c.options.smoothscroll)}),p(),this.element.data("scrollspynav",this),this.check=p,l.push(this)}})}(UIkit);

View File

@ -0,0 +1,62 @@
/*! UIkit 2.21.0 | http://www.getuikit.com | (c) 2014 YOOtheme | MIT License */
(function(UI) {
"use strict";
UI.component('smoothScroll', {
boot: function() {
// init code
UI.$html.on("click.smooth-scroll.uikit", "[data-uk-smooth-scroll]", function(e) {
var ele = UI.$(this);
if (!ele.data("smoothScroll")) {
var obj = UI.smoothScroll(ele, UI.Utils.options(ele.attr("data-uk-smooth-scroll")));
ele.trigger("click");
}
return false;
});
},
init: function() {
var $this = this;
this.on("click", function(e) {
e.preventDefault();
scrollToElement(UI.$(this.hash).length ? UI.$(this.hash) : UI.$("body"), $this.options);
});
}
});
function scrollToElement(ele, options) {
options = UI.$.extend({
duration: 1000,
transition: 'easeOutExpo',
offset: 0,
complete: function(){}
}, options);
// get / set parameters
var target = ele.offset().top - options.offset,
docheight = UI.$doc.height(),
winheight = window.innerHeight;
if ((target + winheight) > docheight) {
target = docheight - winheight;
}
// animate to target, fire callback when done
UI.$("html,body").stop().animate({scrollTop: target}, options.duration, options.transition).promise().done(options.complete);
}
UI.Utils.scrollToElement = scrollToElement;
if (!UI.$.easing.easeOutExpo) {
UI.$.easing.easeOutExpo = function(x, t, b, c, d) { return (t == d) ? b + c : c * (-Math.pow(2, -10 * t / d) + 1) + b; };
}
})(UIkit);

View File

@ -0,0 +1,2 @@
/*! UIkit 2.21.0 | http://www.getuikit.com | (c) 2014 YOOtheme | MIT License */
!function(t){"use strict";function o(o,i){i=t.$.extend({duration:1e3,transition:"easeOutExpo",offset:0,complete:function(){}},i);var n=o.offset().top-i.offset,s=t.$doc.height(),e=window.innerHeight;n+e>s&&(n=s-e),t.$("html,body").stop().animate({scrollTop:n},i.duration,i.transition).promise().done(i.complete)}t.component("smoothScroll",{boot:function(){t.$html.on("click.smooth-scroll.uikit","[data-uk-smooth-scroll]",function(){var o=t.$(this);if(!o.data("smoothScroll")){{t.smoothScroll(o,t.Utils.options(o.attr("data-uk-smooth-scroll")))}o.trigger("click")}return!1})},init:function(){var i=this;this.on("click",function(n){n.preventDefault(),o(t.$(this.hash).length?t.$(this.hash):t.$("body"),i.options)})}}),t.Utils.scrollToElement=o,t.$.easing.easeOutExpo||(t.$.easing.easeOutExpo=function(t,o,i,n,s){return o==s?i+n:n*(-Math.pow(2,-10*o/s)+1)+i})}(UIkit);

View File

@ -0,0 +1,298 @@
/*! UIkit 2.21.0 | http://www.getuikit.com | (c) 2014 YOOtheme | MIT License */
(function(UI) {
"use strict";
var Animations;
UI.component('switcher', {
defaults: {
connect : false,
toggle : ">*",
active : 0,
animation : false,
duration : 200
},
animating: false,
boot: function() {
// init code
UI.ready(function(context) {
UI.$("[data-uk-switcher]", context).each(function() {
var switcher = UI.$(this);
if (!switcher.data("switcher")) {
var obj = UI.switcher(switcher, UI.Utils.options(switcher.attr("data-uk-switcher")));
}
});
});
},
init: function() {
var $this = this;
this.on("click.uikit.switcher", this.options.toggle, function(e) {
e.preventDefault();
$this.show(this);
});
if (this.options.connect) {
this.connect = UI.$(this.options.connect);
this.connect.find(".uk-active").removeClass(".uk-active");
// delegate switch commands within container content
if (this.connect.length) {
// Init ARIA for connect
this.connect.children().attr('aria-hidden', 'true');
this.connect.on("click", '[data-uk-switcher-item]', function(e) {
e.preventDefault();
var item = UI.$(this).attr('data-uk-switcher-item');
if ($this.index == item) return;
switch(item) {
case 'next':
case 'previous':
$this.show($this.index + (item=='next' ? 1:-1));
break;
default:
$this.show(parseInt(item, 10));
}
}).on('swipeRight swipeLeft', function(e) {
e.preventDefault();
if(!window.getSelection().toString()) {
$this.show($this.index + (e.type == 'swipeLeft' ? 1 : -1));
}
});
}
var toggles = this.find(this.options.toggle),
active = toggles.filter(".uk-active");
if (active.length) {
this.show(active, false);
} else {
if (this.options.active===false) return;
active = toggles.eq(this.options.active);
this.show(active.length ? active : toggles.eq(0), false);
}
// Init ARIA for toggles
toggles.not(active).attr('aria-expanded', 'false');
active.attr('aria-expanded', 'true');
this.on('changed.uk.dom', function() {
$this.connect = UI.$($this.options.connect);
});
}
},
show: function(tab, animate) {
if (this.animating) {
return;
}
if (isNaN(tab)) {
tab = UI.$(tab);
} else {
var toggles = this.find(this.options.toggle);
tab = tab < 0 ? toggles.length-1 : tab;
tab = toggles.eq(toggles[tab] ? tab : 0);
}
var $this = this,
toggles = this.find(this.options.toggle),
active = UI.$(tab),
animation = Animations[this.options.animation] || function(current, next) {
if (!$this.options.animation) {
return Animations.none.apply($this);
}
var anim = $this.options.animation.split(',');
if (anim.length == 1) {
anim[1] = anim[0];
}
anim[0] = anim[0].trim();
anim[1] = anim[1].trim();
return coreAnimation.apply($this, [anim, current, next]);
};
if (animate===false || !UI.support.animation) {
animation = Animations.none;
}
if (active.hasClass("uk-disabled")) return;
// Update ARIA for Toggles
toggles.attr('aria-expanded', 'false');
active.attr('aria-expanded', 'true');
toggles.filter(".uk-active").removeClass("uk-active");
active.addClass("uk-active");
if (this.options.connect && this.connect.length) {
this.index = this.find(this.options.toggle).index(active);
if (this.index == -1 ) {
this.index = 0;
}
this.connect.each(function() {
var container = UI.$(this),
children = UI.$(container.children()),
current = UI.$(children.filter('.uk-active')),
next = UI.$(children.eq($this.index));
$this.animating = true;
animation.apply($this, [current, next]).then(function(){
current.removeClass("uk-active");
next.addClass("uk-active");
// Update ARIA for connect
current.attr('aria-hidden', 'true');
next.attr('aria-hidden', 'false');
UI.Utils.checkDisplay(next, true);
$this.animating = false;
});
});
}
this.trigger("show.uk.switcher", [active]);
}
});
Animations = {
'none': function() {
var d = UI.$.Deferred();
d.resolve();
return d.promise();
},
'fade': function(current, next) {
return coreAnimation.apply(this, ['uk-animation-fade', current, next]);
},
'slide-bottom': function(current, next) {
return coreAnimation.apply(this, ['uk-animation-slide-bottom', current, next]);
},
'slide-top': function(current, next) {
return coreAnimation.apply(this, ['uk-animation-slide-top', current, next]);
},
'slide-vertical': function(current, next, dir) {
var anim = ['uk-animation-slide-top', 'uk-animation-slide-bottom'];
if (current && current.index() > next.index()) {
anim.reverse();
}
return coreAnimation.apply(this, [anim, current, next]);
},
'slide-left': function(current, next) {
return coreAnimation.apply(this, ['uk-animation-slide-left', current, next]);
},
'slide-right': function(current, next) {
return coreAnimation.apply(this, ['uk-animation-slide-right', current, next]);
},
'slide-horizontal': function(current, next, dir) {
var anim = ['uk-animation-slide-right', 'uk-animation-slide-left'];
if (current && current.index() > next.index()) {
anim.reverse();
}
return coreAnimation.apply(this, [anim, current, next]);
},
'scale': function(current, next) {
return coreAnimation.apply(this, ['uk-animation-scale-up', current, next]);
}
};
UI.switcher.animations = Animations;
// helpers
function coreAnimation(cls, current, next) {
var d = UI.$.Deferred(), clsIn = cls, clsOut = cls, release;
if (next[0]===current[0]) {
d.resolve();
return d.promise();
}
if (typeof(cls) == 'object') {
clsIn = cls[0];
clsOut = cls[1] || cls[0];
}
release = function() {
if (current) current.hide().removeClass('uk-active '+clsOut+' uk-animation-reverse');
next.addClass(clsIn).one(UI.support.animation.end, function() {
next.removeClass(''+clsIn+'').css({opacity:'', display:''});
d.resolve();
if (current) current.css({opacity:'', display:''});
}.bind(this)).show();
};
next.css('animation-duration', this.options.duration+'ms');
if (current && current.length) {
current.css('animation-duration', this.options.duration+'ms');
current.css('display', 'none').addClass(clsOut+' uk-animation-reverse').one(UI.support.animation.end, function() {
release();
}.bind(this)).css('display', '');
} else {
next.addClass('uk-active');
release();
}
return d.promise();
}
})(UIkit);

2
media/uikit/js/core/switcher.min.js vendored Normal file
View File

@ -0,0 +1,2 @@
/*! UIkit 2.21.0 | http://www.getuikit.com | (c) 2014 YOOtheme | MIT License */
!function(t){"use strict";function i(i,n,e){var a,s=t.$.Deferred(),o=i,r=i;return e[0]===n[0]?(s.resolve(),s.promise()):("object"==typeof i&&(o=i[0],r=i[1]||i[0]),a=function(){n&&n.hide().removeClass("uk-active "+r+" uk-animation-reverse"),e.addClass(o).one(t.support.animation.end,function(){e.removeClass(""+o).css({opacity:"",display:""}),s.resolve(),n&&n.css({opacity:"",display:""})}.bind(this)).show()},e.css("animation-duration",this.options.duration+"ms"),n&&n.length?(n.css("animation-duration",this.options.duration+"ms"),n.css("display","none").addClass(r+" uk-animation-reverse").one(t.support.animation.end,function(){a()}.bind(this)).css("display","")):(e.addClass("uk-active"),a()),s.promise())}var n;t.component("switcher",{defaults:{connect:!1,toggle:">*",active:0,animation:!1,duration:200},animating:!1,boot:function(){t.ready(function(i){t.$("[data-uk-switcher]",i).each(function(){var i=t.$(this);if(!i.data("switcher")){t.switcher(i,t.Utils.options(i.attr("data-uk-switcher")))}})})},init:function(){var i=this;if(this.on("click.uikit.switcher",this.options.toggle,function(t){t.preventDefault(),i.show(this)}),this.options.connect){this.connect=t.$(this.options.connect),this.connect.find(".uk-active").removeClass(".uk-active"),this.connect.length&&(this.connect.children().attr("aria-hidden","true"),this.connect.on("click","[data-uk-switcher-item]",function(n){n.preventDefault();var e=t.$(this).attr("data-uk-switcher-item");if(i.index!=e)switch(e){case"next":case"previous":i.show(i.index+("next"==e?1:-1));break;default:i.show(parseInt(e,10))}}).on("swipeRight swipeLeft",function(t){t.preventDefault(),window.getSelection().toString()||i.show(i.index+("swipeLeft"==t.type?1:-1))}));var n=this.find(this.options.toggle),e=n.filter(".uk-active");if(e.length)this.show(e,!1);else{if(this.options.active===!1)return;e=n.eq(this.options.active),this.show(e.length?e:n.eq(0),!1)}n.not(e).attr("aria-expanded","false"),e.attr("aria-expanded","true"),this.on("changed.uk.dom",function(){i.connect=t.$(i.options.connect)})}},show:function(e,a){if(!this.animating){if(isNaN(e))e=t.$(e);else{var s=this.find(this.options.toggle);e=0>e?s.length-1:e,e=s.eq(s[e]?e:0)}var o=this,s=this.find(this.options.toggle),r=t.$(e),c=n[this.options.animation]||function(t,e){if(!o.options.animation)return n.none.apply(o);var a=o.options.animation.split(",");return 1==a.length&&(a[1]=a[0]),a[0]=a[0].trim(),a[1]=a[1].trim(),i.apply(o,[a,t,e])};a!==!1&&t.support.animation||(c=n.none),r.hasClass("uk-disabled")||(s.attr("aria-expanded","false"),r.attr("aria-expanded","true"),s.filter(".uk-active").removeClass("uk-active"),r.addClass("uk-active"),this.options.connect&&this.connect.length&&(this.index=this.find(this.options.toggle).index(r),-1==this.index&&(this.index=0),this.connect.each(function(){var i=t.$(this),n=t.$(i.children()),e=t.$(n.filter(".uk-active")),a=t.$(n.eq(o.index));o.animating=!0,c.apply(o,[e,a]).then(function(){e.removeClass("uk-active"),a.addClass("uk-active"),e.attr("aria-hidden","true"),a.attr("aria-hidden","false"),t.Utils.checkDisplay(a,!0),o.animating=!1})})),this.trigger("show.uk.switcher",[r]))}}}),n={none:function(){var i=t.$.Deferred();return i.resolve(),i.promise()},fade:function(t,n){return i.apply(this,["uk-animation-fade",t,n])},"slide-bottom":function(t,n){return i.apply(this,["uk-animation-slide-bottom",t,n])},"slide-top":function(t,n){return i.apply(this,["uk-animation-slide-top",t,n])},"slide-vertical":function(t,n){var e=["uk-animation-slide-top","uk-animation-slide-bottom"];return t&&t.index()>n.index()&&e.reverse(),i.apply(this,[e,t,n])},"slide-left":function(t,n){return i.apply(this,["uk-animation-slide-left",t,n])},"slide-right":function(t,n){return i.apply(this,["uk-animation-slide-right",t,n])},"slide-horizontal":function(t,n){var e=["uk-animation-slide-right","uk-animation-slide-left"];return t&&t.index()>n.index()&&e.reverse(),i.apply(this,[e,t,n])},scale:function(t,n){return i.apply(this,["uk-animation-scale-up",t,n])}},t.switcher.animations=n}(UIkit);

165
media/uikit/js/core/tab.js Normal file
View File

@ -0,0 +1,165 @@
/*! UIkit 2.21.0 | http://www.getuikit.com | (c) 2014 YOOtheme | MIT License */
(function(UI) {
"use strict";
UI.component('tab', {
defaults: {
'target' : '>li:not(.uk-tab-responsive, .uk-disabled)',
'connect' : false,
'active' : 0,
'animation' : false,
'duration' : 200
},
boot: function() {
// init code
UI.ready(function(context) {
UI.$("[data-uk-tab]", context).each(function() {
var tab = UI.$(this);
if (!tab.data("tab")) {
var obj = UI.tab(tab, UI.Utils.options(tab.attr("data-uk-tab")));
}
});
});
},
init: function() {
var $this = this;
this.current = false;
this.on("click.uikit.tab", this.options.target, function(e) {
e.preventDefault();
if ($this.switcher && $this.switcher.animating) {
return;
}
var current = $this.find($this.options.target).not(this);
current.removeClass("uk-active").blur();
$this.trigger("change.uk.tab", [UI.$(this).addClass("uk-active"), $this.current]);
$this.current = UI.$(this);
// Update ARIA
if (!$this.options.connect) {
current.attr('aria-expanded', 'false');
UI.$(this).attr('aria-expanded', 'true');
}
});
if (this.options.connect) {
this.connect = UI.$(this.options.connect);
}
// init responsive tab
this.responsivetab = UI.$('<li class="uk-tab-responsive uk-active"><a></a></li>').append('<div class="uk-dropdown uk-dropdown-small"><ul class="uk-nav uk-nav-dropdown"></ul><div>');
this.responsivetab.dropdown = this.responsivetab.find('.uk-dropdown');
this.responsivetab.lst = this.responsivetab.dropdown.find('ul');
this.responsivetab.caption = this.responsivetab.find('a:first');
if (this.element.hasClass("uk-tab-bottom")) this.responsivetab.dropdown.addClass("uk-dropdown-up");
// handle click
this.responsivetab.lst.on('click.uikit.tab', 'a', function(e) {
e.preventDefault();
e.stopPropagation();
var link = UI.$(this);
$this.element.children('li:not(.uk-tab-responsive)').eq(link.data('index')).trigger('click');
});
this.on('show.uk.switcher change.uk.tab', function(e, tab) {
$this.responsivetab.caption.html(tab.text());
});
this.element.append(this.responsivetab);
// init UIkit components
if (this.options.connect) {
this.switcher = UI.switcher(this.element, {
"toggle" : ">li:not(.uk-tab-responsive)",
"connect" : this.options.connect,
"active" : this.options.active,
"animation" : this.options.animation,
"duration" : this.options.duration
});
}
UI.dropdown(this.responsivetab, {"mode": "click"});
// init
$this.trigger("change.uk.tab", [this.element.find(this.options.target).not('.uk-tab-responsive').filter('.uk-active')]);
this.check();
UI.$win.on('resize orientationchange', UI.Utils.debounce(function(){
if ($this.element.is(":visible")) $this.check();
}, 100));
this.on('display.uk.check', function(){
if ($this.element.is(":visible")) $this.check();
});
},
check: function() {
var children = this.element.children('li:not(.uk-tab-responsive)').removeClass('uk-hidden');
if (!children.length) {
this.responsivetab.addClass('uk-hidden');
return;
}
var top = (children.eq(0).offset().top + Math.ceil(children.eq(0).height()/2)),
doresponsive = false,
item, link, clone;
this.responsivetab.lst.empty();
children.each(function(){
if (UI.$(this).offset().top > top) {
doresponsive = true;
}
});
if (doresponsive) {
for (var i = 0; i < children.length; i++) {
item = UI.$(children.eq(i));
link = item.find('a');
if (item.css('float') != 'none' && !item.attr('uk-dropdown')) {
if (!item.hasClass('uk-disabled')) {
clone = item[0].outerHTML.replace('<a ', '<a data-index="'+i+'" ');
this.responsivetab.lst.append(clone);
}
item.addClass('uk-hidden');
}
}
}
this.responsivetab[this.responsivetab.lst.children('li').length ? 'removeClass':'addClass']('uk-hidden');
}
});
})(UIkit);

2
media/uikit/js/core/tab.min.js vendored Normal file
View File

@ -0,0 +1,2 @@
/*! UIkit 2.21.0 | http://www.getuikit.com | (c) 2014 YOOtheme | MIT License */
!function(t){"use strict";t.component("tab",{defaults:{target:">li:not(.uk-tab-responsive, .uk-disabled)",connect:!1,active:0,animation:!1,duration:200},boot:function(){t.ready(function(i){t.$("[data-uk-tab]",i).each(function(){var i=t.$(this);if(!i.data("tab")){t.tab(i,t.Utils.options(i.attr("data-uk-tab")))}})})},init:function(){var i=this;this.current=!1,this.on("click.uikit.tab",this.options.target,function(e){if(e.preventDefault(),!i.switcher||!i.switcher.animating){var s=i.find(i.options.target).not(this);s.removeClass("uk-active").blur(),i.trigger("change.uk.tab",[t.$(this).addClass("uk-active"),i.current]),i.current=t.$(this),i.options.connect||(s.attr("aria-expanded","false"),t.$(this).attr("aria-expanded","true"))}}),this.options.connect&&(this.connect=t.$(this.options.connect)),this.responsivetab=t.$('<li class="uk-tab-responsive uk-active"><a></a></li>').append('<div class="uk-dropdown uk-dropdown-small"><ul class="uk-nav uk-nav-dropdown"></ul><div>'),this.responsivetab.dropdown=this.responsivetab.find(".uk-dropdown"),this.responsivetab.lst=this.responsivetab.dropdown.find("ul"),this.responsivetab.caption=this.responsivetab.find("a:first"),this.element.hasClass("uk-tab-bottom")&&this.responsivetab.dropdown.addClass("uk-dropdown-up"),this.responsivetab.lst.on("click.uikit.tab","a",function(e){e.preventDefault(),e.stopPropagation();var s=t.$(this);i.element.children("li:not(.uk-tab-responsive)").eq(s.data("index")).trigger("click")}),this.on("show.uk.switcher change.uk.tab",function(t,e){i.responsivetab.caption.html(e.text())}),this.element.append(this.responsivetab),this.options.connect&&(this.switcher=t.switcher(this.element,{toggle:">li:not(.uk-tab-responsive)",connect:this.options.connect,active:this.options.active,animation:this.options.animation,duration:this.options.duration})),t.dropdown(this.responsivetab,{mode:"click"}),i.trigger("change.uk.tab",[this.element.find(this.options.target).not(".uk-tab-responsive").filter(".uk-active")]),this.check(),t.$win.on("resize orientationchange",t.Utils.debounce(function(){i.element.is(":visible")&&i.check()},100)),this.on("display.uk.check",function(){i.element.is(":visible")&&i.check()})},check:function(){var i=this.element.children("li:not(.uk-tab-responsive)").removeClass("uk-hidden");if(!i.length)return this.responsivetab.addClass("uk-hidden"),void 0;var e,s,n,a=i.eq(0).offset().top+Math.ceil(i.eq(0).height()/2),o=!1;if(this.responsivetab.lst.empty(),i.each(function(){t.$(this).offset().top>a&&(o=!0)}),o)for(var r=0;r<i.length;r++)e=t.$(i.eq(r)),s=e.find("a"),"none"==e.css("float")||e.attr("uk-dropdown")||(e.hasClass("uk-disabled")||(n=e[0].outerHTML.replace("<a ",'<a data-index="'+r+'" '),this.responsivetab.lst.append(n)),e.addClass("uk-hidden"));this.responsivetab[this.responsivetab.lst.children("li").length?"removeClass":"addClass"]("uk-hidden")}})}(UIkit);

View File

@ -0,0 +1,117 @@
/*! UIkit 2.21.0 | http://www.getuikit.com | (c) 2014 YOOtheme | MIT License */
(function(UI){
"use strict";
var toggles = [];
UI.component('toggle', {
defaults: {
target : false,
cls : 'uk-hidden',
animation : false,
duration : 200
},
boot: function(){
// init code
UI.ready(function(context) {
UI.$("[data-uk-toggle]", context).each(function() {
var ele = UI.$(this);
if (!ele.data("toggle")) {
var obj = UI.toggle(ele, UI.Utils.options(ele.attr("data-uk-toggle")));
}
});
setTimeout(function(){
toggles.forEach(function(toggle){
toggle.getToggles();
});
}, 0);
});
},
init: function() {
var $this = this;
this.aria = (this.options.cls.indexOf('uk-hidden') !== -1);
this.getToggles();
this.on("click", function(e) {
if ($this.element.is('a[href="#"]')) e.preventDefault();
$this.toggle();
});
toggles.push(this);
},
toggle: function() {
if(!this.totoggle.length) return;
if (this.options.animation && UI.support.animation) {
var $this = this, animations = this.options.animation.split(',');
if (animations.length == 1) {
animations[1] = animations[0];
}
animations[0] = animations[0].trim();
animations[1] = animations[1].trim();
this.totoggle.css('animation-duration', this.options.duration+'ms');
if (this.totoggle.hasClass(this.options.cls)) {
this.totoggle.toggleClass(this.options.cls);
this.totoggle.each(function(){
UI.Utils.animate(this, animations[0]).then(function(){
UI.$(this).css('animation-duration', '');
UI.Utils.checkDisplay(this);
});
});
} else {
this.totoggle.each(function(){
UI.Utils.animate(this, animations[1]+' uk-animation-reverse').then(function(){
UI.$(this).toggleClass($this.options.cls).css('animation-duration', '');
UI.Utils.checkDisplay(this);
}.bind(this));
});
}
} else {
this.totoggle.toggleClass(this.options.cls);
UI.Utils.checkDisplay(this.totoggle);
}
this.updateAria();
},
getToggles: function() {
this.totoggle = this.options.target ? UI.$(this.options.target):[];
this.updateAria();
},
updateAria: function() {
if (this.aria && this.totoggle.length) {
this.totoggle.each(function(){
UI.$(this).attr('aria-hidden', UI.$(this).hasClass('uk-hidden'));
});
}
}
});
})(UIkit);

2
media/uikit/js/core/toggle.min.js vendored Normal file
View File

@ -0,0 +1,2 @@
/*! UIkit 2.21.0 | http://www.getuikit.com | (c) 2014 YOOtheme | MIT License */
!function(t){"use strict";var i=[];t.component("toggle",{defaults:{target:!1,cls:"uk-hidden",animation:!1,duration:200},boot:function(){t.ready(function(s){t.$("[data-uk-toggle]",s).each(function(){var i=t.$(this);if(!i.data("toggle")){t.toggle(i,t.Utils.options(i.attr("data-uk-toggle")))}}),setTimeout(function(){i.forEach(function(t){t.getToggles()})},0)})},init:function(){var t=this;this.aria=-1!==this.options.cls.indexOf("uk-hidden"),this.getToggles(),this.on("click",function(i){t.element.is('a[href="#"]')&&i.preventDefault(),t.toggle()}),i.push(this)},toggle:function(){if(this.totoggle.length){if(this.options.animation&&t.support.animation){var i=this,s=this.options.animation.split(",");1==s.length&&(s[1]=s[0]),s[0]=s[0].trim(),s[1]=s[1].trim(),this.totoggle.css("animation-duration",this.options.duration+"ms"),this.totoggle.hasClass(this.options.cls)?(this.totoggle.toggleClass(this.options.cls),this.totoggle.each(function(){t.Utils.animate(this,s[0]).then(function(){t.$(this).css("animation-duration",""),t.Utils.checkDisplay(this)})})):this.totoggle.each(function(){t.Utils.animate(this,s[1]+" uk-animation-reverse").then(function(){t.$(this).toggleClass(i.options.cls).css("animation-duration",""),t.Utils.checkDisplay(this)}.bind(this))})}else this.totoggle.toggleClass(this.options.cls),t.Utils.checkDisplay(this.totoggle);this.updateAria()}},getToggles:function(){this.totoggle=this.options.target?t.$(this.options.target):[],this.updateAria()},updateAria:function(){this.aria&&this.totoggle.length&&this.totoggle.each(function(){t.$(this).attr("aria-hidden",t.$(this).hasClass("uk-hidden"))})}})}(UIkit);

View File

@ -0,0 +1,173 @@
/*! UIkit 2.21.0 | http://www.getuikit.com | (c) 2014 YOOtheme | MIT License */
// Based on Zeptos touch.js
// https://raw.github.com/madrobby/zepto/master/src/touch.js
// Zepto.js may be freely distributed under the MIT license.
;(function($){
if ($.fn.swipeLeft) {
return;
}
var touch = {}, touchTimeout, tapTimeout, swipeTimeout, longTapTimeout, longTapDelay = 750, gesture;
function swipeDirection(x1, x2, y1, y2) {
return Math.abs(x1 - x2) >= Math.abs(y1 - y2) ? (x1 - x2 > 0 ? 'Left' : 'Right') : (y1 - y2 > 0 ? 'Up' : 'Down');
}
function longTap() {
longTapTimeout = null;
if (touch.last) {
touch.el.trigger('longTap');
touch = {};
}
}
function cancelLongTap() {
if (longTapTimeout) clearTimeout(longTapTimeout);
longTapTimeout = null;
}
function cancelAll() {
if (touchTimeout) clearTimeout(touchTimeout);
if (tapTimeout) clearTimeout(tapTimeout);
if (swipeTimeout) clearTimeout(swipeTimeout);
if (longTapTimeout) clearTimeout(longTapTimeout);
touchTimeout = tapTimeout = swipeTimeout = longTapTimeout = null;
touch = {};
}
function isPrimaryTouch(event){
return event.pointerType == event.MSPOINTER_TYPE_TOUCH && event.isPrimary;
}
$(function(){
var now, delta, deltaX = 0, deltaY = 0, firstTouch;
if ('MSGesture' in window) {
gesture = new MSGesture();
gesture.target = document.body;
}
$(document)
.on('MSGestureEnd gestureend', function(e){
var swipeDirectionFromVelocity = e.originalEvent.velocityX > 1 ? 'Right' : e.originalEvent.velocityX < -1 ? 'Left' : e.originalEvent.velocityY > 1 ? 'Down' : e.originalEvent.velocityY < -1 ? 'Up' : null;
if (swipeDirectionFromVelocity) {
touch.el.trigger('swipe');
touch.el.trigger('swipe'+ swipeDirectionFromVelocity);
}
})
// MSPointerDown: for IE10
// pointerdown: for IE11
.on('touchstart MSPointerDown pointerdown', function(e){
if(e.type == 'MSPointerDown' && !isPrimaryTouch(e.originalEvent)) return;
firstTouch = (e.type == 'MSPointerDown' || e.type == 'pointerdown') ? e : e.originalEvent.touches[0];
now = Date.now();
delta = now - (touch.last || now);
touch.el = $('tagName' in firstTouch.target ? firstTouch.target : firstTouch.target.parentNode);
if(touchTimeout) clearTimeout(touchTimeout);
touch.x1 = firstTouch.pageX;
touch.y1 = firstTouch.pageY;
if (delta > 0 && delta <= 250) touch.isDoubleTap = true;
touch.last = now;
longTapTimeout = setTimeout(longTap, longTapDelay);
// adds the current touch contact for IE gesture recognition
if (gesture && ( e.type == 'MSPointerDown' || e.type == 'pointerdown' || e.type == 'touchstart' ) ) {
gesture.addPointer(e.originalEvent.pointerId);
}
})
// MSPointerMove: for IE10
// pointermove: for IE11
.on('touchmove MSPointerMove pointermove', function(e){
if (e.type == 'MSPointerMove' && !isPrimaryTouch(e.originalEvent)) return;
firstTouch = (e.type == 'MSPointerMove' || e.type == 'pointermove') ? e : e.originalEvent.touches[0];
cancelLongTap();
touch.x2 = firstTouch.pageX;
touch.y2 = firstTouch.pageY;
deltaX += Math.abs(touch.x1 - touch.x2);
deltaY += Math.abs(touch.y1 - touch.y2);
})
// MSPointerUp: for IE10
// pointerup: for IE11
.on('touchend MSPointerUp pointerup', function(e){
if (e.type == 'MSPointerUp' && !isPrimaryTouch(e.originalEvent)) return;
cancelLongTap();
// swipe
if ((touch.x2 && Math.abs(touch.x1 - touch.x2) > 30) || (touch.y2 && Math.abs(touch.y1 - touch.y2) > 30)){
swipeTimeout = setTimeout(function() {
touch.el.trigger('swipe');
touch.el.trigger('swipe' + (swipeDirection(touch.x1, touch.x2, touch.y1, touch.y2)));
touch = {};
}, 0);
// normal tap
} else if ('last' in touch) {
// don't fire tap when delta position changed by more than 30 pixels,
// for instance when moving to a point and back to origin
if (isNaN(deltaX) || (deltaX < 30 && deltaY < 30)) {
// delay by one tick so we can cancel the 'tap' event if 'scroll' fires
// ('tap' fires before 'scroll')
tapTimeout = setTimeout(function() {
// trigger universal 'tap' with the option to cancelTouch()
// (cancelTouch cancels processing of single vs double taps for faster 'tap' response)
var event = $.Event('tap');
event.cancelTouch = cancelAll;
touch.el.trigger(event);
// trigger double tap immediately
if (touch.isDoubleTap) {
touch.el.trigger('doubleTap');
touch = {};
}
// trigger single tap after 250ms of inactivity
else {
touchTimeout = setTimeout(function(){
touchTimeout = null;
touch.el.trigger('singleTap');
touch = {};
}, 250);
}
}, 0);
} else {
touch = {};
}
deltaX = deltaY = 0;
}
})
// when the browser window loses focus,
// for example when a modal dialog is shown,
// cancel all ongoing events
.on('touchcancel MSPointerCancel', cancelAll);
// scrolling the window indicates intention of the user
// to scroll, not tap or swipe, so cancel all ongoing events
$(window).on('scroll', cancelAll);
});
['swipe', 'swipeLeft', 'swipeRight', 'swipeUp', 'swipeDown', 'doubleTap', 'tap', 'singleTap', 'longTap'].forEach(function(eventName){
$.fn[eventName] = function(callback){ return $(this).on(eventName, callback); };
});
})(jQuery);

2
media/uikit/js/core/touch.min.js vendored Normal file
View File

@ -0,0 +1,2 @@
/*! UIkit 2.21.0 | http://www.getuikit.com | (c) 2014 YOOtheme | MIT License */
!function(e){function t(e,t,n,o){return Math.abs(e-t)>=Math.abs(n-o)?e-t>0?"Left":"Right":n-o>0?"Up":"Down"}function n(){p=null,g.last&&(g.el.trigger("longTap"),g={})}function o(){p&&clearTimeout(p),p=null}function i(){a&&clearTimeout(a),l&&clearTimeout(l),u&&clearTimeout(u),p&&clearTimeout(p),a=l=u=p=null,g={}}function r(e){return e.pointerType==e.MSPOINTER_TYPE_TOUCH&&e.isPrimary}if(!e.fn.swipeLeft){var a,l,u,p,c,g={},s=750;e(function(){var y,w,v,f=0,M=0;"MSGesture"in window&&(c=new MSGesture,c.target=document.body),e(document).on("MSGestureEnd gestureend",function(e){var t=e.originalEvent.velocityX>1?"Right":e.originalEvent.velocityX<-1?"Left":e.originalEvent.velocityY>1?"Down":e.originalEvent.velocityY<-1?"Up":null;t&&(g.el.trigger("swipe"),g.el.trigger("swipe"+t))}).on("touchstart MSPointerDown pointerdown",function(t){("MSPointerDown"!=t.type||r(t.originalEvent))&&(v="MSPointerDown"==t.type||"pointerdown"==t.type?t:t.originalEvent.touches[0],y=Date.now(),w=y-(g.last||y),g.el=e("tagName"in v.target?v.target:v.target.parentNode),a&&clearTimeout(a),g.x1=v.pageX,g.y1=v.pageY,w>0&&250>=w&&(g.isDoubleTap=!0),g.last=y,p=setTimeout(n,s),!c||"MSPointerDown"!=t.type&&"pointerdown"!=t.type&&"touchstart"!=t.type||c.addPointer(t.originalEvent.pointerId))}).on("touchmove MSPointerMove pointermove",function(e){("MSPointerMove"!=e.type||r(e.originalEvent))&&(v="MSPointerMove"==e.type||"pointermove"==e.type?e:e.originalEvent.touches[0],o(),g.x2=v.pageX,g.y2=v.pageY,f+=Math.abs(g.x1-g.x2),M+=Math.abs(g.y1-g.y2))}).on("touchend MSPointerUp pointerup",function(n){("MSPointerUp"!=n.type||r(n.originalEvent))&&(o(),g.x2&&Math.abs(g.x1-g.x2)>30||g.y2&&Math.abs(g.y1-g.y2)>30?u=setTimeout(function(){g.el.trigger("swipe"),g.el.trigger("swipe"+t(g.x1,g.x2,g.y1,g.y2)),g={}},0):"last"in g&&(isNaN(f)||30>f&&30>M?l=setTimeout(function(){var t=e.Event("tap");t.cancelTouch=i,g.el.trigger(t),g.isDoubleTap?(g.el.trigger("doubleTap"),g={}):a=setTimeout(function(){a=null,g.el.trigger("singleTap"),g={}},250)},0):g={},f=M=0))}).on("touchcancel MSPointerCancel",i),e(window).on("scroll",i)}),["swipe","swipeLeft","swipeRight","swipeUp","swipeDown","doubleTap","tap","singleTap","longTap"].forEach(function(t){e.fn[t]=function(n){return e(this).on(t,n)}})}}(jQuery);

View File

@ -0,0 +1,243 @@
/*! UIkit 2.21.0 | http://www.getuikit.com | (c) 2014 YOOtheme | MIT License */
(function(UI) {
"use strict";
var stacks = [];
UI.component('stackMargin', {
defaults: {
'cls': 'uk-margin-small-top'
},
boot: function() {
// init code
UI.ready(function(context) {
UI.$("[data-uk-margin]", context).each(function() {
var ele = UI.$(this), obj;
if (!ele.data("stackMargin")) {
obj = UI.stackMargin(ele, UI.Utils.options(ele.attr("data-uk-margin")));
}
});
});
},
init: function() {
var $this = this;
this.columns = this.element.children();
if (!this.columns.length) return;
UI.$win.on('resize orientationchange', (function() {
var fn = function() {
$this.process();
};
UI.$(function() {
fn();
UI.$win.on("load", fn);
});
return UI.Utils.debounce(fn, 20);
})());
UI.$html.on("changed.uk.dom", function(e) {
$this.columns = $this.element.children();
$this.process();
});
this.on("display.uk.check", function(e) {
$this.columns = $this.element.children();
if (this.element.is(":visible")) this.process();
}.bind(this));
stacks.push(this);
},
process: function() {
var $this = this;
UI.Utils.stackMargin(this.columns, this.options);
return this;
},
revert: function() {
this.columns.removeClass(this.options.cls);
return this;
}
});
// responsive element e.g. iframes
(function(){
var elements = [], check = function(ele) {
if (!ele.is(':visible')) return;
var width = ele.parent().width(),
iwidth = ele.data('width'),
ratio = (width / iwidth),
height = Math.floor(ratio * ele.data('height'));
ele.css({'height': (width < iwidth) ? height : ele.data('height')});
};
UI.component('responsiveElement', {
defaults: {},
boot: function() {
// init code
UI.ready(function(context) {
UI.$("iframe.uk-responsive-width, [data-uk-responsive]", context).each(function() {
var ele = UI.$(this), obj;
if (!ele.data("responsiveIframe")) {
obj = UI.responsiveElement(ele, {});
}
});
});
},
init: function() {
var ele = this.element;
if (ele.attr('width') && ele.attr('height')) {
ele.data({
'width' : ele.attr('width'),
'height': ele.attr('height')
}).on('display.uk.check', function(){
check(ele);
});
check(ele);
elements.push(ele);
}
}
});
UI.$win.on('resize load', UI.Utils.debounce(function(){
elements.forEach(function(ele){
check(ele);
});
}, 15));
})();
// helper
UI.Utils.stackMargin = function(elements, options) {
options = UI.$.extend({
'cls': 'uk-margin-small-top'
}, options);
options.cls = options.cls;
elements = UI.$(elements).removeClass(options.cls);
var skip = false,
firstvisible = elements.filter(":visible:first"),
offset = firstvisible.length ? (firstvisible.position().top + firstvisible.outerHeight()) - 1 : false; // (-1): weird firefox bug when parent container is display:flex
if (offset === false) return;
elements.each(function() {
var column = UI.$(this);
if (column.is(":visible")) {
if (skip) {
column.addClass(options.cls);
} else {
if (column.position().top >= offset) {
skip = column.addClass(options.cls);
}
}
}
});
};
UI.Utils.matchHeights = function(elements, options) {
elements = UI.$(elements).css('min-height', '');
options = UI.$.extend({ row : true }, options);
var matchHeights = function(group){
if (group.length < 2) return;
var max = 0;
group.each(function() {
max = Math.max(max, UI.$(this).outerHeight());
}).each(function() {
var element = UI.$(this),
height = max - (element.css('box-sizing') == 'border-box' ? 0 : (element.outerHeight() - element.height()));
element.css('min-height', height + 'px');
});
};
if (options.row) {
elements.first().width(); // force redraw
setTimeout(function(){
var lastoffset = false, group = [];
elements.each(function() {
var ele = UI.$(this), offset = ele.offset().top;
if (offset != lastoffset && group.length) {
matchHeights(UI.$(group));
group = [];
offset = ele.offset().top;
}
group.push(ele);
lastoffset = offset;
});
if (group.length) {
matchHeights(UI.$(group));
}
}, 0);
} else {
matchHeights(elements);
}
};
})(UIkit);

2
media/uikit/js/core/utility.min.js vendored Normal file
View File

@ -0,0 +1,2 @@
/*! UIkit 2.21.0 | http://www.getuikit.com | (c) 2014 YOOtheme | MIT License */
!function(t){"use strict";var i=[];t.component("stackMargin",{defaults:{cls:"uk-margin-small-top"},boot:function(){t.ready(function(i){t.$("[data-uk-margin]",i).each(function(){var i,n=t.$(this);n.data("stackMargin")||(i=t.stackMargin(n,t.Utils.options(n.attr("data-uk-margin"))))})})},init:function(){var n=this;this.columns=this.element.children(),this.columns.length&&(t.$win.on("resize orientationchange",function(){var i=function(){n.process()};return t.$(function(){i(),t.$win.on("load",i)}),t.Utils.debounce(i,20)}()),t.$html.on("changed.uk.dom",function(){n.columns=n.element.children(),n.process()}),this.on("display.uk.check",function(){n.columns=n.element.children(),this.element.is(":visible")&&this.process()}.bind(this)),i.push(this))},process:function(){return t.Utils.stackMargin(this.columns,this.options),this},revert:function(){return this.columns.removeClass(this.options.cls),this}}),function(){var i=[],n=function(t){if(t.is(":visible")){var i=t.parent().width(),n=t.data("width"),s=i/n,e=Math.floor(s*t.data("height"));t.css({height:n>i?e:t.data("height")})}};t.component("responsiveElement",{defaults:{},boot:function(){t.ready(function(i){t.$("iframe.uk-responsive-width, [data-uk-responsive]",i).each(function(){var i,n=t.$(this);n.data("responsiveIframe")||(i=t.responsiveElement(n,{}))})})},init:function(){var t=this.element;t.attr("width")&&t.attr("height")&&(t.data({width:t.attr("width"),height:t.attr("height")}).on("display.uk.check",function(){n(t)}),n(t),i.push(t))}}),t.$win.on("resize load",t.Utils.debounce(function(){i.forEach(function(t){n(t)})},15))}(),t.Utils.stackMargin=function(i,n){n=t.$.extend({cls:"uk-margin-small-top"},n),n.cls=n.cls,i=t.$(i).removeClass(n.cls);var s=!1,e=i.filter(":visible:first"),o=e.length?e.position().top+e.outerHeight()-1:!1;o!==!1&&i.each(function(){var i=t.$(this);i.is(":visible")&&(s?i.addClass(n.cls):i.position().top>=o&&(s=i.addClass(n.cls)))})},t.Utils.matchHeights=function(i,n){i=t.$(i).css("min-height",""),n=t.$.extend({row:!0},n);var s=function(i){if(!(i.length<2)){var n=0;i.each(function(){n=Math.max(n,t.$(this).outerHeight())}).each(function(){var i=t.$(this),s=n-("border-box"==i.css("box-sizing")?0:i.outerHeight()-i.height());i.css("min-height",s+"px")})}};n.row?(i.first().width(),setTimeout(function(){var n=!1,e=[];i.each(function(){var i=t.$(this),o=i.offset().top;o!=n&&e.length&&(s(t.$(e)),e=[],o=i.offset().top),e.push(i),n=o}),e.length&&s(t.$(e))},0)):s(i)}}(UIkit);

View File

@ -0,0 +1 @@
<html><body bgcolor="#FFFFFF"></body></html>

3400
media/uikit/js/uikit.js Normal file

File diff suppressed because it is too large Load Diff

3
media/uikit/js/uikit.min.js vendored Normal file

File diff suppressed because one or more lines are too long