@@ -220,7 +220,7 @@ module.exports = {
220
220
if ( node . parent && node . parent . type === 'VElement' ) {
221
221
let conditionalFamily = conditionalFamilies . get ( node . parent )
222
222
223
- if ( conditionType === 'if' && ! conditionalFamily ) {
223
+ if ( conditionType === 'if' ) {
224
224
conditionalFamily = createConditionalFamily ( node )
225
225
conditionalFamilies . set ( node . parent , conditionalFamily )
226
226
}
@@ -253,44 +253,55 @@ module.exports = {
253
253
const currentScope = componentUsageStack [ componentUsageStack . length - 1 ]
254
254
const usageInfo = currentScope . get ( componentName ) || {
255
255
count : 0 ,
256
- firstNode : null
256
+ firstNode : null ,
257
+ hasIf : false
257
258
}
258
259
259
- if ( hasConditionalDirective ( node ) ) {
260
- // Store the first node if this is the first occurrence
261
- if ( usageInfo . count === 0 ) {
262
- usageInfo . firstNode = node
263
- }
264
-
265
- if ( usageInfo . count > 0 ) {
266
- const uniqueKey = `${ casing . kebabCase ( componentName ) } -${
267
- usageInfo . count + 1
268
- } `
269
- checkForKey (
270
- node ,
271
- context ,
272
- componentName ,
273
- uniqueKey ,
274
- conditionalFamilies
275
- )
260
+ const isIfDirective = utils . getDirective ( node , 'if' ) !== null
261
+ const isConditional =
262
+ isIfDirective ||
263
+ utils . getDirective ( node , 'else-if' ) !== null ||
264
+ utils . getDirective ( node , 'else' ) !== null
276
265
277
- // If this is the second occurrence, also apply a fix to the first occurrence
278
- if ( usageInfo . count === 1 ) {
279
- const uniqueKeyForFirstInstance = `${ casing . kebabCase (
280
- componentName
281
- ) } -1`
266
+ if ( isConditional ) {
267
+ if ( isIfDirective && usageInfo . hasIf ) {
268
+ // Reset if family already has an 'if' directive
269
+ usageInfo . count = 1
270
+ usageInfo . firstNode = node
271
+ } else {
272
+ usageInfo . hasIf = true
273
+ if ( usageInfo . count === 0 ) {
274
+ usageInfo . firstNode = node
275
+ } else if ( usageInfo . count > 0 && usageInfo . firstNode !== node ) {
276
+ const uniqueKey = `${ casing . kebabCase ( componentName ) } -${
277
+ usageInfo . count + 1
278
+ } `
282
279
checkForKey (
283
- usageInfo . firstNode ,
280
+ node ,
284
281
context ,
285
282
componentName ,
286
- uniqueKeyForFirstInstance ,
283
+ uniqueKey ,
287
284
conditionalFamilies
288
285
)
286
+
287
+ if ( usageInfo . count === 1 ) {
288
+ const uniqueKeyForFirstInstance = `${ casing . kebabCase (
289
+ componentName
290
+ ) } -1`
291
+ checkForKey (
292
+ usageInfo . firstNode ,
293
+ context ,
294
+ componentName ,
295
+ uniqueKeyForFirstInstance ,
296
+ conditionalFamilies
297
+ )
298
+ }
289
299
}
300
+ usageInfo . count ++
290
301
}
291
- usageInfo . count += 1
292
302
currentScope . set ( componentName , usageInfo )
293
303
}
304
+
294
305
componentUsageStack . push ( new Map ( ) )
295
306
pushedNodes . add ( node )
296
307
} ,
0 commit comments