tobago-tree: custom elements; fix: expanding/collapsing sheet rows

Issue: TOBAGO-1633
diff --git a/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/renderkit/renderer/SheetRenderer.java b/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/renderkit/renderer/SheetRenderer.java
index cef0db8..2d551fc 100644
--- a/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/renderkit/renderer/SheetRenderer.java
+++ b/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/renderkit/renderer/SheetRenderer.java
@@ -350,10 +350,7 @@
       encodeHiddenInput(writer, null, sheetId + SUFFIX_LAZY);
     }
 
-    StringBuilder expandedValue = null;
-    if (sheet.isTreeModel()) {
-      expandedValue = new StringBuilder(",");
-    }
+    final List<Integer> expandedValue = sheet.isTreeModel() ? new ArrayList<>() : null;
 
     encodeTableBody(facesContext, sheet, writer, sheetId, selectable, columnWidths, selectedRows, columns, autoLayout,
         expandedValue);
@@ -524,7 +521,7 @@
       writer.writeNameAttribute(expandedId);
       writer.writeIdAttribute(expandedId);
       writer.writeClassAttribute(TobagoClass.SHEET__EXPANDED);
-      writer.writeAttribute(HtmlAttributes.VALUE, expandedValue.toString(), false);
+      writer.writeAttribute(HtmlAttributes.VALUE, JsonUtils.encode(expandedValue), false);
       writer.endElement(HtmlElements.INPUT);
     }
 
@@ -539,7 +536,7 @@
       final FacesContext facesContext, final AbstractUISheet sheet, final TobagoResponseWriter writer,
       final String sheetId,
       final Selectable selectable, final List<Integer> columnWidths, final List<Integer> selectedRows,
-      final List<AbstractUIColumnBase> columns, final boolean autoLayout, final StringBuilder expandedValue)
+      final List<AbstractUIColumnBase> columns, final boolean autoLayout, final List<Integer> expandedValue)
       throws IOException {
 
     final boolean showHeader = sheet.isShowHeader();
@@ -637,8 +634,7 @@
       if (sheet.isTreeModel()) {
         final TreePath path = sheet.getPath();
         if (sheet.isFolder() && expandedState.isExpanded(path)) {
-          expandedValue.append(rowIndex);
-          expandedValue.append(",");
+          expandedValue.add(rowIndex);
         }
       }
 
diff --git a/tobago-theme/tobago-theme-standard/src/main/npm/ts/tobago-tree-node.ts b/tobago-theme/tobago-theme-standard/src/main/npm/ts/tobago-tree-node.ts
index d86e7c9..6b632ef 100644
--- a/tobago-theme/tobago-theme-standard/src/main/npm/ts/tobago-tree-node.ts
+++ b/tobago-theme/tobago-theme-standard/src/main/npm/ts/tobago-tree-node.ts
@@ -48,7 +48,9 @@
       this.classList.remove("tobago-treeNode-markup-expanded");
 
       this.hideNodes(this.treeChildNodes);
-      this.ajax(event, false);
+      if (this.tree) {
+        this.ajax(event, false);
+      }
     } else {
       for (const icon of this.icons) {
         icon.classList.remove(icon.dataset.tobagoClosed);
@@ -66,7 +68,9 @@
       this.classList.add("tobago-treeNode-markup-expanded");
 
       this.showNodes(this.treeChildNodes);
-      this.ajax(event, this.treeChildNodes.length === 0);
+      if (this.tree) {
+        this.ajax(event, this.treeChildNodes.length === 0);
+      }
     }
   }
 
@@ -85,7 +89,7 @@
     for (const treeChildNode of treeChildNodes) {
 
       if (treeChildNode.sheet) {
-        treeChildNode.closest("tobago-sheet-row").classList.add("d-none");
+        treeChildNode.closest(".tobago-sheet-row").classList.add("d-none");
       } else {
         treeChildNode.classList.add("d-none");
       }
@@ -98,7 +102,7 @@
     for (const treeChildNode of treeChildNodes) {
 
       if (treeChildNode.sheet) {
-        treeChildNode.closest("tobago-sheet-row").classList.remove("d-none");
+        treeChildNode.closest(".tobago-sheet-row").classList.remove("d-none");
       } else {
         treeChildNode.classList.remove("d-none");
       }