demarches-normaliennes/app/assets/stylesheets/new_design/forms.scss

455 lines
8.6 KiB
SCSS
Raw Normal View History

2017-07-20 10:25:32 +02:00
@import "constants";
2017-06-14 17:39:46 +02:00
@import "colors";
.form {
2017-06-20 10:09:19 +02:00
h1 {
text-align: center;
margin-bottom: 20px;
2019-01-16 11:57:58 +01:00
@media (max-width: $two-columns-breakpoint) {
font-size: 26px;
2019-01-16 11:57:58 +01:00
}
2017-06-20 10:09:19 +02:00
}
hr {
width: 100%;
height: 0;
margin-top: $default-padding;
margin-bottom: 2 * $default-padding;
border: none;
border-bottom: 1px solid $border-grey;
}
@mixin notice-text-style {
font-size: 14px;
color: $grey;
}
.mandatory {
color: $dark-red;
}
2017-06-14 17:39:46 +02:00
label {
2017-08-02 15:29:12 +02:00
margin-bottom: $default-padding;
display: block;
2018-02-21 18:32:07 +01:00
font-weight: bold;
2017-08-02 15:29:12 +02:00
.notice {
@include notice-text-style;
2017-08-02 15:29:12 +02:00
display: block;
margin-top: $default-spacer;
2018-07-09 18:16:59 +02:00
p {
margin-bottom: $default-spacer;
}
}
&.required {
&::after {
color: $dark-red;
content: " *";
}
}
}
2017-12-14 16:21:14 +01:00
.editable-champ {
2018-04-09 18:27:15 +02:00
position: relative;
.updated-at {
@include notice-text-style;
float: right;
display: inline-block;
margin-left: $default-spacer;
visibility: hidden;
}
&:hover .updated-at,
.updated-at.highlighted {
visibility: visible;
2017-08-02 15:29:12 +02:00
}
2018-04-03 17:53:14 +02:00
// Align checkboxes on the top-left side of the label
&.editable-champ-checkbox,
&.editable-champ-engagement {
label {
padding-left: 28px;
}
input[type=checkbox] {
position: absolute;
top: 1px;
left: 0px;
}
}
2017-06-14 17:39:46 +02:00
}
.radios {
label {
display: inline;
margin-left: $default-padding;
&:first-child {
margin-left: 0;
}
}
&.vertical {
label {
display: block;
margin-left: 0;
margin-bottom: 0;
}
input[type=radio] {
margin-bottom: 16px;
}
}
}
2017-07-26 12:09:21 +02:00
input[type=text]:not([data-address='true']),
2017-06-20 10:03:49 +02:00
input[type=email],
input[type=password],
input[type=date],
input[type=number],
input[type=tel],
textarea,
select,
.piece-justificative {
2017-06-14 17:39:46 +02:00
display: block;
2018-07-23 14:52:14 +02:00
margin-bottom: 2 * $default-padding;
&.small-margin {
margin-bottom: $default-padding / 2;
}
}
2019-01-30 16:14:15 +01:00
.add-row {
margin-bottom: 2 * $default-padding;
}
2018-11-14 16:26:00 +01:00
input[type=checkbox] {
&.small-margin {
margin-bottom: $default-padding / 2;
}
}
2018-07-23 14:52:14 +02:00
input[type=text]:not([data-address='true']),
input[type=email],
input[type=password],
input[type=date],
input[type=number],
input[type=tel],
textarea,
select {
2017-06-14 17:39:46 +02:00
border-radius: 4px;
border: solid 1px $border-grey;
2017-07-20 10:25:32 +02:00
padding: $default-padding;
2017-06-20 10:03:49 +02:00
&.small {
padding: $default-padding / 2;
}
2017-06-20 10:03:49 +02:00
&:disabled {
background-color: $border-grey;
}
&:focus {
border: 1px solid $blue;
box-shadow: 0px 0px 2px 1px $blue;
}
// Hide the browser default invalidity indicator until the field is touched
&:invalid:not(:focus) {
box-shadow: none;
}
&.touched:invalid {
border: 1px solid $dark-red;
box-shadow: 0px 0px 2px 1px $dark-red;
}
2017-06-14 17:39:46 +02:00
}
2017-07-24 09:46:13 +02:00
input[type=text],
input[type=email],
input[type=password],
input[type=date],
input[type=number],
input[type=tel],
textarea {
width: 100%;
}
input[type=email],
input[type=number],
input[type=tel], {
max-width: 500px;
}
input[type=checkbox],
input[type=radio] {
margin-left: 5px;
margin-right: 4px;
margin-bottom: 2 * $default-padding;
}
input[type=checkbox] {
// Firefox tends to display checkbox controls smaller than other browsers.
// Ensure a consistency of size between browsers.
width: 16px;
height: 16px;
}
input[type=date] {
max-width: 180px;
}
2017-07-26 13:22:25 +02:00
select,
.select2-selection {
2017-07-25 14:33:03 +02:00
// 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;
2017-07-25 14:33:03 +02:00
background-size: 14px;
background-position: right 10px center;
2017-12-19 13:55:02 +01:00
padding-right: 4 * $default-spacer;
2017-07-25 14:33:03 +02:00
&.small {
padding-right: 3 * $default-spacer;
}
2017-07-25 14:33:03 +02:00
// CAUTION: IE hackery ahead
&::-ms-expand {
display: none; // remove default arrow in IE 10 and 11 */
}
2017-07-25 14:33:03 +02:00
// target Internet Explorer 9 to undo the custom arrow */
@media screen and (min-width:0\0) {
select {
background: none\9;
}
}
}
2017-07-26 13:22:25 +02:00
.select2 {
min-width: 50%;
}
.select2-container {
display: block;
margin-bottom: 2 * $default-padding;
&.select2-container--focus {
.select2-selection {
border-color: $border-grey;
}
}
// scss-lint:disable SelectorFormat
.select2-selection__rendered {
padding: $default-padding;
}
.select2-selection__choice {
background-color: #FFFFFF;
}
// scss-lint:enable
}
2018-10-17 12:07:12 +02:00
.editable-champ {
&:not(.editable-champ-carte) .algolia-autocomplete {
margin-bottom: 2 * $default-padding;
}
.geo-areas {
margin-bottom: 2 * $default-padding;
}
2019-01-30 16:14:15 +01:00
&.editable-champ-repetition {
.row {
border-radius: 4px;
border: 1px solid $border-grey;
padding: $default-padding;
margin-bottom: 2 * $default-padding;
}
}
2017-07-26 12:09:21 +02:00
}
input.aa-input,
input.aa-hint {
2017-07-26 12:09:21 +02:00
border-radius: 4px;
border: solid 1px $border-grey;
padding: $default-padding;
}
input.aa-hint {
2017-07-26 12:09:21 +02:00
color: $grey;
}
.datetime {
input[type=date] {
display: inline-block;
}
select {
display: inline-block;
}
}
.header-section {
2017-11-21 16:36:26 +01:00
color: $blue;
font-weight: bold;
font-size: 20px;
margin-bottom: 2 * $default-padding;
}
.explication-libelle {
font-weight: bold;
font-size: 20px;
margin-bottom: $default-padding;
}
.explication {
margin-bottom: $default-padding;
padding: $default-padding / 2;
background-color: $light-grey;
2018-07-09 18:16:59 +02:00
p:not(:last-child) {
margin-bottom: $default-padding;
}
}
.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;
}
}
}
.send-dossier-wrapper {
display: flex;
width: 100%;
margin-top: $default-padding;
background: #FFFFFF;
position: fixed;
bottom: 0px;
border: 1px solid #CCCCCC;
border-top-left-radius: 5px;
border-top-right-radius: 5px;
border-bottom: none;
padding: 30px;
padding-bottom: 5px;
padding-top: 5px;
margin: 0 auto;
margin-left: -30px;
max-width: 1100px;
.button {
margin-top: $default-padding;
margin-bottom: 0;
}
@media(max-width: 1100px) {
margin-left: -16px;
}
// 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;
margin-left: -16px;
.button {
width: 100%;
max-width: 350px;
line-height: 30px;
margin-left: none;
margin-right: none;
}
}
2017-07-24 09:46:13 +02:00
}
.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;
}
}
2018-02-21 18:32:07 +01:00
.pj-input {
input[type=file] {
margin: $default-padding 0 (2 * $default-padding);
padding: 2px;
}
.piece-description {
margin-bottom: $default-padding;
}
}
2017-06-14 17:39:46 +02:00
}