import {
ChangeDetectionStrategy,
Component,
computed,
inject,
input,
ViewEncapsulation,
} from "@angular/core";
import { SdSidebarContainer } from "../sidebar/sd-sidebar-container";
import { SdButton } from "../../controls/button/sd-button";
import { NgIcon } from "@ng-icons/core";
import { tablerMenu2 } from "@ng-icons/tabler-icons";
@Component({
selector: "sd-topbar",
changeDetection: ChangeDetectionStrategy.OnPush,
encapsulation: ViewEncapsulation.None,
standalone: true,
imports: [SdButton, NgIcon],
host: {
"class": "flex-row gap-default cross-align-center main-align-start"
},
template: `
@if (hasSidebar()) {
}
`,
styles: [
/* language=SCSS */ `
sd-topbar {
min-height: var(--topbar-height);
overflow-x: auto;
overflow-y: hidden;
user-select: none;
background: var(--control-color);
color: var(--text-trans-default);
border-bottom: 1px solid var(--border-color-lighter);
padding-left: var(--gap-sm);
@each $h in (h1, h2, h3, h4, h5, h6) {
> #{$h} {
padding-right: var(--gap-xl);
}
}
&::-webkit-scrollbar-track {
background-color: var(--trans-light);
}
&::-webkit-scrollbar-corner {
background-color: var(--trans-light);
}
&::-webkit-scrollbar {
width: var(--gap-sm);
height: var(--gap-sm);
background-color: transparent;
}
&::-webkit-scrollbar-thumb {
background-color: var(--trans-default);
}
}
`,
],
})
export class SdTopbar {
private readonly _injectedSidebarContainer = inject(SdSidebarContainer, {
optional: true,
});
sidebarContainer = input();
hasSidebar = computed(
() => this.sidebarContainer() != null || this._injectedSidebarContainer != null,
);
onToggleButtonClick(): void {
const sc = this.sidebarContainer() ?? this._injectedSidebarContainer;
if (sc != null) {
sc.toggle.update((v) => !v);
}
}
protected readonly tablerMenu2 = tablerMenu2;
}