Skip to content

Commit f66f857

Browse files
eljefe223mainframev
authored andcommitted
[fix]: occasionally focusing off of dropdown would open and focus listbox (microsoft#34404)
1 parent 7b552ee commit f66f857

File tree

4 files changed

+20
-1
lines changed

4 files changed

+20
-1
lines changed
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
{
2+
"type": "prerelease",
3+
"comment": "occasionally focusing off of combobox would open and focus listbox",
4+
"packageName": "@fluentui/web-components",
5+
"email": "[email protected]",
6+
"dependentChangeType": "patch"
7+
}

packages/web-components/src/dropdown/dropdown.base.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -221,6 +221,7 @@ export class BaseDropdown extends FASTElement {
221221
if (next) {
222222
next.dropdown = this;
223223
next.popover = 'manual';
224+
next.tabIndex = -1;
224225
this.listboxSlot.assign(next);
225226
const notifier = Observable.getNotifier(this);
226227
notifier.subscribe(next);

packages/web-components/src/dropdown/dropdown.spec.ts

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -500,4 +500,15 @@ test.describe('Dropdown', () => {
500500

501501
await expect(element.locator('fluent-option[value=kiwi]')).toHaveJSProperty('selected', true);
502502
});
503+
504+
test('should not focus listbox when tabbing from dropdown', async ({ fastPage, page }) => {
505+
const { element } = fastPage;
506+
507+
const listbox = element.locator('fluent-listbox');
508+
509+
await element.focus();
510+
await page.keyboard.press('Tab');
511+
512+
await expect(listbox).toBeHidden();
513+
});
503514
});

packages/web-components/src/dropdown/dropdown.stories.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ const dropdownTemplate = html<StoryArgs<FluentDropdown>>`
3636

3737
const storyTemplate = html<StoryArgs<FluentDropdown>>`
3838
<fluent-field ?disabled="${story => story.disabled}">
39-
<label slot="label"> <fluent-label required>${story => story.placeholder}</fluent-label></label>
39+
<label slot="label">${story => story.placeholder}</label>
4040
<fluent-dropdown
4141
slot="input"
4242
appearance="${story => story.appearance}"

0 commit comments

Comments
 (0)