mirror of
https://github.com/picocss/pico.git
synced 2025-04-21 17:16:14 -04:00
Define validation states with aria-invalid
This commit is contained in:
parent
c49273df6c
commit
d49c7ffcf2
10 changed files with 95 additions and 39 deletions
|
@ -1035,6 +1035,27 @@ textarea[disabled] {
|
||||||
opacity: .66;
|
opacity: .66;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
input[aria-invalid],
|
||||||
|
select[aria-invalid],
|
||||||
|
textarea[aria-invalid] {
|
||||||
|
padding-right: 2rem;
|
||||||
|
background-position: center right .75rem;
|
||||||
|
background-repeat: no-repeat;
|
||||||
|
background-size: 1rem auto;
|
||||||
|
}
|
||||||
|
|
||||||
|
input[aria-invalid="false"],
|
||||||
|
select[aria-invalid="false"],
|
||||||
|
textarea[aria-invalid="false"] {
|
||||||
|
background-image: var(--icon-valid);
|
||||||
|
}
|
||||||
|
|
||||||
|
input[aria-invalid="true"],
|
||||||
|
select[aria-invalid="true"],
|
||||||
|
textarea[aria-invalid="true"] {
|
||||||
|
background-image: var(--icon-invalid);
|
||||||
|
}
|
||||||
|
|
||||||
input:not([type="checkbox"]):not([type="radio"]),
|
input:not([type="checkbox"]):not([type="radio"]),
|
||||||
select,
|
select,
|
||||||
textarea {
|
textarea {
|
||||||
|
|
2
css/pico.classless.min.css
vendored
2
css/pico.classless.min.css
vendored
File diff suppressed because one or more lines are too long
28
css/pico.css
28
css/pico.css
|
@ -977,7 +977,7 @@ a[role="button"].contrast:focus {
|
||||||
|
|
||||||
button.outline,
|
button.outline,
|
||||||
input[type="submit"].outline,
|
input[type="submit"].outline,
|
||||||
a.outline[role="button"] {
|
a[role="button"].outline {
|
||||||
border: var(--button-border-width) solid var(--primary-border);
|
border: var(--button-border-width) solid var(--primary-border);
|
||||||
background-color: transparent;
|
background-color: transparent;
|
||||||
color: var(--primary);
|
color: var(--primary);
|
||||||
|
@ -987,9 +987,9 @@ button.outline:hover, button.outline:active, button.outline:focus,
|
||||||
input[type="submit"].outline:hover,
|
input[type="submit"].outline:hover,
|
||||||
input[type="submit"].outline:active,
|
input[type="submit"].outline:active,
|
||||||
input[type="submit"].outline:focus,
|
input[type="submit"].outline:focus,
|
||||||
a.outline[role="button"]:hover,
|
a[role="button"].outline:hover,
|
||||||
a.outline[role="button"]:active,
|
a[role="button"].outline:active,
|
||||||
a.outline[role="button"]:focus {
|
a[role="button"].outline:focus {
|
||||||
border: var(--button-border-width) solid var(--primary-hover-border);
|
border: var(--button-border-width) solid var(--primary-hover-border);
|
||||||
color: var(--primary-hover);
|
color: var(--primary-hover);
|
||||||
}
|
}
|
||||||
|
@ -1230,26 +1230,24 @@ textarea[disabled] {
|
||||||
opacity: .66;
|
opacity: .66;
|
||||||
}
|
}
|
||||||
|
|
||||||
input.valid, input.invalid,
|
input[aria-invalid],
|
||||||
select.valid,
|
select[aria-invalid],
|
||||||
select.invalid,
|
textarea[aria-invalid] {
|
||||||
textarea.valid,
|
|
||||||
textarea.invalid {
|
|
||||||
padding-right: 2rem;
|
padding-right: 2rem;
|
||||||
background-position: center right .75rem;
|
background-position: center right .75rem;
|
||||||
background-repeat: no-repeat;
|
background-repeat: no-repeat;
|
||||||
background-size: 1rem auto;
|
background-size: 1rem auto;
|
||||||
}
|
}
|
||||||
|
|
||||||
input.valid,
|
input[aria-invalid="false"],
|
||||||
select.valid,
|
select[aria-invalid="false"],
|
||||||
textarea.valid {
|
textarea[aria-invalid="false"] {
|
||||||
background-image: var(--icon-valid);
|
background-image: var(--icon-valid);
|
||||||
}
|
}
|
||||||
|
|
||||||
input.invalid,
|
input[aria-invalid="true"],
|
||||||
select.invalid,
|
select[aria-invalid="true"],
|
||||||
textarea.invalid {
|
textarea[aria-invalid="true"] {
|
||||||
background-image: var(--icon-invalid);
|
background-image: var(--icon-invalid);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1031,6 +1031,27 @@ textarea[disabled] {
|
||||||
opacity: .66;
|
opacity: .66;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
input[aria-invalid],
|
||||||
|
select[aria-invalid],
|
||||||
|
textarea[aria-invalid] {
|
||||||
|
padding-right: 2rem;
|
||||||
|
background-position: center right .75rem;
|
||||||
|
background-repeat: no-repeat;
|
||||||
|
background-size: 1rem auto;
|
||||||
|
}
|
||||||
|
|
||||||
|
input[aria-invalid="false"],
|
||||||
|
select[aria-invalid="false"],
|
||||||
|
textarea[aria-invalid="false"] {
|
||||||
|
background-image: var(--icon-valid);
|
||||||
|
}
|
||||||
|
|
||||||
|
input[aria-invalid="true"],
|
||||||
|
select[aria-invalid="true"],
|
||||||
|
textarea[aria-invalid="true"] {
|
||||||
|
background-image: var(--icon-invalid);
|
||||||
|
}
|
||||||
|
|
||||||
input:not([type="checkbox"]):not([type="radio"]),
|
input:not([type="checkbox"]):not([type="radio"]),
|
||||||
select,
|
select,
|
||||||
textarea {
|
textarea {
|
||||||
|
|
2
css/pico.fluid.classless.min.css
vendored
2
css/pico.fluid.classless.min.css
vendored
File diff suppressed because one or more lines are too long
2
css/pico.min.css
vendored
2
css/pico.min.css
vendored
File diff suppressed because one or more lines are too long
|
@ -1038,6 +1038,27 @@ textarea[disabled] {
|
||||||
opacity: .66;
|
opacity: .66;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
input[aria-invalid],
|
||||||
|
select[aria-invalid],
|
||||||
|
textarea[aria-invalid] {
|
||||||
|
padding-right: 2rem;
|
||||||
|
background-position: center right .75rem;
|
||||||
|
background-repeat: no-repeat;
|
||||||
|
background-size: 1rem auto;
|
||||||
|
}
|
||||||
|
|
||||||
|
input[aria-invalid="false"],
|
||||||
|
select[aria-invalid="false"],
|
||||||
|
textarea[aria-invalid="false"] {
|
||||||
|
background-image: var(--icon-valid);
|
||||||
|
}
|
||||||
|
|
||||||
|
input[aria-invalid="true"],
|
||||||
|
select[aria-invalid="true"],
|
||||||
|
textarea[aria-invalid="true"] {
|
||||||
|
background-image: var(--icon-invalid);
|
||||||
|
}
|
||||||
|
|
||||||
input:not([type="checkbox"]):not([type="radio"]),
|
input:not([type="checkbox"]):not([type="radio"]),
|
||||||
select,
|
select,
|
||||||
textarea {
|
textarea {
|
||||||
|
|
2
css/pico.slim.min.css
vendored
2
css/pico.slim.min.css
vendored
File diff suppressed because one or more lines are too long
|
@ -710,14 +710,14 @@
|
||||||
<p>Disabled and validation states:</p>
|
<p>Disabled and validation states:</p>
|
||||||
<article aria-label="Validation states examples">
|
<article aria-label="Validation states examples">
|
||||||
<form class="grid">
|
<form class="grid">
|
||||||
<input type="text" placeholder="Valid" aria-label="Valid" class="valid">
|
<input type="text" placeholder="Valid" aria-label="Valid" aria-invalid="false">
|
||||||
<input type="text" placeholder="Invalid" aria-label="Invalid" class="invalid">
|
<input type="text" placeholder="Invalid" aria-label="Invalid" aria-invalid="true">
|
||||||
<input type="text" placeholder="Disabled" aria-label="Disabled" disabled>
|
<input type="text" placeholder="Disabled" aria-label="Disabled" disabled>
|
||||||
<input type="text" value="Readonly" aria-label="Readonly" readonly>
|
<input type="text" value="Readonly" aria-label="Readonly" readonly>
|
||||||
</form>
|
</form>
|
||||||
|
|
||||||
<pre><code><<b>input</b> <i>type</i>=<u>"text"</u> <i>placeholder</i>=<u>"Valid"</u> <i>class</i>=<u>"valid"</u>>
|
<pre><code><<b>input</b> <i>type</i>=<u>"text"</u> <i>placeholder</i>=<u>"Valid"</u> <i>aria-invalid</i>=<u>"false"</u>>
|
||||||
<<b>input</b> <i>type</i>=<u>"text"</u> <i>placeholder</i>=<u>"Invalid"</u> <i>class</i>=<u>"invalid"</u>>
|
<<b>input</b> <i>type</i>=<u>"text"</u> <i>placeholder</i>=<u>"Invalid"</u> <i>aria-invalid</i>=<u>"true"</u>>
|
||||||
<<b>input</b> <i>type</i>=<u>"text"</u> <i>placeholder</i>=<u>"Disabled"</u> <i>disabled</i>>
|
<<b>input</b> <i>type</i>=<u>"text"</u> <i>placeholder</i>=<u>"Disabled"</u> <i>disabled</i>>
|
||||||
<<b>input</b> <i>type</i>=<u>"text"</u> <i>value</i>=<u>"Readonly"</u> <i>readonly</i>></code></pre>
|
<<b>input</b> <i>type</i>=<u>"text"</u> <i>value</i>=<u>"Readonly"</u> <i>readonly</i>></code></pre>
|
||||||
|
|
||||||
|
|
|
@ -221,24 +221,19 @@ textarea {
|
||||||
}
|
}
|
||||||
|
|
||||||
// Validation states
|
// Validation states
|
||||||
@if $enable-input-states and $enable-classes {
|
&[aria-invalid] {
|
||||||
|
padding-right: 2rem;
|
||||||
|
background-position: center right .75rem;
|
||||||
|
background-repeat: no-repeat;
|
||||||
|
background-size: 1rem auto;
|
||||||
|
}
|
||||||
|
|
||||||
// Validation states
|
&[aria-invalid="false"] {
|
||||||
&.valid,
|
background-image: var(--icon-valid);
|
||||||
&.invalid {
|
}
|
||||||
padding-right: 2rem;
|
|
||||||
background-position: center right .75rem;
|
|
||||||
background-repeat: no-repeat;
|
|
||||||
background-size: 1rem auto;
|
|
||||||
}
|
|
||||||
|
|
||||||
&.valid {
|
&[aria-invalid="true"]{
|
||||||
background-image: var(--icon-valid);
|
background-image: var(--icon-invalid);
|
||||||
}
|
|
||||||
|
|
||||||
&.invalid {
|
|
||||||
background-image: var(--icon-invalid);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue