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

77 lines
2.2 KiB
JavaScript
Raw Normal View History

2023-07-22 13:53:31 +04:00
'use client'
import {useState} from 'react'
2023-07-22 13:53:31 +04:00
import Box from '@mui/material/Box'
import PropTypes from 'prop-types'
2022-09-05 21:33:18 +04:00
import {union, deburr} from 'lodash'
2022-11-11 18:27:50 +04:00
import useMediaQuery from '@mui/material/useMediaQuery'
2023-07-22 13:53:31 +04:00
import Divider from '@mui/material/Divider'
import FormControl from '@mui/material/FormControl'
import InputAdornment from '@mui/material/InputAdornment'
import InputBase from '@mui/material/InputBase'
2022-01-19 07:06:26 +04:00
import SearchIcon from '@mui/icons-material/Search'
import MizikLis from '../awtis/mizik-lis'
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)
}
}
2023-07-22 14:50:26 +04:00
export default function DrawerBar({paroles, meteEsMobilOuve}) {
2022-11-11 18:27:50 +04:00
const isMobile = useMediaQuery('(max-width:600px)')
const [search, setSearch] = useState('')
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 (
2023-07-22 13:53:31 +04:00
<Box sx={{height: '100%'}}>
<FormControl>
<InputBase
2023-07-22 13:53:31 +04:00
sx={{paddingBlock: 2}}
2022-03-13 01:38:45 +04:00
placeholder='Recherche...'
startAdornment={
<InputAdornment position='start'>
<SearchIcon />
</InputAdornment>
}
value={search}
onChange={handleSearch}
/>
</FormControl>
<Divider />
2023-07-22 13:53:31 +04:00
<Box style={{marginBottom: `${isMobile ? 0 : '3em'}`, height: `calc(100% - ${isMobile ? '65px' : '115px'})`}}>
<MizikLis
2020-12-18 22:08:34 +01:00
niAwtis
2022-05-20 02:15:56 +04:00
paroles={mizikFiltered}
2023-07-22 14:50:26 +04:00
meteEsMobilOuve={meteEsMobilOuve}
/>
2023-07-22 13:53:31 +04:00
</Box>
</Box>
)
}
DrawerBar.propTypes = {
2023-07-22 14:50:26 +04:00
paroles: PropTypes.array.isRequired,
meteEsMobilOuve: PropTypes.func.isRequired
}