@markuplint/html-spec 3.0.0-dev.25 → 3.0.0-dev.290

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (183) hide show
  1. package/index.d.ts +1 -1
  2. package/index.json +14776 -2258
  3. package/package.json +8 -13
  4. package/{src/structure.test.ts → test/structure.spec.mjs} +23 -13
  5. package/src/spec-common.attributes.json +0 -1650
  6. package/src/spec-common.contents.json +0 -392
  7. package/src/spec.a.json +0 -58
  8. package/src/spec.abbr.json +0 -25
  9. package/src/spec.address.json +0 -25
  10. package/src/spec.area.json +0 -64
  11. package/src/spec.article.json +0 -24
  12. package/src/spec.aside.json +0 -38
  13. package/src/spec.audio.json +0 -48
  14. package/src/spec.b.json +0 -24
  15. package/src/spec.base.json +0 -21
  16. package/src/spec.bdi.json +0 -24
  17. package/src/spec.bdo.json +0 -24
  18. package/src/spec.blockquote.json +0 -31
  19. package/src/spec.body.json +0 -100
  20. package/src/spec.br.json +0 -32
  21. package/src/spec.button.json +0 -70
  22. package/src/spec.canvas.json +0 -33
  23. package/src/spec.caption.json +0 -30
  24. package/src/spec.cite.json +0 -24
  25. package/src/spec.code.json +0 -27
  26. package/src/spec.col.json +0 -31
  27. package/src/spec.colgroup.json +0 -41
  28. package/src/spec.data.json +0 -29
  29. package/src/spec.datalist.json +0 -38
  30. package/src/spec.dd.json +0 -30
  31. package/src/spec.del.json +0 -36
  32. package/src/spec.details.json +0 -35
  33. package/src/spec.dfn.json +0 -23
  34. package/src/spec.dialog.json +0 -36
  35. package/src/spec.div.json +0 -55
  36. package/src/spec.dl.json +0 -56
  37. package/src/spec.dt.json +0 -26
  38. package/src/spec.em.json +0 -27
  39. package/src/spec.embed.json +0 -30
  40. package/src/spec.fieldset.json +0 -27
  41. package/src/spec.figcaption.json +0 -24
  42. package/src/spec.figure.json +0 -52
  43. package/src/spec.footer.json +0 -37
  44. package/src/spec.form.json +0 -100
  45. package/src/spec.h1.json +0 -26
  46. package/src/spec.h2.json +0 -26
  47. package/src/spec.h3.json +0 -26
  48. package/src/spec.h4.json +0 -26
  49. package/src/spec.h5.json +0 -26
  50. package/src/spec.h6.json +0 -26
  51. package/src/spec.head.json +0 -30
  52. package/src/spec.header.json +0 -37
  53. package/src/spec.hgroup.json +0 -45
  54. package/src/spec.hr.json +0 -23
  55. package/src/spec.html.json +0 -27
  56. package/src/spec.i.json +0 -24
  57. package/src/spec.iframe.json +0 -70
  58. package/src/spec.img.json +0 -109
  59. package/src/spec.input.json +0 -792
  60. package/src/spec.ins.json +0 -36
  61. package/src/spec.kbd.json +0 -24
  62. package/src/spec.label.json +0 -29
  63. package/src/spec.legend.json +0 -24
  64. package/src/spec.li.json +0 -40
  65. package/src/spec.link.json +0 -140
  66. package/src/spec.main.json +0 -27
  67. package/src/spec.map.json +0 -30
  68. package/src/spec.mark.json +0 -24
  69. package/src/spec.math.json +0 -20
  70. package/src/spec.menu.json +0 -53
  71. package/src/spec.meta.json +0 -59
  72. package/src/spec.meter.json +0 -62
  73. package/src/spec.nav.json +0 -26
  74. package/src/spec.noscript.json +0 -24
  75. package/src/spec.object.json +0 -40
  76. package/src/spec.ol.json +0 -71
  77. package/src/spec.optgroup.json +0 -34
  78. package/src/spec.option.json +0 -70
  79. package/src/spec.output.json +0 -29
  80. package/src/spec.p.json +0 -27
  81. package/src/spec.picture.json +0 -46
  82. package/src/spec.portal.json +0 -25
  83. package/src/spec.pre.json +0 -24
  84. package/src/spec.progress.json +0 -44
  85. package/src/spec.q.json +0 -29
  86. package/src/spec.rp.json +0 -23
  87. package/src/spec.rt.json +0 -24
  88. package/src/spec.ruby.json +0 -55
  89. package/src/spec.s.json +0 -24
  90. package/src/spec.samp.json +0 -24
  91. package/src/spec.script.json +0 -73
  92. package/src/spec.section.json +0 -73
  93. package/src/spec.select.json +0 -66
  94. package/src/spec.slot.json +0 -29
  95. package/src/spec.small.json +0 -24
  96. package/src/spec.source.json +0 -52
  97. package/src/spec.span.json +0 -24
  98. package/src/spec.strong.json +0 -27
  99. package/src/spec.style.json +0 -35
  100. package/src/spec.sub.json +0 -27
  101. package/src/spec.summary.json +0 -38
  102. package/src/spec.sup.json +0 -27
  103. package/src/spec.svg_a.json +0 -118
  104. package/src/spec.svg_animate.json +0 -109
  105. package/src/spec.svg_animateMotion.json +0 -73
  106. package/src/spec.svg_animateTransform.json +0 -47
  107. package/src/spec.svg_circle.json +0 -113
  108. package/src/spec.svg_clipPath.json +0 -108
  109. package/src/spec.svg_defs.json +0 -109
  110. package/src/spec.svg_desc.json +0 -21
  111. package/src/spec.svg_discard.json +0 -31
  112. package/src/spec.svg_ellipse.json +0 -116
  113. package/src/spec.svg_feBlend.json +0 -115
  114. package/src/spec.svg_feColorMatrix.json +0 -104
  115. package/src/spec.svg_feComponentTransfer.json +0 -97
  116. package/src/spec.svg_feComposite.json +0 -146
  117. package/src/spec.svg_feConvolveMatrix.json +0 -147
  118. package/src/spec.svg_feDiffuseLighting.json +0 -126
  119. package/src/spec.svg_feDisplacementMap.json +0 -133
  120. package/src/spec.svg_feDistantLight.json +0 -32
  121. package/src/spec.svg_feDropShadow.json +0 -109
  122. package/src/spec.svg_feFlood.json +0 -101
  123. package/src/spec.svg_feFuncA.json +0 -20
  124. package/src/spec.svg_feFuncB.json +0 -20
  125. package/src/spec.svg_feFuncG.json +0 -20
  126. package/src/spec.svg_feFuncR.json +0 -20
  127. package/src/spec.svg_feGaussianBlur.json +0 -105
  128. package/src/spec.svg_feImage.json +0 -123
  129. package/src/spec.svg_feMerge.json +0 -90
  130. package/src/spec.svg_feMergeNode.json +0 -20
  131. package/src/spec.svg_feMorphology.json +0 -106
  132. package/src/spec.svg_feOffset.json +0 -103
  133. package/src/spec.svg_fePointLight.json +0 -38
  134. package/src/spec.svg_feSpecularLighting.json +0 -131
  135. package/src/spec.svg_feSpotLight.json +0 -67
  136. package/src/spec.svg_feTile.json +0 -90
  137. package/src/spec.svg_feTurbulence.json +0 -127
  138. package/src/spec.svg_filter.json +0 -138
  139. package/src/spec.svg_foreignObject.json +0 -97
  140. package/src/spec.svg_g.json +0 -115
  141. package/src/spec.svg_image.json +0 -128
  142. package/src/spec.svg_line.json +0 -136
  143. package/src/spec.svg_linearGradient.json +0 -152
  144. package/src/spec.svg_marker.json +0 -180
  145. package/src/spec.svg_mask.json +0 -142
  146. package/src/spec.svg_metadata.json +0 -21
  147. package/src/spec.svg_mpath.json +0 -26
  148. package/src/spec.svg_path.json +0 -114
  149. package/src/spec.svg_pattern.json +0 -157
  150. package/src/spec.svg_polygon.json +0 -117
  151. package/src/spec.svg_polyline.json +0 -117
  152. package/src/spec.svg_radialGradient.json +0 -162
  153. package/src/spec.svg_rect.json +0 -118
  154. package/src/spec.svg_script.json +0 -40
  155. package/src/spec.svg_set.json +0 -42
  156. package/src/spec.svg_stop.json +0 -110
  157. package/src/spec.svg_style.json +0 -36
  158. package/src/spec.svg_svg.json +0 -170
  159. package/src/spec.svg_switch.json +0 -105
  160. package/src/spec.svg_symbol.json +0 -77
  161. package/src/spec.svg_text.json +0 -153
  162. package/src/spec.svg_textPath.json +0 -169
  163. package/src/spec.svg_title.json +0 -21
  164. package/src/spec.svg_tspan.json +0 -147
  165. package/src/spec.svg_use.json +0 -115
  166. package/src/spec.svg_view.json +0 -45
  167. package/src/spec.table.json +0 -64
  168. package/src/spec.tbody.json +0 -23
  169. package/src/spec.td.json +0 -37
  170. package/src/spec.template.json +0 -20
  171. package/src/spec.textarea.json +0 -67
  172. package/src/spec.tfoot.json +0 -23
  173. package/src/spec.th.json +0 -66
  174. package/src/spec.thead.json +0 -23
  175. package/src/spec.time.json +0 -32
  176. package/src/spec.title.json +0 -24
  177. package/src/spec.tr.json +0 -29
  178. package/src/spec.track.json +0 -54
  179. package/src/spec.u.json +0 -24
  180. package/src/spec.ul.json +0 -53
  181. package/src/spec.var.json +0 -24
  182. package/src/spec.video.json +0 -78
  183. package/src/spec.wbr.json +0 -25
