654 lines
13 KiB
SCSS
654 lines
13 KiB
SCSS
@import "constants";
|
|
@import "colors";
|
|
@import "placeholders";
|
|
|
|
.form {
|
|
h1 {
|
|
text-align: center;
|
|
margin-bottom: 20px;
|
|
|
|
@media (max-width: $two-columns-breakpoint) {
|
|
font-size: 26px;
|
|
}
|
|
}
|
|
|
|
hr {
|
|
width: 100%;
|
|
height: 0;
|
|
margin-top: $default-padding;
|
|
margin-bottom: $default-fields-spacer;
|
|
border: none;
|
|
border-bottom: 2px solid $border-grey;
|
|
}
|
|
|
|
@mixin notice-text-style {
|
|
font-size: 16px;
|
|
color: $dark-grey;
|
|
}
|
|
|
|
.mandatory {
|
|
color: $dark-red;
|
|
}
|
|
|
|
label,
|
|
legend.form-label {
|
|
font-size: 18px;
|
|
margin-bottom: $default-padding;
|
|
display: block;
|
|
font-weight: bold;
|
|
|
|
&.required {
|
|
&::after {
|
|
color: $dark-red;
|
|
content: " *";
|
|
}
|
|
}
|
|
}
|
|
|
|
.form-label {
|
|
font-weight: bold;
|
|
font-size: 18px;
|
|
margin-bottom: $default-padding;
|
|
}
|
|
|
|
.notice {
|
|
@include notice-text-style;
|
|
margin-top: - $default-spacer;
|
|
margin-bottom: $default-padding;
|
|
|
|
p {
|
|
margin-bottom: $default-spacer;
|
|
}
|
|
|
|
input[type='date'] {
|
|
display: inline-block;
|
|
}
|
|
}
|
|
|
|
.editable-champ {
|
|
position: relative;
|
|
|
|
.updated-at {
|
|
@include notice-text-style;
|
|
float: right;
|
|
margin-left: $default-spacer;
|
|
visibility: hidden;
|
|
}
|
|
|
|
&:hover .updated-at,
|
|
.updated-at.highlighted {
|
|
visibility: visible;
|
|
}
|
|
|
|
// Move checkbox to the top-left side of the label
|
|
&.editable-champ-checkbox {
|
|
label.admin-default-zone {
|
|
font-weight: bold;
|
|
}
|
|
}
|
|
|
|
&.editable-champ-checkbox {
|
|
p,
|
|
label {
|
|
padding-left: 28px;
|
|
font-weight: normal;
|
|
}
|
|
|
|
input[type=checkbox] {
|
|
position: absolute;
|
|
top: 3px;
|
|
left: 0px;
|
|
}
|
|
|
|
// When an (eventual) notice is displayed after the input, give it some bottom margin.
|
|
.notice {
|
|
margin-bottom: $default-fields-spacer;
|
|
}
|
|
}
|
|
}
|
|
|
|
.radios {
|
|
display: flex;
|
|
|
|
// Horizontal layout (default)
|
|
flex-direction: row;
|
|
align-items: flex-start;
|
|
flex-wrap: wrap;
|
|
|
|
label {
|
|
margin-right: $default-padding;
|
|
}
|
|
|
|
// Vertical layout
|
|
&.vertical {
|
|
flex-direction: column;
|
|
align-items: stretch;
|
|
|
|
label {
|
|
margin-right: 0;
|
|
}
|
|
}
|
|
|
|
label {
|
|
padding: $default-padding $default-padding $default-padding $default-spacer;
|
|
border: 1px solid $border-grey;
|
|
border-radius: 4px;
|
|
font-weight: normal;
|
|
background: $white;
|
|
user-select: none;
|
|
|
|
&:last-of-type {
|
|
margin-bottom: $default-fields-spacer;
|
|
}
|
|
|
|
&:hover {
|
|
background: $light-grey;
|
|
cursor: pointer;
|
|
}
|
|
|
|
&:active {
|
|
border-color: darken($border-grey, 10);
|
|
}
|
|
|
|
&:first-child {
|
|
margin-left: 0;
|
|
}
|
|
|
|
&.blank-radio {
|
|
color: $dark-grey;
|
|
font-style: italic;
|
|
}
|
|
|
|
input[type=radio] {
|
|
margin-bottom: 0;
|
|
}
|
|
|
|
.notice {
|
|
margin: 4px 0 0 27px;
|
|
}
|
|
}
|
|
}
|
|
|
|
.drop_down_other { // scss-lint:disable SelectorFormat
|
|
label {
|
|
font-weight: normal;
|
|
}
|
|
}
|
|
|
|
input[type=text],
|
|
input[type=email],
|
|
input[type=password],
|
|
input[type=date],
|
|
input[type=datetime-local],
|
|
input[type=number],
|
|
input[type=tel],
|
|
textarea,
|
|
select {
|
|
display: block;
|
|
margin-bottom: $default-fields-spacer;
|
|
|
|
&.small-margin {
|
|
margin-bottom: $default-spacer;
|
|
}
|
|
|
|
&.no-margin {
|
|
margin-bottom: 0;
|
|
}
|
|
|
|
+ .spinner:not(.right):not(.left) {
|
|
position: relative;
|
|
top: -($default-fields-spacer / 2);
|
|
}
|
|
}
|
|
|
|
|
|
input[type=checkbox] {
|
|
&.small-margin {
|
|
margin-bottom: $default-spacer;
|
|
}
|
|
}
|
|
|
|
input[type=text]:not([data-address='true']),
|
|
input[type=email],
|
|
input[type=password],
|
|
input[type=date],
|
|
input[type=number],
|
|
input[type=tel],
|
|
input[type=datetime-local],
|
|
textarea,
|
|
select {
|
|
border-radius: 4px;
|
|
border: solid 1px $border-grey;
|
|
padding: $default-padding;
|
|
|
|
&.small {
|
|
padding: $default-spacer;
|
|
}
|
|
|
|
&:disabled {
|
|
background-color: $border-grey;
|
|
}
|
|
|
|
&:focus,
|
|
&:focus-visible {
|
|
outline: 0;
|
|
border: 1px solid $blue-france-500;
|
|
box-shadow: 0px 0px 2px 1px $blue-france-500;
|
|
}
|
|
|
|
// Hide the browser default invalidity indicator until the field is touched
|
|
&:invalid:not(:focus):not(.fr-input) {
|
|
box-shadow: none;
|
|
}
|
|
|
|
&.touched:invalid {
|
|
border: 1px solid $dark-red;
|
|
box-shadow: 0px 0px 2px 1px $dark-red;
|
|
}
|
|
}
|
|
|
|
div.field_with_errors > input { // scss-lint:disable SelectorFormat
|
|
border: 1px solid $dark-red;
|
|
}
|
|
|
|
input[type=text],
|
|
input[type=email],
|
|
input[type=password],
|
|
input[type=date],
|
|
input[type=number],
|
|
input[type=datetime-local],
|
|
input[type=tel],
|
|
textarea {
|
|
@media (max-width: $two-columns-breakpoint) {
|
|
width: 100%;
|
|
}
|
|
|
|
// don't set 100% width when width-* classes or size attribute are applied
|
|
@media (min-width: $two-columns-breakpoint) {
|
|
&:not([class^='width-']):not([size]) {
|
|
width: 100%;
|
|
}
|
|
}
|
|
}
|
|
|
|
@media (min-width: $two-columns-breakpoint) {
|
|
input[type=email],
|
|
input[type=password],
|
|
input[type=number],
|
|
input[type=tel] {
|
|
max-width: 500px;
|
|
}
|
|
}
|
|
|
|
input[type=date] {
|
|
max-width: 180px;
|
|
}
|
|
|
|
// override default site width/max-width for editable-champ form (Usager form)
|
|
.editable-champ {
|
|
input {
|
|
max-width: none;
|
|
|
|
@media (min-width: $two-columns-breakpoint) {
|
|
&:not([size]) {
|
|
&[type='date'],
|
|
&[type='tel'],
|
|
&[type='number'],
|
|
&[type='datetime-local'] {
|
|
width: 33.33%;
|
|
}
|
|
|
|
&[type='email'] {
|
|
width: 66.67%;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
input[type=checkbox],
|
|
input[type=radio] {
|
|
@extend %outline;
|
|
|
|
// Firefox tends to display some controls smaller than other browsers.
|
|
// Ensure a consistency of size between browsers.
|
|
width: 16px;
|
|
height: 16px;
|
|
|
|
margin-left: 5px;
|
|
margin-right: 4px;
|
|
margin-bottom: $default-fields-spacer;
|
|
}
|
|
|
|
select {
|
|
// hack found here: https://stackoverflow.com/questions/1895476/how-to-style-a-select-dropdown-with-css-only-without-javascript
|
|
-webkit-appearance: none;
|
|
-moz-appearance: none;
|
|
appearance: none;
|
|
background-color: #FFFFFF;
|
|
background-image: image-url("icons/chevron-down.svg");
|
|
background-repeat: no-repeat;
|
|
background-size: 14px;
|
|
background-position: right 10px center;
|
|
padding-right: 4 * $default-spacer;
|
|
max-width: 100%;
|
|
|
|
&.small {
|
|
padding-right: 3 * $default-spacer;
|
|
}
|
|
|
|
// CAUTION: IE hackery ahead
|
|
&::-ms-expand {
|
|
display: none; // remove default arrow in IE 10 and 11 */
|
|
}
|
|
|
|
// target Internet Explorer 9 to undo the custom arrow */
|
|
@media screen and (min-width:0\0) {
|
|
select {
|
|
background: none\9;
|
|
}
|
|
}
|
|
}
|
|
|
|
[data-reach-combobox-input] {
|
|
min-height: 62px;
|
|
border-radius: 4px;
|
|
border: solid 1px $border-grey;
|
|
padding: $default-padding;
|
|
|
|
&:not([class^='width-']) {
|
|
width: 100%;
|
|
min-width: 50%;
|
|
max-width: 100%;
|
|
}
|
|
|
|
&:focus {
|
|
border-color: $blue-france-500;
|
|
}
|
|
}
|
|
|
|
[data-reach-combobox-token-list] {
|
|
padding: $default-spacer;
|
|
display: flex;
|
|
flex-wrap: wrap;
|
|
align-items: center;
|
|
list-style: none;
|
|
}
|
|
|
|
[data-reach-combobox-token] button {
|
|
border: solid 1px $border-grey;
|
|
color: $black;
|
|
border-radius: 4px;
|
|
padding: $default-spacer;
|
|
margin-right: $default-spacer;
|
|
cursor: pointer;
|
|
display: flex;
|
|
align-items: center;
|
|
}
|
|
|
|
[data-reach-combobox-token] button:focus {
|
|
background-color: $black;
|
|
color: $white;
|
|
}
|
|
|
|
.editable-champ {
|
|
&:not(.editable-champ-carte) .algolia-autocomplete {
|
|
margin-bottom: 2 * $default-padding;
|
|
}
|
|
|
|
.geo-areas {
|
|
margin-bottom: 2 * $default-padding;
|
|
}
|
|
|
|
&.editable-champ-repetition {
|
|
.row {
|
|
border-radius: 4px;
|
|
border: 1px solid $border-grey;
|
|
padding: $default-padding;
|
|
margin-bottom: 2 * $default-padding;
|
|
}
|
|
}
|
|
}
|
|
|
|
.editable-champ-titre_identite { // scss-lint:disable SelectorFormat
|
|
margin-bottom: 2 * $default-padding;
|
|
}
|
|
|
|
.cnaf-inputs,
|
|
.dgfip-inputs,
|
|
.pole-emploi-inputs,
|
|
.mesri-inputs {
|
|
label {
|
|
font-weight: 400;
|
|
}
|
|
}
|
|
|
|
input.aa-input,
|
|
input.aa-hint {
|
|
border-radius: 4px;
|
|
border: solid 1px $border-grey;
|
|
padding: $default-padding;
|
|
}
|
|
|
|
input.aa-hint {
|
|
color: $dark-grey;
|
|
}
|
|
|
|
.datetime {
|
|
input[type=date] {
|
|
display: inline-block;
|
|
}
|
|
|
|
select {
|
|
display: inline-block;
|
|
}
|
|
}
|
|
|
|
.header-subsection {
|
|
font-size: 22px;
|
|
color: $blue-france-500;
|
|
margin-bottom: $default-padding;
|
|
}
|
|
|
|
.explication-libelle {
|
|
font-weight: bold;
|
|
font-size: 20px;
|
|
margin-bottom: $default-padding;
|
|
}
|
|
|
|
.explication {
|
|
margin-bottom: $default-fields-spacer;
|
|
padding: $default-spacer;
|
|
background-color: $light-grey;
|
|
|
|
p:not(:last-child) {
|
|
margin-bottom: $default-padding;
|
|
}
|
|
}
|
|
|
|
.siret-info {
|
|
margin-top: -$default-fields-spacer;
|
|
margin-bottom: $default-fields-spacer;
|
|
// Ensure the bottom-margin is not collapsed when the element is empty
|
|
min-height: 1px;
|
|
}
|
|
|
|
.rna-info {
|
|
margin-top: -$default-fields-spacer;
|
|
margin-bottom: $default-fields-spacer;
|
|
// Ensure the bottom-margin is not collapsed when the element is empty
|
|
min-height: 1px;
|
|
}
|
|
|
|
.send-wrapper {
|
|
display: flex;
|
|
width: 100%;
|
|
margin-top: $default-padding;
|
|
margin-bottom: 2 * $default-padding;
|
|
|
|
.button {
|
|
margin-top: $default-padding;
|
|
margin-bottom: 0;
|
|
}
|
|
|
|
// Wide layout: align buttons on a single row
|
|
@media (min-width: 550px) {
|
|
flex-direction: row;
|
|
|
|
.button:not(:first-of-type) {
|
|
margin-left: $default-spacer;
|
|
}
|
|
|
|
// If there are more than one button, align the "Send" button to the right
|
|
.button:not(:first-of-type).send {
|
|
margin-left: auto;
|
|
}
|
|
}
|
|
|
|
// Narrow layout: stack buttons vertically
|
|
@media (max-width: 550px) {
|
|
flex-direction: column-reverse;
|
|
align-items: center;
|
|
|
|
.button {
|
|
width: 100%;
|
|
max-width: 350px;
|
|
line-height: 30px;
|
|
margin-left: none;
|
|
margin-right: none;
|
|
}
|
|
}
|
|
}
|
|
|
|
.justify-content--space-between {
|
|
justify-content: space-between;
|
|
}
|
|
|
|
.send-notice {
|
|
@include notice-text-style;
|
|
margin-bottom: $default-padding;
|
|
}
|
|
|
|
.send-wrapper + .send-notice {
|
|
margin-top: - $default-padding;
|
|
}
|
|
|
|
.inline-champ {
|
|
margin-left: $default-spacer;
|
|
margin-right: $default-spacer;
|
|
width: 100%;
|
|
|
|
&:first-child {
|
|
margin-left: 0;
|
|
}
|
|
|
|
&:last-child {
|
|
margin-right: 0;
|
|
}
|
|
}
|
|
|
|
fieldset ~ .spinner {
|
|
position: relative;
|
|
top: -($default-fields-spacer / 2);
|
|
}
|
|
}
|
|
|
|
[data-react-component-value]:not([data-react-component-value^="ComboMultiple"]) {
|
|
[data-reach-combobox-input]:not(.no-margin) {
|
|
margin-bottom: $default-fields-spacer;
|
|
}
|
|
}
|
|
|
|
[data-react-component-value^="ComboMultiple"] {
|
|
margin-bottom: $default-fields-spacer;
|
|
|
|
[data-reach-combobox-input] {
|
|
flex-grow: 1;
|
|
background-image: image-url("icons/chevron-down");
|
|
background-size: 14px;
|
|
background-repeat: no-repeat;
|
|
background-position: right 10px center;
|
|
border-radius: 4px;
|
|
border: solid 1px $border-grey;
|
|
padding: $default-padding;
|
|
margin: $default-spacer;
|
|
margin-top: 0;
|
|
width: 100%;
|
|
}
|
|
|
|
ul {
|
|
list-style: none;
|
|
|
|
li {
|
|
margin-right: $default-spacer;
|
|
display: inline-block;
|
|
}
|
|
}
|
|
}
|
|
|
|
[data-reach-combobox-token-label] {
|
|
border: 1px solid #CCCCCC;
|
|
border-radius: 4px;
|
|
display: flex;
|
|
flex-wrap: wrap;
|
|
}
|
|
|
|
[data-reach-combobox-option] {
|
|
font-size: 16px;
|
|
list-style-type: none;
|
|
}
|
|
|
|
[data-reach-combobox-option][aria-selected="true"] {
|
|
background: $light-blue !important;
|
|
color: $white;
|
|
}
|
|
|
|
[data-reach-combobox-separator] {
|
|
font-size: 16px;
|
|
color: $dark-grey;
|
|
background: $light-grey;
|
|
padding: $default-spacer;
|
|
}
|
|
|
|
[data-reach-combobox-no-results] {
|
|
font-size: 16px;
|
|
color: $dark-grey;
|
|
background: $light-grey;
|
|
padding: $default-spacer;
|
|
}
|
|
|
|
[data-reach-combobox-token] button {
|
|
cursor: pointer;
|
|
background-color: transparent;
|
|
background-image: none;
|
|
border: none;
|
|
line-height: 1;
|
|
padding: 0;
|
|
margin-right: 4px;
|
|
display: flex;
|
|
align-items: center !important;
|
|
}
|
|
|
|
[data-reach-combobox-input] button:focus {
|
|
outline-color: $light-blue;
|
|
}
|
|
|
|
[data-reach-combobox-popover] {
|
|
z-index: 20;
|
|
}
|
|
|
|
.fconnect-form {
|
|
input[type='password'] {
|
|
margin-bottom: 16px;
|
|
}
|
|
}
|
|
|
|
input::placeholder,
|
|
textarea::placeholder {
|
|
opacity: 0.6; // normalize opacity across browsers
|
|
color: $dark-grey;
|
|
}
|
|
|
|
.send-wrapper--with-border-top {
|
|
border-top: 2px solid rgba(0, 0, 145, 1);
|
|
}
|