This commit is contained in:
Viggo
2017-12-20 13:23:22 +08:00
parent c463423d63
commit 2ddd48d844
1196 changed files with 227177 additions and 0 deletions

File diff suppressed because it is too large Load Diff

File diff suppressed because one or more lines are too long

File diff suppressed because it is too large Load Diff

File diff suppressed because one or more lines are too long

File diff suppressed because it is too large Load Diff

File diff suppressed because one or more lines are too long

0
assets/js/uikit/css/index.html Executable file
View File

File diff suppressed because it is too large Load Diff

File diff suppressed because one or more lines are too long

1
assets/js/uikit/css/uikit.css Executable file

File diff suppressed because one or more lines are too long

File diff suppressed because it is too large Load Diff

3
assets/js/uikit/css/uikit.gradient.min.css vendored Executable file

File diff suppressed because one or more lines are too long

3
assets/js/uikit/css/uikit.min.css vendored Executable file

File diff suppressed because one or more lines are too long

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

0
assets/js/uikit/index.html Executable file
View File

View File

@@ -0,0 +1,305 @@
/*! UIkit 2.10.0 | http://www.getuikit.com | (c) 2014 YOOtheme | MIT License */
(function(addon) {
var component;
if (jQuery && jQuery.UIkit) {
component = addon(jQuery, jQuery.UIkit);
}
if (typeof define == "function" && define.amd) {
define("uikit-autocomplete", ["uikit"], function(){
return component || addon(jQuery, jQuery.UIkit);
});
}
})(function($, UI){
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,
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 = $('<div class="uk-dropdown"></div>').appendTo(this.element);
}
if (this.options.flipDropdown) {
this.dropdown.addClass('uk-dropdown-flip');
}
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,
"blur": function(e) {
setTimeout(function() { $this.hide(); }, 200);
}
});
this.dropdown.on("click", ".uk-autocomplete-results > *", function(){
$this.select();
});
this.dropdown.on("mouseover", ".uk-autocomplete-results > *", function(){
$this.pick($(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 = 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']();
}
}
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("autocomplete-select", [data, this]);
if (data.value) {
this.input.val(data.value);
}
this.hide();
},
show: function() {
if (this.visible) return;
this.visible = true;
this.element.addClass("uk-open");
return this;
},
hide: function() {
if (!this.visible) return;
this.visible = false;
this.element.removeClass("uk-open");
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;
$.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('autocomplete-show');
}
return this;
}
});
// init code
UI.$doc.on("focus.autocomplete.uikit", "[data-uk-autocomplete]", function(e) {
var ele = $(this);
if (!ele.data("autocomplete")) {
var obj = UI.autocomplete(ele, UI.Utils.options(ele.attr("data-uk-autocomplete")));
}
});
return UI.autocomplete;
});

View File

@@ -0,0 +1,3 @@
/*! UIkit 2.10.0 | http://www.getuikit.com | (c) 2014 YOOtheme | MIT License */
!function(a){var b;jQuery&&jQuery.UIkit&&(b=a(jQuery,jQuery.UIkit)),"function"==typeof define&&define.amd&&define("uikit-autocomplete",["uikit"],function(){return b||a(jQuery,jQuery.UIkit)})}(function(a,b){return b.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,init:function(){var c=this,d=!1,e=b.Utils.debounce(function(){return d?d=!1:void c.handle()},this.options.delay);this.dropdown=this.find(".uk-dropdown"),this.template=this.find('script[type="text/autocomplete"]').html(),this.template=b.Utils.template(this.template||this.options.template),this.input=this.find("input:first").attr("autocomplete","off"),this.dropdown.length||(this.dropdown=a('<div class="uk-dropdown"></div>').appendTo(this.element)),this.options.flipDropdown&&this.dropdown.addClass("uk-dropdown-flip"),this.input.on({keydown:function(a){if(a&&a.which&&!a.shiftKey)switch(a.which){case 13:d=!0,c.selected&&(a.preventDefault(),c.select());break;case 38:a.preventDefault(),c.pick("prev",!0);break;case 40:a.preventDefault(),c.pick("next",!0);break;case 27:case 9:c.hide()}},keyup:e,blur:function(){setTimeout(function(){c.hide()},200)}}),this.dropdown.on("click",".uk-autocomplete-results > *",function(){c.select()}),this.dropdown.on("mouseover",".uk-autocomplete-results > *",function(){c.pick(a(this))}),this.triggercomplete=e},handle:function(){var a=this,b=this.value;return this.value=this.input.val(),this.value.length<this.options.minLength?this.hide():(this.value!=b&&a.request(),this)},pick:function(a,b){var c=this,d=this.dropdown.find(".uk-autocomplete-results").children(":not(."+this.options.skipClass+")"),e=!1;if("string"==typeof a||a.hasClass(this.options.skipClass)){if("next"==a||"prev"==a)if(this.selected){var f=d.index(this.selected);e=d.eq("next"==a?f+1<d.length?f+1:0:0>f-1?d.length-1:f-1)}else e=d["next"==a?"first":"last"]()}else e=a;if(e&&e.length&&(this.selected=e,d.removeClass(this.options.hoverClass),this.selected.addClass(this.options.hoverClass),b)){var g=e.position().top,h=c.dropdown.scrollTop(),i=c.dropdown.height();(g>i||0>g)&&c.dropdown.scrollTop(h+g)}},select:function(){if(this.selected){var a=this.selected.data();this.trigger("autocomplete-select",[a,this]),a.value&&this.input.val(a.value),this.hide()}},show:function(){return this.visible?void 0:(this.visible=!0,this.element.addClass("uk-open"),this)},hide:function(){return this.visible?(this.visible=!1,this.element.removeClass("uk-open"),this):void 0},request:function(){var b=this,c=function(a){a&&b.render(a),b.element.removeClass(b.options.loadingClass)};if(this.element.addClass(this.options.loadingClass),this.options.source){var d=this.options.source;switch(typeof this.options.source){case"function":this.options.source.apply(this,[c]);break;case"object":if(d.length){var e=[];d.forEach(function(a){a.value&&-1!=a.value.toLowerCase().indexOf(b.value.toLowerCase())&&e.push(a)}),c(e)}break;case"string":var f={};f[this.options.param]=this.value,a.ajax({url:this.options.source,data:f,type:this.options.method,dataType:"json"}).done(function(a){c(a||[])});break;default:c(null)}}else this.element.removeClass(b.options.loadingClass)},render:function(a){return this.dropdown.empty(),this.selected=!1,this.options.renderer?this.options.renderer.apply(this,[a]):a&&a.length&&(this.dropdown.append(this.template({items:a})),this.show(),this.trigger("autocomplete-show")),this}}),b.$doc.on("focus.autocomplete.uikit","[data-uk-autocomplete]",function(){var c=a(this);if(!c.data("autocomplete")){b.autocomplete(c,b.Utils.options(c.attr("data-uk-autocomplete")))}}),b.autocomplete});

View File

@@ -0,0 +1,90 @@
/*! UIkit 2.10.0 | http://www.getuikit.com | (c) 2014 YOOtheme | MIT License */
(function(addon) {
var component;
if (jQuery && jQuery.UIkit) {
component = addon(jQuery, jQuery.UIkit);
}
if (typeof define == "function" && define.amd) {
define("uikit-cover", ["uikit"], function(){
return component || addon(jQuery, jQuery.UIkit);
});
}
})(function($, UI){
"use strict";
UI.component('cover', {
defaults: {
automute : true
},
init: function() {
this.parent = this.element.parent();
this.dimension = {w: this.element.width(), h: this.element.height()};
this.ratio = this.dimension.w / this.dimension.h;
UI.$win.on('load resize orientationchange', UI.Utils.debounce(function(){
this.check();
}.bind(this), 100));
this.check();
this.element.data("cover", this);
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() {
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
});
}
});
// auto init
UI.ready(function(context) {
$("[data-uk-cover]", context).each(function(){
var ele = $(this);
if(!ele.data("cover")) {
var plugin = UI.cover(ele, UI.Utils.options(ele.attr("data-uk-cover")));
}
});
});
});

3
assets/js/uikit/js/addons/cover.min.js vendored Executable file
View File

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

View File

@@ -0,0 +1,379 @@
/*! UIkit 2.10.0 | http://www.getuikit.com | (c) 2014 YOOtheme | MIT License */
(function(addon) {
var component;
if (jQuery && jQuery.UIkit) {
component = addon(jQuery, jQuery.UIkit);
}
if (typeof define == "function" && define.amd) {
define("uikit-datepicker", ["uikit"], function(){
return component || addon(jQuery, jQuery.UIkit);
});
}
})(function($, UI){
// Datepicker
var active = false, dropdown, moment;
UI.component('datepicker', {
defaults: {
weekstart: 1,
i18n: {
months : ['January','February','March','April','May','June','July','August','September','October','November','December'],
weekdays : ['Sun','Mon','Tue','Wed','Thu','Fri','Sat']
},
format: "DD.MM.YYYY",
offsettop: 5,
maxDate: false,
minDate: false,
template: function(data, opts) {
var content = '', maxDate, minDate;
if (opts.maxDate!==false){
maxDate = isNaN(opts.maxDate) ? moment(opts.maxDate, opts.format) : moment().add('days', opts.maxDate);
}
if (opts.minDate!==false){
minDate = isNaN(opts.minDate) ? moment(opts.minDate, opts.format) : moment().add('days',opts.minDate-1);
}
content += '<div class="uk-datepicker-nav">';
content += '<a href="" class="uk-datepicker-previous"></a>';
content += '<a href="" class="uk-datepicker-next"></a>';
if (UI.formSelect) {
var i, currentyear = (new Date()).getFullYear(), options = [], months, years, minYear, maxYear;
for (i=0;i<opts.i18n.months.length;i++) {
if(i==data.month) {
options.push('<option value="'+i+'" selected>'+opts.i18n.months[i]+'</option>');
} else {
options.push('<option value="'+i+'">'+opts.i18n.months[i]+'</option>');
}
}
months = '<span class="uk-form-select">'+ opts.i18n.months[data.month] + '<select class="update-picker-month">'+options.join('')+'</select></span>';
// --
options = [];
minYear = minDate ? minDate.year() : currentyear - 50;
maxYear = maxDate ? maxDate.year() : currentyear + 20;
for (i=minYear;i<=maxYear;i++) {
if (i == data.year) {
options.push('<option value="'+i+'" selected>'+i+'</option>');
} else {
options.push('<option value="'+i+'">'+i+'</option>');
}
}
years = '<span class="uk-form-select">'+ data.year + '<select class="update-picker-year">'+options.join('')+'</select></span>';
content += '<div class="uk-datepicker-heading">'+ months + ' ' + years +'</div>';
} else {
content += '<div class="uk-datepicker-heading">'+ opts.i18n.months[data.month] +' '+ data.year+'</div>';
}
content += '</div>';
content += '<table class="uk-datepicker-table">';
content += '<thead>';
for(var i = 0; i < data.weekdays.length; i++) {
if (data.weekdays[i]) {
content += '<th>'+data.weekdays[i]+'</th>';
}
}
content += '</thead>';
content += '<tbody>';
for(var i = 0; i < data.days.length; i++) {
if (data.days[i] && data.days[i].length){
content += '<tr>';
for(var d = 0; d < data.days[i].length; d++) {
if (data.days[i][d]) {
var day = data.days[i][d],
cls = [];
if(!day.inmonth) cls.push("uk-datepicker-table-muted");
if(day.selected) cls.push("uk-active");
if (maxDate && day.day > maxDate) cls.push('uk-datepicker-date-disabled uk-datepicker-table-muted');
if (minDate && minDate > day.day) cls.push('uk-datepicker-date-disabled uk-datepicker-table-muted');
content += '<td><a href="" class="'+cls.join(" ")+'" data-date="'+day.day.format()+'">'+day.day.format("D")+'</a></td>';
}
}
content += '</tr>';
}
}
content += '</tbody>';
content += '</table>';
return content;
}
},
init: function() {
var $this = this;
this.current = this.element.val() ? moment(this.element.val(), this.options.format) : moment();
this.on("click", function(){
if(active!==$this) $this.pick(this.value);
}).on("change", function(){
if($this.element.val() && !moment($this.element.val(), $this.options.format).isValid()) {
$this.element.val(moment().format($this.options.format));
}
});
// init dropdown
if (!dropdown) {
dropdown = $('<div class="uk-dropdown uk-datepicker"></div>');
dropdown.on("click", ".uk-datepicker-next, .uk-datepicker-previous, [data-date]", function(e){
e.stopPropagation();
e.preventDefault();
var ele = $(this);
if (ele.hasClass('uk-datepicker-date-disabled')) return false;
if(ele.is('[data-date]')) {
active.element.val(moment(ele.data("date")).format(active.options.format)).trigger("change");
dropdown.hide();
active = false;
} else {
active.add("months", 1 * (ele.hasClass("uk-datepicker-next") ? 1:-1));
}
});
dropdown.on('change', '.update-picker-month, .update-picker-year', function(){
var select = $(this);
active[select.is('.update-picker-year') ? 'setYear':'setMonth'](Number(select.val()));
});
dropdown.appendTo("body");
}
},
pick: function(initdate) {
var offset = this.element.offset(),
css = {"top": offset.top + this.element.outerHeight() + this.options.offsettop, "left": offset.left, "right":""};
this.current = initdate ? moment(initdate, this.options.format):moment();
this.initdate = this.current.format("YYYY-MM-DD");
this.update();
if ($.UIkit.langdirection == 'right') {
css.right = window.innerWidth - (css.left + this.element.outerWidth());
css.left = "";
}
dropdown.css(css).show();
active = this;
},
add: function(unit, value) {
this.current.add(unit, value);
this.update();
},
setMonth: function(month) {
this.current.month(month);
this.update();
},
setYear: function(year) {
this.current.year(year);
this.update();
},
update: function() {
var data = this.getRows(this.current.year(), this.current.month()),
tpl = this.options.template(data, this.options);
dropdown.html(tpl);
},
getRows: function(year, month) {
var opts = this.options,
now = moment().format('YYYY-MM-DD'),
days = [31, (year % 4 === 0 && year % 100 !== 0 || year % 400 === 0) ? 29 : 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31][month],
before = new Date(year, month, 1).getDay(),
data = {"month":month, "year":year,"weekdays":[],"days":[]},
row = [];
data.weekdays = (function(){
for (var i=0, arr=[]; i < 7; i++) {
var day = i + (opts.weekstart || 0);
while (day >= 7) {
day -= 7;
}
arr.push(opts.i18n.weekdays[day]);
}
return arr;
})();
if (opts.weekstart && opts.weekstart > 0) {
before -= opts.weekstart;
if (before < 0) {
before += 7;
}
}
var cells = days + before, after = cells;
while(after > 7) { after -= 7; }
cells += 7 - after;
var day, isDisabled, isSelected, isToday, isInMonth;
for (var i = 0, r = 0; i < cells; i++) {
day = new Date(year, month, 1 + (i - before));
isDisabled = (opts.mindate && day < opts.mindate) || (opts.maxdate && day > opts.maxdate);
isInMonth = !(i < before || i >= (days + before));
day = moment(day);
isSelected = this.initdate == day.format("YYYY-MM-DD");
isToday = now == day.format("YYYY-MM-DD");
row.push({"selected": isSelected, "today": isToday, "disabled": isDisabled, "day":day, "inmonth":isInMonth});
if (++r === 7) {
data.days.push(row);
row = [];
r = 0;
}
}
return data;
},
hide: function() {
if (active && active === this) {
dropdown.hide();
active = false;
}
}
});
UI.$win.on("resize orientationchange", function() {
if (active) {
active.hide();
}
});
// init code
UI.$doc.on("focus.datepicker.uikit", "[data-uk-datepicker]", function(e) {
var ele = $(this);
if (!ele.data("datepicker")) {
e.preventDefault();
var obj = UI.datepicker(ele, UI.Utils.options(ele.attr("data-uk-datepicker")));
ele.trigger("focus");
}
});
UI.$doc.on("click.datepicker.uikit", function(e) {
var target = $(e.target);
if (active && target[0] != dropdown[0] && !target.data("datepicker") && !target.parents(".uk-datepicker:first").length) {
active.hide();
}
});
//! moment.js
//! version : 2.5.1
//! authors : Tim Wood, Iskren Chernev, Moment.js contributors
//! license : MIT
//! momentjs.com
moment = (function(B){function G(){return{empty:!1,unusedTokens:[],unusedInput:[],overflow:-2,charsLeftOver:0,nullInput:!1,invalidMonth:null,invalidFormat:!1,userInvalidated:!1,iso:!1}}function Z(a,b){return function(c){return l(a.call(this,c),b)}}function ta(a,b){return function(c){return this.lang().ordinal(a.call(this,c),b)}}function $(){}function H(a){aa(a);v(this,a)}function I(a){a=ba(a);var b=a.year||0,c=a.month||0,d=a.week||0,f=a.day||0;this._milliseconds=+(a.millisecond||0)+1E3*(a.second||0)+6E4*(a.minute||
0)+36E5*(a.hour||0);this._days=+f+7*d;this._months=+c+12*b;this._data={};this._bubble()}function v(a,b){for(var c in b)b.hasOwnProperty(c)&&(a[c]=b[c]);b.hasOwnProperty("toString")&&(a.toString=b.toString);b.hasOwnProperty("valueOf")&&(a.valueOf=b.valueOf);return a}function w(a){return 0>a?Math.ceil(a):Math.floor(a)}function l(a,b,c){for(var d=""+Math.abs(a);d.length<b;)d="0"+d;return(0<=a?c?"+":"":"-")+d}function J(a,b,c,d){var f=b._milliseconds,g=b._days;b=b._months;var m,h;f&&a._d.setTime(+a._d+
f*c);if(g||b)m=a.minute(),h=a.hour();g&&a.date(a.date()+g*c);b&&a.month(a.month()+b*c);f&&!d&&e.updateOffset(a,g||b);if(g||b)a.minute(m),a.hour(h)}function K(a){return"[object Array]"===Object.prototype.toString.call(a)}function ca(a,b,c){var d=Math.min(a.length,b.length),f=Math.abs(a.length-b.length),g=0,e;for(e=0;e<d;e++)(c&&a[e]!==b[e]||!c&&h(a[e])!==h(b[e]))&&g++;return g+f}function n(a){if(a){var b=a.toLowerCase().replace(/(.)s$/,"$1");a=ua[a]||va[b]||b}return a}function ba(a){var b={},c,d;for(d in a)a.hasOwnProperty(d)&&
(c=n(d))&&(b[c]=a[d]);return b}function wa(a){var b,c;if(0===a.indexOf("week"))b=7,c="day";else if(0===a.indexOf("month"))b=12,c="month";else return;e[a]=function(d,f){var g,m,h=e.fn._lang[a],k=[];"number"===typeof d&&(f=d,d=B);m=function(a){a=e().utc().set(c,a);return h.call(e.fn._lang,a,d||"")};if(null!=f)return m(f);for(g=0;g<b;g++)k.push(m(g));return k}}function h(a){a=+a;var b=0;0!==a&&isFinite(a)&&(b=0<=a?Math.floor(a):Math.ceil(a));return b}function L(a,b){return(new Date(Date.UTC(a,b+1,0))).getUTCDate()}
function da(a,b,c){return C(e([a,11,31+b-c]),b,c).week}function M(a){return 0===a%4&&0!==a%100||0===a%400}function aa(a){var b;a._a&&-2===a._pf.overflow&&(b=0>a._a[x]||11<a._a[x]?x:1>a._a[q]||a._a[q]>L(a._a[r],a._a[x])?q:0>a._a[p]||23<a._a[p]?p:0>a._a[y]||59<a._a[y]?y:0>a._a[D]||59<a._a[D]?D:0>a._a[E]||999<a._a[E]?E:-1,a._pf._overflowDayOfYear&&(b<r||b>q)&&(b=q),a._pf.overflow=b)}function ea(a){null==a._isValid&&(a._isValid=!isNaN(a._d.getTime())&&0>a._pf.overflow&&!a._pf.empty&&!a._pf.invalidMonth&&
!a._pf.nullInput&&!a._pf.invalidFormat&&!a._pf.userInvalidated,a._strict&&(a._isValid=a._isValid&&0===a._pf.charsLeftOver&&0===a._pf.unusedTokens.length));return a._isValid}function N(a){return a?a.toLowerCase().replace("_","-"):a}function O(a,b){return b._isUTC?e(a).zone(b._offset||0):e(a).local()}function s(a){var b=0,c,d,f,g,m=function(a){if(!z[a]&&xa)try{require("./lang/"+a)}catch(b){}return z[a]};if(!a)return e.fn._lang;if(!K(a)){if(d=m(a))return d;a=[a]}for(;b<a.length;){g=N(a[b]).split("-");
c=g.length;for(f=(f=N(a[b+1]))?f.split("-"):null;0<c;){if(d=m(g.slice(0,c).join("-")))return d;if(f&&f.length>=c&&ca(g,f,!0)>=c-1)break;c--}b++}return e.fn._lang}function ya(a){return a.match(/\[[\s\S]/)?a.replace(/^\[|\]$/g,""):a.replace(/\\/g,"")}function za(a){var b=a.match(fa),c,d;c=0;for(d=b.length;c<d;c++)b[c]=u[b[c]]?u[b[c]]:ya(b[c]);return function(f){var g="";for(c=0;c<d;c++)g+=b[c]instanceof Function?b[c].call(f,a):b[c];return g}}function P(a,b){if(!a.isValid())return a.lang().invalidDate();
b=ga(b,a.lang());Q[b]||(Q[b]=za(b));return Q[b](a)}function ga(a,b){function c(a){return b.longDateFormat(a)||a}var d=5;for(F.lastIndex=0;0<=d&&F.test(a);)a=a.replace(F,c),F.lastIndex=0,d-=1;return a}function Aa(a,b){var c=b._strict;switch(a){case "DDDD":return ha;case "YYYY":case "GGGG":case "gggg":return c?Ba:Ca;case "Y":case "G":case "g":return Da;case "YYYYYY":case "YYYYY":case "GGGGG":case "ggggg":return c?Ea:Fa;case "S":if(c)return Ga;case "SS":if(c)return ia;case "SSS":if(c)return ha;case "DDD":return Ha;
case "MMM":case "MMMM":case "dd":case "ddd":case "dddd":return Ia;case "a":case "A":return s(b._l)._meridiemParse;case "X":return Ja;case "Z":case "ZZ":return R;case "T":return Ka;case "SSSS":return La;case "MM":case "DD":case "YY":case "GG":case "gg":case "HH":case "hh":case "mm":case "ss":case "ww":case "WW":return c?ia:ja;case "M":case "D":case "d":case "H":case "h":case "m":case "s":case "w":case "W":case "e":case "E":return ja;case "Do":return Ma;default:var c=RegExp,d;d=Na(a.replace("\\","")).replace(/[-\/\\^$*+?.()|[\]{}]/g,
"\\$&");return new c(d)}}function ka(a){a=(a||"").match(R)||[];a=((a[a.length-1]||[])+"").match(Oa)||["-",0,0];var b=+(60*a[1])+h(a[2]);return"+"===a[0]?-b:b}function S(a){var b,c=[],d,f,g,m,k;if(!a._d){d=Pa(a);a._w&&null==a._a[q]&&null==a._a[x]&&(b=function(b){var c=parseInt(b,10);return b?3>b.length?68<c?1900+c:2E3+c:c:null==a._a[r]?e().weekYear():a._a[r]},f=a._w,null!=f.GG||null!=f.W||null!=f.E?b=la(b(f.GG),f.W||1,f.E,4,1):(g=s(a._l),m=null!=f.d?ma(f.d,g):null!=f.e?parseInt(f.e,10)+g._week.dow:
0,k=parseInt(f.w,10)||1,null!=f.d&&m<g._week.dow&&k++,b=la(b(f.gg),k,m,g._week.doy,g._week.dow)),a._a[r]=b.year,a._dayOfYear=b.dayOfYear);a._dayOfYear&&(b=null==a._a[r]?d[r]:a._a[r],a._dayOfYear>(M(b)?366:365)&&(a._pf._overflowDayOfYear=!0),b=T(b,0,a._dayOfYear),a._a[x]=b.getUTCMonth(),a._a[q]=b.getUTCDate());for(b=0;3>b&&null==a._a[b];++b)a._a[b]=c[b]=d[b];for(;7>b;b++)a._a[b]=c[b]=null==a._a[b]?2===b?1:0:a._a[b];c[p]+=h((a._tzm||0)/60);c[y]+=h((a._tzm||0)%60);a._d=(a._useUTC?T:Qa).apply(null,c)}}
function Pa(a){var b=new Date;return a._useUTC?[b.getUTCFullYear(),b.getUTCMonth(),b.getUTCDate()]:[b.getFullYear(),b.getMonth(),b.getDate()]}function U(a){a._a=[];a._pf.empty=!0;var b=s(a._l),c=""+a._i,d,f,g,e,k=c.length,l=0;f=ga(a._f,b).match(fa)||[];for(b=0;b<f.length;b++){g=f[b];if(d=(c.match(Aa(g,a))||[])[0])e=c.substr(0,c.indexOf(d)),0<e.length&&a._pf.unusedInput.push(e),c=c.slice(c.indexOf(d)+d.length),l+=d.length;if(u[g]){d?a._pf.empty=!1:a._pf.unusedTokens.push(g);e=a;var n=void 0,t=e._a;
switch(g){case "M":case "MM":null!=d&&(t[x]=h(d)-1);break;case "MMM":case "MMMM":n=s(e._l).monthsParse(d);null!=n?t[x]=n:e._pf.invalidMonth=d;break;case "D":case "DD":null!=d&&(t[q]=h(d));break;case "Do":null!=d&&(t[q]=h(parseInt(d,10)));break;case "DDD":case "DDDD":null!=d&&(e._dayOfYear=h(d));break;case "YY":t[r]=h(d)+(68<h(d)?1900:2E3);break;case "YYYY":case "YYYYY":case "YYYYYY":t[r]=h(d);break;case "a":case "A":e._isPm=s(e._l).isPM(d);break;case "H":case "HH":case "h":case "hh":t[p]=h(d);break;
case "m":case "mm":t[y]=h(d);break;case "s":case "ss":t[D]=h(d);break;case "S":case "SS":case "SSS":case "SSSS":t[E]=h(1E3*("0."+d));break;case "X":e._d=new Date(1E3*parseFloat(d));break;case "Z":case "ZZ":e._useUTC=!0;e._tzm=ka(d);break;case "w":case "ww":case "W":case "WW":case "d":case "dd":case "ddd":case "dddd":case "e":case "E":g=g.substr(0,1);case "gg":case "gggg":case "GG":case "GGGG":case "GGGGG":g=g.substr(0,2),d&&(e._w=e._w||{},e._w[g]=d)}}else a._strict&&!d&&a._pf.unusedTokens.push(g)}a._pf.charsLeftOver=
k-l;0<c.length&&a._pf.unusedInput.push(c);a._isPm&&12>a._a[p]&&(a._a[p]+=12);!1===a._isPm&&12===a._a[p]&&(a._a[p]=0);S(a);aa(a)}function Na(a){return a.replace(/\\(\[)|\\(\])|\[([^\]\[]*)\]|\\(.)/g,function(a,c,d,f,e){return c||d||f||e})}function Qa(a,b,c,d,f,e,h){b=new Date(a,b,c,d,f,e,h);1970>a&&b.setFullYear(a);return b}function T(a){var b=new Date(Date.UTC.apply(null,arguments));1970>a&&b.setUTCFullYear(a);return b}function ma(a,b){if("string"===typeof a)if(isNaN(a)){if(a=b.weekdaysParse(a),"number"!==
typeof a)return null}else a=parseInt(a,10);return a}function Ra(a,b,c,d,f){return f.relativeTime(b||1,!!c,a,d)}function C(a,b,c){b=c-b;c-=a.day();c>b&&(c-=7);c<b-7&&(c+=7);a=e(a).add("d",c);return{week:Math.ceil(a.dayOfYear()/7),year:a.year()}}function la(a,b,c,d,f){var e=T(a,0,1).getUTCDay();b=7*(b-1)+((null!=c?c:f)-f)+(f-e+(e>d?7:0)-(e<f?7:0))+1;return{year:0<b?a:a-1,dayOfYear:0<b?b:(M(a-1)?366:365)+b}}function na(a){var b=a._i,c=a._f;if(null===b)return e.invalid({nullInput:!0});"string"===typeof b&&
(a._i=b=s().preparse(b));if(e.isMoment(b)){a=b;var d={},f;for(f in a)a.hasOwnProperty(f)&&Sa.hasOwnProperty(f)&&(d[f]=a[f]);a=d;a._d=new Date(+b._d)}else if(c)if(K(c)){var b=a,g,h;if(0===b._f.length)b._pf.invalidFormat=!0,b._d=new Date(NaN);else{for(f=0;f<b._f.length;f++)if(c=0,d=v({},b),d._pf=G(),d._f=b._f[f],U(d),ea(d)&&(c+=d._pf.charsLeftOver,c+=10*d._pf.unusedTokens.length,d._pf.score=c,null==h||c<h))h=c,g=d;v(b,g||d)}}else U(a);else if(d=a,g=d._i,h=Ta.exec(g),g===B)d._d=new Date;else if(h)d._d=
new Date(+h[1]);else if("string"===typeof g)if(b=d._i,f=Ua.exec(b)){d._pf.iso=!0;g=0;for(h=V.length;g<h;g++)if(V[g][1].exec(b)){d._f=V[g][0]+(f[6]||" ");break}g=0;for(h=W.length;g<h;g++)if(W[g][1].exec(b)){d._f+=W[g][0];break}b.match(R)&&(d._f+="Z");U(d)}else d._d=new Date(b);else K(g)?(d._a=g.slice(0),S(d)):"[object Date]"===Object.prototype.toString.call(g)||g instanceof Date?d._d=new Date(+g):"object"===typeof g?d._d||(g=ba(d._i),d._a=[g.year,g.month,g.day,g.hour,g.minute,g.second,g.millisecond],
S(d)):d._d=new Date(g);return new H(a)}function oa(a,b){var c="date"===b||"month"===b||"year"===b;e.fn[a]=e.fn[a+"s"]=function(a,f){var g=this._isUTC?"UTC":"";null==f&&(f=c);return null!=a?(this._d["set"+g+b](a),e.updateOffset(this,f),this):this._d["get"+g+b]()}}function Va(a){e.duration.fn[a]=function(){return this._data[a]}}function pa(a,b){e.duration.fn["as"+a]=function(){return+this/b}}for(var e,A=Math.round,k,r=0,x=1,q=2,p=3,y=4,D=5,E=6,z={},Sa={_isAMomentObject:null,_i:null,_f:null,_l:null,
_strict:null,_isUTC:null,_offset:null,_pf:null,_lang:null},xa="undefined"!==typeof module&&module.exports&&"undefined"!==typeof require,Ta=/^\/?Date\((\-?\d+)/i,Wa=/(\-)?(?:(\d*)\.)?(\d+)\:(\d+)(?:\:(\d+)\.?(\d{3})?)?/,Xa=/^(-)?P(?:(?:([0-9,.]*)Y)?(?:([0-9,.]*)M)?(?:([0-9,.]*)D)?(?:T(?:([0-9,.]*)H)?(?:([0-9,.]*)M)?(?:([0-9,.]*)S)?)?|([0-9,.]*)W)$/,fa=/(\[[^\[]*\])|(\\)?(Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|YYYYYY|YYYYY|YYYY|YY|gg(ggg?)?|GG(GGG?)?|e|E|a|A|hh?|HH?|mm?|ss?|S{1,4}|X|zz?|ZZ?|.)/g,
F=/(\[[^\[]*\])|(\\)?(LT|LL?L?L?|l{1,4})/g,ja=/\d\d?/,Ha=/\d{1,3}/,Ca=/\d{1,4}/,Fa=/[+\-]?\d{1,6}/,La=/\d+/,Ia=/[0-9]*['a-z\u00A0-\u05FF\u0700-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]+|[\u0600-\u06FF\/]+(\s*?[\u0600-\u06FF]+){1,2}/i,R=/Z|[\+\-]\d\d:?\d\d/gi,Ka=/T/i,Ja=/[\+\-]?\d+(\.\d{1,3})?/,Ma=/\d{1,2}/,Ga=/\d/,ia=/\d\d/,ha=/\d{3}/,Ba=/\d{4}/,Ea=/[+-]?\d{6}/,Da=/[+-]?\d+/,Ua=/^\s*(?:[+-]\d{6}|\d{4})-(?:(\d\d-\d\d)|(W\d\d$)|(W\d\d-\d)|(\d\d\d))((T| )(\d\d(:\d\d(:\d\d(\.\d+)?)?)?)?([\+\-]\d\d(?::?\d\d)?|\s*Z)?)?$/,
V=[["YYYYYY-MM-DD",/[+-]\d{6}-\d{2}-\d{2}/],["YYYY-MM-DD",/\d{4}-\d{2}-\d{2}/],["GGGG-[W]WW-E",/\d{4}-W\d{2}-\d/],["GGGG-[W]WW",/\d{4}-W\d{2}/],["YYYY-DDD",/\d{4}-\d{3}/]],W=[["HH:mm:ss.SSSS",/(T| )\d\d:\d\d:\d\d\.\d{1,3}/],["HH:mm:ss",/(T| )\d\d:\d\d:\d\d/],["HH:mm",/(T| )\d\d:\d\d/],["HH",/(T| )\d\d/]],Oa=/([\+\-]|\d\d)/gi,X=["Date","Hours","Minutes","Seconds","Milliseconds"],Y={Milliseconds:1,Seconds:1E3,Minutes:6E4,Hours:36E5,Days:864E5,Months:2592E6,Years:31536E6},ua={ms:"millisecond",s:"second",
m:"minute",h:"hour",d:"day",D:"date",w:"week",W:"isoWeek",M:"month",y:"year",DDD:"dayOfYear",e:"weekday",E:"isoWeekday",gg:"weekYear",GG:"isoWeekYear"},va={dayofyear:"dayOfYear",isoweekday:"isoWeekday",isoweek:"isoWeek",weekyear:"weekYear",isoweekyear:"isoWeekYear"},Q={},qa="DDD w W M D d".split(" "),ra="MDHhmswW".split(""),u={M:function(){return this.month()+1},MMM:function(a){return this.lang().monthsShort(this,a)},MMMM:function(a){return this.lang().months(this,a)},D:function(){return this.date()},
DDD:function(){return this.dayOfYear()},d:function(){return this.day()},dd:function(a){return this.lang().weekdaysMin(this,a)},ddd:function(a){return this.lang().weekdaysShort(this,a)},dddd:function(a){return this.lang().weekdays(this,a)},w:function(){return this.week()},W:function(){return this.isoWeek()},YY:function(){return l(this.year()%100,2)},YYYY:function(){return l(this.year(),4)},YYYYY:function(){return l(this.year(),5)},YYYYYY:function(){var a=this.year();return(0<=a?"+":"-")+l(Math.abs(a),
6)},gg:function(){return l(this.weekYear()%100,2)},gggg:function(){return l(this.weekYear(),4)},ggggg:function(){return l(this.weekYear(),5)},GG:function(){return l(this.isoWeekYear()%100,2)},GGGG:function(){return l(this.isoWeekYear(),4)},GGGGG:function(){return l(this.isoWeekYear(),5)},e:function(){return this.weekday()},E:function(){return this.isoWeekday()},a:function(){return this.lang().meridiem(this.hours(),this.minutes(),!0)},A:function(){return this.lang().meridiem(this.hours(),this.minutes(),
!1)},H:function(){return this.hours()},h:function(){return this.hours()%12||12},m:function(){return this.minutes()},s:function(){return this.seconds()},S:function(){return h(this.milliseconds()/100)},SS:function(){return l(h(this.milliseconds()/10),2)},SSS:function(){return l(this.milliseconds(),3)},SSSS:function(){return l(this.milliseconds(),3)},Z:function(){var a=-this.zone(),b="+";0>a&&(a=-a,b="-");return b+l(h(a/60),2)+":"+l(h(a)%60,2)},ZZ:function(){var a=-this.zone(),b="+";0>a&&(a=-a,b="-");
return b+l(h(a/60),2)+l(h(a)%60,2)},z:function(){return this.zoneAbbr()},zz:function(){return this.zoneName()},X:function(){return this.unix()},Q:function(){return this.quarter()}},sa=["months","monthsShort","weekdays","weekdaysShort","weekdaysMin"];qa.length;)k=qa.pop(),u[k+"o"]=ta(u[k],k);for(;ra.length;)k=ra.pop(),u[k+k]=Z(u[k],2);u.DDDD=Z(u.DDD,3);v($.prototype,{set:function(a){var b,c;for(c in a)b=a[c],"function"===typeof b?this[c]=b:this["_"+c]=b},_months:"January February March April May June July August September October November December".split(" "),
months:function(a){return this._months[a.month()]},_monthsShort:"Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec".split(" "),monthsShort:function(a){return this._monthsShort[a.month()]},monthsParse:function(a){var b,c;this._monthsParse||(this._monthsParse=[]);for(b=0;12>b;b++)if(this._monthsParse[b]||(c=e.utc([2E3,b]),c="^"+this.months(c,"")+"|^"+this.monthsShort(c,""),this._monthsParse[b]=RegExp(c.replace(".",""),"i")),this._monthsParse[b].test(a))return b},_weekdays:"Sunday Monday Tuesday Wednesday Thursday Friday Saturday".split(" "),
weekdays:function(a){return this._weekdays[a.day()]},_weekdaysShort:"Sun Mon Tue Wed Thu Fri Sat".split(" "),weekdaysShort:function(a){return this._weekdaysShort[a.day()]},_weekdaysMin:"Su Mo Tu We Th Fr Sa".split(" "),weekdaysMin:function(a){return this._weekdaysMin[a.day()]},weekdaysParse:function(a){var b,c;this._weekdaysParse||(this._weekdaysParse=[]);for(b=0;7>b;b++)if(this._weekdaysParse[b]||(c=e([2E3,1]).day(b),c="^"+this.weekdays(c,"")+"|^"+this.weekdaysShort(c,"")+"|^"+this.weekdaysMin(c,
""),this._weekdaysParse[b]=RegExp(c.replace(".",""),"i")),this._weekdaysParse[b].test(a))return b},_longDateFormat:{LT:"h:mm A",L:"MM/DD/YYYY",LL:"MMMM D YYYY",LLL:"MMMM D YYYY LT",LLLL:"dddd, MMMM D YYYY LT"},longDateFormat:function(a){var b=this._longDateFormat[a];!b&&this._longDateFormat[a.toUpperCase()]&&(b=this._longDateFormat[a.toUpperCase()].replace(/MMMM|MM|DD|dddd/g,function(a){return a.slice(1)}),this._longDateFormat[a]=b);return b},isPM:function(a){return"p"===(a+"").toLowerCase().charAt(0)},
_meridiemParse:/[ap]\.?m?\.?/i,meridiem:function(a,b,c){return 11<a?c?"pm":"PM":c?"am":"AM"},_calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},calendar:function(a,b){var c=this._calendar[a];return"function"===typeof c?c.apply(b):c},_relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",
y:"a year",yy:"%d years"},relativeTime:function(a,b,c,d){var f=this._relativeTime[c];return"function"===typeof f?f(a,b,c,d):f.replace(/%d/i,a)},pastFuture:function(a,b){var c=this._relativeTime[0<a?"future":"past"];return"function"===typeof c?c(b):c.replace(/%s/i,b)},ordinal:function(a){return this._ordinal.replace("%d",a)},_ordinal:"%d",preparse:function(a){return a},postformat:function(a){return a},week:function(a){return C(a,this._week.dow,this._week.doy).week},_week:{dow:0,doy:6},_invalidDate:"Invalid date",
invalidDate:function(){return this._invalidDate}});e=function(a,b,c,d){var f;"boolean"===typeof c&&(d=c,c=B);f={_isAMomentObject:!0};f._i=a;f._f=b;f._l=c;f._strict=d;f._isUTC=!1;f._pf=G();return na(f)};e.utc=function(a,b,c,d){var f;"boolean"===typeof c&&(d=c,c=B);f={_isAMomentObject:!0,_useUTC:!0,_isUTC:!0};f._l=c;f._i=a;f._f=b;f._strict=d;f._pf=G();return na(f).utc()};e.unix=function(a){return e(1E3*a)};e.duration=function(a,b){var c=a,d=null,f;if(e.isDuration(a))c={ms:a._milliseconds,d:a._days,
M:a._months};else if("number"===typeof a)c={},b?c[b]=a:c.milliseconds=a;else if(d=Wa.exec(a))f="-"===d[1]?-1:1,c={y:0,d:h(d[q])*f,h:h(d[p])*f,m:h(d[y])*f,s:h(d[D])*f,ms:h(d[E])*f};else if(d=Xa.exec(a))f="-"===d[1]?-1:1,c=function(a){a=a&&parseFloat(a.replace(",","."));return(isNaN(a)?0:a)*f},c={y:c(d[2]),M:c(d[3]),d:c(d[4]),h:c(d[5]),m:c(d[6]),s:c(d[7]),w:c(d[8])};d=new I(c);e.isDuration(a)&&a.hasOwnProperty("_lang")&&(d._lang=a._lang);return d};e.version="2.5.1";e.defaultFormat="YYYY-MM-DDTHH:mm:ssZ";
e.updateOffset=function(){};e.lang=function(a,b){if(!a)return e.fn._lang._abbr;if(b){var c=N(a);b.abbr=c;z[c]||(z[c]=new $);z[c].set(b)}else null===b?(delete z[a],a="en"):z[a]||s(a);return(e.duration.fn._lang=e.fn._lang=s(a))._abbr};e.langData=function(a){a&&a._lang&&a._lang._abbr&&(a=a._lang._abbr);return s(a)};e.isMoment=function(a){return a instanceof H||null!=a&&a.hasOwnProperty("_isAMomentObject")};e.isDuration=function(a){return a instanceof I};for(k=sa.length-1;0<=k;--k)wa(sa[k]);e.normalizeUnits=
function(a){return n(a)};e.invalid=function(a){var b=e.utc(NaN);null!=a?v(b._pf,a):b._pf.userInvalidated=!0;return b};e.parseZone=function(){return e.apply(null,arguments).parseZone()};v(e.fn=H.prototype,{clone:function(){return e(this)},valueOf:function(){return+this._d+6E4*(this._offset||0)},unix:function(){return Math.floor(+this/1E3)},toString:function(){return this.clone().lang("en").format("ddd MMM DD YYYY HH:mm:ss [GMT]ZZ")},toDate:function(){return this._offset?new Date(+this):this._d},toISOString:function(){var a=
e(this).utc();return 0<a.year()&&9999>=a.year()?P(a,"YYYY-MM-DD[T]HH:mm:ss.SSS[Z]"):P(a,"YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]")},toArray:function(){return[this.year(),this.month(),this.date(),this.hours(),this.minutes(),this.seconds(),this.milliseconds()]},isValid:function(){return ea(this)},isDSTShifted:function(){return this._a?this.isValid()&&0<ca(this._a,(this._isUTC?e.utc(this._a):e(this._a)).toArray()):!1},parsingFlags:function(){return v({},this._pf)},invalidAt:function(){return this._pf.overflow},
utc:function(){return this.zone(0)},local:function(){this.zone(0);this._isUTC=!1;return this},format:function(a){a=P(this,a||e.defaultFormat);return this.lang().postformat(a)},add:function(a,b){var c;c="string"===typeof a?e.duration(+b,a):e.duration(a,b);J(this,c,1);return this},subtract:function(a,b){var c;c="string"===typeof a?e.duration(+b,a):e.duration(a,b);J(this,c,-1);return this},diff:function(a,b,c){a=O(a,this);var d=6E4*(this.zone()-a.zone()),f;b=n(b);"year"===b||"month"===b?(f=432E5*(this.daysInMonth()+
a.daysInMonth()),d=12*(this.year()-a.year())+(this.month()-a.month()),d+=(this-e(this).startOf("month")-(a-e(a).startOf("month")))/f,d-=6E4*(this.zone()-e(this).startOf("month").zone()-(a.zone()-e(a).startOf("month").zone()))/f,"year"===b&&(d/=12)):(f=this-a,d="second"===b?f/1E3:"minute"===b?f/6E4:"hour"===b?f/36E5:"day"===b?(f-d)/864E5:"week"===b?(f-d)/6048E5:f);return c?d:w(d)},from:function(a,b){return e.duration(this.diff(a)).lang(this.lang()._abbr).humanize(!b)},fromNow:function(a){return this.from(e(),
a)},calendar:function(){var a=O(e(),this).startOf("day"),a=this.diff(a,"days",!0),a=-6>a?"sameElse":-1>a?"lastWeek":0>a?"lastDay":1>a?"sameDay":2>a?"nextDay":7>a?"nextWeek":"sameElse";return this.format(this.lang().calendar(a,this))},isLeapYear:function(){return M(this.year())},isDST:function(){return this.zone()<this.clone().month(0).zone()||this.zone()<this.clone().month(5).zone()},day:function(a){var b=this._isUTC?this._d.getUTCDay():this._d.getDay();return null!=a?(a=ma(a,this.lang()),this.add({d:a-
b})):b},month:function(a){var b=this._isUTC?"UTC":"",c;if(null!=a){if("string"===typeof a&&(a=this.lang().monthsParse(a),"number"!==typeof a))return this;c=Math.min(this.date(),L(this.year(),a));this._d["set"+b+"Month"](a,c);e.updateOffset(this,!0);return this}return this._d["get"+b+"Month"]()},startOf:function(a){a=n(a);switch(a){case "year":this.month(0);case "month":this.date(1);case "week":case "isoWeek":case "day":this.hours(0);case "hour":this.minutes(0);case "minute":this.seconds(0);case "second":this.milliseconds(0)}"week"===
a?this.weekday(0):"isoWeek"===a&&this.isoWeekday(1);return this},endOf:function(a){a=n(a);return this.startOf(a).add("isoWeek"===a?"week":a,1).subtract("ms",1)},isAfter:function(a,b){b="undefined"!==typeof b?b:"millisecond";return+this.clone().startOf(b)>+e(a).startOf(b)},isBefore:function(a,b){b="undefined"!==typeof b?b:"millisecond";return+this.clone().startOf(b)<+e(a).startOf(b)},isSame:function(a,b){b=b||"ms";return+this.clone().startOf(b)===+O(a,this).startOf(b)},min:function(a){a=e.apply(null,
arguments);return a<this?this:a},max:function(a){a=e.apply(null,arguments);return a>this?this:a},zone:function(a,b){b=null==b?!0:!1;var c=this._offset||0;if(null!=a)"string"===typeof a&&(a=ka(a)),16>Math.abs(a)&&(a*=60),this._offset=a,this._isUTC=!0,c!==a&&b&&J(this,e.duration(c-a,"m"),1,!0);else return this._isUTC?c:this._d.getTimezoneOffset();return this},zoneAbbr:function(){return this._isUTC?"UTC":""},zoneName:function(){return this._isUTC?"Coordinated Universal Time":""},parseZone:function(){this._tzm?
this.zone(this._tzm):"string"===typeof this._i&&this.zone(this._i);return this},hasAlignedHourOffset:function(a){a=a?e(a).zone():0;return 0===(this.zone()-a)%60},daysInMonth:function(){return L(this.year(),this.month())},dayOfYear:function(a){var b=A((e(this).startOf("day")-e(this).startOf("year"))/864E5)+1;return null==a?b:this.add("d",a-b)},quarter:function(){return Math.ceil((this.month()+1)/3)},weekYear:function(a){var b=C(this,this.lang()._week.dow,this.lang()._week.doy).year;return null==a?
b:this.add("y",a-b)},isoWeekYear:function(a){var b=C(this,1,4).year;return null==a?b:this.add("y",a-b)},week:function(a){var b=this.lang().week(this);return null==a?b:this.add("d",7*(a-b))},isoWeek:function(a){var b=C(this,1,4).week;return null==a?b:this.add("d",7*(a-b))},weekday:function(a){var b=(this.day()+7-this.lang()._week.dow)%7;return null==a?b:this.add("d",a-b)},isoWeekday:function(a){return null==a?this.day()||7:this.day(this.day()%7?a:a-7)},isoWeeksInYear:function(){return da(this.year(),
1,4)},weeksInYear:function(){var a=this._lang._week;return da(this.year(),a.dow,a.doy)},get:function(a){a=n(a);return this[a]()},set:function(a,b){a=n(a);if("function"===typeof this[a])this[a](b);return this},lang:function(a){if(a===B)return this._lang;this._lang=s(a);return this}});for(k=0;k<X.length;k++)oa(X[k].toLowerCase().replace(/s$/,""),X[k]);oa("year","FullYear");e.fn.days=e.fn.day;e.fn.months=e.fn.month;e.fn.weeks=e.fn.week;e.fn.isoWeeks=e.fn.isoWeek;e.fn.toJSON=e.fn.toISOString;v(e.duration.fn=
I.prototype,{_bubble:function(){var a=this._milliseconds,b=this._days,c=this._months,d=this._data;d.milliseconds=a%1E3;a=w(a/1E3);d.seconds=a%60;a=w(a/60);d.minutes=a%60;a=w(a/60);d.hours=a%24;b+=w(a/24);d.days=b%30;c+=w(b/30);d.months=c%12;b=w(c/12);d.years=b},weeks:function(){return w(this.days()/7)},valueOf:function(){return this._milliseconds+864E5*this._days+this._months%12*2592E6+31536E6*h(this._months/12)},humanize:function(a){var b=+this,c;c=!a;var d=this.lang(),f=A(Math.abs(b)/1E3),e=A(f/
60),h=A(e/60),k=A(h/24),l=A(k/365),f=45>f&&["s",f]||1===e&&["m"]||45>e&&["mm",e]||1===h&&["h"]||22>h&&["hh",h]||1===k&&["d"]||25>=k&&["dd",k]||45>=k&&["M"]||345>k&&["MM",A(k/30)]||1===l&&["y"]||["yy",l];f[2]=c;f[3]=0<b;f[4]=d;c=Ra.apply({},f);a&&(c=this.lang().pastFuture(b,c));return this.lang().postformat(c)},add:function(a,b){var c=e.duration(a,b);this._milliseconds+=c._milliseconds;this._days+=c._days;this._months+=c._months;this._bubble();return this},subtract:function(a,b){var c=e.duration(a,
b);this._milliseconds-=c._milliseconds;this._days-=c._days;this._months-=c._months;this._bubble();return this},get:function(a){a=n(a);return this[a.toLowerCase()+"s"]()},as:function(a){a=n(a);return this["as"+a.charAt(0).toUpperCase()+a.slice(1)+"s"]()},lang:e.fn.lang,toIsoString:function(){var a=Math.abs(this.years()),b=Math.abs(this.months()),c=Math.abs(this.days()),d=Math.abs(this.hours()),e=Math.abs(this.minutes()),g=Math.abs(this.seconds()+this.milliseconds()/1E3);return this.asSeconds()?(0>
this.asSeconds()?"-":"")+"P"+(a?a+"Y":"")+(b?b+"M":"")+(c?c+"D":"")+(d||e||g?"T":"")+(d?d+"H":"")+(e?e+"M":"")+(g?g+"S":""):"P0D"}});for(k in Y)Y.hasOwnProperty(k)&&(pa(k,Y[k]),Va(k.toLowerCase()));pa("Weeks",6048E5);e.duration.fn.asMonths=function(){return(+this-31536E6*this.years())/2592E6+12*this.years()};e.lang("en",{ordinal:function(a){var b=a%10,b=1===h(a%100/10)?"th":1===b?"st":2===b?"nd":3===b?"rd":"th";return a+b}});return e}).call(this);
UI.datepicker.moment = moment;
return UI.datepicker;
});

3
assets/js/uikit/js/addons/datepicker.min.js vendored Executable file

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,62 @@
/*! UIkit 2.10.0 | http://www.getuikit.com | (c) 2014 YOOtheme | MIT License */
(function(addon) {
var component;
if (jQuery && jQuery.UIkit) {
component = addon(jQuery, jQuery.UIkit);
}
if (typeof define == "function" && define.amd) {
define("uikit-form-password", ["uikit"], function(){
return component || addon(jQuery, jQuery.UIkit);
});
}
})(function($, UI){
UI.component('formPassword', {
defaults: {
"lblShow": "Show",
"lblHide": "Hide"
},
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);
}
});
// init code
UI.$doc.on("click.formpassword.uikit", "[data-uk-form-password]", function(e) {
var ele = $(this);
if (!ele.data("formPassword")) {
e.preventDefault();
var obj = UI.formPassword(ele, UI.Utils.options(ele.attr("data-uk-form-password")));
ele.trigger("click");
}
});
return UI.formPassword;
});

View File

@@ -0,0 +1,3 @@
/*! UIkit 2.10.0 | http://www.getuikit.com | (c) 2014 YOOtheme | MIT License */
!function(a){var b;jQuery&&jQuery.UIkit&&(b=a(jQuery,jQuery.UIkit)),"function"==typeof define&&define.amd&&define("uikit-form-password",["uikit"],function(){return b||a(jQuery,jQuery.UIkit)})}(function(a,b){return b.component("formPassword",{defaults:{lblShow:"Show",lblHide:"Hide"},init:function(){var a=this;this.on("click",function(b){if(b.preventDefault(),a.input.length){var c=a.input.attr("type");a.input.attr("type","text"==c?"password":"text"),a.element.text(a.options["text"==c?"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)}}),b.$doc.on("click.formpassword.uikit","[data-uk-form-password]",function(c){var d=a(this);if(!d.data("formPassword")){c.preventDefault();{b.formPassword(d,b.Utils.options(d.attr("data-uk-form-password")))}d.trigger("click")}}),b.formPassword});

View File

@@ -0,0 +1,62 @@
/*! UIkit 2.10.0 | http://www.getuikit.com | (c) 2014 YOOtheme | MIT License */
(function(addon) {
var component;
if (jQuery && jQuery.UIkit) {
component = addon(jQuery, jQuery.UIkit);
}
if (typeof define == "function" && define.amd) {
define("uikit-form-select", ["uikit"], function(){
return component || addon(jQuery, jQuery.UIkit);
});
}
})(function($, UI){
UI.component('formSelect', {
defaults: {
'target': '>span:first'
},
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) {}
return fn;
};
return fn();
})());
this.element.data("formSelect", this);
}
});
// init code
UI.ready(function(context) {
$("[data-uk-form-select]", context).each(function(){
var ele = $(this);
if (!ele.data("formSelect")) {
var obj = UI.formSelect(ele, UI.Utils.options(ele.attr("data-uk-form-select")));
}
});
});
return UI.formSelect;
});

View File

@@ -0,0 +1,3 @@
/*! UIkit 2.10.0 | http://www.getuikit.com | (c) 2014 YOOtheme | MIT License */
!function(a){var b;jQuery&&jQuery.UIkit&&(b=a(jQuery,jQuery.UIkit)),"function"==typeof define&&define.amd&&define("uikit-form-select",["uikit"],function(){return b||a(jQuery,jQuery.UIkit)})}(function(a,b){return b.component("formSelect",{defaults:{target:">span:first"},init:function(){var a=this;this.target=this.find(this.options.target),this.select=this.find("select"),this.select.on("change",function(){var b=a.select[0],c=function(){try{a.target.text(b.options[b.selectedIndex].text)}catch(d){}return c};return c()}()),this.element.data("formSelect",this)}}),b.ready(function(c){a("[data-uk-form-select]",c).each(function(){var c=a(this);if(!c.data("formSelect")){b.formSelect(c,b.Utils.options(c.attr("data-uk-form-select")))}})}),b.formSelect});

View File

@@ -0,0 +1,615 @@
/*! UIkit 2.10.0 | http://www.getuikit.com | (c) 2014 YOOtheme | MIT License */
(function(addon) {
var component;
if (jQuery && jQuery.UIkit) {
component = addon(jQuery, jQuery.UIkit);
}
if (typeof define == "function" && define.amd) {
define("uikit-htmleditor", ["uikit"], function(){
return component || addon(jQuery, jQuery.UIkit);
});
}
})(function($, UI) {
var editors = [];
UI.component('htmleditor', {
defaults: {
iframe : false,
mode : 'split',
markdown : false,
autocomplete : true,
height : 500,
maxsplitsize : 1000,
markedOptions: { gfm: true, tables: true, breaks: true, pedantic: true, sanitize: false, smartLists: true, smartypants: false, langPrefix: 'lang-'},
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'
},
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 = $(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.code.find('.CodeMirror').css('height', this.options.height);
// iframe mode?
if (this.options.iframe) {
this.iframe = $('<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 = $(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', 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 = $(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.' + $(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', function() {
$this.redraw();
});
this.element.attr('data-uk-check-display', 1).on('uk-check-display', 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) {
$.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 == false) {
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 (!$.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.marked || marked;
if (!parser) return;
parser.setOptions(editor.options.markedOptions);
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';
}
}
});
$.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);
}
});
}
}
});
// init code
$(function() {
$('textarea[data-uk-htmleditor]').each(function() {
var editor = $(this), obj;
if (!editor.data('htmleditor')) {
obj = UI.htmleditor(editor, UI.Utils.options(editor.attr('data-uk-htmleditor')));
}
});
});
return UI.htmleditor;
});

3
assets/js/uikit/js/addons/htmleditor.min.js vendored Executable file

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,575 @@
/*! UIkit 2.10.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 (jQuery && jQuery.UIkit) {
component = addon(jQuery, jQuery.UIkit);
}
if (typeof define == "function" && define.amd) {
define("uikit-nestable", ["uikit"], function(){
return component || addon(jQuery, jQuery.UIkit);
});
}
})(function($, UI) {
var hasTouch = 'ontouchstart' in window,
html = $("html"),
touchedlists = [],
$win = UI.$win;
/**
* Detect CSS pointer-events property
* events are normally disabled on the dragging element to avoid conflicts
* https://github.com/ausi/Feature-detection-technique-for-pointer-events/blob/master/modernizr-pointerevents.js
*/
var hasPointerEvents = (function() {
var el = document.createElement('div'), docEl = document.documentElement;
if (!('pointerEvents' in el.style)) {
return false;
}
el.style.pointerEvents = 'auto';
el.style.pointerEvents = 'x';
docEl.appendChild(el);
var supports = window.getComputedStyle && window.getComputedStyle(el, '').pointerEvents === 'auto';
docEl.removeChild(el);
return !!supports;
})();
var eStart = hasTouch ? 'touchstart' : 'mousedown',
eMove = hasTouch ? 'touchmove' : 'mousemove',
eEnd = hasTouch ? 'touchend' : 'mouseup',
eCancel = hasTouch ? 'touchcancel' : 'mouseup';
UI.component('nestable', {
defaults: {
prefix : 'uk',
listNodeName : 'ul',
itemNodeName : 'li',
listBaseClass : '{prefix}-nestable',
listClass : '{prefix}-nestable-list',
listitemClass : '{prefix}-nestable-list-item',
itemClass : '{prefix}-nestable-item',
dragClass : '{prefix}-nestable-list-dragged',
movingClass : '{prefix}-nestable-moving',
handleClass : '{prefix}-nestable-handle',
collapsedClass : '{prefix}-collapsed',
placeClass : '{prefix}-nestable-placeholder',
noDragClass : '{prefix}-nestable-nodrag',
emptyClass : '{prefix}-nestable-empty',
group : 0,
maxDepth : 10,
threshold : 20
},
init: function()
{
var $this = this;
Object.keys(this.options).forEach(function(key){
if(String($this.options[key]).indexOf('{prefix}')!=-1) {
$this.options[key] = $this.options[key].replace('{prefix}', $this.options.prefix);
}
});
this.tplempty = '<div class="' + this.options.emptyClass + '"/>';
this.find(">"+this.options.itemNodeName).addClass(this.options.listitemClass)
.end()
.find("ul:not(.ignore-list)").addClass(this.options.listClass)
.find(">li").addClass(this.options.listitemClass);
if (!this.element.children(this.options.itemNodeName).length) {
this.element.append(this.tplempty);
}
this.element.data("nestable-id", "ID"+(new Date().getTime())+"RAND"+(Math.ceil(Math.random() *100000)));
this.reset();
this.element.data('nestable-group', this.options.group);
this.placeEl = $('<div class="' + this.options.placeClass + '"/>');
this.find(this.options.itemNodeName).each(function() {
$this.setParent($(this));
});
this.on('click', '[data-nestable-action]', function(e) {
if ($this.dragEl || (!hasTouch && e.button !== 0)) {
return;
}
e.preventDefault();
var target = $(e.currentTarget),
action = target.data('nestableAction'),
item = target.closest($this.options.itemNodeName);
if (action === 'collapse') {
$this.collapseItem(item);
}
if (action === 'expand') {
$this.expandItem(item);
}
if (action === 'toggle') {
$this.toggleItem(item);
}
});
var onStartEvent = function(e) {
var handle = $(e.target);
if (!handle.hasClass($this.options.handleClass)) {
if (handle.closest('.' + $this.options.noDragClass).length) {
return;
}
handle = handle.closest('.' + $this.options.handleClass);
}
if (!handle.length || $this.dragEl || (!hasTouch && e.button !== 0) || (hasTouch && e.touches.length !== 1)) {
return;
}
e.preventDefault();
$this.dragStart(hasTouch ? e.touches[0] : e);
$this.trigger('nestable-start', [$this]);
};
var onMoveEvent = function(e) {
if ($this.dragEl) {
e.preventDefault();
$this.dragMove(hasTouch ? e.touches[0] : e);
$this.trigger('nestable-move', [$this]);
}
};
var onEndEvent = function(e) {
if ($this.dragEl) {
e.preventDefault();
$this.dragStop(hasTouch ? e.touches[0] : e);
$this.trigger('nestable-stop', [$this]);
}
};
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.itemNodeName);
items.each(function() {
var li = $(this),
item = $.extend({}, li.data()),
sub = li.children(list.options.listNodeName);
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,
options = $.extend({}, list.options, options),
step = function(level, depth, parent) {
var items = level.children(options.itemNodeName);
items.each(function(index) {
var li = $(this),
item = $.extend({parent_id: (parent ? parent : null), depth: depth, order: index}, li.data()),
sub = li.children(options.listNodeName);
data.push(item);
if (sub.length) {
step(sub, depth + 1, li.data(options.idProperty || 'id'));
}
});
};
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++) {
if (!touchedlists[i].children().length) {
touchedlists[i].append(this.tplempty);
}
}
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.listNodeName);
if (lists.length) {
li.addClass(this.options.collapsedClass);
}
},
expandAll: function() {
var list = this;
this.find(list.options.itemNodeName).each(function() {
list.expandItem($(this));
});
},
collapseAll: function() {
var list = this;
this.find(list.options.itemNodeName).each(function() {
list.collapseItem($(this));
});
},
setParent: function(li) {
if (li.children(this.options.listNodeName).length) {
li.addClass("uk-parent");
}
},
unsetParent: function(li) {
li.removeClass('uk-parent '+this.options.collapsedClass);
li.children(this.options.listNodeName).remove();
},
dragStart: function(e) {
var mouse = this.mouse,
target = $(e.target),
dragItem = target.closest(this.options.itemNodeName),
offset = dragItem.offset();
this.placeEl.css('height', dragItem.height());
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 = $(document.createElement(this.options.listNodeName)).addClass(this.options.listClass + ' ' + this.options.dragClass);
this.dragEl.css('width', dragItem.width());
this.tmpDragOnSiblings = [dragItem[0].previousSibling, dragItem[0].nextSibling];
// fix for zepto.js
//dragItem.after(this.placeEl).detach().appendTo(this.dragEl);
dragItem.after(this.placeEl);
dragItem[0].parentNode.removeChild(dragItem[0]);
dragItem.appendTo(this.dragEl);
$(document.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.itemNodeName);
for (i = 0; i < items.length; i++) {
depth = $(items[i]).parents(this.options.listNodeName).length;
if (depth > this.dragDepth) {
this.dragDepth = depth;
}
}
html.addClass(this.options.movingClass);
},
dragStop: function(e) {
// fix for zepto.js
//this.placeEl.replaceWith(this.dragEl.children(this.options.itemNodeName + ':first').detach());
var el = this.dragEl.children(this.options.itemNodeName).first();
el[0].parentNode.removeChild(el[0]);
this.placeEl.replaceWith(el);
this.dragEl.remove();
if (this.tmpDragOnSiblings[0]!=el[0].previousSibling || this.tmpDragOnSiblings[0]!=el[0].previousSibling) {
this.element.trigger('nestable-change',[el, this.hasNewRoot ? "added":"moved"]);
if (this.hasNewRoot) {
this.dragRootEl.trigger('nestable-change', [el, "removed"]);
}
}
this.reset();
html.removeClass(this.options.movingClass);
},
dragMove: function(e) {
var list, parent, prev, next, depth,
opt = this.options,
mouse = this.mouse;
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(opt.itemNodeName);
// 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.listNodeName).last();
// check if depth limit has reached
depth = this.placeEl.parents(opt.listNodeName).length;
if (depth + this.dragDepth <= opt.maxDepth) {
// create new sub-level if one doesn't exist
if (!list.length) {
list = $('<' + opt.listNodeName + '/>').addClass(opt.listClass);
list.append(this.placeEl);
prev.append(list);
this.setParent(prev);
} else {
// else append to next level up
list = prev.children(opt.listNodeName).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(opt.itemNodeName);
if (!next.length) {
parent = this.placeEl.parent();
this.placeEl.closest(opt.itemNodeName).after(this.placeEl);
if (!parent.children().length) {
this.unsetParent(parent.parent());
}
}
}
}
var isEmpty = false;
// find list item under cursor
if (!hasPointerEvents) {
this.dragEl[0].style.visibility = 'hidden';
}
this.pointEl = $(document.elementFromPoint(e.pageX - document.body.scrollLeft, e.pageY - (window.pageYOffset || document.documentElement.scrollTop)));
if (!hasPointerEvents) {
this.dragEl[0].style.visibility = 'visible';
}
if (this.pointEl.hasClass(opt.handleClass)) {
this.pointEl = this.pointEl.closest(opt.itemNodeName);
} else {
var nestableitem = this.pointEl.closest('.'+opt.itemClass);
if(nestableitem.length) {
this.pointEl = nestableitem.closest(opt.itemNodeName);
}
}
if (this.pointEl.hasClass(opt.emptyClass)) {
isEmpty = true;
} else if (this.pointEl.data('nestable') && !this.pointEl.children().length) {
isEmpty = true;
this.pointEl = $(this.tplempty).appendTo(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],
$newRoot = tmpRoot;
/**
* move vertical
*/
if (!mouse.dirAx || isNewRoot || isEmpty) {
// check if groups match if dragging over new root
if (isNewRoot && opt.group !== $newRoot.data('nestable-group')) {
return;
} else {
touchedlists.push(pointElRoot);
}
// check depth limit
depth = this.dragDepth - 1 + this.pointEl.parents(opt.listNodeName).length;
if (depth > opt.maxDepth) {
return;
}
var before = e.pageY < (this.pointEl.offset().top + this.pointEl.height() / 2);
parent = this.placeEl.parent();
// if empty create new list to replace empty placeholder
if (isEmpty) {
this.pointEl.replaceWith(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());
}
if (!this.dragRootEl.find(opt.itemNodeName).length && !this.dragRootEl.children().length) {
this.dragRootEl.append(this.tplempty);
}
// parent root list has changed
if (isNewRoot) {
this.dragRootEl = tmpRoot;
this.hasNewRoot = this.element[0] !== this.dragRootEl[0];
}
}
}
});
// init code
UI.ready(function(context) {
$("[data-uk-nestable]", context).each(function(){
var ele = $(this);
if(!ele.data("nestable")) {
var plugin = UI.nestable(ele, UI.Utils.options(ele.attr("data-uk-nestable")));
}
});
});
return UI.nestable;
});

3
assets/js/uikit/js/addons/nestable.min.js vendored Executable file

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,180 @@
/*! UIkit 2.10.0 | http://www.getuikit.com | (c) 2014 YOOtheme | MIT License */
(function(addon) {
var component;
if (jQuery && jQuery.UIkit) {
component = addon(jQuery, jQuery.UIkit);
}
if (typeof define == "function" && define.amd) {
define("uikit-notify", ["uikit"], function(){
return component || addon(jQuery, jQuery.UIkit);
});
}
})(function($, UI){
var containers = {},
messages = {},
notify = function(options){
if ($.type(options) == 'string') {
options = { message: options };
}
if (arguments[1]) {
options = $.extend(options, $.type(arguments[1]) == 'string' ? {status:arguments[1]} : arguments[1]);
}
return (new Message(options)).show();
},
closeAll = function(group, instantly){
if(group) {
for(var id in messages) { if(group===messages[id].group) messages[id].close(instantly); }
} else {
for(var id in messages) { messages[id].close(instantly); }
}
};
var Message = function(options){
var $this = this;
this.options = $.extend({}, Message.defaults, options);
this.uuid = "ID"+(new Date().getTime())+"RAND"+(Math.ceil(Math.random() * 100000));
this.element = $([
'<div class="uk-notify-message">',
'<a class="uk-close"></a>',
'<div>'+this.options.message+'</div>',
'</div>'
].join('')).data("notifyMessage", this);
// 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] = $('<div class="uk-notify uk-notify-'+this.options.pos+'"></div>').appendTo('body').on("click", ".uk-notify-message", function(){
$(this).data("notifyMessage").close();
});
}
};
$.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, []);
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;
});

3
assets/js/uikit/js/addons/notify.min.js vendored Executable file
View File

@@ -0,0 +1,3 @@
/*! UIkit 2.10.0 | http://www.getuikit.com | (c) 2014 YOOtheme | MIT License */
!function(a){var b;jQuery&&jQuery.UIkit&&(b=a(jQuery,jQuery.UIkit)),"function"==typeof define&&define.amd&&define("uikit-notify",["uikit"],function(){return b||a(jQuery,jQuery.UIkit)})}(function(a,b){var c={},d={},e=function(b){return"string"==a.type(b)&&(b={message:b}),arguments[1]&&(b=a.extend(b,"string"==a.type(arguments[1])?{status:arguments[1]}:arguments[1])),new g(b).show()},f=function(a,b){if(a)for(var c in d)a===d[c].group&&d[c].close(b);else for(var c in d)d[c].close(b)},g=function(b){this.options=a.extend({},g.defaults,b),this.uuid="ID"+(new Date).getTime()+"RAND"+Math.ceil(1e5*Math.random()),this.element=a(['<div class="uk-notify-message">','<a class="uk-close"></a>',"<div>"+this.options.message+"</div>","</div>"].join("")).data("notifyMessage",this),this.options.status&&(this.element.addClass("uk-notify-message-"+this.options.status),this.currentstatus=this.options.status),this.group=this.options.group,d[this.uuid]=this,c[this.options.pos]||(c[this.options.pos]=a('<div class="uk-notify uk-notify-'+this.options.pos+'"></div>').appendTo("body").on("click",".uk-notify-message",function(){a(this).data("notifyMessage").close()}))};return a.extend(g.prototype,{uuid:!1,element:!1,timout:!1,currentstatus:"",group:!1,show:function(){if(!this.element.is(":visible")){var a=this;c[this.options.pos].show().prepend(this.element);var b=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":b},function(){if(a.options.timeout){var b=function(){a.close()};a.timeout=setTimeout(b,a.options.timeout),a.element.hover(function(){clearTimeout(a.timeout)},function(){a.timeout=setTimeout(b,a.options.timeout)})}}),this}},close:function(a){var b=this,e=function(){b.element.remove(),c[b.options.pos].children().length||c[b.options.pos].hide(),b.options.onClose.apply(b,[]),delete d[b.uuid]};this.timeout&&clearTimeout(this.timeout),a?e():this.element.animate({opacity:0,"margin-top":-1*this.element.outerHeight(),"margin-bottom":0},function(){e()})},content:function(a){var b=this.element.find(">div");return a?(b.html(a),this):b.html()},status:function(a){return a?(this.element.removeClass("uk-notify-message-"+this.currentstatus).addClass("uk-notify-message-"+a),this.currentstatus=a,this):this.currentstatus}}),g.defaults={message:"",status:"",timeout:5e3,group:null,pos:"top-center",onClose:function(){}},b.notify=e,b.notify.message=g,b.notify.closeAll=f,e});

View File

@@ -0,0 +1,146 @@
/*! UIkit 2.10.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 (jQuery && jQuery.UIkit) {
component = addon(jQuery, jQuery.UIkit);
}
if (typeof define == "function" && define.amd) {
define("uikit-pagination", ["uikit"], function(){
return component || addon(jQuery, jQuery.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() {}
},
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($(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('uk-select-page', [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 = $.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);
}
});
// init code
UI.ready(function(context) {
$("[data-uk-pagination]", context).each(function(){
var ele = $(this);
if (!ele.data("pagination")) {
var obj = UI.pagination(ele, UI.Utils.options(ele.attr("data-uk-pagination")));
}
});
});
return UI.pagination;
});

3
assets/js/uikit/js/addons/pagination.min.js vendored Executable file
View File

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

View File

@@ -0,0 +1,90 @@
/*! UIkit 2.10.0 | http://www.getuikit.com | (c) 2014 YOOtheme | MIT License */
(function(addon) {
var component;
if (jQuery && jQuery.UIkit) {
component = addon(jQuery, jQuery.UIkit);
}
if (typeof define == "function" && define.amd) {
define("uikit-search", ["uikit"], function(){
return component || addon(jQuery, jQuery.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();
}
},
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('autocomplete-select', 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);
}
});
// init code
UI.$doc.on("focus.search.uikit", "[data-uk-search]", function(e) {
var ele = $(this);
if (!ele.data("search")) {
var obj = UI.search(ele, UI.Utils.options(ele.attr("data-uk-search")));
}
});
});

3
assets/js/uikit/js/addons/search.min.js vendored Executable file
View File

@@ -0,0 +1,3 @@
/*! UIkit 2.10.0 | http://www.getuikit.com | (c) 2014 YOOtheme | MIT License */
!function(a){var b;jQuery&&jQuery.UIkit&&(b=a(jQuery,jQuery.UIkit)),"function"==typeof define&&define.amd&&define("uikit-search",["uikit"],function(){return b||a(jQuery,jQuery.UIkit)})}(function(a,b){"use strict";b.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(a){var b=this.options;this.dropdown.append(this.template({items:a.results||[],msgResultsHeader:b.msgResultsHeader,msgMoreResults:b.msgMoreResults,msgNoResults:b.msgNoResults})),this.show()}},init:function(){var a=this;this.autocomplete=b.autocomplete(this.element,this.options),this.autocomplete.dropdown.addClass("uk-dropdown-search"),this.autocomplete.input.on("keyup",function(){a.element[a.autocomplete.input.val()?"addClass":"removeClass"]("uk-active")}).closest("form").on("reset",function(){a.value="",a.element.removeClass("uk-active")}),this.on("autocomplete-select",function(a,b){b.url?location.href=b.url:b.moreresults&&this.autocomplete.input.closest("form").submit()}),this.element.data("search",this)}}),b.$doc.on("focus.search.uikit","[data-uk-search]",function(){var c=a(this);if(!c.data("search")){b.search(c,b.Utils.options(c.attr("data-uk-search")))}})});

View File

@@ -0,0 +1,520 @@
/*! UIkit 2.10.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 (jQuery && jQuery.UIkit) {
component = addon(jQuery, jQuery.UIkit);
}
if (typeof define == "function" && define.amd) {
define("uikit-sortable", ["uikit"], function(){
return component || addon(jQuery, jQuery.UIkit);
});
}
})(function($, UI){
"use strict";
var supportsTouch = ('ontouchstart' in window) || (window.DocumentTouch && document instanceof DocumentTouch),
supportsDragAndDrop = !supportsTouch && (function() {
var div = document.createElement('div');
return ('draggable' in div) || ('ondragstart' in div && 'ondrop' in div);
})(),
draggingPlaceholder, moving, dragging, clickedlink, delayIdle;
// disable native dragndrop support for now
supportsDragAndDrop = false;
UI.component('sortable', {
defaults: {
warp : false,
animation : 150,
threshold : 10,
childClass : 'uk-sortable-item',
placeholderClass : 'uk-sortable-placeholder',
overClass : 'uk-sortable-over',
draggingClass : 'uk-sortable-dragged',
dragMovingClass : 'uk-sortable-moving',
dragCustomClass : '',
handleClass : false,
stop : function() {},
start : function() {},
change : function() {}
},
init: function() {
var $this = this,
element = this.element[0],
currentlyDraggingElement = null,
currentlyDraggingTarget = null,
children;
if (supportsDragAndDrop) {
this.element.children().attr("draggable", "true");
} else {
// prevent leaving page after link clicking
// prevent leaving page after link clicking
this.element.on('mousedown touchstart', 'a[href]', function(e) {
// don't break browser shortcuts for click+open in new tab
if(!e.ctrlKey && !e.metaKey && !e.shiftKey) {
clickedlink = $(this);
}
}).on('click', 'a[href]', function(e) {
if(!e.ctrlKey && !e.metaKey && !e.shiftKey) {
clickedlink = $(this);
e.stopImmediatePropagation();
return false;
}
});
}
var handleDragStart = delegate(function(e) {
moving = false;
dragging = false;
var target = $(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, element);
if (!handle.length) {
//e.preventDefault();
return;
}
}
if (e.dataTransfer) {
e.dataTransfer.effectAllowed = 'move';
e.dataTransfer.dropEffect = 'move';
e.dataTransfer.setData('Text', "*"); // Need to set to something or else drag doesn't start
}
currentlyDraggingElement = this;
// init drag placeholder
if (draggingPlaceholder) draggingPlaceholder.remove();
var $current = $(currentlyDraggingElement), offset = $current.offset();
delayIdle = {
pos : { x:e.pageX, y:e.pageY },
threshold : $this.options.threshold,
'apply' : function() {
draggingPlaceholder = $('<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(e.pageX, 10),
'top' : offset.top - parseInt(e.pageY, 10)
}).append($current.html()).appendTo('body');
draggingPlaceholder.$current = $current;
draggingPlaceholder.$sortable = $this;
addFakeDragHandlers();
$this.options.start(this, currentlyDraggingElement);
$this.trigger('sortable-start', [$this, currentlyDraggingElement]);
delayIdle = false;
}
}
if (!supportsDragAndDrop) {
e.preventDefault();
}
});
var handleDragOver = delegate(function(e) {
if (!currentlyDraggingElement) {
return true;
}
if (e.preventDefault) {
e.preventDefault();
}
return false;
});
var handleDragEnter = delegate($.UIkit.Utils.debounce(function(e) {
if (!currentlyDraggingElement || currentlyDraggingElement === this) {
return true;
}
// Prevent dragenter on a child from allowing a dragleave on the container
var previousCounter = $this.dragenterData(this);
$this.dragenterData(this, previousCounter + 1);
if (previousCounter === 0) {
$(this).addClass($this.options.overClass);
if (!$this.options.warp) {
$this.moveElementNextTo(currentlyDraggingElement, this);
}
}
return false;
}), 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)) {
$(this).removeClass($this.options.overClass);
$this.dragenterData(this, false);
}
});
var handleDrop = delegate(function(e) {
if (e.type === 'drop') {
if (e.stopPropagation) {
e.stopPropagation();
}
if (e.preventDefault) {
e.preventDefault();
}
}
if (!dragging) {
return;
}
if ($this.options.warp) {
var thisSibling = currentlyDraggingElement.nextSibling;
this.parentNode.insertBefore(currentlyDraggingElement, this);
this.parentNode.insertBefore(this, thisSibling);
}
$this.options.change(this, currentlyDraggingElement);
$this.trigger('sortable-change', [$this, currentlyDraggingElement]);
});
var handleDragEnd = function(e) {
currentlyDraggingElement = null;
currentlyDraggingTarget = null;
$this.element.children().each(function() {
if (this.nodeType === 1) {
$(this).removeClass($this.options.overClass).removeClass($this.options.placeholderClass).removeClass($this.options.childClass);
$this.dragenterData(this, false);
}
});
$('html').removeClass($this.options.dragMovingClass);
removeFakeDragHandlers();
$this.options.stop(this);
$this.trigger('sortable-stop', [$this]);
draggingPlaceholder.remove();
draggingPlaceholder = null;
};
var handleTouchMove = delegate(function(e) {
if (!currentlyDraggingElement ||
currentlyDraggingElement === this ||
currentlyDraggingTarget === this) {
return true;
}
children.removeClass($this.options.overClass);
currentlyDraggingTarget = this;
if (!$this.options.warp) {
$this.moveElementNextTo(currentlyDraggingElement, this);
} else {
$(this).addClass($this.options.overClass);
}
return prevent(e);
});
function delegate(fn) {
return function(e) {
var 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 ($(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.
var context = moveUpToChildNode(element, target);
if (context) {
fn.apply(context, [e]);
}
}
};
}
// Opera and mobile devices do not support drag and drop. http://caniuse.com/dragndrop
// Bind/unbind standard mouse/touch events as a polyfill.
function addFakeDragHandlers() {
if (!supportsDragAndDrop) {
if (supportsTouch) {
element.addEventListener("touchmove", handleTouchMove, false);
} else {
element.addEventListener('mouseover', handleDragEnter, false);
element.addEventListener('mouseout', handleDragLeave, false);
}
element.addEventListener(supportsTouch ? 'touchend' : 'mouseup', handleDrop, false);
document.addEventListener(supportsTouch ? 'touchend' : 'mouseup', handleDragEnd, false);
document.addEventListener("selectstart", prevent, false);
}
}
function removeFakeDragHandlers() {
if (!supportsDragAndDrop) {
if (supportsTouch) {
element.removeEventListener("touchmove", handleTouchMove, false);
} else {
element.removeEventListener('mouseover', handleDragEnter, false);
element.removeEventListener('mouseout', handleDragLeave, false);
}
element.removeEventListener(supportsTouch ? 'touchend' : 'mouseup', handleDrop, false);
document.removeEventListener(supportsTouch ? 'touchend' : 'mouseup', handleDragEnd, false);
document.removeEventListener("selectstart", prevent, false);
}
}
if (supportsDragAndDrop) {
element.addEventListener('dragstart', handleDragStart, false);
element.addEventListener('dragenter', handleDragEnter, false);
element.addEventListener('dragleave', handleDragLeave, false);
element.addEventListener('drop', handleDrop, false);
element.addEventListener('dragover', handleDragOver, false);
element.addEventListener('dragend', handleDragEnd, false);
} else {
element.addEventListener(supportsTouch ? 'touchstart':'mousedown', handleDragStart, false);
}
},
dragenterData: function(element, val) {
element = $(element);
if (arguments.length == 1) {
return parseInt(element.attr('data-child-dragenter'), 10) || 0;
} else if (!val) {
element.removeAttr('data-child-dragenter');
} else {
element.attr('data-child-dragenter', Math.max(0, val));
}
},
moveElementNextTo: function(element, elementToMoveNextTo) {
dragging = true;
var $this = this,
list = $(element).parent().css('min-height', ''),
next = isBelow(element, elementToMoveNextTo) ? elementToMoveNextTo : elementToMoveNextTo.nextSibling,
children = list.children(),
count = children.length;
if($this.options.warp || !$this.options.animation) {
elementToMoveNextTo.parentNode.insertBefore(element, next);
UI.Utils.checkDisplay($this.element);
return;
}
list.css('min-height', list.height());
children.stop().each(function(){
var ele = $(this),
offset = ele.position();
offset.width = ele.width();
ele.data('offset-before', offset);
});
elementToMoveNextTo.parentNode.insertBefore(element, next);
children = list.children().each(function() {
var ele = $(this);
ele.data('offset-after', ele.position());
}).each(function() {
var ele = $(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 = $(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).attr('data-child-dragenter', '');
count--
if (!count) {
list.css('min-height', '');
UI.Utils.checkDisplay(ele);
}
});
}, 0);
});
}
});
// 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;
}
// auto init
UI.ready(function(context) {
$("[data-uk-sortable]", context).each(function(){
var ele = $(this);
if(!ele.data("sortable")) {
var plugin = UI.sortable(ele, UI.Utils.options(ele.attr("data-uk-sortable")));
}
});
});
UI.$doc.on('mousemove touchmove', function(e) {
if (delayIdle) {
if (Math.abs(e.pageX - delayIdle.pos.x) > delayIdle.threshold || Math.abs(e.pageY - delayIdle.pos.y) > delayIdle.threshold) {
delayIdle.apply();
}
}
if (draggingPlaceholder) {
if (!moving) {
moving = true;
draggingPlaceholder.show();
draggingPlaceholder.$current.addClass(draggingPlaceholder.$sortable.options.placeholderClass);
draggingPlaceholder.$sortable.element.children().addClass(draggingPlaceholder.$sortable.options.childClass);
$('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 });
}
});
UI.$doc.on('mouseup touchend', function() {
if(!moving && clickedlink) {
location.href = clickedlink.attr('href');
}
delayIdle = clickedlink = false;
});
return UI.sortable;
});

3
assets/js/uikit/js/addons/sortable.min.js vendored Executable file

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,240 @@
/*! UIkit 2.10.0 | http://www.getuikit.com | (c) 2014 YOOtheme | MIT License */
(function(addon) {
var component;
if (jQuery && jQuery.UIkit) {
component = addon(jQuery, jQuery.UIkit);
}
if (typeof define == "function" && define.amd) {
define("uikit-sticky", ["uikit"], function(){
return component || addon(jQuery, jQuery.UIkit);
});
}
})(function($, UI){
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 : '',
media : false,
target : false
},
init: function() {
var wrapper = $('<div class="uk-sticky-placeholder"></div>').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")
});
wrapper = this.element.css('margin', 0).wrap(wrapper).parent();
this.sticky = {
options : this.options,
element : this.element,
currentTop : null,
wrapper : wrapper,
init : false,
getWidthFrom : this.options.getWidthFrom || wrapper,
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.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 - $win.height(),
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() {
scroller();
}
});
function scroller() {
if (!sticked.length) return;
var scrollTop = $win.scrollTop(),
documentHeight = $doc.height(),
dwh = documentHeight - $win.height(),
extra = (scrollTop > dwh) ? dwh - scrollTop : 0,
cls, newTop;
if(scrollTop < 0) return;
for (var i = 0; i < sticked.length; i++) {
if (!sticked[i].element.is(":visible") || sticked[i].animate) {
continue;
}
var sticky = sticked[i];
if (!sticky.check()) {
if (sticky.currentTop !== null) {
sticky.reset();
}
} else {
if (sticky.options.top < 0) {
newTop = 0;
} else {
newTop = documentHeight - sticky.element.outerHeight() - sticky.options.top - sticky.options.bottom - scrollTop - extra;
newTop = newTop < 0 ? newTop + sticky.options.top : sticky.options.top;
}
if (sticky.currentTop != newTop) {
sticky.element.css({
"position" : "fixed",
"top" : newTop,
"width" : (typeof sticky.getWidthFrom !== 'undefined') ? $(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 = $(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;
}
}
// should be more efficient than using $win.scroll(scroller):
$doc.on('uk-scroll', scroller);
$win.on('resize orientationchange', UI.Utils.debounce(function() {
if (!sticked.length) return;
for (var i = 0; i < sticked.length; i++) {
sticked[i].reset(true);
}
scroller();
}, 100));
// init code
UI.ready(function(context) {
setTimeout(function(){
$("[data-uk-sticky]", context).each(function(){
var $ele = $(this);
if(!$ele.data("sticky")) {
UI.sticky($ele, UI.Utils.options($ele.attr('data-uk-sticky')));
}
});
scroller();
}, 0);
});
return $.fn.uksticky;
});

3
assets/js/uikit/js/addons/sticky.min.js vendored Executable file
View File

@@ -0,0 +1,3 @@
/*! UIkit 2.10.0 | http://www.getuikit.com | (c) 2014 YOOtheme | MIT License */
!function(a){var b;jQuery&&jQuery.UIkit&&(b=a(jQuery,jQuery.UIkit)),"function"==typeof define&&define.amd&&define("uikit-sticky",["uikit"],function(){return b||a(jQuery,jQuery.UIkit)})}(function(a,b){function c(){if(f.length){var b,c=d.scrollTop(),g=e.height(),h=g-d.height(),i=c>h?h-c:0;if(!(0>c))for(var j=0;j<f.length;j++)if(f[j].element.is(":visible")&&!f[j].animate){var k=f[j];if(k.check()){if(k.options.top<0?b=0:(b=g-k.element.outerHeight()-k.options.top-k.options.bottom-c-i,b=0>b?b+k.options.top:k.options.top),k.currentTop!=b){if(k.element.css({position:"fixed",top:b,width:"undefined"!=typeof k.getWidthFrom?a(k.getWidthFrom).width():k.element.width(),left:k.wrapper.offset().left}),!k.init&&(k.element.addClass(k.options.clsinit),location.hash&&c>0&&k.options.target)){var l=a(location.hash);l.length&&setTimeout(function(a,b){return function(){b.element.width();var d=a.offset(),e=d.top+a.outerHeight(),f=b.element.offset(),g=b.element.outerHeight(),h=f.top+g;f.top<e&&d.top<h&&(c=d.top-g-b.options.target,window.scrollTo(0,c))}}(l,k),0)}k.element.addClass(k.options.clsactive),k.element.css("margin",""),k.options.animation&&k.init&&k.element.addClass(k.options.animation),k.currentTop=b}}else null!==k.currentTop&&k.reset();k.init=!0}}}var d=b.$win,e=b.$doc,f=[];return b.component("sticky",{defaults:{top:0,bottom:0,animation:"",clsinit:"uk-sticky-init",clsactive:"uk-active",getWidthFrom:"",media:!1,target:!1},init:function(){var c=a('<div class="uk-sticky-placeholder"></div>').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")});c=this.element.css("margin",0).wrap(c).parent(),this.sticky={options:this.options,element:this.element,currentTop:null,wrapper:c,init:!1,getWidthFrom:this.options.getWidthFrom||c,reset:function(a){var c=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);!a&&this.options.animation&&b.support.animation?(this.animate=!0,this.element.removeClass(this.options.animation).one(b.support.animation.end,function(){c()}).width(),this.element.addClass(this.options.animation+" uk-animation-reverse")):c()},check:function(){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 a=d.scrollTop(),b=e.height(),c=b-d.height(),f=a>c?c-a:0,g=this.wrapper.offset().top,h=g-this.options.top-f;return a>=h}},f.push(this.sticky)},update:function(){c()}}),e.on("uk-scroll",c),d.on("resize orientationchange",b.Utils.debounce(function(){if(f.length){for(var a=0;a<f.length;a++)f[a].reset(!0);c()}},100)),b.ready(function(d){setTimeout(function(){a("[data-uk-sticky]",d).each(function(){var c=a(this);c.data("sticky")||b.sticky(c,b.Utils.options(c.attr("data-uk-sticky")))}),c()},0)}),a.fn.uksticky});

View File

@@ -0,0 +1,165 @@
/*! UIkit 2.10.0 | http://www.getuikit.com | (c) 2014 YOOtheme | MIT License */
(function(addon) {
var component;
if (jQuery && jQuery.UIkit) {
component = addon(jQuery, jQuery.UIkit);
}
if (typeof define == "function" && define.amd) {
define("uikit-search", ["uikit"], function(){
return component || addon(jQuery, jQuery.UIkit);
});
}
})(function($, UI){
"use strict";
var times = {'12h':[], '24h':[]};
for(var i = 0, h=''; i<24; i++) {
h = ''+i;
if(i<10) h = '0'+h;
times['24h'].push({value: (h+':00')});
times['24h'].push({value: (h+':30')});
if (i<13) {
times['12h'].push({value: (h+':00 AM')});
times['12h'].push({value: (h+':30 AM')});
}
if (i > 12) {
h = h-12;
if (h < 10) h = '0'+String(h);
times['12h'].push({value: (h+':00 PM')});
times['12h'].push({value: (h+':30 PM')});
}
}
UI.component('timepicker', {
defaults: {
format : '24h',
delay : 0
},
init: function() {
var $this = this;
this.options.minLength = 0;
this.options.template = '<ul class="uk-nav uk-nav-autocomplete uk-autocomplete-results">{{~items}}<li data-value="{{$item.value}}"><a>{{$item.value}}</a></li>{{/items}}</ul>';
this.options.source = function(release) {
release(times[$this.options.format] || times['12h']);
};
this.element.wrap('<div class="uk-autocomplete"></div>');
this.autocomplete = UI.autocomplete(this.element.parent(), this.options);
this.autocomplete.dropdown.addClass('uk-dropdown-small uk-dropdown-scrollable');
this.autocomplete.on('autocomplete-show', 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));
},
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 : '');
}
});
// init code
UI.$doc.on("focus.timepicker.uikit", "[data-uk-timepicker]", function(e) {
var ele = $(this);
if (!ele.data("timepicker")) {
var obj = UI.timepicker(ele, UI.Utils.options(ele.attr("data-uk-timepicker")));
setTimeout(function(){
obj.autocomplete.input.focus();
}, 20);
}
});
});

3
assets/js/uikit/js/addons/timepicker.min.js vendored Executable file
View File

@@ -0,0 +1,3 @@
/*! UIkit 2.10.0 | http://www.getuikit.com | (c) 2014 YOOtheme | MIT License */
!function(a){var b;jQuery&&jQuery.UIkit&&(b=a(jQuery,jQuery.UIkit)),"function"==typeof define&&define.amd&&define("uikit-search",["uikit"],function(){return b||a(jQuery,jQuery.UIkit)})}(function(a,b){"use strict";for(var c={"12h":[],"24h":[]},d=0,e="";24>d;d++)e=""+d,10>d&&(e="0"+e),c["24h"].push({value:e+":00"}),c["24h"].push({value:e+":30"}),13>d&&(c["12h"].push({value:e+":00 AM"}),c["12h"].push({value:e+":30 AM"})),d>12&&(e-=12,10>e&&(e="0"+String(e)),c["12h"].push({value:e+":00 PM"}),c["12h"].push({value:e+":30 PM"}));b.component("timepicker",{defaults:{format:"24h",delay:0},init:function(){var a=this;this.options.minLength=0,this.options.template='<ul class="uk-nav uk-nav-autocomplete uk-autocomplete-results">{{~items}}<li data-value="{{$item.value}}"><a>{{$item.value}}</a></li>{{/items}}</ul>',this.options.source=function(b){b(c[a.options.format]||c["12h"])},this.element.wrap('<div class="uk-autocomplete"></div>'),this.autocomplete=b.autocomplete(this.element.parent(),this.options),this.autocomplete.dropdown.addClass("uk-dropdown-small uk-dropdown-scrollable"),this.autocomplete.on("autocomplete-show",function(){var b=a.autocomplete.dropdown.find('[data-value="'+a.autocomplete.input.val()+'"]');setTimeout(function(){a.autocomplete.pick(b,!0)},10)}),this.autocomplete.input.on("focus",function(){a.autocomplete.value=Math.random(),a.autocomplete.triggercomplete()}).on("blur",function(){a.checkTime()}),this.element.data("timepicker",this)},checkTime:function(){var a,b,c,d,e="AM",f=this.autocomplete.input.val();"12h"==this.options.format?(a=f.split(" "),b=a[0].split(":"),e=a[1]):b=f.split(":"),c=parseInt(b[0],10),d=parseInt(b[1],10),isNaN(c)&&(c=0),isNaN(d)&&(d=0),"12h"==this.options.format?(c>12?c=12:0>c&&(c=12),"am"===e||"a"===e?e="AM":("pm"===e||"p"===e)&&(e="PM"),"AM"!==e&&"PM"!==e&&(e="AM")):c>=24?c=23:0>c&&(c=0),0>d?d=0:d>=60&&(d=0),this.autocomplete.input.val(this.formatTime(c,d,e))},formatTime:function(a,b,c){return a=10>a?"0"+a:a,b=10>b?"0"+b:b,a+":"+b+("12h"==this.options.format?" "+c:"")}}),b.$doc.on("focus.timepicker.uikit","[data-uk-timepicker]",function(){var c=a(this);if(!c.data("timepicker")){var d=b.timepicker(c,b.Utils.options(c.attr("data-uk-timepicker")));setTimeout(function(){d.autocomplete.input.focus()},20)}})});

View File

@@ -0,0 +1,256 @@
/*! UIkit 2.10.0 | http://www.getuikit.com | (c) 2014 YOOtheme | MIT License */
(function(addon) {
var component;
if (jQuery && jQuery.UIkit) {
component = addon(jQuery, jQuery.UIkit);
}
if (typeof define == "function" && define.amd) {
define("uikit-upload", ["uikit"], function(){
return component || addon(jQuery, jQuery.UIkit);
});
}
})(function($, UI){
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('uk.dropped', [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){
$.event.props.push("dataTransfer");
}
function xhrupload(files, settings) {
if (!UI.support.ajaxupload){
return this;
}
settings = $.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 = $.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;
});

3
assets/js/uikit/js/addons/upload.min.js vendored Executable file
View File

@@ -0,0 +1,3 @@
/*! UIkit 2.10.0 | http://www.getuikit.com | (c) 2014 YOOtheme | MIT License */
!function(a){var b;jQuery&&jQuery.UIkit&&(b=a(jQuery,jQuery.UIkit)),"function"==typeof define&&define.amd&&define("uikit-upload",["uikit"],function(){return b||a(jQuery,jQuery.UIkit)})}(function(a,b){function c(e,f){function g(b,c){var d=new FormData,e=new XMLHttpRequest;if(c.before(c,b)!==!1){for(var f,g=0;f=b[g];g++)d.append(c.param,f);for(var h in c.params)d.append(h,c.params[h]);e.upload.addEventListener("progress",function(a){var b=a.loaded/a.total*100;c.progress(b,a)},!1),e.addEventListener("loadstart",function(a){c.loadstart(a)},!1),e.addEventListener("load",function(a){c.load(a)},!1),e.addEventListener("loadend",function(a){c.loadend(a)},!1),e.addEventListener("error",function(a){c.error(a)},!1),e.addEventListener("abort",function(a){c.abort(a)},!1),e.open(c.method,c.action,!0),e.onreadystatechange=function(){if(c.readystatechange(e),4==e.readyState){var b=e.responseText;if("json"==c.type)try{b=a.parseJSON(b)}catch(d){b=!1}c.complete(b,e)}},c.beforeSend(e),e.send(d)}}if(!b.support.ajaxupload)return this;if(f=a.extend({},c.defaults,f),e.length){if("*.*"!==f.allow)for(var h,i=0;h=e[i];i++)if(!d(f.allow,h.name))return void("string"==typeof f.notallowed?alert(f.notallowed):f.notallowed(h,f));var j=f.complete;if(f.single){var k=e.length,l=0,m=!0;f.beforeAll(e),f.complete=function(a,b){l+=1,j(a,b),f.filelimit&&l>=f.filelimit&&(m=!1),m&&k>l?g([e[l]],f):f.allcomplete(a,b)},g([e[0]],f)}else f.complete=function(a,b){j(a,b),f.allcomplete(a,b)},g(e,f)}}function d(a,b){var c="^"+a.replace(/\//g,"\\/").replace(/\*\*/g,"(\\/[^\\/]+)*").replace(/\*/g,"[^\\/]+").replace(/((?!\\))\?/g,"$1.")+"$";return c="^"+c+"$",null!==b.match(new RegExp(c,"i"))}return b.component("uploadSelect",{init:function(){var a=this;this.on("change",function(){c(a.element[0].files,a.options);var b=a.element.clone(!0).data("uploadSelect",a);a.element.replaceWith(b),a.element=b})}}),b.component("uploadDrop",{defaults:{dragoverClass:"uk-dragover"},init:function(){var a=this,b=!1;this.on("drop",function(b){b.dataTransfer&&b.dataTransfer.files&&(b.stopPropagation(),b.preventDefault(),a.element.removeClass(a.options.dragoverClass),a.element.trigger("uk.dropped",[b.dataTransfer.files]),c(b.dataTransfer.files,a.options))}).on("dragenter",function(a){a.stopPropagation(),a.preventDefault()}).on("dragover",function(c){c.stopPropagation(),c.preventDefault(),b||(a.element.addClass(a.options.dragoverClass),b=!0)}).on("dragleave",function(c){c.stopPropagation(),c.preventDefault(),a.element.removeClass(a.options.dragoverClass),b=!1})}}),b.support.ajaxupload=function(){function a(){var a=document.createElement("INPUT");return a.type="file","files"in a}function b(){var a=new XMLHttpRequest;return!!(a&&"upload"in a&&"onprogress"in a.upload)}function c(){return!!window.FormData}return a()&&b()&&c()}(),b.support.ajaxupload&&a.event.props.push("dataTransfer"),c.defaults={action:"",single:!0,method:"POST",param:"files[]",params:{},allow:"*.*",type:"text",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(a,b){alert("Only the following file types are allowed: "+b.allow)}},b.Utils.xhrupload=c,c});

0
assets/js/uikit/js/index.html Executable file
View File

2592
assets/js/uikit/js/uikit.js Executable file

File diff suppressed because it is too large Load Diff

4
assets/js/uikit/js/uikit.min.js vendored Executable file

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,102 @@
// Name: Autocomplete
// Description: Provides suggestions while you type into an input field
//
// Component: `uk-autocomplete`
//
// Modifier: (Nav) `uk-nav-autocomplete`
//
// States: `uk-active`
//
// ========================================================================
// Variables
// ========================================================================
// Nav modifier
@nav-autocomplete-color: #444;
@nav-autocomplete-active-background: #00a8e6;
@nav-autocomplete-active-color: #fff;
@nav-autocomplete-header-color: #999;
@nav-autocomplete-divider-border: #ddd;
@nav-autocomplete-divider-border-width: 1px;
/* ========================================================================
Component: Autocomplete
========================================================================== */
/*
* 1. Container width fits its content
* 2. Create position context
* 3. Prevent `inline-block` consequences
* 4. Remove the gap between the container and its child element
*/
.uk-autocomplete {
/* 1 */
display: inline-block;
/* 2 */
position: relative;
/* 3 */
max-width: 100%;
/* 4 */
vertical-align: middle;
}
/* Nav modifier `uk-nav-autocomplete`
========================================================================== */
/*
* Items
*/
.uk-nav-autocomplete > li > a {
color: @nav-autocomplete-color;
.hook-nav-autocomplete;
}
/*
* Active
* 1. Remove default focus style
*/
.uk-nav-autocomplete > li.uk-active > a {
background: @nav-autocomplete-active-background;
color: @nav-autocomplete-active-color;
/* 1 */
outline: none;
.hook-nav-autocomplete-active;
}
/*
* Sub-object: `uk-nav-header`
*/
.uk-nav-autocomplete .uk-nav-header {
color: @nav-autocomplete-header-color;
.hook-nav-autocomplete-header;
}
/*
* Sub-object: `uk-nav-divider`
*/
.uk-nav-autocomplete .uk-nav-divider {
border-top: @nav-autocomplete-divider-border-width solid @nav-autocomplete-divider-border;
.hook-nav-autocomplete-divider;
}
// Hooks
// ========================================================================
.hook-autocomplete-misc;
.hook-nav-autocomplete() {}
.hook-nav-autocomplete-active() {}
.hook-nav-autocomplete-header() {}
.hook-nav-autocomplete-divider() {}
.hook-autocomplete-misc() {}

View File

@@ -0,0 +1,70 @@
// Name: Cover
// Description: Defines styles for images and videos to cover their container in a centered position
//
// Component: `uk-cover-*`
//
// Used by: Slideshow
//
// ========================================================================
/* ========================================================================
Component: Cover
========================================================================== */
/*
* Background image always covers and centers its element
*/
.uk-cover-background {
background-position: 50% 50%;
background-size: cover;
background-repeat: no-repeat;
}
/*
* Emulates image cover, works with video and image elements
* 1. Parent container which clips resized object
* 2. Resizes the object to always covers its container
* 3. Reset the responsive image CSS
* 4. Center object
*/
/* 1 */
.uk-cover { overflow: hidden; }
.uk-cover-object {
/* 2 */
width: auto;
height: auto;
min-width: 100%;
min-height: 100%;
/* 3 */
max-width: none;
/* 4 */
position: relative;
left: 50%;
top: 50%;
-webkit-transform: translate(-50%,-50%);
transform: translate(-50%,-50%);
}
/*
* To center iframes use `data-uk-cover` JavaScript
*/
[data-uk-cover] {
position: relative;
left: 50%;
top: 50%;
-webkit-transform: translate(-50%,-50%);
transform: translate(-50%,-50%);
}
// Hooks
// ========================================================================
.hook-cover-misc;
.hook-cover-misc() {}

View File

@@ -0,0 +1,193 @@
// Name: Datepicker
// Description: Defines styles for a datepicker
//
// Component: `uk-datepicker`
//
// Modifiers: `uk-datepicker-nav`
// `uk-datepicker-previous`
// `uk-datepicker-next`
// `uk-datepicker-heading`
// `uk-datepicker-table`
// `uk-datepicker-table-muted`
//
// ========================================================================
// Variables
// ========================================================================
@datepicker-animation: uk-fade;
@datepicker-nav-height: 20px;
@datepicker-nav-margin-bottom: 15px;
@datepicker-nav-color: #444;
@datepicker-nav-hover-color: #444;
@datepicker-previous-icon: "\f053";
@datepicker-next-icon: "\f054";
@datepicker-table-width: 26px;
@datepicker-table-height: 24px;
@datepicker-table-color: #444;
@datepicker-table-hover-background: #ddd;
@datepicker-table-hover-color: #444;
@datepicker-table-onclick-background: #ccc;
@datepicker-table-onclick-color: #444;
@datepicker-table-active-background: #00a8e6;
@datepicker-table-active-color: #fff;
@datepicker-table-muted-color: #999;
/* ========================================================================
Component: Datepicker
========================================================================== */
/*
* 1. Reset dropdown width
* 2. Set animation
* 3. Needed for scale animation
*/
.uk-datepicker {
/* 1 */
width: auto;
/* 2 */
-webkit-animation: @datepicker-animation 0.2s ease-in-out;
animation: @datepicker-animation 0.2s ease-in-out;
/* 3 */
-webkit-transform-origin: 0 0;
transform-origin: 0 0;
}
/* Sub-object: `uk-datepicker-nav`
========================================================================== */
.uk-datepicker-nav {
margin-bottom: @datepicker-nav-margin-bottom;
text-align: center;
line-height: @datepicker-nav-height;
.hook-datepicker-nav;
}
/*
* Micro clearfix
*/
.uk-datepicker-nav:before,
.uk-datepicker-nav:after {
content: " ";
display: table;
}
.uk-datepicker-nav:after { clear: both; }
/*
* Previous and next navigation
*/
.uk-datepicker-nav a {
color: @datepicker-nav-color;
text-decoration: none;
.hook-datepicker-nav-item;
}
.uk-datepicker-nav a:hover { color: @datepicker-nav-hover-color; }
.uk-datepicker-previous { float: left; }
.uk-datepicker-next { float: right; }
.uk-datepicker-previous:after,
.uk-datepicker-next:after {
width: @datepicker-nav-height;
font-family: FontAwesome;
}
.uk-datepicker-previous:after { content: @datepicker-previous-icon; }
.uk-datepicker-next:after { content: @datepicker-next-icon; }
/* Sub-object: `uk-datepicker-heading`
========================================================================== */
.uk-datepicker-heading {}
/* Sub-object: `uk-datepicker-table`
========================================================================== */
/* Block element behavior */
.uk-datepicker-table { width: 100%; }
.uk-datepicker-table th,
.uk-datepicker-table td { padding: 2px; }
.uk-datepicker-table th { font-size: 12px; }
/*
* Item
*/
.uk-datepicker-table a {
display: block;
width: @datepicker-table-width;
line-height: @datepicker-table-height;
text-align: center;
color: @datepicker-table-color;
text-decoration: none;
.hook-datepicker-table-item;
}
/*
* Sub-object: `uk-datepicker-table-muted`
*/
a.uk-datepicker-table-muted { color: @datepicker-table-muted-color; }
/*
* Hover
* 1. Apply hover style also to focus state
* 2. Remove default focus style
*/
.uk-datepicker-table a:hover,
.uk-datepicker-table a:focus { // 1
background-color: @datepicker-table-hover-background;
color: @datepicker-table-hover-color;
/* 2 */
outline: none;
.hook-datepicker-table-item-hover;
}
/* OnClick */
.uk-datepicker-table a:active {
background-color: @datepicker-table-onclick-background;
color: @datepicker-table-onclick-color;
.hook-datepicker-table-item-onclick;
}
/*
* Active
*/
.uk-datepicker-table a.uk-active {
background: @datepicker-table-active-background;
color: @datepicker-table-active-color;
.hook-datepicker-table-item-active;
}
// Hooks
// ========================================================================
.hook-datepicker-misc;
.hook-datepicker-nav() {}
.hook-datepicker-nav-item() {}
.hook-datepicker-table-item() {}
.hook-datepicker-table-item-hover() {}
.hook-datepicker-table-item-onclick() {}
.hook-datepicker-table-item-active() {}
.hook-datepicker-misc() {}

View File

@@ -0,0 +1,141 @@
// Name: Dotnav
// Description: Defines styles for a dot navigation
//
// Component: `uk-dotnav`
//
// Modifier: `uk-dotnav-vertical`
//
// States: `uk-active`
//
// Markup:
//
// <!-- uk-dotnav addon -->
// <ul class="uk-dotnav">
// <li class="uk-active"><a href=""></a></li>
// <li><a href=""></a></li>
// </ul>
//
// ========================================================================
// Variables
// ========================================================================
@dotnav-margin-left: 15px;
@dotnav-width: 20px;
@dotnav-height: @dotnav-width;
@dotnav-background: rgba(50,50,50,0.1);
@dotnav-hover-background: rgba(50,50,50,0.4);
@dotnav-onclick-background: rgba(50,50,50,0.6);
@dotnav-active-background: rgba(50,50,50,0.4);
@dotnav-vertical-margin-top: @dotnav-margin-left;
/* ========================================================================
Component: Dotnav
========================================================================== */
/*
* 1. Remove default list style
* 2. Remove whitespace between child elements when using `inline-block`
*/
.uk-dotnav {
/* 1 */
padding: 0;
list-style: none;
/* 2 */
font-size: 0.001px;
}
/* Items
========================================================================== */
/*
* 1. Reset whitespace hack
* 2. Remove the gap at the bottom of it container
*/
.uk-dotnav > li {
display: inline-block;
/* 1 */
font-size: 1rem;
/* 2 */
vertical-align: top;
}
.uk-dotnav > li:nth-child(n+2) { margin-left: @dotnav-margin-left; }
/*
* Items
* 1. Remove the gap at the bottom of it container
* 2. Hide text if present
*/
.uk-dotnav > li > a {
display: inline-block;
-moz-box-sizing: content-box;
box-sizing: content-box;
width: @dotnav-width;
height: @dotnav-height;
border-radius: 50%;
background: @dotnav-background;
/* 1 */
vertical-align: top;
/* 2 */
overflow: hidden;
text-indent: -999%;
.hook-dotnav-item;
}
/*
* Hover
* 1. Apply hover style also to focus state
* 2. Remove default focus style
*/
.uk-dotnav > li > a:hover,
.uk-dotnav > li > a:focus { // 1
background: @dotnav-hover-background;
/* 2 */
outline: none;
.hook-dotnav-item-hover;
}
/* OnClick */
.uk-dotnav > li > a:active {
background: @dotnav-onclick-background;
.hook-dotnav-item-onclick;
}
/* Active */
.uk-dotnav > li.uk-active > a {
background: @dotnav-active-background;
.hook-dotnav-item-active;
}
/* Modifier: 'dotnav-vertical'
========================================================================== */
.uk-dotnav-vertical > li { display: block; }
.uk-dotnav-vertical > li:nth-child(n+2) {
margin-left: 0;
margin-top: @dotnav-vertical-margin-top;
}
// Hooks
// ========================================================================
.hook-dotnav-misc;
.hook-dotnav-item() {}
.hook-dotnav-item-hover() {}
.hook-dotnav-item-onclick() {}
.hook-dotnav-item-active() {}
.hook-dotnav-misc() {}

View File

@@ -0,0 +1,62 @@
// Name: Flex
// Description: Defines basic styles to use flexbox for alignment
//
// Component: `uk-flex-*`
//
//
// ========================================================================
/* ========================================================================
Component: Flex
========================================================================== */
.uk-flex {
display: -ms-flexbox;
display: -webkit-flex;
display: flex;
}
/* Alignment
========================================================================== */
/*
* Vertical alignment
* Default value is `stretch`
*/
.uk-flex-top {
-ms-flex-align: start;
-webkit-align-items: flex-start;
align-items: flex-start;
}
.uk-flex-middle {
-ms-flex-align: center;
-webkit-align-items: center;
align-items: center;
}
.uk-flex-bottom {
-ms-flex-align: end;
-webkit-align-items: flex-end;
align-items: flex-end;
}
/*
* Horizontal alignment
* Default value is `flex-start`
*/
.uk-flex-center {
-ms-flex-pack: center;
-webkit-justify-content: center;
justify-content: center;
}
.uk-flex-right {
-ms-flex-pack: end;
-webkit-justify-content: flex-end;
justify-content: flex-end;
}

View File

@@ -0,0 +1,123 @@
// Name: Form advanced
// Description: Custom appearance of radio and checkbox buttons
//
// Component: `uk-form`
//
// ========================================================================
// Variables
// ========================================================================
@form-advanced-size: 14px;
@form-advanced-border: #aaa;
@form-advanced-border-width: 1px;
@form-advanced-margin-top: -4px;
@form-advanced-color: transparent;
@form-advanced-checked-color: #00a8e6;
@form-advanced-radio-size: 8px;
@form-advanced-checkbox-icon: "\f00c";
@form-advanced-checkbox-font-size: 12px;
@form-advanced-disabled-border: #ddd;
@form-advanced-disabled-color: #aaa;
/* ========================================================================
Component: Form advanced
Note: Only works in Webkit at the moment
========================================================================== */
/*
* 1. Style
* 2. Makes box more robust so it clips the child element
* 3. Vertical alignment
* 4. Remove default style
* 5. Fix black background on iOS
*/
.uk-form input[type="radio"],
.uk-form input[type="checkbox"] {
/* 1 */
display: inline-block;
height: @form-advanced-size;
width: @form-advanced-size;
border: @form-advanced-border-width solid @form-advanced-border;
/* 2 */
overflow: hidden;
/* 3 */
margin-top: @form-advanced-margin-top;
vertical-align: middle;
/* 4 */
-webkit-appearance: none;
outline: 0;
/* 5 */
background: @form-advanced-color;
.hook-form-advanced;
}
/* Radio */
.uk-form input[type="radio"] { border-radius: 50%; }
/*
* Checked
*/
.uk-form input[type=checkbox]:checked:before,
.uk-form input[type=radio]:checked:before {
display: block;
.hook-form-advanced-checked;
}
/* Radio */
.uk-form input[type=radio]:checked:before {
content: '';
width: @form-advanced-radio-size;
height: @form-advanced-radio-size;
margin: ((@form-advanced-size - (2 * @form-advanced-border-width) - @form-advanced-radio-size) / 2) auto 0;
border-radius: 50%;
background: @form-advanced-checked-color;
.hook-form-advanced-radio;
}
/* Checkbox */
.uk-form input[type=checkbox]:checked:before {
content: @form-advanced-checkbox-icon;
font-family: FontAwesome;
font-size: @form-advanced-checkbox-font-size;
-webkit-font-smoothing: antialiased;
text-align: center;
line-height: @form-advanced-size - (2 * @form-advanced-border-width);
color: @form-advanced-checked-color;
.hook-form-advanced-checkbox;
}
/*
* Disabled
*/
.uk-form input[type=radio]:disabled,
.uk-form input[type=checkbox]:disabled {
border-color: @form-advanced-disabled-border;
.hook-form-advanced-disabled;
}
.uk-form input[type=radio]:disabled:checked:before { background-color: @form-advanced-disabled-color; }
.uk-form input[type=checkbox]:disabled:checked:before { color: @form-advanced-disabled-color; }
// Hooks
// ========================================================================
.hook-form-advanced-misc;
.hook-form-advanced() {}
.hook-form-advanced-checked() {}
.hook-form-advanced-radio() {}
.hook-form-advanced-checkbox() {}
.hook-form-advanced-disabled() {}
.hook-form-advanced-misc() {}

View File

@@ -0,0 +1,63 @@
// Name: Form file
// Description: Extends form component
//
// Component: `uk-form`
//
// Sub-objects: `uk-form-file`
//
// Markup:
//
// <!-- uk-form-file addon -->
// <div class="uk-form-file">
// <button class="uk-button"></button>
// <input type="file">
// </div>
//
// ========================================================================
/* ========================================================================
Component: Form file
========================================================================== */
/*
* 1. Behave like form elements
* 2. Create position context for dropdowns
* 3. Clip content
*/
.uk-form-file {
/* 1 */
display: inline-block;
vertical-align: middle;
/* 2 */
position: relative;
/* 3 */
overflow: hidden;
}
/*
* 1. Required for Firefox
* 2. Expand height and required for the cursor
*/
.uk-form-file input[type="file"] {
position: absolute;
top: 0;
z-index: 1;
width: 100%;
opacity: 0;
cursor: pointer;
/* 1 */
left: 0;
/* 2 */
font-size: 500px;
}
// Hooks
// ========================================================================
.hook-form-file-misc;
.hook-form-file-misc() {}

View File

@@ -0,0 +1,74 @@
// Name: Form password
// Description: Extends form component
//
// Component: `uk-form`
//
// Sub-objects: `uk-form-password`
//
// Markup:
//
// <!-- uk-form-password addon -->
// <form class="uk-form">
// <div class="uk-form-password">
// <input type="password">
// <a href="" class="uk-form-password-toggle" data-uk-form-password></a>
// </div>
// </form>
//
// ========================================================================
// Variables
// ========================================================================
@form-password-font-size: 13px;
@form-password-line-height: @form-password-font-size;
@form-password-color: #999;
@form-password-hover-color: #999;
@form-password-padding: 50px;
/* ========================================================================
Component: Form password
========================================================================== */
/*
* 1. Container width fits its content
* 2. Create position context
* 3. Prevent `inline-block` consequences
*/
.uk-form-password {
/* 1 */
display: inline-block;
/* 2 */
position: relative;
/* 3 */
max-width: 100%;
}
.uk-form-password-toggle {
display: block;
position: absolute;
top: 50%;
right: 10px;
margin-top: -(floor(@form-password-line-height/2));
font-size: @form-password-font-size;
line-height: @form-password-line-height;
color: @form-password-color;
}
.uk-form-password-toggle:hover {
color: @form-password-hover-color;
text-decoration: none;
}
.uk-form-password > input { padding-right: @form-password-padding !important; }
// Hooks
// ========================================================================
.hook-form-password-misc;
.hook-form-password-misc() {}

View File

@@ -0,0 +1,66 @@
// Name: Form select
// Description: Extends form component
//
// Component: `uk-form`
//
// Sub-objects: `uk-form-select`
//
// Markup:
//
// <!-- uk-form-select addon -->
// <div class="uk-form-select" data-uk-form-select>
// <span></span>
// <select>
// <option value=""></option>
// </select>
// </div>
//
// ========================================================================
/* ========================================================================
Component: Form select
========================================================================== */
/*
* 1. Behave like form elements
* 2. Create position context for dropdowns
* 3. Clip content
*/
.uk-form-select {
/* 1 */
display: inline-block;
vertical-align: middle;
/* 2 */
position: relative;
/* 3 */
overflow: hidden;
}
/*
* 1. Required for Firefox
* 1. Required for Webkit to make `height` work
*/
.uk-form-select select {
position: absolute;
top: 0;
z-index: 1;
width: 100%;
height: 100%;
opacity: 0;
cursor: pointer;
/* 1 */
left: 0;
/* 2 */
-webkit-appearance: none;
}
// Hooks
// ========================================================================
.hook-form-select-misc;
.hook-form-select-misc() {}

View File

@@ -0,0 +1,274 @@
// Name: HTML editor
// Description: Defines styles for an HTML editor
//
// Component: `uk-htmleditor`
//
// Sub-objects: `uk-htmleditor-navbar`
// `uk-htmleditor-navbar-nav`
// `uk-htmleditor-navbar-flip`
// `uk-htmleditor-button-code
// `uk-htmleditor-button-preview`
// `uk-htmleditor-content`
// `uk-htmleditor-code`
// `uk-htmleditor-preview`
// `uk-htmleditor-iframe`
//
// Modifier: `uk-htmleditor-fullscreen`
// `[data-mode='tab']`
// `[data-mode='split']`
//
// States: `uk-active`
//
// ========================================================================
// Variables
// ========================================================================
@htmleditor-navbar-background: #eee;
@htmleditor-navbar-nav-height: 40px;
@htmleditor-navbar-nav-padding-horizontal: 15px;
@htmleditor-navbar-nav-line-height: @htmleditor-navbar-nav-height;
@htmleditor-navbar-nav-color: #444;
@htmleditor-navbar-nav-hover-background: #f5f5f5;
@htmleditor-navbar-nav-hover-color: #444;
@htmleditor-navbar-nav-onclick-background: #ddd;
@htmleditor-navbar-nav-onclick-color: #444;
@htmleditor-navbar-nav-active-background: #f5f5f5;
@htmleditor-navbar-nav-active-color: #444;
@htmleditor-content-border: #ddd;
@htmleditor-content-background: #fff;
@htmleditor-content-padding: 20px;
@htmleditor-content-split-border: #eee;
@htmleditor-fullscreen-z-index: 990;
@htmleditor-fullscreen-content-top: @htmleditor-navbar-nav-height;
@htmleditor-fullscreen-icon-resize: "\f066";
/* ========================================================================
Component: HTML editor
========================================================================== */
.uk-htmleditor {
.hook-htmleditor;
}
/* Sub-object `uk-htmleditor-navbar`
========================================================================== */
.uk-htmleditor-navbar {
background: @htmleditor-navbar-background;
.hook-htmleditor-navbar;
}
/*
* Micro clearfix
*/
.uk-htmleditor-navbar:before,
.uk-htmleditor-navbar:after {
content: " ";
display: table;
}
.uk-htmleditor-navbar:after { clear: both; }
/* Sub-object `uk-htmleditor-navbar-nav`
========================================================================== */
.uk-htmleditor-navbar-nav {
margin: 0;
padding: 0;
list-style: none;
float: left;
}
.uk-htmleditor-navbar-nav > li { float: left; }
/*
* 1. Dimensions
* 2. Style
*/
.uk-htmleditor-navbar-nav > li > a {
display: block;
-moz-box-sizing: border-box;
box-sizing: border-box;
text-decoration: none;
/* 1 */
height: @htmleditor-navbar-nav-height;
padding: 0 @htmleditor-navbar-nav-padding-horizontal;
line-height: @htmleditor-navbar-nav-line-height;
/* 2 */
color: @htmleditor-navbar-nav-color;
font-size: 11px;
cursor: pointer;
.hook-htmleditor-navbar-nav;
}
/*
* Hover
* 1. Apply hover style also to focus state
* 2. Remove default focus style
*/
.uk-htmleditor-navbar-nav > li:hover > a,
.uk-htmleditor-navbar-nav > li > a:focus { // 1
background-color: @htmleditor-navbar-nav-hover-background;
color: @htmleditor-navbar-nav-hover-color;
outline: none; /* 2 */
.hook-htmleditor-navbar-nav-hover;
}
/* OnClick */
.uk-htmleditor-navbar-nav > li > a:active {
background-color: @htmleditor-navbar-nav-onclick-background;
color: @htmleditor-navbar-nav-onclick-color;
.hook-htmleditor-navbar-nav-onclick;
}
/* Active */
.uk-htmleditor-navbar-nav > li.uk-active > a {
background-color: @htmleditor-navbar-nav-active-background;
color: @htmleditor-navbar-nav-active-color;
.hook-htmleditor-navbar-nav-active;
}
/* Sub-object: `uk-htmleditor-navbar-flip`
========================================================================== */
.uk-htmleditor-navbar-flip { float: right; }
/* Sub-object for special buttons
========================================================================== */
[data-mode='split'] .uk-htmleditor-button-code,
[data-mode='split'] .uk-htmleditor-button-preview { display: none; }
/* Sub-object `uk-htmleditor-content`
========================================================================== */
.uk-htmleditor-content {
border-left: 1px solid @htmleditor-content-border;
border-right: 1px solid @htmleditor-content-border;
border-bottom: 1px solid @htmleditor-content-border;
background: @htmleditor-content-background;
.hook-htmleditor-content;
}
/*
* Micro clearfix
*/
.uk-htmleditor-content:before,
.uk-htmleditor-content:after {
content: " ";
display: table;
}
.uk-htmleditor-content:after { clear: both; }
/* Modifier `uk-htmleditor-fullscreen`
========================================================================== */
.uk-htmleditor-fullscreen {
position: fixed;
top: 0;
left: 0;
right: 0;
bottom: 0;
z-index: @htmleditor-fullscreen-z-index;
}
.uk-htmleditor-fullscreen .uk-htmleditor-content {
position: absolute;
top: @htmleditor-fullscreen-content-top;
left: 0;
right: 0;
bottom: 0;
}
.uk-htmleditor-fullscreen .uk-icon-expand:before { content: @htmleditor-fullscreen-icon-resize; }
/* Sub-objects `uk-htmleditor-code` and `uk-htmleditor-preview`
========================================================================== */
.uk-htmleditor-code,
.uk-htmleditor-preview {
-moz-box-sizing: border-box;
box-sizing: border-box;
}
.uk-htmleditor-preview {
padding: @htmleditor-content-padding;
overflow-y: scroll;
position: relative;
}
/*
* Tab view
*/
[data-mode='tab'][data-active-tab='code'] .uk-htmleditor-preview,
[data-mode='tab'][data-active-tab='preview'] .uk-htmleditor-code { display: none; }
/*
* Split view
*/
[data-mode='split'] .uk-htmleditor-code,
[data-mode='split'] .uk-htmleditor-preview {
float: left;
width: 50%;
}
[data-mode='split'] .uk-htmleditor-code { border-right: 1px solid @htmleditor-content-split-border; }
/* Sub-object `uk-htmleditor-iframe`
========================================================================== */
.uk-htmleditor-iframe {
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
}
/* CodeMirror modifications
========================================================================== */
.uk-htmleditor .CodeMirror {
padding: 10px;
-moz-box-sizing: border-box;
box-sizing: border-box;
}
// Hooks
// ========================================================================
.hook-htmleditor-misc;
.hook-htmleditor() {}
.hook-htmleditor-navbar() {}
.hook-htmleditor-navbar-nav() {}
.hook-htmleditor-navbar-nav-hover() {}
.hook-htmleditor-navbar-nav-onclick() {}
.hook-htmleditor-navbar-nav-active() {}
.hook-htmleditor-content() {}
.hook-htmleditor-misc() {}

View File

@@ -0,0 +1,204 @@
// Name: Nestable
// Description: Defines styles for nestable lists
//
// Component: `uk-nestable`
//
// Sub-objects: `uk-nestable-list`
// `uk-nestable-item`
// `uk-nestable-placeholder`
// `uk-nestable-empty`
// `uk-nestable-handle`
// `uk-nestable-moving`
// `[data-nestable-action='toggle']`
//
// Modifier: `uk-nestable-list-dragged`
//
// States: `uk-parent`
// `uk-collapsed`
//
// Markup:
//
// <!-- uk-nestable addon -->
// <ul class="uk-nestable" data-uk-nestable>
// <li>
// <div class="uk-nestable-item">
// <div class="uk-nestable-handle"></div>
// <div data-nestable-action="toggle"></div>
// <span></span>
// </div>
// </li>
// </ul>
//
// ========================================================================
// Variables
// ========================================================================
@nestable-padding-left: 40px;
@nestable-dragged-z-index: 1050;
@nestable-item-margin-bottom: 10px;
@nestable-item-padding: 0; // modified
@nestable-item-background: #f6f6f6; // modified
@nestable-placeholder-border: #e4e4e4; // modified
@nestable-empty-height: 40px;
@nestable-handle-font-size: 15px; // modified
@nestable-handle-color: #979898; // modified
@nestable-handle-icon: "\f0c9";
@nestable-toggle-color: @nestable-handle-color; // modified
@nestable-toggle-hover-color: darken(@nestable-handle-color, 10%); // modified
@nestable-toggle-icon: "\f068"; // modified
@nestable-toggle-collapsed-icon: "\f067"; // modified
/* ========================================================================
Component: Nestable
========================================================================== */
.uk-nestable {
padding: 0;
list-style: none;
.hook-nestable;
}
/* Sub-object `uk-nestable-list`
========================================================================== */
.uk-nestable-list {
margin: 0;
padding-left: @nestable-padding-left;
list-style: none;
}
/* Sub-modifier `uk-nestable-list-dragged`
========================================================================== */
.uk-nestable-list-dragged {
position: absolute;
z-index: @nestable-dragged-z-index;
padding-left: 0;
pointer-events: none;
.hook-nestable-list-dragged;
}
/* Sub-object `uk-nestable-item`
========================================================================== */
.uk-nestable-item {
margin-bottom: @nestable-item-margin-bottom;
padding: @nestable-item-padding;
background: @nestable-item-background;
.hook-nestable-item;
}
/* Sub-object `uk-nestable-placeholder`
* The placeholder which marks the drop area
========================================================================== */
.uk-nestable-placeholder {
-moz-box-sizing: border-box;
box-sizing: border-box;
margin-bottom: @nestable-item-margin-bottom;
border: 1px dashed @nestable-placeholder-border;
.hook-nestable-placeholder;
}
/* Sub-object `uk-nestable-empty`
* The style of an empty list
========================================================================== */
.uk-nestable-empty {
min-height: @nestable-empty-height;
.hook-nestable-empty;
}
/* Sub-object `uk-nestable-handle`
========================================================================== */
.uk-nestable-handle {
display: inline-block;
font-size: @nestable-handle-font-size;
color: @nestable-handle-color;
.hook-nestable-handle;
}
/* Hover */
.uk-nestable-handle:hover { cursor: move; }
/* Icon */
.uk-nestable-handle:after {
content: @nestable-handle-icon;
font-family: FontAwesome;
}
/* Sub-object `uk-nestable-moving`
========================================================================== */
.uk-nestable-moving,
/* Needed if moving over links or buttons */
.uk-nestable-moving * { cursor: move; }
/* Sub-object `[data-action='toggle']`
========================================================================== */
/* Hidden by default */
[data-nestable-action='toggle'] {
display: inline-block;
color: @nestable-toggle-color;
visibility: hidden;
.hook-nestable-toggle;
}
/* Hover */
[data-nestable-action='toggle']:hover {
color: @nestable-toggle-hover-color;
cursor: pointer;
}
/* Icon */
[data-nestable-action='toggle']:after {
content: @nestable-toggle-icon;
font-family: FontAwesome;
}
/*
* Show if nested
*/
.uk-parent > .uk-nestable-item [data-nestable-action='toggle'] { visibility: visible; }
/*
* Collapsed
*/
.uk-collapsed > .uk-nestable-item [data-nestable-action='toggle']:after { content: @nestable-toggle-collapsed-icon; }
.uk-collapsed .uk-nestable-list { display: none; }
// Hooks
// ========================================================================
.hook-nestable-misc;
.hook-nestable() {}
.hook-nestable-list-dragged() {}
.hook-nestable-item() {}
.hook-nestable-placeholder() {}
.hook-nestable-empty() {}
.hook-nestable-handle() {}
.hook-nestable-toggle() {}
.hook-nestable-misc() {}

View File

@@ -0,0 +1,191 @@
// Name: Notify
// Description: Defines styles for toggleable notifications
//
// Component: `uk-notify`
//
// Sub-objects: `uk-notify-message`
//
// Modifiers: `uk-notify-top-center`
// `uk-notify-top-right`
// `uk-notify-bottom-left`
// `uk-notify-bottom-center`
// `uk-notify-bottom-right`
// `uk-notify-message-primary`
// `uk-notify-message-success`
// `uk-notify-message-warning`
// `uk-notify-message-danger`
//
// Uses: Close: `uk-close`
//
// ========================================================================
// Variables
// ========================================================================
@notify-position: 10px;
@notify-z-index: 1040;
@notify-width: 350px;
@notify-message-margin-bottom: 10px;
@notify-message-padding: 15px;
@notify-message-background: #444;
@notify-message-color: #fff;
@notify-message-font-size: 16px;
@notify-message-line-height: 22px;
@notify-message-primary-background: #ebf7fd;
@notify-message-primary-color: #2d7091;
@notify-message-success-background: #f2fae3;
@notify-message-success-color: #659f13;
@notify-message-warning-background: #fffceb;
@notify-message-warning-color: #e28327;
@notify-message-danger-background: #fff1f0;
@notify-message-danger-color: #d85030;
/* ========================================================================
Component: Notify
========================================================================== */
/*
* Message container for positioning
*/
.uk-notify {
position: fixed;
top: @notify-position;
left: @notify-position;
z-index: @notify-z-index;
-moz-box-sizing: border-box;
box-sizing: border-box;
width: @notify-width;
.hook-notify;
}
/* Position modifiers
========================================================================== */
.uk-notify-top-right,
.uk-notify-bottom-right {
left: auto;
right: @notify-position;
}
.uk-notify-top-center,
.uk-notify-bottom-center {
left: 50%;
margin-left: (@notify-width / -2);
}
.uk-notify-bottom-left,
.uk-notify-bottom-right,
.uk-notify-bottom-center {
top: auto;
bottom: @notify-position;
}
/* Responsiveness
========================================================================== */
/* Phones portrait and smaller */
@media (max-width: @breakpoint-mini-max) {
/*
* Fit in small screen
*/
.uk-notify {
left: 10px;
right: 10px;
width: auto;
margin: 0;
}
}
/* Sub-object: `uk-notify-message`
========================================================================== */
.uk-notify-message {
position: relative;
margin-bottom: @notify-message-margin-bottom;
padding: @notify-message-padding;
background: @notify-message-background;
color: @notify-message-color;
font-size: @notify-message-font-size;
line-height: @notify-message-line-height;
cursor: pointer;
.hook-notify-message;
}
/* Close in notify
========================================================================== */
.uk-notify-message > .uk-close {
visibility: hidden;
float: right;
}
.uk-notify-message:hover > .uk-close { visibility: visible; }
/* Modifier: `uk-alert-info`
========================================================================== */
.uk-notify-message-primary {
background: @notify-message-primary-background;
color: @notify-message-primary-color;
.hook-notify-message-primary;
}
/* Modifier: `uk-alert-success`
========================================================================== */
.uk-notify-message-success {
background: @notify-message-success-background;
color: @notify-message-success-color;
.hook-notify-message-success;
}
/* Modifier: `uk-notify-message-warning`
========================================================================== */
.uk-notify-message-warning {
background: @notify-message-warning-background;
color: @notify-message-warning-color;
.hook-notify-message-warning;
}
/* Modifier: `uk-notify-message-danger`
========================================================================== */
.uk-notify-message-danger {
background: @notify-message-danger-background;
color: @notify-message-danger-color;
.hook-notify-message-danger;
}
// Hooks
// ========================================================================
.hook-notify-misc;
.hook-notify() {}
.hook-notify-message() {}
.hook-notify-message-primary() {}
.hook-notify-message-success() {}
.hook-notify-message-warning() {}
.hook-notify-message-danger() {}
.hook-notify-misc() {}

View File

@@ -0,0 +1,66 @@
// Name: Placeholder
// Description: Defines styles for placeholder boxes
//
// Component: `uk-placeholder`
//
// Modifiers: `uk-placeholder-large`
//
// ========================================================================
// Variables
// ========================================================================
@placeholder-margin-vertical: 15px;
@placeholder-padding: 20px;
@placeholder-border: #ddd;
@placeholder-background: #fafafa;
@placeholder-color: #444;
@placeholder-large-padding-vertical: 80px;
/* ========================================================================
Component: Placeholder
========================================================================== */
.uk-placeholder {
margin-bottom: @placeholder-margin-vertical;
padding: @placeholder-padding;
border: 1px dashed @placeholder-border;
background: @placeholder-background;
color: @placeholder-color;
.hook-placeholder;
}
/*
* Add margin if adjacent element
*/
* + .uk-placeholder { margin-top: @placeholder-margin-vertical; }
/*
* Remove margin from the last-child
*/
.uk-placeholder > :last-child { margin-bottom: 0; }
/* Modifier: `uk-placeholder-large`
========================================================================== */
.uk-placeholder-large {
padding-top: @placeholder-large-padding-vertical;
padding-bottom: @placeholder-large-padding-vertical;
.hook-placeholder-large;
}
// Hooks
// ========================================================================
.hook-placeholder-misc;
.hook-placeholder() {}
.hook-placeholder-large() {}
.hook-placeholder-misc() {}

View File

@@ -0,0 +1,310 @@
// Name: Search
// Description: Defines a search component
//
// Component: `uk-search`
//
// Sub-objects: `uk-search-field`
//
// Modifier: (Nav) `uk-nav-search`
// (Dropdown) `uk-dropdown-search`
//
// States: `uk-active`
// `uk-loading`
//
// Uses: Animation
// Icon: FontAwesome
// Navbar: `uk-navbar-flip`
//
// Used by: Off-canvas
//
// Markup:
//
// <!-- uk-search addon -->
// <form class="uk-search" data-uk-search>
// <input class="uk-search-field" type="search" placeholder="">
// </form>
//
// ========================================================================
// Variables
// ========================================================================
@search-width: 120px;
@search-focus-width: 180px;
@search-height: 30px;
@search-padding: 30px;
@search-border: rgba(0,0,0,0);
@search-border-width: 1px;
@search-background: rgba(0,0,0,0);
@search-color: #444;
@search-placeholder-color: #999;
@search-icon: "\f002";
@search-icon-size: 14px;
@search-icon-color: rgba(0,0,0,0.2);
// Dropdown modifier
@dropdown-search-width: 300px;
@dropdown-search-margin-top: 0;
@dropdown-search-background: #f5f5f5;
@dropdown-search-color: #444;
@dropdown-search-animation: uk-slide-top-fixed;
@dropdown-search-navbar-margin-top: 5px;
@dropdown-search-navbar-margin-right: -15px;
// Nav modifier
@nav-search-color: #444;
@nav-search-active-background: #00a8e6;
@nav-search-active-color: #fff;
@nav-search-header-color: #999;
@nav-search-divider-border: #ddd;
@nav-search-divider-border-width: 1px;
@nav-search-nested-color: #07D;
@nav-search-nested-hover-color: #059;
// Search in offcanvas
@offcanvas-search-margin: 20px 15px;
@offcanvas-search-background: #1a1a1a;
@offcanvas-search-border: rgba(0,0,0,0);
@offcanvas-search-color: #ccc;
@offcanvas-search-placeholder-color: #777;
@offcanvas-search-icon-color: #777;
/* ========================================================================
Component: Search
========================================================================== */
/*
* 1. Create position context for dropdowns
* 2. Needed for `form` element
*/
.uk-search {
display: inline-block;
/* 1 */
position: relative;
/* 2 */
margin: 0;
.hook-search;
}
/*
* Icon
*/
.uk-search:before {
content: @search-icon;
position: absolute;
top: 0;
left: 0;
width: @search-padding;
line-height: @search-height;
text-align: center;
font-family: FontAwesome;
font-size: @search-icon-size;
color: @search-icon-color;
.hook-search-icon;
}
/* Sub-object `uk-search-field`
========================================================================== */
/*
* Removes inner padding and border in Firefox 4+.
*/
.uk-search-field::-moz-focus-inner {
border: 0;
padding: 0;
}
/*
* Remove inner padding and search cancel button in Chrome, Safari and Opera on OS X.
*/
.uk-search-field::-webkit-search-cancel-button,
.uk-search-field::-webkit-search-decoration { -webkit-appearance: none; }
/*
* Removes cancel button in IE10
*/
.uk-search-field::-ms-clear { display: none; }
/*
* Removes placeholder transparency in Firefox.
*/
.uk-search-field::-moz-placeholder { opacity: 1; }
/*
* 1. Define consistent box sizing.
* 2. Address margins set differently in Firefox/IE and Chrome/Safari/Opera.
* 3. Remove `border-radius` in iOS.
* 4. Correct `font` properties and `color` not being inherited.
* 5. Remove default style in iOS.
* 6. Style
*/
.uk-search-field {
/* 1 */
-moz-box-sizing: border-box;
box-sizing: border-box;
/* 2 */
margin: 0;
/* 3 */
border-radius: 0;
/* 4 */
font: inherit;
color: @search-color;
/* 5 */
-webkit-appearance: none;
/* 6 */
width: @search-width;
height: @search-height;
padding: 0 0 0 @search-padding;
border: @search-border-width solid @search-border;
background: @search-background;
-webkit-transition: all linear 0.2s;
transition: all linear 0.2s;
vertical-align: middle;
.hook-search-field;
}
/* Placeholder */
.uk-search-field:-ms-input-placeholder { color: @search-placeholder-color !important; }
.uk-search-field::-moz-placeholder { color: @search-placeholder-color; }
.uk-search-field::-webkit-input-placeholder { color: @search-placeholder-color; }
/* Focus */
.uk-search-field:focus {
outline: 0;
.hook-search-field-focus;
}
/* Focus + Active */
.uk-search-field:focus,
.uk-search.uk-active .uk-search-field { width: @search-focus-width; }
/* Dropdown modifier: `uk-dropdown-search`
========================================================================== */
.uk-dropdown-search {
width: @dropdown-search-width;
margin-top: @dropdown-search-margin-top;
background: @dropdown-search-background;
color: @dropdown-search-color;
.hook-dropdown-search;
}
.uk-open > .uk-dropdown-search {
-webkit-animation: @dropdown-search-animation 0.2s ease-in-out;
animation: @dropdown-search-animation 0.2s ease-in-out;
}
/*
* Dependency `uk-navbar-flip`
*/
.uk-navbar-flip .uk-dropdown-search {
margin-top: @dropdown-search-navbar-margin-top;
margin-right: @dropdown-search-navbar-margin-right;
}
/* Nav modifier `uk-nav-search`
========================================================================== */
/*
* Items
*/
.uk-nav-search > li > a {
color: @nav-search-color;
.hook-nav-search;
}
/*
* Active
* 1. Remove default focus style
*/
.uk-nav-search > li.uk-active > a {
background: @nav-search-active-background;
color: @nav-search-active-color;
/* 1 */
outline: none;
.hook-nav-search-active;
}
/*
* Sub-object: `uk-nav-header`
*/
.uk-nav-search .uk-nav-header {
color: @nav-search-header-color;
.hook-nav-search-header;
}
/*
* Sub-object: `uk-nav-divider`
*/
.uk-nav-search .uk-nav-divider {
border-top: @nav-search-divider-border-width solid @nav-search-divider-border;
.hook-nav-search-divider;
}
/*
* Nested items
*/
.uk-nav-search ul a { color: @nav-search-nested-color; }
.uk-nav-search ul a:hover { color: @nav-search-nested-hover-color; }
/* Search in offcanvas
========================================================================== */
.uk-offcanvas .uk-search {
display: block;
margin: @offcanvas-search-margin;
}
.uk-offcanvas .uk-search:before { color: @offcanvas-search-icon-color; }
.uk-offcanvas .uk-search-field {
width: 100%;
border-color: @offcanvas-search-border;
background: @offcanvas-search-background;
color: @offcanvas-search-color;
.hook-offcanvas-search-field;
}
.uk-offcanvas .uk-search-field:-ms-input-placeholder { color: @offcanvas-search-placeholder-color !important; }
.uk-offcanvas .uk-search-field::-moz-placeholder { color: @offcanvas-search-placeholder-color; }
.uk-offcanvas .uk-search-field::-webkit-input-placeholder { color: @offcanvas-search-placeholder-color; }
// Hooks
// ========================================================================
.hook-search-misc;
.hook-search() {}
.hook-search-icon() {}
.hook-search-field() {}
.hook-search-field-focus() {}
.hook-dropdown-search() {}
.hook-nav-search() {}
.hook-nav-search-active() {}
.hook-nav-search-header() {}
.hook-nav-search-divider() {}
.hook-offcanvas-search-field() {}
.hook-search-misc() {}

View File

@@ -0,0 +1,164 @@
// Name: Slidenav
// Description: Defines styles for a previous/next navigation between slides
//
// Component: `uk-slidenav`
//
// Modifiers: `uk-slidenav-previous`
// `uk-slidenav-next`
//
// Sub-objects: `uk-slidenav-position`
//
// Uses: Icon: FontAwesome
//
// Markup:
//
// <!-- uk-slidenav addon -->
// <a href="" class="uk-slidenav uk-slidenav-previous"></a>
// <a href="" class="uk-slidenav uk-slidenav-next"></a>
//
// <!-- uk-slidenav-position addon -->
// <div class="uk-slidenav-position">
// <img src="" alt="">
// <a href="" class="uk-slidenav uk-slidenav-previous"></a>
// <a href="" class="uk-slidenav uk-slidenav-next"></a>
// </div>
//
// ========================================================================
// Variables
// ========================================================================
@slidenav-width: 60px;
@slidenav-height: @slidenav-width;
@slidenav-color: rgba(50,50,50,0.4);
@slidenav-font-size: 60px;
@slidenav-line-height: @slidenav-height;
@slidenav-previous-icon: "\f104";
@slidenav-next-icon: "\f105";
@slidenav-hover-color: rgba(50,50,50,0.7);
@slidenav-active-color: rgba(50,50,50,0.9);
@slidenav-position-previous: 20px;
@slidenav-position-next: @slidenav-position-previous;
/* ========================================================================
Component: Slidenav
========================================================================== */
/*
* 1. Required for `a` elements
* 2. Dimension
* 3. Style
*/
.uk-slidenav {
/* 1 */
display: inline-block;
/* 2 */
-moz-box-sizing: border-box;
box-sizing: border-box;
width: @slidenav-width;
height: @slidenav-height;
/* 3 */
line-height: @slidenav-line-height;
color: @slidenav-color;
font-size: @slidenav-font-size;
text-align: center;
.hook-slidenav;
}
/*
* Hover
* 1. Apply hover style also to focus state
* 2. Remove default focus style
* 3. Required for `a` elements
* 4. Style
*/
.uk-slidenav:hover,
.uk-slidenav:focus { // 1
/* 2 */
outline: none;
/* 3 */
text-decoration: none;
/* 4 */
color: @slidenav-hover-color;
cursor: pointer;
.hook-slidenav-hover;
}
/* Active */
.uk-slidenav:active {
color: @slidenav-active-color;
.hook-slidenav-active;
}
/*
* Icons
*/
.uk-slidenav-previous:before {
content: @slidenav-previous-icon;
font-family: FontAwesome;
}
.uk-slidenav-next:before {
content: @slidenav-next-icon;
font-family: FontAwesome;
}
/* Sub-object: `uk-slidenav-position`
========================================================================== */
/*
* 1. Container width fits its content
* 2. Create position context
* 3. Prevent `inline-block` consequences
* 4. Corrects `max-width` behavior if padding and border are used
*/
.uk-slidenav-position {
/* 1 */
display: inline-block;
/* 2 */
position: relative;
/* 3 */
max-width: 100%;
/* 4 */
-moz-box-sizing: border-box;
box-sizing: border-box;
}
/*
* Center vertically
*/
.uk-slidenav-position .uk-slidenav {
display: none;
position: absolute;
top: 50%;
margin-top: -(@slidenav-height / 2);
}
.uk-slidenav-position:hover .uk-slidenav { display: block; }
.uk-slidenav-position .uk-slidenav-previous { left: @slidenav-position-previous; }
.uk-slidenav-position .uk-slidenav-next { right: @slidenav-position-next; }
// Hooks
// ========================================================================
.hook-slidenav-misc;
.hook-slidenav() {}
.hook-slidenav-previous() {}
.hook-slidenav-next() {}
.hook-slidenav-hover() {}
.hook-slidenav-active() {}
.hook-slidenav-misc() {}

View File

@@ -0,0 +1,110 @@
// Name: Sortable
// Description: Defines styles for sortable grids and lists
//
// Component: `uk-sortable`
//
// Sub-objects: `uk-sortable-moving`
//
// Modifier: `uk-sortable-dragged`
// `uk-sortable-placeholder`
// `uk-sortable-over`
//
// Markup:
//
// <!-- uk-sortable addon -->
// <ul class="uk-sortable" data-uk-sortable>
// <li></li>
// <li></li>
// </ul>
//
// ========================================================================
// Variables
// ========================================================================
@sortable-dragged-z-index: 1050;
@sortable-placeholder-opacity: 0;
@sortable-over-opacity: 0.3;
/* ========================================================================
Component: Sortable
========================================================================== */
.uk-sortable {
position: relative;
.hook-sortable;
}
/*
* Makes text unselectable
*/
.uk-sortable > * {
-moz-user-select: none;
-webkit-user-select: none;
-ms-user-select: none;
user-select: none;
}
/*
* Prevents images and links from being dragged (default browser behavior)
* Currently only works in Webkit
*/
.uk-sortable > * * {
-webkit-user-drag: none;
user-drag: none;
}
/* Sub-modifier `uk-sortable-dragged`
========================================================================== */
.uk-sortable-dragged {
position: absolute;
z-index: @sortable-dragged-z-index;
pointer-events: none;
.hook-sortable-dragged;
}
/* Sub-modifier `uk-sortable-placeholder`
========================================================================== */
.uk-sortable-placeholder {
opacity: @sortable-placeholder-opacity;
.hook-sortable-placeholder;
}
/* Sub-modifier `uk-sortable-over`
* Only if `warp:true`
========================================================================== */
.uk-sortable-over {
opacity: @sortable-over-opacity;
.hook-sortable-over;
}
/* Sub-object `uk-nestable-moving`
========================================================================== */
.uk-sortable-moving,
/* Needed if moving over links or buttons */
.uk-sortable-moving * { cursor: move; }
// Hooks
// ========================================================================
.hook-sortable-misc;
.hook-sortable() {}
.hook-sortable-dragged() {}
.hook-sortable-placeholder() {}
.hook-sortable-over() {}
.hook-sortable-misc() {}

View File

@@ -0,0 +1,52 @@
// Name: Sticky
// Description: Make elements remain at the top of the viewport
//
// Component: `data-uk-sticky`
//
// States: `uk-active`
//
// ========================================================================
// Variables
// ========================================================================
@sticky-z-index: 980;
/* ========================================================================
Component: Sticky
========================================================================== */
/*
* 1. More robust if padding and border are used
*/
[data-uk-sticky].uk-active {
z-index: @sticky-z-index;
/* 1 */
-moz-box-sizing: border-box;
box-sizing: border-box;
}
/*
* Faster animations
*/
[data-uk-sticky][class*='uk-animation-'] {
-webkit-animation-duration: 0.15s;
animation-duration: 0.15s;
}
[data-uk-sticky].uk-animation-reverse {
-webkit-animation-duration: 0.04s;
animation-duration: 0.04s;
}
// Hooks
// ========================================================================
.hook-sticky-misc;
.hook-sticky-misc() {}

View File

@@ -0,0 +1,34 @@
// Name: Upload
// Description: Provides a dragover state for uploads
//
// Component: `uk-upload`
//
// States: `uk-dragover`
//
// ========================================================================
// Variables
// ========================================================================
@uk-upload-dragover-box-shadow: rgba(100,100,100,0.3);
@uk-upload-dragover-box-shadow-blur: 20px;
/* ========================================================================
Component: Upload
========================================================================== */
/*
* Create a box-shadow when dragging a file over the upload area
*/
.uk-dragover { box-shadow: 0 0 @uk-upload-dragover-box-shadow-blur @uk-upload-dragover-box-shadow; }
// Hooks
// ========================================================================
.hook-upload-misc;
.hook-upload-misc() {}

141
assets/js/uikit/less/alert.less Executable file
View File

@@ -0,0 +1,141 @@
// Name: Alert
// Description: Defines styles for alert messages
//
// Component: `uk-alert`
//
// Sub-objects: `uk-alert-close`
//
// Modifiers: `uk-alert-success`
// `uk-alert-warning`
// `uk-alert-danger`
// `uk-alert-large`
//
// Uses: Close: `uk-close`
//
// Markup:
//
// <!-- uk-alert -->
// <div class="uk-alert" data-uk-alert>
// <a href="#" class="uk-alert-close uk-close"></a>
// <p></p>
// </div>
//
// ========================================================================
// Variables
// ========================================================================
@alert-margin-vertical: 15px;
@alert-padding: 10px;
@alert-background: #ebf7fd;
@alert-color: #2d7091;
@alert-success-background: #f2fae3;
@alert-success-color: #659f13;
@alert-warning-background: #fffceb;
@alert-warning-color: #e28327;
@alert-danger-background: #fff1f0;
@alert-danger-color: #d85030;
@alert-large-padding: 20px;
/* ========================================================================
Component: Alert
========================================================================== */
.uk-alert {
margin-bottom: @alert-margin-vertical;
padding: @alert-padding;
background: @alert-background;
color: @alert-color;
.hook-alert;
}
/*
* Add margin if adjacent element
*/
* + .uk-alert { margin-top: @alert-margin-vertical; }
/*
* Remove margin from the last-child
*/
.uk-alert > :last-child { margin-bottom: 0; }
/*
* Keep color for headings if the default heading color is changed
*/
.uk-alert h1,
.uk-alert h2,
.uk-alert h3,
.uk-alert h4,
.uk-alert h5,
.uk-alert h6 { color: inherit; }
/* Close in alert
========================================================================== */
.uk-alert > .uk-close:first-child { float: right; }
/*
* Remove margin from adjacent element
*/
.uk-alert > .uk-close:first-child + * { margin-top: 0; }
/* Modifier: `uk-alert-success`
========================================================================== */
.uk-alert-success {
background: @alert-success-background;
color: @alert-success-color;
.hook-alert-success;
}
/* Modifier: `uk-alert-warning`
========================================================================== */
.uk-alert-warning {
background: @alert-warning-background;
color: @alert-warning-color;
.hook-alert-warning;
}
/* Modifier: `uk-alert-danger`
========================================================================== */
.uk-alert-danger {
background: @alert-danger-background;
color: @alert-danger-color;
.hook-alert-danger;
}
/* Modifier: `uk-alert-large`
========================================================================== */
.uk-alert-large { padding: @alert-large-padding; }
.uk-alert-large > .uk-close:first-child { margin: -10px -10px 0 0; }
// Hooks
// ========================================================================
.hook-alert-misc;
.hook-alert() {}
.hook-alert-success() {}
.hook-alert-warning() {}
.hook-alert-danger() {}
.hook-alert-misc() {}

View File

@@ -0,0 +1,580 @@
// Name: Animation
// Description: Provides a useful set of keyframe animations
//
// Component: `uk-animation-*`
//
// Modifiers: `uk-animation-fade`
// `uk-animation-scale-up`
// `uk-animation-scale-down`
// `uk-animation-slide-top`
// `uk-animation-slide-bottom`
// `uk-animation-slide-left`
// `uk-animation-slide-right`
// `uk-animation-scale`
// `uk-animation-shake`
// `uk-animation-reverse`
// `uk-animation-10`
// `uk-animation-top-left`
// `uk-animation-top-center`
// `uk-animation-top-right`
// `uk-animation-middle-left`
// `uk-animation-middle-right`
// `uk-animation-bottom-left`
// `uk-animation-bottom-center`
// `uk-animation-bottom-right`
//
// Uses: Scrollspy
//
// Used by: Dropdown
// Icon
// Search
// Datepicker
// Slideshow
//
// ========================================================================
/* ========================================================================
Component: Animation
========================================================================== */
[class*='uk-animation-'] {
-webkit-animation-duration: 0.5s;
animation-duration: 0.5s;
-webkit-animation-timing-function: ease-out;
animation-timing-function: ease-out;
-webkit-animation-fill-mode: both;
animation-fill-mode: both;
}
/* Hide animated element if scrollspy is used */
@media screen {
[data-uk-scrollspy*='uk-animation-'] { opacity: 0; }
}
/*
* Fade
* Higher specificity (!important) needed because of reverse modifier
*/
.uk-animation-fade {
-webkit-animation-name: uk-fade;
animation-name: uk-fade;
-webkit-animation-duration: 0.8s;
animation-duration: 0.8s;
-webkit-animation-timing-function: linear !important;
animation-timing-function: linear !important;
}
/*
* Fade with scale
*/
.uk-animation-scale-up {
-webkit-animation-name: uk-fade-scale-02;
animation-name: uk-fade-scale-02;
}
.uk-animation-scale-down {
-webkit-animation-name: uk-fade-scale-18;
animation-name: uk-fade-scale-18;
}
/*
* Fade with slide
*/
.uk-animation-slide-top {
-webkit-animation-name: uk-fade-top;
animation-name: uk-fade-top;
}
.uk-animation-slide-bottom {
-webkit-animation-name: uk-fade-bottom;
animation-name: uk-fade-bottom;
}
.uk-animation-slide-left {
-webkit-animation-name: uk-fade-left;
animation-name: uk-fade-left;
}
.uk-animation-slide-right {
-webkit-animation-name: uk-fade-right;
animation-name: uk-fade-right;
}
/*
* Scale
*/
.uk-animation-scale {
-webkit-animation-name: uk-scale-12;
animation-name: uk-scale-12;
}
/*
* Shake
*/
.uk-animation-shake {
-webkit-animation-name: uk-shake;
animation-name: uk-shake;
}
/* Direction modifiers
========================================================================== */
.uk-animation-reverse {
-webkit-animation-direction: reverse;
animation-direction: reverse;
-webkit-animation-timing-function: ease-out;
animation-timing-function: ease-out;
}
/* Duration modifiers
========================================================================== */
.uk-animation-10 {
-webkit-animation-duration: 10s;
animation-duration: 10s;
}
/* Origin modifiers
========================================================================== */
.uk-animation-top-left {
-webkit-transform-origin: 0 0;
transform-origin: 0 0;
}
.uk-animation-top-center {
-webkit-transform-origin: 50% 0;
transform-origin: 50% 0;
}
.uk-animation-top-right {
-webkit-transform-origin: 100% 0;
transform-origin: 100% 0;
}
.uk-animation-middle-left {
-webkit-transform-origin: 0 50%;
transform-origin: 0 50%;
}
.uk-animation-middle-right {
-webkit-transform-origin: 100% 50%;
transform-origin: 100% 50%;
}
.uk-animation-bottom-left {
-webkit-transform-origin: 0 100%;
transform-origin: 0 100%;
}
.uk-animation-bottom-center {
-webkit-transform-origin: 50% 100%;
transform-origin: 50% 100%;
}
.uk-animation-bottom-right {
-webkit-transform-origin: 100% 100%;
transform-origin: 100% 100%;
}
/* Keyframes: Fade
* Used by dropdown, datepicker and slideshow component
========================================================================== */
@-webkit-keyframes uk-fade {
0% { opacity: 0; }
100% { opacity: 1; }
}
@keyframes uk-fade {
0% { opacity: 0; }
100% { opacity: 1; }
}
/* Keyframes: Fade with slide
========================================================================== */
/*
* Top
*/
@-webkit-keyframes uk-fade-top {
0% {
opacity: 0;
-webkit-transform: translateY(-100%);
}
100% {
opacity: 1;
-webkit-transform: translateY(0);
}
}
@keyframes uk-fade-top {
0% {
opacity: 0;
transform: translateY(-100%);
}
100% {
opacity: 1;
transform: translateY(0);
}
}
/*
* Bottom
*/
@-webkit-keyframes uk-fade-bottom {
0% {
opacity: 0;
-webkit-transform: translateY(100%);
}
100% {
opacity: 1;
-webkit-transform: translateY(0);
}
}
@keyframes uk-fade-bottom {
0% {
opacity: 0;
transform: translateY(100%);
}
100% {
opacity: 1;
transform: translateY(0);
}
}
/*
* Left
*/
@-webkit-keyframes uk-fade-left {
0% {
opacity: 0;
-webkit-transform: translateX(-100%);
}
100% {
opacity: 1;
-webkit-transform: translateX(0);
}
}
@keyframes uk-fade-left {
0% {
opacity: 0;
transform: translateX(-100%);
}
100% {
opacity: 1;
transform: translateX(0);
}
}
/*
* Right
*/
@-webkit-keyframes uk-fade-right {
0% {
opacity: 0;
-webkit-transform: translateX(100%);
}
100% {
opacity: 1;
-webkit-transform: translateX(0);
}
}
@keyframes uk-fade-right {
0% {
opacity: 0;
transform: translateX(100%);
}
100% {
opacity: 1;
transform: translateX(0);
}
}
/* Keyframes: Fade with scale
========================================================================== */
/*
* Scale by 0.2
*/
@-webkit-keyframes uk-fade-scale-02 {
0% {
opacity: 0;
-webkit-transform: scale(0.2);
}
100% {
opacity: 1;
-webkit-transform: scale(1);
}
}
@keyframes uk-fade-scale-02 {
0% {
opacity: 0;
transform: scale(0.2);
}
100% {
opacity: 1;
transform: scale(1);
}
}
/*
* Scale by 1.5
* Used by slideshow component
*/
@-webkit-keyframes uk-fade-scale-15 {
0% {
opacity: 0;
-webkit-transform: scale(1.5);
}
100% {
opacity: 1;
-webkit-transform: scale(1);
}
}
@keyframes uk-fade-scale-15 {
0% {
opacity: 0;
transform: scale(1.5);
}
100% {
opacity: 1;
transform: scale(1);
}
}
/*
* Scale by 1.8
*/
@-webkit-keyframes uk-fade-scale-18 {
0% {
opacity: 0;
-webkit-transform: scale(1.8);
}
100% {
opacity: 1;
-webkit-transform: scale(1);
}
}
@keyframes uk-fade-scale-18 {
0% {
opacity: 0;
transform: scale(1.8);
}
100% {
opacity: 1;
transform: scale(1);
}
}
/* Keyframes: Slide
* Used by slideshow component
========================================================================== */
/*
* Left
*/
@-webkit-keyframes uk-slide-left {
0% { -webkit-transform: translateX(-100%); }
100% { -webkit-transform: translateX(0); }
}
@keyframes uk-slide-left {
0% { transform: translateX(-100%); }
100% { transform: translateX(0); }
}
/*
* Right
*/
@-webkit-keyframes uk-slide-right {
0% { -webkit-transform: translateX(100%); }
100% { -webkit-transform: translateX(0); }
}
@keyframes uk-slide-right {
0% { transform: translateX(100%); }
100% { transform: translateX(0); }
}
/*
* Left third
*/
@-webkit-keyframes uk-slide-left-33 {
0% { -webkit-transform: translateX(33%); }
100% { -webkit-transform: translateX(0); }
}
@keyframes uk-slide-left-33 {
0% { transform: translateX(33%); }
100% { transform: translateX(0); }
}
/*
* Right third
*/
@-webkit-keyframes uk-slide-right-33 {
0% { -webkit-transform: translateX(-33%); }
100% { -webkit-transform: translateX(0); }
}
@keyframes uk-slide-right-33 {
0% { transform: translateX(-33%); }
100% { transform: translateX(0); }
}
/* Keyframes: Scale
========================================================================== */
@-webkit-keyframes uk-scale-12 {
0% { -webkit-transform: scale(1.2); }
100% { -webkit-transform: scale(1); }
}
@keyframes uk-scale-12 {
0% { transform: scale(1.2); }
100% { transform: scale(1); }
}
/* Keyframes: Rotate
* Used by icon and search component
========================================================================== */
@-webkit-keyframes uk-rotate {
0% { -webkit-transform: rotate(0deg); }
100% { -webkit-transform: rotate(359deg); }
}
@keyframes uk-rotate {
0% { transform: rotate(0deg); }
100% { transform: rotate(359deg); }
}
/* Keyframes: Shake
========================================================================== */
@-webkit-keyframes uk-shake {
0%, 100% { -webkit-transform: translateX(0); }
10% { -webkit-transform: translateX(-9px); }
20% { -webkit-transform: translateX(8px); }
30% { -webkit-transform: translateX(-7px); }
40% { -webkit-transform: translateX(6px); }
50% { -webkit-transform: translateX(-5px); }
60% { -webkit-transform: translateX(4px); }
70% { -webkit-transform: translateX(-3px); }
80% { -webkit-transform: translateX(2px); }
90% { -webkit-transform: translateX(-1px); }
}
@keyframes uk-shake {
0%, 100% { transform: translateX(0); }
10% { transform: translateX(-9px); }
20% { transform: translateX(8px); }
30% { transform: translateX(-7px); }
40% { transform: translateX(6px); }
50% { transform: translateX(-5px); }
60% { transform: translateX(4px); }
70% { transform: translateX(-3px); }
80% { transform: translateX(2px); }
90% { transform: translateX(-1px); }
}
/* Keyframes: Fade with slide fixed
* Used by dropdown and search component
========================================================================== */
/*
* Top fixed
*/
@-webkit-keyframes uk-slide-top-fixed {
0% {
opacity: 0;
-webkit-transform: translateY(-10px);
}
100% {
opacity: 1;
-webkit-transform: translateY(0);
}
}
@keyframes uk-slide-top-fixed {
0% {
opacity: 0;
transform: translateY(-10px);
}
100% {
opacity: 1;
transform: translateY(0);
}
}
/*
* Bottom fixed
*/
@-webkit-keyframes uk-slide-bottom-fixed {
0% {
opacity: 0;
-webkit-transform: translateY(10px);
}
100% {
opacity: 1;
-webkit-transform: translateY(0);
}
}
@keyframes uk-slide-bottom-fixed {
0% {
opacity: 0;
transform: translateY(10px);
}
100% {
opacity: 1;
transform: translateY(0);
}
}
// Hooks
// ========================================================================
.hook-animation-misc;
.hook-animation-misc() {}

139
assets/js/uikit/less/article.less Executable file
View File

@@ -0,0 +1,139 @@
// Name: Article
// Description: Defines styles for articles within your page
//
// Component: `uk-article`
//
// Sub-objects: `uk-article-title`
// `uk-article-meta`
// `uk-article-lead`
// `uk-article-divider`
//
// Markup:
//
// <!-- uk-article -->
// <div class="uk-article">
// <h1 class="uk-article-title"></h1>
// <p class="uk-article-meta"></p>
// <p class="uk-article-lead"></p>
// <p></p>
// <hr class="uk-article-divider">
// <p></p>
// </div>
//
// ========================================================================
// Variables
// ========================================================================
@article-margin-top: 25px;
@article-title-font-size: 36px;
@article-title-line-height: 42px;
@article-title-font-weight: normal;
@article-title-text-transform: none;
@article-meta-font-size: 12px;
@article-meta-line-height: 18px;
@article-meta-color: #999;
@article-lead-color: #444;
@article-lead-font-size: 18px;
@article-lead-line-height: 24px;
@article-lead-font-weight: normal;
@article-divider-margin: 25px;
@article-divider-border: #ddd;
/* ========================================================================
Component: Article
========================================================================== */
/*
* Micro clearfix to make articles more robust
*/
.uk-article:before,
.uk-article:after {
content: " ";
display: table;
}
.uk-article:after { clear: both; }
/*
* Remove margin from the last-child
*/
.uk-article > :last-child { margin-bottom: 0; }
/*
* Vertical gutter for articles
*/
.uk-article + .uk-article { margin-top: @article-margin-top; }
/* Sub-object `uk-article-title`
========================================================================== */
.uk-article-title {
font-size: @article-title-font-size;
line-height: @article-title-line-height;
font-weight: @article-title-font-weight;
text-transform: @article-title-text-transform;
.hook-article-title;
}
.uk-article-title a {
color: inherit;
text-decoration: none;
}
/* Sub-object `uk-article-meta`
========================================================================== */
.uk-article-meta {
font-size: @article-meta-font-size;
line-height: @article-meta-line-height;
color: @article-meta-color;
.hook-article-meta;
}
/* Sub-object `uk-article-lead`
========================================================================== */
.uk-article-lead {
color: @article-lead-color;
font-size: @article-lead-font-size;
line-height: @article-lead-line-height;
font-weight: @article-lead-font-weight;
.hook-article-lead;
}
/* Sub-object `uk-article-divider`
========================================================================== */
.uk-article-divider {
margin-bottom: @article-divider-margin;
border-color: @article-divider-border;
.hook-article-divider;
}
* + .uk-article-divider { margin-top: @article-divider-margin; }
// Hooks
// ========================================================================
.hook-article-misc;
.hook-article-title() {}
.hook-article-meta() {}
.hook-article-lead() {}
.hook-article-divider() {}
.hook-article-misc() {}

111
assets/js/uikit/less/badge.less Executable file
View File

@@ -0,0 +1,111 @@
// Name: Badge
// Description: Defines styles for badges
//
// Component: `uk-badge`
//
// Modifiers: `uk-badge-notification`
// `uk-badge-success`
// `uk-badge-danger`
//
// ========================================================================
// Variables
// ========================================================================
@badge-background: #00a8e6;
@badge-padding-horizontal: 5px;
@badge-font-size: 10px;
@badge-font-weight: bold;
@badge-line-height: 14px;
@badge-color: #fff;
@badge-text-transform: none;
@badge-hover-color: #fff;
@badge-notification-font-size: 12px;
@badge-notification-line-height: 18px;
@badge-success-background: #8cc14c;
@badge-warning-background: #faa732;
@badge-danger-background: #da314b;
/* ========================================================================
Component: Badge
========================================================================== */
.uk-badge {
display: inline-block;
padding: 0 @badge-padding-horizontal;
background: @badge-background;
font-size: @badge-font-size;
font-weight: @badge-font-weight;
line-height: @badge-line-height;
color: @badge-color;
text-align: center;
vertical-align: middle;
text-transform: @badge-text-transform;
.hook-badge;
}
/*
* Keep color when badge is a link
*/
a.uk-badge:hover { color: @badge-hover-color; }
/* Modifier: `uk-badge-notification`;
========================================================================== */
.uk-badge-notification {
-moz-box-sizing: border-box;
box-sizing: border-box;
min-width: @badge-notification-line-height;
border-radius: 500px;
font-size: @badge-notification-font-size;
line-height: @badge-notification-line-height;
}
/* Color modifier
========================================================================== */
/*
* Modifier: `uk-badge-success`
*/
.uk-badge-success {
background-color: @badge-success-background;
.hook-badge-success;
}
/*
* Modifier: `uk-badge-warning`
*/
.uk-badge-warning {
background-color: @badge-warning-background;
.hook-badge-warning;
}
/*
* Modifier: `uk-badge-danger`
*/
.uk-badge-danger {
background-color: @badge-danger-background;
.hook-badge-danger;
}
// Hooks
// ========================================================================
.hook-badge-misc;
.hook-badge() {}
.hook-badge-success() {}
.hook-badge-warning() {}
.hook-badge-danger() {}
.hook-badge-misc() {}

521
assets/js/uikit/less/base.less Executable file
View File

@@ -0,0 +1,521 @@
// Name: Base
// Description: Sets default values for HTML elements
//
// Component: `uk-h1`, `uk-h2`, `uk-h3`, `uk-h4`, `uk-h5`, `uk-h6`
// `uk-link`
// `uk-img-preserve`
//
// ========================================================================
// Variables
// ========================================================================
@base-body-background: #fff;
@base-body-font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
@base-body-font-weight: normal;
@base-body-font-size: 14px;
@base-body-line-height: 20px;
@base-body-color: #444;
@base-link-color: #07D;
@base-link-text-decoration: none;
@base-link-hover-color: #059;
@base-link-hover-text-decoration: underline;
@base-code-color: #D05;
@base-code-font-size: 12px;
@base-code-font-family: Consolas, monospace, serif;
@base-em-color: #D05;
@base-ins-background: #ffa;
@base-ins-color: #444;
@base-mark-background: #ffa;
@base-mark-color: #444;
@base-quote-font-style: italic;
@base-margin-vertical: 15px;
@base-heading-font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
@base-heading-font-weight: normal;
@base-heading-color: #444;
@base-heading-text-transform: none;
@base-heading-margin-top: 25px;
@base-h1-font-size: 36px;
@base-h1-line-height: 42px;
@base-h2-font-size: 24px;
@base-h2-line-height: 30px;
@base-h3-font-size: 18px;
@base-h3-line-height: 24px;
@base-h4-font-size: 16px;
@base-h4-line-height: 22px;
@base-h5-font-size: 14px;
@base-h5-line-height: 20px;
@base-h6-font-size: 12px;
@base-h6-line-height: 18px;
@base-list-padding-left: 30px;
@base-hr-margin-vertical: @base-margin-vertical;
@base-hr-border: #ddd;
@base-hr-border-width: 1px;
@base-blockquote-padding-left: 15px;
@base-blockquote-border: #ddd;
@base-blockquote-border-width: 5px;
@base-blockquote-font-size: 16px;
@base-blockquote-line-height: 22px;
@base-blockquote-font-style: italic;
@base-pre-padding: 10px;
@base-pre-background: #f5f5f5;
@base-pre-color: #444;
@base-pre-font-size: 12px;
@base-pre-line-height: 18px;
@base-pre-font-family: @base-code-font-family;
@base-selection-background: #39f;
@base-selection-color: #fff;
/* ========================================================================
Component: Base
========================================================================== */
/*
* 1. Normalizes default `font-family` and sets `font-size` here to support `rem` units
* 2. Prevents iOS text size adjust after orientation change, without disabling user zoom
* 3. Style
*/
html {
/* 1 */
font: @base-body-font-weight @base-body-font-size e("/") @base-body-line-height @base-body-font-family;
/* 2 */
-webkit-text-size-adjust: 100%;
-ms-text-size-adjust: 100%;
/* 3 */
background: @base-body-background;
color: @base-body-color;
.hook-base-body;
}
/*
* Removes default margin.
*/
body { margin: 0; }
/* Links
========================================================================== */
/*
* Remove the gray background color from active links in IE 10.
*/
a { background: transparent; }
/*
* Improves readability when focused and also mouse hovered in all browsers.
*/
a:active,
a:hover { outline: 0; }
/*
* Style
*/
a,
.uk-link {
color: @base-link-color;
text-decoration: @base-link-text-decoration;
cursor: pointer;
}
a:hover,
.uk-link:hover {
color: @base-link-hover-color;
text-decoration: @base-link-hover-text-decoration;
}
/* Text-level semantics
========================================================================== */
/*
* Addresses styling not present in Chrome, Safari, Opera and IE 8/9/10.
*/
abbr[title] { border-bottom: 1px dotted; }
/*
* Addresses style set to `bolder` in Firefox
*/
b,
strong { font-weight: bold; }
/*
* 1. Address odd `em`-unit font size rendering in all browsers.
* 2. Consolas has a better baseline in running text compared to `Courier`
*/
:not(pre) > code,
:not(pre) > kbd,
:not(pre) > samp {
/* 1 */
font-size: @base-code-font-size;
/* 2 */
font-family: @base-code-font-family;
/* 3 */
color: @base-code-color;
white-space: nowrap;
.hook-base-code;
}
/*
* Emphasize
*/
em { color: @base-em-color; }
/*
* Insert
*/
ins {
background: @base-ins-background;
color: @base-ins-color;
text-decoration: none;
}
/*
* Mark
* Note: Addresses styling not present in IE 8/9.
*/
mark {
background: @base-mark-background;
color: @base-mark-color;
}
/*
* Quote
*/
q { font-style: @base-quote-font-style; }
/*
* Addresses inconsistent and variable font size in all browsers.
*/
small { font-size: 80%; }
/*
* Prevents `sub` and `sup` affecting `line-height` in all browsers.
*/
sub,
sup {
font-size: 75%;
line-height: 0;
position: relative;
vertical-align: baseline;
}
sup { top: -0.5em; }
sub { bottom: -0.25em; }
/* Images
========================================================================== */
/*
* 1. Responsiveness: Sets a maximum width relative to the parent and auto scales the height
* 2. Corrects `max-width` behavior if padding and border are used
* 3. Remove border when inside `a` element in IE 8/9/10.
* 4. Remove the gap between images and the bottom of their containers
*/
img {
/* 1 */
max-width: 100%;
height: auto;
/* 2 */
-moz-box-sizing: border-box;
box-sizing: border-box;
/* 3 */
border: 0;
/* 4 */
vertical-align: middle;
}
/*
* Preserve original image dimensions
*/
.uk-img-preserve,
.uk-img-preserve img { max-width: none; }
/*
* Correct overflow not hidden in IE 9/10/11.
*/
svg:not(:root) { overflow: hidden; }
/* Block elements
========================================================================== */
/*
* Reset margin
*/
blockquote,
figure { margin: 0; }
/*
* Margins
*/
p,
ul,
ol,
dl,
blockquote,
pre,
address,
fieldset,
figure { margin: 0 0 @base-margin-vertical 0; }
* + p,
* + ul,
* + ol,
* + dl,
* + blockquote,
* + pre,
* + address,
* + fieldset,
* + figure { margin-top: @base-margin-vertical; }
/* Headings
========================================================================== */
h1, h2, h3, h4, h5, h6 {
margin: 0 0 @base-margin-vertical 0;
font-family: @base-heading-font-family;
font-weight: @base-heading-font-weight;
color: @base-heading-color;
text-transform: @base-heading-text-transform;
}
/*
* Margins
*/
* + h1,
* + h2,
* + h3,
* + h4,
* + h5,
* + h6 { margin-top: @base-heading-margin-top; }
/*
* Sizes
*/
h1, .uk-h1 {
font-size: @base-h1-font-size;
line-height: @base-h1-line-height;
}
h2, .uk-h2 {
font-size: @base-h2-font-size;
line-height: @base-h2-line-height;
}
h3, .uk-h3 {
font-size: @base-h3-font-size;
line-height: @base-h3-line-height;
}
h4, .uk-h4 {
font-size: @base-h4-font-size;
line-height: @base-h4-line-height;
}
h5, .uk-h5 {
font-size: @base-h5-font-size;
line-height: @base-h5-line-height;
}
h6, .uk-h6 {
font-size: @base-h6-font-size;
line-height: @base-h6-line-height;
}
/* Lists
========================================================================== */
ul,
ol { padding-left: @base-list-padding-left; }
/*
* Reset margin for nested lists
*/
ul > li > ul,
ul > li > ol,
ol > li > ol,
ol > li > ul { margin: 0; }
/* Description lists
========================================================================== */
dt { font-weight: bold; }
dd { margin-left: 0; }
/* Horizontal rules
========================================================================== */
/*
* 1. Address differences between Firefox and other browsers.
* 2. Style
*/
hr {
/* 1 */
-moz-box-sizing: content-box;
box-sizing: content-box;
height: 0;
/* 2 */
margin: @base-hr-margin-vertical 0;
border: 0;
border-top: @base-hr-border-width solid @base-hr-border;
}
/* Address
========================================================================== */
address { font-style: normal; }
/* Blockquotes
========================================================================== */
blockquote {
padding-left: @base-blockquote-padding-left;
border-left: @base-blockquote-border-width solid @base-blockquote-border;
font-size: @base-blockquote-font-size;
line-height: @base-blockquote-line-height;
font-style: @base-blockquote-font-style;
}
/* Preformatted text
========================================================================== */
/*
* 1. Contain overflow in all browsers.
*/
pre {
padding: @base-pre-padding;
background: @base-pre-background;
font: @base-pre-font-size e("/") @base-pre-line-height @base-pre-font-family;
color: @base-pre-color;
-moz-tab-size: 4;
tab-size: 4;
/* 1 */
overflow: auto;
.hook-base-pre;
}
/* Selection pseudo-element
========================================================================== */
::-moz-selection {
background: @base-selection-background;
color: @base-selection-color;
text-shadow: none;
}
::selection {
background: @base-selection-background;
color: @base-selection-color;
text-shadow: none;
}
/* HTML5 elements
========================================================================== */
/*
* Corrects `block` display not defined in IE 8/9.
*/
article,
aside,
details,
figcaption,
figure,
footer,
header,
main,
nav,
section,
summary { display: block; }
/*
* Addresses inconsistent vertical alignment of `progress` in Chrome, Firefox and Opera.
*/
progress { vertical-align: baseline; }
/*
* Prevent displaying `audio` without controls in Chrome, Safari and Opera
*/
audio:not([controls]) { display: none; }
/*
* Address `[hidden]` styling not present in IE 8/9.
* Hide the `template` element in IE and Safari
*/
[hidden],
template { display: none; }
/* Iframe
========================================================================== */
iframe { border: 0; }
/* Fix viewport for IE10 snap mode
========================================================================== */
@media screen and (max-width: 400px) {
@-ms-viewport{
width: device-width;
}
}
// Hooks
// ========================================================================
.hook-base-misc;
.hook-base-body() {}
.hook-base-code() {}
.hook-base-pre() {}
.hook-base-misc() {}

View File

@@ -0,0 +1,86 @@
// Name: Breadcrumb
// Description: Defines styles for a breadcrumb navigation
//
// Component: `uk-breadcrumb`
//
// States: `uk-active`
//
// Markup:
//
// <!-- uk-breadcrumb -->
// <ul class="uk-breadcrumb">
// <li><a href=""></a></li>
// <li><span></span></li>
// <li class="uk-active"><span></span></li>
// </ul>
//
// ========================================================================
// Variables
// ========================================================================
@breadcrumb-font-size: 1rem;
@breadcrumb-divider: "/";
@breadcrumb-divider-margin: 8px;
@breadcrumb-disabled-color: #999;
/* ========================================================================
Component: Breadcrumb
========================================================================== */
/*
* 1. Remove default list style
* 2. Remove whitespace between child elements when using `inline-block`
*/
.uk-breadcrumb {
/* 1 */
padding: 0;
list-style: none;
/* 2 */
font-size: 0.001px;
.hook-breadcrumb;
}
/* Items
========================================================================== */
/*
* Reset whitespace hack
*/
.uk-breadcrumb > li {
font-size: @breadcrumb-font-size;
vertical-align: top;
}
.uk-breadcrumb > li,
.uk-breadcrumb > li > a,
.uk-breadcrumb > li > span { display: inline-block; }
.uk-breadcrumb > li:nth-child(n+2):before {
content: @breadcrumb-divider;
display: inline-block;
margin: 0 @breadcrumb-divider-margin;
.hook-breadcrumb-divider;
}
/*
* Disabled
*/
.uk-breadcrumb > li:not(.uk-active) > span { color: @breadcrumb-disabled-color; }
// Hooks
// ========================================================================
.hook-breadcrumb-misc;
.hook-breadcrumb() {}
.hook-breadcrumb-divider() {}
.hook-breadcrumb-misc() {}

407
assets/js/uikit/less/button.less Executable file
View File

@@ -0,0 +1,407 @@
// Name: Button
// Description: Defines styles for buttons
//
// Component: `uk-button`
//
// Sub-objects: `uk-button-group`
// `uk-button-dropdown`
//
// Modifiers: `uk-button-primary`
// `uk-button-success`
// `uk-button-danger`
// `uk-button-link`
// `uk-button-mini`
// `uk-button-small`
// `uk-button-large`
//
// States: `uk-active`
//
// Markup:
//
// <!-- uk-button-group -->
// <div class="uk-button-group">
// <button class="uk-button"></button>
// <button class="uk-button"></button>
// </div>
//
// <!-- uk-button-dropdown -->
// <div class="uk-button-dropdown" data-uk-dropdown>
// <button class="uk-button"></button>
// <div class="uk-dropdown uk-dropdown-small">
// <ul class="uk-nav uk-nav-dropdown">
// <li><a href=""></a></li>
// </ul>
// </div>
// </div>
//
// ========================================================================
// Variables
// ========================================================================
@button-height: 30px;
@button-mini-height: 20px;
@button-small-height: 25px;
@button-large-height: 40px;
@button-line-height: 30px;
@button-mini-line-height: 20px;
@button-small-line-height: 25px;
@button-large-line-height: 40px;
@button-mini-font-size: 11px;
@button-small-font-size: 12px;
@button-large-font-size: 16px;
@button-padding-horizontal: 12px;
@button-mini-padding-horizontal: 6px;
@button-small-padding-horizontal: 10px;
@button-large-padding-horizontal: 15px;
@button-font-size: 1rem;
@button-background: #eee;
@button-color: #444;
@button-hover-background: #f5f5f5;
@button-hover-color: #444;
@button-active-background: #ddd;
@button-active-color: #444;
@button-primary-background: #00a8e6;
@button-primary-color: #fff;
@button-primary-hover-background: #35b3ee;
@button-primary-hover-color: #fff;
@button-primary-active-background: #0091ca;
@button-primary-active-color: #fff;
@button-success-background: #8cc14c;
@button-success-color: #fff;
@button-success-hover-background: #8ec73b;
@button-success-hover-color: #fff;
@button-success-active-background: #72ae41;
@button-success-active-color: #fff;
@button-danger-background: #da314b;
@button-danger-color: #fff;
@button-danger-hover-background: #e4354f;
@button-danger-hover-color: #fff;
@button-danger-active-background: #c91032;
@button-danger-active-color: #fff;
@button-disabled-background: #f5f5f5;
@button-disabled-color: #999;
@button-link-color: #07D;
@button-link-hover-color: #059;
@button-link-hover-text-decoration: underline;
@button-link-disabled-color: #999;
/* ========================================================================
Component: Button
========================================================================== */
/*
* Removes inner padding and border in Firefox 4+.
*/
.uk-button::-moz-focus-inner {
border: 0;
padding: 0;
}
/*
* 1. Correct inability to style clickable `input` types in iOS.
* 2. Remove margins in Chrome, Safari and Opera.
* 3. Remove borders for `button`.
* 4. Address `overflow` set to `hidden` in IE 8/9/10/11.
* 5. Correct `font` properties and `color` not being inherited for `button`.
* 6. Address inconsistent `text-transform` inheritance which is only inherit in Firefox and IE
* 7. Style
* 8. `line-height` is used to create a height
* 9. `min-height` is necessary for `input` elements in Firefox and Opera because `line-height` is not working.
* 10. Reset button group whitespace hack
* 11. Required for `a`.
*/
.uk-button {
/* 1 */
-webkit-appearance: none;
/* 2 */
margin: 0;
/* 3 */
border: none;
/* 4 */
overflow: visible;
/* 5 */
font: inherit;
color: @button-color;
/* 6 */
text-transform: none;
/* 7 */
display: inline-block;
-moz-box-sizing: border-box;
box-sizing: border-box;
padding: 0 @button-padding-horizontal;
background: @button-background;
vertical-align: middle;
/* 8 */
line-height: @button-line-height;
/* 9 */
min-height: @button-height;
/* 10 */
font-size: @button-font-size;
/* 11 */
text-decoration: none;
text-align: center;
.hook-button;
}
.uk-button:not(:disabled) { cursor: pointer; }
/*
* Hover
* 1. Apply hover style also to focus state
* 2. Remove default focus style
* 3. Required for `a` elements
*/
.uk-button:hover,
.uk-button:focus { // 1
background-color: @button-hover-background;
color: @button-hover-color;
/* 2 */
outline: none;
/* 3 */
text-decoration: none;
.hook-button-hover;
}
/* Active */
.uk-button:active,
.uk-button.uk-active {
background-color: @button-active-background;
color: @button-active-color;
.hook-button-active;
}
/* Color modifiers
========================================================================== */
/*
* Modifier: `uk-button-primary`
*/
.uk-button-primary {
background-color: @button-primary-background;
color: @button-primary-color;
.hook-button-primary;
}
/* Hover */
.uk-button-primary:hover,
.uk-button-primary:focus {
background-color: @button-primary-hover-background;
color: @button-primary-hover-color;
.hook-button-primary-hover;
}
/* Active */
.uk-button-primary:active,
.uk-button-primary.uk-active {
background-color: @button-primary-active-background;
color: @button-primary-active-color;
.hook-button-primary-active;
}
/*
* Modifier: `uk-button-success`
*/
.uk-button-success {
background-color: @button-success-background;
color: @button-success-color;
.hook-button-success;
}
/* Hover */
.uk-button-success:hover,
.uk-button-success:focus {
background-color: @button-success-hover-background;
color: @button-success-hover-color;
.hook-button-success-hover;
}
/* Active */
.uk-button-success:active,
.uk-button-success.uk-active {
background-color: @button-success-active-background;
color: @button-success-active-color;
.hook-button-success-active;
}
/*
* Modifier: `uk-button-danger`
*/
.uk-button-danger {
background-color: @button-danger-background;
color: @button-danger-color;
.hook-button-danger;
}
/* Hover */
.uk-button-danger:hover,
.uk-button-danger:focus {
background-color: @button-danger-hover-background;
color: @button-danger-hover-color;
.hook-button-danger-hover;
}
/* Active */
.uk-button-danger:active,
.uk-button-danger.uk-active {
background-color: @button-danger-active-background;
color: @button-danger-active-color;
.hook-button-danger-active;
}
/* Disabled state
* Overrides also the color modifiers
========================================================================== */
/* Equal for all button types */
.uk-button:disabled {
background-color: @button-disabled-background;
color: @button-disabled-color;
.hook-button-disable;
}
/* Modifier: `uk-button-link`
========================================================================== */
/* Reset */
.uk-button-link,
.uk-button-link:hover,
.uk-button-link:focus,
.uk-button-link:active,
.uk-button-link.uk-active,
.uk-button-link:disabled {
border-color: transparent;
background: none;
.hook-button-link;
}
/* Color */
.uk-button-link { color: @button-link-color; }
.uk-button-link:hover,
.uk-button-link:focus,
.uk-button-link:active,
.uk-button-link.uk-active {
color: @button-link-hover-color;
text-decoration: @button-link-hover-text-decoration;
}
.uk-button-link:disabled { color: @button-link-disabled-color; }
/* Focus */
.uk-button-link:focus { outline: 1px dotted; }
/* Size modifiers
========================================================================== */
.uk-button-mini {
min-height: @button-mini-height;
padding: 0 @button-mini-padding-horizontal;
line-height: @button-mini-line-height;
font-size: @button-mini-font-size;
}
.uk-button-small {
min-height: @button-small-height;
padding: 0 @button-small-padding-horizontal;
line-height: @button-small-line-height;
font-size: @button-small-font-size;
}
.uk-button-large {
min-height: @button-large-height;
padding: 0 @button-large-padding-horizontal;
line-height: @button-large-line-height;
font-size: @button-large-font-size;
.hook-button-large;
}
/* Sub-object `uk-button-group`
========================================================================== */
/*
* 1. Behave like buttons
* 2. Create position context for dropdowns
* 3. Remove whitespace between child elements when using `inline-block`
* 4. Prevent buttons from wrapping
* 5. Remove whitespace between child elements when using `inline-block`
*/
.uk-button-group {
/* 1 */
display: inline-block;
vertical-align: middle;
/* 2 */
position: relative;
/* 3 */
font-size: 0.001px;
/* 4 */
white-space: nowrap;
}
.uk-button-group > * { display: inline-block; }
/* 5 */
.uk-button-group .uk-button { vertical-align: top; }
/* Sub-object: `uk-button-dropdown`
========================================================================== */
/*
* 1. Behave like buttons
* 2. Create position context for dropdowns
*/
.uk-button-dropdown {
/* 1 */
display: inline-block;
vertical-align: middle;
/* 2 */
position: relative;
}
// Hooks
// ========================================================================
.hook-button-misc;
.hook-button() {}
.hook-button-hover() {}
.hook-button-active() {}
.hook-button-primary() {}
.hook-button-primary-hover() {}
.hook-button-primary-active() {}
.hook-button-success() {}
.hook-button-success-hover() {}
.hook-button-success-active() {}
.hook-button-danger() {}
.hook-button-danger-hover() {}
.hook-button-danger-active() {}
.hook-button-disable() {}
.hook-button-link() {}
.hook-button-large() {}
.hook-button-misc() {}

133
assets/js/uikit/less/close.less Executable file
View File

@@ -0,0 +1,133 @@
// Name: Close
// Description: Defines styles for a close button
//
// Component: `uk-close`
//
// Modifiers: `uk-close-alt`
//
// Uses: Icon: FontAwesome
//
// Used by: Alert
// Modal
//
// ========================================================================
// Variables
// ========================================================================
@close-size: 20px;
@close-alt-padding: 2px;
@close-alt-background: #eee;
/* ========================================================================
Component: Close
========================================================================== */
/*
* Removes inner padding and border in Firefox 4+.
*/
.uk-close::-moz-focus-inner {
border: 0;
padding: 0;
}
/*
* 1. Correct inability to style clickable `input` types in iOS.
* 2. Remove margins in Chrome, Safari and Opera.
* 3. Remove borders for `button`.
* 4. Address `overflow` set to `hidden` in IE 8/9/10/11.
* 5. Correct `font` properties and `color` not being inherited for `button`.
* 6. Address inconsistent `text-transform` inheritance which is only inherit in Firefox and IE
* 7. Remove default `button` padding and background color
* 8. Style
*/
.uk-close {
/* 1 */
-webkit-appearance: none;
/* 2 */
margin: 0;
/* 3 */
border: none;
/* 4 */
overflow: visible;
/* 5 */
font: inherit;
color: inherit;
/* 6 */
text-transform: none;
/* 7. */
padding: 0;
background: transparent;
/* 8 */
display: inline-block;
-moz-box-sizing: content-box;
box-sizing: content-box;
width: @close-size;
line-height: @close-size;
text-align: center;
vertical-align: middle;
opacity: 0.3;
.hook-close;
}
/* Icon */
.uk-close:after {
display: block;
content: "\f00d";
font-family: FontAwesome;
}
/*
* Hover
* 1. Apply hover style also to focus state
* 2. Remove default focus style
* 3. Required for `a` elements
*/
.uk-close:hover,
.uk-close:focus { // 1
opacity: 0.5;
/* 2 */
outline: none;
/* 3 */
color: inherit;
text-decoration: none;
cursor: pointer;
}
/* Modifier
========================================================================== */
.uk-close-alt {
padding: @close-alt-padding;
border-radius: 50%;
background: @close-alt-background;
opacity: 1;
.hook-close-alt;
}
/* Hover */
.uk-close-alt:hover,
.uk-close-alt:focus { opacity: 1; }
/* Icon */
.uk-close-alt:after { opacity: 0.5; }
.uk-close-alt:hover:after,
.uk-close-alt:focus:after { opacity: 0.8; }
// Hooks
// ========================================================================
.hook-close-misc;
.hook-close() {}
.hook-close-alt() {}
.hook-close-misc() {}

172
assets/js/uikit/less/comment.less Executable file
View File

@@ -0,0 +1,172 @@
// Name: Comment
// Description: Defines styles for comment threads
//
// Component: `uk-comment`
//
// Sub-objects: `uk-comment-header`
// `uk-comment-avatar`
// `uk-comment-title`
// `uk-comment-meta`
// `uk-comment-body`
// `uk-comment-list`
// `uk-comment-primary`
//
// Markup:
//
// <!-- uk-comment -->
// <article class="uk-comment">
// <header class="uk-comment-header">
// <img class="uk-comment-avatar" src="avatar.svg" width="50" height="50" alt="">
// <h4 class="uk-comment-title"></h4>
// <div class="uk-comment-meta"></div>
// </header>
// <div class="uk-comment-body">
// <p></p>
// </div>
// </article>
//
// ========================================================================
// Variables
// ========================================================================
@comment-header-margin-bottom: 15px;
@comment-avatar-margin-right: 15px;
@comment-title-margin-top: 5px;
@comment-title-font-size: 16px;
@comment-title-line-height: 22px;
@comment-meta-margin-top: 2px;
@comment-meta-color: #999;
@comment-meta-font-size: 11px;
@comment-meta-line-height: 16px;
@comment-list-margin-top: 15px;
@comment-list-padding-left: 100px;
/* ========================================================================
Component: Comment
========================================================================== */
.uk-comment {
.hook-comment;
}
/* Sub-object `uk-comment-header`
========================================================================== */
.uk-comment-header {
margin-bottom: @comment-header-margin-bottom;
.hook-comment-header;
}
/*
* Micro clearfix
*/
.uk-comment-header:before,
.uk-comment-header:after {
content: " ";
display: table;
}
.uk-comment-header:after { clear: both; }
/* Sub-object `uk-comment-avatar`
========================================================================== */
.uk-comment-avatar {
margin-right: @comment-avatar-margin-right;
float: left;
.hook-comment-avatar;
}
/* Sub-object `uk-comment-title`
========================================================================== */
.uk-comment-title {
margin: @comment-title-margin-top 0 0 0;
font-size: @comment-title-font-size;
line-height: @comment-title-line-height;
.hook-comment-title;
}
/* Sub-object `uk-comment-meta`
========================================================================== */
.uk-comment-meta {
margin: @comment-meta-margin-top 0 0 0;
font-size: @comment-meta-font-size;
line-height: @comment-meta-line-height;
color: @comment-meta-color;
.hook-comment-meta;
}
/* Sub-object `uk-comment-body`
========================================================================== */
.uk-comment-body {
.hook-comment-body;
}
/*
* Remove margin from the last-child
*/
.uk-comment-body > :last-child { margin-bottom: 0; }
/* Sub-object `uk-comment-list`
========================================================================== */
.uk-comment-list {
padding: 0;
list-style: none;
}
.uk-comment-list .uk-comment + ul {
margin: @comment-list-margin-top 0 0 0;
list-style: none;
}
.uk-comment-list > li:nth-child(n+2),
.uk-comment-list .uk-comment + ul > li:nth-child(n+2) { margin-top: @comment-list-margin-top; }
/* Tablet and bigger */
@media (min-width: @breakpoint-medium) {
.uk-comment-list .uk-comment + ul { padding-left: @comment-list-padding-left; }
}
/* Modifier `uk-comment-primary`
========================================================================== */
.uk-comment-primary {
.hook-comment-primary;
}
// Hooks
// ========================================================================
.hook-comment-misc;
.hook-comment() {}
.hook-comment-header() {}
.hook-comment-avatar() {}
.hook-comment-title() {}
.hook-comment-meta() {}
.hook-comment-body() {}
.hook-comment-primary() {}
.hook-comment-misc() {}

View File

@@ -0,0 +1,70 @@
// Name: Description list
// Description: Defines styles for description lists
//
// Component: `uk-description-list`
//
// Modifiers: `uk-description-list-horizontal`
// `uk-description-list-line`
//
// ========================================================================
// Variables
// ========================================================================
@description-list-horizontal-width: 160px;
@description-list-horizontal-margin-left: 180px;
@description-list-line-margin-top: 5px;
@description-list-line-border-width: 1px;
@description-list-line-border: #ddd;
@description-list-line-color: #999;
/* ========================================================================
Component: Description list
========================================================================== */
/* Modifier: `uk-description-list-horizontal`
========================================================================== */
/* Tablet and bigger */
@media (min-width: @breakpoint-medium) {
.uk-description-list-horizontal { overflow: hidden; }
.uk-description-list-horizontal > dt {
width: @description-list-horizontal-width;
float: left;
clear: both;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
.uk-description-list-horizontal > dd { margin-left: @description-list-horizontal-margin-left; }
}
/* Modifier: `uk-description-list-line`
========================================================================== */
.uk-description-list-line > dt { font-weight: normal; }
.uk-description-list-line > dt:nth-child(n+2) {
margin-top: @description-list-line-margin-top;
padding-top: @description-list-line-margin-top;
border-top: @description-list-line-border-width solid @description-list-line-border;
}
.uk-description-list-line > dd { color: @description-list-line-color; }
// Hooks
// ========================================================================
.hook-description-list-misc;
.hook-description-list-misc() {}

View File

@@ -0,0 +1,272 @@
// Name: Dropdown
// Description: Defines styles for a toggleable dropdown
//
// Component: `uk-dropdown`
//
// Modifiers: `uk-dropdown-flip`
// `uk-dropdown-center`
// `uk-dropdown-justify`
// `uk-dropdown-up`
// `uk-dropdown-grid`
// `uk-dropdown-width-2`
// `uk-dropdown-width-3`
// `uk-dropdown-width-4`
// `uk-dropdown-width-5`
// `uk-dropdown-stack`
// `uk-dropdown-small`
// `uk-dropdown-navbar`
// `uk-dropdown-scrollable`
//
// States: `uk-open`
//
// Uses: Animation
// Grid: `uk-width-*`
// Panel: `uk-panel`
// Nav: `uk-nav`
//
// ========================================================================
// Variables
// ========================================================================
@dropdown-z-index: 1020;
@dropdown-width: 200px;
@dropdown-margin-top: 5px;
@dropdown-padding: 15px;
@dropdown-background: #f5f5f5;
@dropdown-color: #444;
@dropdown-font-size: 1rem;
@dropdown-animation: uk-fade;
@dropdown-divider-border-width: 1px;
@dropdown-divider-border: #ddd;
@dropdown-small-padding: 5px;
@dropdown-navbar-margin: 0;
@dropdown-navbar-background: #f5f5f5;
@dropdown-navbar-color: #444;
@dropdown-navbar-animation: uk-slide-top-fixed;
@dropdown-scrollable-height: 200px;
/* ========================================================================
Component: Dropdown
========================================================================== */
/*
* 1. Hide by default
* 2. Set position
* 3. Box-sizing is needed for `uk-dropdown-justify`
* 4. Set style
* 5. Reset button group whitespace hack
*/
.uk-dropdown {
/* 1 */
display: none;
/* 2 */
position: absolute;
top: 100%;
left: 0;
z-index: @dropdown-z-index;
/* 3 */
-moz-box-sizing: border-box;
box-sizing: border-box;
/* 4 */
width: @dropdown-width;
margin-top: @dropdown-margin-top;
padding: @dropdown-padding;
background: @dropdown-background;
color: @dropdown-color;
/* 5 */
font-size: @dropdown-font-size;
vertical-align: top;
.hook-dropdown;
}
/*
* 1. Show dropdown
* 2. Set animation
* 3. Needed for scale animation
*/
.uk-open > .uk-dropdown {
/* 1 */
display: block;
/* 2 */
-webkit-animation: @dropdown-animation 0.2s ease-in-out;
animation: @dropdown-animation 0.2s ease-in-out;
/* 3 */
-webkit-transform-origin: 0 0;
transform-origin: 0 0;
}
/* Alignment modifiers
========================================================================== */
/*
* Modifier `uk-dropdown-flip`
*/
.uk-dropdown-flip {
left: auto;
right: 0;
}
/*
* Modifier `uk-dropdown-up`
*/
.uk-dropdown-up {
top: auto;
bottom: 100%;
margin-top: auto;
margin-bottom: @dropdown-margin-top;
}
/* Nav in dropdown
========================================================================== */
.uk-dropdown .uk-nav { margin: 0 -@dropdown-padding; }
/* Grid and panel in dropdown
========================================================================== */
/*
* Vertical gutter
*/
/*
* Grid
* Higher specificity to override large gutter
*/
.uk-grid .uk-dropdown-grid + .uk-dropdown-grid { margin-top: @dropdown-padding; }
/* Panels */
.uk-dropdown-grid > [class*='uk-width-'] > .uk-panel + .uk-panel { margin-top: @dropdown-padding; }
/* Tablet and bigger */
@media (min-width: @breakpoint-medium) {
/*
* Horizontal gutter
*/
.uk-dropdown:not(.uk-dropdown-stack) > .uk-dropdown-grid {
margin-left: -@dropdown-padding ;
margin-right: -@dropdown-padding;
}
.uk-dropdown:not(.uk-dropdown-stack) > .uk-dropdown-grid > [class*='uk-width-'] {
padding-left: @dropdown-padding;
padding-right: @dropdown-padding;
}
/*
* Column divider
*/
.uk-dropdown:not(.uk-dropdown-stack) > .uk-dropdown-grid > [class*='uk-width-']:nth-child(n+2) { border-left: @dropdown-divider-border-width solid @dropdown-divider-border; }
/*
* Width multiplier for dropdown columns
*/
.uk-dropdown-width-2:not(.uk-dropdown-stack) { width: (@dropdown-width * 2); }
.uk-dropdown-width-3:not(.uk-dropdown-stack) { width: (@dropdown-width * 3); }
.uk-dropdown-width-4:not(.uk-dropdown-stack) { width: (@dropdown-width * 4); }
.uk-dropdown-width-5:not(.uk-dropdown-stack) { width: (@dropdown-width * 5); }
}
/* Phone landscape and smaller */
@media (max-width: @breakpoint-small-max) {
/*
* Stack columns and take full width
*/
.uk-dropdown-grid > [class*='uk-width-'] { width: 100%; }
/*
* Vertical gutter
*/
.uk-dropdown-grid > [class*='uk-width-']:nth-child(n+2) { margin-top: @dropdown-padding; }
}
/*
* Stack grid columns
*/
.uk-dropdown-stack > .uk-dropdown-grid > [class*='uk-width-'] { width: 100%; }
.uk-dropdown-stack > .uk-dropdown-grid > [class*='uk-width-']:nth-child(n+2) { margin-top: @dropdown-padding; }
/* Modifier `uk-dropdown-small`
========================================================================== */
/*
* Set min-width and text expands dropdown if needed
*/
.uk-dropdown-small {
min-width: 150px;
width: auto;
padding: @dropdown-small-padding;
white-space: nowrap;
}
/*
* Nav in dropdown
*/
.uk-dropdown-small .uk-nav { margin: 0 -@dropdown-small-padding; }
/* Modifier: `uk-dropdown-navbar`
========================================================================== */
.uk-dropdown-navbar {
margin-top: @dropdown-navbar-margin;
background: @dropdown-navbar-background;
color: @dropdown-navbar-color;
.hook-dropdown-navbar;
}
.uk-open > .uk-dropdown-navbar {
-webkit-animation: @dropdown-navbar-animation 0.2s ease-in-out;
animation: @dropdown-navbar-animation 0.2s ease-in-out;
}
/* Modifier `uk-dropdown-scrollable`
========================================================================== */
/*
* Usefull for long lists
*/
.uk-dropdown-scrollable {
overflow-y: auto;
max-height: @dropdown-scrollable-height;
}
// Hooks
// ========================================================================
.hook-dropdown-misc;
.hook-dropdown() {}
.hook-dropdown-navbar() {}
.hook-dropdown-misc() {}

623
assets/js/uikit/less/form.less Executable file
View File

@@ -0,0 +1,623 @@
// Name: Form
// Description: Defines styles for forms
//
// Component: `uk-form`
//
// Sub-objects: `uk-form-row`
// `uk-form-help-inline`
// `uk-form-help-block`
// `uk-form-label`
// `uk-form-controls`
// `uk-form-controls-condensed`
// `uk-form-icon`
//
// Modifiers: `uk-form-stacked`
// `uk-form-horizontal`
//
// Sub-modifiers: `uk-form-danger`
// `uk-form-success`
// `uk-form-small`
// `uk-form-large`
// `uk-form-blank`
// `uk-form-width-mini`
// `uk-form-width-small`
// `uk-form-width-medium`
// `uk-form-width-large`
// `uk-form-controls-text`
//
// Markup:
//
// <!-- uk-form -->
// <form class="uk-form">
// <div class="uk-form-row">
// <label class="uk-form-label" for="form-input-1"></label>
// <div class="uk-form-controls">
// <input type="text" id="form-input-1" placeholder="Text">
// </div>
// </div>
// </form>
//
// ========================================================================
// Variables
// ========================================================================
@form-height: 30px;
@form-padding: 4px 6px;
@form-border: #ddd;
@form-border-width: 1px;
@form-background: #fff;
@form-color: #444;
@form-focus-border: #99baca;
@form-focus-background: #f5fbfe;
@form-focus-color: #444;
@form-disabled-border: #ddd;
@form-disabled-background: #f5f5f5;
@form-disabled-color: #999;
@form-placeholder-color: #999;
@form-gutter: 15px;
@form-legend-border: #ddd;
@form-legend-border-width: 1px;
@form-legend-font-size: 18px;
@form-legend-line-height: 30px;
@form-small-height: 25px;
@form-large-height: 40px;
@form-small-padding: 3px 3px;
@form-large-padding: 8px 6px;
@form-small-font-size: 12px;
@form-large-font-size: 16px;
@form-danger-border: #dc8d99;
@form-danger-background: #fff7f8;
@form-danger-color: #c91032;
@form-success-border: #8ec73b;
@form-success-background: #fafff2;
@form-success-color: #539022;
@form-blank-border: #ddd;
@form-blank-border-style: dashed;
@form-mini-width: 40px;
@form-small-width: 130px;
@form-medium-width: 200px;
@form-large-width: 500px;
@form-help-inline-margin-left: 10px;
@form-help-block-margin-top: 5px;
@form-controls-condensed-margin-vertical: 5px;
@form-stacked-margin-bottom: 5px;
@form-stacked-font-weight: bold;
@form-horizontal-label-width: 200px;
@form-horizontal-label-margin-top: 5px;
@form-horizontal-controls-margin-left: 215px;
@form-horizontal-controls-text-padding-top: 5px;
@form-icon-width: 30px;
@form-icon-font-size: 14px;
@form-icon-color: #999;
/* ========================================================================
Component: Form
========================================================================== */
/*
* 1. Define consistent box sizing.
* Default is `content-box` with following exceptions set to `border-box`
* `button`, `select`, `input[type="checkbox"]` and `input[type="radio"]`
* `input[type="search"]` in Chrome, Safari and Opera
* `input[type="color"]` in Firefox
* 2. Address margins set differently in Firefox/IE and Chrome/Safari/Opera.
* 3. Remove `border-radius` in iOS.
* 4. Correct `font` properties and `color` not being inherited.
*/
.uk-form input,
.uk-form select,
.uk-form textarea {
/* 1 */
-moz-box-sizing: border-box;
box-sizing: border-box;
/* 2 */
margin: 0;
/* 3 */
border-radius: 0;
/* 4 */
font: inherit;
color: inherit;
}
/*
* Address inconsistent `text-transform` inheritance which is only inherit in Firefox
*/
.uk-form select { text-transform: none; }
/*
* 1. Correct `font` properties not being inherited.
* 2. Don't inherit the `font-weight` and use `bold` instead.
* NOTE: Both declarations don't work in Chrome, Safari and Opera.
*/
.uk-form optgroup {
/* 1 */
font: inherit;
/* 2 */
font-weight: bold;
}
/*
* Removes inner padding and border in Firefox 4+.
*/
.uk-form input::-moz-focus-inner {
border: 0;
padding: 0;
}
/*
* Removes excess padding in IE 8/9/10.
*/
.uk-form input[type="checkbox"],
.uk-form input[type="radio"] { padding: 0; }
/*
* Improves consistency of cursor style for clickable elements
*/
.uk-form input[type="checkbox"]:not(:disabled),
.uk-form input[type="radio"]:not(:disabled) { cursor: pointer; }
/*
* Remove default style in iOS.
*/
.uk-form textarea,
.uk-form input:not([type]),
.uk-form input[type="text"],
.uk-form input[type="password"],
.uk-form input[type="email"],
.uk-form input[type="url"],
.uk-form input[type="search"],
.uk-form input[type="tel"],
.uk-form input[type="number"],
.uk-form input[type="datetime"] { -webkit-appearance: none; }
/*
* Remove inner padding and search cancel button in Chrome, Safari and Opera on OS X.
*/
.uk-form input[type="search"]::-webkit-search-cancel-button,
.uk-form input[type="search"]::-webkit-search-decoration { -webkit-appearance: none; }
/*
* Fix the cursor style for Chrome's increment/decrement buttons. For certain
* `font-size` values of the `input`, it causes the cursor style of the
* decrement button to change from `default` to `text`.
*/
.uk-form input[type="number"]::-webkit-inner-spin-button,
.uk-form input[type="number"]::-webkit-outer-spin-button { height: auto; }
/*
* Define consistent border, margin, and padding.
*/
.uk-form fieldset {
border: none;
margin: 0;
padding: 0;
}
/*
* 1. Remove default vertical scrollbar in IE 8/9/10/11.
* 2. Improve readability and alignment in all browsers.
*/
.uk-form textarea {
/* 1 */
overflow: auto;
/* 2 */
vertical-align: top;
}
/*
* Removes placeholder transparency in Firefox.
*/
.uk-form ::-moz-placeholder { opacity: 1; }
/*
* Removes `box-shadow` for invalid controls in Firefox.
*/
.uk-form :invalid { box-shadow: none; }
/*
* Vertical alignment
*/
.uk-form input:not([type="radio"]):not([type="checkbox"]),
.uk-form select { vertical-align: middle; }
/* Style
========================================================================== */
/*
* Remove margin from the last-child
*/
.uk-form > :last-child { margin-bottom: 0; }
/*
* Controls
* Except for `range`, `radio`, `checkbox`, `file`, `submit`, `reset`, `button` and `image`
* 1. Must be `height` because `min-height` is not working in OSX
* 2. Responsiveness: Sets a maximum width relative to the parent to scale on narrower viewports
* 3. Vertical `padding` needed for `select` elements in Firefox
* 4. Style
*/
.uk-form select,
.uk-form textarea,
.uk-form input:not([type]),
.uk-form input[type="text"],
.uk-form input[type="password"],
.uk-form input[type="datetime"],
.uk-form input[type="datetime-local"],
.uk-form input[type="date"],
.uk-form input[type="month"],
.uk-form input[type="time"],
.uk-form input[type="week"],
.uk-form input[type="number"],
.uk-form input[type="email"],
.uk-form input[type="url"],
.uk-form input[type="search"],
.uk-form input[type="tel"],
.uk-form input[type="color"] {
/* 1 */
height: @form-height;
/* 2 */
max-width: 100%;
/* 3 */
padding: @form-padding;
/* 4 */
border: @form-border-width solid @form-border;
background: @form-background;
color: @form-color;
-webkit-transition: all linear 0.2s;
transition: all linear 0.2s;
.hook-form;
// Focus state
&:focus {
border-color: @form-focus-border;
outline: 0;
background: @form-focus-background;
color: @form-focus-color;
.hook-form-focus;
}
// Disabled state
&:disabled {
border-color: @form-disabled-border;
background-color: @form-disabled-background;
color: @form-disabled-color;
.hook-form-disabled;
}
}
/*
* Placeholder
*/
.uk-form :-ms-input-placeholder { color: @form-placeholder-color !important; }
.uk-form ::-moz-placeholder { color: @form-placeholder-color; }
.uk-form ::-webkit-input-placeholder { color: @form-placeholder-color; }
.uk-form :disabled:-ms-input-placeholder { color: @form-disabled-color !important; }
.uk-form :disabled::-moz-placeholder { color: @form-disabled-color; }
.uk-form :disabled::-webkit-input-placeholder { color: @form-disabled-color; }
/*
* Legend
* 1. Behave like block element
* 2. Correct `color` not being inherited in IE 8/9/10/11.
* 3. Remove padding
* 4. `margin-bottom` is not working in Safari and Opera.
* Using `padding` and :after instead to create the border
* 5. Style
*/
.uk-form legend {
/* 1 */
width: 100%;
/* 2 */
border: 0;
/* 3 */
padding: 0;
/* 4 */
padding-bottom: @form-gutter;
/* 5 */
font-size: @form-legend-font-size;
line-height: @form-legend-line-height;
.hook-form-legend;
}
/* 4 */
.uk-form legend:after {
content: "";
display: block;
border-bottom: @form-legend-border-width solid @form-legend-border;
}
/* Size modifiers
* Higher specificity needed to override defaults
========================================================================== */
select.uk-form-small,
textarea.uk-form-small,
input[type].uk-form-small,
input:not([type]).uk-form-small {
height: @form-small-height;
padding: @form-small-padding;
font-size: @form-small-font-size;
}
select.uk-form-large,
textarea.uk-form-large,
input[type].uk-form-large,
input:not([type]).uk-form-large {
height: @form-large-height;
padding: @form-large-padding;
font-size: @form-large-font-size;
}
/* Reset height
* Must be after size modifiers
========================================================================== */
.uk-form textarea,
.uk-form select[multiple],
.uk-form select[size] { height: auto; }
/* Validation states
* Using !important to keep the selector simple
========================================================================== */
/*
* Error state
*/
.uk-form-danger {
border-color: @form-danger-border !important;
background: @form-danger-background !important;
color: @form-danger-color !important;
.hook-form-danger;
}
/*
* Success state
*/
.uk-form-success {
border-color: @form-success-border !important;
background: @form-success-background !important;
color: @form-success-color !important;
.hook-form-success;
}
/* Style modifiers
* Using !important to keep the selector simple
========================================================================== */
/*
* Blank form
*/
.uk-form-blank {
border-color: transparent !important;
border-style: @form-blank-border-style !important;
background: none !important;
.hook-form-blank;
}
.uk-form-blank:focus {
border-color: @form-blank-border !important;
.hook-form-blank-focus;
}
/* Size sub-modifiers
========================================================================== */
/*
* Fixed widths
* Different widths for mini sized `input` and `select` elements
*/
input.uk-form-width-mini { width: @form-mini-width; }
select.uk-form-width-mini { width: (@form-mini-width + 25px); }
.uk-form-width-small { width: @form-small-width; }
.uk-form-width-medium { width: @form-medium-width; }
.uk-form-width-large { width: @form-large-width; }
/* Sub-objects: `uk-form-row`
* Groups labels and controls in rows
========================================================================== */
/*
* Micro clearfix
* Needed for `uk-form-horizontal` modifier
*/
.uk-form-row:before,
.uk-form-row:after {
content: " ";
display: table;
}
.uk-form-row:after { clear: both; }
/*
* Vertical gutter
*/
.uk-form-row + .uk-form-row { margin-top: @form-gutter; }
/* Help text
* Sub-object: `uk-form-help-inline`, `uk-form-help-block`
========================================================================== */
.uk-form-help-inline {
display: inline-block;
margin: 0 0 0 @form-help-inline-margin-left;
}
.uk-form-help-block { margin: @form-help-block-margin-top 0 0 0; }
/* Controls content
* Sub-object: `uk-form-controls`, `uk-form-controls-condensed`
========================================================================== */
/*
* Remove margins
*/
.uk-form-controls > :first-child { margin-top: 0; }
.uk-form-controls > :last-child { margin-bottom: 0; }
/*
* Group controls and text into blocks with a small spacing between blocks
*/
.uk-form-controls-condensed { margin: @form-controls-condensed-margin-vertical 0; }
/* Modifier: `uk-form-stacked`
* Requires sub-object: `uk-form-label`
========================================================================== */
.uk-form-stacked .uk-form-label {
display: block;
margin-bottom: @form-stacked-margin-bottom;
font-weight: @form-stacked-font-weight;
.hook-form-stacked-label;
}
/* Modifier: `uk-form-horizontal`
* Requires sub-objects: `uk-form-label`, `uk-form-controls`
========================================================================== */
/* Tablet portrait and smaller */
@media (max-width: @breakpoint-medium-max) {
/* Behave like `uk-form-stacked` */
.uk-form-horizontal .uk-form-label {
display: block;
margin-bottom: @form-stacked-margin-bottom;
font-weight: @form-stacked-font-weight;
.hook-form-stacked-label;
}
}
/* Desktop and bigger */
@media (min-width: @breakpoint-large) {
.uk-form-horizontal .uk-form-label {
width: @form-horizontal-label-width;
margin-top: @form-horizontal-label-margin-top;
float: left;
.hook-form-horizontal-label;
}
.uk-form-horizontal .uk-form-controls { margin-left: @form-horizontal-controls-margin-left; }
/* Better vertical alignment if controls are checkboxes and radio buttons with text */
.uk-form-horizontal .uk-form-controls-text { padding-top: @form-horizontal-controls-text-padding-top; }
}
/* Sub-object: `uk-form-icon`
========================================================================== */
/*
* 1. Container width fits its content
* 2. Create position context
* 3. Prevent `inline-block` consequences
*/
.uk-form-icon {
/* 1 */
display: inline-block;
/* 2 */
position: relative;
/* 3 */
max-width: 100%;
}
/*
* 1. Make form element clickable through icon
*/
.uk-form-icon > [class*='uk-icon-'] {
position: absolute;
top: 50%;
width: @form-icon-width;
margin-top: round(@form-icon-font-size / -2);
font-size: @form-icon-font-size;
color: @form-icon-color;
text-align: center;
/* 1 */
pointer-events: none;
}
.uk-form-icon:not(.uk-form-icon-flip) > input { padding-left: @form-icon-width !important; }
/*
* Sub-modifier: `uk-form-icon-flip`
*/
.uk-form-icon-flip > [class*='uk-icon-'] { right: 0; }
.uk-form-icon-flip > input { padding-right: @form-icon-width !important; }
// Hooks
// ========================================================================
.hook-form-misc;
.hook-form() {}
.hook-form-focus() {}
.hook-form-disabled() {}
.hook-form-legend() {}
.hook-form-danger() {}
.hook-form-success() {}
.hook-form-blank() {}
.hook-form-blank-focus() {}
.hook-form-stacked-label() {}
.hook-form-horizontal-label() {}
.hook-form-misc() {}

593
assets/js/uikit/less/grid.less Executable file
View File

@@ -0,0 +1,593 @@
// Name: Grid
// Description: Provides a responsive, fluid and nestable grid
//
// Component: `uk-grid`
// `uk-width-*`
// `uk-push-*`
// `uk-pull-*`
//
// Modifiers: `uk-grid-divider`
// `uk-grid-margin`
// `uk-grid-width-*`
// `uk-grid-preserve`
//
// Uses: Panel: `uk-panel`
//
// Used by: Dropdown
//
// Markup:
//
// <!-- uk-grid -->
// <div class="uk-grid">
// <div class="uk-width-1-2"></div>
// <div class="uk-width-1-2"></div>
// </div>
//
// <!-- uk-grid-divider -->
// <div class="uk-grid uk-grid-divider">
// <div class="uk-width-1-2"></div>
// <div class="uk-width-1-2"></div>
// </div>
// <hr class="uk-grid-divider">
// <div class="uk-grid uk-grid-divider">
// <div class="uk-width-1-2"></div>
// <div class="uk-width-1-2"></div>
// </div>
//
// ========================================================================
// Variables
// ========================================================================
@grid-gutter-horizontal: 25px;
@grid-gutter-vertical: 25px;
@grid-gutter-large-horizontal: 35px;
@grid-gutter-large-vertical: 35px;
@grid-gutter-small-horizontal: 10px;
@grid-gutter-small-vertical: 10px;
@grid-divider-border: #ddd;
@grid-divider-border-width: 1px;
/* ========================================================================
Component: Grid
========================================================================== */
/*
* Micro clearfix
*/
.uk-grid:before,
.uk-grid:after {
content: " ";
display: table;
}
.uk-grid:after { clear: both; }
/*
* 1. Needed for the gutter
* 2. Makes grid more robust so that it can be used with other block elements like lists
*/
.uk-grid {
/* 1 */
margin: 0 0 0 -@grid-gutter-horizontal;
/* 2 */
padding: 0;
list-style: none;
}
/*
* Grid cell
* 1. Makes grid more robust so that it can be used with other block elements
* 2. Create horizontal gutter
* 3. `float` is set by default so columns always behave the same and create a new block format context
*/
.uk-grid > * {
/* 1 */
margin: 0;
/* 2 */
padding-left: @grid-gutter-horizontal;
/* 3 */
float: left;
}
/*
* Remove margin from the last-child
*/
.uk-grid > * > :last-child { margin-bottom: 0; }
/* Grid gutter
========================================================================== */
/*
* Vertical gutter
*/
.uk-grid + .uk-grid { margin-top: @grid-gutter-vertical; }
/*
* This class is set by JavaScript and applies a vertical gutter if the columns stack or float into the next row
* Higher specificity to override margin
*/
.uk-grid > .uk-grid-margin { margin-top: @grid-gutter-vertical; }
/*
* Vertical gutter for panels
*/
.uk-grid > * > .uk-panel + .uk-panel { margin-top: @grid-gutter-vertical; }
/*
* Larger gutter for large screens
*/
/* Large screen and bigger */
@media (min-width: @breakpoint-xlarge) {
/* Horizontal gutter */
.uk-grid:not(.uk-grid-preserve) { margin-left: -@grid-gutter-large-horizontal; }
.uk-grid:not(.uk-grid-preserve) > * { padding-left: @grid-gutter-large-horizontal; }
/* Vertical gutter */
.uk-grid:not(.uk-grid-preserve) + .uk-grid { margin-top: @grid-gutter-large-vertical; }
.uk-grid:not(.uk-grid-preserve) > .uk-grid-margin { margin-top: @grid-gutter-large-vertical; }
/* Vertical gutter for panels */
.uk-grid:not(.uk-grid-preserve) > * > .uk-panel + .uk-panel { margin-top: @grid-gutter-large-vertical; }
}
/*
* Small gutter
* Higher specificity to override large gutter
*/
.uk-grid.uk-grid-small { margin-left: -@grid-gutter-small-horizontal; }
.uk-grid.uk-grid-small > * { padding-left: @grid-gutter-small-horizontal; }
.uk-grid.uk-grid-small + .uk-grid-small { margin-top: @grid-gutter-small-vertical; }
.uk-grid.uk-grid-small > .uk-grid-margin { margin-top: @grid-gutter-small-vertical; }
.uk-grid.uk-grid-small > * > .uk-panel + .uk-panel { margin-top: @grid-gutter-small-vertical; }
/* Modifier: `uk-grid-divider`
========================================================================== */
/*
* Horizontal divider
* Does not work with `uk-push-*`, `uk-pull-*` and not if the columns float into the next row
*/
.uk-grid-divider:not(:empty) {
margin-left: -@grid-gutter-horizontal;
margin-right: -@grid-gutter-horizontal;
}
.uk-grid-divider > * {
padding-left: @grid-gutter-horizontal;
padding-right: @grid-gutter-horizontal;
}
.uk-grid-divider > [class*='uk-width-1-']:not(.uk-width-1-1):nth-child(n+2),
.uk-grid-divider > [class*='uk-width-2-']:nth-child(n+2),
.uk-grid-divider > [class*='uk-width-3-']:nth-child(n+2),
.uk-grid-divider > [class*='uk-width-4-']:nth-child(n+2),
.uk-grid-divider > [class*='uk-width-5-']:nth-child(n+2),
.uk-grid-divider > [class*='uk-width-6-']:nth-child(n+2),
.uk-grid-divider > [class*='uk-width-7-']:nth-child(n+2),
.uk-grid-divider > [class*='uk-width-8-']:nth-child(n+2),
.uk-grid-divider > [class*='uk-width-9-']:nth-child(n+2) { border-left: @grid-divider-border-width solid @grid-divider-border; }
/* Tablet and bigger */
@media (min-width: @breakpoint-medium) {
.uk-grid-divider > [class*='uk-width-medium-']:not(.uk-width-medium-1-1):nth-child(n+2) { border-left: @grid-divider-border-width solid @grid-divider-border; }
}
/* Desktop and bigger */
@media (min-width: @breakpoint-large) {
.uk-grid-divider > [class*='uk-width-large-']:not(.uk-width-large-1-1):nth-child(n+2) { border-left: @grid-divider-border-width solid @grid-divider-border; }
}
/* Large screen and bigger */
@media (min-width: @breakpoint-xlarge) {
/*
* Large gutter
*/
.uk-grid-divider:not(.uk-grid-preserve):not(:empty) {
margin-left: -@grid-gutter-large-horizontal;
margin-right: -@grid-gutter-large-horizontal;
}
.uk-grid-divider:not(.uk-grid-preserve) > * {
padding-left: @grid-gutter-large-horizontal;
padding-right: @grid-gutter-large-horizontal;
}
.uk-grid-divider:not(.uk-grid-preserve):empty {
margin-top: @grid-gutter-large-vertical;
margin-bottom: @grid-gutter-large-vertical;
}
}
/*
* Vertical divider
*/
.uk-grid-divider:empty {
margin-top: @grid-gutter-vertical;
margin-bottom: @grid-gutter-vertical;
border-top: @grid-divider-border-width solid @grid-divider-border;
}
/* Even grid cell widths
========================================================================== */
[class*='uk-grid-width'] > * {
-moz-box-sizing: border-box;
box-sizing: border-box;
width: 100%;
}
.uk-grid-width-1-2 > * { width: 50%; }
.uk-grid-width-1-3 > * { width: 33.333%; }
.uk-grid-width-1-4 > * { width: 25%; }
.uk-grid-width-1-5 > * { width: 20%; }
.uk-grid-width-1-6 > * { width: 16.666%; }
.uk-grid-width-1-10 > * { width: 10%; }
/* Phone landscape and bigger */
@media (min-width: @breakpoint-small) {
.uk-grid-width-small-1-2 > * { width: 50%; }
.uk-grid-width-small-1-3 > * { width: 33.333%; }
.uk-grid-width-small-1-4 > * { width: 25%; }
.uk-grid-width-small-1-5 > * { width: 20%; }
.uk-grid-width-small-1-6 > * { width: 16.666%; }
.uk-grid-width-small-1-10 > * { width: 10%; }
}
/* Tablet and bigger */
@media (min-width: @breakpoint-medium) {
.uk-grid-width-medium-1-2 > * { width: 50%; }
.uk-grid-width-medium-1-3 > * { width: 33.333%; }
.uk-grid-width-medium-1-4 > * { width: 25%; }
.uk-grid-width-medium-1-5 > * { width: 20%; }
.uk-grid-width-medium-1-6 > * { width: 16.666%; }
.uk-grid-width-medium-1-10 > * { width: 10%; }
}
/* Desktop and bigger */
@media (min-width: @breakpoint-large) {
.uk-grid-width-large-1-2 > * { width: 50%; }
.uk-grid-width-large-1-3 > * { width: 33.333%; }
.uk-grid-width-large-1-4 > * { width: 25%; }
.uk-grid-width-large-1-5 > * { width: 20%; }
.uk-grid-width-large-1-6 > * { width: 16.666%; }
.uk-grid-width-large-1-10 > * { width: 10%; }
}
/* Large screen and bigger */
@media (min-width: @breakpoint-xlarge) {
.uk-grid-width-xlarge-1-2 > * { width: 50%; }
.uk-grid-width-xlarge-1-3 > * { width: 33.333%; }
.uk-grid-width-xlarge-1-4 > * { width: 25%; }
.uk-grid-width-xlarge-1-5 > * { width: 20%; }
.uk-grid-width-xlarge-1-6 > * { width: 16.666%; }
.uk-grid-width-xlarge-1-10 > * { width: 10%; }
}
/* Sub-objects: `uk-width-*`
========================================================================== */
[class*='uk-width'] {
-moz-box-sizing: border-box;
box-sizing: border-box;
width: 100%;
}
/*
* Widths
*/
/* Whole */
.uk-width-1-1 { width: 100%; }
/* Halves */
.uk-width-1-2,
.uk-width-2-4,
.uk-width-3-6,
.uk-width-5-10 { width: 50%; }
/* Thirds */
.uk-width-1-3,
.uk-width-2-6 { width: 33.333%; }
.uk-width-2-3,
.uk-width-4-6 { width: 66.666%; }
/* Quarters */
.uk-width-1-4 { width: 25%; }
.uk-width-3-4 { width: 75%; }
/* Fifths */
.uk-width-1-5,
.uk-width-2-10 { width: 20%; }
.uk-width-2-5,
.uk-width-4-10 { width: 40%; }
.uk-width-3-5,
.uk-width-6-10 { width: 60%; }
.uk-width-4-5,
.uk-width-8-10 { width: 80%; }
/* Sixths */
.uk-width-1-6 { width: 16.666%; }
.uk-width-5-6 { width: 83.333%; }
/* Tenths */
.uk-width-1-10 { width: 10%; }
.uk-width-3-10 { width: 30%; }
.uk-width-7-10 { width: 70%; }
.uk-width-9-10 { width: 90%; }
/* Phone landscape and bigger */
@media (min-width: @breakpoint-small) {
/* Whole */
.uk-width-small-1-1 { width: 100%; }
/* Halves */
.uk-width-small-1-2,
.uk-width-small-2-4,
.uk-width-small-3-6,
.uk-width-small-5-10 { width: 50%; }
/* Thirds */
.uk-width-small-1-3,
.uk-width-small-2-6 { width: 33.333%; }
.uk-width-small-2-3,
.uk-width-small-4-6 { width: 66.666%; }
/* Quarters */
.uk-width-small-1-4 { width: 25%; }
.uk-width-small-3-4 { width: 75%; }
/* Fifths */
.uk-width-small-1-5,
.uk-width-small-2-10 { width: 20%; }
.uk-width-small-2-5,
.uk-width-small-4-10 { width: 40%; }
.uk-width-small-3-5,
.uk-width-small-6-10 { width: 60%; }
.uk-width-small-4-5,
.uk-width-small-8-10 { width: 80%; }
/* Sixths */
.uk-width-small-1-6 { width: 16.666%; }
.uk-width-small-5-6 { width: 83.333%; }
/* Tenths */
.uk-width-small-1-10 { width: 10%; }
.uk-width-small-3-10 { width: 30%; }
.uk-width-small-7-10 { width: 70%; }
.uk-width-small-9-10 { width: 90%; }
}
/* Tablet and bigger */
@media (min-width: @breakpoint-medium) {
/* Whole */
.uk-width-medium-1-1 { width: 100%; }
/* Halves */
.uk-width-medium-1-2,
.uk-width-medium-2-4,
.uk-width-medium-3-6,
.uk-width-medium-5-10 { width: 50%; }
/* Thirds */
.uk-width-medium-1-3,
.uk-width-medium-2-6 { width: 33.333%; }
.uk-width-medium-2-3,
.uk-width-medium-4-6 { width: 66.666%; }
/* Quarters */
.uk-width-medium-1-4 { width: 25%; }
.uk-width-medium-3-4 { width: 75%; }
/* Fifths */
.uk-width-medium-1-5,
.uk-width-medium-2-10 { width: 20%; }
.uk-width-medium-2-5,
.uk-width-medium-4-10 { width: 40%; }
.uk-width-medium-3-5,
.uk-width-medium-6-10 { width: 60%; }
.uk-width-medium-4-5,
.uk-width-medium-8-10 { width: 80%; }
/* Sixths */
.uk-width-medium-1-6 { width: 16.666%; }
.uk-width-medium-5-6 { width: 83.333%; }
/* Tenths */
.uk-width-medium-1-10 { width: 10%; }
.uk-width-medium-3-10 { width: 30%; }
.uk-width-medium-7-10 { width: 70%; }
.uk-width-medium-9-10 { width: 90%; }
}
/* Desktop and bigger */
@media (min-width: @breakpoint-large) {
/* Whole */
.uk-width-large-1-1 { width: 100%; }
/* Halves */
.uk-width-large-1-2,
.uk-width-large-2-4,
.uk-width-large-3-6,
.uk-width-large-5-10 { width: 50%; }
/* Thirds */
.uk-width-large-1-3,
.uk-width-large-2-6 { width: 33.333%; }
.uk-width-large-2-3,
.uk-width-large-4-6 { width: 66.666%; }
/* Quarters */
.uk-width-large-1-4 { width: 25%; }
.uk-width-large-3-4 { width: 75%; }
/* Fifths */
.uk-width-large-1-5,
.uk-width-large-2-10 { width: 20%; }
.uk-width-large-2-5,
.uk-width-large-4-10 { width: 40%; }
.uk-width-large-3-5,
.uk-width-large-6-10 { width: 60%; }
.uk-width-large-4-5,
.uk-width-large-8-10 { width: 80%; }
/* Sixths */
.uk-width-large-1-6 { width: 16.666%; }
.uk-width-large-5-6 { width: 83.333%; }
/* Tenths */
.uk-width-large-1-10 { width: 10%; }
.uk-width-large-3-10 { width: 30%; }
.uk-width-large-7-10 { width: 70%; }
.uk-width-large-9-10 { width: 90%; }
}
/* Sub-object: `uk-push-*` and `uk-pull-*`
========================================================================== */
/*
* Source ordering
* Works only with `uk-width-medium-*`
*/
/* Tablet and bigger */
@media (min-width: @breakpoint-medium) {
[class*='uk-push-'],
[class*='uk-pull-'] { position: relative; }
/*
* Push
*/
/* Halves */
.uk-push-1-2,
.uk-push-2-4,
.uk-push-3-6,
.uk-push-5-10 { left: 50%; }
/* Thirds */
.uk-push-1-3,
.uk-push-2-6 { left: 33.333%; }
.uk-push-2-3,
.uk-push-4-6 { left: 66.666%; }
/* Quarters */
.uk-push-1-4 { left: 25%; }
.uk-push-3-4 { left: 75%; }
/* Fifths */
.uk-push-1-5,
.uk-push-2-10 { left: 20%; }
.uk-push-2-5,
.uk-push-4-10 { left: 40%; }
.uk-push-3-5,
.uk-push-6-10 { left: 60%; }
.uk-push-4-5,
.uk-push-8-10 { left: 80%; }
/* Sixths */
.uk-push-1-6 { left: 16.666%; }
.uk-push-5-6 { left: 83.333%; }
/* Tenths */
.uk-push-1-10 { left: 10%; }
.uk-push-3-10 { left: 30%; }
.uk-push-7-10 { left: 70%; }
.uk-push-9-10 { left: 90%; }
/*
* Pull
*/
/* Halves */
.uk-pull-1-2,
.uk-pull-2-4,
.uk-pull-3-6,
.uk-pull-5-10 { left: -50%; }
/* Thirds */
.uk-pull-1-3,
.uk-pull-2-6 { left: -33.333%; }
.uk-pull-2-3,
.uk-pull-4-6 { left: -66.666%; }
/* Quarters */
.uk-pull-1-4 { left: -25%; }
.uk-pull-3-4 { left: -75%; }
/* Fifths */
.uk-pull-1-5,
.uk-pull-2-10 { left: -20%; }
.uk-pull-2-5,
.uk-pull-4-10 { left: -40%; }
.uk-pull-3-5,
.uk-pull-6-10 { left: -60%; }
.uk-pull-4-5,
.uk-pull-8-10 { left: -80%; }
/* Sixths */
.uk-pull-1-6 { left: -16.666%; }
.uk-pull-5-6 { left: -83.333%; }
/* Tenths */
.uk-pull-1-10 { left: -10%; }
.uk-pull-3-10 { left: -30%; }
.uk-pull-7-10 { left: -70%; }
.uk-pull-9-10 { left: -90%; }
}
// Hooks
// ========================================================================
.hook-grid-misc;
.hook-grid-misc() {}

695
assets/js/uikit/less/icon.less Executable file
View File

@@ -0,0 +1,695 @@
// Name: Icon
// Description: Defines styles for icons
//
// Adapted from http://fortawesome.github.com/Font-Awesome (Version 4.2.0)
//
// Component: `uk-icon-*`
//
// Sub-objects: `uk-icon-button`
//
// Modifiers: `uk-icon-small`
// `uk-icon-medium`
// `uk-icon-large`
// `uk-icon-spin`
//
// Uses: Animation
//
// ========================================================================
// Variables
// ========================================================================
@icon-font-path: "../fonts";
@icon-small-font-size: 150%;
@icon-medium-font-size: 200%;
@icon-large-font-size: 250%;
@icon-small-vertical-align: -10%;
@icon-medium-vertical-align: -16%;
@icon-large-vertical-align: -22%;
@icon-button-width: 35px;
@icon-button-height: @icon-button-width;
@icon-button-border-radius: 100%;
@icon-button-background: #eee;
@icon-button-font-size: round((@icon-button-width * 0.5));
@icon-button-color: #444;
@icon-button-hover-background: #f5f5f5;
@icon-button-hover-color: #444;
@icon-button-active-background: #ddd;
@icon-button-active-color: #444;
/* ========================================================================
Component: Icon
========================================================================== */
/*
* 1. Allow margin
* 2. Prevent inherit font style
* 4. Correct line-height
* 5. Better font rendering
*/
[class*='uk-icon-'] {
font-family: FontAwesome;
/* 1 */
display: inline-block;
/* 2 */
font-weight: normal;
font-style: normal;
/* 4 */
line-height: 1;
/* 5 */
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
}
/* Size modifiers
========================================================================== */
.uk-icon-small:before { font-size: @icon-small-font-size; vertical-align: @icon-small-vertical-align; }
.uk-icon-medium:before { font-size: @icon-medium-font-size; vertical-align: @icon-medium-vertical-align; }
.uk-icon-large:before { font-size: @icon-large-font-size; vertical-align: @icon-large-vertical-align; }
/* Modifier: `uk-icon-spin`
========================================================================== */
.uk-icon-spin {
display: inline-block;
-webkit-animation: uk-rotate 2s infinite linear;
animation: uk-rotate 2s infinite linear;
}
/* Modifier: `uk-icon-button`
========================================================================== */
.uk-icon-button {
-moz-box-sizing: border-box;
box-sizing: border-box;
display: inline-block;
width: @icon-button-width;
height: @icon-button-height;
border-radius: @icon-button-border-radius;
background: @icon-button-background;
line-height: @icon-button-height;
color: @icon-button-color;
font-size: @icon-button-font-size;
text-align: center;
.hook-icon-button;
}
/*
* Hover
* 1. Apply hover style also to focus state
* 2. Remove default focus style
*/
.uk-icon-button:hover,
.uk-icon-button:focus { // 1
background-color: @icon-button-hover-background;
color: @icon-button-hover-color;
text-decoration: none;
/* 2 */
outline: none;
.hook-icon-button-hover;
}
/* Active */
.uk-icon-button:active {
background-color: @icon-button-active-background;
color: @icon-button-active-color;
.hook-icon-button-active;
}
/* Icon mapping
========================================================================== */
.uk-icon-glass:before { content: "\f000"; }
.uk-icon-music:before { content: "\f001"; }
.uk-icon-search:before { content: "\f002"; }
.uk-icon-envelope-o:before { content: "\f003"; }
.uk-icon-heart:before { content: "\f004"; }
.uk-icon-star:before { content: "\f005"; }
.uk-icon-star-o:before { content: "\f006"; }
.uk-icon-user:before { content: "\f007"; }
.uk-icon-film:before { content: "\f008"; }
.uk-icon-th-large:before { content: "\f009"; }
.uk-icon-th:before { content: "\f00a"; }
.uk-icon-th-list:before { content: "\f00b"; }
.uk-icon-check:before { content: "\f00c"; }
.uk-icon-remove:before,
.uk-icon-close:before,
.uk-icon-times:before { content: "\f00d"; }
.uk-icon-search-plus:before { content: "\f00e"; }
.uk-icon-search-minus:before { content: "\f010"; }
.uk-icon-power-off:before { content: "\f011"; }
.uk-icon-signal:before { content: "\f012"; }
.uk-icon-gear:before,
.uk-icon-cog:before { content: "\f013"; }
.uk-icon-trash-o:before { content: "\f014"; }
.uk-icon-home:before { content: "\f015"; }
.uk-icon-file-o:before { content: "\f016"; }
.uk-icon-clock-o:before { content: "\f017"; }
.uk-icon-road:before { content: "\f018"; }
.uk-icon-download:before { content: "\f019"; }
.uk-icon-arrow-circle-o-down:before { content: "\f01a"; }
.uk-icon-arrow-circle-o-up:before { content: "\f01b"; }
.uk-icon-inbox:before { content: "\f01c"; }
.uk-icon-play-circle-o:before { content: "\f01d"; }
.uk-icon-rotate-right:before,
.uk-icon-repeat:before { content: "\f01e"; }
.uk-icon-refresh:before { content: "\f021"; }
.uk-icon-list-alt:before { content: "\f022"; }
.uk-icon-lock:before { content: "\f023"; }
.uk-icon-flag:before { content: "\f024"; }
.uk-icon-headphones:before { content: "\f025"; }
.uk-icon-volume-off:before { content: "\f026"; }
.uk-icon-volume-down:before { content: "\f027"; }
.uk-icon-volume-up:before { content: "\f028"; }
.uk-icon-qrcode:before { content: "\f029"; }
.uk-icon-barcode:before { content: "\f02a"; }
.uk-icon-tag:before { content: "\f02b"; }
.uk-icon-tags:before { content: "\f02c"; }
.uk-icon-book:before { content: "\f02d"; }
.uk-icon-bookmark:before { content: "\f02e"; }
.uk-icon-print:before { content: "\f02f"; }
.uk-icon-camera:before { content: "\f030"; }
.uk-icon-font:before { content: "\f031"; }
.uk-icon-bold:before { content: "\f032"; }
.uk-icon-italic:before { content: "\f033"; }
.uk-icon-text-height:before { content: "\f034"; }
.uk-icon-text-width:before { content: "\f035"; }
.uk-icon-align-left:before { content: "\f036"; }
.uk-icon-align-center:before { content: "\f037"; }
.uk-icon-align-right:before { content: "\f038"; }
.uk-icon-align-justify:before { content: "\f039"; }
.uk-icon-list:before { content: "\f03a"; }
.uk-icon-dedent:before,
.uk-icon-outdent:before { content: "\f03b"; }
.uk-icon-indent:before { content: "\f03c"; }
.uk-icon-video-camera:before { content: "\f03d"; }
.uk-icon-photo:before,
.uk-icon-image:before,
.uk-icon-picture-o:before { content: "\f03e"; }
.uk-icon-pencil:before { content: "\f040"; }
.uk-icon-map-marker:before { content: "\f041"; }
.uk-icon-adjust:before { content: "\f042"; }
.uk-icon-tint:before { content: "\f043"; }
.uk-icon-edit:before,
.uk-icon-pencil-square-o:before { content: "\f044"; }
.uk-icon-share-square-o:before { content: "\f045"; }
.uk-icon-check-square-o:before { content: "\f046"; }
.uk-icon-arrows:before { content: "\f047"; }
.uk-icon-step-backward:before { content: "\f048"; }
.uk-icon-fast-backward:before { content: "\f049"; }
.uk-icon-backward:before { content: "\f04a"; }
.uk-icon-play:before { content: "\f04b"; }
.uk-icon-pause:before { content: "\f04c"; }
.uk-icon-stop:before { content: "\f04d"; }
.uk-icon-forward:before { content: "\f04e"; }
.uk-icon-fast-forward:before { content: "\f050"; }
.uk-icon-step-forward:before { content: "\f051"; }
.uk-icon-eject:before { content: "\f052"; }
.uk-icon-chevron-left:before { content: "\f053"; }
.uk-icon-chevron-right:before { content: "\f054"; }
.uk-icon-plus-circle:before { content: "\f055"; }
.uk-icon-minus-circle:before { content: "\f056"; }
.uk-icon-times-circle:before { content: "\f057"; }
.uk-icon-check-circle:before { content: "\f058"; }
.uk-icon-question-circle:before { content: "\f059"; }
.uk-icon-info-circle:before { content: "\f05a"; }
.uk-icon-crosshairs:before { content: "\f05b"; }
.uk-icon-times-circle-o:before { content: "\f05c"; }
.uk-icon-check-circle-o:before { content: "\f05d"; }
.uk-icon-ban:before { content: "\f05e"; }
.uk-icon-arrow-left:before { content: "\f060"; }
.uk-icon-arrow-right:before { content: "\f061"; }
.uk-icon-arrow-up:before { content: "\f062"; }
.uk-icon-arrow-down:before { content: "\f063"; }
.uk-icon-mail-forward:before,
.uk-icon-share:before { content: "\f064"; }
.uk-icon-expand:before { content: "\f065"; }
.uk-icon-compress:before { content: "\f066"; }
.uk-icon-plus:before { content: "\f067"; }
.uk-icon-minus:before { content: "\f068"; }
.uk-icon-asterisk:before { content: "\f069"; }
.uk-icon-exclamation-circle:before { content: "\f06a"; }
.uk-icon-gift:before { content: "\f06b"; }
.uk-icon-leaf:before { content: "\f06c"; }
.uk-icon-fire:before { content: "\f06d"; }
.uk-icon-eye:before { content: "\f06e"; }
.uk-icon-eye-slash:before { content: "\f070"; }
.uk-icon-warning:before,
.uk-icon-exclamation-triangle:before { content: "\f071"; }
.uk-icon-plane:before { content: "\f072"; }
.uk-icon-calendar:before { content: "\f073"; }
.uk-icon-random:before { content: "\f074"; }
.uk-icon-comment:before { content: "\f075"; }
.uk-icon-magnet:before { content: "\f076"; }
.uk-icon-chevron-up:before { content: "\f077"; }
.uk-icon-chevron-down:before { content: "\f078"; }
.uk-icon-retweet:before { content: "\f079"; }
.uk-icon-shopping-cart:before { content: "\f07a"; }
.uk-icon-folder:before { content: "\f07b"; }
.uk-icon-folder-open:before { content: "\f07c"; }
.uk-icon-arrows-v:before { content: "\f07d"; }
.uk-icon-arrows-h:before { content: "\f07e"; }
.uk-icon-bar-chart-o:before,
.uk-icon-bar-chart:before { content: "\f080"; }
.uk-icon-twitter-square:before { content: "\f081"; }
.uk-icon-facebook-square:before { content: "\f082"; }
.uk-icon-camera-retro:before { content: "\f083"; }
.uk-icon-key:before { content: "\f084"; }
.uk-icon-gears:before,
.uk-icon-cogs:before { content: "\f085"; }
.uk-icon-comments:before { content: "\f086"; }
.uk-icon-thumbs-o-up:before { content: "\f087"; }
.uk-icon-thumbs-o-down:before { content: "\f088"; }
.uk-icon-star-half:before { content: "\f089"; }
.uk-icon-heart-o:before { content: "\f08a"; }
.uk-icon-sign-out:before { content: "\f08b"; }
.uk-icon-linkedin-square:before { content: "\f08c"; }
.uk-icon-thumb-tack:before { content: "\f08d"; }
.uk-icon-external-link:before { content: "\f08e"; }
.uk-icon-sign-in:before { content: "\f090"; }
.uk-icon-trophy:before { content: "\f091"; }
.uk-icon-github-square:before { content: "\f092"; }
.uk-icon-upload:before { content: "\f093"; }
.uk-icon-lemon-o:before { content: "\f094"; }
.uk-icon-phone:before { content: "\f095"; }
.uk-icon-square-o:before { content: "\f096"; }
.uk-icon-bookmark-o:before { content: "\f097"; }
.uk-icon-phone-square:before { content: "\f098"; }
.uk-icon-twitter:before { content: "\f099"; }
.uk-icon-facebook:before { content: "\f09a"; }
.uk-icon-github:before { content: "\f09b"; }
.uk-icon-unlock:before { content: "\f09c"; }
.uk-icon-credit-card:before { content: "\f09d"; }
.uk-icon-rss:before { content: "\f09e"; }
.uk-icon-hdd-o:before { content: "\f0a0"; }
.uk-icon-bullhorn:before { content: "\f0a1"; }
.uk-icon-bell:before { content: "\f0f3"; }
.uk-icon-certificate:before { content: "\f0a3"; }
.uk-icon-hand-o-right:before { content: "\f0a4"; }
.uk-icon-hand-o-left:before { content: "\f0a5"; }
.uk-icon-hand-o-up:before { content: "\f0a6"; }
.uk-icon-hand-o-down:before { content: "\f0a7"; }
.uk-icon-arrow-circle-left:before { content: "\f0a8"; }
.uk-icon-arrow-circle-right:before { content: "\f0a9"; }
.uk-icon-arrow-circle-up:before { content: "\f0aa"; }
.uk-icon-arrow-circle-down:before { content: "\f0ab"; }
.uk-icon-globe:before { content: "\f0ac"; }
.uk-icon-wrench:before { content: "\f0ad"; }
.uk-icon-tasks:before { content: "\f0ae"; }
.uk-icon-filter:before { content: "\f0b0"; }
.uk-icon-briefcase:before { content: "\f0b1"; }
.uk-icon-arrows-alt:before { content: "\f0b2"; }
.uk-icon-group:before,
.uk-icon-users:before { content: "\f0c0"; }
.uk-icon-chain:before,
.uk-icon-link:before { content: "\f0c1"; }
.uk-icon-cloud:before { content: "\f0c2"; }
.uk-icon-flask:before { content: "\f0c3"; }
.uk-icon-cut:before,
.uk-icon-scissors:before { content: "\f0c4"; }
.uk-icon-copy:before,
.uk-icon-files-o:before { content: "\f0c5"; }
.uk-icon-paperclip:before { content: "\f0c6"; }
.uk-icon-save:before,
.uk-icon-floppy-o:before { content: "\f0c7"; }
.uk-icon-square:before { content: "\f0c8"; }
.uk-icon-navicon:before,
.uk-icon-reorder:before,
.uk-icon-bars:before { content: "\f0c9"; }
.uk-icon-list-ul:before { content: "\f0ca"; }
.uk-icon-list-ol:before { content: "\f0cb"; }
.uk-icon-strikethrough:before { content: "\f0cc"; }
.uk-icon-underline:before { content: "\f0cd"; }
.uk-icon-table:before { content: "\f0ce"; }
.uk-icon-magic:before { content: "\f0d0"; }
.uk-icon-truck:before { content: "\f0d1"; }
.uk-icon-pinterest:before { content: "\f0d2"; }
.uk-icon-pinterest-square:before { content: "\f0d3"; }
.uk-icon-google-plus-square:before { content: "\f0d4"; }
.uk-icon-google-plus:before { content: "\f0d5"; }
.uk-icon-money:before { content: "\f0d6"; }
.uk-icon-caret-down:before { content: "\f0d7"; }
.uk-icon-caret-up:before { content: "\f0d8"; }
.uk-icon-caret-left:before { content: "\f0d9"; }
.uk-icon-caret-right:before { content: "\f0da"; }
.uk-icon-columns:before { content: "\f0db"; }
.uk-icon-unsorted:before,
.uk-icon-sort:before { content: "\f0dc"; }
.uk-icon-sort-down:before,
.uk-icon-sort-desc:before { content: "\f0dd"; }
.uk-icon-sort-up:before,
.uk-icon-sort-asc:before { content: "\f0de"; }
.uk-icon-envelope:before { content: "\f0e0"; }
.uk-icon-linkedin:before { content: "\f0e1"; }
.uk-icon-rotate-left:before,
.uk-icon-undo:before { content: "\f0e2"; }
.uk-icon-legal:before,
.uk-icon-gavel:before { content: "\f0e3"; }
.uk-icon-dashboard:before,
.uk-icon-tachometer:before { content: "\f0e4"; }
.uk-icon-comment-o:before { content: "\f0e5"; }
.uk-icon-comments-o:before { content: "\f0e6"; }
.uk-icon-flash:before,
.uk-icon-bolt:before { content: "\f0e7"; }
.uk-icon-sitemap:before { content: "\f0e8"; }
.uk-icon-umbrella:before { content: "\f0e9"; }
.uk-icon-paste:before,
.uk-icon-clipboard:before { content: "\f0ea"; }
.uk-icon-lightbulb-o:before { content: "\f0eb"; }
.uk-icon-exchange:before { content: "\f0ec"; }
.uk-icon-cloud-download:before { content: "\f0ed"; }
.uk-icon-cloud-upload:before { content: "\f0ee"; }
.uk-icon-user-md:before { content: "\f0f0"; }
.uk-icon-stethoscope:before { content: "\f0f1"; }
.uk-icon-suitcase:before { content: "\f0f2"; }
.uk-icon-bell-o:before { content: "\f0a2"; }
.uk-icon-coffee:before { content: "\f0f4"; }
.uk-icon-cutlery:before { content: "\f0f5"; }
.uk-icon-file-text-o:before { content: "\f0f6"; }
.uk-icon-building-o:before { content: "\f0f7"; }
.uk-icon-hospital-o:before { content: "\f0f8"; }
.uk-icon-ambulance:before { content: "\f0f9"; }
.uk-icon-medkit:before { content: "\f0fa"; }
.uk-icon-fighter-jet:before { content: "\f0fb"; }
.uk-icon-beer:before { content: "\f0fc"; }
.uk-icon-h-square:before { content: "\f0fd"; }
.uk-icon-plus-square:before { content: "\f0fe"; }
.uk-icon-angle-double-left:before { content: "\f100"; }
.uk-icon-angle-double-right:before { content: "\f101"; }
.uk-icon-angle-double-up:before { content: "\f102"; }
.uk-icon-angle-double-down:before { content: "\f103"; }
.uk-icon-angle-left:before { content: "\f104"; }
.uk-icon-angle-right:before { content: "\f105"; }
.uk-icon-angle-up:before { content: "\f106"; }
.uk-icon-angle-down:before { content: "\f107"; }
.uk-icon-desktop:before { content: "\f108"; }
.uk-icon-laptop:before { content: "\f109"; }
.uk-icon-tablet:before { content: "\f10a"; }
.uk-icon-mobile-phone:before,
.uk-icon-mobile:before { content: "\f10b"; }
.uk-icon-circle-o:before { content: "\f10c"; }
.uk-icon-quote-left:before { content: "\f10d"; }
.uk-icon-quote-right:before { content: "\f10e"; }
.uk-icon-spinner:before { content: "\f110"; }
.uk-icon-circle:before { content: "\f111"; }
.uk-icon-mail-reply:before,
.uk-icon-reply:before { content: "\f112"; }
.uk-icon-github-alt:before { content: "\f113"; }
.uk-icon-folder-o:before { content: "\f114"; }
.uk-icon-folder-open-o:before { content: "\f115"; }
.uk-icon-smile-o:before { content: "\f118"; }
.uk-icon-frown-o:before { content: "\f119"; }
.uk-icon-meh-o:before { content: "\f11a"; }
.uk-icon-gamepad:before { content: "\f11b"; }
.uk-icon-keyboard-o:before { content: "\f11c"; }
.uk-icon-flag-o:before { content: "\f11d"; }
.uk-icon-flag-checkered:before { content: "\f11e"; }
.uk-icon-terminal:before { content: "\f120"; }
.uk-icon-code:before { content: "\f121"; }
.uk-icon-mail-reply-all:before,
.uk-icon-reply-all:before { content: "\f122"; }
.uk-icon-star-half-empty:before,
.uk-icon-star-half-full:before,
.uk-icon-star-half-o:before { content: "\f123"; }
.uk-icon-location-arrow:before { content: "\f124"; }
.uk-icon-crop:before { content: "\f125"; }
.uk-icon-code-fork:before { content: "\f126"; }
.uk-icon-unlink:before,
.uk-icon-chain-broken:before { content: "\f127"; }
.uk-icon-question:before { content: "\f128"; }
.uk-icon-info:before { content: "\f129"; }
.uk-icon-exclamation:before { content: "\f12a"; }
.uk-icon-superscript:before { content: "\f12b"; }
.uk-icon-subscript:before { content: "\f12c"; }
.uk-icon-eraser:before { content: "\f12d"; }
.uk-icon-puzzle-piece:before { content: "\f12e"; }
.uk-icon-microphone:before { content: "\f130"; }
.uk-icon-microphone-slash:before { content: "\f131"; }
.uk-icon-shield:before { content: "\f132"; }
.uk-icon-calendar-o:before { content: "\f133"; }
.uk-icon-fire-extinguisher:before { content: "\f134"; }
.uk-icon-rocket:before { content: "\f135"; }
.uk-icon-maxcdn:before { content: "\f136"; }
.uk-icon-chevron-circle-left:before { content: "\f137"; }
.uk-icon-chevron-circle-right:before { content: "\f138"; }
.uk-icon-chevron-circle-up:before { content: "\f139"; }
.uk-icon-chevron-circle-down:before { content: "\f13a"; }
.uk-icon-html5:before { content: "\f13b"; }
.uk-icon-css3:before { content: "\f13c"; }
.uk-icon-anchor:before { content: "\f13d"; }
.uk-icon-unlock-alt:before { content: "\f13e"; }
.uk-icon-bullseye:before { content: "\f140"; }
.uk-icon-ellipsis-h:before { content: "\f141"; }
.uk-icon-ellipsis-v:before { content: "\f142"; }
.uk-icon-rss-square:before { content: "\f143"; }
.uk-icon-play-circle:before { content: "\f144"; }
.uk-icon-ticket:before { content: "\f145"; }
.uk-icon-minus-square:before { content: "\f146"; }
.uk-icon-minus-square-o:before { content: "\f147"; }
.uk-icon-level-up:before { content: "\f148"; }
.uk-icon-level-down:before { content: "\f149"; }
.uk-icon-check-square:before { content: "\f14a"; }
.uk-icon-pencil-square:before { content: "\f14b"; }
.uk-icon-external-link-square:before { content: "\f14c"; }
.uk-icon-share-square:before { content: "\f14d"; }
.uk-icon-compass:before { content: "\f14e"; }
.uk-icon-toggle-down:before,
.uk-icon-caret-square-o-down:before { content: "\f150"; }
.uk-icon-toggle-up:before,
.uk-icon-caret-square-o-up:before { content: "\f151"; }
.uk-icon-toggle-right:before,
.uk-icon-caret-square-o-right:before { content: "\f152"; }
.uk-icon-euro:before,
.uk-icon-eur:before { content: "\f153"; }
.uk-icon-gbp:before { content: "\f154"; }
.uk-icon-dollar:before,
.uk-icon-usd:before { content: "\f155"; }
.uk-icon-rupee:before,
.uk-icon-inr:before { content: "\f156"; }
.uk-icon-cny:before,
.uk-icon-rmb:before,
.uk-icon-yen:before,
.uk-icon-jpy:before { content: "\f157"; }
.uk-icon-ruble:before,
.uk-icon-rouble:before,
.uk-icon-rub:before { content: "\f158"; }
.uk-icon-won:before,
.uk-icon-krw:before { content: "\f159"; }
.uk-icon-bitcoin:before,
.uk-icon-btc:before { content: "\f15a"; }
.uk-icon-file:before { content: "\f15b"; }
.uk-icon-file-text:before { content: "\f15c"; }
.uk-icon-sort-alpha-asc:before { content: "\f15d"; }
.uk-icon-sort-alpha-desc:before { content: "\f15e"; }
.uk-icon-sort-amount-asc:before { content: "\f160"; }
.uk-icon-sort-amount-desc:before { content: "\f161"; }
.uk-icon-sort-numeric-asc:before { content: "\f162"; }
.uk-icon-sort-numeric-desc:before { content: "\f163"; }
.uk-icon-thumbs-up:before { content: "\f164"; }
.uk-icon-thumbs-down:before { content: "\f165"; }
.uk-icon-youtube-square:before { content: "\f166"; }
.uk-icon-youtube:before { content: "\f167"; }
.uk-icon-xing:before { content: "\f168"; }
.uk-icon-xing-square:before { content: "\f169"; }
.uk-icon-youtube-play:before { content: "\f16a"; }
.uk-icon-dropbox:before { content: "\f16b"; }
.uk-icon-stack-overflow:before { content: "\f16c"; }
.uk-icon-instagram:before { content: "\f16d"; }
.uk-icon-flickr:before { content: "\f16e"; }
.uk-icon-adn:before { content: "\f170"; }
.uk-icon-bitbucket:before { content: "\f171"; }
.uk-icon-bitbucket-square:before { content: "\f172"; }
.uk-icon-tumblr:before { content: "\f173"; }
.uk-icon-tumblr-square:before { content: "\f174"; }
.uk-icon-long-arrow-down:before { content: "\f175"; }
.uk-icon-long-arrow-up:before { content: "\f176"; }
.uk-icon-long-arrow-left:before { content: "\f177"; }
.uk-icon-long-arrow-right:before { content: "\f178"; }
.uk-icon-apple:before { content: "\f179"; }
.uk-icon-windows:before { content: "\f17a"; }
.uk-icon-android:before { content: "\f17b"; }
.uk-icon-linux:before { content: "\f17c"; }
.uk-icon-dribbble:before { content: "\f17d"; }
.uk-icon-skype:before { content: "\f17e"; }
.uk-icon-foursquare:before { content: "\f180"; }
.uk-icon-trello:before { content: "\f181"; }
.uk-icon-female:before { content: "\f182"; }
.uk-icon-male:before { content: "\f183"; }
.uk-icon-gittip:before { content: "\f184"; }
.uk-icon-sun-o:before { content: "\f185"; }
.uk-icon-moon-o:before { content: "\f186"; }
.uk-icon-archive:before { content: "\f187"; }
.uk-icon-bug:before { content: "\f188"; }
.uk-icon-vk:before { content: "\f189"; }
.uk-icon-weibo:before { content: "\f18a"; }
.uk-icon-renren:before { content: "\f18b"; }
.uk-icon-pagelines:before { content: "\f18c"; }
.uk-icon-stack-exchange:before { content: "\f18d"; }
.uk-icon-arrow-circle-o-right:before { content: "\f18e"; }
.uk-icon-arrow-circle-o-left:before { content: "\f190"; }
.uk-icon-toggle-left:before,
.uk-icon-caret-square-o-left:before { content: "\f191"; }
.uk-icon-dot-circle-o:before { content: "\f192"; }
.uk-icon-wheelchair:before { content: "\f193"; }
.uk-icon-vimeo-square:before { content: "\f194"; }
.uk-icon-turkish-lira:before,
.uk-icon-try:before { content: "\f195"; }
.uk-icon-plus-square-o:before { content: "\f196"; }
.uk-icon-space-shuttle:before { content: "\f197"; }
.uk-icon-slack:before { content: "\f198"; }
.uk-icon-envelope-square:before { content: "\f199"; }
.uk-icon-wordpress:before { content: "\f19a"; }
.uk-icon-openid:before { content: "\f19b"; }
.uk-icon-institution:before,
.uk-icon-bank:before,
.uk-icon-university:before { content: "\f19c"; }
.uk-icon-mortar-board:before,
.uk-icon-graduation-cap:before { content: "\f19d"; }
.uk-icon-yahoo:before { content: "\f19e"; }
.uk-icon-google:before { content: "\f1a0"; }
.uk-icon-reddit:before { content: "\f1a1"; }
.uk-icon-reddit-square:before { content: "\f1a2"; }
.uk-icon-stumbleupon-circle:before { content: "\f1a3"; }
.uk-icon-stumbleupon:before { content: "\f1a4"; }
.uk-icon-delicious:before { content: "\f1a5"; }
.uk-icon-digg:before { content: "\f1a6"; }
.uk-icon-pied-piper:before { content: "\f1a7"; }
.uk-icon-pied-piper-alt:before { content: "\f1a8"; }
.uk-icon-drupal:before { content: "\f1a9"; }
.uk-icon-joomla:before { content: "\f1aa"; }
.uk-icon-language:before { content: "\f1ab"; }
.uk-icon-fax:before { content: "\f1ac"; }
.uk-icon-building:before { content: "\f1ad"; }
.uk-icon-child:before { content: "\f1ae"; }
.uk-icon-paw:before { content: "\f1b0"; }
.uk-icon-spoon:before { content: "\f1b1"; }
.uk-icon-cube:before { content: "\f1b2"; }
.uk-icon-cubes:before { content: "\f1b3"; }
.uk-icon-behance:before { content: "\f1b4"; }
.uk-icon-behance-square:before { content: "\f1b5"; }
.uk-icon-steam:before { content: "\f1b6"; }
.uk-icon-steam-square:before { content: "\f1b7"; }
.uk-icon-recycle:before { content: "\f1b8"; }
.uk-icon-automobile:before,
.uk-icon-car:before { content: "\f1b9"; }
.uk-icon-cab:before,
.uk-icon-taxi:before { content: "\f1ba"; }
.uk-icon-tree:before { content: "\f1bb"; }
.uk-icon-spotify:before { content: "\f1bc"; }
.uk-icon-deviantart:before { content: "\f1bd"; }
.uk-icon-soundcloud:before { content: "\f1be"; }
.uk-icon-database:before { content: "\f1c0"; }
.uk-icon-file-pdf-o:before { content: "\f1c1"; }
.uk-icon-file-word-o:before { content: "\f1c2"; }
.uk-icon-file-excel-o:before { content: "\f1c3"; }
.uk-icon-file-powerpoint-o:before { content: "\f1c4"; }
.uk-icon-file-photo-o:before,
.uk-icon-file-picture-o:before,
.uk-icon-file-image-o:before { content: "\f1c5"; }
.uk-icon-file-zip-o:before,
.uk-icon-file-archive-o:before { content: "\f1c6"; }
.uk-icon-file-sound-o:before,
.uk-icon-file-audio-o:before { content: "\f1c7"; }
.uk-icon-file-movie-o:before,
.uk-icon-file-video-o:before { content: "\f1c8"; }
.uk-icon-file-code-o:before { content: "\f1c9"; }
.uk-icon-vine:before { content: "\f1ca"; }
.uk-icon-codepen:before { content: "\f1cb"; }
.uk-icon-jsfiddle:before { content: "\f1cc"; }
.uk-icon-life-bouy:before,
.uk-icon-life-buoy:before,
.uk-icon-life-saver:before,
.uk-icon-support:before,
.uk-icon-life-ring:before { content: "\f1cd"; }
.uk-icon-circle-o-notch:before { content: "\f1ce"; }
.uk-icon-ra:before,
.uk-icon-rebel:before { content: "\f1d0"; }
.uk-icon-ge:before,
.uk-icon-empire:before { content: "\f1d1"; }
.uk-icon-git-square:before { content: "\f1d2"; }
.uk-icon-git:before { content: "\f1d3"; }
.uk-icon-hacker-news:before { content: "\f1d4"; }
.uk-icon-tencent-weibo:before { content: "\f1d5"; }
.uk-icon-qq:before { content: "\f1d6"; }
.uk-icon-wechat:before,
.uk-icon-weixin:before { content: "\f1d7"; }
.uk-icon-send:before,
.uk-icon-paper-plane:before { content: "\f1d8"; }
.uk-icon-send-o:before,
.uk-icon-paper-plane-o:before { content: "\f1d9"; }
.uk-icon-history:before { content: "\f1da"; }
.uk-icon-circle-thin:before { content: "\f1db"; }
.uk-icon-header:before { content: "\f1dc"; }
.uk-icon-paragraph:before { content: "\f1dd"; }
.uk-icon-sliders:before { content: "\f1de"; }
.uk-icon-share-alt:before { content: "\f1e0"; }
.uk-icon-share-alt-square:before { content: "\f1e1"; }
.uk-icon-bomb:before { content: "\f1e2"; }
.uk-icon-soccer-ball-o:before,
.uk-icon-futbol-o:before { content: "\f1e3"; }
.uk-icon-tty:before { content: "\f1e4"; }
.uk-icon-binoculars:before { content: "\f1e5"; }
.uk-icon-plug:before { content: "\f1e6"; }
.uk-icon-slideshare:before { content: "\f1e7"; }
.uk-icon-twitch:before { content: "\f1e8"; }
.uk-icon-yelp:before { content: "\f1e9"; }
.uk-icon-newspaper-o:before { content: "\f1ea"; }
.uk-icon-wifi:before { content: "\f1eb"; }
.uk-icon-calculator:before { content: "\f1ec"; }
.uk-icon-paypal:before { content: "\f1ed"; }
.uk-icon-google-wallet:before { content: "\f1ee"; }
.uk-icon-cc-visa:before { content: "\f1f0"; }
.uk-icon-cc-mastercard:before { content: "\f1f1"; }
.uk-icon-cc-discover:before { content: "\f1f2"; }
.uk-icon-cc-amex:before { content: "\f1f3"; }
.uk-icon-cc-paypal:before { content: "\f1f4"; }
.uk-icon-cc-stripe:before { content: "\f1f5"; }
.uk-icon-bell-slash:before { content: "\f1f6"; }
.uk-icon-bell-slash-o:before { content: "\f1f7"; }
.uk-icon-trash:before { content: "\f1f8"; }
.uk-icon-copyright:before { content: "\f1f9"; }
.uk-icon-at:before { content: "\f1fa"; }
.uk-icon-eyedropper:before { content: "\f1fb"; }
.uk-icon-paint-brush:before { content: "\f1fc"; }
.uk-icon-birthday-cake:before { content: "\f1fd"; }
.uk-icon-area-chart:before { content: "\f1fe"; }
.uk-icon-pie-chart:before { content: "\f200"; }
.uk-icon-line-chart:before { content: "\f201"; }
.uk-icon-lastfm:before { content: "\f202"; }
.uk-icon-lastfm-square:before { content: "\f203"; }
.uk-icon-toggle-off:before { content: "\f204"; }
.uk-icon-toggle-on:before { content: "\f205"; }
.uk-icon-bicycle:before { content: "\f206"; }
.uk-icon-bus:before { content: "\f207"; }
.uk-icon-ioxhost:before { content: "\f208"; }
.uk-icon-angellist:before { content: "\f209"; }
.uk-icon-cc:before { content: "\f20a"; }
.uk-icon-shekel:before,
.uk-icon-sheqel:before,
.uk-icon-ils:before { content: "\f20b"; }
.uk-icon-meanpath:before { content: "\f20c"; }
// Hooks
// ========================================================================
.hook-icon-misc;
.hook-icon-button() {}
.hook-icon-button-hover() {}
.hook-icon-button-active() {}
.hook-icon-misc() {}

View File

102
assets/js/uikit/less/list.less Executable file
View File

@@ -0,0 +1,102 @@
// Name: List
// Description: Defines styles for ordered and unordered lists
//
// Component: `uk-list`
//
// Modifiers: `uk-list-line`
// `uk-list-striped`
// `uk-list-space`
//
// ========================================================================
// Variables
// ========================================================================
@list-nested-padding-left: 20px;
@list-line-margin-top: 5px;
@list-line-border: #ddd;
@list-line-border-width: 1px;
@list-striped-padding-vertical: 5px;
@list-striped-padding-horizontal: 5px;
@list-striped-background: #f5f5f5;
@list-space-margin-top: 10px;
/* ========================================================================
Component: List
========================================================================== */
.uk-list {
padding: 0;
list-style: none;
}
/*
* Micro clearfix to make list more robust
*/
.uk-list > li:before,
.uk-list > li:after {
content: " ";
display: table;
}
.uk-list > li:after { clear: both; }
/*
* Remove margin from the last-child
*/
.uk-list > li > :last-child { margin-bottom: 0; }
/*
* Nested lists
*/
.uk-list ul {
margin: 0;
padding-left: @list-nested-padding-left;
list-style: none;
}
/* Modifier: `uk-list-line`
========================================================================== */
.uk-list-line > li:nth-child(n+2) {
margin-top: @list-line-margin-top;
padding-top: @list-line-margin-top;
border-top: @list-line-border-width solid @list-line-border;
.hook-list-line;
}
/* Modifier: `uk-list-striped`
========================================================================== */
.uk-list-striped > li {
padding: @list-striped-padding-vertical @list-striped-padding-horizontal;
.hook-list-striped;
}
.uk-list-striped > li:nth-of-type(odd) { background: @list-striped-background; }
/* Modifier: `uk-list-space`
========================================================================== */
.uk-list-space > li:nth-child(n+2) { margin-top: @list-space-margin-top; }
// Hooks
// ========================================================================
.hook-list-misc;
.hook-list-line() {}
.hook-list-striped() {}
.hook-list-misc() {}

226
assets/js/uikit/less/modal.less Executable file
View File

@@ -0,0 +1,226 @@
// Name: Modal
// Description: Defines styles for modal dialogs
//
// Component: `uk-modal`
//
// Sub-objects: `uk-modal-dialog`
// `uk-modal-close`
//
// Modifiers: `uk-modal-dialog-frameless`
// `uk-modal-dialog-large`
//
// States: `uk-open`
//
// Uses: Close: `uk-close`
//
// Markup:
//
// <!-- uk-modal -->
// <a href="#modal" data-uk-modal=""></a>
// <div id="modal" class="uk-modal">
// <div class="uk-modal-dialog">
// <a href="" class="uk-modal-close uk-close"></a>
// <p></p>
// </div>
// </div>
//
// ========================================================================
// Variables
// ========================================================================
@modal-z-index: 1010;
@modal-background: rgba(0,0,0,0.6);
@modal-dialog-margin-vertical: 50px;
@modal-dialog-padding: 20px;
@modal-dialog-width: 600px;
@modal-dialog-background: #fff;
@modal-dialog-large-width: 930px;
@modal-dialog-large-width-large: 1130px;
/* ========================================================================
Component: Modal
========================================================================== */
/*
* This is the modal overlay and modal dialog container
* 1. Hide by default
* 2. Set fixed position
* 3. Allow scrolling for the modal dialog
* 4. Mask the background page
* 5. Fade-in transition
*/
.uk-modal {
/* 1 */
display: none;
/* 2 */
position: fixed;
top: 0;
right: 0;
bottom: 0;
left: 0;
z-index: @modal-z-index;
/* 3 */
overflow-y: auto;
-webkit-overflow-scrolling: touch;
/* 4 */
background: @modal-background;
/* 5 */
opacity: 0;
-webkit-transition: opacity 0.15s linear;
transition: opacity 0.15s linear;
.hook-modal;
}
/*
* Open state
*/
.uk-modal.uk-open { opacity: 1; }
/*
* Prevents duplicated scrollbar caused by 4.
*/
.uk-modal-page,
.uk-modal-page body { overflow: hidden; }
/* Sub-object: `uk-modal-dialog`
========================================================================== */
/*
* 1. Create position context for `uk-modal-dialog-frameless`
* 2. Set box sizing
* 3. Set style
* 4. Slide-in transition
*/
.uk-modal-dialog {
/* 1 */
position: relative;
/* 2 */
-moz-box-sizing: border-box;
box-sizing: border-box;
margin: @modal-dialog-margin-vertical auto;
padding: @modal-dialog-padding;
width: @modal-dialog-width;
max-width: 100%;
max-width: ~"calc(100% - 20px)";
/* 3 */
background: @modal-dialog-background;
/* 4 */
opacity: 0;
-webkit-transform: translateY(-100px);
transform: translateY(-100px);
-webkit-transition: opacity 0.3s linear, -webkit-transform 0.3s ease-out;
transition: opacity 0.3s linear, transform 0.3s ease-out;
.hook-modal-dialog;
}
/* Phone landscape and smaller */
@media (max-width: @breakpoint-small-max) {
/*
* Fit in small screen
*/
.uk-modal-dialog {
width: auto;
margin: 10px;
}
}
/*
* Open state
*/
.uk-open .uk-modal-dialog {
/* 4 */
opacity: 1;
-webkit-transform: translateY(0);
transform: translateY(0);
}
/*
* Remove margin from the last-child
*/
.uk-modal-dialog > :last-child { margin-bottom: 0; }
/* Close in modal
========================================================================== */
.uk-modal-dialog > .uk-close:first-child {
margin: -10px -10px 0 0;
float: right;
}
/*
* Remove margin from adjacent element
*/
.uk-modal-dialog > .uk-close:first-child + * { margin-top: 0; }
/* Modifier: `uk-modal-dialog-frameless`
========================================================================== */
.uk-modal-dialog-frameless { padding: 0; }
/*
* Close in modal
*/
.uk-modal-dialog-frameless > .uk-close:first-child {
position: absolute;
top: -12px;
right: -12px;
margin: 0;
float: none;
}
/* Phone landscape and smaller */
@media (max-width: @breakpoint-small-max) {
.uk-modal-dialog-frameless > .uk-close:first-child {
top: -7px;
right: -7px;
}
}
/* Modifier: `uk-modal-dialog-large`
========================================================================== */
/* Tablet and bigger */
@media (min-width: @breakpoint-medium) {
.uk-modal-dialog-large { width: @modal-dialog-large-width; }
}
/* Large screen and bigger */
@media (min-width: @breakpoint-xlarge) {
.uk-modal-dialog-large { width: @modal-dialog-large-width-large; }
}
// Hooks
// ========================================================================
.hook-modal-misc;
.hook-modal() {}
.hook-modal-dialog() {}
.hook-modal-misc() {}

468
assets/js/uikit/less/nav.less Executable file
View File

@@ -0,0 +1,468 @@
// Name: Nav
// Description: Defines styles for list navigations
//
// Component: `uk-nav`
//
// Sub-objects: `uk-nav-header`
// `uk-nav-divider`
// `uk-nav-sub`
//
// Modifiers: `uk-nav-parent-icon`
// `uk-nav-side`
// `uk-nav-dropdown`
// `uk-nav-navbar`
// `uk-nav-offcanvas`
//
// States: `uk-active`
// `uk-parent`
// `uk-open`
// `uk-touch`
//
// Uses: Icon: FontAwesome
//
// Used by: Panel
// Dropdown
//
// Markup:
//
// <!-- uk-nav -->
// <ul class="uk-nav">
// <li class="uk-active"><a href=""></a></li>
// <li><a href=""></a></li>
// </ul>
//
// ========================================================================
// Variables
// ========================================================================
@nav-padding-vertical: 5px;
@nav-padding-horizontal: 15px;
@nav-header-padding-vertical: @nav-padding-vertical;
@nav-header-padding-horizontal: @nav-padding-horizontal;
@nav-header-font-size: 12px;
@nav-header-font-weight: bold;
@nav-header-text-transform: uppercase;
@nav-header-margin-top: 15px;
@nav-divider-margin-vertical: 9px;
@nav-divider-margin-horizontal: @nav-padding-horizontal;
@nav-subtitle-font-size: 12px;
@nav-subtitle-line-height: 18px;
@nav-nested-padding-left: 15px;
@nav-nested-padding-vertical: 2px;
@nav-nested-padding-horizontal: 0;
@nav-sub-padding-vertical: 5px;
@nav-sub-padding-left: @nav-padding-horizontal;
@nav-parent-icon: "\f104";
@nav-parent-open-icon: "\f107";
@nav-parent-icon-width: 20px;
@nav-parent-icon-margin-right: -10px;
@nav-side-color: #444;
@nav-side-hover-background: rgba(0,0,0,0.05);
@nav-side-hover-color: #444;
@nav-side-active-background: #00a8e6;
@nav-side-active-color: #fff;
@nav-side-header-color: #444;
@nav-side-divider-border: #ddd;
@nav-side-divider-border-width: 1px;
@nav-side-nested-color: #07D;
@nav-side-nested-hover-color: #059;
@nav-dropdown-color: #444;
@nav-dropdown-hover-background: #00a8e6;
@nav-dropdown-hover-color: #fff;
@nav-dropdown-header-color: #999;
@nav-dropdown-divider-border: #ddd;
@nav-dropdown-divider-border-width: 1px;
@nav-dropdown-nested-color: #07D;
@nav-dropdown-nested-hover-color: #059;
@nav-navbar-color: #444;
@nav-navbar-hover-background: #00a8e6;
@nav-navbar-hover-color: #fff;
@nav-navbar-header-color: #999;
@nav-navbar-divider-border: #ddd;
@nav-navbar-divider-border-width: 1px;
@nav-navbar-nested-color: #07D;
@nav-navbar-nested-hover-color: #059;
@nav-offcanvas-padding-vertical: 10px;
@nav-offcanvas-padding-horizontal: 15px;
@nav-offcanvas-color: #ccc;
@nav-offcanvas-hover-background: #404040;
@nav-offcanvas-hover-color: #fff;
@nav-offcanvas-active-background: #1a1a1a;
@nav-offcanvas-active-color: #fff;
@nav-offcanvas-header-color: #777;
@nav-offcanvas-divider-border: #1a1a1a;
@nav-offcanvas-divider-border-width: 1px;
@nav-offcanvas-nested-color: #ccc;
@nav-offcanvas-nested-hover-color: #fff;
/* ========================================================================
Component: Nav
========================================================================== */
.uk-nav,
.uk-nav ul {
margin: 0;
padding: 0;
list-style: none;
}
/*
* Items
*/
.uk-nav li > a {
display: block;
text-decoration: none;
}
.uk-nav > li > a { padding: @nav-padding-vertical @nav-padding-horizontal; }
/*
* Nested items
*/
.uk-nav ul { padding-left: @nav-nested-padding-left; }
.uk-nav ul a { padding: @nav-nested-padding-vertical @nav-nested-padding-horizontal; }
/*
* Item subtitle
*/
.uk-nav li > a > div {
font-size: @nav-subtitle-font-size;
line-height: @nav-subtitle-line-height;
}
/* Sub-object: `uk-nav-header`
========================================================================== */
.uk-nav-header {
padding: @nav-header-padding-vertical @nav-header-padding-horizontal;
text-transform: @nav-header-text-transform;
font-weight: @nav-header-font-weight;
font-size: @nav-header-font-size;
.hook-nav-header;
}
.uk-nav-header:not(:first-child) { margin-top: @nav-header-margin-top; }
/* Sub-object: `uk-nav-divider`
========================================================================== */
.uk-nav-divider {
margin: @nav-divider-margin-vertical @nav-divider-margin-horizontal;
.hook-nav-divider;
}
/* Sub-object: `uk-nav-sub`
========================================================================== */
/*
* `ul` needed for higher specificity to override padding
*/
ul.uk-nav-sub {
padding: @nav-sub-padding-vertical 0 @nav-sub-padding-vertical @nav-sub-padding-left;
.hook-nav-sub;
}
/* Modifier: `uk-nav-parent-icon`
========================================================================== */
.uk-nav-parent-icon > .uk-parent > a:after {
content: @nav-parent-icon;
width: @nav-parent-icon-width;
margin-right: @nav-parent-icon-margin-right;
float: right;
font-family: FontAwesome;
text-align: center;
.hook-nav-parent-icon;
}
.uk-nav-parent-icon > .uk-parent.uk-open > a:after { content: @nav-parent-open-icon; }
/* Modifier `uk-nav-side`
========================================================================== */
/*
* Items
*/
.uk-nav-side > li > a {
color: @nav-side-color;
.hook-nav-side;
}
/*
* Hover
* 1. Apply hover style also to focus state
* 2. Remove default focus style
*/
.uk-nav-side > li > a:hover,
.uk-nav-side > li > a:focus { // 1
background: @nav-side-hover-background;
color: @nav-side-hover-color;
/* 2 */
outline: none;
.hook-nav-side-hover;
}
/* Active */
.uk-nav-side > li.uk-active > a {
background: @nav-side-active-background;
color: @nav-side-active-color;
.hook-nav-side-active;
}
/*
* Sub-object: `uk-nav-header`
*/
.uk-nav-side .uk-nav-header {
color: @nav-side-header-color;
.hook-nav-side-header;
}
/*
* Sub-object: `uk-nav-divider`
*/
.uk-nav-side .uk-nav-divider {
border-top: @nav-side-divider-border-width solid @nav-side-divider-border;
.hook-nav-side-divider;
}
/*
* Nested items
*/
.uk-nav-side ul a { color: @nav-side-nested-color; }
.uk-nav-side ul a:hover { color: @nav-side-nested-hover-color; }
/* Modifier `uk-nav-dropdown`
========================================================================== */
/*
* Items
*/
.uk-nav-dropdown > li > a {
color: @nav-dropdown-color;
.hook-nav-dropdown;
}
/*
* Hover
* 1. Apply hover style also to focus state
* 2. Remove default focus style
*/
.uk-nav-dropdown > li > a:hover,
.uk-nav-dropdown > li > a:focus { // 1
background: @nav-dropdown-hover-background;
color: @nav-dropdown-hover-color;
/* 2 */
outline: none;
.hook-nav-dropdown-hover;
}
/*
* Sub-object: `uk-nav-header`
*/
.uk-nav-dropdown .uk-nav-header {
color: @nav-dropdown-header-color;
.hook-nav-dropdown-header;
}
/*
* Sub-object: `uk-nav-divider`
*/
.uk-nav-dropdown .uk-nav-divider {
border-top: @nav-dropdown-divider-border-width solid @nav-dropdown-divider-border;
.hook-nav-dropdown-divider;
}
/*
* Nested items
*/
.uk-nav-dropdown ul a { color: @nav-dropdown-nested-color; }
.uk-nav-dropdown ul a:hover { color: @nav-dropdown-nested-hover-color; }
/* Modifier `uk-nav-navbar`
========================================================================== */
/*
* Items
*/
.uk-nav-navbar > li > a {
color: @nav-navbar-color;
.hook-nav-navbar;
}
/*
* Hover
* 1. Apply hover style also to focus state
* 2. Remove default focus style
*/
.uk-nav-navbar > li > a:hover,
.uk-nav-navbar > li > a:focus { // 1
background: @nav-navbar-hover-background;
color: @nav-navbar-hover-color;
/* 2 */
outline: none;
.hook-nav-navbar-hover;
}
/*
* Sub-object: `uk-nav-header`
*/
.uk-nav-navbar .uk-nav-header {
color: @nav-navbar-header-color;
.hook-nav-navbar-header;
}
/*
* Sub-object: `uk-nav-divider`
*/
.uk-nav-navbar .uk-nav-divider {
border-top: @nav-navbar-divider-border-width solid @nav-navbar-divider-border;
.hook-nav-navbar-divider;
}
/*
* Nested items
*/
.uk-nav-navbar ul a { color: @nav-navbar-nested-color; }
.uk-nav-navbar ul a:hover { color: @nav-navbar-nested-hover-color; }
/* Modifier `uk-nav-offcanvas`
========================================================================== */
/*
* Items
*/
.uk-nav-offcanvas > li > a {
color: @nav-offcanvas-color;
padding: @nav-offcanvas-padding-vertical @nav-offcanvas-padding-horizontal;
.hook-nav-offcanvas;
}
/*
* Hover
* No hover on touch devices because it behaves buggy in fixed offcanvas
* 1. Apply hover style also to focus state
* 2. Remove default focus style
*/
.uk-nav-offcanvas > .uk-open > a,
html:not(.uk-touch) .uk-nav-offcanvas > li > a:hover,
html:not(.uk-touch) .uk-nav-offcanvas > li > a:focus { // 1
background: @nav-offcanvas-hover-background;
color: @nav-offcanvas-hover-color;
/* 2 */
outline: none;
.hook-nav-offcanvas-hover;
}
/*
* Active
* `html .uk-nav` needed for higher specificity to override hover
*/
html .uk-nav.uk-nav-offcanvas > li.uk-active > a {
background: @nav-offcanvas-active-background;
color: @nav-offcanvas-active-color;
.hook-nav-offcanvas-active;
}
/*
* Sub-object: `uk-nav-header`
*/
.uk-nav-offcanvas .uk-nav-header {
color: @nav-offcanvas-header-color;
.hook-nav-offcanvas-header;
}
/*
* Sub-object: `uk-nav-divider`
*/
.uk-nav-offcanvas .uk-nav-divider {
border-top: @nav-offcanvas-divider-border-width solid @nav-offcanvas-divider-border;
.hook-nav-offcanvas-divider;
}
/*
* Nested items
* No hover on touch devices because it behaves buggy in fixed offcanvas
*/
.uk-nav-offcanvas ul a { color: @nav-offcanvas-nested-color; }
html:not(.uk-touch) .uk-nav-offcanvas ul a:hover { color: @nav-offcanvas-nested-hover-color; }
// Hooks
// ========================================================================
.hook-nav-misc;
.hook-nav-header() {}
.hook-nav-divider() {}
.hook-nav-sub() {}
.hook-nav-parent-icon() {}
.hook-nav-side() {}
.hook-nav-side-hover() {}
.hook-nav-side-active() {}
.hook-nav-side-header() {}
.hook-nav-side-divider() {}
.hook-nav-dropdown() {}
.hook-nav-dropdown-hover() {}
.hook-nav-dropdown-header() {}
.hook-nav-dropdown-divider() {}
.hook-nav-navbar() {}
.hook-nav-navbar-hover() {}
.hook-nav-navbar-header() {}
.hook-nav-navbar-divider() {}
.hook-nav-offcanvas() {}
.hook-nav-offcanvas-hover() {}
.hook-nav-offcanvas-active() {}
.hook-nav-offcanvas-header() {}
.hook-nav-offcanvas-divider() {}
.hook-nav-misc() {}

327
assets/js/uikit/less/navbar.less Executable file
View File

@@ -0,0 +1,327 @@
// Name: Navbar
// Description: Defines styles for the navigation bar
//
// Component: `uk-navbar`
//
// Sub-objects: `uk-navbar-nav`
// `uk-navbar-nav-subtitle`
// `uk-navbar-content`
// `uk-navbar-brand`
// `uk-navbar-toggle`
// `uk-navbar-toggle-alt`
// `uk-navbar-center`
// `uk-navbar-flip`
//
// Modifiers: `uk-navbar-attached`
//
// States: `uk-active`
// `uk-parent`
// `uk-open`
//
// Used by: Dropdown
//
// Markup:
//
// <!-- uk-navbar -->
// <nav class="uk-navbar">
// <ul class="uk-navbar-nav">
// <li class="uk-active"><a href=""></a></li>
// <li><a href=""></a></li>
// </ul>
// </nav>
//
// ========================================================================
// Variables
// ========================================================================
@navbar-background: #eee;
@navbar-color: #444;
@navbar-link-color: #07D;
@navbar-link-hover-color: #059;
@navbar-nav-height: 40px;
@navbar-nav-line-height: @navbar-nav-height;
@navbar-nav-padding-horizontal: 15px;
@navbar-nav-color: #444;
@navbar-nav-font-size: 14px;
@navbar-nav-font-weight: normal;
@navbar-nav-font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
@navbar-nav-hover-background: #f5f5f5;
@navbar-nav-hover-color: #444;
@navbar-nav-onclick-background: #ddd;
@navbar-nav-onclick-color: #444;
@navbar-nav-active-background: #f5f5f5;
@navbar-nav-active-color: #444;
@navbar-nav-subtitle-font-size: 10px;
@navbar-nav-subtitle-offset: 2px;
@navbar-brand-font-size: 18px;
@navbar-brand-color: #444;
@navbar-brand-hover-color: #444;
@navbar-toggle-font-size: 18px;
@navbar-toggle-color: #444;
@navbar-toggle-hover-color: #444;
@navbar-toggle-icon: "\f0c9";
@navbar-toggle-icon-alt: "\f002";
/* ========================================================================
Component: Navbar
========================================================================== */
.uk-navbar {
background: @navbar-background;
color: @navbar-color;
.hook-navbar;
}
/*
* Micro clearfix
*/
.uk-navbar:before,
.uk-navbar:after {
content: " ";
display: table;
}
.uk-navbar:after { clear: both; }
/* Sub-object: `uk-navbar-nav`
========================================================================== */
.uk-navbar-nav {
margin: 0;
padding: 0;
list-style: none;
float: left;
}
/*
* 1. Create position context for dropdowns
*/
.uk-navbar-nav > li {
float: left;
/* 1 */
position: relative;
}
/*
* 1. Dimensions
* 2. Style
*/
.uk-navbar-nav > li > a {
display: block;
-moz-box-sizing: border-box;
box-sizing: border-box;
text-decoration: none;
/* 1 */
height: @navbar-nav-height;
padding: 0 @navbar-nav-padding-horizontal;
line-height: @navbar-nav-line-height;
/* 2 */
color: @navbar-nav-color;
font-size: @navbar-nav-font-size;
font-family: @navbar-nav-font-family;
font-weight: @navbar-nav-font-weight;
.hook-navbar-nav;
}
/* Appear not as link */
.uk-navbar-nav > li > a[href='#'] { cursor: text; }
/*
* Hover
* 1. Apply hover style also to focus state
* 2. Also apply if dropdown is opened
* 3. Remove default focus style
*/
.uk-navbar-nav > li:hover > a,
.uk-navbar-nav > li > a:focus, // 1
.uk-navbar-nav > li.uk-open > a { // 2
background-color: @navbar-nav-hover-background;
color: @navbar-nav-hover-color;
/* 3 */
outline: none;
.hook-navbar-nav-hover;
}
/* OnClick */
.uk-navbar-nav > li > a:active {
background-color: @navbar-nav-onclick-background;
color: @navbar-nav-onclick-color;
.hook-navbar-nav-onclick;
}
/* Active */
.uk-navbar-nav > li.uk-active > a {
background-color: @navbar-nav-active-background;
color: @navbar-nav-active-color;
.hook-navbar-nav-active;
}
/* Sub-objects: `uk-navbar-nav-subtitle`
========================================================================== */
.uk-navbar-nav .uk-navbar-nav-subtitle { line-height: @navbar-nav-line-height - @navbar-nav-subtitle-font-size - @navbar-nav-subtitle-offset; }
.uk-navbar-nav-subtitle > div {
margin-top: ((@navbar-nav-line-height - @navbar-nav-subtitle-font-size - @navbar-nav-font-size) / -2) + @navbar-nav-subtitle-offset;
font-size: @navbar-nav-subtitle-font-size;
line-height: @navbar-nav-subtitle-font-size + @navbar-nav-subtitle-offset;
}
/* Sub-objects: `uk-navbar-content`, `uk-navbar-brand`, `uk-navbar-toggle`
========================================================================== */
/*
* Imitate navbar items
*/
.uk-navbar-content,
.uk-navbar-brand,
.uk-navbar-toggle {
-moz-box-sizing: border-box;
box-sizing: border-box;
display: block;
height: @navbar-nav-height;
padding: 0 @navbar-nav-padding-horizontal;
float: left;
.hook-navbar-content;
}
/*
* Helper to center all child elements vertically
*/
.uk-navbar-content:before,
.uk-navbar-brand:before,
.uk-navbar-toggle:before {
content: '';
display: inline-block;
height: 100%;
vertical-align: middle;
}
/* Sub-objects: `uk-navbar-content`
========================================================================== */
/*
* Better sibling spacing
*/
.uk-navbar-content + .uk-navbar-content:not(.uk-navbar-center) { padding-left: 0; }
/*
* Link colors
*/
.uk-navbar-content > a:not([class]) { color: @navbar-link-color; }
.uk-navbar-content > a:not([class]):hover { color: @navbar-link-hover-color; }
/* Sub-objects: `uk-navbar-brand`
========================================================================== */
.uk-navbar-brand {
font-size: @navbar-brand-font-size;
color: @navbar-brand-color;
text-decoration: none;
}
/*
* 1. Apply hover style also to focus state
* 2. Remove default focus style
*/
.uk-navbar-brand:hover,
.uk-navbar-brand:focus { // 1
color: @navbar-brand-hover-color;
text-decoration: none;
/* 2 */
outline: none;
}
/* Sub-object: `uk-navbar-toggle`
========================================================================== */
.uk-navbar-toggle {
font-size: @navbar-toggle-font-size;
color: @navbar-toggle-color;
text-decoration: none;
}
/*
* 1. Apply hover style also to focus state
* 2. Remove default focus style
*/
.uk-navbar-toggle:hover,
.uk-navbar-toggle:focus { // 1
color: @navbar-toggle-hover-color;
text-decoration: none;
/* 2 */
outline: none;
}
/*
* 1. Center icon vertically
*/
.uk-navbar-toggle:after {
content: @navbar-toggle-icon;
font-family: FontAwesome;
/* 1 */
vertical-align: middle;
}
.uk-navbar-toggle-alt:after { content: @navbar-toggle-icon-alt; }
/* Sub-object: `uk-navbar-center`
========================================================================== */
/*
* The element with this class needs to be last child in the navbar
* 1. This hack is needed because other float elements shift centered text
*/
.uk-navbar-center {
float: none;
text-align: center;
/* 1 */
max-width: 50%;
margin-left: auto;
margin-right: auto;
}
/* Sub-object: `uk-navbar-flip`
========================================================================== */
.uk-navbar-flip { float: right; }
// Hooks
// ========================================================================
.hook-navbar-misc;
.hook-navbar() {}
.hook-navbar-nav() {}
.hook-navbar-nav-hover() {}
.hook-navbar-nav-onclick() {}
.hook-navbar-nav-active() {}
.hook-navbar-content() {}
.hook-navbar-misc() {}

View File

@@ -0,0 +1,162 @@
// Name: Off-canvas
// Description: Defines styles for an off-canvas sidebar that slides in and out of the page
//
// Component: `uk-offcanvas`
//
// Sub-objects: `uk-offcanvas-page`
// `uk-offcanvas-bar`
// `uk-offcanvas-close`
//
// Modifiers: `uk-offcanvas-bar-flip`
//
// States: `uk-active`
//
// Uses: Panel: `uk-panel`
//
// Markup:
//
// <!-- uk-offcanvas -->
// <a href="#offcanvas" data-uk-offcanvas>Open</a>
// <div id="offcanvas" class="uk-offcanvas">
// <div class="uk-offcanvas-bar"></div>
// </div>
//
// ========================================================================
// Variables
// ========================================================================
@offcanvas-z-index: 1000;
@offcanvas-background: rgba(0,0,0,0.1);
@offcanvas-bar-width: 270px;
@offcanvas-bar-background: #333;
@offcanvas-panel-margin: 20px 15px;
@offcanvas-panel-color: #777;
@offcanvas-panel-title-color: @offcanvas-panel-link-color;
@offcanvas-panel-link-color: #ccc;
@offcanvas-panel-link-hover-color: #fff;
/* ========================================================================
Component: Off-canvas
========================================================================== */
/*
* This is the offcanvas overlay and bar container
* 1. Hide by default
* 2. Set fixed position
* 3. Mask the background page
*/
.uk-offcanvas {
/* 1 */
display: none;
/* 2 */
position: fixed;
top: 0;
right: 0;
bottom: 0;
left: 0;
z-index: @offcanvas-z-index;
/* 3 */
background: @offcanvas-background;
.hook-offcanvas;
}
.uk-offcanvas.uk-active { display: block; }
/* Sub-object `uk-offcanvas-page`
========================================================================== */
/*
* Prepares the whole HTML page to slide-out
* 1. Fix the main page and disallow scrolling
* 2. Side-out transition
*/
.uk-offcanvas-page {
/* 1 */
position: fixed;
/* 2 */
-webkit-transition: margin-left 0.3s ease-in-out;
transition: margin-left 0.3s ease-in-out;
}
/* Sub-object `uk-offcanvas-bar`
========================================================================== */
/*
* This is the offcanvas bar
* 1. Set fixed position
* 2. Size and style
* 3. Allow scrolling
* 4. Side-out transition
*/
.uk-offcanvas-bar {
/* 1 */
position: fixed;
top: 0;
bottom: 0;
left: 0;
-webkit-transform: translateX(-100%);
transform: translateX(-100%);
z-index: @offcanvas-z-index + 1;
/* 2 */
width: @offcanvas-bar-width;
max-width: 100%;
background: @offcanvas-bar-background;
/* 3 */
overflow-y: auto;
-webkit-overflow-scrolling: touch;
/* 4 */
-webkit-transition: -webkit-transform 0.3s ease-in-out;
transition: transform 0.3s ease-in-out;
.hook-offcanvas-bar;
}
.uk-offcanvas.uk-active .uk-offcanvas-bar.uk-offcanvas-bar-show {
-webkit-transform: translateX(0%);
transform: translateX(0%);
}
/* Modifier `uk-offcanvas-bar-flip`
========================================================================== */
.uk-offcanvas-bar-flip {
left: auto;
right: 0;
-webkit-transform: translateX(100%);
transform: translateX(100%);
}
/* Panel in offcanvas
========================================================================== */
.uk-offcanvas .uk-panel {
margin: @offcanvas-panel-margin;
color: @offcanvas-panel-color;
.hook-offcanvas-panel;
}
.uk-offcanvas .uk-panel-title { color: @offcanvas-panel-title-color; }
.uk-offcanvas .uk-panel a:not([class]) { color: @offcanvas-panel-link-color; }
.uk-offcanvas .uk-panel a:not([class]):hover { color: @offcanvas-panel-link-hover-color; }
// Hooks
// ========================================================================
.hook-offcanvas-misc;
.hook-offcanvas() {}
.hook-offcanvas-bar() {}
.hook-offcanvas-panel() {}
.hook-offcanvas-misc() {}

241
assets/js/uikit/less/overlay.less Executable file
View File

@@ -0,0 +1,241 @@
// Name: Overlay
// Description: Defines styles for image overlays
//
// Component: `uk-overlay`
//
// Sub-objects: `uk-overlay-area`
// `uk-overlay-area-content`
// `uk-overlay-caption`
// `uk-overlay-toggle`
//
// States: `uk-hover`
//
// Markup:
//
// <!-- uk-overlay -->
// <a class="uk-overlay" href="">
// <img src="" alt="">
// <div class="uk-overlay-area"></div>
// </a>
//
// ========================================================================
// Variables
// ========================================================================
@overlay-area-background: rgba(0,0,0,0.3);
@overlay-area-icon: "\f002";
@overlay-area-icon-size: 50px;
@overlay-area-icon-color: #fff;
@overlay-area-content-font-size: 1rem;
@overlay-area-content-padding-horizontal: 15px;
@overlay-area-content-color: #fff;
@overlay-area-content-link-color: inherit;
@overlay-caption-background: rgba(0,0,0,0.5);
@overlay-caption-padding: 15px;
@overlay-caption-color: #fff;
/* ========================================================================
Component: Overlay
========================================================================== */
/*
* 1. Container width fits its content
* 2. Create position context
* 3. Set max-width for responsive images to prevent `inline-block` consequences
* 4. Remove the gap between the container and its child element
* 5. Fixed wrong scaling calculation for images in Chrome
*/
.uk-overlay {
/* 1 */
display: inline-block;
/* 2 */
position: relative;
/* 3 */
max-width: 100%;
/* 4 */
vertical-align: middle;
/* 5 */
overflow: hidden;
}
/*
* Remove margin from content
*/
.uk-overlay > :first-child { margin-bottom: 0; }
/* Sub-object `uk-overlay-area`
========================================================================== */
/*
* 1. Set position
* 2. Set style
* 3. Fade-in transition
*/
.uk-overlay-area {
/* 1 */
position: absolute;
top: 0;
bottom: 0;
left: 0;
right: 0;
/* 2 */
background: @overlay-area-background;
/* 3 */
opacity: 0;
-webkit-transition: opacity 0.15s linear;
transition: opacity 0.15s linear;
-webkit-transform: translate3d(0,0,0);
.hook-overlay-area;
}
/*
* Hover
* 1. `uk-hover` to support touch devices
* 2. Use optional `uk-overlay-toggle` to trigger the overlay earlier
*/
.uk-overlay:hover .uk-overlay-area,
.uk-overlay.uk-hover .uk-overlay-area, // 1
.uk-overlay-toggle:hover .uk-overlay-area, // 2
.uk-overlay-toggle.uk-hover .uk-overlay-area { opacity: 1; }
/*
* Icon
*/
.uk-overlay-area:empty:before {
content: @overlay-area-icon;
position: absolute;
top: 50%;
left: 50%;
width: @overlay-area-icon-size;
height: @overlay-area-icon-size;
margin-top: -(@overlay-area-icon-size / 2);
margin-left: -(@overlay-area-icon-size / 2);
font-size: @overlay-area-icon-size;
line-height: 1;
font-family: FontAwesome;
text-align: center;
color: @overlay-area-icon-color;
.hook-overlay-area-icon;
}
/* Sub-object `uk-overlay-area-content`
========================================================================== */
/*
* Remove whitespace between child elements when using `inline-block`
* Needed for Firefox
*/
.uk-overlay-area:not(:empty) { font-size: 0.001px; }
/*
* 1. Needed for vertical alignment
*/
.uk-overlay-area:not(:empty):before {
content: '';
display: inline-block;
height: 100%;
vertical-align: middle;
}
/*
* 1. Set vertical alignment
* 2. Reset whitespace hack
* 3. Set horizontal alignment
* 4. Set style
*/
.uk-overlay-area-content {
/* 1 */
display: inline-block;
-moz-box-sizing: border-box;
box-sizing: border-box;
width: 100%;
vertical-align: middle;
/* 2 */
font-size: @overlay-area-content-font-size;
/* 3 */
text-align: center;
/* 4 */
padding: 0 @overlay-area-content-padding-horizontal;
color: @overlay-area-content-color;
.hook-overlay-area-content;
}
/*
* Remove margin from the last-child
*/
.uk-overlay-area-content > :last-child { margin-bottom: 0; }
/*
* Links in overlay area
*/
.uk-overlay-area-content a:not([class]),
.uk-overlay-area-content a:not([class]):hover { color: @overlay-area-content-link-color; }
/* Sub-object `uk-overlay-caption`
========================================================================== */
/*
* 1. Set position
* 2. Set style
* 3. Fade-in transition
*/
.uk-overlay-caption {
/* 1 */
position: absolute;
bottom: 0;
left: 0;
right: 0;
/* 2 */
padding: @overlay-caption-padding;
background: @overlay-caption-background;
color: @overlay-caption-color;
/* 3 */
opacity: 0;
-webkit-transition: opacity 0.15s linear;
transition: opacity 0.15s linear;
-webkit-transform: translate3d(0,0,0);
.hook-overlay-caption;
}
/*
* Hover
* 1. `uk-hover` to support touch devices
* 2. Use optional `uk-overlay-toggle` to trigger the overlay earlier
*/
.uk-overlay:hover .uk-overlay-caption,
.uk-overlay.uk-hover .uk-overlay-caption, // 1
.uk-overlay-toggle:hover .uk-overlay-caption, // 2
.uk-overlay-toggle.uk-hover .uk-overlay-caption { opacity: 1; }
// Hooks
// ========================================================================
.hook-overlay-misc;
.hook-overlay-area() {}
.hook-overlay-area-icon() {}
.hook-overlay-area-content() {}
.hook-overlay-caption() {}
.hook-overlay-misc() {}

View File

@@ -0,0 +1,198 @@
// Name: Pagination
// Description: Defines styles for a navigation between pages
//
// Component: `uk-pagination`
//
// Sub-objects: `uk-pagination-previous`
// `uk-pagination-next`
//
// Modifiers: `uk-pagination-left`
// `uk-pagination-right`
//
// States: `uk-active`
// `uk-disabled`
//
// Markup:
//
// <!-- uk-pagination -->
// <ul class="uk-pagination">
// <li class="uk-active"><span></span></li>
// <li><a href=""></a></li>
// </ul>
//
// ========================================================================
// Variables
// ========================================================================
@pagination-font-size: 1rem;
@pagination-margin-left: 5px;
@pagination-padding-vertical: 3px;
@pagination-padding-horizontal: 5px;
@pagination-line-height: 20px;
@pagination-background: #eee;
@pagination-color: #444;
@pagination-hover-background: #f5f5f5;
@pagination-hover-color: #444;
@pagination-onclick-background: #ddd;
@pagination-onclick-color: #444;
@pagination-active-background: #00a8e6;
@pagination-active-color: #fff;
@pagination-disabled-background: #f5f5f5;
@pagination-disabled-color: #999;
/* ========================================================================
Component: Pagination
========================================================================== */
/*
* 1. Remove default list style
* 2. Center pagination by default
* 3. Remove whitespace between child elements when using `inline-block`
*/
.uk-pagination {
/* 1 */
padding: 0;
list-style: none;
/* 2 */
text-align: center;
/* 3 */
font-size: 0.001px;
}
/*
* Micro clearfix
* Needed if `uk-pagination-previous` or `uk-pagination-next` sub-objects are used
*/
.uk-pagination:before,
.uk-pagination:after {
content: " ";
display: table;
}
.uk-pagination:after { clear: both; }
/* Items
========================================================================== */
/*
* 1. Reset whitespace hack
* 2. Remove the gap at the bottom of it container
*/
.uk-pagination > li {
display: inline-block;
/* 1 */
font-size: @pagination-font-size;
/* 2 */
vertical-align: top;
}
.uk-pagination > li:nth-child(n+2) { margin-left: @pagination-margin-left; }
/*
* 1. Makes pagination more robust against different box-sizing use
* 2. Reset text-align to center if alignment modifier is used
*/
.uk-pagination > li > a,
.uk-pagination > li > span {
display: inline-block;
min-width: @pagination-line-height + (2 * @pagination-padding-vertical) - (2 * @pagination-padding-horizontal);
padding: @pagination-padding-vertical @pagination-padding-horizontal;
line-height: @pagination-line-height;
text-decoration: none;
/* 1 */
-moz-box-sizing: content-box;
box-sizing: content-box;
/* 2 */
text-align: center;
.hook-pagination-item;
}
/*
* Links
*/
.uk-pagination > li > a {
background: @pagination-background;
color: @pagination-color;
.hook-pagination-link;
}
/*
* Hover
* 1. Apply hover style also to focus state
* 2. Remove default focus style
*/
.uk-pagination > li > a:hover,
.uk-pagination > li > a:focus { // 1
background-color: @pagination-hover-background;
color: @pagination-hover-color;
/* 2 */
outline: none;
.hook-pagination-link-hover;
}
/* OnClick */
.uk-pagination > li > a:active {
background-color: @pagination-onclick-background;
color: @pagination-onclick-color;
.hook-pagination-link-active;
}
/*
* Active
*/
.uk-pagination > .uk-active > span {
background: @pagination-active-background;
color: @pagination-active-color;
.hook-pagination-active;
}
/*
* Disabled
*/
.uk-pagination > .uk-disabled > span {
background-color: @pagination-disabled-background;
color: @pagination-disabled-color;
.hook-pagination-disabled;
}
/* Previous and next navigation
========================================================================== */
.uk-pagination-previous { float: left; }
.uk-pagination-next { float: right; }
/* Alignment modifiers
========================================================================== */
.uk-pagination-left { text-align: left; }
.uk-pagination-right { text-align: right; }
// Hooks
// ========================================================================
.hook-pagination-misc;
.hook-pagination-item() {}
.hook-pagination-link() {}
.hook-pagination-link-hover() {}
.hook-pagination-link-active() {}
.hook-pagination-active() {}
.hook-pagination-disabled() {}
.hook-pagination-misc() {}

244
assets/js/uikit/less/panel.less Executable file
View File

@@ -0,0 +1,244 @@
// Name: Panel
// Description: Defines styles for reusable content areas
//
// Component: `uk-panel`
//
// Sub-objects: `uk-panel-title`
// `uk-panel-badge`
// `uk-panel-teaser`
//
// Modifiers: `uk-panel-box`
// `uk-panel-box-primary`
// `uk-panel-box-secondary`
// `uk-panel-header`
// `uk-panel-space`
// `uk-panel-divider`
//
// Uses: Nav: `uk-nav-side`
//
// Used by: Dropdown
// Off-canvas
// Grid
//
// Markup:
//
// <!-- uk-panel -->
// <div class="uk-panel">
// <div class="uk-panel-badge uk-badge"></div>
// <h3 class="uk-panel-title"></h3>
// <p></p>
// </div>
//
// ========================================================================
// Variables
// ========================================================================
@panel-title-margin-bottom: 15px;
@panel-title-font-size: 18px;
@panel-title-line-height: 24px;
@panel-title-font-weight: normal;
@panel-title-color: #444;
@panel-title-text-transform: none;
@panel-box-padding: 15px;
@panel-box-background: #f5f5f5;
@panel-box-color: #444;
@panel-box-title-color: #444;
@panel-box-badge-top: 10px;
@panel-box-badge-right: @panel-box-badge-top;
@panel-box-teaser-margin: -@panel-box-padding;
@panel-box-teaser-margin-bottom: @panel-title-margin-bottom;
@panel-box-primary-background: #ebf7fd;
@panel-box-primary-color: #2d7091;
@panel-box-primary-title-color: #2d7091;
@panel-box-secondary-background: #eee;
@panel-box-secondary-color: #444;
@panel-box-secondary-title-color: #444;
@panel-header-title-padding: 10px;
@panel-header-title-border: #ddd;
@panel-header-title-border-width: 1px;
@panel-header-title-color: #444;
@panel-space-padding: 30px;
@panel-divider-gutter: 25px;
@panel-divider-gutter-large: 35px;
@panel-divider-border: #ddd;
@panel-divider-border-width: 1px;
/* ========================================================================
Component: Panel
========================================================================== */
/*
* 1. Needed for `a` elements
* 2. Create position context for badges
*/
.uk-panel {
/* 1 */
display: block;
/* 2 */
position: relative;
}
/*
* Micro clearfix to make panels more robust
*/
.uk-panel:before,
.uk-panel:after {
content: " ";
display: table;
}
.uk-panel:after { clear: both; }
/*
* Remove margin from the last-child if not `uk-widget-title`
*/
.uk-panel > :not(.uk-panel-title):last-child { margin-bottom: 0; }
/* Sub-object: `uk-panel-title`
========================================================================== */
.uk-panel-title {
margin-top: 0;
margin-bottom: @panel-title-margin-bottom;
font-size: @panel-title-font-size;
line-height: @panel-title-line-height;
font-weight: @panel-title-font-weight;
text-transform: @panel-title-text-transform;
color: @panel-title-color;
.hook-panel-title;
}
/* Sub-object: `uk-panel-badge`
========================================================================== */
.uk-panel-badge {
position: absolute;
top: 0;
right: 0;
z-index: 1;
.hook-panel-badge;
}
/* Modifier: `uk-panel-box`
========================================================================== */
.uk-panel-box {
padding: @panel-box-padding;
background: @panel-box-background;
color: @panel-box-color;
.hook-panel-box;
}
.uk-panel-box .uk-panel-title { color: @panel-box-title-color; }
.uk-panel-box .uk-panel-badge {
top: @panel-box-badge-top;
right: @panel-box-badge-right;
}
.uk-panel-box .uk-panel-teaser { margin: @panel-box-teaser-margin @panel-box-teaser-margin @panel-box-teaser-margin-bottom @panel-box-teaser-margin; }
/*
* Nav in panel
*/
.uk-panel-box > .uk-nav-side { margin: 0 -@panel-box-padding; }
/*
* Sub-modifier: `uk-panel-box-primary`
*/
.uk-panel-box-primary {
background-color: @panel-box-primary-background;
color: @panel-box-primary-color;
.hook-panel-box-primary;
}
.uk-panel-box-primary .uk-panel-title { color: @panel-box-primary-title-color; }
/*
* Sub-modifier: `uk-panel-box-secondary`
*/
.uk-panel-box-secondary {
background-color: @panel-box-secondary-background;
color: @panel-box-secondary-color;
.hook-panel-box-secondary;
}
.uk-panel-box-secondary .uk-panel-title { color: @panel-box-secondary-title-color; }
/* Modifier: `uk-panel-header`
========================================================================== */
.uk-panel-header .uk-panel-title {
padding-bottom: @panel-header-title-padding;
border-bottom: @panel-header-title-border-width solid @panel-header-title-border;
color: @panel-header-title-color;
.hook-panel-header;
}
/* Modifier: `uk-panel-space`
========================================================================== */
.uk-panel-space { padding: @panel-space-padding; }
.uk-panel-space .uk-panel-badge {
top: @panel-space-padding;
right: @panel-space-padding;
}
/* Modifier: `uk-panel-divider`
========================================================================== */
.uk-panel + .uk-panel-divider { margin-top: (@panel-divider-gutter * 2) !important; }
.uk-panel + .uk-panel-divider:before {
content: "";
display: block;
position: absolute;
top: -(@panel-divider-gutter);
left: 0;
right: 0;
border-top: @panel-divider-border-width solid @panel-divider-border;
}
/* Large screen and bigger */
@media (min-width: @breakpoint-xlarge) {
.uk-panel + .uk-panel-divider { margin-top: (@panel-divider-gutter-large * 2) !important; }
.uk-panel + .uk-panel-divider:before { top: -(@panel-divider-gutter-large); }
}
// Hooks
// ========================================================================
.hook-panel-misc;
.hook-panel-title() {}
.hook-panel-badge() {}
.hook-panel-box() {}
.hook-panel-box-primary() {}
.hook-panel-box-secondary() {}
.hook-panel-header() {}
.hook-panel-misc() {}

52
assets/js/uikit/less/print.less Executable file
View File

@@ -0,0 +1,52 @@
// Name: Print
// Description: Optimize page for printing
//
// Adapted from http://github.com/h5bp/html5-boilerplate
//
// Modifications: Removed link `href` and `title` related rules
//
// ========================================================================
/* ========================================================================
Component: Print
========================================================================== */
@media print {
* {
background: transparent !important;
color: black !important;
box-shadow: none !important;
text-shadow: none !important;
}
a,
a:visited { text-decoration: underline; }
pre,
blockquote {
border: 1px solid #999;
page-break-inside: avoid;
}
thead { display: table-header-group; }
tr,
img { page-break-inside: avoid; }
img { max-width: 100% !important; }
@page { margin: 0.5cm; }
p,
h2,
h3 {
orphans: 3;
widows: 3;
}
h2,
h3 { page-break-after: avoid; }
}

View File

@@ -0,0 +1,174 @@
// Name: Progress
// Description: Defines styles for progress bars
//
// Component: `uk-progress`
//
// Sub-objects: `uk-progress-bar`
//
// Modifiers: `uk-progress-mini`
// `uk-progress-small`
// `uk-progress-success`
// `uk-progress-warning`
// `uk-progress-danger`
// `uk-progress-striped`
//
// Markup:
//
// <!-- uk-progress -->
// <div class="uk-progress">
// <div class="uk-progress-bar" style="width: 40%;"></div>
// </div>
//
// ========================================================================
// Variables
// ========================================================================
@progress-height: 20px;
@progress-mini-height: 6px;
@progress-small-height: 12px;
@progress-margin-vertical: 15px;
@progress-background: #eee;
@progress-bar-background: #00a8e6;
@progress-bar-font-size: 12px;
@progress-bar-color: #fff;
@progress-bar-success-background: #8cc14c;
@progress-bar-warning-background: #faa732;
@progress-bar-danger-background: #da314b;
/* ========================================================================
Component: Progress
========================================================================== */
/*
* 1. Clearing
* 2. Vertical alignment if text is used
*/
.uk-progress {
-moz-box-sizing: border-box;
box-sizing: border-box;
height: @progress-height;
margin-bottom: @progress-margin-vertical;
background: @progress-background;
/* 1 */
overflow: hidden;
/* 2 */
line-height: @progress-height;
.hook-progress;
}
/*
* Add margin if adjacent element
*/
* + .uk-progress { margin-top: @progress-margin-vertical; }
/* Sub-object: `uk-progress-bar`
========================================================================== */
/*
* 1. Transition
* 2. Needed for text
*/
.uk-progress-bar {
width: 0;
height: 100%;
background: @progress-bar-background;
float: left;
/* 1 */
-webkit-transition: width 0.6s ease;
transition: width 0.6s ease;
/* 2 */
font-size: @progress-bar-font-size;
color: @progress-bar-color;
text-align: center;
.hook-progress-bar;
}
/* Size modifiers
========================================================================== */
/* Mini */
.uk-progress-mini {
height: @progress-mini-height;
.hook-progress-mini;
}
/* Small */
.uk-progress-small {
height: @progress-small-height;
.hook-progress-small;
}
/* Color modifiers
========================================================================== */
.uk-progress-success .uk-progress-bar {
background-color: @progress-bar-success-background;
.hook-progress-bar-success;
}
.uk-progress-warning .uk-progress-bar {
background-color: @progress-bar-warning-background;
.hook-progress-bar-warning;
}
.uk-progress-danger .uk-progress-bar {
background-color: @progress-bar-danger-background;
.hook-progress-bar-danger;
}
/* Modifier: `uk-progress-striped`
========================================================================== */
.uk-progress-striped .uk-progress-bar {
background-image: -webkit-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
background-image: linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
background-size: 30px 30px;
}
/*
* Animation
*/
.uk-progress-striped.uk-active .uk-progress-bar {
-webkit-animation: uk-progress-bar-stripes 2s linear infinite;
animation: uk-progress-bar-stripes 2s linear infinite;
}
@-webkit-keyframes uk-progress-bar-stripes {
0% { background-position: 0 0;}
100% { background-position: 30px 0; }
}
@keyframes uk-progress-bar-stripes {
0% { background-position: 0 0;}
100% { background-position: 30px 0; }
}
// Hooks
// ========================================================================
.hook-progress-misc;
.hook-progress() {}
.hook-progress-bar() {}
.hook-progress-mini() {}
.hook-progress-small() {}
.hook-progress-bar-success() {}
.hook-progress-bar-warning() {}
.hook-progress-bar-danger() {}
.hook-progress-misc() {}

183
assets/js/uikit/less/subnav.less Executable file
View File

@@ -0,0 +1,183 @@
// Name: Subnav
// Description: Defines styles for the sub navigation
//
// Component: `uk-subnav`
//
// Modifiers: `uk-subnav-line`
// `uk-subnav-pill`
//
// States: `uk-active`
//
// Markup:
//
// <!-- uk-subnav -->
// <ul class="uk-subnav">
// <li><a href=""></a></li>
// </ul>
//
// ========================================================================
// Variables
// ========================================================================
@subnav-font-size: 1rem;
@subnav-margin: 10px;
@subnav-color: #07D;
@subnav-hover-color: #059;
@subnav-disabled-color: #999;
@subnav-line-border-height: 10px;
@subnav-line-border: #ddd;
@subnav-line-border-width: 1px;
@subnav-pill-padding-vertical: 3px;
@subnav-pill-padding-horizontal: 9px;
@subnav-pill-hover-background: #eee;
@subnav-pill-hover-color: #444;
@subnav-pill-active-background: #00a8e6;
@subnav-pill-active-color: #fff;
/* ========================================================================
Component: Subnav
========================================================================== */
/*
* 1. Remove default list style
* 2. Remove whitespace between child elements when using `inline-block`
*/
.uk-subnav {
/* 1 */
padding: 0;
list-style: none;
/* 2 */
font-size: 0.001px;
}
/* Items
========================================================================== */
/*
* 1. Create position context for dropdowns
* 2. Reset whitespace hack
*/
.uk-subnav > li {
/* 1 */
position: relative;
/* 2 */
font-size: @subnav-font-size;
vertical-align: top;
}
.uk-subnav > li,
.uk-subnav > li > a,
.uk-subnav > li > span { display: inline-block; }
.uk-subnav > li:nth-child(n+2) { margin-left: @subnav-margin; }
/*
* Items
*/
.uk-subnav > li > a,
.uk-subnav > li > span {
.hook-subnav-item;
}
.uk-subnav > li > a {
color: @subnav-color;
.hook-subnav-link;
}
.uk-subnav > li > a:hover {
color: @subnav-hover-color;
.hook-subnav-link-hover;
}
/*
* Active
*/
.uk-subnav > li.uk-active > a {
.hook-subnav-active;
}
/*
* Disabled
*/
.uk-subnav > li > span {
color: @subnav-disabled-color;
.hook-subnav-disabled;
}
/* Modifier: 'subnav-line'
========================================================================== */
.uk-subnav-line > li:nth-child(n+2):before {
content: "";
display: inline-block;
height: @subnav-line-border-height;
margin-right: @subnav-margin;
border-left: @subnav-line-border-width solid @subnav-line-border;
.hook-subnav-line-divider;
}
/* Modifier: 'subnav-pill'
========================================================================== */
.uk-subnav-pill > li > a,
.uk-subnav-pill > li > span {
padding: @subnav-pill-padding-vertical @subnav-pill-padding-horizontal;
text-decoration: none;
.hook-subnav-pill;
}
/*
* Hover
* 1. Apply hover style also to focus state
* 2. Remove default focus style
*/
.uk-subnav-pill > li > a:hover,
.uk-subnav-pill > li > a:focus { // 1
background: @subnav-pill-hover-background;
color: @subnav-pill-hover-color;
/* 2 */
outline: none;
.hook-subnav-pill-hover;
}
/*
* Active
* `li` needed for higher specificity to override hover
*/
.uk-subnav-pill > li.uk-active > a {
background: @subnav-pill-active-background;
color: @subnav-pill-active-color;
.hook-subnav-pill-active;
}
// Hooks
// ========================================================================
.hook-subnav-misc;
.hook-subnav-item() {}
.hook-subnav-link() {}
.hook-subnav-link-hover() {}
.hook-subnav-active() {}
.hook-subnav-disabled() {}
.hook-subnav-line-divider() {}
.hook-subnav-pill() {}
.hook-subnav-pill-hover() {}
.hook-subnav-pill-active() {}
.hook-subnav-misc() {}

View File

@@ -0,0 +1,33 @@
// Name: Switcher
// Description: Defines styles for the switcher
//
// Component: `uk-switcher`
//
// States: `uk-active`
//
// ========================================================================
/* ========================================================================
Component: Switcher
========================================================================== */
.uk-switcher {
margin: 0;
padding: 0;
list-style: none;
}
/*
* Items
*/
.uk-switcher > *:not(.uk-active) { display: none; }
// Hooks
// ========================================================================
.hook-switcher-misc;
.hook-switcher-misc() {}

368
assets/js/uikit/less/tab.less Executable file
View File

@@ -0,0 +1,368 @@
// Name: Tab
// Description: Defines styles for a tabbed navigation
//
// Component: `uk-tab`
//
// Modifiers: `uk-tab-flip`
// `uk-tab-center`
// `uk-tab-grid`
// `uk-tab-bottom`
// `uk-tab-left`
// `uk-tab-right`
// `uk-tab-responsive`
//
// States: `uk-active`
// `uk-disabled`
//
// Markup:
//
// <!-- uk-tab -->
// <ul class="uk-tab" data-uk-tab>
// <li class="uk-active"><a href=""></a></li>
// <li><a href=""></a></li>
// </ul>
//
// ========================================================================
// Variables
// ========================================================================
@tab-border: #ddd;
@tab-border-width: 1px;
@tab-padding-horizontal: 12px;
@tab-padding-vertical: 8px;
@tab-padding-top: @tab-padding-vertical;
@tab-padding-bottom: @tab-padding-vertical;
@tab-margin-horizontal: 5px;
@tab-margin-vertical: 5px;
@tab-color: #07D;
@tab-hover-border: #f5f5f5;
@tab-hover-background: #f5f5f5;
@tab-hover-color: #059;
@tab-active-border: #ddd;
@tab-active-background: #fff;
@tab-active-color: #444;
@tab-disabled-color: #999;
/* ========================================================================
Component: Tab
========================================================================== */
.uk-tab {
margin: 0;
padding: 0;
list-style: none;
border-bottom: @tab-border-width solid @tab-border;
}
/*
* Micro clearfix on the deepest container
*/
.uk-tab:before,
.uk-tab:after {
content: " ";
display: table;
}
.uk-tab:after { clear: both; }
/*
* Items
* 1. Create position context for dropdowns
*/
.uk-tab > li {
margin-bottom: -@tab-border-width;
float: left;
/* 1 */
position: relative;
}
.uk-tab > li > a {
display: block;
padding: @tab-padding-top @tab-padding-horizontal @tab-padding-bottom @tab-padding-horizontal;
border: @tab-border-width solid transparent;
border-bottom-width: 0;
color: @tab-color;
text-decoration: none;
.hook-tab;
}
.uk-tab > li:nth-child(n+2) > a { margin-left: @tab-margin-horizontal; }
/*
* Hover
* 1. Apply hover style also to focus state
* 2. Also apply if dropdown is opened
* 3. Remove default focus style
*/
.uk-tab > li > a:hover,
.uk-tab > li > a:focus, // 1
.uk-tab > li.uk-open > a { // 2
border-color: @tab-hover-border;
background: @tab-hover-background;
color: @tab-hover-color;
/* 2 */
outline: none;
.hook-tab-hover;
}
.uk-tab > li:not(.uk-active) > a:hover,
.uk-tab > li:not(.uk-active) > a:focus,
.uk-tab > li.uk-open:not(.uk-active) > a {
margin-bottom: @tab-border-width;
padding-bottom: @tab-padding-bottom - @tab-border-width;
}
/* Active */
.uk-tab > li.uk-active > a {
border-color: @tab-active-border;
border-bottom-color: transparent;
background: @tab-active-background;
color: @tab-active-color;
.hook-tab-active;
}
/* Disabled */
.uk-tab > li.uk-disabled > a {
color: @tab-disabled-color;
cursor: auto;
.hook-tab-disabled;
}
.uk-tab > li.uk-disabled > a:hover,
.uk-tab > li.uk-disabled > a:focus,
.uk-tab > li.uk-disabled.uk-active > a {
background: none;
border-color: transparent;
}
/* Modifier: 'tab-flip'
========================================================================== */
.uk-tab-flip > li { float: right; }
.uk-tab-flip > li:nth-child(n+2) > a {
margin-left: 0;
margin-right: @tab-margin-horizontal;
}
/* Modifier: 'tab-responsive'
========================================================================== */
.uk-tab > li.uk-tab-responsive > a {
margin-left: 0;
margin-right: 0;
}
/*
* Icon
*/
.uk-tab-responsive > a:before {
content: "\f0c9\00a0";
font-family: FontAwesome;
}
/* Modifier: 'tab-center'
========================================================================== */
.uk-tab-center { border-bottom: @tab-border-width solid @tab-border; }
.uk-tab-center-bottom {
border-bottom: none;
border-top: @tab-border-width solid @tab-border;
}
.uk-tab-center:before,
.uk-tab-center:after {
content: " ";
display: table;
}
.uk-tab-center:after { clear: both; }
/*
* 1. Using `right` to prevent vertical scrollbar caused by centering if to many tabs
*/
.uk-tab-center .uk-tab {
position: relative;
right: 50%;
border: none;
float: right;
}
.uk-tab-center .uk-tab > li {
position: relative;
right: -50%;
}
.uk-tab-center .uk-tab > li > a { text-align: center; }
/* Modifier: 'tab-bottom'
========================================================================== */
.uk-tab-bottom {
border-top: @tab-border-width solid @tab-border;
border-bottom: none;
}
.uk-tab-bottom > li {
margin-top: -@tab-border-width;
margin-bottom: 0;
}
.uk-tab-bottom > li > a {
padding-top: @tab-padding-bottom;
padding-bottom: @tab-padding-top;
border-bottom-width: @tab-border-width;
border-top-width: 0;
}
.uk-tab-bottom > li:not(.uk-active) > a:hover,
.uk-tab-bottom > li:not(.uk-active) > a:focus,
.uk-tab-bottom > li.uk-open:not(.uk-active) > a {
margin-bottom: 0;
margin-top: @tab-border-width;
padding-bottom: @tab-padding-top;
padding-top: @tab-padding-bottom - @tab-border-width;
}
.uk-tab-bottom > li.uk-active > a {
border-top-color: transparent;
border-bottom-color: @tab-active-border;
}
/* Modifier: 'tab-grid'
========================================================================== */
/*
* 1. Create position context to prevent hidden border because of negative `z-index`
*/
.uk-tab-grid {
margin-left: -@tab-margin-horizontal;
border-bottom: none;
/* 1 */
position: relative;
z-index: 0;
}
.uk-tab-grid:before {
display: block;
position: absolute;
left: @tab-margin-horizontal;
right: 0;
bottom: -@tab-border-width;
border-top: @tab-border-width solid @tab-border;
/* 1 */
z-index: -1;
}
.uk-tab-grid > li:first-child > a { margin-left: @tab-margin-horizontal; }
.uk-tab-grid > li > a { text-align: center; }
/*
* If `uk-tab-bottom`
*/
.uk-tab-grid.uk-tab-bottom { border-top: none; }
.uk-tab-grid.uk-tab-bottom:before {
top: -@tab-border-width;
bottom: auto;
}
/* Modifier: 'tab-left', 'tab-right'
========================================================================== */
/* Tablet and bigger */
@media (min-width: @breakpoint-medium) {
.uk-tab-left,
.uk-tab-right { border-bottom: none; }
.uk-tab-left > li,
.uk-tab-right > li {
margin-bottom: 0;
float: none;
}
.uk-tab-left > li > a,
.uk-tab-right > li > a {
padding-top: @tab-padding-vertical;
padding-bottom: @tab-padding-vertical;
}
.uk-tab-left > li:nth-child(n+2) > a,
.uk-tab-right > li:nth-child(n+2) > a {
margin-left: 0;
margin-top: @tab-margin-vertical;
}
.uk-tab-left > li.uk-active > a,
.uk-tab-right > li.uk-active > a { border-color: @tab-active-border; }
/*
* Modifier: 'tab-left'
*/
.uk-tab-left { border-right: @tab-border-width solid @tab-border; }
.uk-tab-left > li { margin-right: -@tab-border-width; }
.uk-tab-left > li > a {
border-bottom-width: @tab-border-width;
border-right-width: 0;
}
.uk-tab-left > li:not(.uk-active) > a:hover,
.uk-tab-left > li:not(.uk-active) > a:focus {
margin-bottom: 0;
margin-right: @tab-border-width;
padding-bottom: @tab-padding-vertical;
padding-right: @tab-padding-horizontal - @tab-border-width;
}
.uk-tab-left > li.uk-active > a { border-right-color: transparent; }
/*
* Modifier: 'tab-right'
*/
.uk-tab-right { border-left: @tab-border-width solid @tab-border; }
.uk-tab-right > li { margin-left: -@tab-border-width; }
.uk-tab-right > li > a {
border-bottom-width: @tab-border-width;
border-left-width: 0;
}
.uk-tab-right > li:not(.uk-active) > a:hover,
.uk-tab-right > li:not(.uk-active) > a:focus {
margin-bottom: 0;
margin-left: @tab-border-width;
padding-bottom: @tab-padding-vertical;
padding-left: @tab-padding-horizontal - @tab-border-width;
}
.uk-tab-right > li.uk-active > a { border-left-color: transparent; }
}
// Hooks
// ========================================================================
.hook-tab-misc;
.hook-tab() {}
.hook-tab-hover() {}
.hook-tab-active() {}
.hook-tab-disabled() {}
.hook-tab-misc() {}

120
assets/js/uikit/less/table.less Executable file
View File

@@ -0,0 +1,120 @@
// Name: Table
// Description: Defines styles for tables
//
// Component: `uk-table`
//
// Modifiers: `uk-table-middle`
// `uk-table-striped`
// `uk-table-condensed`
// `uk-table-hover`
//
// ========================================================================
// Variables
// ========================================================================
@table-margin-vertical: 15px;
@table-padding-vertical: 8px;
@table-padding-horizontal: 8px;
@table-caption-color: #999;
@table-caption-font-size: 12px;
@table-striped-background: #f5f5f5;
@table-condensed-padding-vertical: 4px;
@table-condensed-padding-horizontal: 8px;
@table-hover-background: #EEE;
/* ========================================================================
Component: Table
========================================================================== */
/*
* 1. Remove most spacing between table cells.
* 2. Block element behavior
* 3. Style
*/
.uk-table {
/* 1 */
border-collapse: collapse;
border-spacing: 0;
/* 2 */
width: 100%;
/* 3 */
margin-bottom: @table-margin-vertical;
}
/*
* Add margin if adjacent element
*/
* + .uk-table { margin-top: @table-margin-vertical; }
.uk-table th,
.uk-table td {
padding: @table-padding-vertical @table-padding-horizontal;
.hook-table;
}
/*
* Set alignment
*/
.uk-table th { text-align: left; }
.uk-table td { vertical-align: top; }
.uk-table thead th { vertical-align: bottom; }
/*
* Caption and footer
*/
.uk-table caption,
.uk-table tfoot {
font-size: @table-caption-font-size;
font-style: italic;
}
.uk-table caption {
text-align: left;
color: @table-caption-color;
}
/* Sub-modifier: `uk-table-middle`
========================================================================== */
.uk-table-middle,
.uk-table-middle td { vertical-align: middle !important; }
/* Modifier: `uk-table-striped`
========================================================================== */
.uk-table-striped tbody tr:nth-of-type(odd) { background: @table-striped-background; }
/* Modifier: `uk-table-condensed`
========================================================================== */
.uk-table-condensed td { padding: @table-condensed-padding-vertical @table-condensed-padding-horizontal; }
/* Modifier: `uk-table-hover`
========================================================================== */
.uk-table-hover tbody tr:hover { background: @table-hover-background; }
// Hooks
// ========================================================================
.hook-table-misc;
.hook-table() {}
.hook-table-misc() {}

124
assets/js/uikit/less/text.less Executable file
View File

@@ -0,0 +1,124 @@
// Name: Text
// Description: Collection of useful text utility classes to style your content
//
// Component: `uk-text-*`
//
// ========================================================================
// Variables
// ========================================================================
@text-small-font-size: 11px;
@text-small-line-height: 16px;
@text-large-font-size: 18px;
@text-large-line-height: 24px;
@text-large-font-weight: normal;
@text-muted-color: #999;
@text-primary-color: #2d7091;
@text-success-color: #659f13;
@text-warning-color: #e28327;
@text-danger-color: #d85030;
/* ========================================================================
Component: Text
========================================================================== */
/* Size modifiers
========================================================================== */
.uk-text-small {
font-size: @text-small-font-size;
line-height: @text-small-line-height;
}
.uk-text-large {
font-size: @text-large-font-size;
line-height: @text-large-line-height;
font-weight: @text-large-font-weight;
}
/* Weight modifiers
========================================================================== */
.uk-text-bold { font-weight: bold; }
/* Color modifiers
========================================================================== */
.uk-text-muted { color: @text-muted-color !important; }
.uk-text-primary { color: @text-primary-color !important; }
.uk-text-success { color: @text-success-color !important; }
.uk-text-warning { color: @text-warning-color !important; }
.uk-text-danger { color: @text-danger-color !important; }
/* Alignment modifiers
========================================================================== */
.uk-text-left { text-align: left !important; }
.uk-text-right { text-align: right !important; }
.uk-text-center { text-align: center !important; }
.uk-text-justify { text-align: justify !important; }
.uk-text-top { vertical-align: top !important; }
.uk-text-middle { vertical-align: middle !important; }
.uk-text-bottom { vertical-align: bottom !important; }
/* Only tablets portrait */
@media (max-width: @breakpoint-medium-max) {
.uk-text-center-medium { text-align: center !important; }
}
/* Phone landscape and smaller */
@media (max-width: @breakpoint-small-max) {
.uk-text-center-small { text-align: center !important; }
}
/* Wrap modifiers
========================================================================== */
/*
* Prevent text from wrapping onto multiple lines
*/
.uk-text-nowrap { white-space: nowrap; }
/*
* Prevent text from wrapping onto multiple lines, and truncate with an ellipsis
*/
.uk-text-truncate {
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
/*
* Break strings if their length exceeds the width of their container
*/
.uk-text-break {
word-wrap: break-word;
-webkit-hyphens: auto;
-ms-hyphens: auto;
-moz-hyphens: auto;
hyphens: auto;
}
// Hooks
// ========================================================================
.hook-text-misc;
.hook-text-misc() {}

View File

@@ -0,0 +1,123 @@
// Name: Thumbnail
// Description: Defines styles for image thumbnails
//
// Component: `uk-thumbnail`
//
// Sub-objects: `uk-thumbnail-caption`
//
// Modifiers: `uk-thumbnail-mini`
// `uk-thumbnail-small`
// `uk-thumbnail-medium`
// `uk-thumbnail-large`
// `uk-thumbnail-expand`
//
// Markup:
//
// <!-- uk-thumbnail -->
// <figure class="uk-thumbnail">
// <img src="" alt="">
// <figcaption class="uk-thumbnail-caption"></figcaption>
// </figure>
//
// ========================================================================
// Variables
// ========================================================================
@thumbnail-padding: 4px;
@thumbnail-border: #ddd;
@thumbnail-border-width: 1px;
@thumbnail-background: #fff;
@thumbnail-hover-border: #aaa;
@thumbnail-hover-background: #fff;
@thumbnail-caption-padding: @thumbnail-padding;
@thumbnail-caption-color: #444;
@thumbnail-mini-width: 150px;
@thumbnail-small-width: 200px;
@thumbnail-medium-width: 300px;
@thumbnail-large-width: 400px;
/* ========================================================================
Component: Thumbnail
========================================================================== */
/*
* 1. Container width fits its content
* 2. Responsive behavior
* 3. Corrects `max-width` behavior sed
* 4. Required for `figure` element
* 5. Style
*/
.uk-thumbnail {
/* 1 */
display: inline-block;
/* 2 */
max-width: 100%;
/* 3 */
-moz-box-sizing: border-box;
box-sizing: border-box;
/* 3 */
margin: 0;
/* 4 */
padding: @thumbnail-padding;
border: @thumbnail-border-width solid @thumbnail-border;
background: @thumbnail-background;
.hook-thumbnail;
}
/*
* Hover state for `a` elements
* 1. Apply hover style also to focus state
* 2. Needed for caption
* 3. Remove default focus style
*/
a.uk-thumbnail:hover,
a.uk-thumbnail:focus { // 1
border-color: @thumbnail-hover-border;
background-color: @thumbnail-hover-background;
/* 2 */
text-decoration: none;
/* 3 */
outline: none;
.hook-thumbnail-hover;
}
/* Caption
========================================================================== */
.uk-thumbnail-caption {
padding-top: @thumbnail-caption-padding;
text-align: center;
color: @thumbnail-caption-color;
.hook-thumbnail-caption;
}
/* Sizes
========================================================================== */
.uk-thumbnail-mini { width: @thumbnail-mini-width; }
.uk-thumbnail-small { width: @thumbnail-small-width; }
.uk-thumbnail-medium { width: @thumbnail-medium-width; }
.uk-thumbnail-large { width: @thumbnail-large-width; }
.uk-thumbnail-expand,
.uk-thumbnail-expand > img { width: 100%; }
// Hooks
// ========================================================================
.hook-thumbnail-misc;
.hook-thumbnail() {}
.hook-thumbnail-hover() {}
.hook-thumbnail-caption() {}
.hook-thumbnail-misc() {}

179
assets/js/uikit/less/tooltip.less Executable file
View File

@@ -0,0 +1,179 @@
// Name: Tooltip
// Description: Defines styles for tooltips
//
// Component: `uk-tooltip`
//
// Modifiers `uk-tooltip-top`
// `uk-tooltip-top-left`
// `uk-tooltip-top-right`
// `uk-tooltip-bottom`
// `uk-tooltip-bottom-left`
// `uk-tooltip-bottom-right`
// `uk-tooltip-left`
// `uk-tooltip-right`
//
// ========================================================================
// Variables
// ========================================================================
@tooltip-z-index: 1030;
@tooltip-max-width: 200px;
@tooltip-padding-vertical: 5px;
@tooltip-padding-horizontal: 8px;
@tooltip-background: #333;
@tooltip-triangle-size: 5px;
@tooltip-color: rgba(255,255,255,0.7);
@tooltip-font-size: 12px;
@tooltip-line-height: 18px;
@tooltip-offset-horizontal: 10px;
/* ========================================================================
Component: Tooltip
========================================================================== */
/*
* 1. Hide by default
* 2. Set fixed position
* 3. Set dimensions
* 4. Set style
*/
.uk-tooltip {
/* 1 */
display: none;
/* 2 */
position: absolute;
z-index: @tooltip-z-index;
/* 3 */
-moz-box-sizing: border-box;
box-sizing: border-box;
max-width: @tooltip-max-width;
padding: @tooltip-padding-vertical @tooltip-padding-horizontal;
/* 4 */
background: @tooltip-background;
color: @tooltip-color;
font-size: @tooltip-font-size;
line-height: @tooltip-line-height;
text-align: center;
.hook-tooltip;
}
/* Triangle
========================================================================== */
/*
* 1. Dashed is less antialised than solid
*/
.uk-tooltip:after {
content: "";
display: block;
position: absolute;
width: 0;
height: 0;
/* 1 */
border: @tooltip-triangle-size dashed @tooltip-background;
}
/* Direction modifiers
========================================================================== */
/*
* Top
*/
.uk-tooltip-top:after,
.uk-tooltip-top-left:after,
.uk-tooltip-top-right:after {
bottom: -@tooltip-triangle-size;
border-top-style: solid;
border-bottom: none;
border-left-color: transparent;
border-right-color: transparent;
border-top-color: @tooltip-background;
}
/*
* Bottom
*/
.uk-tooltip-bottom:after,
.uk-tooltip-bottom-left:after,
.uk-tooltip-bottom-right:after {
top: -@tooltip-triangle-size;
border-bottom-style: solid;
border-top: none;
border-left-color: transparent;
border-right-color: transparent;
border-bottom-color: @tooltip-background;
}
/*
* Top/Bottom center
*/
.uk-tooltip-top:after,
.uk-tooltip-bottom:after {
left: 50%;
margin-left: -@tooltip-triangle-size;
}
/*
* Top/Bottom left
*/
.uk-tooltip-top-left:after,
.uk-tooltip-bottom-left:after { left: @tooltip-offset-horizontal; }
/*
* Top/Bottom right
*/
.uk-tooltip-top-right:after,
.uk-tooltip-bottom-right:after { right: @tooltip-offset-horizontal; }
/*
* Left
*/
.uk-tooltip-left:after {
right: -@tooltip-triangle-size;
top: 50%;
margin-top: -@tooltip-triangle-size;
border-left-style: solid;
border-right: none;
border-top-color: transparent;
border-bottom-color: transparent;
border-left-color: @tooltip-background;
}
/*
* Right
*/
.uk-tooltip-right:after {
left: -@tooltip-triangle-size;
top: 50%;
margin-top: -@tooltip-triangle-size;
border-right-style: solid;
border-left: none;
border-top-color: transparent;
border-bottom-color: transparent;
border-right-color: @tooltip-background;
}
// Hooks
// ========================================================================
.hook-tooltip-misc;
.hook-tooltip() {}
.hook-tooltip-misc() {}

Some files were not shown because too many files have changed in this diff Show More