From b01fb41a86e0533dd75fee527263eac5e5c3a5ff Mon Sep 17 00:00:00 2001 From: Wagner Maciel Date: Thu, 20 Feb 2025 13:41:06 -0500 Subject: [PATCH] fixup! refactor: event managers --- src/cdk-experimental/listbox/listbox.ts | 2 +- ...nt-manager.ts => pointer-event-manager.ts} | 20 ++++------------ .../ui-patterns/listbox/listbox.ts | 24 +++++++++---------- 3 files changed, 17 insertions(+), 29 deletions(-) rename src/cdk-experimental/ui-patterns/behaviors/event-manager/{mouse-event-manager.ts => pointer-event-manager.ts} (77%) diff --git a/src/cdk-experimental/listbox/listbox.ts b/src/cdk-experimental/listbox/listbox.ts index c341f65f54a4..0b20117946b4 100644 --- a/src/cdk-experimental/listbox/listbox.ts +++ b/src/cdk-experimental/listbox/listbox.ts @@ -46,7 +46,7 @@ import {toSignal} from '@angular/core/rxjs-interop'; '[attr.aria-multiselectable]': 'pattern.multiselectable()', '[attr.aria-activedescendant]': 'pattern.activedescendant()', '(keydown)': 'pattern.onKeydown($event)', - '(mousedown)': 'pattern.onMousedown($event)', + '(pointerdown)': 'pattern.onPointerdown($event)', }, }) export class CdkListbox { diff --git a/src/cdk-experimental/ui-patterns/behaviors/event-manager/mouse-event-manager.ts b/src/cdk-experimental/ui-patterns/behaviors/event-manager/pointer-event-manager.ts similarity index 77% rename from src/cdk-experimental/ui-patterns/behaviors/event-manager/mouse-event-manager.ts rename to src/cdk-experimental/ui-patterns/behaviors/event-manager/pointer-event-manager.ts index 22e3af87bc65..7631f048e027 100644 --- a/src/cdk-experimental/ui-patterns/behaviors/event-manager/mouse-event-manager.ts +++ b/src/cdk-experimental/ui-patterns/behaviors/event-manager/pointer-event-manager.ts @@ -8,7 +8,6 @@ import { EventHandler, - EventHandlerConfig, EventHandlerOptions, EventManager, hasModifiers, @@ -17,7 +16,7 @@ import { } from './event-manager'; /** - * The different mouse buttons that may appear on a mouse event. + * The different mouse buttons that may appear on a pointer event. */ export enum MouseButton { Main = 0, @@ -25,19 +24,8 @@ export enum MouseButton { Secondary = 2, } -/** - * A config that specifies how to handle a particular mouse event. - */ -export interface MouseEventHandlerConfig extends EventHandlerConfig { - button: number; - modifiers: number | number[]; -} - -/** - * An event manager that is specialized for handling mouse events. By default this manager stops - * propagation and prevents default on all events it handles. - */ -export class MouseEventManager extends EventManager { +/** An event manager that is specialized for handling pointer events. */ +export class PointerEventManager extends EventManager { options: EventHandlerOptions = { preventDefault: false, stopPropagation: false, @@ -97,7 +85,7 @@ export class MouseEventManager extends EventManager { }; } - _isMatch(event: MouseEvent, button: MouseButton, modifiers: ModifierInputs) { + _isMatch(event: PointerEvent, button: MouseButton, modifiers: ModifierInputs) { return button === (event.button ?? 0) && hasModifiers(event, modifiers); } } diff --git a/src/cdk-experimental/ui-patterns/listbox/listbox.ts b/src/cdk-experimental/ui-patterns/listbox/listbox.ts index aa00267c71e0..2d8af336672e 100644 --- a/src/cdk-experimental/ui-patterns/listbox/listbox.ts +++ b/src/cdk-experimental/ui-patterns/listbox/listbox.ts @@ -8,7 +8,7 @@ import {ModifierKey as Modifier} from '../behaviors/event-manager/event-manager'; import {KeyboardEventManager} from '../behaviors/event-manager/keyboard-event-manager'; -import {MouseEventManager} from '../behaviors/event-manager/mouse-event-manager'; +import {PointerEventManager} from '../behaviors/event-manager/pointer-event-manager'; import {OptionPattern} from './option'; import {ListSelection, ListSelectionInputs} from '../behaviors/list-selection/list-selection'; import {ListTypeahead, ListTypeaheadInputs} from '../behaviors/list-typeahead/list-typeahead'; @@ -139,24 +139,24 @@ export class ListboxPattern { return manager; }); - /** The mousedown event manager for the listbox. */ - mousedown = computed(() => { - const manager = new MouseEventManager(); + /** The pointerdown event manager for the listbox. */ + pointerdown = computed(() => { + const manager = new PointerEventManager(); if (!this.followFocus()) { - manager.on((e: MouseEvent) => this.goto(e)); + manager.on((e: PointerEvent) => this.goto(e)); } if (this.followFocus()) { - manager.on((e: MouseEvent) => this.goto(e, {selectOne: true})); + manager.on((e: PointerEvent) => this.goto(e, {selectOne: true})); } if (this.inputs.multiselectable() && this.followFocus()) { - manager.on(Modifier.Ctrl, (e: MouseEvent) => this.goto(e)); + manager.on(Modifier.Ctrl, (e: PointerEvent) => this.goto(e)); } if (this.inputs.multiselectable()) { - manager.on(Modifier.Shift, (e: MouseEvent) => this.goto(e, {selectFromActive: true})); + manager.on(Modifier.Shift, (e: PointerEvent) => this.goto(e, {selectFromActive: true})); } return manager; @@ -183,9 +183,9 @@ export class ListboxPattern { } } - onMousedown(event: MouseEvent) { + onPointerdown(event: PointerEvent) { if (!this.disabled()) { - this.mousedown().handle(event); + this.pointerdown().handle(event); } } @@ -218,7 +218,7 @@ export class ListboxPattern { } /** Navigates to the given item in the listbox. */ - goto(event: MouseEvent, opts?: SelectOptions) { + goto(event: PointerEvent, opts?: SelectOptions) { const item = this._getItem(event); if (item) { @@ -260,7 +260,7 @@ export class ListboxPattern { } } - private _getItem(e: MouseEvent) { + private _getItem(e: PointerEvent) { if (!(e.target instanceof HTMLElement)) { return; }