@angular/material
Version:
Angular Material
1 lines • 159 kB
Source Map (JSON)
{"version":3,"file":"chips.mjs","sources":["../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/material/chips/tokens.ts","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/material/chips/chip-action.ts","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/material/chips/chip-icons.ts","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/material/chips/chip.ts","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/material/chips/chip.html","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/material/chips/chip-option.ts","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/material/chips/chip-option.html","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/material/chips/chip-edit-input.ts","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/material/chips/chip-row.ts","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/material/chips/chip-row.html","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/material/chips/chip-set.ts","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/material/chips/chip-listbox.ts","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/material/chips/chip-grid.ts","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/material/chips/chip-input.ts","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/material/chips/chips-module.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.dev/license\n */\n\nimport {ENTER, ModifierKey} from '@angular/cdk/keycodes';\nimport {InjectionToken} from '@angular/core';\nimport type {MatChip} from './chip';\n\n/** Key that can be used as a separator between chips. */\nexport interface SeparatorKey {\n keyCode: number;\n modifiers: readonly ModifierKey[];\n}\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 | SeparatorKey)[] | ReadonlySet<number | SeparatorKey>;\n\n /** Whether icon indicators should be hidden for single-selection. */\n hideSingleSelectionIndicator?: boolean;\n\n /** Whether the chip input should be interactive while disabled by default. */\n inputDisabledInteractive?: boolean;\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 providedIn: 'root',\n factory: () => ({\n separatorKeyCodes: [ENTER],\n }),\n },\n);\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');\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\n/**\n * Injection token that can be used to reference instances of `MatChipEdit`. It serves as\n * alternative token to the actual `MatChipEdit` class which could cause unnecessary\n * retention of the class and its directive metadata.\n */\nexport const MAT_CHIP_EDIT = new InjectionToken('MatChipEdit');\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');\n\n/**\n * Injection token used to avoid a circular dependency between the `MatChip` and `MatChipAction`.\n */\nexport const MAT_CHIP = new InjectionToken<MatChip>('MatChip');\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.dev/license\n */\n\nimport {\n Directive,\n ElementRef,\n Input,\n booleanAttribute,\n numberAttribute,\n inject,\n} from '@angular/core';\nimport {ENTER, SPACE} from '@angular/cdk/keycodes';\nimport {MAT_CHIP} from './tokens';\nimport {_CdkPrivateStyleLoader} from '@angular/cdk/private';\nimport {_StructuralStylesLoader} from '../core';\n\n/**\n * A non-interactive section of a chip.\n * @docs-private\n */\n@Directive({\n selector: '[matChipContent]',\n host: {\n 'class':\n 'mat-mdc-chip-action mdc-evolution-chip__action mdc-evolution-chip__action--presentational',\n '[class.mdc-evolution-chip__action--primary]': '_isPrimary',\n '[class.mdc-evolution-chip__action--secondary]': '!_isPrimary',\n '[class.mdc-evolution-chip__action--trailing]': '!_isPrimary && !_isLeading',\n '[attr.disabled]': '_getDisabledAttribute()',\n '[attr.aria-disabled]': 'disabled',\n },\n})\nexport class MatChipContent {\n _elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n protected _parentChip = inject<{\n _handlePrimaryActionInteraction(): void;\n remove(): void;\n disabled: boolean;\n _edit(event: Event): void;\n _isEditing?: boolean;\n }>(MAT_CHIP);\n\n /** Whether this is the primary action in the chip. */\n _isPrimary = true;\n\n /** Whether this is the leading action in the chip. */\n _isLeading = false; // TODO(adolgachev): consolidate usage to secondary css class\n\n /** Whether the action is disabled. */\n @Input({transform: booleanAttribute})\n get disabled(): boolean {\n return this._disabled || this._parentChip?.disabled || false;\n }\n set disabled(value: boolean) {\n this._disabled = value;\n }\n private _disabled = false;\n\n /** Tab index of the action. */\n @Input({\n transform: (value: unknown) => (value == null ? -1 : numberAttribute(value)),\n })\n tabIndex: number = -1;\n\n /**\n * Private API to allow focusing this chip when it is disabled.\n */\n @Input()\n _allowFocusWhenDisabled = false;\n\n /**\n * Determine the value of the disabled attribute for this chip action.\n */\n protected _getDisabledAttribute(): string | null {\n // When this chip action is disabled and focusing disabled chips is not permitted, return empty\n // string to indicate that disabled attribute should be included.\n return this.disabled && !this._allowFocusWhenDisabled ? '' : null;\n }\n\n constructor() {\n inject(_CdkPrivateStyleLoader).load(_StructuralStylesLoader);\n if (this._elementRef.nativeElement.nodeName === 'BUTTON') {\n this._elementRef.nativeElement.setAttribute('type', 'button');\n }\n }\n\n focus() {\n this._elementRef.nativeElement.focus();\n }\n}\n\n/**\n * Interactive section of a chip.\n * @docs-private\n */\n@Directive({\n selector: '[matChipAction]',\n host: {\n '[attr.tabindex]': '_getTabindex()',\n '[class.mdc-evolution-chip__action--presentational]': 'false',\n '(click)': '_handleClick($event)',\n '(keydown)': '_handleKeydown($event)',\n },\n})\nexport class MatChipAction extends MatChipContent {\n /**\n * Determine the value of the tabindex attribute for this chip action.\n */\n protected _getTabindex(): string | null {\n return this.disabled && !this._allowFocusWhenDisabled ? null : this.tabIndex.toString();\n }\n\n _handleClick(event: MouseEvent) {\n if (!this.disabled && this._isPrimary) {\n event.preventDefault();\n this._parentChip._handlePrimaryActionInteraction();\n }\n }\n\n _handleKeydown(event: KeyboardEvent) {\n if (\n (event.keyCode === ENTER || event.keyCode === SPACE) &&\n !this.disabled &&\n this._isPrimary &&\n !this._parentChip._isEditing\n ) {\n event.preventDefault();\n this._parentChip._handlePrimaryActionInteraction();\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.dev/license\n */\n\nimport {ENTER, SPACE} from '@angular/cdk/keycodes';\nimport {Directive} from '@angular/core';\nimport {MatChipAction, MatChipContent} from './chip-action';\nimport {MAT_CHIP_AVATAR, MAT_CHIP_EDIT, MAT_CHIP_REMOVE, MAT_CHIP_TRAILING_ICON} from './tokens';\n\n/** Avatar image within a chip. */\n@Directive({\n selector: 'mat-chip-avatar, [matChipAvatar]',\n host: {\n 'class': 'mat-mdc-chip-avatar mdc-evolution-chip__icon mdc-evolution-chip__icon--primary',\n 'role': 'img',\n },\n providers: [{provide: MAT_CHIP_AVATAR, useExisting: MatChipAvatar}],\n})\nexport class MatChipAvatar {}\n\n/** Non-interactive trailing icon in a chip. */\n@Directive({\n selector: 'mat-chip-trailing-icon, [matChipTrailingIcon]',\n host: {\n 'class':\n 'mat-mdc-chip-trailing-icon mdc-evolution-chip__icon mdc-evolution-chip__icon--trailing',\n 'aria-hidden': 'true',\n },\n providers: [{provide: MAT_CHIP_TRAILING_ICON, useExisting: MatChipTrailingIcon}],\n})\nexport class MatChipTrailingIcon extends MatChipContent {\n override _isPrimary = false;\n}\n\n/**\n * Directive to edit the parent chip when the leading action icon is clicked or\n * when the ENTER key is pressed on it.\n *\n * Recommended for use with the Material Design \"edit\" icon\n * available at https://material.io/icons/#ic_edit.\n *\n * Example:\n *\n * ```\n * <mat-chip>\n * <button matChipEdit aria-label=\"Edit\">\n * <mat-icon>edit</mat-icon>\n * </button>\n * </mat-chip>\n * ```\n */\n\n@Directive({\n selector: '[matChipEdit]',\n host: {\n 'class':\n 'mat-mdc-chip-edit mat-mdc-chip-avatar mat-focus-indicator ' +\n 'mdc-evolution-chip__icon mdc-evolution-chip__icon--primary',\n 'role': 'button',\n '[attr.aria-hidden]': 'null',\n },\n providers: [{provide: MAT_CHIP_EDIT, useExisting: MatChipEdit}],\n})\nexport class MatChipEdit extends MatChipAction {\n override _isPrimary = false;\n override _isLeading = true;\n\n override _handleClick(event: MouseEvent): void {\n if (!this.disabled) {\n event.stopPropagation();\n event.preventDefault();\n this._parentChip._edit(event);\n }\n }\n\n override _handleKeydown(event: KeyboardEvent) {\n if ((event.keyCode === ENTER || event.keyCode === SPACE) && !this.disabled) {\n event.stopPropagation();\n event.preventDefault();\n this._parentChip._edit(event);\n }\n }\n}\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\n@Directive({\n selector: '[matChipRemove]',\n host: {\n 'class':\n 'mat-mdc-chip-remove mat-mdc-chip-trailing-icon mat-focus-indicator ' +\n 'mdc-evolution-chip__icon mdc-evolution-chip__icon--trailing',\n 'role': 'button',\n '[attr.aria-hidden]': 'null',\n },\n providers: [{provide: MAT_CHIP_REMOVE, useExisting: MatChipRemove}],\n})\nexport class MatChipRemove extends MatChipAction {\n override _isPrimary = false;\n\n override _handleClick(event: MouseEvent): void {\n if (!this.disabled) {\n event.stopPropagation();\n event.preventDefault();\n this._parentChip.remove();\n }\n }\n\n override _handleKeydown(event: KeyboardEvent) {\n if ((event.keyCode === ENTER || event.keyCode === SPACE) && !this.disabled) {\n event.stopPropagation();\n event.preventDefault();\n this._parentChip.remove();\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.dev/license\n */\n\nimport {FocusMonitor, _IdGenerator} from '@angular/cdk/a11y';\nimport {BACKSPACE, DELETE} from '@angular/cdk/keycodes';\nimport {_CdkPrivateStyleLoader, _VisuallyHiddenLoader} from '@angular/cdk/private';\n\nimport {\n AfterContentInit,\n AfterViewInit,\n ChangeDetectorRef,\n Component,\n ContentChild,\n ContentChildren,\n DoCheck,\n ElementRef,\n EventEmitter,\n HOST_TAG_NAME,\n Injector,\n Input,\n NgZone,\n OnDestroy,\n OnInit,\n Output,\n QueryList,\n ViewChild,\n ViewEncapsulation,\n booleanAttribute,\n inject,\n DOCUMENT,\n} from '@angular/core';\nimport {\n MAT_RIPPLE_GLOBAL_OPTIONS,\n MatRippleLoader,\n RippleGlobalOptions,\n _StructuralStylesLoader,\n _animationsDisabled,\n} from '../core';\nimport {Subject, Subscription, merge} from 'rxjs';\nimport {MatChipAction, MatChipContent} from './chip-action';\nimport {MatChipAvatar, MatChipEdit, MatChipRemove, MatChipTrailingIcon} from './chip-icons';\nimport {\n MAT_CHIP,\n MAT_CHIP_AVATAR,\n MAT_CHIP_EDIT,\n MAT_CHIP_REMOVE,\n MAT_CHIP_TRAILING_ICON,\n} from './tokens';\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 * 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-basic-chip], mat-chip, [mat-chip]',\n exportAs: 'matChip',\n templateUrl: 'chip.html',\n styleUrl: 'chip.css',\n host: {\n 'class': 'mat-mdc-chip',\n '[class]': '\"mat-\" + (color || \"primary\")',\n '[class.mdc-evolution-chip]': '!_isBasicChip',\n '[class.mdc-evolution-chip--disabled]': 'disabled',\n '[class.mdc-evolution-chip--with-trailing-action]': '_hasTrailingIcon()',\n '[class.mdc-evolution-chip--with-primary-graphic]': 'leadingIcon',\n '[class.mdc-evolution-chip--with-primary-icon]': 'leadingIcon',\n '[class.mdc-evolution-chip--with-avatar]': 'leadingIcon',\n '[class.mat-mdc-chip-with-avatar]': 'leadingIcon',\n '[class.mat-mdc-chip-highlighted]': 'highlighted',\n '[class.mat-mdc-chip-disabled]': 'disabled',\n '[class.mat-mdc-basic-chip]': '_isBasicChip',\n '[class.mat-mdc-standard-chip]': '!_isBasicChip',\n '[class.mat-mdc-chip-with-trailing-icon]': '_hasTrailingIcon()',\n '[class._mat-animation-noopable]': '_animationsDisabled',\n '[id]': 'id',\n '[attr.role]': 'role',\n '[attr.aria-label]': 'ariaLabel',\n '(keydown)': '_handleKeydown($event)',\n },\n encapsulation: ViewEncapsulation.None,\n providers: [{provide: MAT_CHIP, useExisting: MatChip}],\n imports: [MatChipContent],\n})\nexport class MatChip implements OnInit, AfterViewInit, AfterContentInit, DoCheck, OnDestroy {\n _changeDetectorRef = inject(ChangeDetectorRef);\n _elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n private readonly _tagName = inject(HOST_TAG_NAME);\n protected _ngZone = inject(NgZone);\n private _focusMonitor = inject(FocusMonitor);\n private _globalRippleOptions = inject<RippleGlobalOptions>(MAT_RIPPLE_GLOBAL_OPTIONS, {\n optional: true,\n });\n\n protected _document = inject(DOCUMENT);\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 /** Whether this chip is a basic (unstyled) chip. */\n _isBasicChip = false;\n\n /** Role for the root of the chip. */\n @Input() role: string | null = null;\n\n /** Whether the chip has focus. */\n private _hasFocusInternal = false;\n\n /** Whether moving focus into the chip is pending. */\n private _pendingFocus: boolean = false;\n\n /** Subscription to changes in the chip's actions. */\n private _actionChanges: Subscription | undefined;\n\n /** Whether animations for the chip are enabled. */\n _animationsDisabled = _animationsDisabled();\n\n /** All avatars present in the chip. */\n @ContentChildren(MAT_CHIP_AVATAR, {descendants: true})\n protected _allLeadingIcons!: QueryList<MatChipAvatar>;\n\n /** All trailing icons present in the chip. */\n @ContentChildren(MAT_CHIP_TRAILING_ICON, {descendants: true})\n protected _allTrailingIcons!: QueryList<MatChipTrailingIcon>;\n\n /** All edit icons present in the chip. */\n @ContentChildren(MAT_CHIP_EDIT, {descendants: true})\n protected _allEditIcons!: QueryList<MatChipEdit>;\n\n /** All remove icons present in the chip. */\n @ContentChildren(MAT_CHIP_REMOVE, {descendants: true})\n protected _allRemoveIcons!: QueryList<MatChipRemove>;\n\n _hasFocus() {\n return this._hasFocusInternal;\n }\n\n /** A unique id for the chip. If none is supplied, it will be auto-generated. */\n @Input() id: string = inject(_IdGenerator).getId('mat-mdc-chip-');\n\n // TODO(#26104): Consider deprecating and using `_computeAriaAccessibleName` instead.\n // `ariaLabel` may be unnecessary, and `_computeAriaAccessibleName` only supports\n // datepicker's use case.\n /** ARIA label for the content of the chip. */\n @Input('aria-label') ariaLabel: string | null = null;\n\n // TODO(#26104): Consider deprecating and using `_computeAriaAccessibleName` instead.\n // `ariaDescription` may be unnecessary, and `_computeAriaAccessibleName` only supports\n // datepicker's use case.\n /** ARIA description for the content of the chip. */\n @Input('aria-description') ariaDescription: string | null = null;\n\n /** Whether the chip list is disabled. */\n _chipListDisabled: boolean = false;\n\n /** Whether the chip was focused when it was removed. */\n _hadFocusOnRemove = false;\n\n private _textElement!: HTMLElement;\n\n /**\n * The value of the chip. Defaults to the content inside\n * the `mat-mdc-chip-action-label` element.\n */\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 // TODO: should be typed as `ThemePalette` but internal apps pass in arbitrary strings.\n /**\n * Theme color of the chip. This API is supported in M2 themes only, it has no\n * effect in M3 themes. For color customization in M3, see https://material.angular.dev/components/chips/styling.\n *\n * For information on applying color variants in M3, see\n * https://material.angular.dev/guide/material-2-theming#optional-add-backwards-compatibility-styles-for-color-variants\n */\n @Input() color?: string | null;\n\n /**\n * Determines whether or not the chip displays the remove styling and emits (removed) events.\n */\n @Input({transform: booleanAttribute})\n removable: boolean = true;\n\n /**\n * Colors the chip for emphasis as if it were selected.\n */\n @Input({transform: booleanAttribute})\n highlighted: boolean = false;\n\n /** Whether the ripple effect is disabled or not. */\n @Input({transform: booleanAttribute})\n disableRipple: boolean = false;\n\n /** Whether the chip is disabled. */\n @Input({transform: booleanAttribute})\n get disabled(): boolean {\n return this._disabled || this._chipListDisabled;\n }\n set disabled(value: boolean) {\n this._disabled = value;\n }\n private _disabled = false;\n\n /** Emitted when a chip is to be removed. */\n @Output() readonly removed: EventEmitter<MatChipEvent> = new EventEmitter<MatChipEvent>();\n\n /** Emitted when the chip is destroyed. */\n @Output() readonly destroyed: EventEmitter<MatChipEvent> = new EventEmitter<MatChipEvent>();\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 leading edit icon. */\n @ContentChild(MAT_CHIP_EDIT) editIcon!: MatChipEdit;\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 /** Action receiving the primary set of user interactions. */\n @ViewChild(MatChipAction) primaryAction!: MatChipAction;\n\n /**\n * Handles the lazy creation of the MatChip ripple.\n * Used to improve initial load time of large applications.\n */\n private _rippleLoader: MatRippleLoader = inject(MatRippleLoader);\n\n protected _injector = inject(Injector);\n\n constructor() {\n const styleLoader = inject(_CdkPrivateStyleLoader);\n styleLoader.load(_StructuralStylesLoader);\n styleLoader.load(_VisuallyHiddenLoader);\n this._monitorFocus();\n\n this._rippleLoader?.configureRipple(this._elementRef.nativeElement, {\n className: 'mat-mdc-chip-ripple',\n disabled: this._isRippleDisabled(),\n });\n }\n\n ngOnInit() {\n // This check needs to happen in `ngOnInit` so the overridden value of\n // `basicChipAttrName` coming from base classes can be picked up.\n this._isBasicChip =\n this._elementRef.nativeElement.hasAttribute(this.basicChipAttrName) ||\n this._tagName.toLowerCase() === this.basicChipAttrName;\n }\n\n ngAfterViewInit() {\n this._textElement = this._elementRef.nativeElement.querySelector('.mat-mdc-chip-action-label')!;\n\n if (this._pendingFocus) {\n this._pendingFocus = false;\n this.focus();\n }\n }\n\n ngAfterContentInit(): void {\n // Since the styling depends on the presence of some\n // actions, we have to mark for check on changes.\n this._actionChanges = merge(\n this._allLeadingIcons.changes,\n this._allTrailingIcons.changes,\n this._allEditIcons.changes,\n this._allRemoveIcons.changes,\n ).subscribe(() => this._changeDetectorRef.markForCheck());\n }\n\n ngDoCheck(): void {\n this._rippleLoader.setDisabled(this._elementRef.nativeElement, this._isRippleDisabled());\n }\n\n ngOnDestroy() {\n this.destroyed.emit({chip: this});\n this.destroyed.complete();\n this._focusMonitor.stopMonitoring(this._elementRef);\n this._rippleLoader?.destroyRipple(this._elementRef.nativeElement);\n this._actionChanges?.unsubscribe();\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._hadFocusOnRemove = this._hasFocus();\n this.removed.emit({chip: this});\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._hasInteractiveActions() ||\n !!this._globalRippleOptions?.disabled\n );\n }\n\n /** Returns whether the chip has a trailing icon. */\n _hasTrailingIcon() {\n return !!(this.trailingIcon || this.removeIcon);\n }\n\n /** Handles keyboard events on the chip. */\n _handleKeydown(event: KeyboardEvent) {\n // Ignore backspace events where the user is holding down the key\n // so that we don't accidentally remove too many chips.\n if ((event.keyCode === BACKSPACE && !event.repeat) || event.keyCode === DELETE) {\n event.preventDefault();\n this.remove();\n }\n }\n\n /** Allows for programmatic focusing of the chip. */\n focus(): void {\n if (!this.disabled) {\n // If `focus` is called before `ngAfterViewInit`, we won't have access to the primary action.\n // This can happen if the consumer tries to focus a chip immediately after it is added.\n // Queue the method to be called again on init.\n if (this.primaryAction) {\n this.primaryAction.focus();\n } else {\n this._pendingFocus = true;\n }\n }\n }\n\n /** Gets the action that contains a specific target node. */\n _getSourceAction(target: Node): MatChipAction | undefined {\n return this._getActions().find(action => {\n const element = action._elementRef.nativeElement;\n return element === target || element.contains(target);\n });\n }\n\n /** Gets all of the actions within the chip. */\n _getActions(): MatChipAction[] {\n const result: MatChipAction[] = [];\n\n if (this.editIcon) {\n result.push(this.editIcon);\n }\n\n if (this.primaryAction) {\n result.push(this.primaryAction);\n }\n\n if (this.removeIcon) {\n result.push(this.removeIcon);\n }\n\n return result;\n }\n\n /** Handles interactions with the primary action of the chip. */\n _handlePrimaryActionInteraction() {\n // Empty here, but is overwritten in child classes.\n }\n\n /** Returns whether the chip has any interactive actions. */\n _hasInteractiveActions(): boolean {\n return this._getActions().length > 0;\n }\n\n /** Handles interactions with the edit action of the chip. */\n _edit(event: Event) {\n // Empty here, but is overwritten in child classes.\n }\n\n /** Starts the focus monitoring process on the chip. */\n private _monitorFocus() {\n this._focusMonitor.monitor(this._elementRef, true).subscribe(origin => {\n const hasFocus = origin !== null;\n\n if (hasFocus !== this._hasFocusInternal) {\n this._hasFocusInternal = hasFocus;\n\n if (hasFocus) {\n this._onFocus.next({chip: this});\n } else {\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 to the next item. To work around the issue, we defer marking the chip\n // as not focused until after the next render.\n this._changeDetectorRef.markForCheck();\n setTimeout(() => this._ngZone.run(() => this._onBlur.next({chip: this})));\n }\n }\n });\n }\n}\n","<span class=\"mat-mdc-chip-focus-overlay\"></span>\n\n<span class=\"mdc-evolution-chip__cell mdc-evolution-chip__cell--primary\">\n <span matChipContent>\n @if (leadingIcon) {\n <span class=\"mdc-evolution-chip__graphic mat-mdc-chip-graphic\">\n <ng-content select=\"mat-chip-avatar, [matChipAvatar]\"></ng-content>\n </span>\n }\n <span class=\"mdc-evolution-chip__text-label mat-mdc-chip-action-label\">\n <ng-content></ng-content>\n <span class=\"mat-mdc-chip-primary-focus-indicator mat-focus-indicator\"></span>\n </span>\n </span>\n</span>\n\n@if (_hasTrailingIcon()) {\n <span class=\"mdc-evolution-chip__cell mdc-evolution-chip__cell--trailing\">\n <ng-content select=\"mat-chip-trailing-icon,[matChipRemove],[matChipTrailingIcon]\"></ng-content>\n </span>\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.dev/license\n */\n\nimport {\n Component,\n EventEmitter,\n Input,\n Output,\n ViewEncapsulation,\n OnInit,\n inject,\n booleanAttribute,\n} from '@angular/core';\nimport {MatChip} from './chip';\nimport {MAT_CHIP, MAT_CHIPS_DEFAULT_OPTIONS} from './tokens';\nimport {MatChipAction} from './chip-action';\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. Used with MatChipListbox.\n *\n * Unlike other chips, the user can focus on disabled chip options inside a MatChipListbox. The\n * user cannot click disabled chips.\n */\n@Component({\n selector: 'mat-basic-chip-option, [mat-basic-chip-option], mat-chip-option, [mat-chip-option]',\n templateUrl: 'chip-option.html',\n styleUrl: 'chip.css',\n host: {\n 'class': 'mat-mdc-chip mat-mdc-chip-option',\n '[class.mdc-evolution-chip]': '!_isBasicChip',\n '[class.mdc-evolution-chip--filter]': '!_isBasicChip',\n '[class.mdc-evolution-chip--selectable]': '!_isBasicChip',\n '[class.mat-mdc-chip-selected]': 'selected',\n '[class.mat-mdc-chip-multiple]': '_chipListMultiple',\n '[class.mat-mdc-chip-disabled]': 'disabled',\n '[class.mat-mdc-chip-with-avatar]': 'leadingIcon',\n '[class.mdc-evolution-chip--disabled]': 'disabled',\n '[class.mdc-evolution-chip--selected]': 'selected',\n // This class enables the transition on the checkmark. Usually MDC adds it when selection\n // starts and removes it once the animation is finished. We don't need to go through all\n // the trouble, because we only care about the selection animation. MDC needs to do it,\n // because they also have an exit animation that we don't care about.\n '[class.mdc-evolution-chip--selecting]': '!_animationsDisabled',\n '[class.mdc-evolution-chip--with-trailing-action]': '_hasTrailingIcon()',\n '[class.mdc-evolution-chip--with-primary-icon]': 'leadingIcon',\n '[class.mdc-evolution-chip--with-primary-graphic]': '_hasLeadingGraphic()',\n '[class.mdc-evolution-chip--with-avatar]': 'leadingIcon',\n '[class.mat-mdc-chip-highlighted]': 'highlighted',\n '[class.mat-mdc-chip-with-trailing-icon]': '_hasTrailingIcon()',\n '[attr.tabindex]': 'null',\n '[attr.aria-label]': 'null',\n '[attr.aria-description]': 'null',\n '[attr.role]': 'role',\n '[id]': 'id',\n },\n providers: [\n {provide: MatChip, useExisting: MatChipOption},\n {provide: MAT_CHIP, useExisting: MatChipOption},\n ],\n encapsulation: ViewEncapsulation.None,\n imports: [MatChipAction],\n})\nexport class MatChipOption extends MatChip implements OnInit {\n /** Default chip options. */\n private _defaultOptions = inject(MAT_CHIPS_DEFAULT_OPTIONS, {optional: true});\n\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 /** Whether the chip list hides single-selection indicator. */\n _chipListHideSingleSelectionIndicator: boolean =\n this._defaultOptions?.hideSingleSelectionIndicator ?? 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({transform: booleanAttribute})\n get selectable(): boolean {\n return this._selectable && this.chipListSelectable;\n }\n set selectable(value: boolean) {\n this._selectable = value;\n this._changeDetectorRef.markForCheck();\n }\n protected _selectable: boolean = true;\n\n /** Whether the chip is selected. */\n @Input({transform: booleanAttribute})\n get selected(): boolean {\n return this._selected;\n }\n set selected(value: boolean) {\n this._setSelectedState(value, false, true);\n }\n private _selected = false;\n\n /**\n * The ARIA selected applied to the chip. Conforms to WAI ARIA best practices for listbox\n * interaction patterns.\n *\n * From [WAI ARIA Listbox authoring practices guide](\n * https://www.w3.org/WAI/ARIA/apg/patterns/listbox/):\n * \"If any options are selected, each selected option has either aria-selected or aria-checked\n * set to true. All options that are selectable but not selected have either aria-selected or\n * aria-checked set to false.\"\n *\n * Set `aria-selected=\"false\"` on not-selected listbox options that are selectable to fix\n * VoiceOver reading every option as \"selected\" (#25736).\n */\n get ariaSelected(): string | null {\n return this.selectable ? this.selected.toString() : 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 ngOnInit() {\n super.ngOnInit();\n this.role = 'presentation';\n }\n\n /** Selects the chip. */\n select(): void {\n this._setSelectedState(true, false, true);\n }\n\n /** Deselects the chip. */\n deselect(): void {\n this._setSelectedState(false, false, true);\n }\n\n /** Selects this chip and emits userInputSelection event */\n selectViaInteraction(): void {\n this._setSelectedState(true, true, true);\n }\n\n /** Toggles the current selected state of this chip. */\n toggleSelected(isUserInput: boolean = false): boolean {\n this._setSelectedState(!this.selected, isUserInput, true);\n return this.selected;\n }\n\n override _handlePrimaryActionInteraction() {\n if (!this.disabled) {\n // Interacting with the primary action implies that the chip already has focus, however\n // there's a bug in Safari where focus ends up lingering on the previous chip (see #27544).\n // We work around it by explicitly focusing the primary action of the current chip.\n this.focus();\n\n if (this.selectable) {\n this.toggleSelected(true);\n }\n }\n }\n\n _hasLeadingGraphic() {\n if (this.leadingIcon) {\n return true;\n }\n\n // The checkmark graphic communicates selected state for both single-select and multi-select.\n // Include checkmark in single-select to fix a11y issue where selected state is communicated\n // visually only using color (#25886).\n return !this._chipListHideSingleSelectionIndicator || this._chipListMultiple;\n }\n\n _setSelectedState(isSelected: boolean, isUserInput: boolean, emitEvent: boolean) {\n if (isSelected !== this.selected) {\n this._selected = isSelected;\n\n if (emitEvent) {\n this.selectionChange.emit({\n source: this,\n isUserInput,\n selected: this.selected,\n });\n }\n\n this._changeDetectorRef.markForCheck();\n }\n }\n}\n","<span class=\"mat-mdc-chip-focus-overlay\"></span>\n\n<span class=\"mdc-evolution-chip__cell mdc-evolution-chip__cell--primary\" role=\"presentation\">\n <button\n matChipAction\n [_allowFocusWhenDisabled]=\"true\"\n [attr.aria-description]=\"ariaDescription\"\n [attr.aria-label]=\"ariaLabel\"\n [attr.aria-selected]=\"ariaSelected\"\n role=\"option\">\n @if (_hasLeadingGraphic()) {\n <span class=\"mdc-evolution-chip__graphic mat-mdc-chip-graphic\">\n <ng-content select=\"mat-chip-avatar, [matChipAvatar]\"></ng-content>\n <span class=\"mdc-evolution-chip__checkmark\">\n <svg\n class=\"mdc-evolution-chip__checkmark-svg\"\n viewBox=\"-2 -3 30 30\"\n focusable=\"false\"\n aria-hidden=\"true\">\n <path class=\"mdc-evolution-chip__checkmark-path\"\n fill=\"none\" stroke=\"currentColor\" d=\"M1.73,12.91 8.1,19.28 22.79,4.59\" />\n </svg>\n </span>\n </span>\n }\n <span class=\"mdc-evolution-chip__text-label mat-mdc-chip-action-label\">\n <ng-content></ng-content>\n <span class=\"mat-mdc-chip-primary-focus-indicator mat-focus-indicator\"></span>\n </span>\n </button>\n</span>\n\n@if (_hasTrailingIcon()) {\n <span class=\"mdc-evolution-chip__cell mdc-evolution-chip__cell--trailing\" role=\"presentation\">\n <ng-content select=\"mat-chip-trailing-icon,[matChipRemove],[matChipTrailingIcon]\"></ng-content>\n </span>\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.dev/license\n */\n\nimport {Directive, ElementRef, inject, DOCUMENT} from '@angular/core';\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': 'mat-chip-edit-input',\n 'role': 'textbox',\n 'tabindex': '-1',\n 'contenteditable': 'true',\n },\n})\nexport class MatChipEditInput {\n private readonly _elementRef = inject(ElementRef);\n private readonly _document = inject(DOCUMENT);\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().textContent = 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.dev/license\n */\n\nimport {ENTER} from '@angular/cdk/keycodes';\nimport {\n AfterViewInit,\n Component,\n ContentChild,\n EventEmitter,\n Input,\n OnDestroy,\n Output,\n Renderer2,\n ViewChild,\n ViewEncapsulation,\n afterNextRender,\n inject,\n} from '@angular/core';\nimport {takeUntil} from 'rxjs/operators';\nimport {MatChip, MatChipEvent} from './chip';\nimport {MatChipAction} from './chip-action';\nimport {MatChipEditInput} from './chip-edit-input';\nimport {MAT_CHIP} from './tokens';\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-chip-row], mat-basic-chip-row, [mat-basic-chip-row]',\n templateUrl: 'chip-row.html',\n styleUrl: 'chip.css',\n host: {\n 'class': 'mat-mdc-chip mat-mdc-chip-row mdc-evolution-chip',\n '[class.mat-mdc-chip-with-avatar]': 'leadingIcon',\n '[class.mat-mdc-chip-disabled]': 'disabled',\n '[class.mat-mdc-chip-editing]': '_isEditing',\n '[class.mat-mdc-chip-editable]': 'editable',\n '[class.mdc-evolution-chip--disabled]': 'disabled',\n '[class.mdc-evolution-chip--with-leading-action]': '_hasLeadingActionIcon()',\n '[class.mdc-evolution-chip--with-trailing-action]': '_hasTrailingIcon()',\n '[class.mdc-evolution-chip--with-primary-graphic]': 'leadingIcon',\n '[class.mdc-evolution-chip--with-primary-icon]': 'leadingIcon',\n '[class.mdc-evolution-chip--with-avatar]': 'leadingIcon',\n '[class.mat-mdc-chip-highlighted]': 'highlighted',\n '[class.mat-mdc-chip-with-trailing-icon]': '_hasTrailingIcon()',\n '[id]': 'id',\n // Has to have a negative tabindex in order to capture\n // focus and redirect it to the primary action.\n '[attr.tabindex]': 'disabled ? null : -1',\n '[attr.aria-label]': 'null',\n '[attr.aria-description]': 'null',\n '[attr.role]': 'role',\n '(focus)': '_handleFocus()',\n '(click)': 'this._hasInteractiveActions() ? _handleClick($event) : null',\n '(dblclick)': '_handleDoubleclick($event)',\n },\n providers: [\n {provide: MatChip, useExisting: MatChipRow},\n {provide: MAT_CHIP, useExisting: MatChipRow},\n ],\n encapsulation: ViewEncapsulation.None,\n imports: [MatChipAction, MatChipEditInput],\n})\nexport class MatChipRow extends MatChip implements AfterViewInit, OnDestroy {\n protected override basicChipAttrName = 'mat-basic-chip-row';\n private _renderer = inject(Renderer2);\n private _cleanupMousedown: (() => void) | undefined;\n\n /**\n * The editing action has to be triggered in a timeout. While we're waiting on it, a blur\n * event might occur which will interrupt the editing. This flag is used to avoid interruptions\n * while the editing action is being initialized.\n */\n private _editStartPending = false;\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 /** 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 /**\n * Set on a mousedown when the chip is already focused via mouse or keyboard.\n *\n * This allows us to ensure chip is already focused when deciding whether to enter the\n * edit mode on a subsequent click. Otherwise, the chip appears focused when handling the\n * first click event.\n */\n private _alreadyFocused = false;\n\n _isEditing = false;\n\n constructor() {\n super();\n\n this.role = 'row';\n this._onBlur.pipe(takeUntil(this.destroyed)).subscribe(() => {\n if (this._isEditing && !this._editStartPending) {\n this._onEditFinish();\n }\n this._alreadyFocused = false;\n });\n }\n\n override ngAfterViewInit() {\n super.ngAfterViewInit();\n\n // Sets _alreadyFocused (ahead of click) when chip already has focus.\n this._cleanupMousedown = this._ngZone.runOutsideAngular(() =>\n this._renderer.listen(this._elementRef.nativeElement, 'mousedown', () => {\n this._alreadyFocused = this._hasFocus();\n }),\n );\n }\n\n override ngOnDestroy(): void {\n super.ngOnDestroy();\n this._cleanupMousedown?.();\n }\n\n protected _hasLeadingActionIcon() {\n // The leading action (edit) icon is hidden while editing.\n return !this._isEditing && !!this.editIcon;\n }\n\n override _hasTrailingIcon() {\n // The trailing icon is hidden while editing.\n return !this._isEditing && super._hasTrailingIcon();\n }\n\n /** Sends focus to the first gridcell when the user clicks anywhere inside the chip. */\n _handleFocus() {\n if (!this._isEditing && !this.disabled) {\n this.focus();\n }\n }\n\n override _handleKeydown(event: KeyboardEvent): void {\n if (event.keyCode === ENTER && !this.disabled) {\n if (this._isEditing) {\n event.preventDefault();\n this._onEditFinish();\n } else if (this.editable) {\n this._startEditing(event);\n }\n } else if (this._isEditing) {\n // Stop the event from reaching the chip set in order to avoid navigating.\n event.stopPropagation();\n } else {\n super._handleKeydown(event);\n }\n }\n\n _handleClick(event: MouseEvent) {\n if (!this.disabled && this.editable && !this._isEditing && this._alreadyFocused) {\n // Ensure click event not picked up unintentionally by other listeners, as\n // once editing starts, the source element is detached from DOM.\n event.preventDefault();\n event.stopPropagation();\n this._startEditing(event);\n }\n }\n\n _handleDoubleclick(event: MouseEvent) {\n if (!this.disabled && this.editable) {\n this._startEditing(event);\n }\n }\n\n override _edit(): void {\n // markForCheck necessary for edit input to be rendered\n this._changeDetectorRef.markForCheck();\n this._startEditing();\n }\n\n private _startEditing(event?: Event) {\n if (\n !this.primaryAction ||\n (this.removeIcon &&\n !!event &&\n this._getSourceAction(event.target as Node) === this.removeIcon)\n ) {\n return;\n }\n\n // The value depends on the DOM so we need to extract it before we flip the flag.\n const value = this.value;\n\n this._isEditing = this._editStartPending = true;\n\n // Defer initializing the input until after it has been added to the DOM.\n afterNextRender(\n () => {\n this._getEditInput().initialize(value);\n\n // Necessary when using edit icon to prevent edit from aborting\n setTimeout(() => this._ngZone.run(() => (this._editStartPending = false)));\n },\n {injector: this._injector},\n );\n }\n\n private _onEditFinish() {\n this._isEditing = this._editStartPending = false;\n this.edited.emit({chip: this, value: this._getEditInput().getValue()});\n\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.primaryAction.focus();\n }\n }\n\n override _isRippleDisabled(): boolean {\n return super._isRippleDisabled() || this._isEditing;\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","@if (!_isEditing) {\n <span class=\"mat-mdc-chip-focus-overlay\"></span>\n}\n\n@if (_hasLeadingActionIcon()) {\n <span class=\"mdc-evolution-chip__cell mdc-evolution-chip__cell--leading\" role=\"gridcell\">\n <ng-content select=\"[matChipEdit]\"></ng-content>\n </span>\n}\n<span class=\"mdc-evolution-chip__cell mdc-evolution-chip__cell--primary\" role=\"gridcell\"\n matChipAction\n [disabled]=\"disabled\"\n [attr.aria-description]=\"ariaDescription\"\n [attr.aria-label]=\"ariaLabel\">\n @if (leadingIcon) {\n <span class=\"mdc-evolution-chip__graphic mat-mdc-chip-graphic\">\n <ng-content select=\"mat-chip-avatar, [matChipAvatar]\"></ng-content>\n </span>\n }\n\n <span class=\"mdc-evolution-chip__text-label mat-mdc-chip-action-label\">\n @if (_isEditing) {\n @if (contentEditInput) {\n <ng-content select=\"[matChipEditInput]\"></ng-content>\n } @else {\n <span matChipEditInput></span>\n }\n } @else {\n <ng-content></ng-content>\n }\n\n <span class=\"mat-mdc-chip-primary-focus-indicator mat-focus-indicator\" aria-hidden=\"true\"></span>\n </span>\n</span>\n\n@if (_hasTrailingIcon()) {\n <span\n class=\"mdc-evolution-chip__cell mdc-evolution-chip__cell--trailing\"\n role=\"gridcell\">\n <ng-content select=\"mat-chip-trailing-icon,[matChipRemove],[matChipTrailingIcon]\"></ng-content>\n </span>\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.dev/license\n */\n\nimport {FocusKeyManager} from '@angular/cdk/a11y';\nimport {Directionality} from '@angular/cdk/bidi';\nimport {\n AfterViewInit,\n ChangeDetectorRef,\n Component,\n ContentChildren,\n ElementRef,\n Input,\n OnDestroy,\n QueryList,\n ViewEncapsulation,\n booleanAttribute,\n numberAttribute,\n inject,\n} from '@angular/core';\nimport {Observable, Subject, merge} from 'rxjs';\nimport {startWith, switchMap, takeUntil} from 'rxjs/operators';\nimport {MatChip, MatChipEvent} from './chip';\nimport {MatChipAction, MatChipContent} from './chip-action';\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: `\n <div class=\"mdc-evolution-chip-set__chips\" role=\"presentation\">\n <ng-content></ng-content>\n </div>\n `,\n styleUrl: 'chip-set.css',\n host: {\n 'class': 'mat-mdc-chip-set mdc-evolution-chip-set',\n '(keydown)': '_handleKeydown($event)',\n '[attr.role]': 'role',\n },\n encapsulation: ViewEncapsulation.None,\n})\nexport class MatChipSet implements AfterViewInit, OnDestroy {\n protected _elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n protected _changeDetectorRef = inject(ChangeDetectorRef);\n private _dir = inject(Directionality, {optional: true});\n\n /** Index of the last destroyed chip that had focus. */\n protected _lastDestroyedFocusedChipIndex: number | null = null;\n\n /** Used to manage focus within the chip list. */\n protected _keyManager!: FocusKeyManager<MatChipAction>;\n\n /** Subject that emits when the component has been destroyed. */\n protected _destroyed = new Subject<void>();\n\n /** Role to use if it hasn't been overwritten by the user. */\n protected _defaultRole = 'presentation';\n\n /** Combined stream of all of the child chips' focus events. */\n get chipFocusChanges(): Observable<MatChipEvent> {\n return this._getChipStream(chip => chip._onFocus);\n }\n\n /** Combined stream of all of the child chips' destroy events. */\n get chipDestroyedChanges(): Observable<MatChipEvent> {\n return this._getChipStream(chip => chip.destroyed);\n }\n\n /** Combined stream of all of the child chips' remove events. */\n get chipRemovedChanges(): Observable<MatChipEvent> {\n return this._getChipStream(chip => chip.removed);\n }\n\n /** Whether the chip set is disabled. */\n @Input({transform: booleanAttribute})\n get disabled(): boolean {\n return this._disabled;\n }\n set disabled(value: boolean) {\n this._disabled = 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 || 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._explicitRole) {\n return this._explicitRole;\n }\n\n return this.empty ? null : this._defaultRole;\n }\n\n /** Tabindex of the chip set. */\n @Input({\n transform: (value: unknown) => (value == null ? 0 : numberAttribute(value)),\n })\n tabIndex: number = 0;\n\n set role(value: string | null) {\n this._explicitRole = value;\n }\n private _explicitRole: 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 /** 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 /** Flat list of all the actions contained within the chips. */\n _chipActions = new QueryList<MatChipAction>();\n\n ngAfterViewInit() {\n this._setUpFocusManagement();\n this._trackChipSetChanges();\n this._trackDestroyedFocusedChip();\n }\n\n ngOnDestroy() {\n this._keyManager?.destroy();\n this._chipActions.destroy();\n this._destroyed.next();\n this._destroyed.complete();\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 this._chips?.forEach(chip => {\n chip._chipListDisabled = this._disabled;\n chip._changeDetectorRef.markForCheck();\n });\n }\n\n /** Dummy method for subclasses to override. Base chip set cannot be focused. */\n focus() {}\n\n /** Handles keyboard events on the chip set. */\n _handleKeydown(event: KeyboardEvent) {\n if (this._originatesFromChip(event)) {\n this._keyManager.onKeydown(event);\n }\n }\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 /**\n * Removes the `tabindex` from the chip set and resets it back afterwards, allowing the\n * user to tab out of it. This prevents the set 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 protected _allowFocusEscape() {\n const previous = this._elementRef.nativeElement.tabIndex;\n\n if (previous !== -1) {\n // Set the tabindex directly on the element, instead of going through\n // the data binding, because we aren't guaranteed that change detection\n // will run quickly enough to allow focus to escape.\n this._elementRef.nativeElement.tabIndex = -1;\n\n // Note that this needs to be a `setTimeout`, because a `Promise.resolve`\n // doesn't allow enough time for the focus to escape.\n setTimeout(() => (this._elementRef.nativeElement.tabIndex = previous));\n }\n }\n\n /**\n * Gets a stream of events from all the chips within the set.\n * The stream will automatically incorporate any newly-added chips.\n */\n protected _getChipStream<T, C extends MatChip = MatChip>(\n mappingFunction: (chip: C) => Observable<T>,\n ): Observable<T> {\n return this._chips.changes.pipe(\n startWith(null),\n switchMap(() => merge(...(this._chips as QueryList<C>).map(mappingFunction))),\n );\n }\n\n /** Checks whether an event comes from inside a chip element. */\n protected _originatesFromChip(event: Event): boolean {\n let currentElement = event.target as HTMLElement | null;\n\n while (currentElement && currentElement !== this._elementRef.nativeElement) {\n if (currentElement.classList.contains('mat-mdc-chip')) {\n return true;\n }\n currentElement = currentElement.parentElement;\n }\n return false;\n }\n\n /** Sets up the chip set's focus management logic. */\n private _setUpFocusManagement() {\n // Create a flat `QueryList` containing the actions of all of the chips.\n // This allows us to navigate both within the chip and move to the next/previous\n // one using the existing `ListKeyManager`.\n this._chips.changes.pipe(startWith(this._chips)).subscribe((chips: QueryList<MatChip>) => {\n const actions: MatChipAction[] = [];\n chips.forEach(chip => chip._getActions().forEach(action => actions.push(action)));\n this._chipActions.reset(actions);\n this._chipActions.notifyOnChanges();\n });\n\n this._keyManager = new FocusKeyManager(this._chipActions)\n .withVerticalOrientation()\n .withHorizontalOrientation(this._dir ? this._dir.value : 'ltr')\n .withHomeAndEnd()\n .skipPredicate(action => this._skipPredicate(action));\n\n // Keep the manager active index in sync so that navigation picks\n // up from the current chip if the user clicks into the list directly.\n this.chipFocusChanges.pipe(takeUntil(this._destroyed)).subscribe(({chip}) => {\n const action = chip._getSourceAction(document.activeElement as Element);\n\n if (action) {\n this._keyManager.updateActiveItem(action);\n }\n });\n\n this._dir?.change\n .pipe(takeUntil(this._destroyed))\n .subscribe(direction => this._keyManager.withHorizontalOrientation(direction));\n }\n\n /**\n * Determines if key manager should avoid putting a given chip action in the tab index. Skip\n * non-interactive and disabled actions since the user can't do anything with them.\n */\n protected _skipPredicate(action: MatChipContent): boolean {\n // `mat-chip-set` does not permit focusing disabled chips.\n return action.disabled;\n }\n\n /** Listens to changes in the chip set and syncs up the state of the individual chips. */\n private _trackChipSetChanges() {\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(() => this._syncChipsState());\n }\n\n this._redirectDestroyedChipFocus();\n });\n }\n\n /** Starts tracking the destroyed chips in order to capture the focused one. */\n private _trackDestroyedFocusedChip() {\n this.chipDestroyedChanges.pipe(takeUntil(this._destroyed)).subscribe((event: MatChipEvent) => {\n // If the focused chip is destroyed, save its index so that we can move focus to the next\n // chip. We only save the index here, rather than move the focus immediately, because we want\n // to wait until the chip is removed from the chip list before focusing the next one. This\n // allows us to keep focus on the same index if the chip gets swapped out.\n const chipArray = this._chips.toArray();\n const chipIndex = chipArray.indexOf(event.chip);\n const hasFocus = event.chip._hasFocus();\n const wasLastFocused =\n event.chip._hadFocusOnRemove &&\n this._keyManager.activeItem &&\n event.chip._getActions().includes(this._keyManager.activeItem);\n\n // Note that depending on the timing, the chip might've already lost focus by the\n // time we check this. We need the `wasLastFocused` as a fallback to detect such cases.\n // In `wasLastFocused` we also need to ensure that the chip actually had focus when it was\n // deleted so that we don't steal away the user's focus after they've moved on from the chip.\n const shouldMoveFocus = hasFocus || wasLastFocused;\n\n if (this._isValidIndex(chipIndex) && shouldMoveFocus) {\n this._lastDestroyedFocusedChipIndex = chipIndex;\n }\n });\n }\n\n /**\n * Finds the next appropriate chip to move focus to,\n * if the currently-focused chip is destroyed.\n */\n protected _redirectDestroyedChipFocus() {\n if (this._lastDestroyedFocusedChipIndex == null) {\n return;\n }\n\n if (this._chips.length) {\n const newIndex = Math.min(this._lastDestroyedFocusedChipIndex, this._chips.length - 1);\n const chipToFocus = this._chips.toArray()[newIndex];\n\n if (chipToFocus.disabled) {\n // If we're down to one disabled chip, move focus back to the set.\n if (this._chips.length === 1) {\n this.focus();\n } else {\n this._keyManager.setPreviousItemActive();\n }\n } else {\n chipToFocus.focus();\n }\n } else {\n this.focus();\n }\n\n this._lastDestroyedFocusedChipIndex = null;\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.dev/license\n */\n\nimport {\n AfterContentInit,\n booleanAttribute,\n Component,\n ContentChildren,\n EventEmitter,\n forwardRef,\n inject,\n Input,\n OnDestroy,\n Output,\n QueryList,\n ViewEncapsulation,\n} from '@angular/core';\nimport {ControlValueAccessor, NG_VALUE_ACCESSOR} from '@angular/forms';\nimport {Observable} from 'rxjs';\nimport {startWith, takeUntil} from 'rxjs/operators';\nimport {TAB} from '@angular/cdk/keycodes';\nimport {MatChip, MatChipEvent} from './chip';\nimport {MatChipOption, MatChipSelectionChange} from './chip-option';\nimport {MatChipSet} from './chip-set';\nimport {MatChipAction} from './chip-action';\nimport {MAT_CHIPS_DEFAULT_OPTIONS} from './tokens';\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: `\n <div class=\"mdc-evolution-chip-set__chips\" role=\"presentation\">\n <ng-content></ng-content>\n </div>\n `,\n styleUrl: 'chip-set.css',\n host: {\n 'class': 'mdc-evolution-chip-set mat-mdc-chip-listbox',\n '[attr.role]': 'role',\n '[tabIndex]': '(disabled || empty) ? -1 : tabIndex',\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 },\n providers: [MAT_CHIP_LISTBOX_CONTROL_VALUE_ACCESSOR],\n encapsulation: ViewEncapsulation.None,\n})\nexport class MatChipListbox\n extends MatChipSet\n implements AfterContentInit, OnDestroy, ControlValueAccessor\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 // TODO: MDC uses `grid` here\n protected override _defaultRole = 'listbox';\n\n /** Default chip options. */\n private _defaultOptions = inject(MAT_CHIPS_DEFAULT_OPTIONS, {optional: true});\n\n /** Whether the user should be allowed to select multiple chips. */\n @Input({transform: booleanAttribute})\n get multiple(): boolean {\n return this._multiple;\n }\n set multiple(value: boolean) {\n this._multiple = value;\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({transform: booleanAttribute})\n get selectable(): boolean {\n return this._selectable;\n }\n set selectable(value: boolean) {\n this._selectable = value;\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() compareWith: (o1: any, o2: any) => boolean = (o1: any, o2: any) => o1 === o2;\n\n /** Whether this chip listbox is required. */\n @Input({transform: booleanAttribute})\n required: boolean = false;\n\n /** Whether checkmark indicator for single-selection options is hidden. */\n @Input({transform: booleanAttribute})\n get hideSingleSelectionIndicator(): boolean {\n return this._hideSingleSelectionIndicator;\n }\n set hideSingleSelectionIndicator(value: boolean) {\n this._hideSingleSelectionIndicator = value;\n this._syncListboxProperties();\n }\n private _hideSingleSelectionIndicator: boolean =\n this._defaultOptions?.hideSingleSelectionIndicator ?? false;\n\n /** Combined stream of all of the child chips' selection change events. */\n get chipSelectionChanges(): Observable<MatChipSelectionChange> {\n return this._getChipStream<MatChipSelectionChange, MatChipOption>(chip => chip.selectionChange);\n }\n\n /** Combined stream of all of the child chips' blur events. */\n get chipBlurChanges(): Observable<MatChipEvent> {\n return this._getChipStream(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 if (this._chips && this._chips.length) {\n this._setSelectionByValue(value, false);\n }\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 // We need an initializer here to avoid a TS error. The value will be set in `ngAfterViewInit`.\n override _chips: QueryList<MatChipOption> = undefined!;\n\n ngAfterContentInit() {\n this._chips.changes.pipe(startWith(null), takeUntil(this._destroyed)).subscribe(() => {\n if (this.value !== undefined) {\n Promise.resolve().then(() => {\n this._setSelectionByValue(this.value, false);\n });\n }\n // Update listbox selectable/multiple properties on chips\n this._syncListboxProperties();\n });\n\n this.chipBlurChanges.pipe(takeUntil(this._destroyed)).subscribe(() => this._blur());\n this.chipSelectionChanges.pipe(takeUntil(this._destroyed)).subscribe(event => {\n if (!this.multiple) {\n this._chips.forEach(chip => {\n if (chip !== event.source) {\n chip._setSelectedState(false, false, false);\n }\n });\n }\n\n if (event.isUserInput) {\n this._propagateChanges();\n }\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 && !firstSelectedChip.disabled) {\n firstSelectedChip.focus();\n } else if (this._chips.length > 0) {\n this._keyManager.setFirstItemActive();\n } else {\n this._elementRef.nativeElement.focus();\n }\n }\n\n /**\n * Implemented as part of ControlValueAccessor.\n * @docs-private\n */\n writeValue(value: any): void {\n if (value != null) {\n this.value = value;\n } else {\n this.value = undefined;\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 this._selectValue(value, isUserInput);\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 // Wait to see if focus moves to an individual chip.\n setTimeout(() => {\n if (!this.focused) {\n this._markAsTouched();\n }\n });\n }\n }\n\n _keydown(event: KeyboardEvent) {\n if (event.keyCode === TAB) {\n super._allowFocusEscape();\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(): 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 : undefined;\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 * 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): 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._chipListHideSingleSelectionIndicator = this.hideSingleSelectionIndicator;\n chip._changeDetectorRef.markForCheck();\n });\n });\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 /**\n * Determines if key manager should avoid putting a given chip action in the tab index. Skip\n * non-interactive actions since the user can't do anything with them.\n */\n protected override _skipPredicate(action: MatChipAction): boolean {\n // Override the skip predicate in the base class to avoid skipping disabled chips. Allow\n // disabled chip options to receive focus to align with WAI ARIA recommendation. Normally WAI\n // ARIA's instructions are to exclude disabled items from the tab order, but it makes a few\n // exceptions for compound widgets.\n //\n // From [Developing a Keyboard Interface](\n // https://www.w3.org/WAI/ARIA/apg/practices/keyboard-interface/):\n // \"For the following composite widget elements, keep them focusable when disabled: Options in a\n // Listbox...\"\n return false;\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.dev/license\n */\n\nimport {_IdGenerator} from '@angular/cdk/a11y';\nimport {DOWN_ARROW, hasModifierKey, TAB, UP_ARROW} from '@angular/cdk/keycodes';\nimport {\n AfterContentInit,\n AfterViewInit,\n booleanAttribute,\n Component,\n ContentChildren,\n DoCheck,\n EventEmitter,\n Input,\n OnDestroy,\n Output,\n QueryList,\n ViewEncapsulation,\n inject,\n} from '@angular/core';\nimport {\n ControlValueAccessor,\n FormGroupDirective,\n NgControl,\n NgForm,\n Validators,\n} from '@angular/forms';\nimport {FORM_FIELD} from '@angular/forms/signals';\nimport {_ErrorStateTracker, ErrorStateMatcher} from '../core';\nimport {MatFormFieldControl} from '../form-field';\nimport {merge, Observable, Subject} from 'rxjs';\nimport {takeUntil} from 'rxjs/operators';\nimport {MatChipEvent} from './chip';\nimport {MatChipRow} from './chip-row';\nimport {MatChipSet} from './chip-set';\nimport {MatChipTextControl} from './chip-text-control';\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 * 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: `\n <div class=\"mdc-evolution-chip-set__chips\" role=\"presentation\">\n <ng-content></ng-content>\n </div>\n `,\n styleUrl: 'chip-set.css',\n host: {\n 'class': 'mat-mdc-chip-set mat-mdc-chip-grid mdc-evolution-chip-set',\n '[attr.role]': 'role',\n '[attr.tabindex]': '(disabled || (_chips && _chips.length === 0)) ? -1 : tabIndex',\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 },\n providers: [{provide: MatFormFieldControl, useExisting: MatChipGrid}],\n encapsulation: ViewEncapsulation.None,\n})\nexport class MatChipGrid\n extends MatChipSet\n implements\n AfterContentInit,\n AfterViewInit,\n ControlValueAccessor,\n DoCheck,\n MatFormFieldControl<any>,\n OnDestroy\n{\n ngControl = inject(NgControl, {optional: true, self: true})!;\n\n /**\n * Implemented as part of MatFormFieldControl.\n * @docs-private\n */\n readonly controlType: string = 'mat-chip-grid';\n\n /** The chip input to add more chips */\n protected _chipInput?: MatChipTextControl;\n\n protected override _defaultRole = 'grid';\n private _errorStateTracker: _ErrorStateTracker;\n private _uid = inject(_IdGenerator).getId('mat-chip-grid-');\n\n /**\n * List of element ids to propagate to the chipInput's aria-describedby attribute.\n */\n private _ariaDescribedbyIds: string[] = [];\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 /**\n * Implemented as part of MatFormFieldControl.\n * @docs-private\n */\n @Input({transform: booleanAttribute})\n override get disabled(): boolean {\n return this.ngControl ? !!this.ngControl.disabled : this._disabled;\n }\n override set disabled(value: boolean) {\n this._disabled = value;\n this._syncChipsState();\n this.stateChanges.next();\n }\n\n /**\n * Implemented as part of MatFormFieldControl.\n * @docs-private\n */\n get id(): string {\n return this._chipInput ? this._chipInput.id : this._uid;\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 /**\n * Implemented as part of MatFormFieldControl.\n * @docs-private\n */\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 = '';\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({transform: booleanAttribute})\n get required(): boolean {\n return this._required ?? this.ngControl?.control?.hasValidator(Validators.required) ?? false;\n }\n set required(value: boolean) {\n this._required = 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()\n get errorStateMatcher() {\n return this._errorStateTracker.matcher;\n }\n set errorStateMatcher(value: ErrorStateMatcher) {\n this._errorStateTracker.matcher = value;\n }\n\n /** Combined stream of all of the child chips' blur events. */\n get chipBlurChanges(): Observable<MatChipEvent> {\n return this._getChipStream(chip => chip._onBlur);\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 // We need an initializer here to avoid a TS error. The value will be set in `ngAfterViewInit`.\n override _chips: QueryList<MatChipRow> = undefined!;\n\n /**\n * Emits whenever the component state changes and should cause the parent\n * form-field to update. Implemented as part of `MatFormFieldControl`.\n * @docs-private\n */\n readonly stateChanges = new Subject<void>();\n\n /** Whether the chip grid is in an error state. */\n get errorState() {\n return this._errorStateTracker.errorState;\n }\n set errorState(value: boolean) {\n this._errorStateTracker.errorState = value;\n }\n\n constructor() {\n super();\n\n const parentForm = inject(NgForm, {optional: true});\n const parentFormGroup = inject(FormGroupDirective, {optional: true});\n const defaultErrorStateMatcher = inject(ErrorStateMatcher);\n const formField = inject(FORM_FIELD, {optional: true, self: true});\n\n if (this.ngControl) {\n this.ngControl.valueAccessor = this;\n }\n\n this._errorStateTracker = new _ErrorStateTracker(\n defaultErrorStateMatcher,\n formField || this.ngControl,\n parentFormGroup,\n parentForm,\n this.stateChanges,\n );\n }\n\n ngAfterContentInit() {\n this.chipBlurChanges.pipe(takeUntil(this._destroyed)).subscribe(() => {\n this._blur();\n this.stateChanges.next();\n });\n\n merge(this.chipFocusChanges, this._chips.changes)\n .pipe(takeUntil(this._destroyed))\n .subscribe(() => this.stateChanges.next());\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._chipInput.setDescribedByIds(this._ariaDescribedbyIds);\n\n // If ids were already attached to host element, can now remove in favor of chipInput\n this._elementRef.nativeElement.removeAttribute('aria-describedby');\n }\n\n /**\n * Implemented as part of MatFormFieldControl.\n * @docs-private\n */\n onContainerClick(event: MouseEvent) {\n if (!this.disabled && !this._originatesFromChip(event)) {\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 || this._chips.first.disabled) {\n if (!this._chipInput) {\n return;\n }\n\n // Delay until the next tick, because this can cause a \"changed after checked\"\n // error if the input does something on focus (e.g. opens an autocomplete).\n Promise.resolve().then(() => this._chipInput!.focus());\n } else {\n const activeItem = this._keyManager.activeItem;\n\n if (activeItem) {\n activeItem.focus();\n } else {\n this._keyManager.setFirstItemActive();\n }\n }\n\n this.stateChanges.next();\n }\n\n /**\n * Implemented as part of MatFormFieldControl.\n * @docs-private\n */\n get describedByIds(): string[] {\n if (this._chipInput) {\n return this._chipInput.describedByIds || [];\n }\n const existing = this._elementRef.nativeElement.getAttribute('aria-describedby');\n return existing ? existing.split(' ') : [];\n }\n\n /**\n * Implemented as part of MatFormFieldControl.\n * @docs-private\n */\n setDescribedByIds(ids: string[]) {\n // We must keep this up to date to handle the case where ids are set\n // before the chip input is registered.\n this._ariaDescribedbyIds = ids;\n\n if (this._chipInput) {\n this._chipInput.setDescribedByIds(ids);\n } else if (ids.length) {\n this._elementRef.nativeElement.setAttribute('aria-describedby', ids.join(' '));\n } else {\n this._elementRef.nativeElement.removeAttribute('aria-describedby');\n }\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 /** Refreshes the error state of the chip grid. */\n updateErrorState() {\n this._errorStateTracker.updateErrorState();\n }\n\n /** When blurred, mark the field as touched when focus moved outside the chip grid. */\n _blur() {\n if (!this.disabled) {\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._propagateChanges();\n this._markAsTouched();\n }\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 protected override _allowFocusEscape() {\n if (!this._chipInput?.focused) {\n super._allowFocusEscape();\n }\n }\n\n /** Handles custom keyboard events. */\n override _handleKeydown(event: KeyboardEvent) {\n const keyCode = event.keyCode;\n const activeItem = this._keyManager.activeItem;\n\n if (keyCode === TAB) {\n if (\n this._chipInput?.focused &&\n hasModifierKey(event, 'shiftKey') &&\n this._chips.length &&\n !this._chips.last.disabled\n ) {\n event.preventDefault();\n\n if (activeItem) {\n this._keyManager.setActiveItem(activeItem);\n } else {\n this._focusLastChip();\n }\n } else {\n // Use the super method here since it doesn't check for the input\n // focused state. This allows focus to escape if there's only one\n // disabled chip left in the list.\n super._allowFocusEscape();\n }\n } else if (!this._chipInput?.focused) {\n // The up and down arrows are supposed to navigate between the individual rows in the grid.\n // We do this by filtering the actions down to the ones that have the same `_isPrimary`\n // flag as the active action and moving focus between them ourseles instead of delegating\n // to the key manager. For more information, see #29359 and:\n // https://www.w3.org/WAI/ARIA/apg/patterns/grid/examples/layout-grids/#ex2_label\n if ((keyCode === UP_ARROW || keyCode === DOWN_ARROW) && activeItem) {\n const eligibleActions = this._chipActions.filter(\n action => action._isPrimary === activeItem._isPrimary && !this._skipPredicate(action),\n );\n const currentIndex = eligibleActions.indexOf(activeItem);\n const delta = event.keyCode === UP_ARROW ? -1 : 1;\n\n event.preventDefault();\n if (currentIndex > -1 && this._isValidIndex(currentIndex + delta)) {\n this._keyManager.setActiveItem(eligibleActions[currentIndex + delta]);\n }\n } else {\n super._handleKeydown(event);\n }\n }\n\n this.stateChanges.next();\n }\n\n protected override _redirectDestroyedChipFocus() {\n if (this._lastDestroyedFocusedChipIndex === null) {\n return;\n }\n\n super._redirectDestroyedChipFocus();\n\n // If there are no chips left, or the set focuses the input,\n // clear the active item silently to prevent stale references.\n if (!this._chips.length || (this._chips.length === 1 && this._chips.first.disabled)) {\n this._keyManager.updateActiveItem(-1);\n }\n }\n\n _focusLastChip() {\n if (this._chips.length) {\n this._chips.last.focus();\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 * @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.dev/license\n */\n\nimport {BACKSPACE, hasModifierKey, ModifierKey} from '@angular/cdk/keycodes';\nimport {\n Directive,\n ElementRef,\n EventEmitter,\n Input,\n OnChanges,\n OnDestroy,\n Output,\n booleanAttribute,\n inject,\n} from '@angular/core';\nimport {_IdGenerator} from '@angular/cdk/a11y';\nimport {MatFormField, MAT_FORM_FIELD} from '../form-field';\nimport {MatChipsDefaultOptions, MAT_CHIPS_DEFAULT_OPTIONS, SeparatorKey} from './tokens';\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 /** Reference to the chip input that emitted the event. */\n chipInput: MatChipInput;\n}\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 '(blur)': '_blur()',\n '(focus)': '_focus()',\n '(input)': '_onInput()',\n '[id]': 'id',\n '[attr.disabled]': 'disabled && !disabledInteractive ? \"\" : 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.aria-disabled]': 'disabled && disabledInteractive ? \"true\" : null',\n '[attr.readonly]': '_getReadonlyAttribute()',\n '[attr.required]': '_chipGrid && _chipGrid.required || null',\n },\n})\nexport class MatChipInput implements MatChipTextControl, OnChanges, OnDestroy {\n protected _elementRef = inject<ElementRef<HTMLInputElement>>(ElementRef);\n\n /** Whether the control is focused. */\n focused: boolean = false;\n\n /** Register input for chip list */\n @Input('matChipInputFor')\n get chipGrid(): MatChipGrid {\n return this._chipGrid;\n }\n set chipGrid(value: MatChipGrid) {\n if (value) {\n this._chipGrid = value;\n this._chipGrid.registerInput(this);\n }\n }\n protected _chipGrid!: MatChipGrid;\n\n /**\n * Whether or not the chipEnd event will be emitted when the input is blurred.\n */\n @Input({alias: 'matChipInputAddOnBlur', transform: booleanAttribute})\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 | SeparatorKey)[] | ReadonlySet<number | SeparatorKey>;\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 = inject(_IdGenerator).getId('mat-mdc-chip-list-input-');\n\n /** Whether the input is disabled. */\n @Input({transform: booleanAttribute})\n get disabled(): boolean {\n return this._disabled || (this._chipGrid && this._chipGrid.disabled);\n }\n set disabled(value: boolean) {\n this._disabled = value;\n }\n private _disabled: boolean = false;\n\n /** Whether the input is readonly. */\n @Input({transform: booleanAttribute})\n readonly: boolean = false;\n\n /** Whether the input should remain interactive when it is disabled. */\n @Input({alias: 'matChipInputDisabledInteractive', transform: booleanAttribute})\n disabledInteractive: boolean;\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 const defaultOptions = inject<MatChipsDefaultOptions>(MAT_CHIPS_DEFAULT_OPTIONS);\n const formField = inject<MatFormField>(MAT_FORM_FIELD, {optional: true});\n\n this.inputElement = this._elementRef.nativeElement as HTMLInputElement;\n this.separatorKeyCodes = defaultOptions.separatorKeyCodes;\n this.disabledInteractive = defaultOptions.inputDisabledInteractive ?? false;\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 /** Utility method to make host definition/tests more clear. */\n _keydown(event: KeyboardEvent) {\n if (this.empty && event.keyCode === BACKSPACE) {\n // Ignore events where the user is holding down backspace\n // so that we don't accidentally remove too many chips.\n if (!event.repeat) {\n this._chipGrid._focusLastChip();\n }\n event.preventDefault();\n } else {\n this._emitChipEnd(event);\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._chipGrid.stateChanges.next();\n }\n\n /** Checks to see if the (chipEnd) event needs to be emitted. */\n _emitChipEnd(event?: KeyboardEvent) {\n if (!event || (this._isSeparatorKey(event) && !event.repeat)) {\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 }\n\n /**\n * Implemented as part of MatChipTextControl.\n * @docs-private\n */\n get describedByIds(): string[] {\n const element = this._elementRef.nativeElement;\n const existingDescribedBy = element.getAttribute('aria-describedby');\n\n return existingDescribedBy?.split(' ') || [];\n }\n\n setDescribedByIds(ids: string[]): void {\n const element = this._elementRef.nativeElement;\n\n // Set the value directly in the DOM since this binding\n // is prone to \"changed after checked\" errors.\n if (ids.length) {\n element.setAttribute('aria-describedby', ids.join(' '));\n } else {\n element.removeAttribute('aria-describedby');\n }\n }\n\n /** Checks whether a keycode is one of the configured separators. */\n private _isSeparatorKey(event: KeyboardEvent): boolean {\n if (!this.separatorKeyCodes) {\n return false;\n }\n\n for (const key of this.separatorKeyCodes) {\n let keyCode: number;\n let modifiers: readonly ModifierKey[] | null;\n\n if (typeof key === 'number') {\n keyCode = key;\n modifiers = null;\n } else {\n keyCode = key.keyCode;\n modifiers = key.modifiers;\n }\n\n const modifiersMatch = !modifiers?.length\n ? !hasModifierKey(event)\n : hasModifierKey(event, ...modifiers);\n\n if (keyCode === event.keyCode && modifiersMatch) {\n return true;\n }\n }\n\n return false;\n }\n\n /** Gets the value to set on the `readonly` attribute. */\n protected _getReadonlyAttribute(): string | null {\n return this.readonly || (this.disabled && this.disabledInteractive) ? 'true' : null;\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.dev/license\n */\n\nimport {ENTER} from '@angular/cdk/keycodes';\nimport {NgModule} from '@angular/core';\nimport {ErrorStateMatcher, MatRippleModule} from '../core';\nimport {MatChip} from './chip';\nimport {MAT_CHIPS_DEFAULT_OPTIONS, MatChipsDefaultOptions} from './tokens';\nimport {MatChipEditInput} from './chip-edit-input';\nimport {MatChipGrid} from './chip-grid';\nimport {MatChipAvatar, MatChipEdit, 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';\nimport {MatChipAction} from './chip-action';\nimport {BidiModule} from '@angular/cdk/bidi';\n\nconst CHIP_DECLARATIONS = [\n MatChip,\n MatChipAvatar,\n MatChipEdit,\n MatChipEditInput,\n MatChipGrid,\n MatChipInput,\n MatChipListbox,\n MatChipOption,\n MatChipRemove,\n MatChipRow,\n MatChipSet,\n MatChipTrailingIcon,\n];\n\n@NgModule({\n imports: [MatRippleModule, MatChipAction, CHIP_DECLARATIONS],\n exports: [BidiModule, 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"],"names":[],"mappings":"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"}