diff --git a/src/main/java/com/flowingcode/vaadin/addons/twincolgrid/TwinColGrid.java b/src/main/java/com/flowingcode/vaadin/addons/twincolgrid/TwinColGrid.java index dc4e5f0..6f7462b 100644 --- a/src/main/java/com/flowingcode/vaadin/addons/twincolgrid/TwinColGrid.java +++ b/src/main/java/com/flowingcode/vaadin/addons/twincolgrid/TwinColGrid.java @@ -160,6 +160,8 @@ public enum Orientation { private boolean isFromClient = false; + private String layoutId; + private static ListDataProvider emptyDataProvider() { return DataProvider.ofCollection(new LinkedHashSet<>()); } @@ -311,6 +313,7 @@ public void setCaption(String captionText) { if (captionText != null) { if (captionLabel == null) { captionLabel = new Label(); + captionLabel.setFor(layoutId); addComponentAsFirst(captionLabel); } captionLabel.setText(captionText); @@ -387,6 +390,12 @@ private Component createContainerLayout() { throw new IllegalStateException(); } + private String getLayoutId() { + return Optional.ofNullable(layoutId).orElseGet(()->{ + return this.layoutId = "twincol-" + UUID.randomUUID(); + }); + } + private HorizontalLayout createHorizontalContainer(boolean reverse) { buttonContainer = getVerticalButtonContainer(); HorizontalLayout hl; @@ -395,6 +404,7 @@ private HorizontalLayout createHorizontalContainer(boolean reverse) { } else { hl = new HorizontalLayout(available.layout, buttonContainer, selection.layout); } + hl.setId(getLayoutId()); hl.getElement().getStyle().set("min-height", "0px"); hl.getElement().getStyle().set("flex", "1 1 0px"); hl.setMargin(false); @@ -410,6 +420,7 @@ private VerticalLayout createVerticalContainer(boolean reverse) { } else { vl = new VerticalLayout(available.layout, buttonContainer, selection.layout); } + vl.setId(getLayoutId()); vl.getElement().getStyle().set("min-width", "0px"); vl.getElement().getStyle().set("flex", "1 1 0px"); vl.setMargin(false);