Skip to content

Commit 3e5dd61

Browse files
authored
refactor!: update all components to be based on LitElement (#9218)
1 parent dc5352f commit 3e5dd61

File tree

559 files changed

+2713
-11879
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

559 files changed

+2713
-11879
lines changed

packages/accordion/src/vaadin-accordion-heading.js

Lines changed: 19 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -3,15 +3,14 @@
33
* Copyright (c) 2019 - 2025 Vaadin Ltd.
44
* This program is available under Apache License Version 2.0, available at https://vaadin.com/license/
55
*/
6-
import { html, PolymerElement } from '@polymer/polymer/polymer-element.js';
6+
import { html, LitElement } from 'lit';
77
import { ActiveMixin } from '@vaadin/a11y-base/src/active-mixin.js';
88
import { defineCustomElement } from '@vaadin/component-base/src/define.js';
99
import { DirMixin } from '@vaadin/component-base/src/dir-mixin.js';
10-
import { registerStyles, ThemableMixin } from '@vaadin/vaadin-themable-mixin/vaadin-themable-mixin.js';
10+
import { PolylitMixin } from '@vaadin/component-base/src/polylit-mixin.js';
11+
import { ThemableMixin } from '@vaadin/vaadin-themable-mixin/vaadin-themable-mixin.js';
1112
import { accordionHeading } from './vaadin-accordion-heading-core-styles.js';
1213

13-
registerStyles('vaadin-accordion-heading', accordionHeading, { moduleId: 'vaadin-accordion-heading-styles' });
14-
1514
/**
1615
* The accordion heading element.
1716
*
@@ -51,18 +50,17 @@ registerStyles('vaadin-accordion-heading', accordionHeading, { moduleId: 'vaadin
5150
* @mixes DirMixin
5251
* @mixes ThemableMixin
5352
*/
54-
class AccordionHeading extends ActiveMixin(DirMixin(ThemableMixin(PolymerElement))) {
53+
class AccordionHeading extends ActiveMixin(DirMixin(ThemableMixin(PolylitMixin(LitElement)))) {
5554
static get is() {
5655
return 'vaadin-accordion-heading';
5756
}
5857

59-
static get template() {
60-
return html`
61-
<button id="button" part="content" disabled$="[[disabled]]" aria-expanded$="[[__updateAriaExpanded(opened)]]">
62-
<span part="toggle" aria-hidden="true"></span>
63-
<slot></slot>
64-
</button>
65-
`;
58+
static get shadowRootOptions() {
59+
return { ...LitElement.shadowRootOptions, delegatesFocus: true };
60+
}
61+
62+
static get styles() {
63+
return accordionHeading;
6664
}
6765

6866
static get properties() {
@@ -73,21 +71,20 @@ class AccordionHeading extends ActiveMixin(DirMixin(ThemableMixin(PolymerElement
7371
opened: {
7472
type: Boolean,
7573
reflectToAttribute: true,
74+
sync: true,
7675
value: false,
7776
},
7877
};
7978
}
8079

81-
/**
82-
* @param {DocumentFragment} dom
83-
* @return {null}
84-
* @protected
85-
* @override
86-
*/
87-
_attachDom(dom) {
88-
const root = this.attachShadow({ mode: 'open', delegatesFocus: true });
89-
root.appendChild(dom);
90-
return root;
80+
/** @protected */
81+
render() {
82+
return html`
83+
<button id="button" part="content" ?disabled="${this.disabled}" aria-expanded="${this.opened ? 'true' : 'false'}">
84+
<span part="toggle" aria-hidden="true"></span>
85+
<slot></slot>
86+
</button>
87+
`;
9188
}
9289

9390
/** @protected */
@@ -100,11 +97,6 @@ class AccordionHeading extends ActiveMixin(DirMixin(ThemableMixin(PolymerElement
10097
this.setAttribute('role', 'heading');
10198
}
10299
}
103-
104-
/** @private */
105-
__updateAriaExpanded(opened) {
106-
return opened ? 'true' : 'false';
107-
}
108100
}
109101

110102
defineCustomElement(AccordionHeading);

packages/accordion/src/vaadin-accordion-panel.js

Lines changed: 10 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -4,15 +4,13 @@
44
* This program is available under Apache License Version 2.0, available at https://vaadin.com/license/
55
*/
66
import './vaadin-accordion-heading.js';
7-
import { html, PolymerElement } from '@polymer/polymer/polymer-element.js';
8-
import { ControllerMixin } from '@vaadin/component-base/src/controller-mixin.js';
7+
import { html, LitElement } from 'lit';
98
import { defineCustomElement } from '@vaadin/component-base/src/define.js';
10-
import { registerStyles, ThemableMixin } from '@vaadin/vaadin-themable-mixin/vaadin-themable-mixin.js';
9+
import { PolylitMixin } from '@vaadin/component-base/src/polylit-mixin.js';
10+
import { ThemableMixin } from '@vaadin/vaadin-themable-mixin/vaadin-themable-mixin.js';
1111
import { accordionPanel } from './vaadin-accordion-panel-core-styles.js';
1212
import { AccordionPanelMixin } from './vaadin-accordion-panel-mixin.js';
1313

14-
registerStyles('vaadin-accordion-panel', accordionPanel, { moduleId: 'vaadin-accordion-panel-styles' });
15-
1614
/**
1715
* The accordion panel element.
1816
*
@@ -40,15 +38,19 @@ registerStyles('vaadin-accordion-panel', accordionPanel, { moduleId: 'vaadin-acc
4038
* @customElement
4139
* @extends HTMLElement
4240
* @mixes AccordionPanelMixin
43-
* @mixes ControllerMixin
4441
* @mixes ThemableMixin
4542
*/
46-
class AccordionPanel extends AccordionPanelMixin(ThemableMixin(ControllerMixin(PolymerElement))) {
43+
class AccordionPanel extends AccordionPanelMixin(ThemableMixin(PolylitMixin(LitElement))) {
4744
static get is() {
4845
return 'vaadin-accordion-panel';
4946
}
5047

51-
static get template() {
48+
static get styles() {
49+
return accordionPanel;
50+
}
51+
52+
/** @protected */
53+
render() {
5254
return html`
5355
<slot name="summary"></slot>
5456

packages/accordion/src/vaadin-accordion.js

Lines changed: 18 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,10 @@
44
* This program is available under Apache License Version 2.0, available at https://vaadin.com/license/
55
*/
66
import './vaadin-accordion-panel.js';
7-
import { html, PolymerElement } from '@polymer/polymer/polymer-element.js';
7+
import { css, html, LitElement } from 'lit';
88
import { defineCustomElement } from '@vaadin/component-base/src/define.js';
99
import { ElementMixin } from '@vaadin/component-base/src/element-mixin.js';
10+
import { PolylitMixin } from '@vaadin/component-base/src/polylit-mixin.js';
1011
import { ThemableMixin } from '@vaadin/vaadin-themable-mixin/vaadin-themable-mixin.js';
1112
import { AccordionMixin } from './vaadin-accordion-mixin.js';
1213

@@ -60,24 +61,26 @@ import { AccordionMixin } from './vaadin-accordion-mixin.js';
6061
* @mixes ElementMixin
6162
* @mixes ThemableMixin
6263
*/
63-
class Accordion extends AccordionMixin(ThemableMixin(ElementMixin(PolymerElement))) {
64-
static get template() {
65-
return html`
66-
<style>
67-
:host {
68-
display: block;
69-
}
64+
class Accordion extends AccordionMixin(ThemableMixin(ElementMixin(PolylitMixin(LitElement)))) {
65+
static get is() {
66+
return 'vaadin-accordion';
67+
}
7068

71-
:host([hidden]) {
72-
display: none !important;
73-
}
74-
</style>
75-
<slot></slot>
69+
static get styles() {
70+
return css`
71+
:host {
72+
display: block;
73+
}
74+
75+
:host([hidden]) {
76+
display: none !important;
77+
}
7678
`;
7779
}
7880

79-
static get is() {
80-
return 'vaadin-accordion';
81+
/** @protected */
82+
render() {
83+
return html`<slot></slot>`;
8184
}
8285
}
8386

packages/accordion/src/vaadin-lit-accordion-heading.js

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

packages/accordion/src/vaadin-lit-accordion-panel.js

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

packages/accordion/src/vaadin-lit-accordion.js

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

packages/accordion/test/dom/accordion-panel.test.js

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import { expect } from '@vaadin/chai-plugins';
2-
import { fixtureSync } from '@vaadin/testing-helpers';
2+
import { fixtureSync, nextUpdate } from '@vaadin/testing-helpers';
33
import '../../vaadin-accordion-panel.js';
44
import { resetUniqueId } from '@vaadin/component-base/src/unique-id-utils.js';
55

@@ -23,6 +23,7 @@ describe('vaadin-accordion-panel', () => {
2323

2424
it('opened', async () => {
2525
panel.opened = true;
26+
await nextUpdate(panel);
2627
await expect(panel).dom.to.equalSnapshot();
2728
});
2829

@@ -33,6 +34,7 @@ describe('vaadin-accordion-panel', () => {
3334

3435
it('theme', async () => {
3536
panel.setAttribute('theme', 'filled');
37+
await nextUpdate(panel);
3638
await expect(panel).dom.to.equalSnapshot();
3739
});
3840
});

packages/accordion/theme/lumo/vaadin-lit-accordion-heading.js

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

packages/accordion/theme/lumo/vaadin-lit-accordion-panel.js

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

packages/accordion/theme/lumo/vaadin-lit-accordion.js

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

0 commit comments

Comments
 (0)