Files
pawol.nu/components/teks/drawer-bar.js
T

113 lines
2.6 KiB
JavaScript
Raw Normal View History

import {useState} from 'react'
2022-01-19 06:35:04 +04:00
import {styled} from '@mui/material/styles'
import PropTypes from 'prop-types'
2022-09-05 21:33:18 +04:00
import {union, deburr} from 'lodash'
import {
Divider,
FormControl,
InputAdornment,
2022-01-19 06:35:04 +04:00
InputBase
2022-01-19 07:06:26 +04:00
} from '@mui/material'
2022-01-19 07:06:26 +04:00
import SearchIcon from '@mui/icons-material/Search'
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}`]: {
marginBottom: '6em'
},
2022-01-19 06:35:04 +04:00
[`& .${classes.form}`]: {
marginLeft: theme.spacing(1)
},
2022-01-19 06:35:04 +04:00
[`& .${classes.text}`]: {
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)
}
}
2022-05-23 03:19:21 +04:00
export default function DrawerBar({meteEsMobilOuve, paroles, slug}) {
const [search, setSearch] = useState('')
2020-12-18 22:08:34 +01:00
const [slugTeksChwazi, meteSlugTeksChwazi] = useState(slug)
2022-05-20 02:15:56 +04:00
const mizikFiltered = getMizikFiltered(paroles, search)
const handleSearch = event => {
event.preventDefault()
2022-09-05 21:33:44 +04:00
const {value} = event.target
setSearch(value)
}
return (
2022-01-19 06:35:04 +04:00
<Root className='search'>
<FormControl className={classes.form}>
<InputBase
className={classes.toolbar}
2022-03-13 01:38:45 +04:00
placeholder='Recherche...'
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}
/>
</div>
2022-01-19 06:35:04 +04:00
</Root>
)
}
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
}
DrawerBar.defaultProps = {
2020-12-18 22:21:53 +01:00
meteEsMobilOuve: null,
2022-05-23 03:19:21 +04:00
slug: null
}