feat: Sort selected workspace items by Z-index to ensure consistent order.
This commit is contained in:
@@ -150,12 +150,21 @@ const DesktopWorkspaceContent: React.FC<DesktopWorkspaceProps> = ({
|
|||||||
} = useWorkspaceSelectionContext();
|
} = useWorkspaceSelectionContext();
|
||||||
|
|
||||||
const handleSelectionChange = useCallback((ids: Identifier[]) => {
|
const handleSelectionChange = useCallback((ids: Identifier[]) => {
|
||||||
|
// Sort IDs by Z-index (ascending) so the last item is the top-most
|
||||||
|
const sortedIds = [...ids].sort((a, b) => {
|
||||||
|
const cardA = layoutStore.items.get(String(a));
|
||||||
|
const cardB = layoutStore.items.get(String(b));
|
||||||
|
const zA = cardA ? cardA.z : -Infinity;
|
||||||
|
const zB = cardB ? cardB.z : -Infinity;
|
||||||
|
return zA - zB;
|
||||||
|
});
|
||||||
|
|
||||||
if (setSelectedEntries) {
|
if (setSelectedEntries) {
|
||||||
const keys = ids.map(id => createDocumentEntryKey(id));
|
const keys = sortedIds.map(id => createDocumentEntryKey(id));
|
||||||
setSelectedEntries(keys);
|
setSelectedEntries(keys);
|
||||||
}
|
}
|
||||||
onSelectionChange?.(ids);
|
onSelectionChange?.(sortedIds);
|
||||||
}, [setSelectedEntries, onSelectionChange]);
|
}, [setSelectedEntries, onSelectionChange, layoutStore]);
|
||||||
|
|
||||||
const onClearSelection = useCallback(() => {
|
const onClearSelection = useCallback(() => {
|
||||||
clearSelection ? clearSelection() : handleSelectionChange([]);
|
clearSelection ? clearSelection() : handleSelectionChange([]);
|
||||||
|
|||||||
Reference in New Issue
Block a user