mirror of
https://github.com/jaandrle/deka-dom-el
synced 2025-07-02 04:32:14 +02:00
58 lines
1.7 KiB
JavaScript
58 lines
1.7 KiB
JavaScript
import { enviroment as env } from './common.js';
|
|
import { isInstance, isUndef } from "../helpers.js";
|
|
/**
|
|
* Sets or removes an attribute based on value
|
|
*
|
|
* @param {Element} obj - Element to modify
|
|
* @param {string} prop - Property suffix ("Attribute")
|
|
* @param {string} key - Attribute name
|
|
* @param {any} val - Attribute value
|
|
* @returns {void}
|
|
* @private
|
|
*/
|
|
export function setRemove(obj, prop, key, val){
|
|
return obj[ (isUndef(val) ? "remove" : "set") + prop ](key, val);
|
|
}
|
|
|
|
/**
|
|
* Sets or removes a namespaced attribute based on value
|
|
*
|
|
* @param {Element} obj - Element to modify
|
|
* @param {string} prop - Property suffix ("Attribute")
|
|
* @param {string} key - Attribute name
|
|
* @param {any} val - Attribute value
|
|
* @param {string|null} [ns=null] - Namespace URI
|
|
* @returns {void}
|
|
* @private
|
|
*/
|
|
export function setRemoveNS(obj, prop, key, val, ns= null){
|
|
return obj[ (isUndef(val) ? "remove" : "set") + prop + "NS" ](ns, key, val);
|
|
}
|
|
|
|
/**
|
|
* Sets or deletes a property based on value
|
|
*
|
|
* @param {Object} obj - Object to modify
|
|
* @param {string} key - Property name
|
|
* @param {any} val - Property value
|
|
* @returns {void}
|
|
* @private
|
|
*/
|
|
export function setDelete(obj, key, val){
|
|
Reflect.set(obj, key, val); if(!isUndef(val)) return; return Reflect.deleteProperty(obj, key);
|
|
}
|
|
/**
|
|
* Generic element attribute manipulation
|
|
*
|
|
* @param {Element} element - Element to manipulate
|
|
* @param {string} op - Operation ("set" or "remove")
|
|
* @param {string} key - Attribute name
|
|
* @param {any} [value] - Attribute value
|
|
* @returns {void}
|
|
*/
|
|
export function elementAttribute(element, op, key, value){
|
|
if(isInstance(element, env.H))
|
|
return element[op+"Attribute"](key, value);
|
|
return element[op+"AttributeNS"](null, key, value);
|
|
}
|