UNPKG

@ng-doc/ui-kit

Version:

<!-- PROJECT LOGO --> <br /> <div align="center"> <a href="https://github.com/ng-doc/ng-doc"> <img src="https://ng-doc.com/assets/images/ng-doc.svg?raw=true" alt="Logo" height="150px"> </a>

1 lines 10.8 kB
{"version":3,"file":"ng-doc-ui-kit-components-overlay-container.mjs","sources":["../../../../libs/ui-kit/components/overlay-container/overlay-container.component.ts","../../../../libs/ui-kit/components/overlay-container/overlay-container.component.html","../../../../libs/ui-kit/components/overlay-container/ng-doc-ui-kit-components-overlay-container.ts"],"sourcesContent":["import {\n ConnectedOverlayPositionChange,\n FlexibleConnectedPositionStrategy,\n} from '@angular/cdk/overlay';\nimport {\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n DOCUMENT,\n ElementRef,\n HostBinding,\n inject,\n Input,\n NgZone,\n OnDestroy,\n OnInit,\n ViewChild,\n} from '@angular/core';\nimport { NgDocFocusControlComponent } from '@ng-doc/ui-kit/components/focus-control';\nimport { NgDocOverlayPointerComponent } from '@ng-doc/ui-kit/components/overlay-pointer';\nimport { NgDocEventSwitcherDirective } from '@ng-doc/ui-kit/directives/event-switcher';\nimport { NgDocFocusCatcherDirective } from '@ng-doc/ui-kit/directives/focus-catcher';\nimport { toElement } from '@ng-doc/ui-kit/helpers';\nimport { NgDocOverlayConfig, NgDocOverlayContainer } from '@ng-doc/ui-kit/interfaces';\nimport { ngDocZoneOptimize } from '@ng-doc/ui-kit/observables';\nimport {\n NgDocContent,\n NgDocHorizontalAlign,\n NgDocOverlayAnimationEvent,\n NgDocOverlayPosition,\n NgDocOverlayRelativePosition,\n NgDocVerticalAlign,\n} from '@ng-doc/ui-kit/types';\nimport { NgDocFocusUtils, NgDocOverlayUtils } from '@ng-doc/ui-kit/utils';\nimport { PolymorpheusModule, PolymorpheusOutletDirective } from '@tinkoff/ng-polymorpheus';\nimport { Observable, Subject } from 'rxjs';\nimport { distinctUntilChanged } from 'rxjs/operators';\n\n@Component({\n selector: 'ng-doc-overlay-container',\n templateUrl: './overlay-container.component.html',\n styleUrls: ['./overlay-container.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n NgDocOverlayPointerComponent,\n NgDocEventSwitcherDirective,\n NgDocFocusControlComponent,\n NgDocFocusCatcherDirective,\n PolymorpheusModule,\n ],\n})\nexport class NgDocOverlayContainerComponent\n implements NgDocOverlayContainer, OnInit, AfterViewInit, OnDestroy\n{\n private elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n private documentRef = inject<Document>(DOCUMENT);\n private changeDetectorRef = inject(ChangeDetectorRef);\n private ngZone = inject(NgZone);\n\n @Input()\n content: NgDocContent = '';\n\n @Input()\n config?: NgDocOverlayConfig;\n\n @ViewChild('contentContainer', { read: ElementRef, static: true })\n contentContainer?: ElementRef<HTMLElement>;\n\n @ViewChild(NgDocFocusCatcherDirective)\n focusCatcher?: NgDocFocusCatcherDirective;\n\n @ViewChild(PolymorpheusOutletDirective, { static: true })\n outlet?: PolymorpheusOutletDirective<object>;\n\n @HostBinding('attr.data-ng-doc-overlay-position')\n relativePosition: NgDocOverlayRelativePosition | null = null;\n\n private currentPosition?: NgDocOverlayPosition;\n private animationEvent$: Subject<NgDocOverlayAnimationEvent> =\n new Subject<NgDocOverlayAnimationEvent>();\n private isOpened: boolean = true;\n\n constructor() {}\n\n ngOnInit(): void {\n if (this.config?.positionStrategy instanceof FlexibleConnectedPositionStrategy) {\n this.config.positionStrategy.positionChanges\n .pipe(\n distinctUntilChanged(\n (a: ConnectedOverlayPositionChange, b: ConnectedOverlayPositionChange) =>\n a.connectionPair === b.connectionPair,\n ),\n ngDocZoneOptimize(this.ngZone),\n )\n .subscribe((change: ConnectedOverlayPositionChange) => {\n this.currentPosition = NgDocOverlayUtils.getOverlayPosition(change.connectionPair);\n this.relativePosition = NgDocOverlayUtils.getRelativePosition(this.currentPosition);\n this.changeDetectorRef.markForCheck();\n });\n }\n }\n\n ngAfterViewInit(): void {\n const [keyframes, options] = this.config?.openAnimation || [];\n this.runAnimation(keyframes ?? [], options);\n }\n\n @HostBinding('attr.data-ng-doc-overlay-with-contact-border')\n get contactBorder(): boolean {\n return !!this.config?.contactBorder;\n }\n\n get isFocused(): boolean {\n return !!this.focusCatcher?.focused;\n }\n\n get animationEvent(): Observable<NgDocOverlayAnimationEvent> {\n return this.animationEvent$.asObservable();\n }\n\n get overlayAlign(): NgDocHorizontalAlign | NgDocVerticalAlign | null {\n return this.currentPosition\n ? NgDocOverlayUtils.getPositionAlign(\n NgDocOverlayUtils.toConnectedPosition(this.currentPosition),\n )\n : null;\n }\n\n close(): void {\n if (this.isOpened) {\n const [keyframes, options] = this.config?.closeAnimation || [];\n this.runAnimation(keyframes ?? [], options, true);\n this.isOpened = false;\n this.changeDetectorRef.markForCheck();\n }\n }\n\n focus(): void {\n if (this.contentContainer) {\n NgDocFocusUtils.focusClosestElement(\n toElement(this.contentContainer),\n toElement(this.contentContainer),\n );\n }\n }\n\n markForCheck(): void {\n this.changeDetectorRef.markForCheck();\n }\n\n private runAnimation(\n keyframes: Keyframe[] | PropertyIndexedKeyframes,\n options?: KeyframeAnimationOptions,\n close: boolean = false,\n ): void {\n this.animationEvent$.next(close ? 'beforeClose' : 'beforeOpen');\n\n this.elementRef.nativeElement\n .animate(keyframes, options)\n .finished.then(() => this.animationEvent$.next(close ? 'afterClose' : 'afterOpen'));\n }\n\n ngOnDestroy(): void {\n if (this.isFocused && this.config && this.config.viewContainerRef) {\n NgDocFocusUtils.focusClosestElement(\n this.config.viewContainerRef.element.nativeElement,\n this.documentRef.body,\n false,\n );\n }\n }\n}\n","<ng-doc-overlay-pointer\n\t[overlayPosition]=\"relativePosition\"\n\t[overlayAlign]=\"overlayAlign\"\n\t[withPointer]=\"!!config?.withPointer\"\n\t[ngDocEventSwitcher]=\"config?.viewContainerRef?.element?.nativeElement ?? null\"\n\t[events]=\"['focusin', 'focusout', 'keydown', 'scroll']\">\n\t<ng-doc-focus-control\n\t\t[focusHost]=\"this.config?.viewContainerRef?.element?.nativeElement ?? null\"\n\t\tngDocFocusCatcher>\n\t\t<div class=\"ng-doc-overlay-content\" [tabIndex]=\"-1\" #contentContainer>\n\t\t\t<ng-container *polymorpheusOutlet=\"content as text\">{{ text }}</ng-container>\n\t\t</div>\n\t</ng-doc-focus-control>\n</ng-doc-overlay-pointer>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}