// Path: src/gwt/react/client/api/ReactRef.java
// @JsType(isNative = true, namespace = JsPackage.GLOBAL, name = "Object")
// public class ReactRef<T> {
// 	@JsProperty
// 	public T current;
// }
// 
// Path: src/gwt/react/client/proptypes/ReactRefCallback.java
// @JsFunction
// public interface ReactRefCallback {
//     void passRef(Object refElement);
// }
// 
// Path: src/gwt/react/client/proptypes/html/attributeTypes/FormMethod.java
// public enum FormMethod {
//     get, post
// }
// 
// Path: src/gwt/react/client/proptypes/html/attributeTypes/OnOff.java
// public enum OnOff {
//     on, off
// }
// 
// Path: src/gwt/react/client/proptypes/html/attributeTypes/Target.java
// public enum Target {
//     blank("_blank"),
//     self("_self"),
//     parent("_parent"),
//     top("_top");
// 
//     private String val;
// 
//     Target(String val) {
//         this.val = val;
//     }
// 
//     String getVal() {
//         return val;
//     }
// }
// 
// Path: src/gwt/react/client/proptypes/html/attributeTypes/YesNo.java
// public enum YesNo {
//     yes, no
// }


import elemental2.dom.HTMLFormElement;
import gwt.react.client.api.ReactRef;
import gwt.react.client.events.*;
import gwt.react.client.proptypes.ReactRefCallback;
import gwt.react.client.proptypes.html.attributeTypes.FormMethod;
import gwt.react.client.proptypes.html.attributeTypes.OnOff;
import gwt.react.client.proptypes.html.attributeTypes.Target;
import gwt.react.client.proptypes.html.attributeTypes.YesNo;
import jsinterop.annotations.JsOverlay;
import jsinterop.annotations.JsPackage;
import jsinterop.annotations.JsType;
    @JsOverlay public final FormProps dir(String s) { dir = s; return this; }
    @JsOverlay public final FormProps draggable(boolean b) { draggable = b; return this; }
    @JsOverlay public final FormProps hidden(boolean b) { hidden = b; return this; }
    @JsOverlay public final FormProps id(String s) { id = s; return this; }
    @JsOverlay public final FormProps lang(String s) { lang = s; return this; }
    @JsOverlay public final FormProps spellcheck(boolean b) { spellCheck = b; return this; }
    @JsOverlay public final FormProps style(CssProps s) { style = s; return this; }
    @JsOverlay public final FormProps tabIndex(int i) { tabIndex = i; return this; }
    @JsOverlay public final FormProps title(String s) { title = s; return this; }
    @JsOverlay public final FormProps translate(YesNo s) { translate = s.name(); return this; }

    //Applicable Event Handlers

    // Focus Events
    @JsOverlay public final FormProps onBlur(FocusEventHandler handler) { onBlur = handler; return this; }
    @JsOverlay public final FormProps onFocus(FocusEventHandler handler) { onFocus = handler; return this; }

    // Form Events
    @JsOverlay public final FormProps onChange(FormEventHandler handler) { onChange = handler; return this; }
    @JsOverlay public final FormProps onInput(FormEventHandler handler) { onInput = handler; return this; }
    @JsOverlay public final FormProps onSubmit(FormEventHandler handler) { onSubmit = handler; return this; }

    // Keyboard Events
    @JsOverlay public final FormProps onKeyDown(KeyboardEventHandler handler) { onKeyDown = handler; return this; }
    @JsOverlay public final FormProps onKeyPress(KeyboardEventHandler handler) { onKeyPress = handler; return this; }
    @JsOverlay public final FormProps onKeyUp(KeyboardEventHandler handler) { onKeyUp = handler; return this; }

    @JsOverlay public final FormProps onClick(MouseEventHandler handler) { onClick = handler; return this; }
    @JsOverlay public final FormProps onContextMenu(MouseEventHandler handler) { onContextMenu = handler; return this; }
    @JsOverlay public final FormProps onDoubleClick(MouseEventHandler handler) { onDoubleClick = handler; return this; }
