From 33aff202a4da10c59515893faf87f713538eff7f Mon Sep 17 00:00:00 2001 From: Jean-Christophe <> Date: Thu, 25 Jan 2024 15:00:23 +0100 Subject: [PATCH] =?UTF-8?q?restructuration=20composants=20:=20placer=20l'?= =?UTF-8?q?=C3=A9tat=20au=20plus=20haut?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 2 + .../personListingController.component.jsx | 45 ++++++++++--------- .../personListingControls.component.jsx | 28 ++++++++++++ 3 files changed, 55 insertions(+), 20 deletions(-) create mode 100644 src/components/personListingControls.component.jsx diff --git a/README.md b/README.md index b3ba450..d8487ac 100644 --- a/README.md +++ b/README.md @@ -63,6 +63,8 @@ où `tag` peut prendre comme valeur : voir `/src/components/person.component.jsx` * `v6` : il faut remonter l'état et inversion du flux voir `/src/components/delayButton.component.jsx` et `/src/components/personListingController.component.jsx` +* `v6.1` : restructuration des composants, suite de "placer l'état au plus haut" et de l'inversion du flux + voir `/src/components/personListingControls.component.jsx` et `/src/components/personListingController.component.jsx` Faire ```git checkout main``` pour revenir à la version finale. diff --git a/src/components/personListingController.component.jsx b/src/components/personListingController.component.jsx index ebee5e6..935a816 100644 --- a/src/components/personListingController.component.jsx +++ b/src/components/personListingController.component.jsx @@ -3,7 +3,7 @@ import { useState } from 'react'; import '../assets/style/displayController.css'; import PersonListing from './personListing.component.jsx'; -import DelayButton from './delayButton.component.jsx'; +import PersonListingControls from './personListingControls.component.jsx'; const PersonListingController = ({ initialDelay = 250 }) => { @@ -12,32 +12,37 @@ const PersonListingController = ({ initialDelay = 250 }) => { const [ delay, setDelay ] = useState(initialDelay) const startStop = () => setStarted( previousStarted => ! previousStarted); - const closeComponent = () => setClosed(true); + const closeComponent = () => { + setClosed(previousClosed => ! previousClosed); + setStarted(false); + } const changeDelay = newDelay => setDelay(newDelay); - const buildDelayButtons = () => { - const delayButtons = [250, 1000, 3000].map(delay => <DelayButton delay={delay} - changeDelay={changeDelay} - key={delay} />); - return delayButtons; + const buildPersonListing = () => { + if (closed) + return null; + else + return (<PersonListing + delay={delay} + started={started} + />); + } + + const buildListingControls = () => { + return (<PersonListingControls + started={started} + closed={closed} + changeDelay={changeDelay} + closeAction={closeComponent} + startStop={startStop} + />); } - if (closed) - return null; - // else return ( <div> - <div className = 'controller'> - <button onClick= { startStop }> - { started ? 'Stop' : 'Start'} - </button> - { buildDelayButtons() } - </div> - <PersonListing - delay = { delay } - started = { started } - /> + {buildListingControls()} + {buildPersonListing()} </div> ); diff --git a/src/components/personListingControls.component.jsx b/src/components/personListingControls.component.jsx new file mode 100644 index 0000000..ed45586 --- /dev/null +++ b/src/components/personListingControls.component.jsx @@ -0,0 +1,28 @@ +import '../assets/style/displayController.css'; + +import DelayButton from './delayButton.component.jsx'; + +const PersonListingControls = ( { started, closed, changeDelay, closeAction, startStop } ) => { + + const buildDelayButtons = () => { + const delayButtons = [250,1000,3000].map ( delay => <DelayButton delay = { delay } + changeDelay = { changeDelay } + key = { delay }/>); + return delayButtons; + } + + + return( + <div className = 'controller'> + <button onClick= { startStop }> + { started ? 'Stop' : 'Start' } + </button> + { buildDelayButtons() } + <button onClick= { closeAction }> + { closed ? 'Open' : 'Close' } + </button> + </div> + ); +} + +export default PersonListingControls; \ No newline at end of file -- GitLab