Browse Source

Fixes VTree so that you can click sub elements when setHtmlContentAllowed is true. (#20097)

Change-Id: Ic453aaf16ea1d44792db868e04faaba069aab3b7
tags/7.7.4
Sebastian Nyholm 7 years ago
parent
commit
1dc0f49d1a

+ 1
- 1
client/src/main/java/com/vaadin/client/ui/VTree.java View File

@@ -818,7 +818,7 @@ public class VTree extends FocusElementPanel
*/
public boolean isCaptionElement(
com.google.gwt.dom.client.Element target) {
return (target == nodeCaptionSpan
return (nodeCaptionSpan.isOrHasChild(target)
|| (icon != null && target == icon.getElement()));
}


+ 3
- 1
uitest/src/main/java/com/vaadin/tests/components/tree/TreeHtmlContentAllowed.java View File

@@ -30,18 +30,20 @@ public class TreeHtmlContentAllowed extends AbstractTestUI {
String htmlParent = "Some <b>html</b>";
String textChild = "Child text";
String htmlChild = "Child <i>html</i>";
String htmlElementChild = "Child <span id='my-html-element'>element html</span>";

final Tree tree = new Tree("A tree");
tree.addItem(textParent);
tree.addItem(htmlParent);
tree.addItem(textChild);
tree.addItem(htmlChild);
tree.addItem(htmlElementChild);
tree.setParent(textChild, textParent);
tree.setParent(htmlChild, htmlParent);

tree.setChildrenAllowed(textChild, false);
tree.setChildrenAllowed(htmlChild, false);
tree.setChildrenAllowed(htmlElementChild, false);

final CheckBox toggle = new CheckBox("HTML content allowed",
tree.isHtmlContentAllowed());

+ 17
- 4
uitest/src/test/java/com/vaadin/tests/components/tree/TreeHtmlContentAllowedTest.java View File

@@ -37,19 +37,32 @@ public class TreeHtmlContentAllowedTest extends SingleBrowserTest {
"unchecked", toggle.getValue());

// Markup is seen as plain text
assertTreeCaptionTexts("Just text", "Some <b>html</b>");
assertTreeCaptionTexts("Just text", "Some <b>html</b>",
"Child <span id='my-html-element'>element html</span>");

toggle.click();
assertTreeCaptionTexts("Just text", "Some html");
assertTreeCaptionTexts("Just text", "Some html", "Child element html");

// Expand the HTML parent
findElements(By.className("v-tree-node")).get(1).click();

assertTreeCaptionTexts("Just text", "Some html", "Child html");
assertTreeCaptionTexts("Just text", "Some html", "Child html",
"Child element html");

toggle.click();
assertTreeCaptionTexts("Just text", "Some <b>html</b>",
"Child <i>html</i>");
"Child <i>html</i>",
"Child <span id='my-html-element'>element html</span>");

toggle.click();
findElements(By.id("my-html-element")).get(0).click();
assertHtmlElementSelected();

}

private void assertHtmlElementSelected() {
TreeElement tree = $(TreeElement.class).first();
Assert.assertEquals(tree.getValue(), "Child element html");
}

private void assertTreeCaptionTexts(String... captions) {

Loading…
Cancel
Save