@ng-doc/ui-kit 22.0.0-beta.1 → 22.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +20 -29
- package/fesm2022/ng-doc-ui-kit-cdk-combobox-host.mjs +43 -22
- package/fesm2022/ng-doc-ui-kit-cdk-combobox-host.mjs.map +1 -1
- package/fesm2022/ng-doc-ui-kit-classes-base-input.mjs +24 -13
- package/fesm2022/ng-doc-ui-kit-classes-base-input.mjs.map +1 -1
- package/fesm2022/ng-doc-ui-kit-classes-overlay-ref.mjs +62 -22
- package/fesm2022/ng-doc-ui-kit-classes-overlay-ref.mjs.map +1 -1
- package/fesm2022/ng-doc-ui-kit-components-blockquote.mjs +39 -14
- package/fesm2022/ng-doc-ui-kit-components-blockquote.mjs.map +1 -1
- package/fesm2022/ng-doc-ui-kit-components-button-icon.mjs +30 -18
- package/fesm2022/ng-doc-ui-kit-components-button-icon.mjs.map +1 -1
- package/fesm2022/ng-doc-ui-kit-components-button-toggle.mjs +12 -9
- package/fesm2022/ng-doc-ui-kit-components-button-toggle.mjs.map +1 -1
- package/fesm2022/ng-doc-ui-kit-components-button.mjs +15 -24
- package/fesm2022/ng-doc-ui-kit-components-button.mjs.map +1 -1
- package/fesm2022/ng-doc-ui-kit-components-checkbox.mjs +13 -13
- package/fesm2022/ng-doc-ui-kit-components-checkbox.mjs.map +1 -1
- package/fesm2022/ng-doc-ui-kit-components-clear-control.mjs +14 -9
- package/fesm2022/ng-doc-ui-kit-components-clear-control.mjs.map +1 -1
- package/fesm2022/ng-doc-ui-kit-components-combobox.mjs +30 -26
- package/fesm2022/ng-doc-ui-kit-components-combobox.mjs.map +1 -1
- package/fesm2022/ng-doc-ui-kit-components-data-list-group.mjs +37 -38
- package/fesm2022/ng-doc-ui-kit-components-data-list-group.mjs.map +1 -1
- package/fesm2022/ng-doc-ui-kit-components-data-list.mjs +32 -39
- package/fesm2022/ng-doc-ui-kit-components-data-list.mjs.map +1 -1
- package/fesm2022/ng-doc-ui-kit-components-dialog-outlet.mjs +23 -20
- package/fesm2022/ng-doc-ui-kit-components-dialog-outlet.mjs.map +1 -1
- package/fesm2022/ng-doc-ui-kit-components-dot.mjs +20 -16
- package/fesm2022/ng-doc-ui-kit-components-dot.mjs.map +1 -1
- package/fesm2022/ng-doc-ui-kit-components-dropdown.mjs +120 -125
- package/fesm2022/ng-doc-ui-kit-components-dropdown.mjs.map +1 -1
- package/fesm2022/ng-doc-ui-kit-components-expander.mjs +17 -17
- package/fesm2022/ng-doc-ui-kit-components-expander.mjs.map +1 -1
- package/fesm2022/ng-doc-ui-kit-components-floated-border.mjs +4 -4
- package/fesm2022/ng-doc-ui-kit-components-floated-border.mjs.map +1 -1
- package/fesm2022/ng-doc-ui-kit-components-floated-content.mjs +16 -17
- package/fesm2022/ng-doc-ui-kit-components-floated-content.mjs.map +1 -1
- package/fesm2022/ng-doc-ui-kit-components-focus-control.mjs +20 -12
- package/fesm2022/ng-doc-ui-kit-components-focus-control.mjs.map +1 -1
- package/fesm2022/ng-doc-ui-kit-components-icon.mjs +175 -54
- package/fesm2022/ng-doc-ui-kit-components-icon.mjs.map +1 -1
- package/fesm2022/ng-doc-ui-kit-components-input-wrapper.mjs +43 -46
- package/fesm2022/ng-doc-ui-kit-components-input-wrapper.mjs.map +1 -1
- package/fesm2022/ng-doc-ui-kit-components-label.mjs +14 -16
- package/fesm2022/ng-doc-ui-kit-components-label.mjs.map +1 -1
- package/fesm2022/ng-doc-ui-kit-components-line.mjs +7 -4
- package/fesm2022/ng-doc-ui-kit-components-line.mjs.map +1 -1
- package/fesm2022/ng-doc-ui-kit-components-list.mjs +24 -8
- package/fesm2022/ng-doc-ui-kit-components-list.mjs.map +1 -1
- package/fesm2022/ng-doc-ui-kit-components-magnifier-controller.mjs +9 -4
- package/fesm2022/ng-doc-ui-kit-components-magnifier-controller.mjs.map +1 -1
- package/fesm2022/ng-doc-ui-kit-components-magnifier.mjs +39 -18
- package/fesm2022/ng-doc-ui-kit-components-magnifier.mjs.map +1 -1
- package/fesm2022/ng-doc-ui-kit-components-option-group.mjs +22 -27
- package/fesm2022/ng-doc-ui-kit-components-option-group.mjs.map +1 -1
- package/fesm2022/ng-doc-ui-kit-components-option.mjs +28 -22
- package/fesm2022/ng-doc-ui-kit-components-option.mjs.map +1 -1
- package/fesm2022/ng-doc-ui-kit-components-overlay-container.mjs +56 -52
- package/fesm2022/ng-doc-ui-kit-components-overlay-container.mjs.map +1 -1
- package/fesm2022/ng-doc-ui-kit-components-overlay-pointer.mjs +19 -21
- package/fesm2022/ng-doc-ui-kit-components-overlay-pointer.mjs.map +1 -1
- package/fesm2022/ng-doc-ui-kit-components-pane.mjs +91 -69
- package/fesm2022/ng-doc-ui-kit-components-pane.mjs.map +1 -1
- package/fesm2022/ng-doc-ui-kit-components-selection.mjs +173 -76
- package/fesm2022/ng-doc-ui-kit-components-selection.mjs.map +1 -1
- package/fesm2022/ng-doc-ui-kit-components-sidenav.mjs +23 -22
- package/fesm2022/ng-doc-ui-kit-components-sidenav.mjs.map +1 -1
- package/fesm2022/ng-doc-ui-kit-components-spinner.mjs +14 -12
- package/fesm2022/ng-doc-ui-kit-components-spinner.mjs.map +1 -1
- package/fesm2022/ng-doc-ui-kit-components-tab-group.mjs +86 -61
- package/fesm2022/ng-doc-ui-kit-components-tab-group.mjs.map +1 -1
- package/fesm2022/ng-doc-ui-kit-components-tab-routes-group.mjs +16 -13
- package/fesm2022/ng-doc-ui-kit-components-tab-routes-group.mjs.map +1 -1
- package/fesm2022/ng-doc-ui-kit-components-tag.mjs +23 -24
- package/fesm2022/ng-doc-ui-kit-components-tag.mjs.map +1 -1
- package/fesm2022/ng-doc-ui-kit-components-text.mjs +37 -52
- package/fesm2022/ng-doc-ui-kit-components-text.mjs.map +1 -1
- package/fesm2022/ng-doc-ui-kit-components-toggle.mjs +82 -57
- package/fesm2022/ng-doc-ui-kit-components-toggle.mjs.map +1 -1
- package/fesm2022/ng-doc-ui-kit-components-wrapper.mjs +7 -4
- package/fesm2022/ng-doc-ui-kit-components-wrapper.mjs.map +1 -1
- package/fesm2022/ng-doc-ui-kit-directives-autofocus.mjs +13 -10
- package/fesm2022/ng-doc-ui-kit-directives-autofocus.mjs.map +1 -1
- package/fesm2022/ng-doc-ui-kit-directives-checked-change.mjs +30 -26
- package/fesm2022/ng-doc-ui-kit-directives-checked-change.mjs.map +1 -1
- package/fesm2022/ng-doc-ui-kit-directives-data.mjs +8 -5
- package/fesm2022/ng-doc-ui-kit-directives-data.mjs.map +1 -1
- package/fesm2022/ng-doc-ui-kit-directives-dropdown-handler.mjs +19 -18
- package/fesm2022/ng-doc-ui-kit-directives-dropdown-handler.mjs.map +1 -1
- package/fesm2022/ng-doc-ui-kit-directives-dropdown-origin.mjs +7 -9
- package/fesm2022/ng-doc-ui-kit-directives-dropdown-origin.mjs.map +1 -1
- package/fesm2022/ng-doc-ui-kit-directives-event-switcher.mjs +22 -19
- package/fesm2022/ng-doc-ui-kit-directives-event-switcher.mjs.map +1 -1
- package/fesm2022/ng-doc-ui-kit-directives-focus-catcher.mjs +30 -25
- package/fesm2022/ng-doc-ui-kit-directives-focus-catcher.mjs.map +1 -1
- package/fesm2022/ng-doc-ui-kit-directives-focusable.mjs +13 -16
- package/fesm2022/ng-doc-ui-kit-directives-focusable.mjs.map +1 -1
- package/fesm2022/ng-doc-ui-kit-directives-fullscreen.mjs +90 -0
- package/fesm2022/ng-doc-ui-kit-directives-fullscreen.mjs.map +1 -0
- package/fesm2022/ng-doc-ui-kit-directives-hotkey.mjs +34 -28
- package/fesm2022/ng-doc-ui-kit-directives-hotkey.mjs.map +1 -1
- package/fesm2022/ng-doc-ui-kit-directives-input-number.mjs +10 -12
- package/fesm2022/ng-doc-ui-kit-directives-input-number.mjs.map +1 -1
- package/fesm2022/ng-doc-ui-kit-directives-input-string.mjs +9 -12
- package/fesm2022/ng-doc-ui-kit-directives-input-string.mjs.map +1 -1
- package/fesm2022/ng-doc-ui-kit-directives-radio-group.mjs +7 -4
- package/fesm2022/ng-doc-ui-kit-directives-radio-group.mjs.map +1 -1
- package/fesm2022/ng-doc-ui-kit-directives-rotator.mjs +16 -22
- package/fesm2022/ng-doc-ui-kit-directives-rotator.mjs.map +1 -1
- package/fesm2022/ng-doc-ui-kit-directives-tooltip.mjs +105 -101
- package/fesm2022/ng-doc-ui-kit-directives-tooltip.mjs.map +1 -1
- package/fesm2022/ng-doc-ui-kit-directives.mjs +1 -1
- package/fesm2022/ng-doc-ui-kit-interceptors.mjs +24 -21
- package/fesm2022/ng-doc-ui-kit-interceptors.mjs.map +1 -1
- package/fesm2022/ng-doc-ui-kit-observables.mjs +2 -58
- package/fesm2022/ng-doc-ui-kit-observables.mjs.map +1 -1
- package/fesm2022/ng-doc-ui-kit-pipes-as-array.mjs +3 -4
- package/fesm2022/ng-doc-ui-kit-pipes-as-array.mjs.map +1 -1
- package/fesm2022/ng-doc-ui-kit-pipes-bind.mjs +3 -4
- package/fesm2022/ng-doc-ui-kit-pipes-bind.mjs.map +1 -1
- package/fesm2022/ng-doc-ui-kit-pipes-execute.mjs +3 -4
- package/fesm2022/ng-doc-ui-kit-pipes-execute.mjs.map +1 -1
- package/fesm2022/ng-doc-ui-kit-pipes-highlighter.mjs +3 -4
- package/fesm2022/ng-doc-ui-kit-pipes-highlighter.mjs.map +1 -1
- package/fesm2022/ng-doc-ui-kit-services-dialog.mjs +14 -8
- package/fesm2022/ng-doc-ui-kit-services-dialog.mjs.map +1 -1
- package/fesm2022/ng-doc-ui-kit-services-notify.mjs +13 -8
- package/fesm2022/ng-doc-ui-kit-services-notify.mjs.map +1 -1
- package/fesm2022/ng-doc-ui-kit-services-overlay-strategy.mjs +15 -11
- package/fesm2022/ng-doc-ui-kit-services-overlay-strategy.mjs.map +1 -1
- package/fesm2022/ng-doc-ui-kit-services-overlay.mjs +20 -9
- package/fesm2022/ng-doc-ui-kit-services-overlay.mjs.map +1 -1
- package/fesm2022/ng-doc-ui-kit-services-scroll.mjs +11 -13
- package/fesm2022/ng-doc-ui-kit-services-scroll.mjs.map +1 -1
- package/fesm2022/ng-doc-ui-kit-tokens.mjs +29 -3
- package/fesm2022/ng-doc-ui-kit-tokens.mjs.map +1 -1
- package/fesm2022/ng-doc-ui-kit-types.mjs +0 -1
- package/fesm2022/ng-doc-ui-kit-types.mjs.map +1 -1
- package/package.json +31 -33
- package/styles/main.css +275 -38
- package/types/ng-doc-ui-kit-cdk-combobox-host.d.ts +16 -8
- package/types/ng-doc-ui-kit-classes-base-input.d.ts +12 -1
- package/types/ng-doc-ui-kit-classes-overlay-ref.d.ts +27 -4
- package/types/ng-doc-ui-kit-components-blockquote.d.ts +22 -5
- package/types/ng-doc-ui-kit-components-button-icon.d.ts +23 -5
- package/types/ng-doc-ui-kit-components-button-toggle.d.ts +5 -1
- package/types/ng-doc-ui-kit-components-button.d.ts +6 -6
- package/types/ng-doc-ui-kit-components-checkbox.d.ts +5 -3
- package/types/ng-doc-ui-kit-components-clear-control.d.ts +7 -0
- package/types/ng-doc-ui-kit-components-combobox.d.ts +19 -9
- package/types/ng-doc-ui-kit-components-data-list-group.d.ts +16 -11
- package/types/ng-doc-ui-kit-components-data-list.d.ts +21 -11
- package/types/ng-doc-ui-kit-components-dialog-outlet.d.ts +11 -6
- package/types/ng-doc-ui-kit-components-dot.d.ts +10 -5
- package/types/ng-doc-ui-kit-components-dropdown.d.ts +39 -27
- package/types/ng-doc-ui-kit-components-expander.d.ts +9 -7
- package/types/ng-doc-ui-kit-components-floated-content.d.ts +8 -6
- package/types/ng-doc-ui-kit-components-focus-control.d.ts +10 -4
- package/types/ng-doc-ui-kit-components-icon.d.ts +49 -14
- package/types/ng-doc-ui-kit-components-input-wrapper.d.ts +31 -17
- package/types/ng-doc-ui-kit-components-label.d.ts +8 -5
- package/types/ng-doc-ui-kit-components-line.d.ts +3 -0
- package/types/ng-doc-ui-kit-components-list.d.ts +14 -3
- package/types/ng-doc-ui-kit-components-magnifier-controller.d.ts +5 -1
- package/types/ng-doc-ui-kit-components-magnifier.d.ts +19 -4
- package/types/ng-doc-ui-kit-components-option-group.d.ts +12 -8
- package/types/ng-doc-ui-kit-components-option.d.ts +9 -2
- package/types/ng-doc-ui-kit-components-overlay-container.d.ts +18 -15
- package/types/ng-doc-ui-kit-components-overlay-pointer.d.ts +10 -6
- package/types/ng-doc-ui-kit-components-pane.d.ts +25 -9
- package/types/ng-doc-ui-kit-components-selection.d.ts +59 -21
- package/types/ng-doc-ui-kit-components-sidenav.d.ts +17 -8
- package/types/ng-doc-ui-kit-components-spinner.d.ts +7 -3
- package/types/ng-doc-ui-kit-components-tab-group.d.ts +43 -22
- package/types/ng-doc-ui-kit-components-tab-routes-group.d.ts +4 -2
- package/types/ng-doc-ui-kit-components-tag.d.ts +13 -6
- package/types/ng-doc-ui-kit-components-text.d.ts +21 -19
- package/types/ng-doc-ui-kit-components-toggle.d.ts +13 -7
- package/types/ng-doc-ui-kit-components-wrapper.d.ts +3 -0
- package/types/ng-doc-ui-kit-directives-autofocus.d.ts +7 -5
- package/types/ng-doc-ui-kit-directives-checked-change.d.ts +15 -11
- package/types/ng-doc-ui-kit-directives-data.d.ts +6 -4
- package/types/ng-doc-ui-kit-directives-dropdown-handler.d.ts +5 -3
- package/types/ng-doc-ui-kit-directives-dropdown-origin.d.ts +0 -2
- package/types/ng-doc-ui-kit-directives-event-switcher.d.ts +11 -6
- package/types/ng-doc-ui-kit-directives-focus-catcher.d.ts +11 -8
- package/types/ng-doc-ui-kit-directives-focusable.d.ts +6 -3
- package/types/ng-doc-ui-kit-directives-fullscreen.d.ts +39 -0
- package/types/ng-doc-ui-kit-directives-hotkey.d.ts +14 -7
- package/types/ng-doc-ui-kit-directives-input-number.d.ts +3 -2
- package/types/ng-doc-ui-kit-directives-input-string.d.ts +2 -2
- package/types/ng-doc-ui-kit-directives-radio-group.d.ts +4 -0
- package/types/ng-doc-ui-kit-directives-rotator.d.ts +8 -8
- package/types/ng-doc-ui-kit-directives-tooltip.d.ts +35 -23
- package/types/ng-doc-ui-kit-directives.d.ts +1 -1
- package/types/ng-doc-ui-kit-interceptors.d.ts +18 -2
- package/types/ng-doc-ui-kit-interfaces.d.ts +20 -4
- package/types/ng-doc-ui-kit-observables.d.ts +2 -19
- package/types/ng-doc-ui-kit-services-dialog.d.ts +10 -1
- package/types/ng-doc-ui-kit-services-notify.d.ts +9 -1
- package/types/ng-doc-ui-kit-services-overlay-strategy.d.ts +5 -3
- package/types/ng-doc-ui-kit-services-overlay.d.ts +14 -3
- package/types/ng-doc-ui-kit-services-scroll.d.ts +4 -5
- package/types/ng-doc-ui-kit-types.d.ts +2 -2
- package/fesm2022/ng-doc-ui-kit-decorators.mjs +0 -53
- package/fesm2022/ng-doc-ui-kit-decorators.mjs.map +0 -1
- package/fesm2022/ng-doc-ui-kit-directives-let.mjs +0 -43
- package/fesm2022/ng-doc-ui-kit-directives-let.mjs.map +0 -1
- package/types/ng-doc-ui-kit-decorators.d.ts +0 -12
- package/types/ng-doc-ui-kit-directives-let.d.ts +0 -22
|
@@ -1 +1 @@
|
|
|
1
|
-
{"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 { isPlatformBrowser } from '@angular/common';\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 PLATFORM_ID,\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 { PolymorpheusOutlet } from '@taiga-ui/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 PolymorpheusOutlet,\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 private platformId = inject(PLATFORM_ID);\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(PolymorpheusOutlet, { static: true })\n outlet?: PolymorpheusOutlet<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 if (!isPlatformBrowser(this.platformId)) {\n this.animationEvent$.next(close ? 'afterClose' : 'afterOpen');\n return;\n }\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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"}
|
|
1
|
+
{"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 { isPlatformBrowser } from '@angular/common';\nimport {\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n computed,\n DestroyRef,\n DOCUMENT,\n ElementRef,\n inject,\n input,\n OnDestroy,\n OnInit,\n PLATFORM_ID,\n signal,\n viewChild,\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\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 {\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 { PolymorpheusOutlet } from '@taiga-ui/polymorpheus';\nimport { Observable, Subject } from 'rxjs';\nimport { distinctUntilChanged } from 'rxjs/operators';\n\n/** The default overlay container: renders the content with the pointer and the open animation. */\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 PolymorpheusOutlet,\n ],\n host: {\n '[attr.data-ng-doc-overlay-position]': 'relativePosition()',\n '[attr.data-ng-doc-overlay-with-contact-border]': 'contactBorder()',\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 platformId = inject(PLATFORM_ID);\n private destroyRef = inject(DestroyRef);\n\n /** What the overlay renders: a string, a template or a component. */\n readonly content = input<NgDocContent>('');\n\n /** The configuration the overlay was opened with. */\n readonly config = input<NgDocOverlayConfig>();\n\n readonly contentContainer = viewChild('contentContainer', { read: ElementRef });\n\n readonly focusCatcher = viewChild(NgDocFocusCatcherDirective);\n\n readonly outlet = viewChild(PolymorpheusOutlet);\n\n private readonly currentPosition = signal<NgDocOverlayPosition | null>(null);\n\n /** The side of the origin the overlay is on, once the position strategy has placed it. */\n protected readonly relativePosition = computed<NgDocOverlayRelativePosition | null>(() => {\n const position: NgDocOverlayPosition | null = this.currentPosition();\n\n return position ? NgDocOverlayUtils.getRelativePosition(position) : null;\n });\n\n protected readonly overlayAlign = computed<NgDocHorizontalAlign | NgDocVerticalAlign | null>(\n () => {\n const position: NgDocOverlayPosition | null = this.currentPosition();\n\n return position\n ? NgDocOverlayUtils.getPositionAlign(NgDocOverlayUtils.toConnectedPosition(position))\n : null;\n },\n );\n\n protected readonly contactBorder = computed<boolean>(() => !!this.config()?.contactBorder);\n\n private animationEvent$: Subject<NgDocOverlayAnimationEvent> =\n new Subject<NgDocOverlayAnimationEvent>();\n private isOpened: boolean = true;\n\n ngOnInit(): void {\n const positionStrategy = this.config()?.positionStrategy;\n\n if (positionStrategy instanceof FlexibleConnectedPositionStrategy) {\n // The strategy may report a position outside the Angular zone; writing a signal schedules\n // change detection with and without zone.js.\n positionStrategy.positionChanges\n .pipe(\n distinctUntilChanged(\n (a: ConnectedOverlayPositionChange, b: ConnectedOverlayPositionChange) =>\n a.connectionPair === b.connectionPair,\n ),\n takeUntilDestroyed(this.destroyRef),\n )\n .subscribe((change: ConnectedOverlayPositionChange) =>\n this.currentPosition.set(NgDocOverlayUtils.getOverlayPosition(change.connectionPair)),\n );\n }\n }\n\n ngAfterViewInit(): void {\n const [keyframes, options] = this.config()?.openAnimation || [];\n this.runAnimation(keyframes ?? [], options);\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 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 const contentContainer: ElementRef<HTMLElement> | undefined = this.contentContainer();\n\n if (contentContainer) {\n NgDocFocusUtils.focusClosestElement(toElement(contentContainer), toElement(contentContainer));\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 if (!isPlatformBrowser(this.platformId)) {\n this.animationEvent$.next(close ? 'afterClose' : 'afterOpen');\n return;\n }\n\n this.elementRef.nativeElement\n .animate(keyframes, options)\n .finished.then(() => this.animationEvent$.next(close ? 'afterClose' : 'afterOpen'));\n }\n\n ngOnDestroy(): void {\n const config: NgDocOverlayConfig | undefined = this.config();\n\n if (this.isFocused && config && config.viewContainerRef) {\n NgDocFocusUtils.focusClosestElement(\n config.viewContainerRef.element.nativeElement,\n this.documentRef.body,\n false,\n );\n }\n }\n}\n","<ng-doc-overlay-pointer\n [overlayPosition]=\"relativePosition()\"\n [overlayAlign]=\"overlayAlign()\"\n [withPointer]=\"!!config()?.withPointer\"\n [ngDocEventSwitcher]=\"config()?.viewContainerRef?.element?.nativeElement ?? null\"\n [events]=\"['focusin', 'focusout', 'keydown', 'scroll']\">\n <ng-doc-focus-control\n [focusHost]=\"config()?.viewContainerRef?.element?.nativeElement ?? null\"\n ngDocFocusCatcher>\n <div class=\"ng-doc-overlay-content\" [tabIndex]=\"-1\" #contentContainer>\n <ng-container *polymorpheusOutlet=\"content() as text\">{{ text }}</ng-container>\n </div>\n </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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"}
|
|
@@ -1,31 +1,29 @@
|
|
|
1
1
|
import * as i0 from '@angular/core';
|
|
2
|
-
import {
|
|
2
|
+
import { input, ChangeDetectionStrategy, Component } from '@angular/core';
|
|
3
3
|
|
|
4
|
+
/** Frames overlay content and draws the arrow that points at the origin. */
|
|
4
5
|
class NgDocOverlayPointerComponent {
|
|
5
6
|
constructor() {
|
|
6
|
-
|
|
7
|
-
this.
|
|
8
|
-
|
|
7
|
+
/** The side of the origin the overlay is on. */
|
|
8
|
+
this.overlayPosition = input(null, /* @ts-ignore */
|
|
9
|
+
...(ngDevMode ? [{ debugName: "overlayPosition" }] : /* istanbul ignore next */ []));
|
|
10
|
+
/** How the overlay is aligned along that side. */
|
|
11
|
+
this.overlayAlign = input(null, /* @ts-ignore */
|
|
12
|
+
...(ngDevMode ? [{ debugName: "overlayAlign" }] : /* istanbul ignore next */ []));
|
|
13
|
+
/** Draws the arrow. */
|
|
14
|
+
this.withPointer = input(true, /* @ts-ignore */
|
|
15
|
+
...(ngDevMode ? [{ debugName: "withPointer" }] : /* istanbul ignore next */ []));
|
|
9
16
|
}
|
|
10
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
11
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "
|
|
17
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.2.1", ngImport: i0, type: NgDocOverlayPointerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
18
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.2.1", type: NgDocOverlayPointerComponent, isStandalone: true, selector: "ng-doc-overlay-pointer", inputs: { overlayPosition: { classPropertyName: "overlayPosition", publicName: "overlayPosition", isSignal: true, isRequired: false, transformFunction: null }, overlayAlign: { classPropertyName: "overlayAlign", publicName: "overlayAlign", isSignal: true, isRequired: false, transformFunction: null }, withPointer: { classPropertyName: "withPointer", publicName: "withPointer", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "attr.data-ng-doc-overlay-position": "overlayPosition()", "attr.data-ng-doc-overlay-align": "overlayAlign()" } }, ngImport: i0, template: "<div class=\"ng-doc-overlay-pointer-wrapper\">\n @if (withPointer()) {\n <div class=\"ng-doc-overlay-pointer\">\n <div class=\"ng-doc-pointer\"></div>\n </div>\n }\n <div class=\"ng-doc-overlay-pointer-content\">\n <ng-content></ng-content>\n </div>\n</div>\n", styles: [":host{display:block;height:100%}.ng-doc-overlay-pointer-wrapper{display:flex;flex-direction:column;height:100%}.ng-doc-overlay-pointer-wrapper .ng-doc-overlay-pointer{display:flex}.ng-doc-overlay-pointer-wrapper .ng-doc-overlay-pointer .ng-doc-pointer{position:relative}.ng-doc-overlay-pointer-wrapper .ng-doc-overlay-pointer .ng-doc-pointer:before{position:relative;display:block;content:\"\";width:0;height:0;border:8px solid transparent}.ng-doc-overlay-pointer-wrapper .ng-doc-overlay-pointer .ng-doc-pointer:after{position:absolute;display:block;content:\"\";width:0;height:0;border:7px solid transparent}.ng-doc-overlay-pointer-wrapper .ng-doc-overlay-pointer-content{display:flex;flex:1;height:100%}:host[data-ng-doc-overlay-position=top] .ng-doc-overlay-pointer-wrapper,:host[data-ng-doc-overlay-position=bottom] .ng-doc-overlay-pointer-wrapper{min-width:calc(var(--ng-doc-base-gutter) * 4)}:host[data-ng-doc-overlay-position=top] .ng-doc-overlay-pointer,:host[data-ng-doc-overlay-position=bottom] .ng-doc-overlay-pointer{justify-content:center}:host[data-ng-doc-overlay-position=top] .ng-doc-overlay-pointer .ng-doc-pointer,:host[data-ng-doc-overlay-position=bottom] .ng-doc-overlay-pointer .ng-doc-pointer{top:1px}:host[data-ng-doc-overlay-position=top] .ng-doc-overlay-pointer .ng-doc-pointer:before,:host[data-ng-doc-overlay-position=bottom] .ng-doc-overlay-pointer .ng-doc-pointer:before{border-bottom:8px solid;border-bottom-color:var(--ng-doc-overlay-border)}:host[data-ng-doc-overlay-position=top] .ng-doc-overlay-pointer .ng-doc-pointer:after,:host[data-ng-doc-overlay-position=bottom] .ng-doc-overlay-pointer .ng-doc-pointer:after{top:2px;right:1px;border-bottom:7px solid;border-bottom-color:var(--ng-doc-overlay-background)}:host[data-ng-doc-overlay-position=top] .ng-doc-overlay-pointer-wrapper{flex-direction:column-reverse}:host[data-ng-doc-overlay-position=top] .ng-doc-overlay-pointer{transform:rotate(180deg) scaleX(-1)}:host[data-ng-doc-overlay-align=left] .ng-doc-overlay-pointer{justify-content:flex-start}:host[data-ng-doc-overlay-align=left] .ng-doc-overlay-pointer .ng-doc-pointer{margin-left:calc(var(--ng-doc-base-gutter) * 2)}:host[data-ng-doc-overlay-align=right] .ng-doc-overlay-pointer{justify-content:flex-end}:host[data-ng-doc-overlay-align=right] .ng-doc-overlay-pointer .ng-doc-pointer{margin-right:calc(var(--ng-doc-base-gutter) * 2)}:host[data-ng-doc-overlay-position=left] .ng-doc-overlay-pointer-wrapper,:host[data-ng-doc-overlay-position=right] .ng-doc-overlay-pointer-wrapper{flex-direction:row;min-height:calc(var(--ng-doc-base-gutter) * 4)}:host[data-ng-doc-overlay-position=left] .ng-doc-overlay-pointer,:host[data-ng-doc-overlay-position=right] .ng-doc-overlay-pointer{align-items:center}:host[data-ng-doc-overlay-position=left] .ng-doc-overlay-pointer .ng-doc-pointer,:host[data-ng-doc-overlay-position=right] .ng-doc-overlay-pointer .ng-doc-pointer{left:1px}:host[data-ng-doc-overlay-position=left] .ng-doc-overlay-pointer .ng-doc-pointer:before,:host[data-ng-doc-overlay-position=right] .ng-doc-overlay-pointer .ng-doc-pointer:before{border-right:8px solid var(--ng-doc-overlay-border)}:host[data-ng-doc-overlay-position=left] .ng-doc-overlay-pointer .ng-doc-pointer:after,:host[data-ng-doc-overlay-position=right] .ng-doc-overlay-pointer .ng-doc-pointer:after{top:1px;right:0;border-right:7px solid var(--ng-doc-overlay-background)}:host[data-ng-doc-overlay-position=left] .ng-doc-overlay-pointer-wrapper{flex-direction:row-reverse}:host[data-ng-doc-overlay-position=left] .ng-doc-overlay-pointer{transform:rotate(180deg) scaleY(-1)}:host[data-ng-doc-overlay-align=top] .ng-doc-overlay-pointer{align-items:flex-start}:host[data-ng-doc-overlay-align=top] .ng-doc-overlay-pointer .ng-doc-pointer{margin-top:calc(var(--ng-doc-base-gutter) * 2)}:host[data-ng-doc-overlay-align=bottom] .ng-doc-overlay-pointer{align-items:flex-end}:host[data-ng-doc-overlay-align=bottom] .ng-doc-overlay-pointer .ng-doc-pointer{margin-bottom:calc(var(--ng-doc-base-gutter) * 2)}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
12
19
|
}
|
|
13
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
20
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.2.1", ngImport: i0, type: NgDocOverlayPointerComponent, decorators: [{
|
|
14
21
|
type: Component,
|
|
15
|
-
args: [{ selector: 'ng-doc-overlay-pointer', changeDetection: ChangeDetectionStrategy.OnPush, imports: [],
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
args: ['attr.data-ng-doc-overlay-position']
|
|
21
|
-
}], overlayAlign: [{
|
|
22
|
-
type: Input
|
|
23
|
-
}, {
|
|
24
|
-
type: HostBinding,
|
|
25
|
-
args: ['attr.data-ng-doc-overlay-align']
|
|
26
|
-
}], withPointer: [{
|
|
27
|
-
type: Input
|
|
28
|
-
}] } });
|
|
22
|
+
args: [{ selector: 'ng-doc-overlay-pointer', changeDetection: ChangeDetectionStrategy.OnPush, imports: [], host: {
|
|
23
|
+
'[attr.data-ng-doc-overlay-position]': 'overlayPosition()',
|
|
24
|
+
'[attr.data-ng-doc-overlay-align]': 'overlayAlign()',
|
|
25
|
+
}, template: "<div class=\"ng-doc-overlay-pointer-wrapper\">\n @if (withPointer()) {\n <div class=\"ng-doc-overlay-pointer\">\n <div class=\"ng-doc-pointer\"></div>\n </div>\n }\n <div class=\"ng-doc-overlay-pointer-content\">\n <ng-content></ng-content>\n </div>\n</div>\n", styles: [":host{display:block;height:100%}.ng-doc-overlay-pointer-wrapper{display:flex;flex-direction:column;height:100%}.ng-doc-overlay-pointer-wrapper .ng-doc-overlay-pointer{display:flex}.ng-doc-overlay-pointer-wrapper .ng-doc-overlay-pointer .ng-doc-pointer{position:relative}.ng-doc-overlay-pointer-wrapper .ng-doc-overlay-pointer .ng-doc-pointer:before{position:relative;display:block;content:\"\";width:0;height:0;border:8px solid transparent}.ng-doc-overlay-pointer-wrapper .ng-doc-overlay-pointer .ng-doc-pointer:after{position:absolute;display:block;content:\"\";width:0;height:0;border:7px solid transparent}.ng-doc-overlay-pointer-wrapper .ng-doc-overlay-pointer-content{display:flex;flex:1;height:100%}:host[data-ng-doc-overlay-position=top] .ng-doc-overlay-pointer-wrapper,:host[data-ng-doc-overlay-position=bottom] .ng-doc-overlay-pointer-wrapper{min-width:calc(var(--ng-doc-base-gutter) * 4)}:host[data-ng-doc-overlay-position=top] .ng-doc-overlay-pointer,:host[data-ng-doc-overlay-position=bottom] .ng-doc-overlay-pointer{justify-content:center}:host[data-ng-doc-overlay-position=top] .ng-doc-overlay-pointer .ng-doc-pointer,:host[data-ng-doc-overlay-position=bottom] .ng-doc-overlay-pointer .ng-doc-pointer{top:1px}:host[data-ng-doc-overlay-position=top] .ng-doc-overlay-pointer .ng-doc-pointer:before,:host[data-ng-doc-overlay-position=bottom] .ng-doc-overlay-pointer .ng-doc-pointer:before{border-bottom:8px solid;border-bottom-color:var(--ng-doc-overlay-border)}:host[data-ng-doc-overlay-position=top] .ng-doc-overlay-pointer .ng-doc-pointer:after,:host[data-ng-doc-overlay-position=bottom] .ng-doc-overlay-pointer .ng-doc-pointer:after{top:2px;right:1px;border-bottom:7px solid;border-bottom-color:var(--ng-doc-overlay-background)}:host[data-ng-doc-overlay-position=top] .ng-doc-overlay-pointer-wrapper{flex-direction:column-reverse}:host[data-ng-doc-overlay-position=top] .ng-doc-overlay-pointer{transform:rotate(180deg) scaleX(-1)}:host[data-ng-doc-overlay-align=left] .ng-doc-overlay-pointer{justify-content:flex-start}:host[data-ng-doc-overlay-align=left] .ng-doc-overlay-pointer .ng-doc-pointer{margin-left:calc(var(--ng-doc-base-gutter) * 2)}:host[data-ng-doc-overlay-align=right] .ng-doc-overlay-pointer{justify-content:flex-end}:host[data-ng-doc-overlay-align=right] .ng-doc-overlay-pointer .ng-doc-pointer{margin-right:calc(var(--ng-doc-base-gutter) * 2)}:host[data-ng-doc-overlay-position=left] .ng-doc-overlay-pointer-wrapper,:host[data-ng-doc-overlay-position=right] .ng-doc-overlay-pointer-wrapper{flex-direction:row;min-height:calc(var(--ng-doc-base-gutter) * 4)}:host[data-ng-doc-overlay-position=left] .ng-doc-overlay-pointer,:host[data-ng-doc-overlay-position=right] .ng-doc-overlay-pointer{align-items:center}:host[data-ng-doc-overlay-position=left] .ng-doc-overlay-pointer .ng-doc-pointer,:host[data-ng-doc-overlay-position=right] .ng-doc-overlay-pointer .ng-doc-pointer{left:1px}:host[data-ng-doc-overlay-position=left] .ng-doc-overlay-pointer .ng-doc-pointer:before,:host[data-ng-doc-overlay-position=right] .ng-doc-overlay-pointer .ng-doc-pointer:before{border-right:8px solid var(--ng-doc-overlay-border)}:host[data-ng-doc-overlay-position=left] .ng-doc-overlay-pointer .ng-doc-pointer:after,:host[data-ng-doc-overlay-position=right] .ng-doc-overlay-pointer .ng-doc-pointer:after{top:1px;right:0;border-right:7px solid var(--ng-doc-overlay-background)}:host[data-ng-doc-overlay-position=left] .ng-doc-overlay-pointer-wrapper{flex-direction:row-reverse}:host[data-ng-doc-overlay-position=left] .ng-doc-overlay-pointer{transform:rotate(180deg) scaleY(-1)}:host[data-ng-doc-overlay-align=top] .ng-doc-overlay-pointer{align-items:flex-start}:host[data-ng-doc-overlay-align=top] .ng-doc-overlay-pointer .ng-doc-pointer{margin-top:calc(var(--ng-doc-base-gutter) * 2)}:host[data-ng-doc-overlay-align=bottom] .ng-doc-overlay-pointer{align-items:flex-end}:host[data-ng-doc-overlay-align=bottom] .ng-doc-overlay-pointer .ng-doc-pointer{margin-bottom:calc(var(--ng-doc-base-gutter) * 2)}\n"] }]
|
|
26
|
+
}], propDecorators: { overlayPosition: [{ type: i0.Input, args: [{ isSignal: true, alias: "overlayPosition", required: false }] }], overlayAlign: [{ type: i0.Input, args: [{ isSignal: true, alias: "overlayAlign", required: false }] }], withPointer: [{ type: i0.Input, args: [{ isSignal: true, alias: "withPointer", required: false }] }] } });
|
|
29
27
|
|
|
30
28
|
/**
|
|
31
29
|
* Generated bundle index. Do not edit.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ng-doc-ui-kit-components-overlay-pointer.mjs","sources":["../../../../libs/ui-kit/components/overlay-pointer/overlay-pointer.component.ts","../../../../libs/ui-kit/components/overlay-pointer/overlay-pointer.component.html","../../../../libs/ui-kit/components/overlay-pointer/ng-doc-ui-kit-components-overlay-pointer.ts"],"sourcesContent":["import { ChangeDetectionStrategy, Component,
|
|
1
|
+
{"version":3,"file":"ng-doc-ui-kit-components-overlay-pointer.mjs","sources":["../../../../libs/ui-kit/components/overlay-pointer/overlay-pointer.component.ts","../../../../libs/ui-kit/components/overlay-pointer/overlay-pointer.component.html","../../../../libs/ui-kit/components/overlay-pointer/ng-doc-ui-kit-components-overlay-pointer.ts"],"sourcesContent":["import { ChangeDetectionStrategy, Component, input } from '@angular/core';\nimport {\n NgDocHorizontalAlign,\n NgDocOverlayRelativePosition,\n NgDocVerticalAlign,\n} from '@ng-doc/ui-kit/types';\n\n/** Frames overlay content and draws the arrow that points at the origin. */\n@Component({\n selector: 'ng-doc-overlay-pointer',\n templateUrl: './overlay-pointer.component.html',\n styleUrls: ['./overlay-pointer.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [],\n host: {\n '[attr.data-ng-doc-overlay-position]': 'overlayPosition()',\n '[attr.data-ng-doc-overlay-align]': 'overlayAlign()',\n },\n})\nexport class NgDocOverlayPointerComponent {\n /** The side of the origin the overlay is on. */\n readonly overlayPosition = input<NgDocOverlayRelativePosition | null>(null);\n\n /** How the overlay is aligned along that side. */\n readonly overlayAlign = input<NgDocHorizontalAlign | NgDocVerticalAlign | null>(null);\n\n /** Draws the arrow. */\n readonly withPointer = input<boolean>(true);\n}\n","<div class=\"ng-doc-overlay-pointer-wrapper\">\n @if (withPointer()) {\n <div class=\"ng-doc-overlay-pointer\">\n <div class=\"ng-doc-pointer\"></div>\n </div>\n }\n <div class=\"ng-doc-overlay-pointer-content\">\n <ng-content></ng-content>\n </div>\n</div>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;AAOA;MAYa,4BAA4B,CAAA;AAXzC,IAAA,WAAA,GAAA;;QAaW,IAAA,CAAA,eAAe,GAAG,KAAK,CAAsC,IAAI;4FAAC;;QAGlE,IAAA,CAAA,YAAY,GAAG,KAAK,CAAmD,IAAI;yFAAC;;QAG5E,IAAA,CAAA,WAAW,GAAG,KAAK,CAAU,IAAI;wFAAC;AAC5C,IAAA;8GATY,4BAA4B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAA5B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,4BAA4B,mpBCnBzC,uRAUA,EAAA,MAAA,EAAA,CAAA,+6HAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;2FDSa,4BAA4B,EAAA,UAAA,EAAA,CAAA;kBAXxC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,wBAAwB,mBAGjB,uBAAuB,CAAC,MAAM,EAAA,OAAA,EACtC,EAAE,EAAA,IAAA,EACL;AACJ,wBAAA,qCAAqC,EAAE,mBAAmB;AAC1D,wBAAA,kCAAkC,EAAE,gBAAgB;AACrD,qBAAA,EAAA,QAAA,EAAA,uRAAA,EAAA,MAAA,EAAA,CAAA,+6HAAA,CAAA,EAAA;;;AEjBH;;AAEG;;;;"}
|
|
@@ -1,109 +1,131 @@
|
|
|
1
1
|
import * as i0 from '@angular/core';
|
|
2
|
-
import { Directive, inject, DOCUMENT,
|
|
2
|
+
import { Directive, inject, DOCUMENT, ElementRef, NgZone, input, viewChild, signal, DestroyRef, afterRenderEffect, untracked, afterNextRender, ChangeDetectionStrategy, Component } from '@angular/core';
|
|
3
3
|
import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
|
|
4
|
-
import { ngDocZoneOptimize } from '@ng-doc/ui-kit/observables';
|
|
5
4
|
import { fromEvent, merge } from 'rxjs';
|
|
6
5
|
import { tap, map, pairwise, switchMap, takeUntil, take, filter, debounceTime } from 'rxjs/operators';
|
|
7
6
|
|
|
7
|
+
/** Marks the content in front of an `ng-doc-pane` (the right side). */
|
|
8
8
|
class NgDocPaneFrontDirective {
|
|
9
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
10
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "
|
|
9
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.2.1", ngImport: i0, type: NgDocPaneFrontDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
10
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "22.2.1", type: NgDocPaneFrontDirective, isStandalone: true, selector: "[ngDocPaneFront]", ngImport: i0 }); }
|
|
11
11
|
}
|
|
12
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
12
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.2.1", ngImport: i0, type: NgDocPaneFrontDirective, decorators: [{
|
|
13
13
|
type: Directive,
|
|
14
14
|
args: [{
|
|
15
15
|
selector: '[ngDocPaneFront]',
|
|
16
|
-
standalone: true,
|
|
17
16
|
}]
|
|
18
17
|
}] });
|
|
18
|
+
/** Marks the content behind an `ng-doc-pane` (the left side, revealed by dragging). */
|
|
19
19
|
class NgDocPaneBackDirective {
|
|
20
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
21
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "
|
|
20
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.2.1", ngImport: i0, type: NgDocPaneBackDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
21
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "22.2.1", type: NgDocPaneBackDirective, isStandalone: true, selector: "[ngDocPaneBack]", ngImport: i0 }); }
|
|
22
22
|
}
|
|
23
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
23
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.2.1", ngImport: i0, type: NgDocPaneBackDirective, decorators: [{
|
|
24
24
|
type: Directive,
|
|
25
25
|
args: [{
|
|
26
26
|
selector: '[ngDocPaneBack]',
|
|
27
|
-
standalone: true,
|
|
28
27
|
}]
|
|
29
28
|
}] });
|
|
29
|
+
/** The share of the pane a keyboard step moves the resizer by. */
|
|
30
|
+
const KEYBOARD_STEP = 0.1;
|
|
31
|
+
/**
|
|
32
|
+
* Two panes side by side with a resizer between them. Drag the resizer, click it or use the
|
|
33
|
+
* arrow keys on it to reveal the back pane; Enter or Space toggles it.
|
|
34
|
+
*/
|
|
30
35
|
class NgDocPaneComponent {
|
|
31
36
|
constructor() {
|
|
32
37
|
this.document = inject(DOCUMENT);
|
|
33
|
-
this.changeDetectorRef = inject(ChangeDetectorRef);
|
|
34
38
|
this.elementRef = inject(ElementRef);
|
|
35
39
|
this.ngZone = inject(NgZone);
|
|
36
|
-
|
|
37
|
-
this.
|
|
38
|
-
|
|
40
|
+
/** Whether the back pane is revealed. */
|
|
41
|
+
this.expanded = input(false, /* @ts-ignore */
|
|
42
|
+
...(ngDevMode ? [{ debugName: "expanded" }] : /* istanbul ignore next */ []));
|
|
43
|
+
/** The resizer between the panes. */
|
|
44
|
+
this.resizer = viewChild.required('resizer', /* @ts-ignore */
|
|
45
|
+
...(ngDevMode ? [{ debugName: "resizer" }] : /* istanbul ignore next */ []));
|
|
46
|
+
/** Width of the back pane, as a CSS length. */
|
|
47
|
+
this.width = signal('0px', /* @ts-ignore */
|
|
48
|
+
...(ngDevMode ? [{ debugName: "width" }] : /* istanbul ignore next */ []));
|
|
49
|
+
/** Share of the pane the back pane takes, in percent, for assistive technology. */
|
|
50
|
+
this.valueNow = signal(0, /* @ts-ignore */
|
|
51
|
+
...(ngDevMode ? [{ debugName: "valueNow" }] : /* istanbul ignore next */ []));
|
|
52
|
+
/** Whether the resizer is being dragged. */
|
|
53
|
+
this.dragging = signal(false, /* @ts-ignore */
|
|
54
|
+
...(ngDevMode ? [{ debugName: "dragging" }] : /* istanbul ignore next */ []));
|
|
39
55
|
const destroyRef = inject(DestroyRef);
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
this.dragging = false;
|
|
48
|
-
this.changeDetectorRef.markForCheck();
|
|
49
|
-
}));
|
|
50
|
-
const mouseMove$ = fromEvent(this.document, 'mousemove').pipe(map((event) => event.clientX), pairwise(), map(([prev, next]) => next - prev));
|
|
51
|
-
mouseDown$
|
|
52
|
-
.pipe(switchMap(() => {
|
|
53
|
-
const dragEvent$ = mouseMove$.pipe(takeUntil(mouseUp$));
|
|
54
|
-
const clickEvent$ = mouseUp$.pipe(map(() => null), takeUntil(mouseMove$), take(1));
|
|
55
|
-
return merge(dragEvent$, clickEvent$);
|
|
56
|
-
}), filter((delta) => delta !== 0), ngDocZoneOptimize(this.ngZone), takeUntilDestroyed(destroyRef))
|
|
57
|
-
.subscribe((delta) => {
|
|
58
|
-
delta === null ? this.toggle() : this.addDelta(delta);
|
|
56
|
+
// Opens or closes the back pane when `expanded` changes; it measures, so it runs after render.
|
|
57
|
+
afterRenderEffect({
|
|
58
|
+
write: () => {
|
|
59
|
+
const expanded = this.expanded();
|
|
60
|
+
untracked(() => {
|
|
61
|
+
const width = this.elementRef.nativeElement.offsetWidth;
|
|
62
|
+
this.addDelta(expanded ? width : -width);
|
|
59
63
|
});
|
|
60
|
-
}
|
|
61
|
-
|
|
62
|
-
|
|
64
|
+
},
|
|
65
|
+
});
|
|
66
|
+
// Pointer and resize events arrive often; they are handled outside the Angular zone, and the
|
|
67
|
+
// signals they write schedule the render.
|
|
68
|
+
afterNextRender(() => this.ngZone.runOutsideAngular(() => {
|
|
69
|
+
const resizer = this.resizer().nativeElement;
|
|
70
|
+
const mouseDown$ = fromEvent(resizer, 'mousedown').pipe(tap(() => this.dragging.set(true)));
|
|
71
|
+
const mouseUp$ = fromEvent(this.document, 'mouseup').pipe(tap(() => this.dragging.set(false)));
|
|
72
|
+
const mouseMove$ = fromEvent(this.document, 'mousemove').pipe(map((event) => event.clientX), pairwise(), map(([prev, next]) => next - prev));
|
|
73
|
+
mouseDown$
|
|
74
|
+
.pipe(switchMap(() => merge(mouseMove$.pipe(takeUntil(mouseUp$)), mouseUp$.pipe(map(() => null), takeUntil(mouseMove$), take(1)))), filter((delta) => delta !== 0), takeUntilDestroyed(destroyRef))
|
|
75
|
+
.subscribe((delta) => delta === null ? this.toggle() : this.addDelta(delta));
|
|
76
|
+
fromEvent(this.document.defaultView ?? window, 'resize')
|
|
77
|
+
.pipe(debounceTime(100), takeUntilDestroyed(destroyRef))
|
|
63
78
|
.subscribe(() => this.addDelta(0));
|
|
79
|
+
}));
|
|
80
|
+
}
|
|
81
|
+
/** Reveals the back pane when it is mostly hidden, and hides it otherwise. */
|
|
82
|
+
toggle() {
|
|
83
|
+
untracked(() => {
|
|
84
|
+
const width = this.elementRef.nativeElement.offsetWidth;
|
|
85
|
+
this.addDelta(this.resizer().nativeElement.offsetLeft < width / 2 ? width : -width);
|
|
64
86
|
});
|
|
65
|
-
this.addDelta(0);
|
|
66
87
|
}
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
88
|
+
/**
|
|
89
|
+
* Moves the resizer with the keyboard.
|
|
90
|
+
* @param event - The key press on the resizer.
|
|
91
|
+
*/
|
|
92
|
+
onKeydown(event) {
|
|
93
|
+
const step = this.elementRef.nativeElement.offsetWidth * KEYBOARD_STEP;
|
|
94
|
+
const width = this.elementRef.nativeElement.offsetWidth;
|
|
95
|
+
const delta = {
|
|
96
|
+
ArrowRight: step,
|
|
97
|
+
ArrowLeft: -step,
|
|
98
|
+
Home: -width,
|
|
99
|
+
End: width,
|
|
100
|
+
}[event.key];
|
|
101
|
+
if (delta !== undefined) {
|
|
102
|
+
event.preventDefault();
|
|
103
|
+
this.addDelta(delta);
|
|
72
104
|
}
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
const middle = this.elementRef.nativeElement.offsetWidth / 2;
|
|
77
|
-
if (this.resizer.nativeElement.offsetLeft < middle) {
|
|
78
|
-
this.addDelta(this.elementRef.nativeElement.offsetWidth);
|
|
79
|
-
}
|
|
80
|
-
else {
|
|
81
|
-
this.addDelta(-this.elementRef.nativeElement.offsetWidth);
|
|
82
|
-
}
|
|
105
|
+
else if (event.key === 'Enter' || event.key === ' ') {
|
|
106
|
+
event.preventDefault();
|
|
107
|
+
this.toggle();
|
|
83
108
|
}
|
|
84
109
|
}
|
|
85
110
|
addDelta(delta) {
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
111
|
+
const host = this.elementRef.nativeElement;
|
|
112
|
+
const resizer = this.resizer()?.nativeElement;
|
|
113
|
+
if (resizer) {
|
|
114
|
+
const maxWidth = host.offsetWidth - resizer.offsetWidth;
|
|
115
|
+
const width = Math.min(maxWidth, Math.max(0, resizer.offsetLeft + delta));
|
|
116
|
+
this.width.set(`${width}px`);
|
|
117
|
+
this.valueNow.set(maxWidth > 0 ? Math.round((width / maxWidth) * 100) : 0);
|
|
90
118
|
}
|
|
91
119
|
}
|
|
92
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
93
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "
|
|
120
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.2.1", ngImport: i0, type: NgDocPaneComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
121
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "22.2.1", type: NgDocPaneComponent, isStandalone: true, selector: "ng-doc-pane", inputs: { expanded: { classPropertyName: "expanded", publicName: "expanded", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "attr.data-ng-doc-dragging": "dragging()" } }, viewQueries: [{ propertyName: "resizer", first: true, predicate: ["resizer"], descendants: true, isSignal: true }], ngImport: i0, template: "<div class=\"ng-doc-pane-back\" [style.width]=\"width()\">\n <div class=\"ng-doc-pane-content\">\n <ng-content select=\"[ngDocPaneBack]\"></ng-content>\n </div>\n</div>\n<div\n class=\"ng-doc-pane-resizer\"\n role=\"separator\"\n aria-orientation=\"vertical\"\n aria-label=\"Resize the panes\"\n aria-valuemin=\"0\"\n aria-valuemax=\"100\"\n [attr.aria-valuenow]=\"valueNow()\"\n tabindex=\"0\"\n (keydown)=\"onKeydown($event)\"\n #resizer></div>\n<div class=\"ng-doc-pane-front\">\n <div class=\"ng-doc-pane-content\">\n <ng-content select=\"[ngDocPaneFront]\"></ng-content>\n </div>\n</div>\n", styles: [":host{position:relative;display:flex;width:100%;border-radius:var(--ng-doc-pane-border-radius, var(--ng-doc-base-gutter));border:var(--ng-doc-pane-border, 1px solid var(--ng-doc-border-color));overflow:hidden}:host[data-ng-doc-dragging=false] .ng-doc-pane-back{transition:var(--ng-doc-transition) width}:host .ng-doc-pane-front{position:relative;display:flex;width:100%;background-color:var(--ng-doc-pane-front-background, var(--ng-doc-pane-background, var(--ng-doc-base-1)));overflow:hidden;border-top-right-radius:var(--ng-doc-base-gutter);border-bottom-right-radius:var(--ng-doc-base-gutter);border:var(--ng-doc-pane-front-border, var(--ng-doc-pane-border))}:host .ng-doc-pane-back{position:relative;display:flex;flex-shrink:0;width:100%;background-color:var(--ng-doc-pane-back-background, var(--ng-doc-pane-background, var(--ng-doc-base-1)));overflow:hidden;border-top-left-radius:var(--ng-doc-base-gutter);border-bottom-left-radius:var(--ng-doc-base-gutter);border:var(--ng-doc-pane-back-border, var(--ng-doc-pane-border))}:host .ng-doc-pane-resizer{position:relative;flex-shrink:0;transform:translateZ(0);background-color:var(--ng-doc-base-3);width:16px;display:block;cursor:ew-resize}:host .ng-doc-pane-resizer:focus-visible{outline:none;box-shadow:inset 0 0 0 2px var(--ng-doc-focus-ring-color)}:host .ng-doc-pane-resizer:after{content:\"\";display:flex;background:var(--ng-doc-base-10);border-radius:50px;position:absolute;width:4px;height:20%;top:50%;left:50%;transform:translateY(-50%) translate(-50%);opacity:1;transition:var(--ng-doc-transition) height}:host .ng-doc-pane-content{display:flex;align-items:center;justify-content:center;flex-shrink:0;width:100%;height:100%;min-width:var(--ng-doc-pane-content-min-width, 200px)}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
94
122
|
}
|
|
95
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
123
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.2.1", ngImport: i0, type: NgDocPaneComponent, decorators: [{
|
|
96
124
|
type: Component,
|
|
97
|
-
args: [{ selector: 'ng-doc-pane', changeDetection: ChangeDetectionStrategy.OnPush,
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
type: ViewChild,
|
|
102
|
-
args: ['resizer', { static: true }]
|
|
103
|
-
}], dragging: [{
|
|
104
|
-
type: HostBinding,
|
|
105
|
-
args: ['attr.data-ng-doc-dragging']
|
|
106
|
-
}] } });
|
|
125
|
+
args: [{ selector: 'ng-doc-pane', changeDetection: ChangeDetectionStrategy.OnPush, host: {
|
|
126
|
+
'[attr.data-ng-doc-dragging]': 'dragging()',
|
|
127
|
+
}, template: "<div class=\"ng-doc-pane-back\" [style.width]=\"width()\">\n <div class=\"ng-doc-pane-content\">\n <ng-content select=\"[ngDocPaneBack]\"></ng-content>\n </div>\n</div>\n<div\n class=\"ng-doc-pane-resizer\"\n role=\"separator\"\n aria-orientation=\"vertical\"\n aria-label=\"Resize the panes\"\n aria-valuemin=\"0\"\n aria-valuemax=\"100\"\n [attr.aria-valuenow]=\"valueNow()\"\n tabindex=\"0\"\n (keydown)=\"onKeydown($event)\"\n #resizer></div>\n<div class=\"ng-doc-pane-front\">\n <div class=\"ng-doc-pane-content\">\n <ng-content select=\"[ngDocPaneFront]\"></ng-content>\n </div>\n</div>\n", styles: [":host{position:relative;display:flex;width:100%;border-radius:var(--ng-doc-pane-border-radius, var(--ng-doc-base-gutter));border:var(--ng-doc-pane-border, 1px solid var(--ng-doc-border-color));overflow:hidden}:host[data-ng-doc-dragging=false] .ng-doc-pane-back{transition:var(--ng-doc-transition) width}:host .ng-doc-pane-front{position:relative;display:flex;width:100%;background-color:var(--ng-doc-pane-front-background, var(--ng-doc-pane-background, var(--ng-doc-base-1)));overflow:hidden;border-top-right-radius:var(--ng-doc-base-gutter);border-bottom-right-radius:var(--ng-doc-base-gutter);border:var(--ng-doc-pane-front-border, var(--ng-doc-pane-border))}:host .ng-doc-pane-back{position:relative;display:flex;flex-shrink:0;width:100%;background-color:var(--ng-doc-pane-back-background, var(--ng-doc-pane-background, var(--ng-doc-base-1)));overflow:hidden;border-top-left-radius:var(--ng-doc-base-gutter);border-bottom-left-radius:var(--ng-doc-base-gutter);border:var(--ng-doc-pane-back-border, var(--ng-doc-pane-border))}:host .ng-doc-pane-resizer{position:relative;flex-shrink:0;transform:translateZ(0);background-color:var(--ng-doc-base-3);width:16px;display:block;cursor:ew-resize}:host .ng-doc-pane-resizer:focus-visible{outline:none;box-shadow:inset 0 0 0 2px var(--ng-doc-focus-ring-color)}:host .ng-doc-pane-resizer:after{content:\"\";display:flex;background:var(--ng-doc-base-10);border-radius:50px;position:absolute;width:4px;height:20%;top:50%;left:50%;transform:translateY(-50%) translate(-50%);opacity:1;transition:var(--ng-doc-transition) height}:host .ng-doc-pane-content{display:flex;align-items:center;justify-content:center;flex-shrink:0;width:100%;height:100%;min-width:var(--ng-doc-pane-content-min-width, 200px)}\n"] }]
|
|
128
|
+
}], ctorParameters: () => [], propDecorators: { expanded: [{ type: i0.Input, args: [{ isSignal: true, alias: "expanded", required: false }] }], resizer: [{ type: i0.ViewChild, args: ['resizer', { isSignal: true }] }] } });
|
|
107
129
|
|
|
108
130
|
/**
|
|
109
131
|
* Generated bundle index. Do not edit.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ng-doc-ui-kit-components-pane.mjs","sources":["../../../../libs/ui-kit/components/pane/pane.component.ts","../../../../libs/ui-kit/components/pane/pane.component.html","../../../../libs/ui-kit/components/pane/ng-doc-ui-kit-components-pane.ts"],"sourcesContent":["import {\n afterNextRender,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n DestroyRef,\n Directive,\n DOCUMENT,\n ElementRef,\n HostBinding,\n inject,\n Input,\n NgZone,\n OnChanges,\n SimpleChanges,\n ViewChild,\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { ngDocZoneOptimize } from '@ng-doc/ui-kit/observables';\nimport { fromEvent, merge, Observable } from 'rxjs';\nimport {\n debounceTime,\n filter,\n map,\n pairwise,\n switchMap,\n take,\n takeUntil,\n tap,\n} from 'rxjs/operators';\n\n@Directive({\n selector: '[ngDocPaneFront]',\n standalone: true,\n})\nexport class NgDocPaneFrontDirective {}\n\n@Directive({\n selector: '[ngDocPaneBack]',\n standalone: true,\n})\nexport class NgDocPaneBackDirective {}\n\n@Component({\n selector: 'ng-doc-pane',\n templateUrl: './pane.component.html',\n styleUrls: ['./pane.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n})\nexport class NgDocPaneComponent implements OnChanges {\n private readonly document = inject<Document>(DOCUMENT);\n private readonly changeDetectorRef = inject(ChangeDetectorRef);\n private readonly elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n private readonly ngZone = inject(NgZone);\n\n @Input()\n expanded: boolean = false;\n\n @ViewChild('resizer', { static: true })\n resizer?: ElementRef<HTMLElement>;\n\n width: string = '0%';\n\n @HostBinding('attr.data-ng-doc-dragging')\n dragging: boolean = false;\n\n constructor() {\n const destroyRef = inject(DestroyRef);\n\n afterNextRender(() => {\n if (this.resizer) {\n const mouseDown$ = fromEvent(this.resizer.nativeElement, 'mousedown').pipe(\n tap(() => {\n this.dragging = true;\n this.changeDetectorRef.markForCheck();\n }),\n );\n\n const mouseUp$ = fromEvent(this.document, 'mouseup').pipe(\n tap(() => {\n this.dragging = false;\n this.changeDetectorRef.markForCheck();\n }),\n );\n\n const mouseMove$ = (fromEvent(this.document, 'mousemove') as Observable<MouseEvent>).pipe(\n map((event: MouseEvent) => event.clientX),\n pairwise(),\n map(([prev, next]: [number, number]) => next - prev),\n );\n\n mouseDown$\n .pipe(\n switchMap(() => {\n const dragEvent$ = mouseMove$.pipe(takeUntil(mouseUp$));\n\n const clickEvent$ = mouseUp$.pipe(\n map(() => null),\n takeUntil(mouseMove$),\n take(1),\n );\n\n return merge(dragEvent$, clickEvent$);\n }),\n filter((delta: number | null) => delta !== 0),\n ngDocZoneOptimize(this.ngZone),\n takeUntilDestroyed(destroyRef),\n )\n .subscribe((delta: number | null) => {\n delta === null ? this.toggle() : this.addDelta(delta);\n });\n }\n\n fromEvent(window, 'resize')\n .pipe(debounceTime(100), ngDocZoneOptimize(this.ngZone), takeUntilDestroyed(destroyRef))\n .subscribe(() => this.addDelta(0));\n });\n\n this.addDelta(0);\n }\n\n ngOnChanges({ expanded }: SimpleChanges): void {\n if (expanded) {\n expanded.currentValue\n ? this.addDelta(this.elementRef.nativeElement.offsetWidth)\n : this.addDelta(-this.elementRef.nativeElement.offsetWidth);\n }\n }\n\n toggle(): void {\n if (this.resizer) {\n const middle = this.elementRef.nativeElement.offsetWidth / 2;\n\n if (this.resizer.nativeElement.offsetLeft < middle) {\n this.addDelta(this.elementRef.nativeElement.offsetWidth);\n } else {\n this.addDelta(-this.elementRef.nativeElement.offsetWidth);\n }\n }\n }\n\n private addDelta(delta: number): void {\n if (this.resizer) {\n const maxWidth =\n this.elementRef.nativeElement.offsetWidth - this.resizer.nativeElement.offsetWidth;\n\n this.width = `${Math.min(\n maxWidth,\n Math.max(0, this.resizer.nativeElement.offsetLeft + delta),\n )}px`;\n\n this.changeDetectorRef.detectChanges();\n }\n }\n}\n","<div class=\"ng-doc-pane-back\" [style.width]=\"width\">\n\t<div class=\"ng-doc-pane-content\">\n\t\t<ng-content select=\"[ngDocPaneBack]\"></ng-content>\n\t</div>\n</div>\n<div class=\"ng-doc-pane-resizer\" #resizer></div>\n<div class=\"ng-doc-pane-front\">\n\t<div class=\"ng-doc-pane-content\">\n\t\t<ng-content select=\"[ngDocPaneFront]\"></ng-content>\n\t</div>\n</div>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;;;MAmCa,uBAAuB,CAAA;8GAAvB,uBAAuB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAAvB,uBAAuB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAAvB,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBAJnC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,kBAAkB;AAC5B,oBAAA,UAAU,EAAE,IAAI;AACjB,iBAAA;;MAOY,sBAAsB,CAAA;8GAAtB,sBAAsB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAAtB,sBAAsB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAAtB,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBAJlC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,iBAAiB;AAC3B,oBAAA,UAAU,EAAE,IAAI;AACjB,iBAAA;;MAUY,kBAAkB,CAAA;AAiB7B,IAAA,WAAA,GAAA;AAhBiB,QAAA,IAAA,CAAA,QAAQ,GAAG,MAAM,CAAW,QAAQ,CAAC;AACrC,QAAA,IAAA,CAAA,iBAAiB,GAAG,MAAM,CAAC,iBAAiB,CAAC;AAC7C,QAAA,IAAA,CAAA,UAAU,GAAG,MAAM,CAA0B,UAAU,CAAC;AACxD,QAAA,IAAA,CAAA,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;QAGxC,IAAA,CAAA,QAAQ,GAAY,KAAK;QAKzB,IAAA,CAAA,KAAK,GAAW,IAAI;QAGpB,IAAA,CAAA,QAAQ,GAAY,KAAK;AAGvB,QAAA,MAAM,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC;QAErC,eAAe,CAAC,MAAK;AACnB,YAAA,IAAI,IAAI,CAAC,OAAO,EAAE;AAChB,gBAAA,MAAM,UAAU,GAAG,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE,WAAW,CAAC,CAAC,IAAI,CACxE,GAAG,CAAC,MAAK;AACP,oBAAA,IAAI,CAAC,QAAQ,GAAG,IAAI;AACpB,oBAAA,IAAI,CAAC,iBAAiB,CAAC,YAAY,EAAE;gBACvC,CAAC,CAAC,CACH;AAED,gBAAA,MAAM,QAAQ,GAAG,SAAS,CAAC,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC,IAAI,CACvD,GAAG,CAAC,MAAK;AACP,oBAAA,IAAI,CAAC,QAAQ,GAAG,KAAK;AACrB,oBAAA,IAAI,CAAC,iBAAiB,CAAC,YAAY,EAAE;gBACvC,CAAC,CAAC,CACH;gBAED,MAAM,UAAU,GAAI,SAAS,CAAC,IAAI,CAAC,QAAQ,EAAE,WAAW,CAA4B,CAAC,IAAI,CACvF,GAAG,CAAC,CAAC,KAAiB,KAAK,KAAK,CAAC,OAAO,CAAC,EACzC,QAAQ,EAAE,EACV,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,IAAI,CAAmB,KAAK,IAAI,GAAG,IAAI,CAAC,CACrD;gBAED;AACG,qBAAA,IAAI,CACH,SAAS,CAAC,MAAK;oBACb,MAAM,UAAU,GAAG,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;oBAEvD,MAAM,WAAW,GAAG,QAAQ,CAAC,IAAI,CAC/B,GAAG,CAAC,MAAM,IAAI,CAAC,EACf,SAAS,CAAC,UAAU,CAAC,EACrB,IAAI,CAAC,CAAC,CAAC,CACR;AAED,oBAAA,OAAO,KAAK,CAAC,UAAU,EAAE,WAAW,CAAC;gBACvC,CAAC,CAAC,EACF,MAAM,CAAC,CAAC,KAAoB,KAAK,KAAK,KAAK,CAAC,CAAC,EAC7C,iBAAiB,CAAC,IAAI,CAAC,MAAM,CAAC,EAC9B,kBAAkB,CAAC,UAAU,CAAC;AAE/B,qBAAA,SAAS,CAAC,CAAC,KAAoB,KAAI;AAClC,oBAAA,KAAK,KAAK,IAAI,GAAG,IAAI,CAAC,MAAM,EAAE,GAAG,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC;AACvD,gBAAA,CAAC,CAAC;YACN;AAEA,YAAA,SAAS,CAAC,MAAM,EAAE,QAAQ;AACvB,iBAAA,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,EAAE,iBAAiB,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,kBAAkB,CAAC,UAAU,CAAC;iBACtF,SAAS,CAAC,MAAM,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;AACtC,QAAA,CAAC,CAAC;AAEF,QAAA,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC;IAClB;IAEA,WAAW,CAAC,EAAE,QAAQ,EAAiB,EAAA;QACrC,IAAI,QAAQ,EAAE;AACZ,YAAA,QAAQ,CAAC;AACP,kBAAE,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,WAAW;AACzD,kBAAE,IAAI,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,WAAW,CAAC;QAC/D;IACF;IAEA,MAAM,GAAA;AACJ,QAAA,IAAI,IAAI,CAAC,OAAO,EAAE;YAChB,MAAM,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,WAAW,GAAG,CAAC;YAE5D,IAAI,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,UAAU,GAAG,MAAM,EAAE;gBAClD,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,WAAW,CAAC;YAC1D;iBAAO;AACL,gBAAA,IAAI,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,WAAW,CAAC;YAC3D;QACF;IACF;AAEQ,IAAA,QAAQ,CAAC,KAAa,EAAA;AAC5B,QAAA,IAAI,IAAI,CAAC,OAAO,EAAE;AAChB,YAAA,MAAM,QAAQ,GACZ,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,WAAW;AAEpF,YAAA,IAAI,CAAC,KAAK,GAAG,CAAA,EAAG,IAAI,CAAC,GAAG,CACtB,QAAQ,EACR,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,UAAU,GAAG,KAAK,CAAC,CAC3D,CAAA,EAAA,CAAI;AAEL,YAAA,IAAI,CAAC,iBAAiB,CAAC,aAAa,EAAE;QACxC;IACF;8GAxGW,kBAAkB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAlB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,kBAAkB,wTClD/B,0XAWA,EAAA,MAAA,EAAA,CAAA,+lDAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;2FDuCa,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAP9B,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,aAAa,EAAA,eAAA,EAGN,uBAAuB,CAAC,MAAM,cACnC,IAAI,EAAA,QAAA,EAAA,0XAAA,EAAA,MAAA,EAAA,CAAA,+lDAAA,CAAA,EAAA;;sBAQf;;sBAGA,SAAS;AAAC,gBAAA,IAAA,EAAA,CAAA,SAAS,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE;;sBAKrC,WAAW;uBAAC,2BAA2B;;;AEhE1C;;AAEG;;;;"}
|
|
1
|
+
{"version":3,"file":"ng-doc-ui-kit-components-pane.mjs","sources":["../../../../libs/ui-kit/components/pane/pane.component.ts","../../../../libs/ui-kit/components/pane/pane.component.html","../../../../libs/ui-kit/components/pane/ng-doc-ui-kit-components-pane.ts"],"sourcesContent":["import {\n afterNextRender,\n afterRenderEffect,\n ChangeDetectionStrategy,\n Component,\n DestroyRef,\n Directive,\n DOCUMENT,\n ElementRef,\n inject,\n input,\n NgZone,\n signal,\n untracked,\n viewChild,\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { fromEvent, merge, Observable } from 'rxjs';\nimport {\n debounceTime,\n filter,\n map,\n pairwise,\n switchMap,\n take,\n takeUntil,\n tap,\n} from 'rxjs/operators';\n\n/** Marks the content in front of an `ng-doc-pane` (the right side). */\n@Directive({\n selector: '[ngDocPaneFront]',\n})\nexport class NgDocPaneFrontDirective {}\n\n/** Marks the content behind an `ng-doc-pane` (the left side, revealed by dragging). */\n@Directive({\n selector: '[ngDocPaneBack]',\n})\nexport class NgDocPaneBackDirective {}\n\n/** The share of the pane a keyboard step moves the resizer by. */\nconst KEYBOARD_STEP = 0.1;\n\n/**\n * Two panes side by side with a resizer between them. Drag the resizer, click it or use the\n * arrow keys on it to reveal the back pane; Enter or Space toggles it.\n */\n@Component({\n selector: 'ng-doc-pane',\n templateUrl: './pane.component.html',\n styleUrls: ['./pane.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[attr.data-ng-doc-dragging]': 'dragging()',\n },\n})\nexport class NgDocPaneComponent {\n private readonly document = inject<Document>(DOCUMENT);\n private readonly elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n private readonly ngZone = inject(NgZone);\n\n /** Whether the back pane is revealed. */\n readonly expanded = input<boolean>(false);\n\n /** The resizer between the panes. */\n readonly resizer = viewChild.required<ElementRef<HTMLElement>>('resizer');\n\n /** Width of the back pane, as a CSS length. */\n readonly width = signal<string>('0px');\n\n /** Share of the pane the back pane takes, in percent, for assistive technology. */\n protected readonly valueNow = signal<number>(0);\n\n /** Whether the resizer is being dragged. */\n protected readonly dragging = signal<boolean>(false);\n\n constructor() {\n const destroyRef = inject(DestroyRef);\n\n // Opens or closes the back pane when `expanded` changes; it measures, so it runs after render.\n afterRenderEffect({\n write: () => {\n const expanded: boolean = this.expanded();\n\n untracked(() => {\n const width: number = this.elementRef.nativeElement.offsetWidth;\n\n this.addDelta(expanded ? width : -width);\n });\n },\n });\n\n // Pointer and resize events arrive often; they are handled outside the Angular zone, and the\n // signals they write schedule the render.\n afterNextRender(() =>\n this.ngZone.runOutsideAngular(() => {\n const resizer: HTMLElement = this.resizer().nativeElement;\n const mouseDown$ = fromEvent(resizer, 'mousedown').pipe(tap(() => this.dragging.set(true)));\n const mouseUp$ = fromEvent(this.document, 'mouseup').pipe(\n tap(() => this.dragging.set(false)),\n );\n const mouseMove$ = (fromEvent(this.document, 'mousemove') as Observable<MouseEvent>).pipe(\n map((event: MouseEvent) => event.clientX),\n pairwise(),\n map(([prev, next]: [number, number]) => next - prev),\n );\n\n mouseDown$\n .pipe(\n switchMap(() =>\n merge(\n mouseMove$.pipe(takeUntil(mouseUp$)),\n mouseUp$.pipe(\n map(() => null),\n takeUntil(mouseMove$),\n take(1),\n ),\n ),\n ),\n filter((delta: number | null) => delta !== 0),\n takeUntilDestroyed(destroyRef),\n )\n .subscribe((delta: number | null) =>\n delta === null ? this.toggle() : this.addDelta(delta),\n );\n\n fromEvent(this.document.defaultView ?? window, 'resize')\n .pipe(debounceTime(100), takeUntilDestroyed(destroyRef))\n .subscribe(() => this.addDelta(0));\n }),\n );\n }\n\n /** Reveals the back pane when it is mostly hidden, and hides it otherwise. */\n toggle(): void {\n untracked(() => {\n const width: number = this.elementRef.nativeElement.offsetWidth;\n\n this.addDelta(this.resizer().nativeElement.offsetLeft < width / 2 ? width : -width);\n });\n }\n\n /**\n * Moves the resizer with the keyboard.\n * @param event - The key press on the resizer.\n */\n protected onKeydown(event: KeyboardEvent): void {\n const step: number = this.elementRef.nativeElement.offsetWidth * KEYBOARD_STEP;\n const width: number = this.elementRef.nativeElement.offsetWidth;\n const delta: number | undefined = {\n ArrowRight: step,\n ArrowLeft: -step,\n Home: -width,\n End: width,\n }[event.key];\n\n if (delta !== undefined) {\n event.preventDefault();\n this.addDelta(delta);\n } else if (event.key === 'Enter' || event.key === ' ') {\n event.preventDefault();\n this.toggle();\n }\n }\n\n private addDelta(delta: number): void {\n const host: HTMLElement = this.elementRef.nativeElement;\n const resizer: HTMLElement | undefined = this.resizer()?.nativeElement;\n\n if (resizer) {\n const maxWidth: number = host.offsetWidth - resizer.offsetWidth;\n const width: number = Math.min(maxWidth, Math.max(0, resizer.offsetLeft + delta));\n\n this.width.set(`${width}px`);\n this.valueNow.set(maxWidth > 0 ? Math.round((width / maxWidth) * 100) : 0);\n }\n }\n}\n","<div class=\"ng-doc-pane-back\" [style.width]=\"width()\">\n <div class=\"ng-doc-pane-content\">\n <ng-content select=\"[ngDocPaneBack]\"></ng-content>\n </div>\n</div>\n<div\n class=\"ng-doc-pane-resizer\"\n role=\"separator\"\n aria-orientation=\"vertical\"\n aria-label=\"Resize the panes\"\n aria-valuemin=\"0\"\n aria-valuemax=\"100\"\n [attr.aria-valuenow]=\"valueNow()\"\n tabindex=\"0\"\n (keydown)=\"onKeydown($event)\"\n #resizer></div>\n<div class=\"ng-doc-pane-front\">\n <div class=\"ng-doc-pane-content\">\n <ng-content select=\"[ngDocPaneFront]\"></ng-content>\n </div>\n</div>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|