La couleur est définie dynamiquement

Pour que les intégrateurs puissent la choisir.
pull/132/head
mama 2018-01-10 17:51:35 +01:00
parent 5ef2b8f6c3
commit deb54c86c1
37 changed files with 331 additions and 357 deletions

View File

@ -24,7 +24,7 @@
<p>Ce simulateur calcule vos cotisations sociales pour vous permettre de jongler entre les différents types de salaire en France.</p>
</section>
<section id="module">
<script id="script-simulateur-embauche" src="dist/simulateur.js" data-couleur="#333"></script><!-- Exemples de couleur : #1F4382 - #3570B8 - #4A89DC - #4A9DED-->
<script id="script-simulateur-embauche" src="dist/simulateur.js" data-couleur="#333"></script><!-- Exemples de couleur : #1F4382 - #3570B8 - #2975D1 - #4A9DED-->
</section>
</body>

View File

@ -210,7 +210,7 @@
id="textPath36434"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:68.75px;font-family:'Liberation Serif';-inkscape-font-specification:'Liberation Serif';fill:#e2e1e1;fill-opacity:1"> &lt;/&gt;</textPath></text>
<path
style="fill:#4a89dc;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
style="fill:#2975D1;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="m 515.43034,677.59561 70.66391,0.1802 0.50508,-100.80386 -70.66391,-0.39159 z"
id="path4200-3-6"
inkscape:connector-curvature="0"
@ -533,13 +533,13 @@
y="694.61884"
style="font-size:12.5px;line-height:1.25;fill:#ffffff;fill-opacity:1;stroke:#fff1f1;stroke-width:0.60000002;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1">&gt;</tspan></text>
<path
style="fill:#4a89dc;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
style="fill:#2975D1;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="m 514.12097,766.87796 -74.75128,-0.18746 v 101.69365 l 74.24621,0.0141"
id="path4251-6"
inkscape:connector-curvature="0"
sodipodi:nodetypes="cccc" />
<path
style="fill:#4a89dc;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
style="fill:#2975D1;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="m 513.86844,867.89321 70.66393,0.1802 0.50508,-100.80386 -70.66393,-0.39159 z"
id="path4200-3-6-3"
inkscape:connector-curvature="0"
@ -766,13 +766,13 @@
y="884.68475"
style="font-size:12.50000095px;line-height:1.25;fill:#ffffff;fill-opacity:1;stroke:#fff1f1;stroke-width:0.60000002;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1">&gt;</tspan></text>
<path
style="fill:#4a89dc;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
style="fill:#2975D1;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="M 302.81757,767.39586 228.06629,752.2084 v 101.69365 l 74.24621,15.0141"
id="path4251-6-1"
inkscape:connector-curvature="0"
sodipodi:nodetypes="cccc" />
<path
style="fill:#4a89dc;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
style="fill:#2975D1;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="m 302.56504,868.41111 70.66394,-14.8198 0.50507,-100.80386 -70.66393,14.60841 z"
id="path4200-3-6-3-9"
inkscape:connector-curvature="0"
@ -878,13 +878,13 @@
id="rect20-0-7" />
</g>
<path
style="fill:#4a89dc;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
style="fill:#2975D1;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="m 519.10403,386.49434 -74.75128,-0.65729 v 101.69366 l 74.24621,0.58209"
id="path4251-6-1-7"
inkscape:connector-curvature="0"
sodipodi:nodetypes="cccc" />
<path
style="fill:#4a89dc;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
style="fill:#2975D1;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="m 518.8515,487.55868 70.66395,-28.55549 0.50506,-100.90203 -70.66393,28.34408 z"
id="path4200-3-6-3-9-8"
inkscape:connector-curvature="0"
@ -1119,13 +1119,13 @@
sodipodi:role="line">&gt;</tspan></text>
</g>
<path
style="fill:#4a89dc;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
style="fill:#2975D1;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="m 693.0194,175.15981 -74.75128,-0.65729 v 101.69367 l 74.24621,0.58208"
id="path4251-6-1-7-9"
inkscape:connector-curvature="0"
sodipodi:nodetypes="cccc" />
<path
style="fill:#4a89dc;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
style="fill:#2975D1;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="m 692.76687,276.22415 70.66396,-28.55549 0.50505,-100.90203 -70.66393,28.34408 z"
id="path4200-3-6-3-9-8-4"
inkscape:connector-curvature="0"

Before

Width:  |  Height:  |  Size: 824 KiB

After

Width:  |  Height:  |  Size: 824 KiB

View File

