aboutsummaryrefslogtreecommitdiff
path: root/dom/css_class.go
diff options
context:
space:
mode:
authorAnhgelus Morhtuuzh <william@herges.fr>2025-12-13 17:17:14 +0100
committerAnhgelus Morhtuuzh <william@herges.fr>2025-12-13 17:17:14 +0100
commitd695b39edf898e056a8de3724a020f15754fcea9 (patch)
treefe8c3372ba07a3415dade6006434202ab8b3ebc4 /dom/css_class.go
parent16a073a12372eb13fb86618be684b6fd19902828 (diff)
feat(dom): type to represents css class
Diffstat (limited to 'dom/css_class.go')
-rw-r--r--dom/css_class.go43
1 files changed, 43 insertions, 0 deletions
diff --git a/dom/css_class.go b/dom/css_class.go
new file mode 100644
index 0000000..633869e
--- /dev/null
+++ b/dom/css_class.go
@@ -0,0 +1,43 @@
+package dom
+
+type ClassList map[string]struct{}
+
+func (cl ClassList) set(e Element) Element {
+ if len(cl) == 0 {
+ return e
+ }
+ classes := ""
+ for k := range cl {
+ classes += k + " "
+ }
+ classes = classes[:len(cl)-1]
+ return e.SetAttribute("class", classes)
+}
+
+func (cl ClassList) Has(v string) bool {
+ _, ok := cl[v]
+ return ok
+}
+
+func (cl ClassList) Add(v string) ClassList {
+ cl[v] = struct{}{}
+ return cl
+}
+
+func (cl ClassList) Remove(v string) ClassList {
+ delete(cl, v)
+ return cl
+}
+
+func (cl ClassList) Toggle(v string) ClassList {
+ if cl.Has(v) {
+ cl.Remove(v)
+ } else {
+ cl.Add(v)
+ }
+ return cl
+}
+
+func NewClassList() ClassList {
+ return ClassList(make(map[string]struct{}))
+}