Skip to content

Commit 1be1f20

Browse files
authored
refactor: inline mixin logic into vaadin-tab (#9437)
1 parent 1bbd4e7 commit 1be1f20

File tree

3 files changed

+25
-61
lines changed

3 files changed

+25
-61
lines changed

packages/tabs/src/vaadin-tab-mixin.d.ts

Lines changed: 0 additions & 18 deletions
This file was deleted.

packages/tabs/src/vaadin-tab-mixin.js

Lines changed: 0 additions & 40 deletions
This file was deleted.

packages/tabs/src/vaadin-tab.js

Lines changed: 25 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,9 +8,9 @@ import { defineCustomElement } from '@vaadin/component-base/src/define.js';
88
import { ElementMixin } from '@vaadin/component-base/src/element-mixin.js';
99
import { PolylitMixin } from '@vaadin/component-base/src/polylit-mixin.js';
1010
import { TooltipController } from '@vaadin/component-base/src/tooltip-controller.js';
11+
import { ItemMixin } from '@vaadin/item/src/vaadin-item-mixin.js';
1112
import { ThemableMixin } from '@vaadin/vaadin-themable-mixin/vaadin-themable-mixin.js';
1213
import { tabStyles } from './styles/vaadin-tab-styles.js';
13-
import { TabMixin } from './vaadin-tab-mixin.js';
1414

1515
/**
1616
* `<vaadin-tab>` is a Web Component providing an accessible and customizable tab.
@@ -37,10 +37,10 @@ import { TabMixin } from './vaadin-tab-mixin.js';
3737
* @customElement
3838
* @extends HTMLElement
3939
* @mixes ElementMixin
40+
* @mixes ItemMixin
4041
* @mixes ThemableMixin
41-
* @mixes TabMixin
4242
*/
43-
class Tab extends TabMixin(ThemableMixin(ElementMixin(PolylitMixin(LitElement)))) {
43+
class Tab extends ItemMixin(ThemableMixin(ElementMixin(PolylitMixin(LitElement)))) {
4444
static get is() {
4545
return 'vaadin-tab';
4646
}
@@ -61,9 +61,31 @@ class Tab extends TabMixin(ThemableMixin(ElementMixin(PolylitMixin(LitElement)))
6161
ready() {
6262
super.ready();
6363

64+
this.setAttribute('role', 'tab');
65+
6466
this._tooltipController = new TooltipController(this);
6567
this.addController(this._tooltipController);
6668
}
69+
70+
/**
71+
* Override an event listener from `KeyboardMixin`
72+
* to handle clicking anchors inside the tabs.
73+
* @param {!KeyboardEvent} event
74+
* @protected
75+
* @override
76+
*/
77+
_onKeyUp(event) {
78+
const willClick = this.hasAttribute('active');
79+
80+
super._onKeyUp(event);
81+
82+
if (willClick) {
83+
const anchor = this.querySelector('a');
84+
if (anchor) {
85+
anchor.click();
86+
}
87+
}
88+
}
6789
}
6890

6991
defineCustomElement(Tab);

0 commit comments

Comments
 (0)