From 06879763bc89457848e74618f0c6ed31cb6836cf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=A9dric=20FAMIBELLE-PRONZOLA?= Date: Sat, 22 Jun 2024 07:52:32 +0400 Subject: [PATCH] Create titres --- app/page.js | 4 +- components/konstitisyon/create.js | 33 -------- .../konstitisyon/create/create-titre.js | 14 ++++ .../konstitisyon/create/handle-create.js | 41 +++++++++ components/konstitisyon/create/index.js | 84 +++++++++++++++++++ components/konstitisyon/forms/create-form.js | 15 +++- 6 files changed, 152 insertions(+), 39 deletions(-) delete mode 100644 components/konstitisyon/create.js create mode 100644 components/konstitisyon/create/create-titre.js create mode 100644 components/konstitisyon/create/handle-create.js create mode 100644 components/konstitisyon/create/index.js diff --git a/app/page.js b/app/page.js index 16c28cd..7ea70dc 100644 --- a/app/page.js +++ b/app/page.js @@ -6,7 +6,7 @@ import {auth} from '../auth.js' import Konstitisyon from '@/components/konstitisyon/index.js' import Footer from '@/components/footer.js' import Sign from '@/components/session/sign.js' -import Create from '@/components/konstitisyon/create.js' +import Create from '@/components/konstitisyon/create/index.js' const apiUrl = process.env.DIRECTUS_API_URL const appTitle = process.env.APP_TITLE @@ -59,7 +59,7 @@ export default async function Page() { {appTitle.toUpperCase()} {session && ( - + )} diff --git a/components/konstitisyon/create.js b/components/konstitisyon/create.js deleted file mode 100644 index d2fa9d8..0000000 --- a/components/konstitisyon/create.js +++ /dev/null @@ -1,33 +0,0 @@ -import Box from '@mui/material/Box' -import SpeedDial from '@mui/material/SpeedDial' -import SpeedDialIcon from '@mui/material/SpeedDialIcon' -import SpeedDialAction from '@mui/material/SpeedDialAction' -import ArticleIcon from '@mui/icons-material/Article' -import TitleIcon from '@mui/icons-material/Title' - -const actions = [ - {icon: , name: 'Créer un titre'}, - {icon: , name: 'Créer un article'} -] - -export default function Create() { - return ( - - } - > - {actions.map(action => ( - - ))} - - - ) -} diff --git a/components/konstitisyon/create/create-titre.js b/components/konstitisyon/create/create-titre.js new file mode 100644 index 0000000..d9a022e --- /dev/null +++ b/components/konstitisyon/create/create-titre.js @@ -0,0 +1,14 @@ +'use client' + +import CreateForm from '../forms/create-form.js' + +export default function CreateTitre(props) { + return ( + + ) +} diff --git a/components/konstitisyon/create/handle-create.js b/components/konstitisyon/create/handle-create.js new file mode 100644 index 0000000..403dbbd --- /dev/null +++ b/components/konstitisyon/create/handle-create.js @@ -0,0 +1,41 @@ +import PropTypes from 'prop-types' +import CreateTitre from './create-titre.js' + +export default function HandleCreate({ + session, + isOpen, + setIsOpen, + setError, + setSuccess, + setIsErrorAlertOpen, + setIsSuccessAlertOpen, + collection +}) { + if (collection === 'titres') { + return ( + + ) + } +} + +HandleCreate.propTypes = { + session: PropTypes.object, + isOpen: PropTypes.bool.isRequired, + setIsOpen: PropTypes.func.isRequired, + setError: PropTypes.func.isRequired, + setSuccess: PropTypes.func.isRequired, + setIsErrorAlertOpen: PropTypes.func.isRequired, + setIsSuccessAlertOpen: PropTypes.func.isRequired, + collection: PropTypes.oneOf(['titres', 'articles']).isRequired +} diff --git a/components/konstitisyon/create/index.js b/components/konstitisyon/create/index.js new file mode 100644 index 0000000..67b0b29 --- /dev/null +++ b/components/konstitisyon/create/index.js @@ -0,0 +1,84 @@ +'use client' + +import PropTypes from 'prop-types' +import Box from '@mui/material/Box' +import SpeedDial from '@mui/material/SpeedDial' +import SpeedDialIcon from '@mui/material/SpeedDialIcon' +import SpeedDialAction from '@mui/material/SpeedDialAction' +import ArticleIcon from '@mui/icons-material/Article' +import TitleIcon from '@mui/icons-material/Title' +import {useState} from 'react' +import HandleCreate from './handle-create.js' +import AuthAlert from '@/components/auth-form/auth-alert.js' + +const actions = [ + {id: 'titres', icon: , name: 'Créer un titre'}, + {id: 'articles', icon: , name: 'Créer un article'} +] + +export default function Create({session}) { + const [collection, setCollection] = useState(null) + const [isDialogOpen, setIsDialogOpen] = useState(false) + const [isErrorAlertOpen, setIsErrorAlertOpen] = useState(false) + const [isSuccessAlertOpen, setIsSuccessAlertOpen] = useState(false) + const [error, setError] = useState('') + const [success, setSuccess] = useState('') + + const handleTitresDialog = collection => { + setCollection(collection) + setIsDialogOpen(true) + } + + return ( + <> + {error && } + + {success && } + + + } + > + {actions.map(({id, icon, name}) => ( + handleTitresDialog(id)} + /> + ))} + + + {collection && ( + + )} + + ) +} + +Create.propTypes = { + session: PropTypes.object +} diff --git a/components/konstitisyon/forms/create-form.js b/components/konstitisyon/forms/create-form.js index 6e98453..207769d 100644 --- a/components/konstitisyon/forms/create-form.js +++ b/components/konstitisyon/forms/create-form.js @@ -25,7 +25,8 @@ export default function CreateForm({ dialogText, collection, title, - label + label, + hasMultiline = true }) { const countdownRef = useRef() @@ -45,6 +46,11 @@ export default function CreateForm({ titre: selectedTitre, status: 'draft', } + } else if (collection === 'titres') { + requestObject = { + contenu: formattedContent, + status: 'draft', + } } await handleSubmit({ @@ -80,8 +86,8 @@ export default function CreateForm({