mirror of
https://bitbucket.org/bellord13/kit.git
synced 2026-11-13 19:06:11 +03:00
fix
This commit is contained in:
+142
-7
@@ -3,6 +3,81 @@ __PluginManager__.register('support', function(module, exports, require, global)
|
||||
|
||||
window.pre = console.log;
|
||||
|
||||
|
||||
var data = function(){
|
||||
function normalizeData(val) {
|
||||
if (val === 'true') {
|
||||
return true
|
||||
}
|
||||
|
||||
if (val === 'false') {
|
||||
return false
|
||||
}
|
||||
|
||||
if (val === Number(val).toString()) {
|
||||
return Number(val)
|
||||
}
|
||||
|
||||
if (val === '' || val === 'null') {
|
||||
return null
|
||||
}
|
||||
|
||||
return val
|
||||
}
|
||||
|
||||
function normalizeDataKey(key) {
|
||||
return key.replace(/[A-Z]/g, chr => `-${chr.toLowerCase()}`);
|
||||
}
|
||||
|
||||
const manipulator = {
|
||||
set(element, key, value, prefix = 'kit') {
|
||||
if(prefix !== '') {
|
||||
prefix = '-' + prefix;
|
||||
}
|
||||
element.setAttribute(`data${prefix}-${normalizeDataKey(key)}`, value)
|
||||
},
|
||||
|
||||
remove(element, key, prefix = 'kit') {
|
||||
if(prefix !== '') {
|
||||
prefix = '-' + prefix;
|
||||
}
|
||||
element.removeAttribute(`data${prefix}-${normalizeDataKey(key)}`)
|
||||
},
|
||||
|
||||
getList(element, prefix = 'kit') {
|
||||
element = getNode(element);
|
||||
|
||||
if (!element) {
|
||||
return {};
|
||||
}
|
||||
|
||||
const attributes = {};
|
||||
|
||||
Object.keys(element.dataset)
|
||||
.filter(key => key.startsWith(prefix))
|
||||
.forEach(key => {
|
||||
var regex = new RegExp(`^${prefix}`, '');
|
||||
var pureKey = key.replace(regex, '');
|
||||
pureKey = pureKey.charAt(0).toLowerCase() + pureKey.slice(1, pureKey.length);
|
||||
if(pureKey !== '') {
|
||||
attributes[pureKey] = normalizeData(element.dataset[key])
|
||||
}
|
||||
});
|
||||
|
||||
return attributes
|
||||
},
|
||||
|
||||
get(element, key, prefix = 'kit') {
|
||||
if(prefix !== '') {
|
||||
prefix = '-' + prefix;
|
||||
}
|
||||
return normalizeData(element.getAttribute(`data${prefix}-${normalizeDataKey(key)}`))
|
||||
},
|
||||
};
|
||||
return manipulator;
|
||||
}();
|
||||
|
||||
|
||||
var node = {
|
||||
isRelate: function (node, container = document) {
|
||||
return node === container || container.contains(node);
|
||||
@@ -68,6 +143,7 @@ __PluginManager__.register('support', function(module, exports, require, global)
|
||||
function isNumber(value) {
|
||||
return !Number.isNaN(value) && isFinite(value) && typeof value === 'number';
|
||||
}
|
||||
function isArray(value) { return Array.isArray(value);}
|
||||
/**
|
||||
* @return {number}
|
||||
*/
|
||||
@@ -160,12 +236,58 @@ __PluginManager__.register('support', function(module, exports, require, global)
|
||||
node.kit = node.kit || {};
|
||||
node.kit[key] = value;
|
||||
}
|
||||
function getNodeData(node, key) {
|
||||
if(!isElement(node)) return null;
|
||||
if(node.hasOwnProperty('kit') && node.kit.hasOwnProperty(key)) {
|
||||
return node.kit[key];
|
||||
function setObjProp(object, branch, value) {
|
||||
if(!Array.isArray(branch)) {
|
||||
branch = [branch];
|
||||
}
|
||||
return null;
|
||||
if(!isObject(object)) return false;
|
||||
var i = 0, obj = {}, result = true;
|
||||
obj[i] = object;
|
||||
branch.forEach(function (key) {
|
||||
if(!result) {
|
||||
return;
|
||||
}
|
||||
++i;
|
||||
if(i === branch.length) {
|
||||
obj[i-1][key] = value;
|
||||
return;
|
||||
}
|
||||
obj[i-1][key] = obj[i-1][key] || {};
|
||||
result = isObject(obj[i-1][key]);
|
||||
obj[i] = obj[i-1][key];
|
||||
});
|
||||
return result;
|
||||
}
|
||||
function getInstanceData(node, key, def = null) {
|
||||
if(!Array.isArray(key)) {
|
||||
key = [key];
|
||||
}
|
||||
var branch = ['kit'].concat(key);
|
||||
return getObjProp(node, branch, def);
|
||||
}
|
||||
|
||||
function getObjProp(object, branch, def = null) {
|
||||
if(!Array.isArray(branch)) {
|
||||
branch = [branch];
|
||||
}
|
||||
if(!isObject(object)) return null;
|
||||
var i = 0, obj = {}, result = true;
|
||||
obj[i] = object;
|
||||
branch.forEach(function (key) {
|
||||
if(!result) {
|
||||
return;
|
||||
}
|
||||
++i;
|
||||
if(!isObject(obj[i-1]) || !obj[i-1].hasOwnProperty(key)) {
|
||||
result = false;
|
||||
return;
|
||||
}
|
||||
obj[i] = obj[i-1][key];
|
||||
});
|
||||
if(result) {
|
||||
return obj[i];
|
||||
}
|
||||
return def;
|
||||
}
|
||||
function definePropertyGet(obj, key, val) {
|
||||
Object.defineProperty(obj, key, {
|
||||
@@ -203,7 +325,7 @@ __PluginManager__.register('support', function(module, exports, require, global)
|
||||
function insertAfter(newNode, referenceNode) {
|
||||
referenceNode.parentNode.insertBefore(newNode, referenceNode.nextSibling);
|
||||
}
|
||||
function tagName(node, tagName) {
|
||||
function setTagName(node, tagName) {
|
||||
if(!tagName) {
|
||||
return null;
|
||||
}
|
||||
@@ -229,6 +351,15 @@ __PluginManager__.register('support', function(module, exports, require, global)
|
||||
return result;
|
||||
}
|
||||
|
||||
function toString(value) {
|
||||
return String(value);
|
||||
}
|
||||
|
||||
function getDataOptions(node, pluginId, prefix = 'kit') {
|
||||
node = getNode(node);
|
||||
node.getAttribute('')
|
||||
}
|
||||
|
||||
/**
|
||||
* @memberOf kit
|
||||
*/
|
||||
@@ -258,7 +389,11 @@ __PluginManager__.register('support', function(module, exports, require, global)
|
||||
args2array,
|
||||
innerHtml,
|
||||
makeNodeList,
|
||||
tagName
|
||||
setTagName,
|
||||
tagName: setTagName,
|
||||
data,
|
||||
setObjProp,
|
||||
getObjProp
|
||||
};
|
||||
|
||||
return module.exports = support;
|
||||
|
||||
Reference in New Issue
Block a user