style(dropdowns)

This commit is contained in:
Lucas Larroche 2022-03-06 09:37:03 +07:00
parent 667c94951a
commit 9a0db7ab7f
22 changed files with 300 additions and 95 deletions

View file

@ -662,7 +662,8 @@ ul {
font-size: var(--font-size); font-size: var(--font-size);
} }
a { a,
[role=link] {
--color: var(--primary); --color: var(--primary);
--background-color: transparent; --background-color: transparent;
outline: none; outline: none;
@ -674,11 +675,16 @@ a {
transition: background-color var(--transition), color var(--transition), text-decoration var(--transition), box-shadow var(--transition); transition: background-color var(--transition), color var(--transition), text-decoration var(--transition), box-shadow var(--transition);
transition: background-color var(--transition), color var(--transition), text-decoration var(--transition), box-shadow var(--transition), -webkit-text-decoration var(--transition); transition: background-color var(--transition), color var(--transition), text-decoration var(--transition), box-shadow var(--transition), -webkit-text-decoration var(--transition);
} }
a[aria-current], a:hover, a:active, a:focus { a[aria-current], a:hover, a:active, a:focus,
[role=link][aria-current],
[role=link]:hover,
[role=link]:active,
[role=link]:focus {
--color: var(--primary-hover); --color: var(--primary-hover);
--text-decoration: underline; --text-decoration: underline;
} }
a:focus { a:focus,
[role=link]:focus {
--background-color: var(--primary-focus); --background-color: var(--primary-focus);
} }
@ -1817,7 +1823,7 @@ details summary {
cursor: pointer; cursor: pointer;
transition: color var(--transition); transition: color var(--transition);
} }
details summary:not([role=button]) { details summary:not([role]) {
color: var(--accordion-close-summary-color); color: var(--accordion-close-summary-color);
} }
details summary::-webkit-details-marker { details summary::-webkit-details-marker {
@ -1859,7 +1865,7 @@ details summary[role=button]::after {
details[open] > summary { details[open] > summary {
margin-bottom: calc(var(--spacing)); margin-bottom: calc(var(--spacing));
} }
details[open] > summary:not([role=button]):not(:focus) { details[open] > summary:not([role]):not(:focus) {
color: var(--accordion-open-summary-color); color: var(--accordion-open-summary-color);
} }
details[open] > summary::after { details[open] > summary::after {
@ -2000,14 +2006,19 @@ nav li {
nav li > * { nav li > * {
--spacing: 0; --spacing: 0;
} }
nav a { nav a,
nav [role=link] {
display: inline-block; display: inline-block;
margin: calc(var(--nav-link-spacing-vertical) * -1) calc(var(--nav-link-spacing-horizontal) * -1); margin: calc(var(--nav-link-spacing-vertical) * -1) calc(var(--nav-link-spacing-horizontal) * -1);
padding: var(--nav-link-spacing-vertical) var(--nav-link-spacing-horizontal); padding: var(--nav-link-spacing-vertical) var(--nav-link-spacing-horizontal);
border-radius: var(--border-radius); border-radius: var(--border-radius);
text-decoration: none; text-decoration: none;
} }
nav a[aria-current], nav a:hover, nav a:active, nav a:focus { nav a[aria-current], nav a:hover, nav a:active, nav a:focus,
nav [role=link][aria-current],
nav [role=link]:hover,
nav [role=link]:active,
nav [role=link]:focus {
text-decoration: none; text-decoration: none;
} }
@ -2185,7 +2196,7 @@ details[role=list] {
details[role=list] summary { details[role=list] summary {
margin-bottom: 0; margin-bottom: 0;
} }
details[role=list] summary:not([role=button]) { details[role=list] summary:not([role]) {
height: calc(1rem * var(--line-height) + var(--form-element-spacing-vertical) * 2 + var(--border-width) * 2); height: calc(1rem * var(--line-height) + var(--form-element-spacing-vertical) * 2 + var(--border-width) * 2);
padding: var(--form-element-spacing-vertical) var(--form-element-spacing-horizontal); padding: var(--form-element-spacing-vertical) var(--form-element-spacing-horizontal);
border: var(--border-width) solid var(--form-element-border-color); border: var(--border-width) solid var(--form-element-border-color);
@ -2196,11 +2207,11 @@ details[role=list] summary:not([role=button]) {
cursor: pointer; cursor: pointer;
transition: background-color var(--transition), border-color var(--transition), color var(--transition), box-shadow var(--transition); transition: background-color var(--transition), border-color var(--transition), color var(--transition), box-shadow var(--transition);
} }
details[role=list] summary:not([role=button]):active, details[role=list] summary:not([role=button]):focus { details[role=list] summary:not([role]):active, details[role=list] summary:not([role]):focus {
border-color: var(--form-element-active-border-color); border-color: var(--form-element-active-border-color);
background-color: var(--form-element-active-background-color); background-color: var(--form-element-active-background-color);
} }
details[role=list] summary:not([role=button]):focus { details[role=list] summary:not([role]):focus {
box-shadow: 0 0 0 var(--outline-width) var(--form-element-focus-color); box-shadow: 0 0 0 var(--outline-width) var(--form-element-focus-color);
} }
details[role=list][open] summary { details[role=list][open] summary {
@ -2220,7 +2231,8 @@ details[role=list][open] summary::before {
cursor: default; cursor: default;
} }
nav [role=list] summary, nav [role=list] a { nav [role=list] summary,
nav [role=list] a {
display: flex; display: flex;
direction: ltr; direction: ltr;
} }
@ -2236,11 +2248,25 @@ nav [role=list] > ul li a {
border-radius: 0; border-radius: 0;
} }
nav [role=list] summary,
nav [role=list] summary:not([role]) {
height: auto;
padding: var(--nav-link-spacing-vertical) var(--nav-link-spacing-horizontal);
}
nav [role=list][open] summary { nav [role=list][open] summary {
border-radius: var(--border-radius); border-radius: var(--border-radius);
} }
nav [role=list] summary + ul { nav [role=list] summary + ul {
margin-top: 2px; margin-top: var(--outline-width);
}
nav [role=list] summary[role=link] {
margin-bottom: calc(var(--nav-link-spacing-vertical) * -1);
line-height: var(--line-height);
}
nav [role=list] summary[role=link] + ul {
margin-top: calc(var(--nav-link-spacing-vertical) + var(--outline-width));
-webkit-margin-start: calc(var(--nav-link-spacing-horizontal) * -1);
margin-inline-start: calc(var(--nav-link-spacing-horizontal) * -1);
} }
li[role=list]:hover > ul, li[role=list]:hover > ul,
@ -2250,7 +2276,7 @@ li[role=list] a:focus ~ ul {
} }
li[role=list] > ul { li[role=list] > ul {
display: none; display: none;
margin-top: calc(var(--nav-link-spacing-vertical) + 2px); margin-top: calc(var(--nav-link-spacing-vertical) + var(--outline-width));
-webkit-margin-start: calc(var(--nav-element-spacing-horizontal) - var(--nav-link-spacing-horizontal)); -webkit-margin-start: calc(var(--nav-element-spacing-horizontal) - var(--nav-link-spacing-horizontal));
margin-inline-start: calc(var(--nav-element-spacing-horizontal) - var(--nav-link-spacing-horizontal)); margin-inline-start: calc(var(--nav-element-spacing-horizontal) - var(--nav-link-spacing-horizontal));
} }

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View file

@ -692,7 +692,8 @@ ul {
font-size: var(--font-size); font-size: var(--font-size);
} }
a { a,
[role=link] {
--color: var(--primary); --color: var(--primary);
--background-color: transparent; --background-color: transparent;
outline: none; outline: none;
@ -704,29 +705,46 @@ a {
transition: background-color var(--transition), color var(--transition), text-decoration var(--transition), box-shadow var(--transition); transition: background-color var(--transition), color var(--transition), text-decoration var(--transition), box-shadow var(--transition);
transition: background-color var(--transition), color var(--transition), text-decoration var(--transition), box-shadow var(--transition), -webkit-text-decoration var(--transition); transition: background-color var(--transition), color var(--transition), text-decoration var(--transition), box-shadow var(--transition), -webkit-text-decoration var(--transition);
} }
a[aria-current], a:hover, a:active, a:focus { a[aria-current], a:hover, a:active, a:focus,
[role=link][aria-current],
[role=link]:hover,
[role=link]:active,
[role=link]:focus {
--color: var(--primary-hover); --color: var(--primary-hover);
--text-decoration: underline; --text-decoration: underline;
} }
a:focus { a:focus,
[role=link]:focus {
--background-color: var(--primary-focus); --background-color: var(--primary-focus);
} }
a.secondary { a.secondary,
[role=link].secondary {
--color: var(--secondary); --color: var(--secondary);
} }
a.secondary[aria-current], a.secondary:hover, a.secondary:active, a.secondary:focus { a.secondary[aria-current], a.secondary:hover, a.secondary:active, a.secondary:focus,
[role=link].secondary[aria-current],
[role=link].secondary:hover,
[role=link].secondary:active,
[role=link].secondary:focus {
--color: var(--secondary-hover); --color: var(--secondary-hover);
} }
a.secondary:focus { a.secondary:focus,
[role=link].secondary:focus {
--background-color: var(--secondary-focus); --background-color: var(--secondary-focus);
} }
a.contrast { a.contrast,
[role=link].contrast {
--color: var(--contrast); --color: var(--contrast);
} }
a.contrast[aria-current], a.contrast:hover, a.contrast:active, a.contrast:focus { a.contrast[aria-current], a.contrast:hover, a.contrast:active, a.contrast:focus,
[role=link].contrast[aria-current],
[role=link].contrast:hover,
[role=link].contrast:active,
[role=link].contrast:focus {
--color: var(--contrast-hover); --color: var(--contrast-hover);
} }
a.contrast:focus { a.contrast:focus,
[role=link].contrast:focus {
--background-color: var(--contrast-focus); --background-color: var(--contrast-focus);
} }
@ -2015,7 +2033,7 @@ details summary {
cursor: pointer; cursor: pointer;
transition: color var(--transition); transition: color var(--transition);
} }
details summary:not([role=button]) { details summary:not([role]) {
color: var(--accordion-close-summary-color); color: var(--accordion-close-summary-color);
} }
details summary::-webkit-details-marker { details summary::-webkit-details-marker {
@ -2060,7 +2078,7 @@ details summary[role=button]:not(.outline).contrast::after {
details[open] > summary { details[open] > summary {
margin-bottom: calc(var(--spacing)); margin-bottom: calc(var(--spacing));
} }
details[open] > summary:not([role=button]):not(:focus) { details[open] > summary:not([role]):not(:focus) {
color: var(--accordion-open-summary-color); color: var(--accordion-open-summary-color);
} }
details[open] > summary::after { details[open] > summary::after {
@ -2297,14 +2315,19 @@ nav li {
nav li > * { nav li > * {
--spacing: 0; --spacing: 0;
} }
nav a { nav a,
nav [role=link] {
display: inline-block; display: inline-block;
margin: calc(var(--nav-link-spacing-vertical) * -1) calc(var(--nav-link-spacing-horizontal) * -1); margin: calc(var(--nav-link-spacing-vertical) * -1) calc(var(--nav-link-spacing-horizontal) * -1);
padding: var(--nav-link-spacing-vertical) var(--nav-link-spacing-horizontal); padding: var(--nav-link-spacing-vertical) var(--nav-link-spacing-horizontal);
border-radius: var(--border-radius); border-radius: var(--border-radius);
text-decoration: none; text-decoration: none;
} }
nav a[aria-current], nav a:hover, nav a:active, nav a:focus { nav a[aria-current], nav a:hover, nav a:active, nav a:focus,
nav [role=link][aria-current],
nav [role=link]:hover,
nav [role=link]:active,
nav [role=link]:focus {
text-decoration: none; text-decoration: none;
} }
@ -2482,7 +2505,7 @@ details[role=list] {
details[role=list] summary { details[role=list] summary {
margin-bottom: 0; margin-bottom: 0;
} }
details[role=list] summary:not([role=button]) { details[role=list] summary:not([role]) {
height: calc(1rem * var(--line-height) + var(--form-element-spacing-vertical) * 2 + var(--border-width) * 2); height: calc(1rem * var(--line-height) + var(--form-element-spacing-vertical) * 2 + var(--border-width) * 2);
padding: var(--form-element-spacing-vertical) var(--form-element-spacing-horizontal); padding: var(--form-element-spacing-vertical) var(--form-element-spacing-horizontal);
border: var(--border-width) solid var(--form-element-border-color); border: var(--border-width) solid var(--form-element-border-color);
@ -2493,11 +2516,11 @@ details[role=list] summary:not([role=button]) {
cursor: pointer; cursor: pointer;
transition: background-color var(--transition), border-color var(--transition), color var(--transition), box-shadow var(--transition); transition: background-color var(--transition), border-color var(--transition), color var(--transition), box-shadow var(--transition);
} }
details[role=list] summary:not([role=button]):active, details[role=list] summary:not([role=button]):focus { details[role=list] summary:not([role]):active, details[role=list] summary:not([role]):focus {
border-color: var(--form-element-active-border-color); border-color: var(--form-element-active-border-color);
background-color: var(--form-element-active-background-color); background-color: var(--form-element-active-background-color);
} }
details[role=list] summary:not([role=button]):focus { details[role=list] summary:not([role]):focus {
box-shadow: 0 0 0 var(--outline-width) var(--form-element-focus-color); box-shadow: 0 0 0 var(--outline-width) var(--form-element-focus-color);
} }
details[role=list][open] summary { details[role=list][open] summary {
@ -2517,7 +2540,8 @@ details[role=list][open] summary::before {
cursor: default; cursor: default;
} }
nav [role=list] summary, nav [role=list] a { nav [role=list] summary,
nav [role=list] a {
display: flex; display: flex;
direction: ltr; direction: ltr;
} }
@ -2533,11 +2557,25 @@ nav [role=list] > ul li a {
border-radius: 0; border-radius: 0;
} }
nav [role=list] summary,
nav [role=list] summary:not([role]) {
height: auto;
padding: var(--nav-link-spacing-vertical) var(--nav-link-spacing-horizontal);
}
nav [role=list][open] summary { nav [role=list][open] summary {
border-radius: var(--border-radius); border-radius: var(--border-radius);
} }
nav [role=list] summary + ul { nav [role=list] summary + ul {
margin-top: 2px; margin-top: var(--outline-width);
}
nav [role=list] summary[role=link] {
margin-bottom: calc(var(--nav-link-spacing-vertical) * -1);
line-height: var(--line-height);
}
nav [role=list] summary[role=link] + ul {
margin-top: calc(var(--nav-link-spacing-vertical) + var(--outline-width));
-webkit-margin-start: calc(var(--nav-link-spacing-horizontal) * -1);
margin-inline-start: calc(var(--nav-link-spacing-horizontal) * -1);
} }
li[role=list]:hover > ul, li[role=list]:hover > ul,
@ -2547,7 +2585,7 @@ li[role=list] a:focus ~ ul {
} }
li[role=list] > ul { li[role=list] > ul {
display: none; display: none;
margin-top: calc(var(--nav-link-spacing-vertical) + 2px); margin-top: calc(var(--nav-link-spacing-vertical) + var(--outline-width));
-webkit-margin-start: calc(var(--nav-element-spacing-horizontal) - var(--nav-link-spacing-horizontal)); -webkit-margin-start: calc(var(--nav-element-spacing-horizontal) - var(--nav-link-spacing-horizontal));
margin-inline-start: calc(var(--nav-element-spacing-horizontal) - var(--nav-link-spacing-horizontal)); margin-inline-start: calc(var(--nav-element-spacing-horizontal) - var(--nav-link-spacing-horizontal));
} }

File diff suppressed because one or more lines are too long

View file

@ -632,7 +632,8 @@ ul {
font-size: var(--font-size); font-size: var(--font-size);
} }
a { a,
[role=link] {
--color: var(--primary); --color: var(--primary);
--background-color: transparent; --background-color: transparent;
outline: none; outline: none;
@ -644,11 +645,16 @@ a {
transition: background-color var(--transition), color var(--transition), text-decoration var(--transition), box-shadow var(--transition); transition: background-color var(--transition), color var(--transition), text-decoration var(--transition), box-shadow var(--transition);
transition: background-color var(--transition), color var(--transition), text-decoration var(--transition), box-shadow var(--transition), -webkit-text-decoration var(--transition); transition: background-color var(--transition), color var(--transition), text-decoration var(--transition), box-shadow var(--transition), -webkit-text-decoration var(--transition);
} }
a[aria-current], a:hover, a:active, a:focus { a[aria-current], a:hover, a:active, a:focus,
[role=link][aria-current],
[role=link]:hover,
[role=link]:active,
[role=link]:focus {
--color: var(--primary-hover); --color: var(--primary-hover);
--text-decoration: underline; --text-decoration: underline;
} }
a:focus { a:focus,
[role=link]:focus {
--background-color: var(--primary-focus); --background-color: var(--primary-focus);
} }
@ -1787,7 +1793,7 @@ details summary {
cursor: pointer; cursor: pointer;
transition: color var(--transition); transition: color var(--transition);
} }
details summary:not([role=button]) { details summary:not([role]) {
color: var(--accordion-close-summary-color); color: var(--accordion-close-summary-color);
} }
details summary::-webkit-details-marker { details summary::-webkit-details-marker {
@ -1829,7 +1835,7 @@ details summary[role=button]::after {
details[open] > summary { details[open] > summary {
margin-bottom: calc(var(--spacing)); margin-bottom: calc(var(--spacing));
} }
details[open] > summary:not([role=button]):not(:focus) { details[open] > summary:not([role]):not(:focus) {
color: var(--accordion-open-summary-color); color: var(--accordion-open-summary-color);
} }
details[open] > summary::after { details[open] > summary::after {
@ -1970,14 +1976,19 @@ nav li {
nav li > * { nav li > * {
--spacing: 0; --spacing: 0;
} }
nav a { nav a,
nav [role=link] {
display: inline-block; display: inline-block;
margin: calc(var(--nav-link-spacing-vertical) * -1) calc(var(--nav-link-spacing-horizontal) * -1); margin: calc(var(--nav-link-spacing-vertical) * -1) calc(var(--nav-link-spacing-horizontal) * -1);
padding: var(--nav-link-spacing-vertical) var(--nav-link-spacing-horizontal); padding: var(--nav-link-spacing-vertical) var(--nav-link-spacing-horizontal);
border-radius: var(--border-radius); border-radius: var(--border-radius);
text-decoration: none; text-decoration: none;
} }
nav a[aria-current], nav a:hover, nav a:active, nav a:focus { nav a[aria-current], nav a:hover, nav a:active, nav a:focus,
nav [role=link][aria-current],
nav [role=link]:hover,
nav [role=link]:active,
nav [role=link]:focus {
text-decoration: none; text-decoration: none;
} }
@ -2155,7 +2166,7 @@ details[role=list] {
details[role=list] summary { details[role=list] summary {
margin-bottom: 0; margin-bottom: 0;
} }
details[role=list] summary:not([role=button]) { details[role=list] summary:not([role]) {
height: calc(1rem * var(--line-height) + var(--form-element-spacing-vertical) * 2 + var(--border-width) * 2); height: calc(1rem * var(--line-height) + var(--form-element-spacing-vertical) * 2 + var(--border-width) * 2);
padding: var(--form-element-spacing-vertical) var(--form-element-spacing-horizontal); padding: var(--form-element-spacing-vertical) var(--form-element-spacing-horizontal);
border: var(--border-width) solid var(--form-element-border-color); border: var(--border-width) solid var(--form-element-border-color);
@ -2166,11 +2177,11 @@ details[role=list] summary:not([role=button]) {
cursor: pointer; cursor: pointer;
transition: background-color var(--transition), border-color var(--transition), color var(--transition), box-shadow var(--transition); transition: background-color var(--transition), border-color var(--transition), color var(--transition), box-shadow var(--transition);
} }
details[role=list] summary:not([role=button]):active, details[role=list] summary:not([role=button]):focus { details[role=list] summary:not([role]):active, details[role=list] summary:not([role]):focus {
border-color: var(--form-element-active-border-color); border-color: var(--form-element-active-border-color);
background-color: var(--form-element-active-background-color); background-color: var(--form-element-active-background-color);
} }
details[role=list] summary:not([role=button]):focus { details[role=list] summary:not([role]):focus {
box-shadow: 0 0 0 var(--outline-width) var(--form-element-focus-color); box-shadow: 0 0 0 var(--outline-width) var(--form-element-focus-color);
} }
details[role=list][open] summary { details[role=list][open] summary {
@ -2190,7 +2201,8 @@ details[role=list][open] summary::before {
cursor: default; cursor: default;
} }
nav [role=list] summary, nav [role=list] a { nav [role=list] summary,
nav [role=list] a {
display: flex; display: flex;
direction: ltr; direction: ltr;
} }
@ -2206,11 +2218,25 @@ nav [role=list] > ul li a {
border-radius: 0; border-radius: 0;
} }
nav [role=list] summary,
nav [role=list] summary:not([role]) {
height: auto;
padding: var(--nav-link-spacing-vertical) var(--nav-link-spacing-horizontal);
}
nav [role=list][open] summary { nav [role=list][open] summary {
border-radius: var(--border-radius); border-radius: var(--border-radius);
} }
nav [role=list] summary + ul { nav [role=list] summary + ul {
margin-top: 2px; margin-top: var(--outline-width);
}
nav [role=list] summary[role=link] {
margin-bottom: calc(var(--nav-link-spacing-vertical) * -1);
line-height: var(--line-height);
}
nav [role=list] summary[role=link] + ul {
margin-top: calc(var(--nav-link-spacing-vertical) + var(--outline-width));
-webkit-margin-start: calc(var(--nav-link-spacing-horizontal) * -1);
margin-inline-start: calc(var(--nav-link-spacing-horizontal) * -1);
} }
li[role=list]:hover > ul, li[role=list]:hover > ul,
@ -2220,7 +2246,7 @@ li[role=list] a:focus ~ ul {
} }
li[role=list] > ul { li[role=list] > ul {
display: none; display: none;
margin-top: calc(var(--nav-link-spacing-vertical) + 2px); margin-top: calc(var(--nav-link-spacing-vertical) + var(--outline-width));
-webkit-margin-start: calc(var(--nav-element-spacing-horizontal) - var(--nav-link-spacing-horizontal)); -webkit-margin-start: calc(var(--nav-element-spacing-horizontal) - var(--nav-link-spacing-horizontal));
margin-inline-start: calc(var(--nav-element-spacing-horizontal) - var(--nav-link-spacing-horizontal)); margin-inline-start: calc(var(--nav-element-spacing-horizontal) - var(--nav-link-spacing-horizontal));
} }

File diff suppressed because one or more lines are too long

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

File diff suppressed because one or more lines are too long

View file

@ -624,7 +624,8 @@ ul {
font-size: var(--font-size); font-size: var(--font-size);
} }
a { a,
[role=link] {
--color: var(--primary); --color: var(--primary);
--background-color: transparent; --background-color: transparent;
outline: none; outline: none;
@ -633,29 +634,46 @@ a {
-webkit-text-decoration: var(--text-decoration); -webkit-text-decoration: var(--text-decoration);
text-decoration: var(--text-decoration); text-decoration: var(--text-decoration);
} }
a[aria-current], a:hover, a:active, a:focus { a[aria-current], a:hover, a:active, a:focus,
[role=link][aria-current],
[role=link]:hover,
[role=link]:active,
[role=link]:focus {
--color: var(--primary-hover); --color: var(--primary-hover);
--text-decoration: underline; --text-decoration: underline;
} }
a:focus { a:focus,
[role=link]:focus {
--background-color: var(--primary-focus); --background-color: var(--primary-focus);
} }
a.secondary { a.secondary,
[role=link].secondary {
--color: var(--secondary); --color: var(--secondary);
} }
a.secondary[aria-current], a.secondary:hover, a.secondary:active, a.secondary:focus { a.secondary[aria-current], a.secondary:hover, a.secondary:active, a.secondary:focus,
[role=link].secondary[aria-current],
[role=link].secondary:hover,
[role=link].secondary:active,
[role=link].secondary:focus {
--color: var(--secondary-hover); --color: var(--secondary-hover);
} }
a.secondary:focus { a.secondary:focus,
[role=link].secondary:focus {
--background-color: var(--secondary-focus); --background-color: var(--secondary-focus);
} }
a.contrast { a.contrast,
[role=link].contrast {
--color: var(--contrast); --color: var(--contrast);
} }
a.contrast[aria-current], a.contrast:hover, a.contrast:active, a.contrast:focus { a.contrast[aria-current], a.contrast:hover, a.contrast:active, a.contrast:focus,
[role=link].contrast[aria-current],
[role=link].contrast:hover,
[role=link].contrast:active,
[role=link].contrast:focus {
--color: var(--contrast-hover); --color: var(--contrast-hover);
} }
a.contrast:focus { a.contrast:focus,
[role=link].contrast:focus {
--background-color: var(--contrast-focus); --background-color: var(--contrast-focus);
} }

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View file

@ -98,15 +98,37 @@
&lt;/<b>ul</b>&gt; &lt;/<b>ul</b>&gt;
&lt;/<b>details</b>&gt; &lt;/<b>details</b>&gt;
</code></pre></footer></article><p>Dropdowns can be used inside a <a href="navs.html">&lt;nav&gt;</a> with a nested <code>&lt;<b>details</b> <i>role</i>=<u>"list"</u>&gt;</code></p><article aria-label="Dropdowns inside a nav"><nav><ul><li><strong>Brand</strong></li></ul><ul><li><a href="#" onclick="event.preventDefault()">Link</a></li><li><a href="#" onclick="event.preventDefault()">Link</a></li><li><details role="list" dir="rtl"><summary aria-haspopup="listbox" role="button">Dropdown</summary><ul role="listbox"><li><a href="#" onclick="event.preventDefault()">Action</a></li><li><a href="#" onclick="event.preventDefault()">Another action</a></li><li><a href="#" onclick="event.preventDefault()">Something else here</a></li></ul></details></li></ul></nav><footer class="code"><pre><code>&lt;<b>nav</b>&gt; </code></pre></footer></article><p>Dropdowns can be used inside a <a href="navs.html">&lt;nav&gt;</a> with a nested <code>&lt;<b>details</b> <i>role</i>=<u>"list"</u>&gt;</code></p><p>Example with a dropdown as a link:</p><article aria-label="Dropdowns inside a nav"><nav><ul><li><strong>Brand</strong></li></ul><ul><li><a href="#" onclick="event.preventDefault()">Link</a></li><li><details role="list" dir="rtl"><summary aria-haspopup="listbox" role="link">Dropdown</summary><ul role="listbox"><li><a href="#" onclick="event.preventDefault()">Action</a></li><li><a href="#" onclick="event.preventDefault()">Another action</a></li><li><a href="#" onclick="event.preventDefault()">Something else here</a></li></ul></details></li></ul></nav><footer class="code"><pre><code>&lt;<b>nav</b>&gt;
&lt;<b>ul</b>&gt; &lt;<b>ul</b>&gt;
&lt;<b>li</b>&gt;&lt;<b>strong</b>&gt;Brand&lt;/<b>strong</b>&gt;&lt;/<b>li</b>&gt; &lt;<b>li</b>&gt;&lt;<b>strong</b>&gt;Brand&lt;/<b>strong</b>&gt;&lt;/<b>li</b>&gt;
&lt;/<b>ul</b>&gt; &lt;/<b>ul</b>&gt;
&lt;<b>ul</b>&gt; &lt;<b>ul</b>&gt;
&lt;<b>li</b>&gt;&lt;<b>a</b> <i>href</i>=<u>"#"</u>&gt;Link&lt;/<b>a</b>&gt;&lt;/<b>li</b>&gt;
&lt;<b>li</b>&gt;&lt;<b>a</b> <i>href</i>=<u>"#"</u>&gt;Link&lt;/<b>a</b>&gt;&lt;/<b>li</b>&gt; &lt;<b>li</b>&gt;&lt;<b>a</b> <i>href</i>=<u>"#"</u>&gt;Link&lt;/<b>a</b>&gt;&lt;/<b>li</b>&gt;
&lt;<b>li</b>&gt; &lt;<b>li</b>&gt;
&lt;<b>details</b> <i>role</i>=<u>"list"</u> <i>dir</i>=<u>"rtl"</u>&gt; &lt;<b>details</b> <i>role</i>=<u>"list"</u> <i>dir</i>=<u>"rtl"</u>&gt;
&lt;<b>summary</b> <i>aria-haspopup</i>=<u>"listbox"</u> <i>role</i>=<u>"link"</u>&gt;Dropdown&lt;/<b>summary</b>&gt;
&lt;<b>ul</b> <i>role</i>=<u>"listbox"</u>&gt;
&lt;<b>li</b>&gt;&lt;<b>a</b>&gt;Action&lt;/<b>a</b>&gt;&lt;/<b>li</b>&gt;
&lt;<b>li</b>&gt;&lt;<b>a</b>&gt;Another action&lt;/<b>a</b>&gt;&lt;/<b>li</b>&gt;
&lt;<b>li</b>&gt;&lt;<b>a</b>&gt;Something else here&lt;/<b>a</b>&gt;&lt;/<b>li</b>&gt;
&lt;/<b>ul</b>&gt;
&lt;/<b>details</b>&gt;
&lt;/<b>li</b>&gt;
&lt;/<b>ul</b>&gt;
&lt;/<b>nav</b>&gt;</code></pre></footer></article><p>Example with a default dropdown and a dropdown as a button:</p><article aria-label="Dropdowns inside a nav"><nav><ul><li><details role="list"><summary aria-haspopup="listbox">Dropdown</summary><ul role="listbox"><li><a href="#" onclick="event.preventDefault()">Action</a></li><li><a href="#" onclick="event.preventDefault()">Another action</a></li><li><a href="#" onclick="event.preventDefault()">Something else here</a></li></ul></details></li><li><details role="list"><summary aria-haspopup="listbox" role="button">Dropdown</summary><ul role="listbox"><li><a href="#" onclick="event.preventDefault()">Action</a></li><li><a href="#" onclick="event.preventDefault()">Another action</a></li><li><a href="#" onclick="event.preventDefault()">Something else here</a></li></ul></details></li></ul></nav><footer class="code"><pre><code>&lt;<b>nav</b>&gt;
&lt;<b>ul</b>&gt;
&lt;<b>li</b>&gt;
&lt;<b>details</b> <i>role</i>=<u>"list"</u>&gt;
&lt;<b>summary</b> <i>aria-haspopup</i>=<u>"listbox"</u>&gt;Dropdown&lt;/<b>summary</b>&gt;
&lt;<b>ul</b> <i>role</i>=<u>"listbox"</u>&gt;
&lt;<b>li</b>&gt;&lt;<b>a</b>&gt;Action&lt;/<b>a</b>&gt;&lt;/<b>li</b>&gt;
&lt;<b>li</b>&gt;&lt;<b>a</b>&gt;Another action&lt;/<b>a</b>&gt;&lt;/<b>li</b>&gt;
&lt;<b>li</b>&gt;&lt;<b>a</b>&gt;Something else here&lt;/<b>a</b>&gt;&lt;/<b>li</b>&gt;
&lt;/<b>ul</b>&gt;
&lt;/<b>details</b>&gt;
&lt;/<b>li</b>&gt;
&lt;<b>li</b>&gt;
&lt;<b>details</b> <i>role</i>=<u>"list"</u>&gt;
&lt;<b>summary</b> <i>aria-haspopup</i>=<u>"listbox"</u> <i>role</i>=<u>"button"</u>&gt;Dropdown&lt;/<b>summary</b>&gt; &lt;<b>summary</b> <i>aria-haspopup</i>=<u>"listbox"</u> <i>role</i>=<u>"button"</u>&gt;Dropdown&lt;/<b>summary</b>&gt;
&lt;<b>ul</b> <i>role</i>=<u>"listbox"</u>&gt; &lt;<b>ul</b> <i>role</i>=<u>"listbox"</u>&gt;
&lt;<b>li</b>&gt;&lt;<b>a</b>&gt;Action&lt;/<b>a</b>&gt;&lt;/<b>li</b>&gt; &lt;<b>li</b>&gt;&lt;<b>a</b>&gt;Action&lt;/<b>a</b>&gt;&lt;/<b>li</b>&gt;

View file

@ -228,17 +228,17 @@
</footer> </footer>
</article> </article>
<p>Dropdowns can be used inside a <a href="navs.html">&lt;nav&gt;</a> with a nested <code>&lt;<b>details</b> <i>role</i>=<u>"list"</u>&gt;</code></p> <p>Dropdowns can be used inside a <a href="navs.html">&lt;nav&gt;</a> with a nested <code>&lt;<b>details</b> <i>role</i>=<u>"list"</u>&gt;</code></p>
<p>Example with a dropdown as a link:</p>
<article aria-label="Dropdowns inside a nav"> <article aria-label="Dropdowns inside a nav">
<nav> <nav>
<ul> <ul>
<li><strong>Brand</strong></li> <li><strong>Brand</strong></li>
</ul> </ul>
<ul> <ul>
<li><a href="#" onclick="event.preventDefault()">Link</a></li>
<li><a href="#" onclick="event.preventDefault()">Link</a></li> <li><a href="#" onclick="event.preventDefault()">Link</a></li>
<li> <li>
<details role="list" dir="rtl"> <details role="list" dir="rtl">
<summary aria-haspopup="listbox" role="button">Dropdown</summary> <summary aria-haspopup="listbox" role="link">Dropdown</summary>
<ul role="listbox"> <ul role="listbox">
<li><a href="#" onclick="event.preventDefault()">Action</a></li> <li><a href="#" onclick="event.preventDefault()">Action</a></li>
<li><a href="#" onclick="event.preventDefault()">Another action</a></li> <li><a href="#" onclick="event.preventDefault()">Another action</a></li>
@ -255,10 +255,64 @@
&lt;<b>li</b>&gt;&lt;<b>strong</b>&gt;Brand&lt;/<b>strong</b>&gt;&lt;/<b>li</b>&gt; &lt;<b>li</b>&gt;&lt;<b>strong</b>&gt;Brand&lt;/<b>strong</b>&gt;&lt;/<b>li</b>&gt;
&lt;/<b>ul</b>&gt; &lt;/<b>ul</b>&gt;
&lt;<b>ul</b>&gt; &lt;<b>ul</b>&gt;
&lt;<b>li</b>&gt;&lt;<b>a</b> <i>href</i>=<u>"#"</u>&gt;Link&lt;/<b>a</b>&gt;&lt;/<b>li</b>&gt;
&lt;<b>li</b>&gt;&lt;<b>a</b> <i>href</i>=<u>"#"</u>&gt;Link&lt;/<b>a</b>&gt;&lt;/<b>li</b>&gt; &lt;<b>li</b>&gt;&lt;<b>a</b> <i>href</i>=<u>"#"</u>&gt;Link&lt;/<b>a</b>&gt;&lt;/<b>li</b>&gt;
&lt;<b>li</b>&gt; &lt;<b>li</b>&gt;
&lt;<b>details</b> <i>role</i>=<u>"list"</u> <i>dir</i>=<u>"rtl"</u>&gt; &lt;<b>details</b> <i>role</i>=<u>"list"</u> <i>dir</i>=<u>"rtl"</u>&gt;
&lt;<b>summary</b> <i>aria-haspopup</i>=<u>"listbox"</u> <i>role</i>=<u>"link"</u>&gt;Dropdown&lt;/<b>summary</b>&gt;
&lt;<b>ul</b> <i>role</i>=<u>"listbox"</u>&gt;
&lt;<b>li</b>&gt;&lt;<b>a</b>&gt;Action&lt;/<b>a</b>&gt;&lt;/<b>li</b>&gt;
&lt;<b>li</b>&gt;&lt;<b>a</b>&gt;Another action&lt;/<b>a</b>&gt;&lt;/<b>li</b>&gt;
&lt;<b>li</b>&gt;&lt;<b>a</b>&gt;Something else here&lt;/<b>a</b>&gt;&lt;/<b>li</b>&gt;
&lt;/<b>ul</b>&gt;
&lt;/<b>details</b>&gt;
&lt;/<b>li</b>&gt;
&lt;/<b>ul</b>&gt;
&lt;/<b>nav</b>&gt;</code></pre>
</footer>
</article>
<p>Example with a default dropdown and a dropdown as a button:</p>
<article aria-label="Dropdowns inside a nav">
<nav>
<ul>
<li>
<details role="list">
<summary aria-haspopup="listbox">Dropdown</summary>
<ul role="listbox">
<li><a href="#" onclick="event.preventDefault()">Action</a></li>
<li><a href="#" onclick="event.preventDefault()">Another action</a></li>
<li><a href="#" onclick="event.preventDefault()">Something else here</a></li>
</ul>
</details>
</li>
<li>
<details role="list">
<summary aria-haspopup="listbox" role="button">Dropdown</summary>
<ul role="listbox">
<li><a href="#" onclick="event.preventDefault()">Action</a></li>
<li><a href="#" onclick="event.preventDefault()">Another action</a></li>
<li><a href="#" onclick="event.preventDefault()">Something else here</a></li>
</ul>
</details>
</li>
</ul>
</nav>
<footer class="code">
<pre><code>&lt;<b>nav</b>&gt;
&lt;<b>ul</b>&gt;
&lt;<b>li</b>&gt;
&lt;<b>details</b> <i>role</i>=<u>"list"</u>&gt;
&lt;<b>summary</b> <i>aria-haspopup</i>=<u>"listbox"</u>&gt;Dropdown&lt;/<b>summary</b>&gt;
&lt;<b>ul</b> <i>role</i>=<u>"listbox"</u>&gt;
&lt;<b>li</b>&gt;&lt;<b>a</b>&gt;Action&lt;/<b>a</b>&gt;&lt;/<b>li</b>&gt;
&lt;<b>li</b>&gt;&lt;<b>a</b>&gt;Another action&lt;/<b>a</b>&gt;&lt;/<b>li</b>&gt;
&lt;<b>li</b>&gt;&lt;<b>a</b>&gt;Something else here&lt;/<b>a</b>&gt;&lt;/<b>li</b>&gt;
&lt;/<b>ul</b>&gt;
&lt;/<b>details</b>&gt;
&lt;/<b>li</b>&gt;
&lt;<b>li</b>&gt;
&lt;<b>details</b> <i>role</i>=<u>"list"</u>&gt;
&lt;<b>summary</b> <i>aria-haspopup</i>=<u>"listbox"</u> <i>role</i>=<u>"button"</u>&gt;Dropdown&lt;/<b>summary</b>&gt; &lt;<b>summary</b> <i>aria-haspopup</i>=<u>"listbox"</u> <i>role</i>=<u>"button"</u>&gt;Dropdown&lt;/<b>summary</b>&gt;
&lt;<b>ul</b> <i>role</i>=<u>"listbox"</u>&gt; &lt;<b>ul</b> <i>role</i>=<u>"listbox"</u>&gt;
&lt;<b>li</b>&gt;&lt;<b>a</b>&gt;Action&lt;/<b>a</b>&gt;&lt;/<b>li</b>&gt; &lt;<b>li</b>&gt;&lt;<b>a</b>&gt;Action&lt;/<b>a</b>&gt;&lt;/<b>li</b>&gt;

View file

@ -9,12 +9,11 @@ details {
border-bottom: var(--border-width) solid var(--accordion-border-color); border-bottom: var(--border-width) solid var(--accordion-border-color);
summary { summary {
line-height: 1rem; line-height: 1rem;
list-style-type: none; list-style-type: none;
cursor: pointer; cursor: pointer;
&:not([role="button"]) { &:not([role]) {
color: var(--accordion-close-summary-color); color: var(--accordion-close-summary-color);
} }
@ -65,7 +64,7 @@ details {
&[role="button"] { &[role="button"] {
width: 100%; width: 100%;
text-align: left; text-align: left;
// Marker // Marker
&::after { &::after {
height: calc(1rem * var(--line-height)); height: calc(1rem * var(--line-height));
@ -73,10 +72,8 @@ details {
} }
@if $enable-classes { @if $enable-classes {
// .contrast // .contrast
&:not(.outline).contrast { &:not(.outline).contrast {
// Marker // Marker
&::after { &::after {
background-image: var(--icon-chevron-button-inverse); background-image: var(--icon-chevron-button-inverse);
@ -91,7 +88,7 @@ details {
> summary { > summary {
margin-bottom: calc(var(--spacing)); margin-bottom: calc(var(--spacing));
&:not([role="button"]) { &:not([role]) {
&:not(:focus) { &:not(:focus) {
color: var(--accordion-open-summary-color); color: var(--accordion-open-summary-color);
} }
@ -99,7 +96,7 @@ details {
&::after { &::after {
transform: rotate(0); transform: rotate(0);
} }
} }
} }
} }

View file

@ -2,7 +2,7 @@
* Dropdown ([role="list"]) * Dropdown ([role="list"])
*/ */
// Menu // Menu
details[role="list"], details[role="list"],
li[role="list"] { li[role="list"] {
position: relative; position: relative;
@ -86,7 +86,7 @@ details[role="list"] {
summary { summary {
margin-bottom: 0; margin-bottom: 0;
&:not([role="button"]) { &:not([role]) {
height: calc( height: calc(
1rem * var(--line-height) + var(--form-element-spacing-vertical) * 2 + 1rem * var(--line-height) + var(--form-element-spacing-vertical) * 2 +
var(--border-width) * 2 var(--border-width) * 2
@ -122,7 +122,7 @@ details[role="list"] {
&[open] summary { &[open] summary {
border-bottom-right-radius: 0; border-bottom-right-radius: 0;
border-bottom-left-radius: 0; border-bottom-left-radius: 0;
&::before { &::before {
display: block; display: block;
z-index: 1; z-index: 1;
@ -140,11 +140,12 @@ details[role="list"] {
// All Dropdowns inside <nav> // All Dropdowns inside <nav>
nav [role="list"] { nav [role="list"] {
summary, a { summary,
a {
display: flex; display: flex;
direction: ltr; direction: ltr;
} }
summary + ul, summary + ul,
> ul { > ul {
min-width: fit-content; min-width: fit-content;
@ -158,18 +159,34 @@ nav [role="list"] {
// Dropdowns inside <nav> as nested <details> // Dropdowns inside <nav> as nested <details>
nav [role="list"] { nav [role="list"] {
summary,
summary:not([role]) {
height: auto;
padding: var(--nav-link-spacing-vertical) var(--nav-link-spacing-horizontal);
}
&[open] summary { &[open] summary {
border-radius: var(--border-radius); border-radius: var(--border-radius);
} }
summary + ul { summary + ul {
margin-top: 2px; margin-top: var(--outline-width);
}
summary[role="link"] {
margin-bottom: calc(var(--nav-link-spacing-vertical) * -1);
line-height: var(--line-height);
+ ul {
margin-top: calc(var(--nav-link-spacing-vertical) + var(--outline-width));
margin-inline-start: calc(var(--nav-link-spacing-horizontal) * -1);
}
} }
} }
// Dropdowns inside a <nav> without using <details> // Dropdowns inside a <nav> without using <details>
li[role="list"] { li[role="list"] {
// Open on hover (for mobile)
// Open on hover (for mobile)
// or on active/focus (for keyboard navigation) // or on active/focus (for keyboard navigation)
&:hover > ul, &:hover > ul,
a:active ~ ul, a:active ~ ul,
@ -179,8 +196,10 @@ li[role="list"] {
> ul { > ul {
display: none; display: none;
margin-top: calc(var(--nav-link-spacing-vertical) + 2px); margin-top: calc(var(--nav-link-spacing-vertical) + var(--outline-width));
margin-inline-start: calc(var(--nav-element-spacing-horizontal) - var(--nav-link-spacing-horizontal)); margin-inline-start: calc(
var(--nav-element-spacing-horizontal) - var(--nav-link-spacing-horizontal)
);
} }
> a::after { > a::after {

View file

@ -29,17 +29,20 @@ nav {
li { li {
display: inline-block; display: inline-block;
margin: 0; margin: 0;
padding: var(--nav-element-spacing-vertical) var(--nav-element-spacing-horizontal); padding: var(--nav-element-spacing-vertical)
var(--nav-element-spacing-horizontal);
// Minimal support for buttons and forms elements // Minimal support for buttons and forms elements
> * { > * {
--spacing: 0; --spacing: 0;
} }
} }
a { a,
[role="link"] {
display: inline-block; display: inline-block;
margin: calc(var(--nav-link-spacing-vertical) * -1) calc(var(--nav-link-spacing-horizontal) * -1); margin: calc(var(--nav-link-spacing-vertical) * -1)
calc(var(--nav-link-spacing-horizontal) * -1);
padding: var(--nav-link-spacing-vertical) var(--nav-link-spacing-horizontal); padding: var(--nav-link-spacing-vertical) var(--nav-link-spacing-horizontal);
border-radius: var(--border-radius); border-radius: var(--border-radius);
text-decoration: none; text-decoration: none;
@ -63,12 +66,13 @@ aside {
} }
li { li {
padding: calc(var(--nav-element-spacing-vertical) * 0.5) var(--nav-element-spacing-horizontal); padding: calc(var(--nav-element-spacing-vertical) * 0.5)
var(--nav-element-spacing-horizontal);
a { a {
display: block; display: block;
} }
// Minimal support for links as buttons // Minimal support for links as buttons
[role="button"] { [role="button"] {
margin: inherit; margin: inherit;

View file

@ -68,7 +68,8 @@ ul {
// Links // Links
// 1. Remove the gray background on active links in IE 10 // 1. Remove the gray background on active links in IE 10
a { a,
[role="link"] {
--color: var(--primary); --color: var(--primary);
--background-color: transparent; --background-color: transparent;
outline: none; outline: none;