@@ -67,6 +67,19 @@ tester.run('no-unused-properties', rule, {
67
67
</script>
68
68
`
69
69
} ,
70
+ {
71
+ filename : 'test.vue' ,
72
+ code : `
73
+ <script>
74
+ export default {
75
+ props: ['count'],
76
+ created() {
77
+ alert(this.$props.count + 1)
78
+ }
79
+ };
80
+ </script>
81
+ `
82
+ } ,
70
83
// default options
71
84
{
72
85
filename : 'test.vue' ,
@@ -139,6 +152,20 @@ tester.run('no-unused-properties', rule, {
139
152
</script>
140
153
`
141
154
} ,
155
+ // a property used as a template $props member expression
156
+ {
157
+ filename : 'test.vue' ,
158
+ code : `
159
+ <template>
160
+ <div>{{ $props.count }}</div>
161
+ </template>
162
+ <script>
163
+ export default {
164
+ props: ['count']
165
+ }
166
+ </script>
167
+ `
168
+ } ,
142
169
143
170
// properties used in a template expression
144
171
{
@@ -154,6 +181,20 @@ tester.run('no-unused-properties', rule, {
154
181
</script>
155
182
`
156
183
} ,
184
+ // properties used in a template expression as $props member expression
185
+ {
186
+ filename : 'test.vue' ,
187
+ code : `
188
+ <template>
189
+ <div>{{ $props.count1 + $props.count2 }}</div>
190
+ </template>
191
+ <script>
192
+ export default {
193
+ props: ['count1', 'count2']
194
+ };
195
+ </script>
196
+ `
197
+ } ,
157
198
158
199
// a property used in v-if
159
200
{
@@ -173,6 +214,24 @@ tester.run('no-unused-properties', rule, {
173
214
</script>
174
215
`
175
216
} ,
217
+ // a property used in v-if as $props member expression
218
+ {
219
+ filename : 'test.vue' ,
220
+ code : `
221
+ <template>
222
+ <div v-if="$props.count > 0"></div>
223
+ </template>
224
+ <script>
225
+ export default {
226
+ props: {
227
+ count: {
228
+ type: Number
229
+ }
230
+ }
231
+ };
232
+ </script>
233
+ `
234
+ } ,
176
235
177
236
// a property used in v-for
178
237
{
@@ -193,6 +252,25 @@ tester.run('no-unused-properties', rule, {
193
252
</script>
194
253
`
195
254
} ,
255
+ // a property used in v-for as $props member expression
256
+ {
257
+ filename : 'test.vue' ,
258
+ code : `
259
+ <template>
260
+ <div v-for="color in $props.colors">{{ color }}</div>
261
+ </template>
262
+ <script>
263
+ export default {
264
+ props: {
265
+ colors: {
266
+ type: Array,
267
+ default: () => []
268
+ }
269
+ }
270
+ };
271
+ </script>
272
+ `
273
+ } ,
196
274
197
275
// a property used in v-html
198
276
{
@@ -208,6 +286,20 @@ tester.run('no-unused-properties', rule, {
208
286
</script>
209
287
`
210
288
} ,
289
+ // a property used in v-html as $props member expression
290
+ {
291
+ filename : 'test.vue' ,
292
+ code : `
293
+ <template>
294
+ <div v-html="$props.message" />
295
+ </template>
296
+ <script>
297
+ export default {
298
+ props: ['message']
299
+ };
300
+ </script>
301
+ `
302
+ } ,
211
303
212
304
// a property passed in a component
213
305
{
@@ -223,6 +315,20 @@ tester.run('no-unused-properties', rule, {
223
315
</script>
224
316
`
225
317
} ,
318
+ // a property passed in a component as $props member expression
319
+ {
320
+ filename : 'test.vue' ,
321
+ code : `
322
+ <template>
323
+ <counter :count="$props.count" />
324
+ </template>
325
+ <script>
326
+ export default {
327
+ props: ['count']
328
+ };
329
+ </script>
330
+ `
331
+ } ,
226
332
227
333
// a property used in v-on
228
334
{
@@ -238,6 +344,20 @@ tester.run('no-unused-properties', rule, {
238
344
</script>
239
345
`
240
346
} ,
347
+ // a property used in v-on as $props member expression
348
+ {
349
+ filename : 'test.vue' ,
350
+ code : `
351
+ <template>
352
+ <button @click="alert($props.count)" />
353
+ </template>
354
+ <script>
355
+ export default {
356
+ props: ['count']
357
+ };
358
+ </script>
359
+ `
360
+ } ,
241
361
242
362
// data used in a script expression
243
363
{
@@ -1196,6 +1316,21 @@ tester.run('no-unused-properties', rule, {
1196
1316
</script>
1197
1317
`
1198
1318
} ,
1319
+ {
1320
+ filename : 'test.vue' ,
1321
+ code : `
1322
+ <script>
1323
+ export default {
1324
+ props: ['x'],
1325
+ computed: {
1326
+ y: {
1327
+ get: () => this.$props.x * 2
1328
+ }
1329
+ }
1330
+ };
1331
+ </script>
1332
+ `
1333
+ } ,
1199
1334
1200
1335
// deep data
1201
1336
{
@@ -1587,6 +1722,29 @@ tester.run('no-unused-properties', rule, {
1587
1722
}
1588
1723
]
1589
1724
} ,
1725
+ {
1726
+ filename : 'test.vue' ,
1727
+ code : `
1728
+ <template>
1729
+ </template>
1730
+ <script>
1731
+ export default {
1732
+ props: {
1733
+ a: String,
1734
+ },
1735
+ computed: {
1736
+ /** @public */
1737
+ b () { return this.$props.a },
1738
+ },
1739
+ }
1740
+ </script>` ,
1741
+ options : [
1742
+ {
1743
+ groups : [ 'props' , 'computed' ] ,
1744
+ ignorePublicMembers : true
1745
+ }
1746
+ ]
1747
+ } ,
1590
1748
1591
1749
// expose
1592
1750
{
0 commit comments