picocss/scss/components/_accordion.scss

136 lines
3.2 KiB
SCSS
Raw Normal View History

2024-12-31 05:18:39 +00:00
@use "sass:map";
@use "../settings" as *;
@if map.get($modules, "components/accordion") {
/**
* Accordion (<details>)
*/
#{$parent-selector} details {
display: block;
margin-block-end: var(#{$css-var-prefix}spacing);
2024-12-31 05:18:39 +00:00
@if $enable-classes {
&.hide-arrow > summary::after {
display: none;
content: none;
}
}
&:not(.hide-arrow) > summary {
padding-inline-end: calc(var(#{$css-var-prefix}nav-link-spacing-horizontal) * 3.25);
}
2024-12-31 05:18:39 +00:00
summary {
position: relative;
//padding-inline-end: var(#{$css-var-prefix}block-spacing-horizontal);
2024-12-31 05:18:39 +00:00
line-height: 1rem;
list-style-type: none;
cursor: pointer;
//@if $enable-transitions {
//transition: color var(#{$css-var-prefix}transition);
//}
2024-12-31 05:18:39 +00:00
&:not([role]) {
color: var(#{$css-var-prefix}accordion-close-summary-color);
}
// Reset marker
&::-webkit-details-marker {
display: none;
}
&::marker {
display: none;
}
&::-moz-list-bullet {
list-style-type: none;
}
// Marker
&::after {
display: block;
position: absolute;
top: calc(var(#{$css-var-prefix}block-spacing-vertical) * 0.5);
right: calc(var(#{$css-var-prefix}block-spacing-horizontal) * 0.5);
2024-12-31 05:18:39 +00:00
width: 1rem;
height: 1rem;
margin-inline-start: calc(var(#{$css-var-prefix}spacing, 1rem) * 0.5);
transform: rotate(-90deg);
background-image: var(#{$css-var-prefix}icon-chevron);
background-position: right center;
background-size: 1rem auto;
background-repeat: no-repeat;
content: "";
@if $enable-transitions {
transition: transform var(#{$css-var-prefix}transition);
}
}
&:focus {
outline: none;
&:not([role]) {
color: var(#{$css-var-prefix}accordion-active-summary-color);
}
}
&:focus-visible {
&:not([role]) {
outline: var(#{$css-var-prefix}outline-width) solid var(#{$css-var-prefix}primary-focus);
outline-offset: calc(var(#{$css-var-prefix}spacing, 1rem) * 0.5);
color: var(#{$css-var-prefix}primary);
}
}
// Type button
&[role="button"] {
width: 100%;
text-align: left;
// Marker
&::after {
height: calc(1rem * var(#{$css-var-prefix}line-height, 1.5));
}
}
}
2024-12-31 05:18:39 +00:00
// Open
&[open] {
> summary {
margin-block-end: var(#{$css-var-prefix}spacing);
2024-12-31 05:18:39 +00:00
&:not([role]):not(:focus) {
color: var(#{$css-var-prefix}accordion-open-summary-color);
2024-12-31 05:18:39 +00:00
}
&::after {
transform: rotate(0);
}
}
}
}
[dir="rtl"] {
#{$parent-selector} details {
summary {
text-align: right;
&::after {
float: left;
transform: rotate(90deg);
background-position: left center;
}
}
&[open] {
> summary {
&::after {
transform: rotate(0);
}
}
}
}
}
}