mirror of
https://github.com/Psychotoxical/psysonic.git
synced 2026-07-22 07:15:47 +00:00
refactor(ui): co-locate TooltipPortal and tooltipAttrs as shared primitives in src/ui
This commit is contained in:
@@ -22,7 +22,7 @@ import GlobalConfirmModal from '../components/GlobalConfirmModal';
|
||||
import ThemeMigrationNotice from '../components/ThemeMigrationNotice';
|
||||
import OrbitAccountPicker from '../components/OrbitAccountPicker';
|
||||
import OrbitHelpModal from '../components/OrbitHelpModal';
|
||||
import TooltipPortal from '../components/TooltipPortal';
|
||||
import TooltipPortal from '@/ui/TooltipPortal';
|
||||
import OverlayScrollArea from '../components/OverlayScrollArea';
|
||||
import {
|
||||
APP_MAIN_SCROLL_VIEWPORT_ID,
|
||||
|
||||
@@ -30,7 +30,7 @@ vi.mock('../i18n', () => ({
|
||||
}));
|
||||
vi.mock('../components/MiniPlayer', () => ({ default: () => <div data-testid="mini-player" /> }));
|
||||
vi.mock('../components/GlobalConfirmModal', () => ({ default: () => <div data-testid="confirm-modal" /> }));
|
||||
vi.mock('../components/TooltipPortal', () => ({ default: () => <div data-testid="tooltip-portal" /> }));
|
||||
vi.mock('@/ui/TooltipPortal', () => ({ default: () => <div data-testid="tooltip-portal" /> }));
|
||||
vi.mock('../components/FpsOverlay', () => ({ default: () => <div data-testid="fps-overlay" /> }));
|
||||
vi.mock('../contexts/DragDropContext', () => ({
|
||||
DragDropProvider: ({ children }: { children: React.ReactNode }) => <>{children}</>,
|
||||
|
||||
@@ -2,7 +2,7 @@ import { useEffect } from 'react';
|
||||
import { DragDropProvider } from '../contexts/DragDropContext';
|
||||
import MiniPlayer from '../components/MiniPlayer';
|
||||
import GlobalConfirmModal from '../components/GlobalConfirmModal';
|
||||
import TooltipPortal from '../components/TooltipPortal';
|
||||
import TooltipPortal from '@/ui/TooltipPortal';
|
||||
import FpsOverlay from '../components/FpsOverlay';
|
||||
import { useThemeStore } from '../store/themeStore';
|
||||
import { useFontStore } from '../store/fontStore';
|
||||
|
||||
@@ -18,7 +18,7 @@ import { formatLongDuration } from '../utils/format/formatDuration';
|
||||
import { formatMb } from '../utils/format/formatBytes';
|
||||
import { sanitizeHtml } from '../utils/sanitizeHtml';
|
||||
import { OpenArtistRefInline } from './OpenArtistRefInline';
|
||||
import { tooltipAttrs } from './tooltipAttrs';
|
||||
import { tooltipAttrs } from '@/ui/tooltipAttrs';
|
||||
import { offlineActionPolicy, type OfflineActionPolicy } from '../utils/offline/offlineActionPolicy';
|
||||
import { deriveAlbumGenreTags } from '../utils/library/genreTags';
|
||||
import { genreColor } from '../utils/library/genreColor';
|
||||
|
||||
@@ -5,7 +5,7 @@ import { createPortal } from 'react-dom';
|
||||
import { Check, Filter, X } from 'lucide-react';
|
||||
import { useTranslation } from 'react-i18next';
|
||||
import FilterQuickClear from './FilterQuickClear';
|
||||
import { tooltipAttrs } from './tooltipAttrs';
|
||||
import { tooltipAttrs } from '@/ui/tooltipAttrs';
|
||||
|
||||
type GenreRow = GenreFilterOption;
|
||||
|
||||
|
||||
@@ -11,7 +11,7 @@ import { useDragDrop } from '../contexts/DragDropContext';
|
||||
import { useOrbitSongRowBehavior } from '../hooks/useOrbitSongRowBehavior';
|
||||
import { formatTrackTime } from '../utils/format/formatDuration';
|
||||
import { resolveTrackArtistRefs } from '../utils/playback/trackArtistRefs';
|
||||
import { tooltipAttrs } from './tooltipAttrs';
|
||||
import { tooltipAttrs } from '@/ui/tooltipAttrs';
|
||||
|
||||
interface Props {
|
||||
song: SubsonicSong;
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
import React, { useCallback, useEffect, useLayoutEffect, useRef, useState } from 'react';
|
||||
import { createPortal } from 'react-dom';
|
||||
import { ArrowDownUp, Check } from 'lucide-react';
|
||||
import { tooltipAttrs } from './tooltipAttrs';
|
||||
import { tooltipAttrs } from '@/ui/tooltipAttrs';
|
||||
|
||||
export interface SortOption<V extends string> {
|
||||
value: V;
|
||||
|
||||
@@ -3,7 +3,7 @@ import { createPortal } from 'react-dom';
|
||||
import { CalendarRange, X } from 'lucide-react';
|
||||
import { useTranslation } from 'react-i18next';
|
||||
import FilterQuickClear from './FilterQuickClear';
|
||||
import { tooltipAttrs } from './tooltipAttrs';
|
||||
import { tooltipAttrs } from '@/ui/tooltipAttrs';
|
||||
import {
|
||||
ALBUM_YEAR_MAX,
|
||||
ALBUM_YEAR_MIN,
|
||||
|
||||
@@ -21,7 +21,7 @@ import type { CoverArtRef } from '../../cover/types';
|
||||
import LastfmIcon from '../LastfmIcon';
|
||||
import WikipediaIcon from '../WikipediaIcon';
|
||||
import StarRating from '../StarRating';
|
||||
import { tooltipAttrs } from '../tooltipAttrs';
|
||||
import { tooltipAttrs } from '@/ui/tooltipAttrs';
|
||||
import { offlineActionPolicy, type OfflineActionPolicy } from '../../utils/offline/offlineActionPolicy';
|
||||
|
||||
interface Props {
|
||||
|
||||
@@ -40,7 +40,7 @@ import { ServerCapabilityHeaderBadge } from './ServerCapabilityHeaderBadge';
|
||||
import { useListReorderDnd } from '../../hooks/useListReorderDnd';
|
||||
import { applyListReorderById, type ListReorderDropTarget } from '../../utils/componentHelpers/listReorder';
|
||||
import { ReorderGripHandle } from './ReorderGripHandle';
|
||||
import { tooltipAttrs } from '../tooltipAttrs';
|
||||
import { tooltipAttrs } from '@/ui/tooltipAttrs';
|
||||
|
||||
const AUDIOMUSE_NV_PLUGIN_URL = 'https://github.com/NeptuneHub/AudioMuse-AI-NV-plugin';
|
||||
|
||||
|
||||
@@ -11,7 +11,7 @@ import ArtistRow from '../components/ArtistRow';
|
||||
import PagedSongList from '../components/PagedSongList';
|
||||
import CustomSelect from '../components/CustomSelect';
|
||||
import StarFilterButton from '../components/StarFilterButton';
|
||||
import { tooltipAttrs } from '../components/tooltipAttrs';
|
||||
import { tooltipAttrs } from '@/ui/tooltipAttrs';
|
||||
import { APP_MAIN_SCROLL_VIEWPORT_ID } from '../constants/appScroll';
|
||||
import { useAuthStore } from '../store/authStore';
|
||||
import { usePlayerStore } from '../store/playerStore';
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
import { describe, it, expect, beforeEach, afterEach, vi } from 'vitest';
|
||||
import { act, fireEvent, screen } from '@testing-library/react';
|
||||
import { renderWithProviders } from '@/test/helpers/renderWithProviders';
|
||||
import TooltipPortal from './TooltipPortal';
|
||||
import TooltipPortal from '@/ui/TooltipPortal';
|
||||
|
||||
function Fixture() {
|
||||
return (
|
||||
@@ -1,5 +1,5 @@
|
||||
import { describe, it, expect } from 'vitest';
|
||||
import { tooltipAttrs } from './tooltipAttrs';
|
||||
import { tooltipAttrs } from '@/ui/tooltipAttrs';
|
||||
|
||||
describe('tooltipAttrs', () => {
|
||||
it('pairs data-tooltip with a matching aria-label', () => {
|
||||
Reference in New Issue
Block a user