import { ChangeDetectionStrategy, Component, input, signal, ViewEncapsulation } from "@angular/core"; import { SdCollapseIcon } from "../../controls/collapse/sd-collapse-icon"; import { SdCollapse } from "../../controls/collapse/sd-collapse"; import { SdRipple } from "../../core/ripple/sd-ripple"; import { SdList } from "../../controls/list/sd-list"; import { SdListItem } from "../../controls/list/sd-list-item"; @Component({ selector: "sd-sidebar-user", changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, standalone: true, imports: [ SdCollapseIcon, SdCollapse, SdRipple, SdList, SdListItem, ], template: `
@if (userMenu()?.title) {
{{ userMenu()?.title }}
} @if (userMenu()?.title) { @for (menu of userMenu()?.menus; track menu.title) { {{ menu.title }} } } `, styles: [ /* language=SCSS */ ` sd-sidebar-user { display: block; > ._menu-button { display: block; cursor: pointer; user-select: none; padding: var(--gap-default); &:hover { background: var(--trans-lighter); } } > sd-collapse > ._content > sd-list { background: var(--trans-lightest); padding: var(--gap-xs) 0; } } `, ], }) export class SdSidebarUser { userMenu = input(); menuOpen = signal(false); onMenuOpenButtonClick(): void { this.menuOpen.update((v) => !v); } } export interface SdSidebarUserMenu { title: string; menus: { title: string; onClick: () => void; }[]; }