aboutsummaryrefslogtreecommitdiffstats
path: root/client/src
diff options
context:
space:
mode:
authorArtur Signell <artur@vaadin.com>2015-06-03 08:47:31 +0300
committerArtur Signell <artur@vaadin.com>2015-06-07 20:51:09 +0000
commitbaf00a3368eeee678d8ccc6ac64096a159b8b703 (patch)
tree55a6a5157e5d95590ee3ca028b8319243e75cee5 /client/src
parent84533057435a99b0d0dfa9ea791de81921c1e260 (diff)
downloadvaadin-framework-baf00a3368eeee678d8ccc6ac64096a159b8b703.tar.gz
vaadin-framework-baf00a3368eeee678d8ccc6ac64096a159b8b703.zip
Hide sidebar when clicking outside it (#18111)
Change-Id: I0dc8d218f8b9584874e34bf7c38eeae4b89f5df9
Diffstat (limited to 'client/src')
-rw-r--r--client/src/com/vaadin/client/widgets/Grid.java26
1 files changed, 26 insertions, 0 deletions
diff --git a/client/src/com/vaadin/client/widgets/Grid.java b/client/src/com/vaadin/client/widgets/Grid.java
index 1837f4c951..0eabf3686d 100644
--- a/client/src/com/vaadin/client/widgets/Grid.java
+++ b/client/src/com/vaadin/client/widgets/Grid.java
@@ -3065,6 +3065,26 @@ public class Grid<T> extends ResizeComposite implements
private final Grid<?> grid;
+ private NativePreviewHandler clickOutsideToCloseHandler = new NativePreviewHandler() {
+
+ @Override
+ public void onPreviewNativeEvent(NativePreviewEvent event) {
+ if (event.getTypeInt() != Event.ONMOUSEDOWN) {
+ return;
+ }
+
+ // Click outside the panel
+ EventTarget clickTarget = event.getNativeEvent()
+ .getEventTarget();
+ if (!rootContainer.getElement().isOrHasChild(
+ Element.as(clickTarget))) {
+ close();
+ }
+ }
+ };
+
+ private HandlerRegistration clickOutsideToCloseHandlerRegistration;
+
private Sidebar(Grid<?> grid) {
this.grid = grid;
@@ -3157,6 +3177,8 @@ public class Grid<T> extends ResizeComposite implements
addStyleName("opened");
removeStyleName("closed");
rootContainer.add(content);
+ clickOutsideToCloseHandlerRegistration = Event
+ .addNativePreviewHandler(clickOutsideToCloseHandler);
}
openCloseButton.setHeight("");
}
@@ -3171,6 +3193,10 @@ public class Grid<T> extends ResizeComposite implements
content.removeFromParent();
// adjust open button to header height when closed
setHeightToHeaderCellHeight();
+ if (clickOutsideToCloseHandlerRegistration != null) {
+ clickOutsideToCloseHandlerRegistration.removeHandler();
+ clickOutsideToCloseHandlerRegistration = null;
+ }
}
}