2020-12-13 23:20:07 +01:00
|
|
|
import {useState} from 'react'
|
2022-01-19 06:35:04 +04:00
|
|
|
import {styled} from '@mui/material/styles'
|
2020-12-13 23:20:07 +01:00
|
|
|
import PropTypes from 'prop-types'
|
2020-12-15 08:23:32 +01:00
|
|
|
import union from 'lodash.union'
|
2020-12-19 22:51:37 +01:00
|
|
|
import deburr from 'lodash.deburr'
|
2020-12-13 23:20:07 +01:00
|
|
|
|
|
|
|
|
import {
|
|
|
|
|
Divider,
|
|
|
|
|
FormControl,
|
|
|
|
|
InputAdornment,
|
2022-01-19 06:35:04 +04:00
|
|
|
InputBase
|
2022-01-19 07:06:26 +04:00
|
|
|
} from '@mui/material'
|
2020-12-13 23:20:07 +01:00
|
|
|
|
2022-01-19 07:06:26 +04:00
|
|
|
import SearchIcon from '@mui/icons-material/Search'
|
2020-12-13 23:20:07 +01:00
|
|
|
|
|
|
|
|
import MizikLis from '../awtis/mizik-lis'
|
|
|
|
|
|
2022-01-19 06:35:04 +04:00
|
|
|
const PREFIX = 'drawer-bar'
|
|
|
|
|
|
|
|
|
|
const classes = {
|
|
|
|
|
toolbar: `${PREFIX}-toolbar`,
|
|
|
|
|
list: `${PREFIX}-list`,
|
|
|
|
|
form: `${PREFIX}-form`,
|
|
|
|
|
text: `${PREFIX}-text`
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
const Root = styled('div')((
|
|
|
|
|
{
|
|
|
|
|
theme
|
|
|
|
|
}
|
|
|
|
|
) => ({
|
|
|
|
|
[`& .${classes.toolbar}`]: theme.mixins.toolbar,
|
|
|
|
|
|
|
|
|
|
[`& .${classes.list}`]: {
|
2020-12-13 23:20:07 +01:00
|
|
|
marginBottom: '6em'
|
|
|
|
|
},
|
2022-01-19 06:35:04 +04:00
|
|
|
|
|
|
|
|
[`& .${classes.form}`]: {
|
2020-12-13 23:20:07 +01:00
|
|
|
marginLeft: theme.spacing(1)
|
|
|
|
|
},
|
2022-01-19 06:35:04 +04:00
|
|
|
|
|
|
|
|
[`& .${classes.text}`]: {
|
2020-12-13 23:20:07 +01:00
|
|
|
marginBottom: '0.5em'
|
|
|
|
|
}
|
|
|
|
|
}))
|
|
|
|
|
|
2022-05-20 02:15:56 +04:00
|
|
|
const getMizikFiltered = (paroles, filter) => {
|
|
|
|
|
if (paroles) {
|
|
|
|
|
const filteredTitre = paroles.filter(({attributes}) => {
|
|
|
|
|
const deburredTit = deburr(attributes.titre)
|
2020-12-19 22:51:37 +01:00
|
|
|
return deburredTit.toLowerCase().includes(deburr(filter.toLowerCase()))
|
2020-12-15 08:23:32 +01:00
|
|
|
})
|
|
|
|
|
|
2022-05-20 02:15:56 +04:00
|
|
|
const filteredAlias = paroles.filter(({attributes}) => {
|
|
|
|
|
const aliasLis = attributes.artistes.data.map(({attributes}) => deburr(attributes.alias)).join(', ')
|
2020-12-19 22:51:37 +01:00
|
|
|
return aliasLis.toLowerCase().includes(deburr(filter.toLowerCase()))
|
2020-12-15 08:23:32 +01:00
|
|
|
})
|
|
|
|
|
|
|
|
|
|
return union(filteredTitre, filteredAlias)
|
2020-12-13 23:20:07 +01:00
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
2022-05-23 03:19:21 +04:00
|
|
|
export default function DrawerBar({meteEsMobilOuve, paroles, slug}) {
|
2020-12-13 23:20:07 +01:00
|
|
|
const [search, setSearch] = useState('')
|
2020-12-18 22:08:34 +01:00
|
|
|
const [slugTeksChwazi, meteSlugTeksChwazi] = useState(slug)
|
2020-12-13 23:20:07 +01:00
|
|
|
|
2022-05-20 02:15:56 +04:00
|
|
|
const mizikFiltered = getMizikFiltered(paroles, search)
|
2020-12-13 23:20:07 +01:00
|
|
|
|
|
|
|
|
const handleSearch = event => {
|
|
|
|
|
event.preventDefault()
|
|
|
|
|
const value = event.target.value
|
|
|
|
|
setSearch(value)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return (
|
2022-01-19 06:35:04 +04:00
|
|
|
<Root className='search'>
|
2020-12-13 23:20:07 +01:00
|
|
|
<FormControl className={classes.form}>
|
|
|
|
|
<InputBase
|
|
|
|
|
className={classes.toolbar}
|
2022-03-13 01:38:45 +04:00
|
|
|
placeholder='Recherche...'
|
2020-12-13 23:20:07 +01:00
|
|
|
startAdornment={
|
|
|
|
|
<InputAdornment position='start'>
|
|
|
|
|
<SearchIcon />
|
|
|
|
|
</InputAdornment>
|
|
|
|
|
}
|
|
|
|
|
value={search}
|
|
|
|
|
onChange={handleSearch}
|
|
|
|
|
/>
|
|
|
|
|
</FormControl>
|
|
|
|
|
<Divider />
|
|
|
|
|
<div className={classes.list}>
|
|
|
|
|
<MizikLis
|
2020-12-18 22:08:34 +01:00
|
|
|
niAwtis
|
2020-12-18 22:21:53 +01:00
|
|
|
meteEsMobilOuve={meteEsMobilOuve}
|
2022-05-20 02:15:56 +04:00
|
|
|
paroles={mizikFiltered}
|
2020-12-18 22:08:34 +01:00
|
|
|
slugTeksChwazi={slugTeksChwazi}
|
|
|
|
|
meteSlugTeksChwazi={meteSlugTeksChwazi}
|
2020-12-13 23:20:07 +01:00
|
|
|
/>
|
|
|
|
|
</div>
|
2022-01-19 06:35:04 +04:00
|
|
|
</Root>
|
2020-12-13 23:20:07 +01:00
|
|
|
)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
DrawerBar.propTypes = {
|
2020-12-18 22:21:53 +01:00
|
|
|
meteEsMobilOuve: PropTypes.func,
|
2022-05-20 02:15:56 +04:00
|
|
|
paroles: PropTypes.array.isRequired,
|
2022-05-23 03:19:21 +04:00
|
|
|
slug: PropTypes.string
|
2020-12-13 23:20:07 +01:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
DrawerBar.defaultProps = {
|
2020-12-18 22:21:53 +01:00
|
|
|
meteEsMobilOuve: null,
|
2022-05-23 03:19:21 +04:00
|
|
|
slug: null
|
2020-12-13 23:20:07 +01:00
|
|
|
}
|