From ffd346417eaf24ced04cb3e842ce7a49936826e6 Mon Sep 17 00:00:00 2001 From: Dennis Eichhorn Date: Sat, 16 Mar 2024 14:11:43 +0000 Subject: [PATCH] code fixes --- Model/Action/Dom/ChangeAttribute.js | 49 +++++++++++++++++++++++++++++ 1 file changed, 49 insertions(+) create mode 100644 Model/Action/Dom/ChangeAttribute.js diff --git a/Model/Action/Dom/ChangeAttribute.js b/Model/Action/Dom/ChangeAttribute.js new file mode 100644 index 0000000..d8ded88 --- /dev/null +++ b/Model/Action/Dom/ChangeAttribute.js @@ -0,0 +1,49 @@ +import { jsOMS } from '../../../Utils/oLib.js'; + +/** + * Set value of input. + * + * @param {Object} action Action data + * @param {function} callback Callback + * @param {string} id Action element + * + * @since 1.0.0 + */ +export function domChangeAttribute (action, callback, id) +{ + 'use strict'; + + const fill = action.base === 'self' + ? (action.selector === '' + ? [document.getElementById(id)] + : document.getElementById(id).querySelectorAll(action.selector)) + : document.querySelectorAll(action.selector); + + for (const i in fill) { + /** global: HTMLElement */ + if (!Object.prototype.hasOwnProperty.call(fill, i) || !(fill[i] instanceof HTMLElement)) { + continue; + } + + switch (action.type) { + case 'remove': + const old = fill[i].getAttribute(action.attr); + + if (old.match(new RegExp('(\\s|^)' + action.value + '(\\s|$)')) !== null) { + const reg = new RegExp('(\\s|^)' + cls); + + fill[i].setAttribute(action.attr, old.replace(reg, '').trim()); + } + break; + case 'add': + fill[i].setAttribute(action.attr, jsOMS.trim(fill[i].getAttribute(action.attr) + ' ' + action.value)) + break; + case 'set': + fill[i].setAttribute(action.attr, action.value) + break; + default: + } + } + + callback(action.data); +};