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"
+ />
+ )}
+