diff --git a/components/teks/teks-drawer.js b/components/teks/teks-drawer.js
index 8f1f0ac..21d2401 100644
--- a/components/teks/teks-drawer.js
+++ b/components/teks/teks-drawer.js
@@ -1,45 +1,44 @@
-import {useEffect, useState} from 'react'
-import PropTypes from 'prop-types'
+import {useEffect, useState, useContext} from 'react'
import Link from 'next/link'
-
-import {
- Toolbar,
- Typography,
- AppBar,
- CssBaseline,
- Drawer,
- Hidden,
- IconButton,
- Box
-} from '@mui/material'
+import PropTypes from 'prop-types'
+import deburr from 'lodash.deburr'
+import union from 'lodash.union'
+import {styled} from '@mui/material/styles'
+import AppBar from '@mui/material/AppBar'
+import Box from '@mui/material/Box'
+import CssBaseline from '@mui/material/CssBaseline'
+import Divider from '@mui/material/Divider'
+import Drawer from '@mui/material/Drawer'
+import IconButton from '@mui/material/IconButton'
+import MenuIcon from '@mui/icons-material/Menu'
+import Toolbar from '@mui/material/Toolbar'
+import Typography from '@mui/material/Typography'
+import FormControl from '@mui/material/FormControl'
+import InputAdornment from '@mui/material/InputAdornment'
+import InputBase from '@mui/material/InputBase'
+import SearchIcon from '@mui/icons-material/Search'
+import LinearProgress from '@mui/material/LinearProgress'
+import CircularProgress from '@mui/material/CircularProgress'
import KeyboardBackspaceIcon from '@mui/icons-material/KeyboardBackspace'
-import MenuIcon from '@mui/icons-material/Menu'
+import MizikLis from '../awtis/mizik-lis'
+import {jwennTeks} from '../../lib/oki-api'
-import {useTheme, styled} from '@mui/material/styles'
-
-import DrawerBar from './drawer-bar'
+import ParolesListContext from '../../contexts/paroles-list'
+import MontreTeks from './montre-teks'
import DenyeTeks from './denye-teks'
-import VweKouteAchte from './vwe-koute-achte'
import Teks from './teks'
+import VweKouteAchte from './vwe-koute-achte'
-const PREFIX = 'teks-drawer'
+const drawerWidth = 240
+
+const PREFIX = 'drawer-bar'
const classes = {
- root: `${PREFIX}-root`,
- drawer: `${PREFIX}-drawer`,
- appBar: `${PREFIX}-appBar`,
- menuButton: `${PREFIX}-menuButton`,
toolbar: `${PREFIX}-toolbar`,
- drawerPaper: `${PREFIX}-drawerPaper`,
- content: `${PREFIX}-content`,
- list: `${PREFIX}-list`,
- form: `${PREFIX}-form`,
- gridText: `${PREFIX}-gridText`,
- grid: `${PREFIX}-grid`,
- koute: `${PREFIX}-koute`,
- vwe: `${PREFIX}-vwe`
+ vwe: `${PREFIX}-vwe`,
+ koute: `${PREFIX}-koute`
}
const Root = styled('div')((
@@ -47,55 +46,14 @@ const Root = styled('div')((
theme
}
) => ({
- [`&.${classes.root}`]: {
- display: 'flex'
- },
-
- [`& .${classes.drawer}`]: {
- marginTop: '10em',
- [theme.breakpoints.up('sm')]: {
- width: drawerWidth,
- flexShrink: 0
- }
- },
-
- [`& .${classes.appBar}`]: {
- borderTop: '2px solid #303030',
- marginTop: '3rem',
- [theme.breakpoints.up('sm')]: {
- width: `calc(100% - ${drawerWidth}px)`,
- marginLeft: drawerWidth
- },
- zIndex: 1
- },
-
- [`& .${classes.menuButton}`]: {
- [theme.breakpoints.up('sm')]: {
- display: 'none'
- }
- },
-
[`& .${classes.toolbar}`]: theme.mixins.toolbar,
+}))
- [`& .${classes.drawerPaper}`]: {
- borderTop: '2px solid #303030',
- marginTop: '3rem',
- width: drawerWidth
- },
-
- [`& .${classes.content}`]: {
- flexGrow: 1,
- padding: theme.spacing(1)
- },
-
- [`& .${classes.list}`]: {
- marginBottom: '6em'
- },
-
- [`& .${classes.form}`]: {
- marginLeft: theme.spacing(1)
- },
-
+const Stream = styled('div')((
+ {
+ theme
+ }
+) => ({
[`& .${classes.koute}`]: {
position: 'absolute',
right: '40px',
@@ -115,15 +73,86 @@ const Root = styled('div')((
}
}))
-const drawerWidth = 240
+const getMizikFiltered = (paroles, filter) => {
+ if (paroles) {
+ const filteredTitre = paroles.filter(({attributes}) => {
+ const deburredTit = deburr(attributes.titre)
+ return deburredTit.toLowerCase().includes(deburr(filter.toLowerCase()))
+ })
-export default function TeksDrawer({paroles, parole, paroleId, commentaires, denyeTeks}) {
- const theme = useTheme()
- const [esMobilOuve, meteEsMobilOuve] = useState(false)
+ const filteredAlias = paroles.filter(({attributes}) => {
+ const aliasLis = attributes.artistes.data.map(({attributes}) => deburr(attributes.alias)).join(', ')
+ return aliasLis.toLowerCase().includes(deburr(filter.toLowerCase()))
+ })
+
+ return union(filteredTitre, filteredAlias)
+ }
+}
+
+export default function TeksDrawer({parole, paroleId, slug, denyeTeks}) {
const [open, setOpen] = useState(false)
+ const {paroles, setParoles} = useContext(ParolesListContext)
+ const [mobileOpen, setMobileOpen] = useState(false)
+ const [isLoading, setIsLoading] = useState(false)
+ const [isParolesHidden, setIsParolesHidden] = useState(true)
const [error, setError] = useState('')
const [success, setSuccess] = useState('')
+ const [search, setSearch] = useState('')
+ const [slugTeksChwazi, meteSlugTeksChwazi] = useState(slug)
+
+ const mizikFiltered = getMizikFiltered(paroles, search)
+
+ const handleSearch = event => {
+ event.preventDefault()
+ const value = event.target.value
+ setSearch(value)
+ }
+
+ const handleOpenDrawer = async () => {
+ setMobileOpen(true)
+ if (paroles.length === 0) {
+ setIsLoading(true)
+ try {
+ const teks = await jwennTeks()
+ setParoles(teks)
+ } catch (error) {
+ console.log('⚠️ error', error.message)
+ }
+
+ setIsLoading(false)
+ }
+ }
+
+ const handleCloseDrawer = () => {
+ setMobileOpen(false)
+ }
+
+ const handleClick = async () => {
+ setIsLoading(true)
+ try {
+ const teks = await jwennTeks()
+ setParoles(teks)
+ } catch (error) {
+ console.log('⚠️ error', error.message)
+ }
+
+ setIsLoading(false)
+ setIsParolesHidden(false)
+ }
+
+ useEffect(() => {
+ if (paroles.length > 0) {
+ setIsParolesHidden(false)
+ }
+ }, [paroles.length])
+
+ useEffect(() => {
+ if (error || success) {
+ setOpen(true)
+ }
+ }, [error, success, setOpen])
+
const handleClose = (event, reason) => {
if (reason === 'clickaway') {
return
@@ -134,35 +163,61 @@ export default function TeksDrawer({paroles, parole, paroleId, commentaires, den
setError('')
}
- const handleDrawerToggle = () => {
- meteEsMobilOuve(!esMobilOuve)
+ function CustomDrawer() {
+ return (
+
+
+
+
+
+ }
+ value={search}
+ onChange={handleSearch}
+ />
+
+
+
+
+
+
+ )
}
- const container = typeof window === 'undefined' ? undefined : () => window.document.body
-
- useEffect(() => {
- if (error || success) {
- setOpen(true)
- }
- }, [error, success, setOpen])
-
return (
-
+
-
+
{parole ? (
- <>
+
@@ -178,7 +233,7 @@ export default function TeksDrawer({paroles, parole, paroleId, commentaires, den
)}
- >
+
) : (
Derniers textes
@@ -186,42 +241,68 @@ export default function TeksDrawer({paroles, parole, paroleId, commentaires, den
)}
-
-
+ >
+
+
+ ) : (
+
+ )}
+
+
+ {isLoading || isParolesHidden ? (
+ <>
+
+ {isLoading && (
+
+
+
+ )}
+ >
+ ) : (
+
+ )}
+
+
+
+
{parole ? (
) : (
-
-
-
+
)}
-
-
+
+
)
}
-TeksDrawer.propTypes = {
- paroles: PropTypes.array.isRequired,
- parole: PropTypes.object,
- paroleId: PropTypes.number,
- commentaires: PropTypes.array,
- denyeTeks: PropTypes.array
-}
-
TeksDrawer.defaultProps = {
parole: null,
paroleId: null,
- commentaires: null,
+ slug: null,
denyeTeks: null
}
+
+TeksDrawer.propTypes = {
+ parole: PropTypes.object,
+ paroleId: PropTypes.number,
+ slug: PropTypes.string,
+ denyeTeks: PropTypes.array
+}