@material/web 1.5.1 → 1.5.2-nightly.5b73f4c.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/_elevation.scss +2 -2
- package/button/internal/_filled-button.scss +1 -3
- package/button/internal/_filled-tonal-button.scss +1 -3
- package/button/internal/_icon.scss +1 -1
- package/button/internal/_outlined-button.scss +4 -6
- package/button/internal/_shared.scss +4 -4
- package/button/internal/_text-button.scss +1 -3
- package/button/internal/button.d.ts +11 -2
- package/button/internal/button.js +33 -13
- package/button/internal/button.js.map +1 -1
- 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 +1 -1
- package/button/internal/outlined-styles.css.map +1 -1
- package/button/internal/outlined-styles.js +1 -1
- package/button/internal/outlined-styles.js.map +1 -1
- package/button/internal/shared-elevation-styles.css +1 -1
- package/button/internal/shared-elevation-styles.css.map +1 -1
- package/button/internal/shared-elevation-styles.js +1 -1
- package/button/internal/shared-elevation-styles.js.map +1 -1
- package/button/internal/shared-styles.css +1 -1
- package/button/internal/shared-styles.css.map +1 -1
- package/button/internal/shared-styles.js +1 -1
- package/button/internal/shared-styles.js.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/checkbox/internal/checkbox.d.ts +1 -1
- package/checkbox/internal/checkbox.js +2 -5
- package/checkbox/internal/checkbox.js.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 +17 -4
- 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 +18 -1
- package/chips/internal/chip.js +49 -16
- 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.d.ts +3 -1
- package/dialog/internal/dialog.js +12 -6
- 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/fab/internal/shared.d.ts +3 -1
- package/fab/internal/shared.js +4 -5
- package/fab/internal/shared.js.map +1 -1
- package/field/internal/_filled-field.scss +1 -3
- package/field/internal/_outlined-field.scss +1 -3
- package/field/internal/field.js +2 -2
- package/field/internal/field.js.map +1 -1
- 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 +8 -10
- package/iconbutton/internal/_filled-tonal-icon-button.scss +8 -12
- package/iconbutton/internal/_icon-button.scss +4 -6
- package/iconbutton/internal/_outlined-icon-button.scss +8 -10
- package/iconbutton/internal/_shared.scss +3 -2
- package/iconbutton/internal/filled-styles.css +1 -1
- package/iconbutton/internal/filled-styles.css.map +1 -1
- package/iconbutton/internal/filled-styles.js +1 -1
- package/iconbutton/internal/filled-styles.js.map +1 -1
- package/iconbutton/internal/filled-tonal-styles.css +1 -1
- package/iconbutton/internal/filled-tonal-styles.css.map +1 -1
- package/iconbutton/internal/filled-tonal-styles.js +1 -1
- package/iconbutton/internal/filled-tonal-styles.js.map +1 -1
- package/iconbutton/internal/icon-button.d.ts +16 -4
- package/iconbutton/internal/icon-button.js +62 -30
- package/iconbutton/internal/icon-button.js.map +1 -1
- package/iconbutton/internal/outlined-styles.css +1 -1
- package/iconbutton/internal/outlined-styles.css.map +1 -1
- package/iconbutton/internal/outlined-styles.js +1 -1
- package/iconbutton/internal/outlined-styles.js.map +1 -1
- package/iconbutton/internal/shared-styles.css +1 -1
- package/iconbutton/internal/shared-styles.css.map +1 -1
- package/iconbutton/internal/shared-styles.js +1 -1
- package/iconbutton/internal/shared-styles.js.map +1 -1
- package/iconbutton/internal/standard-styles.css +1 -1
- package/iconbutton/internal/standard-styles.css.map +1 -1
- package/iconbutton/internal/standard-styles.js +1 -1
- package/iconbutton/internal/standard-styles.js.map +1 -1
- package/internal/aria/aria.js +1 -1
- package/internal/aria/aria.js.map +1 -1
- package/internal/aria/delegate.d.ts +34 -17
- package/internal/aria/delegate.js +149 -26
- package/internal/aria/delegate.js.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/navigationbar/internal/navigation-bar.d.ts +3 -1
- package/labs/navigationbar/internal/navigation-bar.js +4 -5
- package/labs/navigationbar/internal/navigation-bar.js.map +1 -1
- package/labs/navigationdrawer/internal/navigation-drawer-modal.d.ts +3 -1
- package/labs/navigationdrawer/internal/navigation-drawer-modal.js +4 -5
- package/labs/navigationdrawer/internal/navigation-drawer-modal.js.map +1 -1
- package/labs/navigationdrawer/internal/navigation-drawer.d.ts +3 -1
- package/labs/navigationdrawer/internal/navigation-drawer.js +4 -5
- package/labs/navigationdrawer/internal/navigation-drawer.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/navigationtab/internal/navigation-tab.d.ts +3 -1
- package/labs/navigationtab/internal/navigation-tab.js +4 -5
- package/labs/navigationtab/internal/navigation-tab.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/segmentedbutton/internal/segmented-button.d.ts +3 -1
- package/labs/segmentedbutton/internal/segmented-button.js +4 -5
- package/labs/segmentedbutton/internal/segmented-button.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/labs/segmentedbuttonset/internal/segmented-button-set.d.ts +3 -1
- package/labs/segmentedbuttonset/internal/segmented-button-set.js +4 -5
- package/labs/segmentedbuttonset/internal/segmented-button-set.js.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/list/internal/listitem/list-item.d.ts +3 -1
- package/list/internal/listitem/list-item.js +4 -5
- package/list/internal/listitem/list-item.js.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/menu/internal/menuitem/menu-item.d.ts +3 -1
- package/menu/internal/menuitem/menu-item.js +4 -5
- package/menu/internal/menuitem/menu-item.js.map +1 -1
- package/migrations/v2/query-selector-aria.d.ts +22 -0
- package/migrations/v2/query-selector-aria.js +30 -0
- package/migrations/v2/query-selector-aria.js.map +1 -0
- 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/progress/internal/progress.d.ts +3 -1
- package/progress/internal/progress.js +4 -5
- package/progress/internal/progress.js.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/select.d.ts +1 -1
- package/select/internal/select.js +2 -5
- package/select/internal/select.js.map +1 -1
- package/select/internal/selectoption/select-option.d.ts +2 -1
- package/select/internal/selectoption/select-option.js +4 -5
- package/select/internal/selectoption/select-option.js.map +1 -1
- package/slider/internal/_slider.scss +1 -3
- package/slider/internal/slider-styles.css.map +1 -1
- package/slider/internal/slider.d.ts +1 -1
- package/slider/internal/slider.js +3 -6
- package/slider/internal/slider.js.map +1 -1
- package/switch/internal/_switch.scss +1 -3
- package/switch/internal/switch-styles.css.map +1 -1
- package/switch/internal/switch.d.ts +1 -1
- package/switch/internal/switch.js +2 -5
- package/switch/internal/switch.js.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/tabs/internal/tabs.js +1 -1
- package/tabs/internal/tabs.js.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/textfield/internal/text-field.d.ts +1 -1
- package/textfield/internal/text-field.js +2 -5
- package/textfield/internal/text-field.js.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
|
@@ -9,7 +9,7 @@ import '../../ripple/ripple.js';
|
|
|
9
9
|
import { html, isServer, LitElement, nothing } from 'lit';
|
|
10
10
|
import { property, query, state } from 'lit/decorators.js';
|
|
11
11
|
import { classMap } from 'lit/directives/class-map.js';
|
|
12
|
-
import {
|
|
12
|
+
import { mixinDelegatesAria } from '../../internal/aria/delegate.js';
|
|
13
13
|
import { dispatchActivationClick, isActivationClick, } from '../../internal/events/form-label-activation.js';
|
|
14
14
|
import { redispatchEvent } from '../../internal/events/redispatch-event.js';
|
|
15
15
|
import { createValidator, getValidityAnchor, mixinConstraintValidation, } from '../../labs/behaviors/constraint-validation.js';
|
|
@@ -17,7 +17,7 @@ import { mixinElementInternals } from '../../labs/behaviors/element-internals.js
|
|
|
17
17
|
import { getFormState, getFormValue, mixinFormAssociated, } from '../../labs/behaviors/form-associated.js';
|
|
18
18
|
import { CheckboxValidator } from '../../labs/behaviors/validators/checkbox-validator.js';
|
|
19
19
|
// Separate variable needed for closure.
|
|
20
|
-
const checkboxBaseClass = mixinConstraintValidation(mixinFormAssociated(mixinElementInternals(LitElement)));
|
|
20
|
+
const checkboxBaseClass = mixinDelegatesAria(mixinConstraintValidation(mixinFormAssociated(mixinElementInternals(LitElement))));
|
|
21
21
|
/**
|
|
22
22
|
* A checkbox component.
|
|
23
23
|
*
|
|
@@ -160,9 +160,6 @@ export class Checkbox extends checkboxBaseClass {
|
|
|
160
160
|
return this.input;
|
|
161
161
|
}
|
|
162
162
|
}
|
|
163
|
-
(() => {
|
|
164
|
-
requestUpdateOnAriaChange(Checkbox);
|
|
165
|
-
})();
|
|
166
163
|
/** @nocollapse */
|
|
167
164
|
Checkbox.shadowRootOptions = {
|
|
168
165
|
...LitElement.shadowRootOptions,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"checkbox.js","sourceRoot":"","sources":["checkbox.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * @license\n * Copyright 2019 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, nothing, PropertyValues} from 'lit';\nimport {property, query, state} from 'lit/decorators.js';\nimport {classMap} from 'lit/directives/class-map.js';\n\nimport {ARIAMixinStrict} from '../../internal/aria/aria.js';\nimport {requestUpdateOnAriaChange} from '../../internal/aria/delegate.js';\nimport {\n dispatchActivationClick,\n isActivationClick,\n} from '../../internal/events/form-label-activation.js';\nimport {redispatchEvent} from '../../internal/events/redispatch-event.js';\nimport {\n createValidator,\n getValidityAnchor,\n mixinConstraintValidation,\n} from '../../labs/behaviors/constraint-validation.js';\nimport {mixinElementInternals} from '../../labs/behaviors/element-internals.js';\nimport {\n getFormState,\n getFormValue,\n mixinFormAssociated,\n} from '../../labs/behaviors/form-associated.js';\nimport {CheckboxValidator} from '../../labs/behaviors/validators/checkbox-validator.js';\n\n// Separate variable needed for closure.\nconst checkboxBaseClass = mixinConstraintValidation(\n mixinFormAssociated(mixinElementInternals(LitElement)),\n);\n\n/**\n * A checkbox component.\n *\n *\n * @fires change {Event} The native `change` event on\n * [`<input>`](https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement/change_event)\n * --bubbles\n * @fires input {InputEvent} The native `input` event on\n * [`<input>`](https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement/input_event)\n * --bubbles --composed\n */\nexport class Checkbox extends checkboxBaseClass {\n static {\n requestUpdateOnAriaChange(Checkbox);\n }\n\n /** @nocollapse */\n static override shadowRootOptions = {\n ...LitElement.shadowRootOptions,\n delegatesFocus: true,\n };\n\n /**\n * Whether or not the checkbox is selected.\n */\n @property({type: Boolean}) checked = false;\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 @state() private prevChecked = false;\n @state() private prevDisabled = false;\n @state() private prevIndeterminate = false;\n @query('input') private readonly input!: HTMLInputElement | null;\n\n constructor() {\n super();\n if (!isServer) {\n this.addEventListener('click', (event: MouseEvent) => {\n if (!isActivationClick(event) || !this.input) {\n return;\n }\n this.focus();\n dispatchActivationClick(this.input);\n });\n }\n }\n\n protected override update(changed: PropertyValues<Checkbox>) {\n if (\n changed.has('checked') ||\n changed.has('disabled') ||\n changed.has('indeterminate')\n ) {\n this.prevChecked = changed.get('checked') ?? this.checked;\n this.prevDisabled = changed.get('disabled') ?? this.disabled;\n this.prevIndeterminate =\n changed.get('indeterminate') ?? this.indeterminate;\n }\n\n super.update(changed);\n }\n\n protected override render() {\n const prevNone = !this.prevChecked && !this.prevIndeterminate;\n const prevChecked = this.prevChecked && !this.prevIndeterminate;\n const prevIndeterminate = this.prevIndeterminate;\n const isChecked = this.checked && !this.indeterminate;\n const isIndeterminate = this.indeterminate;\n\n const containerClasses = classMap({\n 'disabled': this.disabled,\n 'selected': isChecked || isIndeterminate,\n 'unselected': !isChecked && !isIndeterminate,\n 'checked': isChecked,\n 'indeterminate': isIndeterminate,\n 'prev-unselected': prevNone,\n 'prev-checked': prevChecked,\n 'prev-indeterminate': prevIndeterminate,\n 'prev-disabled': this.prevDisabled,\n });\n\n // Needed for closure conformance\n const {ariaLabel, ariaInvalid} = this as ARIAMixinStrict;\n // Note: <input> needs to be rendered before the <svg> for\n // form.reportValidity() to work in Chrome.\n return html`\n <div class=\"container ${containerClasses}\">\n <input\n type=\"checkbox\"\n id=\"input\"\n aria-checked=${isIndeterminate ? 'mixed' : nothing}\n aria-label=${ariaLabel || nothing}\n aria-invalid=${ariaInvalid || 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 <div class=\"outline\"></div>\n <div class=\"background\"></div>\n <md-focus-ring part=\"focus-ring\" for=\"input\"></md-focus-ring>\n <md-ripple for=\"input\" ?disabled=${this.disabled}></md-ripple>\n <svg class=\"icon\" viewBox=\"0 0 18 18\" aria-hidden=\"true\">\n <rect class=\"mark short\" />\n <rect class=\"mark long\" />\n </svg>\n </div>\n `;\n }\n\n private handleInput(event: Event) {\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 // <input> 'change' event is not composed, re-dispatch it.\n redispatchEvent(this, event);\n }\n\n // Writable mixin properties for lit-html binding, needed for lit-analyzer\n declare disabled: boolean;\n declare name: string;\n\n override [getFormValue]() {\n if (!this.checked || this.indeterminate) {\n return null;\n }\n\n return this.value;\n }\n\n override [getFormState]() {\n return String(this.checked);\n }\n\n override formResetCallback() {\n // The checked property does not reflect, so the original attribute set by\n // the user is used to determine the default value.\n this.checked = this.hasAttribute('checked');\n }\n\n override formStateRestoreCallback(state: string) {\n this.checked = state === 'true';\n }\n\n [createValidator]() {\n return new CheckboxValidator(() => this);\n }\n\n [getValidityAnchor]() {\n return this.input;\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"checkbox.js","sourceRoot":"","sources":["checkbox.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * @license\n * Copyright 2019 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, nothing, PropertyValues} from 'lit';\nimport {property, query, state} from 'lit/decorators.js';\nimport {classMap} from 'lit/directives/class-map.js';\n\nimport {ARIAMixinStrict} from '../../internal/aria/aria.js';\nimport {mixinDelegatesAria} from '../../internal/aria/delegate.js';\nimport {\n dispatchActivationClick,\n isActivationClick,\n} from '../../internal/events/form-label-activation.js';\nimport {redispatchEvent} from '../../internal/events/redispatch-event.js';\nimport {\n createValidator,\n getValidityAnchor,\n mixinConstraintValidation,\n} from '../../labs/behaviors/constraint-validation.js';\nimport {mixinElementInternals} from '../../labs/behaviors/element-internals.js';\nimport {\n getFormState,\n getFormValue,\n mixinFormAssociated,\n} from '../../labs/behaviors/form-associated.js';\nimport {CheckboxValidator} from '../../labs/behaviors/validators/checkbox-validator.js';\n\n// Separate variable needed for closure.\nconst checkboxBaseClass = mixinDelegatesAria(\n mixinConstraintValidation(\n mixinFormAssociated(mixinElementInternals(LitElement)),\n ),\n);\n\n/**\n * A checkbox component.\n *\n *\n * @fires change {Event} The native `change` event on\n * [`<input>`](https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement/change_event)\n * --bubbles\n * @fires input {InputEvent} The native `input` event on\n * [`<input>`](https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement/input_event)\n * --bubbles --composed\n */\nexport class Checkbox extends checkboxBaseClass {\n /** @nocollapse */\n static override shadowRootOptions = {\n ...LitElement.shadowRootOptions,\n delegatesFocus: true,\n };\n\n /**\n * Whether or not the checkbox is selected.\n */\n @property({type: Boolean}) checked = false;\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 @state() private prevChecked = false;\n @state() private prevDisabled = false;\n @state() private prevIndeterminate = false;\n @query('input') private readonly input!: HTMLInputElement | null;\n\n constructor() {\n super();\n if (!isServer) {\n this.addEventListener('click', (event: MouseEvent) => {\n if (!isActivationClick(event) || !this.input) {\n return;\n }\n this.focus();\n dispatchActivationClick(this.input);\n });\n }\n }\n\n protected override update(changed: PropertyValues<Checkbox>) {\n if (\n changed.has('checked') ||\n changed.has('disabled') ||\n changed.has('indeterminate')\n ) {\n this.prevChecked = changed.get('checked') ?? this.checked;\n this.prevDisabled = changed.get('disabled') ?? this.disabled;\n this.prevIndeterminate =\n changed.get('indeterminate') ?? this.indeterminate;\n }\n\n super.update(changed);\n }\n\n protected override render() {\n const prevNone = !this.prevChecked && !this.prevIndeterminate;\n const prevChecked = this.prevChecked && !this.prevIndeterminate;\n const prevIndeterminate = this.prevIndeterminate;\n const isChecked = this.checked && !this.indeterminate;\n const isIndeterminate = this.indeterminate;\n\n const containerClasses = classMap({\n 'disabled': this.disabled,\n 'selected': isChecked || isIndeterminate,\n 'unselected': !isChecked && !isIndeterminate,\n 'checked': isChecked,\n 'indeterminate': isIndeterminate,\n 'prev-unselected': prevNone,\n 'prev-checked': prevChecked,\n 'prev-indeterminate': prevIndeterminate,\n 'prev-disabled': this.prevDisabled,\n });\n\n // Needed for closure conformance\n const {ariaLabel, ariaInvalid} = this as ARIAMixinStrict;\n // Note: <input> needs to be rendered before the <svg> for\n // form.reportValidity() to work in Chrome.\n return html`\n <div class=\"container ${containerClasses}\">\n <input\n type=\"checkbox\"\n id=\"input\"\n aria-checked=${isIndeterminate ? 'mixed' : nothing}\n aria-label=${ariaLabel || nothing}\n aria-invalid=${ariaInvalid || 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 <div class=\"outline\"></div>\n <div class=\"background\"></div>\n <md-focus-ring part=\"focus-ring\" for=\"input\"></md-focus-ring>\n <md-ripple for=\"input\" ?disabled=${this.disabled}></md-ripple>\n <svg class=\"icon\" viewBox=\"0 0 18 18\" aria-hidden=\"true\">\n <rect class=\"mark short\" />\n <rect class=\"mark long\" />\n </svg>\n </div>\n `;\n }\n\n private handleInput(event: Event) {\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 // <input> 'change' event is not composed, re-dispatch it.\n redispatchEvent(this, event);\n }\n\n // Writable mixin properties for lit-html binding, needed for lit-analyzer\n declare disabled: boolean;\n declare name: string;\n\n override [getFormValue]() {\n if (!this.checked || this.indeterminate) {\n return null;\n }\n\n return this.value;\n }\n\n override [getFormState]() {\n return String(this.checked);\n }\n\n override formResetCallback() {\n // The checked property does not reflect, so the original attribute set by\n // the user is used to determine the default value.\n this.checked = this.hasAttribute('checked');\n }\n\n override formStateRestoreCallback(state: string) {\n this.checked = state === 'true';\n }\n\n [createValidator]() {\n return new CheckboxValidator(() => this);\n }\n\n [getValidityAnchor]() {\n return this.input;\n }\n}\n"]}
|
|
@@ -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
|
|
|
@@ -96,6 +96,9 @@
|
|
|
96
96
|
}
|
|
97
97
|
|
|
98
98
|
.primary.action {
|
|
99
|
+
// Set a min-width on the primary action so that trailing actions remain
|
|
100
|
+
// inside the chip as the chip is resized.
|
|
101
|
+
min-width: 0;
|
|
99
102
|
padding-inline-start: var(--_leading-space);
|
|
100
103
|
padding-inline-end: var(--_trailing-space);
|
|
101
104
|
}
|
|
@@ -151,11 +154,21 @@
|
|
|
151
154
|
display: flex;
|
|
152
155
|
font-family: var(--_label-text-font);
|
|
153
156
|
font-size: var(--_label-text-size);
|
|
154
|
-
line-height: var(--_label-text-line-height);
|
|
155
157
|
font-weight: var(--_label-text-weight);
|
|
156
158
|
height: 100%;
|
|
157
|
-
|
|
159
|
+
line-height: var(--_label-text-line-height);
|
|
160
|
+
overflow: hidden;
|
|
158
161
|
user-select: none;
|
|
162
|
+
}
|
|
163
|
+
|
|
164
|
+
// An inner span is needed to truncate the label, since elements with a flex
|
|
165
|
+
// display do not support the text-overflow property. The outer wrapper .label
|
|
166
|
+
// needs to be a flex display to correctly set the element's baseline,
|
|
167
|
+
// supporting external elements aligning to the baseline of the chip's text
|
|
168
|
+
// instead of its edges or icons.
|
|
169
|
+
.label-text {
|
|
170
|
+
overflow: hidden;
|
|
171
|
+
text-overflow: ellipsis;
|
|
159
172
|
white-space: nowrap;
|
|
160
173
|
}
|
|
161
174
|
|
|
@@ -229,7 +242,7 @@
|
|
|
229
242
|
}
|
|
230
243
|
|
|
231
244
|
a,
|
|
232
|
-
button:not(:disabled) {
|
|
245
|
+
button:not(:disabled, [aria-disabled='true']) {
|
|
233
246
|
cursor: inherit;
|
|
234
247
|
}
|
|
235
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
|
@@ -7,12 +7,13 @@ import '../../focus/md-focus-ring.js';
|
|
|
7
7
|
import '../../ripple/ripple.js';
|
|
8
8
|
import { LitElement, PropertyValues, TemplateResult } from 'lit';
|
|
9
9
|
import { ClassInfo } from 'lit/directives/class-map.js';
|
|
10
|
+
declare const chipBaseClass: import("../../labs/behaviors/mixin.js").MixinReturn<typeof LitElement>;
|
|
10
11
|
/**
|
|
11
12
|
* A chip component.
|
|
12
13
|
*
|
|
13
14
|
* @fires update-focus {Event} Dispatched when `disabled` is toggled. --bubbles
|
|
14
15
|
*/
|
|
15
|
-
export declare abstract class Chip extends
|
|
16
|
+
export declare abstract class Chip extends chipBaseClass {
|
|
16
17
|
/** @nocollapse */
|
|
17
18
|
static shadowRootOptions: {
|
|
18
19
|
delegatesFocus: boolean;
|
|
@@ -25,16 +26,29 @@ export declare abstract class Chip extends LitElement {
|
|
|
25
26
|
* Disabled chips are not focusable, unless `always-focusable` is set.
|
|
26
27
|
*/
|
|
27
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;
|
|
28
38
|
/**
|
|
29
39
|
* When true, allow disabled chips to be focused with arrow keys.
|
|
30
40
|
*
|
|
31
41
|
* Add this when a chip needs increased visibility when disabled. See
|
|
32
42
|
* https://www.w3.org/WAI/ARIA/apg/practices/keyboard-interface/#kbd_disabled_controls
|
|
33
43
|
* for more guidance on when this is needed.
|
|
44
|
+
*
|
|
45
|
+
* @deprecated Use `softDisabled` instead of `alwaysFocusable` + `disabled`.
|
|
34
46
|
*/
|
|
35
47
|
alwaysFocusable: boolean;
|
|
36
48
|
/**
|
|
37
49
|
* The label of the chip.
|
|
50
|
+
*
|
|
51
|
+
* @deprecated Set text as content of the chip instead.
|
|
38
52
|
*/
|
|
39
53
|
label: string;
|
|
40
54
|
/**
|
|
@@ -54,6 +68,7 @@ export declare abstract class Chip extends LitElement {
|
|
|
54
68
|
* Some chip actions such as links cannot be disabled.
|
|
55
69
|
*/
|
|
56
70
|
protected get rippleDisabled(): boolean;
|
|
71
|
+
constructor();
|
|
57
72
|
focus(options?: FocusOptions): void;
|
|
58
73
|
protected render(): TemplateResult<1>;
|
|
59
74
|
protected updated(changed: PropertyValues<Chip>): void;
|
|
@@ -64,4 +79,6 @@ export declare abstract class Chip extends LitElement {
|
|
|
64
79
|
protected abstract renderPrimaryAction(content: unknown): unknown;
|
|
65
80
|
private renderPrimaryContent;
|
|
66
81
|
private handleIconChange;
|
|
82
|
+
private handleClick;
|
|
67
83
|
}
|
|
84
|
+
export {};
|
package/chips/internal/chip.js
CHANGED
|
@@ -6,34 +6,57 @@
|
|
|
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
|
-
import {
|
|
12
|
+
import { mixinDelegatesAria } from '../../internal/aria/delegate.js';
|
|
13
|
+
// Separate variable needed for closure.
|
|
14
|
+
const chipBaseClass = mixinDelegatesAria(LitElement);
|
|
13
15
|
/**
|
|
14
16
|
* A chip component.
|
|
15
17
|
*
|
|
16
18
|
* @fires update-focus {Event} Dispatched when `disabled` is toggled. --bubbles
|
|
17
19
|
*/
|
|
18
|
-
export class Chip extends
|
|
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
|
+
}
|
|
19
28
|
constructor() {
|
|
20
|
-
super(
|
|
29
|
+
super();
|
|
21
30
|
/**
|
|
22
31
|
* Whether or not the chip is disabled.
|
|
23
32
|
*
|
|
24
33
|
* Disabled chips are not focusable, unless `always-focusable` is set.
|
|
25
34
|
*/
|
|
26
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;
|
|
27
45
|
/**
|
|
28
46
|
* When true, allow disabled chips to be focused with arrow keys.
|
|
29
47
|
*
|
|
30
48
|
* Add this when a chip needs increased visibility when disabled. See
|
|
31
49
|
* https://www.w3.org/WAI/ARIA/apg/practices/keyboard-interface/#kbd_disabled_controls
|
|
32
50
|
* for more guidance on when this is needed.
|
|
51
|
+
*
|
|
52
|
+
* @deprecated Use `softDisabled` instead of `alwaysFocusable` + `disabled`.
|
|
33
53
|
*/
|
|
34
54
|
this.alwaysFocusable = false;
|
|
55
|
+
// TODO(b/350810013): remove the label property.
|
|
35
56
|
/**
|
|
36
57
|
* The label of the chip.
|
|
58
|
+
*
|
|
59
|
+
* @deprecated Set text as content of the chip instead.
|
|
37
60
|
*/
|
|
38
61
|
this.label = '';
|
|
39
62
|
/**
|
|
@@ -43,13 +66,9 @@ export class Chip extends LitElement {
|
|
|
43
66
|
* Unstyled Content.
|
|
44
67
|
*/
|
|
45
68
|
this.hasIcon = false;
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
* Some chip actions such as links cannot be disabled.
|
|
50
|
-
*/
|
|
51
|
-
get rippleDisabled() {
|
|
52
|
-
return this.disabled;
|
|
69
|
+
if (!isServer) {
|
|
70
|
+
this.addEventListener('click', this.handleClick.bind(this));
|
|
71
|
+
}
|
|
53
72
|
}
|
|
54
73
|
focus(options) {
|
|
55
74
|
if (this.disabled && !this.alwaysFocusable) {
|
|
@@ -71,7 +90,7 @@ export class Chip extends LitElement {
|
|
|
71
90
|
}
|
|
72
91
|
getContainerClasses() {
|
|
73
92
|
return {
|
|
74
|
-
'disabled': this.disabled,
|
|
93
|
+
'disabled': this.disabled || this.softDisabled,
|
|
75
94
|
'has-icon': this.hasIcon,
|
|
76
95
|
};
|
|
77
96
|
}
|
|
@@ -96,7 +115,11 @@ export class Chip extends LitElement {
|
|
|
96
115
|
<span class="leading icon" aria-hidden="true">
|
|
97
116
|
${this.renderLeadingIcon()}
|
|
98
117
|
</span>
|
|
99
|
-
<span class="label"
|
|
118
|
+
<span class="label">
|
|
119
|
+
<span class="label-text" id="label">
|
|
120
|
+
${this.label ? this.label : html `<slot></slot>`}
|
|
121
|
+
</span>
|
|
122
|
+
</span>
|
|
100
123
|
<span class="touch"></span>
|
|
101
124
|
`;
|
|
102
125
|
}
|
|
@@ -104,10 +127,17 @@ export class Chip extends LitElement {
|
|
|
104
127
|
const slot = event.target;
|
|
105
128
|
this.hasIcon = slot.assignedElements({ flatten: true }).length > 0;
|
|
106
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
|
+
}
|
|
107
140
|
}
|
|
108
|
-
(() => {
|
|
109
|
-
requestUpdateOnAriaChange(Chip);
|
|
110
|
-
})();
|
|
111
141
|
/** @nocollapse */
|
|
112
142
|
Chip.shadowRootOptions = {
|
|
113
143
|
...LitElement.shadowRootOptions,
|
|
@@ -116,6 +146,9 @@ Chip.shadowRootOptions = {
|
|
|
116
146
|
__decorate([
|
|
117
147
|
property({ type: Boolean, reflect: true })
|
|
118
148
|
], Chip.prototype, "disabled", void 0);
|
|
149
|
+
__decorate([
|
|
150
|
+
property({ type: Boolean, attribute: 'soft-disabled', reflect: true })
|
|
151
|
+
], Chip.prototype, "softDisabled", void 0);
|
|
119
152
|
__decorate([
|
|
120
153
|
property({ type: Boolean, attribute: 'always-focusable' })
|
|
121
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;
|