-
Notifications
You must be signed in to change notification settings - Fork 124
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.