UNPKG

@taiga-ui/layout

Version:

A package with Taiga UI layout components

41 lines 7.23 kB
import { ContentChildren, Directive, signal, } from '@angular/core'; import { toSignal } from '@angular/core/rxjs-interop'; import { WaIntersectionObserverDirective, WaIntersectionRoot, } from '@ng-web-apis/intersection-observer'; import { EMPTY_QUERY } from '@taiga-ui/cdk/constants'; import { tuiZoneOptimized } from '@taiga-ui/cdk/observables'; import { tuiInjectElement } from '@taiga-ui/cdk/utils/dom'; import { distinctUntilChanged, fromEvent, map, pairwise } from 'rxjs'; import { TuiDynamicHeaderAnchorDirective } from './dynamic-header-anchor.directive'; import * as i0 from "@angular/core"; import * as i1 from "@ng-web-apis/intersection-observer"; class TuiDynamicHeaderContainerDirective { constructor() { this.el = tuiInjectElement(); this.headers = EMPTY_QUERY; this.hiddenHeaders = signal([]); this.scrollDir = toSignal(fromEvent(this.el, 'scroll').pipe(map(({ target }) => target.scrollTop), pairwise(), map(([prev, next]) => (next > prev ? -1 : 1)), distinctUntilChanged(), tuiZoneOptimized())); } update() { this.hiddenHeaders.set(this.headers.filter((h) => h.visible()).map((h) => h.templateRef)); } static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TuiDynamicHeaderContainerDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); } static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.12", type: TuiDynamicHeaderContainerDirective, isStandalone: true, selector: "[tuiDynamicHeaderContainer]", host: { attributes: { "waIntersectionRootMargin": "-44px 0px 1000000% 0px" } }, queries: [{ propertyName: "headers", predicate: TuiDynamicHeaderAnchorDirective, descendants: true }], hostDirectives: [{ directive: i1.WaIntersectionRoot }, { directive: i1.WaIntersectionObserverDirective }], ngImport: i0 }); } } export { TuiDynamicHeaderContainerDirective }; i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TuiDynamicHeaderContainerDirective, decorators: [{ type: Directive, args: [{ standalone: true, selector: '[tuiDynamicHeaderContainer]', hostDirectives: [WaIntersectionRoot, WaIntersectionObserverDirective], host: { waIntersectionRootMargin: '-44px 0px 1000000% 0px', }, }] }], propDecorators: { headers: [{ type: ContentChildren, args: [TuiDynamicHeaderAnchorDirective, { descendants: true, }] }] } }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHluYW1pYy1oZWFkZXItY29udGFpbmVyLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2xheW91dC9jb21wb25lbnRzL2R5bmFtaWMtaGVhZGVyL2R5bmFtaWMtaGVhZGVyLWNvbnRhaW5lci5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNILGVBQWUsRUFDZixTQUFTLEVBRVQsTUFBTSxHQUVULE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBQyxRQUFRLEVBQUMsTUFBTSw0QkFBNEIsQ0FBQztBQUNwRCxPQUFPLEVBQ0gsK0JBQStCLEVBQy9CLGtCQUFrQixHQUNyQixNQUFNLG9DQUFvQyxDQUFDO0FBQzVDLE9BQU8sRUFBQyxXQUFXLEVBQUMsTUFBTSx5QkFBeUIsQ0FBQztBQUNwRCxPQUFPLEVBQUMsZ0JBQWdCLEVBQUMsTUFBTSwyQkFBMkIsQ0FBQztBQUMzRCxPQUFPLEVBQUMsZ0JBQWdCLEVBQUMsTUFBTSx5QkFBeUIsQ0FBQztBQUN6RCxPQUFPLEVBQUMsb0JBQW9CLEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBRSxRQUFRLEVBQUMsTUFBTSxNQUFNLENBQUM7QUFFcEUsT0FBTyxFQUFDLCtCQUErQixFQUFDLE1BQU0sbUNBQW1DLENBQUM7OztBQUVsRixNQVFhLGtDQUFrQztJQVIvQztRQVNxQixPQUFFLEdBQUcsZ0JBQWdCLEVBQUUsQ0FBQztRQUt0QixZQUFPLEdBQStDLFdBQVcsQ0FBQztRQUU5RSxrQkFBYSxHQUFHLE1BQU0sQ0FBOEIsRUFBRSxDQUFDLENBQUM7UUFFeEQsY0FBUyxHQUFHLFFBQVEsQ0FDdkIsU0FBUyxDQUFDLElBQUksQ0FBQyxFQUFFLEVBQUUsUUFBUSxDQUFDLENBQUMsSUFBSSxDQUM3QixHQUFHLENBQUMsQ0FBQyxFQUFDLE1BQU0sRUFBQyxFQUFFLEVBQUUsQ0FBRSxNQUFzQixDQUFDLFNBQVMsQ0FBQyxFQUNwRCxRQUFRLEVBQUUsRUFDVixHQUFHLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFDN0Msb0JBQW9CLEVBQUUsRUFDdEIsZ0JBQWdCLEVBQUUsQ0FDckIsQ0FDSixDQUFDO0tBT0w7SUFMVSxNQUFNO1FBQ1QsSUFBSSxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQ2xCLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FDcEUsQ0FBQztJQUNOLENBQUM7K0dBeEJRLGtDQUFrQzttR0FBbEMsa0NBQWtDLCtMQUcxQiwrQkFBK0I7O1NBSHZDLGtDQUFrQzs0RkFBbEMsa0NBQWtDO2tCQVI5QyxTQUFTO21CQUFDO29CQUNQLFVBQVUsRUFBRSxJQUFJO29CQUNoQixRQUFRLEVBQUUsNkJBQTZCO29CQUN2QyxjQUFjLEVBQUUsQ0FBQyxrQkFBa0IsRUFBRSwrQkFBK0IsQ0FBQztvQkFDckUsSUFBSSxFQUFFO3dCQUNGLHdCQUF3QixFQUFFLHdCQUF3QjtxQkFDckQ7aUJBQ0o7OEJBT3NCLE9BQU87c0JBSHpCLGVBQWU7dUJBQUMsK0JBQStCLEVBQUU7d0JBQzlDLFdBQVcsRUFBRSxJQUFJO3FCQUNwQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gICAgQ29udGVudENoaWxkcmVuLFxuICAgIERpcmVjdGl2ZSxcbiAgICB0eXBlIFF1ZXJ5TGlzdCxcbiAgICBzaWduYWwsXG4gICAgdHlwZSBUZW1wbGF0ZVJlZixcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge3RvU2lnbmFsfSBmcm9tICdAYW5ndWxhci9jb3JlL3J4anMtaW50ZXJvcCc7XG5pbXBvcnQge1xuICAgIFdhSW50ZXJzZWN0aW9uT2JzZXJ2ZXJEaXJlY3RpdmUsXG4gICAgV2FJbnRlcnNlY3Rpb25Sb290LFxufSBmcm9tICdAbmctd2ViLWFwaXMvaW50ZXJzZWN0aW9uLW9ic2VydmVyJztcbmltcG9ydCB7RU1QVFlfUVVFUll9IGZyb20gJ0B0YWlnYS11aS9jZGsvY29uc3RhbnRzJztcbmltcG9ydCB7dHVpWm9uZU9wdGltaXplZH0gZnJvbSAnQHRhaWdhLXVpL2Nkay9vYnNlcnZhYmxlcyc7XG5pbXBvcnQge3R1aUluamVjdEVsZW1lbnR9IGZyb20gJ0B0YWlnYS11aS9jZGsvdXRpbHMvZG9tJztcbmltcG9ydCB7ZGlzdGluY3RVbnRpbENoYW5nZWQsIGZyb21FdmVudCwgbWFwLCBwYWlyd2lzZX0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7VHVpRHluYW1pY0hlYWRlckFuY2hvckRpcmVjdGl2ZX0gZnJvbSAnLi9keW5hbWljLWhlYWRlci1hbmNob3IuZGlyZWN0aXZlJztcblxuQERpcmVjdGl2ZSh7XG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBzZWxlY3RvcjogJ1t0dWlEeW5hbWljSGVhZGVyQ29udGFpbmVyXScsXG4gICAgaG9zdERpcmVjdGl2ZXM6IFtXYUludGVyc2VjdGlvblJvb3QsIFdhSW50ZXJzZWN0aW9uT2JzZXJ2ZXJEaXJlY3RpdmVdLFxuICAgIGhvc3Q6IHtcbiAgICAgICAgd2FJbnRlcnNlY3Rpb25Sb290TWFyZ2luOiAnLTQ0cHggMHB4IDEwMDAwMDAlIDBweCcsXG4gICAgfSxcbn0pXG5leHBvcnQgY2xhc3MgVHVpRHluYW1pY0hlYWRlckNvbnRhaW5lckRpcmVjdGl2ZSB7XG4gICAgcHJpdmF0ZSByZWFkb25seSBlbCA9IHR1aUluamVjdEVsZW1lbnQoKTtcblxuICAgIEBDb250ZW50Q2hpbGRyZW4oVHVpRHluYW1pY0hlYWRlckFuY2hvckRpcmVjdGl2ZSwge1xuICAgICAgICBkZXNjZW5kYW50czogdHJ1ZSxcbiAgICB9KVxuICAgIHByb3RlY3RlZCByZWFkb25seSBoZWFkZXJzOiBRdWVyeUxpc3Q8VHVpRHluYW1pY0hlYWRlckFuY2hvckRpcmVjdGl2ZT4gPSBFTVBUWV9RVUVSWTtcblxuICAgIHB1YmxpYyBoaWRkZW5IZWFkZXJzID0gc2lnbmFsPEFycmF5PFRlbXBsYXRlUmVmPHVua25vd24+Pj4oW10pO1xuXG4gICAgcHVibGljIHNjcm9sbERpciA9IHRvU2lnbmFsKFxuICAgICAgICBmcm9tRXZlbnQodGhpcy5lbCwgJ3Njcm9sbCcpLnBpcGUoXG4gICAgICAgICAgICBtYXAoKHt0YXJnZXR9KSA9PiAodGFyZ2V0IGFzIEhUTUxFbGVtZW50KS5zY3JvbGxUb3ApLFxuICAgICAgICAgICAgcGFpcndpc2UoKSxcbiAgICAgICAgICAgIG1hcCgoW3ByZXYsIG5leHRdKSA9PiAobmV4dCA+IHByZXYgPyAtMSA6IDEpKSxcbiAgICAgICAgICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKCksXG4gICAgICAgICAgICB0dWlab25lT3B0aW1pemVkKCksXG4gICAgICAgICksXG4gICAgKTtcblxuICAgIHB1YmxpYyB1cGRhdGUoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuaGlkZGVuSGVhZGVycy5zZXQoXG4gICAgICAgICAgICB0aGlzLmhlYWRlcnMuZmlsdGVyKChoKSA9PiBoLnZpc2libGUoKSkubWFwKChoKSA9PiBoLnRlbXBsYXRlUmVmKSxcbiAgICAgICAgKTtcbiAgICB9XG59XG4iXX0=