From ba86eabe76a5720e0a88adc50c852e93684b9db6 Mon Sep 17 00:00:00 2001 From: Wagner Maciel Date: Fri, 11 Apr 2025 11:43:43 -0400 Subject: [PATCH] fix(cdk-experimental/listbox): use meta as alternative to ctrl --- .../ui-patterns/listbox/listbox.ts | 22 +++++++++++-------- 1 file changed, 13 insertions(+), 9 deletions(-) diff --git a/src/cdk-experimental/ui-patterns/listbox/listbox.ts b/src/cdk-experimental/ui-patterns/listbox/listbox.ts index 1e9425248980..3193acef1a43 100644 --- a/src/cdk-experimental/ui-patterns/listbox/listbox.ts +++ b/src/cdk-experimental/ui-patterns/listbox/listbox.ts @@ -133,9 +133,13 @@ export class ListboxPattern { .on(Modifier.Shift, 'Enter', () => this._updateSelection({selectFromAnchor: true})) .on(Modifier.Shift, this.prevKey, () => this.prev({toggle: true})) .on(Modifier.Shift, this.nextKey, () => this.next({toggle: true})) - .on(Modifier.Ctrl | Modifier.Shift, 'Home', () => this.first({selectFromActive: true})) - .on(Modifier.Ctrl | Modifier.Shift, 'End', () => this.last({selectFromActive: true})) - .on(Modifier.Ctrl, 'A', () => this._updateSelection({selectAll: true})) + .on([Modifier.Ctrl, Modifier.Meta], 'A', () => this._updateSelection({selectAll: true})) + .on([Modifier.Ctrl | Modifier.Shift, Modifier.Meta | Modifier.Shift], 'Home', () => + this.first({selectFromActive: true}), + ) + .on([Modifier.Ctrl | Modifier.Shift, Modifier.Meta | Modifier.Shift], 'End', () => + this.last({selectFromActive: true}), + ) .on(Modifier.Shift, this.dynamicSpaceKey, () => this._updateSelection({selectFromAnchor: true}), ); @@ -153,12 +157,12 @@ export class ListboxPattern { if (this.inputs.multi() && this.followFocus()) { manager - .on(Modifier.Ctrl, this.prevKey, () => this.prev()) - .on(Modifier.Ctrl, this.nextKey, () => this.next()) - .on(Modifier.Ctrl, ' ', () => this._updateSelection({toggle: true})) - .on(Modifier.Ctrl, 'Enter', () => this._updateSelection({toggle: true})) - .on(Modifier.Ctrl, 'Home', () => this.first()) // TODO: Not in spec but prob should be. - .on(Modifier.Ctrl, 'End', () => this.last()); // TODO: Not in spec but prob should be. + .on([Modifier.Ctrl, Modifier.Meta], this.prevKey, () => this.prev()) + .on([Modifier.Ctrl, Modifier.Meta], this.nextKey, () => this.next()) + .on([Modifier.Ctrl, Modifier.Meta], ' ', () => this._updateSelection({toggle: true})) + .on([Modifier.Ctrl, Modifier.Meta], 'Enter', () => this._updateSelection({toggle: true})) + .on([Modifier.Ctrl, Modifier.Meta], 'Home', () => this.first()) // TODO: Not in spec but prob should be. + .on([Modifier.Ctrl, Modifier.Meta], 'End', () => this.last()); // TODO: Not in spec but prob should be. } return manager;