mirror of
https://github.com/qier222/YesPlayMusic.git
synced 2025-02-28 04:29:57 +08:00
63 lines
1.4 KiB
TypeScript
63 lines
1.4 KiB
TypeScript
import { useNavigate } from 'react-router-dom'
|
|
import { cx } from '@emotion/css'
|
|
import { openContextMenu } from '@/web/states/contextMenus'
|
|
|
|
const ArtistInline = ({
|
|
artists,
|
|
className,
|
|
disableLink,
|
|
onClick,
|
|
hoverClassName,
|
|
}: {
|
|
artists: Artist[]
|
|
className?: string
|
|
hoverClassName?: string
|
|
disableLink?: boolean
|
|
onClick?: (artistId: number) => void
|
|
}) => {
|
|
const navigate = useNavigate()
|
|
const handleClick = (id: number) => {
|
|
if (id === 0 || disableLink) return
|
|
if (!onClick) {
|
|
navigate(`/artist/${id}`)
|
|
} else {
|
|
onClick(id)
|
|
}
|
|
}
|
|
|
|
if (!artists) return <div></div>
|
|
|
|
return (
|
|
<div
|
|
className={cx(
|
|
!className?.includes('line-clamp') && 'line-clamp-1',
|
|
className
|
|
)}
|
|
>
|
|
{artists.map((artist, index) => (
|
|
<span key={`${artist.id}-${artist.name}`}>
|
|
<span
|
|
onClick={() => handleClick(artist.id)}
|
|
onContextMenu={event => {
|
|
openContextMenu({
|
|
event,
|
|
type: 'artist',
|
|
dataSourceID: artist.id,
|
|
options: {
|
|
useCursorPosition: true,
|
|
},
|
|
})
|
|
}}
|
|
className={cx(!!artist.id && !disableLink && hoverClassName)}
|
|
>
|
|
{artist.name}
|
|
</span>
|
|
{index < artists.length - 1 ? ', ' : ''}
|
|
</span>
|
|
))}
|
|
</div>
|
|
)
|
|
}
|
|
|
|
export default ArtistInline
|