refactor: Improve edit components

This commit is contained in:
2024-07-06 16:41:34 +02:00
parent 79cc1c0dd8
commit 3ec2944189
4 changed files with 22 additions and 18 deletions
@@ -1,7 +1,7 @@
import PropTypes from 'prop-types' import PropTypes from 'prop-types'
import Box from '@mui/material/Box' import Box from '@mui/material/Box'
import Typography from '@mui/material/Typography' import Typography from '@mui/material/Typography'
import Edit from './edit.js' import Edit from './index.js'
export default function Article({session, articleId, numero, contenu}) { export default function Article({session, articleId, numero, contenu}) {
const formattedContent = contenu.replaceAll('\n', '<br />') const formattedContent = contenu.replaceAll('\n', '<br />')
@@ -11,7 +11,7 @@ export default function Article({session, articleId, numero, contenu}) {
<Box sx={{display: 'flex', alignItems: 'center'}}> <Box sx={{display: 'flex', alignItems: 'center'}}>
<Typography marginBlock={1} fontWeight='bold'>{!numero || numero === 0 ? 'Article ...' : `Article ${numero}`}</Typography> <Typography marginBlock={1} fontWeight='bold'>{!numero || numero === 0 ? 'Article ...' : `Article ${numero}`}</Typography>
{session && ( {session && (
<Edit session={session} article={articleId} /> <Edit session={session} id={articleId} contenu={contenu} collection='articles' />
)} )}
</Box> </Box>
@@ -19,12 +19,13 @@ const LightTooltip = styled(({className, ...props}) => (
}, },
})) }))
export default function Edit({titre, article, session}) { export default function Edit({id, session, contenu, collection}) {
const router = useRouter() const router = useRouter()
const handleClick = () => { const handleClick = () => {
console.log('titre', titre) console.log('🚀 ~ Edit ~ id:', id)
console.log('article', article) console.log('🚀 ~ Edit ~ contenu:', contenu)
console.log('🚀 ~ Edit ~ collection:', collection)
if (!session) { if (!session) {
router.push('/login') router.push('/login')
} }
@@ -32,11 +33,13 @@ export default function Edit({titre, article, session}) {
return ( return (
<IconButton size='large' aria-label='edit' onClick={handleClick}> <IconButton size='large' aria-label='edit' onClick={handleClick}>
{titre ? ( {collection === 'titres' && (
<LightTooltip title='Éditer un titre'> <LightTooltip title='Éditer un titre'>
<TitleIcon color='warning' fontSize='inherit' /> <TitleIcon color='warning' fontSize='inherit' />
</LightTooltip> </LightTooltip>
) : ( )}
{collection === 'articles' && (
<LightTooltip title='Éditer un article'> <LightTooltip title='Éditer un article'>
<ArticleIcon color='warning' fontSize='inherit' /> <ArticleIcon color='warning' fontSize='inherit' />
</LightTooltip> </LightTooltip>
@@ -46,7 +49,8 @@ export default function Edit({titre, article, session}) {
} }
Edit.propTypes = { Edit.propTypes = {
titre: PropTypes.string, id: PropTypes.string.isRequired,
article: PropTypes.string, session: PropTypes.object.isRequired,
session: PropTypes.object.isRequired contenu: PropTypes.string.isRequired,
collection: PropTypes.oneOf(['titres', 'articles']).isRequired
} }
@@ -1,14 +1,14 @@
import PropTypes from 'prop-types' import PropTypes from 'prop-types'
import Box from '@mui/material/Box' import Box from '@mui/material/Box'
import Typography from '@mui/material/Typography' import Typography from '@mui/material/Typography'
import Edit from './edit.js' import Edit from './index.js'
export default function Titre({session, titreId, titre}) { export default function Titre({session, titreId, contenu}) {
return ( return (
<Box p={1} marginBlock={1} sx={{display: 'flex', alignItems: 'center'}}> <Box p={1} marginBlock={1} sx={{display: 'flex', alignItems: 'center'}}>
<Typography sx={{textDecoration: 'underline'}} fontWeight='bold'>{titre}</Typography> <Typography sx={{textDecoration: 'underline'}} fontWeight='bold'>{contenu}</Typography>
{session && ( {session && (
<Edit session={session} titre={titreId} /> <Edit session={session} id={titreId} contenu={contenu} collection='titres' />
)} )}
</Box> </Box>
) )
@@ -17,5 +17,5 @@ export default function Titre({session, titreId, titre}) {
Titre.propTypes = { Titre.propTypes = {
session: PropTypes.object, session: PropTypes.object,
titreId: PropTypes.string.isRequired, titreId: PropTypes.string.isRequired,
titre: PropTypes.string.isRequired contenu: PropTypes.string.isRequired
} }
+3 -3
View File
@@ -9,8 +9,8 @@ import AddCommentIcon from '@mui/icons-material/AddComment'
import CommentIcon from '@mui/icons-material/Comment' import CommentIcon from '@mui/icons-material/Comment'
import Tooltip, {tooltipClasses} from '@mui/material/Tooltip' import Tooltip, {tooltipClasses} from '@mui/material/Tooltip'
import AuthAlert from '../auth-form/auth-alert.js' import AuthAlert from '../auth-form/auth-alert.js'
import Titre from './titre.js' import Titre from './edit/titre.js'
import Article from './article.js' import Article from './edit/article.js'
import HandleCreate from './create/handle-create.js' import HandleCreate from './create/handle-create.js'
import ListComments from './list-comments.js' import ListComments from './list-comments.js'
import {formatKonstitisyon} from '@/lib/format.js' import {formatKonstitisyon} from '@/lib/format.js'
@@ -61,7 +61,7 @@ export default function Konstitisyon({session, titres, articles}) {
<Box> <Box>
{konstitisyon.map(({titreId, titre, articles}) => ( {konstitisyon.map(({titreId, titre, articles}) => (
<Paper key={titreId} variant='outlined' sx={{p: 1, marginBlock: 2}} p={2} > <Paper key={titreId} variant='outlined' sx={{p: 1, marginBlock: 2}} p={2} >
<Titre session={session} titreId={titreId} titre={titre} /> <Titre session={session} titreId={titreId} contenu={titre} />
{articles.map(({id, numero, contenu}) => ( {articles.map(({id, numero, contenu}) => (
<Article key={id} session={session} articleId={id} numero={numero} contenu={contenu} /> <Article key={id} session={session} articleId={id} numero={numero} contenu={contenu} />
))} ))}