From 0870332e8b26521a10537105fabc7c20ba37a11e Mon Sep 17 00:00:00 2001 From: Max Date: Tue, 30 Jul 2024 09:33:43 +0800 Subject: [PATCH] Add $utils object in libsui for enhanced utility functions --- sui/core/injections.go | 61 ++++++++++++++++++++++++++++-------------- 1 file changed, 41 insertions(+), 20 deletions(-) diff --git a/sui/core/injections.go b/sui/core/injections.go index 12fe01fe..7528537c 100644 --- a/sui/core/injections.go +++ b/sui/core/injections.go @@ -30,6 +30,47 @@ func libsui(minify bool) (string, error) { const libsuisource = ` + function $$(selector) { + elm = null; + if (typeof selector === "string" ){ + elm = document.querySelector(selector); + } + + if (selector instanceof HTMLElement) { + elm = selector; + } + + if (elm) { + cn = elm.getAttribute("s:cn"); + if (cn != "" && typeof window[cn] === "function") { + const component = new window[cn](elm); + return new __sui_component(elm, component); + } + } + return null; + } + + const $utils = { + + RemoveClass: (element, className) => { + const classes = Array.isArray(className) ? className : className.split(" "); + classes.forEach((c) => { + const v = c.replace(/[\n\r\s]/g, ""); + if (v === "") return; + element.classList.remove(v); + }); + }, + + AddClass: (element, className) => { + const classes = Array.isArray(className) ? className : className.split(" "); + classes.forEach((c) => { + const v = c.replace(/[\n\r\s]/g, ""); + if (v === "") return; + element.classList.add(v); + }); + }, + } + function __sui_component_root(elm, name) { while (elm && elm.getAttribute("s:cn") !== name) { elm = elm.parentElement; @@ -99,26 +140,6 @@ const libsuisource = ` this.state = component ? new __sui_state(component) : {}; } - function $$(selector) { - elm = null; - if (typeof selector === "string" ){ - elm = document.querySelector(selector); - } - - if (selector instanceof HTMLElement) { - elm = selector; - } - - if (elm) { - cn = elm.getAttribute("s:cn"); - if (cn != "" && typeof window[cn] === "function") { - const component = new window[cn](elm); - return new __sui_component(elm, component); - } - } - return null; - } - function __sui_event_handler(event, dataKeys, jsonKeys, target, root, handler) { const data = {}; target = target || null;