Skip to content

Commit 716006c

Browse files
authored
Merge branch 'main' into dependabot/npm_and_yarn/qs-6.14.1
2 parents dcd3ab3 + 9779099 commit 716006c

194 files changed

Lines changed: 19734 additions & 56 deletions

File tree

Some content is hidden

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

labs/behaviors/custom-state-set_test.ts

Lines changed: 51 additions & 56 deletions
Original file line numberDiff line numberDiff line change
@@ -12,73 +12,68 @@ import {customElement} from 'lit/decorators.js';
1212
import {hasState, mixinCustomStateSet, toggleState} from './custom-state-set.js';
1313
import {mixinElementInternals} from './element-internals.js';
1414

15+
// A more reliable test would use `forceElementInternalsPolyfill()` from
16+
// `element-internals-polyfill`, but our GitHub test build doesn't
17+
// support it since the polyfill changes global types.
18+
19+
/* A simplified version of element-internals-polyfill CustomStateSet. */
20+
class PolyfilledCustomStateSet extends Set<string> {
21+
constructor(private readonly ref: HTMLElement) {
22+
super();
23+
}
24+
25+
override add(state: string) {
26+
if (!/^--/.test(state) || typeof state !== 'string') {
27+
throw new DOMException(
28+
`Failed to execute 'add' on 'CustomStateSet': The specified value ${state} must start with '--'.`,
29+
);
30+
}
31+
const result = super.add(state);
32+
this.ref.toggleAttribute(`state${state}`, true);
33+
return result;
34+
}
35+
36+
override clear() {
37+
for (const [entry] of this.entries()) {
38+
this.delete(entry);
39+
}
40+
super.clear();
41+
}
42+
43+
override delete(state: string) {
44+
const result = super.delete(state);
45+
this.ref.toggleAttribute(`state${state}`, false);
46+
return result;
47+
}
48+
}
49+
1550
@customElement('test-custom-state-set')
1651
class TestCustomStateSet extends mixinCustomStateSet(
1752
mixinElementInternals(LitElement),
18-
) {}
53+
) {
54+
static testWithPolyfill = false;
55+
56+
override attachInternals() {
57+
const internals = super.attachInternals();
58+
if (TestCustomStateSet.testWithPolyfill) {
59+
Object.defineProperty(internals, 'states', {
60+
enumerable: true,
61+
configurable: true,
62+
value: new PolyfilledCustomStateSet(this),
63+
});
64+
}
65+
return internals;
66+
}
67+
}
1968