@ -94,21 +94,13 @@
},
"scripts": {
"start": "node source/server.js",
"compile":
"NODE_ENV='production' webpack --config source/webpack.config.js",
"surge":
"npm run compile && surge --domain scientific-wish.surge.sh -p ./ && rm -rf dist/",
"test":
"mocha-webpack --webpack-config source/webpack.test.config.js --require source-map-support/register --require test/helpers/browser.js \"test/**/*.test.js\"",
"test-watch":
"mocha-webpack --webpack-config source/webpack.test.config.js --require source-map-support/register --require test/helpers/browser.js \"test/**/*.test.js\" --watch",
"test-meca":
"mocha-webpack --webpack-config source/webpack.test.config.js --require source-map-support/register --require test/helpers/browser.js test/mecanisms.test.js --watch",
"test-rules":
"mocha-webpack --webpack-config source/webpack.test.config.js --require source-map-support/register --require test/helpers/browser.js test/real-rules.test.js --watch",
"heroku-postbuild":
"npm install --dev && webpack --config source/webpack.config.js --progress",
"test-inversions":
"mocha-webpack --webpack-config source/webpack.test.config.js --require source-map-support/register --require test/helpers/browser.js \"test/inversion.test.js\" --watch"
"compile": "NODE_ENV='production' webpack --config source/webpack.config.js",
"surge": "npm run compile && surge --domain scientific-wish.surge.sh -p ./ && rm -rf dist/",
"test": "mocha-webpack --webpack-config source/webpack.test.config.js --require source-map-support/register --require test/helpers/browser.js \"test/**/*.test.js\"",
"test-watch": "mocha-webpack --webpack-config source/webpack.test.config.js --require source-map-support/register --require test/helpers/browser.js \"test/**/*.test.js\" --watch",
"test-meca": "mocha-webpack --webpack-config source/webpack.test.config.js --require source-map-support/register --require test/helpers/browser.js test/mecanisms.test.js --watch",
"test-rules": "mocha-webpack --webpack-config source/webpack.test.config.js --require source-map-support/register --require test/helpers/browser.js test/real-rules.test.js --watch",
"heroku-postbuild": "npm install --dev && webpack --config source/webpack.config.js --progress",
"test-inversions": "mocha-webpack --webpack-config source/webpack.test.config.js --require source-map-support/register --require test/helpers/browser.js \"test/inversion.test.js\" --watch"
}
}

View File

@ -23,7 +23,6 @@
}
#sim #help i.fa-times-circle {
color: #4a89dc;
font-size: 120%;
position: absolute;
top: 0.6em;

View File

@ -7,10 +7,12 @@ import { EXPLAIN_VARIABLE } from '../actions'
import References from './rule/References'
import './Aide.css'
import { capitalise0 } from '../utils'
@connect(
state => ({ explained: state.explainedVariable }),
state => ({
explained: state.explainedVariable,
themeColours: state.themeColours
}),
dispatch => ({
stopExplaining: () => dispatch({ type: EXPLAIN_VARIABLE })
})
@ -20,7 +22,7 @@ export default class Aide extends Component {
return marked(`### ${term} \n\n${explanation}`)
}
render() {
let { explained, stopExplaining } = this.props
let { explained, stopExplaining, themeColours } = this.props
if (!explained) return <section id="helpWrapper" />
@ -33,7 +35,11 @@ export default class Aide extends Component {
return (
<div id="helpWrapper" className="active">
<section id="help">
<i className="fa fa-times-circle" onClick={stopExplaining} />
<i
className="fa fa-times-circle"
onClick={stopExplaining}
style={{ color: themeColours.colour }}
/>
<p
dangerouslySetInnerHTML={{
__html: this.renderExplanationMarkdown(text, rule.title)

View File

@ -0,0 +1,17 @@
.blueButton {
color: white;
display: block;
padding: 0.3em 1em;
font-size: 200%;
width: 8em;
margin: 0 auto;
border: none;
box-shadow: 0px 9px 14px 0px rgba(0, 0, 0, 0.1);
opacity: 0.95;
border-radius: 0.2em;
cursor: pointer;
}
.blueButton:hover {
box-shadow: none;
opacity: 1;
}

View File

@ -0,0 +1,11 @@
import React from 'react'
import './BlueButton.css'
import { connect } from 'react-redux'
export default connect(state => ({
themeColours: state.themeColours
}))(({ themeColours, children }) => (
<button className="blueButton" style={{ background: themeColours.colour }}>
{children}
</button>
))

View File

@ -1,4 +1,3 @@
#sim .tip {
font-style: italic;
margin-bottom: 1em;
@ -10,7 +9,8 @@
#sim .tip progress {
margin-left: 1em;
background: white;
border: 1px solid #2975D1;
border-width: 1px;
border-style: solid;
}
progress::-webkit-progress-bar {
@ -18,5 +18,4 @@ progress::-webkit-progress-bar {
}
progress::-webkit-progress-value {
background: #2975D1;
}

View File

@ -7,7 +7,8 @@ import './ProgressTip.css'
@connect(state => ({
done: state.done,
foldedSteps: state.foldedSteps,
nextSteps: state.nextSteps
nextSteps: state.nextSteps,
textColourOnWhite: state.themeColours.textColourOnWhite
}))
export default class ProgressTip extends Component {
state = {
@ -20,7 +21,7 @@ export default class ProgressTip extends Component {
})
}
render() {
let { done, nextSteps, foldedSteps } = this.props,
let { done, nextSteps, foldedSteps, textColourOnWhite } = this.props,
nbQuestions = nextSteps.length
if (!done) return null
return (
@ -34,9 +35,10 @@ export default class ProgressTip extends Component {
{nbQuestions === 1
? 'Une dernière question !'
: `Il reste moins de ${nbQuestions} questions`}
<progress
value={foldedSteps.length}
max={foldedSteps.length + nbQuestions}
<ProgressBar
foldedSteps={foldedSteps}
nbQuestions={nbQuestions}
colour={textColourOnWhite}
/>
</p>
)}
@ -44,3 +46,13 @@ export default class ProgressTip extends Component {
)
}
}
let ProgressBar = ({ foldedSteps, nbQuestions, colour }) => (
<progress
value={foldedSteps.length}
max={foldedSteps.length + nbQuestions}
style={{
borderColor: colour
}}
/>
)

View File

@ -1,4 +1,3 @@
#resultsZone {
min-height: 49%;
display: flex;
@ -18,16 +17,15 @@
#results {
width: 100%;
padding: .4em 1.4em;
padding: 0.4em 1.4em;
}
#resultsContent {
position: relative;
margin: 0 auto;
padding: .3em 0 1em;
padding: 0.3em 0 1em;
min-height: 4em;
width: 100%;
max-width: 45em;
background: #2975D1;
color: white;
box-shadow: 0px 0px 20px 2px rgba(0, 0, 0, 0.25);
display: flex;
@ -54,10 +52,8 @@
align-items: center;
flex-wrap: wrap;
margin: 0 auto;
}
#results li {
margin: 0 1.2em;
display: inline-block;

View File

@ -15,37 +15,32 @@ import ProgressTip from 'Components/ProgressTip'
conversationStarted: !isEmpty(state.form),
conversationFirstAnswer: path(['form', 'conversation', 'values'])(state),
situationGate: state.situationGate,
done: state.done
done: state.done,
themeColours: state.themeColours
}))
export default class Results extends Component {
render() {
let {
analysis,
targetName,
conversationStarted,
conversationFirstAnswer,
location,
done
} = this.props
let { analysis, conversationStarted, done, themeColours } = this.props
if (!analysis) return null
let { targets } = analysis
let onRulePage = contains('/regle/')(location.pathname)
let textStyle = { color: themeColours.textColour }
return (
<div id="resultsZone">
<section id="results">
<ProgressTip />
<div id="resultsContent">
<Link className="edit" to="/">
<i className="fa fa-pencil-square-o" aria-hidden="true" />
<div id="resultsContent" style={{ background: themeColours.colour }}>
<Link className="edit" to="/" style={textStyle}>
<i className="fa fa-pencil" aria-hidden="true" />
{' '}
<span>Changer d'objectif</span>
</Link>
<ul>
{targets.map(rule => (
<li key={rule.nom}>
<li key={rule.nom} style={textStyle}>
<RuleValueVignette
{...rule}
conversationStarted={conversationStarted}
@ -56,7 +51,10 @@ export default class Results extends Component {
</div>
<h3
className="scrollIndication down"
style={{ opacity: done ? 1 : 0 }}
style={{
opacity: done ? 1 : 0,
color: themeColours.textColourOnWhite
}}
>
<i className="fa fa-long-arrow-down" aria-hidden="true" />{' '}
Comprendre mes résultats

View File

@ -3,45 +3,41 @@
margin-top: 8em;
}
.satisfaction-smiley {
color: #4A89DC;
font-size: 90%;
font-weight: bold;
border-radius: 6em;
width: 2em;
text-align: center;
display: inline-block;
border: 2px solid #4A89DC;
margin: 0 .6em;
padding: .3em 0;
transform: rotate(90deg)
border-width: 2px;
border-style: solid;
margin: 0 0.6em;
padding: 0.3em 0;
transform: rotate(90deg);
}
#satisfaction textarea {
border: 1px solid rgb(74, 137, 220, .5);
border-radius: .3em;
border: 1px solid rgb(74, 137, 220, 0.5);
border-radius: 0.3em;
width: 65%;
height: 5em;
padding: .6em;
padding: 0.6em;
font-size: 85%;
}
#satisfaction input {
border: 1px solid rgb(74, 137, 220, .5);
border-radius: .3em;
border: 1px solid rgb(74, 137, 220, 0.5);
border-radius: 0.3em;
width: 65%;
padding: .6em;
margin-bottom: .3em;
padding: 0.6em;
margin-bottom: 0.3em;
font-size: 85%;
}
#sendMessage {
font-size: 100%;
border: none;
color: rgb(74, 137, 220);
transition: color 1s;
}
@ -50,11 +46,10 @@
cursor: default;
}
#sendMessage i {
margin-right: .6em;
margin-right: 0.6em;
}
#messageSent {
color: rgb(74, 137, 220);
font-size: 160%
font-size: 160%;
}
#satisfaction p {

