vuikit
Version:
A responsive Vue UI library for web site interfaces based on UIkit
1,695 lines (1,655 loc) • 199 kB
JavaScript
/**
* Vuikit 0.8.10
* (c) 2018 Miljan Aleksic
* @license MIT
**/
/* Substantial part of the code is adapted from UIkit,
Copyright (c) 2013-2018 YOOtheme GmbH, getuikit.com */
(function (global, factory) {
typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :
typeof define === 'function' && define.amd ? define(factory) :
(global.Vuikit = factory());
}(this, (function () { 'use strict';
var ref = Object.prototype;
var hasOwnProperty = ref.hasOwnProperty;
function hasOwn (obj, key) {
return hasOwnProperty.call(obj, key)
}
var hyphenateRe = /([a-z\d])([A-Z])/g;
function hyphenate (str) {
return str
.replace(hyphenateRe, '$1-$2')
.toLowerCase()
}
function toUpper (_, c) {
return c ? c.toUpperCase() : ''
}
function ucfirst (str) {
return str.length ? toUpper(null, str.charAt(0)) + str.slice(1) : ''
}
var strPrototype = String.prototype;
var startsWithFn = strPrototype.startsWith || function (search) { return this.lastIndexOf(search, 0) === 0 };
function startsWith (str, search) {
return startsWithFn.call(str, search)
}
var endsWithFn = strPrototype.endsWith || function (search) { return this.substr(-search.length) === search };
function endsWith (str, search) {
return endsWithFn.call(str, search)
}
var includesFn = function (search) { return ~this.indexOf(search) };
var includesStr = strPrototype.includes || includesFn;
var includesArray = Array.prototype.includes || includesFn;
function includes (obj, search) {
return obj && (isString(obj) ? includesStr : includesArray).call(obj, search)
}
var isArray = Array.isArray;
function isFunction (obj) {
return typeof obj === 'function'
}
function isObject (obj) {
return obj !== null && typeof obj === 'object'
}
function isPlainObject (obj) {
return isObject(obj) && Object.getPrototypeOf(obj) === Object.prototype
}
function isWindow (obj) {
return isObject(obj) && obj === obj.window
}
function isDocument (obj) {
return isObject(obj) && obj.nodeType === 9
}
function isJQuery (obj) {
return isObject(obj) && !!obj.jquery
}
function isNode (element) {
return typeof Node !== 'undefined' && element instanceof Node || isObject(element) && element.nodeType === 1
}
function isNodeCollection (element) {
return typeof NodeList !== 'undefined' && element instanceof NodeList ||
typeof HTMLCollection !== 'undefined' && element instanceof HTMLCollection
}
function isString (value) {
return typeof value === 'string'
}
function isNumber (value) {
return typeof value === 'number'
}
function isNumeric (value) {
return isNumber(value) || isString(value) && !isNaN(value - parseFloat(value))
}
function isUndefined (value) {
return value === void 0
}
function toFloat (value) {
return parseFloat(value) || 0
}
function toNode (element) {
return isNode(element) || isWindow(element) || isDocument(element)
? element
: isNodeCollection(element) || isJQuery(element)
? element[0]
: isArray(element)
? toNode(element[0])
: null
}
var arrayProto = Array.prototype;
function toNodes (element) {
return isNode(element)
? [element]
: isNodeCollection(element)
? arrayProto.slice.call(element)
: isArray(element)
? element.map(toNode).filter(Boolean)
: isJQuery(element)
? element.toArray()
: []
}
var assign = Object.assign || function (target) {
var args = [], len = arguments.length - 1;
while ( len-- > 0 ) args[ len ] = arguments[ len + 1 ];
target = Object(target);
for (var i = 0; i < args.length; i++) {
var source = args[i];
if (source !== null) {
for (var key in source) {
if (hasOwn(source, key)) {
target[key] = source[key];
}
}
}
}
return target
};
function each (obj, cb) {
for (var key in obj) {
if (cb.call(obj[key], obj[key], key) === false) {
break
}
}
}
function clamp (number, min, max) {
if ( min === void 0 ) min = 0;
if ( max === void 0 ) max = 1;
return Math.min(Math.max(number, min), max)
}
function noop () {}
function intersectRect (r1, r2) {
return r1.left <= r2.right &&
r2.left <= r1.right &&
r1.top <= r2.bottom &&
r2.top <= r1.bottom
}
function attr (element, name, value) {
if (isObject(name)) {
for (var key in name) {
attr(element, key, name[key]);
}
return
}
if (isUndefined(value)) {
element = toNode(element);
return element && element.getAttribute(name)
} else {
toNodes(element).forEach(function (element) {
if (isFunction(value)) {
value = value.call(element, attr(element, name));
}
if (value === null) {
removeAttr(element, name);
} else {
element.setAttribute(name, value);
}
});
}
}
function hasAttr (element, name) {
return toNodes(element).some(function (element) { return element.hasAttribute(name); })
}
function removeAttr (element, name) {
element = toNodes(element);
name.split(' ').forEach(function (name) { return element.forEach(function (element) { return element.removeAttribute(name); }
); }
);
}
function filterAttr (element, attribute, pattern, replacement) {
attr(element, attribute, function (value) { return value ? value.replace(pattern, replacement) : value; });
}
function data (element, attribute) {
for (var i = 0, attrs = [attribute, ("data-" + attribute)]; i < attrs.length; i++) {
if (hasAttr(element, attrs[i])) {
return attr(element, attrs[i])
}
}
}
function query (selector, context) {
return toNode(selector) || find(selector, isContextSelector(selector) ? context : document)
}
function find (selector, context) {
return toNode(_query(selector, context, 'querySelector'))
}
function findAll (selector, context) {
return toNodes(_query(selector, context, 'querySelectorAll'))
}
function _query (selector, context, queryFn) {
if ( context === void 0 ) context = document;
if (!selector || !isString(selector)) {
return null
}
selector = selector.replace(contextSanitizeRe, '$1 *');
var removes;
if (isContextSelector(selector)) {
removes = [];
selector = selector.split(',').map(function (selector, i) {
var ctx = context;
selector = selector.trim();
if (selector[0] === '!') {
var selectors = selector.substr(1).trim().split(' ');
ctx = closest(context.parentNode, selectors[0]);
selector = selectors.slice(1).join(' ');
}
if (!ctx) {
return null
}
if (!ctx.id) {
ctx.id = "uk-" + (Date.now()) + i;
removes.push(function () { return removeAttr(ctx, 'id'); });
}
return ("#" + (escape(ctx.id)) + " " + selector)
}).filter(Boolean).join(',');
context = document;
}
try {
return context[queryFn](selector)
} catch (e) {
return null
} finally {
removes && removes.forEach(function (remove) { return remove(); });
}
}
var contextSelectorRe = /(^|,)\s*[!>+~]/;
var contextSanitizeRe = /([!>+~])(?=\s+[!>+~]|\s*$)/g;
function isContextSelector (selector) {
return isString(selector) && selector.match(contextSelectorRe)
}
function matches (element, selector) {
var elProto = window.Element.prototype;
var matchesFn = elProto.matches || elProto.webkitMatchesSelector || elProto.msMatchesSelector;
return toNodes(element).some(function (element) { return matchesFn.call(element, selector); })
}
function closest (element, selector) {
var elProto = window.Element.prototype;
var closestFn = elProto.closest || function (selector) {
var ancestor = this;
do {
if (matches(ancestor, selector)) {
return ancestor
}
ancestor = ancestor.parentNode;
} while (ancestor && ancestor.nodeType === 1)
};
if (startsWith(selector, '>')) {
selector = selector.slice(1);
}
return isNode(element)
? element.parentNode && closestFn.call(element, selector)
: toNodes(element).map(function (element) { return element.parentNode && closestFn.call(element, selector); }).filter(Boolean)
}
function escape (css) {
var escapeFn = window.CSS && CSS.escape || function (css) { return css.replace(/([^\x7f-\uFFFF\w-])/g, function (match) { return ("\\" + match); }) };
return isString(css) ? escapeFn.call(null, css) : ''
}
function isVisible (element) {
return toNodes(element).some(function (element) { return element.offsetHeight || element.getBoundingClientRect().height; })
}
function filter (element, selector) {
return toNodes(element).filter(function (element) { return matches(element, selector); })
}
function within (element, selector) {
return !isString(selector)
? element === selector || (isDocument(selector)
? selector.documentElement
: toNode(selector)).contains(toNode(element))
: matches(element, selector) || closest(element, selector)
}
function on () {
var args = [], len = arguments.length;
while ( len-- ) args[ len ] = arguments[ len ];
var ref = getArgs(args);
var target = ref[0];
var type = ref[1];
var selector = ref[2];
var listener = ref[3];
var useCapture = ref[4];
target = toEventTarget(target);
if (selector) {
listener = delegate(target, selector, listener);
}
if (listener.length > 1) {
listener = detail(listener);
}
type.split(' ').forEach(function (type) { return target && target.addEventListener(type, listener, useCapture); });
return function () { return off(target, type, listener, useCapture); }
}
function off (target, type, listener, useCapture) {
if ( useCapture === void 0 ) useCapture = false;
target = toEventTarget(target);
target && type.split(' ').forEach(function (type) { return target.removeEventListener(type, listener, useCapture); });
}
function once () {
var args = [], len = arguments.length;
while ( len-- ) args[ len ] = arguments[ len ];
var ref = getArgs(args);
var element = ref[0];
var type = ref[1];
var selector = ref[2];
var listener = ref[3];
var useCapture = ref[4];
var condition = ref[5];
var off = on(element, type, selector, function (e) {
var result = !condition || condition(e);
if (result) {
off();
listener(e, result);
}
}, useCapture);
return off
}
function trigger (target, event, detail) {
return toEventTargets(target).reduce(function (notCanceled, target) { return notCanceled && target.dispatchEvent(createEvent(event, true, true, detail)); }
, true)
}
function createEvent (e, bubbles, cancelable, detail) {
if ( bubbles === void 0 ) bubbles = true;
if ( cancelable === void 0 ) cancelable = false;
if (isString(e)) {
var event = document.createEvent('CustomEvent');
event.initCustomEvent(e, bubbles, cancelable, detail);
e = event;
}
return e
}
function getArgs (args) {
if (isString(args[0])) {
args[0] = find(args[0]);
}
if (isFunction(args[2])) {
args.splice(2, 0, false);
}
return args
}
function delegate (element, selector, listener) {
var this$1 = this;
return function (e) {
var target = e.target;
var current = selector[0] === '>'
? findAll(selector, element).reverse().filter(function (element) { return within(target, element); })[0]
: closest(target, selector);
if (current) {
e.delegate = element;
e.current = current;
listener.call(this$1, e);
}
}
}
function detail (listener) {
return function (e) { return isArray(e.detail) ? listener.apply(listener, [e].concat(e.detail)) : listener(e); }
}
function isEventTarget (target) {
return typeof window !== 'undefined' && 'EventTarget' in window
? target instanceof window.EventTarget
: target && 'addEventListener' in target
}
function toEventTarget (target) {
return isEventTarget(target) ? target : toNode(target)
}
function toEventTargets (target) {
return isEventTarget(target)
? [target]
: isArray(target)
? target.map(toEventTarget).filter(Boolean)
: toNodes(target)
}
var doc = typeof document !== 'undefined' && document;
function isReady () {
return doc && (document.readyState === 'complete' || document.readyState !== 'loading' && !document.documentElement.doScroll)
}
function ready (fn) {
if (!doc) {
return
}
if (isReady()) {
fn();
return
}
var handle = function () {
unbind1();
unbind2();
fn();
};
var unbind1 = on(document, 'DOMContentLoaded', handle);
var unbind2 = on(window, 'load', handle);
}
function append (parent, element) {
parent = toNode(parent);
return insertNodes(element, function (element) { return parent.appendChild(element); })
}
function before (ref, element) {
ref = toNode(ref);
return insertNodes(element, function (element) { return ref.parentNode.insertBefore(element, ref); })
}
function after (ref, element) {
ref = toNode(ref);
return insertNodes(element, function (element) { return ref.nextSibling
? before(ref.nextSibling, element)
: append(ref.parentNode, element); }
)
}
function insertNodes (element, fn) {
element = isString(element) ? fragment(element) : element;
return element
? 'length' in element
? toNodes(element).map(fn)
: fn(element)
: null
}
function remove (element) {
toNodes(element).map(function (element) { return element.parentNode && element.parentNode.removeChild(element); });
}
var fragmentRE = /^\s*<(\w+|!)[^>]*>/;
var singleTagRE = /^<(\w+)\s*\/?>(?:<\/\1>)?$/;
function fragment (html) {
var matches = singleTagRE.exec(html);
if (matches) {
return document.createElement(matches[1])
}
var container = document.createElement('div');
if (fragmentRE.test(html)) {
container.insertAdjacentHTML('beforeend', html.trim());
} else {
container.textContent = html;
}
return container.childNodes.length > 1 ? toNodes(container.childNodes) : container.firstChild
}
function addClass (element) {
var args = [], len = arguments.length - 1;
while ( len-- > 0 ) args[ len ] = arguments[ len + 1 ];
apply$1(element, args, 'add');
}
function removeClass (element) {
var args = [], len = arguments.length - 1;
while ( len-- > 0 ) args[ len ] = arguments[ len + 1 ];
apply$1(element, args, 'remove');
}
function removeClasses (element, cls) {
filterAttr(element, 'class', new RegExp(("(^|\\s)" + cls + "(?!\\S)"), 'g'), '');
}
function replaceClass (element) {
var args = [], len = arguments.length - 1;
while ( len-- > 0 ) args[ len ] = arguments[ len + 1 ];
args[0] && removeClass(element, args[0]);
args[1] && addClass(element, args[1]);
}
function hasClass (element, cls) {
return toNodes(element).some(function (element) { return element.classList.contains(cls); })
}
function toggleClass (element) {
var args = [], len = arguments.length - 1;
while ( len-- > 0 ) args[ len ] = arguments[ len + 1 ];
if (!args.length) {
return
}
args = getArgs$1(args);
var force = !isString(args[args.length - 1]) ? args.pop() : [];
args = args.filter(Boolean);
toNodes(element).forEach(function (ref) {
var classList = ref.classList;
for (var i = 0; i < args.length; i++) {
supports.Force
? classList.toggle.apply(classList, [args[i]].concat(force))
: (classList[(!isUndefined(force) ? force : !classList.contains(args[i])) ? 'add' : 'remove'](args[i]));
}
});
}
function apply$1 (element, args, fn) {
args = getArgs$1(args).filter(Boolean);
args.length && toNodes(element).forEach(function (ref) {
var classList = ref.classList;
supports.Multiple
? classList[fn].apply(classList, args)
: args.forEach(function (cls) { return classList[fn](cls); });
});
}
function getArgs$1 (args) {
return args.reduce(function (args, arg) { return args.concat.call(args, isString(arg) && includes(arg, ' ') ? arg.trim().split(' ') : arg); }
, [])
}
var supports = {};
(function () {
if (typeof document !== 'undefined' && document.createElement('_').classList) {
var list = document.createElement('_').classList;
list.add('a', 'b');
list.toggle('c', false);
supports.Multiple = list.contains('b');
supports.Force = !list.contains('c');
list = null;
}
})();
var cssNumber = {
'animation-iteration-count': true,
'column-count': true,
'fill-opacity': true,
'flex-grow': true,
'flex-shrink': true,
'font-weight': true,
'line-height': true,
'opacity': true,
'order': true,
'orphans': true,
'widows': true,
'z-index': true,
'zoom': true
};
function css (element, property, value) {
return toNodes(element).map(function (element) {
if (isString(property)) {
property = propName(property);
if (isUndefined(value)) {
return getStyle(element, property)
} else if (!value && value !== 0) {
element.style.removeProperty(property);
} else {
element.style[property] = isNumeric(value) && !cssNumber[property] ? (value + "px") : value;
}
} else if (isArray(property)) {
var styles = getStyles(element);
return property.reduce(function (props, property) {
props[property] = styles[propName(property)];
return props
}, {})
} else if (isObject(property)) {
each(property, function (value, property) { return css(element, property, value); });
}
return element
})[0]
}
function getStyles (element, pseudoElt) {
element = toNode(element);
return element.ownerDocument.defaultView.getComputedStyle(element, pseudoElt)
}
function getStyle (element, property, pseudoElt) {
return getStyles(element, pseudoElt)[property]
}
var vars = {};
function getCssVar (name) {
if (!(name in vars)) {
var element = append(document.documentElement, document.createElement('div'));
addClass(element, ("var-" + name));
try {
vars[name] = getStyle(element, 'content', ':before').replace(/^["'](.*)["']$/, '$1');
vars[name] = JSON.parse(vars[name]);
} catch (e) {}
document.documentElement.removeChild(element);
}
return vars[name]
}
var cssProps = {};
function propName (name) {
var ret = cssProps[name];
if (!ret) {
ret = cssProps[name] = vendorPropName(name) || name;
}
return ret
}
var cssPrefixes = ['webkit', 'moz', 'ms'];
function vendorPropName (name) {
var ref = document.createElement('_');
var style = ref.style;
name = hyphenate(name);
if (name in style) {
return name
}
var i = cssPrefixes.length, prefixedName;
while (i--) {
prefixedName = "-" + (cssPrefixes[i]) + "-" + name;
if (prefixedName in style) {
return prefixedName
}
}
}
function toMedia (value) {
if (isString(value)) {
if (value[0] === '@') {
var name = "media-" + (value.substr(1));
value = toFloat(getCssVar(name));
} else if (isNaN(value)) {
return value
}
}
return value && !isNaN(value) ? ("(min-width: " + value + "px)") : false
}
function get (obj, path, defVal) {
var result = isObject(obj) && isString(path)
? _get(obj, path)
: undefined;
return result === undefined
? defVal
: result
}
function _get (obj, path) {
return path.split('.').reduce(function (acc, val) { return acc && acc[val]; }, obj)
}
function range (start, stop, step) {
if ( step === void 0 ) step = 1;
if (typeof stop === 'undefined') {
stop = start;
start = 0;
}
return Array.from(new Array(Math.floor((stop - start) / step)), function (x, i) { return start + (i * step); })
}
function findParent (instance) {
return findParents(instance).pop()
}
function findParents (instance) {
var parents = [];
var name = instance.$options.name;
var parent = instance.$parent;
while (parent) {
if (parent.$options.name === name) {
parents.unshift(parent);
}
parent = parent.$parent;
}
return parents
}
function apply$2 (instance, fn) {
if (!instance || !instance._isVue) {
return
}
fn(instance);
instance.$children.forEach(function (child) { return apply$2(child, fn); });
}
function filterOutTextNodes (nodes) {
return nodes.filter(function (n) { return n.tag || isAsyncPlaceholder(n); })
}
function isAsyncPlaceholder (node) {
return node.isComment && node.asyncFactory
}
function mergeData () {
var arguments$1 = arguments;
for(var e,a,s={},t=arguments.length;t--;){ for(var r=0,c=Object.keys(arguments[t]);r<c.length;r++){ switch(e=c[r]){case"class":case"style":case"directives":Array.isArray(s[e])||(s[e]=[]), s[e]=s[e].concat(arguments$1[t][e]);break;case"staticClass":if(!arguments$1[t][e]){ break; }void 0===s[e]&&(s[e]=""), s[e]&&(s[e]+=" "), s[e]+=arguments$1[t][e].trim();break;case"on":case"nativeOn":s[e]||(s[e]={});for(var o=0,n=Object.keys(arguments[t][e]);o<n.length;o++){ a=n[o], s[e][a]?s[e][a]=[].concat(s[e][a],arguments$1[t][e][a]):s[e][a]=arguments$1[t][e][a]; }break;case"attrs":case"props":case"domProps":case"scopedSlots":case"staticStyle":case"hook":case"transition":s[e]||(s[e]={}), s[e]=__assign({},arguments$1[t][e],s[e]);break;case"slot":case"key":case"ref":case"tag":case"show":case"keepAlive":default:s[e]||(s[e]=arguments$1[t][e]);} } }return s}var __assign=Object.assign||function(e){
var arguments$1 = arguments;
for(var a,s=1,t=arguments.length;s<t;s++){a=arguments$1[s];for(var r in a){ Object.prototype.hasOwnProperty.call(a,r)&&(e[r]=a[r]); }}return e
};
var ElementBreadcrumb = {
functional: true,
render: function (h, ref) {
var props = ref.props;
var data = ref.data;
var children = ref.children;
return h('ul', mergeData(data, {
class: 'uk-breadcrumb'
}), children)
}
}
var ElementBreadcrumbItem = {
functional: true,
props: {
href: String,
target: String,
disabled: {
type: Boolean,
default: false
}
},
render: function (h, ref) {
var props = ref.props;
var data = ref.data;
var children = ref.children;
var disabled = props.disabled;
var href = props.href;
var target = props.target;
return h('li', mergeData(data, {
class: {
'uk-disabled': disabled
}
}), [
(isUndefined(href) || disabled)
? h('span', children)
: h('a', { attrs: { href: href, target: target } }, children)
])
}
}
var breadcrumb = {
name: 'VkBreadcrumb',
functional: true,
props: ElementBreadcrumb.props,
render: ElementBreadcrumb.render
}
var breadcrumb_Item = {
name: 'VkBreadcrumbItem',
functional: true,
props: ElementBreadcrumbItem.props,
render: ElementBreadcrumbItem.render
}
var props = {
active: {
type: Boolean,
default: false
},
size: {
type: String,
validator: function (val) { return !val || /^(small|large)$/.test(val); }
},
type: {
type: String,
validator: function (val) { return !val || /^(primary|secondary|danger|text|link)$/.test(val); }
}
};
var def = function (ref) {
var obj;
var type = ref.type;
var active = ref.active;
var size = ref.size;
return ({
class: ['uk-button', ("uk-button-" + (type || 'default')), ( obj = {
'uk-active': active
}, obj[("uk-button-" + size)] = size, obj)]
});
};
var ElementButton = {
functional: true,
props: assign({}, props, {
htmlType: {
type: String,
default: 'button'
}
}),
render: function render (h, ref) {
var props$$1 = ref.props;
var data = ref.data;
var children = ref.children;
var htmlType = props$$1.htmlType;
return h('button', mergeData(data, def(props$$1), {
attrs: {
type: htmlType
}
}), children)
}
}
var ElementButtonLink = {
functional: true,
props: props,
render: function render (h, ref) {
var props$$1 = ref.props;
var data = ref.data;
var children = ref.children;
return h('a', mergeData(data, def(props$$1)), children)
}
}
var ElementButtonGroup = {
functional: true,
render: function render (h, ref) {
var data = ref.data;
var children = ref.children;
return h('div', mergeData(data, {
class: 'uk-button-group'
}), children)
}
}
var button = {
name: 'VkButton',
functional: true,
props: ElementButton.props,
render: ElementButton.render
}
var buttonLink = {
name: 'VkButtonLink',
functional: true,
props: ElementButtonLink.props,
render: ElementButtonLink.render
}
var buttonGroup = {
name: 'VkButtonGroup',
functional: true,
props: ElementButtonGroup.props,
render: ElementButtonGroup.render
}
var ElementCard = {
functional: true,
props: {
type: {
type: String,
default: 'default',
validator: function (val) { return /^(default|primary|secondary|blank)$/.test(val); }
},
padding: {
type: String,
validator: function (val) { return !val || /^(small|large)$/.test(val); }
},
hover: {
type: Boolean,
default: false
}
},
render: function render (h, ref) {
var obj;
var props = ref.props;
var data = ref.data;
var slots = ref.slots;
var type = props.type;
var padding = props.padding;
var hover = props.hover;
var _slots = slots();
var body = _slots.body;
if (!body || !body.length) {
_slots.body = _slots.default;
delete _slots.default;
}
return h('div', mergeData(data, {
class: ['uk-card', ( obj = {
'uk-card-hover': hover
}, obj[("uk-card-" + type)] = type, obj[("uk-card-" + padding)] = padding, obj)]
}), [
_slots.default && _slots.default,
_slots['media-top'] && h('div', { class: 'uk-card-media-top' }, _slots['media-top']),
_slots.badge && h('div', { class: 'uk-card-badge' }, _slots.badge),
_slots.header && h('div', { class: 'uk-card-header' }, _slots.header),
_slots['media'] && h('div', { class: 'uk-card-media' }, _slots['media']),
_slots.body && h('div', { class: 'uk-card-body' }, _slots.body),
_slots.footer && h('div', { class: 'uk-card-footer' }, _slots.footer),
_slots['media-bottom'] && h('div', { class: 'uk-card-media-bottom' }, _slots['media-bottom'])
])
}
}
var ElementCardTitle = {
functional: true,
props: {
tag: {
type: String,
default: 'h3'
}
},
render: function render (h, ref) {
var props = ref.props;
var data = ref.data;
var children = ref.children;
return h(props.tag, mergeData(data, {
class: 'uk-card-title'
}), children)
}
}
var card = {
name: 'VkCard',
functional: true,
props: ElementCard.props,
render: ElementCard.render
}
var card_Title = {
name: 'VkCardTitle',
functional: true,
props: ElementCardTitle.props,
render: ElementCardTitle.render
}
var VkRoot = {
inserted: function inserted (el, binding, vnode) {
vnode.context.$nextTick(function () {
vnode.context.$root.$el.appendChild(el);
});
}
}
function noop$1 () {}
var warn = noop$1;
var tip = noop$1;
{
var hasConsole = typeof console !== 'undefined';
var classifyRE = /(?:^|[-_])(\w)/g;
var classify = function (str) { return str
.replace(classifyRE, function (c) { return c.toUpperCase(); })
.replace(/[-_]/g, ''); };
warn = function (msg, vm) {
if (hasConsole) {
console.error("[Vuikit warn]: " + msg + (
vm ? generateComponentTrace(vm) : ''
));
}
};
tip = function (msg, vm) {
if (hasConsole) {
console.warn("[Vuikit tip]: " + msg + (
vm ? generateComponentTrace(vm) : ''
));
}
};
var formatComponentName = function (vm, includeFile) {
if (vm.$root === vm) {
return '<Root>'
}
var name = typeof vm === 'string'
? vm
: typeof vm === 'function' && vm.options
? vm.options.name
: vm._isVue
? vm.$options.name || vm.$options._componentTag
: vm.name;
var file = vm._isVue && vm.$options.__file;
if (!name && file) {
var match = file.match(/([^/\\]+)\.vue$/);
name = match && match[1];
}
return (
(name ? ("<" + (classify(name)) + ">") : "<Anonymous>") +
(file && includeFile !== false ? (" at " + file) : '')
)
};
var repeat = function (str, n) {
var res = '';
while (n) {
if (n % 2 === 1) { res += str; }
if (n > 1) { str += str; }
n >>= 1;
}
return res
};
var generateComponentTrace = function (vm) {
if (vm._isVue && vm.$parent) {
var tree = [];
var currentRecursiveSequence = 0;
while (vm) {
if (tree.length > 0) {
var last = tree[tree.length - 1];
if (last.constructor === vm.constructor) {
currentRecursiveSequence++;
vm = vm.$parent;
continue
} else if (currentRecursiveSequence > 0) {
tree[tree.length - 1] = [last, currentRecursiveSequence];
currentRecursiveSequence = 0;
}
}
tree.push(vm);
vm = vm.$parent;
}
return '\n\nfound in\n\n' + tree
.map(function (vm, i) { return ("" + (i === 0 ? '---> ' : repeat(' ', 5 + i * 2)) + (Array.isArray(vm)
? ((formatComponentName(vm[0])) + "... (" + (vm[1]) + " recursive calls)")
: formatComponentName(vm))); })
.join('\n')
} else {
return ("\n\n(found in " + (formatComponentName(vm)) + ")")
}
};
}
var dirs = {
width: ['x', 'left', 'right'],
height: ['y', 'top', 'bottom']
};
function positionAt (element, target, elAttach, targetAttach, elOffset, targetOffset, flip, boundary) {
elAttach = getPos(elAttach);
targetAttach = getPos(targetAttach);
var flipped = {element: elAttach, target: targetAttach};
if (!element || !target) {
return flipped
}
var dim = getDimensions(element);
var targetDim = getDimensions(target);
var position = targetDim;
moveTo(position, elAttach, dim, -1);
moveTo(position, targetAttach, targetDim, 1);
elOffset = getOffsets(elOffset, dim.width, dim.height);
targetOffset = getOffsets(targetOffset, targetDim.width, targetDim.height);
elOffset['x'] += targetOffset['x'];
elOffset['y'] += targetOffset['y'];
position.left += elOffset['x'];
position.top += elOffset['y'];
boundary = getDimensions(boundary || window$1(element));
if (flip) {
each(dirs, function (ref, prop) {
var dir = ref[0];
var align = ref[1];
var alignFlip = ref[2];
if (!(flip === true || includes(flip, dir))) {
return
}
var elemOffset = elAttach[dir] === align
? -dim[prop]
: elAttach[dir] === alignFlip
? dim[prop]
: 0;
var targetOffset = targetAttach[dir] === align
? targetDim[prop]
: targetAttach[dir] === alignFlip
? -targetDim[prop]
: 0;
if (position[align] < boundary[align] || position[align] + dim[prop] > boundary[alignFlip]) {
var centerOffset = dim[prop] / 2;
var centerTargetOffset = targetAttach[dir] === 'center' ? -targetDim[prop] / 2 : 0;
elAttach[dir] === 'center' && (
apply(centerOffset, centerTargetOffset) ||
apply(-centerOffset, -centerTargetOffset)
) || apply(elemOffset, targetOffset);
}
function apply (elemOffset, targetOffset) {
var newVal = position[align] + elemOffset + targetOffset - elOffset[dir] * 2;
if (newVal >= boundary[align] && newVal + dim[prop] <= boundary[alignFlip]) {
position[align] = newVal;
['element', 'target'].forEach(function (el) {
flipped[el][dir] = !elemOffset
? flipped[el][dir]
: flipped[el][dir] === dirs[prop][1]
? dirs[prop][2]
: dirs[prop][1];
});
return true
}
}
});
}
offset(element, position);
return flipped
}
function offset (element, coordinates) {
element = toNode(element);
if (coordinates) {
var currentOffset = offset(element);
var pos = css(element, 'position');
['left', 'top'].forEach(function (prop) {
if (prop in coordinates) {
var value = css(element, prop);
element.style[prop] = ((coordinates[prop] - currentOffset[prop]) +
toFloat(pos === 'absolute' && value === 'auto' ? position(element)[prop] : value)) + "px";
}
});
return
}
return getDimensions(element)
}
function getDimensions (element) {
element = toNode(element);
var ref = window$1(element);
var top = ref.pageYOffset;
var left = ref.pageXOffset;
if (isWindow(element)) {
var height = element.innerHeight;
var width = element.innerWidth;
return {
top: top,
left: left,
height: height,
width: width,
bottom: top + height,
right: left + width
}
}
var display = false;
if (!isVisible(element)) {
display = element.style.display;
element.style.display = 'block';
}
var rect = element.getBoundingClientRect();
if (display !== false) {
element.style.display = display;
}
return {
height: rect.height,
width: rect.width,
top: rect.top + top,
left: rect.left + left,
bottom: rect.bottom + top,
right: rect.right + left
}
}
function position (element) {
element = toNode(element);
var parent = offsetParent(element);
var parentOffset = parent === docEl(element) ? {top: 0, left: 0} : offset(parent);
var ref = ['top', 'left'].reduce(function (props, prop) {
var propName$$1 = ucfirst(prop);
props[prop] -= parentOffset[prop] +
(toFloat(css(element, ("margin" + propName$$1))) || 0) +
(toFloat(css(parent, ("border" + propName$$1 + "Width"))) || 0);
return props
}, offset(element));
var top = ref.top;
var left = ref.left;
return {top: top, left: left}
}
function offsetParent (element) {
var parent = toNode(element).offsetParent;
while (parent && css(parent, 'position') === 'static') {
parent = parent.offsetParent;
}
return parent || docEl(element)
}
var height = dimension('height');
var width = dimension('width');
function dimension (prop) {
var propName$$1 = ucfirst(prop);
return function (element, value) {
element = toNode(element);
if (isUndefined(value)) {
if (isWindow(element)) {
return element[("inner" + propName$$1)]
}
if (isDocument(element)) {
var doc = element.documentElement;
return Math.max(doc[("offset" + propName$$1)], doc[("scroll" + propName$$1)])
}
value = css(element, prop);
value = value === 'auto' ? element[("offset" + propName$$1)] : toFloat(value) || 0;
return getContentSize(prop, element, value)
} else {
css(element, prop, !value && value !== 0
? ''
: getContentSize(prop, element, value) + 'px'
);
}
}
}
function getContentSize (prop, element, value) {
return css(element, 'boxSizing') === 'border-box' ? dirs[prop].slice(1).map(ucfirst).reduce(function (value, prop) { return value -
toFloat(css(element, ("padding" + prop))) -
toFloat(css(element, ("border" + prop + "Width"))); }
, value) : value
}
function moveTo (position, attach, dim, factor) {
each(dirs, function (ref, prop) {
var dir = ref[0];
var align = ref[1];
var alignFlip = ref[2];
if (attach[dir] === alignFlip) {
position[align] += dim[prop] * factor;
} else if (attach[dir] === 'center') {
position[align] += dim[prop] * factor / 2;
}
});
}
function getPos (pos) {
var x = /left|center|right/;
var y = /top|center|bottom/;
pos = (pos || '').split(' ');
if (pos.length === 1) {
pos = x.test(pos[0])
? pos.concat(['center'])
: y.test(pos[0])
? ['center'].concat(pos)
: ['center', 'center'];
}
return {
x: x.test(pos[0]) ? pos[0] : 'center',
y: y.test(pos[1]) ? pos[1] : 'center'
}
}
function getOffsets (offsets, width, height) {
var ref = (offsets || '').split(' ');
var x = ref[0];
var y = ref[1];
return {
x: x ? toFloat(x) * (endsWith(x, '%') ? width / 100 : 1) : 0,
y: y ? toFloat(y) * (endsWith(y, '%') ? height / 100 : 1) : 0
}
}
function flipPosition (pos) {
switch (pos) {
case 'left':
return 'right'
case 'right':
return 'left'
case 'top':
return 'bottom'
case 'bottom':
return 'top'
default:
return pos
}
}
function isInView (element, top, left) {
if ( top === void 0 ) top = 0;
if ( left === void 0 ) left = 0;
element = toNode(element);
var win = window$1(element);
return intersectRect(element.getBoundingClientRect(), {
top: top,
left: left,
bottom: top + height(win),
right: left + width(win)
})
}
function window$1 (element) {
return isWindow(element) ? element : document$1(element).defaultView
}
function document$1 (element) {
return toNode(element).ownerDocument
}
function docEl (element) {
return document$1(element).documentElement
}
var BEFORE_POSITION = 'v-vk-position:before';
var AFTER_POSITION = 'v-vk-position:after';
var Directive = {
inserted: function inserted (el, binding, vnode) {
var ctx = getContext(el, binding, vnode);
if (ctx) {
position$1(ctx);
}
},
componentUpdated: function componentUpdated (el, binding, vnode) {
var ctx = getContext(el, binding, vnode);
if (ctx) {
position$1(ctx);
}
}
}
function position$1 (ctx) {
var el = ctx.el;
var props = ctx.props;
var vnode = ctx.vnode;
var target = props.target;
var position$$1 = props.position;
var offset$$1 = props.offset;
var boundary = props.boundary;
var flip = props.flip;
var mainClass = props.mainClass;
if ("development" !== 'production' && !position$$1.match(/^((top|bottom)-(left|center|right))|((left|right)-(top|center|bottom))$/)) {
warn(("v-position -> '" + position$$1 + "' -> no valid position"), vnode);
}
if ("development" !== 'production' && (!target || !target.tagName)) {
warn("v-position -> no valid target", vnode);
}
var ref = position$$1.split('-');
var dir = ref[0];
var align = ref[1];
trigger(el, BEFORE_POSITION);
var classesRx = new RegExp((mainClass + "-(top|bottom|left|right)(-[a-z]+)?"));
el.className = el.className.replace(classesRx, '');
css(el, { top: '', left: '' });
var axis = getPositionAxis(position$$1);
var elAttach = axis === 'x'
? ((flipPosition(dir)) + " " + align)
: (align + " " + (flipPosition(dir)));
var targetAttach = axis === 'x'
? (dir + " " + align)
: (align + " " + dir);
var elOffset = axis === 'x'
? ("" + (dir === 'left' ? -1 * offset$$1 : offset$$1))
: (" " + (dir === 'top' ? -1 * offset$$1 : offset$$1));
var targetOffset = null;
var ref$1 = positionAt(
el,
target,
elAttach,
targetAttach,
elOffset,
targetOffset,
flip,
boundary
).target;
var x = ref$1.x;
var y = ref$1.y;
dir = axis === 'x' ? x : y;
align = axis === 'x' ? y : x;
toggleClass(el, (mainClass + "-" + dir + "-" + align), offset$$1 === false);
trigger(el, AFTER_POSITION);
}
function getOptions (ctx) {
var vnode = ctx.vnode;
var ref = ctx.binding;
var value = ref.value;
if ("development" !== 'production' && (isUndefined(value) || !isObject(value))) {
warn('v-position -> configuration is missing or is not an Object', vnode.context);
}
var options = assign({
target: null,
position: 'top-center',
boundary: window,
flip: true,
offset: false,
mainClass: ''
}, value);
return options
}
function getContext (el, binding, vnode) {
var ctx = { el: el, binding: binding, vnode: vnode };
ctx.props = getOptions(ctx);
if (!ctx.props) {
binding.def.unbind(el, binding);
return
}
return ctx
}
function getPositionAxis (position$$1) {
var ref = position$$1.split('-');
var dir = ref[0];
return dir === 'top' || dir === 'bottom'
? 'y'
: 'x'
}
var EventsMixin = {
methods: {
on: function on$1 () {
var args = [], len = arguments.length;
while ( len-- ) args[ len ] = arguments[ len ];
this._vk_events_off.push(on.apply(void 0, args));
},
off: function off$1 () {
var args = [], len = arguments.length;
while ( len-- ) args[ len ] = arguments[ len ];
off.apply(void 0, args);
}
},
created: function created () {
this._vk_events_off = [];
},
beforeDestroy: function beforeDestroy () {
this._vk_events_off.forEach(function (off$$1) { return off$$1(); });
}
}
function $ (selector, context) {
return !isString(selector)
? toNode(selector)
: isHtml(selector)
? toNode(fragment(selector))
: find(selector, context)
}
function $$ (selector, context) {
return !isString(selector)
? toNodes(selector)
: isHtml(selector)
? toNodes(fragment(selector))
: findAll(selector, context)
}
function isHtml (str) {
return str[0] === '<' || str.match(/^\s*</)
}
function MouseTracker () {}
MouseTracker.prototype = {
positions: [],
position: null,
init: function init () {
var this$1 = this;
this.positions = [];
this.position = null;
var ticking = false;
this.unbind = on(document, 'mousemove', function (e) {
if (ticking) {
return
}
setTimeout(function () {
var time = Date.now();
var ref = this$1.positions;
var length = ref.length;
if (length && (time - this$1.positions[length - 1].time > 100)) {
this$1.positions.splice(0, length);
}
this$1.positions.push({time: time, x: e.pageX, y: e.pageY});
if (this$1.positions.length > 5) {
this$1.positions.shift();
}
ticking = false;
}, 5);
ticking = true;
});
},
cancel: function cancel () {
if (this.unbind) {
this.unbind();
}
},
movesTo: function movesTo (target) {
if (this.positions.length < 2) {
return false
}
var p = offset(target);
var position$$1 = this.positions[this.positions.length - 1];
var ref = this.positions;
var prevPos = ref[0];
if (p.left <= position$$1.x && position$$1.x <= p.right && p.top <= position$$1.y && position$$1.y <= p.bottom) {
return false
}
var points = [
[{x: p.left, y: p.top}, {x: p.right, y: p.bottom}],
[{x: p.right, y: p.top}, {x: p.left, y: p.bottom}]
];
if (p.right <= position$$1.x) {
} else if (p.left >= position$$1.x) {
points[0].reverse();
points[1].reverse();
} else if (p.bottom <= position$$1.y) {
points[0].reverse();
} else if (p.top >= position$$1.y) {
points[1].reverse();
}
return !!points.reduce(function (result, point) {
return result + (slope(prevPos, point[0]) < slope(position$$1, point[0]) && slope(prevPos, point[1]) > slope(position$$1, point[1]))
}, 0)
}
};
function slope (a, b) {
return (b.y - a.y) / (b.x - a.x)
}
var doc$1 = typeof document !== 'undefined' && document;
var win$1 = typeof window !== 'undefined' && window;
var nav = typeof navigator !== 'undefined' && navigator;
var isRtl = doc$1 && attr(document.documentElement, 'dir') === 'rtl';
var hasTouchEvents = win$1 && 'ontouchstart' in window;
var hasPointerEvents = win$1 && window.PointerEvent;
var hasTouch = hasTouchEvents ||
(win$1 && window.DocumentTouch) && (doc$1 && document instanceof window.DocumentTouch) ||
nav && navigator.maxTouchPoints;
var pointerDown = !hasTouch ? 'mousedown' : ("mousedown " + (hasTouchEvents ? 'touchstart' : 'pointerdown'));
var pointerMove = !hasTouch ? 'mousemove' : ("mousemove " + (hasTouchEvents ? 'touchmove' : 'pointermove'));
var pointerUp = !hasTouch ? 'mouseup' : ("mouseup " + (hasTouchEvents ? 'touchend' : 'pointerup'));
var pointerEnter = hasTouch && hasPointerEvents ? 'pointerenter' : 'mouseenter';
var pointerLeave = hasTouch && hasPointerEvents ? 'pointerleave' : 'mouseleave';
var props$1 = {
target: {},
boundary: {},
boundaryAlign: {
type: Boolean,
default: false
},
flip: {
type: [String, Boolean],
default: true
},
position: {
type: String,
default: ("bottom-" + (isRtl ? 'right' : 'left')),
validator: function (pos) { return /^(top|bottom)-(left|right|center|justify)$/.test(pos) ||
/^(left|right)-(top|bottom|center|justify)$/.test(pos); }
},
offset: {
type: [Boolean, Number],
default: false
},
animation: {
type: String,
default: 'fade'
},
duration: {
type: Number,
default: 200
},
mode: {
type: String,
default: 'click hover'
},
delayShow: {
type: Number,
default: 0
},
delayHide: {
type: Number,
default: 800
},
mainClass: {
type: String,
default: 'uk-drop'
}
}
var ElementDrop = {
functional: true,
props: {
show: {
type: Boolean,
default: false
}
},
render: function render (h, ref) {
var children = ref.children;
var data = ref.data;
var props = ref.props;
var show = props.show;
return h('div', mergeData(data, {
class: {
'uk-open': show
},
style: {
display: show ? 'block' : null
}
}), children)
}
}
var win$2 = typeof window !== 'undefined' && window;
var Promise = win$2 && 'Promise' in window ? window.Promise : PromiseFn;
var RESOLVED = 0;
var REJECTED = 1;
var PENDING = 2;
var async = win$2 && 'setImmediate' in window ? setImmediate : setTimeout;
function PromiseFn (executor) {
this.state = PENDING;
this.value = undefined;
this.deferred = [];
var promise = this;
try {
executor(
function (x) {
promise.resolve(x);
},
function (r) {
promise.reject(r);
}
);
} catch (e) {
promise.reject(e);
}
}
PromiseFn.reject = function (r) {
return new PromiseFn(function (resolve, reject) {
reject(r);
})
};
PromiseFn.resolve = function (x) {
return new PromiseFn(function (resolve, reject) {
resolve(x);
})
};
PromiseFn.all = function all (iterable) {
return new PromiseFn(function (resolve, reject) {
var result = [];
var count = 0;
if (iterable.length === 0) {
resolve(result);
}
function resolver (i) {
return function (x) {
result[i] = x;
count += 1;
if (count === iterable.length) {
resolve(result);
}
}
}
for (var i = 0; i < iterable.length; i += 1) {
PromiseFn.resolve(iterable[i]).then(resolver(i), reject);
}
})
};
PromiseFn.race = function race (iterable) {
return new PromiseFn(function (resolve, reject) {
for (var i = 0; i < iterable.length; i += 1) {
PromiseFn.resolve(iterable[i]).then(resolve, reject);
}
})
};
var p = PromiseFn.prototype;
p.resolve = function resolve (x) {
var promise = this;
if (promise.state === PENDING) {
if (x === promise) {
throw new TypeError('Promise settled with itself.')
}
var called = false;
try {
var then = x && x.then;
if (x !== null && isObject(x) && isFunction(then)) {
then.call(
x,
function (x) {
if (!called) {
promise.resolve(x);
}
called = true;
},
function (r) {
if (!called) {
promise.reject(r);
}
called = true;
}
);
return
}
} catch (e) {
if (!called) {
promise.reject(e);
}
return
}
promise.state = RESOLVED;
promise.value = x;
promise.notify();
}
};
p.reject = function reject (reason) {
var promise = this;
if (promise.state === PENDING) {
if (reason === promise) {
throw new TypeError('Promise settled with itself.')
}
promise.state = REJECTED;
promise.value = reason;
promise.notify();
}
};
p.notify = function notify () {
var this$1 = this;
async(function () {
if (this$1.state !== PENDING) {
while (this$1.deferred.length) {
var ref = this$1.deferred.shift();
var onResolved = ref[0];
var onRejected = ref[1];
var resolve = ref[2];
var reject = ref[3];
try {
if (this$1.state === RESOLVED) {
if (isFunction(onResolved)) {
resolve(onResolved.call(undefined, this$1.value));
} else {
resolve(this$1.value);
}
} else if (this$1.state === REJECTED) {
if (isFunction(onRejected)) {
resolve(onRejected.call(undefined, this$1.value));
} else {
reject(this$1.value);
}
}
} catch (e) {
reject(e);
}
}
}
});
};
p.then = function then (onResolved, onRejected) {
var this$1 = this;
return new PromiseFn(function (resolve, reject) {
this$1.deferred.push([onResolved, onRejected, resolve, reject]);
this$1.notify();
})
};
p.catch = function (onRejected) {
return this.then(undefined, onRejected)
};
function transition (element, props, duration, timing) {
if ( duration === void 0 ) duration = 400;
if ( timing === void 0 ) timing = 'linear';
return Promise.all(toNodes(element).map(function (element) { return new Promise(function (resolve, reject) {
for (var name in props) {
var value = css(element, name);
if (value === '') {
css(element, name, value);
}
}
var timer = setTimeout(function () { return trigger(element, 'transitionend'); }, duration);
once(element, 'transitionend transitioncanceled', function (ref) {
var type = ref.type;
clearTimeout(timer);
removeClass(element, 'uk-transition');
css(element, {
'transition-property': '',
'transition-duration': '',
'transition-timing-function': ''
});
type === 'transitioncanceled' ? reject() : resolve();
}, false, function (ref) {
var target = ref.target;
return element === target;
});
addClass(element, 'uk-transition');
css(element, assign({
'transition-property': Object.keys(props).map(propName).join(','),
'transition-duration': (duration + "ms"),
'transition-timing-function': timing
}, props