- 
                Notifications
    You must be signed in to change notification settings 
- Fork 122
Note : Materialize JSNI conversion to JSInterop
        Mark Kevin Baldemor edited this page Jan 24, 2018 
        ·
        8 revisions
      
    If you use static context to your method you will get
(TypeError) : Cannot read property 'material' of undefined
Javascript
$(".mydropdown").dropdown();JSInterop
@JsMethod
public native JsMaterialElement dropdown();Javascript
Materialize.toast("message", 3000, funct);JSInterop
JsMaterialElement.toast(msg, lifeMillis, className, () -> {
    if(callback != null) {
        callback.run();
    }
});Javascript
function({
  // some methods
});JSInterop
new Functions.Func() {
   // Some methods
};Javascript
$(".collapsible").collapsible();JSInterop
$(".collapsible").collapsible();Javascript
options = {
  container: "body",
  selectYears: true,
  selectMonths: true,
  format: "yyyy/mm/dd";
};JSInterop
@JsType(isNative = true, name = "Object", namespace = JsPackage.GLOBAL)
public class JsDatePickerOptions {
    @JsProperty
    public String container;
    @JsProperty
    public boolean selectYears;
    @JsProperty
    public boolean selectMonths;
    @JsProperty
    public String format;
}javascript
interact(target).draggable(options);JSInterop
@JsType(isNative = true, namespace = JsPackage.GLOBAL)
public class JsDnd extends JQueryElement {
    @JsMethod(namespace = JsPackage.GLOBAL)
    public static native JsDnd interact(Element target);
    @JsMethod
    public native void draggable(JsDndOptions options);
}javascript
   var toolbar = [
      ["string", ["string", "string"],
      ["string", ["string", "string"]
   ];JSInterop
    Object[][] toolbar = new Object[][]{
         new Object[] {"string", new Object[]{"string", "string"}},
         new Object[] {"string", new Object[]{"string", "string"}}
    };javascript
$wnd.MyPlugin(element, options);JSInterop
@JsType(isNative = true, namespace = JsPackage.GLOBAL)
public class MyPlugin {
    public MyPlugin (Element element, Options options) {};
}
// Then we can call
MyPlugin myPlugin = new MyPlugin(element, options);javascript
navigator.appName;JSInterop
@JsType(isNative = true, namespace = JsPackage.GLOBAL, name = "navigator")
public class Navigator {
    public static String appName;
}
// Calling
Navigator.appName;All source code for JSInterop integration to GMD is available and feel free to test it and submit PR.