add select all hotkey to lists

This commit is contained in:
jeffvli
2025-11-27 14:17:36 -08:00
parent 092a9c3f19
commit 7cc7086dbb
4 changed files with 86 additions and 16 deletions
@@ -44,6 +44,8 @@ import {
import { ItemControls, ItemListHandle } from '/@/renderer/components/item-list/types';
import { animationProps } from '/@/shared/components/animations/animation-props';
import { useElementSize } from '/@/shared/hooks/use-element-size';
import { useFocusWithin } from '/@/shared/hooks/use-focus-within';
import { useHotkeys } from '/@/shared/hooks/use-hotkeys';
import { useMergedRef } from '/@/shared/hooks/use-merged-ref';
import { LibraryItem } from '/@/shared/types/domain-types';
@@ -288,7 +290,7 @@ const BaseItemGridList = ({
const outerRef = useRef(null);
const listRef = useRef<FixedSizeList<GridItemProps>>(null);
const { ref: containerRef, width: containerWidth } = useElementSize();
const containerFocusRef = useRef<HTMLDivElement | null>(null);
const { focused, ref: containerFocusRef } = useFocusWithin();
const handleRef = useRef<ItemListHandle | null>(null);
const mergedContainerRef = useMergedRef(containerRef, rootRef, containerFocusRef);
@@ -654,6 +656,21 @@ const BaseItemGridList = ({
useImperativeHandle(ref, () => imperativeHandle, [imperativeHandle]);
useHotkeys([
[
'mod+a',
() => {
if (focused) {
if (internalState.isAllSelected()) {
internalState.deselectAll();
} else {
internalState.selectAll();
}
}
},
],
]);
return (
<motion.div
className={styles.itemGridContainer}