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 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);
|