{"version":3,"file":"koobiq-components-actions-panel.mjs","sources":["../../../packages/components/actions-panel/actions-panel-config.ts","../../../packages/components/actions-panel/actions-panel-container.ts","../../../packages/components/actions-panel/actions-panel-ref.ts","../../../packages/components/actions-panel/actions-panel.ts","../../../packages/components/actions-panel/module.ts","../../../packages/components/actions-panel/koobiq-components-actions-panel.ts"],"sourcesContent":["import { Direction } from '@angular/cdk/bidi';\nimport { Overlay, ScrollStrategy } from '@angular/cdk/overlay';\nimport { ElementRef, InjectionToken, Injector, Provider } from '@angular/core';\n\n/** Injection token that can be used to specify default actions panel config. */\nexport const KBQ_ACTIONS_PANEL_DEFAULT_CONFIG = new InjectionToken<KbqActionsPanelConfig>(\n    'KBQ_ACTIONS_PANEL_DEFAULT_CONFIG',\n    { factory: () => new KbqActionsPanelConfig() }\n);\n\n/**\n * Utility for providing default actions panel config.\n *\n * @see `KBQ_ACTIONS_PANEL_DEFAULT_CONFIG`\n */\nexport const kbqActionsPanelDefaultConfigProvider = <D>(config: KbqActionsPanelConfig<D>): Provider => ({\n    provide: KBQ_ACTIONS_PANEL_DEFAULT_CONFIG,\n    useValue: config\n});\n\n/**\n * Configuration for opened actions panel.\n * Based on cdk `DialogConfig`.\n *\n * @see `DialogConfig`\n *\n */\nexport class KbqActionsPanelConfig<D = unknown> {\n    /**\n     * Injector used for the instantiation of the component to be attached.\n     */\n    injector?: Injector;\n\n    /**\n     * Data being injected into the child component.\n     *\n     * @see `KBQ_ACTIONS_PANEL_DATA`\n     */\n    data?: D | null = null;\n\n    /** Extra CSS classes to be added to the actions panel container. */\n    containerClass?: string | string[];\n\n    /**\n     * Whether the actions panel should be closed of when the user goes backwards/forwards in history.\n     * NOTE! This does not apply to router navigation.\n     *\n     * @default true\n     */\n    closeOnNavigation?: boolean = true;\n\n    /**\n     * Element in which the actions panel overlay will be connected to.\n     */\n    overlayContainer?: ElementRef<HTMLElement>;\n\n    /**\n     * Extra CSS classes to be added to the overlay panel.\n     */\n    overlayPanelClass?: string | string[];\n\n    /**\n     * Width of the actions panel.\n     */\n    width?: string;\n\n    /**\n     * Min-width of the actions panel.\n     * If a number is provided, assumes pixel units.\n     */\n    minWidth?: number | string;\n\n    /**\n     * Max-width of the actions panel.\n     * If a number is provided, assumes pixel units.\n     *\n     * NOTE: this property is ignored if the `overlayContainer` property is provided, and will be calculated based on\n     * the width of the `overlayContainer`.\n     */\n    maxWidth?: number | string;\n\n    /**\n     * Direction of the text in the actions panel.\n     *\n     * @default 'ltr'\n     */\n    direction?: Direction = 'ltr';\n\n    /**\n     * Scroll strategy to be used for the actions panel.\n     *\n     * @default `RepositionScrollStrategy`\n     */\n    scrollStrategy?: (overlay: Overlay) => ScrollStrategy = (overlay) => overlay.scrollStrategies.reposition();\n\n    /**\n     * Whether the user can use ESC or click on close button to close the actions panel.\n     *\n     * @default false\n     */\n    disableClose?: boolean = false;\n}\n","import {\n    animate,\n    animateChild,\n    AnimationEvent,\n    group,\n    query,\n    state,\n    style,\n    transition,\n    trigger\n} from '@angular/animations';\nimport { CdkDialogContainer } from '@angular/cdk/dialog';\nimport { CdkPortalOutlet } from '@angular/cdk/portal';\nimport {\n    ChangeDetectionStrategy,\n    Component,\n    EventEmitter,\n    inject,\n    InjectionToken,\n    OnDestroy,\n    Provider,\n    Renderer2,\n    ViewEncapsulation\n} from '@angular/core';\nimport { toSignal } from '@angular/core/rxjs-interop';\nimport { KbqButtonModule } from '@koobiq/components/button';\nimport {\n    KBQ_LOCALE_SERVICE,\n    KbqActionsPanelLocaleConfiguration,\n    KbqAnimationCurves,\n    KbqAnimationDurations,\n    ruRULocaleData\n} from '@koobiq/components/core';\nimport { KbqDividerModule } from '@koobiq/components/divider';\nimport { KbqIconModule } from '@koobiq/components/icon';\nimport { KbqToolTipModule } from '@koobiq/components/tooltip';\nimport { map, of } from 'rxjs';\nimport { KbqActionsPanel } from './actions-panel';\nimport { KbqActionsPanelConfig } from './actions-panel-config';\n\n/** Localization configuration provider. */\nexport const KBQ_ACTIONS_PANEL_LOCALE_CONFIGURATION = new InjectionToken<KbqActionsPanelLocaleConfiguration>(\n    'KBQ_ACTIONS_PANEL_LOCALE_CONFIGURATION',\n    { factory: () => ruRULocaleData.actionsPanel }\n);\n\n/** Utility provider for `KBQ_ACTIONS_PANEL_LOCALE_CONFIGURATION`. */\nexport const kbqActionsPanelLocaleConfigurationProvider = (\n    configuration: KbqActionsPanelLocaleConfiguration\n): Provider => ({\n    provide: KBQ_ACTIONS_PANEL_LOCALE_CONFIGURATION,\n    useValue: configuration\n});\n\n/**\n * Animation that shows and hides the actions panel.\n */\nconst KBQ_ACTIONS_PANEL_CONTAINER_ANIMATION = trigger('state', [\n    state('void, hidden', style({ transform: 'translateY(100%)' })),\n    state('visible', style({ transform: 'translateY(0%)' })),\n    transition(\n        'visible => void, visible => hidden',\n        group([\n            animate(`${KbqAnimationDurations.Entering} ${KbqAnimationCurves.StandardCurve}`),\n            query('@*', animateChild(), { optional: true })\n        ])\n    ),\n    transition(\n        'void => visible',\n        group([\n            animate(`${KbqAnimationDurations.Exiting} ${KbqAnimationCurves.StandardCurve}`),\n            query('@*', animateChild(), { optional: true })\n        ])\n    )\n]);\n\n/**\n * Internal component that wraps user-provided actions panel content.\n *\n * @docs-private\n */\n@Component({\n    selector: 'kbq-actions-panel-container',\n    imports: [\n        CdkPortalOutlet,\n        KbqDividerModule,\n        KbqButtonModule,\n        KbqIconModule,\n        KbqToolTipModule\n    ],\n    template: `\n        <div class=\"kbq-actions-panel-container__content\">\n            <ng-template cdkPortalOutlet />\n        </div>\n        @if (!config.disableClose) {\n            <kbq-divider class=\"kbq-actions-panel-container__vertical-divider\" [vertical]=\"true\" />\n            <button\n                class=\"kbq-actions-panel-container__close-button\"\n                color=\"contrast\"\n                kbq-button\n                [kbqTooltip]=\"localeConfiguration()!.closeTooltip\"\n                [kbqTooltipOffset]=\"16\"\n                (click)=\"close()\"\n            >\n                <i kbq-icon=\"kbq-circle-xmark_16\"></i>\n            </button>\n        }\n    `,\n    styleUrls: [\n        './actions-panel-tokens.scss',\n        './actions-panel-container.scss'\n    ],\n    encapsulation: ViewEncapsulation.None,\n    // Uses the `Default` change detection strategy as parent `CdkDialogContainer`:\n    // https://github.com/angular/components/blob/18.2.14/src/cdk/dialog/dialog-container.ts#L60\n    changeDetection: ChangeDetectionStrategy.Default,\n    animations: [KBQ_ACTIONS_PANEL_CONTAINER_ANIMATION],\n    host: {\n        class: 'kbq-actions-panel-container',\n        '[class.kbq-actions-panel-container_rtl]': 'config.direction === \"rtl\"',\n        '[@state]': 'animationState',\n        '(@state.start)': 'onAnimationStart($event)',\n        '(@state.done)': 'onAnimationDone($event)',\n        '(keydown.escape)': 'handleEscape($event)'\n    }\n})\nexport class KbqActionsPanelContainer extends CdkDialogContainer implements OnDestroy {\n    /**\n     * The state of the actions panel animations.\n     *\n     * @docs-private\n     */\n    protected animationState: 'void' | 'visible' | 'hidden' = 'void';\n\n    /**\n     * Emits whenever the state of the animation changes.\n     *\n     * @docs-private\n     */\n    readonly animationStateChanged = new EventEmitter<AnimationEvent>();\n\n    /** Whether the actions panel container has been destroyed. */\n    private destroyed: boolean;\n\n    /**\n     * Actions panel configuration.\n     *\n     * @docs-private\n     */\n    protected readonly config = inject(KbqActionsPanelConfig);\n\n    private readonly actionsPanel = inject(KbqActionsPanel);\n    private readonly renderer = inject(Renderer2);\n    private readonly localeService = inject(KBQ_LOCALE_SERVICE, { optional: true });\n\n    /**\n     * Actions panel locale configuration.\n     *\n     * @docs-private\n     */\n    protected readonly localeConfiguration = toSignal<KbqActionsPanelLocaleConfiguration>(\n        this.localeService\n            ? this.localeService.changes.pipe(map(() => this.localeService!.getParams('actionsPanel')))\n            : of(inject(KBQ_ACTIONS_PANEL_LOCALE_CONFIGURATION))\n    );\n\n    override ngOnDestroy() {\n        super.ngOnDestroy();\n        this.destroyed = true;\n    }\n\n    /**\n     * Close the actions panel.\n     *\n     * @docs-private\n     */\n    protected close(): void {\n        this.actionsPanel.close();\n    }\n\n    /**\n     * Start animation of the actions panel entrance into view.\n     *\n     * @docs-private\n     */\n    startOpenAnimation(): void {\n        if (!this.destroyed) {\n            this.animationState = 'visible';\n            // animationState lives in host bindings and `detectChanges` does not refresh host bindings  so we have to\n            // call `markForCheck` to ensure the host view is refreshed eventually.\n            this._changeDetectorRef.markForCheck();\n            this._changeDetectorRef.detectChanges();\n        }\n    }\n\n    /**\n     * Start animation of the actions panel exiting from view.\n     *\n     * @docs-private\n     */\n    startCloseAnimation(): void {\n        if (!this.destroyed) {\n            this.animationState = 'hidden';\n            this._changeDetectorRef.markForCheck();\n        }\n    }\n\n    /**\n     * Handles animation done events.\n     *\n     * @docs-private\n     */\n    protected onAnimationDone(event: AnimationEvent): void {\n        if (event.toState === 'visible') {\n            this._trapFocus();\n        }\n\n        this.animationStateChanged.emit(event);\n    }\n\n    /**\n     * Handles animation start events.\n     *\n     * @docs-private\n     */\n    protected onAnimationStart(event: AnimationEvent): void {\n        this.animationStateChanged.emit(event);\n    }\n\n    /**\n     * Handles escape key events.\n     *\n     * @docs-private\n     */\n    protected handleEscape(event: KeyboardEvent): void {\n        if (!this.config.disableClose) {\n            event.preventDefault();\n            this.close();\n        }\n    }\n\n    /**\n     * @docs-private\n     */\n    protected override _contentAttached(): void {\n        this.applyContainerClass();\n    }\n\n    private applyContainerClass(): void {\n        const { containerClass } = this.config;\n\n        if (containerClass) {\n            if (Array.isArray(containerClass)) {\n                containerClass.forEach((cssClass) => this.renderer.addClass(this._elementRef.nativeElement, cssClass));\n            } else {\n                this.renderer.addClass(this._elementRef.nativeElement, containerClass);\n            }\n        }\n    }\n}\n","import { DialogRef } from '@angular/cdk/dialog';\nimport { OverlayRef } from '@angular/cdk/overlay';\nimport { filter, Observable, Subject, take } from 'rxjs';\nimport { KbqActionsPanelContainer } from './actions-panel-container';\n\n/**\n * Reference to actions panel opened by `KbqActionsPanel` service.\n */\nexport class KbqActionsPanelRef<I = unknown, R = unknown> {\n    /**\n     * Instance of the component into which the actions panel content is projected.\n     *\n     * @docs-private\n     */\n    containerInstance: KbqActionsPanelContainer;\n\n    /** Gets an observable that is notified when the actions panel is finished closing. */\n    get afterClosed(): Observable<R | undefined> {\n        return this.dialogRef.closed;\n    }\n\n    /** Gets an observable that emits when keydown events are targeted on the overlay. */\n    get keydownEvents(): Observable<KeyboardEvent> {\n        return this.dialogRef.keydownEvents;\n    }\n\n    /** Gets an observable that is notified when the actions panel has opened and appeared. */\n    get afterOpened(): Observable<void> {\n        return this._afterOpened;\n    }\n\n    /**\n     * Gets the overlay reference for the actions panel.\n     *\n     * @docs-private\n     */\n    get overlayRef(): OverlayRef {\n        return this.dialogRef.overlayRef;\n    }\n\n    /**\n     * Gets the ID of the actions panel.\n     *\n     * @docs-private\n     */\n    get id(): string {\n        return this.dialogRef.id;\n    }\n\n    private readonly _afterOpened = new Subject<void>();\n\n    /** Result to be passed down to the `afterClosed` stream. */\n    private result: R | undefined;\n\n    /** Handle to the timeout that's running as a fallback in case the close animation doesn't fire. */\n    private closeAnimationFallbackTimeout: ReturnType<typeof setTimeout>;\n\n    constructor(\n        private readonly dialogRef: DialogRef<R, I>,\n        containerInstance: KbqActionsPanelContainer\n    ) {\n        this.containerInstance = containerInstance;\n        this.handleAnimation();\n        this.handleOverlayDetachments();\n    }\n\n    /** Closes the actions panel. */\n    close(result?: R): void {\n        if (!this.containerInstance) {\n            return;\n        }\n\n        this.containerInstance.animationStateChanged\n            .pipe(\n                filter((event) => event.phaseName === 'start'),\n                take(1)\n            )\n            .subscribe(({ totalTime }) => {\n                this.closeAnimationFallbackTimeout = setTimeout(\n                    () => this.dialogRef.close(this.result),\n                    totalTime + 100\n                );\n            });\n\n        this.result = result;\n        this.containerInstance.startCloseAnimation();\n        this.containerInstance = null!;\n    }\n\n    private handleAnimation(): void {\n        this.containerInstance.animationStateChanged\n            .pipe(\n                filter((event) => event.phaseName === 'done' && event.toState === 'visible'),\n                take(1)\n            )\n            .subscribe(() => {\n                this._afterOpened.next();\n                this._afterOpened.complete();\n            });\n\n        this.containerInstance.animationStateChanged\n            .pipe(\n                filter((event) => event.phaseName === 'done' && event.toState === 'hidden'),\n                take(1)\n            )\n            .subscribe(() => {\n                clearTimeout(this.closeAnimationFallbackTimeout);\n                this.dialogRef.close(this.result);\n            });\n    }\n\n    private handleOverlayDetachments(): void {\n        this.dialogRef.overlayRef\n            .detachments()\n            .pipe(take(1))\n            .subscribe(() => {\n                this.dialogRef.close(this.result);\n            });\n    }\n}\n","import { coerceCssPixelValue } from '@angular/cdk/coercion';\nimport { Dialog } from '@angular/cdk/dialog';\nimport { SharedResizeObserver } from '@angular/cdk/observers/private';\nimport { ComponentType, Overlay } from '@angular/cdk/overlay';\nimport { inject, Injectable, InjectionToken, Injector, OnDestroy, TemplateRef } from '@angular/core';\nimport { takeUntil } from 'rxjs';\nimport { KBQ_ACTIONS_PANEL_DEFAULT_CONFIG, KbqActionsPanelConfig } from './actions-panel-config';\nimport { KbqActionsPanelContainer } from './actions-panel-container';\nimport { KbqActionsPanelRef } from './actions-panel-ref';\n\n/** Injection token that can be used to access the data that was passed in to actions panel. */\nexport const KBQ_ACTIONS_PANEL_DATA = new InjectionToken('KBQ_ACTIONS_PANEL_DATA');\n\n/**\n * Context for actions panel template.\n */\nexport type KbqActionsPanelTemplateContext<T = unknown, D = unknown, R = unknown> = {\n    /**\n     * Data passed to actions panel.\n     *\n     * Example:\n     *\n     * ```html\n     * <ng-template #actionsPanel let-data>{{ data.KEY }}</ng-template>\n     * ````\n     */\n    $implicit?: D | null;\n    /**\n     * Data passed to actions panel.\n     *\n     * Example:\n     *\n     * ```html\n     * <ng-template #actionsPanel let-data=\"data\">{{ data.KEY }}</ng-template>\n     * ````\n     */\n    data?: D | null;\n    /**\n     * Opened actions panel reference.\n     *\n     * Example:\n     *\n     * ```html\n     * <ng-template #actionsPanel let-actionsPanelRef=\"actionsPanelRef\">\n     *   <button (click)=\"actionsPanelRef.close()\">close</button>\n     * </ng-template>\n     * ````\n     */\n    actionsPanelRef: KbqActionsPanelRef<T, R>;\n};\n\n/**\n * Selector for actions panel overlay.\n *\n * @docs-private\n */\nexport const KBQ_ACTIONS_PANEL_OVERLAY_SELECTOR = 'kbq-actions-panel-overlay';\n\n/**\n * Service for opening actions panel.\n */\n@Injectable({ providedIn: 'root' })\nexport class KbqActionsPanel implements OnDestroy {\n    private readonly injector = inject(Injector);\n    private readonly overlay = inject(Overlay);\n    private readonly dialog = inject(Dialog);\n    private readonly defaultConfig = inject(KBQ_ACTIONS_PANEL_DEFAULT_CONFIG);\n    private readonly resizeObserver = inject(SharedResizeObserver);\n\n    /** The reference to the currently opened actions panel. */\n    private openedActionsPanelRef: KbqActionsPanelRef | null = null;\n\n    ngOnDestroy() {\n        this.close();\n    }\n\n    /**\n     * Opens actions panel.\n     *\n     * @param componentOrTemplateRef Component to be opened into the actions panel.\n     * @param config Additional configuration options for the actions panel.\n     * @returns A reference to the opened actions panel.\n     */\n    open<T, D = unknown, R = unknown>(\n        component: ComponentType<T>,\n        config?: KbqActionsPanelConfig<D>\n    ): KbqActionsPanelRef<T, R>;\n\n    /**\n     * Opens actions panel.\n     *\n     * @param template TemplateRef to be used as the content.\n     * @param config Additional configuration options for the actions panel.\n     * @returns A reference to the opened actions panel.\n     */\n    open<T, D = unknown, R = unknown>(\n        template: TemplateRef<T>,\n        config?: KbqActionsPanelConfig<D>\n    ): KbqActionsPanelRef<T, R>;\n\n    open<T, D = unknown, R = unknown>(\n        componentOrTemplateRef: ComponentType<T> | TemplateRef<T>,\n        config?: KbqActionsPanelConfig<D>\n    ): KbqActionsPanelRef<T, R> {\n        const _config: KbqActionsPanelConfig<D> = {\n            ...(this.defaultConfig as KbqActionsPanelConfig<D>),\n            ...config\n        };\n        const actionsPanelRef = this.openDialog<T, D, R>(componentOrTemplateRef, _config);\n\n        actionsPanelRef.afterClosed.subscribe(() => {\n            if (this.openedActionsPanelRef === actionsPanelRef) {\n                this.openedActionsPanelRef = null;\n            }\n        });\n\n        if (this.openedActionsPanelRef) {\n            this.openedActionsPanelRef.afterClosed.subscribe(() => {\n                actionsPanelRef.containerInstance?.startOpenAnimation();\n            });\n            this.openedActionsPanelRef.close();\n        } else {\n            actionsPanelRef.containerInstance.startOpenAnimation();\n        }\n\n        this.openedActionsPanelRef = actionsPanelRef as KbqActionsPanelRef;\n\n        return actionsPanelRef;\n    }\n\n    /** Closes the currently opened actions panel. */\n    close<R>(result?: R): void {\n        this.openedActionsPanelRef?.close(result);\n    }\n\n    private openDialog<T, D = unknown, R = unknown>(\n        componentOrTemplateRef: ComponentType<T> | TemplateRef<T>,\n        config: KbqActionsPanelConfig<D> = {}\n    ): KbqActionsPanelRef<T, R> {\n        let actionsPanelRef!: KbqActionsPanelRef<T, R>;\n        const { overlayContainer, overlayPanelClass } = config;\n\n        this.dialog.open<R, D, T>(componentOrTemplateRef, {\n            ...config,\n            container: KbqActionsPanelContainer,\n            restoreFocus: false,\n            autoFocus: null!,\n            hasBackdrop: false,\n            // Disable closing since we need to sync it up to the animation ourselves\n            closeOnOverlayDetachments: false,\n            // Disable closing since we need to sync it up to the animation ourselves\n            closeOnDestroy: false,\n            // Disable closing since we need to sync it up to the animation ourselves\n            disableClose: true,\n            scrollStrategy: config.scrollStrategy && config.scrollStrategy(this.overlay),\n            positionStrategy: overlayContainer\n                ? this.overlay\n                      .position()\n                      .flexibleConnectedTo(overlayContainer)\n                      .withPositions([{ originX: 'center', originY: 'bottom', overlayX: 'center', overlayY: 'bottom' }])\n                      .withFlexibleDimensions()\n                      .withPush(false)\n                      .withLockedPosition()\n                      .withGrowAfterOpen()\n                : this.overlay.position().global().centerHorizontally().bottom(),\n            templateContext: () => {\n                return {\n                    $implicit: config.data,\n                    data: config.data,\n                    actionsPanelRef\n                } satisfies KbqActionsPanelTemplateContext<T, D, R>;\n            },\n            injector: Injector.create({\n                parent: config.injector || this.injector,\n                providers: [{ provide: KbqActionsPanelConfig, useValue: config }]\n            }),\n            providers: (dialogRef, _dialogConfig, container) => {\n                actionsPanelRef = new KbqActionsPanelRef<T, R>(dialogRef, container as KbqActionsPanelContainer);\n\n                return [\n                    { provide: KbqActionsPanelRef, useValue: actionsPanelRef },\n                    { provide: KBQ_ACTIONS_PANEL_DATA, useValue: config.data }\n                ];\n            }\n        });\n\n        const { overlayRef } = actionsPanelRef;\n\n        overlayRef.addPanelClass(KBQ_ACTIONS_PANEL_OVERLAY_SELECTOR);\n\n        if (overlayPanelClass) overlayRef.addPanelClass(overlayPanelClass);\n\n        if (overlayContainer) {\n            const { afterClosed } = actionsPanelRef;\n\n            this.resizeObserver\n                .observe(overlayContainer.nativeElement)\n                .pipe(takeUntil(afterClosed))\n                .subscribe(() => {\n                    const { width: maxWidth } = overlayContainer.nativeElement.getBoundingClientRect();\n\n                    if (!maxWidth) return;\n\n                    overlayRef.overlayElement.style.maxWidth = coerceCssPixelValue(maxWidth);\n                    overlayRef.updatePosition();\n                });\n        }\n\n        return actionsPanelRef;\n    }\n}\n","import { NgModule } from '@angular/core';\nimport { KbqActionsPanel } from './actions-panel';\nimport { KbqActionsPanelContainer } from './actions-panel-container';\n\nconst COMPONENTS = [\n    KbqActionsPanelContainer\n];\n\n@NgModule({\n    imports: COMPONENTS,\n    exports: COMPONENTS,\n    providers: [KbqActionsPanel]\n})\nexport class KbqActionsPanelModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}