@material/web 2.4.2-nightly.fd6fe2a.0 → 2.5.1-nightly.12ec888.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/custom-elements.json +7000 -6991
- package/labs/aria/query-associated.d.ts +23 -0
- package/labs/aria/query-associated.js +36 -0
- package/labs/aria/query-associated.js.map +1 -0
- package/labs/aria/tabs/md-aria-tab.d.ts +11 -0
- package/labs/aria/tabs/md-aria-tab.js +8 -0
- package/labs/aria/tabs/md-aria-tab.js.map +1 -0
- package/labs/aria/tabs/md-aria-tablist.d.ts +11 -0
- package/labs/aria/tabs/md-aria-tablist.js +8 -0
- package/labs/aria/tabs/md-aria-tablist.js.map +1 -0
- package/labs/aria/tabs/md-aria-tabpanel.d.ts +11 -0
- package/labs/aria/tabs/md-aria-tabpanel.js +8 -0
- package/labs/aria/tabs/md-aria-tabpanel.js.map +1 -0
- package/labs/aria/tabs/tab.d.ts +33 -0
- package/labs/aria/tabs/tab.js +88 -0
- package/labs/aria/tabs/tab.js.map +1 -0
- package/labs/aria/tabs/tablist.d.ts +67 -0
- package/labs/aria/tabs/tablist.js +271 -0
- package/labs/aria/tabs/tablist.js.map +1 -0
- package/labs/aria/tabs/tabpanel.d.ts +26 -0
- package/labs/aria/tabs/tabpanel.js +53 -0
- package/labs/aria/tabs/tabpanel.js.map +1 -0
- package/labs/gb/components/appbar/_app-bar-tokens.scss +136 -0
- package/labs/gb/components/appbar/app-bar-element.d.ts +53 -0
- package/labs/gb/components/appbar/app-bar-element.js +144 -0
- package/labs/gb/components/appbar/app-bar-element.js.map +1 -0
- package/labs/gb/components/appbar/app-bar.css +4 -0
- package/labs/gb/components/appbar/app-bar.css.map +1 -0
- package/labs/gb/components/appbar/app-bar.cssresult.d.ts +3 -0
- package/labs/gb/components/appbar/app-bar.cssresult.js +14 -0
- package/labs/gb/components/appbar/app-bar.cssresult.js.map +1 -0
- package/labs/gb/components/appbar/app-bar.d.ts +71 -0
- package/labs/gb/components/appbar/app-bar.js +96 -0
- package/labs/gb/components/appbar/app-bar.js.map +1 -0
- package/labs/gb/components/appbar/app-bar.scss +167 -0
- package/labs/gb/components/appbar/md-gb-app-bar.d.ts +12 -0
- package/labs/gb/components/appbar/md-gb-app-bar.js +8 -0
- package/labs/gb/components/appbar/md-gb-app-bar.js.map +1 -0
- package/labs/gb/components/badge/_badge-tokens.scss +18 -0
- package/labs/gb/components/badge/badge-element.d.ts +15 -0
- package/labs/gb/components/badge/badge-element.js +49 -0
- package/labs/gb/components/badge/badge-element.js.map +1 -0
- package/labs/gb/components/badge/badge.css +4 -0
- package/labs/gb/components/badge/badge.css.map +1 -0
- package/labs/gb/components/badge/badge.cssresult.d.ts +3 -0
- package/labs/gb/components/badge/badge.cssresult.js +14 -0
- package/labs/gb/components/badge/badge.cssresult.js.map +1 -0
- package/labs/gb/components/badge/badge.d.ts +32 -0
- package/labs/gb/components/badge/badge.js +35 -0
- package/labs/gb/components/badge/badge.js.map +1 -0
- package/labs/gb/components/badge/badge.scss +49 -0
- package/labs/gb/components/badge/md-gb-badge.d.ts +12 -0
- package/labs/gb/components/badge/md-gb-badge.js +8 -0
- package/labs/gb/components/badge/md-gb-badge.js.map +1 -0
- package/labs/gb/components/button/_button-tokens.scss +6 -0
- package/labs/gb/components/button/{md-button.d.ts → button-element.d.ts} +23 -7
- package/labs/gb/components/button/{md-button.js → button-element.js} +39 -20
- package/labs/gb/components/button/button-element.js.map +1 -0
- package/labs/gb/components/button/button.css +1 -1
- package/labs/gb/components/button/button.css.map +1 -1
- package/labs/gb/components/button/button.cssresult.js +1 -1
- package/labs/gb/components/button/button.cssresult.js.map +1 -1
- package/labs/gb/components/button/button.scss +1 -0
- package/labs/gb/components/button/md-gb-button.d.ts +12 -0
- package/labs/gb/components/button/md-gb-button.js +8 -0
- package/labs/gb/components/button/md-gb-button.js.map +1 -0
- package/labs/gb/components/card/_card-tokens.scss +2 -0
- package/labs/gb/components/card/{md-card.d.ts → card-element.d.ts} +12 -7
- package/labs/gb/components/card/{md-card.js → card-element.js} +21 -14
- package/labs/gb/components/card/card-element.js.map +1 -0
- package/labs/gb/components/card/card.css.map +1 -1
- package/labs/gb/components/card/md-gb-card.d.ts +12 -0
- package/labs/gb/components/card/md-gb-card.js +8 -0
- package/labs/gb/components/card/md-gb-card.js.map +1 -0
- package/labs/gb/components/checkbox/_checkbox-tokens.scss +2 -0
- package/labs/gb/components/checkbox/{md-checkbox.d.ts → checkbox-element.d.ts} +15 -7
- package/labs/gb/components/checkbox/{md-checkbox.js → checkbox-element.js} +26 -16
- package/labs/gb/components/checkbox/checkbox-element.js.map +1 -0
- package/labs/gb/components/checkbox/checkbox.css.map +1 -1
- package/labs/gb/components/checkbox/md-gb-checkbox.d.ts +12 -0
- package/labs/gb/components/checkbox/md-gb-checkbox.js +8 -0
- package/labs/gb/components/checkbox/md-gb-checkbox.js.map +1 -0
- package/labs/gb/components/chip/_chip-tokens.scss +167 -0
- package/labs/gb/components/chip/chip-element.d.ts +73 -0
- package/labs/gb/components/chip/chip-element.js +233 -0
- package/labs/gb/components/chip/chip-element.js.map +1 -0
- package/labs/gb/components/chip/chip.css +4 -0
- package/labs/gb/components/chip/chip.css.map +1 -0
- package/labs/gb/components/chip/chip.cssresult.d.ts +3 -0
- package/labs/gb/components/chip/chip.cssresult.js +14 -0
- package/labs/gb/components/chip/chip.cssresult.js.map +1 -0
- package/labs/gb/components/chip/chip.d.ts +77 -0
- package/labs/gb/components/chip/chip.js +99 -0
- package/labs/gb/components/chip/chip.js.map +1 -0
- package/labs/gb/components/chip/chip.scss +99 -0
- package/labs/gb/components/chip/md-gb-chip.d.ts +13 -0
- package/labs/gb/components/chip/md-gb-chip.js +9 -0
- package/labs/gb/components/chip/md-gb-chip.js.map +1 -0
- package/labs/gb/components/divider/_divider-tokens.scss +2 -0
- package/labs/gb/components/divider/{md-divider.d.ts → divider-element.d.ts} +5 -7
- package/labs/gb/components/divider/{md-divider.js → divider-element.js} +10 -10
- package/labs/gb/components/divider/divider-element.js.map +1 -0
- package/labs/gb/components/divider/divider.css.map +1 -1
- package/labs/gb/components/divider/md-gb-divider.d.ts +12 -0
- package/labs/gb/components/divider/md-gb-divider.js +8 -0
- package/labs/gb/components/divider/md-gb-divider.js.map +1 -0
- package/labs/gb/components/fab/_fab-tokens.scss +5 -0
- package/labs/gb/components/fab/fab-element.d.ts +32 -0
- package/labs/gb/components/fab/{md-fab.js → fab-element.js} +23 -11
- package/labs/gb/components/fab/fab-element.js.map +1 -0
- package/labs/gb/components/fab/fab.css +1 -1
- package/labs/gb/components/fab/fab.css.map +1 -1
- package/labs/gb/components/fab/fab.cssresult.js +1 -1
- package/labs/gb/components/fab/fab.cssresult.js.map +1 -1
- package/labs/gb/components/fab/fab.scss +1 -0
- package/labs/gb/components/fab/md-gb-fab.d.ts +12 -0
- package/labs/gb/components/fab/md-gb-fab.js +8 -0
- package/labs/gb/components/fab/md-gb-fab.js.map +1 -0
- package/labs/gb/components/iconbutton/_icon-button-tokens.scss +2 -0
- package/labs/gb/components/iconbutton/{md-icon-button.d.ts → icon-button-element.d.ts} +15 -7
- package/labs/gb/components/iconbutton/{md-icon-button.js → icon-button-element.js} +30 -20
- package/labs/gb/components/iconbutton/icon-button-element.js.map +1 -0
- package/labs/gb/components/iconbutton/icon-button.css.map +1 -1
- package/labs/gb/components/iconbutton/md-gb-icon-button.d.ts +12 -0
- package/labs/gb/components/iconbutton/md-gb-icon-button.js +8 -0
- package/labs/gb/components/iconbutton/md-gb-icon-button.js.map +1 -0
- package/labs/gb/components/list/_list-tokens.scss +13 -12
- package/labs/gb/components/list/{md-list.d.ts → list-element.d.ts} +6 -7
- package/labs/gb/components/list/{md-list.js → list-element.js} +11 -10
- package/labs/gb/components/list/list-element.js.map +1 -0
- package/labs/gb/components/list/list-item-element.d.ts +81 -0
- package/labs/gb/components/list/{md-list-item.js → list-item-element.js} +52 -13
- package/labs/gb/components/list/list-item-element.js.map +1 -0
- package/labs/gb/components/list/list.css +1 -1
- package/labs/gb/components/list/list.css.map +1 -1
- package/labs/gb/components/list/list.cssresult.js +1 -1
- package/labs/gb/components/list/list.cssresult.js.map +1 -1
- package/labs/gb/components/list/list.scss +5 -0
- package/labs/gb/components/list/md-gb-list-item.d.ts +12 -0
- package/labs/gb/components/list/md-gb-list-item.js +8 -0
- package/labs/gb/components/list/md-gb-list-item.js.map +1 -0
- package/labs/gb/components/list/md-gb-list.d.ts +12 -0
- package/labs/gb/components/list/md-gb-list.js +8 -0
- package/labs/gb/components/list/md-gb-list.js.map +1 -0
- package/labs/gb/components/menu/_menu-tokens.scss +47 -14
- package/labs/gb/components/menu/md-gb-menu-group.d.ts +12 -0
- package/labs/gb/components/menu/md-gb-menu-group.js +8 -0
- package/labs/gb/components/menu/md-gb-menu-group.js.map +1 -0
- package/labs/gb/components/menu/md-gb-menu-item.d.ts +12 -0
- package/labs/gb/components/menu/md-gb-menu-item.js +8 -0
- package/labs/gb/components/menu/md-gb-menu-item.js.map +1 -0
- package/labs/gb/components/menu/md-gb-menu.d.ts +12 -0
- package/labs/gb/components/menu/md-gb-menu.js +8 -0
- package/labs/gb/components/menu/md-gb-menu.js.map +1 -0
- package/labs/gb/components/menu/{md-menu.d.ts → menu-element.d.ts} +11 -7
- package/labs/gb/components/menu/{md-menu.js → menu-element.js} +16 -10
- package/labs/gb/components/menu/menu-element.js.map +1 -0
- package/labs/gb/components/menu/{md-menu-group.d.ts → menu-group-element.d.ts} +3 -6
- package/labs/gb/components/menu/{md-menu-group.js → menu-group-element.js} +11 -11
- package/labs/gb/components/menu/menu-group-element.js.map +1 -0
- package/labs/gb/components/menu/menu-item-element.d.ts +59 -0
- package/labs/gb/components/menu/{md-menu-item.js → menu-item-element.js} +44 -13
- package/labs/gb/components/menu/menu-item-element.js.map +1 -0
- package/labs/gb/components/menu/menu.css +1 -1
- package/labs/gb/components/menu/menu.css.map +1 -1
- package/labs/gb/components/menu/menu.cssresult.js +1 -1
- package/labs/gb/components/menu/menu.cssresult.js.map +1 -1
- package/labs/gb/components/menu/menu.js +1 -1
- package/labs/gb/components/menu/menu.js.map +1 -1
- package/labs/gb/components/menu/menu.scss +3 -0
- package/labs/gb/components/radio/_radio-tokens.scss +2 -0
- package/labs/gb/components/radio/md-gb-radio.d.ts +12 -0
- package/labs/gb/components/radio/md-gb-radio.js +8 -0
- package/labs/gb/components/radio/md-gb-radio.js.map +1 -0
- package/labs/gb/components/radio/{md-radio.d.ts → radio-element.d.ts} +10 -7
- package/labs/gb/components/radio/{md-radio.js → radio-element.js} +19 -14
- package/labs/gb/components/radio/radio-element.js.map +1 -0
- package/labs/gb/components/radio/radio.css.map +1 -1
- package/labs/gb/components/splitbutton/_split-button-tokens.scss +4 -0
- package/labs/gb/components/splitbutton/md-gb-split-button.d.ts +12 -0
- package/labs/gb/components/splitbutton/md-gb-split-button.js +8 -0
- package/labs/gb/components/splitbutton/md-gb-split-button.js.map +1 -0
- package/labs/gb/components/splitbutton/split-button-element.d.ts +33 -0
- package/labs/gb/components/splitbutton/{md-split-button.js → split-button-element.js} +21 -12
- package/labs/gb/components/splitbutton/split-button-element.js.map +1 -0
- package/labs/gb/components/splitbutton/split-button.css.map +1 -1
- package/labs/gb/components/splitbutton/split-button.d.ts +4 -4
- package/labs/gb/components/splitbutton/split-button.js +4 -4
- package/labs/gb/components/splitbutton/split-button.js.map +1 -1
- package/labs/gb/components/switch/_switch-tokens.scss +2 -0
- package/labs/gb/components/switch/md-gb-switch.d.ts +12 -0
- package/labs/gb/components/switch/md-gb-switch.js +8 -0
- package/labs/gb/components/switch/md-gb-switch.js.map +1 -0
- package/labs/gb/components/switch/{md-switch.d.ts → switch-element.d.ts} +19 -7
- package/labs/gb/components/switch/{md-switch.js → switch-element.js} +28 -14
- package/labs/gb/components/switch/switch-element.js.map +1 -0
- package/labs/gb/components/switch/switch.css.map +1 -1
- package/labs/gb/styles/adopt-styles.js +6 -1
- package/labs/gb/styles/adopt-styles.js.map +1 -1
- package/labs/gb/styles/icon/{md-icon.d.ts → icon-element.d.ts} +1 -7
- package/labs/gb/styles/icon/{md-icon.js → icon-element.js} +8 -10
- package/labs/gb/styles/icon/icon-element.js.map +1 -0
- package/labs/gb/styles/icon/md-gb-icon.d.ts +12 -0
- package/labs/gb/styles/icon/md-gb-icon.js +8 -0
- package/labs/gb/styles/icon/md-gb-icon.js.map +1 -0
- package/package.json +3 -3
- package/labs/gb/components/button/md-button.js.map +0 -1
- package/labs/gb/components/card/md-card.js.map +0 -1
- package/labs/gb/components/checkbox/md-checkbox.js.map +0 -1
- package/labs/gb/components/divider/md-divider.js.map +0 -1
- package/labs/gb/components/fab/md-fab.d.ts +0 -22
- package/labs/gb/components/fab/md-fab.js.map +0 -1
- package/labs/gb/components/iconbutton/md-icon-button.js.map +0 -1
- package/labs/gb/components/list/md-list-item.d.ts +0 -44
- package/labs/gb/components/list/md-list-item.js.map +0 -1
- package/labs/gb/components/list/md-list.js.map +0 -1
- package/labs/gb/components/menu/md-menu-group.js.map +0 -1
- package/labs/gb/components/menu/md-menu-item.d.ts +0 -30
- package/labs/gb/components/menu/md-menu-item.js.map +0 -1
- package/labs/gb/components/menu/md-menu.js.map +0 -1
- package/labs/gb/components/radio/md-radio.js.map +0 -1
- package/labs/gb/components/splitbutton/md-split-button.d.ts +0 -26
- package/labs/gb/components/splitbutton/md-split-button.js.map +0 -1
- package/labs/gb/components/switch/md-switch.js.map +0 -1
- package/labs/gb/styles/icon/md-icon.js.map +0 -1
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
*/
|
|
6
6
|
import { __decorate } from "tslib";
|
|
7
7
|
import { css, html, LitElement, nothing } from 'lit';
|
|
8
|
-
import {
|
|
8
|
+
import { property, query } from 'lit/decorators.js';
|
|
9
9
|
import { mixinDelegatesAria } from '../../../../internal/aria/delegate.js';
|
|
10
10
|
import { redispatchEvent } from '../../../../internal/events/redispatch-event.js';
|
|
11
11
|
import { createValidator, getValidityAnchor, mixinConstraintValidation, } from '../../../behaviors/constraint-validation.js';
|
|
@@ -23,8 +23,22 @@ import { checkbox } from './checkbox.js';
|
|
|
23
23
|
const baseClass = mixinDelegatesAria(mixinConstraintValidation(mixinFormAssociated(mixinElementInternals(LitElement))));
|
|
24
24
|
/**
|
|
25
25
|
* A Material Design checkbox component.
|
|
26
|
+
*
|
|
27
|
+
* @fires {InputEvent} input - Fired when the checkbox is checked or unchecked. --bubbles --composed
|
|
28
|
+
* @fires {Event} change - Fired when the checkbox is checked or unchecked. --bubbles
|
|
29
|
+
* @csspart checkbox - The checkbox's root element.
|
|
30
|
+
* @cssprop --container-color
|
|
31
|
+
* @cssprop --container-shape
|
|
32
|
+
* @cssprop --container-size
|
|
33
|
+
* @cssprop --icon-color
|
|
34
|
+
* @cssprop --icon-size
|
|
35
|
+
* @cssprop --outline-color
|
|
36
|
+
* @cssprop --outline-width
|
|
37
|
+
* @cssprop --state-layer-color
|
|
38
|
+
* @cssprop --state-layer-shape
|
|
39
|
+
* @cssprop --state-layer-size
|
|
26
40
|
*/
|
|
27
|
-
|
|
41
|
+
export class CheckboxElement extends baseClass {
|
|
28
42
|
constructor() {
|
|
29
43
|
super(...arguments);
|
|
30
44
|
/**
|
|
@@ -130,13 +144,13 @@ let Checkbox = class Checkbox extends baseClass {
|
|
|
130
144
|
[getValidityAnchor]() {
|
|
131
145
|
return this.input;
|
|
132
146
|
}
|
|
133
|
-
}
|
|
147
|
+
}
|
|
134
148
|
/** @nocollapse */
|
|
135
|
-
|
|
149
|
+
CheckboxElement.shadowRootOptions = {
|
|
136
150
|
mode: 'open',
|
|
137
151
|
delegatesFocus: true,
|
|
138
152
|
};
|
|
139
|
-
|
|
153
|
+
CheckboxElement.styles = [
|
|
140
154
|
focusRingStyles,
|
|
141
155
|
rippleStyles,
|
|
142
156
|
checkboxStyles,
|
|
@@ -151,24 +165,20 @@ Checkbox.styles = [
|
|
|
151
165
|
];
|
|
152
166
|
__decorate([
|
|
153
167
|
property({ type: Boolean })
|
|
154
|
-
],
|
|
168
|
+
], CheckboxElement.prototype, "error", void 0);
|
|
155
169
|
__decorate([
|
|
156
170
|
property({ type: Boolean })
|
|
157
|
-
],
|
|
171
|
+
], CheckboxElement.prototype, "checked", void 0);
|
|
158
172
|
__decorate([
|
|
159
173
|
property({ type: Boolean })
|
|
160
|
-
],
|
|
174
|
+
], CheckboxElement.prototype, "indeterminate", void 0);
|
|
161
175
|
__decorate([
|
|
162
176
|
property({ type: Boolean })
|
|
163
|
-
],
|
|
177
|
+
], CheckboxElement.prototype, "required", void 0);
|
|
164
178
|
__decorate([
|
|
165
179
|
property()
|
|
166
|
-
],
|
|
180
|
+
], CheckboxElement.prototype, "value", void 0);
|
|
167
181
|
__decorate([
|
|
168
182
|
query('input', true)
|
|
169
|
-
],
|
|
170
|
-
|
|
171
|
-
customElement('md-checkbox')
|
|
172
|
-
], Checkbox);
|
|
173
|
-
export { Checkbox };
|
|
174
|
-
//# sourceMappingURL=md-checkbox.js.map
|
|
183
|
+
], CheckboxElement.prototype, "input", void 0);
|
|
184
|
+
//# sourceMappingURL=checkbox-element.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"checkbox-element.js","sourceRoot":"","sources":["checkbox-element.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * @license\n * Copyright 2026 Google LLC\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport {css, CSSResultOrNative, html, LitElement, nothing} from 'lit';\nimport {property, query} from 'lit/decorators.js';\nimport {ARIAMixinStrict} from '../../../../internal/aria/aria.js';\nimport {mixinDelegatesAria} from '../../../../internal/aria/delegate.js';\nimport {redispatchEvent} from '../../../../internal/events/redispatch-event.js';\nimport {\n createValidator,\n getValidityAnchor,\n mixinConstraintValidation,\n} from '../../../behaviors/constraint-validation.js';\nimport {mixinElementInternals} from '../../../behaviors/element-internals.js';\nimport {\n getFormState,\n getFormValue,\n mixinFormAssociated,\n} from '../../../behaviors/form-associated.js';\nimport {CheckboxValidator} from '../../../behaviors/validators/checkbox-validator.js';\n\nimport focusRingStyles from '../focus/focus-ring.css' with {type: 'css'}; // github-only\n// import focusRingStyles from '../focus/focus-ring.cssresult.js'; // google3-only\nimport rippleStyles from '../ripple/ripple.css' with {type: 'css'}; // github-only\n// import rippleStyles from '../ripple/ripple.cssresult.js'; // google3-only\nimport checkboxStyles from './checkbox.css' with {type: 'css'}; // github-only\n// import checkboxStyles from './checkbox.cssresult.js'; // google3-only\n\nimport {checkbox} from './checkbox.js';\n\n// Separate variable needed for closure.\nconst baseClass = mixinDelegatesAria(\n mixinConstraintValidation(\n mixinFormAssociated(mixinElementInternals(LitElement)),\n ),\n);\n\n/**\n * A Material Design checkbox component.\n *\n * @fires {InputEvent} input - Fired when the checkbox is checked or unchecked. --bubbles --composed\n * @fires {Event} change - Fired when the checkbox is checked or unchecked. --bubbles\n * @csspart checkbox - The checkbox's root element.\n * @cssprop --container-color\n * @cssprop --container-shape\n * @cssprop --container-size\n * @cssprop --icon-color\n * @cssprop --icon-size\n * @cssprop --outline-color\n * @cssprop --outline-width\n * @cssprop --state-layer-color\n * @cssprop --state-layer-shape\n * @cssprop --state-layer-size\n */\nexport class CheckboxElement extends baseClass {\n /** @nocollapse */\n static override shadowRootOptions: ShadowRootInit = {\n mode: 'open',\n delegatesFocus: true,\n };\n\n static override styles: CSSResultOrNative[] = [\n focusRingStyles,\n rippleStyles,\n checkboxStyles,\n css`\n :host {\n display: inline-flex;\n }\n .checkbox {\n flex: 1;\n }\n `,\n ];\n\n /**\n * Whether or not the checkbox is invalid.\n */\n @property({type: Boolean}) error = false;\n\n /**\n * Whether or not the checkbox is selected.\n */\n @property({type: Boolean}) checked = false;\n\n /**\n * The default checked state of the checkbox.\n */\n get defaultChecked(): boolean {\n return this.hasAttribute('checked');\n }\n set defaultChecked(value: boolean) {\n this.toggleAttribute('checked', value || false);\n }\n\n /**\n * Whether or not the checkbox is indeterminate.\n *\n * https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input/checkbox#indeterminate_state_checkboxes\n */\n @property({type: Boolean}) indeterminate = false;\n\n /**\n * When true, require the checkbox to be selected when participating in\n * form submission.\n *\n * https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input/checkbox#validation\n */\n @property({type: Boolean}) required = false;\n\n /**\n * The value of the checkbox that is submitted with a form when selected.\n *\n * https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input/checkbox#value\n */\n @property() value = 'on';\n\n @query('input', true)\n private readonly input!: HTMLInputElement | null;\n /**\n * Mimics the behavior of <input> dirty checkedness, where the `checked`\n * attribute only updates the checked state if the checkbox has not been\n * interacted with.\n *\n * @see https://html.spec.whatwg.org/multipage/input.html#concept-input-checked-dirty-flag\n */\n private dirtyCheckedness = false;\n\n protected override render() {\n // Needed for closure conformance\n const {ariaLabel, ariaInvalid} = this as ARIAMixinStrict;\n return html`\n <input\n part=\"checkbox\"\n class=\"${checkbox({invalid: this.error})}\"\n type=\"checkbox\"\n aria-checked=${this.indeterminate ? 'mixed' : nothing}\n aria-label=${ariaLabel || nothing}\n aria-invalid=${ariaInvalid || this.error || nothing}\n ?disabled=${this.disabled}\n ?required=${this.required}\n .indeterminate=${this.indeterminate}\n .checked=${this.checked}\n @input=${this.handleInput}\n @change=${this.handleChange} />\n `;\n }\n\n private handleInput(event: Event) {\n this.dirtyCheckedness = true;\n const target = event.target as HTMLInputElement;\n this.checked = target.checked;\n this.indeterminate = target.indeterminate;\n // <input> 'input' event bubbles and is composed, don't re-dispatch it.\n }\n\n private handleChange(event: Event) {\n this.dirtyCheckedness = true;\n // <input> 'change' event is not composed, re-dispatch it.\n redispatchEvent(this, event);\n }\n\n override attributeChangedCallback(\n name: string,\n oldValue: string | null,\n newValue: string | null,\n ) {\n if (name === 'checked' && this.dirtyCheckedness) {\n // The 'checked' attribute does not update checkboxes that have been\n // interacted with.\n return;\n }\n\n super.attributeChangedCallback(name, oldValue, newValue);\n }\n\n override [getFormValue]() {\n return this.checked ? this.value : null;\n }\n\n override [getFormState]() {\n return String(this.checked);\n }\n\n override formResetCallback() {\n this.dirtyCheckedness = false;\n this.checked = this.defaultChecked;\n }\n\n override formStateRestoreCallback(state: string) {\n this.checked = state === 'true';\n }\n\n override [createValidator]() {\n return new CheckboxValidator(() => this);\n }\n\n override [getValidityAnchor]() {\n return this.input;\n }\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sourceRoot":"","sources":["checkbox.scss","_checkbox-tokens.scss"],"names":[],"mappings":"AAAA;AAAA;AAAA;AAAA,GASA,kDACA,wBAEI,
|
|
1
|
+
{"version":3,"sourceRoot":"","sources":["checkbox.scss","_checkbox-tokens.scss"],"names":[],"mappings":"AAAA;AAAA;AAAA;AAAA,GASA,kDACA,wBAEI,UCLF,+BACA,uBACA,uBACA,0BACA,kBACA,wDACA,qBACA,oDACA,yBACA,qDAKA,oDACA,gDDFE,mCCMF,gDDFE,8BCMF,iDACA,gDDHE,8DCOF,mBACA,+CACA,6CDNI,mFCUJ,iDDNI,qFCUJ,oDDLE,gCCSF,+CACA,2CDPI,uFCWJ,6CACA,2CDPE,kCCWF,sEDRI,yFCYJ,wEACA,0CDRE,UACE,gBACA,kBACA,oBACA,mBACA,uBACA,WACA,YACA,sBACA,aACA,SACA,gBAEA,oDACE,iBAGF,kBACE,oBACA,oBACA,mBACA,uBACA,sBACA,gBACA,eACA,4BACA,kCACA,qCACA,uDACA,wBACA,4CAGF,iBACE,WACA,kBACA,eACA,+BACA,+BACA,8BACA,uCACA,kCACA,wCACA,oCACA","file":"checkbox.css"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright 2026 Google LLC
|
|
4
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
5
|
+
*/
|
|
6
|
+
import { CheckboxElement } from './checkbox-element.js';
|
|
7
|
+
declare global {
|
|
8
|
+
interface HTMLElementTagNameMap {
|
|
9
|
+
/** A Material Design component. */
|
|
10
|
+
'md-gb-checkbox': CheckboxElement;
|
|
11
|
+
}
|
|
12
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"md-gb-checkbox.js","sourceRoot":"","sources":["md-gb-checkbox.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAC,eAAe,EAAC,MAAM,uBAAuB,CAAC;AAStD,cAAc,CAAC,MAAM,CAAC,gBAAgB,EAAE,eAAe,CAAC,CAAC","sourcesContent":["/**\n * @license\n * Copyright 2026 Google LLC\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport {CheckboxElement} from './checkbox-element.js';\n\ndeclare global {\n interface HTMLElementTagNameMap {\n /** A Material Design component. */\n 'md-gb-checkbox': CheckboxElement;\n }\n}\n\ncustomElements.define('md-gb-checkbox', CheckboxElement);\n"]}
|
|
@@ -0,0 +1,167 @@
|
|
|
1
|
+
//
|
|
2
|
+
// Copyright 2026 Google LLC
|
|
3
|
+
// SPDX-License-Identifier: Apache-2.0
|
|
4
|
+
//
|
|
5
|
+
|
|
6
|
+
// Auto-generated by cascade_tokens
|
|
7
|
+
// Add `// EDIT:` comments for manual adjustments.
|
|
8
|
+
//
|
|
9
|
+
// --prefix=md.comp.chip
|
|
10
|
+
// --states="hovered|focused|pressed|dragged,:unselected|selected,:filter|input,with-leading-icon|with-avatar,with-trailing-icon,disabled"
|
|
11
|
+
// --exclude=motion,state-layer,indicator
|
|
12
|
+
|
|
13
|
+
@mixin root {
|
|
14
|
+
// LINT.IfChange
|
|
15
|
+
--avatar-opacity: unset;
|
|
16
|
+
// md.comp.chip.avatar.shape
|
|
17
|
+
--avatar-shape: var(--md-sys-shape-corner-full);
|
|
18
|
+
// md.comp.chip.avatar.size
|
|
19
|
+
--avatar-size: 24px;
|
|
20
|
+
--container-color: unset;
|
|
21
|
+
// md.comp.chip.container.elevation
|
|
22
|
+
--container-elevation: var(--md-sys-elevation-shadow-0);
|
|
23
|
+
// --container-opacity: unset; // EDIT: unused
|
|
24
|
+
// md.comp.chip.gap.horizontal
|
|
25
|
+
--gap-horizontal: var(--md-sys-space-50);
|
|
26
|
+
// md.comp.chip.height
|
|
27
|
+
--height: 32px;
|
|
28
|
+
// md.comp.chip.label-text
|
|
29
|
+
--label-text: var(--md-sys-typescale-label-lg);
|
|
30
|
+
// ┌┄ md.comp.chip.label-text
|
|
31
|
+
--label-text-axes: var(--md-sys-typescale-label-lg-axes);
|
|
32
|
+
// md.comp.chip.unselected.label-text.color
|
|
33
|
+
--label-text-color: var(--md-sys-color-on-surface-variant);
|
|
34
|
+
// --label-text-opacity: unset; // EDIT: unused
|
|
35
|
+
// ┌┄ md.comp.chip.label-text
|
|
36
|
+
--label-text-tracking: var(--md-sys-typescale-label-lg-tracking);
|
|
37
|
+
// md.comp.chip.unselected.leading-icon.color
|
|
38
|
+
--leading-icon-color: var(--md-sys-color-on-surface-variant);
|
|
39
|
+
// --leading-icon-opacity: unset; // EDIT: unused
|
|
40
|
+
// md.comp.chip.leading-icon.size
|
|
41
|
+
--leading-icon-size: 18px;
|
|
42
|
+
// md.comp.chip.unselected.outline.color
|
|
43
|
+
--outline-color: var(--md-sys-color-outline-variant);
|
|
44
|
+
// --outline-opacity: unset; // EDIT: unused
|
|
45
|
+
// md.comp.chip.unselected.outline.width
|
|
46
|
+
--outline-width: 1px;
|
|
47
|
+
// md.comp.chip.padding.bottom
|
|
48
|
+
--padding-bottom: var(--md-sys-space-75);
|
|
49
|
+
// ┌ md.comp.chip.filter.padding.leading
|
|
50
|
+
--padding-leading: var(--md-sys-space-200);
|
|
51
|
+
// md.comp.chip.padding.top
|
|
52
|
+
--padding-top: var(--md-sys-space-75);
|
|
53
|
+
// ┌ md.comp.chip.filter.padding.trailing
|
|
54
|
+
--padding-trailing: var(--md-sys-space-200);
|
|
55
|
+
// md.comp.chip.unselected.shape
|
|
56
|
+
--shape: var(--md-sys-shape-corner-md);
|
|
57
|
+
// md.comp.chip.unselected.trailing-icon.color
|
|
58
|
+
--trailing-icon-color: var(--md-sys-color-on-surface-variant);
|
|
59
|
+
// --trailing-icon-opacity: unset; // EDIT: unused
|
|
60
|
+
// md.comp.chip.trailing-icon.size
|
|
61
|
+
--trailing-icon-size: 18px;
|
|
62
|
+
// LINT.ThenChange(md-gb-chip.ts) sync with `@cssprop` jsdoc tags
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
@mixin pressed {
|
|
66
|
+
// md.comp.chip.pressed.shape
|
|
67
|
+
--shape: var(--md-sys-shape-corner-sm);
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
@mixin dragged {
|
|
71
|
+
// md.comp.chip.dragged.container.elevation
|
|
72
|
+
--container-elevation: var(--md-sys-elevation-shadow-4);
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
@mixin selected {
|
|
76
|
+
// md.comp.chip.selected.container.color
|
|
77
|
+
--container-color: var(--md-sys-color-secondary-container);
|
|
78
|
+
// md.comp.chip.selected.label-text.color
|
|
79
|
+
--label-text-color: var(--md-sys-color-on-secondary-container);
|
|
80
|
+
// md.comp.chip.selected.leading-icon.color
|
|
81
|
+
--leading-icon-color: var(--md-sys-color-on-secondary-container);
|
|
82
|
+
// md.comp.chip.selected.outline.width
|
|
83
|
+
--outline-width: 0px;
|
|
84
|
+
// md.comp.chip.selected.shape
|
|
85
|
+
--shape: var(--md-sys-shape-corner-full);
|
|
86
|
+
// md.comp.chip.selected.trailing-icon.color
|
|
87
|
+
--trailing-icon-color: var(--md-sys-color-on-secondary-container);
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
@mixin input {
|
|
91
|
+
// md.comp.chip.input.padding.leading
|
|
92
|
+
--padding-leading: var(--md-sys-space-150);
|
|
93
|
+
// md.comp.chip.input.padding.trailing
|
|
94
|
+
--padding-trailing: var(--md-sys-space-150);
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
@mixin with-leading-icon {
|
|
98
|
+
// md.comp.chip.with-leading-icon.padding.leading
|
|
99
|
+
--padding-leading: var(--md-sys-space-100);
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
@mixin with-avatar {
|
|
103
|
+
// md.comp.chip.with-avatar.padding.leading
|
|
104
|
+
--padding-leading: var(--md-sys-space-50);
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
@mixin with-trailing-icon {
|
|
108
|
+
// md.comp.chip.with-trailing-icon.padding.trailing
|
|
109
|
+
--padding-trailing: var(--md-sys-space-100);
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
@mixin disabled {
|
|
113
|
+
// md.comp.chip.disabled.avatar.opacity
|
|
114
|
+
--avatar-opacity: 0.38;
|
|
115
|
+
// ┌ md.comp.chip.disabled.label-text.opacity
|
|
116
|
+
// md.comp.chip.disabled.label-text.color
|
|
117
|
+
--label-text-color: hsl(from var(--md-sys-color-on-surface) h s l / 0.38);
|
|
118
|
+
// ┌ md.comp.chip.disabled.leading-icon.opacity
|
|
119
|
+
// md.comp.chip.disabled.leading-icon.color
|
|
120
|
+
--leading-icon-color: hsl(from var(--md-sys-color-on-surface) h s l / 0.38);
|
|
121
|
+
// ┌ md.comp.chip.unselected.disabled.outline.opacity
|
|
122
|
+
// md.comp.chip.unselected.disabled.outline.color
|
|
123
|
+
--outline-color: hsl(from var(--md-sys-color-on-surface) h s l / 0.1);
|
|
124
|
+
// ┌ md.comp.chip.disabled.trailing-icon.opacity
|
|
125
|
+
// md.comp.chip.disabled.trailing-icon.color
|
|
126
|
+
--trailing-icon-color: hsl(from var(--md-sys-color-on-surface) h s l / 0.38);
|
|
127
|
+
}
|
|
128
|
+
|
|
129
|
+
@mixin disabled-selected {
|
|
130
|
+
// ┌ md.comp.chip.selected.disabled.container.opacity
|
|
131
|
+
// md.comp.chip.selected.disabled.container.color
|
|
132
|
+
--container-color: hsl(from var(--md-sys-color-on-surface) h s l / 0.12);
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
// EDIT: Manual adjustments
|
|
136
|
+
@mixin filter {
|
|
137
|
+
// Hoisted to root, so empty here to satisfy chip.scss mapping
|
|
138
|
+
}
|
|
139
|
+
|
|
140
|
+
@mixin elevated {
|
|
141
|
+
--container-color: var(--md-sys-color-surface-container-low);
|
|
142
|
+
--container-elevation: var(--md-sys-elevation-shadow-1);
|
|
143
|
+
--label-text-color: var(--md-sys-color-on-surface);
|
|
144
|
+
--outline-width: 0;
|
|
145
|
+
}
|
|
146
|
+
|
|
147
|
+
@mixin filled {
|
|
148
|
+
--container-color: var(--md-sys-color-surface-container);
|
|
149
|
+
--container-elevation: var(--md-sys-elevation-shadow-0);
|
|
150
|
+
--label-text-color: var(--md-sys-color-on-surface);
|
|
151
|
+
--outline-width: 0;
|
|
152
|
+
}
|
|
153
|
+
|
|
154
|
+
@mixin tonal {
|
|
155
|
+
--container-color: var(--md-sys-color-secondary-container);
|
|
156
|
+
--container-elevation: var(--md-sys-elevation-shadow-0);
|
|
157
|
+
--label-text-color: var(--md-sys-color-on-secondary-container);
|
|
158
|
+
--outline-width: 0;
|
|
159
|
+
}
|
|
160
|
+
|
|
161
|
+
@mixin outlined {
|
|
162
|
+
--container-color: transparent;
|
|
163
|
+
--container-elevation: var(--md-sys-elevation-shadow-0);
|
|
164
|
+
--label-text-color: var(--md-sys-color-on-surface);
|
|
165
|
+
--outline-color: var(--md-sys-color-outline);
|
|
166
|
+
--outline-width: 1px;
|
|
167
|
+
}
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright 2026 Google LLC
|
|
4
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
5
|
+
*/
|
|
6
|
+
import { CSSResultOrNative, LitElement } from 'lit';
|
|
7
|
+
import { type ChipColor, type ChipType } from './chip.js';
|
|
8
|
+
/**
|
|
9
|
+
* A Material Design Expressive Chip component (`md-gb-chip`).
|
|
10
|
+
*
|
|
11
|
+
* @slot - Used to display the chip label text.
|
|
12
|
+
* @slot icon - Used to display an optional leading icon, checkmark, or avatar.
|
|
13
|
+
* @slot remove-icon - Used to display the trailing remove button icon when `removable="true"`.
|
|
14
|
+
* @fires {Event} remove - Fired when the remove action is triggered on a removable chip. --bubbles --composed
|
|
15
|
+
* @fires {Event} change - Fired when a filter/toggle chip's selection state changes. --bubbles
|
|
16
|
+
* @fires {InputEvent} input - Fired when a filter/toggle chip's selection state changes. --bubbles --composed
|
|
17
|
+
* @csspart chip - The root container element.
|
|
18
|
+
* @cssprop --avatar-opacity
|
|
19
|
+
* @cssprop --avatar-shape
|
|
20
|
+
* @cssprop --avatar-size
|
|
21
|
+
* @cssprop --container-color
|
|
22
|
+
* @cssprop --container-elevation
|
|
23
|
+
* @cssprop --container-opacity
|
|
24
|
+
* @cssprop --gap-horizontal
|
|
25
|
+
* @cssprop --height
|
|
26
|
+
* @cssprop --label-text
|
|
27
|
+
* @cssprop --label-text-color
|
|
28
|
+
* @cssprop --label-text-opacity
|
|
29
|
+
* @cssprop --leading-icon-color
|
|
30
|
+
* @cssprop --leading-icon-opacity
|
|
31
|
+
* @cssprop --leading-icon-size
|
|
32
|
+
* @cssprop --outline-color
|
|
33
|
+
* @cssprop --outline-opacity
|
|
34
|
+
* @cssprop --outline-width
|
|
35
|
+
* @cssprop --padding-bottom
|
|
36
|
+
* @cssprop --padding-leading
|
|
37
|
+
* @cssprop --padding-top
|
|
38
|
+
* @cssprop --padding-trailing
|
|
39
|
+
* @cssprop --shape
|
|
40
|
+
* @cssprop --trailing-icon-color
|
|
41
|
+
* @cssprop --trailing-icon-opacity
|
|
42
|
+
* @cssprop --trailing-icon-size
|
|
43
|
+
*/
|
|
44
|
+
export declare class ChipElement extends LitElement {
|
|
45
|
+
static styles: CSSResultOrNative[];
|
|
46
|
+
/** The color emphasis of the chip. Defaults to `outlined`. */
|
|
47
|
+
color: ChipColor;
|
|
48
|
+
/** The functional behavior type of the chip (`action`, `filter`, `toggle`, `link`). */
|
|
49
|
+
type: ChipType;
|
|
50
|
+
/** Whether the filter or toggle chip is selected. */
|
|
51
|
+
selected: boolean;
|
|
52
|
+
/** Whether the chip is removable. */
|
|
53
|
+
removable: boolean;
|
|
54
|
+
/** Whether the chip is disabled. */
|
|
55
|
+
disabled: boolean;
|
|
56
|
+
/** Whether the chip is soft-disabled (`aria-disabled="true"` while preserving focusability). */
|
|
57
|
+
softDisabled: boolean;
|
|
58
|
+
/** The URL destination if `type="link"` or if `href` is set. */
|
|
59
|
+
href: string;
|
|
60
|
+
/** Where to display the linked `href` URL for a link chip. */
|
|
61
|
+
target: '_blank' | '_parent' | '_self' | '_top' | '';
|
|
62
|
+
private hasLeadingIcon;
|
|
63
|
+
private hasAvatar;
|
|
64
|
+
private hasRemoveIcon;
|
|
65
|
+
protected render(): import("lit-html").TemplateResult<1>;
|
|
66
|
+
private renderContent;
|
|
67
|
+
private renderLeadingIcon;
|
|
68
|
+
private renderRemoveButton;
|
|
69
|
+
private handleIconSlotChange;
|
|
70
|
+
private handleRemoveIconSlotChange;
|
|
71
|
+
private handleChange;
|
|
72
|
+
private handleRemove;
|
|
73
|
+
}
|
|
@@ -0,0 +1,233 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright 2026 Google LLC
|
|
4
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
5
|
+
*/
|
|
6
|
+
import { __decorate } from "tslib";
|
|
7
|
+
import { css, html, LitElement, nothing } from 'lit';
|
|
8
|
+
import { property, state } from 'lit/decorators.js';
|
|
9
|
+
import { redispatchEvent } from '../../../../internal/events/redispatch-event.js';
|
|
10
|
+
import focusRingStyles from '../focus/focus-ring.cssresult.js';
|
|
11
|
+
import rippleStyles from '../ripple/ripple.cssresult.js';
|
|
12
|
+
import { chip } from './chip.js';
|
|
13
|
+
import { styles as chipStyles } from './chip.cssresult.js';
|
|
14
|
+
/**
|
|
15
|
+
* A Material Design Expressive Chip component (`md-gb-chip`).
|
|
16
|
+
*
|
|
17
|
+
* @slot - Used to display the chip label text.
|
|
18
|
+
* @slot icon - Used to display an optional leading icon, checkmark, or avatar.
|
|
19
|
+
* @slot remove-icon - Used to display the trailing remove button icon when `removable="true"`.
|
|
20
|
+
* @fires {Event} remove - Fired when the remove action is triggered on a removable chip. --bubbles --composed
|
|
21
|
+
* @fires {Event} change - Fired when a filter/toggle chip's selection state changes. --bubbles
|
|
22
|
+
* @fires {InputEvent} input - Fired when a filter/toggle chip's selection state changes. --bubbles --composed
|
|
23
|
+
* @csspart chip - The root container element.
|
|
24
|
+
* @cssprop --avatar-opacity
|
|
25
|
+
* @cssprop --avatar-shape
|
|
26
|
+
* @cssprop --avatar-size
|
|
27
|
+
* @cssprop --container-color
|
|
28
|
+
* @cssprop --container-elevation
|
|
29
|
+
* @cssprop --container-opacity
|
|
30
|
+
* @cssprop --gap-horizontal
|
|
31
|
+
* @cssprop --height
|
|
32
|
+
* @cssprop --label-text
|
|
33
|
+
* @cssprop --label-text-color
|
|
34
|
+
* @cssprop --label-text-opacity
|
|
35
|
+
* @cssprop --leading-icon-color
|
|
36
|
+
* @cssprop --leading-icon-opacity
|
|
37
|
+
* @cssprop --leading-icon-size
|
|
38
|
+
* @cssprop --outline-color
|
|
39
|
+
* @cssprop --outline-opacity
|
|
40
|
+
* @cssprop --outline-width
|
|
41
|
+
* @cssprop --padding-bottom
|
|
42
|
+
* @cssprop --padding-leading
|
|
43
|
+
* @cssprop --padding-top
|
|
44
|
+
* @cssprop --padding-trailing
|
|
45
|
+
* @cssprop --shape
|
|
46
|
+
* @cssprop --trailing-icon-color
|
|
47
|
+
* @cssprop --trailing-icon-opacity
|
|
48
|
+
* @cssprop --trailing-icon-size
|
|
49
|
+
*/
|
|
50
|
+
export class ChipElement extends LitElement {
|
|
51
|
+
constructor() {
|
|
52
|
+
super(...arguments);
|
|
53
|
+
/** The color emphasis of the chip. Defaults to `outlined`. */
|
|
54
|
+
this.color = 'outlined';
|
|
55
|
+
/** The functional behavior type of the chip (`action`, `filter`, `toggle`, `link`). */
|
|
56
|
+
this.type = 'action';
|
|
57
|
+
/** Whether the filter or toggle chip is selected. */
|
|
58
|
+
this.selected = false;
|
|
59
|
+
/** Whether the chip is removable. */
|
|
60
|
+
this.removable = false;
|
|
61
|
+
/** Whether the chip is disabled. */
|
|
62
|
+
this.disabled = false;
|
|
63
|
+
/** Whether the chip is soft-disabled (`aria-disabled="true"` while preserving focusability). */
|
|
64
|
+
this.softDisabled = false;
|
|
65
|
+
/** The URL destination if `type="link"` or if `href` is set. */
|
|
66
|
+
this.href = '';
|
|
67
|
+
/** Where to display the linked `href` URL for a link chip. */
|
|
68
|
+
this.target = '';
|
|
69
|
+
this.hasLeadingIcon = false;
|
|
70
|
+
this.hasAvatar = false;
|
|
71
|
+
this.hasRemoveIcon = false;
|
|
72
|
+
}
|
|
73
|
+
render() {
|
|
74
|
+
const isFilterSelected = (this.type === 'filter' || this.type === 'toggle') && this.selected;
|
|
75
|
+
const withLeadingIcon = this.hasLeadingIcon || isFilterSelected;
|
|
76
|
+
const withAvatar = this.hasAvatar;
|
|
77
|
+
const chipClasses = chip({
|
|
78
|
+
color: this.color,
|
|
79
|
+
type: this.href ? 'link' : this.type,
|
|
80
|
+
selected: this.selected,
|
|
81
|
+
removable: this.removable,
|
|
82
|
+
disabled: this.softDisabled || this.disabled,
|
|
83
|
+
withLeadingIcon: withLeadingIcon && !withAvatar,
|
|
84
|
+
withAvatar,
|
|
85
|
+
withTrailingIcon: this.removable || this.hasRemoveIcon,
|
|
86
|
+
});
|
|
87
|
+
if (this.href || this.type === 'link') {
|
|
88
|
+
return html `<a
|
|
89
|
+
part="chip"
|
|
90
|
+
class="${chipClasses}"
|
|
91
|
+
href=${this.href}
|
|
92
|
+
target=${this.target ||
|
|
93
|
+
nothing}
|
|
94
|
+
aria-disabled=${this.disabled || this.softDisabled ? 'true' : nothing}
|
|
95
|
+
tabindex=${this.disabled && !this.softDisabled ? -1 : nothing}>
|
|
96
|
+
${this.renderContent(withLeadingIcon, isFilterSelected)}
|
|
97
|
+
</a>`;
|
|
98
|
+
}
|
|
99
|
+
if (this.removable) {
|
|
100
|
+
return html `<div
|
|
101
|
+
part="chip"
|
|
102
|
+
class="${chipClasses}"
|
|
103
|
+
role="row"
|
|
104
|
+
aria-pressed=${this.type === 'filter' || this.type === 'toggle'
|
|
105
|
+
? (this.selected ? 'true' : 'false')
|
|
106
|
+
: nothing}
|
|
107
|
+
@change=${this.handleChange}>
|
|
108
|
+
<button
|
|
109
|
+
class="chip-action focus-ring-target"
|
|
110
|
+
type="button"
|
|
111
|
+
?disabled=${this.disabled}
|
|
112
|
+
aria-disabled=${this.softDisabled ? 'true' : nothing}>
|
|
113
|
+
${this.renderContent(withLeadingIcon, isFilterSelected)}
|
|
114
|
+
</button>
|
|
115
|
+
${this.renderRemoveButton()}
|
|
116
|
+
</div>`;
|
|
117
|
+
}
|
|
118
|
+
return html `<button
|
|
119
|
+
part="chip"
|
|
120
|
+
class="${chipClasses}"
|
|
121
|
+
type="button"
|
|
122
|
+
?disabled=${this.disabled}
|
|
123
|
+
aria-disabled=${this.softDisabled ? 'true' : nothing}
|
|
124
|
+
aria-pressed=${this.type === 'filter' || this.type === 'toggle'
|
|
125
|
+
? (this.selected ? 'true' : 'false')
|
|
126
|
+
: nothing}
|
|
127
|
+
@change=${this.handleChange}>
|
|
128
|
+
${this.renderContent(withLeadingIcon, isFilterSelected)}
|
|
129
|
+
</button>`;
|
|
130
|
+
}
|
|
131
|
+
renderContent(withLeadingIcon, isFilterSelected) {
|
|
132
|
+
return html `
|
|
133
|
+
${this.renderLeadingIcon(withLeadingIcon, isFilterSelected)}
|
|
134
|
+
<slot></slot>
|
|
135
|
+
`;
|
|
136
|
+
}
|
|
137
|
+
renderLeadingIcon(withLeadingIcon, isFilterSelected) {
|
|
138
|
+
return html `<span
|
|
139
|
+
class="chip-icon"
|
|
140
|
+
style="${withLeadingIcon ? '' : 'display: none;'}">
|
|
141
|
+
<slot name="icon" @slotchange=${this.handleIconSlotChange}>
|
|
142
|
+
${isFilterSelected ? html `✓` : nothing}
|
|
143
|
+
</slot>
|
|
144
|
+
</span>`;
|
|
145
|
+
}
|
|
146
|
+
renderRemoveButton() {
|
|
147
|
+
return html `<button
|
|
148
|
+
class="chip-remove focus-ring-outer"
|
|
149
|
+
type="button"
|
|
150
|
+
aria-label="Remove"
|
|
151
|
+
?disabled=${this.disabled}
|
|
152
|
+
aria-disabled=${this.softDisabled ? 'true' : nothing}
|
|
153
|
+
@click=${this.handleRemove}>
|
|
154
|
+
<slot
|
|
155
|
+
name="remove-icon"
|
|
156
|
+
@slotchange=${this.handleRemoveIconSlotChange}
|
|
157
|
+
>✕</slot
|
|
158
|
+
>
|
|
159
|
+
</button>`;
|
|
160
|
+
}
|
|
161
|
+
handleIconSlotChange(event) {
|
|
162
|
+
const slot = event.target;
|
|
163
|
+
const elements = slot.assignedElements({ flatten: true });
|
|
164
|
+
this.hasLeadingIcon = elements.length > 0;
|
|
165
|
+
this.hasAvatar = elements.some((el) => el.classList.contains('chip-avatar'));
|
|
166
|
+
}
|
|
167
|
+
handleRemoveIconSlotChange(event) {
|
|
168
|
+
const slot = event.target;
|
|
169
|
+
this.hasRemoveIcon = slot.assignedNodes({ flatten: true }).length > 0;
|
|
170
|
+
}
|
|
171
|
+
handleChange(event) {
|
|
172
|
+
this.selected = event.target.ariaPressed === 'true';
|
|
173
|
+
redispatchEvent(this, event);
|
|
174
|
+
}
|
|
175
|
+
handleRemove(event) {
|
|
176
|
+
event.stopPropagation();
|
|
177
|
+
if (this.disabled || this.softDisabled)
|
|
178
|
+
return;
|
|
179
|
+
this.dispatchEvent(new Event('remove', { bubbles: true, composed: true }));
|
|
180
|
+
}
|
|
181
|
+
}
|
|
182
|
+
ChipElement.styles = [
|
|
183
|
+
focusRingStyles,
|
|
184
|
+
rippleStyles,
|
|
185
|
+
chipStyles,
|
|
186
|
+
css `
|
|
187
|
+
:host {
|
|
188
|
+
display: inline-flex;
|
|
189
|
+
vertical-align: middle;
|
|
190
|
+
}
|
|
191
|
+
.chip {
|
|
192
|
+
flex: 1;
|
|
193
|
+
}
|
|
194
|
+
.chip-icon {
|
|
195
|
+
display: inline-flex;
|
|
196
|
+
align-items: center;
|
|
197
|
+
}
|
|
198
|
+
`,
|
|
199
|
+
];
|
|
200
|
+
__decorate([
|
|
201
|
+
property()
|
|
202
|
+
], ChipElement.prototype, "color", void 0);
|
|
203
|
+
__decorate([
|
|
204
|
+
property()
|
|
205
|
+
], ChipElement.prototype, "type", void 0);
|
|
206
|
+
__decorate([
|
|
207
|
+
property({ type: Boolean, reflect: true })
|
|
208
|
+
], ChipElement.prototype, "selected", void 0);
|
|
209
|
+
__decorate([
|
|
210
|
+
property({ type: Boolean, reflect: true })
|
|
211
|
+
], ChipElement.prototype, "removable", void 0);
|
|
212
|
+
__decorate([
|
|
213
|
+
property({ type: Boolean, reflect: true })
|
|
214
|
+
], ChipElement.prototype, "disabled", void 0);
|
|
215
|
+
__decorate([
|
|
216
|
+
property({ type: Boolean, attribute: 'soft-disabled', reflect: true })
|
|
217
|
+
], ChipElement.prototype, "softDisabled", void 0);
|
|
218
|
+
__decorate([
|
|
219
|
+
property()
|
|
220
|
+
], ChipElement.prototype, "href", void 0);
|
|
221
|
+
__decorate([
|
|
222
|
+
property()
|
|
223
|
+
], ChipElement.prototype, "target", void 0);
|
|
224
|
+
__decorate([
|
|
225
|
+
state()
|
|
226
|
+
], ChipElement.prototype, "hasLeadingIcon", void 0);
|
|
227
|
+
__decorate([
|
|
228
|
+
state()
|
|
229
|
+
], ChipElement.prototype, "hasAvatar", void 0);
|
|
230
|
+
__decorate([
|
|
231
|
+
state()
|
|
232
|
+
], ChipElement.prototype, "hasRemoveIcon", void 0);
|
|
233
|
+
//# sourceMappingURL=chip-element.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"chip-element.js","sourceRoot":"","sources":["chip-element.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * @license\n * Copyright 2026 Google LLC\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport {css, CSSResultOrNative, html, LitElement, nothing} from 'lit';\nimport {property, state} from 'lit/decorators.js';\nimport {redispatchEvent} from '../../../../internal/events/redispatch-event.js';\nimport focusRingStyles from '../focus/focus-ring.cssresult.js';\nimport rippleStyles from '../ripple/ripple.cssresult.js';\nimport {chip, type ChipColor, type ChipType} from './chip.js';\nimport {styles as chipStyles} from './chip.cssresult.js';\n\n/**\n * A Material Design Expressive Chip component (`md-gb-chip`).\n *\n * @slot - Used to display the chip label text.\n * @slot icon - Used to display an optional leading icon, checkmark, or avatar.\n * @slot remove-icon - Used to display the trailing remove button icon when `removable=\"true\"`.\n * @fires {Event} remove - Fired when the remove action is triggered on a removable chip. --bubbles --composed\n * @fires {Event} change - Fired when a filter/toggle chip's selection state changes. --bubbles\n * @fires {InputEvent} input - Fired when a filter/toggle chip's selection state changes. --bubbles --composed\n * @csspart chip - The root container element.\n * @cssprop --avatar-opacity\n * @cssprop --avatar-shape\n * @cssprop --avatar-size\n * @cssprop --container-color\n * @cssprop --container-elevation\n * @cssprop --container-opacity\n * @cssprop --gap-horizontal\n * @cssprop --height\n * @cssprop --label-text\n * @cssprop --label-text-color\n * @cssprop --label-text-opacity\n * @cssprop --leading-icon-color\n * @cssprop --leading-icon-opacity\n * @cssprop --leading-icon-size\n * @cssprop --outline-color\n * @cssprop --outline-opacity\n * @cssprop --outline-width\n * @cssprop --padding-bottom\n * @cssprop --padding-leading\n * @cssprop --padding-top\n * @cssprop --padding-trailing\n * @cssprop --shape\n * @cssprop --trailing-icon-color\n * @cssprop --trailing-icon-opacity\n * @cssprop --trailing-icon-size\n */\nexport class ChipElement extends LitElement {\n static override styles: CSSResultOrNative[] = [\n focusRingStyles,\n rippleStyles,\n chipStyles,\n css`\n :host {\n display: inline-flex;\n vertical-align: middle;\n }\n .chip {\n flex: 1;\n }\n .chip-icon {\n display: inline-flex;\n align-items: center;\n }\n `,\n ];\n\n /** The color emphasis of the chip. Defaults to `outlined`. */\n @property() color: ChipColor = 'outlined';\n\n /** The functional behavior type of the chip (`action`, `filter`, `toggle`, `link`). */\n @property() type: ChipType = 'action';\n\n /** Whether the filter or toggle chip is selected. */\n @property({type: Boolean, reflect: true}) selected = false;\n\n /** Whether the chip is removable. */\n @property({type: Boolean, reflect: true}) removable = false;\n\n /** Whether the chip is disabled. */\n @property({type: Boolean, reflect: true}) disabled = false;\n\n /** Whether the chip is soft-disabled (`aria-disabled=\"true\"` while preserving focusability). */\n @property({type: Boolean, attribute: 'soft-disabled', reflect: true})\n softDisabled = false;\n\n /** The URL destination if `type=\"link\"` or if `href` is set. */\n @property() href = '';\n\n /** Where to display the linked `href` URL for a link chip. */\n @property() target: '_blank' | '_parent' | '_self' | '_top' | '' = '';\n\n @state() private hasLeadingIcon = false;\n @state() private hasAvatar = false;\n @state() private hasRemoveIcon = false;\n\n protected override render() {\n const isFilterSelected =\n (this.type === 'filter' || this.type === 'toggle') && this.selected;\n const withLeadingIcon = this.hasLeadingIcon || isFilterSelected;\n const withAvatar = this.hasAvatar;\n\n const chipClasses = chip({\n color: this.color,\n type: this.href ? 'link' : this.type,\n selected: this.selected,\n removable: this.removable,\n disabled: this.softDisabled || this.disabled,\n withLeadingIcon: withLeadingIcon && !withAvatar,\n withAvatar,\n withTrailingIcon: this.removable || this.hasRemoveIcon,\n });\n\n if (this.href || this.type === 'link') {\n return html`<a\n part=\"chip\"\n class=\"${chipClasses}\"\n href=${this.href}\n target=${(this.target as '_blank' | '_parent' | '_self' | '_top') ||\n nothing}\n aria-disabled=${this.disabled || this.softDisabled ? 'true' : nothing}\n tabindex=${this.disabled && !this.softDisabled ? -1 : nothing}>\n ${this.renderContent(withLeadingIcon, isFilterSelected)}\n </a>`;\n }\n\n if (this.removable) {\n return html`<div\n part=\"chip\"\n class=\"${chipClasses}\"\n role=\"row\"\n aria-pressed=${this.type === 'filter' || this.type === 'toggle'\n ? (this.selected ? 'true' : 'false')\n : nothing}\n @change=${this.handleChange}>\n <button\n class=\"chip-action focus-ring-target\"\n type=\"button\"\n ?disabled=${this.disabled}\n aria-disabled=${this.softDisabled ? 'true' : nothing}>\n ${this.renderContent(withLeadingIcon, isFilterSelected)}\n </button>\n ${this.renderRemoveButton()}\n </div>`;\n }\n\n return html`<button\n part=\"chip\"\n class=\"${chipClasses}\"\n type=\"button\"\n ?disabled=${this.disabled}\n aria-disabled=${this.softDisabled ? 'true' : nothing}\n aria-pressed=${this.type === 'filter' || this.type === 'toggle'\n ? (this.selected ? 'true' : 'false')\n : nothing}\n @change=${this.handleChange}>\n ${this.renderContent(withLeadingIcon, isFilterSelected)}\n </button>`;\n }\n\n private renderContent(withLeadingIcon: boolean, isFilterSelected: boolean) {\n return html`\n ${this.renderLeadingIcon(withLeadingIcon, isFilterSelected)}\n <slot></slot>\n `;\n }\n\n private renderLeadingIcon(\n withLeadingIcon: boolean,\n isFilterSelected: boolean,\n ) {\n return html`<span\n class=\"chip-icon\"\n style=\"${withLeadingIcon ? '' : 'display: none;'}\">\n <slot name=\"icon\" @slotchange=${this.handleIconSlotChange}>\n ${isFilterSelected ? html`✓` : nothing}\n </slot>\n </span>`;\n }\n\n private renderRemoveButton() {\n return html`<button\n class=\"chip-remove focus-ring-outer\"\n type=\"button\"\n aria-label=\"Remove\"\n ?disabled=${this.disabled}\n aria-disabled=${this.softDisabled ? 'true' : nothing}\n @click=${this.handleRemove}>\n <slot\n name=\"remove-icon\"\n @slotchange=${this.handleRemoveIconSlotChange}\n >✕</slot\n >\n </button>`;\n }\n\n private handleIconSlotChange(event: Event) {\n const slot = event.target as HTMLSlotElement;\n const elements = slot.assignedElements({flatten: true});\n this.hasLeadingIcon = elements.length > 0;\n this.hasAvatar = elements.some((el) => el.classList.contains('chip-avatar'));\n }\n\n private handleRemoveIconSlotChange(event: Event) {\n const slot = event.target as HTMLSlotElement;\n this.hasRemoveIcon = slot.assignedNodes({flatten: true}).length > 0;\n }\n\n private handleChange(event: Event) {\n this.selected = (event.target as HTMLElement).ariaPressed === 'true';\n redispatchEvent(this, event);\n }\n\n private handleRemove(event: Event) {\n event.stopPropagation();\n if (this.disabled || this.softDisabled) return;\n this.dispatchEvent(new Event('remove', {bubbles: true, composed: true}));\n }\n}\n"]}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
/*!
|
|
2
|
+
* Copyright 2026 Google LLC
|
|
3
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
4
|
+
*/@layer md.sys, md.comp.ripple, md.comp.focus-ring;@layer md.comp.chip{.chip{--avatar-opacity: unset;--avatar-shape: var(--md-sys-shape-corner-full);--avatar-size: 24px;--container-color: unset;--container-elevation: var(--md-sys-elevation-shadow-0);--gap-horizontal: var(--md-sys-space-50);--height: 32px;--label-text: var(--md-sys-typescale-label-lg);--label-text-axes: var(--md-sys-typescale-label-lg-axes);--label-text-color: var(--md-sys-color-on-surface-variant);--label-text-tracking: var(--md-sys-typescale-label-lg-tracking);--leading-icon-color: var(--md-sys-color-on-surface-variant);--leading-icon-size: 18px;--outline-color: var(--md-sys-color-outline-variant);--outline-width: 1px;--padding-bottom: var(--md-sys-space-75);--padding-leading: var(--md-sys-space-200);--padding-top: var(--md-sys-space-75);--padding-trailing: var(--md-sys-space-200);--shape: var(--md-sys-shape-corner-md);--trailing-icon-color: var(--md-sys-color-on-surface-variant);--trailing-icon-size: 18px}.chip.chip-elevated{--container-color: var(--md-sys-color-surface-container-low);--container-elevation: var(--md-sys-elevation-shadow-1);--label-text-color: var(--md-sys-color-on-surface);--outline-width: 0}.chip.chip-filled{--container-color: var(--md-sys-color-surface-container);--container-elevation: var(--md-sys-elevation-shadow-0);--label-text-color: var(--md-sys-color-on-surface);--outline-width: 0}.chip.chip-tonal{--container-color: var(--md-sys-color-secondary-container);--container-elevation: var(--md-sys-elevation-shadow-0);--label-text-color: var(--md-sys-color-on-secondary-container);--outline-width: 0}.chip.chip-outlined{--container-color: transparent;--container-elevation: var(--md-sys-elevation-shadow-0);--label-text-color: var(--md-sys-color-on-surface);--outline-color: var(--md-sys-color-outline);--outline-width: 1px}.chip:is(.chip-selected,[aria-pressed=true]){--container-color: var(--md-sys-color-secondary-container);--label-text-color: var(--md-sys-color-on-secondary-container);--leading-icon-color: var(--md-sys-color-on-secondary-container);--outline-width: 0px;--shape: var(--md-sys-shape-corner-full);--trailing-icon-color: var(--md-sys-color-on-secondary-container)}.chip.chip-input{--padding-leading: var(--md-sys-space-150);--padding-trailing: var(--md-sys-space-150)}.chip.chip-with-leading-icon{--padding-leading: var(--md-sys-space-100)}.chip.chip-with-trailing-icon{--padding-trailing: var(--md-sys-space-100)}.chip.chip-with-avatar{--padding-leading: var(--md-sys-space-50)}.chip:is(:disabled,.disabled,[aria-disabled=true]){--avatar-opacity: 0.38;--label-text-color: hsl(from var(--md-sys-color-on-surface) h s l / 0.38);--leading-icon-color: hsl(from var(--md-sys-color-on-surface) h s l / 0.38);--outline-color: hsl(from var(--md-sys-color-on-surface) h s l / 0.1);--trailing-icon-color: hsl(from var(--md-sys-color-on-surface) h s l / 0.38)}.chip{display:inline-flex;align-items:center;justify-content:center;height:var(--height);gap:var(--gap-horizontal);padding-inline:var(--padding-leading) var(--padding-trailing);padding-block:var(--padding-top) var(--padding-bottom);border:var(--outline-width) solid var(--outline-color);border-radius:var(--shape);box-shadow:var(--container-elevation);background-color:var(--container-color);color:var(--label-text-color);font:var(--label-text);letter-spacing:var(--label-text-tracking);font-variation-settings:var(--label-text-axes);box-sizing:border-box;user-select:none;white-space:nowrap;--md-icon-color: var(--leading-icon-color);--md-icon-size: var(--leading-icon-size)}.chip:not(:disabled,.disabled,[aria-disabled=true]){cursor:pointer}.chip .chip-action,.chip .chip-remove{display:inline-flex;align-items:center;justify-content:center;gap:var(--gap-horizontal);background:rgba(0,0,0,0);border:none;outline:none;color:inherit;font:inherit;padding:0;margin:0;height:100%;cursor:inherit}.chip .chip-remove{border-radius:50%;aspect-ratio:1;margin-inline-start:4px;outline:var(--focus-ring-outline);--md-icon-color: var(--trailing-icon-color);--md-icon-size: var(--trailing-icon-size)}}/*# sourceMappingURL=chip.css.map */
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sourceRoot":"","sources":["chip.scss","_chip-tokens.scss"],"names":[],"mappings":"AAAA;AAAA;AAAA;AAAA,GASA,kDACA,oBACE,MCGA,wBAEA,gDAEA,oBACA,yBAEA,wDAGA,yCAEA,eAEA,+CAEA,yDAEA,2DAGA,iEAEA,6DAGA,0BAEA,qDAGA,qBAEA,yCAEA,2CAEA,sCAEA,4CAEA,uCAEA,8DAGA,2BD/CE,oBC+HF,6DACA,wDACA,mDACA,mBD/HE,kBCmIF,yDACA,wDACA,mDACA,mBDnIE,iBCuIF,2DACA,wDACA,+DACA,mBDvIE,oBC2IF,+BACA,wDACA,mDACA,6CACA,qBD5IE,6CCmDF,2DAEA,+DAEA,iEAEA,qBAEA,yCAEA,kEDvDE,iBC4DF,2CAEA,4CD3DE,6BCgEF,2CD7DE,8BCuEF,4CDpEE,uBC+DF,0CD5DE,mDCsEF,uBAGA,0EAGA,4EAGA,sEAGA,6ED9EE,MACE,oBACA,mBACA,uBACA,qBACA,0BACA,8DACA,uDACA,uDACA,2BACA,sCACA,wCACA,8BACA,uBACA,0CACA,+CACA,sBACA,iBACA,mBACA,2CACA,yCAEF,oDACE,eAGF,sCAEE,oBACA,mBACA,uBACA,0BACA,yBACA,YACA,aACA,cACA,aACA,UACA,SACA,YACA,eAEF,mBACE,kBACA,eACA,wBACA,kCACA,4CACA","file":"chip.css"}
|