1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143
|
// 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);
|