Add Edit component to Titre & Article

This commit is contained in:
2024-05-20 14:48:52 +04:00
parent 2d527568a8
commit 219abf5c6b
3 changed files with 22 additions and 9 deletions
+9 -3
View File
@@ -1,15 +1,19 @@
import PropTypes from 'prop-types'
import Box from '@mui/material/Box'
import Typography from '@mui/material/Typography'
import Edit from './edit.js'
export default function Article({numero, contenu}) {
export default function Article({session, articleId, numero, contenu}) {
const formattedContent = contenu.replaceAll('\n', '<br />')
return (
<Box textAlign='justify' p={0.5}>
{numero > 0 && (
<Typography marginBlock={1} fontWeight='bold'>Article {numero}</Typography>
<Box sx={{display: 'flex', alignItems: 'center'}}>
<Typography marginBlock={1} fontWeight='bold'>{numero === 0 ? 'Article 1' : `Article ${numero}`}</Typography>
{session && (
<Edit session={session} article={articleId} />
)}
</Box>
<Typography dangerouslySetInnerHTML={{__html: formattedContent}} />
</Box>
@@ -17,6 +21,8 @@ export default function Article({numero, contenu}) {
}
Article.propTypes = {
session: PropTypes.object,
articleId: PropTypes.string.isRequired,
numero: PropTypes.number,
contenu: PropTypes.string.isRequired
}
+4 -3
View File
@@ -5,16 +5,16 @@ import Titre from './titre.js'
import Article from './article.js'
import {formatKonstitisyon} from '@/lib/format.js'
export default function Konstitisyon({titres, articles}) {
export default function Konstitisyon({session, titres, articles}) {
const konstitisyon = formatKonstitisyon(titres, articles)
return (
<Box>
{konstitisyon.map(({titreId, titre, articles}) => (
<Paper key={titreId} variant='outlined' sx={{p: 1, marginBlock: 2}} p={2} >
<Titre titre={titre} />
<Titre session={session} titreId={titreId} titre={titre} />
{articles.map(({id, numero, contenu}) => (
<Article key={id} numero={numero} contenu={contenu} />
<Article key={id} session={session} articleId={id} numero={numero} contenu={contenu} />
))}
</Paper>
))}
@@ -23,6 +23,7 @@ export default function Konstitisyon({titres, articles}) {
}
Konstitisyon.propTypes = {
session: PropTypes.object,
titres: PropTypes.object.isRequired,
articles: PropTypes.object.isRequired
}
+8 -2
View File
@@ -1,15 +1,21 @@
import PropTypes from 'prop-types'
import Box from '@mui/material/Box'
import Typography from '@mui/material/Typography'
import Edit from './edit.js'
export default function Titre({titre}) {
export default function Titre({session, titreId, titre}) {
return (
<Box p={1} marginBlock={1}>
<Box p={1} marginBlock={1} sx={{display: 'flex', alignItems: 'center'}}>
<Typography sx={{textDecoration: 'underline'}} fontWeight='bold'>{titre}</Typography>
{session && (
<Edit session={session} titre={titreId} />
)}
</Box>
)
}
Titre.propTypes = {
session: PropTypes.object,
titreId: PropTypes.string.isRequired,
titre: PropTypes.string.isRequired
}