Files
pawol.nu/components/awtis/mizik-lis.js
T

92 lines
2.5 KiB
JavaScript
Raw Normal View History

2020-12-11 01:48:25 +01:00
import PropTypes from 'prop-types'
import {useRouter} from 'next/router'
2020-12-11 01:48:25 +01:00
2022-01-19 07:06:26 +04:00
import {styled} from '@mui/material/styles'
import {List, ListItem, ListItemText} from '@mui/material'
import FiberNewOutlinedIcon from '@mui/icons-material/FiberNewOutlined'
import LibraryMusicIcon from '@mui/icons-material/LibraryMusic'
import ExplicitIcon from '@mui/icons-material/Explicit'
2021-01-12 21:59:17 +01:00
2020-12-25 10:59:08 +01:00
import {esBrandNew} from '../../lib/date'
2022-05-22 00:17:28 +04:00
import {getAlias} from '../../lib/utils/format'
2020-12-11 01:48:25 +01:00
2022-01-19 06:35:04 +04:00
const PREFIX = 'mizik-lis'
const classes = {
root: `${PREFIX}-root`
}
const StyledList = styled(List)((
{
theme
}
) => ({
[`&.${classes.root}`]: {
2020-12-11 01:48:25 +01:00
width: '100%',
maxWidth: 360,
backgroundColor: theme.palette.background.paper
}
}))
2022-05-20 02:15:56 +04:00
export default function MizikLis({meteEsMobilOuve, niAwtis, paroles, slugTeksChwazi, meteSlugTeksChwazi}) {
const router = useRouter()
const handleClick = slug => {
2020-12-18 22:13:52 +01:00
if (meteSlugTeksChwazi) {
meteSlugTeksChwazi(slug)
}
2020-12-18 22:13:52 +01:00
if (slug !== slugTeksChwazi) {
if (niAwtis) {
2022-03-13 01:38:45 +04:00
router.push(`/paroles/${slug}`).then(() => window.scrollTo(0, 0))
} else {
2022-03-13 01:38:45 +04:00
router.push(`/paroles/${slug}#${slug}`).then(() => window.scrollTo(0, 0))
}
}
2020-12-18 22:21:53 +01:00
if (meteEsMobilOuve) {
meteEsMobilOuve(false)
}
}
2020-12-11 01:48:25 +01:00
return (
2022-01-19 06:35:04 +04:00
<StyledList component='nav' className={classes.root} aria-label='mizik'>
2022-05-20 02:15:56 +04:00
{paroles.map(({id, attributes}) => (
<ListItem
2022-05-20 02:15:56 +04:00
key={id}
button
2022-05-20 02:15:56 +04:00
id={attributes.slug}
selected={slugTeksChwazi === attributes.slug}
onClick={() => handleClick(attributes.slug)}
>
2022-05-22 00:17:28 +04:00
<ListItemText primary={attributes.titre} secondary={niAwtis ? getAlias(attributes.artistes, attributes.prioriteArtistes) : null} />
2022-05-20 02:15:56 +04:00
{attributes.explicite && (
2021-05-29 01:37:27 +02:00
<ExplicitIcon style={{marginRight: 5}} color='secondary' />
)}
2022-05-20 02:15:56 +04:00
{attributes.okiMizikID && (
2021-01-12 21:59:17 +01:00
<LibraryMusicIcon style={{fontSize: 40}} color='primary' />
)}
2022-05-20 02:15:56 +04:00
{esBrandNew(attributes.publishedAt) && (
2020-12-24 18:49:13 +01:00
<FiberNewOutlinedIcon style={{fontSize: 40}} color='primary' />
)}
2020-12-11 01:48:25 +01:00
</ListItem>
))}
2022-01-19 06:35:04 +04:00
</StyledList>
2020-12-11 01:48:25 +01:00
)
}
MizikLis.propTypes = {
2020-12-18 22:21:53 +01:00
meteEsMobilOuve: PropTypes.func,
2020-12-18 22:13:52 +01:00
niAwtis: PropTypes.bool,
2022-05-20 02:15:56 +04:00
paroles: PropTypes.array.isRequired,
2020-12-18 22:13:52 +01:00
slugTeksChwazi: PropTypes.string,
meteSlugTeksChwazi: PropTypes.func
}
MizikLis.defaultProps = {
2020-12-18 22:21:53 +01:00
meteEsMobilOuve: null,
2020-12-18 22:13:52 +01:00
niAwtis: false,
slugTeksChwazi: null,
meteSlugTeksChwazi: null
2020-12-11 01:48:25 +01:00
}