@@ -30,11 +30,6 @@ ruleTester.run('no-noninteractive-element-handlers', rule, {
30
30
valid : [
31
31
{ code : '<TestComponent onClick={doFoo} />' } ,
32
32
{ code : '<Button onClick={doFoo} />' } ,
33
- { code : '<div />;' } ,
34
- { code : '<div className="foo" />;' } ,
35
- { code : '<div className="foo" {...props} />;' } ,
36
- { code : '<div onClick={() => void 0} aria-hidden />;' } ,
37
- { code : '<div onClick={() => void 0} aria-hidden={true} />;' } ,
38
33
/* All flavors of input */
39
34
{ code : '<input onClick={() => void 0} />' } ,
40
35
{ code : '<input type="button" onClick={() => void 0} />' } ,
@@ -70,6 +65,107 @@ ruleTester.run('no-noninteractive-element-handlers', rule, {
70
65
{ code : '<select onClick={() => void 0} className="foo" />' } ,
71
66
{ code : '<textarea onClick={() => void 0} className="foo" />' } ,
72
67
{ code : '<tr onClick={() => {}} />;' } ,
68
+ /* HTML elements with neither an interactive or non-interactive valence (static) */
69
+ { code : '<acronym onClick={() => {}} />;' } ,
70
+ { code : '<address onClick={() => {}} />;' } ,
71
+ { code : '<applet onClick={() => {}} />;' } ,
72
+ { code : '<aside onClick={() => {}} />;' } ,
73
+ { code : '<audio onClick={() => {}} />;' } ,
74
+ { code : '<b onClick={() => {}} />;' } ,
75
+ { code : '<base onClick={() => {}} />;' } ,
76
+ { code : '<bdi onClick={() => {}} />;' } ,
77
+ { code : '<bdo onClick={() => {}} />;' } ,
78
+ { code : '<big onClick={() => {}} />;' } ,
79
+ { code : '<blink onClick={() => {}} />;' } ,
80
+ { code : '<blockquote onClick={() => {}} />;' } ,
81
+ { code : '<body onClick={() => {}} />;' } ,
82
+ { code : '<br onClick={() => {}} />;' } ,
83
+ { code : '<canvas onClick={() => {}} />;' } ,
84
+ { code : '<caption onClick={() => {}} />;' } ,
85
+ { code : '<center onClick={() => {}} />;' } ,
86
+ { code : '<cite onClick={() => {}} />;' } ,
87
+ { code : '<code onClick={() => {}} />;' } ,
88
+ { code : '<col onClick={() => {}} />;' } ,
89
+ { code : '<colgroup onClick={() => {}} />;' } ,
90
+ { code : '<content onClick={() => {}} />;' } ,
91
+ { code : '<data onClick={() => {}} />;' } ,
92
+ { code : '<datalist onClick={() => {}} />;' } ,
93
+ { code : '<del onClick={() => {}} />;' } ,
94
+ { code : '<details onClick={() => {}} />;' } ,
95
+ { code : '<dir onClick={() => {}} />;' } ,
96
+ { code : '<div />;' } ,
97
+ { code : '<div className="foo" />;' } ,
98
+ { code : '<div className="foo" {...props} />;' } ,
99
+ { code : '<div onClick={() => void 0} aria-hidden />;' } ,
100
+ { code : '<div onClick={() => void 0} aria-hidden={true} />;' } ,
101
+ { code : '<div onClick={() => void 0} />;' } ,
102
+ { code : '<div onClick={() => void 0} role={undefined} />;' } ,
103
+ { code : '<div onClick={() => void 0} {...props} />;' } ,
104
+ { code : '<div onKeyUp={() => void 0} aria-hidden={false} />;' } ,
105
+ { code : '<dl onClick={() => {}} />;' } ,
106
+ { code : '<em onClick={() => {}} />;' } ,
107
+ { code : '<embed onClick={() => {}} />;' } ,
108
+ { code : '<figcaption onClick={() => {}} />;' } ,
109
+ { code : '<font onClick={() => {}} />;' } ,
110
+ { code : '<footer onClick={() => {}} />;' } ,
111
+ { code : '<frameset onClick={() => {}} />;' } ,
112
+ { code : '<head onClick={() => {}} />;' } ,
113
+ { code : '<header onClick={() => {}} />;' } ,
114
+ { code : '<hgroup onClick={() => {}} />;' } ,
115
+ { code : '<html onClick={() => {}} />;' } ,
116
+ { code : '<i onClick={() => {}} />;' } ,
117
+ { code : '<iframe onClick={() => {}} />;' } ,
118
+ { code : '<ins onClick={() => {}} />;' } ,
119
+ { code : '<kbd onClick={() => {}} />;' } ,
120
+ { code : '<keygen onClick={() => {}} />;' } ,
121
+ { code : '<label onClick={() => {}} />;' } ,
122
+ { code : '<legend onClick={() => {}} />;' } ,
123
+ { code : '<link onClick={() => {}} />;' } ,
124
+ { code : '<map onClick={() => {}} />;' } ,
125
+ { code : '<mark onClick={() => {}} />;' } ,
126
+ { code : '<marquee onClick={() => {}} />;' } ,
127
+ { code : '<menu onClick={() => {}} />;' } ,
128
+ { code : '<meta onClick={() => {}} />;' } ,
129
+ { code : '<meter onClick={() => {}} />;' } ,
130
+ { code : '<noembed onClick={() => {}} />;' } ,
131
+ { code : '<noscript onClick={() => {}} />;' } ,
132
+ { code : '<object onClick={() => {}} />;' } ,
133
+ { code : '<optgroup onClick={() => {}} />;' } ,
134
+ { code : '<output onClick={() => {}} />;' } ,
135
+ { code : '<p onClick={() => {}} />;' } ,
136
+ { code : '<param onClick={() => {}} />;' } ,
137
+ { code : '<picture onClick={() => {}} />;' } ,
138
+ { code : '<pre onClick={() => {}} />;' } ,
139
+ { code : '<progress onClick={() => {}} />;' } ,
140
+ { code : '<q onClick={() => {}} />;' } ,
141
+ { code : '<rp onClick={() => {}} />;' } ,
142
+ { code : '<rt onClick={() => {}} />;' } ,
143
+ { code : '<rtc onClick={() => {}} />;' } ,
144
+ { code : '<ruby onClick={() => {}} />;' } ,
145
+ { code : '<s onClick={() => {}} />;' } ,
146
+ { code : '<samp onClick={() => {}} />;' } ,
147
+ { code : '<script onClick={() => {}} />;' } ,
148
+ { code : '<section onClick={() => {}} />;' } ,
149
+ { code : '<small onClick={() => {}} />;' } ,
150
+ { code : '<source onClick={() => {}} />;' } ,
151
+ { code : '<spacer onClick={() => {}} />;' } ,
152
+ { code : '<span onClick={() => {}} />;' } ,
153
+ { code : '<strike onClick={() => {}} />;' } ,
154
+ { code : '<strong onClick={() => {}} />;' } ,
155
+ { code : '<style onClick={() => {}} />;' } ,
156
+ { code : '<sub onClick={() => {}} />;' } ,
157
+ { code : '<summary onClick={() => {}} />;' } ,
158
+ { code : '<sup onClick={() => {}} />;' } ,
159
+ { code : '<th onClick={() => {}} />;' } ,
160
+ { code : '<time onClick={() => {}} />;' } ,
161
+ { code : '<title onClick={() => {}} />;' } ,
162
+ { code : '<track onClick={() => {}} />;' } ,
163
+ { code : '<tt onClick={() => {}} />;' } ,
164
+ { code : '<u onClick={() => {}} />;' } ,
165
+ { code : '<var onClick={() => {}} />;' } ,
166
+ { code : '<video onClick={() => {}} />;' } ,
167
+ { code : '<wbr onClick={() => {}} />;' } ,
168
+ { code : '<xmp onClick={() => {}} />;' } ,
73
169
/* HTML elements attributed with an interactive role */
74
170
{ code : '<div role="button" onClick={() => {}} />;' } ,
75
171
{ code : '<div role="checkbox" onClick={() => {}} />;' } ,
@@ -117,105 +213,6 @@ ruleTester.run('no-noninteractive-element-handlers', rule, {
117
213
{ code : '<div role="window" onClick={() => {}} />;' } ,
118
214
] . map ( parserOptionsMapper ) ,
119
215
invalid : [
120
- { code : '<div onClick={() => void 0} />;' , errors : [ expectedError ] } ,
121
- { code : '<div onClick={() => void 0} role={undefined} />;' , errors : [ expectedError ] } ,
122
- { code : '<div onClick={() => void 0} {...props} />;' , errors : [ expectedError ] } ,
123
- { code : '<div onKeyUp={() => void 0} aria-hidden={false} />;' , errors : [ expectedError ] } ,
124
- /* Static elements; no inherent role */
125
- { code : '<acronym onClick={() => {}} />;' , errors : [ expectedError ] } ,
126
- { code : '<address onClick={() => {}} />;' , errors : [ expectedError ] } ,
127
- { code : '<applet onClick={() => {}} />;' , errors : [ expectedError ] } ,
128
- { code : '<aside onClick={() => {}} />;' , errors : [ expectedError ] } ,
129
- { code : '<audio onClick={() => {}} />;' , errors : [ expectedError ] } ,
130
- { code : '<b onClick={() => {}} />;' , errors : [ expectedError ] } ,
131
- { code : '<base onClick={() => {}} />;' , errors : [ expectedError ] } ,
132
- { code : '<bdi onClick={() => {}} />;' , errors : [ expectedError ] } ,
133
- { code : '<bdo onClick={() => {}} />;' , errors : [ expectedError ] } ,
134
- { code : '<big onClick={() => {}} />;' , errors : [ expectedError ] } ,
135
- { code : '<blink onClick={() => {}} />;' , errors : [ expectedError ] } ,
136
- { code : '<blockquote onClick={() => {}} />;' , errors : [ expectedError ] } ,
137
- { code : '<body onClick={() => {}} />;' , errors : [ expectedError ] } ,
138
- { code : '<br onClick={() => {}} />;' , errors : [ expectedError ] } ,
139
- { code : '<canvas onClick={() => {}} />;' , errors : [ expectedError ] } ,
140
- { code : '<caption onClick={() => {}} />;' , errors : [ expectedError ] } ,
141
- { code : '<center onClick={() => {}} />;' , errors : [ expectedError ] } ,
142
- { code : '<cite onClick={() => {}} />;' , errors : [ expectedError ] } ,
143
- { code : '<code onClick={() => {}} />;' , errors : [ expectedError ] } ,
144
- { code : '<col onClick={() => {}} />;' , errors : [ expectedError ] } ,
145
- { code : '<colgroup onClick={() => {}} />;' , errors : [ expectedError ] } ,
146
- { code : '<content onClick={() => {}} />;' , errors : [ expectedError ] } ,
147
- { code : '<data onClick={() => {}} />;' , errors : [ expectedError ] } ,
148
- { code : '<datalist onClick={() => {}} />;' , errors : [ expectedError ] } ,
149
- { code : '<del onClick={() => {}} />;' , errors : [ expectedError ] } ,
150
- { code : '<details onClick={() => {}} />;' , errors : [ expectedError ] } ,
151
- { code : '<dir onClick={() => {}} />;' , errors : [ expectedError ] } ,
152
- { code : '<div onClick={() => {}} />;' , errors : [ expectedError ] } ,
153
- { code : '<dl onClick={() => {}} />;' , errors : [ expectedError ] } ,
154
- { code : '<em onClick={() => {}} />;' , errors : [ expectedError ] } ,
155
- { code : '<embed onClick={() => {}} />;' , errors : [ expectedError ] } ,
156
- { code : '<figcaption onClick={() => {}} />;' , errors : [ expectedError ] } ,
157
- { code : '<font onClick={() => {}} />;' , errors : [ expectedError ] } ,
158
- { code : '<footer onClick={() => {}} />;' , errors : [ expectedError ] } ,
159
- { code : '<form onClick={() => {}} />;' , errors : [ expectedError ] } ,
160
- { code : '<frameset onClick={() => {}} />;' , errors : [ expectedError ] } ,
161
- { code : '<head onClick={() => {}} />;' , errors : [ expectedError ] } ,
162
- { code : '<header onClick={() => {}} />;' , errors : [ expectedError ] } ,
163
- { code : '<hgroup onClick={() => {}} />;' , errors : [ expectedError ] } ,
164
- { code : '<html onClick={() => {}} />;' , errors : [ expectedError ] } ,
165
- { code : '<i onClick={() => {}} />;' , errors : [ expectedError ] } ,
166
- { code : '<iframe onClick={() => {}} />;' , errors : [ expectedError ] } ,
167
- { code : '<ins onClick={() => {}} />;' , errors : [ expectedError ] } ,
168
- { code : '<kbd onClick={() => {}} />;' , errors : [ expectedError ] } ,
169
- { code : '<keygen onClick={() => {}} />;' , errors : [ expectedError ] } ,
170
- { code : '<label onClick={() => {}} />;' , errors : [ expectedError ] } ,
171
- { code : '<legend onClick={() => {}} />;' , errors : [ expectedError ] } ,
172
- { code : '<link onClick={() => {}} />;' , errors : [ expectedError ] } ,
173
- { code : '<map onClick={() => {}} />;' , errors : [ expectedError ] } ,
174
- { code : '<mark onClick={() => {}} />;' , errors : [ expectedError ] } ,
175
- { code : '<marquee onClick={() => {}} />;' , errors : [ expectedError ] } ,
176
- { code : '<menu onClick={() => {}} />;' , errors : [ expectedError ] } ,
177
- { code : '<meta onClick={() => {}} />;' , errors : [ expectedError ] } ,
178
- { code : '<meter onClick={() => {}} />;' , errors : [ expectedError ] } ,
179
- { code : '<noembed onClick={() => {}} />;' , errors : [ expectedError ] } ,
180
- { code : '<noscript onClick={() => {}} />;' , errors : [ expectedError ] } ,
181
- { code : '<object onClick={() => {}} />;' , errors : [ expectedError ] } ,
182
- { code : '<optgroup onClick={() => {}} />;' , errors : [ expectedError ] } ,
183
- { code : '<output onClick={() => {}} />;' , errors : [ expectedError ] } ,
184
- { code : '<p onClick={() => {}} />;' , errors : [ expectedError ] } ,
185
- { code : '<param onClick={() => {}} />;' , errors : [ expectedError ] } ,
186
- { code : '<picture onClick={() => {}} />;' , errors : [ expectedError ] } ,
187
- { code : '<pre onClick={() => {}} />;' , errors : [ expectedError ] } ,
188
- { code : '<progress onClick={() => {}} />;' , errors : [ expectedError ] } ,
189
- { code : '<q onClick={() => {}} />;' , errors : [ expectedError ] } ,
190
- { code : '<rp onClick={() => {}} />;' , errors : [ expectedError ] } ,
191
- { code : '<rt onClick={() => {}} />;' , errors : [ expectedError ] } ,
192
- { code : '<rtc onClick={() => {}} />;' , errors : [ expectedError ] } ,
193
- { code : '<ruby onClick={() => {}} />;' , errors : [ expectedError ] } ,
194
- { code : '<s onClick={() => {}} />;' , errors : [ expectedError ] } ,
195
- { code : '<samp onClick={() => {}} />;' , errors : [ expectedError ] } ,
196
- { code : '<script onClick={() => {}} />;' , errors : [ expectedError ] } ,
197
- { code : '<section onClick={() => {}} />;' , errors : [ expectedError ] } ,
198
- { code : '<small onClick={() => {}} />;' , errors : [ expectedError ] } ,
199
- { code : '<source onClick={() => {}} />;' , errors : [ expectedError ] } ,
200
- { code : '<spacer onClick={() => {}} />;' , errors : [ expectedError ] } ,
201
- { code : '<span onClick={() => {}} />;' , errors : [ expectedError ] } ,
202
- { code : '<strike onClick={() => {}} />;' , errors : [ expectedError ] } ,
203
- { code : '<strong onClick={() => {}} />;' , errors : [ expectedError ] } ,
204
- { code : '<style onClick={() => {}} />;' , errors : [ expectedError ] } ,
205
- { code : '<sub onClick={() => {}} />;' , errors : [ expectedError ] } ,
206
- { code : '<summary onClick={() => {}} />;' , errors : [ expectedError ] } ,
207
- { code : '<sup onClick={() => {}} />;' , errors : [ expectedError ] } ,
208
- { code : '<td onClick={() => {}} />;' , errors : [ expectedError ] } ,
209
- { code : '<th onClick={() => {}} />;' , errors : [ expectedError ] } ,
210
- { code : '<time onClick={() => {}} />;' , errors : [ expectedError ] } ,
211
- { code : '<title onClick={() => {}} />;' , errors : [ expectedError ] } ,
212
- { code : '<track onClick={() => {}} />;' , errors : [ expectedError ] } ,
213
- { code : '<tt onClick={() => {}} />;' , errors : [ expectedError ] } ,
214
- { code : '<u onClick={() => {}} />;' , errors : [ expectedError ] } ,
215
- { code : '<var onClick={() => {}} />;' , errors : [ expectedError ] } ,
216
- { code : '<video onClick={() => {}} />;' , errors : [ expectedError ] } ,
217
- { code : '<wbr onClick={() => {}} />;' , errors : [ expectedError ] } ,
218
- { code : '<xmp onClick={() => {}} />;' , errors : [ expectedError ] } ,
219
216
/* HTML elements with an inherent, non-interactive role */
220
217
{ code : '<main onClick={() => void 0} />;' , errors : [ expectedError ] } ,
221
218
{ code : '<a onClick={() => void 0} />' , errors : [ expectedError ] } ,
@@ -228,6 +225,7 @@ ruleTester.run('no-noninteractive-element-handlers', rule, {
228
225
{ code : '<dt onClick={() => {}} />;' , errors : [ expectedError ] } ,
229
226
{ code : '<fieldset onClick={() => {}} />;' , errors : [ expectedError ] } ,
230
227
{ code : '<figure onClick={() => {}} />;' , errors : [ expectedError ] } ,
228
+ { code : '<form onClick={() => {}} />;' , errors : [ expectedError ] } ,
231
229
{ code : '<frame onClick={() => {}} />;' , errors : [ expectedError ] } ,
232
230
{ code : '<h1 onClick={() => {}} />;' , errors : [ expectedError ] } ,
233
231
{ code : '<h2 onClick={() => {}} />;' , errors : [ expectedError ] } ,
@@ -242,6 +240,7 @@ ruleTester.run('no-noninteractive-element-handlers', rule, {
242
240
{ code : '<ol onClick={() => {}} />;' , errors : [ expectedError ] } ,
243
241
{ code : '<table onClick={() => {}} />;' , errors : [ expectedError ] } ,
244
242
{ code : '<tbody onClick={() => {}} />;' , errors : [ expectedError ] } ,
243
+ { code : '<td onClick={() => {}} />;' , errors : [ expectedError ] } ,
245
244
{ code : '<tfoot onClick={() => {}} />;' , errors : [ expectedError ] } ,
246
245
{ code : '<thead onClick={() => {}} />;' , errors : [ expectedError ] } ,
247
246
{ code : '<ul onClick={() => {}} />;' , errors : [ expectedError ] } ,
0 commit comments