Signed-off-by: Matt Bruce <mbrucedogs@gmail.com>

This commit is contained in:
Matt Bruce 2025-07-18 16:30:45 -05:00
parent c1fd104be3
commit 3e143dade9
6 changed files with 38 additions and 36 deletions

View File

@ -1,7 +1,7 @@
import React, { useState } from 'react';
import { IonSearchbar, IonList, IonItem, IonLabel, IonModal, IonHeader, IonToolbar, IonTitle, IonButton, IonIcon, IonContent } from '@ionic/react';
import { close, add, heart, heartOutline, list } from 'ionicons/icons';
import { InfiniteScrollList } from '../../components/common';
import { IonSearchbar, IonItem, IonLabel, IonModal, IonHeader, IonToolbar, IonTitle, IonButton, IonIcon, IonContent } from '@ionic/react';
import { close, list } from 'ionicons/icons';
import { InfiniteScrollList, SongItem } from '../../components/common';
import { useArtists } from '../../hooks';
import { useAppSelector } from '../../redux';
import { selectSongs } from '../../redux';
@ -82,7 +82,12 @@ const Artists: React.FC = () => {
/>
{/* Artist Songs Modal */}
<IonModal isOpen={!!selectedArtist} onDidDismiss={handleCloseArtistSongs}>
<IonModal
isOpen={!!selectedArtist}
onDidDismiss={handleCloseArtistSongs}
breakpoints={[0, 0.5, 0.8]}
initialBreakpoint={0.8}
>
<IonHeader>
<IonToolbar>
<IonTitle>Songs by {selectedArtist}</IonTitle>
@ -93,36 +98,17 @@ const Artists: React.FC = () => {
</IonHeader>
<IonContent>
<IonList>
<div className="p-4">
{selectedArtistSongs.map((song) => (
<IonItem key={song.key}>
<IonLabel>
<h3 className="text-sm font-medium text-gray-900">
{song.title}
</h3>
<p className="text-sm text-gray-500">
{song.artist}
</p>
</IonLabel>
<div slot="end" className="flex gap-2">
<IonButton
fill="clear"
size="small"
onClick={() => handleAddToQueue(song)}
>
<IonIcon icon={add} slot="icon-only" />
</IonButton>
<IonButton
fill="clear"
size="small"
onClick={() => handleToggleFavorite(song)}
>
<IonIcon icon={song.favorite ? heart : heartOutline} slot="icon-only" />
</IonButton>
</div>
</IonItem>
<SongItem
key={song.key}
song={song}
context="search"
onAddToQueue={() => handleAddToQueue(song)}
onToggleFavorite={() => handleToggleFavorite(song)}
/>
))}
</IonList>
</div>
</IonContent>
</IonModal>
</div>

View File

@ -219,7 +219,7 @@ const Queue: React.FC = () => {
return (
<>
<div className="flex justify-between items-center mb-4">
<div className="flex justify-end items-center mb-4 pr-4 right-button-container">
{isAdmin && (
<IonButton

View File

@ -70,14 +70,14 @@ const Singers: React.FC = () => {
return (
<>
<div className="flex justify-between items-center mb-4">
<div className="flex justify-end items-center mb-4 pr-4 right-button-container">
{isAdmin && (
<IonButton
fill="clear"
onClick={handleOpenAddModal}
className="text-primary"
>
<IonIcon icon={add} slot="icon-only" />
<IonIcon icon={add} slot="icon-only" size="large" />
</IonButton>
)}
</div>
@ -97,7 +97,12 @@ const Singers: React.FC = () => {
</div>
{/* Add Singer Modal */}
<IonModal isOpen={showAddModal} onDidDismiss={handleCloseAddModal}>
<IonModal
isOpen={showAddModal}
onDidDismiss={handleCloseAddModal}
breakpoints={[0, 0.5, 0.8]}
initialBreakpoint={0.8}
>
<IonHeader>
<IonToolbar>
<IonTitle>Add New Singer</IonTitle>

View File

@ -90,6 +90,8 @@ const SongLists: React.FC = () => {
<IonModal
isOpen={!!finalSelectedList}
onDidDismiss={handleCloseSongList}
breakpoints={[0, 0.5, 0.8]}
initialBreakpoint={0.8}
>
<IonHeader>
<IonToolbar>

View File

@ -137,6 +137,8 @@ const Top100: React.FC = () => {
<IonModal
isOpen={!!selectedTopPlayed}
onDidDismiss={handleCloseModal}
breakpoints={[0, 0.5, 0.8]}
initialBreakpoint={0.8}
>
<IonHeader>
<IonToolbar>

View File

@ -85,6 +85,13 @@ ion-item {
margin-left: auto !important;
}
/* Right-justified button container with padding */
.right-button-container {
padding-right: 16px !important;
padding-top: 20px !important;
padding-bottom: 10px !important;
}
/* Ensure accordion content is visible */
ion-accordion {
--background: transparent;