@nebular/theme
Version:
@nebular/theme
265 lines (264 loc) • 8.35 kB
TypeScript
/**
* @license
* Copyright Akveo. All Rights Reserved.
* Licensed under the MIT License. See License.txt in the project root for license information.
*/
import { ChangeDetectorRef, ElementRef, EventEmitter, OnDestroy, OnInit } from '@angular/core';
import { Subject } from 'rxjs';
import { NbBooleanInput } from '../helpers';
import { NbThemeService } from '../../services/theme.service';
import { NbSidebarService } from './sidebar.service';
export declare type NbSidebarState = 'expanded' | 'collapsed' | 'compacted';
export declare type NbSidebarResponsiveState = 'mobile' | 'tablet' | 'pc';
/**
* Sidebar header container.
*
* Placeholder which contains a sidebar header content,
* placed at the very top of the sidebar outside of the scroll area.
*/
export declare class NbSidebarHeaderComponent {
}
/**
* Sidebar footer container.
*
* Placeholder which contains a sidebar footer content,
* placed at the very bottom of the sidebar outside of the scroll area.
*/
export declare class NbSidebarFooterComponent {
}
/**
* Layout sidebar component.
*
* @stacked-example(Showcase, sidebar/sidebar-showcase.component)
*
* ### Installation
*
* Import `NbSidebarModule.forRoot()` to your app module.
* ```ts
* @NgModule({
* imports: [
* // ...
* NbSidebarModule.forRoot(),
* ],
* })
* export class AppModule { }
* ```
* and `NbSidebarModule` to your feature module where the component should be shown:
* ```ts
* @NgModule({
* imports: [
* // ...
* NbSidebarModule,
* ],
* })
* export class PageModule { }
* ```
* ### Usage
*
* Sidebar can be placed on the left or the right side of the layout,
* or on start/end position of layout (depends on document direction, left to right or right to left)
* It can be fixed (shown above the content) or can push the layout when opened.
*
* There are three states - `expanded`, `collapsed`, `compacted`.
* By default sidebar content is fixed and saves its position while the page is being scrolled.
*
* Compacted sidebar example:
* @stacked-example(Compacted Sidebar, sidebar/sidebar-compacted.component)
*
* Sidebar also supports a `responsive` behavior, listening to window size change and changing its size respectably.
*
* In a pair with header it is possible to setup a configuration when header is placed on a side of the sidebar
* and not on top of it. To achieve this simply put a `subheader` property to the header like this:
* ```html
* <nb-layout-header subheader></nb-layout-header>
* ```
* @stacked-example(Subheader, layout/layout-sidebar-subheader.component)
* Note that in such configuration sidebar shadow is removed and header cannot be make `fixed`.
*
* @additional-example(Right Sidebar, sidebar/sidebar-right.component)
* @additional-example(Fixed Sidebar, sidebar/sidebar-fixed.component)
*
* @styles
*
* sidebar-background-color:
* sidebar-text-color:
* sidebar-text-font-family:
* sidebar-text-font-size:
* sidebar-text-font-weight:
* sidebar-text-line-height:
* sidebar-height:
* sidebar-width:
* sidebar-width-compact:
* sidebar-padding:
* sidebar-header-height:
* sidebar-footer-height:
* sidebar-shadow:
* sidebar-menu-item-highlight-color:
* sidebar-scrollbar-background-color:
* sidebar-scrollbar-color:
* sidebar-scrollbar-width:
*/
export declare class NbSidebarComponent implements OnInit, OnDestroy {
private sidebarService;
private themeService;
private element;
private cd;
protected responsiveState: NbSidebarResponsiveState;
protected destroy$: Subject<void>;
containerFixedValue: boolean;
fixedValue: boolean;
rightValue: boolean;
leftValue: boolean;
startValue: boolean;
endValue: boolean;
get expanded(): boolean;
get collapsed(): boolean;
get compacted(): boolean;
/**
* Places sidebar on the right side
* @type {boolean}
*/
set right(val: boolean);
static ngAcceptInputType_right: NbBooleanInput;
/**
* Places sidebar on the left side
* @type {boolean}
*/
set left(val: boolean);
static ngAcceptInputType_left: NbBooleanInput;
/**
* Places sidebar on the start edge of layout
* @type {boolean}
*/
set start(val: boolean);
static ngAcceptInputType_start: NbBooleanInput;
/**
* Places sidebar on the end edge of layout
* @type {boolean}
*/
set end(val: boolean);
static ngAcceptInputType_end: NbBooleanInput;
/**
* Makes sidebar fixed (shown above the layout content)
* @type {boolean}
*/
set fixed(val: boolean);
static ngAcceptInputType_fixed: NbBooleanInput;
/**
* Makes sidebar container fixed
* @type {boolean}
*/
set containerFixed(val: boolean);
static ngAcceptInputType_containerFixed: NbBooleanInput;
/**
* Initial sidebar state, `expanded`|`collapsed`|`compacted`
* @type {string}
*/
get state(): NbSidebarState;
set state(value: NbSidebarState);
protected _state: NbSidebarState;
/**
* Makes sidebar listen to media query events and change its behaviour
* @type {boolean}
*/
get responsive(): boolean;
set responsive(value: boolean);
protected _responsive: boolean;
static ngAcceptInputType_responsive: NbBooleanInput;
/**
* Tags a sidebar with some ID, can be later used in the sidebar service
* to determine which sidebar triggered the action, if multiple sidebars exist on the page.
*
* @type {string}
*/
tag: string;
/**
* Controls on which screen sizes sidebar should be switched to compacted state.
* Works only when responsive mode is on.
* Default values are `['xs', 'is', 'sm', 'md', 'lg']`.
*
* @type string[]
*/
compactedBreakpoints: string[];
/**
* Controls on which screen sizes sidebar should be switched to collapsed state.
* Works only when responsive mode is on.
* Default values are `['xs', 'is']`.
*
* @type string[]
*/
collapsedBreakpoints: string[];
/**
* Emits whenever sidebar state change.
*/
readonly stateChange: EventEmitter<NbSidebarState>;
/**
* Emits whenever sidebar responsive state change.
*/
readonly responsiveStateChange: EventEmitter<NbSidebarResponsiveState>;
constructor(sidebarService: NbSidebarService, themeService: NbThemeService, element: ElementRef, cd: ChangeDetectorRef);
ngOnInit(): void;
ngOnDestroy(): void;
onClick(event: any): void;
/**
* Collapses the sidebar
*/
collapse(): void;
/**
* Expands the sidebar
*/
expand(): void;
/**
* Compacts the sidebar (minimizes)
*/
compact(): void;
/**
* Toggles sidebar state (expanded|collapsed|compacted)
* @param {boolean} compact If true, then sidebar state will be changed between expanded & compacted,
* otherwise - between expanded & collapsed. False by default.
*
* Toggle sidebar state
*
* ```ts
* this.sidebar.toggle(true);
* ```
*/
toggle(compact?: boolean): void;
protected subscribeToMediaQueryChange(): void;
protected getMenuLink(element: HTMLElement): HTMLElement | undefined;
/**
* @deprecated Use `responsive` property instead
* @breaking-change Remove @8.0.0
*/
toggleResponsive(enabled: boolean): void;
/**
* @deprecated Use NbSidebarState type instead
* @breaking-change Remove @8.0.0
*/
static readonly STATE_EXPANDED: string;
/**
* @deprecated Use NbSidebarState type instead
* @breaking-change Remove @8.0.0
*/
static readonly STATE_COLLAPSED: string;
/**
* @deprecated Use NbSidebarState type instead
* @breaking-change Remove @8.0.0
*/
static readonly STATE_COMPACTED: string;
/**
* @deprecated Use NbSidebarResponsiveState type instead
* @breaking-change Remove @8.0.0
*/
static readonly RESPONSIVE_STATE_MOBILE: string;
/**
* @deprecated Use NbSidebarResponsiveState type instead
* @breaking-change Remove @8.0.0
*/
static readonly RESPONSIVE_STATE_TABLET: string;
/**
* @deprecated Use NbSidebarResponsiveState type instead
* @breaking-change Remove @8.0.0
*/
static readonly RESPONSIVE_STATE_PC: string;
}