Compare commits

..

2 Commits

Author SHA1 Message Date
Igor Hrenowitsch Propisnov b0065819f5 added svg for comact mode 2024-09-10 13:51:33 +02:00
Igor Hrenowitsch Propisnov 8862ff5cc4 added animation 2024-09-10 13:47:05 +02:00
2 changed files with 65 additions and 8 deletions

View File

@ -31,14 +31,16 @@
<button (click)="toggleCompactMode()" class="btn btn-square btn-ghost"> <button (click)="toggleCompactMode()" class="btn btn-square btn-ghost">
<svg <svg
xmlns="http://www.w3.org/2000/svg" xmlns="http://www.w3.org/2000/svg"
fill="none"
viewBox="0 0 24 24" viewBox="0 0 24 24"
class="inline-block w-6 h-6 stroke-current"> fill="none"
<path stroke="currentColor"
stroke-width="2"
stroke-linecap="round" stroke-linecap="round"
stroke-linejoin="round" stroke-linejoin="round"
stroke-width="2" class="inline-block w-6 h-6">
d="M3 3h18v18H3V3z"></path> <rect x="3" y="3" width="18" height="18" rx="2" ry="2" />
<line x1="9" y1="3" x2="9" y2="21" />
<path d="M13 8l3 3-3 3" />
</svg> </svg>
</button> </button>
</div> </div>
@ -48,6 +50,15 @@
<div class="flex-1 flex overflow-hidden"> <div class="flex-1 flex overflow-hidden">
<!-- Drawer --> <!-- Drawer -->
<div <div
[@drawerAnimation]="
isDrawerOpen
? isCompact
? 'compact'
: 'open'
: isCompact
? 'compact'
: 'closed'
"
class="h-full transition-transform duration-300 ease-in-out bg-primary text-primary-content flex flex-col lg:translate-x-0" class="h-full transition-transform duration-300 ease-in-out bg-primary text-primary-content flex flex-col lg:translate-x-0"
[ngClass]="{ [ngClass]="{
'w-16': isCompact && !isDrawerOpen, 'w-16': isCompact && !isDrawerOpen,
@ -167,15 +178,18 @@
</aside> </aside>
</div> </div>
<!-- Backdrop -->
<!-- Backdrop --> <!-- Backdrop -->
<div <div
[@backdropAnimation]="isDrawerOpen && !isCompact ? 'visible' : 'hidden'"
*ngIf="isDrawerOpen && !isCompact && isMobile" *ngIf="isDrawerOpen && !isCompact && isMobile"
class="fixed inset-0 bg-black bg-opacity-50 z-20" class="fixed inset-0 bg-black bg-opacity-50 z-20"
(click)="toggleDrawer()"></div> (click)="toggleDrawer()"></div>
<!-- Hauptinhalt --> <!-- Hauptinhalt -->
<div <div
[@mainContentAnimation]="
isCompact && !isDrawerOpen ? 'shifted' : 'normal'
"
class="flex-1 overflow-y-auto p-4 bg-base-100" class="flex-1 overflow-y-auto p-4 bg-base-100"
[ngClass]="{ [ngClass]="{
'lg:ml-16': isCompact && !isDrawerOpen, 'lg:ml-16': isCompact && !isDrawerOpen,

View File

@ -76,6 +76,49 @@ interface BottomMenuItem {
), ),
transition('closed <=> open', [animate('200ms ease-in-out')]), transition('closed <=> open', [animate('200ms ease-in-out')]),
]), ]),
trigger('drawerAnimation', [
state(
'open',
style({
width: '16rem', // 256px
})
),
state(
'compact',
style({
width: '4rem', // 64px
})
),
state(
'closed',
style({
width: '0',
})
),
transition('closed <=> open', [animate('300ms ease-in-out')]),
transition('open <=> compact', [animate('200ms ease-in-out')]),
transition('compact <=> closed', [animate('200ms ease-in-out')]),
]),
trigger('backdropAnimation', [
state('visible', style({ opacity: 1 })),
state('hidden', style({ opacity: 0 })),
transition('hidden <=> visible', [animate('200ms ease-in-out')]),
]),
trigger('mainContentAnimation', [
state(
'shifted',
style({
marginLeft: '4rem',
})
),
state(
'normal',
style({
marginLeft: '0',
})
),
transition('shifted <=> normal', [animate('200ms ease-in-out')]),
]),
], ],
}) })
export class LayoutComponent implements OnInit, OnDestroy { export class LayoutComponent implements OnInit, OnDestroy {