@taiga-ui/layout
Version:
A package with Taiga UI layout components
1 lines • 9.45 kB
Source Map (JSON)
{"version":3,"file":"taiga-ui-layout-components-dynamic-header.mjs","sources":["../../../projects/layout/components/dynamic-header/dynamic-header-anchor.directive.ts","../../../projects/layout/components/dynamic-header/dynamic-header-container.directive.ts","../../../projects/layout/components/dynamic-header/dynamic-header.component.ts","../../../projects/layout/components/dynamic-header/dynamic-header.ts","../../../projects/layout/components/dynamic-header/taiga-ui-layout-components-dynamic-header.ts"],"sourcesContent":["import {\n type AfterViewInit,\n Directive,\n inject,\n type OnDestroy,\n signal,\n TemplateRef,\n ViewContainerRef,\n} from '@angular/core';\nimport {WaIntersectionObserverDirective} from '@ng-web-apis/intersection-observer';\n\nimport {TuiDynamicHeaderContainerDirective} from './dynamic-header-container.directive';\n\n@Directive({\n standalone: true,\n selector: '[tuiDynamicHeaderAnchor]',\n})\nexport class TuiDynamicHeaderAnchorDirective implements AfterViewInit, OnDestroy {\n private readonly viewContainer = inject(ViewContainerRef);\n private readonly observer = inject(WaIntersectionObserverDirective);\n private readonly container = inject(TuiDynamicHeaderContainerDirective);\n public readonly templateRef = inject(TemplateRef<unknown>);\n public readonly view = this.viewContainer.createEmbeddedView(this.templateRef);\n public readonly visible = signal(false);\n\n public ngAfterViewInit(): void {\n this.observer.observe(this.view.rootNodes[0], ([e]) => {\n this.visible.set(!e?.isIntersecting);\n this.container.update();\n });\n }\n\n public ngOnDestroy(): void {\n this.observer.unobserve(this.view.rootNodes[0]);\n }\n}\n","import {\n ContentChildren,\n Directive,\n type QueryList,\n signal,\n type TemplateRef,\n} from '@angular/core';\nimport {toSignal} from '@angular/core/rxjs-interop';\nimport {\n WaIntersectionObserverDirective,\n WaIntersectionRoot,\n} from '@ng-web-apis/intersection-observer';\nimport {EMPTY_QUERY} from '@taiga-ui/cdk/constants';\nimport {tuiZoneOptimized} from '@taiga-ui/cdk/observables';\nimport {tuiInjectElement} from '@taiga-ui/cdk/utils/dom';\nimport {distinctUntilChanged, fromEvent, map, pairwise} from 'rxjs';\n\nimport {TuiDynamicHeaderAnchorDirective} from './dynamic-header-anchor.directive';\n\n@Directive({\n standalone: true,\n selector: '[tuiDynamicHeaderContainer]',\n hostDirectives: [WaIntersectionRoot, WaIntersectionObserverDirective],\n host: {\n waIntersectionRootMargin: '-44px 0px 1000000% 0px',\n },\n})\nexport class TuiDynamicHeaderContainerDirective {\n private readonly el = tuiInjectElement();\n\n @ContentChildren(TuiDynamicHeaderAnchorDirective, {\n descendants: true,\n })\n protected readonly headers: QueryList<TuiDynamicHeaderAnchorDirective> = EMPTY_QUERY;\n\n public hiddenHeaders = signal<Array<TemplateRef<unknown>>>([]);\n\n public scrollDir = toSignal(\n fromEvent(this.el, 'scroll').pipe(\n map(({target}) => (target as HTMLElement).scrollTop),\n pairwise(),\n map(([prev, next]) => (next > prev ? -1 : 1)),\n distinctUntilChanged(),\n tuiZoneOptimized(),\n ),\n );\n\n public update(): void {\n this.hiddenHeaders.set(\n this.headers.filter((h) => h.visible()).map((h) => h.templateRef),\n );\n }\n}\n","import {NgForOf, NgIf} from '@angular/common';\nimport {ChangeDetectionStrategy, Component, inject} from '@angular/core';\nimport {TuiAnimated} from '@taiga-ui/cdk/directives/animated';\nimport {PolymorpheusOutlet} from '@taiga-ui/polymorpheus';\n\nimport {TuiDynamicHeaderContainerDirective} from './dynamic-header-container.directive';\n\n@Component({\n standalone: true,\n selector: '[tuiDynamicHeader]',\n imports: [NgForOf, NgIf, PolymorpheusOutlet, TuiAnimated],\n template: `\n <div\n *ngIf=\"!container.hiddenHeaders().length; else dynamic\"\n tuiAnimated\n >\n <ng-content />\n </div>\n <ng-template #dynamic>\n <ng-container\n *ngFor=\"let header of container.hiddenHeaders(); let last = last\"\n >\n <div\n *ngIf=\"last\"\n tuiAnimated\n >\n <div *polymorpheusOutlet=\"header as text\">{{ text }}</div>\n </div>\n </ng-container>\n </ng-template>\n `,\n styleUrls: ['./dynamic-header.style.less'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[style.--t-dir]': 'container.scrollDir() || -1',\n },\n})\nexport class TuiDynamicHeaderComponent {\n protected readonly container = inject(TuiDynamicHeaderContainerDirective);\n}\n","import {TuiDynamicHeaderComponent} from './dynamic-header.component';\nimport {TuiDynamicHeaderAnchorDirective} from './dynamic-header-anchor.directive';\nimport {TuiDynamicHeaderContainerDirective} from './dynamic-header-container.directive';\n\nexport const TuiDynamicHeader = [\n TuiDynamicHeaderComponent,\n TuiDynamicHeaderAnchorDirective,\n TuiDynamicHeaderContainerDirective,\n] as const;\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}