diff --git a/src/material/chips/chip-action.ts b/src/material/chips/chip-action.ts index 75d144693310..c7b98e36b08a 100644 --- a/src/material/chips/chip-action.ts +++ b/src/material/chips/chip-action.ts @@ -85,6 +85,7 @@ export class MatChipAction extends _MatChipActionMixinBase implements HasTabInde _handlePrimaryActionInteraction(): void; remove(): void; disabled: boolean; + _isEditing?: boolean; }, ) { super(); @@ -110,7 +111,8 @@ export class MatChipAction extends _MatChipActionMixinBase implements HasTabInde (event.keyCode === ENTER || event.keyCode === SPACE) && !this.disabled && this.isInteractive && - this._isPrimary + this._isPrimary && + !this._parentChip._isEditing ) { event.preventDefault(); this._parentChip._handlePrimaryActionInteraction(); diff --git a/src/material/chips/chip-row.spec.ts b/src/material/chips/chip-row.spec.ts index 1c4e69390fac..7ca159ccc975 100644 --- a/src/material/chips/chip-row.spec.ts +++ b/src/material/chips/chip-row.spec.ts @@ -1,5 +1,5 @@ import {Directionality} from '@angular/cdk/bidi'; -import {BACKSPACE, DELETE, ENTER} from '@angular/cdk/keycodes'; +import {BACKSPACE, DELETE, ENTER, SPACE} from '@angular/cdk/keycodes'; import { createKeyboardEvent, dispatchEvent, @@ -331,6 +331,14 @@ describe('MDC-based Row Chips', () => { flush(); expect(document.activeElement).not.toBe(primaryAction); })); + + it('should not prevent SPACE events when editing', fakeAsync(() => { + const event = dispatchKeyboardEvent(getEditInput(), 'keydown', SPACE); + fixture.detectChanges(); + flush(); + + expect(event.defaultPrevented).toBe(false); + })); }); describe('a11y', () => {