manolo / gwt-polymer-elements

Polymer Web Components for GWT. A collection of Material Design widgets for desktop and mobile.
Apache License 2.0
156 stars 49 forks source link

how to capture swipe direction of IronSwipeableContainer event #118

Open astevko opened 8 years ago

astevko commented 8 years ago

I posted this on Stackoverflow a couple of days ago but got little visibility and no response. Perhaps it'll do better here.

How do I capture the direction of the swipe event in a IronSwipeableContainer ?

    @UiField IronSwipeableContainer swipeable;
    ...
    swipeable.addIronSwipeHandler(new IronSwipeEventHandler() {

        @Override
        public void onIronSwipe(IronSwipeEvent event) {                
            log.info("onIronSwiped! ");
        }
    });

It is in the js object. I just cannot figure out how to access it from java. event_0_g$.nativeEvent_1_g$.detail.direction = "left" for extra credit - How do I prevent the swipe from dismissing (swipe away) the container?

cpboyd commented 7 years ago

I think the only way to handle this (with the current generated Java code) would be to write a JSNI function and pass it event.getNativeElement()

http://www.gwtproject.org/doc/latest/DevGuideCodingBasicsJSNI.html

E.g.:

        public void onIronSwipe(IronSwipeEvent event) {                
            String direction = determineDirection(event.getNativeEvent());
        }
...
public static native String determineDirection(JavaScriptObject event) /*-{
  return event.detail.direction;
}-*/;

With regard to preventing dismissal, perhaps a better workflow would be to identify beforehand which containers shouldn't be dismissible and prevent swiping altogether by setting the element's class="disable-swipe