package xapi.polymer.pickers;
import com.google.gwt.core.client.GWT;
import com.google.gwt.core.client.js.JsProperty;
import com.google.gwt.core.client.js.JsType;
import xapi.components.api.IsWebComponent;
import xapi.components.api.OnWebComponentAttached;
import xapi.components.api.OnWebComponentAttributeChanged;
import xapi.components.api.OnWebComponentCreated;
import xapi.components.api.WebComponent;
import xapi.components.api.WebComponentFactory;
import xapi.components.api.WebComponentMethod;
import xapi.polymer.core.PolymerElement;
import elemental.dom.Element;
@JsType
@WebComponent(tagName=StringPickerElement.TAG_NAME)
public interface StringPickerElement extends
IsWebComponent<Element>,
OnWebComponentAttributeChanged,
OnWebComponentCreated<Element>,
OnWebComponentAttached<Element>,
AbstractPickerElement<Element> {
String TAG_NAME = "xapi-string-picker";
WebComponentFactory<StringPickerElement> NEW_STRING_PICKER = GWT.create(StringPickerElement.class);
@JsProperty
@WebComponentMethod(mapToAttribute = true)
String getValue();
@JsProperty
@WebComponentMethod(mapToAttribute = true)
StringPickerElement setValue(String property);
@Override
default void onCreated(Element element) {
initializePolymer("paper-input");
PolymerElement textField = getPolymer();
setTextField(textField.element());
textField.attribute("floatingLabel");
setInstructionsElement(textField.element());
textField.onChange(e -> setValue(textField.value()));
}
default void setLabel(String label) {
getPolymer().setLabel(label);
}
@JsProperty
void setTextField(Element selector);
@JsProperty
Element getTextField();
@Override
default void onAttributeChanged(String name, String oldVal, String newVal) {
switch (name) {
case "value":
getTextField().setAttribute("value", newVal);
break;
}
}
@Override
default void onAttached(Element element) {
getTextField().getStyle().removeProperty("display");
}
}