@angular/material-experimental 13.0.0-rc.3 → 13.0.3
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/esm2020/column-resize/column-resize-directives/column-resize-flex.mjs +4 -4
- package/esm2020/column-resize/column-resize-directives/column-resize.mjs +4 -4
- package/esm2020/column-resize/column-resize-directives/default-enabled-column-resize-flex.mjs +4 -4
- package/esm2020/column-resize/column-resize-directives/default-enabled-column-resize.mjs +4 -4
- package/esm2020/column-resize/column-resize-module.mjs +13 -14
- package/esm2020/column-resize/overlay-handle.mjs +4 -4
- package/esm2020/column-resize/resizable-directives/default-enabled-resizable.mjs +4 -4
- package/esm2020/column-resize/resizable-directives/resizable.mjs +4 -4
- package/esm2020/column-resize/resize-strategy.mjs +4 -4
- package/esm2020/mdc-autocomplete/autocomplete-origin.mjs +4 -4
- package/esm2020/mdc-autocomplete/autocomplete-trigger.mjs +4 -4
- package/esm2020/mdc-autocomplete/autocomplete.mjs +4 -4
- package/esm2020/mdc-autocomplete/module.mjs +5 -5
- package/esm2020/mdc-button/button-base.mjs +15 -18
- package/esm2020/mdc-button/button.mjs +7 -7
- package/esm2020/mdc-button/fab.mjs +17 -38
- package/esm2020/mdc-button/icon-button.mjs +7 -7
- package/esm2020/mdc-button/module.mjs +5 -5
- package/esm2020/mdc-card/card.mjs +43 -43
- package/esm2020/mdc-card/module.mjs +5 -5
- package/esm2020/mdc-checkbox/checkbox.mjs +4 -4
- package/esm2020/mdc-checkbox/module.mjs +5 -5
- package/esm2020/mdc-chips/chip-edit-input.mjs +4 -4
- package/esm2020/mdc-chips/chip-grid.mjs +5 -5
- package/esm2020/mdc-chips/chip-icons.mjs +10 -10
- package/esm2020/mdc-chips/chip-input.mjs +4 -4
- package/esm2020/mdc-chips/chip-listbox.mjs +5 -5
- package/esm2020/mdc-chips/chip-option.mjs +6 -5
- package/esm2020/mdc-chips/chip-row.mjs +5 -5
- package/esm2020/mdc-chips/chip-set.mjs +5 -5
- package/esm2020/mdc-chips/chip.mjs +11 -18
- package/esm2020/mdc-chips/module.mjs +5 -5
- package/esm2020/mdc-core/option/index.mjs +5 -5
- package/esm2020/mdc-core/option/optgroup.mjs +4 -4
- package/esm2020/mdc-core/option/option.mjs +4 -4
- package/esm2020/mdc-dialog/dialog-container.mjs +4 -4
- package/esm2020/mdc-dialog/dialog-content-directives.mjs +13 -13
- package/esm2020/mdc-dialog/dialog.mjs +4 -4
- package/esm2020/mdc-dialog/module.mjs +5 -6
- package/esm2020/mdc-form-field/directives/error.mjs +4 -4
- package/esm2020/mdc-form-field/directives/floating-label.mjs +4 -4
- package/esm2020/mdc-form-field/directives/hint.mjs +4 -4
- package/esm2020/mdc-form-field/directives/label.mjs +4 -4
- package/esm2020/mdc-form-field/directives/line-ripple.mjs +4 -4
- package/esm2020/mdc-form-field/directives/notched-outline.mjs +4 -4
- package/esm2020/mdc-form-field/directives/prefix.mjs +4 -4
- package/esm2020/mdc-form-field/directives/suffix.mjs +4 -4
- package/esm2020/mdc-form-field/form-field.mjs +5 -4
- package/esm2020/mdc-form-field/module.mjs +5 -5
- package/esm2020/mdc-input/input.mjs +4 -4
- package/esm2020/mdc-input/module.mjs +5 -5
- package/esm2020/mdc-list/action-list.mjs +4 -4
- package/esm2020/mdc-list/interactive-list-base.mjs +15 -19
- package/esm2020/mdc-list/list-base.mjs +23 -23
- package/esm2020/mdc-list/list-option.mjs +5 -4
- package/esm2020/mdc-list/list-styling.mjs +13 -13
- package/esm2020/mdc-list/list.mjs +7 -7
- package/esm2020/mdc-list/module.mjs +5 -5
- package/esm2020/mdc-list/nav-list.mjs +4 -4
- package/esm2020/mdc-list/selection-list.mjs +5 -4
- package/esm2020/mdc-menu/directives.mjs +7 -7
- package/esm2020/mdc-menu/menu-item.mjs +4 -4
- package/esm2020/mdc-menu/menu.mjs +4 -4
- package/esm2020/mdc-menu/module.mjs +5 -5
- package/esm2020/mdc-paginator/module.mjs +5 -5
- package/esm2020/mdc-paginator/paginator.mjs +4 -4
- package/esm2020/mdc-progress-bar/module.mjs +5 -5
- package/esm2020/mdc-progress-bar/progress-bar.mjs +4 -4
- package/esm2020/mdc-progress-spinner/module.mjs +5 -5
- package/esm2020/mdc-progress-spinner/progress-spinner.mjs +4 -4
- package/esm2020/mdc-radio/module.mjs +5 -5
- package/esm2020/mdc-radio/radio.mjs +9 -9
- package/esm2020/mdc-select/module.mjs +5 -5
- package/esm2020/mdc-select/select.mjs +7 -7
- package/esm2020/mdc-sidenav/module.mjs +5 -5
- package/esm2020/mdc-slide-toggle/module.mjs +5 -5
- package/esm2020/mdc-slide-toggle/slide-toggle.mjs +7 -12
- package/esm2020/mdc-slider/global-change-and-input-listener.mjs +4 -4
- package/esm2020/mdc-slider/module.mjs +5 -5
- package/esm2020/mdc-slider/slider.mjs +10 -10
- package/esm2020/mdc-snack-bar/module.mjs +5 -6
- package/esm2020/mdc-snack-bar/simple-snack-bar.mjs +4 -4
- package/esm2020/mdc-snack-bar/snack-bar-container.mjs +4 -4
- package/esm2020/mdc-snack-bar/snack-bar-content.mjs +10 -10
- package/esm2020/mdc-snack-bar/snack-bar.mjs +4 -4
- package/esm2020/mdc-table/cell.mjs +22 -22
- package/esm2020/mdc-table/module.mjs +5 -5
- package/esm2020/mdc-table/row.mjs +22 -22
- package/esm2020/mdc-table/table.mjs +7 -7
- package/esm2020/mdc-table/text-column.mjs +4 -4
- package/esm2020/mdc-tabs/module.mjs +5 -5
- package/esm2020/mdc-tabs/tab-body.mjs +7 -7
- package/esm2020/mdc-tabs/tab-content.mjs +4 -4
- package/esm2020/mdc-tabs/tab-group.mjs +4 -4
- package/esm2020/mdc-tabs/tab-header.mjs +8 -5
- package/esm2020/mdc-tabs/tab-label-wrapper.mjs +4 -4
- package/esm2020/mdc-tabs/tab-label.mjs +4 -4
- package/esm2020/mdc-tabs/tab-nav-bar/tab-nav-bar.mjs +11 -8
- package/esm2020/mdc-tabs/tab.mjs +4 -4
- package/esm2020/mdc-tooltip/module.mjs +5 -6
- package/esm2020/mdc-tooltip/tooltip.mjs +7 -7
- package/esm2020/menubar/menubar-item.mjs +4 -4
- package/esm2020/menubar/menubar-module.mjs +5 -5
- package/esm2020/menubar/menubar.mjs +4 -4
- package/esm2020/popover-edit/lens-directives.mjs +10 -10
- package/esm2020/popover-edit/popover-edit-module.mjs +5 -5
- package/esm2020/popover-edit/table-directives.mjs +13 -13
- package/esm2020/selection/row-selection.mjs +5 -18
- package/esm2020/selection/select-all.mjs +4 -4
- package/esm2020/selection/selection-column.mjs +5 -5
- package/esm2020/selection/selection-module.mjs +5 -5
- package/esm2020/selection/selection-toggle.mjs +5 -18
- package/esm2020/selection/selection.mjs +4 -4
- package/esm2020/version.mjs +1 -1
- package/fesm2015/column-resize.mjs +36 -37
- package/fesm2015/column-resize.mjs.map +1 -1
- package/fesm2015/material-experimental.mjs +1 -1
- package/fesm2015/material-experimental.mjs.map +1 -1
- package/fesm2015/mdc-autocomplete.mjs +13 -13
- package/fesm2015/mdc-autocomplete.mjs.map +1 -1
- package/fesm2015/mdc-button.mjs +44 -76
- package/fesm2015/mdc-button.mjs.map +1 -1
- package/fesm2015/mdc-card.mjs +46 -46
- package/fesm2015/mdc-card.mjs.map +1 -1
- package/fesm2015/mdc-checkbox.mjs +7 -7
- package/fesm2015/mdc-checkbox.mjs.map +1 -1
- package/fesm2015/mdc-chips.mjs +50 -56
- package/fesm2015/mdc-chips.mjs.map +1 -1
- package/fesm2015/mdc-core.mjs +10 -10
- package/fesm2015/mdc-core.mjs.map +1 -1
- package/fesm2015/mdc-dialog.mjs +22 -23
- package/fesm2015/mdc-dialog.mjs.map +1 -1
- package/fesm2015/mdc-form-field.mjs +33 -31
- package/fesm2015/mdc-form-field.mjs.map +1 -1
- package/fesm2015/mdc-input.mjs +7 -7
- package/fesm2015/mdc-input.mjs.map +1 -1
- package/fesm2015/mdc-list.mjs +71 -73
- package/fesm2015/mdc-list.mjs.map +1 -1
- package/fesm2015/mdc-menu.mjs +16 -16
- package/fesm2015/mdc-menu.mjs.map +1 -1
- package/fesm2015/mdc-paginator.mjs +7 -7
- package/fesm2015/mdc-paginator.mjs.map +1 -1
- package/fesm2015/mdc-progress-bar.mjs +7 -7
- package/fesm2015/mdc-progress-bar.mjs.map +1 -1
- package/fesm2015/mdc-progress-spinner.mjs +7 -7
- package/fesm2015/mdc-progress-spinner.mjs.map +1 -1
- package/fesm2015/mdc-radio.mjs +12 -12
- package/fesm2015/mdc-radio.mjs.map +1 -1
- package/fesm2015/mdc-select.mjs +10 -10
- package/fesm2015/mdc-select.mjs.map +1 -1
- package/fesm2015/mdc-sidenav.mjs +4 -4
- package/fesm2015/mdc-sidenav.mjs.map +1 -1
- package/fesm2015/mdc-slide-toggle.mjs +10 -15
- package/fesm2015/mdc-slide-toggle.mjs.map +1 -1
- package/fesm2015/mdc-slider.mjs +16 -16
- package/fesm2015/mdc-slider.mjs.map +1 -1
- package/fesm2015/mdc-snack-bar.mjs +22 -23
- package/fesm2015/mdc-snack-bar.mjs.map +1 -1
- package/fesm2015/mdc-table.mjs +55 -55
- package/fesm2015/mdc-table.mjs.map +1 -1
- package/fesm2015/mdc-tabs.mjs +42 -36
- package/fesm2015/mdc-tabs.mjs.map +1 -1
- package/fesm2015/mdc-tooltip.mjs +10 -11
- package/fesm2015/mdc-tooltip.mjs.map +1 -1
- package/fesm2015/menubar.mjs +10 -10
- package/fesm2015/menubar.mjs.map +1 -1
- package/fesm2015/popover-edit.mjs +25 -25
- package/fesm2015/popover-edit.mjs.map +1 -1
- package/fesm2015/selection.mjs +23 -47
- package/fesm2015/selection.mjs.map +1 -1
- package/fesm2020/column-resize.mjs +36 -37
- package/fesm2020/column-resize.mjs.map +1 -1
- package/fesm2020/material-experimental.mjs +1 -1
- package/fesm2020/material-experimental.mjs.map +1 -1
- package/fesm2020/mdc-autocomplete.mjs +13 -13
- package/fesm2020/mdc-autocomplete.mjs.map +1 -1
- package/fesm2020/mdc-button.mjs +46 -70
- package/fesm2020/mdc-button.mjs.map +1 -1
- package/fesm2020/mdc-card.mjs +46 -46
- package/fesm2020/mdc-card.mjs.map +1 -1
- package/fesm2020/mdc-checkbox.mjs +7 -7
- package/fesm2020/mdc-checkbox.mjs.map +1 -1
- package/fesm2020/mdc-chips.mjs +50 -56
- package/fesm2020/mdc-chips.mjs.map +1 -1
- package/fesm2020/mdc-core.mjs +10 -10
- package/fesm2020/mdc-core.mjs.map +1 -1
- package/fesm2020/mdc-dialog.mjs +22 -23
- package/fesm2020/mdc-dialog.mjs.map +1 -1
- package/fesm2020/mdc-form-field.mjs +32 -31
- package/fesm2020/mdc-form-field.mjs.map +1 -1
- package/fesm2020/mdc-input.mjs +7 -7
- package/fesm2020/mdc-input.mjs.map +1 -1
- package/fesm2020/mdc-list.mjs +71 -73
- package/fesm2020/mdc-list.mjs.map +1 -1
- package/fesm2020/mdc-menu.mjs +16 -16
- package/fesm2020/mdc-menu.mjs.map +1 -1
- package/fesm2020/mdc-paginator.mjs +7 -7
- package/fesm2020/mdc-paginator.mjs.map +1 -1
- package/fesm2020/mdc-progress-bar.mjs +7 -7
- package/fesm2020/mdc-progress-bar.mjs.map +1 -1
- package/fesm2020/mdc-progress-spinner.mjs +7 -7
- package/fesm2020/mdc-progress-spinner.mjs.map +1 -1
- package/fesm2020/mdc-radio.mjs +12 -12
- package/fesm2020/mdc-radio.mjs.map +1 -1
- package/fesm2020/mdc-select.mjs +10 -10
- package/fesm2020/mdc-select.mjs.map +1 -1
- package/fesm2020/mdc-sidenav.mjs +4 -4
- package/fesm2020/mdc-sidenav.mjs.map +1 -1
- package/fesm2020/mdc-slide-toggle.mjs +10 -15
- package/fesm2020/mdc-slide-toggle.mjs.map +1 -1
- package/fesm2020/mdc-slider.mjs +16 -16
- package/fesm2020/mdc-slider.mjs.map +1 -1
- package/fesm2020/mdc-snack-bar.mjs +22 -23
- package/fesm2020/mdc-snack-bar.mjs.map +1 -1
- package/fesm2020/mdc-table.mjs +55 -55
- package/fesm2020/mdc-table.mjs.map +1 -1
- package/fesm2020/mdc-tabs.mjs +42 -36
- package/fesm2020/mdc-tabs.mjs.map +1 -1
- package/fesm2020/mdc-tooltip.mjs +10 -11
- package/fesm2020/mdc-tooltip.mjs.map +1 -1
- package/fesm2020/menubar.mjs +10 -10
- package/fesm2020/menubar.mjs.map +1 -1
- package/fesm2020/popover-edit.mjs +25 -25
- package/fesm2020/popover-edit.mjs.map +1 -1
- package/fesm2020/selection.mjs +23 -47
- package/fesm2020/selection.mjs.map +1 -1
- package/mdc-button/fab.d.ts +1 -1
- package/mdc-helpers/_mdc-helpers.scss +15 -2
- package/mdc-list/_interactive-list-theme.scss +2 -2
- package/mdc-slider/_slider-theme.scss +1 -1
- package/mdc-tabs/_tabs-common.scss +4 -2
- package/mdc-tabs/tab-header.d.ts +1 -0
- package/mdc-tabs/tab-nav-bar/tab-nav-bar.d.ts +1 -0
- package/mdc-theming/prebuilt/indigo-pink.css +1 -1
- package/package.json +3 -3
- package/selection/row-selection.d.ts +8 -4
- package/selection/selection-toggle.d.ts +8 -4
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mdc-chips.mjs","sources":["../../../../../../src/material-experimental/mdc-chips/chip-icons.ts","../../../../../../src/material-experimental/mdc-chips/chip.ts","../../../../../../src/material-experimental/mdc-chips/chip.html","../../../../../../src/material-experimental/mdc-chips/chip-option.ts","../../../../../../src/material-experimental/mdc-chips/chip-option.html","../../../../../../src/material-experimental/mdc-chips/chip-edit-input.ts","../../../../../../src/material-experimental/mdc-chips/chip-row.ts","../../../../../../src/material-experimental/mdc-chips/chip-row.html","../../../../../../src/material-experimental/mdc-chips/chip-set.ts","../../../../../../src/material-experimental/mdc-chips/chip-listbox.ts","../../../../../../src/material-experimental/mdc-chips/grid-key-manager.ts","../../../../../../src/material-experimental/mdc-chips/grid-focus-key-manager.ts","../../../../../../src/material-experimental/mdc-chips/chip-grid.ts","../../../../../../src/material-experimental/mdc-chips/chip-default-options.ts","../../../../../../src/material-experimental/mdc-chips/chip-input.ts","../../../../../../src/material-experimental/mdc-chips/module.ts","../../../../../../src/material-experimental/mdc-chips/public-api.ts","../../../../../../src/material-experimental/mdc-chips/index.ts","../../../../../../src/material-experimental/mdc-chips/mdc-chips_public_index.ts"],"sourcesContent":["/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {BooleanInput, NumberInput} from '@angular/cdk/coercion';\nimport {ChangeDetectorRef, Directive, ElementRef, InjectionToken, OnDestroy} from '@angular/core';\nimport {\n CanDisable,\n HasTabIndex,\n mixinDisabled,\n mixinTabIndex,\n} from '@angular/material-experimental/mdc-core';\nimport {deprecated} from '@material/chips';\nimport {Subject} from 'rxjs';\n\n/**\n * Injection token that can be used to reference instances of `MatChipAvatar`. It serves as\n * alternative token to the actual `MatChipAvatar` class which could cause unnecessary\n * retention of the class and its directive metadata.\n */\nexport const MAT_CHIP_AVATAR = new InjectionToken<MatChipAvatar>('MatChipAvatar');\n\n/**\n * Directive to add CSS classes to chip leading icon.\n * @docs-private\n */\n@Directive({\n selector: 'mat-chip-avatar, [matChipAvatar]',\n host: {\n 'class': 'mat-mdc-chip-avatar mdc-chip__icon mdc-chip__icon--leading',\n 'role': 'img',\n },\n providers: [{provide: MAT_CHIP_AVATAR, useExisting: MatChipAvatar}],\n})\nexport class MatChipAvatar {\n constructor(\n private _changeDetectorRef: ChangeDetectorRef,\n private _elementRef: ElementRef<HTMLElement>,\n ) {}\n\n /** Sets whether the given CSS class should be applied to the leading icon. */\n setClass(cssClass: string, active: boolean) {\n this._elementRef.nativeElement.classList.toggle(cssClass, active);\n this._changeDetectorRef.markForCheck();\n }\n}\n\n/**\n * Injection token that can be used to reference instances of `MatChipTrailingIcon`. It serves as\n * alternative token to the actual `MatChipTrailingIcon` class which could cause unnecessary\n * retention of the class and its directive metadata.\n */\nexport const MAT_CHIP_TRAILING_ICON = new InjectionToken<MatChipTrailingIcon>(\n 'MatChipTrailingIcon',\n);\n\n/**\n * Directive to add CSS classes to and configure attributes for chip trailing icon.\n * @docs-private\n */\n@Directive({\n selector: 'mat-chip-trailing-icon, [matChipTrailingIcon]',\n host: {\n 'class': 'mat-mdc-chip-trailing-icon mdc-chip__icon mdc-chip__icon--trailing',\n 'tabindex': '-1',\n 'aria-hidden': 'true',\n },\n providers: [{provide: MAT_CHIP_TRAILING_ICON, useExisting: MatChipTrailingIcon}],\n})\nexport class MatChipTrailingIcon implements OnDestroy {\n private _foundation: deprecated.MDCChipTrailingActionFoundation;\n private _adapter: deprecated.MDCChipTrailingActionAdapter = {\n focus: () => this._elementRef.nativeElement.focus(),\n getAttribute: (name: string) => this._elementRef.nativeElement.getAttribute(name),\n setAttribute: (name: string, value: string) => {\n this._elementRef.nativeElement.setAttribute(name, value);\n },\n // TODO(crisbeto): there's also a `trigger` parameter that the chip isn't\n // handling yet. Consider passing it along once MDC start using it.\n notifyInteraction: () => {\n // TODO(crisbeto): uncomment this code once we've inverted the\n // dependency on `MatChip`. this._chip._notifyInteraction();\n },\n\n // TODO(crisbeto): there's also a `key` parameter that the chip isn't\n // handling yet. Consider passing it along once MDC start using it.\n notifyNavigation: () => {\n // TODO(crisbeto): uncomment this code once we've inverted the\n // dependency on `MatChip`. this._chip._notifyNavigation();\n },\n };\n\n constructor(\n // TODO(crisbeto): currently the chip needs a reference to the trailing\n // icon for the deprecated `setTrailingActionAttr` method. Until the\n // method is removed, we can't use the chip here, because it causes a\n // circular import. private _chip: MatChip\n public _elementRef: ElementRef,\n ) {\n this._foundation = new deprecated.MDCChipTrailingActionFoundation(this._adapter);\n }\n\n ngOnDestroy() {\n this._foundation.destroy();\n }\n\n focus() {\n this._elementRef.nativeElement.focus();\n }\n\n /** Sets an attribute on the icon. */\n setAttribute(name: string, value: string) {\n this._elementRef.nativeElement.setAttribute(name, value);\n }\n\n isNavigable() {\n return this._foundation.isNavigable();\n }\n}\n\n/**\n * Injection token that can be used to reference instances of `MatChipRemove`. It serves as\n * alternative token to the actual `MatChipRemove` class which could cause unnecessary\n * retention of the class and its directive metadata.\n */\nexport const MAT_CHIP_REMOVE = new InjectionToken<MatChipRemove>('MatChipRemove');\n\n/**\n * Boilerplate for applying mixins to MatChipRemove.\n * @docs-private\n */\nclass MatChipRemoveBase extends MatChipTrailingIcon {\n constructor(elementRef: ElementRef) {\n super(elementRef);\n }\n}\n\nconst _MatChipRemoveMixinBase = mixinTabIndex(mixinDisabled(MatChipRemoveBase), 0);\n\n/**\n * Directive to remove the parent chip when the trailing icon is clicked or\n * when the ENTER key is pressed on it.\n *\n * Recommended for use with the Material Design \"cancel\" icon\n * available at https://material.io/icons/#ic_cancel.\n *\n * Example:\n *\n * ```\n * <mat-chip>\n * <mat-icon matChipRemove>cancel</mat-icon>\n * </mat-chip>\n * ```\n */\n@Directive({\n selector: '[matChipRemove]',\n inputs: ['disabled', 'tabIndex'],\n host: {\n 'class': `mat-mdc-chip-remove mat-mdc-chip-trailing-icon mat-mdc-focus-indicator\n mdc-chip__icon mdc-chip__icon--trailing`,\n '[tabIndex]': 'tabIndex',\n 'role': 'button',\n '(click)': '_handleClick($event)',\n '(keydown)': 'interaction.next($event)',\n\n // We need to remove this explicitly, because it gets inherited from MatChipTrailingIcon.\n '[attr.aria-hidden]': 'null',\n },\n providers: [{provide: MAT_CHIP_REMOVE, useExisting: MatChipRemove}],\n})\nexport class MatChipRemove extends _MatChipRemoveMixinBase implements CanDisable, HasTabIndex {\n /**\n * Emits when the user interacts with the icon.\n * @docs-private\n */\n readonly interaction = new Subject<MouseEvent | KeyboardEvent>();\n\n constructor(elementRef: ElementRef) {\n super(elementRef);\n\n if (elementRef.nativeElement.nodeName === 'BUTTON') {\n elementRef.nativeElement.setAttribute('type', 'button');\n }\n }\n\n /** Emits a MouseEvent when the user clicks on the remove icon. */\n _handleClick(event: MouseEvent): void {\n this.interaction.next(event);\n\n event.stopPropagation();\n }\n\n override focus() {\n this._elementRef.nativeElement.focus();\n }\n\n static ngAcceptInputType_disabled: BooleanInput;\n static ngAcceptInputType_tabIndex: NumberInput;\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {Directionality} from '@angular/cdk/bidi';\nimport {BooleanInput, coerceBooleanProperty, NumberInput} from '@angular/cdk/coercion';\nimport {ANIMATION_MODULE_TYPE} from '@angular/platform-browser/animations';\nimport {\n AfterContentInit,\n AfterViewInit,\n Component,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n ContentChild,\n Directive,\n ElementRef,\n EventEmitter,\n HostListener,\n Inject,\n Input,\n NgZone,\n OnDestroy,\n Optional,\n Output,\n ViewEncapsulation,\n ViewChild,\n} from '@angular/core';\nimport {\n CanColor,\n CanDisable,\n CanDisableRipple,\n HasTabIndex,\n MatRipple,\n MAT_RIPPLE_GLOBAL_OPTIONS,\n mixinColor,\n mixinDisableRipple,\n mixinTabIndex,\n RippleGlobalOptions,\n} from '@angular/material-experimental/mdc-core';\nimport {deprecated} from '@material/chips';\nimport {SPACE, ENTER, hasModifierKey} from '@angular/cdk/keycodes';\nimport {Subject} from 'rxjs';\nimport {takeUntil} from 'rxjs/operators';\nimport {\n MatChipAvatar,\n MatChipTrailingIcon,\n MatChipRemove,\n MAT_CHIP_AVATAR,\n MAT_CHIP_TRAILING_ICON,\n MAT_CHIP_REMOVE,\n} from './chip-icons';\n\nlet uid = 0;\n\n/** Represents an event fired on an individual `mat-chip`. */\nexport interface MatChipEvent {\n /** The chip the event was fired on. */\n chip: MatChip;\n}\n\n/**\n * Directive to add MDC CSS to non-basic chips.\n * @docs-private\n */\n@Directive({\n selector: `mat-chip, mat-chip-option, mat-chip-row, [mat-chip], [mat-chip-option],\n [mat-chip-row]`,\n host: {'class': 'mat-mdc-chip mdc-chip'},\n})\nexport class MatChipCssInternalOnly {}\n\n/**\n * Boilerplate for applying mixins to MatChip.\n * @docs-private\n */\nabstract class MatChipBase {\n abstract disabled: boolean;\n constructor(public _elementRef: ElementRef) {}\n}\n\nconst _MatChipMixinBase = mixinTabIndex(mixinColor(mixinDisableRipple(MatChipBase), 'primary'), -1);\n\n/**\n * Material design styled Chip base component. Used inside the MatChipSet component.\n *\n * Extended by MatChipOption and MatChipRow for different interaction patterns.\n */\n@Component({\n selector: 'mat-basic-chip, mat-chip',\n inputs: ['color', 'disableRipple'],\n exportAs: 'matChip',\n templateUrl: 'chip.html',\n styleUrls: ['chips.css'],\n host: {\n '[class.mat-mdc-chip-disabled]': 'disabled',\n '[class.mat-mdc-chip-highlighted]': 'highlighted',\n '[class.mat-mdc-chip-with-avatar]': 'leadingIcon',\n '[class.mat-mdc-chip-with-trailing-icon]': 'trailingIcon || removeIcon',\n '[class.mat-mdc-basic-chip]': '_isBasicChip',\n '[class.mat-mdc-standard-chip]': '!_isBasicChip',\n '[class._mat-animation-noopable]': '_animationsDisabled',\n '[id]': 'id',\n '[attr.disabled]': 'disabled || null',\n '[attr.aria-disabled]': 'disabled.toString()',\n },\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class MatChip\n extends _MatChipMixinBase\n implements\n AfterContentInit,\n AfterViewInit,\n CanColor,\n CanDisableRipple,\n CanDisable,\n HasTabIndex,\n OnDestroy\n{\n /** Whether the ripple is centered on the chip. */\n readonly _isRippleCentered = false;\n\n /** Emits when the chip is focused. */\n readonly _onFocus = new Subject<MatChipEvent>();\n\n /** Emits when the chip is blurred. */\n readonly _onBlur = new Subject<MatChipEvent>();\n\n readonly REMOVE_ICON_HANDLED_KEYS: ReadonlySet<number> = new Set([SPACE, ENTER]);\n\n /** Whether this chip is a basic (unstyled) chip. */\n readonly _isBasicChip: boolean;\n\n /** Whether the chip has focus. */\n protected _hasFocusInternal = false;\n\n /** Whether animations for the chip are enabled. */\n _animationsDisabled: boolean;\n\n // We have to use a `HostListener` here in order to support both Ivy and ViewEngine.\n // In Ivy the `host` bindings will be merged when this class is extended, whereas in\n // ViewEngine they're overwritten.\n // TODO(mmalerba): we move this back into `host` once Ivy is turned on by default.\n // tslint:disable-next-line:no-host-decorator-in-concrete\n @HostListener('transitionend', ['$event'])\n _handleTransitionEnd(event: TransitionEvent) {\n this._chipFoundation.handleTransitionEnd(event);\n }\n\n _hasFocus() {\n return this._hasFocusInternal;\n }\n\n /** Default unique id for the chip. */\n private _uniqueId = `mat-mdc-chip-${uid++}`;\n\n /** A unique id for the chip. If none is supplied, it will be auto-generated. */\n @Input() id: string = this._uniqueId;\n\n @Input()\n get disabled(): boolean {\n return this._disabled;\n }\n set disabled(value: boolean) {\n this._disabled = coerceBooleanProperty(value);\n if (this.removeIcon) {\n this.removeIcon.disabled = value;\n }\n }\n protected _disabled: boolean = false;\n\n private _textElement!: HTMLElement;\n\n /** The value of the chip. Defaults to the content inside the mdc-chip__text element. */\n @Input()\n get value(): any {\n return this._value !== undefined ? this._value : this._textElement.textContent!.trim();\n }\n set value(value: any) {\n this._value = value;\n }\n protected _value: any;\n\n /**\n * Determines whether or not the chip displays the remove styling and emits (removed) events.\n */\n @Input()\n get removable(): boolean {\n return this._removable;\n }\n set removable(value: boolean) {\n this._removable = coerceBooleanProperty(value);\n }\n protected _removable: boolean = true;\n\n /**\n * Colors the chip for emphasis as if it were selected.\n */\n @Input()\n get highlighted(): boolean {\n return this._highlighted;\n }\n set highlighted(value: boolean) {\n this._highlighted = coerceBooleanProperty(value);\n }\n protected _highlighted: boolean = false;\n\n /** Emitted when the user interacts with the chip. */\n @Output() readonly interaction = new EventEmitter<string>();\n\n /** Emitted when the chip is destroyed. */\n @Output() readonly destroyed: EventEmitter<MatChipEvent> = new EventEmitter<MatChipEvent>();\n\n /** Emitted when a chip is to be removed. */\n @Output() readonly removed: EventEmitter<MatChipEvent> = new EventEmitter<MatChipEvent>();\n\n /** The MDC foundation containing business logic for MDC chip. */\n _chipFoundation: deprecated.MDCChipFoundation;\n\n /** The unstyled chip selector for this component. */\n protected basicChipAttrName = 'mat-basic-chip';\n\n /** The chip's leading icon. */\n @ContentChild(MAT_CHIP_AVATAR) leadingIcon: MatChipAvatar;\n\n /** The chip's trailing icon. */\n @ContentChild(MAT_CHIP_TRAILING_ICON) trailingIcon: MatChipTrailingIcon;\n\n /** The chip's trailing remove icon. */\n @ContentChild(MAT_CHIP_REMOVE) removeIcon: MatChipRemove;\n\n /** Reference to the MatRipple instance of the chip. */\n @ViewChild(MatRipple) ripple: MatRipple;\n\n /**\n * Implementation of the MDC chip adapter interface.\n * These methods are called by the chip foundation.\n */\n protected _chipAdapter: deprecated.MDCChipAdapter = {\n addClass: className => this._setMdcClass(className, true),\n removeClass: className => this._setMdcClass(className, false),\n hasClass: className => this._elementRef.nativeElement.classList.contains(className),\n addClassToLeadingIcon: className => this.leadingIcon.setClass(className, true),\n removeClassFromLeadingIcon: className => this.leadingIcon.setClass(className, false),\n eventTargetHasClass: (target: EventTarget | null, className: string) => {\n // We need to null check the `classList`, because IE and Edge don't\n // support it on SVG elements and Edge seems to throw for ripple\n // elements, because they're outside the DOM.\n return target && (target as Element).classList\n ? (target as Element).classList.contains(className)\n : false;\n },\n notifyInteraction: () => this._notifyInteraction(),\n notifySelection: () => {\n // No-op. We call dispatchSelectionEvent ourselves in MatChipOption,\n // because we want to specify whether selection occurred via user\n // input.\n },\n notifyNavigation: () => this._notifyNavigation(),\n notifyTrailingIconInteraction: () => {},\n notifyRemoval: () => this.remove(),\n notifyEditStart: () => {\n this._onEditStart();\n this._changeDetectorRef.markForCheck();\n },\n notifyEditFinish: () => {\n this._onEditFinish();\n this._changeDetectorRef.markForCheck();\n },\n getComputedStyleValue: propertyName => {\n // This function is run when a chip is removed so it might be\n // invoked during server-side rendering. Add some extra checks just in\n // case.\n if (typeof window !== 'undefined' && window) {\n const getComputedStyle = window.getComputedStyle(this._elementRef.nativeElement);\n return getComputedStyle.getPropertyValue(propertyName);\n }\n return '';\n },\n setStyleProperty: (propertyName: string, value: string) => {\n this._elementRef.nativeElement.style.setProperty(propertyName, value);\n },\n hasLeadingIcon: () => !!this.leadingIcon,\n isTrailingActionNavigable: () => {\n if (this.trailingIcon) {\n return this.trailingIcon.isNavigable();\n }\n return false;\n },\n isRTL: () => !!this._dir && this._dir.value === 'rtl',\n focusPrimaryAction: () => {\n // Angular Material MDC chips fully manage focus. TODO: Managing focus\n // and handling keyboard events was added by MDC after our\n // implementation; consider consolidating.\n },\n focusTrailingAction: () => {},\n removeTrailingActionFocus: () => {},\n setPrimaryActionAttr: (name: string, value: string) => {\n // MDC is currently using this method to set aria-checked on choice\n // and filter chips, which in the MDC templates have role=\"checkbox\"\n // and role=\"radio\" respectively. We have role=\"option\" on those chips\n // instead, so we do not want aria-checked. Since we also manage the\n // tabindex ourselves, we don't allow MDC to set it.\n if (name === 'aria-checked' || name === 'tabindex') {\n return;\n }\n this._elementRef.nativeElement.setAttribute(name, value);\n },\n // The 2 functions below are used by the MDC ripple, which we aren't using,\n // so they will never be called\n getRootBoundingClientRect: () => this._elementRef.nativeElement.getBoundingClientRect(),\n getCheckmarkBoundingClientRect: () => null,\n getAttribute: attr => this._elementRef.nativeElement.getAttribute(attr),\n };\n\n constructor(\n public _changeDetectorRef: ChangeDetectorRef,\n elementRef: ElementRef,\n protected _ngZone: NgZone,\n @Optional() private _dir: Directionality,\n @Optional() @Inject(ANIMATION_MODULE_TYPE) animationMode?: string,\n @Optional()\n @Inject(MAT_RIPPLE_GLOBAL_OPTIONS)\n private _globalRippleOptions?: RippleGlobalOptions,\n ) {\n super(elementRef);\n this._chipFoundation = new deprecated.MDCChipFoundation(this._chipAdapter);\n this._animationsDisabled = animationMode === 'NoopAnimations';\n this._isBasicChip =\n elementRef.nativeElement.hasAttribute(this.basicChipAttrName) ||\n elementRef.nativeElement.tagName.toLowerCase() === this.basicChipAttrName;\n }\n\n ngAfterContentInit() {\n this._initRemoveIcon();\n }\n\n ngAfterViewInit() {\n this._chipFoundation.init();\n this._textElement = this._elementRef.nativeElement.querySelector('.mdc-chip__text');\n }\n\n ngOnDestroy() {\n this.destroyed.emit({chip: this});\n this._chipFoundation.destroy();\n }\n\n /** Sets up the remove icon chip foundation, and subscribes to remove icon events. */\n private _initRemoveIcon() {\n if (this.removeIcon) {\n this._chipFoundation.setShouldRemoveOnTrailingIconClick(true);\n this.removeIcon.disabled = this.disabled;\n\n this.removeIcon.interaction.pipe(takeUntil(this.destroyed)).subscribe(event => {\n // The MDC chip foundation calls stopPropagation() for any trailing icon interaction\n // event, even ones it doesn't handle, so we want to avoid passing it keyboard events\n // for which we have a custom handler. Note that we assert the type of the event using\n // the `type`, because `instanceof KeyboardEvent` can throw during server-side rendering.\n const isKeyboardEvent = event.type.startsWith('key');\n\n if (\n this.disabled ||\n (isKeyboardEvent && !this.REMOVE_ICON_HANDLED_KEYS.has((event as KeyboardEvent).keyCode))\n ) {\n return;\n }\n\n this.remove();\n\n if (isKeyboardEvent && !hasModifierKey(event as KeyboardEvent)) {\n const keyCode = (event as KeyboardEvent).keyCode;\n\n // Prevent default space and enter presses so we don't scroll the page or submit forms.\n if (keyCode === SPACE || keyCode === ENTER) {\n event.preventDefault();\n }\n }\n });\n }\n }\n\n /**\n * Allows for programmatic removal of the chip.\n *\n * Informs any listeners of the removal request. Does not remove the chip from the DOM.\n */\n remove(): void {\n if (this.removable) {\n this.removed.emit({chip: this});\n }\n }\n\n /** Sets whether the given CSS class should be applied to the MDC chip. */\n private _setMdcClass(cssClass: string, active: boolean) {\n const classes = this._elementRef.nativeElement.classList;\n active ? classes.add(cssClass) : classes.remove(cssClass);\n this._changeDetectorRef.markForCheck();\n }\n\n /** Forwards interaction events to the MDC chip foundation. */\n _handleInteraction(event: MouseEvent | KeyboardEvent | FocusEvent) {\n if (this.disabled) {\n return;\n }\n\n if (event.type === 'click') {\n this._chipFoundation.handleClick();\n return;\n }\n\n if (event.type === 'dblclick') {\n this._chipFoundation.handleDoubleClick();\n }\n\n if (event.type === 'keydown') {\n this._chipFoundation.handleKeydown(event as KeyboardEvent);\n return;\n }\n\n if (event.type === 'focusout') {\n this._chipFoundation.handleFocusOut(event as FocusEvent);\n }\n\n if (event.type === 'focusin') {\n this._chipFoundation.handleFocusIn(event as FocusEvent);\n }\n }\n\n /** Whether or not the ripple should be disabled. */\n _isRippleDisabled(): boolean {\n return (\n this.disabled ||\n this.disableRipple ||\n this._animationsDisabled ||\n this._isBasicChip ||\n !!this._globalRippleOptions?.disabled\n );\n }\n\n _notifyInteraction() {\n this.interaction.emit(this.id);\n }\n\n _notifyNavigation() {\n // TODO: This is a new feature added by MDC. Consider exposing it to users\n // in the future.\n }\n\n /** Overridden by MatChipRow. */\n protected _onEditStart() {}\n\n /** Overridden by MatChipRow. */\n protected _onEditFinish() {}\n\n static ngAcceptInputType_disabled: BooleanInput;\n static ngAcceptInputType_removable: BooleanInput;\n static ngAcceptInputType_highlighted: BooleanInput;\n static ngAcceptInputType_disableRipple: BooleanInput;\n static ngAcceptInputType_tabIndex: NumberInput;\n}\n","<span class=\"mdc-chip__ripple\"></span>\n\n<span matRipple class=\"mat-mdc-chip-ripple\"\n [matRippleDisabled]=\"_isRippleDisabled()\"\n [matRippleCentered]=\"_isRippleCentered\"\n [matRippleTrigger]=\"_elementRef.nativeElement\"></span>\n\n<ng-content select=\"mat-chip-avatar, [matChipAvatar]\"></ng-content>\n<div class=\"mdc-chip__primary-action\">\n <div class=\"mdc-chip__text\"><ng-content></ng-content></div>\n</div>\n<ng-content select=\"mat-chip-trailing-icon,[matChipRemove],[matChipTrailingIcon]\"></ng-content>\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {BooleanInput, coerceBooleanProperty} from '@angular/cdk/coercion';\nimport {SPACE} from '@angular/cdk/keycodes';\nimport {\n ChangeDetectionStrategy,\n Component,\n EventEmitter,\n Input,\n Output,\n ViewEncapsulation,\n AfterContentInit,\n} from '@angular/core';\nimport {deprecated} from '@material/chips';\nimport {take} from 'rxjs/operators';\nimport {MatChip} from './chip';\n\n/** Event object emitted by MatChipOption when selected or deselected. */\nexport class MatChipSelectionChange {\n constructor(\n /** Reference to the chip that emitted the event. */\n public source: MatChipOption,\n /** Whether the chip that emitted the event is selected. */\n public selected: boolean,\n /** Whether the selection change was a result of a user interaction. */\n public isUserInput = false,\n ) {}\n}\n\n/**\n * An extension of the MatChip component that supports chip selection.\n * Used with MatChipListbox.\n */\n@Component({\n selector: 'mat-basic-chip-option, mat-chip-option',\n templateUrl: 'chip-option.html',\n styleUrls: ['chips.css'],\n inputs: ['color', 'disableRipple', 'tabIndex'],\n host: {\n 'role': 'option',\n 'class': 'mat-mdc-focus-indicator mat-mdc-chip-option',\n '[class.mat-mdc-chip-disabled]': 'disabled',\n '[class.mat-mdc-chip-highlighted]': 'highlighted',\n '[class.mat-mdc-chip-with-avatar]': 'leadingIcon',\n '[class.mat-mdc-chip-with-trailing-icon]': 'trailingIcon || removeIcon',\n '[class.mat-mdc-chip-selected]': 'selected',\n '[id]': 'id',\n '[tabIndex]': 'tabIndex',\n '[attr.disabled]': 'disabled || null',\n '[attr.aria-disabled]': 'disabled.toString()',\n '[attr.aria-selected]': 'ariaSelected',\n '(click)': '_click($event)',\n '(keydown)': '_keydown($event)',\n '(focus)': 'focus()',\n '(blur)': '_blur()',\n },\n providers: [{provide: MatChip, useExisting: MatChipOption}],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class MatChipOption extends MatChip implements AfterContentInit {\n /** Whether the chip list is selectable. */\n chipListSelectable: boolean = true;\n\n /** Whether the chip list is in multi-selection mode. */\n _chipListMultiple: boolean = false;\n\n /**\n * Whether or not the chip is selectable.\n *\n * When a chip is not selectable, changes to its selected state are always\n * ignored. By default an option chip is selectable, and it becomes\n * non-selectable if its parent chip list is not selectable.\n */\n @Input()\n get selectable(): boolean {\n return this._selectable && this.chipListSelectable;\n }\n set selectable(value: boolean) {\n this._selectable = coerceBooleanProperty(value);\n }\n protected _selectable: boolean = true;\n\n /** Whether the chip is selected. */\n @Input()\n get selected(): boolean {\n return this._chipFoundation.isSelected();\n }\n set selected(value: boolean) {\n if (!this.selectable) {\n return;\n }\n const coercedValue = coerceBooleanProperty(value);\n if (coercedValue != this._chipFoundation.isSelected()) {\n this._chipFoundation.setSelected(coerceBooleanProperty(value));\n this._dispatchSelectionChange();\n }\n }\n\n /** The ARIA selected applied to the chip. */\n get ariaSelected(): string | null {\n // Remove the `aria-selected` when the chip is deselected in single-selection mode, because\n // it adds noise to NVDA users where \"not selected\" will be read out for each chip.\n return this.selectable && (this._chipListMultiple || this.selected)\n ? this.selected.toString()\n : null;\n }\n\n /** The unstyled chip selector for this component. */\n protected override basicChipAttrName = 'mat-basic-chip-option';\n\n /** Emitted when the chip is selected or deselected. */\n @Output() readonly selectionChange: EventEmitter<MatChipSelectionChange> =\n new EventEmitter<MatChipSelectionChange>();\n\n override ngAfterContentInit() {\n super.ngAfterContentInit();\n\n if (this.selected && this.leadingIcon) {\n this.leadingIcon.setClass(deprecated.chipCssClasses.HIDDEN_LEADING_ICON, true);\n }\n }\n\n /** Selects the chip. */\n select(): void {\n if (!this.selectable) {\n return;\n } else if (!this.selected) {\n this._chipFoundation.setSelected(true);\n this._dispatchSelectionChange();\n }\n }\n\n /** Deselects the chip. */\n deselect(): void {\n if (!this.selectable) {\n return;\n } else if (this.selected) {\n this._chipFoundation.setSelected(false);\n this._dispatchSelectionChange();\n }\n }\n\n /** Selects this chip and emits userInputSelection event */\n selectViaInteraction(): void {\n if (!this.selectable) {\n return;\n } else if (!this.selected) {\n this._chipFoundation.setSelected(true);\n this._dispatchSelectionChange(true);\n }\n }\n\n /** Toggles the current selected state of this chip. */\n toggleSelected(isUserInput: boolean = false): boolean {\n if (!this.selectable) {\n return this.selected;\n }\n\n this._chipFoundation.setSelected(!this.selected);\n this._dispatchSelectionChange(isUserInput);\n return this.selected;\n }\n\n /** Emits a selection change event. */\n private _dispatchSelectionChange(isUserInput = false) {\n this.selectionChange.emit({\n source: this,\n isUserInput,\n selected: this.selected,\n });\n }\n\n /** Allows for programmatic focusing of the chip. */\n focus(): void {\n if (this.disabled) {\n return;\n }\n\n if (!this._hasFocus()) {\n this._elementRef.nativeElement.focus();\n this._onFocus.next({chip: this});\n }\n this._hasFocusInternal = true;\n }\n\n /** Resets the state of the chip when it loses focus. */\n _blur(): void {\n // When animations are enabled, Angular may end up removing the chip from the DOM a little\n // earlier than usual, causing it to be blurred and throwing off the logic in the chip list\n // that moves focus not the next item. To work around the issue, we defer marking the chip\n // as not focused until the next time the zone stabilizes.\n this._ngZone.onStable.pipe(take(1)).subscribe(() => {\n this._ngZone.run(() => {\n this._hasFocusInternal = false;\n this._onBlur.next({chip: this});\n });\n });\n }\n\n /** Handles click events on the chip. */\n _click(event: MouseEvent) {\n if (this.disabled) {\n event.preventDefault();\n } else {\n this._handleInteraction(event);\n event.stopPropagation();\n }\n }\n\n /** Handles custom key presses. */\n _keydown(event: KeyboardEvent): void {\n if (this.disabled) {\n return;\n }\n\n switch (event.keyCode) {\n case SPACE:\n this.toggleSelected(true);\n\n // Always prevent space from scrolling the page since the list has focus\n event.preventDefault();\n break;\n default:\n this._handleInteraction(event);\n }\n }\n\n static ngAcceptInputType_selectable: BooleanInput;\n static ngAcceptInputType_selected: BooleanInput;\n}\n","<span class=\"mdc-chip__ripple\"></span>\n\n<span matRipple class=\"mat-mdc-chip-ripple\"\n [matRippleDisabled]=\"_isRippleDisabled()\"\n [matRippleCentered]=\"_isRippleCentered\"\n [matRippleTrigger]=\"_elementRef.nativeElement\"></span>\n\n<ng-content select=\"mat-chip-avatar, [matChipAvatar]\"></ng-content>\n<div class=\"mdc-chip__checkmark\" *ngIf=\"_chipListMultiple\">\n <svg class=\"mdc-chip__checkmark-svg\" viewBox=\"-2 -3 30 30\" focusable=\"false\">\n <path class=\"mdc-chip__checkmark-path\" fill=\"none\" stroke=\"black\"\n d=\"M1.73,12.91 8.1,19.28 22.79,4.59\"/>\n </svg>\n</div>\n<div class=\"mdc-chip__text\"><ng-content></ng-content></div>\n<ng-content select=\"mat-chip-trailing-icon,[matChipRemove],[matChipTrailingIcon]\"></ng-content>\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {Directive, ElementRef, Inject} from '@angular/core';\nimport {DOCUMENT} from '@angular/common';\n\n/**\n * A directive that makes a span editable and exposes functions to modify and retrieve the\n * element's contents.\n */\n@Directive({\n selector: 'span[matChipEditInput]',\n host: {\n 'class': 'mdc-chip__primary-action mat-chip-edit-input',\n 'role': 'textbox',\n 'tabindex': '-1',\n 'contenteditable': 'true',\n },\n})\nexport class MatChipEditInput {\n constructor(\n private readonly _elementRef: ElementRef,\n @Inject(DOCUMENT) private readonly _document: any,\n ) {}\n\n initialize(initialValue: string) {\n this.getNativeElement().focus();\n this.setValue(initialValue);\n }\n\n getNativeElement(): HTMLElement {\n return this._elementRef.nativeElement;\n }\n\n setValue(value: string) {\n this.getNativeElement().innerText = value;\n this._moveCursorToEndOfInput();\n }\n\n getValue(): string {\n return this.getNativeElement().textContent || '';\n }\n\n private _moveCursorToEndOfInput() {\n const range = this._document.createRange();\n range.selectNodeContents(this.getNativeElement());\n range.collapse(false);\n const sel = window.getSelection()!;\n sel.removeAllRanges();\n sel.addRange(range);\n }\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {Directionality} from '@angular/cdk/bidi';\nimport {BooleanInput} from '@angular/cdk/coercion';\nimport {BACKSPACE, DELETE} from '@angular/cdk/keycodes';\nimport {ANIMATION_MODULE_TYPE} from '@angular/platform-browser/animations';\nimport {\n AfterContentInit,\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ContentChild,\n ElementRef,\n EventEmitter,\n Inject,\n Input,\n NgZone,\n Optional,\n Output,\n ViewChild,\n ViewEncapsulation,\n} from '@angular/core';\nimport {DOCUMENT} from '@angular/common';\nimport {\n MAT_RIPPLE_GLOBAL_OPTIONS,\n RippleGlobalOptions,\n} from '@angular/material-experimental/mdc-core';\nimport {MatChip, MatChipEvent} from './chip';\nimport {MatChipEditInput} from './chip-edit-input';\nimport {GridKeyManagerRow} from './grid-key-manager';\n\n/** Represents an event fired on an individual `mat-chip` when it is edited. */\nexport interface MatChipEditedEvent extends MatChipEvent {\n /** The final edit value. */\n value: string;\n}\n\n/**\n * An extension of the MatChip component used with MatChipGrid and\n * the matChipInputFor directive.\n */\n@Component({\n selector: 'mat-chip-row, mat-basic-chip-row',\n templateUrl: 'chip-row.html',\n styleUrls: ['chips.css'],\n inputs: ['color', 'disableRipple', 'tabIndex'],\n host: {\n 'role': 'row',\n 'class': 'mat-mdc-chip-row',\n '[class.mat-mdc-chip-disabled]': 'disabled',\n '[class.mat-mdc-chip-highlighted]': 'highlighted',\n '[class.mat-mdc-chip-with-avatar]': 'leadingIcon',\n '[class.mat-mdc-chip-with-trailing-icon]': 'trailingIcon || removeIcon',\n '[class.mdc-chip--editable]': 'editable',\n '[id]': 'id',\n '[attr.disabled]': 'disabled || null',\n '[attr.aria-disabled]': 'disabled.toString()',\n '[tabIndex]': 'tabIndex',\n '(mousedown)': '_mousedown($event)',\n '(dblclick)': '_dblclick($event)',\n '(keydown)': '_keydown($event)',\n '(focusin)': '_focusin($event)',\n '(focusout)': '_focusout($event)',\n },\n providers: [{provide: MatChip, useExisting: MatChipRow}],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class MatChipRow\n extends MatChip\n implements AfterContentInit, AfterViewInit, GridKeyManagerRow<HTMLElement>\n{\n protected override basicChipAttrName = 'mat-basic-chip-row';\n\n @Input() editable: boolean = false;\n\n /** Emitted when the chip is edited. */\n @Output() readonly edited: EventEmitter<MatChipEditedEvent> =\n new EventEmitter<MatChipEditedEvent>();\n\n /**\n * The focusable wrapper element in the first gridcell, which contains all\n * chip content other than the remove icon.\n */\n @ViewChild('chipContent') chipContent: ElementRef;\n\n /** The default chip edit input that is used if none is projected into this chip row. */\n @ViewChild(MatChipEditInput) defaultEditInput?: MatChipEditInput;\n\n /** The projected chip edit input. */\n @ContentChild(MatChipEditInput) contentEditInput?: MatChipEditInput;\n\n /** The focusable grid cells for this row. Implemented as part of GridKeyManagerRow. */\n cells!: HTMLElement[];\n\n /**\n * Timeout used to give some time between `focusin` and `focusout`\n * in order to determine whether focus has left the chip.\n */\n private _focusoutTimeout: any;\n\n constructor(\n @Inject(DOCUMENT) private readonly _document: any,\n changeDetectorRef: ChangeDetectorRef,\n elementRef: ElementRef,\n ngZone: NgZone,\n @Optional() dir: Directionality,\n @Optional() @Inject(ANIMATION_MODULE_TYPE) animationMode?: string,\n @Optional()\n @Inject(MAT_RIPPLE_GLOBAL_OPTIONS)\n globalRippleOptions?: RippleGlobalOptions,\n ) {\n super(changeDetectorRef, elementRef, ngZone, dir, animationMode, globalRippleOptions);\n }\n\n override ngAfterContentInit() {\n super.ngAfterContentInit();\n\n if (this.removeIcon) {\n // Defer setting the value in order to avoid the \"Expression\n // has changed after it was checked\" errors from Angular.\n setTimeout(() => {\n // removeIcon has tabIndex 0 for regular chips, but should only be focusable by\n // the GridFocusKeyManager for row chips.\n this.removeIcon.tabIndex = -1;\n });\n }\n }\n\n override ngAfterViewInit() {\n super.ngAfterViewInit();\n this.cells = this.removeIcon\n ? [this.chipContent.nativeElement, this.removeIcon._elementRef.nativeElement]\n : [this.chipContent.nativeElement];\n }\n\n /**\n * Allows for programmatic focusing of the chip.\n * Sends focus to the first grid cell. The row chip element itself\n * is never focused.\n */\n focus(): void {\n if (this.disabled) {\n return;\n }\n\n if (!this._hasFocusInternal) {\n this._onFocus.next({chip: this});\n }\n\n this.chipContent.nativeElement.focus();\n }\n\n /**\n * Emits a blur event when one of the gridcells loses focus, unless focus moved\n * to the other gridcell.\n */\n _focusout(event: FocusEvent) {\n if (this._focusoutTimeout) {\n clearTimeout(this._focusoutTimeout);\n }\n\n // Wait to see if focus moves to the other gridcell\n this._focusoutTimeout = setTimeout(() => {\n this._hasFocusInternal = false;\n this._onBlur.next({chip: this});\n this._handleInteraction(event);\n });\n }\n\n /** Records that the chip has focus when one of the gridcells is focused. */\n _focusin(event: FocusEvent) {\n if (this._focusoutTimeout) {\n clearTimeout(this._focusoutTimeout);\n this._focusoutTimeout = null;\n }\n\n this._hasFocusInternal = true;\n this._handleInteraction(event);\n }\n\n /** Sends focus to the first gridcell when the user clicks anywhere inside the chip. */\n _mousedown(event: MouseEvent) {\n if (this._isEditing()) {\n return;\n }\n\n if (!this.disabled) {\n this.focus();\n }\n\n event.preventDefault();\n }\n\n _dblclick(event: MouseEvent) {\n this._handleInteraction(event);\n }\n\n /** Handles custom key presses. */\n _keydown(event: KeyboardEvent): void {\n if (this.disabled) {\n return;\n }\n if (this._isEditing()) {\n this._handleInteraction(event);\n return;\n }\n switch (event.keyCode) {\n case DELETE:\n case BACKSPACE:\n // Remove the focused chip\n this.remove();\n // Always prevent so page navigation does not occur\n event.preventDefault();\n break;\n default:\n this._handleInteraction(event);\n }\n }\n\n _isEditing() {\n return this._chipFoundation.isEditing();\n }\n\n protected override _onEditStart() {\n // Defer initializing the input so it has time to be added to the DOM.\n setTimeout(() => {\n this._getEditInput().initialize(this.value);\n });\n }\n\n protected override _onEditFinish() {\n // If the edit input is still focused or focus was returned to the body after it was destroyed,\n // return focus to the chip contents.\n if (\n this._document.activeElement === this._getEditInput().getNativeElement() ||\n this._document.activeElement === this._document.body\n ) {\n this.chipContent.nativeElement.focus();\n }\n this.edited.emit({chip: this, value: this._getEditInput().getValue()});\n }\n\n /**\n * Gets the projected chip edit input, or the default input if none is projected in. One of these\n * two values is guaranteed to be defined.\n */\n private _getEditInput(): MatChipEditInput {\n return this.contentEditInput || this.defaultEditInput!;\n }\n\n static ngAcceptInputType_editable: BooleanInput;\n}\n","<ng-container *ngIf=\"!_isEditing()\">\n <span class=\"mdc-chip__ripple\"></span>\n\n <span matRipple class=\"mat-mdc-chip-ripple\"\n [matRippleDisabled]=\"_isRippleDisabled()\"\n [matRippleCentered]=\"_isRippleCentered\"\n [matRippleTrigger]=\"_elementRef.nativeElement\"></span>\n</ng-container>\n\n<div class=\"mat-mdc-chip-content\">\n <div role=\"gridcell\">\n <div #chipContent tabindex=\"-1\"\n class=\"mat-mdc-chip-row-focusable-text-content mat-mdc-focus-indicator mdc-chip__primary-action\"\n [attr.role]=\"editable ? 'button' : null\">\n <ng-content select=\"mat-chip-avatar, [matChipAvatar]\"></ng-content>\n <span class=\"mdc-chip__text\"><ng-content></ng-content></span>\n <ng-content select=\"mat-chip-trailing-icon,[matChipTrailingIcon]\"></ng-content>\n </div>\n </div>\n <div role=\"gridcell\" *ngIf=\"removeIcon\" class=\"mat-mdc-chip-remove-icon\">\n <ng-content select=\"[matChipRemove]\"></ng-content>\n </div>\n</div>\n\n<div *ngIf=\"_isEditing()\" role=\"gridcell\" class=\"mat-mdc-chip-edit-input-container\">\n <ng-content *ngIf=\"contentEditInput; else defaultMatChipEditInput\"\n select=\"[matChipEditInput]\"></ng-content>\n <ng-template #defaultMatChipEditInput>\n <span matChipEditInput></span>\n </ng-template>\n</div>\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {Directionality} from '@angular/cdk/bidi';\nimport {BooleanInput, coerceBooleanProperty, NumberInput} from '@angular/cdk/coercion';\nimport {\n AfterContentInit,\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ContentChildren,\n ElementRef,\n Input,\n OnDestroy,\n Optional,\n QueryList,\n ViewEncapsulation,\n} from '@angular/core';\nimport {HasTabIndex, mixinTabIndex} from '@angular/material-experimental/mdc-core';\nimport {deprecated} from '@material/chips';\nimport {merge, Observable, Subject, Subscription} from 'rxjs';\nimport {startWith, takeUntil} from 'rxjs/operators';\nimport {MatChip, MatChipEvent} from './chip';\n\nlet uid = 0;\n\n/**\n * Boilerplate for applying mixins to MatChipSet.\n * @docs-private\n */\nabstract class MatChipSetBase {\n abstract disabled: boolean;\n constructor(_elementRef: ElementRef) {}\n}\nconst _MatChipSetMixinBase = mixinTabIndex(MatChipSetBase);\n\n/**\n * Basic container component for the MatChip component.\n *\n * Extended by MatChipListbox and MatChipGrid for different interaction patterns.\n */\n@Component({\n selector: 'mat-chip-set',\n template: '<ng-content></ng-content>',\n styleUrls: ['chips.css'],\n host: {\n 'class': 'mat-mdc-chip-set mdc-chip-set',\n '[attr.role]': 'role',\n // TODO: replace this binding with use of AriaDescriber\n '[attr.aria-describedby]': '_ariaDescribedby || null',\n '[id]': '_uid',\n },\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class MatChipSet\n extends _MatChipSetMixinBase\n implements AfterContentInit, AfterViewInit, HasTabIndex, OnDestroy\n{\n /** Subscription to remove changes in chips. */\n private _chipRemoveSubscription: Subscription | null;\n\n /** Subscription to destroyed events in chips. */\n private _chipDestroyedSubscription: Subscription | null;\n\n /** Subscription to chip interactions. */\n private _chipInteractionSubscription: Subscription | null;\n\n /**\n * When a chip is destroyed, we store the index of the destroyed chip until the chips\n * query list notifies about the update. This is necessary because we cannot determine an\n * appropriate chip that should receive focus until the array of chips updated completely.\n */\n protected _lastDestroyedChipIndex: number | null = null;\n\n /** The MDC foundation containing business logic for MDC chip-set. */\n protected _chipSetFoundation: deprecated.MDCChipSetFoundation;\n\n /** Subject that emits when the component has been destroyed. */\n protected _destroyed = new Subject<void>();\n\n /**\n * Implementation of the MDC chip-set adapter interface.\n * These methods are called by the chip set foundation.\n */\n protected _chipSetAdapter: deprecated.MDCChipSetAdapter = {\n hasClass: className => this._hasMdcClass(className),\n // No-op. We keep track of chips via ContentChildren, which will be updated when a chip is\n // removed.\n removeChipAtIndex: () => {},\n // No-op for base chip set. MatChipListbox overrides the adapter to provide this method.\n selectChipAtIndex: () => {},\n getIndexOfChipById: (id: string) => this._chips.toArray().findIndex(chip => chip.id === id),\n focusChipPrimaryActionAtIndex: () => {},\n focusChipTrailingActionAtIndex: () => {},\n removeFocusFromChipAtIndex: () => {},\n isRTL: () => !!this._dir && this._dir.value === 'rtl',\n getChipListCount: () => this._chips.length,\n // TODO(mmalerba): Implement using LiveAnnouncer.\n announceMessage: () => {},\n };\n\n /** The aria-describedby attribute on the chip list for improved a11y. */\n _ariaDescribedby: string;\n\n /** Uid of the chip set */\n _uid: string = `mat-mdc-chip-set-${uid++}`;\n\n /**\n * Map from class to whether the class is enabled.\n * Enabled classes are set on the MDC chip-set div.\n */\n _mdcClasses: {[key: string]: boolean} = {};\n\n /** Whether the chip set is disabled. */\n @Input()\n get disabled(): boolean {\n return this._disabled;\n }\n set disabled(value: boolean) {\n this._disabled = coerceBooleanProperty(value);\n this._syncChipsState();\n }\n protected _disabled: boolean = false;\n\n /** Whether the chip list contains chips or not. */\n get empty(): boolean {\n return this._chips.length === 0;\n }\n\n /** The ARIA role applied to the chip set. */\n @Input()\n get role(): string | null {\n if (this._role) {\n return this._role;\n } else {\n return this.empty ? null : 'presentation';\n }\n }\n\n set role(value: string | null) {\n this._role = value;\n }\n private _role: string | null = null;\n\n /** Whether any of the chips inside of this chip-set has focus. */\n get focused(): boolean {\n return this._hasFocusedChip();\n }\n\n /** Combined stream of all of the child chips' remove events. */\n get chipRemoveChanges(): Observable<MatChipEvent> {\n return merge(...this._chips.map(chip => chip.removed));\n }\n\n /** Combined stream of all of the child chips' remove events. */\n get chipDestroyedChanges(): Observable<MatChipEvent> {\n return merge(...this._chips.map(chip => chip.destroyed));\n }\n\n /** Combined stream of all of the child chips' interaction events. */\n get chipInteractionChanges(): Observable<string> {\n return merge(...this._chips.map(chip => chip.interaction));\n }\n\n /** The chips that are part of this chip set. */\n @ContentChildren(MatChip, {\n // We need to use `descendants: true`, because Ivy will no longer match\n // indirect descendants if it's left as false.\n descendants: true,\n })\n _chips: QueryList<MatChip>;\n\n constructor(\n protected _elementRef: ElementRef,\n protected _changeDetectorRef: ChangeDetectorRef,\n @Optional() protected _dir: Directionality,\n ) {\n super(_elementRef);\n this._chipSetFoundation = new deprecated.MDCChipSetFoundation(this._chipSetAdapter);\n }\n\n ngAfterViewInit() {\n this._chipSetFoundation.init();\n }\n\n ngAfterContentInit() {\n this._chips.changes.pipe(startWith(null), takeUntil(this._destroyed)).subscribe(() => {\n if (this.disabled) {\n // Since this happens after the content has been\n // checked, we need to defer it to the next tick.\n Promise.resolve().then(() => {\n this._syncChipsState();\n });\n }\n\n this._resetChips();\n });\n }\n\n ngOnDestroy() {\n this._dropSubscriptions();\n this._destroyed.next();\n this._destroyed.complete();\n this._chipSetFoundation.destroy();\n }\n\n /** Checks whether any of the chips is focused. */\n protected _hasFocusedChip() {\n return this._chips && this._chips.some(chip => chip._hasFocus());\n }\n\n /** Syncs the chip-set's state with the individual chips. */\n protected _syncChipsState() {\n if (this._chips) {\n this._chips.forEach(chip => {\n chip.disabled = this._disabled;\n chip._changeDetectorRef.markForCheck();\n });\n }\n }\n\n /** Sets whether the given CSS class should be applied to the MDC chip. */\n protected _setMdcClass(cssClass: string, active: boolean) {\n const classes = this._elementRef.nativeElement.classList;\n active ? classes.add(cssClass) : classes.remove(cssClass);\n this._changeDetectorRef.markForCheck();\n }\n\n /** Adapter method that returns true if the chip set has the given MDC class. */\n protected _hasMdcClass(className: string) {\n return this._elementRef.nativeElement.classList.contains(className);\n }\n\n /** Updates subscriptions to chip events. */\n private _resetChips() {\n this._dropSubscriptions();\n this._subscribeToChipEvents();\n }\n\n /** Subscribes to events on the child chips. */\n protected _subscribeToChipEvents() {\n this._listenToChipsRemove();\n this._listenToChipsDestroyed();\n this._listenToChipsInteraction();\n }\n\n /** Subscribes to chip removal events. */\n private _listenToChipsRemove() {\n this._chipRemoveSubscription = this.chipRemoveChanges.subscribe((event: MatChipEvent) => {\n this._chipSetFoundation.handleChipRemoval({\n chipId: event.chip.id,\n // TODO(mmalerba): Add removal message.\n removedAnnouncement: null,\n });\n });\n }\n\n /** Subscribes to chip destroyed events. */\n private _listenToChipsDestroyed() {\n this._chipDestroyedSubscription = this.chipDestroyedChanges.subscribe((event: MatChipEvent) => {\n const chip = event.chip;\n const chipIndex: number = this._chips.toArray().indexOf(event.chip);\n\n // In case the chip that will be removed is currently focused, we temporarily store\n // the index in order to be able to determine an appropriate sibling chip that will\n // receive focus.\n if (this._isValidIndex(chipIndex) && chip._hasFocus()) {\n this._lastDestroyedChipIndex = chipIndex;\n }\n });\n }\n\n /** Subscribes to chip interaction events. */\n private _listenToChipsInteraction() {\n this._chipInteractionSubscription = this.chipInteractionChanges.subscribe((id: string) => {\n this._chipSetFoundation.handleChipInteraction({chipId: id});\n });\n }\n\n /** Unsubscribes from all chip events. */\n protected _dropSubscriptions() {\n if (this._chipRemoveSubscription) {\n this._chipRemoveSubscription.unsubscribe();\n this._chipRemoveSubscription = null;\n }\n\n if (this._chipInteractionSubscription) {\n this._chipInteractionSubscription.unsubscribe();\n this._chipInteractionSubscription = null;\n }\n\n if (this._chipDestroyedSubscription) {\n this._chipDestroyedSubscription.unsubscribe();\n this._chipDestroyedSubscription = null;\n }\n }\n\n /** Dummy method for subclasses to override. Base chip set cannot be focused. */\n focus() {}\n\n /**\n * Utility to ensure all indexes are valid.\n *\n * @param index The index to be checked.\n * @returns True if the index is valid for our list of chips.\n */\n protected _isValidIndex(index: number): boolean {\n return index >= 0 && index < this._chips.length;\n }\n\n /** Checks whether an event comes from inside a chip element. */\n protected _originatesFromChip(event: Event): boolean {\n return this._checkForClassInHierarchy(event, 'mdc-chip');\n }\n\n /**\n * Checks whether an event comes from inside a chip element in the editing\n * state.\n */\n protected _originatesFromEditingChip(event: Event): boolean {\n return this._checkForClassInHierarchy(event, 'mdc-chip--editing');\n }\n\n private _checkForClassInHierarchy(event: Event, className: string) {\n let currentElement = event.target as HTMLElement | null;\n\n while (currentElement && currentElement !== this._elementRef.nativeElement) {\n // Null check the classList, because IE and Edge don't support it on all elements.\n if (currentElement.classList && currentElement.classList.contains(className)) {\n return true;\n }\n\n currentElement = currentElement.parentElement;\n }\n\n return false;\n }\n\n static ngAcceptInputType_disabled: BooleanInput;\n static ngAcceptInputType_tabIndex: NumberInput;\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {FocusKeyManager} from '@angular/cdk/a11y';\nimport {Directionality} from '@angular/cdk/bidi';\nimport {BooleanInput, coerceBooleanProperty} from '@angular/cdk/coercion';\nimport {\n AfterContentInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ContentChildren,\n ElementRef,\n EventEmitter,\n forwardRef,\n Input,\n Optional,\n Output,\n QueryList,\n ViewEncapsulation,\n} from '@angular/core';\nimport {ControlValueAccessor, NG_VALUE_ACCESSOR} from '@angular/forms';\nimport {deprecated} from '@material/chips';\nimport {merge, Observable, Subscription} from 'rxjs';\nimport {startWith, takeUntil} from 'rxjs/operators';\nimport {MatChip, MatChipEvent} from './chip';\nimport {MatChipOption, MatChipSelectionChange} from './chip-option';\nimport {MatChipSet} from './chip-set';\n\n/** Change event object that is emitted when the chip listbox value has changed. */\nexport class MatChipListboxChange {\n constructor(\n /** Chip listbox that emitted the event. */\n public source: MatChipListbox,\n /** Value of the chip listbox when the event was emitted. */\n public value: any,\n ) {}\n}\n\n/**\n * Provider Expression that allows mat-chip-listbox to register as a ControlValueAccessor.\n * This allows it to support [(ngModel)].\n * @docs-private\n */\nexport const MAT_CHIP_LISTBOX_CONTROL_VALUE_ACCESSOR: any = {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => MatChipListbox),\n multi: true,\n};\n\n/**\n * An extension of the MatChipSet component that supports chip selection.\n * Used with MatChipOption chips.\n */\n@Component({\n selector: 'mat-chip-listbox',\n template: '<ng-content></ng-content>',\n styleUrls: ['chips.css'],\n inputs: ['tabIndex'],\n host: {\n 'class': 'mat-mdc-chip-set mat-mdc-chip-listbox mdc-chip-set',\n '[attr.role]': 'role',\n '[tabIndex]': 'empty ? -1 : tabIndex',\n // TODO: replace this binding with use of AriaDescriber\n '[attr.aria-describedby]': '_ariaDescribedby || null',\n '[attr.aria-required]': 'role ? required : null',\n '[attr.aria-disabled]': 'disabled.toString()',\n '[attr.aria-multiselectable]': 'multiple',\n '[attr.aria-orientation]': 'ariaOrientation',\n '[class.mat-mdc-chip-list-disabled]': 'disabled',\n '[class.mat-mdc-chip-list-required]': 'required',\n '(focus)': 'focus()',\n '(blur)': '_blur()',\n '(keydown)': '_keydown($event)',\n '[id]': '_uid',\n },\n providers: [MAT_CHIP_LISTBOX_CONTROL_VALUE_ACCESSOR],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class MatChipListbox extends MatChipSet implements AfterContentInit, ControlValueAccessor {\n /** Subscription to selection changes in the chips. */\n private _chipSelectionSubscription: Subscription | null;\n\n /** Subscription to blur changes in the chips. */\n private _chipBlurSubscription: Subscription | null;\n\n /** Subscription to focus changes in the chips. */\n private _chipFocusSubscription: Subscription | null;\n\n /** The FocusKeyManager which handles focus. */\n _keyManager: FocusKeyManager<MatChip>;\n\n /**\n * Function when touched. Set as part of ControlValueAccessor implementation.\n * @docs-private\n */\n _onTouched = () => {};\n\n /**\n * Function when changed. Set as part of ControlValueAccessor implementation.\n * @docs-private\n */\n _onChange: (value: any) => void = () => {};\n\n /** The ARIA role applied to the chip listbox. */\n override get role(): string | null {\n return this.empty ? null : 'listbox';\n }\n\n /** Whether the user should be allowed to select multiple chips. */\n @Input()\n get multiple(): boolean {\n return this._multiple;\n }\n set multiple(value: boolean) {\n this._multiple = coerceBooleanProperty(value);\n this._updateMdcSelectionClasses();\n this._syncListboxProperties();\n }\n private _multiple: boolean = false;\n\n /** The array of selected chips inside the chip listbox. */\n get selected(): MatChipOption[] | MatChipOption {\n const selectedChips = this._chips.toArray().filter(chip => chip.selected);\n return this.multiple ? selectedChips : selectedChips[0];\n }\n\n /** Orientation of the chip list. */\n @Input('aria-orientation') ariaOrientation: 'horizontal' | 'vertical' = 'horizontal';\n\n /**\n * Whether or not this chip listbox is selectable.\n *\n * When a chip listbox is not selectable, the selected states for all\n * the chips inside the chip listbox are always ignored.\n */\n @Input()\n get selectable(): boolean {\n return this._selectable;\n }\n set selectable(value: boolean) {\n this._selectable = coerceBooleanProperty(value);\n this._updateMdcSelectionClasses();\n this._syncListboxProperties();\n }\n protected _selectable: boolean = true;\n\n /**\n * A function to compare the option values with the selected values. The first argument\n * is a value from an option. The second is a value from the selection. A boolean\n * should be returned.\n */\n @Input()\n get compareWith(): (o1: any, o2: any) => boolean {\n return this._compareWith;\n }\n set compareWith(fn: (o1: any, o2: any) => boolean) {\n this._compareWith = fn;\n this._initializeSelection();\n }\n private _compareWith = (o1: any, o2: any) => o1 === o2;\n\n /** Whether this chip listbox is required. */\n @Input()\n get required(): boolean {\n return this._required;\n }\n set required(value: boolean) {\n this._required = coerceBooleanProperty(value);\n }\n protected _required: boolean = false;\n\n /** Combined stream of all of the child chips' selection change events. */\n get chipSelectionChanges(): Observable<MatChipSelectionChange> {\n return merge(...this._chips.map(chip => chip.selectionChange));\n }\n\n /** Combined stream of all of the child chips' focus events. */\n get chipFocusChanges(): Observable<MatChipEvent> {\n return merge(...this._chips.map(chip => chip._onFocus));\n }\n\n /** Combined stream of all of the child chips' blur events. */\n get chipBlurChanges(): Observable<MatChipEvent> {\n return merge(...this._chips.map(chip => chip._onBlur));\n }\n\n /** The value of the listbox, which is the combined value of the selected chips. */\n @Input()\n get value(): any {\n return this._value;\n }\n set value(value: any) {\n this.writeValue(value);\n this._value = value;\n }\n protected _value: any;\n\n /** Event emitted when the selected chip listbox value has been changed by the user. */\n @Output() readonly change: EventEmitter<MatChipListboxChange> =\n new EventEmitter<MatChipListboxChange>();\n\n @ContentChildren(MatChipOption, {\n // We need to use `descendants: true`, because Ivy will no longer match\n // indirect descendants if it's left as false.\n descendants: true,\n })\n override _chips: QueryList<MatChipOption>;\n\n constructor(\n elementRef: ElementRef,\n changeDetectorRef: ChangeDetectorRef,\n @Optional() _dir: Directionality,\n ) {\n super(elementRef, changeDetectorRef, _dir);\n this._chipSetAdapter.selectChipAtIndex = (index: number, selected: boolean) => {\n this._setSelected(index, selected);\n };\n // Reinitialize the foundation with our overridden adapter\n this._chipSetFoundation = new deprecated.MDCChipSetFoundation(this._chipSetAdapter);\n this._updateMdcSelectionClasses();\n }\n\n override ngAfterContentInit() {\n super.ngAfterContentInit();\n this._initKeyManager();\n\n this._chips.changes.pipe(startWith(null), takeUntil(this._destroyed)).subscribe(() => {\n // Update listbox selectable/multiple properties on chips\n this._syncListboxProperties();\n\n // Reset chips selected/deselected status\n this._initializeSelection();\n\n // Check to see if we have a destroyed chip and need to refocus\n this._updateFocusForDestroyedChips();\n });\n }\n\n /**\n * Focuses the first selected chip in this chip listbox, or the first non-disabled chip when there\n * are no selected chips.\n */\n override focus(): void {\n if (this.disabled) {\n return;\n }\n\n const firstSelectedChip = this._getFirstSelectedChip();\n\n if (firstSelectedChip) {\n const firstSelectedChipIndex = this._chips.toArray().indexOf(firstSelectedChip);\n this._keyManager.setActiveItem(firstSelectedChipIndex);\n } else if (this._chips.length > 0) {\n this._keyManager.setFirstItemActive();\n }\n }\n\n /**\n * Implemented as part of ControlValueAccessor.\n * @docs-private\n */\n writeValue(value: any): void {\n if (this._chips) {\n this._setSelectionByValue(value, false);\n }\n }\n\n /**\n * Implemented as part of ControlValueAccessor.\n * @docs-private\n */\n registerOnChange(fn: (value: any) => void): void {\n this._onChange = fn;\n }\n\n /**\n * Implemented as part of ControlValueAccessor.\n * @docs-private\n */\n registerOnTouched(fn: () => void): void {\n this._onTouched = fn;\n }\n\n /**\n * Implemented as part of ControlValueAccessor.\n * @docs-private\n */\n setDisabledState(isDisabled: boolean): void {\n this.disabled = isDisabled;\n }\n\n /** Selects all chips with value. */\n _setSelectionByValue(value: any, isUserInput: boolean = true) {\n this._clearSelection();\n\n if (Array.isArray(value)) {\n value.forEach(currentValue => this._selectValue(currentValue, isUserInput));\n } else {\n const correspondingChip = this._selectValue(value, isUserInput);\n\n // Shift focus to the active item. Note that we shouldn't do this in multiple\n // mode, because we don't know what chip the user interacted with last.\n if (correspondingChip) {\n if (isUserInput) {\n this._keyManager.setActiveItem(correspondingChip);\n }\n }\n }\n }\n\n /** Selects or deselects a chip by id. */\n _setSelected(index: number, selected: boolean) {\n const chip = this._chips.toArray()[index];\n if (chip && chip.selected != selected) {\n chip.toggleSelected(true);\n }\n }\n\n /** When blurred, marks the field as touched when focus moved outside the chip listbox. */\n _blur() {\n if (this.disabled) {\n return;\n }\n\n if (!this.focused) {\n this._keyManager.setActiveItem(-1);\n }\n\n // Wait to see if focus moves to an indivdual chip.\n setTimeout(() => {\n if (!this.focused) {\n this._propagateChanges();\n this._markAsTouched();\n }\n });\n }\n\n /**\n * Removes the `tabindex` from the chip listbox and resets it back afterwards, allowing the\n * user to tab out of it. This prevents the listbox from capturing focus and redirecting\n * it back to the first chip, creating a focus trap, if it user tries to tab away.\n */\n _allowFocusEscape() {\n const previousTabIndex = this.tabIndex;\n\n if (this.tabIndex !== -1) {\n this.tabIndex = -1;\n\n setTimeout(() => {\n this.tabIndex = previousTabIndex;\n this._changeDetectorRef.markForCheck();\n });\n }\n }\n\n /**\n * Handles custom keyboard shortcuts, and passes other keyboard events to the keyboard manager.\n */\n _keydown(event: KeyboardEvent) {\n if (this._originatesFromChip(event)) {\n this._keyManager.onKeydown(event);\n }\n }\n\n /** Marks the field as touched */\n private _markAsTouched() {\n this._onTouched();\n this._changeDetectorRef.markForCheck();\n }\n\n /** Emits change event to set the model value. */\n private _propagateChanges(fallbackValue?: any): void {\n let valueToEmit: any = null;\n\n if (Array.isArray(this.selected)) {\n valueToEmit = this.selected.map(chip => chip.value);\n } else {\n valueToEmit = this.selected ? this.selected.value : fallbackValue;\n }\n this._value = valueToEmit;\n this.change.emit(new MatChipListboxChange(this, valueToEmit));\n this._onChange(valueToEmit);\n this._changeDetectorRef.markForCheck();\n }\n\n /**\n * Initializes the chip listbox selection state to reflect any chips that were preselected.\n */\n private _initializeSelection() {\n setTimeout(() => {\n // Defer setting the value in order to avoid the \"Expression\n // has changed after it was checked\" errors from Angular.\n this._chips.forEach(chip => {\n if (chip.selected) {\n this._chipSetFoundation.select(chip.id);\n }\n });\n });\n }\n\n /**\n * Deselects every chip in the listbox.\n * @param skip Chip that should not be deselected.\n */\n private _clearSelection(skip?: MatChip): void {\n this._chips.forEach(chip => {\n if (chip !== skip) {\n chip.deselect();\n }\n });\n }\n\n /**\n * Finds and selects the chip based on its value.\n * @returns Chip that has the corresponding value.\n */\n private _selectValue(value: any, isUserInput: boolean = true): MatChip | undefined {\n const correspondingChip = this._chips.find(chip => {\n return chip.value != null && this._compareWith(chip.value, value);\n });\n\n if (correspondingChip) {\n isUserInput ? correspondingChip.selectViaInteraction() : correspondingChip.select();\n }\n\n return correspondingChip;\n }\n\n /** Syncs the chip-listbox selection state with the individual chips. */\n private _syncListboxProperties() {\n if (this._chips) {\n // Defer setting the value in order to avoid the \"Expression\n // has changed after it was checked\" errors from Angular.\n Promise.resolve().then(() => {\n this._chips.forEach(chip => {\n chip._chipListMultiple = this.multiple;\n chip.chipListSelectable = this._selectable;\n chip._changeDetectorRef.markForCheck();\n });\n });\n }\n }\n\n /** Sets the mdc classes for single vs multi selection. */\n private _updateMdcSelectionClasses() {\n this._setMdcClass('mdc-chip-set--filter', this.selectable && this.multiple);\n this._setMdcClass('mdc-chip-set--choice', this.selectable && !this.multiple);\n }\n\n /** Initializes the key manager to manage focus. */\n private _initKeyManager() {\n this._keyManager = new FocusKeyManager<MatChip>(this._chips)\n .withWrap()\n .withVerticalOrientation()\n .withHomeAndEnd()\n .withHorizontalOrientation(this._dir ? this._dir.value : 'ltr');\n\n if (this._dir) {\n this._dir.change\n .pipe(takeUntil(this._destroyed))\n .subscribe(dir => this._keyManager.withHorizontalOrientation(dir));\n }\n\n this._keyManager.tabOut.pipe(takeUntil(this._destroyed)).subscribe(() => {\n this._allowFocusEscape();\n });\n }\n\n /** Returns the first selected chip in this listbox, or undefined if no chips are selected. */\n private _getFirstSelectedChip(): MatChipOption | undefined {\n if (Array.isArray(this.selected)) {\n return this.selected.length ? this.selected[0] : undefined;\n } else {\n return this.selected;\n }\n }\n\n /** Unsubscribes from all chip events. */\n protected override _dropSubscriptions() {\n super._dropSubscriptions();\n if (this._chipSelectionSubscription) {\n this._chipSelectionSubscription.unsubscribe();\n this._chipSelectionSubscription = null;\n }\n\n if (this._chipBlurSubscription) {\n this._chipBlurSubscription.unsubscribe();\n this._chipBlurSubscription = null;\n }\n\n if (this._chipFocusSubscription) {\n this._chipFocusSubscription.unsubscribe();\n this._chipFocusSubscription = null;\n }\n }\n\n /** Subscribes to events on the child chips. */\n protected override _subscribeToChipEvents() {\n super._subscribeToChipEvents();\n this._listenToChipsSelection();\n this._listenToChipsFocus();\n this._listenToChipsBlur();\n }\n\n /** Subscribes to chip focus events. */\n private _listenToChipsFocus(): void {\n this._chipFocusSubscription = this.chipFocusChanges.subscribe((event: MatChipEvent) => {\n let chipIndex: number = this._chips.toArray().indexOf(event.chip as MatChipOption);\n\n if (this._isValidIndex(chipIndex)) {\n this._keyManager.updateActiveItem(chipIndex);\n }\n });\n }\n\n /** Subscribes to chip blur events. */\n private _listenToChipsBlur(): void {\n this._chipBlurSubscription = this.chipBlurChanges.subscribe(() => {\n this._blur();\n });\n }\n\n /** Subscribes to selection changes in the option chips. */\n private _listenToChipsSelection(): void {\n this._chipSelectionSubscription = this.chipSelectionChanges.subscribe(\n (chipSelectionChange: MatChipSelectionChange) => {\n this._chipSetFoundation.handleChipSelection({\n chipId: chipSelectionChange.source.id,\n selected: chipSelectionChange.selected,\n shouldIgnore: false,\n });\n if (chipSelectionChange.isUserInput) {\n this._propagateChanges();\n }\n },\n );\n }\n\n /**\n * If the amount of chips changed, we need to update the\n * key manager state and focus the next closest chip.\n */\n private _updateFocusForDestroyedChips() {\n // Move focus to the closest chip. If no other chips remain, focus the chip-listbox itself.\n if (this._lastDestroyedChipIndex != null) {\n if (this._chips.length) {\n const newChipIndex = Math.min(this._lastDestroyedChipIndex, this._chips.length - 1);\n this._keyManager.setActiveItem(newChipIndex);\n } else {\n this.focus();\n }\n }\n\n this._lastDestroyedChipIndex = null;\n }\n\n static ngAcceptInputType_multiple: BooleanInput;\n static ngAcceptInputType_selectable: BooleanInput;\n static ngAcceptInputType_required: BooleanInput;\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {QueryList} from '@angular/core';\nimport {Subject} from 'rxjs';\nimport {UP_ARROW, DOWN_ARROW, LEFT_ARROW, RIGHT_ARROW, HOME, END} from '@angular/cdk/keycodes';\n\n/** The keys handled by the GridKeyManager keydown method. */\nexport const NAVIGATION_KEYS = [DOWN_ARROW, UP_ARROW, RIGHT_ARROW, LEFT_ARROW];\n\n/** This interface is for rows that can be passed to a GridKeyManager. */\nexport interface GridKeyManagerRow<T> {\n cells: T[];\n}\n\n/**\n * This class manages keyboard events for grids. If you pass it a query list\n * of GridKeyManagerRow, it will set the active cell correctly when arrow events occur.\n *\n * GridKeyManager expects that rows may change dynamically, but the cells for a given row are\n * static. It also expects that all rows have the same number of cells.\n */\nexport class GridKeyManager<T> {\n private _activeRowIndex = -1;\n private _activeColumnIndex = -1;\n private _activeRow: GridKeyManagerRow<T> | null = null;\n private _activeCell: T | null = null;\n private _dir: 'ltr' | 'rtl' = 'ltr';\n private _homeAndEnd = false;\n\n constructor(private _rows: QueryList<GridKeyManagerRow<T>> | GridKeyManagerRow<T>[]) {\n // We allow for the rows to be an array because, in some cases, the consumer may\n // not have access to a QueryList of the rows they want to manage (e.g. when the\n // rows aren't being collected via `ViewChildren` or `ContentChildren`).\n if (_rows instanceof QueryList) {\n _rows.changes.subscribe((newRows: QueryList<GridKeyManagerRow<T>>) => {\n if (this._activeRow) {\n const newIndex = newRows.toArray().indexOf(this._activeRow);\n\n if (newIndex > -1 && newIndex !== this._activeRowIndex) {\n this._activeRowIndex = newIndex;\n }\n }\n });\n }\n }\n\n /** Stream that emits whenever the active cell of the grid manager changes. */\n change = new Subject<{row: number; column: number}>();\n\n /**\n * Configures the directionality of the key manager's horizontal movement.\n * @param direction Direction which is considered forward movement across a row.\n *\n * If withDirectionality is not set, the default is 'ltr'.\n */\n withDirectionality(direction: 'ltr' | 'rtl'): this {\n this._dir = direction;\n return this;\n }\n\n /**\n * Sets the active cell to the cell at the indices specified.\n * @param cell The row and column containing the cell to be set as active.\n */\n setActiveCell(cell: {row: number; column: number}): void;\n\n /**\n * Sets the active cell to the cell.\n * @param cell The cell to be set as active.\n */\n setActiveCell(cell: T): void;\n\n setActiveCell(cell: any): void {\n const previousRowIndex = this._activeRowIndex;\n const previousColumnIndex = this._activeColumnIndex;\n\n this.updateActiveCell(cell);\n\n if (\n this._activeRowIndex !== previousRowIndex ||\n this._activeColumnIndex !== previousColumnIndex\n ) {\n this.change.next({row: this._activeRowIndex, column: this._activeColumnIndex});\n }\n }\n\n /**\n * Configures the key manager to activate the first and last items\n * respectively when the Home or End key is pressed.\n * @param enabled Whether pressing the Home or End key activates the first/last item.\n */\n withHomeAndEnd(enabled: boolean = true): this {\n this._homeAndEnd = enabled;\n return this;\n }\n\n /**\n * Sets the active cell depending on the key event passed in.\n * @param event Keyboard event to be used for determining which element should be active.\n */\n onKeydown(event: KeyboardEvent): void {\n const keyCode = event.keyCode;\n\n switch (keyCode) {\n case DOWN_ARROW:\n this.setNextRowActive();\n break;\n\n case UP_ARROW:\n this.setPreviousRowActive();\n break;\n\n case RIGHT_ARROW:\n this._dir === 'rtl' ? this.setPreviousColumnActive() : this.setNextColumnActive();\n break;\n\n case LEFT_ARROW:\n this._dir === 'rtl' ? this.setNextColumnActive() : this.setPreviousColumnActive();\n break;\n\n case HOME:\n if (this._homeAndEnd) {\n this.setFirstCellActive();\n break;\n } else {\n return;\n }\n\n case END:\n if (this._homeAndEnd) {\n this.setLastCellActive();\n break;\n } else {\n return;\n }\n\n default:\n // Note that we return here, in order to avoid preventing\n // the default action of non-navigational keys.\n return;\n }\n\n event.preventDefault();\n }\n\n /** Index of the currently active row. */\n get activeRowIndex(): number {\n return this._activeRowIndex;\n }\n\n /** Index of the currently active column. */\n get activeColumnIndex(): number {\n return this._activeColumnIndex;\n }\n\n /** The active cell. */\n get activeCell(): T | null {\n return this._activeCell;\n }\n\n /** Sets the active cell to the first cell in the grid. */\n setFirstCellActive(): void {\n this._setActiveCellByIndex(0, 0);\n }\n\n /** Sets the active cell to the last cell in the grid. */\n setLastCellActive(): void {\n const lastRowIndex = this._rows.length - 1;\n const lastRow = this._getRowsArray()[lastRowIndex];\n this._setActiveCellByIndex(lastRowIndex, lastRow.cells.length - 1);\n }\n\n /** Sets the active row to the next row in the grid. Active column is unchanged. */\n setNextRowActive(): void {\n this._activeRowIndex < 0 ? this.setFirstCellActive() : this._setActiveCellByDelta(1, 0);\n }\n\n /** Sets the active row to the previous row in the grid. Active column is unchanged. */\n setPreviousRowActive(): void {\n this._setActiveCellByDelta(-1, 0);\n }\n\n /**\n * Sets the active column to the next column in the grid.\n * Active row is unchanged, unless we reach the end of a row.\n */\n setNextColumnActive(): void {\n this._activeRowIndex < 0 ? this.setFirstCellActive() : this._setActiveCellByDelta(0, 1);\n }\n\n /**\n * Sets the active column to the previous column in the grid.\n * Active row is unchanged, unless we reach the end of a row.\n */\n setPreviousColumnActive(): void {\n this._setActiveCellByDelta(0, -1);\n }\n\n /**\n * Allows setting the active cell without any other effects.\n * @param cell Row and column of the cell to be set as active.\n */\n updateActiveCell(cell: {row: number; column: number}): void;\n\n /**\n * Allows setting the active cell without any other effects.\n * @param cell Cell to be set as active.\n */\n updateActiveCell(cell: T): void;\n\n updateActiveCell(cell: any): void {\n const rowArray = this._getRowsArray();\n\n if (\n typeof cell === 'object' &&\n typeof cell.row === 'number' &&\n typeof cell.column === 'number'\n ) {\n this._activeRowIndex = cell.row;\n this._activeColumnIndex = cell.column;\n this._activeRow = rowArray[cell.row] || null;\n this._activeCell = this._activeRow ? this._activeRow.cells[cell.column] || null : null;\n } else {\n rowArray.forEach((row, rowIndex) => {\n const columnIndex = row.cells.indexOf(cell);\n if (columnIndex !== -1) {\n this._activeRowIndex = rowIndex;\n this._activeColumnIndex = columnIndex;\n this._activeRow = row;\n this._activeCell = row.cells[columnIndex];\n }\n });\n }\n }\n\n /**\n * This method sets the active cell, given the row and columns deltas\n * between the currently active cell and the new active cell.\n */\n private _setActiveCellByDelta(rowDelta: -1 | 0 | 1, columnDelta: -1 | 0 | 1): void {\n // If delta puts us past the last cell in a row, move to the first cell of the next row.\n if (this._activeRow && this._activeColumnIndex + columnDelta >= this._activeRow.cells.length) {\n this._setActiveCellByIndex(this._activeRowIndex + 1, 0);\n\n // If delta puts us prior to the first cell in a row, move to the last cell of the previous row.\n } else if (this._activeColumnIndex + columnDelta < 0) {\n const previousRowIndex = this._activeRowIndex - 1;\n const previousRow = this._getRowsArray()[previousRowIndex];\n if (previousRow) {\n this._setActiveCellByIndex(previousRowIndex, previousRow.cells.length - 1);\n }\n } else {\n this._setActiveCellByIndex(\n this._activeRowIndex + rowDelta,\n this._activeColumnIndex + columnDelta,\n );\n }\n }\n\n /**\n * Sets the active cell to the cell at the indices specified, if they are valid.\n */\n private _setActiveCellByIndex(rowIndex: number, columnIndex: number): void {\n const rows = this._getRowsArray();\n\n const targetRow = rows[rowIndex];\n\n if (!targetRow || !targetRow.cells[columnIndex]) {\n return;\n }\n\n this.setActiveCell({row: rowIndex, column: columnIndex});\n }\n\n /** Returns the rows as an array. */\n private _getRowsArray(): GridKeyManagerRow<T>[] {\n return this._rows instanceof QueryList ? this._rows.toArray() : this._rows;\n }\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {GridKeyManager} from './grid-key-manager';\n\n/**\n * A version of GridKeyManager where the cells are HTMLElements, and focus()\n * is called on a cell when it becomes active.\n */\nexport class GridFocusKeyManager extends GridKeyManager<HTMLElement> {\n /**\n * Sets the active cell to the cell at the specified\n * indices and focuses the newly active cell.\n * @param cell Row and column indices of the cell to be set as active.\n */\n override setActiveCell(cell: {row: number; column: number}): void;\n\n /**\n * Sets the active cell to the cell that is specified and focuses it.\n * @param cell Cell to be set as active.\n */\n override setActiveCell(cell: HTMLElement): void;\n\n override setActiveCell(cell: any): void {\n super.setActiveCell(cell);\n\n if (this.activeCell) {\n this.activeCell.focus();\n }\n }\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {Directionality} from '@angular/cdk/bidi';\nimport {BooleanInput, coerceBooleanProperty} from '@angular/cdk/coercion';\nimport {TAB} from '@angular/cdk/keycodes';\nimport {\n AfterContentInit,\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ContentChildren,\n DoCheck,\n ElementRef,\n EventEmitter,\n Input,\n OnDestroy,\n Optional,\n Output,\n QueryList,\n Self,\n ViewEncapsulation,\n} from '@angular/core';\nimport {\n ControlValueAccessor,\n FormGroupDirective,\n NgControl,\n NgForm,\n Validators,\n} from '@angular/forms';\nimport {\n CanUpdateErrorState,\n ErrorStateMatcher,\n mixinErrorState,\n} from '@angular/material-experimental/mdc-core';\nimport {MatFormFieldControl} from '@angular/material-experimental/mdc-form-field';\nimport {MatChipTextControl} from './chip-text-control';\nimport {merge, Observable, Subscription} from 'rxjs';\nimport {startWith, takeUntil} from 'rxjs/operators';\nimport {MatChipEvent} from './chip';\nimport {MatChipRow} from './chip-row';\nimport {MatChipSet} from './chip-set';\nimport {GridFocusKeyManager} from './grid-focus-key-manager';\n\n/** Change event object that is emitted when the chip grid value has changed. */\nexport class MatChipGridChange {\n constructor(\n /** Chip grid that emitted the event. */\n public source: MatChipGrid,\n /** Value of the chip grid when the event was emitted. */\n public value: any,\n ) {}\n}\n\n/**\n * Boilerplate for applying mixins to MatChipGrid.\n * @docs-private\n */\nclass MatChipGridBase extends MatChipSet {\n constructor(\n _elementRef: ElementRef,\n _changeDetectorRef: ChangeDetectorRef,\n _dir: Directionality,\n public _defaultErrorStateMatcher: ErrorStateMatcher,\n public _parentForm: NgForm,\n public _parentFormGroup: FormGroupDirective,\n /** @docs-private */\n public ngControl: NgControl,\n ) {\n super(_elementRef, _changeDetectorRef, _dir);\n }\n}\nconst _MatChipGridMixinBase = mixinErrorState(MatChipGridBase);\n\n/**\n * An extension of the MatChipSet component used with MatChipRow chips and\n * the matChipInputFor directive.\n */\n@Component({\n selector: 'mat-chip-grid',\n template: '<ng-content></ng-content>',\n styleUrls: ['chips.css'],\n inputs: ['tabIndex'],\n host: {\n 'class': 'mat-mdc-chip-set mat-mdc-chip-grid mdc-chip-set',\n '[attr.role]': 'role',\n '[tabIndex]': '_chips && _chips.length === 0 ? -1 : tabIndex',\n // TODO: replace this binding with use of AriaDescriber\n '[attr.aria-describedby]': '_ariaDescribedby || null',\n '[attr.aria-disabled]': 'disabled.toString()',\n '[attr.aria-invalid]': 'errorState',\n '[class.mat-mdc-chip-list-disabled]': 'disabled',\n '[class.mat-mdc-chip-list-invalid]': 'errorState',\n '[class.mat-mdc-chip-list-required]': 'required',\n '(focus)': 'focus()',\n '(blur)': '_blur()',\n '(keydown)': '_keydown($event)',\n '[id]': '_uid',\n },\n providers: [{provide: MatFormFieldControl, useExisting: MatChipGrid}],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class MatChipGrid\n extends _MatChipGridMixinBase\n implements\n AfterContentInit,\n AfterViewInit,\n CanUpdateErrorState,\n ControlValueAccessor,\n DoCheck,\n MatFormFieldControl<any>,\n OnDestroy\n{\n /**\n * Implemented as part of MatFormFieldControl.\n * @docs-private\n */\n readonly controlType: string = 'mat-chip-grid';\n\n /** Subscription to focus changes in the chips. */\n private _chipFocusSubscription: Subscription | null;\n\n /** Subscription to blur changes in the chips. */\n private _chipBlurSubscription: Subscription | null;\n\n /** The chip input to add more chips */\n protected _chipInput: MatChipTextControl;\n\n /**\n * Function when touched. Set as part of ControlValueAccessor implementation.\n * @docs-private\n */\n _onTouched = () => {};\n\n /**\n * Function when changed. Set as part of ControlValueAccessor implementation.\n * @docs-private\n */\n _onChange: (value: any) => void = () => {};\n\n /** The GridFocusKeyManager which handles focus. */\n _keyManager: GridFocusKeyManager;\n\n /**\n * Implemented as part of MatFormFieldControl.\n * @docs-private\n */\n @Input()\n override get disabled(): boolean {\n return this.ngControl ? !!this.ngControl.disabled : this._disabled;\n }\n override set disabled(value: boolean) {\n this._disabled = coerceBooleanProperty(value);\n this._syncChipsState();\n }\n\n /**\n * Implemented as part of MatFormFieldControl.\n * @docs-private\n */\n get id(): string {\n return this._chipInput.id;\n }\n\n /**\n * Implemented as part of MatFormFieldControl.\n * @docs-private\n */\n override get empty(): boolean {\n return (\n (!this._chipInput || this._chipInput.empty) && (!this._chips || this._chips.length === 0)\n );\n }\n\n /** The ARIA role applied to the chip grid. */\n override get role(): string | null {\n return this.empty ? null : 'grid';\n }\n\n /**\n * Implemented as part of MatFormFieldControl.\n * @docs-private\n */\n @Input()\n @Input()\n get placeholder(): string {\n return this._chipInput ? this._chipInput.placeholder : this._placeholder;\n }\n set placeholder(value: string) {\n this._placeholder = value;\n this.stateChanges.next();\n }\n protected _placeholder: string;\n\n /** Whether any chips or the matChipInput inside of this chip-grid has focus. */\n override get focused(): boolean {\n return this._chipInput.focused || this._hasFocusedChip();\n }\n\n /**\n * Implemented as part of MatFormFieldControl.\n * @docs-private\n */\n @Input()\n get required(): boolean {\n return this._required ?? this.ngControl?.control?.hasValidator(Validators.required) ?? false;\n }\n set required(value: boolean) {\n this._required = coerceBooleanProperty(value);\n this.stateChanges.next();\n }\n protected _required: boolean | undefined;\n\n /**\n * Implemented as part of MatFormFieldControl.\n * @docs-private\n */\n get shouldLabelFloat(): boolean {\n return !this.empty || this.focused;\n }\n\n /**\n * Implemented as part of MatFormFieldControl.\n * @docs-private\n */\n @Input()\n get value(): any {\n return this._value;\n }\n set value(value: any) {\n this._value = value;\n }\n protected _value: any[] = [];\n\n /** An object used to control when error messages are shown. */\n @Input() override errorStateMatcher: ErrorStateMatcher;\n\n /** Combined stream of all of the child chips' blur events. */\n get chipBlurChanges(): Observable<MatChipEvent> {\n return merge(...this._chips.map(chip => chip._onBlur));\n }\n\n /** Combined stream of all of the child chips' focus events. */\n get chipFocusChanges(): Observable<MatChipEvent> {\n return merge(...this._chips.map(chip => chip._onFocus));\n }\n\n /** Emits when the chip grid value has been changed by the user. */\n @Output() readonly change: EventEmitter<MatChipGridChange> =\n new EventEmitter<MatChipGridChange>();\n\n /**\n * Emits whenever the raw value of the chip-grid changes. This is here primarily\n * to facilitate the two-way binding for the `value` input.\n * @docs-private\n */\n @Output() readonly valueChange: EventEmitter<any> = new EventEmitter<any>();\n\n @ContentChildren(MatChipRow, {\n // We need to use `descendants: true`, because Ivy will no longer match\n // indirect descendants if it's left as false.\n descendants: true,\n })\n override _chips: QueryList<MatChipRow>;\n\n constructor(\n _elementRef: ElementRef,\n _changeDetectorRef: ChangeDetectorRef,\n @Optional() _dir: Directionality,\n @Optional() _parentForm: NgForm,\n @Optional() _parentFormGroup: FormGroupDirective,\n _defaultErrorStateMatcher: ErrorStateMatcher,\n @Optional() @Self() ngControl: NgControl,\n ) {\n super(\n _elementRef,\n _changeDetectorRef,\n _dir,\n _defaultErrorStateMatcher,\n _parentForm,\n _parentFormGroup,\n ngControl,\n );\n if (this.ngControl) {\n this.ngControl.valueAccessor = this;\n }\n }\n\n override ngAfterContentInit() {\n super.ngAfterContentInit();\n this._initKeyManager();\n\n this._chips.changes.pipe(startWith(null), takeUntil(this._destroyed)).subscribe(() => {\n // Check to see if we have a destroyed chip and need to refocus\n this._updateFocusForDestroyedChips();\n\n this.stateChanges.next();\n });\n }\n\n override ngAfterViewInit() {\n super.ngAfterViewInit();\n if (!this._chipInput && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n throw Error('mat-chip-grid must be used in combination with matChipInputFor.');\n }\n }\n\n ngDoCheck() {\n if (this.ngControl) {\n // We need to re-evaluate this on every change detection cycle, because there are some\n // error triggers that we can't subscribe to (e.g. parent form submissions). This means\n // that whatever logic is in here has to be super lean or we risk destroying the performance.\n this.updateErrorState();\n }\n }\n\n override ngOnDestroy() {\n super.ngOnDestroy();\n this.stateChanges.complete();\n }\n\n /** Associates an HTML input element with this chip grid. */\n registerInput(inputElement: MatChipTextControl): void {\n this._chipInput = inputElement;\n this._setMdcClass('mdc-chip-set--input', true);\n }\n\n /**\n * Implemented as part of MatFormFieldControl.\n * @docs-private\n */\n onContainerClick(event: MouseEvent) {\n if (!this._originatesFromChip(event) && !this.disabled) {\n this.focus();\n }\n }\n\n /**\n * Focuses the first chip in this chip grid, or the associated input when there\n * are no eligible chips.\n */\n override focus(): void {\n if (this.disabled || this._chipInput.focused) {\n return;\n }\n\n if (this._chips.length > 0) {\n this._keyManager.setFirstCellActive();\n } else {\n this._focusInput();\n }\n\n this.stateChanges.next();\n }\n\n /**\n * Implemented as part of MatFormFieldControl.\n * @docs-private\n */\n setDescribedByIds(ids: string[]) {\n this._ariaDescribedby = ids.join(' ');\n }\n\n /**\n * Implemented as part of ControlValueAccessor.\n * @docs-private\n */\n writeValue(value: any): void {\n // The user is responsible for creating the child chips, so we just store the value.\n this._value = value;\n }\n\n /**\n * Implemented as part of ControlValueAccessor.\n * @docs-private\n */\n registerOnChange(fn: (value: any) => void): void {\n this._onChange = fn;\n }\n\n /**\n * Implemented as part of ControlValueAccessor.\n * @docs-private\n */\n registerOnTouched(fn: () => void): void {\n this._onTouched = fn;\n }\n\n /**\n * Implemented as part of ControlValueAccessor.\n * @docs-private\n */\n setDisabledState(isDisabled: boolean): void {\n this.disabled = isDisabled;\n this.stateChanges.next();\n }\n\n /** When blurred, mark the field as touched when focus moved outside the chip grid. */\n _blur() {\n if (this.disabled) {\n return;\n }\n\n // Check whether the focus moved to chip input.\n // If the focus is not moved to chip input, mark the field as touched. If the focus moved\n // to chip input, do nothing.\n // Timeout is needed to wait for the focus() event trigger on chip input.\n setTimeout(() => {\n if (!this.focused) {\n this._keyManager.setActiveCell({row: -1, column: -1});\n this._propagateChanges();\n this._markAsTouched();\n }\n });\n }\n\n /**\n * Removes the `tabindex` from the chip grid and resets it back afterwards, allowing the\n * user to tab out of it. This prevents the grid from capturing focus and redirecting\n * it back to the first chip, creating a focus trap, if it user tries to tab away.\n */\n _allowFocusEscape() {\n if (this._chipInput.focused) {\n return;\n }\n\n const previousTabIndex = this.tabIndex;\n\n if (this.tabIndex !== -1) {\n this.tabIndex = -1;\n\n setTimeout(() => {\n this.tabIndex = previousTabIndex;\n this._changeDetectorRef.markForCheck();\n });\n }\n }\n\n /** Handles custom keyboard events. */\n _keydown(event: KeyboardEvent) {\n const target = event.target as HTMLElement;\n const keyCode = event.keyCode;\n const manager = this._keyManager;\n\n if (keyCode === TAB && target.id !== this._chipInput!.id) {\n this._allowFocusEscape();\n } else if (this._originatesFromEditingChip(event)) {\n // No-op, let the editing chip handle all keyboard events except for Tab.\n } else if (this._originatesFromChip(event)) {\n manager.onKeydown(event);\n }\n\n this.stateChanges.next();\n }\n\n /** Unsubscribes from all chip events. */\n protected override _dropSubscriptions() {\n super._dropSubscriptions();\n if (this._chipBlurSubscription) {\n this._chipBlurSubscription.unsubscribe();\n this._chipBlurSubscription = null;\n }\n\n if (this._chipFocusSubscription) {\n this._chipFocusSubscription.unsubscribe();\n this._chipFocusSubscription = null;\n }\n }\n\n /** Subscribes to events on the child chips. */\n protected override _subscribeToChipEvents() {\n super._subscribeToChipEvents();\n this._listenToChipsFocus();\n this._listenToChipsBlur();\n }\n\n /** Initializes the key manager to manage focus. */\n private _initKeyManager() {\n this._keyManager = new GridFocusKeyManager(this._chips)\n .withHomeAndEnd()\n .withDirectionality(this._dir ? this._dir.value : 'ltr');\n\n if (this._dir) {\n this._dir.change\n .pipe(takeUntil(this._destroyed))\n .subscribe(dir => this._keyManager.withDirectionality(dir));\n }\n }\n\n /** Subscribes to chip focus events. */\n private _listenToChipsFocus(): void {\n this._chipFocusSubscription = this.chipFocusChanges.subscribe((event: MatChipEvent) => {\n let chipIndex: number = this._chips.toArray().indexOf(event.chip as MatChipRow);\n\n if (this._isValidIndex(chipIndex)) {\n this._keyManager.updateActiveCell({row: chipIndex, column: 0});\n }\n });\n }\n\n /** Subscribes to chip blur events. */\n private _listenToChipsBlur(): void {\n this._chipBlurSubscription = this.chipBlurChanges.subscribe(() => {\n this._blur();\n this.stateChanges.next();\n });\n }\n\n /** Emits change event to set the model value. */\n private _propagateChanges(): void {\n const valueToEmit = this._chips.length ? this._chips.toArray().map(chip => chip.value) : [];\n this._value = valueToEmit;\n this.change.emit(new MatChipGridChange(this, valueToEmit));\n this.valueChange.emit(valueToEmit);\n this._onChange(valueToEmit);\n this._changeDetectorRef.markForCheck();\n }\n\n /** Mark the field as touched */\n private _markAsTouched() {\n this._onTouched();\n this._changeDetectorRef.markForCheck();\n this.stateChanges.next();\n }\n\n /**\n * If the amount of chips changed, we need to focus the next closest chip.\n */\n private _updateFocusForDestroyedChips() {\n // Move focus to the closest chip. If no other chips remain, focus the chip-grid itself.\n if (this._lastDestroyedChipIndex != null) {\n if (this._chips.length) {\n const newChipIndex = Math.min(this._lastDestroyedChipIndex, this._chips.length - 1);\n this._keyManager.setActiveCell({\n row: newChipIndex,\n column: Math.max(this._keyManager.activeColumnIndex, 0),\n });\n } else {\n this.focus();\n }\n }\n\n this._lastDestroyedChipIndex = null;\n }\n\n /** Focus input element. */\n private _focusInput() {\n this._chipInput.focus();\n }\n\n // Even though this member is inherited, we explicitly need to set it here as the `disabled`\n // input is overwritten in this class too. This is needed for the lint rule.\n static override ngAcceptInputType_disabled: BooleanInput;\n static ngAcceptInputType_required: BooleanInput;\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {InjectionToken} from '@angular/core';\n\n/** Default options, for the chips module, that can be overridden. */\nexport interface MatChipsDefaultOptions {\n /** The list of key codes that will trigger a chipEnd event. */\n separatorKeyCodes: readonly number[] | ReadonlySet<number>;\n}\n\n/** Injection token to be used to override the default options for the chips module. */\nexport const MAT_CHIPS_DEFAULT_OPTIONS = new InjectionToken<MatChipsDefaultOptions>(\n 'mat-chips-default-options',\n);\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {BooleanInput, coerceBooleanProperty} from '@angular/cdk/coercion';\nimport {BACKSPACE, hasModifierKey, TAB} from '@angular/cdk/keycodes';\nimport {\n AfterContentInit,\n Directive,\n ElementRef,\n EventEmitter,\n Inject,\n Input,\n OnChanges,\n OnDestroy,\n Optional,\n Output,\n} from '@angular/core';\nimport {MatFormField, MAT_FORM_FIELD} from '@angular/material-experimental/mdc-form-field';\nimport {MatChipsDefaultOptions, MAT_CHIPS_DEFAULT_OPTIONS} from './chip-default-options';\nimport {MatChipGrid} from './chip-grid';\nimport {MatChipTextControl} from './chip-text-control';\n\n/** Represents an input event on a `matChipInput`. */\nexport interface MatChipInputEvent {\n /**\n * The native `<input>` element that the event is being fired for.\n * @deprecated Use `MatChipInputEvent#chipInput.inputElement` instead.\n * @breaking-change 13.0.0 This property will be removed.\n */\n input: HTMLInputElement;\n\n /** The value of the input. */\n value: string;\n\n /**\n * Reference to the chip input that emitted the event.\n * @breaking-change 13.0.0 This property will be made required.\n */\n chipInput?: MatChipInput;\n}\n\n// Increasing integer for generating unique ids.\nlet nextUniqueId = 0;\n\n/**\n * Directive that adds chip-specific behaviors to an input element inside `<mat-form-field>`.\n * May be placed inside or outside of a `<mat-chip-grid>`.\n */\n@Directive({\n selector: 'input[matChipInputFor]',\n exportAs: 'matChipInput, matChipInputFor',\n host: {\n // TODO: eventually we should remove `mat-input-element` from here since it comes from the\n // non-MDC version of the input. It's currently being kept for backwards compatibility, because\n // the MDC chips were landed initially with it.\n 'class': 'mat-mdc-chip-input mat-mdc-input-element mdc-text-field__input mat-input-element',\n '(keydown)': '_keydown($event)',\n '(keyup)': '_keyup($event)',\n '(blur)': '_blur()',\n '(focus)': '_focus()',\n '(input)': '_onInput()',\n '[id]': 'id',\n '[attr.disabled]': 'disabled || null',\n '[attr.placeholder]': 'placeholder || null',\n '[attr.aria-invalid]': '_chipGrid && _chipGrid.ngControl ? _chipGrid.ngControl.invalid : null',\n '[attr.aria-required]': '_chipGrid && _chipGrid.required || null',\n '[attr.required]': '_chipGrid && _chipGrid.required || null',\n },\n})\nexport class MatChipInput implements MatChipTextControl, AfterContentInit, OnChanges, OnDestroy {\n /** Used to prevent focus moving to chips while user is holding backspace */\n private _focusLastChipOnBackspace: boolean;\n\n /** Whether the control is focused. */\n focused: boolean = false;\n _chipGrid: MatChipGrid;\n\n /** Register input for chip list */\n @Input('matChipInputFor')\n set chipGrid(value: MatChipGrid) {\n if (value) {\n this._chipGrid = value;\n this._chipGrid.registerInput(this);\n }\n }\n\n /**\n * Whether or not the chipEnd event will be emitted when the input is blurred.\n */\n @Input('matChipInputAddOnBlur')\n get addOnBlur(): boolean {\n return this._addOnBlur;\n }\n set addOnBlur(value: boolean) {\n this._addOnBlur = coerceBooleanProperty(value);\n }\n _addOnBlur: boolean = false;\n\n /**\n * The list of key codes that will trigger a chipEnd event.\n *\n * Defaults to `[ENTER]`.\n */\n @Input('matChipInputSeparatorKeyCodes')\n separatorKeyCodes: readonly number[] | ReadonlySet<number> =\n this._defaultOptions.separatorKeyCodes;\n\n /** Emitted when a chip is to be added. */\n @Output('matChipInputTokenEnd')\n readonly chipEnd: EventEmitter<MatChipInputEvent> = new EventEmitter<MatChipInputEvent>();\n\n /** The input's placeholder text. */\n @Input() placeholder: string = '';\n\n /** Unique id for the input. */\n @Input() id: string = `mat-mdc-chip-list-input-${nextUniqueId++}`;\n\n /** Whether the input is disabled. */\n @Input()\n get disabled(): boolean {\n return this._disabled || (this._chipGrid && this._chipGrid.disabled);\n }\n set disabled(value: boolean) {\n this._disabled = coerceBooleanProperty(value);\n }\n private _disabled: boolean = false;\n\n /** Whether the input is empty. */\n get empty(): boolean {\n return !this.inputElement.value;\n }\n\n /** The native input element to which this directive is attached. */\n readonly inputElement: HTMLInputElement;\n\n constructor(\n protected _elementRef: ElementRef<HTMLInputElement>,\n @Inject(MAT_CHIPS_DEFAULT_OPTIONS) private _defaultOptions: MatChipsDefaultOptions,\n @Optional() @Inject(MAT_FORM_FIELD) formField?: MatFormField,\n ) {\n this.inputElement = this._elementRef.nativeElement as HTMLInputElement;\n\n if (formField) {\n this.inputElement.classList.add('mat-mdc-form-field-input-control');\n }\n }\n\n ngOnChanges() {\n this._chipGrid.stateChanges.next();\n }\n\n ngOnDestroy(): void {\n this.chipEnd.complete();\n }\n\n ngAfterContentInit(): void {\n this._focusLastChipOnBackspace = this.empty;\n }\n\n /** Utility method to make host definition/tests more clear. */\n _keydown(event?: KeyboardEvent) {\n if (event) {\n // Allow the user's focus to escape when they're tabbing forward. Note that we don't\n // want to do this when going backwards, because focus should go back to the first chip.\n if (event.keyCode === TAB && !hasModifierKey(event, 'shiftKey')) {\n this._chipGrid._allowFocusEscape();\n }\n\n // To prevent the user from accidentally deleting chips when pressing BACKSPACE continuously,\n // We focus the last chip on backspace only after the user has released the backspace button,\n // And the input is empty (see behaviour in _keyup)\n if (event.keyCode === BACKSPACE && this._focusLastChipOnBackspace) {\n if (this._chipGrid._chips.length) {\n this._chipGrid._keyManager.setLastCellActive();\n }\n event.preventDefault();\n return;\n } else {\n this._focusLastChipOnBackspace = false;\n }\n }\n\n this._emitChipEnd(event);\n }\n\n /**\n * Pass events to the keyboard manager. Available here for tests.\n */\n _keyup(event: KeyboardEvent) {\n // Allow user to move focus to chips next time he presses backspace\n if (!this._focusLastChipOnBackspace && event.keyCode === BACKSPACE && this.empty) {\n this._focusLastChipOnBackspace = true;\n event.preventDefault();\n }\n }\n\n /** Checks to see if the blur should emit the (chipEnd) event. */\n _blur() {\n if (this.addOnBlur) {\n this._emitChipEnd();\n }\n this.focused = false;\n // Blur the chip list if it is not focused\n if (!this._chipGrid.focused) {\n this._chipGrid._blur();\n }\n this._chipGrid.stateChanges.next();\n }\n\n _focus() {\n this.focused = true;\n this._focusLastChipOnBackspace = this.empty;\n this._chipGrid.stateChanges.next();\n }\n\n /** Checks to see if the (chipEnd) event needs to be emitted. */\n _emitChipEnd(event?: KeyboardEvent) {\n if (!this.inputElement.value && !!event) {\n this._chipGrid._keydown(event);\n }\n\n if (!event || this._isSeparatorKey(event)) {\n this.chipEnd.emit({\n input: this.inputElement,\n value: this.inputElement.value,\n chipInput: this,\n });\n\n event?.preventDefault();\n }\n }\n\n _onInput() {\n // Let chip list know whenever the value changes.\n this._chipGrid.stateChanges.next();\n }\n\n /** Focuses the input. */\n focus(): void {\n this.inputElement.focus();\n }\n\n /** Clears the input */\n clear(): void {\n this.inputElement.value = '';\n this._focusLastChipOnBackspace = true;\n }\n\n /** Checks whether a keycode is one of the configured separators. */\n private _isSeparatorKey(event: KeyboardEvent) {\n return !hasModifierKey(event) && new Set(this.separatorKeyCodes).has(event.keyCode);\n }\n\n static ngAcceptInputType_addOnBlur: BooleanInput;\n static ngAcceptInputType_disabled: BooleanInput;\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {ENTER} from '@angular/cdk/keycodes';\nimport {CommonModule} from '@angular/common';\nimport {NgModule} from '@angular/core';\nimport {\n ErrorStateMatcher,\n MatCommonModule,\n MatRippleModule,\n} from '@angular/material-experimental/mdc-core';\nimport {MatChip, MatChipCssInternalOnly} from './chip';\nimport {MAT_CHIPS_DEFAULT_OPTIONS, MatChipsDefaultOptions} from './chip-default-options';\nimport {MatChipEditInput} from './chip-edit-input';\nimport {MatChipGrid} from './chip-grid';\nimport {MatChipAvatar, MatChipRemove, MatChipTrailingIcon} from './chip-icons';\nimport {MatChipInput} from './chip-input';\nimport {MatChipListbox} from './chip-listbox';\nimport {MatChipRow} from './chip-row';\nimport {MatChipOption} from './chip-option';\nimport {MatChipSet} from './chip-set';\n\nconst CHIP_DECLARATIONS = [\n MatChip,\n MatChipAvatar,\n MatChipCssInternalOnly,\n MatChipEditInput,\n MatChipGrid,\n MatChipInput,\n MatChipListbox,\n MatChipOption,\n MatChipRemove,\n MatChipRow,\n MatChipSet,\n MatChipTrailingIcon,\n];\n\n@NgModule({\n imports: [MatCommonModule, CommonModule, MatRippleModule],\n exports: [MatCommonModule, CHIP_DECLARATIONS],\n declarations: CHIP_DECLARATIONS,\n providers: [\n ErrorStateMatcher,\n {\n provide: MAT_CHIPS_DEFAULT_OPTIONS,\n useValue: {\n separatorKeyCodes: [ENTER],\n } as MatChipsDefaultOptions,\n },\n ],\n})\nexport class MatChipsModule {}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nexport * from './chip';\nexport * from './chip-option';\nexport * from './chip-row';\nexport * from './chip-set';\nexport * from './chip-listbox';\nexport * from './chip-grid';\nexport * from './module';\nexport * from './chip-input';\nexport * from './chip-default-options';\nexport * from './chip-icons';\nexport * from './chip-text-control';\nexport * from './chip-edit-input';\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nexport * from './public-api';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["uid"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"mdc-chips.mjs","sources":["../../../../../../src/material-experimental/mdc-chips/chip-icons.ts","../../../../../../src/material-experimental/mdc-chips/chip.ts","../../../../../../src/material-experimental/mdc-chips/chip.html","../../../../../../src/material-experimental/mdc-chips/chip-option.ts","../../../../../../src/material-experimental/mdc-chips/chip-option.html","../../../../../../src/material-experimental/mdc-chips/chip-edit-input.ts","../../../../../../src/material-experimental/mdc-chips/chip-row.ts","../../../../../../src/material-experimental/mdc-chips/chip-row.html","../../../../../../src/material-experimental/mdc-chips/chip-set.ts","../../../../../../src/material-experimental/mdc-chips/chip-listbox.ts","../../../../../../src/material-experimental/mdc-chips/grid-key-manager.ts","../../../../../../src/material-experimental/mdc-chips/grid-focus-key-manager.ts","../../../../../../src/material-experimental/mdc-chips/chip-grid.ts","../../../../../../src/material-experimental/mdc-chips/chip-default-options.ts","../../../../../../src/material-experimental/mdc-chips/chip-input.ts","../../../../../../src/material-experimental/mdc-chips/module.ts","../../../../../../src/material-experimental/mdc-chips/public-api.ts","../../../../../../src/material-experimental/mdc-chips/index.ts","../../../../../../src/material-experimental/mdc-chips/mdc-chips_public_index.ts"],"sourcesContent":["/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {BooleanInput, NumberInput} from '@angular/cdk/coercion';\nimport {ChangeDetectorRef, Directive, ElementRef, InjectionToken, OnDestroy} from '@angular/core';\nimport {\n CanDisable,\n HasTabIndex,\n mixinDisabled,\n mixinTabIndex,\n} from '@angular/material-experimental/mdc-core';\nimport {deprecated} from '@material/chips';\nimport {Subject} from 'rxjs';\n\n/**\n * Injection token that can be used to reference instances of `MatChipAvatar`. It serves as\n * alternative token to the actual `MatChipAvatar` class which could cause unnecessary\n * retention of the class and its directive metadata.\n */\nexport const MAT_CHIP_AVATAR = new InjectionToken<MatChipAvatar>('MatChipAvatar');\n\n/**\n * Directive to add CSS classes to chip leading icon.\n * @docs-private\n */\n@Directive({\n selector: 'mat-chip-avatar, [matChipAvatar]',\n host: {\n 'class': 'mat-mdc-chip-avatar mdc-chip__icon mdc-chip__icon--leading',\n 'role': 'img',\n },\n providers: [{provide: MAT_CHIP_AVATAR, useExisting: MatChipAvatar}],\n})\nexport class MatChipAvatar {\n constructor(\n private _changeDetectorRef: ChangeDetectorRef,\n private _elementRef: ElementRef<HTMLElement>,\n ) {}\n\n /** Sets whether the given CSS class should be applied to the leading icon. */\n setClass(cssClass: string, active: boolean) {\n this._elementRef.nativeElement.classList.toggle(cssClass, active);\n this._changeDetectorRef.markForCheck();\n }\n}\n\n/**\n * Injection token that can be used to reference instances of `MatChipTrailingIcon`. It serves as\n * alternative token to the actual `MatChipTrailingIcon` class which could cause unnecessary\n * retention of the class and its directive metadata.\n */\nexport const MAT_CHIP_TRAILING_ICON = new InjectionToken<MatChipTrailingIcon>(\n 'MatChipTrailingIcon',\n);\n\n/**\n * Directive to add CSS classes to and configure attributes for chip trailing icon.\n * @docs-private\n */\n@Directive({\n selector: 'mat-chip-trailing-icon, [matChipTrailingIcon]',\n host: {\n 'class': 'mat-mdc-chip-trailing-icon mdc-chip__icon mdc-chip__icon--trailing',\n 'tabindex': '-1',\n 'aria-hidden': 'true',\n },\n providers: [{provide: MAT_CHIP_TRAILING_ICON, useExisting: MatChipTrailingIcon}],\n})\nexport class MatChipTrailingIcon implements OnDestroy {\n private _foundation: deprecated.MDCChipTrailingActionFoundation;\n private _adapter: deprecated.MDCChipTrailingActionAdapter = {\n focus: () => this._elementRef.nativeElement.focus(),\n getAttribute: (name: string) => this._elementRef.nativeElement.getAttribute(name),\n setAttribute: (name: string, value: string) => {\n this._elementRef.nativeElement.setAttribute(name, value);\n },\n // TODO(crisbeto): there's also a `trigger` parameter that the chip isn't\n // handling yet. Consider passing it along once MDC start using it.\n notifyInteraction: () => {\n // TODO(crisbeto): uncomment this code once we've inverted the\n // dependency on `MatChip`. this._chip._notifyInteraction();\n },\n\n // TODO(crisbeto): there's also a `key` parameter that the chip isn't\n // handling yet. Consider passing it along once MDC start using it.\n notifyNavigation: () => {\n // TODO(crisbeto): uncomment this code once we've inverted the\n // dependency on `MatChip`. this._chip._notifyNavigation();\n },\n };\n\n constructor(\n // TODO(crisbeto): currently the chip needs a reference to the trailing\n // icon for the deprecated `setTrailingActionAttr` method. Until the\n // method is removed, we can't use the chip here, because it causes a\n // circular import. private _chip: MatChip\n public _elementRef: ElementRef,\n ) {\n this._foundation = new deprecated.MDCChipTrailingActionFoundation(this._adapter);\n }\n\n ngOnDestroy() {\n this._foundation.destroy();\n }\n\n focus() {\n this._elementRef.nativeElement.focus();\n }\n\n /** Sets an attribute on the icon. */\n setAttribute(name: string, value: string) {\n this._elementRef.nativeElement.setAttribute(name, value);\n }\n\n isNavigable() {\n return this._foundation.isNavigable();\n }\n}\n\n/**\n * Injection token that can be used to reference instances of `MatChipRemove`. It serves as\n * alternative token to the actual `MatChipRemove` class which could cause unnecessary\n * retention of the class and its directive metadata.\n */\nexport const MAT_CHIP_REMOVE = new InjectionToken<MatChipRemove>('MatChipRemove');\n\n/**\n * Boilerplate for applying mixins to MatChipRemove.\n * @docs-private\n */\nclass MatChipRemoveBase extends MatChipTrailingIcon {\n constructor(elementRef: ElementRef) {\n super(elementRef);\n }\n}\n\nconst _MatChipRemoveMixinBase = mixinTabIndex(mixinDisabled(MatChipRemoveBase), 0);\n\n/**\n * Directive to remove the parent chip when the trailing icon is clicked or\n * when the ENTER key is pressed on it.\n *\n * Recommended for use with the Material Design \"cancel\" icon\n * available at https://material.io/icons/#ic_cancel.\n *\n * Example:\n *\n * ```\n * <mat-chip>\n * <mat-icon matChipRemove>cancel</mat-icon>\n * </mat-chip>\n * ```\n */\n@Directive({\n selector: '[matChipRemove]',\n inputs: ['disabled', 'tabIndex'],\n host: {\n 'class': `mat-mdc-chip-remove mat-mdc-chip-trailing-icon mat-mdc-focus-indicator\n mdc-chip__icon mdc-chip__icon--trailing`,\n '[tabIndex]': 'tabIndex',\n 'role': 'button',\n '(click)': '_handleClick($event)',\n '(keydown)': 'interaction.next($event)',\n\n // We need to remove this explicitly, because it gets inherited from MatChipTrailingIcon.\n '[attr.aria-hidden]': 'null',\n },\n providers: [{provide: MAT_CHIP_REMOVE, useExisting: MatChipRemove}],\n})\nexport class MatChipRemove extends _MatChipRemoveMixinBase implements CanDisable, HasTabIndex {\n /**\n * Emits when the user interacts with the icon.\n * @docs-private\n */\n readonly interaction = new Subject<MouseEvent | KeyboardEvent>();\n\n constructor(elementRef: ElementRef) {\n super(elementRef);\n\n if (elementRef.nativeElement.nodeName === 'BUTTON') {\n elementRef.nativeElement.setAttribute('type', 'button');\n }\n }\n\n /** Emits a MouseEvent when the user clicks on the remove icon. */\n _handleClick(event: MouseEvent): void {\n this.interaction.next(event);\n\n event.stopPropagation();\n }\n\n override focus() {\n this._elementRef.nativeElement.focus();\n }\n\n static ngAcceptInputType_disabled: BooleanInput;\n static ngAcceptInputType_tabIndex: NumberInput;\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {Directionality} from '@angular/cdk/bidi';\nimport {BooleanInput, coerceBooleanProperty, NumberInput} from '@angular/cdk/coercion';\nimport {ANIMATION_MODULE_TYPE} from '@angular/platform-browser/animations';\nimport {\n AfterContentInit,\n AfterViewInit,\n Component,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n ContentChild,\n Directive,\n ElementRef,\n EventEmitter,\n Inject,\n Input,\n NgZone,\n OnDestroy,\n Optional,\n Output,\n ViewEncapsulation,\n ViewChild,\n} from '@angular/core';\nimport {\n CanColor,\n CanDisable,\n CanDisableRipple,\n HasTabIndex,\n MatRipple,\n MAT_RIPPLE_GLOBAL_OPTIONS,\n mixinColor,\n mixinDisableRipple,\n mixinTabIndex,\n RippleGlobalOptions,\n} from '@angular/material-experimental/mdc-core';\nimport {deprecated} from '@material/chips';\nimport {SPACE, ENTER, hasModifierKey} from '@angular/cdk/keycodes';\nimport {Subject} from 'rxjs';\nimport {takeUntil} from 'rxjs/operators';\nimport {\n MatChipAvatar,\n MatChipTrailingIcon,\n MatChipRemove,\n MAT_CHIP_AVATAR,\n MAT_CHIP_TRAILING_ICON,\n MAT_CHIP_REMOVE,\n} from './chip-icons';\n\nlet uid = 0;\n\n/** Represents an event fired on an individual `mat-chip`. */\nexport interface MatChipEvent {\n /** The chip the event was fired on. */\n chip: MatChip;\n}\n\n/**\n * Directive to add MDC CSS to non-basic chips.\n * @docs-private\n */\n@Directive({\n selector: `mat-chip, mat-chip-option, mat-chip-row, [mat-chip], [mat-chip-option],\n [mat-chip-row]`,\n host: {'class': 'mat-mdc-chip mdc-chip'},\n})\nexport class MatChipCssInternalOnly {}\n\n/**\n * Boilerplate for applying mixins to MatChip.\n * @docs-private\n */\nabstract class MatChipBase {\n abstract disabled: boolean;\n constructor(public _elementRef: ElementRef) {}\n}\n\nconst _MatChipMixinBase = mixinTabIndex(mixinColor(mixinDisableRipple(MatChipBase), 'primary'), -1);\n\n/**\n * Material design styled Chip base component. Used inside the MatChipSet component.\n *\n * Extended by MatChipOption and MatChipRow for different interaction patterns.\n */\n@Component({\n selector: 'mat-basic-chip, mat-chip',\n inputs: ['color', 'disableRipple'],\n exportAs: 'matChip',\n templateUrl: 'chip.html',\n styleUrls: ['chips.css'],\n host: {\n '[class.mat-mdc-chip-disabled]': 'disabled',\n '[class.mat-mdc-chip-highlighted]': 'highlighted',\n '[class.mat-mdc-chip-with-avatar]': 'leadingIcon',\n '[class.mat-mdc-chip-with-trailing-icon]': 'trailingIcon || removeIcon',\n '[class.mat-mdc-basic-chip]': '_isBasicChip',\n '[class.mat-mdc-standard-chip]': '!_isBasicChip',\n '[class._mat-animation-noopable]': '_animationsDisabled',\n '[id]': 'id',\n '[attr.disabled]': 'disabled || null',\n '[attr.aria-disabled]': 'disabled.toString()',\n '(transitionend)': '_handleTransitionEnd($event)',\n },\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class MatChip\n extends _MatChipMixinBase\n implements\n AfterContentInit,\n AfterViewInit,\n CanColor,\n CanDisableRipple,\n CanDisable,\n HasTabIndex,\n OnDestroy\n{\n /** Whether the ripple is centered on the chip. */\n readonly _isRippleCentered = false;\n\n /** Emits when the chip is focused. */\n readonly _onFocus = new Subject<MatChipEvent>();\n\n /** Emits when the chip is blurred. */\n readonly _onBlur = new Subject<MatChipEvent>();\n\n readonly REMOVE_ICON_HANDLED_KEYS: ReadonlySet<number> = new Set([SPACE, ENTER]);\n\n /** Whether this chip is a basic (unstyled) chip. */\n readonly _isBasicChip: boolean;\n\n /** Whether the chip has focus. */\n protected _hasFocusInternal = false;\n\n /** Whether animations for the chip are enabled. */\n _animationsDisabled: boolean;\n\n _handleTransitionEnd(event: TransitionEvent) {\n this._chipFoundation.handleTransitionEnd(event);\n }\n\n _hasFocus() {\n return this._hasFocusInternal;\n }\n\n /** Default unique id for the chip. */\n private _uniqueId = `mat-mdc-chip-${uid++}`;\n\n /** A unique id for the chip. If none is supplied, it will be auto-generated. */\n @Input() id: string = this._uniqueId;\n\n @Input()\n get disabled(): boolean {\n return this._disabled;\n }\n set disabled(value: boolean) {\n this._disabled = coerceBooleanProperty(value);\n if (this.removeIcon) {\n this.removeIcon.disabled = value;\n }\n }\n protected _disabled: boolean = false;\n\n private _textElement!: HTMLElement;\n\n /** The value of the chip. Defaults to the content inside the mdc-chip__text element. */\n @Input()\n get value(): any {\n return this._value !== undefined ? this._value : this._textElement.textContent!.trim();\n }\n set value(value: any) {\n this._value = value;\n }\n protected _value: any;\n\n /**\n * Determines whether or not the chip displays the remove styling and emits (removed) events.\n */\n @Input()\n get removable(): boolean {\n return this._removable;\n }\n set removable(value: boolean) {\n this._removable = coerceBooleanProperty(value);\n }\n protected _removable: boolean = true;\n\n /**\n * Colors the chip for emphasis as if it were selected.\n */\n @Input()\n get highlighted(): boolean {\n return this._highlighted;\n }\n set highlighted(value: boolean) {\n this._highlighted = coerceBooleanProperty(value);\n }\n protected _highlighted: boolean = false;\n\n /** Emitted when the user interacts with the chip. */\n @Output() readonly interaction = new EventEmitter<string>();\n\n /** Emitted when the chip is destroyed. */\n @Output() readonly destroyed: EventEmitter<MatChipEvent> = new EventEmitter<MatChipEvent>();\n\n /** Emitted when a chip is to be removed. */\n @Output() readonly removed: EventEmitter<MatChipEvent> = new EventEmitter<MatChipEvent>();\n\n /** The MDC foundation containing business logic for MDC chip. */\n _chipFoundation: deprecated.MDCChipFoundation;\n\n /** The unstyled chip selector for this component. */\n protected basicChipAttrName = 'mat-basic-chip';\n\n /** The chip's leading icon. */\n @ContentChild(MAT_CHIP_AVATAR) leadingIcon: MatChipAvatar;\n\n /** The chip's trailing icon. */\n @ContentChild(MAT_CHIP_TRAILING_ICON) trailingIcon: MatChipTrailingIcon;\n\n /** The chip's trailing remove icon. */\n @ContentChild(MAT_CHIP_REMOVE) removeIcon: MatChipRemove;\n\n /** Reference to the MatRipple instance of the chip. */\n @ViewChild(MatRipple) ripple: MatRipple;\n\n /**\n * Implementation of the MDC chip adapter interface.\n * These methods are called by the chip foundation.\n */\n protected _chipAdapter: deprecated.MDCChipAdapter = {\n addClass: className => this._setMdcClass(className, true),\n removeClass: className => this._setMdcClass(className, false),\n hasClass: className => this._elementRef.nativeElement.classList.contains(className),\n addClassToLeadingIcon: className => this.leadingIcon.setClass(className, true),\n removeClassFromLeadingIcon: className => this.leadingIcon.setClass(className, false),\n eventTargetHasClass: (target: EventTarget | null, className: string) => {\n // We need to null check the `classList`, because IE and Edge don't\n // support it on SVG elements and Edge seems to throw for ripple\n // elements, because they're outside the DOM.\n return target && (target as Element).classList\n ? (target as Element).classList.contains(className)\n : false;\n },\n notifyInteraction: () => this._notifyInteraction(),\n notifySelection: () => {\n // No-op. We call dispatchSelectionEvent ourselves in MatChipOption,\n // because we want to specify whether selection occurred via user\n // input.\n },\n notifyNavigation: () => this._notifyNavigation(),\n notifyTrailingIconInteraction: () => {},\n notifyRemoval: () => this.remove(),\n notifyEditStart: () => {\n this._onEditStart();\n this._changeDetectorRef.markForCheck();\n },\n notifyEditFinish: () => {\n this._onEditFinish();\n this._changeDetectorRef.markForCheck();\n },\n getComputedStyleValue: propertyName => {\n // This function is run when a chip is removed so it might be\n // invoked during server-side rendering. Add some extra checks just in\n // case.\n if (typeof window !== 'undefined' && window) {\n const getComputedStyle = window.getComputedStyle(this._elementRef.nativeElement);\n return getComputedStyle.getPropertyValue(propertyName);\n }\n return '';\n },\n setStyleProperty: (propertyName: string, value: string) => {\n this._elementRef.nativeElement.style.setProperty(propertyName, value);\n },\n hasLeadingIcon: () => !!this.leadingIcon,\n isTrailingActionNavigable: () => {\n if (this.trailingIcon) {\n return this.trailingIcon.isNavigable();\n }\n return false;\n },\n isRTL: () => !!this._dir && this._dir.value === 'rtl',\n focusPrimaryAction: () => {\n // Angular Material MDC chips fully manage focus. TODO: Managing focus\n // and handling keyboard events was added by MDC after our\n // implementation; consider consolidating.\n },\n focusTrailingAction: () => {},\n removeTrailingActionFocus: () => {},\n setPrimaryActionAttr: (name: string, value: string) => {\n // MDC is currently using this method to set aria-checked on choice\n // and filter chips, which in the MDC templates have role=\"checkbox\"\n // and role=\"radio\" respectively. We have role=\"option\" on those chips\n // instead, so we do not want aria-checked. Since we also manage the\n // tabindex ourselves, we don't allow MDC to set it.\n if (name === 'aria-checked' || name === 'tabindex') {\n return;\n }\n this._elementRef.nativeElement.setAttribute(name, value);\n },\n // The 2 functions below are used by the MDC ripple, which we aren't using,\n // so they will never be called\n getRootBoundingClientRect: () => this._elementRef.nativeElement.getBoundingClientRect(),\n getCheckmarkBoundingClientRect: () => null,\n getAttribute: attr => this._elementRef.nativeElement.getAttribute(attr),\n };\n\n constructor(\n public _changeDetectorRef: ChangeDetectorRef,\n elementRef: ElementRef,\n protected _ngZone: NgZone,\n @Optional() private _dir: Directionality,\n @Optional() @Inject(ANIMATION_MODULE_TYPE) animationMode?: string,\n @Optional()\n @Inject(MAT_RIPPLE_GLOBAL_OPTIONS)\n private _globalRippleOptions?: RippleGlobalOptions,\n ) {\n super(elementRef);\n this._chipFoundation = new deprecated.MDCChipFoundation(this._chipAdapter);\n this._animationsDisabled = animationMode === 'NoopAnimations';\n this._isBasicChip =\n elementRef.nativeElement.hasAttribute(this.basicChipAttrName) ||\n elementRef.nativeElement.tagName.toLowerCase() === this.basicChipAttrName;\n }\n\n ngAfterContentInit() {\n this._initRemoveIcon();\n }\n\n ngAfterViewInit() {\n this._chipFoundation.init();\n this._textElement = this._elementRef.nativeElement.querySelector('.mdc-chip__text');\n }\n\n ngOnDestroy() {\n this.destroyed.emit({chip: this});\n this._chipFoundation.destroy();\n }\n\n /** Sets up the remove icon chip foundation, and subscribes to remove icon events. */\n private _initRemoveIcon() {\n if (this.removeIcon) {\n this._chipFoundation.setShouldRemoveOnTrailingIconClick(true);\n this.removeIcon.disabled = this.disabled;\n\n this.removeIcon.interaction.pipe(takeUntil(this.destroyed)).subscribe(event => {\n // The MDC chip foundation calls stopPropagation() for any trailing icon interaction\n // event, even ones it doesn't handle, so we want to avoid passing it keyboard events\n // for which we have a custom handler. Note that we assert the type of the event using\n // the `type`, because `instanceof KeyboardEvent` can throw during server-side rendering.\n const isKeyboardEvent = event.type.startsWith('key');\n\n if (\n this.disabled ||\n (isKeyboardEvent && !this.REMOVE_ICON_HANDLED_KEYS.has((event as KeyboardEvent).keyCode))\n ) {\n return;\n }\n\n this.remove();\n\n if (isKeyboardEvent && !hasModifierKey(event as KeyboardEvent)) {\n const keyCode = (event as KeyboardEvent).keyCode;\n\n // Prevent default space and enter presses so we don't scroll the page or submit forms.\n if (keyCode === SPACE || keyCode === ENTER) {\n event.preventDefault();\n }\n }\n });\n }\n }\n\n /**\n * Allows for programmatic removal of the chip.\n *\n * Informs any listeners of the removal request. Does not remove the chip from the DOM.\n */\n remove(): void {\n if (this.removable) {\n this.removed.emit({chip: this});\n }\n }\n\n /** Sets whether the given CSS class should be applied to the MDC chip. */\n private _setMdcClass(cssClass: string, active: boolean) {\n const classes = this._elementRef.nativeElement.classList;\n active ? classes.add(cssClass) : classes.remove(cssClass);\n this._changeDetectorRef.markForCheck();\n }\n\n /** Forwards interaction events to the MDC chip foundation. */\n _handleInteraction(event: MouseEvent | KeyboardEvent | FocusEvent) {\n if (this.disabled) {\n return;\n }\n\n if (event.type === 'click') {\n this._chipFoundation.handleClick();\n return;\n }\n\n if (event.type === 'dblclick') {\n this._chipFoundation.handleDoubleClick();\n }\n\n if (event.type === 'keydown') {\n this._chipFoundation.handleKeydown(event as KeyboardEvent);\n return;\n }\n\n if (event.type === 'focusout') {\n this._chipFoundation.handleFocusOut(event as FocusEvent);\n }\n\n if (event.type === 'focusin') {\n this._chipFoundation.handleFocusIn(event as FocusEvent);\n }\n }\n\n /** Whether or not the ripple should be disabled. */\n _isRippleDisabled(): boolean {\n return (\n this.disabled ||\n this.disableRipple ||\n this._animationsDisabled ||\n this._isBasicChip ||\n !!this._globalRippleOptions?.disabled\n );\n }\n\n _notifyInteraction() {\n this.interaction.emit(this.id);\n }\n\n _notifyNavigation() {\n // TODO: This is a new feature added by MDC. Consider exposing it to users\n // in the future.\n }\n\n /** Overridden by MatChipRow. */\n protected _onEditStart() {}\n\n /** Overridden by MatChipRow. */\n protected _onEditFinish() {}\n\n static ngAcceptInputType_disabled: BooleanInput;\n static ngAcceptInputType_removable: BooleanInput;\n static ngAcceptInputType_highlighted: BooleanInput;\n static ngAcceptInputType_disableRipple: BooleanInput;\n static ngAcceptInputType_tabIndex: NumberInput;\n}\n","<span class=\"mdc-chip__ripple\"></span>\n\n<span matRipple class=\"mat-mdc-chip-ripple\"\n [matRippleDisabled]=\"_isRippleDisabled()\"\n [matRippleCentered]=\"_isRippleCentered\"\n [matRippleTrigger]=\"_elementRef.nativeElement\"></span>\n\n<ng-content select=\"mat-chip-avatar, [matChipAvatar]\"></ng-content>\n<div class=\"mdc-chip__primary-action\">\n <div class=\"mdc-chip__text\"><ng-content></ng-content></div>\n</div>\n<ng-content select=\"mat-chip-trailing-icon,[matChipRemove],[matChipTrailingIcon]\"></ng-content>\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {BooleanInput, coerceBooleanProperty} from '@angular/cdk/coercion';\nimport {SPACE} from '@angular/cdk/keycodes';\nimport {\n ChangeDetectionStrategy,\n Component,\n EventEmitter,\n Input,\n Output,\n ViewEncapsulation,\n AfterContentInit,\n} from '@angular/core';\nimport {deprecated} from '@material/chips';\nimport {take} from 'rxjs/operators';\nimport {MatChip} from './chip';\n\n/** Event object emitted by MatChipOption when selected or deselected. */\nexport class MatChipSelectionChange {\n constructor(\n /** Reference to the chip that emitted the event. */\n public source: MatChipOption,\n /** Whether the chip that emitted the event is selected. */\n public selected: boolean,\n /** Whether the selection change was a result of a user interaction. */\n public isUserInput = false,\n ) {}\n}\n\n/**\n * An extension of the MatChip component that supports chip selection.\n * Used with MatChipListbox.\n */\n@Component({\n selector: 'mat-basic-chip-option, mat-chip-option',\n templateUrl: 'chip-option.html',\n styleUrls: ['chips.css'],\n inputs: ['color', 'disableRipple', 'tabIndex'],\n host: {\n 'role': 'option',\n 'class': 'mat-mdc-focus-indicator mat-mdc-chip-option',\n '[class.mat-mdc-chip-disabled]': 'disabled',\n '[class.mat-mdc-chip-highlighted]': 'highlighted',\n '[class.mat-mdc-chip-with-avatar]': 'leadingIcon',\n '[class.mat-mdc-chip-with-trailing-icon]': 'trailingIcon || removeIcon',\n '[class.mat-mdc-chip-selected]': 'selected',\n '[class.mat-mdc-chip-multiple]': '_chipListMultiple',\n '[id]': 'id',\n '[tabIndex]': 'tabIndex',\n '[attr.disabled]': 'disabled || null',\n '[attr.aria-disabled]': 'disabled.toString()',\n '[attr.aria-selected]': 'ariaSelected',\n '(click)': '_click($event)',\n '(keydown)': '_keydown($event)',\n '(focus)': 'focus()',\n '(blur)': '_blur()',\n },\n providers: [{provide: MatChip, useExisting: MatChipOption}],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class MatChipOption extends MatChip implements AfterContentInit {\n /** Whether the chip list is selectable. */\n chipListSelectable: boolean = true;\n\n /** Whether the chip list is in multi-selection mode. */\n _chipListMultiple: boolean = false;\n\n /**\n * Whether or not the chip is selectable.\n *\n * When a chip is not selectable, changes to its selected state are always\n * ignored. By default an option chip is selectable, and it becomes\n * non-selectable if its parent chip list is not selectable.\n */\n @Input()\n get selectable(): boolean {\n return this._selectable && this.chipListSelectable;\n }\n set selectable(value: boolean) {\n this._selectable = coerceBooleanProperty(value);\n }\n protected _selectable: boolean = true;\n\n /** Whether the chip is selected. */\n @Input()\n get selected(): boolean {\n return this._chipFoundation.isSelected();\n }\n set selected(value: boolean) {\n if (!this.selectable) {\n return;\n }\n const coercedValue = coerceBooleanProperty(value);\n if (coercedValue != this._chipFoundation.isSelected()) {\n this._chipFoundation.setSelected(coerceBooleanProperty(value));\n this._dispatchSelectionChange();\n }\n }\n\n /** The ARIA selected applied to the chip. */\n get ariaSelected(): string | null {\n // Remove the `aria-selected` when the chip is deselected in single-selection mode, because\n // it adds noise to NVDA users where \"not selected\" will be read out for each chip.\n return this.selectable && (this._chipListMultiple || this.selected)\n ? this.selected.toString()\n : null;\n }\n\n /** The unstyled chip selector for this component. */\n protected override basicChipAttrName = 'mat-basic-chip-option';\n\n /** Emitted when the chip is selected or deselected. */\n @Output() readonly selectionChange: EventEmitter<MatChipSelectionChange> =\n new EventEmitter<MatChipSelectionChange>();\n\n override ngAfterContentInit() {\n super.ngAfterContentInit();\n\n if (this.selected && this.leadingIcon) {\n this.leadingIcon.setClass(deprecated.chipCssClasses.HIDDEN_LEADING_ICON, true);\n }\n }\n\n /** Selects the chip. */\n select(): void {\n if (!this.selectable) {\n return;\n } else if (!this.selected) {\n this._chipFoundation.setSelected(true);\n this._dispatchSelectionChange();\n }\n }\n\n /** Deselects the chip. */\n deselect(): void {\n if (!this.selectable) {\n return;\n } else if (this.selected) {\n this._chipFoundation.setSelected(false);\n this._dispatchSelectionChange();\n }\n }\n\n /** Selects this chip and emits userInputSelection event */\n selectViaInteraction(): void {\n if (!this.selectable) {\n return;\n } else if (!this.selected) {\n this._chipFoundation.setSelected(true);\n this._dispatchSelectionChange(true);\n }\n }\n\n /** Toggles the current selected state of this chip. */\n toggleSelected(isUserInput: boolean = false): boolean {\n if (!this.selectable) {\n return this.selected;\n }\n\n this._chipFoundation.setSelected(!this.selected);\n this._dispatchSelectionChange(isUserInput);\n return this.selected;\n }\n\n /** Emits a selection change event. */\n private _dispatchSelectionChange(isUserInput = false) {\n this.selectionChange.emit({\n source: this,\n isUserInput,\n selected: this.selected,\n });\n }\n\n /** Allows for programmatic focusing of the chip. */\n focus(): void {\n if (this.disabled) {\n return;\n }\n\n if (!this._hasFocus()) {\n this._elementRef.nativeElement.focus();\n this._onFocus.next({chip: this});\n }\n this._hasFocusInternal = true;\n }\n\n /** Resets the state of the chip when it loses focus. */\n _blur(): void {\n // When animations are enabled, Angular may end up removing the chip from the DOM a little\n // earlier than usual, causing it to be blurred and throwing off the logic in the chip list\n // that moves focus not the next item. To work around the issue, we defer marking the chip\n // as not focused until the next time the zone stabilizes.\n this._ngZone.onStable.pipe(take(1)).subscribe(() => {\n this._ngZone.run(() => {\n this._hasFocusInternal = false;\n this._onBlur.next({chip: this});\n });\n });\n }\n\n /** Handles click events on the chip. */\n _click(event: MouseEvent) {\n if (this.disabled) {\n event.preventDefault();\n } else {\n this._handleInteraction(event);\n event.stopPropagation();\n }\n }\n\n /** Handles custom key presses. */\n _keydown(event: KeyboardEvent): void {\n if (this.disabled) {\n return;\n }\n\n switch (event.keyCode) {\n case SPACE:\n this.toggleSelected(true);\n\n // Always prevent space from scrolling the page since the list has focus\n event.preventDefault();\n break;\n default:\n this._handleInteraction(event);\n }\n }\n\n static ngAcceptInputType_selectable: BooleanInput;\n static ngAcceptInputType_selected: BooleanInput;\n}\n","<span class=\"mdc-chip__ripple\"></span>\n\n<span matRipple class=\"mat-mdc-chip-ripple\"\n [matRippleDisabled]=\"_isRippleDisabled()\"\n [matRippleCentered]=\"_isRippleCentered\"\n [matRippleTrigger]=\"_elementRef.nativeElement\"></span>\n\n<ng-content select=\"mat-chip-avatar, [matChipAvatar]\"></ng-content>\n<div class=\"mdc-chip__checkmark\" *ngIf=\"_chipListMultiple\">\n <svg class=\"mdc-chip__checkmark-svg\" viewBox=\"-2 -3 30 30\" focusable=\"false\">\n <path class=\"mdc-chip__checkmark-path\" fill=\"none\" stroke=\"black\"\n d=\"M1.73,12.91 8.1,19.28 22.79,4.59\"/>\n </svg>\n</div>\n<div class=\"mdc-chip__text\"><ng-content></ng-content></div>\n<ng-content select=\"mat-chip-trailing-icon,[matChipRemove],[matChipTrailingIcon]\"></ng-content>\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {Directive, ElementRef, Inject} from '@angular/core';\nimport {DOCUMENT} from '@angular/common';\n\n/**\n * A directive that makes a span editable and exposes functions to modify and retrieve the\n * element's contents.\n */\n@Directive({\n selector: 'span[matChipEditInput]',\n host: {\n 'class': 'mdc-chip__primary-action mat-chip-edit-input',\n 'role': 'textbox',\n 'tabindex': '-1',\n 'contenteditable': 'true',\n },\n})\nexport class MatChipEditInput {\n constructor(\n private readonly _elementRef: ElementRef,\n @Inject(DOCUMENT) private readonly _document: any,\n ) {}\n\n initialize(initialValue: string) {\n this.getNativeElement().focus();\n this.setValue(initialValue);\n }\n\n getNativeElement(): HTMLElement {\n return this._elementRef.nativeElement;\n }\n\n setValue(value: string) {\n this.getNativeElement().innerText = value;\n this._moveCursorToEndOfInput();\n }\n\n getValue(): string {\n return this.getNativeElement().textContent || '';\n }\n\n private _moveCursorToEndOfInput() {\n const range = this._document.createRange();\n range.selectNodeContents(this.getNativeElement());\n range.collapse(false);\n const sel = window.getSelection()!;\n sel.removeAllRanges();\n sel.addRange(range);\n }\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {Directionality} from '@angular/cdk/bidi';\nimport {BooleanInput} from '@angular/cdk/coercion';\nimport {BACKSPACE, DELETE} from '@angular/cdk/keycodes';\nimport {ANIMATION_MODULE_TYPE} from '@angular/platform-browser/animations';\nimport {\n AfterContentInit,\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ContentChild,\n ElementRef,\n EventEmitter,\n Inject,\n Input,\n NgZone,\n Optional,\n Output,\n ViewChild,\n ViewEncapsulation,\n} from '@angular/core';\nimport {DOCUMENT} from '@angular/common';\nimport {\n MAT_RIPPLE_GLOBAL_OPTIONS,\n RippleGlobalOptions,\n} from '@angular/material-experimental/mdc-core';\nimport {MatChip, MatChipEvent} from './chip';\nimport {MatChipEditInput} from './chip-edit-input';\nimport {GridKeyManagerRow} from './grid-key-manager';\n\n/** Represents an event fired on an individual `mat-chip` when it is edited. */\nexport interface MatChipEditedEvent extends MatChipEvent {\n /** The final edit value. */\n value: string;\n}\n\n/**\n * An extension of the MatChip component used with MatChipGrid and\n * the matChipInputFor directive.\n */\n@Component({\n selector: 'mat-chip-row, mat-basic-chip-row',\n templateUrl: 'chip-row.html',\n styleUrls: ['chips.css'],\n inputs: ['color', 'disableRipple', 'tabIndex'],\n host: {\n 'role': 'row',\n 'class': 'mat-mdc-chip-row',\n '[class.mat-mdc-chip-disabled]': 'disabled',\n '[class.mat-mdc-chip-highlighted]': 'highlighted',\n '[class.mat-mdc-chip-with-avatar]': 'leadingIcon',\n '[class.mat-mdc-chip-with-trailing-icon]': 'trailingIcon || removeIcon',\n '[class.mdc-chip--editable]': 'editable',\n '[id]': 'id',\n '[attr.disabled]': 'disabled || null',\n '[attr.aria-disabled]': 'disabled.toString()',\n '[tabIndex]': 'tabIndex',\n '(mousedown)': '_mousedown($event)',\n '(dblclick)': '_dblclick($event)',\n '(keydown)': '_keydown($event)',\n '(focusin)': '_focusin($event)',\n '(focusout)': '_focusout($event)',\n },\n providers: [{provide: MatChip, useExisting: MatChipRow}],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class MatChipRow\n extends MatChip\n implements AfterContentInit, AfterViewInit, GridKeyManagerRow<HTMLElement>\n{\n protected override basicChipAttrName = 'mat-basic-chip-row';\n\n @Input() editable: boolean = false;\n\n /** Emitted when the chip is edited. */\n @Output() readonly edited: EventEmitter<MatChipEditedEvent> =\n new EventEmitter<MatChipEditedEvent>();\n\n /**\n * The focusable wrapper element in the first gridcell, which contains all\n * chip content other than the remove icon.\n */\n @ViewChild('chipContent') chipContent: ElementRef;\n\n /** The default chip edit input that is used if none is projected into this chip row. */\n @ViewChild(MatChipEditInput) defaultEditInput?: MatChipEditInput;\n\n /** The projected chip edit input. */\n @ContentChild(MatChipEditInput) contentEditInput?: MatChipEditInput;\n\n /** The focusable grid cells for this row. Implemented as part of GridKeyManagerRow. */\n cells!: HTMLElement[];\n\n /**\n * Timeout used to give some time between `focusin` and `focusout`\n * in order to determine whether focus has left the chip.\n */\n private _focusoutTimeout: number | null;\n\n constructor(\n @Inject(DOCUMENT) private readonly _document: any,\n changeDetectorRef: ChangeDetectorRef,\n elementRef: ElementRef,\n ngZone: NgZone,\n @Optional() dir: Directionality,\n @Optional() @Inject(ANIMATION_MODULE_TYPE) animationMode?: string,\n @Optional()\n @Inject(MAT_RIPPLE_GLOBAL_OPTIONS)\n globalRippleOptions?: RippleGlobalOptions,\n ) {\n super(changeDetectorRef, elementRef, ngZone, dir, animationMode, globalRippleOptions);\n }\n\n override ngAfterContentInit() {\n super.ngAfterContentInit();\n\n if (this.removeIcon) {\n // Defer setting the value in order to avoid the \"Expression\n // has changed after it was checked\" errors from Angular.\n setTimeout(() => {\n // removeIcon has tabIndex 0 for regular chips, but should only be focusable by\n // the GridFocusKeyManager for row chips.\n this.removeIcon.tabIndex = -1;\n });\n }\n }\n\n override ngAfterViewInit() {\n super.ngAfterViewInit();\n this.cells = this.removeIcon\n ? [this.chipContent.nativeElement, this.removeIcon._elementRef.nativeElement]\n : [this.chipContent.nativeElement];\n }\n\n /**\n * Allows for programmatic focusing of the chip.\n * Sends focus to the first grid cell. The row chip element itself\n * is never focused.\n */\n focus(): void {\n if (this.disabled) {\n return;\n }\n\n if (!this._hasFocusInternal) {\n this._onFocus.next({chip: this});\n }\n\n this.chipContent.nativeElement.focus();\n }\n\n /**\n * Emits a blur event when one of the gridcells loses focus, unless focus moved\n * to the other gridcell.\n */\n _focusout(event: FocusEvent) {\n if (this._focusoutTimeout) {\n clearTimeout(this._focusoutTimeout);\n }\n\n // Wait to see if focus moves to the other gridcell\n this._focusoutTimeout = setTimeout(() => {\n this._hasFocusInternal = false;\n this._onBlur.next({chip: this});\n this._handleInteraction(event);\n });\n }\n\n /** Records that the chip has focus when one of the gridcells is focused. */\n _focusin(event: FocusEvent) {\n if (this._focusoutTimeout) {\n clearTimeout(this._focusoutTimeout);\n this._focusoutTimeout = null;\n }\n\n this._hasFocusInternal = true;\n this._handleInteraction(event);\n }\n\n /** Sends focus to the first gridcell when the user clicks anywhere inside the chip. */\n _mousedown(event: MouseEvent) {\n if (this._isEditing()) {\n return;\n }\n\n if (!this.disabled) {\n this.focus();\n }\n\n event.preventDefault();\n }\n\n _dblclick(event: MouseEvent) {\n this._handleInteraction(event);\n }\n\n /** Handles custom key presses. */\n _keydown(event: KeyboardEvent): void {\n if (this.disabled) {\n return;\n }\n if (this._isEditing()) {\n this._handleInteraction(event);\n return;\n }\n switch (event.keyCode) {\n case DELETE:\n case BACKSPACE:\n // Remove the focused chip\n this.remove();\n // Always prevent so page navigation does not occur\n event.preventDefault();\n break;\n default:\n this._handleInteraction(event);\n }\n }\n\n _isEditing() {\n return this._chipFoundation.isEditing();\n }\n\n protected override _onEditStart() {\n // Defer initializing the input so it has time to be added to the DOM.\n setTimeout(() => {\n this._getEditInput().initialize(this.value);\n });\n }\n\n protected override _onEditFinish() {\n // If the edit input is still focused or focus was returned to the body after it was destroyed,\n // return focus to the chip contents.\n if (\n this._document.activeElement === this._getEditInput().getNativeElement() ||\n this._document.activeElement === this._document.body\n ) {\n this.chipContent.nativeElement.focus();\n }\n this.edited.emit({chip: this, value: this._getEditInput().getValue()});\n }\n\n /**\n * Gets the projected chip edit input, or the default input if none is projected in. One of these\n * two values is guaranteed to be defined.\n */\n private _getEditInput(): MatChipEditInput {\n return this.contentEditInput || this.defaultEditInput!;\n }\n\n static ngAcceptInputType_editable: BooleanInput;\n}\n","<ng-container *ngIf=\"!_isEditing()\">\n <span class=\"mdc-chip__ripple\"></span>\n\n <span matRipple class=\"mat-mdc-chip-ripple\"\n [matRippleDisabled]=\"_isRippleDisabled()\"\n [matRippleCentered]=\"_isRippleCentered\"\n [matRippleTrigger]=\"_elementRef.nativeElement\"></span>\n</ng-container>\n\n<div class=\"mat-mdc-chip-content\">\n <div role=\"gridcell\">\n <div #chipContent tabindex=\"-1\"\n class=\"mat-mdc-chip-row-focusable-text-content mat-mdc-focus-indicator mdc-chip__primary-action\"\n [attr.role]=\"editable ? 'button' : null\">\n <ng-content select=\"mat-chip-avatar, [matChipAvatar]\"></ng-content>\n <span class=\"mdc-chip__text\"><ng-content></ng-content></span>\n <ng-content select=\"mat-chip-trailing-icon,[matChipTrailingIcon]\"></ng-content>\n </div>\n </div>\n <div role=\"gridcell\" *ngIf=\"removeIcon\" class=\"mat-mdc-chip-remove-icon\">\n <ng-content select=\"[matChipRemove]\"></ng-content>\n </div>\n</div>\n\n<div *ngIf=\"_isEditing()\" role=\"gridcell\" class=\"mat-mdc-chip-edit-input-container\">\n <ng-content *ngIf=\"contentEditInput; else defaultMatChipEditInput\"\n select=\"[matChipEditInput]\"></ng-content>\n <ng-template #defaultMatChipEditInput>\n <span matChipEditInput></span>\n </ng-template>\n</div>\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {Directionality} from '@angular/cdk/bidi';\nimport {BooleanInput, coerceBooleanProperty, NumberInput} from '@angular/cdk/coercion';\nimport {\n AfterContentInit,\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ContentChildren,\n ElementRef,\n Input,\n OnDestroy,\n Optional,\n QueryList,\n ViewEncapsulation,\n} from '@angular/core';\nimport {HasTabIndex, mixinTabIndex} from '@angular/material-experimental/mdc-core';\nimport {deprecated} from '@material/chips';\nimport {merge, Observable, Subject, Subscription} from 'rxjs';\nimport {startWith, takeUntil} from 'rxjs/operators';\nimport {MatChip, MatChipEvent} from './chip';\n\nlet uid = 0;\n\n/**\n * Boilerplate for applying mixins to MatChipSet.\n * @docs-private\n */\nabstract class MatChipSetBase {\n abstract disabled: boolean;\n constructor(_elementRef: ElementRef) {}\n}\nconst _MatChipSetMixinBase = mixinTabIndex(MatChipSetBase);\n\n/**\n * Basic container component for the MatChip component.\n *\n * Extended by MatChipListbox and MatChipGrid for different interaction patterns.\n */\n@Component({\n selector: 'mat-chip-set',\n template: '<ng-content></ng-content>',\n styleUrls: ['chips.css'],\n host: {\n 'class': 'mat-mdc-chip-set mdc-chip-set',\n '[attr.role]': 'role',\n // TODO: replace this binding with use of AriaDescriber\n '[attr.aria-describedby]': '_ariaDescribedby || null',\n '[id]': '_uid',\n },\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class MatChipSet\n extends _MatChipSetMixinBase\n implements AfterContentInit, AfterViewInit, HasTabIndex, OnDestroy\n{\n /** Subscription to remove changes in chips. */\n private _chipRemoveSubscription: Subscription | null;\n\n /** Subscription to destroyed events in chips. */\n private _chipDestroyedSubscription: Subscription | null;\n\n /** Subscription to chip interactions. */\n private _chipInteractionSubscription: Subscription | null;\n\n /**\n * When a chip is destroyed, we store the index of the destroyed chip until the chips\n * query list notifies about the update. This is necessary because we cannot determine an\n * appropriate chip that should receive focus until the array of chips updated completely.\n */\n protected _lastDestroyedChipIndex: number | null = null;\n\n /** The MDC foundation containing business logic for MDC chip-set. */\n protected _chipSetFoundation: deprecated.MDCChipSetFoundation;\n\n /** Subject that emits when the component has been destroyed. */\n protected _destroyed = new Subject<void>();\n\n /**\n * Implementation of the MDC chip-set adapter interface.\n * These methods are called by the chip set foundation.\n */\n protected _chipSetAdapter: deprecated.MDCChipSetAdapter = {\n hasClass: className => this._hasMdcClass(className),\n // No-op. We keep track of chips via ContentChildren, which will be updated when a chip is\n // removed.\n removeChipAtIndex: () => {},\n // No-op for base chip set. MatChipListbox overrides the adapter to provide this method.\n selectChipAtIndex: () => {},\n getIndexOfChipById: (id: string) => this._chips.toArray().findIndex(chip => chip.id === id),\n focusChipPrimaryActionAtIndex: () => {},\n focusChipTrailingActionAtIndex: () => {},\n removeFocusFromChipAtIndex: () => {},\n isRTL: () => !!this._dir && this._dir.value === 'rtl',\n getChipListCount: () => this._chips.length,\n // TODO(mmalerba): Implement using LiveAnnouncer.\n announceMessage: () => {},\n };\n\n /** The aria-describedby attribute on the chip list for improved a11y. */\n _ariaDescribedby: string;\n\n /** Uid of the chip set */\n _uid: string = `mat-mdc-chip-set-${uid++}`;\n\n /**\n * Map from class to whether the class is enabled.\n * Enabled classes are set on the MDC chip-set div.\n */\n _mdcClasses: {[key: string]: boolean} = {};\n\n /** Whether the chip set is disabled. */\n @Input()\n get disabled(): boolean {\n return this._disabled;\n }\n set disabled(value: boolean) {\n this._disabled = coerceBooleanProperty(value);\n this._syncChipsState();\n }\n protected _disabled: boolean = false;\n\n /** Whether the chip list contains chips or not. */\n get empty(): boolean {\n return this._chips.length === 0;\n }\n\n /** The ARIA role applied to the chip set. */\n @Input()\n get role(): string | null {\n if (this._role) {\n return this._role;\n } else {\n return this.empty ? null : 'presentation';\n }\n }\n\n set role(value: string | null) {\n this._role = value;\n }\n private _role: string | null = null;\n\n /** Whether any of the chips inside of this chip-set has focus. */\n get focused(): boolean {\n return this._hasFocusedChip();\n }\n\n /** Combined stream of all of the child chips' remove events. */\n get chipRemoveChanges(): Observable<MatChipEvent> {\n return merge(...this._chips.map(chip => chip.removed));\n }\n\n /** Combined stream of all of the child chips' remove events. */\n get chipDestroyedChanges(): Observable<MatChipEvent> {\n return merge(...this._chips.map(chip => chip.destroyed));\n }\n\n /** Combined stream of all of the child chips' interaction events. */\n get chipInteractionChanges(): Observable<string> {\n return merge(...this._chips.map(chip => chip.interaction));\n }\n\n /** The chips that are part of this chip set. */\n @ContentChildren(MatChip, {\n // We need to use `descendants: true`, because Ivy will no longer match\n // indirect descendants if it's left as false.\n descendants: true,\n })\n _chips: QueryList<MatChip>;\n\n constructor(\n protected _elementRef: ElementRef,\n protected _changeDetectorRef: ChangeDetectorRef,\n @Optional() protected _dir: Directionality,\n ) {\n super(_elementRef);\n this._chipSetFoundation = new deprecated.MDCChipSetFoundation(this._chipSetAdapter);\n }\n\n ngAfterViewInit() {\n this._chipSetFoundation.init();\n }\n\n ngAfterContentInit() {\n this._chips.changes.pipe(startWith(null), takeUntil(this._destroyed)).subscribe(() => {\n if (this.disabled) {\n // Since this happens after the content has been\n // checked, we need to defer it to the next tick.\n Promise.resolve().then(() => {\n this._syncChipsState();\n });\n }\n\n this._resetChips();\n });\n }\n\n ngOnDestroy() {\n this._dropSubscriptions();\n this._destroyed.next();\n this._destroyed.complete();\n this._chipSetFoundation.destroy();\n }\n\n /** Checks whether any of the chips is focused. */\n protected _hasFocusedChip() {\n return this._chips && this._chips.some(chip => chip._hasFocus());\n }\n\n /** Syncs the chip-set's state with the individual chips. */\n protected _syncChipsState() {\n if (this._chips) {\n this._chips.forEach(chip => {\n chip.disabled = this._disabled;\n chip._changeDetectorRef.markForCheck();\n });\n }\n }\n\n /** Sets whether the given CSS class should be applied to the MDC chip. */\n protected _setMdcClass(cssClass: string, active: boolean) {\n const classes = this._elementRef.nativeElement.classList;\n active ? classes.add(cssClass) : classes.remove(cssClass);\n this._changeDetectorRef.markForCheck();\n }\n\n /** Adapter method that returns true if the chip set has the given MDC class. */\n protected _hasMdcClass(className: string) {\n return this._elementRef.nativeElement.classList.contains(className);\n }\n\n /** Updates subscriptions to chip events. */\n private _resetChips() {\n this._dropSubscriptions();\n this._subscribeToChipEvents();\n }\n\n /** Subscribes to events on the child chips. */\n protected _subscribeToChipEvents() {\n this._listenToChipsRemove();\n this._listenToChipsDestroyed();\n this._listenToChipsInteraction();\n }\n\n /** Subscribes to chip removal events. */\n private _listenToChipsRemove() {\n this._chipRemoveSubscription = this.chipRemoveChanges.subscribe((event: MatChipEvent) => {\n this._chipSetFoundation.handleChipRemoval({\n chipId: event.chip.id,\n // TODO(mmalerba): Add removal message.\n removedAnnouncement: null,\n });\n });\n }\n\n /** Subscribes to chip destroyed events. */\n private _listenToChipsDestroyed() {\n this._chipDestroyedSubscription = this.chipDestroyedChanges.subscribe((event: MatChipEvent) => {\n const chip = event.chip;\n const chipIndex: number = this._chips.toArray().indexOf(event.chip);\n\n // In case the chip that will be removed is currently focused, we temporarily store\n // the index in order to be able to determine an appropriate sibling chip that will\n // receive focus.\n if (this._isValidIndex(chipIndex) && chip._hasFocus()) {\n this._lastDestroyedChipIndex = chipIndex;\n }\n });\n }\n\n /** Subscribes to chip interaction events. */\n private _listenToChipsInteraction() {\n this._chipInteractionSubscription = this.chipInteractionChanges.subscribe((id: string) => {\n this._chipSetFoundation.handleChipInteraction({chipId: id});\n });\n }\n\n /** Unsubscribes from all chip events. */\n protected _dropSubscriptions() {\n if (this._chipRemoveSubscription) {\n this._chipRemoveSubscription.unsubscribe();\n this._chipRemoveSubscription = null;\n }\n\n if (this._chipInteractionSubscription) {\n this._chipInteractionSubscription.unsubscribe();\n this._chipInteractionSubscription = null;\n }\n\n if (this._chipDestroyedSubscription) {\n this._chipDestroyedSubscription.unsubscribe();\n this._chipDestroyedSubscription = null;\n }\n }\n\n /** Dummy method for subclasses to override. Base chip set cannot be focused. */\n focus() {}\n\n /**\n * Utility to ensure all indexes are valid.\n *\n * @param index The index to be checked.\n * @returns True if the index is valid for our list of chips.\n */\n protected _isValidIndex(index: number): boolean {\n return index >= 0 && index < this._chips.length;\n }\n\n /** Checks whether an event comes from inside a chip element. */\n protected _originatesFromChip(event: Event): boolean {\n return this._checkForClassInHierarchy(event, 'mdc-chip');\n }\n\n /**\n * Checks whether an event comes from inside a chip element in the editing\n * state.\n */\n protected _originatesFromEditingChip(event: Event): boolean {\n return this._checkForClassInHierarchy(event, 'mdc-chip--editing');\n }\n\n private _checkForClassInHierarchy(event: Event, className: string) {\n let currentElement = event.target as HTMLElement | null;\n\n while (currentElement && currentElement !== this._elementRef.nativeElement) {\n // Null check the classList, because IE and Edge don't support it on all elements.\n if (currentElement.classList && currentElement.classList.contains(className)) {\n return true;\n }\n\n currentElement = currentElement.parentElement;\n }\n\n return false;\n }\n\n static ngAcceptInputType_disabled: BooleanInput;\n static ngAcceptInputType_tabIndex: NumberInput;\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {FocusKeyManager} from '@angular/cdk/a11y';\nimport {Directionality} from '@angular/cdk/bidi';\nimport {BooleanInput, coerceBooleanProperty} from '@angular/cdk/coercion';\nimport {\n AfterContentInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ContentChildren,\n ElementRef,\n EventEmitter,\n forwardRef,\n Input,\n Optional,\n Output,\n QueryList,\n ViewEncapsulation,\n} from '@angular/core';\nimport {ControlValueAccessor, NG_VALUE_ACCESSOR} from '@angular/forms';\nimport {deprecated} from '@material/chips';\nimport {merge, Observable, Subscription} from 'rxjs';\nimport {startWith, takeUntil} from 'rxjs/operators';\nimport {MatChip, MatChipEvent} from './chip';\nimport {MatChipOption, MatChipSelectionChange} from './chip-option';\nimport {MatChipSet} from './chip-set';\n\n/** Change event object that is emitted when the chip listbox value has changed. */\nexport class MatChipListboxChange {\n constructor(\n /** Chip listbox that emitted the event. */\n public source: MatChipListbox,\n /** Value of the chip listbox when the event was emitted. */\n public value: any,\n ) {}\n}\n\n/**\n * Provider Expression that allows mat-chip-listbox to register as a ControlValueAccessor.\n * This allows it to support [(ngModel)].\n * @docs-private\n */\nexport const MAT_CHIP_LISTBOX_CONTROL_VALUE_ACCESSOR: any = {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => MatChipListbox),\n multi: true,\n};\n\n/**\n * An extension of the MatChipSet component that supports chip selection.\n * Used with MatChipOption chips.\n */\n@Component({\n selector: 'mat-chip-listbox',\n template: '<ng-content></ng-content>',\n styleUrls: ['chips.css'],\n inputs: ['tabIndex'],\n host: {\n 'class': 'mat-mdc-chip-set mat-mdc-chip-listbox mdc-chip-set',\n '[attr.role]': 'role',\n '[tabIndex]': 'empty ? -1 : tabIndex',\n // TODO: replace this binding with use of AriaDescriber\n '[attr.aria-describedby]': '_ariaDescribedby || null',\n '[attr.aria-required]': 'role ? required : null',\n '[attr.aria-disabled]': 'disabled.toString()',\n '[attr.aria-multiselectable]': 'multiple',\n '[attr.aria-orientation]': 'ariaOrientation',\n '[class.mat-mdc-chip-list-disabled]': 'disabled',\n '[class.mat-mdc-chip-list-required]': 'required',\n '(focus)': 'focus()',\n '(blur)': '_blur()',\n '(keydown)': '_keydown($event)',\n '[id]': '_uid',\n },\n providers: [MAT_CHIP_LISTBOX_CONTROL_VALUE_ACCESSOR],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class MatChipListbox extends MatChipSet implements AfterContentInit, ControlValueAccessor {\n /** Subscription to selection changes in the chips. */\n private _chipSelectionSubscription: Subscription | null;\n\n /** Subscription to blur changes in the chips. */\n private _chipBlurSubscription: Subscription | null;\n\n /** Subscription to focus changes in the chips. */\n private _chipFocusSubscription: Subscription | null;\n\n /** The FocusKeyManager which handles focus. */\n _keyManager: FocusKeyManager<MatChip>;\n\n /**\n * Function when touched. Set as part of ControlValueAccessor implementation.\n * @docs-private\n */\n _onTouched = () => {};\n\n /**\n * Function when changed. Set as part of ControlValueAccessor implementation.\n * @docs-private\n */\n _onChange: (value: any) => void = () => {};\n\n /** The ARIA role applied to the chip listbox. */\n override get role(): string | null {\n return this.empty ? null : 'listbox';\n }\n\n /** Whether the user should be allowed to select multiple chips. */\n @Input()\n get multiple(): boolean {\n return this._multiple;\n }\n set multiple(value: boolean) {\n this._multiple = coerceBooleanProperty(value);\n this._updateMdcSelectionClasses();\n this._syncListboxProperties();\n }\n private _multiple: boolean = false;\n\n /** The array of selected chips inside the chip listbox. */\n get selected(): MatChipOption[] | MatChipOption {\n const selectedChips = this._chips.toArray().filter(chip => chip.selected);\n return this.multiple ? selectedChips : selectedChips[0];\n }\n\n /** Orientation of the chip list. */\n @Input('aria-orientation') ariaOrientation: 'horizontal' | 'vertical' = 'horizontal';\n\n /**\n * Whether or not this chip listbox is selectable.\n *\n * When a chip listbox is not selectable, the selected states for all\n * the chips inside the chip listbox are always ignored.\n */\n @Input()\n get selectable(): boolean {\n return this._selectable;\n }\n set selectable(value: boolean) {\n this._selectable = coerceBooleanProperty(value);\n this._updateMdcSelectionClasses();\n this._syncListboxProperties();\n }\n protected _selectable: boolean = true;\n\n /**\n * A function to compare the option values with the selected values. The first argument\n * is a value from an option. The second is a value from the selection. A boolean\n * should be returned.\n */\n @Input()\n get compareWith(): (o1: any, o2: any) => boolean {\n return this._compareWith;\n }\n set compareWith(fn: (o1: any, o2: any) => boolean) {\n this._compareWith = fn;\n this._initializeSelection();\n }\n private _compareWith = (o1: any, o2: any) => o1 === o2;\n\n /** Whether this chip listbox is required. */\n @Input()\n get required(): boolean {\n return this._required;\n }\n set required(value: boolean) {\n this._required = coerceBooleanProperty(value);\n }\n protected _required: boolean = false;\n\n /** Combined stream of all of the child chips' selection change events. */\n get chipSelectionChanges(): Observable<MatChipSelectionChange> {\n return merge(...this._chips.map(chip => chip.selectionChange));\n }\n\n /** Combined stream of all of the child chips' focus events. */\n get chipFocusChanges(): Observable<MatChipEvent> {\n return merge(...this._chips.map(chip => chip._onFocus));\n }\n\n /** Combined stream of all of the child chips' blur events. */\n get chipBlurChanges(): Observable<MatChipEvent> {\n return merge(...this._chips.map(chip => chip._onBlur));\n }\n\n /** The value of the listbox, which is the combined value of the selected chips. */\n @Input()\n get value(): any {\n return this._value;\n }\n set value(value: any) {\n this.writeValue(value);\n this._value = value;\n }\n protected _value: any;\n\n /** Event emitted when the selected chip listbox value has been changed by the user. */\n @Output() readonly change: EventEmitter<MatChipListboxChange> =\n new EventEmitter<MatChipListboxChange>();\n\n @ContentChildren(MatChipOption, {\n // We need to use `descendants: true`, because Ivy will no longer match\n // indirect descendants if it's left as false.\n descendants: true,\n })\n override _chips: QueryList<MatChipOption>;\n\n constructor(\n elementRef: ElementRef,\n changeDetectorRef: ChangeDetectorRef,\n @Optional() _dir: Directionality,\n ) {\n super(elementRef, changeDetectorRef, _dir);\n this._chipSetAdapter.selectChipAtIndex = (index: number, selected: boolean) => {\n this._setSelected(index, selected);\n };\n // Reinitialize the foundation with our overridden adapter\n this._chipSetFoundation = new deprecated.MDCChipSetFoundation(this._chipSetAdapter);\n this._updateMdcSelectionClasses();\n }\n\n override ngAfterContentInit() {\n super.ngAfterContentInit();\n this._initKeyManager();\n\n this._chips.changes.pipe(startWith(null), takeUntil(this._destroyed)).subscribe(() => {\n // Update listbox selectable/multiple properties on chips\n this._syncListboxProperties();\n\n // Reset chips selected/deselected status\n this._initializeSelection();\n\n // Check to see if we have a destroyed chip and need to refocus\n this._updateFocusForDestroyedChips();\n });\n }\n\n /**\n * Focuses the first selected chip in this chip listbox, or the first non-disabled chip when there\n * are no selected chips.\n */\n override focus(): void {\n if (this.disabled) {\n return;\n }\n\n const firstSelectedChip = this._getFirstSelectedChip();\n\n if (firstSelectedChip) {\n const firstSelectedChipIndex = this._chips.toArray().indexOf(firstSelectedChip);\n this._keyManager.setActiveItem(firstSelectedChipIndex);\n } else if (this._chips.length > 0) {\n this._keyManager.setFirstItemActive();\n }\n }\n\n /**\n * Implemented as part of ControlValueAccessor.\n * @docs-private\n */\n writeValue(value: any): void {\n if (this._chips) {\n this._setSelectionByValue(value, false);\n }\n }\n\n /**\n * Implemented as part of ControlValueAccessor.\n * @docs-private\n */\n registerOnChange(fn: (value: any) => void): void {\n this._onChange = fn;\n }\n\n /**\n * Implemented as part of ControlValueAccessor.\n * @docs-private\n */\n registerOnTouched(fn: () => void): void {\n this._onTouched = fn;\n }\n\n /**\n * Implemented as part of ControlValueAccessor.\n * @docs-private\n */\n setDisabledState(isDisabled: boolean): void {\n this.disabled = isDisabled;\n }\n\n /** Selects all chips with value. */\n _setSelectionByValue(value: any, isUserInput: boolean = true) {\n this._clearSelection();\n\n if (Array.isArray(value)) {\n value.forEach(currentValue => this._selectValue(currentValue, isUserInput));\n } else {\n const correspondingChip = this._selectValue(value, isUserInput);\n\n // Shift focus to the active item. Note that we shouldn't do this in multiple\n // mode, because we don't know what chip the user interacted with last.\n if (correspondingChip) {\n if (isUserInput) {\n this._keyManager.setActiveItem(correspondingChip);\n }\n }\n }\n }\n\n /** Selects or deselects a chip by id. */\n _setSelected(index: number, selected: boolean) {\n const chip = this._chips.toArray()[index];\n if (chip && chip.selected != selected) {\n chip.toggleSelected(true);\n }\n }\n\n /** When blurred, marks the field as touched when focus moved outside the chip listbox. */\n _blur() {\n if (this.disabled) {\n return;\n }\n\n if (!this.focused) {\n this._keyManager.setActiveItem(-1);\n }\n\n // Wait to see if focus moves to an indivdual chip.\n setTimeout(() => {\n if (!this.focused) {\n this._propagateChanges();\n this._markAsTouched();\n }\n });\n }\n\n /**\n * Removes the `tabindex` from the chip listbox and resets it back afterwards, allowing the\n * user to tab out of it. This prevents the listbox from capturing focus and redirecting\n * it back to the first chip, creating a focus trap, if it user tries to tab away.\n */\n _allowFocusEscape() {\n const previousTabIndex = this.tabIndex;\n\n if (this.tabIndex !== -1) {\n this.tabIndex = -1;\n\n setTimeout(() => {\n this.tabIndex = previousTabIndex;\n this._changeDetectorRef.markForCheck();\n });\n }\n }\n\n /**\n * Handles custom keyboard shortcuts, and passes other keyboard events to the keyboard manager.\n */\n _keydown(event: KeyboardEvent) {\n if (this._originatesFromChip(event)) {\n this._keyManager.onKeydown(event);\n }\n }\n\n /** Marks the field as touched */\n private _markAsTouched() {\n this._onTouched();\n this._changeDetectorRef.markForCheck();\n }\n\n /** Emits change event to set the model value. */\n private _propagateChanges(fallbackValue?: any): void {\n let valueToEmit: any = null;\n\n if (Array.isArray(this.selected)) {\n valueToEmit = this.selected.map(chip => chip.value);\n } else {\n valueToEmit = this.selected ? this.selected.value : fallbackValue;\n }\n this._value = valueToEmit;\n this.change.emit(new MatChipListboxChange(this, valueToEmit));\n this._onChange(valueToEmit);\n this._changeDetectorRef.markForCheck();\n }\n\n /**\n * Initializes the chip listbox selection state to reflect any chips that were preselected.\n */\n private _initializeSelection() {\n setTimeout(() => {\n // Defer setting the value in order to avoid the \"Expression\n // has changed after it was checked\" errors from Angular.\n this._chips.forEach(chip => {\n if (chip.selected) {\n this._chipSetFoundation.select(chip.id);\n }\n });\n });\n }\n\n /**\n * Deselects every chip in the listbox.\n * @param skip Chip that should not be deselected.\n */\n private _clearSelection(skip?: MatChip): void {\n this._chips.forEach(chip => {\n if (chip !== skip) {\n chip.deselect();\n }\n });\n }\n\n /**\n * Finds and selects the chip based on its value.\n * @returns Chip that has the corresponding value.\n */\n private _selectValue(value: any, isUserInput: boolean = true): MatChip | undefined {\n const correspondingChip = this._chips.find(chip => {\n return chip.value != null && this._compareWith(chip.value, value);\n });\n\n if (correspondingChip) {\n isUserInput ? correspondingChip.selectViaInteraction() : correspondingChip.select();\n }\n\n return correspondingChip;\n }\n\n /** Syncs the chip-listbox selection state with the individual chips. */\n private _syncListboxProperties() {\n if (this._chips) {\n // Defer setting the value in order to avoid the \"Expression\n // has changed after it was checked\" errors from Angular.\n Promise.resolve().then(() => {\n this._chips.forEach(chip => {\n chip._chipListMultiple = this.multiple;\n chip.chipListSelectable = this._selectable;\n chip._changeDetectorRef.markForCheck();\n });\n });\n }\n }\n\n /** Sets the mdc classes for single vs multi selection. */\n private _updateMdcSelectionClasses() {\n this._setMdcClass('mdc-chip-set--filter', this.selectable && this.multiple);\n this._setMdcClass('mdc-chip-set--choice', this.selectable && !this.multiple);\n }\n\n /** Initializes the key manager to manage focus. */\n private _initKeyManager() {\n this._keyManager = new FocusKeyManager<MatChip>(this._chips)\n .withWrap()\n .withVerticalOrientation()\n .withHomeAndEnd()\n .withHorizontalOrientation(this._dir ? this._dir.value : 'ltr');\n\n if (this._dir) {\n this._dir.change\n .pipe(takeUntil(this._destroyed))\n .subscribe(dir => this._keyManager.withHorizontalOrientation(dir));\n }\n\n this._keyManager.tabOut.pipe(takeUntil(this._destroyed)).subscribe(() => {\n this._allowFocusEscape();\n });\n }\n\n /** Returns the first selected chip in this listbox, or undefined if no chips are selected. */\n private _getFirstSelectedChip(): MatChipOption | undefined {\n if (Array.isArray(this.selected)) {\n return this.selected.length ? this.selected[0] : undefined;\n } else {\n return this.selected;\n }\n }\n\n /** Unsubscribes from all chip events. */\n protected override _dropSubscriptions() {\n super._dropSubscriptions();\n if (this._chipSelectionSubscription) {\n this._chipSelectionSubscription.unsubscribe();\n this._chipSelectionSubscription = null;\n }\n\n if (this._chipBlurSubscription) {\n this._chipBlurSubscription.unsubscribe();\n this._chipBlurSubscription = null;\n }\n\n if (this._chipFocusSubscription) {\n this._chipFocusSubscription.unsubscribe();\n this._chipFocusSubscription = null;\n }\n }\n\n /** Subscribes to events on the child chips. */\n protected override _subscribeToChipEvents() {\n super._subscribeToChipEvents();\n this._listenToChipsSelection();\n this._listenToChipsFocus();\n this._listenToChipsBlur();\n }\n\n /** Subscribes to chip focus events. */\n private _listenToChipsFocus(): void {\n this._chipFocusSubscription = this.chipFocusChanges.subscribe((event: MatChipEvent) => {\n let chipIndex: number = this._chips.toArray().indexOf(event.chip as MatChipOption);\n\n if (this._isValidIndex(chipIndex)) {\n this._keyManager.updateActiveItem(chipIndex);\n }\n });\n }\n\n /** Subscribes to chip blur events. */\n private _listenToChipsBlur(): void {\n this._chipBlurSubscription = this.chipBlurChanges.subscribe(() => {\n this._blur();\n });\n }\n\n /** Subscribes to selection changes in the option chips. */\n private _listenToChipsSelection(): void {\n this._chipSelectionSubscription = this.chipSelectionChanges.subscribe(\n (chipSelectionChange: MatChipSelectionChange) => {\n this._chipSetFoundation.handleChipSelection({\n chipId: chipSelectionChange.source.id,\n selected: chipSelectionChange.selected,\n shouldIgnore: false,\n });\n if (chipSelectionChange.isUserInput) {\n this._propagateChanges();\n }\n },\n );\n }\n\n /**\n * If the amount of chips changed, we need to update the\n * key manager state and focus the next closest chip.\n */\n private _updateFocusForDestroyedChips() {\n // Move focus to the closest chip. If no other chips remain, focus the chip-listbox itself.\n if (this._lastDestroyedChipIndex != null) {\n if (this._chips.length) {\n const newChipIndex = Math.min(this._lastDestroyedChipIndex, this._chips.length - 1);\n this._keyManager.setActiveItem(newChipIndex);\n } else {\n this.focus();\n }\n }\n\n this._lastDestroyedChipIndex = null;\n }\n\n static ngAcceptInputType_multiple: BooleanInput;\n static ngAcceptInputType_selectable: BooleanInput;\n static ngAcceptInputType_required: BooleanInput;\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {QueryList} from '@angular/core';\nimport {Subject} from 'rxjs';\nimport {UP_ARROW, DOWN_ARROW, LEFT_ARROW, RIGHT_ARROW, HOME, END} from '@angular/cdk/keycodes';\n\n/** The keys handled by the GridKeyManager keydown method. */\nexport const NAVIGATION_KEYS = [DOWN_ARROW, UP_ARROW, RIGHT_ARROW, LEFT_ARROW];\n\n/** This interface is for rows that can be passed to a GridKeyManager. */\nexport interface GridKeyManagerRow<T> {\n cells: T[];\n}\n\n/**\n * This class manages keyboard events for grids. If you pass it a query list\n * of GridKeyManagerRow, it will set the active cell correctly when arrow events occur.\n *\n * GridKeyManager expects that rows may change dynamically, but the cells for a given row are\n * static. It also expects that all rows have the same number of cells.\n */\nexport class GridKeyManager<T> {\n private _activeRowIndex = -1;\n private _activeColumnIndex = -1;\n private _activeRow: GridKeyManagerRow<T> | null = null;\n private _activeCell: T | null = null;\n private _dir: 'ltr' | 'rtl' = 'ltr';\n private _homeAndEnd = false;\n\n constructor(private _rows: QueryList<GridKeyManagerRow<T>> | GridKeyManagerRow<T>[]) {\n // We allow for the rows to be an array because, in some cases, the consumer may\n // not have access to a QueryList of the rows they want to manage (e.g. when the\n // rows aren't being collected via `ViewChildren` or `ContentChildren`).\n if (_rows instanceof QueryList) {\n _rows.changes.subscribe((newRows: QueryList<GridKeyManagerRow<T>>) => {\n if (this._activeRow) {\n const newIndex = newRows.toArray().indexOf(this._activeRow);\n\n if (newIndex > -1 && newIndex !== this._activeRowIndex) {\n this._activeRowIndex = newIndex;\n }\n }\n });\n }\n }\n\n /** Stream that emits whenever the active cell of the grid manager changes. */\n change = new Subject<{row: number; column: number}>();\n\n /**\n * Configures the directionality of the key manager's horizontal movement.\n * @param direction Direction which is considered forward movement across a row.\n *\n * If withDirectionality is not set, the default is 'ltr'.\n */\n withDirectionality(direction: 'ltr' | 'rtl'): this {\n this._dir = direction;\n return this;\n }\n\n /**\n * Sets the active cell to the cell at the indices specified.\n * @param cell The row and column containing the cell to be set as active.\n */\n setActiveCell(cell: {row: number; column: number}): void;\n\n /**\n * Sets the active cell to the cell.\n * @param cell The cell to be set as active.\n */\n setActiveCell(cell: T): void;\n\n setActiveCell(cell: any): void {\n const previousRowIndex = this._activeRowIndex;\n const previousColumnIndex = this._activeColumnIndex;\n\n this.updateActiveCell(cell);\n\n if (\n this._activeRowIndex !== previousRowIndex ||\n this._activeColumnIndex !== previousColumnIndex\n ) {\n this.change.next({row: this._activeRowIndex, column: this._activeColumnIndex});\n }\n }\n\n /**\n * Configures the key manager to activate the first and last items\n * respectively when the Home or End key is pressed.\n * @param enabled Whether pressing the Home or End key activates the first/last item.\n */\n withHomeAndEnd(enabled: boolean = true): this {\n this._homeAndEnd = enabled;\n return this;\n }\n\n /**\n * Sets the active cell depending on the key event passed in.\n * @param event Keyboard event to be used for determining which element should be active.\n */\n onKeydown(event: KeyboardEvent): void {\n const keyCode = event.keyCode;\n\n switch (keyCode) {\n case DOWN_ARROW:\n this.setNextRowActive();\n break;\n\n case UP_ARROW:\n this.setPreviousRowActive();\n break;\n\n case RIGHT_ARROW:\n this._dir === 'rtl' ? this.setPreviousColumnActive() : this.setNextColumnActive();\n break;\n\n case LEFT_ARROW:\n this._dir === 'rtl' ? this.setNextColumnActive() : this.setPreviousColumnActive();\n break;\n\n case HOME:\n if (this._homeAndEnd) {\n this.setFirstCellActive();\n break;\n } else {\n return;\n }\n\n case END:\n if (this._homeAndEnd) {\n this.setLastCellActive();\n break;\n } else {\n return;\n }\n\n default:\n // Note that we return here, in order to avoid preventing\n // the default action of non-navigational keys.\n return;\n }\n\n event.preventDefault();\n }\n\n /** Index of the currently active row. */\n get activeRowIndex(): number {\n return this._activeRowIndex;\n }\n\n /** Index of the currently active column. */\n get activeColumnIndex(): number {\n return this._activeColumnIndex;\n }\n\n /** The active cell. */\n get activeCell(): T | null {\n return this._activeCell;\n }\n\n /** Sets the active cell to the first cell in the grid. */\n setFirstCellActive(): void {\n this._setActiveCellByIndex(0, 0);\n }\n\n /** Sets the active cell to the last cell in the grid. */\n setLastCellActive(): void {\n const lastRowIndex = this._rows.length - 1;\n const lastRow = this._getRowsArray()[lastRowIndex];\n this._setActiveCellByIndex(lastRowIndex, lastRow.cells.length - 1);\n }\n\n /** Sets the active row to the next row in the grid. Active column is unchanged. */\n setNextRowActive(): void {\n this._activeRowIndex < 0 ? this.setFirstCellActive() : this._setActiveCellByDelta(1, 0);\n }\n\n /** Sets the active row to the previous row in the grid. Active column is unchanged. */\n setPreviousRowActive(): void {\n this._setActiveCellByDelta(-1, 0);\n }\n\n /**\n * Sets the active column to the next column in the grid.\n * Active row is unchanged, unless we reach the end of a row.\n */\n setNextColumnActive(): void {\n this._activeRowIndex < 0 ? this.setFirstCellActive() : this._setActiveCellByDelta(0, 1);\n }\n\n /**\n * Sets the active column to the previous column in the grid.\n * Active row is unchanged, unless we reach the end of a row.\n */\n setPreviousColumnActive(): void {\n this._setActiveCellByDelta(0, -1);\n }\n\n /**\n * Allows setting the active cell without any other effects.\n * @param cell Row and column of the cell to be set as active.\n */\n updateActiveCell(cell: {row: number; column: number}): void;\n\n /**\n * Allows setting the active cell without any other effects.\n * @param cell Cell to be set as active.\n */\n updateActiveCell(cell: T): void;\n\n updateActiveCell(cell: any): void {\n const rowArray = this._getRowsArray();\n\n if (\n typeof cell === 'object' &&\n typeof cell.row === 'number' &&\n typeof cell.column === 'number'\n ) {\n this._activeRowIndex = cell.row;\n this._activeColumnIndex = cell.column;\n this._activeRow = rowArray[cell.row] || null;\n this._activeCell = this._activeRow ? this._activeRow.cells[cell.column] || null : null;\n } else {\n rowArray.forEach((row, rowIndex) => {\n const columnIndex = row.cells.indexOf(cell);\n if (columnIndex !== -1) {\n this._activeRowIndex = rowIndex;\n this._activeColumnIndex = columnIndex;\n this._activeRow = row;\n this._activeCell = row.cells[columnIndex];\n }\n });\n }\n }\n\n /**\n * This method sets the active cell, given the row and columns deltas\n * between the currently active cell and the new active cell.\n */\n private _setActiveCellByDelta(rowDelta: -1 | 0 | 1, columnDelta: -1 | 0 | 1): void {\n // If delta puts us past the last cell in a row, move to the first cell of the next row.\n if (this._activeRow && this._activeColumnIndex + columnDelta >= this._activeRow.cells.length) {\n this._setActiveCellByIndex(this._activeRowIndex + 1, 0);\n\n // If delta puts us prior to the first cell in a row, move to the last cell of the previous row.\n } else if (this._activeColumnIndex + columnDelta < 0) {\n const previousRowIndex = this._activeRowIndex - 1;\n const previousRow = this._getRowsArray()[previousRowIndex];\n if (previousRow) {\n this._setActiveCellByIndex(previousRowIndex, previousRow.cells.length - 1);\n }\n } else {\n this._setActiveCellByIndex(\n this._activeRowIndex + rowDelta,\n this._activeColumnIndex + columnDelta,\n );\n }\n }\n\n /**\n * Sets the active cell to the cell at the indices specified, if they are valid.\n */\n private _setActiveCellByIndex(rowIndex: number, columnIndex: number): void {\n const rows = this._getRowsArray();\n\n const targetRow = rows[rowIndex];\n\n if (!targetRow || !targetRow.cells[columnIndex]) {\n return;\n }\n\n this.setActiveCell({row: rowIndex, column: columnIndex});\n }\n\n /** Returns the rows as an array. */\n private _getRowsArray(): GridKeyManagerRow<T>[] {\n return this._rows instanceof QueryList ? this._rows.toArray() : this._rows;\n }\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {GridKeyManager} from './grid-key-manager';\n\n/**\n * A version of GridKeyManager where the cells are HTMLElements, and focus()\n * is called on a cell when it becomes active.\n */\nexport class GridFocusKeyManager extends GridKeyManager<HTMLElement> {\n /**\n * Sets the active cell to the cell at the specified\n * indices and focuses the newly active cell.\n * @param cell Row and column indices of the cell to be set as active.\n */\n override setActiveCell(cell: {row: number; column: number}): void;\n\n /**\n * Sets the active cell to the cell that is specified and focuses it.\n * @param cell Cell to be set as active.\n */\n override setActiveCell(cell: HTMLElement): void;\n\n override setActiveCell(cell: any): void {\n super.setActiveCell(cell);\n\n if (this.activeCell) {\n this.activeCell.focus();\n }\n }\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {Directionality} from '@angular/cdk/bidi';\nimport {BooleanInput, coerceBooleanProperty} from '@angular/cdk/coercion';\nimport {TAB} from '@angular/cdk/keycodes';\nimport {\n AfterContentInit,\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ContentChildren,\n DoCheck,\n ElementRef,\n EventEmitter,\n Input,\n OnDestroy,\n Optional,\n Output,\n QueryList,\n Self,\n ViewEncapsulation,\n} from '@angular/core';\nimport {\n ControlValueAccessor,\n FormGroupDirective,\n NgControl,\n NgForm,\n Validators,\n} from '@angular/forms';\nimport {\n CanUpdateErrorState,\n ErrorStateMatcher,\n mixinErrorState,\n} from '@angular/material-experimental/mdc-core';\nimport {MatFormFieldControl} from '@angular/material-experimental/mdc-form-field';\nimport {MatChipTextControl} from './chip-text-control';\nimport {merge, Observable, Subscription} from 'rxjs';\nimport {startWith, takeUntil} from 'rxjs/operators';\nimport {MatChipEvent} from './chip';\nimport {MatChipRow} from './chip-row';\nimport {MatChipSet} from './chip-set';\nimport {GridFocusKeyManager} from './grid-focus-key-manager';\n\n/** Change event object that is emitted when the chip grid value has changed. */\nexport class MatChipGridChange {\n constructor(\n /** Chip grid that emitted the event. */\n public source: MatChipGrid,\n /** Value of the chip grid when the event was emitted. */\n public value: any,\n ) {}\n}\n\n/**\n * Boilerplate for applying mixins to MatChipGrid.\n * @docs-private\n */\nclass MatChipGridBase extends MatChipSet {\n constructor(\n _elementRef: ElementRef,\n _changeDetectorRef: ChangeDetectorRef,\n _dir: Directionality,\n public _defaultErrorStateMatcher: ErrorStateMatcher,\n public _parentForm: NgForm,\n public _parentFormGroup: FormGroupDirective,\n /** @docs-private */\n public ngControl: NgControl,\n ) {\n super(_elementRef, _changeDetectorRef, _dir);\n }\n}\nconst _MatChipGridMixinBase = mixinErrorState(MatChipGridBase);\n\n/**\n * An extension of the MatChipSet component used with MatChipRow chips and\n * the matChipInputFor directive.\n */\n@Component({\n selector: 'mat-chip-grid',\n template: '<ng-content></ng-content>',\n styleUrls: ['chips.css'],\n inputs: ['tabIndex'],\n host: {\n 'class': 'mat-mdc-chip-set mat-mdc-chip-grid mdc-chip-set',\n '[attr.role]': 'role',\n '[tabIndex]': '_chips && _chips.length === 0 ? -1 : tabIndex',\n // TODO: replace this binding with use of AriaDescriber\n '[attr.aria-describedby]': '_ariaDescribedby || null',\n '[attr.aria-disabled]': 'disabled.toString()',\n '[attr.aria-invalid]': 'errorState',\n '[class.mat-mdc-chip-list-disabled]': 'disabled',\n '[class.mat-mdc-chip-list-invalid]': 'errorState',\n '[class.mat-mdc-chip-list-required]': 'required',\n '(focus)': 'focus()',\n '(blur)': '_blur()',\n '(keydown)': '_keydown($event)',\n '[id]': '_uid',\n },\n providers: [{provide: MatFormFieldControl, useExisting: MatChipGrid}],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class MatChipGrid\n extends _MatChipGridMixinBase\n implements\n AfterContentInit,\n AfterViewInit,\n CanUpdateErrorState,\n ControlValueAccessor,\n DoCheck,\n MatFormFieldControl<any>,\n OnDestroy\n{\n /**\n * Implemented as part of MatFormFieldControl.\n * @docs-private\n */\n readonly controlType: string = 'mat-chip-grid';\n\n /** Subscription to focus changes in the chips. */\n private _chipFocusSubscription: Subscription | null;\n\n /** Subscription to blur changes in the chips. */\n private _chipBlurSubscription: Subscription | null;\n\n /** The chip input to add more chips */\n protected _chipInput: MatChipTextControl;\n\n /**\n * Function when touched. Set as part of ControlValueAccessor implementation.\n * @docs-private\n */\n _onTouched = () => {};\n\n /**\n * Function when changed. Set as part of ControlValueAccessor implementation.\n * @docs-private\n */\n _onChange: (value: any) => void = () => {};\n\n /** The GridFocusKeyManager which handles focus. */\n _keyManager: GridFocusKeyManager;\n\n /**\n * Implemented as part of MatFormFieldControl.\n * @docs-private\n */\n @Input()\n override get disabled(): boolean {\n return this.ngControl ? !!this.ngControl.disabled : this._disabled;\n }\n override set disabled(value: boolean) {\n this._disabled = coerceBooleanProperty(value);\n this._syncChipsState();\n }\n\n /**\n * Implemented as part of MatFormFieldControl.\n * @docs-private\n */\n get id(): string {\n return this._chipInput.id;\n }\n\n /**\n * Implemented as part of MatFormFieldControl.\n * @docs-private\n */\n override get empty(): boolean {\n return (\n (!this._chipInput || this._chipInput.empty) && (!this._chips || this._chips.length === 0)\n );\n }\n\n /** The ARIA role applied to the chip grid. */\n override get role(): string | null {\n return this.empty ? null : 'grid';\n }\n\n /**\n * Implemented as part of MatFormFieldControl.\n * @docs-private\n */\n @Input()\n @Input()\n get placeholder(): string {\n return this._chipInput ? this._chipInput.placeholder : this._placeholder;\n }\n set placeholder(value: string) {\n this._placeholder = value;\n this.stateChanges.next();\n }\n protected _placeholder: string;\n\n /** Whether any chips or the matChipInput inside of this chip-grid has focus. */\n override get focused(): boolean {\n return this._chipInput.focused || this._hasFocusedChip();\n }\n\n /**\n * Implemented as part of MatFormFieldControl.\n * @docs-private\n */\n @Input()\n get required(): boolean {\n return this._required ?? this.ngControl?.control?.hasValidator(Validators.required) ?? false;\n }\n set required(value: boolean) {\n this._required = coerceBooleanProperty(value);\n this.stateChanges.next();\n }\n protected _required: boolean | undefined;\n\n /**\n * Implemented as part of MatFormFieldControl.\n * @docs-private\n */\n get shouldLabelFloat(): boolean {\n return !this.empty || this.focused;\n }\n\n /**\n * Implemented as part of MatFormFieldControl.\n * @docs-private\n */\n @Input()\n get value(): any {\n return this._value;\n }\n set value(value: any) {\n this._value = value;\n }\n protected _value: any[] = [];\n\n /** An object used to control when error messages are shown. */\n @Input() override errorStateMatcher: ErrorStateMatcher;\n\n /** Combined stream of all of the child chips' blur events. */\n get chipBlurChanges(): Observable<MatChipEvent> {\n return merge(...this._chips.map(chip => chip._onBlur));\n }\n\n /** Combined stream of all of the child chips' focus events. */\n get chipFocusChanges(): Observable<MatChipEvent> {\n return merge(...this._chips.map(chip => chip._onFocus));\n }\n\n /** Emits when the chip grid value has been changed by the user. */\n @Output() readonly change: EventEmitter<MatChipGridChange> =\n new EventEmitter<MatChipGridChange>();\n\n /**\n * Emits whenever the raw value of the chip-grid changes. This is here primarily\n * to facilitate the two-way binding for the `value` input.\n * @docs-private\n */\n @Output() readonly valueChange: EventEmitter<any> = new EventEmitter<any>();\n\n @ContentChildren(MatChipRow, {\n // We need to use `descendants: true`, because Ivy will no longer match\n // indirect descendants if it's left as false.\n descendants: true,\n })\n override _chips: QueryList<MatChipRow>;\n\n constructor(\n _elementRef: ElementRef,\n _changeDetectorRef: ChangeDetectorRef,\n @Optional() _dir: Directionality,\n @Optional() _parentForm: NgForm,\n @Optional() _parentFormGroup: FormGroupDirective,\n _defaultErrorStateMatcher: ErrorStateMatcher,\n @Optional() @Self() ngControl: NgControl,\n ) {\n super(\n _elementRef,\n _changeDetectorRef,\n _dir,\n _defaultErrorStateMatcher,\n _parentForm,\n _parentFormGroup,\n ngControl,\n );\n if (this.ngControl) {\n this.ngControl.valueAccessor = this;\n }\n }\n\n override ngAfterContentInit() {\n super.ngAfterContentInit();\n this._initKeyManager();\n\n this._chips.changes.pipe(startWith(null), takeUntil(this._destroyed)).subscribe(() => {\n // Check to see if we have a destroyed chip and need to refocus\n this._updateFocusForDestroyedChips();\n\n this.stateChanges.next();\n });\n }\n\n override ngAfterViewInit() {\n super.ngAfterViewInit();\n if (!this._chipInput && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n throw Error('mat-chip-grid must be used in combination with matChipInputFor.');\n }\n }\n\n ngDoCheck() {\n if (this.ngControl) {\n // We need to re-evaluate this on every change detection cycle, because there are some\n // error triggers that we can't subscribe to (e.g. parent form submissions). This means\n // that whatever logic is in here has to be super lean or we risk destroying the performance.\n this.updateErrorState();\n }\n }\n\n override ngOnDestroy() {\n super.ngOnDestroy();\n this.stateChanges.complete();\n }\n\n /** Associates an HTML input element with this chip grid. */\n registerInput(inputElement: MatChipTextControl): void {\n this._chipInput = inputElement;\n this._setMdcClass('mdc-chip-set--input', true);\n }\n\n /**\n * Implemented as part of MatFormFieldControl.\n * @docs-private\n */\n onContainerClick(event: MouseEvent) {\n if (!this._originatesFromChip(event) && !this.disabled) {\n this.focus();\n }\n }\n\n /**\n * Focuses the first chip in this chip grid, or the associated input when there\n * are no eligible chips.\n */\n override focus(): void {\n if (this.disabled || this._chipInput.focused) {\n return;\n }\n\n if (this._chips.length > 0) {\n this._keyManager.setFirstCellActive();\n } else {\n this._focusInput();\n }\n\n this.stateChanges.next();\n }\n\n /**\n * Implemented as part of MatFormFieldControl.\n * @docs-private\n */\n setDescribedByIds(ids: string[]) {\n this._ariaDescribedby = ids.join(' ');\n }\n\n /**\n * Implemented as part of ControlValueAccessor.\n * @docs-private\n */\n writeValue(value: any): void {\n // The user is responsible for creating the child chips, so we just store the value.\n this._value = value;\n }\n\n /**\n * Implemented as part of ControlValueAccessor.\n * @docs-private\n */\n registerOnChange(fn: (value: any) => void): void {\n this._onChange = fn;\n }\n\n /**\n * Implemented as part of ControlValueAccessor.\n * @docs-private\n */\n registerOnTouched(fn: () => void): void {\n this._onTouched = fn;\n }\n\n /**\n * Implemented as part of ControlValueAccessor.\n * @docs-private\n */\n setDisabledState(isDisabled: boolean): void {\n this.disabled = isDisabled;\n this.stateChanges.next();\n }\n\n /** When blurred, mark the field as touched when focus moved outside the chip grid. */\n _blur() {\n if (this.disabled) {\n return;\n }\n\n // Check whether the focus moved to chip input.\n // If the focus is not moved to chip input, mark the field as touched. If the focus moved\n // to chip input, do nothing.\n // Timeout is needed to wait for the focus() event trigger on chip input.\n setTimeout(() => {\n if (!this.focused) {\n this._keyManager.setActiveCell({row: -1, column: -1});\n this._propagateChanges();\n this._markAsTouched();\n }\n });\n }\n\n /**\n * Removes the `tabindex` from the chip grid and resets it back afterwards, allowing the\n * user to tab out of it. This prevents the grid from capturing focus and redirecting\n * it back to the first chip, creating a focus trap, if it user tries to tab away.\n */\n _allowFocusEscape() {\n if (this._chipInput.focused) {\n return;\n }\n\n const previousTabIndex = this.tabIndex;\n\n if (this.tabIndex !== -1) {\n this.tabIndex = -1;\n\n setTimeout(() => {\n this.tabIndex = previousTabIndex;\n this._changeDetectorRef.markForCheck();\n });\n }\n }\n\n /** Handles custom keyboard events. */\n _keydown(event: KeyboardEvent) {\n const target = event.target as HTMLElement;\n const keyCode = event.keyCode;\n const manager = this._keyManager;\n\n if (keyCode === TAB && target.id !== this._chipInput!.id) {\n this._allowFocusEscape();\n } else if (this._originatesFromEditingChip(event)) {\n // No-op, let the editing chip handle all keyboard events except for Tab.\n } else if (this._originatesFromChip(event)) {\n manager.onKeydown(event);\n }\n\n this.stateChanges.next();\n }\n\n /** Unsubscribes from all chip events. */\n protected override _dropSubscriptions() {\n super._dropSubscriptions();\n if (this._chipBlurSubscription) {\n this._chipBlurSubscription.unsubscribe();\n this._chipBlurSubscription = null;\n }\n\n if (this._chipFocusSubscription) {\n this._chipFocusSubscription.unsubscribe();\n this._chipFocusSubscription = null;\n }\n }\n\n /** Subscribes to events on the child chips. */\n protected override _subscribeToChipEvents() {\n super._subscribeToChipEvents();\n this._listenToChipsFocus();\n this._listenToChipsBlur();\n }\n\n /** Initializes the key manager to manage focus. */\n private _initKeyManager() {\n this._keyManager = new GridFocusKeyManager(this._chips)\n .withHomeAndEnd()\n .withDirectionality(this._dir ? this._dir.value : 'ltr');\n\n if (this._dir) {\n this._dir.change\n .pipe(takeUntil(this._destroyed))\n .subscribe(dir => this._keyManager.withDirectionality(dir));\n }\n }\n\n /** Subscribes to chip focus events. */\n private _listenToChipsFocus(): void {\n this._chipFocusSubscription = this.chipFocusChanges.subscribe((event: MatChipEvent) => {\n let chipIndex: number = this._chips.toArray().indexOf(event.chip as MatChipRow);\n\n if (this._isValidIndex(chipIndex)) {\n this._keyManager.updateActiveCell({row: chipIndex, column: 0});\n }\n });\n }\n\n /** Subscribes to chip blur events. */\n private _listenToChipsBlur(): void {\n this._chipBlurSubscription = this.chipBlurChanges.subscribe(() => {\n this._blur();\n this.stateChanges.next();\n });\n }\n\n /** Emits change event to set the model value. */\n private _propagateChanges(): void {\n const valueToEmit = this._chips.length ? this._chips.toArray().map(chip => chip.value) : [];\n this._value = valueToEmit;\n this.change.emit(new MatChipGridChange(this, valueToEmit));\n this.valueChange.emit(valueToEmit);\n this._onChange(valueToEmit);\n this._changeDetectorRef.markForCheck();\n }\n\n /** Mark the field as touched */\n private _markAsTouched() {\n this._onTouched();\n this._changeDetectorRef.markForCheck();\n this.stateChanges.next();\n }\n\n /**\n * If the amount of chips changed, we need to focus the next closest chip.\n */\n private _updateFocusForDestroyedChips() {\n // Move focus to the closest chip. If no other chips remain, focus the chip-grid itself.\n if (this._lastDestroyedChipIndex != null) {\n if (this._chips.length) {\n const newChipIndex = Math.min(this._lastDestroyedChipIndex, this._chips.length - 1);\n this._keyManager.setActiveCell({\n row: newChipIndex,\n column: Math.max(this._keyManager.activeColumnIndex, 0),\n });\n } else {\n this.focus();\n }\n }\n\n this._lastDestroyedChipIndex = null;\n }\n\n /** Focus input element. */\n private _focusInput() {\n this._chipInput.focus();\n }\n\n // Even though this member is inherited, we explicitly need to set it here as the `disabled`\n // input is overwritten in this class too. This is needed for the lint rule.\n static override ngAcceptInputType_disabled: BooleanInput;\n static ngAcceptInputType_required: BooleanInput;\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {InjectionToken} from '@angular/core';\n\n/** Default options, for the chips module, that can be overridden. */\nexport interface MatChipsDefaultOptions {\n /** The list of key codes that will trigger a chipEnd event. */\n separatorKeyCodes: readonly number[] | ReadonlySet<number>;\n}\n\n/** Injection token to be used to override the default options for the chips module. */\nexport const MAT_CHIPS_DEFAULT_OPTIONS = new InjectionToken<MatChipsDefaultOptions>(\n 'mat-chips-default-options',\n);\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {BooleanInput, coerceBooleanProperty} from '@angular/cdk/coercion';\nimport {BACKSPACE, hasModifierKey, TAB} from '@angular/cdk/keycodes';\nimport {\n AfterContentInit,\n Directive,\n ElementRef,\n EventEmitter,\n Inject,\n Input,\n OnChanges,\n OnDestroy,\n Optional,\n Output,\n} from '@angular/core';\nimport {MatFormField, MAT_FORM_FIELD} from '@angular/material-experimental/mdc-form-field';\nimport {MatChipsDefaultOptions, MAT_CHIPS_DEFAULT_OPTIONS} from './chip-default-options';\nimport {MatChipGrid} from './chip-grid';\nimport {MatChipTextControl} from './chip-text-control';\n\n/** Represents an input event on a `matChipInput`. */\nexport interface MatChipInputEvent {\n /**\n * The native `<input>` element that the event is being fired for.\n * @deprecated Use `MatChipInputEvent#chipInput.inputElement` instead.\n * @breaking-change 13.0.0 This property will be removed.\n */\n input: HTMLInputElement;\n\n /** The value of the input. */\n value: string;\n\n /**\n * Reference to the chip input that emitted the event.\n * @breaking-change 13.0.0 This property will be made required.\n */\n chipInput?: MatChipInput;\n}\n\n// Increasing integer for generating unique ids.\nlet nextUniqueId = 0;\n\n/**\n * Directive that adds chip-specific behaviors to an input element inside `<mat-form-field>`.\n * May be placed inside or outside of a `<mat-chip-grid>`.\n */\n@Directive({\n selector: 'input[matChipInputFor]',\n exportAs: 'matChipInput, matChipInputFor',\n host: {\n // TODO: eventually we should remove `mat-input-element` from here since it comes from the\n // non-MDC version of the input. It's currently being kept for backwards compatibility, because\n // the MDC chips were landed initially with it.\n 'class': 'mat-mdc-chip-input mat-mdc-input-element mdc-text-field__input mat-input-element',\n '(keydown)': '_keydown($event)',\n '(keyup)': '_keyup($event)',\n '(blur)': '_blur()',\n '(focus)': '_focus()',\n '(input)': '_onInput()',\n '[id]': 'id',\n '[attr.disabled]': 'disabled || null',\n '[attr.placeholder]': 'placeholder || null',\n '[attr.aria-invalid]': '_chipGrid && _chipGrid.ngControl ? _chipGrid.ngControl.invalid : null',\n '[attr.aria-required]': '_chipGrid && _chipGrid.required || null',\n '[attr.required]': '_chipGrid && _chipGrid.required || null',\n },\n})\nexport class MatChipInput implements MatChipTextControl, AfterContentInit, OnChanges, OnDestroy {\n /** Used to prevent focus moving to chips while user is holding backspace */\n private _focusLastChipOnBackspace: boolean;\n\n /** Whether the control is focused. */\n focused: boolean = false;\n _chipGrid: MatChipGrid;\n\n /** Register input for chip list */\n @Input('matChipInputFor')\n set chipGrid(value: MatChipGrid) {\n if (value) {\n this._chipGrid = value;\n this._chipGrid.registerInput(this);\n }\n }\n\n /**\n * Whether or not the chipEnd event will be emitted when the input is blurred.\n */\n @Input('matChipInputAddOnBlur')\n get addOnBlur(): boolean {\n return this._addOnBlur;\n }\n set addOnBlur(value: boolean) {\n this._addOnBlur = coerceBooleanProperty(value);\n }\n _addOnBlur: boolean = false;\n\n /**\n * The list of key codes that will trigger a chipEnd event.\n *\n * Defaults to `[ENTER]`.\n */\n @Input('matChipInputSeparatorKeyCodes')\n separatorKeyCodes: readonly number[] | ReadonlySet<number> =\n this._defaultOptions.separatorKeyCodes;\n\n /** Emitted when a chip is to be added. */\n @Output('matChipInputTokenEnd')\n readonly chipEnd: EventEmitter<MatChipInputEvent> = new EventEmitter<MatChipInputEvent>();\n\n /** The input's placeholder text. */\n @Input() placeholder: string = '';\n\n /** Unique id for the input. */\n @Input() id: string = `mat-mdc-chip-list-input-${nextUniqueId++}`;\n\n /** Whether the input is disabled. */\n @Input()\n get disabled(): boolean {\n return this._disabled || (this._chipGrid && this._chipGrid.disabled);\n }\n set disabled(value: boolean) {\n this._disabled = coerceBooleanProperty(value);\n }\n private _disabled: boolean = false;\n\n /** Whether the input is empty. */\n get empty(): boolean {\n return !this.inputElement.value;\n }\n\n /** The native input element to which this directive is attached. */\n readonly inputElement!: HTMLInputElement;\n\n constructor(\n protected _elementRef: ElementRef<HTMLInputElement>,\n @Inject(MAT_CHIPS_DEFAULT_OPTIONS) private _defaultOptions: MatChipsDefaultOptions,\n @Optional() @Inject(MAT_FORM_FIELD) formField?: MatFormField,\n ) {\n this.inputElement = this._elementRef.nativeElement as HTMLInputElement;\n\n if (formField) {\n this.inputElement.classList.add('mat-mdc-form-field-input-control');\n }\n }\n\n ngOnChanges() {\n this._chipGrid.stateChanges.next();\n }\n\n ngOnDestroy(): void {\n this.chipEnd.complete();\n }\n\n ngAfterContentInit(): void {\n this._focusLastChipOnBackspace = this.empty;\n }\n\n /** Utility method to make host definition/tests more clear. */\n _keydown(event?: KeyboardEvent) {\n if (event) {\n // Allow the user's focus to escape when they're tabbing forward. Note that we don't\n // want to do this when going backwards, because focus should go back to the first chip.\n if (event.keyCode === TAB && !hasModifierKey(event, 'shiftKey')) {\n this._chipGrid._allowFocusEscape();\n }\n\n // To prevent the user from accidentally deleting chips when pressing BACKSPACE continuously,\n // We focus the last chip on backspace only after the user has released the backspace button,\n // And the input is empty (see behaviour in _keyup)\n if (event.keyCode === BACKSPACE && this._focusLastChipOnBackspace) {\n if (this._chipGrid._chips.length) {\n this._chipGrid._keyManager.setLastCellActive();\n }\n event.preventDefault();\n return;\n } else {\n this._focusLastChipOnBackspace = false;\n }\n }\n\n this._emitChipEnd(event);\n }\n\n /**\n * Pass events to the keyboard manager. Available here for tests.\n */\n _keyup(event: KeyboardEvent) {\n // Allow user to move focus to chips next time he presses backspace\n if (!this._focusLastChipOnBackspace && event.keyCode === BACKSPACE && this.empty) {\n this._focusLastChipOnBackspace = true;\n event.preventDefault();\n }\n }\n\n /** Checks to see if the blur should emit the (chipEnd) event. */\n _blur() {\n if (this.addOnBlur) {\n this._emitChipEnd();\n }\n this.focused = false;\n // Blur the chip list if it is not focused\n if (!this._chipGrid.focused) {\n this._chipGrid._blur();\n }\n this._chipGrid.stateChanges.next();\n }\n\n _focus() {\n this.focused = true;\n this._focusLastChipOnBackspace = this.empty;\n this._chipGrid.stateChanges.next();\n }\n\n /** Checks to see if the (chipEnd) event needs to be emitted. */\n _emitChipEnd(event?: KeyboardEvent) {\n if (!this.inputElement.value && !!event) {\n this._chipGrid._keydown(event);\n }\n\n if (!event || this._isSeparatorKey(event)) {\n this.chipEnd.emit({\n input: this.inputElement,\n value: this.inputElement.value,\n chipInput: this,\n });\n\n event?.preventDefault();\n }\n }\n\n _onInput() {\n // Let chip list know whenever the value changes.\n this._chipGrid.stateChanges.next();\n }\n\n /** Focuses the input. */\n focus(): void {\n this.inputElement.focus();\n }\n\n /** Clears the input */\n clear(): void {\n this.inputElement.value = '';\n this._focusLastChipOnBackspace = true;\n }\n\n /** Checks whether a keycode is one of the configured separators. */\n private _isSeparatorKey(event: KeyboardEvent) {\n return !hasModifierKey(event) && new Set(this.separatorKeyCodes).has(event.keyCode);\n }\n\n static ngAcceptInputType_addOnBlur: BooleanInput;\n static ngAcceptInputType_disabled: BooleanInput;\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {ENTER} from '@angular/cdk/keycodes';\nimport {CommonModule} from '@angular/common';\nimport {NgModule} from '@angular/core';\nimport {\n ErrorStateMatcher,\n MatCommonModule,\n MatRippleModule,\n} from '@angular/material-experimental/mdc-core';\nimport {MatChip, MatChipCssInternalOnly} from './chip';\nimport {MAT_CHIPS_DEFAULT_OPTIONS, MatChipsDefaultOptions} from './chip-default-options';\nimport {MatChipEditInput} from './chip-edit-input';\nimport {MatChipGrid} from './chip-grid';\nimport {MatChipAvatar, MatChipRemove, MatChipTrailingIcon} from './chip-icons';\nimport {MatChipInput} from './chip-input';\nimport {MatChipListbox} from './chip-listbox';\nimport {MatChipRow} from './chip-row';\nimport {MatChipOption} from './chip-option';\nimport {MatChipSet} from './chip-set';\n\nconst CHIP_DECLARATIONS = [\n MatChip,\n MatChipAvatar,\n MatChipCssInternalOnly,\n MatChipEditInput,\n MatChipGrid,\n MatChipInput,\n MatChipListbox,\n MatChipOption,\n MatChipRemove,\n MatChipRow,\n MatChipSet,\n MatChipTrailingIcon,\n];\n\n@NgModule({\n imports: [MatCommonModule, CommonModule, MatRippleModule],\n exports: [MatCommonModule, CHIP_DECLARATIONS],\n declarations: CHIP_DECLARATIONS,\n providers: [\n ErrorStateMatcher,\n {\n provide: MAT_CHIPS_DEFAULT_OPTIONS,\n useValue: {\n separatorKeyCodes: [ENTER],\n } as MatChipsDefaultOptions,\n },\n ],\n})\nexport class MatChipsModule {}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nexport * from './chip';\nexport * from './chip-option';\nexport * from './chip-row';\nexport * from './chip-set';\nexport * from './chip-listbox';\nexport * from './chip-grid';\nexport * from './module';\nexport * from './chip-input';\nexport * from './chip-default-options';\nexport * from './chip-icons';\nexport * from './chip-text-control';\nexport * from './chip-edit-input';\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nexport * from './public-api';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["uid"],"mappings":"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"}
|