.v-formlayout-captioncell .v-caption {
overflow: visible;
}
-.v-formlayout-spacing .v-formlayout-row .v-formlayout-captioncell,
-.v-formlayout-spacing .v-formlayout-row .v-formlayout-contentcell,
-.v-formlayout-spacing .v-formlayout-row .v-formlayout-errorcell {
+.v-formlayout-spacing > tbody > .v-formlayout-row > .v-formlayout-captioncell,
+.v-formlayout-spacing > tbody > .v-formlayout-row > .v-formlayout-contentcell,
+.v-formlayout-spacing > tbody > .v-formlayout-row > .v-formlayout-errorcell {
padding-top: 6px;
}
-.v-formlayout-spacing .v-formlayout-firstrow .v-formlayout-captioncell,
-.v-formlayout-spacing .v-formlayout-firstrow .v-formlayout-contentcell,
-.v-formlayout-spacing .v-formlayout-firstrow .v-formlayout-errorcell {
+.v-formlayout-spacing > tbody > .v-formlayout-firstrow > .v-formlayout-captioncell,
+.v-formlayout-spacing > tbody > .v-formlayout-firstrow > .v-formlayout-contentcell,
+.v-formlayout-spacing > tbody > .v-formlayout-firstrow > .v-formlayout-errorcell {
padding-top: 0;
}
-.v-formlayout-margin-top .v-formlayout-firstrow .v-formlayout-captioncell,
-.v-formlayout-margin-top .v-formlayout-firstrow .v-formlayout-contentcell,
-.v-formlayout-margin-top .v-formlayout-firstrow .v-formlayout-errorcell {
+.v-formlayout-margin-top > tbody > .v-formlayout-firstrow > .v-formlayout-captioncell,
+.v-formlayout-margin-top > tbody > .v-formlayout-firstrow > .v-formlayout-contentcell,
+.v-formlayout-margin-top > tbody > .v-formlayout-firstrow > .v-formlayout-errorcell {
padding-top: 12px;
}
-.v-formlayout-margin-bottom .v-formlayout-lastrow .v-formlayout-captioncell,
-.v-formlayout-margin-bottom .v-formlayout-lastrow .v-formlayout-contentcell,
-.v-formlayout-margin-bottom .v-formlayout-lastrow .v-formlayout-errorcell {
+.v-formlayout-margin-bottom > tbody > .v-formlayout-lastrow > .v-formlayout-captioncell,
+.v-formlayout-margin-bottom > tbody > .v-formlayout-lastrow > .v-formlayout-contentcell,
+.v-formlayout-margin-bottom > tbody > .v-formlayout-lastrow > .v-formlayout-errorcell {
padding-bottom: 12px;
}
-.v-formlayout-margin-left .v-formlayout-captioncell {
+.v-formlayout-margin-left > tbody > .v-formlayout-row > .v-formlayout-captioncell {
padding-left: 12px;
}
-.v-formlayout-margin-right .v-formlayout-contentcell {
+.v-formlayout-margin-right > tbody > .v-formlayout-row > .v-formlayout-contentcell {
padding-right: 12px;
}
.v-formlayout-captioncell .v-caption .v-required-field-indicator {
text-align: right;
white-space: nowrap;
}
-.v-formlayout-spacing .v-formlayout-row .v-formlayout-captioncell,
-.v-formlayout-spacing .v-formlayout-row .v-formlayout-contentcell,
-.v-formlayout-spacing .v-formlayout-row .v-formlayout-errorcell {
+.v-formlayout-spacing > tbody > .v-formlayout-row > .v-formlayout-captioncell,
+.v-formlayout-spacing > tbody > .v-formlayout-row > .v-formlayout-contentcell,
+.v-formlayout-spacing > tbody > .v-formlayout-row > .v-formlayout-errorcell {
padding-top: 8px;
}
-.v-formlayout-margin-top .v-formlayout-firstrow .v-formlayout-captioncell,
-.v-formlayout-margin-top .v-formlayout-firstrow .v-formlayout-contentcell,
-.v-formlayout-margin-top .v-formlayout-firstrow .v-formlayout-errorcell {
+.v-formlayout-margin-top > tbody > .v-formlayout-firstrow > .v-formlayout-captioncell,
+.v-formlayout-margin-top > tbody > .v-formlayout-firstrow > .v-formlayout-contentcell,
+.v-formlayout-margin-top > tbody > .v-formlayout-firstrow > .v-formlayout-errorcell {
padding-top: 15px;
}
-.v-formlayout-margin-bottom .v-formlayout-lastrow .v-formlayout-captioncell,
-.v-formlayout-margin-bottom .v-formlayout-lastrow .v-formlayout-contentcell,
-.v-formlayout-margin-bottom .v-formlayout-lastrow .v-formlayout-errorcell {
+.v-formlayout-margin-bottom > tbody > .v-formlayout-lastrow > .v-formlayout-captioncell,
+.v-formlayout-margin-bottom > tbody > .v-formlayout-lastrow > .v-formlayout-contentcell,
+.v-formlayout-margin-bottom > tbody > .v-formlayout-lastrow > .v-formlayout-errorcell {
padding-bottom: 15px;
}
-.v-formlayout-margin-left .v-formlayout-captioncell {
+.v-formlayout-margin-left > tbody > .v-formlayout-row > .v-formlayout-captioncell {
padding-left: 18px;
}
-.v-formlayout-margin-right .v-formlayout-contentcell {
+.v-formlayout-margin-right > tbody > .v-formlayout-row > .v-formlayout-contentcell {
padding-right: 18px;
}
/* form */
text-align:right;
white-space: nowrap;
}
-.v-formlayout-spacing .v-formlayout-row .v-formlayout-captioncell,
-.v-formlayout-spacing .v-formlayout-row .v-formlayout-contentcell,
-.v-formlayout-spacing .v-formlayout-row .v-formlayout-errorcell {
+.v-formlayout-spacing > tbody > .v-formlayout-row > .v-formlayout-captioncell,
+.v-formlayout-spacing > tbody > .v-formlayout-row > .v-formlayout-contentcell,
+.v-formlayout-spacing > tbody > .v-formlayout-row > .v-formlayout-errorcell {
padding-top: 8px;
}
-.v-formlayout-margin-top .v-formlayout-firstrow .v-formlayout-captioncell,
-.v-formlayout-margin-top .v-formlayout-firstrow .v-formlayout-contentcell,
-.v-formlayout-margin-top .v-formlayout-firstrow .v-formlayout-errorcell {
+.v-formlayout-margin-top > tbody > .v-formlayout-firstrow > .v-formlayout-captioncell,
+.v-formlayout-margin-top > tbody > .v-formlayout-firstrow > .v-formlayout-contentcell,
+.v-formlayout-margin-top > tbody > .v-formlayout-firstrow > .v-formlayout-errorcell {
padding-top: 15px;
}
-.v-formlayout-margin-bottom .v-formlayout-lastrow .v-formlayout-captioncell,
-.v-formlayout-margin-bottom .v-formlayout-lastrow .v-formlayout-contentcell,
-.v-formlayout-margin-bottom .v-formlayout-lastrow .v-formlayout-errorcell {
+.v-formlayout-margin-bottom > tbody > .v-formlayout-lastrow > .v-formlayout-captioncell,
+.v-formlayout-margin-bottom > tbody > .v-formlayout-lastrow > .v-formlayout-contentcell,
+.v-formlayout-margin-bottom > tbody > .v-formlayout-lastrow > .v-formlayout-errorcell {
padding-bottom: 15px;
}
-.v-formlayout-margin-left .v-formlayout-captioncell {
+.v-formlayout-margin-left > tbody > .v-formlayout-row > .v-formlayout-captioncell {
padding-left: 18px;
}
-.v-formlayout-margin-right .v-formlayout-contentcell {
+.v-formlayout-margin-right > tbody > .v-formlayout-row > .v-formlayout-contentcell {
padding-right: 18px;
}
/* form */
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head profile="http://selenium-ide.openqa.org/profiles/test-case">
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
+<link rel="selenium.base" href="" />
+<title>NestedFormLayouts</title>
+</head>
+<body>
+<table cellpadding="1" cellspacing="1" border="1">
+<thead>
+<tr><td rowspan="1" colspan="3">NestedFormLayouts</td></tr>
+</thead><tbody>
+<tr>
+ <td>open</td>
+ <td>/run/com.vaadin.tests.components.formlayout.NestedFormLayouts?restartApplication</td>
+ <td></td>
+</tr>
+<tr>
+ <td>screenCapture</td>
+ <td></td>
+ <td>initial</td>
+</tr>
+<tr>
+ <td>mouseClick</td>
+ <td>vaadin=runcomvaadintestscomponentsformlayoutNestedFormLayouts::PID_Sspacings/domChild[0]</td>
+ <td>8,8</td>
+</tr>
+<tr>
+ <td>screenCapture</td>
+ <td></td>
+ <td>spacings</td>
+</tr>
+<tr>
+ <td>mouseClick</td>
+ <td>vaadin=runcomvaadintestscomponentsformlayoutNestedFormLayouts::PID_Smargins/domChild[0]</td>
+ <td>5,4</td>
+</tr>
+<tr>
+ <td>screenCapture</td>
+ <td></td>
+ <td>spacings_margins</td>
+</tr>
+<tr>
+ <td>mouseClick</td>
+ <td>vaadin=runcomvaadintestscomponentsformlayoutNestedFormLayouts::PID_Sspacings/domChild[0]</td>
+ <td>8,5</td>
+</tr>
+<tr>
+ <td>screenCapture</td>
+ <td></td>
+ <td>margins</td>
+</tr>
+</tbody></table>
+</body>
+</html>
--- /dev/null
+package com.vaadin.tests.components.formlayout;
+
+import com.vaadin.data.Property.ValueChangeEvent;
+import com.vaadin.data.Property.ValueChangeListener;
+import com.vaadin.server.VaadinRequest;
+import com.vaadin.tests.components.AbstractTestUI;
+import com.vaadin.ui.CheckBox;
+import com.vaadin.ui.FormLayout;
+import com.vaadin.ui.Label;
+
+public class NestedFormLayouts extends AbstractTestUI {
+
+ private FormLayout outer;
+ private FormLayout inner1;
+ private FormLayout inner2;
+ private FormLayout inner21;
+ private FormLayout inner3;
+ private FormLayout inner31;
+ private FormLayout inner4;
+
+ @Override
+ protected void setup(VaadinRequest request) {
+ outer = new FormLayout();
+ outer.setSizeUndefined();
+ outer.setWidth("100%");
+
+ inner1 = new FormLayout();
+ inner1.addComponent(new Label("Test"));
+ inner1.addComponent(new Label("Test2"));
+ outer.addComponent(inner1);
+
+ outer.addComponent(new Label("Test"));
+ outer.addComponent(new Label("Test2"));
+
+ inner2 = new FormLayout();
+ inner2.addComponent(new Label("Test"));
+ inner2.addComponent(new Label("Test2"));
+ inner21 = new FormLayout();
+ inner21.addComponent(new Label("Test"));
+ inner21.addComponent(new Label("Test2"));
+ inner2.addComponent(inner21);
+ outer.addComponent(inner2);
+
+ inner3 = new FormLayout();
+ inner3.addComponent(new Label("Test"));
+ inner3.addComponent(new Label("Test2"));
+ // this layout never gets spacing or margin
+ inner31 = new FormLayout();
+ inner31.addComponent(new Label("Test"));
+ inner31.addComponent(new Label("Test2"));
+ inner31.setSpacing(false);
+ inner31.setMargin(false);
+ inner3.addComponent(inner31);
+ outer.addComponent(inner3);
+
+ inner4 = new FormLayout();
+ inner4.addComponent(new Label("Test"));
+ inner4.addComponent(new Label("Test2"));
+ outer.addComponent(inner4);
+
+ addComponent(outer);
+
+ final CheckBox spacingCheckBox = new CheckBox("Spacings", false);
+ spacingCheckBox.setId("spacings");
+ spacingCheckBox.setImmediate(true);
+ spacingCheckBox.addValueChangeListener(new ValueChangeListener() {
+ @Override
+ public void valueChange(ValueChangeEvent event) {
+ setLayoutSpacing(spacingCheckBox.getValue());
+ }
+ });
+ addComponent(spacingCheckBox);
+
+ final CheckBox marginCheckBox = new CheckBox("Margins", false);
+ marginCheckBox.setId("margins");
+ marginCheckBox.setImmediate(true);
+ marginCheckBox.addValueChangeListener(new ValueChangeListener() {
+ @Override
+ public void valueChange(ValueChangeEvent event) {
+ setLayoutMargin(marginCheckBox.getValue());
+ }
+ });
+ addComponent(marginCheckBox);
+
+ setLayoutSpacing(false);
+ setLayoutMargin(false);
+ }
+
+ private void setLayoutSpacing(boolean value) {
+ outer.setSpacing(value);
+ inner1.setSpacing(value);
+ inner2.setSpacing(value);
+ inner21.setSpacing(value);
+ inner3.setSpacing(value);
+ inner4.setSpacing(value);
+ }
+
+ private void setLayoutMargin(boolean value) {
+ outer.setMargin(value);
+ inner1.setMargin(value);
+ inner2.setMargin(value);
+ inner21.setMargin(value);
+ inner3.setMargin(value);
+ inner4.setMargin(value);
+ }
+
+ @Override
+ protected String getTestDescription() {
+ return "Excess padding applied in FormLayouts nested as first or last rows in a FormLayout";
+ }
+
+ @Override
+ protected Integer getTicketNumber() {
+ return 9427;
+ }
+
+}