pocketbase/ui/src/scss/_accordion.scss

153 lines
4.2 KiB
SCSS
Raw Normal View History

2022-07-07 05:19:05 +08:00
.accordion {
$handlerSize: 25px;
$spacing: 20px;
@extend %block;
outline: 0;
position: relative;
border-radius: var(--baseRadius);
background: var(--baseColor);
border: 1px solid var(--baseAlt2Color);
2023-03-27 00:19:44 +08:00
transition: border-radius var(--baseAnimationSpeed),
box-shadow var(--baseAnimationSpeed),
2022-07-07 05:19:05 +08:00
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;
2023-03-27 00:19:44 +08:00
transition: border-radius var(--baseAnimationSpeed),
background var(--baseAnimationSpeed),
2022-07-07 05:19:05 +08:00
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,
2022-10-30 16:28:14 +08:00
&.focus,
2022-07-07 05:19:05 +08:00
&: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);
}
}
2022-10-30 16:28:14 +08:00
&.drag-over {
.accordion-header {
background: var(--bodyColor);
}
}
2022-07-07 05:19:05 +08:00
&.active {
@include shadowize();
.accordion-header {
position: relative;
top: 0;
z-index: 9;
2022-10-30 16:28:14 +08:00
box-shadow: 0px 0px 0px 1px var(--baseAlt2Color);
2022-07-07 05:19:05 +08:00
border-bottom-left-radius: 0;
border-bottom-right-radius: 0;
2022-10-30 16:28:14 +08:00
background: var(--bodyColor);
2022-07-07 05:19:05 +08:00
&.interactive{
2022-10-30 16:28:14 +08:00
background: var(--bodyColor);
2022-07-07 05:19:05 +08:00
&:after {
color: inherit;
content: '\ea78';
}
}
}
}
&.disabled {
z-index: 0;
border-color: var(--baseAlt1Color);
.accordion-header {
color: var(--txtDisabledColor);
}
}
}
2022-10-30 16:28:14 +08:00
2022-07-07 05:19:05 +08:00
// wrapper
.accordions {
.accordion {
border-radius: 0;
margin: -1px 0 0;
2023-03-17 01:21:16 +08:00
&:has(+ .accordion.active) {
border-bottom-left-radius: var(--baseRadius);
border-bottom-right-radius: var(--baseRadius);
}
2022-10-30 16:28:14 +08:00
}
& > .accordion.active,
& > .accordion-wrapper > .accordion.active {
margin: var(--smSpacing) 0;
border-radius: var(--baseRadius);
2023-03-17 01:21:16 +08:00
+ .accordion {
border-top-left-radius: var(--baseRadius);
border-top-right-radius: var(--baseRadius);
}
2022-10-30 16:28:14 +08:00
}
& > .accordion:first-child,
& > .accordion-wrapper:first-child > .accordion {
margin-top: 0;
border-top-left-radius: var(--baseRadius);
border-top-right-radius: var(--baseRadius);
}
& > .accordion:last-child,
& > .accordion-wrapper:last-child > .accordion {
margin-bottom: 0;
border-bottom-left-radius: var(--baseRadius);
border-bottom-right-radius: var(--baseRadius);
2022-07-07 05:19:05 +08:00
}
}