@microsoft/windows-admin-center-sdk
Version:
Microsoft - Windows Admin Center Shell
138 lines (137 loc) • 5.61 kB
TypeScript
import { AfterViewInit, EventEmitter, Injector, QueryList } from '@angular/core';
import { CoreBaseComponent } from '../common/base.component';
import { Layout } from '../common/layout';
import { SmeResponsiveWindowBreakpoints } from '../common/sme-responsive-window-manager.component';
import { LayoutConfig, LayoutDrivenType } from './layout-config';
import { LayoutDefinitionComponent } from './layout-definition.component';
import { LayoutItemComponent } from './layout-item.component';
import * as i0 from "@angular/core";
/**
* Layout component
*/
export declare class LayoutComponent extends CoreBaseComponent implements AfterViewInit {
/**
* The source name to use for logging
*/
protected get logSourceName(): string;
/**
* The layout items content children.
*/
private layoutItems;
/**
* The layout definition content children.
*/
private definitions;
/**
* The current layout definition value based on custom layout definition and the browser window size.
*/
currentLayoutDefinition: LayoutDefinitionComponent;
/**
* The default horizontal space in between layout items.
*/
itemHorizontalSpace: number;
/**
* The default vertical space in between layout items.
*/
itemVerticalSpace: number;
/**
* If true, will always use full width of the row for rendering.
*/
oneColumn: boolean;
/**
* If true, will always try to fill the whole row for each layout item.
*/
tryToFillWholeRow: boolean;
/**
* The layout definition.
*/
definition: {
[]: {
lowerWidth?: number;
upperWidth?: number;
};
};
/**
* If false, it will not assign extra paddings to the right for the last layout item.
*/
padLastItem: boolean;
/**
* If true, not extra right padding when there is only one item that uses the whole width of the row.
*/
noExtraRightPaddingOneItemPerRow: boolean;
/**
* It determines whether the layout is for settings where it contains a left and right layout item.
* If true, will apply special design for settings layout.
* On phone-up, the left side navigation layout item will be using a fixed width by default 300px,
* the right side layout item will be using the remaining width by default.
*
* On phone-down or 400% zoom, nothing is different from the regular settings page,
* the left right layout will be transformed to top bottom layout.
*/
layoutConfig: LayoutConfig;
/**
* Implementation of the Layout interface
*/
layoutChanged: EventEmitter<void>;
/**
* Implementation of the Layout interface
*/
windowBreakpointChanged: EventEmitter<void>;
private columnCount;
private columnSpanTotal;
private layoutResponsiveWindowManager;
private layoutDrivenType;
private currentLayoutItemConfig;
private readonly stylePixel;
get currentLayoutDefinitionName(): string;
get currentLayoutDrivenType(): LayoutDrivenType;
get currentWindowBreakpoint(): SmeResponsiveWindowBreakpoints;
get currentLayoutItems(): QueryList<LayoutItemComponent>;
constructor(injector: Injector, layout: Layout);
ngAfterViewInit(): void;
/**
* The open API for refreshing the control externally.
*/
refresh(): void;
/**
* On layout changed event handler, occurs every time the layout has been changed.
*/
onLayoutChanged(): void;
/**
* The deferred layout changed handler.
*/
private deferredOnLayoutChanged;
/**
* The on window breakpoint changed handler.
* Adding yield for component to get ElementRef after initialization.
*/
onWindowBreakpointChanged(): void;
protected getInitialHostClasses(): string[];
protected updateLayout(): void;
private updateLayoutConfig;
private resetFlex;
private setLayoutDrivenType;
private getTotalColumnSpan;
private updateCurrentLayoutDefinition;
private layoutDefinitionWithColumnSpanCalculation;
private configDrivenCalculation;
/**
* It deal with configurations that only has either percentage or number.
* Aiming at performance optimization.
*
* @param layoutItems The layout item object array
* @param availableLayoutWidthInPixel available width in pixel horizontally.
*/
private configDrivenCalculationDefault;
/**
* It deal with configurations that only has both percentage and number.
* Aiming at performance optimization.
*
* @param layoutItems The layout item object array
* @param availableLayoutWidthInPixel available width in pixel horizontally.
*/
private configDrivenCalculationHybrid;
private updateCustomConfig;
static ɵfac: i0.ɵɵFactoryDeclaration<LayoutComponent, never>;
static ɵcmp: i0.ɵɵComponentDeclaration<LayoutComponent, "sme-layout", never, { "itemHorizontalSpace": "itemHorizontalSpace"; "itemVerticalSpace": "itemVerticalSpace"; "oneColumn": "oneColumn"; "tryToFillWholeRow": "tryToFillWholeRow"; "definition": "definition"; "padLastItem": "padLastItem"; "noExtraRightPaddingOneItemPerRow": "noExtraRightPaddingOneItemPerRow"; "layoutConfig": "layoutConfig"; }, { "layoutChanged": "layoutChanged"; "windowBreakpointChanged": "windowBreakpointChanged"; }, ["layoutItems", "definitions"], ["sme-layout-item"], false, never>;
}