var formElements = { form: { acceptCharset: {type: "string", domAttrName: "accept-charset"}, // "action" has magic hard-coded in reflection.js action: "url", autocomplete: {type: "enum", keywords: ["on", "off"], defaultVal: "on"}, enctype: {type: "enum", keywords: ["application/x-www-form-urlencoded", "multipart/form-data", "text/plain"], defaultVal: "application/x-www-form-urlencoded"}, encoding: {type: "enum", keywords: ["application/x-www-form-urlencoded", "multipart/form-data", "text/plain"], defaultVal: "application/x-www-form-urlencoded", domAttrName: "enctype"}, method: {type: "enum", keywords: ["get", "post", "dialog"], defaultVal: "get"}, name: "string", noValidate: "boolean", target: "string", }, fieldset: { disabled: "boolean", name: "string", }, legend: { // Obsolete align: "string", }, label: { htmlFor: {type: "string", domAttrName: "for"}, }, input: { // Conforming accept: "string", alt: "string", autocomplete: {type: "string", customGetter: true}, defaultChecked: {type: "boolean", domAttrName: "checked"}, dirName: "string", disabled: "boolean", // "formAction" has magic hard-coded in reflection.js formAction: "url", formEnctype: {type: "enum", keywords: ["application/x-www-form-urlencoded", "multipart/form-data", "text/plain"], invalidVal: "application/x-www-form-urlencoded"}, formMethod: {type: "enum", keywords: ["get", "post"], invalidVal: "get"}, formNoValidate: "boolean", formTarget: "string", height: {type: "unsigned long", customGetter: true}, max: "string", maxLength: "limited long", min: "string", minLength: "limited long", multiple: "boolean", name: "string", pattern: "string", placeholder: "string", readOnly: "boolean", required: "boolean", // https://html.spec.whatwg.org/#attr-input-size size: {type: "limited unsigned long", defaultVal: 20}, src: "url", step: "string", type: {type: "enum", keywords: ["hidden", "text", "search", "tel", "url", "email", "password", "date", "time", "datetime-local", "number", "range", "color", "checkbox", "radio", "file", "submit", "image", "reset", "button"], defaultVal: "text"}, width: {type: "unsigned long", customGetter: true}, defaultValue: {type: "string", domAttrName: "value"}, // Obsolete align: "string", useMap: "string", }, button: { disabled: "boolean", // "formAction" has magic hard-coded in reflection.js formAction: "url", formEnctype: {type: "enum", keywords: ["application/x-www-form-urlencoded", "multipart/form-data", "text/plain"], invalidVal: "application/x-www-form-urlencoded"}, formMethod: {type: "enum", keywords: ["get", "post", "dialog"], invalidVal: "get"}, formNoValidate: "boolean", formTarget: "string", name: "string", type: {type: "enum", keywords: ["submit", "reset", "button"], defaultVal: "submit"}, value: "string" }, select: { autocomplete: {type: "string", customGetter: true}, disabled: "boolean", multiple: "boolean", name: "string", required: "boolean", size: {type: "unsigned long", defaultVal: 0}, }, datalist: {}, optgroup: { disabled: "boolean", label: "string", }, option: { disabled: "boolean", label: {type: "string", customGetter: true}, defaultSelected: {type: "boolean", domAttrName: "selected"}, value: {type: "string", customGetter: true}, }, textarea: { autocomplete: {type: "string", customGetter: true}, cols: {type: "limited unsigned long with fallback", defaultVal: 20}, dirName: "string", disabled: "boolean", maxLength: "limited long", minLength: "limited long", name: "string", placeholder: "string", readOnly: "boolean", required: "boolean", rows: {type: "limited unsigned long with fallback", defaultVal: 2}, wrap: "string", }, output: { htmlFor: {type: "settable tokenlist", domAttrName: "for" }, name: "string", }, progress: { max: {type: "limited double", defaultVal: 1.0}, }, meter: { value: {type: "double", customGetter: true}, min: {type: "double", customGetter: true}, max: {type: "double", customGetter: true}, low: {type: "double", customGetter: true}, high: {type: "double", customGetter: true}, optimum: {type: "double", customGetter: true}, }, }; mergeElements(formElements);