Signed-off-by: Matt Bruce <mbrucedogs@gmail.com>
This commit is contained in:
parent
c1fd104be3
commit
3e143dade9
@ -1,7 +1,7 @@
|
|||||||
import React, { useState } from 'react';
|
import React, { useState } from 'react';
|
||||||
import { IonSearchbar, IonList, IonItem, IonLabel, IonModal, IonHeader, IonToolbar, IonTitle, IonButton, IonIcon, IonContent } from '@ionic/react';
|
import { IonSearchbar, IonItem, IonLabel, IonModal, IonHeader, IonToolbar, IonTitle, IonButton, IonIcon, IonContent } from '@ionic/react';
|
||||||
import { close, add, heart, heartOutline, list } from 'ionicons/icons';
|
import { close, list } from 'ionicons/icons';
|
||||||
import { InfiniteScrollList } from '../../components/common';
|
import { InfiniteScrollList, SongItem } from '../../components/common';
|
||||||
import { useArtists } from '../../hooks';
|
import { useArtists } from '../../hooks';
|
||||||
import { useAppSelector } from '../../redux';
|
import { useAppSelector } from '../../redux';
|
||||||
import { selectSongs } from '../../redux';
|
import { selectSongs } from '../../redux';
|
||||||
@ -82,7 +82,12 @@ const Artists: React.FC = () => {
|
|||||||
/>
|
/>
|
||||||
|
|
||||||
{/* Artist Songs Modal */}
|
{/* Artist Songs Modal */}
|
||||||
<IonModal isOpen={!!selectedArtist} onDidDismiss={handleCloseArtistSongs}>
|
<IonModal
|
||||||
|
isOpen={!!selectedArtist}
|
||||||
|
onDidDismiss={handleCloseArtistSongs}
|
||||||
|
breakpoints={[0, 0.5, 0.8]}
|
||||||
|
initialBreakpoint={0.8}
|
||||||
|
>
|
||||||
<IonHeader>
|
<IonHeader>
|
||||||
<IonToolbar>
|
<IonToolbar>
|
||||||
<IonTitle>Songs by {selectedArtist}</IonTitle>
|
<IonTitle>Songs by {selectedArtist}</IonTitle>
|
||||||
@ -93,36 +98,17 @@ const Artists: React.FC = () => {
|
|||||||
</IonHeader>
|
</IonHeader>
|
||||||
|
|
||||||
<IonContent>
|
<IonContent>
|
||||||
<IonList>
|
<div className="p-4">
|
||||||
{selectedArtistSongs.map((song) => (
|
{selectedArtistSongs.map((song) => (
|
||||||
<IonItem key={song.key}>
|
<SongItem
|
||||||
<IonLabel>
|
key={song.key}
|
||||||
<h3 className="text-sm font-medium text-gray-900">
|
song={song}
|
||||||
{song.title}
|
context="search"
|
||||||
</h3>
|
onAddToQueue={() => handleAddToQueue(song)}
|
||||||
<p className="text-sm text-gray-500">
|
onToggleFavorite={() => handleToggleFavorite(song)}
|
||||||
{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>
|
|
||||||
))}
|
))}
|
||||||
</IonList>
|
</div>
|
||||||
</IonContent>
|
</IonContent>
|
||||||
</IonModal>
|
</IonModal>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@ -219,7 +219,7 @@ const Queue: React.FC = () => {
|
|||||||
|
|
||||||
return (
|
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 && (
|
{isAdmin && (
|
||||||
<IonButton
|
<IonButton
|
||||||
|
|||||||
@ -70,14 +70,14 @@ const Singers: React.FC = () => {
|
|||||||
|
|
||||||
return (
|
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 && (
|
{isAdmin && (
|
||||||
<IonButton
|
<IonButton
|
||||||
fill="clear"
|
fill="clear"
|
||||||
onClick={handleOpenAddModal}
|
onClick={handleOpenAddModal}
|
||||||
className="text-primary"
|
className="text-primary"
|
||||||
>
|
>
|
||||||
<IonIcon icon={add} slot="icon-only" />
|
<IonIcon icon={add} slot="icon-only" size="large" />
|
||||||
</IonButton>
|
</IonButton>
|
||||||
)}
|
)}
|
||||||
</div>
|
</div>
|
||||||
@ -97,7 +97,12 @@ const Singers: React.FC = () => {
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
{/* Add Singer Modal */}
|
{/* Add Singer Modal */}
|
||||||
<IonModal isOpen={showAddModal} onDidDismiss={handleCloseAddModal}>
|
<IonModal
|
||||||
|
isOpen={showAddModal}
|
||||||
|
onDidDismiss={handleCloseAddModal}
|
||||||
|
breakpoints={[0, 0.5, 0.8]}
|
||||||
|
initialBreakpoint={0.8}
|
||||||
|
>
|
||||||
<IonHeader>
|
<IonHeader>
|
||||||
<IonToolbar>
|
<IonToolbar>
|
||||||
<IonTitle>Add New Singer</IonTitle>
|
<IonTitle>Add New Singer</IonTitle>
|
||||||
|
|||||||
@ -90,6 +90,8 @@ const SongLists: React.FC = () => {
|
|||||||
<IonModal
|
<IonModal
|
||||||
isOpen={!!finalSelectedList}
|
isOpen={!!finalSelectedList}
|
||||||
onDidDismiss={handleCloseSongList}
|
onDidDismiss={handleCloseSongList}
|
||||||
|
breakpoints={[0, 0.5, 0.8]}
|
||||||
|
initialBreakpoint={0.8}
|
||||||
>
|
>
|
||||||
<IonHeader>
|
<IonHeader>
|
||||||
<IonToolbar>
|
<IonToolbar>
|
||||||
|
|||||||
@ -137,6 +137,8 @@ const Top100: React.FC = () => {
|
|||||||
<IonModal
|
<IonModal
|
||||||
isOpen={!!selectedTopPlayed}
|
isOpen={!!selectedTopPlayed}
|
||||||
onDidDismiss={handleCloseModal}
|
onDidDismiss={handleCloseModal}
|
||||||
|
breakpoints={[0, 0.5, 0.8]}
|
||||||
|
initialBreakpoint={0.8}
|
||||||
>
|
>
|
||||||
<IonHeader>
|
<IonHeader>
|
||||||
<IonToolbar>
|
<IonToolbar>
|
||||||
|
|||||||
@ -85,6 +85,13 @@ ion-item {
|
|||||||
margin-left: auto !important;
|
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 */
|
/* Ensure accordion content is visible */
|
||||||
ion-accordion {
|
ion-accordion {
|
||||||
--background: transparent;
|
--background: transparent;
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user