@material/web 1.5.2-nightly.aea7781.0 → 1.5.2-nightly.d72193f.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/button/internal/_elevated-button.scss +1 -3
- package/button/internal/_filled-button.scss +1 -3
- package/button/internal/_filled-tonal-button.scss +1 -3
- package/button/internal/_outlined-button.scss +1 -3
- package/button/internal/_text-button.scss +1 -3
- package/button/internal/elevated-styles.css.map +1 -1
- package/button/internal/filled-styles.css.map +1 -1
- package/button/internal/filled-tonal-styles.css.map +1 -1
- package/button/internal/outlined-styles.css.map +1 -1
- package/button/internal/text-styles.css.map +1 -1
- package/checkbox/internal/_checkbox.scss +1 -3
- package/checkbox/internal/checkbox-styles.css.map +1 -1
- package/chips/internal/_assist-chip.scss +1 -3
- package/chips/internal/_filter-chip.scss +1 -3
- package/chips/internal/_input-chip.scss +1 -3
- package/chips/internal/_shared.scss +2 -2
- package/chips/internal/_suggestion-chip.scss +1 -3
- package/chips/internal/assist-chip.js +3 -2
- package/chips/internal/assist-chip.js.map +1 -1
- package/chips/internal/assist-styles.css.map +1 -1
- package/chips/internal/chip.d.ts +15 -0
- package/chips/internal/chip.js +43 -11
- package/chips/internal/chip.js.map +1 -1
- package/chips/internal/filter-chip.d.ts +1 -1
- package/chips/internal/filter-chip.js +5 -4
- package/chips/internal/filter-chip.js.map +1 -1
- package/chips/internal/filter-styles.css.map +1 -1
- package/chips/internal/input-chip.js +4 -3
- package/chips/internal/input-chip.js.map +1 -1
- package/chips/internal/input-styles.css.map +1 -1
- package/chips/internal/multi-action-chip.d.ts +1 -1
- package/chips/internal/multi-action-chip.js +5 -1
- package/chips/internal/multi-action-chip.js.map +1 -1
- package/chips/internal/shared-styles.css +1 -1
- package/chips/internal/shared-styles.css.map +1 -1
- package/chips/internal/shared-styles.js +1 -1
- package/chips/internal/shared-styles.js.map +1 -1
- package/chips/internal/suggestion-styles.css.map +1 -1
- package/chips/internal/trailing-icons.d.ts +1 -1
- package/chips/internal/trailing-icons.js +7 -2
- package/chips/internal/trailing-icons.js.map +1 -1
- package/dialog/internal/_dialog.scss +1 -3
- package/dialog/internal/dialog-styles.css.map +1 -1
- package/dialog/internal/dialog.js +8 -1
- package/dialog/internal/dialog.js.map +1 -1
- package/divider/internal/_divider.scss +1 -3
- package/divider/internal/divider-styles.css.map +1 -1
- package/elevation/internal/_elevation.scss +1 -3
- package/elevation/internal/elevation-styles.css.map +1 -1
- package/fab/internal/_fab-branded.scss +1 -3
- package/fab/internal/_fab.scss +1 -3
- package/fab/internal/fab-branded-styles.css.map +1 -1
- package/fab/internal/fab-styles.css.map +1 -1
- package/fab/internal/shared-styles.css.map +1 -1
- package/field/internal/_filled-field.scss +1 -3
- package/field/internal/_outlined-field.scss +1 -3
- package/field/internal/filled-styles.css.map +1 -1
- package/field/internal/outlined-styles.css.map +1 -1
- package/focus/internal/_focus-ring.scss +1 -3
- package/focus/internal/focus-ring-styles.css.map +1 -1
- package/icon/internal/_icon.scss +1 -3
- package/icon/internal/icon-styles.css.map +1 -1
- package/iconbutton/internal/_filled-icon-button.scss +1 -3
- package/iconbutton/internal/_filled-tonal-icon-button.scss +1 -3
- package/iconbutton/internal/_icon-button.scss +1 -3
- package/iconbutton/internal/_outlined-icon-button.scss +1 -3
- package/iconbutton/internal/filled-styles.css.map +1 -1
- package/iconbutton/internal/filled-tonal-styles.css.map +1 -1
- package/iconbutton/internal/outlined-styles.css.map +1 -1
- package/iconbutton/internal/standard-styles.css.map +1 -1
- package/labs/badge/internal/badge-styles.css +1 -1
- package/labs/badge/internal/badge-styles.css.map +1 -1
- package/labs/badge/internal/badge-styles.js +1 -1
- package/labs/badge/internal/badge-styles.js.map +1 -1
- package/labs/card/internal/_elevated-card.scss +1 -3
- package/labs/card/internal/_filled-card.scss +1 -3
- package/labs/card/internal/_outlined-card.scss +1 -3
- package/labs/card/internal/elevated-styles.css.map +1 -1
- package/labs/card/internal/filled-styles.css.map +1 -1
- package/labs/card/internal/outlined-styles.css.map +1 -1
- package/labs/navigationbar/internal/navigation-bar-styles.css +1 -1
- package/labs/navigationbar/internal/navigation-bar-styles.css.map +1 -1
- package/labs/navigationbar/internal/navigation-bar-styles.js +1 -1
- package/labs/navigationbar/internal/navigation-bar-styles.js.map +1 -1
- package/labs/navigationtab/internal/navigation-tab-styles.css +1 -1
- package/labs/navigationtab/internal/navigation-tab-styles.css.map +1 -1
- package/labs/navigationtab/internal/navigation-tab-styles.js +1 -1
- package/labs/navigationtab/internal/navigation-tab-styles.js.map +1 -1
- package/labs/segmentedbutton/internal/outlined-styles.css +1 -1
- package/labs/segmentedbutton/internal/outlined-styles.css.map +1 -1
- package/labs/segmentedbutton/internal/outlined-styles.js +1 -1
- package/labs/segmentedbutton/internal/outlined-styles.js.map +1 -1
- package/labs/segmentedbuttonset/internal/_outlined-segmented-button-set.scss +1 -3
- package/labs/segmentedbuttonset/internal/outlined-styles.css.map +1 -1
- package/list/internal/_list.scss +1 -3
- package/list/internal/list-styles.css.map +1 -1
- package/list/internal/listitem/_list-item.scss +1 -3
- package/list/internal/listitem/list-item-styles.css.map +1 -1
- package/menu/internal/_menu.scss +1 -3
- package/menu/internal/menu-styles.css.map +1 -1
- package/menu/internal/menuitem/_menu-item.scss +1 -3
- package/menu/internal/menuitem/menu-item-styles.css.map +1 -1
- package/package.json +1 -1
- package/progress/internal/_circular-progress.scss +1 -3
- package/progress/internal/_linear-progress.scss +1 -3
- package/progress/internal/circular-progress-styles.css.map +1 -1
- package/progress/internal/linear-progress-styles.css.map +1 -1
- package/radio/internal/_radio.scss +1 -3
- package/radio/internal/radio-styles.css.map +1 -1
- package/ripple/internal/_ripple.scss +1 -3
- package/ripple/internal/ripple-styles.css.map +1 -1
- package/select/internal/_filled-select.scss +1 -3
- package/select/internal/_outlined-select.scss +1 -3
- package/select/internal/filled-select-styles.css.map +1 -1
- package/select/internal/outlined-select-styles.css.map +1 -1
- package/select/internal/selectoption/selectOptionController.js +1 -1
- package/select/internal/selectoption/selectOptionController.js.map +1 -1
- package/slider/internal/_slider.scss +1 -3
- package/slider/internal/slider-styles.css.map +1 -1
- package/switch/internal/_switch.scss +1 -3
- package/switch/internal/switch-styles.css.map +1 -1
- package/tabs/internal/_primary-tab.scss +1 -3
- package/tabs/internal/_secondary-tab.scss +1 -3
- package/tabs/internal/primary-tab-styles.css.map +1 -1
- package/tabs/internal/secondary-tab-styles.css.map +1 -1
- package/textfield/internal/_filled-text-field.scss +1 -3
- package/textfield/internal/_outlined-text-field.scss +1 -3
- package/textfield/internal/filled-styles.css.map +1 -1
- package/textfield/internal/outlined-styles.css.map +1 -1
- package/tokens/_md-comp-assist-chip.scss +1 -3
- package/tokens/_md-comp-badge.scss +1 -3
- package/tokens/_md-comp-checkbox.scss +1 -3
- package/tokens/_md-comp-circular-progress.scss +1 -3
- package/tokens/_md-comp-dialog.scss +1 -3
- package/tokens/_md-comp-divider.scss +1 -3
- package/tokens/_md-comp-elevated-button.scss +1 -3
- package/tokens/_md-comp-elevated-card.scss +1 -3
- package/tokens/_md-comp-elevation.scss +1 -3
- package/tokens/_md-comp-fab-branded.scss +1 -3
- package/tokens/_md-comp-fab.scss +1 -3
- package/tokens/_md-comp-filled-button.scss +1 -3
- package/tokens/_md-comp-filled-card.scss +1 -3
- package/tokens/_md-comp-filled-field.scss +1 -3
- package/tokens/_md-comp-filled-icon-button.scss +1 -3
- package/tokens/_md-comp-filled-select.scss +1 -3
- package/tokens/_md-comp-filled-text-field.scss +1 -3
- package/tokens/_md-comp-filled-tonal-button.scss +1 -3
- package/tokens/_md-comp-filled-tonal-icon-button.scss +1 -3
- package/tokens/_md-comp-filter-chip.scss +1 -3
- package/tokens/_md-comp-focus-ring.scss +1 -3
- package/tokens/_md-comp-icon-button.scss +1 -3
- package/tokens/_md-comp-icon.scss +1 -3
- package/tokens/_md-comp-input-chip.scss +1 -3
- package/tokens/_md-comp-linear-progress.scss +1 -3
- package/tokens/_md-comp-list-item.scss +1 -3
- package/tokens/_md-comp-list.scss +1 -3
- package/tokens/_md-comp-menu-item.scss +3 -4
- package/tokens/_md-comp-menu.scss +1 -3
- package/tokens/_md-comp-navigation-bar.scss +1 -3
- package/tokens/_md-comp-navigation-drawer.scss +1 -3
- package/tokens/_md-comp-outlined-button.scss +1 -3
- package/tokens/_md-comp-outlined-card.scss +1 -3
- package/tokens/_md-comp-outlined-field.scss +1 -3
- package/tokens/_md-comp-outlined-icon-button.scss +1 -3
- package/tokens/_md-comp-outlined-segmented-button.scss +1 -3
- package/tokens/_md-comp-outlined-select.scss +1 -3
- package/tokens/_md-comp-outlined-text-field.scss +1 -3
- package/tokens/_md-comp-primary-tab.scss +1 -3
- package/tokens/_md-comp-radio.scss +1 -3
- package/tokens/_md-comp-ripple.scss +1 -3
- package/tokens/_md-comp-secondary-tab.scss +1 -3
- package/tokens/_md-comp-slider.scss +1 -3
- package/tokens/_md-comp-suggestion-chip.scss +1 -3
- package/tokens/_md-comp-switch.scss +1 -3
- package/tokens/_md-comp-text-button.scss +1 -3
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sourceRoot":"","sources":["_elevated-button.scss"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"sourceRoot":"","sources":["_elevated-button.scss"],"names":[],"mappings":"AA6BE,MAII","file":"elevated-styles.css"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sourceRoot":"","sources":["_filled-button.scss"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"sourceRoot":"","sources":["_filled-button.scss"],"names":[],"mappings":"AA6BE,MAII","file":"filled-styles.css"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sourceRoot":"","sources":["_filled-tonal-button.scss"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"sourceRoot":"","sources":["_filled-tonal-button.scss"],"names":[],"mappings":"AA6BE,MAII","file":"filled-tonal-styles.css"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sourceRoot":"","sources":["_outlined-button.scss"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"sourceRoot":"","sources":["_outlined-button.scss"],"names":[],"mappings":"AA6BE,MAII,+6HAGF,yBACA,kCACA,iCAGF,SACE,QACA,mBACA,kBACA,sBACA,mCACA,8DACA,0DACA,0DACA,sDAGF,wBACE,2CAGF,gDACE,4CACA,yCAGF,8BACE,mDAIE,sBAGF,gDACE,WAIJ,mBAEE,mCAGF,UACE,iDACA,gDACA,mBACA","file":"outlined-styles.css"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sourceRoot":"","sources":["_text-button.scss"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"sourceRoot":"","sources":["_text-button.scss"],"names":[],"mappings":"AA6BE,MAII,q0GAGF,yBACA,kCACA","file":"text-styles.css"}
|
|
@@ -38,9 +38,7 @@ $_checkmark-bottom-left: 7px, -14px;
|
|
|
38
38
|
}
|
|
39
39
|
|
|
40
40
|
@mixin styles() {
|
|
41
|
-
$tokens: tokens.md-comp-checkbox-values(
|
|
42
|
-
$exclude-custom-properties: false,
|
|
43
|
-
);
|
|
41
|
+
$tokens: tokens.md-comp-checkbox-values();
|
|
44
42
|
|
|
45
43
|
:host {
|
|
46
44
|
border-start-start-radius: map.get($tokens, 'container-shape-start-start');
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sourceRoot":"","sources":["_checkbox.scss","../../ripple/internal/_ripple.scss"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"sourceRoot":"","sources":["_checkbox.scss","../../ripple/internal/_ripple.scss"],"names":[],"mappings":"AA0CE,MACE,kHACA,8GACA,0GACA,8GACA,oBACA,+CACA,kBACA,mBACA,8CACA,0CACA,eAGF,kBACE,eAGF,8BACE,mEAGF,cACE,YACA,YACA,WAIF,MACE,gBACA,YACA,SACA,UACA,aACA,kBACA,WACA,UACA,eAGF,iCACE,YACA,WAGF,WACE,sBACA,aACA,YACA,qBACA,mBACA,kBACA,WAGF,2BAGE,QACA,kBAGF,qBAEE,sBAGF,SACE,+FACA,mBACA,mDACA,sBAGF,YACE,mGAIF,kBAEE,UACA,+BACA,sCAEA,kEAKA,qBAGF,yCACE,UAEA,+BAEA,kEAKA,mBAKF,UACE,4FACA,iDACA,YACA,gDCtIE,2XDkJJ,oBClJI,+ZDgKJ,MAQE,kFACA,0CACA,yCAKF,YACE,OAnLW,IAoLX,qCACA,MArLW,IAyLb,WACE,OA1LW,IA2LX,oCACA,WAIF,MACE,yBACA,0DAIA,0BACA,2DAOF,gBACE,yBACA,0DAIA,0BACA,2DAUA,8CASE,yDAGF,0DAIE,sBAGF,wDAIE,qBAQF,0DACE,wDAOJ,uBACE,yBAMF,oCACE,0CAEF,sCACE,KACE,SAMJ,wBACE,6FACA,yDAGF,2BACE,mGAGF,qBACE,wFAGF,+BACE,6FACA,yDAGF,kCACE,mGAGF,4BACE,wFAGF,yBACE,+FACA,2DAGF,4BACE,qGAGF,sBACE,0FAMF,8DACE,sBACA,uBAGF,2BACE,gGACA,4DACA,4DAGF,oCAGE,kBAGF,uCAGE,yGACA,qEAGF,wBACE,2FAGF,8BACE,YACE,4BAGF,+BACE,0BACA,UAGF,SACE,wBAGF,mBACE,sBACA,UAGF,MACE","file":"checkbox-styles.css"}
|
|
@@ -33,7 +33,7 @@
|
|
|
33
33
|
);
|
|
34
34
|
}
|
|
35
35
|
|
|
36
|
-
:host([disabled]) {
|
|
36
|
+
:host(:is([disabled], [soft-disabled])) {
|
|
37
37
|
pointer-events: none;
|
|
38
38
|
}
|
|
39
39
|
|
|
@@ -242,7 +242,7 @@
|
|
|
242
242
|
}
|
|
243
243
|
|
|
244
244
|
a,
|
|
245
|
-
button:not(:disabled) {
|
|
245
|
+
button:not(:disabled, [aria-disabled='true']) {
|
|
246
246
|
cursor: inherit;
|
|
247
247
|
}
|
|
248
248
|
}
|
|
@@ -23,13 +23,13 @@ export class AssistChip extends Chip {
|
|
|
23
23
|
}
|
|
24
24
|
get rippleDisabled() {
|
|
25
25
|
// Link chips cannot be disabled
|
|
26
|
-
return !this.href && this.disabled;
|
|
26
|
+
return !this.href && (this.disabled || this.softDisabled);
|
|
27
27
|
}
|
|
28
28
|
getContainerClasses() {
|
|
29
29
|
return {
|
|
30
30
|
...super.getContainerClasses(),
|
|
31
31
|
// Link chips cannot be disabled
|
|
32
|
-
disabled: !this.href && this.disabled,
|
|
32
|
+
disabled: !this.href && (this.disabled || this.softDisabled),
|
|
33
33
|
elevated: this.elevated,
|
|
34
34
|
link: !!this.href,
|
|
35
35
|
};
|
|
@@ -53,6 +53,7 @@ export class AssistChip extends Chip {
|
|
|
53
53
|
class="primary action"
|
|
54
54
|
id="button"
|
|
55
55
|
aria-label=${ariaLabel || nothing}
|
|
56
|
+
aria-disabled=${this.softDisabled || nothing}
|
|
56
57
|
?disabled=${this.disabled && !this.alwaysFocusable}
|
|
57
58
|
type="button"
|
|
58
59
|
>${content}</button
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"assist-chip.js","sourceRoot":"","sources":["assist-chip.ts"],"names":[],"mappings":"AAAA;;;;GAIG;;AAEH,OAAO,8BAA8B,CAAC;AAEtC,OAAO,EAAC,IAAI,EAAE,OAAO,EAAC,MAAM,KAAK,CAAC;AAClC,OAAO,EAAC,QAAQ,EAAC,MAAM,mBAAmB,CAAC;AAI3C,OAAO,EAAC,IAAI,EAAC,MAAM,WAAW,CAAC;AAE/B;;GAEG;AACH,MAAM,OAAO,UAAW,SAAQ,IAAI;IAApC;;QAC6B,aAAQ,GAAG,KAAK,CAAC;QAChC,SAAI,GAAG,EAAE,CAAC;QACV,WAAM,GAAiD,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"assist-chip.js","sourceRoot":"","sources":["assist-chip.ts"],"names":[],"mappings":"AAAA;;;;GAIG;;AAEH,OAAO,8BAA8B,CAAC;AAEtC,OAAO,EAAC,IAAI,EAAE,OAAO,EAAC,MAAM,KAAK,CAAC;AAClC,OAAO,EAAC,QAAQ,EAAC,MAAM,mBAAmB,CAAC;AAI3C,OAAO,EAAC,IAAI,EAAC,MAAM,WAAW,CAAC;AAE/B;;GAEG;AACH,MAAM,OAAO,UAAW,SAAQ,IAAI;IAApC;;QAC6B,aAAQ,GAAG,KAAK,CAAC;QAChC,SAAI,GAAG,EAAE,CAAC;QACV,WAAM,GAAiD,EAAE,CAAC;IAwDxE,CAAC;IAtDC,IAAc,SAAS;QACrB,OAAO,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC;IACvC,CAAC;IAED,IAAuB,cAAc;QACnC,gCAAgC;QAChC,OAAO,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,YAAY,CAAC,CAAC;IAC5D,CAAC;IAEkB,mBAAmB;QACpC,OAAO;YACL,GAAG,KAAK,CAAC,mBAAmB,EAAE;YAC9B,gCAAgC;YAChC,QAAQ,EAAE,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,YAAY,CAAC;YAC5D,QAAQ,EAAE,IAAI,CAAC,QAAQ;YACvB,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI;SAClB,CAAC;IACJ,CAAC;IAEkB,mBAAmB,CAAC,OAAgB;QACrD,MAAM,EAAC,SAAS,EAAC,GAAG,IAAuB,CAAC;QAC5C,IAAI,IAAI,CAAC,IAAI,EAAE;YACb,OAAO,IAAI,CAAA;;;;uBAIM,SAAS,IAAI,OAAO;iBAC1B,IAAI,CAAC,IAAI;mBACP,IAAI,CAAC,MAAM,IAAI,OAAO;aAC5B,OAAO;;OAEb,CAAC;SACH;QAED,OAAO,IAAI,CAAA;;;;qBAIM,SAAS,IAAI,OAAO;wBACjB,IAAI,CAAC,YAAY,IAAI,OAAO;oBAChC,IAAI,CAAC,QAAQ,IAAI,CAAC,IAAI,CAAC,eAAe;;WAE/C,OAAO;;KAEb,CAAC;IACJ,CAAC;IAEkB,aAAa;QAC9B,IAAI,IAAI,CAAC,QAAQ,EAAE;YACjB,OAAO,IAAI,CAAA,gDAAgD,CAAC;SAC7D;QAED,OAAO,KAAK,CAAC,aAAa,EAAE,CAAC;IAC/B,CAAC;CACF;AA1D4B;IAA1B,QAAQ,CAAC,EAAC,IAAI,EAAE,OAAO,EAAC,CAAC;4CAAkB;AAChC;IAAX,QAAQ,EAAE;wCAAW;AACV;IAAX,QAAQ,EAAE;0CAA2D","sourcesContent":["/**\n * @license\n * Copyright 2023 Google LLC\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport '../../elevation/elevation.js';\n\nimport {html, nothing} from 'lit';\nimport {property} from 'lit/decorators.js';\n\nimport {ARIAMixinStrict} from '../../internal/aria/aria.js';\n\nimport {Chip} from './chip.js';\n\n/**\n * An assist chip component.\n */\nexport class AssistChip extends Chip {\n @property({type: Boolean}) elevated = false;\n @property() href = '';\n @property() target: '_blank' | '_parent' | '_self' | '_top' | '' = '';\n\n protected get primaryId() {\n return this.href ? 'link' : 'button';\n }\n\n protected override get rippleDisabled() {\n // Link chips cannot be disabled\n return !this.href && (this.disabled || this.softDisabled);\n }\n\n protected override getContainerClasses() {\n return {\n ...super.getContainerClasses(),\n // Link chips cannot be disabled\n disabled: !this.href && (this.disabled || this.softDisabled),\n elevated: this.elevated,\n link: !!this.href,\n };\n }\n\n protected override renderPrimaryAction(content: unknown) {\n const {ariaLabel} = this as ARIAMixinStrict;\n if (this.href) {\n return html`\n <a\n class=\"primary action\"\n id=\"link\"\n aria-label=${ariaLabel || nothing}\n href=${this.href}\n target=${this.target || nothing}\n >${content}</a\n >\n `;\n }\n\n return html`\n <button\n class=\"primary action\"\n id=\"button\"\n aria-label=${ariaLabel || nothing}\n aria-disabled=${this.softDisabled || nothing}\n ?disabled=${this.disabled && !this.alwaysFocusable}\n type=\"button\"\n >${content}</button\n >\n `;\n }\n\n protected override renderOutline() {\n if (this.elevated) {\n return html`<md-elevation part=\"elevation\"></md-elevation>`;\n }\n\n return super.renderOutline();\n }\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sourceRoot":"","sources":["_assist-chip.scss"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"sourceRoot":"","sources":["_assist-chip.scss"],"names":[],"mappings":"AA6BE,MAII,omJAIJ,8BACE,eACE","file":"assist-styles.css"}
|
package/chips/internal/chip.d.ts
CHANGED
|
@@ -26,16 +26,29 @@ export declare abstract class Chip extends chipBaseClass {
|
|
|
26
26
|
* Disabled chips are not focusable, unless `always-focusable` is set.
|
|
27
27
|
*/
|
|
28
28
|
disabled: boolean;
|
|
29
|
+
/**
|
|
30
|
+
* Whether or not the chip is "soft-disabled" (disabled but still
|
|
31
|
+
* focusable).
|
|
32
|
+
*
|
|
33
|
+
* Use this when a chip needs increased visibility when disabled. See
|
|
34
|
+
* https://www.w3.org/WAI/ARIA/apg/practices/keyboard-interface/#kbd_disabled_controls
|
|
35
|
+
* for more guidance on when this is needed.
|
|
36
|
+
*/
|
|
37
|
+
softDisabled: boolean;
|
|
29
38
|
/**
|
|
30
39
|
* When true, allow disabled chips to be focused with arrow keys.
|
|
31
40
|
*
|
|
32
41
|
* Add this when a chip needs increased visibility when disabled. See
|
|
33
42
|
* https://www.w3.org/WAI/ARIA/apg/practices/keyboard-interface/#kbd_disabled_controls
|
|
34
43
|
* for more guidance on when this is needed.
|
|
44
|
+
*
|
|
45
|
+
* @deprecated Use `softDisabled` instead of `alwaysFocusable` + `disabled`.
|
|
35
46
|
*/
|
|
36
47
|
alwaysFocusable: boolean;
|
|
37
48
|
/**
|
|
38
49
|
* The label of the chip.
|
|
50
|
+
*
|
|
51
|
+
* @deprecated Set text as content of the chip instead.
|
|
39
52
|
*/
|
|
40
53
|
label: string;
|
|
41
54
|
/**
|
|
@@ -55,6 +68,7 @@ export declare abstract class Chip extends chipBaseClass {
|
|
|
55
68
|
* Some chip actions such as links cannot be disabled.
|
|
56
69
|
*/
|
|
57
70
|
protected get rippleDisabled(): boolean;
|
|
71
|
+
constructor();
|
|
58
72
|
focus(options?: FocusOptions): void;
|
|
59
73
|
protected render(): TemplateResult<1>;
|
|
60
74
|
protected updated(changed: PropertyValues<Chip>): void;
|
|
@@ -65,5 +79,6 @@ export declare abstract class Chip extends chipBaseClass {
|
|
|
65
79
|
protected abstract renderPrimaryAction(content: unknown): unknown;
|
|
66
80
|
private renderPrimaryContent;
|
|
67
81
|
private handleIconChange;
|
|
82
|
+
private handleClick;
|
|
68
83
|
}
|
|
69
84
|
export {};
|
package/chips/internal/chip.js
CHANGED
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
import { __decorate } from "tslib";
|
|
7
7
|
import '../../focus/md-focus-ring.js';
|
|
8
8
|
import '../../ripple/ripple.js';
|
|
9
|
-
import { html, LitElement } from 'lit';
|
|
9
|
+
import { html, isServer, LitElement } from 'lit';
|
|
10
10
|
import { property } from 'lit/decorators.js';
|
|
11
11
|
import { classMap } from 'lit/directives/class-map.js';
|
|
12
12
|
import { mixinDelegatesAria } from '../../internal/aria/delegate.js';
|
|
@@ -18,24 +18,45 @@ const chipBaseClass = mixinDelegatesAria(LitElement);
|
|
|
18
18
|
* @fires update-focus {Event} Dispatched when `disabled` is toggled. --bubbles
|
|
19
19
|
*/
|
|
20
20
|
export class Chip extends chipBaseClass {
|
|
21
|
+
/**
|
|
22
|
+
* Whether or not the primary ripple is disabled (defaults to `disabled`).
|
|
23
|
+
* Some chip actions such as links cannot be disabled.
|
|
24
|
+
*/
|
|
25
|
+
get rippleDisabled() {
|
|
26
|
+
return this.disabled || this.softDisabled;
|
|
27
|
+
}
|
|
21
28
|
constructor() {
|
|
22
|
-
super(
|
|
29
|
+
super();
|
|
23
30
|
/**
|
|
24
31
|
* Whether or not the chip is disabled.
|
|
25
32
|
*
|
|
26
33
|
* Disabled chips are not focusable, unless `always-focusable` is set.
|
|
27
34
|
*/
|
|
28
35
|
this.disabled = false;
|
|
36
|
+
/**
|
|
37
|
+
* Whether or not the chip is "soft-disabled" (disabled but still
|
|
38
|
+
* focusable).
|
|
39
|
+
*
|
|
40
|
+
* Use this when a chip needs increased visibility when disabled. See
|
|
41
|
+
* https://www.w3.org/WAI/ARIA/apg/practices/keyboard-interface/#kbd_disabled_controls
|
|
42
|
+
* for more guidance on when this is needed.
|
|
43
|
+
*/
|
|
44
|
+
this.softDisabled = false;
|
|
29
45
|
/**
|
|
30
46
|
* When true, allow disabled chips to be focused with arrow keys.
|
|
31
47
|
*
|
|
32
48
|
* Add this when a chip needs increased visibility when disabled. See
|
|
33
49
|
* https://www.w3.org/WAI/ARIA/apg/practices/keyboard-interface/#kbd_disabled_controls
|
|
34
50
|
* for more guidance on when this is needed.
|
|
51
|
+
*
|
|
52
|
+
* @deprecated Use `softDisabled` instead of `alwaysFocusable` + `disabled`.
|
|
35
53
|
*/
|
|
36
54
|
this.alwaysFocusable = false;
|
|
55
|
+
// TODO(b/350810013): remove the label property.
|
|
37
56
|
/**
|
|
38
57
|
* The label of the chip.
|
|
58
|
+
*
|
|
59
|
+
* @deprecated Set text as content of the chip instead.
|
|
39
60
|
*/
|
|
40
61
|
this.label = '';
|
|
41
62
|
/**
|
|
@@ -45,13 +66,9 @@ export class Chip extends chipBaseClass {
|
|
|
45
66
|
* Unstyled Content.
|
|
46
67
|
*/
|
|
47
68
|
this.hasIcon = false;
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
* Some chip actions such as links cannot be disabled.
|
|
52
|
-
*/
|
|
53
|
-
get rippleDisabled() {
|
|
54
|
-
return this.disabled;
|
|
69
|
+
if (!isServer) {
|
|
70
|
+
this.addEventListener('click', this.handleClick.bind(this));
|
|
71
|
+
}
|
|
55
72
|
}
|
|
56
73
|
focus(options) {
|
|
57
74
|
if (this.disabled && !this.alwaysFocusable) {
|
|
@@ -73,7 +90,7 @@ export class Chip extends chipBaseClass {
|
|
|
73
90
|
}
|
|
74
91
|
getContainerClasses() {
|
|
75
92
|
return {
|
|
76
|
-
'disabled': this.disabled,
|
|
93
|
+
'disabled': this.disabled || this.softDisabled,
|
|
77
94
|
'has-icon': this.hasIcon,
|
|
78
95
|
};
|
|
79
96
|
}
|
|
@@ -99,7 +116,9 @@ export class Chip extends chipBaseClass {
|
|
|
99
116
|
${this.renderLeadingIcon()}
|
|
100
117
|
</span>
|
|
101
118
|
<span class="label">
|
|
102
|
-
<span class="label-text"
|
|
119
|
+
<span class="label-text" id="label">
|
|
120
|
+
${this.label ? this.label : html `<slot></slot>`}
|
|
121
|
+
</span>
|
|
103
122
|
</span>
|
|
104
123
|
<span class="touch"></span>
|
|
105
124
|
`;
|
|
@@ -108,6 +127,16 @@ export class Chip extends chipBaseClass {
|
|
|
108
127
|
const slot = event.target;
|
|
109
128
|
this.hasIcon = slot.assignedElements({ flatten: true }).length > 0;
|
|
110
129
|
}
|
|
130
|
+
handleClick(event) {
|
|
131
|
+
// If the chip is soft-disabled or disabled + always-focusable, we need to
|
|
132
|
+
// explicitly prevent the click from propagating to other event listeners
|
|
133
|
+
// as well as prevent the default action.
|
|
134
|
+
if (this.softDisabled || (this.disabled && this.alwaysFocusable)) {
|
|
135
|
+
event.stopImmediatePropagation();
|
|
136
|
+
event.preventDefault();
|
|
137
|
+
return;
|
|
138
|
+
}
|
|
139
|
+
}
|
|
111
140
|
}
|
|
112
141
|
/** @nocollapse */
|
|
113
142
|
Chip.shadowRootOptions = {
|
|
@@ -117,6 +146,9 @@ Chip.shadowRootOptions = {
|
|
|
117
146
|
__decorate([
|
|
118
147
|
property({ type: Boolean, reflect: true })
|
|
119
148
|
], Chip.prototype, "disabled", void 0);
|
|
149
|
+
__decorate([
|
|
150
|
+
property({ type: Boolean, attribute: 'soft-disabled', reflect: true })
|
|
151
|
+
], Chip.prototype, "softDisabled", void 0);
|
|
120
152
|
__decorate([
|
|
121
153
|
property({ type: Boolean, attribute: 'always-focusable' })
|
|
122
154
|
], Chip.prototype, "alwaysFocusable", void 0);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"chip.js","sourceRoot":"","sources":["chip.ts"],"names":[],"mappings":"AAAA;;;;GAIG;;AAEH,OAAO,8BAA8B,CAAC;AACtC,OAAO,wBAAwB,CAAC;AAEhC,OAAO,EAAC,IAAI,EAAE,UAAU,EAAiC,MAAM,KAAK,CAAC;
|
|
1
|
+
{"version":3,"file":"chip.js","sourceRoot":"","sources":["chip.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * @license\n * Copyright 2023 Google LLC\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport '../../focus/md-focus-ring.js';\nimport '../../ripple/ripple.js';\n\nimport {html, isServer, LitElement, PropertyValues, TemplateResult} from 'lit';\nimport {property} from 'lit/decorators.js';\nimport {ClassInfo, classMap} from 'lit/directives/class-map.js';\n\nimport {mixinDelegatesAria} from '../../internal/aria/delegate.js';\n\n// Separate variable needed for closure.\nconst chipBaseClass = mixinDelegatesAria(LitElement);\n\n/**\n * A chip component.\n *\n * @fires update-focus {Event} Dispatched when `disabled` is toggled. --bubbles\n */\nexport abstract class Chip extends chipBaseClass {\n /** @nocollapse */\n static override shadowRootOptions = {\n ...LitElement.shadowRootOptions,\n delegatesFocus: true,\n };\n\n /**\n * Whether or not the chip is disabled.\n *\n * Disabled chips are not focusable, unless `always-focusable` is set.\n */\n @property({type: Boolean, reflect: true}) disabled = false;\n\n /**\n * Whether or not the chip is \"soft-disabled\" (disabled but still\n * focusable).\n *\n * Use this when a chip needs increased visibility when disabled. See\n * https://www.w3.org/WAI/ARIA/apg/practices/keyboard-interface/#kbd_disabled_controls\n * for more guidance on when this is needed.\n */\n @property({type: Boolean, attribute: 'soft-disabled', reflect: true})\n softDisabled = false;\n\n /**\n * When true, allow disabled chips to be focused with arrow keys.\n *\n * Add this when a chip needs increased visibility when disabled. See\n * https://www.w3.org/WAI/ARIA/apg/practices/keyboard-interface/#kbd_disabled_controls\n * for more guidance on when this is needed.\n *\n * @deprecated Use `softDisabled` instead of `alwaysFocusable` + `disabled`.\n */\n @property({type: Boolean, attribute: 'always-focusable'})\n alwaysFocusable = false;\n\n // TODO(b/350810013): remove the label property.\n /**\n * The label of the chip.\n *\n * @deprecated Set text as content of the chip instead.\n */\n @property() label = '';\n\n /**\n * Only needed for SSR.\n *\n * Add this attribute when a chip has a `slot=\"icon\"` to avoid a Flash Of\n * Unstyled Content.\n */\n @property({type: Boolean, reflect: true, attribute: 'has-icon'}) hasIcon =\n false;\n\n /**\n * The `id` of the action the primary focus ring and ripple are for.\n * TODO(b/310046938): use the same id for both elements\n */\n protected abstract readonly primaryId: string;\n\n /**\n * Whether or not the primary ripple is disabled (defaults to `disabled`).\n * Some chip actions such as links cannot be disabled.\n */\n protected get rippleDisabled() {\n return this.disabled || this.softDisabled;\n }\n\n constructor() {\n super();\n if (!isServer) {\n this.addEventListener('click', this.handleClick.bind(this));\n }\n }\n\n override focus(options?: FocusOptions) {\n if (this.disabled && !this.alwaysFocusable) {\n return;\n }\n\n super.focus(options);\n }\n\n protected override render() {\n return html`\n <div class=\"container ${classMap(this.getContainerClasses())}\">\n ${this.renderContainerContent()}\n </div>\n `;\n }\n\n protected override updated(changed: PropertyValues<Chip>) {\n if (changed.has('disabled') && changed.get('disabled') !== undefined) {\n this.dispatchEvent(new Event('update-focus', {bubbles: true}));\n }\n }\n\n protected getContainerClasses(): ClassInfo {\n return {\n 'disabled': this.disabled || this.softDisabled,\n 'has-icon': this.hasIcon,\n };\n }\n\n protected renderContainerContent() {\n return html`\n ${this.renderOutline()}\n <md-focus-ring part=\"focus-ring\" for=${this.primaryId}></md-focus-ring>\n <md-ripple\n for=${this.primaryId}\n ?disabled=${this.rippleDisabled}></md-ripple>\n ${this.renderPrimaryAction(this.renderPrimaryContent())}\n `;\n }\n\n protected renderOutline() {\n return html`<span class=\"outline\"></span>`;\n }\n\n protected renderLeadingIcon(): TemplateResult {\n return html`<slot name=\"icon\" @slotchange=${this.handleIconChange}></slot>`;\n }\n\n protected abstract renderPrimaryAction(content: unknown): unknown;\n\n private renderPrimaryContent() {\n return html`\n <span class=\"leading icon\" aria-hidden=\"true\">\n ${this.renderLeadingIcon()}\n </span>\n <span class=\"label\">\n <span class=\"label-text\" id=\"label\">\n ${this.label ? this.label : html`<slot></slot>`}\n </span>\n </span>\n <span class=\"touch\"></span>\n `;\n }\n\n private handleIconChange(event: Event) {\n const slot = event.target as HTMLSlotElement;\n this.hasIcon = slot.assignedElements({flatten: true}).length > 0;\n }\n\n private handleClick(event: Event) {\n // If the chip is soft-disabled or disabled + always-focusable, we need to\n // explicitly prevent the click from propagating to other event listeners\n // as well as prevent the default action.\n if (this.softDisabled || (this.disabled && this.alwaysFocusable)) {\n event.stopImmediatePropagation();\n event.preventDefault();\n return;\n }\n }\n}\n"]}
|
|
@@ -35,5 +35,5 @@ export declare class FilterChip extends MultiActionChip {
|
|
|
35
35
|
protected renderLeadingIcon(): import("lit-html").TemplateResult;
|
|
36
36
|
protected renderTrailingAction(focusListener: EventListener): import("lit-html").TemplateResult<1> | typeof nothing;
|
|
37
37
|
protected renderOutline(): import("lit-html").TemplateResult<1>;
|
|
38
|
-
private
|
|
38
|
+
private handleClickOnChild;
|
|
39
39
|
}
|
|
@@ -49,8 +49,9 @@ export class FilterChip extends MultiActionChip {
|
|
|
49
49
|
id="button"
|
|
50
50
|
aria-label=${ariaLabel || nothing}
|
|
51
51
|
aria-pressed=${this.selected}
|
|
52
|
+
aria-disabled=${this.softDisabled || nothing}
|
|
52
53
|
?disabled=${this.disabled && !this.alwaysFocusable}
|
|
53
|
-
@click=${this.
|
|
54
|
+
@click=${this.handleClickOnChild}
|
|
54
55
|
>${content}</button
|
|
55
56
|
>
|
|
56
57
|
`;
|
|
@@ -73,7 +74,7 @@ export class FilterChip extends MultiActionChip {
|
|
|
73
74
|
return renderRemoveButton({
|
|
74
75
|
focusListener,
|
|
75
76
|
ariaLabel: this.ariaLabelRemove,
|
|
76
|
-
disabled: this.disabled,
|
|
77
|
+
disabled: this.disabled || this.softDisabled,
|
|
77
78
|
});
|
|
78
79
|
}
|
|
79
80
|
return nothing;
|
|
@@ -84,8 +85,8 @@ export class FilterChip extends MultiActionChip {
|
|
|
84
85
|
}
|
|
85
86
|
return super.renderOutline();
|
|
86
87
|
}
|
|
87
|
-
|
|
88
|
-
if (this.disabled) {
|
|
88
|
+
handleClickOnChild(event) {
|
|
89
|
+
if (this.disabled || this.softDisabled) {
|
|
89
90
|
return;
|
|
90
91
|
}
|
|
91
92
|
// Store prevValue to revert in case `chip.selected` is changed during an
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"filter-chip.js","sourceRoot":"","sources":["filter-chip.ts"],"names":[],"mappings":"AAAA;;;;GAIG;;AAEH,OAAO,8BAA8B,CAAC;AAEtC,OAAO,EAAC,IAAI,EAAE,OAAO,EAAC,MAAM,KAAK,CAAC;AAClC,OAAO,EAAC,QAAQ,EAAE,KAAK,EAAC,MAAM,mBAAmB,CAAC;AAGlD,OAAO,EAAC,eAAe,EAAC,MAAM,2CAA2C,CAAC;AAE1E,OAAO,EAAC,eAAe,EAAC,MAAM,wBAAwB,CAAC;AACvD,OAAO,EAAC,kBAAkB,EAAC,MAAM,qBAAqB,CAAC;AAEvD;;;;GAIG;AACH,MAAM,OAAO,UAAW,SAAQ,eAAe;IAA/C;;QAC6B,aAAQ,GAAG,KAAK,CAAC;QACjB,cAAS,GAAG,KAAK,CAAC;QACH,aAAQ,GAAG,KAAK,CAAC;QAE3D;;;;;WAKG;QAEH,oBAAe,GAAG,KAAK,CAAC;
|
|
1
|
+
{"version":3,"file":"filter-chip.js","sourceRoot":"","sources":["filter-chip.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * @license\n * Copyright 2023 Google LLC\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport '../../elevation/elevation.js';\n\nimport {html, nothing} from 'lit';\nimport {property, query} from 'lit/decorators.js';\n\nimport {ARIAMixinStrict} from '../../internal/aria/aria.js';\nimport {redispatchEvent} from '../../internal/events/redispatch-event.js';\n\nimport {MultiActionChip} from './multi-action-chip.js';\nimport {renderRemoveButton} from './trailing-icons.js';\n\n/**\n * A filter chip component.\n *\n * @fires remove {Event} Dispatched when the remove button is clicked.\n */\nexport class FilterChip extends MultiActionChip {\n @property({type: Boolean}) elevated = false;\n @property({type: Boolean}) removable = false;\n @property({type: Boolean, reflect: true}) selected = false;\n\n /**\n * Only needed for SSR.\n *\n * Add this attribute when a filter chip has a `slot=\"selected-icon\"` to avoid\n * a Flash Of Unstyled Content.\n */\n @property({type: Boolean, reflect: true, attribute: 'has-selected-icon'})\n hasSelectedIcon = false;\n\n protected get primaryId() {\n return 'button';\n }\n\n @query('.primary.action')\n protected readonly primaryAction!: HTMLElement | null;\n @query('.trailing.action')\n protected readonly trailingAction!: HTMLElement | null;\n\n protected override getContainerClasses() {\n return {\n ...super.getContainerClasses(),\n elevated: this.elevated,\n selected: this.selected,\n 'has-trailing': this.removable,\n 'has-icon': this.hasIcon || this.selected,\n };\n }\n\n protected override renderPrimaryAction(content: unknown) {\n const {ariaLabel} = this as ARIAMixinStrict;\n return html`\n <button\n class=\"primary action\"\n id=\"button\"\n aria-label=${ariaLabel || nothing}\n aria-pressed=${this.selected}\n aria-disabled=${this.softDisabled || nothing}\n ?disabled=${this.disabled && !this.alwaysFocusable}\n @click=${this.handleClickOnChild}\n >${content}</button\n >\n `;\n }\n\n protected override renderLeadingIcon() {\n if (!this.selected) {\n return super.renderLeadingIcon();\n }\n\n return html`\n <slot name=\"selected-icon\">\n <svg class=\"checkmark\" viewBox=\"0 0 18 18\" aria-hidden=\"true\">\n <path\n d=\"M6.75012 12.1274L3.62262 8.99988L2.55762 10.0574L6.75012 14.2499L15.7501 5.24988L14.6926 4.19238L6.75012 12.1274Z\" />\n </svg>\n </slot>\n `;\n }\n\n protected override renderTrailingAction(focusListener: EventListener) {\n if (this.removable) {\n return renderRemoveButton({\n focusListener,\n ariaLabel: this.ariaLabelRemove,\n disabled: this.disabled || this.softDisabled,\n });\n }\n\n return nothing;\n }\n\n protected override renderOutline() {\n if (this.elevated) {\n return html`<md-elevation part=\"elevation\"></md-elevation>`;\n }\n\n return super.renderOutline();\n }\n\n private handleClickOnChild(event: MouseEvent) {\n if (this.disabled || this.softDisabled) {\n return;\n }\n\n // Store prevValue to revert in case `chip.selected` is changed during an\n // event listener.\n const prevValue = this.selected;\n this.selected = !this.selected;\n\n const preventDefault = !redispatchEvent(this, event);\n if (preventDefault) {\n // We should not do `this.selected = !this.selected`, since a client\n // click listener could change its value. Instead, always revert to the\n // original value.\n this.selected = prevValue;\n return;\n }\n }\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sourceRoot":"","sources":["_filter-chip.scss"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"sourceRoot":"","sources":["_filter-chip.scss"],"names":[],"mappings":"AA6BE,MAII,ktQAIJ,2BACE,qDAGF,WACE,yBACA,wBAGF,qBACE,8CAGF,8BACE,qBACE","file":"filter-styles.css"}
|
|
@@ -33,7 +33,7 @@ export class InputChip extends MultiActionChip {
|
|
|
33
33
|
}
|
|
34
34
|
get rippleDisabled() {
|
|
35
35
|
// Link chips cannot be disabled
|
|
36
|
-
return !this.href && this.disabled;
|
|
36
|
+
return !this.href && (this.disabled || this.softDisabled);
|
|
37
37
|
}
|
|
38
38
|
get primaryAction() {
|
|
39
39
|
// Don't use @query() since a remove-only input chip still has a span that
|
|
@@ -48,7 +48,7 @@ export class InputChip extends MultiActionChip {
|
|
|
48
48
|
...super.getContainerClasses(),
|
|
49
49
|
avatar: this.avatar,
|
|
50
50
|
// Link chips cannot be disabled
|
|
51
|
-
disabled: !this.href && this.disabled,
|
|
51
|
+
disabled: !this.href && (this.disabled || this.softDisabled),
|
|
52
52
|
link: !!this.href,
|
|
53
53
|
selected: this.selected,
|
|
54
54
|
'has-trailing': true,
|
|
@@ -80,6 +80,7 @@ export class InputChip extends MultiActionChip {
|
|
|
80
80
|
class="primary action"
|
|
81
81
|
id="button"
|
|
82
82
|
aria-label=${ariaLabel || nothing}
|
|
83
|
+
aria-disabled=${this.softDisabled || nothing}
|
|
83
84
|
?disabled=${this.disabled && !this.alwaysFocusable}
|
|
84
85
|
type="button"
|
|
85
86
|
>${content}</button
|
|
@@ -90,7 +91,7 @@ export class InputChip extends MultiActionChip {
|
|
|
90
91
|
return renderRemoveButton({
|
|
91
92
|
focusListener,
|
|
92
93
|
ariaLabel: this.ariaLabelRemove,
|
|
93
|
-
disabled: !this.href && this.disabled,
|
|
94
|
+
disabled: !this.href && (this.disabled || this.softDisabled),
|
|
94
95
|
tabbable: this.removeOnly,
|
|
95
96
|
});
|
|
96
97
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"input-chip.js","sourceRoot":"","sources":["input-chip.ts"],"names":[],"mappings":"AAAA;;;;GAIG;;AAEH,OAAO,EAAC,IAAI,EAAE,OAAO,EAAC,MAAM,KAAK,CAAC;AAClC,OAAO,EAAC,QAAQ,EAAE,KAAK,EAAC,MAAM,mBAAmB,CAAC;AAIlD,OAAO,EAAC,eAAe,EAAC,MAAM,wBAAwB,CAAC;AACvD,OAAO,EAAC,kBAAkB,EAAC,MAAM,qBAAqB,CAAC;AAEvD;;;;GAIG;AACH,MAAM,OAAO,SAAU,SAAQ,eAAe;IAA9C;;QAC6B,WAAM,GAAG,KAAK,CAAC;QAC9B,SAAI,GAAG,EAAE,CAAC;QACV,WAAM,GAAiD,EAAE,CAAC;QACjB,eAAU,GAAG,KAAK,CAAC;QAC9B,aAAQ,GAAG,KAAK,CAAC;
|
|
1
|
+
{"version":3,"file":"input-chip.js","sourceRoot":"","sources":["input-chip.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * @license\n * Copyright 2023 Google LLC\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport {html, nothing} from 'lit';\nimport {property, query} from 'lit/decorators.js';\n\nimport {ARIAMixinStrict} from '../../internal/aria/aria.js';\n\nimport {MultiActionChip} from './multi-action-chip.js';\nimport {renderRemoveButton} from './trailing-icons.js';\n\n/**\n * An input chip component.\n *\n * @fires remove {Event} Dispatched when the remove button is clicked.\n */\nexport class InputChip extends MultiActionChip {\n @property({type: Boolean}) avatar = false;\n @property() href = '';\n @property() target: '_blank' | '_parent' | '_self' | '_top' | '' = '';\n @property({type: Boolean, attribute: 'remove-only'}) removeOnly = false;\n @property({type: Boolean, reflect: true}) selected = false;\n\n protected get primaryId() {\n if (this.href) {\n return 'link';\n }\n\n if (this.removeOnly) {\n return '';\n }\n\n return 'button';\n }\n\n protected override get rippleDisabled() {\n // Link chips cannot be disabled\n return !this.href && (this.disabled || this.softDisabled);\n }\n\n protected get primaryAction() {\n // Don't use @query() since a remove-only input chip still has a span that\n // has \"primary action\" classes.\n if (this.removeOnly) {\n return null;\n }\n\n return this.renderRoot.querySelector<HTMLElement>('.primary.action');\n }\n\n @query('.trailing.action')\n protected readonly trailingAction!: HTMLElement | null;\n\n protected override getContainerClasses() {\n return {\n ...super.getContainerClasses(),\n avatar: this.avatar,\n // Link chips cannot be disabled\n disabled: !this.href && (this.disabled || this.softDisabled),\n link: !!this.href,\n selected: this.selected,\n 'has-trailing': true,\n };\n }\n\n protected override renderPrimaryAction(content: unknown) {\n const {ariaLabel} = this as ARIAMixinStrict;\n if (this.href) {\n return html`\n <a\n class=\"primary action\"\n id=\"link\"\n aria-label=${ariaLabel || nothing}\n href=${this.href}\n target=${this.target || nothing}\n >${content}</a\n >\n `;\n }\n\n if (this.removeOnly) {\n return html`\n <span class=\"primary action\" aria-label=${ariaLabel || nothing}>\n ${content}\n </span>\n `;\n }\n\n return html`\n <button\n class=\"primary action\"\n id=\"button\"\n aria-label=${ariaLabel || nothing}\n aria-disabled=${this.softDisabled || nothing}\n ?disabled=${this.disabled && !this.alwaysFocusable}\n type=\"button\"\n >${content}</button\n >\n `;\n }\n\n protected override renderTrailingAction(focusListener: EventListener) {\n return renderRemoveButton({\n focusListener,\n ariaLabel: this.ariaLabelRemove,\n disabled: !this.href && (this.disabled || this.softDisabled),\n tabbable: this.removeOnly,\n });\n }\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sourceRoot":"","sources":["_input-chip.scss"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"sourceRoot":"","sources":["_input-chip.scss"],"names":[],"mappings":"AA6BE,MAII,8sOAIJ,gBAIE,6JAIA,yJAIA,qJAIA,yJAMF,wBACE,yBAGF,8CACE,mCACA,2BACA,0BAGF,+BACE,wCAGF,8BACE,eACE,wBAGF,+BACE","file":"input-styles.css"}
|
|
@@ -8,7 +8,7 @@ import { Chip } from './chip.js';
|
|
|
8
8
|
* A chip component with multiple actions.
|
|
9
9
|
*/
|
|
10
10
|
export declare abstract class MultiActionChip extends Chip {
|
|
11
|
-
get ariaLabelRemove(): string;
|
|
11
|
+
get ariaLabelRemove(): string | null;
|
|
12
12
|
set ariaLabelRemove(ariaLabel: string | null);
|
|
13
13
|
protected abstract readonly primaryAction: HTMLElement | null;
|
|
14
14
|
protected abstract readonly trailingAction: HTMLElement | null;
|
|
@@ -15,7 +15,11 @@ export class MultiActionChip extends Chip {
|
|
|
15
15
|
return this.getAttribute(ARIA_LABEL_REMOVE);
|
|
16
16
|
}
|
|
17
17
|
const { ariaLabel } = this;
|
|
18
|
-
|
|
18
|
+
// TODO(b/350810013): remove `this.label` when label property is removed.
|
|
19
|
+
if (ariaLabel || this.label) {
|
|
20
|
+
return `Remove ${ariaLabel || this.label}`;
|
|
21
|
+
}
|
|
22
|
+
return null;
|
|
19
23
|
}
|
|
20
24
|
set ariaLabelRemove(ariaLabel) {
|
|
21
25
|
const prev = this.ariaLabelRemove;
|