View File

@ -3,12 +3,12 @@ import HoverDecorator from './HoverDecorator'
import 'whatwg-fetch'
import { connect } from 'react-redux'
import './Satisfaction.css'
import classNames from 'classnames'
import ReactPiwik from './Tracker'
@connect(state => ({
sessionId: state.sessionId
sessionId: state.sessionId,
textColourOnWhite: state.themeColours.textColourOnWhite
}))
export default class Satisfaction extends Component {
state = {
@ -64,8 +64,18 @@ export default class Satisfaction extends Component {
<div id="satisfaction">
<p>Vous êtes satisfait du simulateur ?</p>
<p>
<Smiley text=":)" hoverColor="#16a085" clicked={onSmileyClick} />
<Smiley text=":|" hoverColor="#f39c12" clicked={onSmileyClick} />
<Smiley
text=":)"
hoverColor="#16a085"
themeColour={this.props.textColourOnWhite}
clicked={onSmileyClick}
/>
<Smiley
text=":|"
hoverColor="#f39c12"
themeColour={this.props.textColourOnWhite}
clicked={onSmileyClick}
/>
</p>
</div>
)
@ -96,11 +106,17 @@ export default class Satisfaction extends Component {
{!messageSent && feedback}
<button
id="sendMessage"
style={{ color: this.props.textColourOnWhite }}
disabled={!validMessage || messageSent}
onClick={() => this.sendSatisfaction()}
>
{messageSent ? (
<i id="messageSent" className="fa fa-check" aria-hidden="true" />
<i
id="messageSent"
className="fa fa-check"
aria-hidden="true"
style={{ color: this.props.textColourOnWhite }}
/>
) : (
<span>
<i className="fa fa-paper-plane" aria-hidden="true" />
@ -143,7 +159,10 @@ export class Smiley extends Component {
color: 'white',
borderColor: 'transparent'
}
: {}
: {
color: this.props.themeColour,
borderColor: this.props.themeColour
}
}
>
{this.props.text}

View File

@ -2,13 +2,12 @@
margin: 0 auto;
color: #333350;
transition: background-color .5s;
transition: background-color 0.5s;
height: 100%;
max-width: 45em;
font-size: 130%;
height: 92%;
}
#sim p {
@ -22,9 +21,8 @@
font-weight: 800;
}
#simSubtitle {
margin-top: -.5em;
margin-top: -0.5em;
font-size: 120%;
font-weight: 300;
margin-bottom: 2.5em;
@ -39,15 +37,6 @@
display: flex;
align-items: center;
}
#sim .intro i {
opacity: .9;
font-size: 250%;
margin-right: .6em;
}
#sim .intro span {
display: inline-block;
width: 80%;
}
#sim .action {
margin-top: 5%;
@ -57,36 +46,17 @@
text-align: center;
}
#sim .intro button {
color: white;
display: block;
text-align: center;
background: #4A89DC;
padding: .3em 1em;
font-size: 140%;
margin: 2em auto;
width: 8em;
border: none;
box-shadow: 0px 9px 14px 0px rgba(0, 0, 0, 0.1);
opacity: 0.95
}
#sim .intro button:hover {
box-shadow: none;
opacity: 1;
}
.scrollIndication {
display: block;
text-align: center;
margin: 1.4em auto;
transition: 1s opacity;
color: #4A89DC;
border: none;
font-size: 100%;
font-weight: 600;
}
.scrollIndication i {
margin: 0 .3em;
margin: 0 0.3em;
}
.scrollIndication:hover i {
font-weight: bold;

View File

@ -35,12 +35,8 @@
font-size: 120%;
}
#targetSelection label p {
color: #555;
margin: 0;
}
#targetSelection input:checked + label .optionTitle {
font-weight: 600;
color: #2975d1;
font-weight: 400;
}
#targetSelection input {
@ -58,24 +54,6 @@
max-width: 0.75em;
}
#targetSelection input + label > i.fa.fa-square-o {
color: #555;
display: inline;
}
#targetSelection input + label > i.fa.fa-check-square-o {
display: none;
}
#targetSelection input:checked + label > i.fa.fa-square-o {
display: none;
}
#targetSelection input:checked + label > i.fa.fa-check-square-o {
color: #2975d1;
display: inline;
}
#targetSelection label:hover > i.fa {
color: #2975d1;
}
#targetSelection #action {
text-align: center;
margin: 1em auto;
@ -83,7 +61,6 @@
#targetSelection #action p {
font-size: 80%;
color: #4a89dc;
}
/* TODO styler les checkboxes https://codepen.io/KenanYusuf/pen/PZKEKd */

