diff --git a/source/components/PaySlip.css b/source/components/PaySlip.css index 323b8592b..d6d90d93f 100644 --- a/source/components/PaySlip.css +++ b/source/components/PaySlip.css @@ -60,11 +60,6 @@ .payslip__salaireNetàPayer { font-weight: bold; } -.payslip__notice { - color: rgba(0, 0, 0, 0.7); - font-size: 90%; - margin-top: 2em; -} /* IE */ @media screen and (-ms-high-contrast: active), (-ms-high-contrast: none) { diff --git a/source/components/PaySlip.js b/source/components/PaySlip.js index aeefa848b..f394f4bb4 100644 --- a/source/components/PaySlip.js +++ b/source/components/PaySlip.js @@ -132,7 +132,7 @@ const PaySlip = ({ {salaireNetImposable.montant}
-

+

Le simulateur vous aide à comprendre votre bulletin de paie, sans lui être opposable. Pour plus d'informations, rendez vous sur  @@ -140,15 +140,15 @@ const PaySlip = ({ alt="service-public.fr" href="https://www.service-public.fr/particuliers/vosdroits/F559"> service-public.fr - . + + .

-

+

Il ne prend pour l'instant pas en compte les conventions et accords - collectifs, ni la myriade d'aides à explorer sur  - aides-entreprises.fr - . + collectifs, ni la myriade d'aides à explorer sur  + aides-entreprises.fr.

diff --git a/source/components/Simu.js b/source/components/Simu.js index 9c05f5deb..76236346a 100644 --- a/source/components/Simu.js +++ b/source/components/Simu.js @@ -20,6 +20,7 @@ import PaySlip from './PaySlip' import QuickLink from './QuickLink' import ResultView from './ResultView' import './Simu.css' +import Sondage from './Sondage' import TargetSelection from './TargetSelection' @withColours @@ -126,6 +127,9 @@ export default class Simu extends Component { {conversationStarted && ( +
+ +
)} {displayPreviousAnswers && ( @@ -165,6 +169,7 @@ export default class Simu extends Component { Fiche de paie + )} diff --git a/source/components/Sondage.css b/source/components/Sondage.css deleted file mode 100644 index 11cb7f1ed..000000000 --- a/source/components/Sondage.css +++ /dev/null @@ -1,56 +0,0 @@ -.sondage { - background: white; - display: inline-block; - padding: 1em; - border: 2px solid; - box-shadow: 0px 1px 9px 0px rgba(0, 0, 0, 0.45); - border-bottom: none; - border-radius: 0.3em; - border-bottom-left-radius: 0; - border-bottom-right-radius: 0; -} -.sondage__container { - position: fixed; - left: 0; - right: 0; - text-align: center; - bottom: 0; -} -.sondage__closeButton { - margin-left: 0.5em; -} -.sondage__text { - margin-right: 1em; -} - -.slide-blurred-bottom-enter { - animation: slide-in-blurred-bottom 0.8s cubic-bezier(0.23, 1, 0.32, 1) both; - animation-delay: 6s; - transform: translateY(1000px) scaleY(2.5) scaleX(0.2); - transform-origin: 50% 100%; - filter: blur(40px); - opacity: 0; -} -.slide-blurred-bottom-leave { - animation: slide-in-blurred-bottom 0.3s cubic-bezier(0.32, 1, 0.23, 1) both - reverse; -} -/** - * ---------------------------------------- - * animation slide-in-blurred-bottom - * ---------------------------------------- - */ -@keyframes slide-in-blurred-bottom { - 0% { - transform: translateY(1000px) scaleY(2.5) scaleX(0.2); - transform-origin: 50% 100%; - filter: blur(40px); - opacity: 0; - } - 100% { - transform: translateY(0) scaleY(1) scaleX(1); - transform-origin: 50% 50%; - filter: blur(0); - opacity: 1; - } -} diff --git a/source/components/Sondage.js b/source/components/Sondage.js index a4e70beb6..dd67db0a5 100644 --- a/source/components/Sondage.js +++ b/source/components/Sondage.js @@ -1,5 +1,6 @@ +import withLanguage from 'Components/utils/withLanguage' +import withTracker from 'Components/utils/withTracker' import React, { Component } from 'react' -import ReactCSSTransitionGroup from 'react-addons-css-transition-group' import { Trans, translate } from 'react-i18next' import { connect } from 'react-redux' import { @@ -7,12 +8,6 @@ import { noUserInputSelector } from 'Selectors/analyseSelectors' import Smiley from './SatisfactionSmiley' -import './Sondage.css' -import ReactPiwik from './Tracker' -import TypeFormEmbed from './TypeFormEmbed' -import { LinkButton } from 'Ui/Button' -import withColours from 'Components/utils/withColours' -import withLanguage from 'Components/utils/withLanguage' @connect(state => ({ conversationStarted: state.conversationStarted, @@ -21,97 +16,78 @@ import withLanguage from 'Components/utils/withLanguage' })) @translate() @withLanguage -@withColours +@withTracker export default class Sondage extends Component { state = { - visible: false, + visible: true, showForm: false, askFeedbackTime: 'AFTER_FIRST_ESTIMATE' } - static getDerivedStateFromProps(nextProps, currentState) { - let feedbackAlreadyAsked = !!document.cookie.includes('feedback_asked=true') - let conditions = { - AFTER_FIRST_ESTIMATE: !nextProps.noUserInput, - AFTER_SIMULATION_COMPLETED: - !nextProps.nextSteps.length && nextProps.conversationStarted - } - return { - visible: conditions[currentState.askFeedbackTime] && !feedbackAlreadyAsked - } - } - componentDidMount() { - this.setState({ - askFeedbackTime: - Math.random() > 0.5 - ? 'AFTER_SIMULATION_COMPLETED' - : 'AFTER_FIRST_ESTIMATE' - }) - } handleClose = () => { this.setState({ visible: false }) - this.setCookie() - } - setCookie = () => { - document.cookie = 'feedback_asked=true;' } onSmileyClick = satisfaction => { - ReactPiwik.push(['trackEvent', 'feedback', 'smiley', satisfaction]) + this.props.tracker.push(['trackEvent', 'feedback', 'smiley', satisfaction]) this.setState({ showForm: true, satisfaction, visible: false }) - this.setCookie() } render() { - let { satisfaction, showForm, visible, askFeedbackTime } = this.state, - { - language, - colours: { colour } - } = this.props - + let { satisfaction, showForm, visible } = this.state return ( - <> - {showForm && ( - +
+ {showForm && + (satisfaction === ':|' ? ( +

+ + + Nous sommes désolé de ne pas vous avoir apporté entière + satisfaction. + + {' '} + + Si vous le souhaitez, vous pouvez nous envoyer un mail à{' '} + + contact@embauche.beta.gouv.fr + + Nous vous garantissons de vous répondre au plus vite, et de + faire tout notre possible pour vous venir en aide + +

+ ) : ( +

+ + + Merci pour votre retour ! + + {' '} + + Si vous avez une remarque, ou une idée d'amélioration, n'hésitez + pas à nous contacter directement par mail à + + contact@embauche.beta.gouv.fr + + +

+ ))} + {visible && ( +

+ + Votre avis nous intéresse ! + +
+ + +

)} - - {visible && ( -
-
- - Votre avis nous intéresse ! - - - - - X - -
-
- )} -
- +
) } } diff --git a/source/components/ui/index.css b/source/components/ui/index.css index 80b90b9dd..8f063846e 100644 --- a/source/components/ui/index.css +++ b/source/components/ui/index.css @@ -38,7 +38,11 @@ button { margin-left: auto; padding: 0 0.6em; } - +p.ui__.notice { + font-size: 90%; + color: rgba(0, 0, 0, 0.7); + margin-top: 2em; +} ul.ui__.no-bullet { list-style: none; } diff --git a/source/locales/en.yaml b/source/locales/en.yaml index 6022b7913..2b497c2db 100644 --- a/source/locales/en.yaml +++ b/source/locales/en.yaml @@ -1,7 +1,7 @@ enterSalary: Enter a monthly salary -previousSimulationBanner: +previousSimulationBanner: info: Your previous simulation data have been saved. - retrieveButton: Retrieve my last simulation + retrieveButton: Retrieve my last simulation Première estimation: First estimate Commencer la simulation: Start simulation selectMany: You may pick more than one @@ -32,31 +32,31 @@ inlineExpressionNegation: Not déplier: show more replier: show less branches: - assurance chômage: + assurance chômage: name: unemployment counterpart: Gives income to former employees while they're looking for a new job. retraite: name: pensions counterpart: Guarantees on average 60%-70% of your last income. - formation: + formation: name: training counterpart: Gives access to professional training for employees. - logement: + logement: name: housing counterpart: Helps build new and affordable housing. transport: name: transportation counterpart: Helps keep the price of a public transportation ticket low. - accidents du travail / maladies professionnelles: + accidents du travail / maladies professionnelles: name: work accidents / occupational diseases counterpart: Offers full coverage of occupational illnesses or accidents. - santé: + santé: name: healthcare counterpart: Covers most of everyday-life health care needs and 100% for serious illnesses, e.g. hospital stays. - famille: + famille: name: family allowances - counterpart: Offers a balanced work and family life. Finances day nurseries and various child care. - autres: + counterpart: Offers a balanced work and family life. Finances day nurseries and various child care. + autres: name: other counterpart: Other contributions to the social system. Salaire brut: Gross salary @@ -132,7 +132,7 @@ Total des retenues: Total withheld Fiche de paie: Payslip Voir la répartition des cotisations: View contribution breakdown Cotisations: Contributions -payslip: +payslip: notice: This simulation helps you understand your French payslip, but it should not be used as one. For further details, check <1>service-public.fr (French). heures: 'Number of hours worked: ' disclaimer: It takes into account national law but not union negotiated rules. Lots of financial aids for your enterprise exist, explore them on <1>aides-entreprises.fr (French). @@ -153,3 +153,10 @@ simulation-end: title: No more questions left! text: You have reached the most accurate estimate. You can now turn your hiring project into reality. cta: Know the procedures +feedback: + bad: + headline: We're sorry we didn't give you complete satisfaction + support: If you wish, you can send us an email at <1>contact@embauche.beta.gouv.fr. We guarantee to answer you as quickly as possible, and to do everything we can to help you. + good: + headline: Thanks for your feedback! + support: If you have a remark, or an idea of improvement, do not hesitate to contact us directly by mail at <1>contact@embauche.beta.gouv.fr