mirror of
https://github.com/Psychotoxical/psysonic.git
synced 2026-07-22 07:15:47 +00:00
feat(settings): compact server cards with capability badges (#1054)
* feat(settings): redesign server cards with identity line and capability badges Compact two-line server headers (entry name + user@host), HTTPS lock, and a clickable version info tooltip. Navidrome ≥0.62 shows a green AudioMuse inline badge; older Navidrome keeps the manual toggle row. Adds click-pinned tooltips via data-tooltip-click on TooltipPortal. * feat(settings): unify use/active slot and move delete into edit form Merge Active badge and Use button into one rightmost action; Active uses green styling. Reorder actions to edit, test, use/active. Remove the card delete icon — deletion lives in the server edit form footer. * docs: note compact server cards in CHANGELOG and credits (PR #1054) * fix(credits): move PR #1054 server cards line to cucadmuh block Was appended to Psychotoxical's contributions array by mistake; CHANGELOG already credited cucadmuh (gh pr view author).
This commit is contained in:
@@ -66,4 +66,65 @@ describe('TooltipPortal open delay', () => {
|
||||
fireEvent.mouseDown(btn);
|
||||
expect(screen.queryByText('Play this album')).toBeNull();
|
||||
});
|
||||
|
||||
it('shows immediately on click when data-tooltip-click is set', () => {
|
||||
renderWithProviders(
|
||||
<>
|
||||
<TooltipPortal />
|
||||
<button data-tooltip="Server version" data-tooltip-click="">info</button>
|
||||
</>,
|
||||
);
|
||||
const btn = screen.getByText('info');
|
||||
|
||||
fireEvent.click(btn);
|
||||
expect(screen.getByText('Server version')).toBeInTheDocument();
|
||||
});
|
||||
|
||||
it('does not hide click-mode tooltips on mousedown', () => {
|
||||
renderWithProviders(
|
||||
<>
|
||||
<TooltipPortal />
|
||||
<button data-tooltip="Server version" data-tooltip-click="">info</button>
|
||||
</>,
|
||||
);
|
||||
const btn = screen.getByText('info');
|
||||
|
||||
fireEvent.click(btn);
|
||||
expect(screen.getByText('Server version')).toBeInTheDocument();
|
||||
|
||||
fireEvent.mouseDown(btn);
|
||||
expect(screen.getByText('Server version')).toBeInTheDocument();
|
||||
});
|
||||
|
||||
it('toggles off when the click anchor is clicked again', () => {
|
||||
renderWithProviders(
|
||||
<>
|
||||
<TooltipPortal />
|
||||
<button data-tooltip="Server version" data-tooltip-click="">info</button>
|
||||
</>,
|
||||
);
|
||||
const btn = screen.getByText('info');
|
||||
|
||||
fireEvent.click(btn);
|
||||
expect(screen.getByText('Server version')).toBeInTheDocument();
|
||||
|
||||
fireEvent.click(btn);
|
||||
expect(screen.queryByText('Server version')).toBeNull();
|
||||
});
|
||||
|
||||
it('keeps click-opened tooltips visible after mouseout', () => {
|
||||
renderWithProviders(
|
||||
<>
|
||||
<TooltipPortal />
|
||||
<button data-tooltip="Server version" data-tooltip-click="">info</button>
|
||||
</>,
|
||||
);
|
||||
const btn = screen.getByText('info');
|
||||
|
||||
fireEvent.click(btn);
|
||||
expect(screen.getByText('Server version')).toBeInTheDocument();
|
||||
|
||||
fireEvent.mouseOut(btn, { relatedTarget: document.body });
|
||||
expect(screen.getByText('Server version')).toBeInTheDocument();
|
||||
});
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user