diff --git a/src/renderer/components/item-list/item-table-list/columns/row-index-column.tsx b/src/renderer/components/item-list/item-table-list/columns/row-index-column.tsx index 7b794e184..af0518d18 100644 --- a/src/renderer/components/item-list/item-table-list/columns/row-index-column.tsx +++ b/src/renderer/components/item-list/item-table-list/columns/row-index-column.tsx @@ -37,11 +37,16 @@ const DefaultRowIndexColumn = (props: ItemTableListInnerColumn) => { internalState, itemType, rowIndex, + startRowIndex, } = props; - const adjustedRowIndex = + let adjustedRowIndex = adjustedRowIndexMap?.get(rowIndex) ?? (enableHeader ? rowIndex : rowIndex + 1); + if (startRowIndex !== undefined && adjustedRowIndex > 0) { + adjustedRowIndex = startRowIndex + adjustedRowIndex; + } + if (enableExpansion) { return ( @@ -75,10 +80,14 @@ const QueueSongRowIndexColumn = (props: ItemTableListInnerColumn) => { const song = props.data[props.rowIndex] as QueueSong; const isActive = props.activeRowId === song?._uniqueId; - const adjustedRowIndex = + let adjustedRowIndex = props.adjustedRowIndexMap?.get(props.rowIndex) ?? (props.enableHeader ? props.rowIndex : props.rowIndex + 1); + if (props.startRowIndex !== undefined && adjustedRowIndex > 0) { + adjustedRowIndex = props.startRowIndex + adjustedRowIndex; + } + return ( {isActive ? ( diff --git a/src/renderer/components/item-list/item-table-list/item-table-list.tsx b/src/renderer/components/item-list/item-table-list/item-table-list.tsx index a63190696..a45be0a96 100644 --- a/src/renderer/components/item-list/item-table-list/item-table-list.tsx +++ b/src/renderer/components/item-list/item-table-list/item-table-list.tsx @@ -119,6 +119,7 @@ interface VirtualizedTableGridProps { showRightShadow: boolean; showTopShadow: boolean; size: 'compact' | 'default' | 'large'; + startRowIndex?: number; tableId: string; totalColumnCount: number; totalRowCount: number; @@ -161,6 +162,7 @@ const VirtualizedTableGrid = React.memo( showRightShadow, showTopShadow, size, + startRowIndex, tableId, totalColumnCount, totalRowCount, @@ -300,6 +302,7 @@ const VirtualizedTableGrid = React.memo( pinnedRightColumnWidths, playerContext, size, + startRowIndex, tableId, }), [ @@ -330,6 +333,7 @@ const VirtualizedTableGrid = React.memo( pinnedRightColumnWidths, playerContext, size, + startRowIndex, tableId, ], ); @@ -654,6 +658,7 @@ export interface TableItemProps { pinnedRightColumnWidths?: number[]; playerContext: PlayerContext; size?: ItemTableListProps['size']; + startRowIndex?: number; tableId: string; } @@ -663,7 +668,6 @@ interface ItemTableListProps { CellComponent: JSXElementConstructor>; cellPadding?: 'lg' | 'md' | 'sm' | 'xl' | 'xs'; columns: ItemTableListColumnConfig[]; - currentPage?: number; data: unknown[]; enableAlternateRowColors?: boolean; enableDrag?: boolean; @@ -684,6 +688,7 @@ interface ItemTableListProps { type: 'index' | 'offset'; }; itemType: LibraryItem; + startRowIndex?: number; onColumnReordered?: ( columnIdFrom: TableColumn, columnIdTo: TableColumn, @@ -703,7 +708,6 @@ export const ItemTableList = ({ CellComponent, cellPadding = 'sm', columns, - currentPage, data, enableAlternateRowColors = false, enableDrag = true, @@ -727,6 +731,7 @@ export const ItemTableList = ({ ref, rowHeight, size = 'default', + startRowIndex, }: ItemTableListProps) => { const tableId = useId(); const totalItemCount = enableHeader ? data.length + 1 : data.length; @@ -1682,12 +1687,12 @@ export const ItemTableList = ({ } }, [initialTop, scrollToTableIndex, scrollToTableOffset]); - // Scroll to top when currentPage changes + // Scroll to top when startRowIndex changes useEffect(() => { - if (currentPage !== undefined) { + if (startRowIndex !== undefined) { scrollToTableOffset(0); } - }, [currentPage, scrollToTableOffset]); + }, [startRowIndex, scrollToTableOffset]); const imperativeHandle: ItemListHandle = useMemo(() => { return { @@ -2068,6 +2073,7 @@ export const ItemTableList = ({ showRightShadow={showRightShadow} showTopShadow={showTopShadow} size={size} + startRowIndex={startRowIndex} tableId={tableId} totalColumnCount={totalColumnCount} totalRowCount={totalRowCount} diff --git a/src/renderer/features/albums/components/album-list-paginated-table.tsx b/src/renderer/features/albums/components/album-list-paginated-table.tsx index 498e277c1..139878552 100644 --- a/src/renderer/features/albums/components/album-list-paginated-table.tsx +++ b/src/renderer/features/albums/components/album-list-paginated-table.tsx @@ -74,6 +74,8 @@ export const AlbumListPaginatedTable = forwardRef ); diff --git a/src/renderer/features/artists/components/album-artist-list-paginated-table.tsx b/src/renderer/features/artists/components/album-artist-list-paginated-table.tsx index 30305f3a1..676b5119a 100644 --- a/src/renderer/features/artists/components/album-artist-list-paginated-table.tsx +++ b/src/renderer/features/artists/components/album-artist-list-paginated-table.tsx @@ -75,6 +75,8 @@ export const AlbumArtistListPaginatedTable = forwardRef ); diff --git a/src/renderer/features/artists/components/artist-list-paginated-table.tsx b/src/renderer/features/artists/components/artist-list-paginated-table.tsx index c3115426d..8a71bed8c 100644 --- a/src/renderer/features/artists/components/artist-list-paginated-table.tsx +++ b/src/renderer/features/artists/components/artist-list-paginated-table.tsx @@ -6,10 +6,10 @@ import { useItemListPaginatedLoader } from '/@/renderer/components/item-list/hel import { useItemListColumnReorder } from '/@/renderer/components/item-list/helpers/use-item-list-column-reorder'; import { useItemListColumnResize } from '/@/renderer/components/item-list/helpers/use-item-list-column-resize'; import { useItemListScrollPersist } from '/@/renderer/components/item-list/helpers/use-item-list-scroll-persist'; -import { ItemTableList } from '/@/renderer/components/item-list/item-table-list/item-table-list'; -import { ItemTableListColumn } from '/@/renderer/components/item-list/item-table-list/item-table-list-column'; import { ItemListWithPagination } from '/@/renderer/components/item-list/item-list-pagination/item-list-pagination'; import { useItemListPagination } from '/@/renderer/components/item-list/item-list-pagination/use-item-list-pagination'; +import { ItemTableList } from '/@/renderer/components/item-list/item-table-list/item-table-list'; +import { ItemTableListColumn } from '/@/renderer/components/item-list/item-table-list/item-table-list-column'; import { ItemListTableComponentProps } from '/@/renderer/components/item-list/types'; import { artistsQueries } from '/@/renderer/features/artists/api/artists-api'; import { @@ -74,6 +74,8 @@ export const ArtistListPaginatedTable = forwardRef ); diff --git a/src/renderer/features/genres/components/genre-list-paginated-table.tsx b/src/renderer/features/genres/components/genre-list-paginated-table.tsx index e97fb4e9e..32cc20a06 100644 --- a/src/renderer/features/genres/components/genre-list-paginated-table.tsx +++ b/src/renderer/features/genres/components/genre-list-paginated-table.tsx @@ -74,6 +74,8 @@ export const GenreListPaginatedTable = forwardRef ); diff --git a/src/renderer/features/playlists/components/playlist-list-paginated-table.tsx b/src/renderer/features/playlists/components/playlist-list-paginated-table.tsx index f8bbc1e5f..1a49cdce7 100644 --- a/src/renderer/features/playlists/components/playlist-list-paginated-table.tsx +++ b/src/renderer/features/playlists/components/playlist-list-paginated-table.tsx @@ -74,6 +74,8 @@ export const PlaylistListPaginatedTable = forwardRef ); diff --git a/src/renderer/features/songs/components/song-list-paginated-table.tsx b/src/renderer/features/songs/components/song-list-paginated-table.tsx index 0329a7693..5be4bf6dd 100644 --- a/src/renderer/features/songs/components/song-list-paginated-table.tsx +++ b/src/renderer/features/songs/components/song-list-paginated-table.tsx @@ -69,6 +69,8 @@ export const SongListPaginatedTable = forwardRef );