feat(16-01): add selectAll() to SelectionController and dispatch shortcut:select-all event

- Add selectAll() method to SelectionController that selects all items via host interface
- Change app.selectAll dispatch from document.execCommand('selectAll') to CustomEvent('shortcut:select-all')
This commit is contained in:
2026-03-07 10:18:08 -05:00
parent 13321b531d
commit f5677628ef
2 changed files with 21 additions and 1 deletions
@@ -270,7 +270,9 @@ async function dispatch(action: string): Promise<void> {
// App actions
case 'app.selectAll':
document.execCommand('selectAll');
document.dispatchEvent(
new CustomEvent('shortcut:select-all'),
);
break;
// Panel-specific: track list
@@ -135,6 +135,24 @@ export class SelectionController implements ReactiveController {
this.host.onSelectionChanged?.();
}
/** Select all items. */
selectAll(): void {
const count = this.host.getItemCount();
const next = new Set<string>();
for (let i = 0; i < count; i++) {
const key = this.host.getItemKey(i);
if (key !== undefined) next.add(key);
}
if (next.size === this._selectedItems.size) return;
this._selectedItems = next;
this.lastSelectedIndex = count > 0 ? count - 1 : null;
this.host.requestUpdate();
this.host.onSelectionChanged?.();
}
/**
* Return the selected keys in the order they appear in the host's
* item list. This preserves positional ordering for queue operations.