vuikit
Version:
A responsive Vue UI library for web site interfaces based on UIkit
56 lines (51 loc) • 1.6 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 */
import { isFunction, isObject, isUndefined, toNode, toNodes } from './lang';
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])
}
}
}
export { attr, hasAttr, removeAttr, filterAttr, data };