refactor: Improve edit components
This commit is contained in:
@@ -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
|
||||||
}
|
}
|
||||||
@@ -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} />
|
||||||
))}
|
))}
|
||||||
|
|||||||
Reference in New Issue
Block a user