import { ChangeDetectionStrategy, Component, computed, forwardRef, inject, ViewEncapsulation, } from "@angular/core"; import { SdSidebarContainer } from "./sd-sidebar-container"; @Component({ selector: "sd-sidebar", changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, standalone: true, imports: [], host: { "[attr.data-sd-toggle]": "toggle()", }, template: ` `, styles: [ /* language=SCSS */ ` @use "../../../scss/commons/mixins"; @use "../../../scss/commons/variables"; sd-sidebar { position: absolute; z-index: var(--z-index-sidebar); top: 0; left: 0; width: var(--sidebar-width); height: 100%; background: var(--control-color); border-right: 1px solid var(--border-color-lighter); @media not all and (max-width: variables.$breakpoint-mobile) { transition: transform 0.1s ease-out; &[data-sd-toggle="true"] { transform: translateX(-100%); transition: transform 0.1s ease-in; } } @media all and (max-width: variables.$breakpoint-mobile) { transition: transform 0.3s ease-in; transform: translateX(-100%); &[data-sd-toggle="true"] { transform: none; transition: transform 0.3s ease-out; @include mixins.elevation(16); } } } `, ], }) export class SdSidebar { private readonly _parentControl = inject( forwardRef(() => SdSidebarContainer), ); toggle = computed(() => this._parentControl.toggle()); }