@@ -1,792 +0,0 @@
1
- // https://html.spec.whatwg.org/multipage/input.html#the-input-element
2
- // https://www.w3.org/TR/html-aria/#el-input
3
- // https://w3c.github.io/html-aria/#el-input
4
- {
5
- "contentModel": {
6
- "contents": false
7
- },
8
- "globalAttrs": {
9
- "#HTMLGlobalAttrs": true,
10
- "#GlobalEventAttrs": true,
11
- "#DocumentElementEventAttrs": true,
12
- "#ARIAAttrs": true,
13
- "#HTMLEmbededAndMediaContentAttrs": ["src", "height", "width"],
14
- "#HTMLFormControlElementAttrs": [
15
- "autocomplete",
16
- "dirname",
17
- "disabled",
18
- "form",
19
- "formaction",
20
- "formenctype",
21
- "formmethod",
22
- "formnovalidate",
23
- "formtarget",
24
- "name",
25
- "maxlength",
26
- "minlength",
27
- "readonly",
28
- "required"
29
- ]
30
- },
31
- "attributes": {
32
- // https://html.spec.whatwg.org/multipage/input.html#attr-input-accept
33
- "accept": {
34
- "type": {
35
- "token": "Accept",
36
- "caseInsensitive": true,
37
- "unique": true,
38
- "separator": "comma"
39
- },
40
- "condition": "[type='file' i]"
41
- },
42
- // https://html.spec.whatwg.org/multipage/input.html#attr-input-alt
43
- "alt": {
44
- "type": "Any",
45
- "condition": "[type='image' i]"
46
- },
47
- // https://html.spec.whatwg.org/multipage/form-control-infrastructure.html#attr-fe-autocomplete
48
- "autocomplete": {
49
- "condition": [
50
- ":not([type])",
51
- "[type='hidden' i]",
52
- "[type='text' i]",
53
- "[type='search' i]",
54
- "[type='url' i]",
55
- "[type='tel' i]",
56
- "[type='email' i]",
57
- "[type='password' i]",
58
- "[type='date' i]",
59
- "[type='month' i]",
60
- "[type='week' i]",
61
- "[type='time' i]",
62
- "[type='datetime-local' i]",
63
- "[type='number' i]",
64
- "[type='range' i]",
65
- "[type='color' i]"
66
- ]
67
- },
68
- // https://html.spec.whatwg.org/multipage/input.html#attr-input-checked
69
- "checked": {
70
- "type": "Boolean",
71
- "condition": ["[type='checkbox' i]", "[type='radio' i]"]
72
- },
73
- // https://html.spec.whatwg.org/multipage/form-control-infrastructure.html#attr-fe-dirname
74
- "dirname": {
75
- "condition": [":not([type])", "[type='text' i]", "[type='search' i]"]
76
- },
77
- // https://html.spec.whatwg.org/multipage/embedded-content-other.html#attr-dim-height
78
- "height": {
79
- "condition": "[type='image' i]"
80
- },
81
- // https://html.spec.whatwg.org/multipage/input.html#attr-input-list
82
- "list": {
83
- "type": "DOMID",
84
- "condition": [
85
- ":not([type])",
86
- "[type='text' i]",
87
- "[type='search' i]",
88
- "[type='url' i]",
89
- "[type='tel' i]",
90
- "[type='email' i]",
91
- "[type='date' i]",
92
- "[type='month' i]",
93
- "[type='week' i]",
94
- "[type='time' i]",
95
- "[type='datetime-local' i]",
96
- "[type='number' i]",
97
- "[type='range' i]",
98
- "[type='color' i]"
99
- ]
100
- },
101
- // https://html.spec.whatwg.org/multipage/input.html#attr-input-max
102
- "max": {
103
- "type": ["DateTime", "Number"],
104
- "condition": [
105
- "[type='date' i]",
106
- "[type='month' i]",
107
- "[type='week' i]",
108
- "[type='time' i]",
109
- "[type='datetime-local' i]",
110
- "[type='number' i]",
111
- "[type='range' i]"
112
- ]
113
- },
114
- // https://html.spec.whatwg.org/multipage/input.html#attr-input-maxlength
115
- "maxlength": {
116
- "condition": [
117
- ":not([type])",
118
- "[type='text' i]",
119
- "[type='search' i]",
120
- "[type='url' i]",
121
- "[type='tel' i]",
122
- "[type='email' i]",
123
- "[type='password' i]"
124
- ]
125
- },
126
- // https://html.spec.whatwg.org/multipage/input.html#attr-input-min
127
- "min": {
128
- "type": ["DateTime", "Number"],
129
- "condition": [
130
- "[type='date' i]",
131
- "[type='month' i]",
132
- "[type='week' i]",
133
- "[type='time' i]",
134
- "[type='datetime-local' i]",
135
- "[type='number' i]",
136
- "[type='range' i]"
137
- ]
138
- },
139
- // https://html.spec.whatwg.org/multipage/input.html#attr-input-minlength
140
- "minlength": {
141
- "condition": [
142
- ":not([type])",
143
- "[type='text' i]",
144
- "[type='search' i]",
145
- "[type='url' i]",
146
- "[type='tel' i]",
147
- "[type='email' i]",
148
- "[type='password' i]"
149
- ]
150
- },
151
- // https://html.spec.whatwg.org/multipage/input.html#attr-input-multiple
152
- "multiple": {
153
- "type": "Boolean",
154
- "condition": ["[type='email' i]", "[type='file' i]"]
155
- },
156
- // https://html.spec.whatwg.org/multipage/input.html#attr-input-pattern
157
- "pattern": {
158
- "type": "Pattern",
159
- "condition": [
160
- ":not([type])",
161
- "[type='text' i]",
162
- "[type='search' i]",
163
- "[type='url' i]",
164
- "[type='tel' i]",
165
- "[type='email' i]",
166
- "[type='password' i]"
167
- ]
168
- },
169
- // https://html.spec.whatwg.org/multipage/input.html#attr-input-placeholder
170
- "placeholder": {
171
- "type": "OneLineAny",
172
- "condition": [
173
- ":not([type])",
174
- "[type='text' i]",
175
- "[type='search' i]",
176
- "[type='url' i]",
177
- "[type='tel' i]",
178
- "[type='email' i]",
179
- "[type='password' i]",
180
- "[type='number' i]"
181
- ]
182
- },
183
- // https://html.spec.whatwg.org/multipage/input.html#attr-input-readonly
184
- "readonly": {
185
- "condition": [
186
- ":not([type])",
187
- "[type='text' i]",
188
- "[type='search' i]",
189
- "[type='url' i]",
190
- "[type='tel' i]",
191
- "[type='email' i]",
192
- "[type='password' i]",
193
- "[type='date' i]",
194
- "[type='month' i]",
195
- "[type='week' i]",
196
- "[type='time' i]",
197
- "[type='datetime-local' i]",
198
- "[type='number' i]"
199
- ]
200
- },
201
- // https://html.spec.whatwg.org/multipage/input.html#attr-input-required
202
- "required": {
203
- "condition": [
204
- ":not([type])",
205
- "[type='text' i]",
206
- "[type='search' i]",
207
- "[type='url' i]",
208
- "[type='tel' i]",
209
- "[type='email' i]",
210
- "[type='password' i]",
211
- "[type='date' i]",
212
- "[type='month' i]",
213
- "[type='week' i]",
214
- "[type='time' i]",
215
- "[type='datetime-local' i]",
216
- "[type='number' i]",
217
- "[type='checkbox' i]",
218
- "[type='radio' i]",
219
- "[type='file' i]"
220
- ]
221
- },
222
- // https://html.spec.whatwg.org/multipage/input.html#attr-input-size
223
- "size": {
224
- "type": {
225
- "type": "integer",
226
- "gt": 0
227
- },
228
- "condition": [
229
- ":not([type])",
230
- "[type='text' i]",
231
- "[type='search' i]",
232
- "[type='url' i]",
233
- "[type='tel' i]",
234
- "[type='email' i]",
235
- "[type='password' i]"
236
- ],
237
- "defaultValue": "20"
238
- },
239
- // https://html.spec.whatwg.org/multipage/input.html#attr-input-src
240
- "src": {
241
- "condition": "[type='image' i]"
242
- },
243
- // https://html.spec.whatwg.org/multipage/input.html#attr-input-step
244
- "step": {
245
- "type": [
246
- "Number",
247
- {
248
- "enum": ["any"],
249
- "caseInsensitive": true
250
- }
251
- ],
252
- "condition": [
253
- "[type='date' i]",
254
- "[type='month' i]",
255
- "[type='week' i]",
256
- "[type='time' i]",
257
- "[type='datetime-local' i]",
258
- "[type='number' i]",
259
- "[type='range' i]"
260
- ]
261
- },
262
- // https://html.spec.whatwg.org/multipage/input.html#attr-input-type
263
- "type": {
264
- "type": {
265
- "enum": [
266
- "hidden",
267
- "text",
268
- "search",
269
- "tel",
270
- "url",
271
- "email",
272
- "password",
273
- "date",
274
- "month",
275
- "week",
276
- "time",
277
- "datetime-local",
278
- "number",
279
- "range",
280
- "color",
281
- "checkbox",
282
- "radio",
283
- "file",
284
- "submit",
285
- "image",
286
- "reset",
287
- "button"
288
- ],
289
- "invalidValueDefault": "text",
290
- "missingValueDefault": "text"
291
- },
292
- "defaultValue": "text"
293
- },
294
- // https://html.spec.whatwg.org/multipage/input.html#attr-input-value
295
- "value": {
296
- // The `type` attribute determines the type
297
- "type": "Any"
298
- },
299
- // https://html.spec.whatwg.org/multipage/embedded-content-other.html#attr-dim-width
300
- "width": {
301
- "condition": "[type='image' i]"
302
- }
303
- },
304
- "aria": {
305
- // No condition:
306
- // > input type=text or with a missing or invalid type, with no list attribute
307
- // @see https://w3c.github.io/html-aria/#el-input-text
308
- "implicitRole": "textbox",
309
- "permittedRoles": ["combobox", "searchbox", "spinbutton"],
310
- "conditions": {
311
- "[type='button' i]": {
312
- "implicitRole": "button",
313
- "permittedRoles": [
314
- "checkbox",
315
- "combobox",
316
- "link",
317
- "menuitem",
318
- "menuitemcheckbox",
319
- "menuitemradio",
320
- "option",
321
- "radio",
322
- "switch",
323
- "tab"
324
- ]
325
- },
326
- "[type='checkbox' i]": {
327
- "implicitRole": "checkbox",
328
- // Roles: menuitemcheckbox, option or switch;
329
- "permittedRoles": ["menuitemcheckbox", "option", "switch"],
330
- "properties": {
331
- // Otherwise, any global aria-* attributes and any aria-* attributes applicable to the allowed roles.
332
- "global": true,
333
- "role": true,
334
- "without": [
335
- {
336
- // Authors MUST NOT use the aria-checked attribute on input type=checkbox elements.
337
- "type": "must-not",
338
- "name": "aria-checked",
339
- // The HTML checked attribute can be used instead of the aria-checked attribute for menuitemcheckbox, option or switch roles when used on type=checkbox.
340
- "alt": {
341
- "method": "set-attr",
342
- "target": "checked"
343
- }
344
- }
345
- ]
346
- }
347
- },
348
- "[type='checkbox' i][aria-pressed]": {
349
- "implicitRole": "checkbox",
350
- // button if used with aria-pressed.
351
- "permittedRoles": ["button"],
352
- "properties": {
353
- // Otherwise, any global aria-* attributes and any aria-* attributes applicable to the allowed roles.
354
- "global": true,
355
- "role": true,
356
- "without": [
357
- {
358
- // Authors MUST NOT use the aria-checked attribute on input type=checkbox elements.
359
- "type": "must-not",
360
- "name": "aria-checked",
361
- // The HTML checked attribute can be used instead of the aria-checked attribute for menuitemcheckbox, option or switch roles when used on type=checkbox.
362
- "alt": {
363
- "method": "set-attr",
364
- "target": "checked"
365
- }
366
- }
367
- ]
368
- }
369
- },
370
- "[type='color' i]": {
371
- "implicitRole": false,
372
- "permittedRoles": false,
373
- "properties": {
374
- "global": true
375
- }
376
- },
377
- "[type='date' i]": {
378
- "implicitRole": false,
379
- "permittedRoles": false,
380
- "properties": {
381
- "global": true,
382
- "role": "textbox"
383
- }
384
- },
385
- "[type='datetime-local' i]": {
386
- "permittedRoles": false,
387
- "properties": {
388
- "global": true,
389
- "role": "textbox"
390
- }
391
- },
392
- "[type='email' i]:not([list])": {
393
- "implicitRole": "textbox",
394
- "permittedRoles": false,
395
- "properties": {
396
- "global": true,
397
- "role": "textbox"
398
- }
399
- },
400
- "[type='file' i]": {
401
- "implicitRole": false,
402
- "permittedRoles": false,
403
- "properties": {
404
- "global": true
405
- }
406
- },
407
- "[type='hidden' i]": {
408
- "implicitRole": false,
409
- "permittedRoles": false,
410
- "properties": false
411
- },
412
- "[type='image' i]": {
413
- "implicitRole": "button",
414
- "permittedRoles": ["link", "menuitem", "menuitemcheckbox", "menuitemradio", "radio", "switch"]
415
- },
416
- "[type='month' i]": {
417
- "implicitRole": false,
418
- "permittedRoles": false,
419
- "properties": {
420
- "global": true,
421
- "role": "textbox"
422
- }
423
- },
424
- "[type='number' i]": {
425
- "implicitRole": "spinbutton",
426
- "permittedRoles": false,
427
- "properties": {
428
- "global": true,
429
- "role": "spinbutton"
430
- }
431
- },
432
- "[type='password' i]": {
433
- "implicitRole": false,
434
- "permittedRoles": false,
435
- "properties": {
436
- "global": true,
437
- "role": "textbox"
438
- }
439
- },
440
- "[type='radio' i]": {
441
- "implicitRole": "radio",
442
- "permittedRoles": ["menuitemradio"],
443
- "properties": {
444
- "global": true,
445
- "role": true,
446
- "without": [
447
- {
448
- // Authors MUST NOT use the aria-checked attribute on input type=radio elements.
449
- "type": "must-not",
450
- "name": "aria-checked",
451
- // The HTML checked attribute can be used instead of the aria-checked attribute for the menuitemradio role when used on type=radio.
452
- "alt": {
453
- "method": "set-attr",
454
- "target": "checked"
455
- }
456
- }
457
- ]
458
- }
459
- },
460
- "[type='range' i]": {
461
- "implicitRole": "slider",
462
- "permittedRoles": false,
463
- "properties": {
464
- "global": true,
465
- "role": "slider",
466
- // Authors SHOULD NOT use the aria-valuemax or aria-valuemin attributes on input type=range.
467
- "without": [
468
- {
469
- "type": "should-not",
470
- "name": "aria-valuemax"
471
- },
472
- {
473
- "type": "should-not",
474
- "name": "aria-valuemin"
475
- }
476
- ]
477
- }
478
- },
479
- "[type='reset' i]": {
480
- "implicitRole": "button",
481
- "permittedRoles": false,
482
- "properties": {
483
- "global": true,
484
- "role": "button"
485
- }
486
- },
487
- "[type='search' i]:not([list])": {
488
- "implicitRole": "searchbox",
489
- "permittedRoles": false,
490
- "properties": {
491
- "global": true,
492
- "role": "searchbox"
493
- }
494
- },
495
- "[type='submit' i]": {
496
- "implicitRole": "button",
497
- "permittedRoles": false,
498
- "properties": {
499
- "global": true,
500
- "role": "button"
501
- }
502
- },
503
- "[type='tel' i]:not([list])": {
504
- "implicitRole": "textbox",
505
- "permittedRoles": false,
506
- "properties": {
507
- "global": true,
508
- "role": "textbox"
509
- }
510
- },
511
- ":is(:not([type]), [type='text' i], [type='search' i], [type='tel' i], [type='url' i], [type='email' i])[list]": {
512
- "implicitRole": "combobox",
513
- "permittedRoles": false,
514
- "properties": {
515
- "global": true,
516
- "role": "combobox",
517
- // Authors SHOULD NOT use the aria-haspopup attribute on the indicated inputs with a list attribute.
518
- "without": [
519
- {
520
- "type": "should-not",
521
- "name": "aria-haspopup"
522
- }
523
- ]
524
- }
525
- },
526
- "[type='time' i]": {
527
- "implicitRole": false,
528
- "permittedRoles": false,
529
- "properties": {
530
- "global": true,
531
- "role": "textbox"
532
- }
533
- },
534
- "[type='url' i]:not([list])": {
535
- "implicitRole": "textbox",
536
- "permittedRoles": false,
537
- "properties": {
538
- "global": true,
539
- "role": "textbox"
540
- }
541
- },
542
- "[type='week' i]": {
543
- "implicitRole": false,
544
- "permittedRoles": false,
545
- "properties": {
546
- "global": true,
547
- "role": "textbox"
548
- }
549
- }
550
- },
551
- "1.1": {
552
- // No condition:
553
- // > input type=text or with a missing or invalid type, with no list attribute
554
- // https://www.w3.org/TR/html-aria/#el-input-text
555
- "implicitRole": "textbox",
556
- "permittedRoles": ["combobox", "searchbox", "spinbutton"],
557
- "conditions": {
558
- "[type='button' i]": {
559
- "implicitRole": "button",
560
- "permittedRoles": [
561
- "link",
562
- "menuitem",
563
- "menuitemcheckbox",
564
- "menuitemradio",
565
- "option",
566
- "radio",
567
- "switch",
568
- "tab"
569
- ]
570
- },
571
- "[type='checkbox' i]": {
572
- "implicitRole": "checkbox",
573
- // Roles: menuitemcheckbox, option or switch;
574
- "permittedRoles": ["menuitemcheckbox", "option", "switch"],
575
- "properties": {
576
- // Authors SHOULD NOT use the aria-checked attribute on input type=checkbox elements.
577
- // Otherwise, any global aria-* attributes and any aria-* attributes applicable to the allowed roles.
578
- "global": true,
579
- "role": true,
580
- "without": [
581
- {
582
- "type": "should-not",
583
- "name": "aria-checked", // The HTML checked attribute can be used instead of the aria-checked attribute for menuitemcheckbox, option or switch roles when used on type=checkbox.
584
- "alt": {
585
- "method": "set-attr",
586
- "target": "checked"
587
- }
588
- }
589
- ]
590
- }
591
- },
592
- "[type='checkbox' i][aria-pressed]": {
593
- "implicitRole": "checkbox",
594
- // button if used with aria-pressed.
595
- "permittedRoles": ["button"],
596
- "properties": {
597
- // Authors SHOULD NOT use the aria-checked attribute on input type=checkbox elements.
598
- // Otherwise, any global aria-* attributes and any aria-* attributes applicable to the allowed roles.
599
- "global": true,
600
- "role": true,
601
- "without": [
602
- {
603
- "type": "should-not",
604
- "name": "aria-hecked"
605
- }
606
- ]
607
- }
608
- },
609
- "[type='color' i]": {
610
- "implicitRole": false,
611
- "permittedRoles": false,
612
- "properties": {
613
- "global": true
614
- }
615
- },
616
- "[type='date' i]": {
617
- "implicitRole": false,
618
- "permittedRoles": false,
619
- "properties": {
620
- "global": true,
621
- "role": "textbox"
622
- }
623
- },
624
- "[type='datetime-local' i]": {
625
- "permittedRoles": false,
626
- "properties": {
627
- "global": true,
628
- "role": "textbox"
629
- }
630
- },
631
- "[type='email' i]:not([list])": {
632
- "implicitRole": "textbox",
633
- "permittedRoles": false,
634
- "properties": {
635
- "global": true,
636
- "role": "textbox"
637
- }
638
- },
639
- "[type='file' i]": {
640
- "implicitRole": false,
641
- "permittedRoles": false,
642
- "properties": {
643
- "global": true
644
- }
645
- },
646
- "[type='hidden' i]": {
647
- "implicitRole": false,
648
- "permittedRoles": false,
649
- "properties": false
650
- },
651
- "[type='image' i]": {
652
- "implicitRole": "button",
653
- "permittedRoles": ["link", "menuitem", "menuitemcheckbox", "menuitemradio", "radio", "switch"]
654
- },
655
- "[type='month' i]": {
656
- "implicitRole": false,
657
- "permittedRoles": false,
658
- "properties": {
659
- "global": true,
660
- "role": "textbox"
661
- }
662
- },
663
- "[type='number' i]": {
664
- "implicitRole": "spinbutton",
665
- "permittedRoles": false,
666
- "properties": {
667
- "global": true,
668
- "role": "spinbutton"
669
- }
670
- },
671
- "[type='password' i]": {
672
- "implicitRole": false,
673
- "permittedRoles": false,
674
- "properties": {
675
- "global": true,
676
- "role": "textbox"
677
- }
678
- },
679
- "[type='radio' i]": {
680
- "implicitRole": "radio",
681
- "permittedRoles": ["menuitemradio"],
682
- "properties": {
683
- "global": true,
684
- "role": true,
685
- // Authors SHOULD NOT use the aria-checked attribute on input type=radio elements.
686
- "without": [
687
- {
688
- "type": "should-not",
689
- "name": "aria-checked",
690
- // The HTML checked attribute can be used instead of the aria-checked attribute for the menuitemradio role when used on type=radio.
691
- "alt": {
692
- "method": "set-attr",
693
- "target": "checked"
694
- }
695
- }
696
- ]
697
- }
698
- },
699
- "[type='range' i]": {
700
- "implicitRole": "slider",
701
- "permittedRoles": false,
702
- "properties": {
703
- "global": true,
704
- "role": "slider",
705
- // Authors SHOULD NOT use the aria-valuemax or aria-valuemin attributes on input type=range.
706
- "without": [
707
- {
708
- "type": "should-not",
709
- "name": "aria-valuemax"
710
- },
711
- {
712
- "type": "should-not",
713
- "name": "aria-valuemin"
714
- }
715
- ]
716
- }
717
- },
718
- "[type='reset' i]": {
719
- "implicitRole": "button",
720
- "permittedRoles": false,
721
- "properties": {
722
- "global": true,
723
- "role": "button"
724
- }
725
- },
726
- "[type='search' i]:not([list])": {
727
- "implicitRole": "searchbox",
728
- "permittedRoles": false,
729
- "properties": {
730
- "global": true,
731
- "role": "searchbox"
732
- }
733
- },
734
- "[type='submit' i]": {
735
- "implicitRole": "button",
736
- "permittedRoles": false,
737
- "properties": {
738
- "global": true,
739
- "role": "button"
740
- }
741
- },
742
- "[type='tel' i]:not([list])": {
743
- "implicitRole": "textbox",
744
- "permittedRoles": false,
745
- "properties": {
746
- "global": true,
747
- "role": "textbox"
748
- }
749
- },
750
- ":is(:not([type]), [type='text' i], [type='search' i], [type='tel' i], [type='url' i], [type='email' i])[list]": {
751
- "implicitRole": "combobox",
752
- "permittedRoles": false,
753
- "properties": {
754
- "global": true,
755
- "role": "combobox",
756
- // Authors SHOULD NOT use the aria-haspopup attribute on the indicated inputs with a list attribute.
757
- "without": [
758
- {
759
- "type": "should-not",
760
- "name": "aria-haspopup"
761
- }
762
- ]
763
- }
764
- },
765
- "[type='time' i]": {
766
- "implicitRole": false,
767
- "permittedRoles": false,
768
- "properties": {
769
- "global": true,
770
- "role": "textbox"
771
- }
772
- },
773
- "[type='url' i]:not([list])": {
774
- "implicitRole": "textbox",
775
- "permittedRoles": false,
776
- "properties": {
777
- "global": true,
778
- "role": "textbox"
779
- }
780
- },
781
- "[type='week' i]": {
782
- "implicitRole": false,
783
- "permittedRoles": false,
784
- "properties": {
785
- "global": true,
786
- "role": "textbox"
787
- }
788
- }
789
- }
790
- }
791
- }
792
- }