| // 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", 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", 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); |