View File

@ -3,7 +3,7 @@ import { rules, findRuleByName } from 'Engine/rules'
import { reject, curry, pipe, equals, filter, contains, length } from 'ramda'
import { Link } from 'react-router-dom'
import './TargetSelection.css'
import BlueButton from './BlueButton'
export let salaries = ['salaire net', 'salaire de base', 'salaire total']
export default class TargetSelection extends Component {
@ -21,9 +21,11 @@ export default class TargetSelection extends Component {
id="action"
style={{ visibility: !targets.length ? 'hidden' : 'visible' }}
>
<p>Vous pouvez faire plusieurs choix</p>
<p style={{ color: this.props.themeColours.textColourOnWhite }}>
Vous pouvez faire plusieurs choix
</p>
<Link to={'/simu/' + targets.join('+')}>
<button className="blueButton">Valider</button>
<BlueButton>Valider</BlueButton>
</Link>
</div>
</section>
@ -35,6 +37,7 @@ export default class TargetSelection extends Component {
curry(findRuleByName)(rules)
),
{ targets } = this.state,
textColourOnWhite = this.props.themeColours.textColourOnWhite,
// You can't select 3 salaries, as one must be an input in the next step
optionDisabled = name =>
contains('salaire', name) &&
@ -43,7 +46,8 @@ export default class TargetSelection extends Component {
filter(contains('salaire')),
length,
equals(2)
)(targets)
)(targets),
optionIsChecked = s => targets.includes(s.name)
return (
<div>
@ -54,7 +58,7 @@ export default class TargetSelection extends Component {
id={s.name}
type="checkbox"
disabled={optionDisabled(s.name)}
checked={targets.includes(s.name)}
checked={optionIsChecked(s)}
onChange={() =>
this.setState({
targets: targets.find(t => t === s.name)
@ -63,12 +67,40 @@ export default class TargetSelection extends Component {
})
}
/>
<label htmlFor={s.name} key={s.name}>
<i className="fa fa-square-o fa-2x" />
<i className="fa fa-check-square-o fa-2x" />
<label
htmlFor={s.name}
key={s.name}
style={
optionIsChecked(s)
? {
fontWeight: 600,
color: textColourOnWhite
}
: {}
}
>
{optionIsChecked(s) ? (
<i
className="fa fa-check-square-o fa-2x"
style={{ color: textColourOnWhite }}
/>
) : (
<i
className="fa fa-square-o fa-2x"
style={{ color: '#555' }}
/>
)}
<div>
<span className="optionTitle">{s.title || s.name}</span>
<p>{s['résumé']}</p>
<p
style={
optionIsChecked(s)
? { color: textColourOnWhite }
: { color: '#555' }
}
>
{s['résumé']}
</p>
</div>
</label>
</div>

View File

@ -53,7 +53,10 @@ export default class Conversation extends Component {
<Element name="myScrollToElement" id="myScrollToElement">
<h3
className="scrollIndication up"
style={{ opacity: foldedSteps.length != 0 ? 1 : 0 }}
style={{
opacity: foldedSteps.length != 0 ? 1 : 0,
color: textColourOnWhite
}}
>
<i className="fa fa-long-arrow-up" aria-hidden="true" /> Modifier
mes réponses

View File

@ -17,7 +17,6 @@
cursor: pointer;
vertical-align: baseline;
font-size: 95%;
color: #2975D1;
}
.explicable .icon:hover {
@ -31,8 +30,3 @@
opacity: .3
}
*/
.explicable.explained .icon {
opacity: 1;
background: #4a89dc;
color: white;
}

View File

@ -1,7 +1,6 @@
import React from 'react'
import classNames from 'classnames'
import './Explicable.css'
import HoverDecorator from '../HoverDecorator'
import { connect } from 'react-redux'
import { EXPLAIN_VARIABLE } from '../../actions'
import { rules, findRuleByDottedName } from 'Engine/rules'
@ -9,14 +8,17 @@ import { rules, findRuleByDottedName } from 'Engine/rules'
import ReactPiwik from '../Tracker'
@connect(
state => ({ explained: state.explainedVariable }),
state => ({
explained: state.explainedVariable,
textColourOnWhite: state.themeColours.textColourOnWhite
}),
dispatch => ({
explain: variableName => dispatch({ type: EXPLAIN_VARIABLE, variableName })
})
)
export default class Explicable extends React.Component {
render() {
let { dottedName, explain, explained } = this.props
let { dottedName, explain, explained, textColourOnWhite } = this.props
// Rien à expliquer ici, ce n'est pas une règle
if (dottedName == null) return this.props.children
@ -40,6 +42,15 @@ export default class Explicable extends React.Component {
ReactPiwik.push(['trackEvent', 'help', dottedName])
explain(dottedName)
}}
style={
dottedName === explained
? {
opacity: 1,
background: textColourOnWhite,
color: 'white'
}
: { color: textColourOnWhite }
}
>
<i className="fa fa-book" aria-hidden="true" />
</span>

View File

@ -162,7 +162,7 @@ export var FormDecorator = formType => RenderField =>
onClick={() => stepAction('unfold', dottedName)}
style={{ color: themeColours.textColourOnWhite }}
>
<i className="fa fa-pencil-square-o" aria-hidden="true" />
<i className="fa fa-pencil" aria-hidden="true" />
{' '}
<span>Modifier</span>
</button>

View File

@ -40,7 +40,7 @@ export default class Input extends Component {
style={
!active
? { border: '2px dashed #ddd' }
: { border: '1px solid #2975D1' }
: { border: `1px solid ${themeColours.textColourOnWhite}` }
}
onKeyDown={({ key }) =>
key == 'Enter' && (submitDisabled ? input.onBlur() : submit())
@ -119,7 +119,7 @@ export default class Input extends Component {
}
onMouseOver={() => this.setState({ hoverSuggestion: value })}
onMouseOut={() => this.setState({ hoverSuggestion: null })}
style={{ color: themeColours.colour }}
style={{ color: themeColours.textColourOnWhite }}
>
<a href="#" title="cliquer pour valider">
{text}

View File

@ -1,5 +1,3 @@
#myScrollToElement {
min-height: 55%;
padding: 1em;
@ -10,7 +8,6 @@
min-height: 0;
}
#foldedSteps {
padding: 1em;
margin-bottom: 6em;
@ -18,22 +15,15 @@
#foldedSteps .header button {
font-size: 80%;
color: #2975D1;
border: none;
display: block;
margin: 0 auto;
}
#foldedSteps .header button i {
margin-right: .3em;
vertical-align: top
margin-right: 0.3em;
vertical-align: top;
}
.step {
position: relative;
}
@ -53,7 +43,7 @@
.form-group.explicit > .group-content {
margin-left: 1em;
padding: .8em 0 0 1.3em;
padding: 0.8em 0 0 1.3em;
}
.form-group.folded .group-content {
@ -61,7 +51,7 @@
}
.form-group .header {
margin: 4em 0 .6em 0;
margin: 4em 0 0.6em 0;
}
.group-items {
@ -78,7 +68,7 @@
.group-animated-enter.group-animated-enter-active {
opacity: 1;
transition: opacity 300ms ease-in;
transition: opacity 300ms ease-in;
}
.group-animated-leave {
@ -90,7 +80,7 @@
opacity: 0;
transform: scaleY(0);
transform-origin: top;
transition: opacity 200ms ease, transform 200ms ease-out;
transition: opacity 200ms ease, transform 200ms ease-out;
}
/* END Group items animation */
@ -107,12 +97,12 @@
.group-title h1 {
font-size: 100%;
font-weight: 400;
padding: .5em .8em;
padding: 0.5em 0.8em;
margin: 0;
border-radius: 1em;
position: relative;
width: 100%;
border: 1px solid rgba(0,0,0,.3);
border: 1px solid rgba(0, 0, 0, 0.3);
}
.step-question {
@ -132,7 +122,7 @@
display: inline-block;
font-size: 110%;
font-weight: 600;
padding: .6em 1em;
padding: 0.6em 1em;
margin: 0;
border-radius: 1.4em;
position: relative;
@ -146,7 +136,7 @@
}
.step-subquestion {
margin: .3em;
margin: 0.3em;
font-style: italic;
font-size: 80%;
margin-left: 1em;
@ -161,7 +151,7 @@
.help-button {
display: inline-block;
float: right;
margin-top: .5em;
margin-top: 0.5em;
line-height: 1.1em;
border-radius: 1em;
font-size: 90%;
@ -172,8 +162,8 @@
cursor: pointer;
color: #aaa;
text-transform: uppercase;
font-size: 60%;
padding: .25em .6em;
font-size: 60%;
padding: 0.25em 0.6em;
}
.help-button:hover {
color: #333;
@ -181,7 +171,7 @@
}
.step fieldset {
margin: .8em 0;
margin: 0.8em 0;
}
.step fieldset ul {
@ -195,13 +185,13 @@
.step.question .variant > ul {
border-left: 1px dashed #ccc;
margin-top: .6em;
padding-left: .6em;
padding-top: .6em;
margin-top: 0.6em;
padding-left: 0.6em;
padding-top: 0.6em;
margin-left: 1em;
}
.step.question .variant > div {
padding-left: .6em;
padding-left: 0.6em;
font-weight: 600;
font-style: italic;
}
@ -209,14 +199,14 @@
.step.question fieldset > div {
display: flex;
justify-content: flex-end;
flex-wrap: wrap;
flex-wrap: wrap;
}
.step.question fieldset span {
white-space: nowrap
white-space: nowrap;
}
.step.question .variantLeaf {
margin-bottom: .6em;
margin-bottom: 0.6em;
}
.step.question .variant .variantLeaf {
display: inline-block;
@ -225,72 +215,70 @@
font-weight: bold;
}
.step label.radio,
/* A resume of what's been answered */
.resume {
/* A resume of what's been answered */ .resume {
text-align: center;
margin-left: 1em;
margin-top: 2em;
cursor: pointer;
background: none;
padding: 0 .8em;
padding: 0 0.8em;
line-height: 1.8em;
border-radius: 1em;
}
.step label.radio {
text-align: center;
margin-left: 1em;
margin-top: 1em;
cursor: pointer;
padding: .25em .85em;
line-height: 1.8em;
border-radius: 1em;
margin-left: 1em;
margin-top: 1em;
cursor: pointer;
padding: 0.25em 0.85em;
line-height: 1.8em;
border-radius: 1em;
font-weight: 600;
font-size: 105%;
}
.resume {
transition: 1s display;
}
.answer-ignored {
font-size: 80%;
opacity: .8;
margin-left: .4em;
opacity: 0.8;
margin-left: 0.4em;
vertical-align: middle;
}
.step input[type=radio] {
display : none;
.step input[type='radio'] {
display: none;
}
.step input[type=text] {
.step input[type='text'] {
border-bottom: 1px solid;
display: inline-block;
line-height: 1.6em;
height: 1.6em; /* IE 11 needs this */
font-size: 100%;
padding: 0;
padding-right: .4em;
padding-right: 0.4em;
width: 8em;
text-align: right;
padding-left: .2em;
padding-left: 0.2em;
}
/* Remove IE's clear button the appears before our suffix */
.step input::-ms-clear {
width : 0;
height: 0;
width: 0;
height: 0;
}
.step input::placeholder {
font-style: italic;
font-style: italic;
}
.step input.suffixed {
padding: 0.1em 1em 0;
border-radius: .2em;
border-radius: 0.2em;
font-size: 120%;
}
@ -301,13 +289,13 @@
.step label.suffix {
font-size: 110%;
vertical-align: baseline;
transition: color .1s;
margin: 0 1.5em .1em 0.6em;
transition: color 0.1s;
margin: 0 1.5em 0.1em 0.6em;
}
.step input[type=text]:focus,
.step input[type=number]:focus {
border-color: #D0D4D8;
.step input[type='text']:focus,
.step input[type='number']:focus {
border-color: #d0d4d8;
outline: none;
}
@ -320,7 +308,7 @@
}
.inputPrefix select {
font-size: 120%
font-size: 120%;
}
.step .inputSuggestions {
@ -331,7 +319,7 @@
color: #222;
}
.step .inputSuggestions ul {
padding-left: 0;
padding-left: 0;
list-style: none;
display: inline-flex;
align-items: flex-end;
@ -339,7 +327,7 @@
.step .inputSuggestions li {
}
.step .inputSuggestions a {
padding: .1em .9em;
padding: 0.1em 0.9em;
font-weight: 600;
}
.step .inputSuggestions a:hover {
@ -382,20 +370,20 @@
}
.step .send {
padding: 0 .1em 0 .5em;
padding: 0 0.1em 0 0.5em;
background: none;
cursor: pointer;
border: 1px solid;
border-radius: .2em;
border-radius: 0.2em;
line-height: 0em;
}
.step .send:disabled {
opacity: 0.2
opacity: 0.2;
}
.step .send .icon {
margin-left: .3em;
margin-left: 0.3em;
font-size: 135%;
vertical-align: middle;
}
@ -410,12 +398,11 @@
float: right;
}
.step-input-error {
position: absolute;
right: 0;
bottom: -1.5em;
font-size: .8em;
font-size: 0.8em;
font-style: italic;
color: #c0392b;
font-weight: 600;
@ -428,23 +415,22 @@
#share-link {
color: white;
padding: .3em .3em;
padding: 0.3em 0.3em;
display: inline-block;
margin-top: .3em;
border-radius: .25em;
margin-top: 0.3em;
border-radius: 0.25em;
}
#share-icon {
font-size: 200%;
vertical-align: middle;
line-height: 0em;
margin-left: .3em;
margin-left: 0.3em;
}
.select-answer.commune .Select {
width: 50%;
}
.info-zone {
font-size: 65%;
text-align: center;
@ -458,7 +444,7 @@
}
.input-tip p {
margin: .1em;
margin: 0.1em;
}
#show-advanced {
@ -500,36 +486,32 @@ for the appearing element to appear without stacking up below the first one */
}
.user-next-action-animation-leave {
opacity: 1;
opacity: 1;
}
.user-next-action-animation-leave.user-next-action-animation-leave-active {
opacity: 0;
transition: opacity 700ms ease;
opacity: 0;
transition: opacity 700ms ease;
}
.foldedQuestion {
.foldedQuestion {
margin-left: 1.2em;
}
.foldedQuestion .edit {
vertical-align: middle;
margin-left: .5em;
margin-left: 0.5em;
border: none;
font-size: 80%;
}
.foldedQuestion .borderWrapper {
padding: .1em 0;
padding: 0.1em 0;
display: inline-block;
width: calc(100% - 6em);
border-bottom: 1px solid #eee
border-bottom: 1px solid #eee;
}
.keyIcon {
position: absolute;
font-size: 80%;
@ -537,14 +519,13 @@ for the appearing element to appear without stacking up below the first one */
font-weight: bold;
background: #ddd;
color: white;
margin-left: .6em;
padding: .5em .4em;
border-radius: .2em;
transition: .2s opacity;
margin-left: 0.6em;
padding: 0.5em 0.4em;
border-radius: 0.2em;
transition: 0.2s opacity;
}
@media screen and (max-width:860px) {
@media screen and (max-width: 860px) {
.keyIcon {
display: none;
}

View File

@ -2,6 +2,8 @@ import React, { Component } from 'react'
import './Pages.css'
import './About.css'
import { Link } from 'react-router-dom'
import BlueButton from '../BlueButton'
export default class About extends Component {
render() {
return (
@ -64,13 +66,14 @@ let MailChimp = () => (
/>
</div>
<div className="clear">
<input
type="submit"
value="M'inscrire"
name="subscribe"
id="mc-embedded-subscribe"
className="blueButton"
/>
<BlueButton>
<input
type="submit"
value="M'inscrire"
name="subscribe"
id="mc-embedded-subscribe"
/>
</BlueButton>
</div>
</div>
</form>

View File

@ -11,7 +11,6 @@
transition-delay: 0.2s;
}
#updateMessage i {
color: #2975d1;
margin-right: 1em;
transition: 0.8s opacity;
}

View File

@ -2,7 +2,11 @@ import React, { Component } from 'react'
import './Pages.css'
import './Home.css'
import TargetSelection from '../TargetSelection'
import { connect } from 'react-redux'
@connect(state => ({
themeColours: state.themeColours
}))
export default class Home extends Component {
state = {
updateMessage: false
@ -18,7 +22,10 @@ export default class Home extends Component {
<i
className="fa fa-newspaper-o"
aria-hidden="true"
style={opacityStyle}
style={{
...opacityStyle,
color: this.props.themeColours.textColourOnWhite
}}
/>
<p style={opacityStyle}>
Cette nouvelle version du site vous permet de simuler un CDD ou CDI,
@ -26,7 +33,7 @@ export default class Home extends Component {
</p>
</div>
<div id="content">
<TargetSelection />
<TargetSelection themeColours={this.props.themeColours} />
</div>
</div>
)

View File

@ -3,8 +3,8 @@
vertical-align: top;
}
#integration i {
margin-right: .6em;
color: #3C4963;
margin-right: 0.6em;
color: #3c4963;
}
#integration code {
display: inline-block;
@ -34,7 +34,7 @@
}
#scriptColor {
color: #4a89dc;
color: #2975d1;
}
section#integrations a {

View File

@ -16,7 +16,7 @@ export default class MyComponent extends Component {
id
</em>="script-simulateur-embauche" <em>
data-couleur
</em>="<span id="scriptColor">#4A89DC</span>" <em>src</em>="https://embauche.beta.gouv.fr/modules/v2/dist/simulateur.js">
</em>="<span id="scriptColor">#2975D1</span>" <em>src</em>="https://embauche.beta.gouv.fr/modules/v2/dist/simulateur.js">
<span>{'<'}</span>
<span>/</span>
<em>script</em>

View File

@ -10,3 +10,12 @@
#mc_embed_signup .blueButton {
margin: 0;
}
#mc_embed_signup .blueButton input {
background: none;
border: none;
color: white;
margin: 0;
padding: 0;
font-size: 90%;
}

View File

@ -2,26 +2,24 @@
}
#injectSituation {
background: rgb(74, 137, 220);
color: white;
border: none;
font-size: 100%;
padding: .3em .6em;
margin-bottom: .6em;
padding: 0.3em 0.6em;
margin-bottom: 0.6em;
}
#injectSituation.selected {
font-weight: bold;
}
#examples ul {
padding-left: 0;
list-style-type: none;
}
#examples .example {
font-weight: 500;
margin: .6em;
margin: 0.6em;
cursor: pointer;
}
#examples .example.selected .name {
@ -29,7 +27,7 @@
}
#examples i {
margin-right: .6em;
margin-right: 0.6em;
}
#examples .example i {
@ -52,5 +50,5 @@
}
#examples .example.ok i {
color: #2ecc71
color: #2ecc71;
}

View File

@ -39,12 +39,20 @@ export let runExamples = (examples, rule, parsedRules) =>
@connect(state => ({
situationGate: state.situationGate,
parsedRules: state.parsedRules
parsedRules: state.parsedRules,
colour: state.themeColours.colour
}))
export default class Examples extends Component {
render() {
let focusedExample = path(['focusedExample', 'nom'])(this.props),
{ inject, situationExists, showValues, rule, parsedRules } = this.props,
{
inject,
situationExists,
showValues,
rule,
parsedRules,
colour
} = this.props,
{ exemples = [] } = rule,
examples = runExamples(exemples, rule, parsedRules)
@ -99,7 +107,11 @@ export default class Examples extends Component {
{situationExists &&
focusedExample && (
<div>
<button id="injectSituation" onClick={() => inject()}>
<button
id="injectSituation"
onClick={() => inject()}
style={{ background: colour }}
>
Revenir à votre situation
</button>
</div>

View File

@ -38,22 +38,3 @@ h1 {
font-size: 100%;
font-weight: bold;
}
.blueButton {
color: white;
display: block;
background: #4a89dc;
padding: 0.3em 1em;
font-size: 200%;
width: 8em;
margin: 0 auto;
border: none;
box-shadow: 0px 9px 14px 0px rgba(0, 0, 0, 0.1);
opacity: 0.95;
border-radius: 0.2em;
cursor: pointer;
}
.blueButton:hover {
box-shadow: none;
opacity: 1;
}

View File

@ -1,7 +1,6 @@
import React, { Component } from 'react'
import './Layout.css'
import './reset.css'
import './ribbon.css'
import { Link, Route, Router, Switch, Redirect } from 'react-router-dom'

View File

@ -1,42 +0,0 @@
#ribbon {
}
#ribbon a {
display: block;
background: #333350;
color: #fff;
text-decoration: none;
font-family: arial, sans-serif;
text-align: center;
font-weight: bold;
padding: 5px 40px;
font-size: 0.8rem;
line-height: 0.6rem;
position: relative;
transition: 0.5s;
box-shadow: -1px 1px 16px 3px rgba(0, 0, 0, 0.2);
}
#ribbon a:hover {
background: #4a89dc;
color: #fff;
}
@media screen and (min-width: 800px) {
#ribbon {
position: absolute;
display: block;
top: 0;
left: 0;
width: 200px;
overflow: hidden;
height: 200px;
z-index: 9999;
}
#ribbon a {
font-size: 1rem;
line-height: 1.6rem;
width: 250px;
position: absolute;
top: 35px;
left: -60px;
transform: rotate(-45deg);
}
}

View File

@ -1,4 +1,3 @@
/* mécanisme somme */
.somme table {
width: 100%;
@ -14,14 +13,13 @@
text-align: right;
}
.somme tr:hover {
background: rgba(51, 51, 80, 0.02)
background: rgba(51, 51, 80, 0.02);
}
.somme tr:nth-child(2n) {
}
.somme tr .element {
text-align: left;
padding: .1em .6em;
padding: 0.1em 0.6em;
}
.somme .element .unfoldIndication {
font-size: 60%;
@ -39,7 +37,7 @@
.somme .operator {
text-align: center;
width: 1em;
padding: 0 .4em;
padding: 0 0.4em;
font-weight: 600;
font-size: 120%;
color: black;
@ -55,7 +53,7 @@
}
.somme .nested {
padding: 0;
padding: 0;
border: none;
}
.somme .nested tr:first-child {
@ -64,12 +62,10 @@
.somme .noNest {
border-bottom: none;
}
.somme > table {
.somme > table {
border-bottom: 1px solid rgba(51, 51, 80, 0.15);
}
/* Specific to ResultsGrid.css. Somme.js and ResultsGrid.js should be merged */
.resultsGrid table {
@ -90,7 +86,7 @@
padding-left: 1.2em;
}
.resultsGrid .detailsRow .name:hover {
color: #2975D1;
color: #111;
text-decoration: underline;
}
@ -112,11 +108,11 @@
font-weight: 600;
font-size: 95%;
padding: 0 0.6em;
margin-left: .3em;
border-radius: .2em;
white-space: nowrap
margin-left: 0.3em;
border-radius: 0.2em;
white-space: nowrap;
}
.detailsRow {
background: rgba(51, 51, 80, 0.02)
background: rgba(51, 51, 80, 0.02);
}

View File

@ -6,5 +6,5 @@ let script = document.getElementById('script-simulateur-embauche'),
document.write(`
<iframe id="simulateurEmbauche" src="${
src.split('dist')[0]
}iframe.html?couleur=${couleur}" style="border: none; width: 60em; display: block; margin: 0 auto; height: 45em" scrolling="no"></iframe>
}iframe.html?couleur=${couleur}" style="border: none; width: 60em; display: block; margin: 0 auto; height: 45em"></iframe>
`)

View File

@ -47,10 +47,10 @@
width="45"
height="6.8"
id="rect4"
style="fill:#4a89dc;fill-opacity:1" /><rect
style="fill:#2975D1;fill-opacity:1" /><rect
x="27.5"
y="35.8"
width="36"
height="6.8"
id="rect6"
style="fill:#4a89dc;fill-opacity:1" /></svg>
style="fill:#2975D1;fill-opacity:1" /></svg>

Before

Width:  |  Height:  |  Size: 2.0 KiB

After

Width:  |  Height:  |  Size: 2.0 KiB

View File

@ -206,7 +206,7 @@
id="textPath36434"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:68.75px;font-family:'Liberation Serif';-inkscape-font-specification:'Liberation Serif';fill:#e2e1e1;fill-opacity:1"> &lt;/&gt;</textPath></text>
<path
style="fill:#4a89dc;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
style="fill:#2975D1;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="m 515.43034,677.59561 70.66391,0.1802 0.50508,-100.80386 -70.66391,-0.39159 z"
id="path4200-3-6"
inkscape:connector-curvature="0"

Before

Width:  |  Height:  |  Size: 780 KiB

After

Width:  |  Height:  |  Size: 780 KiB