fix: aria-current links and buttons

This commit is contained in:
Lucas Larroche 2023-04-01 10:10:09 +07:00
parent 3644e4ccb5
commit e43ed98d29
13 changed files with 104 additions and 69 deletions

View file

@ -250,6 +250,10 @@ details[role=list] summary:not([role=button]) {
--pico-outline-width: 0.0625rem;
}
nav details[role=list] summary:focus-visible {
--pico-outline-width: 0.1875rem;
}
/**
* Color schemes
*/
@ -745,8 +749,8 @@ a,
transition: background-color var(--pico-transition), color var(--pico-transition), text-decoration var(--pico-transition), box-shadow var(--pico-transition);
transition: background-color var(--pico-transition), color var(--pico-transition), text-decoration var(--pico-transition), box-shadow var(--pico-transition), -webkit-text-decoration var(--pico-transition);
}
a:is([aria-current], :hover, :active, :focus),
[role=link]:is([aria-current], :hover, :active, :focus) {
a:is([aria-current], :hover, :active, :focus):not([aria-current=false]),
[role=link]:is([aria-current], :hover, :active, :focus):not([aria-current=false]) {
--pico-color: var(--pico-primary-hover);
--pico-underline: var(--pico-primary-underline-hover);
--pico-text-decoration: underline;
@ -1007,12 +1011,12 @@ input[type=file]::file-selector-button,
user-select: none;
transition: background-color var(--pico-transition), border-color var(--pico-transition), color var(--pico-transition), box-shadow var(--pico-transition);
}
button:is([aria-current], :hover, :active, :focus),
[type=submit]:is([aria-current], :hover, :active, :focus),
input[type=reset]:is([aria-current], :hover, :active, :focus),
input[type=button]:is([aria-current], :hover, :active, :focus),
input[type=file]::file-selector-button:is([aria-current], :hover, :active, :focus),
[role=button]:is([aria-current], :hover, :active, :focus) {
button:is([aria-current], :hover, :active, :focus):not([aria-current=false]),
[type=submit]:is([aria-current], :hover, :active, :focus):not([aria-current=false]),
input[type=reset]:is([aria-current], :hover, :active, :focus):not([aria-current=false]),
input[type=button]:is([aria-current], :hover, :active, :focus):not([aria-current=false]),
input[type=file]::file-selector-button:is([aria-current], :hover, :active, :focus):not([aria-current=false]),
[role=button]:is([aria-current], :hover, :active, :focus):not([aria-current=false]) {
--pico-background-color: var(--pico-primary-background-hover);
--pico-border-color: var(--pico-primary-border-hover);
--pico-box-shadow: var(--pico-button-hover-box-shadow, 0 0 0 rgba(0, 0, 0, 0));
@ -1040,8 +1044,8 @@ input[type=file]::file-selector-button {
--pico-color: var(--pico-secondary-inverse);
cursor: pointer;
}
input[type=reset]:is([aria-current], :hover, :active, :focus),
input[type=file]::file-selector-button:is([aria-current], :hover, :active, :focus) {
input[type=reset]:is([aria-current], :hover, :active, :focus):not([aria-current=false]),
input[type=file]::file-selector-button:is([aria-current], :hover, :active, :focus):not([aria-current=false]) {
--pico-background-color: var(--pico-secondary-hover);
--pico-border-color: var(--pico-secondary-hover);
}
@ -1968,10 +1972,17 @@ details[role=list] summary:not([role])[aria-invalid=true] {
--pico-form-element-focus-color: var(--pico-form-element-invalid-focus-color);
}
nav details[role=list] {
display: inline;
margin: calc(var(--pico-nav-element-spacing-vertical) * -1) 0;
}
nav details[role=list] summary:not([role]) {
height: auto;
height: calc(1rem * var(--pico-line-height) + var(--pico-nav-link-spacing-vertical) * 2);
padding: calc(var(--pico-nav-link-spacing-vertical) - var(--pico-border-width) * 2) var(--pico-nav-link-spacing-horizontal);
}
nav details[role=list] summary:not([role]):focus-visible {
box-shadow: 0 0 0 var(--pico-outline-width) var(--pico-primary-focus);
}
details[role=list] summary + ul {
display: flex;
@ -2020,7 +2031,7 @@ details[role=list] summary + ul li a {
text-decoration: none;
text-overflow: ellipsis;
}
details[role=list] summary + ul li a:hover, details[role=list] summary + ul li a:focus, details[role=list] summary + ul li a:active, details[role=list] summary + ul li a:focus-visible {
details[role=list] summary + ul li a:hover, details[role=list] summary + ul li a:focus, details[role=list] summary + ul li a:active, details[role=list] summary + ul li a:focus-visible, details[role=list] summary + ul li a[aria-current]:not([aria-current=false]) {
background-color: var(--pico-dropdown-hover-background-color);
}
details[role=list] summary + ul li label {
@ -2222,7 +2233,7 @@ nav[aria-label=breadcrumb] ul li:not(:last-child)::after {
text-align: center;
text-decoration: none;
}
nav[aria-label=breadcrumb] a[aria-current] {
nav[aria-label=breadcrumb] a[aria-current]:not([aria-current=false]) {
background-color: transparent;
color: inherit;
text-decoration: none;

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View file

@ -252,6 +252,10 @@ details[role=list] summary:not([role=button]) {
--pico-outline-width: 0.0625rem;
}
nav details[role=list] summary:focus-visible {
--pico-outline-width: 0.1875rem;
}
/**
* Color schemes
*/
@ -787,8 +791,8 @@ a,
transition: background-color var(--pico-transition), color var(--pico-transition), text-decoration var(--pico-transition), box-shadow var(--pico-transition);
transition: background-color var(--pico-transition), color var(--pico-transition), text-decoration var(--pico-transition), box-shadow var(--pico-transition), -webkit-text-decoration var(--pico-transition);
}
a:is([aria-current], :hover, :active, :focus),
[role=link]:is([aria-current], :hover, :active, :focus) {
a:is([aria-current], :hover, :active, :focus):not([aria-current=false]),
[role=link]:is([aria-current], :hover, :active, :focus):not([aria-current=false]) {
--pico-color: var(--pico-primary-hover);
--pico-underline: var(--pico-primary-underline-hover);
--pico-text-decoration: underline;
@ -802,8 +806,8 @@ a.secondary,
--pico-color: var(--pico-secondary);
--pico-underline: var(--pico-secondary-underline);
}
a.secondary:is([aria-current], :hover, :active, :focus),
[role=link].secondary:is([aria-current], :hover, :active, :focus) {
a.secondary:is([aria-current], :hover, :active, :focus):not([aria-current=false]),
[role=link].secondary:is([aria-current], :hover, :active, :focus):not([aria-current=false]) {
--pico-color: var(--pico-secondary-hover);
--pico-underline: var(--pico-secondary-underline-hover);
}
@ -812,8 +816,8 @@ a.contrast,
--pico-color: var(--pico-contrast);
--pico-underline: var(--pico-contrast-underline);
}
a.contrast:is([aria-current], :hover, :active, :focus),
[role=link].contrast:is([aria-current], :hover, :active, :focus) {
a.contrast:is([aria-current], :hover, :active, :focus):not([aria-current=false]),
[role=link].contrast:is([aria-current], :hover, :active, :focus):not([aria-current=false]) {
--pico-color: var(--pico-contrast-hover);
--pico-underline: var(--pico-contrast-underline-hover);
}
@ -1069,12 +1073,12 @@ input[type=file]::file-selector-button,
user-select: none;
transition: background-color var(--pico-transition), border-color var(--pico-transition), color var(--pico-transition), box-shadow var(--pico-transition);
}
button:is([aria-current], :hover, :active, :focus),
[type=submit]:is([aria-current], :hover, :active, :focus),
input[type=reset]:is([aria-current], :hover, :active, :focus),
input[type=button]:is([aria-current], :hover, :active, :focus),
input[type=file]::file-selector-button:is([aria-current], :hover, :active, :focus),
[role=button]:is([aria-current], :hover, :active, :focus) {
button:is([aria-current], :hover, :active, :focus):not([aria-current=false]),
[type=submit]:is([aria-current], :hover, :active, :focus):not([aria-current=false]),
input[type=reset]:is([aria-current], :hover, :active, :focus):not([aria-current=false]),
input[type=button]:is([aria-current], :hover, :active, :focus):not([aria-current=false]),
input[type=file]::file-selector-button:is([aria-current], :hover, :active, :focus):not([aria-current=false]),
[role=button]:is([aria-current], :hover, :active, :focus):not([aria-current=false]) {
--pico-background-color: var(--pico-primary-background-hover);
--pico-border-color: var(--pico-primary-border-hover);
--pico-box-shadow: var(--pico-button-hover-box-shadow, 0 0 0 rgba(0, 0, 0, 0));
@ -1103,9 +1107,9 @@ input[type=file]::file-selector-button {
--pico-color: var(--pico-secondary-inverse);
cursor: pointer;
}
:is(button, [type=submit], input[type=button], [role=button]).secondary:is([aria-current], :hover, :active, :focus),
input[type=reset]:is([aria-current], :hover, :active, :focus),
input[type=file]::file-selector-button:is([aria-current], :hover, :active, :focus) {
:is(button, [type=submit], input[type=button], [role=button]).secondary:is([aria-current], :hover, :active, :focus):not([aria-current=false]),
input[type=reset]:is([aria-current], :hover, :active, :focus):not([aria-current=false]),
input[type=file]::file-selector-button:is([aria-current], :hover, :active, :focus):not([aria-current=false]) {
--pico-background-color: var(--pico-secondary-background-hover);
--pico-border-color: var(--pico-secondary-border-hover);
--pico-color: var(--pico-secondary-inverse);
@ -1121,7 +1125,7 @@ input[type=file]::file-selector-button:focus {
--pico-border-color: var(--pico-contrast-border);
--pico-color: var(--pico-contrast-inverse);
}
:is(button, [type=submit], input[type=button], [role=button]).contrast:is([aria-current], :hover, :active, :focus) {
:is(button, [type=submit], input[type=button], [role=button]).contrast:is([aria-current], :hover, :active, :focus):not([aria-current=false]) {
--pico-background-color: var(--pico-contrast-background-hover);
--pico-border-color: var(--pico-contrast-border-hover);
--pico-color: var(--pico-contrast-inverse);
@ -1136,8 +1140,8 @@ input[type=reset].outline {
--pico-color: var(--pico-primary);
--pico-border-color: currentColor;
}
:is(button, [type=submit], input[type=button], [role=button]).outline:is([aria-current], :hover, :active, :focus),
input[type=reset].outline:is([aria-current], :hover, :active, :focus) {
:is(button, [type=submit], input[type=button], [role=button]).outline:is([aria-current], :hover, :active, :focus):not([aria-current=false]),
input[type=reset].outline:is([aria-current], :hover, :active, :focus):not([aria-current=false]) {
--pico-background-color: transparent;
--pico-color: var(--pico-primary-hover);
}
@ -1147,15 +1151,15 @@ input[type=reset].outline {
--pico-color: var(--pico-secondary);
--pico-border-color: currentColor;
}
:is(button, [type=submit], input[type=button], [role=button]).outline.secondary:is([aria-current], :hover, :active, :focus),
input[type=reset].outline:is([aria-current], :hover, :active, :focus) {
:is(button, [type=submit], input[type=button], [role=button]).outline.secondary:is([aria-current], :hover, :active, :focus):not([aria-current=false]),
input[type=reset].outline:is([aria-current], :hover, :active, :focus):not([aria-current=false]) {
--pico-color: var(--pico-secondary-hover);
}
:is(button, [type=submit], input[type=button], [role=button]).outline.contrast {
--pico-color: var(--pico-contrast);
}
:is(button, [type=submit], input[type=button], [role=button]).outline.contrast:is([aria-current], :hover, :active, :focus) {
:is(button, [type=submit], input[type=button], [role=button]).outline.contrast:is([aria-current], :hover, :active, :focus):not([aria-current=false]) {
--pico-color: var(--pico-contrast-hover);
}
@ -2077,10 +2081,17 @@ details[role=list] summary:not([role])[aria-invalid=true] {
--pico-form-element-focus-color: var(--pico-form-element-invalid-focus-color);
}
nav details[role=list] {
display: inline;
margin: calc(var(--pico-nav-element-spacing-vertical) * -1) 0;
}
nav details[role=list] summary:not([role]) {
height: auto;
height: calc(1rem * var(--pico-line-height) + var(--pico-nav-link-spacing-vertical) * 2);
padding: calc(var(--pico-nav-link-spacing-vertical) - var(--pico-border-width) * 2) var(--pico-nav-link-spacing-horizontal);
}
nav details[role=list] summary:not([role]):focus-visible {
box-shadow: 0 0 0 var(--pico-outline-width) var(--pico-primary-focus);
}
details[role=list] summary + ul {
display: flex;
@ -2129,7 +2140,7 @@ details[role=list] summary + ul li a {
text-decoration: none;
text-overflow: ellipsis;
}
details[role=list] summary + ul li a:hover, details[role=list] summary + ul li a:focus, details[role=list] summary + ul li a:active, details[role=list] summary + ul li a:focus-visible {
details[role=list] summary + ul li a:hover, details[role=list] summary + ul li a:focus, details[role=list] summary + ul li a:active, details[role=list] summary + ul li a:focus-visible, details[role=list] summary + ul li a[aria-current]:not([aria-current=false]) {
background-color: var(--pico-dropdown-hover-background-color);
}
details[role=list] summary + ul li label {
@ -2268,7 +2279,7 @@ dialog article .close {
opacity: 0.5;
transition: opacity var(--pico-transition);
}
dialog article .close:is([aria-current], :hover, :active, :focus) {
dialog article .close:is([aria-current], :hover, :active, :focus):not([aria-current=false]) {
opacity: 1;
}
dialog:not([open]), dialog[open=false] {
@ -2283,6 +2294,7 @@ dialog:not([open]), dialog[open=false] {
}
.modal-is-open dialog {
pointer-events: auto;
touch-action: auto;
}
:where(.modal-is-opening, .modal-is-closing) dialog,
@ -2392,7 +2404,7 @@ nav[aria-label=breadcrumb] ul li:not(:last-child)::after {
text-align: center;
text-decoration: none;
}
nav[aria-label=breadcrumb] a[aria-current] {
nav[aria-label=breadcrumb] a[aria-current]:not([aria-current=false]) {
background-color: transparent;
color: inherit;
text-decoration: none;

File diff suppressed because one or more lines are too long

View file

@ -250,6 +250,10 @@ details[role=list] summary:not([role=button]) {
--pico-outline-width: 0.0625rem;
}
nav details[role=list] summary:focus-visible {
--pico-outline-width: 0.1875rem;
}
/**
* Color schemes
*/
@ -708,8 +712,8 @@ a,
transition: background-color var(--pico-transition), color var(--pico-transition), text-decoration var(--pico-transition), box-shadow var(--pico-transition);
transition: background-color var(--pico-transition), color var(--pico-transition), text-decoration var(--pico-transition), box-shadow var(--pico-transition), -webkit-text-decoration var(--pico-transition);
}
a:is([aria-current], :hover, :active, :focus),
[role=link]:is([aria-current], :hover, :active, :focus) {
a:is([aria-current], :hover, :active, :focus):not([aria-current=false]),
[role=link]:is([aria-current], :hover, :active, :focus):not([aria-current=false]) {
--pico-color: var(--pico-primary-hover);
--pico-underline: var(--pico-primary-underline-hover);
--pico-text-decoration: underline;
@ -970,12 +974,12 @@ input[type=file]::file-selector-button,
user-select: none;
transition: background-color var(--pico-transition), border-color var(--pico-transition), color var(--pico-transition), box-shadow var(--pico-transition);
}
button:is([aria-current], :hover, :active, :focus),
[type=submit]:is([aria-current], :hover, :active, :focus),
input[type=reset]:is([aria-current], :hover, :active, :focus),
input[type=button]:is([aria-current], :hover, :active, :focus),
input[type=file]::file-selector-button:is([aria-current], :hover, :active, :focus),
[role=button]:is([aria-current], :hover, :active, :focus) {
button:is([aria-current], :hover, :active, :focus):not([aria-current=false]),
[type=submit]:is([aria-current], :hover, :active, :focus):not([aria-current=false]),
input[type=reset]:is([aria-current], :hover, :active, :focus):not([aria-current=false]),
input[type=button]:is([aria-current], :hover, :active, :focus):not([aria-current=false]),
input[type=file]::file-selector-button:is([aria-current], :hover, :active, :focus):not([aria-current=false]),
[role=button]:is([aria-current], :hover, :active, :focus):not([aria-current=false]) {
--pico-background-color: var(--pico-primary-background-hover);
--pico-border-color: var(--pico-primary-border-hover);
--pico-box-shadow: var(--pico-button-hover-box-shadow, 0 0 0 rgba(0, 0, 0, 0));
@ -1003,8 +1007,8 @@ input[type=file]::file-selector-button {
--pico-color: var(--pico-secondary-inverse);
cursor: pointer;
}
input[type=reset]:is([aria-current], :hover, :active, :focus),
input[type=file]::file-selector-button:is([aria-current], :hover, :active, :focus) {
input[type=reset]:is([aria-current], :hover, :active, :focus):not([aria-current=false]),
input[type=file]::file-selector-button:is([aria-current], :hover, :active, :focus):not([aria-current=false]) {
--pico-background-color: var(--pico-secondary-hover);
--pico-border-color: var(--pico-secondary-hover);
}
@ -1931,10 +1935,17 @@ details[role=list] summary:not([role])[aria-invalid=true] {
--pico-form-element-focus-color: var(--pico-form-element-invalid-focus-color);
}
nav details[role=list] {
display: inline;
margin: calc(var(--pico-nav-element-spacing-vertical) * -1) 0;
}
nav details[role=list] summary:not([role]) {
height: auto;
height: calc(1rem * var(--pico-line-height) + var(--pico-nav-link-spacing-vertical) * 2);
padding: calc(var(--pico-nav-link-spacing-vertical) - var(--pico-border-width) * 2) var(--pico-nav-link-spacing-horizontal);
}
nav details[role=list] summary:not([role]):focus-visible {
box-shadow: 0 0 0 var(--pico-outline-width) var(--pico-primary-focus);
}
details[role=list] summary + ul {
display: flex;
@ -1983,7 +1994,7 @@ details[role=list] summary + ul li a {
text-decoration: none;
text-overflow: ellipsis;
}
details[role=list] summary + ul li a:hover, details[role=list] summary + ul li a:focus, details[role=list] summary + ul li a:active, details[role=list] summary + ul li a:focus-visible {
details[role=list] summary + ul li a:hover, details[role=list] summary + ul li a:focus, details[role=list] summary + ul li a:active, details[role=list] summary + ul li a:focus-visible, details[role=list] summary + ul li a[aria-current]:not([aria-current=false]) {
background-color: var(--pico-dropdown-hover-background-color);
}
details[role=list] summary + ul li label {
@ -2185,7 +2196,7 @@ nav[aria-label=breadcrumb] ul li:not(:last-child)::after {
text-align: center;
text-decoration: none;
}
nav[aria-label=breadcrumb] a[aria-current] {
nav[aria-label=breadcrumb] a[aria-current]:not([aria-current=false]) {
background-color: transparent;
color: inherit;
text-decoration: none;

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

2
css/pico.min.css vendored

File diff suppressed because one or more lines are too long