UNPKG

@ng-matero/extensions

Version:
134 lines (133 loc) 7.72 kB
import { AfterViewInit, ChangeDetectorRef, ElementRef, EventEmitter, InjectionToken, NgZone, OnDestroy, Renderer2 } from '@angular/core'; import { ThemePalette } from '@angular/material/core'; import { Observable } from 'rxjs'; import { MtxSplitArea, MtxSplitDefaultOptions, MtxSplitOutputAreaSizes, MtxSplitOutputData } from './interfaces'; import { MtxSplitPane } from './split-pane'; import * as i0 from "@angular/core"; /** Injection token that can be used to specify default split options. */ export declare const MTX_SPLIT_DEFAULT_OPTIONS: InjectionToken<MtxSplitDefaultOptions>; /** * mtx-split * * * PERCENT MODE ([unit]="'percent'") * ___________________________________________________________________________________________ * | A [g1] B [g2] C [g3] D [g4] E | * |-------------------------------------------------------------------------------------------| * | 20 30 20 15 15 | <-- [size]="x" * | 10px 10px 10px 10px | <-- [gutterSize]="10" * |calc(20% - 8px) calc(30% - 12px) calc(20% - 8px) calc(15% - 6px) calc(15% - 6px)| <-- CSS flex-basis property (with flex-grow&shrink at 0) * | 152px 228px 152px 114px 114px | <-- el.getBoundingClientRect().width * |___________________________________________________________________________________________| * 800px <-- el.getBoundingClientRect().width * flex-basis = calc( { area.size }% - { area.size/100 * nbGutter*gutterSize }px ); * * * PIXEL MODE ([unit]="'pixel'") * ___________________________________________________________________________________________ * | A [g1] B [g2] C [g3] D [g4] E | * |-------------------------------------------------------------------------------------------| * | 100 250 * 150 100 | <-- [size]="y" * | 10px 10px 10px 10px | <-- [gutterSize]="10" * | 0 0 100px 0 0 250px 1 1 auto 0 0 150px 0 0 100px | <-- CSS flex property (flex-grow/flex-shrink/flex-basis) * | 100px 250px 200px 150px 100px | <-- el.getBoundingClientRect().width * |___________________________________________________________________________________________| * 800px <-- el.getBoundingClientRect().width * */ export declare class MtxSplit implements AfterViewInit, OnDestroy { private ngZone; private elRef; private cdRef; private renderer; protected _defaultOptions?: MtxSplitDefaultOptions | undefined; color: ThemePalette; /** The split direction. */ get direction(): 'horizontal' | 'vertical'; set direction(v: 'horizontal' | 'vertical'); private _direction; /** The unit you want to specify area sizes. */ get unit(): 'percent' | 'pixel'; set unit(v: 'percent' | 'pixel'); private _unit; /** Gutters's size (dragging elements) in pixels. */ get gutterSize(): number; set gutterSize(v: number); private _gutterSize; /** Gutter step while moving in pixels. */ get gutterStep(): number; set gutterStep(v: number); private _gutterStep; /** Set to true if you want to limit gutter move to adjacent areas only. */ restrictMove: boolean; /** Add transition when toggling visibility using `visible` or `size` changes. */ get useTransition(): boolean; set useTransition(v: boolean); private _useTransition; /** * Disable the dragging feature (remove cursor/image on gutters). * `gutterClick`/`gutterDblClick` still emits. */ get disabled(): boolean; set disabled(v: boolean); private _disabled; /** Indicates the directionality of the areas. */ get dir(): 'ltr' | 'rtl'; set dir(v: 'ltr' | 'rtl'); private _dir; /** * Milliseconds to detect a double click on a gutter. Set it around 300-500ms if * you want to use `gutterDblClick` event. */ get gutterDblClickDuration(): number; set gutterDblClickDuration(v: number); private _gutterDblClickDuration; /** Event emitted when drag starts. */ dragStart: EventEmitter<MtxSplitOutputData>; /** Event emitted when drag ends. */ dragEnd: EventEmitter<MtxSplitOutputData>; /** Event emitted when user clicks on a gutter. */ gutterClick: EventEmitter<MtxSplitOutputData>; /** Event emitted when user double clicks on a gutter. */ gutterDblClick: EventEmitter<MtxSplitOutputData>; /** * Event emitted when transition ends (could be triggered from `visible` or `size` changes). * Only if `useTransition` equals true. */ get transitionEnd(): Observable<MtxSplitOutputAreaSizes>; private transitionEndSubscriber; private dragProgressSubject; dragProgress$: Observable<MtxSplitOutputData>; private isDragging; private dragListeners; private snapshot; private startPoint; private endPoint; readonly displayedAreas: Array<MtxSplitArea>; private readonly hidedAreas; private gutterEls; constructor(ngZone: NgZone, elRef: ElementRef, cdRef: ChangeDetectorRef, renderer: Renderer2, _defaultOptions?: MtxSplitDefaultOptions | undefined); ngAfterViewInit(): void; private getNbGutters; addArea(component: MtxSplitPane): void; removeArea(component: MtxSplitPane): void; updateArea(component: MtxSplitPane, resetOrders: boolean, resetSizes: boolean): void; showArea(component: MtxSplitPane): void; hideArea(comp: MtxSplitPane): void; getVisibleAreaSizes(): MtxSplitOutputAreaSizes; setVisibleAreaSizes(sizes: MtxSplitOutputAreaSizes): boolean; private build; private refreshStyleSizes; _clickTimeout: number | null; clickGutter(event: MouseEvent | TouchEvent, gutterNum: number): void; startDragging(event: MouseEvent | TouchEvent, gutterOrder: number, gutterNum: number): void; private dragEvent; private stopDragging; notify(type: 'start' | 'progress' | 'end' | 'click' | 'dblclick' | 'transitionEnd', gutterNum: number): void; ngOnDestroy(): void; static ɵfac: i0.ɵɵFactoryDeclaration<MtxSplit, [null, null, null, null, { optional: true; }]>; static ɵcmp: i0.ɵɵComponentDeclaration<MtxSplit, "mtx-split", ["mtxSplit"], { "color": { "alias": "color"; "required": false; }; "direction": { "alias": "direction"; "required": false; }; "unit": { "alias": "unit"; "required": false; }; "gutterSize": { "alias": "gutterSize"; "required": false; }; "gutterStep": { "alias": "gutterStep"; "required": false; }; "restrictMove": { "alias": "restrictMove"; "required": false; }; "useTransition": { "alias": "useTransition"; "required": false; }; "disabled": { "alias": "disabled"; "required": false; }; "dir": { "alias": "dir"; "required": false; }; "gutterDblClickDuration": { "alias": "gutterDblClickDuration"; "required": false; }; }, { "dragStart": "dragStart"; "dragEnd": "dragEnd"; "gutterClick": "gutterClick"; "gutterDblClick": "gutterDblClick"; "transitionEnd": "transitionEnd"; }, never, ["*"], true, never>; static ngAcceptInputType_restrictMove: unknown; static ngAcceptInputType_useTransition: unknown; static ngAcceptInputType_disabled: unknown; }