diff options
author | Artur Signell <artur@vaadin.com> | 2015-06-03 08:47:31 +0300 |
---|---|---|
committer | Artur Signell <artur@vaadin.com> | 2015-06-07 20:51:09 +0000 |
commit | baf00a3368eeee678d8ccc6ac64096a159b8b703 (patch) | |
tree | 55a6a5157e5d95590ee3ca028b8319243e75cee5 /client/src | |
parent | 84533057435a99b0d0dfa9ea791de81921c1e260 (diff) | |
download | vaadin-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.java | 26 |
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; + } } } |