// Path: src/gwt/react/client/api/ReactRef.java
// @JsType(isNative = true, namespace = JsPackage.GLOBAL, name = "Object")
// public class ReactRef<T> {
// 	@JsProperty
// 	public T current;
// }
// 
// Path: src/gwt/react/client/proptypes/ReactRefCallback.java
// @JsFunction
// public interface ReactRefCallback {
//     void passRef(Object refElement);
// }
// 
// Path: src/gwt/react/client/proptypes/html/attributeTypes/FormMethod.java
// public enum FormMethod {
//     get, post
// }
// 
// Path: src/gwt/react/client/proptypes/html/attributeTypes/OnOff.java
// public enum OnOff {
//     on, off
// }
// 
// Path: src/gwt/react/client/proptypes/html/attributeTypes/Target.java
// public enum Target {
//     blank("_blank"),
//     self("_self"),
//     parent("_parent"),
//     top("_top");
// 
//     private String val;
// 
//     Target(String val) {
//         this.val = val;
//     }
// 
//     String getVal() {
//         return val;
//     }
// }
// 
// Path: src/gwt/react/client/proptypes/html/attributeTypes/YesNo.java
// public enum YesNo {
//     yes, no
// }


// Path: src/gwt/react/client/proptypes/html/FormProps.java
import elemental2.dom.HTMLFormElement;
import gwt.react.client.api.ReactRef;
import gwt.react.client.events.*;
import gwt.react.client.proptypes.ReactRefCallback;
import gwt.react.client.proptypes.html.attributeTypes.FormMethod;
import gwt.react.client.proptypes.html.attributeTypes.OnOff;
import gwt.react.client.proptypes.html.attributeTypes.Target;
import gwt.react.client.proptypes.html.attributeTypes.YesNo;
import jsinterop.annotations.JsOverlay;
import jsinterop.annotations.JsPackage;
import jsinterop.annotations.JsType;

    @JsOverlay public final FormProps dir(String s) { dir = s; return this; }
    @JsOverlay public final FormProps draggable(boolean b) { draggable = b; return this; }
    @JsOverlay public final FormProps hidden(boolean b) { hidden = b; return this; }
    @JsOverlay public final FormProps id(String s) { id = s; return this; }
    @JsOverlay public final FormProps lang(String s) { lang = s; return this; }
    @JsOverlay public final FormProps spellcheck(boolean b) { spellCheck = b; return this; }
    @JsOverlay public final FormProps style(CssProps s) { style = s; return this; }
    @JsOverlay public final FormProps tabIndex(int i) { tabIndex = i; return this; }
    @JsOverlay public final FormProps title(String s) { title = s; return this; }
    @JsOverlay public final FormProps translate(YesNo s) { translate = s.name(); return this; }

    //Applicable Event Handlers

    // Focus Events
    @JsOverlay public final FormProps onBlur(FocusEventHandler handler) { onBlur = handler; return this; }
    @JsOverlay public final FormProps onFocus(FocusEventHandler handler) { onFocus = handler; return this; }

    // Form Events
    @JsOverlay public final FormProps onChange(FormEventHandler handler) { onChange = handler; return this; }
    @JsOverlay public final FormProps onInput(FormEventHandler handler) { onInput = handler; return this; }
    @JsOverlay public final FormProps onSubmit(FormEventHandler handler) { onSubmit = handler; return this; }

    // Keyboard Events
    @JsOverlay public final FormProps onKeyDown(KeyboardEventHandler handler) { onKeyDown = handler; return this; }
    @JsOverlay public final FormProps onKeyPress(KeyboardEventHandler handler) { onKeyPress = handler; return this; }
    @JsOverlay public final FormProps onKeyUp(KeyboardEventHandler handler) { onKeyUp = handler; return this; }

    @JsOverlay public final FormProps onClick(MouseEventHandler handler) { onClick = handler; return this; }
    @JsOverlay public final FormProps onContextMenu(MouseEventHandler handler) { onContextMenu = handler; return this; }
    @JsOverlay public final FormProps onDoubleClick(MouseEventHandler handler) { onDoubleClick = handler; return this; }
    @JsOverlay public final FormProps onDrag(DragEventHandler handler) { onDrag = handler; return this; }