UNPKG

taggedjs

Version:

tagged template reactive html

54 lines 1.68 kB
import { paintContent } from "../../render/paint.function.js"; /** handles autofocus, autoselect, style., class. */ export function specialAttribute(name, value, element, specialName) { switch (specialName) { case 'autofocus': paintContent.push([autofocus, [element]]); return; case 'autoselect': paintContent.push([autoselect, [element]]); return; case 'style': { const names = name.split('.'); paintContent.push([paintStyle, [element, names, value]]); // attribute changes should come first return; } case 'class': processSpecialClass(name, value, element); return; } throw new Error(`Invalid special attribute of ${specialName}. ${name}`); } function paintStyle(element, names, value) { const smallName = names[1]; element.style[smallName] = value; element.style.setProperty(smallName, value); } function processSpecialClass(name, value, element) { const names = name.split('.'); names.shift(); // remove class // truthy if (value) { for (const name of names) { paintContent.push([classListAdd, [element, name]]); } return; } // falsy for (const name of names) { paintContent.push([classListRemove, [element, name]]); } } function classListAdd(element, name) { element.classList.add(name); } function classListRemove(element, name) { element.classList.remove(name); } function autoselect(element) { element.select(); } function autofocus(element) { element.focus(); } //# sourceMappingURL=specialAttribute.js.map