// Up-to-date as of 2013-04-07. var formElements = { form: { acceptCharset: {type: "string", domAttrName: "accept-charset"}, // TODO: action is special // 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", // TODO: autocomplete is special. // autocomplete: {type: "enum", keywords: ["on", "off"], defaultVal: "on"}, autofocus: "boolean", defaultChecked: {type: "boolean", domAttrName: "checked"}, dirName: "string", disabled: "boolean", // TODO: formAction is special // 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", //TODO: only reflected on setting //height: "unsigned long", inputMode: {type: "enum", keywords: ["verbatim", "latin", "latin-name", "latin-prose", "full-width-latin", "kana", "katakana", "numeric", "tel", "email", "url"]}, max: "string", maxLength: "limited long", min: "string", multiple: "boolean", name: "string", pattern: "string", placeholder: "string", readOnly: "boolean", required: "boolean", // https://html.spec.whatwg.org/multipage/#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", "datetime", "date", "month", "week", "time", "datetime-local", "number", "range", "color", "checkbox", "radio", "file", "submit", "image", "reset", "button"], defaultVal: "text"}, //TODO: only reflected on setting //width: "unsigned long", defaultValue: {type: "string", domAttrName: "value"}, // Obsolete align: "string", useMap: "string", }, button: { autofocus: "boolean", disabled: "boolean", // TODO: formAction is special // 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", // TODO: menu }, select: { autofocus: "boolean", 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: { // TODO: autocomplete is special. // autocomplete: {type: "enum", keywords: ["on", "off"], defaultVal: "on"}, autofocus: "boolean", cols: {type: "limited unsigned long with fallback", defaultVal: 20}, dirName: "string", disabled: "boolean", inputMode: {type: "enum", keywords: ["verbatim", "latin", "latin-name", "latin-prose", "full-width-latin", "kana", "katakana", "numeric", "tel", "email", "url"]}, maxLength: "limited long", name: "string", placeholder: "string", readOnly: "boolean", required: "boolean", rows: {type: "limited unsigned long with fallback", defaultVal: 2}, wrap: "string", }, keygen: { autofocus: "boolean", challenge: "string", disabled: "boolean", // The invalid value default is the "unknown" state, which for our // purposes seems to be the same as having no invalid value default. // The missing value default depends on whether "rsa" is implemented, // so we use null, which is magically reserved for "don't try testing // this", since no one default is required. (TODO: we could test that // it's either the RSA state or the unknown state.) keytype: {type: "enum", keywords: ["rsa"], defaultVal: null}, name: "string", }, output: { htmlFor: {type: "settable tokenlist", domAttrName: "for" }, name: "string", }, progress: { max: {type: "limited double", defaultVal: 1.0}, }, meter: {}, }; mergeElements(formElements);