feat: ajout d'un bloc sélection d'entreprise à tous les simulateurs

feat/1633-ajout-recherche-entreprise-simulateurs-ter
Alice Dahan 2024-11-05 11:18:55 +01:00
parent 9cdd44a5e6
commit 87e7c66036
4 changed files with 153 additions and 0 deletions

View File

@ -0,0 +1,145 @@
import { useState } from 'react'
import { useTranslation } from 'react-i18next'
import { css, styled } from 'styled-components'
import { CarretDownIcon, CarretUpIcon, SearchIcon } from '@/design-system/icons'
import { Grid } from '@/design-system/layout'
import { Body } from '@/design-system/typography/paragraphs'
import EntrepriseInput from '../conversation/EntrepriseInput'
import Value from '../EngineValue/Value'
import { Appear } from '../ui/animate'
import { useEngine } from '../utils/EngineContext'
import LectureGuide from './LectureGuide'
export default function EntrepriseSelection() {
const { t } = useTranslation()
const companySIREN = useEngine().evaluate('entreprise . SIREN').nodeValue
const [isSearchVisible, setSearchVisible] = useState(false)
return (
<Container>
<EntrepriseRecap>
<Grid
container
style={{
alignItems: 'baseline',
justifyContent: 'space-between',
}}
spacing={2}
>
<Grid item>
<TitleBody>{t('Votre entreprise')}</TitleBody>
</Grid>
<LectureGuide />
<Grid item onClick={() => setSearchVisible(!isSearchVisible)}>
<ValueBody>
{companySIREN ? (
<>
<Value expression="entreprise . nom" linkToRule={false} />
{isSearchVisible ? <ShowLessIcon /> : <ShowMoreIcon />}
</>
) : (
<>
<span
role="button"
aria-label={t(
"Rechercher, afficher le champ de recherche d'entreprise."
)}
>
{t('Rechercher')}
</span>
<SearchIcon aria-hidden />
</>
)}
</ValueBody>
</Grid>
</Grid>
</EntrepriseRecap>
{isSearchVisible && (
<Appear>
<EntrepriseInput onSubmit={() => setSearchVisible(false)} />
</Appear>
)}
</Container>
)
}
const ShowLessIcon = () => {
const { t } = useTranslation()
return (
<>
<span className="sr-only">
{t("Masquer les détails de l'entreprise.")}
</span>
<StyledCarretUpIcon />
</>
)
}
const ShowMoreIcon = () => {
const { t } = useTranslation()
return (
<>
<span className="sr-only">
{t(
"Afficher les détails de l'entreprise, la modifier ou la supprimer."
)}
</span>
<StyledCarretDownIcon />
</>
)
}
const Container = styled.div`
z-index: 2;
position: relative;
padding: ${({ theme }) => `${theme.spacings.sm} ${theme.spacings.lg}`};
background-color: ${({ theme }) =>
theme.darkMode
? theme.colors.extended.dark[500]
: theme.colors.bases.primary[100]};
@media print {
background: initial;
padding: 0;
}
`
const EntrepriseRecap = styled.div`
position: relative;
z-index: 1;
`
const TitleBody = styled(Body)`
color: ${({ theme }) =>
theme.darkMode
? theme.colors.extended.grey[100]
: theme.colors.bases.primary[800]};
font-weight: bold;
`
const ValueBody = styled(Body)`
cursor: pointer;
color: ${({ theme }) =>
theme.darkMode
? theme.colors.extended.grey[100]
: theme.colors.bases.primary[800]};
display: flex;
align-items: center;
gap: ${({ theme }) => theme.spacings.xs};
`
const IconStyle = css`
margin-bottom: ${({ theme }) => theme.spacings.xxxs};
`
const StyledCarretDownIcon = styled(CarretDownIcon)`
${IconStyle}
`
const StyledCarretUpIcon = styled(CarretUpIcon)`
${IconStyle}
`

View File

@ -21,6 +21,7 @@ import { Feedback, getShouldAskFeedback } from '../Feedback/Feedback'
import PrintExportRecover from '../simulationExplanation/PrintExportRecover'
import PreviousSimulationBanner from './../PreviousSimulationBanner'
import { FromTop } from './../ui/animate'
import EntrepriseSelection from './EntrepriseSelection'
import { Questions } from './Questions'
export { Questions } from './Questions'
@ -78,6 +79,7 @@ export default function Simulation({
<FromTop>
{(firstStepCompleted || showQuestionsFromBeginning) && (
<>
<EntrepriseSelection />
<div className="print-hidden">
<FromTop>{results}</FromTop>
</div>

View File

@ -41,6 +41,7 @@ Activités relevant de léconomie collaborative, voir la page: Collaborative
Adoption: Adoption
Afficher le détail: Show details
"Afficher les données par :": "Display data by:"
Afficher les détails de l'entreprise, la modifier ou la supprimer.: View company details, modify or delete.
Aller au contenu principal: Go to main content
Aller directement au pied de page: Go directly to footer
Annuler: Cancel
@ -181,6 +182,7 @@ Les formalités de création d'une entreprise diffèrent selon les statuts et la
Lire les précisions, ouvrir le message condensé.: Read the details, open the condensed message.
Liste des intégrations: List of integrations
Ma situation: My situation
Masquer les détails de l'entreprise.: Hide company details.
Maternité: Maternity ward
Menu de navigation: Navigation menu
Message à caractère informatif: Informative message
@ -254,6 +256,7 @@ Recherche sur le site: Site search
Rechercher: Search
Rechercher un simulateur ou une règle: Search for a simulator or a rule
Rechercher une règle dans la documentation: Search for a rule in the documentation
Rechercher, afficher le champ de recherche d'entreprise.: Search, display the company search field.
Rechercher, ouvrir la boite de dialogue pour entrer vos termes de recherche.: Search, open the dialog box to enter your search terms.
Remboursements et déductions diverses: Reimbursements and miscellaneous deductions
Renseigner une adresse e-mail (au format nom@domaine:

View File

@ -44,6 +44,7 @@ Activités relevant de léconomie collaborative, voir la page: Activités rel
Adoption: Adoption
Afficher le détail: Afficher le détail
"Afficher les données par :": "Afficher les données par :"
Afficher les détails de l'entreprise, la modifier ou la supprimer.: Afficher les détails de l'entreprise, la modifier ou la supprimer.
Aller au contenu principal: Aller au contenu principal
Aller directement au pied de page: Aller directement au pied de page
Annuler: Annuler
@ -192,6 +193,7 @@ Les formalités de création d'une entreprise diffèrent selon les statuts et la
Lire les précisions, ouvrir le message condensé.: Lire les précisions, ouvrir le message condensé.
Liste des intégrations: Liste des intégrations
Ma situation: Ma situation
Masquer les détails de l'entreprise.: Masquer les détails de l'entreprise.
Maternité: Maternité
Menu de navigation: Menu de navigation
Message à caractère informatif: Message à caractère informatif
@ -268,6 +270,7 @@ Recherche sur le site: Recherche sur le site
Rechercher: Rechercher
Rechercher un simulateur ou une règle: Rechercher un simulateur ou une règle
Rechercher une règle dans la documentation: Rechercher une règle dans la documentation
Rechercher, afficher le champ de recherche d'entreprise.: Rechercher, afficher le champ de recherche d'entreprise.
Rechercher, ouvrir la boite de dialogue pour entrer vos termes de recherche.: Rechercher, ouvrir la boite de dialogue pour entrer vos termes de recherche.
Remboursements et déductions diverses: Remboursements et déductions diverses
Renseigner une adresse e-mail (au format nom@domaine: