135 lines
3.7 KiB
SCSS
135 lines
3.7 KiB
SCSS
.accordion {
|
|
$handlerSize: 25px;
|
|
$spacing: 20px;
|
|
|
|
@extend %block;
|
|
outline: 0;
|
|
position: relative;
|
|
border-radius: var(--baseRadius);
|
|
background: var(--baseColor);
|
|
border: 1px solid var(--baseAlt2Color);
|
|
transition: box-shadow var(--baseAnimationSpeed),
|
|
margin var(--baseAnimationSpeed);
|
|
|
|
// header
|
|
.accordion-header {
|
|
outline: 0;
|
|
position: relative;
|
|
display: flex;
|
|
min-height: 52px;
|
|
align-items: center;
|
|
row-gap: 10px;
|
|
column-gap: var(--smSpacing);
|
|
padding: ($spacing - 8) $spacing ($spacing - 10);
|
|
width: 100%;
|
|
user-select: none;
|
|
color: var(--txtPrimaryColor);
|
|
border-radius: inherit;
|
|
transition: background var(--baseAnimationSpeed),
|
|
box-shadow var(--baseAnimationSpeed);
|
|
.icon {
|
|
width: 18px;
|
|
text-align: center;
|
|
i {
|
|
display: inline-block;
|
|
vertical-align: top;
|
|
font-size: 1.1rem;
|
|
}
|
|
}
|
|
&.interactive {
|
|
padding-right: ($spacing + $handlerSize + 5) ;
|
|
cursor: pointer;
|
|
&:after { // expand/collapse indicator
|
|
content: '\ea4e';
|
|
position: absolute;
|
|
right: $spacing - 5;
|
|
top: 50%;
|
|
margin-top: -($handlerSize * 0.5);
|
|
width: $handlerSize;
|
|
height: $handlerSize;
|
|
line-height: $handlerSize;
|
|
color: var(--txtHintColor);
|
|
font-family: var(--iconFontFamily);
|
|
font-size: 1.3em;
|
|
text-align: center;
|
|
transition: color var(--baseAnimationSpeed);
|
|
}
|
|
}
|
|
&:hover,
|
|
&:focus-visible {
|
|
&:after {
|
|
color: var(--txtPrimaryColor);
|
|
}
|
|
}
|
|
&:active {
|
|
transition-duration: var(--activeAnimationSpeed);
|
|
}
|
|
}
|
|
|
|
// content
|
|
.accordion-content {
|
|
@extend %block;
|
|
padding: $spacing;
|
|
}
|
|
|
|
// states
|
|
&:hover,
|
|
&:focus-visible,
|
|
&.active {
|
|
z-index: 9;
|
|
.accordion-header.interactive {
|
|
background: var(--baseAlt1Color);
|
|
}
|
|
}
|
|
&.active {
|
|
@include shadowize();
|
|
.accordion-header {
|
|
color: var(--baseColor);
|
|
box-shadow: 0px 0px 0px 1px var(--primaryColor);
|
|
border-bottom-left-radius: 0;
|
|
border-bottom-right-radius: 0;
|
|
background: var(--primaryColor);
|
|
&.interactive{
|
|
background: var(--primaryColor);
|
|
&:after {
|
|
color: inherit;
|
|
content: '\ea78';
|
|
}
|
|
}
|
|
}
|
|
}
|
|
&.disabled {
|
|
z-index: 0;
|
|
border-color: var(--baseAlt1Color);
|
|
.accordion-header {
|
|
color: var(--txtDisabledColor);
|
|
}
|
|
}
|
|
}
|
|
|
|
// wrapper
|
|
.accordions {
|
|
.accordion {
|
|
border-radius: 0;
|
|
margin: -1px 0 0;
|
|
&.active {
|
|
border-radius: var(--baseRadius);
|
|
margin: var(--smSpacing) 0;
|
|
+ .accordion {
|
|
border-top-left-radius: var(--baseRadius);
|
|
border-top-right-radius: var(--baseRadius);
|
|
}
|
|
}
|
|
&:first-child {
|
|
margin-top: 0;
|
|
border-top-left-radius: var(--baseRadius);
|
|
border-top-right-radius: var(--baseRadius);
|
|
}
|
|
&:last-child {
|
|
margin-bottom: 0;
|
|
border-bottom-left-radius: var(--baseRadius);
|
|
border-bottom-right-radius: var(--baseRadius);
|
|
}
|
|
}
|
|
}
|