diff --git a/src/renderer/components/item-list/expanded-list-item.tsx b/src/renderer/components/item-list/expanded-list-item.tsx index 4be2abeff..1da5df94e 100644 --- a/src/renderer/components/item-list/expanded-list-item.tsx +++ b/src/renderer/components/item-list/expanded-list-item.tsx @@ -3,8 +3,8 @@ import { Suspense } from 'react'; import styles from './expanded-list-item.module.css'; import { - ItemListStateItem, ItemListStateActions, + ItemListStateItem, } from '/@/renderer/components/item-list/helpers/item-list-state'; import { ExpandedAlbumListItem } from '/@/renderer/features/albums/components/expanded-album-list-item'; import { Spinner } from '/@/shared/components/spinner/spinner'; @@ -27,7 +27,11 @@ export const ExpandedListItem = ({ internalState, itemType }: ExpandedListItemPr
}> - +
@@ -35,14 +39,15 @@ export const ExpandedListItem = ({ internalState, itemType }: ExpandedListItemPr }; interface SelectedItemProps { + internalState: ItemListStateActions; item: ItemListStateItem; itemType: LibraryItem; } -const SelectedItem = ({ item, itemType }: SelectedItemProps) => { +const SelectedItem = ({ internalState, item, itemType }: SelectedItemProps) => { switch (itemType) { case LibraryItem.ALBUM: - return ; + return ; default: return null; } diff --git a/src/renderer/features/albums/components/expanded-album-list-item.module.css b/src/renderer/features/albums/components/expanded-album-list-item.module.css index 11097fe0e..1225f4f5f 100644 --- a/src/renderer/features/albums/components/expanded-album-list-item.module.css +++ b/src/renderer/features/albums/components/expanded-album-list-item.module.css @@ -31,6 +31,20 @@ gap: var(--theme-spacing-xs); } +.header-title { + position: relative; + display: flex; + align-items: center; + justify-content: space-between; +} + +.close-button { + position: absolute; + top: 0; + right: 0; + z-index: 10; +} + .content { display: flex; flex-direction: column; @@ -45,6 +59,7 @@ .item-title { z-index: 10; display: -webkit-box; + padding-right: var(--theme-spacing-xl); overflow: hidden; -webkit-line-clamp: 2; line-clamp: 2; @@ -116,15 +131,15 @@ min-height: 0; @container (min-width: 640px) { - width: 50%; + width: 60%; } @container (min-width: 768px) { - width: 40%; + width: 50%; } @container (min-width: 1200px) { - width: 30%; + width: 40%; } } @@ -136,7 +151,7 @@ .track-row { position: relative; display: grid; - grid-template-columns: 55px 1fr 50px; + grid-template-columns: 55px 1fr 55px; gap: var(--theme-spacing-sm); align-items: center; padding: var(--theme-spacing-xs) var(--theme-spacing-sm); diff --git a/src/renderer/features/albums/components/expanded-album-list-item.tsx b/src/renderer/features/albums/components/expanded-album-list-item.tsx index 52894c2b1..b703318f7 100644 --- a/src/renderer/features/albums/components/expanded-album-list-item.tsx +++ b/src/renderer/features/albums/components/expanded-album-list-item.tsx @@ -18,6 +18,7 @@ import { ItemListItem } from '/@/renderer/components/item-list/types'; import { albumQueries } from '/@/renderer/features/albums/api/album-api'; import { useFastAverageColor } from '/@/renderer/hooks'; import { useDragDrop } from '/@/renderer/hooks/use-drag-drop'; +import { ActionIcon } from '/@/shared/components/action-icon/action-icon'; import { Group } from '/@/shared/components/group/group'; import { ScrollArea } from '/@/shared/components/scroll-area/scroll-area'; import { Separator } from '/@/shared/components/separator/separator'; @@ -40,6 +41,7 @@ interface AlbumTracksTableProps { } interface ExpandedAlbumListItemProps { + internalState?: ItemListStateActions; item: ItemListStateItem; } @@ -163,7 +165,7 @@ const AlbumTracksTable = ({ isDark, serverId, songs }: AlbumTracksTableProps) => ); }; -export const ExpandedAlbumListItem = ({ item }: ExpandedAlbumListItemProps) => { +export const ExpandedAlbumListItem = ({ internalState, item }: ExpandedAlbumListItemProps) => { const { data, isLoading } = useSuspenseQuery( albumQueries.detail({ query: { id: item.id }, @@ -201,13 +203,37 @@ export const ExpandedAlbumListItem = ({ item }: ExpandedAlbumListItemProps) => {
- - {data?.name} - +
+ + {data?.name} + + {internalState && ( + { + const rowId = internalState.extractRowId(item); + if (rowId) { + internalState.clearExpanded(); + } + }} + radius="50%" + size="sm" + variant="subtle" + /> + )} +