diff --git a/projects/lint/src/eslint/internals/slots.test.ts b/projects/lint/src/eslint/internals/slots.test.ts
index 2691dd277..b2f5b18f3 100644
--- a/projects/lint/src/eslint/internals/slots.test.ts
+++ b/projects/lint/src/eslint/internals/slots.test.ts
@@ -16,6 +16,8 @@ describe('noUnexpectedSlotValue', () => {
expect(hasSlot('nve-badge', '')).toBe(true);
expect(hasSlot('nve-tabs-group', 'overview')).toBe(true);
expect(hasSlot('nve-tabs-group', 'details')).toBe(true);
+ expect(hasSlot('nve-select', 'option-1')).toBe(true);
+ expect(hasSlot('nve-select', '')).toBe(true);
});
});
@@ -25,4 +27,8 @@ describe('getRecommendedSlotName', () => {
expect(getRecommendedSlotName('default', 'nve-card')).toBe('');
expect(getRecommendedSlotName('icon', 'nve-badge')).toBe('prefix-icon');
});
+
+ it('should recommend the unnamed slot when it is not listed first', () => {
+ expect(getRecommendedSlotName('default', 'nve-alert')).toBe('');
+ });
});
diff --git a/projects/lint/src/eslint/internals/slots.ts b/projects/lint/src/eslint/internals/slots.ts
index 58b2496ed..cf6bbda07 100644
--- a/projects/lint/src/eslint/internals/slots.ts
+++ b/projects/lint/src/eslint/internals/slots.ts
@@ -25,10 +25,11 @@ export function isKnownElement(tagName: string) {
export function getRecommendedSlotName(slot: string, tagName: string) {
const element = elements.find(el => el.name === tagName);
const slots = element?.manifest?.slots?.map(s => s.name)?.filter(s => s !== undefined) ?? [];
- const hasUnnamedSlot = slots.find(s => s === '');
+ const hasUnnamedSlot = slots.includes('');
let recommendedSlot = slots[0];
- if (tagName === 'default' && hasUnnamedSlot) {
+ // the unnamed slot is not always listed first, so slot="default" must map to it explicitly
+ if (slot === 'default' && hasUnnamedSlot) {
recommendedSlot = '';
}
diff --git a/projects/lint/src/eslint/rules/no-unexpected-slot-value.test.ts b/projects/lint/src/eslint/rules/no-unexpected-slot-value.test.ts
index befa13cba..ccb99781f 100644
--- a/projects/lint/src/eslint/rules/no-unexpected-slot-value.test.ts
+++ b/projects/lint/src/eslint/rules/no-unexpected-slot-value.test.ts
@@ -113,6 +113,23 @@ describe('noUnexpectedSlotValue', () => {
]
}
]
+ },
+ {
+ // nve-alert lists named slots before its unnamed slot
+ code: '',
+ errors: [
+ {
+ messageId: 'unexpected-slot-value',
+ data: { slotName: 'default', tagName: 'div', parentTagName: 'nve-alert' },
+ suggestions: [
+ {
+ messageId: 'suggest-remove-slot-value',
+ data: { slotName: 'default', alternative: '' },
+ output: ''
+ }
+ ]
+ }
+ ]
}
]
});