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");
}