Index: scss/_forms.scss |
=================================================================== |
new file mode 100644 |
--- /dev/null |
+++ b/scss/_forms.scss |
@@ -0,0 +1,289 @@ |
+/*! |
+ * This file is part of website-defaults |
+ * Copyright (C) 2016 Eyeo GmbH |
+ * |
+ * website-defaults is free software: you can redistribute it and/or |
+ * modify it under the terms of the GNU General Public License as published by |
+ * the Free Software Foundation, either version 3 of the License, or |
+ * (at your option) any later version. |
+ * |
+ * website-defaults is distributed in the hope that it will be useful, |
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of |
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
+ * GNU General Public License for more details. |
+ * |
+ * You should have received a copy of the GNU General Public License |
+ * along with website-defaults. If not, see <http://www.gnu.org/licenses/>. |
+ */ |
+ |
+/******************************************************************************* |
+ * Forms |
juliandoucette
2017/01/10 13:40:26
TODO:
- move button styles to button.scss
- remov
|
+ ******************************************************************************* |
+ * 1. Reset |
+ * 2. Structure |
+ * 3. Consistency |
+ * 4. Fields |
+ * 5. States |
+ ******************************************************************************/ |
+ |
+/* 1. Reset |
+ ******************************************************************************/ |
+ |
+/** |
+ * 1. Change the font styles in all browsers (opinionated). |
+ * 2. Remove the margin in Firefox and Safari. |
saroyanm
2016/12/06 18:26:54
Detail: Why exactly in Firefox and Safari ? I thin
juliandoucette
2016/12/07 17:31:08
Acknowledged.
This was taken from normalize.
juliandoucette
2017/01/10 13:40:27
will-do.
|
+ */ |
+ |
+button, |
+input, |
+optgroup, |
saroyanm
2016/12/06 18:26:54
Why do we apply this styles to the optgroup ? Ex.
juliandoucette
2016/12/07 17:31:09
Acknowledged.
Don't know. This was taken from nor
|
+select, |
+textarea |
+{ |
+ margin: 0; /* 2 */ |
saroyanm
2016/12/06 18:26:54
Detail: please specify units where possible.
saroyanm
2016/12/06 18:26:54
I don't think that we need to be that specific reg
juliandoucette
2016/12/07 17:31:08
Acknowledged.
Will-do.
Again, taken from normali
|
+ font-family: sans-serif; /* 1 */ |
+ font-size: 100%; /* 1 */ |
saroyanm
2016/12/06 18:26:54
Deatail: I think you want to specify 1em here ?
juliandoucette
2016/12/07 17:31:09
Acknowledged.
Maybe. I'll investigate. I think no
juliandoucette
2017/01/10 13:40:27
Note: Will change this to em instead of %
|
+ line-height: inherit; |
saroyanm
2016/12/06 18:26:53
I assume you want to setup this according to the c
juliandoucette
2016/12/07 17:31:09
Inherit is the default value. This is a reset styl
juliandoucette
2017/01/10 13:40:26
Acknowledged, will investigate, and determine if w
|
+} |
+ |
+/** |
+ * Make advanced text fields consistent and stylable on chrome, safari, and iOS |
+ */ |
+ |
+input[type="date"], |
saroyanm
2016/12/06 18:26:54
This input types are not supported across most of
juliandoucette
2016/12/07 17:31:09
Acknowledged.
- They are supported by HTML5
- The
juliandoucette
2017/01/10 13:40:27
See comment below.
|
+input[type="time"], |
+input[type="datetime-local"], |
+input[type="month"] |
+{ |
+ /* stylelint-disable-next-line */ |
+ -webkit-appearance: listbox; |
juliandoucette
2017/01/10 13:40:26
- will investigate if -webkit-appearance is necess
|
+ box-sizing: border-box; |
+} |
+ |
+/** |
+ * 1. Prevent a WebKit bug where (2) destroys native `audio` and `video` |
saroyanm
2016/12/06 18:26:53
Not really sure if I understand how this comment i
juliandoucette
2016/12/07 17:31:09
Apparently applying "-webkit-appearance: button" t
|
+ * controls in Android 4. |
+ * 2. Correct the inability to style clickable types in iOS and Safari. |
+ */ |
+ |
+button, |
+html [type="button"], /* 1 */ |
saroyanm
2016/12/06 18:26:53
[type="button"] selector will be more consistent w
juliandoucette
2016/12/07 17:31:09
Acknowledged.
See comment above.
|
+[type="reset"], |
+[type="submit"] |
+{ |
+ /* stylelint-disable-next-line */ |
+ -webkit-appearance: button; /* 2 */ |
saroyanm
2016/12/06 18:26:53
I don't think why we need to use this non standard
juliandoucette
2016/12/07 17:31:09
Because webkit based mobile browsers apply default
|
+} |
+ |
+/** |
+ * Remove the inner border and padding in Firefox. |
saroyanm
2016/12/06 18:26:54
I can't see if this have any effect on my side.
juliandoucette
2016/12/07 17:31:08
Acknowledged.
Looks like this is not relevant to
|
+ */ |
+ |
+button::-moz-focus-inner, |
+[type="button"]::-moz-focus-inner, |
+[type="reset"]::-moz-focus-inner, |
+[type="submit"]::-moz-focus-inner |
+{ |
+ padding: 0; |
+ border-style: none; |
+} |
+ |
+/** |
+ * Restore the focus styles unset by the previous rule. |
saroyanm
2016/12/06 18:26:54
Again: why do we need this non standard reset ?
Al
juliandoucette
2016/12/07 17:31:08
Acknowledged.
See comment above.
|
+ */ |
+ |
+button:-moz-focusring, |
+[type="button"]:-moz-focusring, |
+[type="reset"]:-moz-focusring, |
+[type="submit"]:-moz-focusring |
+{ |
+ outline: 1px dotted ButtonText; |
+} |
+ |
+/** |
+ * 2. Remove the padding in IE 10-. |
saroyanm
2016/12/06 18:26:53
I don't think that this style is specific for only
juliandoucette
2016/12/07 17:31:09
Acknowledged.
Again, this comes from normalize. A
|
+ */ |
+ |
+[type="checkbox"], |
+[type="radio"] |
+{ |
+ padding: 0; /* 2 */ |
+} |
+ |
+/** |
+ * 1. Correct the odd appearance in Chrome and Safari. |
saroyanm
2016/12/06 18:26:55
What odd appearance is this fixing, I can't see an
juliandoucette
2016/12/07 17:31:09
Search input has border radius by default on chrom
|
+ * 2. Correct the outline style in Safari. |
+ */ |
+ |
+[type="search"] |
+{ |
+ /* stylelint-disable-next-line */ |
+ -webkit-appearance: textfield; /* 1 */ |
+ outline-offset: -2px; /* 2 */ |
+} |
+ |
+/** |
+ * Work around a Firefox/IE bug where the transparent `button` background |
+ * results in a loss of the default `button` focus styles. |
+ */ |
+ |
+button:focus |
+{ |
+ outline: 1px dotted; |
+ /* stylelint-disable-next-line */ |
+ outline: 5px auto -webkit-focus-ring-color; |
saroyanm
2016/12/06 18:26:54
I don't think that we want to use a webkit specifi
juliandoucette
2016/12/07 17:31:08
Acknowledged.
This is restoring the default behav
juliandoucette
2017/01/10 13:40:27
Agreed. Let's use a non-webkit color.
|
+} |
+ |
+/** |
+ * Add the correct display in IE 10-. |
+ */ |
+ |
+[hidden] |
saroyanm
2016/12/06 18:26:53
Are we planing to use hidden attribute ?
I can't s
juliandoucette
2016/12/07 17:31:08
It's common to use this attribute to hide custom f
|
+{ |
+ display: none; |
+} |
+ |
+/* 2. Structure |
+ ******************************************************************************/ |
+ |
+fieldset { |
saroyanm
2016/12/06 18:26:54
Detail: the opening braces should go to the next l
juliandoucette
2016/12/07 17:31:08
Acknowledged.
(Sorry)
|
+ display: block; |
+ /* undo browser default */ |
+ margin: 0em; |
+ padding: 0em; |
+ border: 0em; |
+} |
+ |
+legend { |
+ display: block; |
+ margin: 2em 0em 0em 0em; |
+ /* undo browser default */ |
+ padding: 0em; |
+ font-size: 1.25em; |
+ font-weight: $bold-weight; |
+ /* undo browser default */ |
+ line-height: inherit; |
saroyanm
2016/12/06 18:26:53
deatail: As far as I remember we decided to specif
juliandoucette
2016/12/07 17:31:08
Acknowledged.
The intention here was to unset bro
|
+} |
+ |
+label { |
+ display: block; |
+ margin: 1em 0em 0.25em 0em; |
+} |
+ |
+/* 3. Consistency |
+ ****************************************************************************************/ |
+ |
+[type="text"], |
+[type="search"], |
+[type="tel"], |
+[type="url"], |
+[type="email"], |
+[type="password"], |
+[type="date"], |
saroyanm
2016/12/06 18:26:54
Some of this input type, like date and time are no
juliandoucette
2016/12/07 17:31:08
Acknowledged.
I got this list from the HTML5 spec
juliandoucette
2017/01/10 13:40:26
See comment above.
|
+[type="time"], |
+[type="number"], |
+select, |
+textarea |
+{ |
+ width: 100%; |
+ border: 1px solid $secondary; |
+ background-color: $primary-light; |
+} |
+ |
+[type="text"], |
+[type="search"], |
+[type="tel"], |
+[type="url"], |
+[type="email"], |
+[type="password"], |
+[type="date"], |
+[type="time"], |
+[type="number"], |
+select |
+{ |
+ height: 1.75em; |
+ padding: 0 0.25em; |
+} |
+ |
+/* 4. Fields |
+ ****************************************************************************************/ |
+ |
+textarea |
+{ |
+ /* Progressively disable horizontal resizing */ |
+ /* stylelint-disable-next-line no-unsupported-browser-features */ |
+ resize: vertical; |
+ overflow: auto; |
saroyanm
2016/12/06 18:26:53
Why we need to setup overflow to auto ?
juliandoucette
2016/12/07 17:31:08
Acknowledged.
I don't know :/ . Will investigate.
|
+} |
+ |
+select |
+{ |
+ /* stylelint-disable */ |
+ /* Undo chrome default border radius */ |
+ -webkit-appearance: none; |
saroyanm
2016/12/06 18:26:54
The way we are designing select boxes are not reli
juliandoucette
2016/12/07 17:31:09
I styled select this way to specifically address t
|
+ -moz-appearance: none; |
+ border-radius: 0; |
+ /* Make the caret consistent across modern browsers */ |
+ background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' version='1.1' width='32' height='24' viewBox='0 0 32 24'><polygon points='0,0 32,0 16,24' style='fill: rgb%28138, 138, 138%29'></polygon></svg>"); |
saroyanm
2016/12/06 18:26:54
I think we can use PNG and made a wider support.
juliandoucette
2016/12/07 17:31:09
SVG is smaller and supports highDPI. We cannot rep
juliandoucette
2017/01/10 13:40:27
- will double check double backgrounds
- will doub
|
+ background-size: 9px 6px; |
saroyanm
2016/12/06 18:26:54
I think we can use background shorthand property.
juliandoucette
2016/12/07 17:31:09
Maybe. This may affect browser support.
|
+ background-position: right 8px center; |
+ background-repeat: no-repeat; |
+ padding-right: 25px; |
saroyanm
2016/12/06 18:26:54
I thought we awere planing to use EMs instead.
juliandoucette
2016/12/07 17:31:09
The padding-right is in px because the caret icon
|
+ /* stylelint-enable */ |
+} |
+ |
+[dir="rtl"] select |
+{ |
+ padding-right: 25px; |
saroyanm
2016/12/06 18:26:54
You already setup padding right above.
juliandoucette
2016/12/07 17:31:08
Acknowledged.
Maybe I got this backwards :/
juliandoucette
2017/01/10 13:40:26
Verified. I got this backwards.
|
+ padding-left: 0.25em; |
+ background-position: left 8px center; |
+} |
+ |
+/* stylelint-disable-next-line */ |
+[type="checkbox"], |
+[type="radio"] |
+{ |
+ margin-right: 0.15em; |
saroyanm
2016/12/06 18:26:53
What if the label will be before the checkbox ?
E
juliandoucette
2016/12/07 17:31:08
Acknowledged.
Good point.
|
+} |
+ |
+[type="button"], |
+[type="reset"] |
+{ |
+ @extend .button; |
saroyanm
2016/12/06 18:26:54
I'll suggest not to use @extend if there is no rea
juliandoucette
2016/12/07 17:31:09
Acknowledged.
juliandoucette
2017/01/10 13:40:26
We will move button styles to button.scss
|
+} |
+ |
+[type="submit"] |
+{ |
+ @extend .button; |
+ @extend .submit; |
+} |
+ |
+/* 5. States |
+ ****************************************************************************************/ |
+ |
+.invalid |
+{ |
+ color: $error; |
+} |
+ |
+.invalid input, |
+.invalid textarea, |
+.invalid select |
+{ |
+ border-color: $error; |
+} |
+ |
+.disabled |
+{ |
+ color: $secondary; |
+} |
+ |
+.disabled input, |
saroyanm
2016/12/06 18:26:54
Why not to use disabled attribute ?
juliandoucette
2016/12/07 17:31:08
Because this class is intended to apply to the par
juliandoucette
2017/01/10 13:40:26
- Will use attribute here instead
|
+.disabled textarea, |
+.disabled select |
+{ |
+ background-color: $secondary-light; |
+ /* Progressively set disabled cursor */ |
+ /* stylelint-disable-next-line */ |
+ cursor: not-allowed; |
+} |