feat(queue): move shuffle/loop controls into queue drawer, scoped to queue
Docker Build & Publish / push (push) Has been cancelled
Docker Build & Publish / build (push) Has been cancelled
Docker Build & Publish / Prune old image versions (push) Has been cancelled

This commit is contained in:
Senko-san
2026-06-13 18:17:21 +03:00
parent a8e060d1a8
commit 44c8d1870f
8 changed files with 65 additions and 60 deletions
@@ -8,8 +8,6 @@ import {
resume,
toggleMute,
setVolume,
toggleShuffle,
setRepeat,
toggleQueue,
} from '../../store/slices/player';
import { openTrackInfo } from '../../store/slices/ui';
@@ -73,14 +71,6 @@ export function PersistentPlayer() {
<div className="pl-center">
<div className="pl-transport">
<button
type="button"
className={`pl-tbtn${player.shuffle ? ' on' : ''}`}
onClick={() => dispatch(toggleShuffle())}
title={t('player.shuffle')}
>
<Icon name="shuffle" />
</button>
<button
type="button"
className="pl-tbtn"
@@ -107,24 +97,6 @@ export function PersistentPlayer() {
>
<Icon name="skip-forward" fill />
</button>
<button
type="button"
className={`pl-tbtn${player.repeat !== 'none' ? ' on' : ''}`}
onClick={() =>
dispatch(
setRepeat(
player.repeat === 'none'
? 'all'
: player.repeat === 'all'
? 'one'
: 'none',
),
)
}
title={t('player.repeat', { mode: player.repeat })}
>
<Icon name="repeat" />
</button>
</div>
<div className="pl-seek">
<span className="pl-time">
+18
View File
@@ -33,6 +33,8 @@ import {
removeFromQueue,
moveInQueue,
clearQueue,
toggleShuffle,
toggleLoop,
type QueueEntry,
} from '../../store/slices/queue';
import { toggleQueue } from '../../store/slices/player';
@@ -71,6 +73,22 @@ export function QueuePanel() {
<div className="row">
<h3>{t('queue.title')}</h3>
<div style={{ flex: 1 }} />
<button
type="button"
className={`iconbtn sm${queue.shuffle ? ' on' : ''}`}
onClick={() => dispatch(toggleShuffle())}
title={t('queue.shuffle')}
>
<Icon name="shuffle" />
</button>
<button
type="button"
className={`iconbtn sm${queue.loop ? ' on' : ''}`}
onClick={() => dispatch(toggleLoop())}
title={t('queue.loop')}
>
<Icon name="repeat" />
</button>
<button
type="button"
className="iconbtn sm"