Rework sidebar to avoid jump when collapsing (#3444)

This commit is contained in:
Hippari 2024-12-08 17:04:13 +01:00 committed by GitHub
parent 2091b35cef
commit e7fb2017ea
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
3 changed files with 19 additions and 18 deletions

View file

@ -1,14 +1,14 @@
<ng-container *transloco="let t; read: 'actionable'"> <ng-container *transloco="let t; read: 'actionable'">
@if (actions.length > 0) { @if (actions.length > 0) {
@if ((utilityService.activeBreakpoint$ | async)! <= Breakpoint.Tablet) { @if ((utilityService.activeBreakpoint$ | async)! <= Breakpoint.Tablet) {
<button [disabled]="disabled" class="btn {{btnClass}}" id="actions-{{labelBy}}" <button [disabled]="disabled" class="btn {{btnClass}} px-3" id="actions-{{labelBy}}"
(click)="openMobileActionableMenu($event)"> (click)="openMobileActionableMenu($event)">
{{label}} {{label}}
<i class="fa {{iconClass}}" aria-hidden="true"></i> <i class="fa {{iconClass}}" aria-hidden="true"></i>
</button> </button>
} @else { } @else {
<div ngbDropdown container="body" class="d-inline-block"> <div ngbDropdown container="body" class="d-inline-block">
<button [disabled]="disabled" class="btn {{btnClass}}" id="actions-{{labelBy}}" ngbDropdownToggle <button [disabled]="disabled" class="btn {{btnClass}} px-3" id="actions-{{labelBy}}" ngbDropdownToggle
(click)="preventEvent($event)"> (click)="preventEvent($event)">
{{label}} {{label}}
<i class="fa {{iconClass}}" aria-hidden="true"></i> <i class="fa {{iconClass}}" aria-hidden="true"></i>

View file

@ -7,7 +7,7 @@
.companion-bar { .companion-bar {
transition: all var(--side-nav-companion-bar-transistion); transition: all var(--side-nav-companion-bar-transistion);
margin-left: 60px; margin-left: 45px;
overflow-y: hidden; overflow-y: hidden;
overflow-x: hidden; overflow-x: hidden;
height: calc(var(--vh)* 100 - var(--nav-mobile-offset)); height: calc(var(--vh)* 100 - var(--nav-mobile-offset));

View file

@ -12,6 +12,7 @@
border-radius: var(--side-nav-border-radius); border-radius: var(--side-nav-border-radius);
transition: width var(--side-nav-openclose-transition), background-color var(--side-nav-bg-color-transition), border-color var(--side-nav-border-transition); transition: width var(--side-nav-openclose-transition), background-color var(--side-nav-bg-color-transition), border-color var(--side-nav-border-transition);
border: var(--side-nav-border); border: var(--side-nav-border);
overflow: hidden;
&::-webkit-scrollbar { &::-webkit-scrollbar {
visibility: hidden; visibility: hidden;
@ -27,7 +28,7 @@
} }
//START closed state of the sidebar //START closed state of the sidebar
&.closed { &.closed {
width: 4.0625rem; width: 2.825rem;
overflow-x: hidden; overflow-x: hidden;
overflow-y: hidden; overflow-y: hidden;
background-color: var(--side-nav-closed-bg-color); background-color: var(--side-nav-closed-bg-color);
@ -49,11 +50,6 @@
opacity: 0; opacity: 0;
} }
.side-nav-text {
opacity: 0;
display: none;
}
.card-actions { .card-actions {
opacity: 0; opacity: 0;
display: none; display: none;
@ -64,7 +60,7 @@
//END closed state of the sidebar //END closed state of the sidebar
//START sidebar //START sidebar
.side-nav { .side-nav {
overflow-y: hidden; overflow: hidden;
height: 100%; height: 100%;
scrollbar-gutter: stable; scrollbar-gutter: stable;
scrollbar-width: thin; scrollbar-width: thin;
@ -73,7 +69,7 @@
position: relative; position: relative;
align-items: center; align-items: center;
display: flex; display: flex;
justify-content: space-between; justify-content: start;
width: 100%; width: 100%;
height: auto; height: auto;
min-height: 2.6rem; min-height: 2.6rem;
@ -89,6 +85,7 @@
&:first-of-type { &:first-of-type {
text-align: center; text-align: center;
width: 2.5rem; width: 2.5rem;
min-width: 2.5rem;
margin-left: 0.3rem; margin-left: 0.3rem;
} }
@ -101,7 +98,7 @@
align-items: center; align-items: center;
height: 100%; height: 100%;
justify-content: inherit; justify-content: inherit;
width: 100%; padding: 0 0.625rem;
i { i {
font-size: var(--side-nav-icon-size); font-size: var(--side-nav-icon-size);
@ -291,10 +288,6 @@
.side-nav-item { .side-nav-item {
width: 100%; width: 100%;
padding: 0; padding: 0;
display: block;
line-height: 2.5rem;
text-align: center;
min-height: unset;
color: var(--side-nav-item-closed-color); color: var(--side-nav-item-closed-color);
&:hover { &:hover {
@ -317,11 +310,13 @@
margin: 0; margin: 0;
left: 0; left: 0;
top: 0; top: 0;
transition: width var(--side-nav-openclose-transition); transition: width var(--side-nav-openclose-transition), visibility var(--side-nav-openclose-transition);
z-index: 1050; z-index: 1050;
overflow-x: hidden;
overflow-y: auto; overflow-y: auto;
border: var(--side-nav-mobile-border); border: var(--side-nav-mobile-border);
border-radius: 0rem; border-radius: 0rem;
visibility: visible;
&.preference { &.preference {
background-color: unset; background-color: unset;
@ -349,8 +344,10 @@
&.closed { &.closed {
width: 0; width: 0;
background-color: var(--side-nav-mobile-bg-color);
overflow: hidden; overflow: hidden;
box-shadow: none; box-shadow: none;
visibility: hidden;
} }
.side-nav { .side-nav {
@ -383,9 +380,13 @@
left: 0; left: 0;
top: 0; top: 0;
z-index: 1041; z-index: 1041;
visibility: visible;
opacity: 1;
transition: visibility var(--side-nav-openclose-transition), opacity var(--side-nav-openclose-transition);
&.closed { &.closed {
display: none; visibility: hidden;
opacity: 0;
} }
} }
} }