ng-devui
Version:
DevUI components based on Angular
52 lines (51 loc) • 2.3 kB
TypeScript
import { AfterViewInit, ElementRef, EventEmitter, OnDestroy, OnInit } from '@angular/core';
import { WindowRef } from 'ng-devui/window-ref';
import { Subscription } from 'rxjs';
import * as i0 from "@angular/core";
export type StickyStatus = 'normal' | 'follow' | 'stay' | 'remain';
export declare class StickyComponent implements OnInit, AfterViewInit, OnDestroy {
private el;
private windowRef;
hostPosition: string;
zIndex: number;
container: Element;
view: {
top?: number;
bottom?: number;
};
scrollTarget: any;
statusChange: EventEmitter<StickyStatus>;
wrapper: any;
_prevStatus: StickyStatus;
_status: StickyStatus;
set status(status: StickyStatus);
get status(): StickyStatus;
parentNode: any;
containerLeft: any;
private THROTTLE_DELAY;
private THROTTLE_TRIGGER;
private scrollPreStart;
private scrollTimer;
subscription: Subscription;
constructor(el: ElementRef, windowRef: WindowRef);
ngOnInit(): void;
ngAfterViewInit(): void;
ngOnDestroy(): void;
statusProcess(status: any): void;
throttle: () => void;
scrollAndResizeHock: () => void;
scrollHandler: () => void;
calculateRelativePosition(element: any, relativeElement: any, direction: any): number;
calculateRemainPosition(element: any, relativeElement: any, container: any): number;
initScrollStatus(target: any): void;
/**
* 提供给业务自己触发
* 用法:
* 1.捕获所有sticky:```@ViewChildren(StickyComponent) stickies;```
* 2.触发刷新:当需要手动触发更新的时候,比如订阅数据返回后页面高度发生变化可以调用 ```stickies.forEach(sticky => sticky.recalculatePosition());```
* 慎用,少用, 使用太多会影响性能。
*/
recalculatePosition(): void;
static ɵfac: i0.ɵɵFactoryDeclaration<StickyComponent, never>;
static ɵcmp: i0.ɵɵComponentDeclaration<StickyComponent, "d-sticky", never, { "zIndex": { "alias": "zIndex"; "required": false; }; "container": { "alias": "container"; "required": false; }; "view": { "alias": "view"; "required": false; }; "scrollTarget": { "alias": "scrollTarget"; "required": false; }; }, { "statusChange": "statusChange"; }, never, ["*"], false, never>;
}