2069
for (const testWithPolyfill of [false, true]) {
2170
const describeSuffix = testWithPolyfill
2271
? ' (with element-internals-polyfill)'
2372
: '';
2473

2574
describe(`mixinCustomStateSet()${describeSuffix}`, () => {
26-
const nativeAttachInternals = HTMLElement.prototype.attachInternals;
27-
2875
beforeAll(() => {
29-
if (testWithPolyfill) {
30-
// A more reliable test would use `forceElementInternalsPolyfill()` from
31-
// `element-internals-polyfill`, but our GitHub test build doesn't
32-
// support it since the polyfill changes global types.
33-
34-
/* A simplified version of element-internal-polyfill CustomStateSet. */
35-
class PolyfilledCustomStateSet extends Set<string> {
36-
constructor(private readonly ref: HTMLElement) {
37-
super();
38-
}
39-
40-
override add(state: string) {
41-
if (!/^--/.test(state) || typeof state !== 'string') {
42-
throw new DOMException(
43-
`Failed to execute 'add' on 'CustomStateSet': The specified value ${state} must start with '--'.`,
44-
);
45-
}
46-
const result = super.add(state);
47-
this.ref.toggleAttribute(`state${state}`, true);
48-
return result;
49-
}
50-
51-
override clear() {
52-
for (const [entry] of this.entries()) {
53-
this.delete(entry);
54-
}
55-
super.clear();
56-
}
57-
58-
override delete(state: string) {
59-
const result = super.delete(state);
60-
this.ref.toggleAttribute(`state${state}`, false);
61-
return result;
62-
}
63-
}
64-
65-
HTMLElement.prototype.attachInternals = function (this: HTMLElement) {
66-
const internals = nativeAttachInternals.call(this);
67-
Object.defineProperty(internals, 'states', {
68-
enumerable: true,
69-
configurable: true,
70-
value: new PolyfilledCustomStateSet(this),
71-
});
72-
73-
return internals;
74-
};
75-
}
76-
});
77-
78-
afterAll(() => {
79-
if (testWithPolyfill) {
80-
HTMLElement.prototype.attachInternals = nativeAttachInternals;
81-
}
76+
TestCustomStateSet.testWithPolyfill = testWithPolyfill;
8277
});
8378

8479
describe('[hasState]()', () => {
Lines changed: 239 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,239 @@
1+
//
2+
// Copyright 2026 Google LLC
3+
// SPDX-License-Identifier: Apache-2.0
4+
//
5+
// AUTOGENERATED. DO NOT MODIFY.
6+
// To modify this file, update the source template,
7+
// or run the compiler: go/carbon-service-code-gen-mwtc.
8+
// Source template: sassvars/index.scss.tmpl
9+
10+
// Design system: Google Material 3
11+
// Version: 30.0.14
12+
// Configured context tags:
13+
// audience: 3p
14+
// font: static
15+
// platform: web
16+
// Output format: sass_vars
17+
18+
@forward 'md-comp-app-bar' as md-comp-app-bar--*;
19+
@forward 'md-comp-app-bar-large' as md-comp-app-bar-large--*;
20+
@forward 'md-comp-app-bar-large-flexible' as md-comp-app-bar-large-flexible--*;
21+
@forward 'md-comp-app-bar-medium' as md-comp-app-bar-medium--*;
22+
@forward 'md-comp-app-bar-medium-flexible' as md-comp-app-bar-medium-flexible--*;
23+
@forward 'md-comp-app-bar-small' as md-comp-app-bar-small--*;
24+
@forward 'md-comp-assist-chip' as md-comp-assist-chip--*;
25+
@forward 'md-comp-badge' as md-comp-badge--*;
26+
@forward 'md-comp-banner' as md-comp-banner--*;
27+
@forward 'md-comp-banners' as md-comp-banners--*;
28+
@forward 'md-comp-banners-basic' as md-comp-banners-basic--*;
29+
@forward 'md-comp-banners-rich' as md-comp-banners-rich--*;
30+
@forward 'md-comp-bottom-app-bar' as md-comp-bottom-app-bar--*;
31+
@forward 'md-comp-button' as md-comp-button--*;
32+
@forward 'md-comp-button-elevated' as md-comp-button-elevated--*;
33+
@forward 'md-comp-button-filled' as md-comp-button-filled--*;
34+
@forward 'md-comp-button-group-connected-large' as
35+
md-comp-button-group-connected-large--*;
36+
@forward 'md-comp-button-group-connected-medium' as
37+
md-comp-button-group-connected-medium--*;
38+
@forward 'md-comp-button-group-connected-small' as
39+
md-comp-button-group-connected-small--*;
40+
@forward 'md-comp-button-group-connected-xlarge' as
41+
md-comp-button-group-connected-xlarge--*;
42+
@forward 'md-comp-button-group-connected-xsmall' as
43+
md-comp-button-group-connected-xsmall--*;
44+
@forward 'md-comp-button-group-standard-large' as
45+
md-comp-button-group-standard-large--*;
46+
@forward 'md-comp-button-group-standard-medium' as
47+
md-comp-button-group-standard-medium--*;
48+
@forward 'md-comp-button-group-standard-small' as
49+
md-comp-button-group-standard-small--*;
50+
@forward 'md-comp-button-group-standard-xlarge' as
51+
md-comp-button-group-standard-xlarge--*;
52+
@forward 'md-comp-button-group-standard-xsmall' as
53+
md-comp-button-group-standard-xsmall--*;
54+
@forward 'md-comp-button-large' as md-comp-button-large--*;
55+
@forward 'md-comp-button-medium' as md-comp-button-medium--*;
56+
@forward 'md-comp-button-outlined' as md-comp-button-outlined--*;
57+
@forward 'md-comp-button-small' as md-comp-button-small--*;
58+
@forward 'md-comp-button-text' as md-comp-button-text--*;
59+
@forward 'md-comp-button-tonal' as md-comp-button-tonal--*;
60+
@forward 'md-comp-button-xlarge' as md-comp-button-xlarge--*;
61+
@forward 'md-comp-button-xsmall' as md-comp-button-xsmall--*;
62+
@forward 'md-comp-carousel-item' as md-comp-carousel-item--*;
63+
@forward 'md-comp-checkbox' as md-comp-checkbox--*;
64+
@forward 'md-comp-circular-progress-indicator' as
65+
md-comp-circular-progress-indicator--*;
66+
@forward 'md-comp-data-table' as md-comp-data-table--*;
67+
@forward 'md-comp-date-input-modal' as md-comp-date-input-modal--*;
68+
@forward 'md-comp-date-picker-docked' as md-comp-date-picker-docked--*;
69+
@forward 'md-comp-date-picker-modal' as md-comp-date-picker-modal--*;
70+
@forward 'md-comp-dialog' as md-comp-dialog--*;
71+
@forward 'md-comp-divider' as md-comp-divider--*;
72+
@forward 'md-comp-drag-handle' as md-comp-drag-handle--*;
73+
@forward 'md-comp-elevated-button' as md-comp-elevated-button--*;
74+
@forward 'md-comp-elevated-card' as md-comp-elevated-card--*;
75+
@forward 'md-comp-extended-fab' as md-comp-extended-fab--*;
76+
@forward 'md-comp-extended-fab-branded' as md-comp-extended-fab-branded--*;
77+
@forward 'md-comp-extended-fab-large' as md-comp-extended-fab-large--*;
78+
@forward 'md-comp-extended-fab-medium' as md-comp-extended-fab-medium--*;
79+
@forward 'md-comp-extended-fab-primary' as md-comp-extended-fab-primary--*;
80+
@forward 'md-comp-extended-fab-primary-container' as
81+
md-comp-extended-fab-primary-container--*;
82+
@forward 'md-comp-extended-fab-secondary' as md-comp-extended-fab-secondary--*;
83+
@forward 'md-comp-extended-fab-secondary-container' as
84+
md-comp-extended-fab-secondary-container--*;
85+
@forward 'md-comp-extended-fab-small' as md-comp-extended-fab-small--*;
86+
@forward 'md-comp-extended-fab-surface' as md-comp-extended-fab-surface--*;
87+
@forward 'md-comp-extended-fab-tertiary' as md-comp-extended-fab-tertiary--*;
88+
@forward 'md-comp-extended-fab-tertiary-container' as
89+
md-comp-extended-fab-tertiary-container--*;
90+
@forward 'md-comp-fab' as md-comp-fab--*;
91+
@forward 'md-comp-fab-branded' as md-comp-fab-branded--*;
92+
@forward 'md-comp-fab-branded-large' as md-comp-fab-branded-large--*;
93+
@forward 'md-comp-fab-large' as md-comp-fab-large--*;
94+
@forward 'md-comp-fab-medium' as md-comp-fab-medium--*;
95+
@forward 'md-comp-fab-menu' as md-comp-fab-menu--*;
96+
@forward 'md-comp-fab-menu-primary-close-button' as
97+
md-comp-fab-menu-primary-close-button--*;
98+
@forward 'md-comp-fab-menu-primary-container' as
99+
md-comp-fab-menu-primary-container--*;
100+
@forward 'md-comp-fab-menu-secondary-close-button' as
101+
md-comp-fab-menu-secondary-close-button--*;
102+
@forward 'md-comp-fab-menu-secondary-container' as
103+
md-comp-fab-menu-secondary-container--*;
104+
@forward 'md-comp-fab-menu-tertiary-close-button' as
105+
md-comp-fab-menu-tertiary-close-button--*;
106+
@forward 'md-comp-fab-menu-tertiary-container' as
107+
md-comp-fab-menu-tertiary-container--*;
108+
@forward 'md-comp-fab-primary' as md-comp-fab-primary--*;
109+
@forward 'md-comp-fab-primary-container' as md-comp-fab-primary-container--*;
110+
@forward 'md-comp-fab-primary-large' as md-comp-fab-primary-large--*;
111+
@forward 'md-comp-fab-primary-small' as md-comp-fab-primary-small--*;
112+
@forward 'md-comp-fab-secondary' as md-comp-fab-secondary--*;
113+
@forward 'md-comp-fab-secondary-container' as md-comp-fab-secondary-container--*;
114+
@forward 'md-comp-fab-secondary-large' as md-comp-fab-secondary-large--*;
115+
@forward 'md-comp-fab-secondary-small' as md-comp-fab-secondary-small--*;
116+
@forward 'md-comp-fab-small' as md-comp-fab-small--*;
117+
@forward 'md-comp-fab-surface' as md-comp-fab-surface--*;
118+
@forward 'md-comp-fab-surface-large' as md-comp-fab-surface-large--*;
119+
@forward 'md-comp-fab-tertiary' as md-comp-fab-tertiary--*;
120+
@forward 'md-comp-fab-tertiary-container' as md-comp-fab-tertiary-container--*;
121+
@forward 'md-comp-fab-tertiary-large' as md-comp-fab-tertiary-large--*;
122+
@forward 'md-comp-fab-tertiary-small' as md-comp-fab-tertiary-small--*;
123+
@forward 'md-comp-filled-autocomplete' as md-comp-filled-autocomplete--*;
124+
@forward 'md-comp-filled-button' as md-comp-filled-button--*;
125+
@forward 'md-comp-filled-card' as md-comp-filled-card--*;
126+
@forward 'md-comp-filled-icon-button' as md-comp-filled-icon-button--*;
127+
@forward 'md-comp-filled-menu-button' as md-comp-filled-menu-button--*;
128+
@forward 'md-comp-filled-select' as md-comp-filled-select--*;
129+
@forward 'md-comp-filled-text-field' as md-comp-filled-text-field--*;
130+
@forward 'md-comp-filled-tonal-button' as md-comp-filled-tonal-button--*;
131+
@forward 'md-comp-filled-tonal-icon-button' as
132+
md-comp-filled-tonal-icon-button--*;
133+
@forward 'md-comp-filter-chip' as md-comp-filter-chip--*;
134+
@forward 'md-comp-full-screen-dialog' as md-comp-full-screen-dialog--*;
135+
@forward 'md-comp-icon-button' as md-comp-icon-button--*;
136+
@forward 'md-comp-icon-button-filled' as md-comp-icon-button-filled--*;
137+
@forward 'md-comp-icon-button-large' as md-comp-icon-button-large--*;
138+
@forward 'md-comp-icon-button-medium' as md-comp-icon-button-medium--*;
139+
@forward 'md-comp-icon-button-outlined' as md-comp-icon-button-outlined--*;
140+
@forward 'md-comp-icon-button-small' as md-comp-icon-button-small--*;
141+
@forward 'md-comp-icon-button-standard' as md-comp-icon-button-standard--*;
142+
@forward 'md-comp-icon-button-tonal' as md-comp-icon-button-tonal--*;
143+
@forward 'md-comp-icon-button-xlarge' as md-comp-icon-button-xlarge--*;
144+
@forward 'md-comp-icon-button-xsmall' as md-comp-icon-button-xsmall--*;
145+
@forward 'md-comp-input-chip' as md-comp-input-chip--*;
146+
@forward 'md-comp-linear-progress-indicator' as
147+
md-comp-linear-progress-indicator--*;
148+
@forward 'md-comp-list' as md-comp-list--*;
149+
@forward 'md-comp-list-expand' as md-comp-list-expand--*;
150+
@forward 'md-comp-list-reorder' as md-comp-list-reorder--*;
151+
@forward 'md-comp-list-reveal' as md-comp-list-reveal--*;
152+
@forward 'md-comp-loading-indicator' as md-comp-loading-indicator--*;
153+
@forward 'md-comp-menu' as md-comp-menu--*;
154+
@forward 'md-comp-menus' as md-comp-menus--*;
155+
@forward 'md-comp-menus-standard' as md-comp-menus-standard--*;
156+
@forward 'md-comp-menus-vibrant' as md-comp-menus-vibrant--*;
157+
@forward 'md-comp-nav-bar' as md-comp-nav-bar--*;
158+
@forward 'md-comp-nav-bar-item-horizontal' as md-comp-nav-bar-item-horizontal--*;
159+
@forward 'md-comp-nav-bar-item-vertical' as md-comp-nav-bar-item-vertical--*;
160+
@forward 'md-comp-nav-rail' as md-comp-nav-rail--*;
161+
@forward 'md-comp-nav-rail-collapsed' as md-comp-nav-rail-collapsed--*;
162+
@forward 'md-comp-nav-rail-expanded' as md-comp-nav-rail-expanded--*;
163+
@forward 'md-comp-nav-rail-item' as md-comp-nav-rail-item--*;
164+
@forward 'md-comp-nav-rail-item-horizontal' as
165+
md-comp-nav-rail-item-horizontal--*;
166+
@forward 'md-comp-nav-rail-item-vertical' as md-comp-nav-rail-item-vertical--*;
167+
@forward 'md-comp-navigation-bar' as md-comp-navigation-bar--*;
168+
@forward 'md-comp-navigation-drawer' as md-comp-navigation-drawer--*;
169+
@forward 'md-comp-navigation-rail' as md-comp-navigation-rail--*;
170+
@forward 'md-comp-outlined-autocomplete' as md-comp-outlined-autocomplete--*;
171+
@forward 'md-comp-outlined-button' as md-comp-outlined-button--*;
172+
@forward 'md-comp-outlined-card' as md-comp-outlined-card--*;
173+
@forward 'md-comp-outlined-menu-button' as md-comp-outlined-menu-button--*;
174+
@forward 'md-comp-outlined-segmented-button' as
175+
md-comp-outlined-segmented-button--*;
176+
@forward 'md-comp-outlined-select' as md-comp-outlined-select--*;
177+
@forward 'md-comp-outlined-text-field' as md-comp-outlined-text-field--*;
178+
@forward 'md-comp-plain-tooltip' as md-comp-plain-tooltip--*;
179+
@forward 'md-comp-primary-navigation-tab' as md-comp-primary-navigation-tab--*;
180+
@forward 'md-comp-progress-indicator' as md-comp-progress-indicator--*;
181+
@forward 'md-comp-progress-indicator-circular' as
182+
md-comp-progress-indicator-circular--*;
183+
@forward 'md-comp-progress-indicator-linear' as
184+
md-comp-progress-indicator-linear--*;
185+
@forward 'md-comp-radio-button' as md-comp-radio-button--*;
186+
@forward 'md-comp-rich-tooltip' as md-comp-rich-tooltip--*;
187+
@forward 'md-comp-scrim' as md-comp-scrim--*;
188+
@forward 'md-comp-search-bar' as md-comp-search-bar--*;
189+
@forward 'md-comp-search-view' as md-comp-search-view--*;
190+
@forward 'md-comp-secondary-navigation-tab' as
191+
md-comp-secondary-navigation-tab--*;
192+
@forward 'md-comp-sheet-bottom' as md-comp-sheet-bottom--*;
193+
@forward 'md-comp-sheet-floating' as md-comp-sheet-floating--*;
194+
@forward 'md-comp-sheet-side' as md-comp-sheet-side--*;
195+
@forward 'md-comp-slider' as md-comp-slider--*;
196+
@forward 'md-comp-slider-large' as md-comp-slider-large--*;
197+
@forward 'md-comp-slider-medium' as md-comp-slider-medium--*;
198+
@forward 'md-comp-slider-small' as md-comp-slider-small--*;
199+
@forward 'md-comp-slider-xlarge' as md-comp-slider-xlarge--*;
200+
@forward 'md-comp-slider-xsmall' as md-comp-slider-xsmall--*;
201+
@forward 'md-comp-snackbar' as md-comp-snackbar--*;
202+
@forward 'md-comp-split-button-large' as md-comp-split-button-large--*;
203+
@forward 'md-comp-split-button-medium' as md-comp-split-button-medium--*;
204+
@forward 'md-comp-split-button-small' as md-comp-split-button-small--*;
205+
@forward 'md-comp-split-button-xlarge' as md-comp-split-button-xlarge--*;
206+
@forward 'md-comp-split-button-xsmall' as md-comp-split-button-xsmall--*;
207+
@forward 'md-comp-standard-menu-button' as md-comp-standard-menu-button--*;
208+
@forward 'md-comp-suggestion-chip' as md-comp-suggestion-chip--*;
209+
@forward 'md-comp-switch' as md-comp-switch--*;
210+
@forward 'md-comp-text-button' as md-comp-text-button--*;
211+
@forward 'md-comp-time-input' as md-comp-time-input--*;
212+
@forward 'md-comp-time-picker' as md-comp-time-picker--*;
213+
@forward 'md-comp-toolbar-docked' as md-comp-toolbar-docked--*;
214+
@forward 'md-comp-toolbar-floating' as md-comp-toolbar-floating--*;
215+
@forward 'md-comp-toolbar-floating-fab' as md-comp-toolbar-floating-fab--*;
216+
@forward 'md-comp-toolbar-standard' as md-comp-toolbar-standard--*;
217+
@forward 'md-comp-toolbar-vibrant' as md-comp-toolbar-vibrant--*;
218+
@forward 'md-comp-top-app-bar-large' as md-comp-top-app-bar-large--*;
219+
@forward 'md-comp-top-app-bar-medium' as md-comp-top-app-bar-medium--*;
220+
@forward 'md-comp-top-app-bar-small' as md-comp-top-app-bar-small--*;
221+
@forward 'md-comp-top-app-bar-small-centered' as
222+
md-comp-top-app-bar-small-centered--*;
223+
@forward 'md-ref-palette' as md-ref-palette--*;
224+
@forward 'md-ref-typeface' as md-ref-typeface--*;
225+
@forward 'md-sys-color' as md-sys-color--*;
226+
@forward 'md-sys-color__dark' as md-sys-color--dark--*;
227+
@forward 'md-sys-color__dark__high-contrast' as
228+
md-sys-color--dark--high-contrast--*;
229+
@forward 'md-sys-color__dark__medium-contrast' as
230+
md-sys-color--dark--medium-contrast--*;
231+
@forward 'md-sys-color__high-contrast' as md-sys-color--high-contrast--*;
232+
@forward 'md-sys-color__medium-contrast' as md-sys-color--medium-contrast--*;
233+
@forward 'md-sys-elevation' as md-sys-elevation--*;
234+
@forward 'md-sys-motion' as md-sys-motion--*;
235+
@forward 'md-sys-shape' as md-sys-shape--*;
236+
@forward 'md-sys-state' as md-sys-state--*;
237+
@forward 'md-sys-state-focus-indicator' as md-sys-state-focus-indicator--*;
238+
@forward 'md-sys-typescale' as md-sys-typescale--*;
239+
@forward 'md-sys-typescale-emphasized' as md-sys-typescale-emphasized--*;
Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
//
2+
// Copyright 2026 Google LLC
3+
// SPDX-License-Identifier: Apache-2.0
4+
//
5+
// AUTOGENERATED. DO NOT MODIFY.
6+
// To modify this file, update the source template,
7+
// or run the compiler: go/carbon-service-code-gen-mwtc.
8+
// Source template: sassvars/contextualtokenset.scss.tmpl
9+
10+
// Design system: Google Material 3
11+
// Version: 30.0.14
12+
// Configured context tags:
13+
// audience: 3p
14+
// font: static
15+
// platform: web
16+
// Output format: sass_vars
17+
18+
@use 'md-sys-typescale';
19+
20+
/// md.comp.app-bar.large-flexible.container.height
21+
$container-height: 120px;
22+
/// md.comp.app-bar.large-flexible.with-subtitle.container.height
23+
$with-subtitle-container-height: 152px;
24+
/// md.comp.app-bar.large-flexible.subtitle.font
25+
@mixin subtitle-font {
26+
@include md-sys-typescale.title-medium;
27+
}
28+
/// md.comp.app-bar.large-flexible.title.font
29+
@mixin title-font {
30+
@include md-sys-typescale.display-small;
31+
}

0 commit comments

Comments
 (0)