@koobiq/components 20.4.2 → 20.4.4
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/badge/_badge-theme.scss +31 -0
- package/breadcrumbs/breadcrumbs.scss +16 -1
- package/fesm2022/koobiq-components-badge.mjs +2 -2
- package/fesm2022/koobiq-components-badge.mjs.map +1 -1
- package/fesm2022/koobiq-components-breadcrumbs.mjs +2 -2
- package/fesm2022/koobiq-components-breadcrumbs.mjs.map +1 -1
- package/fesm2022/koobiq-components-core.mjs +1 -1
- package/fesm2022/koobiq-components-core.mjs.map +1 -1
- package/fesm2022/koobiq-components-dl.mjs +6 -4
- package/fesm2022/koobiq-components-dl.mjs.map +1 -1
- package/fesm2022/koobiq-components-notification-center.mjs +2 -2
- package/fesm2022/koobiq-components-notification-center.mjs.map +1 -1
- package/fesm2022/koobiq-components-overflow-items.mjs +99 -42
- package/fesm2022/koobiq-components-overflow-items.mjs.map +1 -1
- package/fesm2022/koobiq-components-search-expandable.mjs +2 -0
- package/fesm2022/koobiq-components-search-expandable.mjs.map +1 -1
- package/fesm2022/koobiq-components-sidepanel.mjs +14 -24
- package/fesm2022/koobiq-components-sidepanel.mjs.map +1 -1
- package/fesm2022/koobiq-components-toast.mjs +1 -3
- package/fesm2022/koobiq-components-toast.mjs.map +1 -1
- package/fesm2022/koobiq-components-toggle.mjs +11 -4
- package/fesm2022/koobiq-components-toggle.mjs.map +1 -1
- package/fesm2022/koobiq-components-tree.mjs +49 -19
- package/fesm2022/koobiq-components-tree.mjs.map +1 -1
- package/overflow-items/index.d.ts +12 -3
- package/package.json +4 -4
- package/schematics/ng-add/index.js +1 -1
- package/sidepanel/index.d.ts +6 -1
- package/tree/index.d.ts +10 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"koobiq-components-sidepanel.mjs","sources":["../../../packages/components/sidepanel/sidepanel-config.ts","../../../packages/components/sidepanel/sidepanel-animations.ts","../../../packages/components/sidepanel/sidepanel-container.component.ts","../../../packages/components/sidepanel/sidepanel-container.component.html","../../../packages/components/sidepanel/sidepanel-ref.ts","../../../packages/components/sidepanel/sidepanel.service.ts","../../../packages/components/sidepanel/sidepanel-directives.ts","../../../packages/components/sidepanel/sidepanel.module.ts","../../../packages/components/sidepanel/koobiq-components-sidepanel.ts"],"sourcesContent":["import { InjectionToken, Injector } from '@angular/core';\n\n/** Injection token that can be used to access the data that was passed in to a sidepanel. */\nexport const KBQ_SIDEPANEL_DATA = new InjectionToken<any>('KbqSidepanelData');\n\nexport enum KbqSidepanelPosition {\n Right = 'right',\n Left = 'left',\n Top = 'top',\n Bottom = 'bottom'\n}\n\nexport enum KbqSidepanelSize {\n Small = 'small',\n Medium = 'medium',\n Large = 'large'\n}\n\nexport class KbqSidepanelConfig<D = any> {\n /** ID for the sidepanel. If omitted, a unique one will be generated. */\n id?: string;\n\n /** Whether the focus trap is active. */\n trapFocus?: boolean;\n\n /** capture focus on initialization. This option sets cdkTrapFocusAutoCapture. */\n trapFocusAutoCapture?: boolean;\n\n /** Data being injected into the child component. */\n data?: D | null = null;\n\n position?: KbqSidepanelPosition = KbqSidepanelPosition.Right;\n\n size?: KbqSidepanelSize = KbqSidepanelSize.Medium;\n\n /** Whether the sidepanel has a backdrop. */\n hasBackdrop?: boolean = true;\n\n backdropClass?: string;\n\n /** Whether the user can use escape or clicking outside to close the sidepanel. */\n disableClose?: boolean = false;\n\n /** Custom class for the overlay pane. */\n overlayPanelClass?: string | string[] = '';\n\n /**\n * Injector used for the instantiation of the component to be attached.\n * Allows to pass a custom injector to provide a dependency injection hierarchy for the sidepanel content.\n */\n injector?: Injector;\n}\n","import { animate, AnimationTriggerMetadata, state, style, transition, trigger } from '@angular/animations';\nimport { KbqAnimationCurves, KbqAnimationDurations } from '@koobiq/components/core';\nimport { KbqSidepanelPosition } from './sidepanel-config';\n\nexport enum KbqSidepanelAnimationState {\n Void = 'void',\n Visible = 'visible',\n Hidden = 'hidden',\n Lower = 'lower',\n BottomPanel = 'bottom-panel',\n BecomingNormal = 'becoming-normal'\n}\n\n// TODO Find a way to use dynamic keys and avoid error \"Expression form not supported.\"\nexport const kbqSidepanelTransformAnimation: Record<\n KbqSidepanelPosition,\n { in: string; out: string; lower: string; bottomPanel: string; becomingNormal: string }\n> = {\n right: {\n in: 'translateX(100%)',\n out: 'translateX(0)',\n lower: 'scale(0.95) translateX(calc(-1 * var(--kbq-sidepanel-size-panel-lower-offset)))',\n bottomPanel: 'scale(0.9) translateX(calc(-2 * var(--kbq-sidepanel-size-panel-lower-offset)))',\n becomingNormal: 'translateX(0) scale(1)'\n },\n left: {\n in: 'translateX(-100%) scale(1)',\n out: 'translateX(0%) scale(1)',\n lower: 'scale(0.95) translateX(var(--kbq-sidepanel-size-panel-lower-offset))',\n bottomPanel: 'scale(0.9) translateX(calc(2 * var(--kbq-sidepanel-size-panel-lower-offset)))',\n becomingNormal: 'translateX(0%) scale(1)'\n },\n top: {\n in: 'translateY(-100%)',\n out: 'translateY(0%)',\n lower: 'scale(0.95) translateY(var(--kbq-sidepanel-size-panel-lower-offset))',\n bottomPanel: 'scale(0.9) translateY(calc(2 * var(--kbq-sidepanel-size-panel-lower-offset)))',\n becomingNormal: 'translateY(0%) scale(1)'\n },\n bottom: {\n in: 'translateY(100%)',\n out: 'translateY(0%)',\n lower: 'scale(0.95) translateY(calc(-1 * var(--kbq-sidepanel-size-panel-lower-offset)))',\n bottomPanel: 'scale(0.9) translateY(calc(-2 * var(--kbq-sidepanel-size-panel-lower-offset)))',\n becomingNormal: 'translateY(0%) scale(1)'\n }\n};\n\nexport const kbqSidepanelAnimations: { readonly sidepanelState: AnimationTriggerMetadata } = {\n sidepanelState: trigger('state', [\n state(KbqSidepanelAnimationState.Void, style({ opacity: 0 })),\n state(KbqSidepanelAnimationState.Hidden, style({ transform: '{{transformIn}}' }), {\n params: { transformIn: kbqSidepanelTransformAnimation[KbqSidepanelPosition.Right].in }\n }),\n state(KbqSidepanelAnimationState.Visible, style({ transform: '{{transformOut}}', opacity: 1 }), {\n params: { transformOut: kbqSidepanelTransformAnimation[KbqSidepanelPosition.Right].out }\n }),\n state(KbqSidepanelAnimationState.Lower, style({ transform: '{{lower}}', opacity: 1 }), {\n params: { lower: kbqSidepanelTransformAnimation[KbqSidepanelPosition.Right].lower }\n }),\n state(KbqSidepanelAnimationState.BottomPanel, style({ transform: '{{bottomPanel}}', opacity: 0 }), {\n params: { bottomPanel: kbqSidepanelTransformAnimation[KbqSidepanelPosition.Right].bottomPanel }\n }),\n state(KbqSidepanelAnimationState.BecomingNormal, style({ transform: '{{becomingNormal}}', opacity: 1 }), {\n params: { becomingNormal: kbqSidepanelTransformAnimation[KbqSidepanelPosition.Right].becomingNormal }\n }),\n transition('* <=> *', animate(`${KbqAnimationDurations.Long} ${KbqAnimationCurves.EaseInOutQuad}`))\n ])\n};\n","import { AnimationEvent } from '@angular/animations';\nimport { CdkTrapFocus } from '@angular/cdk/a11y';\nimport { BasePortalOutlet, CdkPortalOutlet, ComponentPortal, TemplatePortal } from '@angular/cdk/portal';\nimport {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ComponentRef,\n ElementRef,\n EmbeddedViewRef,\n EventEmitter,\n inject,\n InjectionToken,\n OnDestroy,\n viewChild,\n ViewEncapsulation\n} from '@angular/core';\nimport { Observable, Subject } from 'rxjs';\nimport {\n kbqSidepanelAnimations,\n KbqSidepanelAnimationState,\n kbqSidepanelTransformAnimation\n} from './sidepanel-animations';\nimport { KbqSidepanelConfig, KbqSidepanelPosition } from './sidepanel-config';\n\nexport const KBQ_SIDEPANEL_WITH_INDENT = new InjectionToken<boolean>('kbq-sidepanel-with-indent');\n\n@Component({\n selector: 'kbq-sidepanel-container',\n imports: [\n CdkPortalOutlet,\n CdkTrapFocus\n ],\n templateUrl: './sidepanel-container.component.html',\n styleUrls: ['./sidepanel.scss', './sidepanel-tokens.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n class: 'kbq-sidepanel-container kbq-sidepanel-container_shadowed',\n '[class]': 'size',\n '[class.kbq-sidepanel_nested]': 'withIndent',\n '[attr.id]': 'id',\n '[attr.tabindex]': '-1',\n '[@state]': `{\n value: animationState,\n params: animationTransform\n }`,\n '(@state.start)': 'onAnimation($event)',\n '(@state.done)': 'onAnimation($event)'\n },\n animations: [kbqSidepanelAnimations.sidepanelState]\n})\nexport class KbqSidepanelContainerComponent extends BasePortalOutlet implements OnDestroy {\n private elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n private changeDetectorRef = inject(ChangeDetectorRef);\n sidepanelConfig = inject(KbqSidepanelConfig);\n withIndent = inject(KBQ_SIDEPANEL_WITH_INDENT);\n\n /** ID for the container DOM element. */\n id: string;\n\n /** The portal outlet inside of this container into which the content will be loaded. */\n readonly portalOutlet = viewChild.required(CdkPortalOutlet);\n\n /** The state of the sidepanel animations. */\n animationState: KbqSidepanelAnimationState = KbqSidepanelAnimationState.Void;\n\n /** @docs-private */\n animationTransform: {\n transformIn: string;\n transformOut: string;\n lower: string;\n bottomPanel: string;\n becomingNormal: string;\n };\n\n /** Emits whenever the state of the animation changes. */\n animationStateChanged = new EventEmitter<AnimationEvent>();\n\n /** @docs-private */\n get size(): string {\n return `kbq-sidepanel_${this.sidepanelConfig.size}`;\n }\n\n /** @docs-private */\n get trapFocusAutoCapture(): boolean {\n return this.sidepanelConfig.trapFocusAutoCapture ?? !!this.sidepanelConfig.hasBackdrop;\n }\n\n /** @docs-private */\n get trapFocus(): boolean {\n return this.sidepanelConfig.trapFocus ?? !!this.sidepanelConfig.hasBackdrop;\n }\n\n /** @docs-private */\n protected readonly indentClickEmitter = new Subject<MouseEvent>();\n\n /** Whether the component has been destroyed. */\n private destroyed: boolean;\n\n ngOnDestroy(): void {\n this.destroyed = true;\n }\n\n /**\n * Gets an observable that emits when the indent has been clicked.\n *\n * @docs-private\n */\n indentClick(): Observable<MouseEvent> {\n return this.indentClickEmitter.asObservable();\n }\n\n /** Attach a component portal as content to this sidepanel container. */\n attachComponentPortal<T>(portal: ComponentPortal<T>): ComponentRef<T> {\n this.validatePortalAttached();\n this.setAnimation();\n this.setPanelClass();\n\n return this.portalOutlet().attachComponentPortal(portal);\n }\n\n /** Attach a template portal as content to this sidepanel container. */\n attachTemplatePortal<C>(portal: TemplatePortal<C>): EmbeddedViewRef<C> {\n this.validatePortalAttached();\n this.setAnimation();\n this.setPanelClass();\n\n return this.portalOutlet().attachTemplatePortal(portal);\n }\n\n /** Begin animation of the sidepanel entrance into view. */\n enter(): void {\n if (this.destroyed) return;\n\n this.animationState = KbqSidepanelAnimationState.Visible;\n this.changeDetectorRef.detectChanges();\n }\n\n /** Begin animation of the sidepanel exiting from view. */\n exit(): void {\n if (this.destroyed) return;\n\n this.setAnimationState(KbqSidepanelAnimationState.Hidden);\n }\n\n /** @docs-private */\n onAnimation(event: AnimationEvent) {\n this.animationStateChanged.emit(event);\n }\n\n /** @docs-private */\n setAnimationState(state: KbqSidepanelAnimationState): void {\n this.animationState = state;\n this.changeDetectorRef.markForCheck();\n }\n\n private setAnimation() {\n const position: KbqSidepanelPosition = this.sidepanelConfig.position!;\n\n this.animationTransform = {\n transformIn: kbqSidepanelTransformAnimation[position].in,\n transformOut: kbqSidepanelTransformAnimation[position].out,\n lower: kbqSidepanelTransformAnimation[position].lower,\n bottomPanel: kbqSidepanelTransformAnimation[position].bottomPanel,\n becomingNormal: kbqSidepanelTransformAnimation[position].becomingNormal\n };\n }\n\n private setPanelClass() {\n const element: HTMLElement = this.elementRef.nativeElement;\n const position: KbqSidepanelPosition = this.sidepanelConfig.position!;\n\n element.classList.add(`kbq-sidepanel-container_${position}`);\n }\n\n private validatePortalAttached() {\n if (this.portalOutlet().hasAttached()) {\n throw Error('Attempting to attach sidepanel content after content is already attached');\n }\n }\n}\n","<div class=\"kbq-sidepanel-wrapper\">\n @if (withIndent) {\n <div class=\"kbq-sidepanel-indent\" (click)=\"indentClickEmitter.next($event)\"></div>\n }\n\n <div class=\"kbq-sidepanel-content\" [cdkTrapFocus]=\"trapFocus\" [cdkTrapFocusAutoCapture]=\"trapFocusAutoCapture\">\n <ng-template cdkPortalOutlet />\n </div>\n</div>\n","import { OverlayRef } from '@angular/cdk/overlay';\nimport { signal } from '@angular/core';\nimport { ESCAPE, isHtmlElement, KbqOverflowShadowState } from '@koobiq/components/core';\nimport { merge, Observable, Subject } from 'rxjs';\nimport { filter, take, tap } from 'rxjs/operators';\nimport { KbqSidepanelAnimationState } from './sidepanel-animations';\nimport { KbqSidepanelConfig } from './sidepanel-config';\nimport { KbqSidepanelContainerComponent } from './sidepanel-container.component';\n\n// Counter for unique sidepanel ids.\nlet uniqueId = 0;\n\nexport class KbqSidepanelRef<T = any, R = any> {\n readonly id: string;\n\n /**\n * Vertical scroll overflow state of the sidepanel body.\n * Updated on scroll and used for visual adjustments.\n */\n bodyOverflow = signal<KbqOverflowShadowState>({ top: false, bottom: false });\n\n /** Instance of the component making up the content of the sidepanel. */\n instance: T;\n\n /** Subject for notifying the user that the sidepanel has been closed and dismissed. */\n private readonly afterClosed$ = new Subject<R | undefined>();\n\n /** Subject for notifying the user that the sidepanel starting closing. */\n private readonly beforeClosed$ = new Subject<void>();\n\n /** Subject for notifying the user that the sidepanel has opened and appeared. */\n private readonly afterOpened$ = new Subject<void>();\n\n /** Result to be passed down to the `afterDismissed` stream. */\n private result: R | undefined;\n\n constructor(\n public readonly containerInstance: KbqSidepanelContainerComponent,\n public readonly overlayRef: OverlayRef,\n public readonly config: KbqSidepanelConfig\n ) {\n this.id = this.config.id || `kbq-sidepanel-${uniqueId++}`;\n this.containerInstance.id = this.id;\n overlayRef.backdropElement?.classList?.add(config.backdropClass ?? 'kbq-overlay-dark-backdrop');\n\n const slideBelowStart = containerInstance.animationStateChanged.pipe(\n filter(\n (event) =>\n event.phaseName === 'start' &&\n [KbqSidepanelAnimationState.Lower, KbqSidepanelAnimationState.BottomPanel].includes(\n event.toState as any\n )\n )\n );\n\n // Act on close\n const beforeClosed = containerInstance.animationStateChanged.pipe(\n filter(({ phaseName, toState }) => phaseName === 'start' && toState === KbqSidepanelAnimationState.Hidden),\n take(1),\n tap(() => {\n this.beforeClosed$.next();\n this.beforeClosed$.complete();\n })\n );\n\n // Emit when opening animation completes\n containerInstance.animationStateChanged\n .pipe(\n filter((event) => event.phaseName === 'done' && event.toState === KbqSidepanelAnimationState.Visible),\n take(1)\n )\n .subscribe(() => {\n this.afterOpened$.next();\n this.afterOpened$.complete();\n });\n\n containerInstance.animationStateChanged\n .pipe(\n filter(\n (event) =>\n event.phaseName === 'start' && event.toState === KbqSidepanelAnimationState.BecomingNormal\n )\n )\n .subscribe(() => {\n if (overlayRef.backdropElement?.style) {\n overlayRef.backdropElement.style.opacity = '1';\n }\n });\n\n merge(slideBelowStart, beforeClosed).subscribe(() => {\n if (overlayRef.backdropElement?.style) {\n overlayRef.backdropElement.style.opacity = '0';\n }\n });\n\n // Dispose overlay when closing animation is complete\n containerInstance.animationStateChanged\n .pipe(\n filter((event) => event.phaseName === 'done' && event.toState === KbqSidepanelAnimationState.Hidden),\n take(1)\n )\n .subscribe(() => {\n overlayRef.dispose();\n this.afterClosed$.next(this.result);\n this.afterClosed$.complete();\n });\n\n merge(\n overlayRef.backdropClick(),\n overlayRef.keydownEvents().pipe(\n // keyCode is deprecated, but IE11 and Edge don't support code property, which we need use instead\n filter((event) => event.keyCode === ESCAPE)\n ),\n this.containerInstance.indentClick(),\n overlayRef\n .outsidePointerEvents()\n .pipe(\n filter((event) => isHtmlElement(event.target) && !!event.target.closest('.kbq-sidepanel-container'))\n )\n ).subscribe(() => {\n if (this.config.disableClose) return;\n\n this.close();\n });\n }\n\n close(result?: R): void {\n if (!this.afterClosed$.closed) {\n // Transition the backdrop in parallel to the sidepanel.\n this.containerInstance.animationStateChanged\n .pipe(\n filter((event) => event.phaseName === 'done'),\n take(1)\n )\n .subscribe(() => this.overlayRef.detachBackdrop());\n\n this.result = result;\n this.containerInstance.exit();\n }\n }\n\n /** Gets an observable that is notified when the sidepanel is started closing. */\n beforeClosed(): Observable<void> {\n return this.beforeClosed$.asObservable();\n }\n\n /** Gets an observable that is notified when the sidepanel is finished closing. */\n afterClosed(): Observable<R | undefined> {\n return this.afterClosed$.asObservable();\n }\n\n /** Gets an observable that is notified when the sidepanel has opened and appeared. */\n afterOpened(): Observable<void> {\n return this.afterOpened$.asObservable();\n }\n}\n","import { Overlay, OverlayConfig, OverlayRef } from '@angular/cdk/overlay';\nimport { ComponentPortal, ComponentType, TemplatePortal } from '@angular/cdk/portal';\nimport { ComponentRef, Injectable, InjectionToken, Injector, OnDestroy, TemplateRef, inject } from '@angular/core';\nimport { KbqSidepanelAnimationState } from './sidepanel-animations';\nimport { KBQ_SIDEPANEL_DATA, KbqSidepanelConfig } from './sidepanel-config';\nimport { KBQ_SIDEPANEL_WITH_INDENT, KbqSidepanelContainerComponent } from './sidepanel-container.component';\nimport { KbqSidepanelRef } from './sidepanel-ref';\n\n/** Injection token that can be used to specify default sidepanel options. */\nexport const KBQ_SIDEPANEL_DEFAULT_OPTIONS = new InjectionToken<KbqSidepanelConfig>('kbq-sidepanel-default-options');\n\n@Injectable()\nexport class KbqSidepanelService implements OnDestroy {\n private overlay = inject(Overlay);\n private injector = inject(Injector);\n private defaultOptions = inject<KbqSidepanelConfig>(KBQ_SIDEPANEL_DEFAULT_OPTIONS, { optional: true });\n private parentSidepanelService = inject(KbqSidepanelService, { optional: true, skipSelf: true });\n private openedSidepanelsAtThisLevel: KbqSidepanelRef[] = [];\n\n /** Keeps track of the currently-open sidepanels. */\n get openedSidepanels(): KbqSidepanelRef[] {\n return this.parentSidepanelService\n ? this.parentSidepanelService.openedSidepanels\n : this.openedSidepanelsAtThisLevel;\n }\n\n ngOnDestroy() {\n // Only close the sidepanels at this level on destroy\n // since the parent service may still be active.\n this.closeSidepanels(this.openedSidepanelsAtThisLevel);\n }\n\n open<T, D = any>(\n componentOrTemplateRef: ComponentType<T> | TemplateRef<T>,\n config?: KbqSidepanelConfig<D>\n ): KbqSidepanelRef<T> {\n const fullConfig = {\n ...(this.defaultOptions || new KbqSidepanelConfig()),\n ...config\n };\n\n if (fullConfig.id && this.getSidepanelById(fullConfig.id)) {\n throw Error(`Sidepanel with id \"${fullConfig.id}\" exists already. The sidepanel id must be unique.`);\n }\n\n const overlayRef = this.createOverlay(fullConfig);\n\n overlayRef.hostElement.classList.add('kbq-sidepanel-overlay');\n const container = this.attachContainer(overlayRef, fullConfig);\n const ref = new KbqSidepanelRef(container, overlayRef, fullConfig);\n\n if (componentOrTemplateRef instanceof TemplateRef) {\n container.attachTemplatePortal(\n new TemplatePortal<T>(\n componentOrTemplateRef,\n null!,\n {\n $implicit: fullConfig.data,\n sidepanelRef: ref\n } as any,\n this.createInjector(fullConfig, ref, container)\n )\n );\n } else {\n const portal = new ComponentPortal(\n componentOrTemplateRef,\n undefined,\n this.createInjector(fullConfig, ref, container)\n );\n const contentRef = container.attachComponentPortal(portal);\n\n ref.instance = contentRef.instance;\n }\n\n this.openedSidepanels.push(ref);\n ref.beforeClosed().subscribe(() => this.updateAnimationState(ref));\n ref.afterClosed().subscribe(() => this.removeOpenSidepanel(ref));\n\n container.enter();\n\n return ref;\n }\n\n /**\n * Closes all of the currently-open sidepanels.\n */\n closeAll(): void {\n this.closeSidepanels(this.openedSidepanels);\n }\n\n /**\n * Finds an open sidepanel by its id.\n * @param id ID to use when looking up the sidepanel.\n */\n getSidepanelById(id: string): KbqSidepanelRef | undefined {\n return this.openedSidepanels.find((sidepanel) => sidepanel.id === id);\n }\n\n /**\n * Attaches the sidepanel container component to the overlay.\n */\n private attachContainer(overlayRef: OverlayRef, config: KbqSidepanelConfig): KbqSidepanelContainerComponent {\n const openedSidepanelsWithSamePosition = this.getOpenedSidepanelsWithSamePosition(config);\n\n const lower = openedSidepanelsWithSamePosition[openedSidepanelsWithSamePosition.length - 1];\n const bottom = openedSidepanelsWithSamePosition[openedSidepanelsWithSamePosition.length - 2];\n\n this.setAnimationState(lower, KbqSidepanelAnimationState.Lower);\n this.setAnimationState(bottom, KbqSidepanelAnimationState.BottomPanel);\n\n const injector = Injector.create({\n parent: this.injector,\n providers: [\n { provide: KbqSidepanelConfig, useValue: config },\n { provide: KBQ_SIDEPANEL_WITH_INDENT, useValue: openedSidepanelsWithSamePosition.length >= 1 }\n ]\n });\n\n const containerPortal = new ComponentPortal(KbqSidepanelContainerComponent, undefined, injector);\n const containerRef: ComponentRef<KbqSidepanelContainerComponent> = overlayRef.attach(containerPortal);\n\n return containerRef.instance;\n }\n\n /**\n * Creates a custom injector to be used inside the sidepanel. This allows a component loaded inside\n * of a sidepanel to close itself and, optionally, to return a value.\n * @param config Config object that is used to construct the sidepanel.\n * @param sidepanelRef Reference to the sidepanel.\n * @param sidepanelContainer Sidepanel container element that wraps all of the contents.\n * @returns The custom injector that can be used inside the sidepanel.\n */\n private createInjector<T>(\n config: KbqSidepanelConfig,\n sidepanelRef: KbqSidepanelRef<T>,\n sidepanelContainer: KbqSidepanelContainerComponent\n ): Injector {\n // The KbqSidepanelContainerComponent is injected in the portal as the KbqSidepanelContainerComponent and\n // the sidepanel's content are created out of the same ViewContainerRef and as such, are siblings for injector\n // purposes. To allow the hierarchy that is expected, the KbqSidepanelContainerComponent is explicitly\n // added to the injection tokens.\n\n return Injector.create({\n parent: config.injector ?? this.injector,\n providers: [\n { provide: KbqSidepanelContainerComponent, useValue: sidepanelContainer },\n { provide: KBQ_SIDEPANEL_DATA, useValue: config.data },\n { provide: KbqSidepanelRef, useValue: sidepanelRef }\n ]\n });\n }\n\n /**\n * Creates a new overlay and places it in the correct location.\n * @param config The user-specified sidepanel config.\n */\n private createOverlay(config: KbqSidepanelConfig): OverlayRef {\n const overlayConfig = new OverlayConfig({\n hasBackdrop: config.hasBackdrop,\n backdropClass: '',\n maxWidth: '100%',\n panelClass: config.overlayPanelClass,\n scrollStrategy: this.overlay.scrollStrategies.block(),\n positionStrategy: this.overlay.position().global()\n });\n\n return this.overlay.create(overlayConfig);\n }\n\n private closeSidepanels(sidepanels: KbqSidepanelRef[]) {\n const reversedOpenedSidepanels = [...sidepanels.reverse()];\n\n reversedOpenedSidepanels.forEach((sidepanelRef: KbqSidepanelRef) => sidepanelRef.close());\n }\n\n private getOpenedSidepanelsWithSamePosition(config: KbqSidepanelConfig): KbqSidepanelRef[] {\n return this.openedSidepanels.filter((sidepanelRef) => sidepanelRef.config.position === config.position);\n }\n\n private updateAnimationState(sidepanelRef: KbqSidepanelRef) {\n const index = this.openedSidepanels.indexOf(sidepanelRef);\n\n // only allow animations if ref is last element in sidepanels list\n if (index === -1 || index !== this.openedSidepanels.length - 1) return;\n\n const [lower, bottom] = this.getLowerSidepanelsWithSamePosition(index);\n\n this.setAnimationState(lower, KbqSidepanelAnimationState.BecomingNormal);\n this.setAnimationState(bottom, KbqSidepanelAnimationState.Lower);\n }\n\n /**\n * Moves a sidepanel into `state`, unless it is closing already.\n *\n * The exit animation is what disposes the overlay, so interrupting it with another state leaves the\n * sidepanel in the DOM and in `openedSidepanels` for good — which is what closing a stack of them as\n * a group used to do to the panels underneath.\n */\n private setAnimationState(sidepanelRef: KbqSidepanelRef | undefined, state: KbqSidepanelAnimationState): void {\n const containerInstance = sidepanelRef?.containerInstance;\n\n if (!containerInstance || containerInstance.animationState === KbqSidepanelAnimationState.Hidden) return;\n\n containerInstance.setAnimationState(state);\n }\n\n /**\n * Removes a sidepanel from the array of open sidepanels.\n * @param sidepanelRef Sidepanel to be removed.\n */\n private removeOpenSidepanel(sidepanelRef: KbqSidepanelRef) {\n const index = this.openedSidepanels.indexOf(sidepanelRef);\n\n if (index > -1) {\n const [lower] = this.getLowerSidepanelsWithSamePosition(index);\n\n this.setAnimationState(lower, KbqSidepanelAnimationState.Visible);\n\n this.openedSidepanels.splice(index, 1);\n }\n }\n\n private getLowerSidepanelsWithSamePosition(index: number): KbqSidepanelRef[] {\n const openedSidepanelsWithSamePosition = this.getOpenedSidepanelsWithSamePosition(\n this.openedSidepanels[index].config\n );\n\n return [\n openedSidepanelsWithSamePosition[openedSidepanelsWithSamePosition.length - 2],\n openedSidepanelsWithSamePosition[openedSidepanelsWithSamePosition.length - 3]\n ];\n }\n}\n","import {\n booleanAttribute,\n Component,\n Directive,\n effect,\n ElementRef,\n inject,\n Input,\n input,\n OnChanges,\n OnInit,\n Renderer2,\n SimpleChanges\n} from '@angular/core';\nimport { KbqButtonModule } from '@koobiq/components/button';\nimport { KbqOverflowShadowContainer } from '@koobiq/components/core';\nimport { KbqIconModule } from '@koobiq/components/icon';\nimport { KbqTitleDirective } from '@koobiq/components/title';\nimport { KbqSidepanelRef } from './sidepanel-ref';\nimport { KbqSidepanelService } from './sidepanel.service';\n\n/**\n * Button that will close the current sidepanel.\n */\n@Directive({\n selector: 'button[kbq-sidepanel-close], button[kbqSidepanelClose]',\n host: {\n class: 'kbq-sidepanel-close',\n '(click)': 'sidepanelRef.close(sidepanelResult)'\n }\n})\nexport class KbqSidepanelClose implements OnInit, OnChanges {\n sidepanelRef = inject(KbqSidepanelRef, { optional: true })!;\n private elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n private sidepanelService = inject(KbqSidepanelService);\n private readonly renderer = inject(Renderer2);\n\n // TODO: Skipped for migration because:\n // Your application code writes to the input. This prevents migration.\n @Input('kbq-sidepanel-close') sidepanelResult: any;\n\n readonly kbqSidepanelClose = input<any>();\n\n ngOnInit() {\n // A button with no type submits the form it sits in, so closing a sidepanel from inside a form would\n // submit it too. A type the author set is left alone.\n if (!this.elementRef.nativeElement.hasAttribute('type')) {\n this.renderer.setAttribute(this.elementRef.nativeElement, 'type', 'button');\n }\n\n if (!this.sidepanelRef) {\n // When this directive is included in a sidepanel via TemplateRef (rather than being\n // in a Component), the SidepanelRef isn't available via injection because embedded\n // views cannot be given a custom injector. Instead, we look up the SidepanelRef by\n // ID.\n // This must occur in `onInit`, as the ID binding for the sidepanel container won't\n // be resolved at constructor time. We use setTimeout by same reason.\n setTimeout(() => {\n this.sidepanelRef = getClosestSidepanel(this.elementRef, this.sidepanelService.openedSidepanels)!;\n });\n }\n }\n\n ngOnChanges(changes: SimpleChanges) {\n const proxiedChange = changes.kbqSidepanelClose || changes.sidepanelResult;\n\n if (proxiedChange) {\n this.sidepanelResult = proxiedChange.currentValue;\n }\n }\n}\n\n/**\n * Header of a sidepanel.\n */\n@Component({\n selector: 'kbq-sidepanel-header',\n imports: [\n KbqButtonModule,\n KbqSidepanelClose,\n KbqIconModule,\n KbqTitleDirective\n ],\n template: `\n <div class=\"kbq-sidepanel-title\" kbq-title>\n <ng-content />\n </div>\n\n @if (closeable()) {\n <button kbq-button kbq-sidepanel-close type=\"button\" [color]=\"'contrast'\" [kbqStyle]=\"'transparent'\">\n <i kbq-icon=\"kbq-xmark_16\" [color]=\"'contrast'\"></i>\n </button>\n }\n `,\n host: {\n class: 'kbq-sidepanel-header',\n '[class.kbq-sidepanel-header_truncate-text]': 'truncateText()',\n '[style.box-shadow]': 'sidepanelRef.bodyOverflow().top ? \"var(--kbq-shadow-overflow-normal-bottom)\" : null'\n }\n})\nexport class KbqSidepanelHeader {\n /** Add button for close sidepanel. Default false */\n readonly closeable = input<boolean, unknown>(false, { transform: booleanAttribute });\n\n /** Enables text truncation. Default true */\n readonly truncateText = input<boolean, unknown>(true, { transform: booleanAttribute });\n\n /** @docs-private */\n protected sidepanelRef = inject(KbqSidepanelRef);\n}\n\n/**\n * Scrollable content container of a sidepanel.\n */\n@Directive({\n selector: 'kbq-sidepanel-body, [kbq-sidepanel-body], kbqSidepanelBody',\n host: {\n class: 'kbq-sidepanel-body kbq-scrollbar'\n },\n hostDirectives: [KbqOverflowShadowContainer]\n})\nexport class KbqSidepanelBody {\n private readonly sidepanelRef = inject(KbqSidepanelRef);\n private readonly overflowContainer = inject(KbqOverflowShadowContainer);\n\n constructor() {\n effect(() => this.sidepanelRef.bodyOverflow.set(this.overflowContainer.overflow()));\n }\n}\n\n/**\n * Footer of a sidepanel.\n */\n@Directive({\n selector: 'kbq-sidepanel-footer, [kbq-sidepanel-footer], kbqSidepanelFooter',\n host: {\n class: 'kbq-sidepanel-footer',\n '[style.box-shadow]': 'sidepanelRef.bodyOverflow().bottom ? \"var(--kbq-shadow-overflow-normal-top)\" : null'\n }\n})\nexport class KbqSidepanelFooter {\n /** @docs-private */\n protected sidepanelRef = inject(KbqSidepanelRef);\n}\n\n/**\n * Actions block of a sidepanel footer.\n */\n@Directive({\n selector: 'kbq-sidepanel-actions, [kbq-sidepanel-actions], kbqSidepanelActions',\n host: {\n class: 'kbq-sidepanel-actions'\n }\n})\nexport class KbqSidepanelActions {}\n\n/**\n * Finds the closest KbqSidepanelRef to an element by looking at the DOM.\n * @param element Element relative to which to look for a sidepanel.\n * @param openSidepanels References to the currently-open sidepanels.\n */\nfunction getClosestSidepanel(element: ElementRef<HTMLElement>, openSidepanels: KbqSidepanelRef[]) {\n let parent: HTMLElement | null = element.nativeElement.parentElement;\n\n while (parent && !parent.classList.contains('kbq-sidepanel-container')) {\n parent = parent.parentElement;\n }\n\n return parent ? openSidepanels.find((sidepanel) => sidepanel.id === parent!.id) : null;\n}\n","import { A11yModule, ConfigurableFocusTrapFactory, FocusTrapFactory } from '@angular/cdk/a11y';\nimport { OverlayModule } from '@angular/cdk/overlay';\nimport { PortalModule } from '@angular/cdk/portal';\nimport { NgModule } from '@angular/core';\nimport { KbqButtonModule } from '@koobiq/components/button';\nimport { KbqIconModule } from '@koobiq/components/icon';\nimport { KbqTitleModule } from '@koobiq/components/title';\nimport { KbqSidepanelContainerComponent } from './sidepanel-container.component';\nimport {\n KbqSidepanelActions,\n KbqSidepanelBody,\n KbqSidepanelClose,\n KbqSidepanelFooter,\n KbqSidepanelHeader\n} from './sidepanel-directives';\nimport { KbqSidepanelService } from './sidepanel.service';\n\n@NgModule({\n imports: [\n OverlayModule,\n PortalModule,\n KbqButtonModule,\n KbqIconModule,\n KbqTitleModule,\n A11yModule,\n KbqSidepanelContainerComponent,\n KbqSidepanelClose,\n KbqSidepanelHeader,\n KbqSidepanelBody,\n KbqSidepanelFooter,\n KbqSidepanelActions\n ],\n providers: [\n KbqSidepanelService,\n { provide: FocusTrapFactory, useClass: ConfigurableFocusTrapFactory }\n ],\n exports: [\n KbqSidepanelContainerComponent,\n KbqSidepanelClose,\n KbqSidepanelHeader,\n KbqSidepanelBody,\n KbqSidepanelFooter,\n KbqSidepanelActions\n ]\n})\nexport class KbqSidepanelModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"koobiq-components-sidepanel.mjs","sources":["../../../packages/components/sidepanel/sidepanel-config.ts","../../../packages/components/sidepanel/sidepanel-animations.ts","../../../packages/components/sidepanel/sidepanel-container.component.ts","../../../packages/components/sidepanel/sidepanel-container.component.html","../../../packages/components/sidepanel/sidepanel-ref.ts","../../../packages/components/sidepanel/sidepanel.service.ts","../../../packages/components/sidepanel/sidepanel-directives.ts","../../../packages/components/sidepanel/sidepanel.module.ts","../../../packages/components/sidepanel/koobiq-components-sidepanel.ts"],"sourcesContent":["import { InjectionToken, Injector } from '@angular/core';\n\n/** Injection token that can be used to access the data that was passed in to a sidepanel. */\nexport const KBQ_SIDEPANEL_DATA = new InjectionToken<any>('KbqSidepanelData');\n\nexport enum KbqSidepanelPosition {\n Right = 'right',\n Left = 'left',\n Top = 'top',\n Bottom = 'bottom'\n}\n\nexport enum KbqSidepanelSize {\n Small = 'small',\n Medium = 'medium',\n Large = 'large'\n}\n\nexport class KbqSidepanelConfig<D = any> {\n /** ID for the sidepanel. If omitted, a unique one will be generated. */\n id?: string;\n\n /** Whether the focus trap is active. */\n trapFocus?: boolean;\n\n /** capture focus on initialization. This option sets cdkTrapFocusAutoCapture. */\n trapFocusAutoCapture?: boolean;\n\n /** Data being injected into the child component. */\n data?: D | null = null;\n\n position?: KbqSidepanelPosition = KbqSidepanelPosition.Right;\n\n size?: KbqSidepanelSize = KbqSidepanelSize.Medium;\n\n /** Whether the sidepanel has a backdrop. */\n hasBackdrop?: boolean = true;\n\n backdropClass?: string;\n\n /** Whether the user can use escape or clicking outside to close the sidepanel. */\n disableClose?: boolean = false;\n\n /** Custom class for the overlay pane. */\n overlayPanelClass?: string | string[] = '';\n\n /**\n * Injector used for the instantiation of the component to be attached.\n * Allows to pass a custom injector to provide a dependency injection hierarchy for the sidepanel content.\n */\n injector?: Injector;\n}\n","import { animate, AnimationTriggerMetadata, state, style, transition, trigger } from '@angular/animations';\nimport { KbqAnimationCurves, KbqAnimationDurations } from '@koobiq/components/core';\nimport { KbqSidepanelPosition } from './sidepanel-config';\n\nexport enum KbqSidepanelAnimationState {\n Void = 'void',\n Visible = 'visible',\n Hidden = 'hidden',\n Lower = 'lower',\n BottomPanel = 'bottom-panel',\n BecomingNormal = 'becoming-normal'\n}\n\n// TODO Find a way to use dynamic keys and avoid error \"Expression form not supported.\"\nexport const kbqSidepanelTransformAnimation: Record<\n KbqSidepanelPosition,\n { in: string; out: string; lower: string; bottomPanel: string; becomingNormal: string }\n> = {\n right: {\n in: 'translateX(100%)',\n out: 'translateX(0)',\n lower: 'scale(0.95) translateX(calc(-1 * var(--kbq-sidepanel-size-panel-lower-offset)))',\n bottomPanel: 'scale(0.9) translateX(calc(-2 * var(--kbq-sidepanel-size-panel-lower-offset)))',\n becomingNormal: 'translateX(0) scale(1)'\n },\n left: {\n in: 'translateX(-100%) scale(1)',\n out: 'translateX(0%) scale(1)',\n lower: 'scale(0.95) translateX(var(--kbq-sidepanel-size-panel-lower-offset))',\n bottomPanel: 'scale(0.9) translateX(calc(2 * var(--kbq-sidepanel-size-panel-lower-offset)))',\n becomingNormal: 'translateX(0%) scale(1)'\n },\n top: {\n in: 'translateY(-100%)',\n out: 'translateY(0%)',\n lower: 'scale(0.95) translateY(var(--kbq-sidepanel-size-panel-lower-offset))',\n bottomPanel: 'scale(0.9) translateY(calc(2 * var(--kbq-sidepanel-size-panel-lower-offset)))',\n becomingNormal: 'translateY(0%) scale(1)'\n },\n bottom: {\n in: 'translateY(100%)',\n out: 'translateY(0%)',\n lower: 'scale(0.95) translateY(calc(-1 * var(--kbq-sidepanel-size-panel-lower-offset)))',\n bottomPanel: 'scale(0.9) translateY(calc(-2 * var(--kbq-sidepanel-size-panel-lower-offset)))',\n becomingNormal: 'translateY(0%) scale(1)'\n }\n};\n\nexport const kbqSidepanelAnimations: { readonly sidepanelState: AnimationTriggerMetadata } = {\n sidepanelState: trigger('state', [\n state(KbqSidepanelAnimationState.Void, style({ opacity: 0 })),\n state(KbqSidepanelAnimationState.Hidden, style({ transform: '{{transformIn}}' }), {\n params: { transformIn: kbqSidepanelTransformAnimation[KbqSidepanelPosition.Right].in }\n }),\n state(KbqSidepanelAnimationState.Visible, style({ transform: '{{transformOut}}', opacity: 1 }), {\n params: { transformOut: kbqSidepanelTransformAnimation[KbqSidepanelPosition.Right].out }\n }),\n state(KbqSidepanelAnimationState.Lower, style({ transform: '{{lower}}', opacity: 1 }), {\n params: { lower: kbqSidepanelTransformAnimation[KbqSidepanelPosition.Right].lower }\n }),\n state(KbqSidepanelAnimationState.BottomPanel, style({ transform: '{{bottomPanel}}', opacity: 0 }), {\n params: { bottomPanel: kbqSidepanelTransformAnimation[KbqSidepanelPosition.Right].bottomPanel }\n }),\n state(KbqSidepanelAnimationState.BecomingNormal, style({ transform: '{{becomingNormal}}', opacity: 1 }), {\n params: { becomingNormal: kbqSidepanelTransformAnimation[KbqSidepanelPosition.Right].becomingNormal }\n }),\n transition('* <=> *', animate(`${KbqAnimationDurations.Long} ${KbqAnimationCurves.EaseInOutQuad}`))\n ])\n};\n","import { AnimationEvent } from '@angular/animations';\nimport { CdkTrapFocus } from '@angular/cdk/a11y';\nimport { BasePortalOutlet, CdkPortalOutlet, ComponentPortal, TemplatePortal } from '@angular/cdk/portal';\nimport {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ComponentRef,\n ElementRef,\n EmbeddedViewRef,\n EventEmitter,\n inject,\n InjectionToken,\n OnDestroy,\n viewChild,\n ViewEncapsulation\n} from '@angular/core';\nimport { Observable, Subject } from 'rxjs';\nimport {\n kbqSidepanelAnimations,\n KbqSidepanelAnimationState,\n kbqSidepanelTransformAnimation\n} from './sidepanel-animations';\nimport { KbqSidepanelConfig, KbqSidepanelPosition } from './sidepanel-config';\n\nexport const KBQ_SIDEPANEL_WITH_INDENT = new InjectionToken<boolean>('kbq-sidepanel-with-indent');\n\n@Component({\n selector: 'kbq-sidepanel-container',\n imports: [\n CdkPortalOutlet,\n CdkTrapFocus\n ],\n templateUrl: './sidepanel-container.component.html',\n styleUrls: ['./sidepanel.scss', './sidepanel-tokens.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n class: 'kbq-sidepanel-container kbq-sidepanel-container_shadowed',\n '[class]': 'size',\n '[class.kbq-sidepanel_nested]': 'withIndent',\n '[attr.id]': 'id',\n '[attr.tabindex]': '-1',\n '[@state]': `{\n value: animationState,\n params: animationTransform\n }`,\n '(@state.start)': 'onAnimation($event)',\n '(@state.done)': 'onAnimation($event)'\n },\n animations: [kbqSidepanelAnimations.sidepanelState]\n})\nexport class KbqSidepanelContainerComponent extends BasePortalOutlet implements OnDestroy {\n private elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n private changeDetectorRef = inject(ChangeDetectorRef);\n sidepanelConfig = inject(KbqSidepanelConfig);\n withIndent = inject(KBQ_SIDEPANEL_WITH_INDENT);\n\n /** ID for the container DOM element. */\n id: string;\n\n /** The portal outlet inside of this container into which the content will be loaded. */\n readonly portalOutlet = viewChild.required(CdkPortalOutlet);\n\n /** The state of the sidepanel animations. */\n animationState: KbqSidepanelAnimationState = KbqSidepanelAnimationState.Void;\n\n /** @docs-private */\n animationTransform: {\n transformIn: string;\n transformOut: string;\n lower: string;\n bottomPanel: string;\n becomingNormal: string;\n };\n\n /** Emits whenever the state of the animation changes. */\n animationStateChanged = new EventEmitter<AnimationEvent>();\n\n /** @docs-private */\n get size(): string {\n return `kbq-sidepanel_${this.sidepanelConfig.size}`;\n }\n\n /** @docs-private */\n get trapFocusAutoCapture(): boolean {\n return this.sidepanelConfig.trapFocusAutoCapture ?? !!this.sidepanelConfig.hasBackdrop;\n }\n\n /** @docs-private */\n get trapFocus(): boolean {\n return this.sidepanelConfig.trapFocus ?? !!this.sidepanelConfig.hasBackdrop;\n }\n\n /** @docs-private */\n protected readonly indentClickEmitter = new Subject<MouseEvent>();\n\n /** Whether the component has been destroyed. */\n private destroyed: boolean;\n\n ngOnDestroy(): void {\n this.destroyed = true;\n }\n\n /**\n * Gets an observable that emits when the indent has been clicked.\n *\n * @docs-private\n */\n indentClick(): Observable<MouseEvent> {\n return this.indentClickEmitter.asObservable();\n }\n\n /** Attach a component portal as content to this sidepanel container. */\n attachComponentPortal<T>(portal: ComponentPortal<T>): ComponentRef<T> {\n this.validatePortalAttached();\n this.setAnimation();\n this.setPanelClass();\n\n return this.portalOutlet().attachComponentPortal(portal);\n }\n\n /** Attach a template portal as content to this sidepanel container. */\n attachTemplatePortal<C>(portal: TemplatePortal<C>): EmbeddedViewRef<C> {\n this.validatePortalAttached();\n this.setAnimation();\n this.setPanelClass();\n\n return this.portalOutlet().attachTemplatePortal(portal);\n }\n\n /** Begin animation of the sidepanel entrance into view. */\n enter(): void {\n if (this.destroyed) return;\n\n this.animationState = KbqSidepanelAnimationState.Visible;\n this.changeDetectorRef.detectChanges();\n }\n\n /** Begin animation of the sidepanel exiting from view. */\n exit(): void {\n if (this.destroyed) return;\n\n this.setAnimationState(KbqSidepanelAnimationState.Hidden);\n }\n\n /** @docs-private */\n onAnimation(event: AnimationEvent) {\n this.animationStateChanged.emit(event);\n }\n\n /** @docs-private */\n setAnimationState(state: KbqSidepanelAnimationState): void {\n this.animationState = state;\n this.changeDetectorRef.markForCheck();\n }\n\n private setAnimation() {\n const position: KbqSidepanelPosition = this.sidepanelConfig.position!;\n\n this.animationTransform = {\n transformIn: kbqSidepanelTransformAnimation[position].in,\n transformOut: kbqSidepanelTransformAnimation[position].out,\n lower: kbqSidepanelTransformAnimation[position].lower,\n bottomPanel: kbqSidepanelTransformAnimation[position].bottomPanel,\n becomingNormal: kbqSidepanelTransformAnimation[position].becomingNormal\n };\n }\n\n private setPanelClass() {\n const element: HTMLElement = this.elementRef.nativeElement;\n const position: KbqSidepanelPosition = this.sidepanelConfig.position!;\n\n element.classList.add(`kbq-sidepanel-container_${position}`);\n }\n\n private validatePortalAttached() {\n if (this.portalOutlet().hasAttached()) {\n throw Error('Attempting to attach sidepanel content after content is already attached');\n }\n }\n}\n","<div class=\"kbq-sidepanel-wrapper\">\n @if (withIndent) {\n <div class=\"kbq-sidepanel-indent\" (click)=\"indentClickEmitter.next($event)\"></div>\n }\n\n <div class=\"kbq-sidepanel-content\" [cdkTrapFocus]=\"trapFocus\" [cdkTrapFocusAutoCapture]=\"trapFocusAutoCapture\">\n <ng-template cdkPortalOutlet />\n </div>\n</div>\n","import { OverlayRef } from '@angular/cdk/overlay';\nimport { signal } from '@angular/core';\nimport { ESCAPE, isHtmlElement, KbqOverflowShadowState } from '@koobiq/components/core';\nimport { merge, Observable, Subject } from 'rxjs';\nimport { filter, take, tap } from 'rxjs/operators';\nimport { KbqSidepanelAnimationState } from './sidepanel-animations';\nimport { KbqSidepanelConfig } from './sidepanel-config';\nimport { KbqSidepanelContainerComponent } from './sidepanel-container.component';\n\n// Counter for unique sidepanel ids.\nlet uniqueId = 0;\n\nexport class KbqSidepanelRef<T = any, R = any> {\n readonly id: string;\n\n /**\n * Vertical scroll overflow state of the sidepanel body.\n * Updated on scroll and used for visual adjustments.\n */\n bodyOverflow = signal<KbqOverflowShadowState>({ top: false, bottom: false });\n\n /** Instance of the component making up the content of the sidepanel. */\n instance: T;\n\n /** Subject for notifying the user that the sidepanel has been closed and dismissed. */\n private readonly afterClosed$ = new Subject<R | undefined>();\n\n /** Subject for notifying the user that the sidepanel starting closing. */\n private readonly beforeClosed$ = new Subject<void>();\n\n /** Subject for notifying the user that the sidepanel has opened and appeared. */\n private readonly afterOpened$ = new Subject<void>();\n\n /** Result to be passed down to the `afterDismissed` stream. */\n private result: R | undefined;\n\n constructor(\n public readonly containerInstance: KbqSidepanelContainerComponent,\n public readonly overlayRef: OverlayRef,\n public readonly config: KbqSidepanelConfig\n ) {\n this.id = this.config.id || `kbq-sidepanel-${uniqueId++}`;\n this.containerInstance.id = this.id;\n overlayRef.backdropElement?.classList?.add(config.backdropClass ?? 'kbq-overlay-dark-backdrop');\n\n const slideBelowStart = containerInstance.animationStateChanged.pipe(\n filter(\n (event) =>\n event.phaseName === 'start' &&\n [KbqSidepanelAnimationState.Lower, KbqSidepanelAnimationState.BottomPanel].includes(\n event.toState as any\n )\n )\n );\n\n // Act on close\n const beforeClosed = containerInstance.animationStateChanged.pipe(\n filter(({ phaseName, toState }) => phaseName === 'start' && toState === KbqSidepanelAnimationState.Hidden),\n take(1),\n tap(() => {\n this.beforeClosed$.next();\n this.beforeClosed$.complete();\n })\n );\n\n // Emit when opening animation completes\n containerInstance.animationStateChanged\n .pipe(\n filter((event) => event.phaseName === 'done' && event.toState === KbqSidepanelAnimationState.Visible),\n take(1)\n )\n .subscribe(() => {\n this.afterOpened$.next();\n this.afterOpened$.complete();\n });\n\n containerInstance.animationStateChanged\n .pipe(\n filter(\n (event) =>\n event.phaseName === 'start' && event.toState === KbqSidepanelAnimationState.BecomingNormal\n )\n )\n .subscribe(() => {\n if (overlayRef.backdropElement?.style) {\n overlayRef.backdropElement.style.opacity = '1';\n }\n });\n\n merge(slideBelowStart, beforeClosed).subscribe(() => {\n if (overlayRef.backdropElement?.style) {\n overlayRef.backdropElement.style.opacity = '0';\n }\n });\n\n // Dispose overlay when closing animation is complete\n containerInstance.animationStateChanged\n .pipe(\n filter((event) => event.phaseName === 'done' && event.toState === KbqSidepanelAnimationState.Hidden),\n take(1)\n )\n .subscribe(() => {\n overlayRef.dispose();\n this.afterClosed$.next(this.result);\n this.afterClosed$.complete();\n });\n\n merge(\n overlayRef.backdropClick(),\n overlayRef.keydownEvents().pipe(\n // keyCode is deprecated, but IE11 and Edge don't support code property, which we need use instead\n filter((event) => event.keyCode === ESCAPE)\n ),\n this.containerInstance.indentClick(),\n overlayRef\n .outsidePointerEvents()\n .pipe(\n filter((event) => isHtmlElement(event.target) && !!event.target.closest('.kbq-sidepanel-container'))\n )\n ).subscribe(() => {\n if (this.config.disableClose) return;\n\n this.close();\n });\n }\n\n close(result?: R): void {\n if (!this.afterClosed$.closed) {\n // Transition the backdrop in parallel to the sidepanel.\n this.containerInstance.animationStateChanged\n .pipe(\n filter((event) => event.phaseName === 'done'),\n take(1)\n )\n .subscribe(() => this.overlayRef.detachBackdrop());\n\n this.result = result;\n this.containerInstance.exit();\n }\n }\n\n /** Gets an observable that is notified when the sidepanel is started closing. */\n beforeClosed(): Observable<void> {\n return this.beforeClosed$.asObservable();\n }\n\n /** Gets an observable that is notified when the sidepanel is finished closing. */\n afterClosed(): Observable<R | undefined> {\n return this.afterClosed$.asObservable();\n }\n\n /** Gets an observable that is notified when the sidepanel has opened and appeared. */\n afterOpened(): Observable<void> {\n return this.afterOpened$.asObservable();\n }\n}\n","import { Overlay, OverlayConfig, OverlayRef } from '@angular/cdk/overlay';\nimport { ComponentPortal, ComponentType, TemplatePortal } from '@angular/cdk/portal';\nimport { ComponentRef, Injectable, InjectionToken, Injector, OnDestroy, TemplateRef, inject } from '@angular/core';\nimport { KbqSidepanelAnimationState } from './sidepanel-animations';\nimport { KBQ_SIDEPANEL_DATA, KbqSidepanelConfig } from './sidepanel-config';\nimport { KBQ_SIDEPANEL_WITH_INDENT, KbqSidepanelContainerComponent } from './sidepanel-container.component';\nimport { KbqSidepanelRef } from './sidepanel-ref';\n\n/** Injection token that can be used to specify default sidepanel options. */\nexport const KBQ_SIDEPANEL_DEFAULT_OPTIONS = new InjectionToken<KbqSidepanelConfig>('kbq-sidepanel-default-options');\n\n@Injectable()\nexport class KbqSidepanelService implements OnDestroy {\n private overlay = inject(Overlay);\n private injector = inject(Injector);\n private defaultOptions = inject<KbqSidepanelConfig>(KBQ_SIDEPANEL_DEFAULT_OPTIONS, { optional: true });\n private parentSidepanelService = inject(KbqSidepanelService, { optional: true, skipSelf: true });\n private openedSidepanelsAtThisLevel: KbqSidepanelRef[] = [];\n\n /** Keeps track of the currently-open sidepanels. */\n get openedSidepanels(): KbqSidepanelRef[] {\n return this.parentSidepanelService\n ? this.parentSidepanelService.openedSidepanels\n : this.openedSidepanelsAtThisLevel;\n }\n\n ngOnDestroy() {\n // Only close the sidepanels at this level on destroy\n // since the parent service may still be active.\n this.closeSidepanels(this.openedSidepanelsAtThisLevel);\n }\n\n open<T, D = any>(\n componentOrTemplateRef: ComponentType<T> | TemplateRef<T>,\n config?: KbqSidepanelConfig<D>\n ): KbqSidepanelRef<T> {\n const fullConfig = {\n ...(this.defaultOptions || new KbqSidepanelConfig()),\n ...config\n };\n\n if (fullConfig.id && this.getSidepanelById(fullConfig.id)) {\n throw Error(`Sidepanel with id \"${fullConfig.id}\" exists already. The sidepanel id must be unique.`);\n }\n\n const overlayRef = this.createOverlay(fullConfig);\n\n overlayRef.hostElement.classList.add('kbq-sidepanel-overlay');\n const container = this.attachContainer(overlayRef, fullConfig);\n const ref = new KbqSidepanelRef(container, overlayRef, fullConfig);\n\n if (componentOrTemplateRef instanceof TemplateRef) {\n container.attachTemplatePortal(\n new TemplatePortal<T>(\n componentOrTemplateRef,\n null!,\n {\n $implicit: fullConfig.data,\n sidepanelRef: ref\n } as any,\n this.createInjector(fullConfig, ref, container)\n )\n );\n } else {\n const portal = new ComponentPortal(\n componentOrTemplateRef,\n undefined,\n this.createInjector(fullConfig, ref, container)\n );\n const contentRef = container.attachComponentPortal(portal);\n\n ref.instance = contentRef.instance;\n }\n\n this.openedSidepanels.push(ref);\n ref.beforeClosed().subscribe(() => this.updateAnimationState(ref));\n ref.afterClosed().subscribe(() => this.removeOpenSidepanel(ref));\n\n container.enter();\n\n return ref;\n }\n\n /**\n * Closes all of the currently-open sidepanels.\n */\n closeAll(): void {\n this.closeSidepanels(this.openedSidepanels);\n }\n\n /**\n * Finds an open sidepanel by its id.\n * @param id ID to use when looking up the sidepanel.\n */\n getSidepanelById(id: string): KbqSidepanelRef | undefined {\n return this.openedSidepanels.find((sidepanel) => sidepanel.id === id);\n }\n\n /**\n * Attaches the sidepanel container component to the overlay.\n */\n private attachContainer(overlayRef: OverlayRef, config: KbqSidepanelConfig): KbqSidepanelContainerComponent {\n const openedSidepanelsWithSamePosition = this.getOpenedSidepanelsWithSamePosition(config);\n\n const lower = openedSidepanelsWithSamePosition[openedSidepanelsWithSamePosition.length - 1];\n const bottom = openedSidepanelsWithSamePosition[openedSidepanelsWithSamePosition.length - 2];\n\n this.setAnimationState(lower, KbqSidepanelAnimationState.Lower);\n this.setAnimationState(bottom, KbqSidepanelAnimationState.BottomPanel);\n\n const injector = Injector.create({\n parent: this.injector,\n providers: [\n { provide: KbqSidepanelConfig, useValue: config },\n { provide: KBQ_SIDEPANEL_WITH_INDENT, useValue: openedSidepanelsWithSamePosition.length >= 1 }\n ]\n });\n\n const containerPortal = new ComponentPortal(KbqSidepanelContainerComponent, undefined, injector);\n const containerRef: ComponentRef<KbqSidepanelContainerComponent> = overlayRef.attach(containerPortal);\n\n return containerRef.instance;\n }\n\n /**\n * Creates a custom injector to be used inside the sidepanel. This allows a component loaded inside\n * of a sidepanel to close itself and, optionally, to return a value.\n * @param config Config object that is used to construct the sidepanel.\n * @param sidepanelRef Reference to the sidepanel.\n * @param sidepanelContainer Sidepanel container element that wraps all of the contents.\n * @returns The custom injector that can be used inside the sidepanel.\n */\n private createInjector<T>(\n config: KbqSidepanelConfig,\n sidepanelRef: KbqSidepanelRef<T>,\n sidepanelContainer: KbqSidepanelContainerComponent\n ): Injector {\n // The KbqSidepanelContainerComponent is injected in the portal as the KbqSidepanelContainerComponent and\n // the sidepanel's content are created out of the same ViewContainerRef and as such, are siblings for injector\n // purposes. To allow the hierarchy that is expected, the KbqSidepanelContainerComponent is explicitly\n // added to the injection tokens.\n\n return Injector.create({\n parent: config.injector ?? this.injector,\n providers: [\n { provide: KbqSidepanelContainerComponent, useValue: sidepanelContainer },\n { provide: KBQ_SIDEPANEL_DATA, useValue: config.data },\n { provide: KbqSidepanelRef, useValue: sidepanelRef }\n ]\n });\n }\n\n /**\n * Creates a new overlay and places it in the correct location.\n * @param config The user-specified sidepanel config.\n */\n private createOverlay(config: KbqSidepanelConfig): OverlayRef {\n const overlayConfig = new OverlayConfig({\n hasBackdrop: config.hasBackdrop,\n backdropClass: '',\n maxWidth: '100%',\n panelClass: config.overlayPanelClass,\n scrollStrategy: this.overlay.scrollStrategies.block(),\n positionStrategy: this.overlay.position().global()\n });\n\n return this.overlay.create(overlayConfig);\n }\n\n private closeSidepanels(sidepanels: KbqSidepanelRef[]) {\n const reversedOpenedSidepanels = [...sidepanels.reverse()];\n\n reversedOpenedSidepanels.forEach((sidepanelRef: KbqSidepanelRef) => sidepanelRef.close());\n }\n\n private getOpenedSidepanelsWithSamePosition(config: KbqSidepanelConfig): KbqSidepanelRef[] {\n return this.openedSidepanels.filter((sidepanelRef) => sidepanelRef.config.position === config.position);\n }\n\n private updateAnimationState(sidepanelRef: KbqSidepanelRef) {\n const index = this.openedSidepanels.indexOf(sidepanelRef);\n\n // only allow animations if ref is last element in sidepanels list\n if (index === -1 || index !== this.openedSidepanels.length - 1) return;\n\n const [lower, bottom] = this.getLowerSidepanelsWithSamePosition(index);\n\n this.setAnimationState(lower, KbqSidepanelAnimationState.BecomingNormal);\n this.setAnimationState(bottom, KbqSidepanelAnimationState.Lower);\n }\n\n /**\n * Moves a sidepanel into `state`, unless it is closing already.\n *\n * The exit animation is what disposes the overlay, so interrupting it with another state leaves the\n * sidepanel in the DOM and in `openedSidepanels` for good — which is what closing a stack of them as\n * a group used to do to the panels underneath.\n */\n private setAnimationState(sidepanelRef: KbqSidepanelRef | undefined, state: KbqSidepanelAnimationState): void {\n const containerInstance = sidepanelRef?.containerInstance;\n\n if (!containerInstance || containerInstance.animationState === KbqSidepanelAnimationState.Hidden) return;\n\n containerInstance.setAnimationState(state);\n }\n\n /**\n * Removes a sidepanel from the array of open sidepanels.\n * @param sidepanelRef Sidepanel to be removed.\n */\n private removeOpenSidepanel(sidepanelRef: KbqSidepanelRef) {\n const index = this.openedSidepanels.indexOf(sidepanelRef);\n\n if (index > -1) {\n const [lower] = this.getLowerSidepanelsWithSamePosition(index);\n\n this.setAnimationState(lower, KbqSidepanelAnimationState.Visible);\n\n this.openedSidepanels.splice(index, 1);\n }\n }\n\n private getLowerSidepanelsWithSamePosition(index: number): KbqSidepanelRef[] {\n const openedSidepanelsWithSamePosition = this.getOpenedSidepanelsWithSamePosition(\n this.openedSidepanels[index].config\n );\n\n return [\n openedSidepanelsWithSamePosition[openedSidepanelsWithSamePosition.length - 2],\n openedSidepanelsWithSamePosition[openedSidepanelsWithSamePosition.length - 3]\n ];\n }\n}\n","import {\n booleanAttribute,\n Component,\n Directive,\n effect,\n ElementRef,\n inject,\n Input,\n input,\n OnChanges,\n OnInit,\n Renderer2,\n SimpleChanges\n} from '@angular/core';\nimport { KbqButtonModule } from '@koobiq/components/button';\nimport { KbqOverflowShadowContainer } from '@koobiq/components/core';\nimport { KbqIconModule } from '@koobiq/components/icon';\nimport { KbqTitleDirective } from '@koobiq/components/title';\nimport { KbqSidepanelRef } from './sidepanel-ref';\nimport { KbqSidepanelService } from './sidepanel.service';\n\n/**\n * Button that will close the current sidepanel.\n */\n@Directive({\n selector: 'button[kbq-sidepanel-close], button[kbqSidepanelClose]',\n host: {\n class: 'kbq-sidepanel-close',\n '(click)': 'sidepanelRef.close(sidepanelResult)'\n }\n})\nexport class KbqSidepanelClose implements OnInit, OnChanges {\n private readonly declaredSidepanelRef = inject(KbqSidepanelRef, { optional: true });\n private elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n private sidepanelService = inject(KbqSidepanelService);\n private readonly renderer = inject(Renderer2);\n\n // TODO: Skipped for migration because:\n // Your application code writes to the input. This prevents migration.\n @Input('kbq-sidepanel-close') sidepanelResult: any;\n\n readonly kbqSidepanelClose = input<any>();\n\n /**\n * Sidepanel the button closes: the one it is rendered in. A button rendered outside any sidepanel, such as\n * an item of a dropdown opened from one, closes the sidepanel its template is declared in.\n */\n get sidepanelRef(): KbqSidepanelRef {\n const container = this.elementRef.nativeElement.closest('.kbq-sidepanel-container');\n const renderedIn = container && this.sidepanelService.openedSidepanels.find(({ id }) => id === container.id);\n const sidepanelRef = renderedIn ?? this.declaredSidepanelRef;\n\n if (!sidepanelRef) {\n throw Error('kbqSidepanelClose: the button is neither rendered nor declared inside a sidepanel.');\n }\n\n return sidepanelRef;\n }\n\n ngOnInit() {\n // A button with no type submits the form it sits in, so closing a sidepanel from inside a form would\n // submit it too. A type the author set is left alone.\n if (!this.elementRef.nativeElement.hasAttribute('type')) {\n this.renderer.setAttribute(this.elementRef.nativeElement, 'type', 'button');\n }\n }\n\n ngOnChanges(changes: SimpleChanges) {\n const proxiedChange = changes.kbqSidepanelClose || changes.sidepanelResult;\n\n if (proxiedChange) {\n this.sidepanelResult = proxiedChange.currentValue;\n }\n }\n}\n\n/**\n * Header of a sidepanel.\n */\n@Component({\n selector: 'kbq-sidepanel-header',\n imports: [\n KbqButtonModule,\n KbqSidepanelClose,\n KbqIconModule,\n KbqTitleDirective\n ],\n template: `\n <div class=\"kbq-sidepanel-title\" kbq-title>\n <ng-content />\n </div>\n\n @if (closeable()) {\n <button kbq-button kbq-sidepanel-close type=\"button\" [color]=\"'contrast'\" [kbqStyle]=\"'transparent'\">\n <i kbq-icon=\"kbq-xmark_16\" [color]=\"'contrast'\"></i>\n </button>\n }\n `,\n host: {\n class: 'kbq-sidepanel-header',\n '[class.kbq-sidepanel-header_truncate-text]': 'truncateText()',\n '[style.box-shadow]': 'sidepanelRef.bodyOverflow().top ? \"var(--kbq-shadow-overflow-normal-bottom)\" : null'\n }\n})\nexport class KbqSidepanelHeader {\n /** Add button for close sidepanel. Default false */\n readonly closeable = input<boolean, unknown>(false, { transform: booleanAttribute });\n\n /** Enables text truncation. Default true */\n readonly truncateText = input<boolean, unknown>(true, { transform: booleanAttribute });\n\n /** @docs-private */\n protected sidepanelRef = inject(KbqSidepanelRef);\n}\n\n/**\n * Scrollable content container of a sidepanel.\n */\n@Directive({\n selector: 'kbq-sidepanel-body, [kbq-sidepanel-body], kbqSidepanelBody',\n host: {\n class: 'kbq-sidepanel-body kbq-scrollbar'\n },\n hostDirectives: [KbqOverflowShadowContainer]\n})\nexport class KbqSidepanelBody {\n private readonly sidepanelRef = inject(KbqSidepanelRef);\n private readonly overflowContainer = inject(KbqOverflowShadowContainer);\n\n constructor() {\n effect(() => this.sidepanelRef.bodyOverflow.set(this.overflowContainer.overflow()));\n }\n}\n\n/**\n * Footer of a sidepanel.\n */\n@Directive({\n selector: 'kbq-sidepanel-footer, [kbq-sidepanel-footer], kbqSidepanelFooter',\n host: {\n class: 'kbq-sidepanel-footer',\n '[style.box-shadow]': 'sidepanelRef.bodyOverflow().bottom ? \"var(--kbq-shadow-overflow-normal-top)\" : null'\n }\n})\nexport class KbqSidepanelFooter {\n /** @docs-private */\n protected sidepanelRef = inject(KbqSidepanelRef);\n}\n\n/**\n * Actions block of a sidepanel footer.\n */\n@Directive({\n selector: 'kbq-sidepanel-actions, [kbq-sidepanel-actions], kbqSidepanelActions',\n host: {\n class: 'kbq-sidepanel-actions'\n }\n})\nexport class KbqSidepanelActions {}\n","import { A11yModule, ConfigurableFocusTrapFactory, FocusTrapFactory } from '@angular/cdk/a11y';\nimport { OverlayModule } from '@angular/cdk/overlay';\nimport { PortalModule } from '@angular/cdk/portal';\nimport { NgModule } from '@angular/core';\nimport { KbqButtonModule } from '@koobiq/components/button';\nimport { KbqIconModule } from '@koobiq/components/icon';\nimport { KbqTitleModule } from '@koobiq/components/title';\nimport { KbqSidepanelContainerComponent } from './sidepanel-container.component';\nimport {\n KbqSidepanelActions,\n KbqSidepanelBody,\n KbqSidepanelClose,\n KbqSidepanelFooter,\n KbqSidepanelHeader\n} from './sidepanel-directives';\nimport { KbqSidepanelService } from './sidepanel.service';\n\n@NgModule({\n imports: [\n OverlayModule,\n PortalModule,\n KbqButtonModule,\n KbqIconModule,\n KbqTitleModule,\n A11yModule,\n KbqSidepanelContainerComponent,\n KbqSidepanelClose,\n KbqSidepanelHeader,\n KbqSidepanelBody,\n KbqSidepanelFooter,\n KbqSidepanelActions\n ],\n providers: [\n KbqSidepanelService,\n { provide: FocusTrapFactory, useClass: ConfigurableFocusTrapFactory }\n ],\n exports: [\n KbqSidepanelContainerComponent,\n KbqSidepanelClose,\n KbqSidepanelHeader,\n KbqSidepanelBody,\n KbqSidepanelFooter,\n KbqSidepanelActions\n ]\n})\nexport class KbqSidepanelModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
@@ -188,9 +188,7 @@ class KbqToastService {
|
|
|
188
188
|
this.hovered = new BehaviorSubject(false);
|
|
189
189
|
this.focused = new BehaviorSubject(false);
|
|
190
190
|
this.animation = new BehaviorSubject(null);
|
|
191
|
-
this.timer = timer(CHECK_INTERVAL, CHECK_INTERVAL).pipe(filter$1(() => this.toasts.length > 0 && !this.hovered.getValue() && !this.focused.getValue()),
|
|
192
|
-
// eslint-disable-next-line rxjs-x/no-ignored-replay-buffer
|
|
193
|
-
shareReplay());
|
|
191
|
+
this.timer = timer(CHECK_INTERVAL, CHECK_INTERVAL).pipe(filter$1(() => this.toasts.length > 0 && !this.hovered.getValue() && !this.focused.getValue()), shareReplay({ bufferSize: 1, refCount: true }));
|
|
194
192
|
this.toastsDict = {};
|
|
195
193
|
this.templatesDict = {};
|
|
196
194
|
this.processToasts = () => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"koobiq-components-toast.mjs","sources":["../../../packages/components/toast/toast-animations.ts","../../../packages/components/toast/toast.type.ts","../../../packages/components/toast/toast.component.ts","../../../packages/components/toast/toast.component.html","../../../packages/components/toast/toast.service.ts","../../../packages/components/toast/toast-container.component.ts","../../../packages/components/toast/toast.module.ts","../../../packages/components/toast/koobiq-components-toast.ts"],"sourcesContent":["import { animate, AnimationTriggerMetadata, state, style, transition, trigger } from '@angular/animations';\n\nexport const kbqToastAnimations: {\n readonly toastState: AnimationTriggerMetadata;\n} = {\n toastState: trigger('state', [\n state('void', style({ transform: 'translateX(100%)', opacity: 0 })),\n transition('* => visible', animate('150ms ease-out', style({ transform: 'translateX(0%)', opacity: 1 }))),\n transition(\n '* => void',\n animate('300ms ease-in', style({ transform: 'translateX(50%)', opacity: 0, height: 0 }))\n )\n ])\n};\n\nexport const toastState = kbqToastAnimations.toastState;\n","import { InjectionToken, Provider, TemplateRef } from '@angular/core';\n\nexport enum KbqToastStyle {\n Contrast = 'contrast',\n Success = 'success',\n Warning = 'warning',\n Error = 'error'\n}\n\nexport enum KbqToastPosition {\n TOP_RIGHT = 'top-right',\n TOP_LEFT = 'top-left',\n TOP_CENTER = 'top-center',\n BOTTOM_RIGHT = 'bottom-right',\n BOTTOM_LEFT = 'bottom-left',\n BOTTOM_CENTER = 'bottom-center',\n CENTER = 'center'\n}\n\nexport class KbqToastData {\n id?: string;\n title?: string | TemplateRef<any>;\n style?: KbqToastStyle | string;\n\n icon?: TemplateRef<any> | boolean;\n iconClass?: string;\n caption?: string | TemplateRef<any>;\n\n content?: string | TemplateRef<any>;\n actions?: TemplateRef<any>;\n\n closeButton?: TemplateRef<any> | boolean;\n}\n\nexport interface KbqToastConfig {\n position: KbqToastPosition;\n duration: number;\n delay: number;\n onTop: boolean;\n /** Custom indentation for positioning the toast stack overlay when using `GlobalPositionStrategy` */\n indent: {\n /** Vertical spacing from the top or bottom of the screen. */\n vertical: number;\n\n /** Horizontal spacing from the left or right of the screen. */\n horizontal: number;\n };\n}\n\nexport const defaultToastConfig: KbqToastConfig = {\n position: KbqToastPosition.TOP_RIGHT,\n duration: 5000,\n delay: 2000,\n onTop: false,\n indent: {\n vertical: 0,\n horizontal: 0\n }\n};\n\nexport const KBQ_TOAST_CONFIG = new InjectionToken<KbqToastConfig>('kbq-toast-config', {\n factory: () => defaultToastConfig\n});\n\n/** Utility provider for `KBQ_TOAST_CONFIG`. */\nexport const kbqToastConfigurationProvider = (configuration: Partial<KbqToastConfig>): Provider => ({\n provide: KBQ_TOAST_CONFIG,\n useValue: { ...defaultToastConfig, ...configuration }\n});\n","import { AnimationEvent } from '@angular/animations';\nimport { FocusMonitor, FocusOrigin } from '@angular/cdk/a11y';\nimport { NgTemplateOutlet } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n Directive,\n ElementRef,\n OnDestroy,\n TemplateRef,\n ViewEncapsulation,\n inject\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { KbqReadStateDirective, ThemePalette } from '@koobiq/components/core';\nimport { KbqIconModule } from '@koobiq/components/icon';\nimport { KbqTitleModule } from '@koobiq/components/title';\nimport { BehaviorSubject, merge } from 'rxjs';\nimport { filter } from 'rxjs/operators';\nimport { kbqToastAnimations } from './toast-animations';\nimport { KbqToastService } from './toast.service';\nimport { KbqToastData, KbqToastStyle } from './toast.type';\n\n@Directive({\n selector: '[kbq-toast-close-button]',\n host: {\n class: 'kbq-toast__close-button'\n }\n})\nexport class KbqToastCloseButton {}\n\nlet id = 0;\n\n@Component({\n selector: 'kbq-toast',\n imports: [\n NgTemplateOutlet,\n KbqIconModule,\n KbqTitleModule,\n KbqToastCloseButton\n ],\n templateUrl: './toast.component.html',\n styleUrls: ['./toast.component.scss', './toast-tokens.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n class: 'kbq-toast',\n '[class]': 'toastStyle',\n '[class.kbq-toast_dismissible]': 'data.closeButton',\n '[@state]': 'animationState',\n '(@state.start)': 'onAnimation($event)',\n '(@state.done)': 'onAnimation($event)',\n '(mouseenter)': 'hovered.next(true)',\n '(mouseleave)': 'hovered.next(false)',\n '(keydown.esc)': 'close()'\n },\n hostDirectives: [KbqReadStateDirective],\n animations: [kbqToastAnimations.toastState]\n})\nexport class KbqToastComponent implements OnDestroy {\n readonly data = inject(KbqToastData);\n readonly service = inject(KbqToastService);\n elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n private focusMonitor = inject(FocusMonitor);\n\n protected readonly readStateDirective = inject(KbqReadStateDirective, { host: true });\n\n themePalette = ThemePalette;\n\n animationState = 'void';\n\n readonly hovered = new BehaviorSubject<boolean>(false);\n readonly focused = new BehaviorSubject<boolean>(false);\n\n id = id++;\n ttl;\n delay;\n\n $implicit;\n\n get toastStyle() {\n return {\n [`kbq-toast_${this.data.style}`]: true\n };\n }\n\n get isFocusedOrHovered(): boolean {\n return this.hovered.getValue() || this.focused.getValue();\n }\n\n constructor() {\n this.$implicit = this;\n\n this.data.style = this.data.style || KbqToastStyle.Contrast;\n this.data.icon = this.data.icon !== undefined ? this.data.icon : true;\n this.data.iconClass = this.data.iconClass || undefined;\n this.data.closeButton = this.data.closeButton !== undefined ? this.data.closeButton : true;\n\n this.animationState = 'visible';\n\n this.runFocusMonitor();\n\n this.hovered.subscribe(this.service.hovered);\n this.focused.subscribe(this.service.focused);\n\n merge(this.hovered, this.focused)\n .pipe(\n filter((value) => value),\n takeUntilDestroyed()\n )\n .subscribe(() => {\n if (this.ttl === 0) {\n return;\n }\n\n this.ttl = this.ttl < this.delay ? this.delay : this.ttl;\n });\n\n this.readStateDirective.read\n .pipe(\n filter((value) => value),\n takeUntilDestroyed()\n )\n .subscribe(() => this.service.read.next(this.data));\n }\n\n ngOnDestroy() {\n this.stopFocusMonitor();\n\n this.hovered.next(false);\n this.focused.next(false);\n }\n\n close(): void {\n this.service.read.next(this.data);\n this.service.hide(this.id);\n }\n\n isTemplateRef(value): boolean {\n return value instanceof TemplateRef;\n }\n\n onAnimation($event: AnimationEvent) {\n this.service.animation.next($event);\n }\n\n private runFocusMonitor() {\n this.focusMonitor\n .monitor(this.elementRef.nativeElement, true)\n .subscribe((origin: FocusOrigin) => this.focused.next(!!origin));\n }\n\n private stopFocusMonitor() {\n this.focusMonitor.stopMonitoring(this.elementRef.nativeElement);\n }\n}\n","@if (data.icon) {\n <div class=\"kbq-toast__icon-container layout-row layout-align-start-start\">\n @if (data.icon === true) {\n @switch (data.style) {\n @case ('contrast') {\n <i\n kbq-icon=\"kbq-circle-info_16\"\n class=\"kbq-toast__icon\"\n [color]=\"$any(data.style)\"\n [class]=\"data.iconClass\"\n ></i>\n }\n @case ('success') {\n <i\n kbq-icon=\"kbq-circle-check_16\"\n class=\"kbq-toast__icon\"\n [color]=\"$any(data.style)\"\n [class]=\"data.iconClass\"\n ></i>\n }\n @case ('warning') {\n <i\n kbq-icon=\"kbq-triangle-exclamation_16\"\n class=\"kbq-toast__icon\"\n [color]=\"$any(data.style)\"\n [class]=\"data.iconClass\"\n ></i>\n }\n @case ('error') {\n <i\n kbq-icon=\"kbq-triangle-exclamation_16\"\n class=\"kbq-toast__icon\"\n [color]=\"$any(data.style)\"\n [class]=\"data.iconClass\"\n ></i>\n }\n }\n }\n @if (isTemplateRef(data.icon)) {\n <ng-container [ngTemplateOutlet]=\"$any(data.icon)\" [ngTemplateOutletContext]=\"{ $implicit }\" />\n }\n </div>\n}\n\n<div class=\"kbq-toast__container\">\n @if (data.title) {\n <div\n kbq-title\n class=\"kbq-toast__title\"\n [class.kbq-toast__title_only-text]=\"!isTemplateRef(data.title)\"\n [class.kbq-toast__title_with-content]=\"data.caption || data.content\"\n >\n @if (isTemplateRef(data.title)) {\n <ng-container [ngTemplateOutlet]=\"$any(data.title)\" [ngTemplateOutletContext]=\"{ $implicit }\" />\n } @else {\n <p>{{ data.title }}</p>\n }\n </div>\n }\n\n @if (data.caption) {\n <div\n kbq-title\n [class.kbq-toast__text]=\"data.title\"\n [class.kbq-toast__text_only-text]=\"!isTemplateRef(data.caption)\"\n [class.kbq-toast__title]=\"!data.title\"\n >\n @if (isTemplateRef(data.caption)) {\n <ng-container [ngTemplateOutlet]=\"$any(data.caption)\" [ngTemplateOutletContext]=\"{ $implicit }\" />\n }\n <!-- prettier-ignore -->\n @else {{{ data.caption }}}\n </div>\n }\n\n @if (data.content) {\n <div class=\"kbq-toast__content\" [class.kbq-toast__content_only-text]=\"!isTemplateRef(data.content)\">\n @if (isTemplateRef(data.content)) {\n <ng-container [ngTemplateOutlet]=\"$any(data.content)\" [ngTemplateOutletContext]=\"{ $implicit }\" />\n }\n <!-- prettier-ignore -->\n @else {{{ data.content }}}\n </div>\n }\n\n @if (data.actions) {\n <div class=\"kbq-toast__actions\">\n @if (isTemplateRef(data.actions)) {\n <ng-container [ngTemplateOutlet]=\"$any(data.actions)\" [ngTemplateOutletContext]=\"{ $implicit }\" />\n } @else {\n {{ data.actions }}\n }\n </div>\n }\n</div>\n\n@if (data.closeButton) {\n <div>\n @if (data.closeButton === true) {\n <i kbq-icon-button=\"kbq-xmark-s_16\" kbq-toast-close-button (click)=\"close()\"></i>\n }\n @if (isTemplateRef(data.closeButton)) {\n <ng-container [ngTemplateOutlet]=\"$any(data.closeButton)\" [ngTemplateOutletContext]=\"{ $implicit }\" />\n }\n </div>\n}\n","import { AnimationEvent } from '@angular/animations';\nimport { GlobalPositionStrategy, Overlay, OverlayContainer, OverlayRef } from '@angular/cdk/overlay';\nimport { ComponentPortal } from '@angular/cdk/portal';\nimport {\n ComponentRef,\n EmbeddedViewRef,\n Injectable,\n InjectionToken,\n Injector,\n NgZone,\n OnDestroy,\n TemplateRef,\n inject\n} from '@angular/core';\nimport { BehaviorSubject, Subscription, filter, shareReplay, timer } from 'rxjs';\nimport { KbqToastContainerComponent } from './toast-container.component';\nimport { KbqToastComponent } from './toast.component';\nimport { KBQ_TOAST_CONFIG, KbqToastConfig, KbqToastData, KbqToastPosition } from './toast.type';\n\nexport const KBQ_TOAST_FACTORY = new InjectionToken('KBQ_TOAST_FACTORY', {\n factory: () => KbqToastComponent\n});\n\nconst CHECK_INTERVAL = 500;\n\nlet templateId = 0;\n\n/** Generic `T` is a type hint only; the runtime component comes from `KBQ_TOAST_FACTORY`. */\n@Injectable({ providedIn: 'root' })\nexport class KbqToastService<T extends KbqToastComponent = KbqToastComponent> implements OnDestroy {\n private overlay = inject(Overlay);\n private injector = inject(Injector);\n private overlayContainer = inject(OverlayContainer);\n private ngZone = inject(NgZone);\n private toastFactory = inject(KBQ_TOAST_FACTORY);\n private toastConfig = inject<KbqToastConfig>(KBQ_TOAST_CONFIG, { optional: true })!;\n\n get toasts(): ComponentRef<T>[] {\n return Object.values(this.toastsDict).filter((item) => !item.hostView.destroyed);\n }\n\n get templates(): EmbeddedViewRef<T>[] {\n return Object.values(this.templatesDict);\n }\n\n readonly read = new BehaviorSubject<KbqToastData | null>(null);\n readonly hovered = new BehaviorSubject<boolean>(false);\n readonly focused = new BehaviorSubject<boolean>(false);\n readonly animation = new BehaviorSubject<AnimationEvent | null>(null);\n\n timer = timer(CHECK_INTERVAL, CHECK_INTERVAL).pipe(\n filter(() => this.toasts.length > 0 && !this.hovered.getValue() && !this.focused.getValue()),\n // eslint-disable-next-line rxjs-x/no-ignored-replay-buffer\n shareReplay()\n );\n\n private containerInstance?: KbqToastContainerComponent;\n private overlayRef?: OverlayRef;\n private portal?: ComponentPortal<KbqToastContainerComponent>;\n private timerSubscription: Subscription;\n private currentPosition?: KbqToastPosition;\n\n private toastsDict: { [id: number]: ComponentRef<T> } = {};\n private templatesDict: { [id: number]: EmbeddedViewRef<T> } = {};\n\n constructor() {\n this.ngZone.runOutsideAngular(() => {\n this.timerSubscription = this.timer.subscribe(this.processToasts);\n });\n }\n\n ngOnDestroy(): void {\n this.timerSubscription.unsubscribe();\n this.overlayRef?.dispose();\n this.overlayRef = undefined;\n this.containerInstance = undefined;\n this.portal = undefined;\n this.currentPosition = undefined;\n this.toastsDict = {};\n this.templatesDict = {};\n }\n\n show(\n data: KbqToastData,\n duration: number = this.toastConfig.duration,\n onTop: boolean = this.toastConfig.onTop\n ): { ref: ComponentRef<T>; id: number } {\n const container = this.prepareContainer();\n const componentRef = container.createToast<T>(data, this.toastFactory, onTop);\n\n this.toastsDict[componentRef.instance.id] = componentRef;\n\n componentRef.instance.ttl = duration;\n componentRef.instance.delay = this.toastConfig.delay;\n\n return { ref: componentRef, id: componentRef.instance.id };\n }\n\n showTemplate(\n data: KbqToastData,\n template: TemplateRef<any>,\n duration: number = this.toastConfig.duration,\n onTop: boolean = this.toastConfig.onTop\n ): { ref: EmbeddedViewRef<T>; id: number } {\n const container = this.prepareContainer();\n const viewRef = container.createTemplate<T>(data, template, onTop);\n const id = templateId++;\n\n this.templatesDict[id] = viewRef;\n this.addRemoveTimer(id, duration);\n\n return { ref: viewRef, id };\n }\n\n hide(id: number) {\n const componentRef = this.toastsDict[id];\n\n if (!componentRef) {\n return;\n }\n\n this.containerInstance?.remove(componentRef.hostView);\n\n delete this.toastsDict[id];\n\n this.detachOverlay();\n }\n\n hideTemplate(id: number) {\n const viewRef = this.templatesDict[id];\n\n if (!viewRef) {\n return;\n }\n\n this.containerInstance?.remove(viewRef);\n\n delete this.templatesDict[id];\n\n this.detachOverlay();\n }\n\n private detachOverlay() {\n if (this.toasts.length !== 0 || this.templates.length !== 0) {\n return;\n }\n\n this.overlayRef?.detach();\n }\n\n private processToasts = () => {\n for (const toast of this.toasts.filter((item) => item.instance.ttl > 0)) {\n toast.instance.ttl -= CHECK_INTERVAL;\n\n if (toast.instance.ttl <= 0) {\n this.ngZone.run(() => {\n this.hide(toast.instance.id);\n\n this.updateTTLAfterDelete();\n });\n\n break;\n }\n }\n };\n\n private updateTTLAfterDelete() {\n this.toasts\n .filter((item) => item.instance.ttl > 0)\n .forEach((item) => (item.instance.ttl = this.toastConfig.delay));\n }\n\n private addRemoveTimer(id: number, duration: number) {\n setTimeout(() => this.hideTemplate(id), duration);\n }\n\n private prepareContainer(): KbqToastContainerComponent {\n const overlayRef = this.createOverlay();\n const portal = this.portal || new ComponentPortal(KbqToastContainerComponent, null, this.injector);\n\n this.portal = portal;\n\n if (!overlayRef.hasAttached()) {\n this.containerInstance = overlayRef.attach(portal).instance;\n this.containerInstance\n .getElementRef()\n .nativeElement.classList.add(`kbq-toast-container-${this.toastConfig.position}`);\n }\n\n this.toTop(overlayRef);\n\n return this.containerInstance!;\n }\n\n private toTop(overlayRef: OverlayRef) {\n const overlays = this.overlayContainer.getContainerElement().childNodes;\n\n if (overlays.length > 1) {\n overlays[overlays.length - 1].after(overlayRef.hostElement);\n }\n }\n\n private createOverlay(): OverlayRef {\n const expectedPosition = this.toastConfig.position;\n\n if (this.overlayRef && this.currentPosition === expectedPosition) {\n return this.overlayRef;\n }\n\n if (this.overlayRef) {\n this.overlayRef.dispose();\n this.containerInstance = undefined;\n this.portal = undefined;\n }\n\n const positionStrategy = this.getPositionStrategy(expectedPosition);\n const overlayRef = this.overlay.create({ positionStrategy });\n\n overlayRef.hostElement.classList.add('kbq-toast-overlay');\n\n this.overlayRef = overlayRef;\n this.currentPosition = expectedPosition;\n\n return overlayRef;\n }\n\n private getPositionStrategy(position?: KbqToastPosition): GlobalPositionStrategy {\n switch (position) {\n case KbqToastPosition.CENTER:\n return this.getCenter();\n case KbqToastPosition.BOTTOM_CENTER:\n return this.getBottomCenter();\n case KbqToastPosition.BOTTOM_LEFT:\n return this.getBottomLeft();\n case KbqToastPosition.BOTTOM_RIGHT:\n return this.getBottomRight();\n case KbqToastPosition.TOP_CENTER:\n return this.getTopCenter();\n case KbqToastPosition.TOP_LEFT:\n return this.getTopLeft();\n case KbqToastPosition.TOP_RIGHT:\n return this.getTopRight();\n default:\n return this.getTopCenter();\n }\n }\n\n private getTopCenter(): GlobalPositionStrategy {\n return this.getGlobalOverlayPosition().top(`${this.toastConfig.indent.vertical}px`).centerHorizontally();\n }\n\n private getTopLeft(): GlobalPositionStrategy {\n return this.getGlobalOverlayPosition()\n .top(`${this.toastConfig.indent.vertical}px`)\n .left(`${this.toastConfig.indent.horizontal}px`);\n }\n\n private getTopRight(): GlobalPositionStrategy {\n return this.getGlobalOverlayPosition()\n .top(`${this.toastConfig.indent.vertical}px`)\n .right(`${this.toastConfig.indent.horizontal}px`);\n }\n\n private getBottomCenter(): GlobalPositionStrategy {\n return this.getGlobalOverlayPosition().bottom(`${this.toastConfig.indent.vertical}px`).centerHorizontally();\n }\n\n private getBottomLeft(): GlobalPositionStrategy {\n return this.getGlobalOverlayPosition()\n .bottom(`${this.toastConfig.indent.vertical}px`)\n .left(`${this.toastConfig.indent.horizontal}px`);\n }\n\n private getBottomRight(): GlobalPositionStrategy {\n return this.getGlobalOverlayPosition()\n .bottom(`${this.toastConfig.indent.vertical}px`)\n .right(`${this.toastConfig.indent.horizontal}px`);\n }\n\n private getCenter(): GlobalPositionStrategy {\n return this.getGlobalOverlayPosition().centerVertically().centerHorizontally();\n }\n\n private getGlobalOverlayPosition(): GlobalPositionStrategy {\n return this.overlay.position().global();\n }\n}\n","import { SharedResizeObserver } from '@angular/cdk/observers/private';\nimport { CdkScrollable, FlexibleConnectedPositionStrategy, OverlayKeyboardDispatcher } from '@angular/cdk/overlay';\nimport {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ComponentRef,\n EmbeddedViewRef,\n Injector,\n TemplateRef,\n ViewContainerRef,\n ViewEncapsulation,\n ViewRef,\n inject,\n viewChild\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { KbqToastService } from './toast.service';\nimport { KbqToastData } from './toast.type';\n\n@Component({\n selector: 'kbq-toast-container',\n template: '<ng-container #container />',\n styleUrls: ['./toast-container.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n class: 'kbq-toast-container'\n }\n})\nexport class KbqToastContainerComponent extends CdkScrollable {\n private injector = inject(Injector);\n private changeDetectorRef = inject(ChangeDetectorRef);\n readonly service = inject(KbqToastService);\n\n readonly viewContainer = viewChild.required('container', { read: ViewContainerRef });\n\n private readonly overlayKeyboardDispatcher = inject(OverlayKeyboardDispatcher);\n\n constructor() {\n super();\n\n // Toasts are ordinary flow children, so removing one slides the rest for as long as its height animates,\n // and an overlay opened from inside a toast is left behind its trigger: CDK re-measures the origin only on\n // a scroll or a viewport resize. The container's box tracks the reflow exactly. It is not reported as a\n // scroll: `ScrollDispatcher` is global, and every close-on-scroll overlay of the app would close.\n inject(SharedResizeObserver)\n .observe(this.elementRef.nativeElement)\n .pipe(takeUntilDestroyed())\n .subscribe(() => this.repositionConnectedOverlays());\n }\n\n createToast<C>(data: KbqToastData, componentType, onTop: boolean): ComponentRef<C> {\n const injector = this.getInjector(data);\n const index = onTop ? 0 : undefined;\n\n this.changeDetectorRef.markForCheck();\n\n return this.viewContainer().createComponent(componentType, { injector, index });\n }\n\n createTemplate<C>(data: KbqToastData, template: TemplateRef<any>, onTop: boolean): EmbeddedViewRef<C> {\n const index = onTop ? 0 : undefined;\n\n return this.viewContainer().createEmbeddedView(template, { $implicit: data }, index);\n }\n\n remove(viewRef: ViewRef) {\n const index = this.viewContainer().indexOf(viewRef);\n\n if (index < 0) {\n return;\n }\n\n this.viewContainer().remove(index);\n }\n\n getInjector(data: KbqToastData): Injector {\n return Injector.create({\n providers: [{ provide: KbqToastData, useValue: data }],\n parent: this.injector\n });\n }\n\n /**\n * Re-applies the position of every overlay anchored to an element; one whose origin has not moved stays where it\n * is. CDK keeps no public registry of attached overlays, but its keyboard dispatcher tracks each of them.\n */\n private repositionConnectedOverlays(): void {\n // A copy: a `positionChanges` handler may detach an overlay, which splices the list being iterated.\n for (const overlayRef of this.overlayKeyboardDispatcher._attachedOverlays.slice()) {\n if (overlayRef.getConfig().positionStrategy instanceof FlexibleConnectedPositionStrategy) {\n overlayRef.updatePosition();\n }\n }\n }\n\n /**\n * Fakes a scroll on the container so that overlays anchored inside a toast are repositioned by their\n * `RepositionScrollStrategy` when the stack shifts.\n *\n * @deprecated The container repositions the overlays anchored inside it on its own, so nothing calls this.\n * It is kept only for callers that already hold a container reference — the instance created by\n * `KbqToastService` is not exposed. The fake scroll also closes every close-on-scroll overlay of the app.\n */\n dispatchScrollEvent = () => {\n this.elementRef.nativeElement.dispatchEvent(new Event('scroll'));\n };\n}\n","import { NgModule } from '@angular/core';\nimport { KbqToastContainerComponent } from './toast-container.component';\nimport { KbqToastCloseButton, KbqToastComponent } from './toast.component';\n\nconst COMPONENTS = [\n KbqToastComponent,\n KbqToastCloseButton,\n KbqToastContainerComponent\n];\n\n@NgModule({\n imports: COMPONENTS,\n exports: COMPONENTS\n})\nexport class KbqToastModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["filter"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"koobiq-components-toast.mjs","sources":["../../../packages/components/toast/toast-animations.ts","../../../packages/components/toast/toast.type.ts","../../../packages/components/toast/toast.component.ts","../../../packages/components/toast/toast.component.html","../../../packages/components/toast/toast.service.ts","../../../packages/components/toast/toast-container.component.ts","../../../packages/components/toast/toast.module.ts","../../../packages/components/toast/koobiq-components-toast.ts"],"sourcesContent":["import { animate, AnimationTriggerMetadata, state, style, transition, trigger } from '@angular/animations';\n\nexport const kbqToastAnimations: {\n readonly toastState: AnimationTriggerMetadata;\n} = {\n toastState: trigger('state', [\n state('void', style({ transform: 'translateX(100%)', opacity: 0 })),\n transition('* => visible', animate('150ms ease-out', style({ transform: 'translateX(0%)', opacity: 1 }))),\n transition(\n '* => void',\n animate('300ms ease-in', style({ transform: 'translateX(50%)', opacity: 0, height: 0 }))\n )\n ])\n};\n\nexport const toastState = kbqToastAnimations.toastState;\n","import { InjectionToken, Provider, TemplateRef } from '@angular/core';\n\nexport enum KbqToastStyle {\n Contrast = 'contrast',\n Success = 'success',\n Warning = 'warning',\n Error = 'error'\n}\n\nexport enum KbqToastPosition {\n TOP_RIGHT = 'top-right',\n TOP_LEFT = 'top-left',\n TOP_CENTER = 'top-center',\n BOTTOM_RIGHT = 'bottom-right',\n BOTTOM_LEFT = 'bottom-left',\n BOTTOM_CENTER = 'bottom-center',\n CENTER = 'center'\n}\n\nexport class KbqToastData {\n id?: string;\n title?: string | TemplateRef<any>;\n style?: KbqToastStyle | string;\n\n icon?: TemplateRef<any> | boolean;\n iconClass?: string;\n caption?: string | TemplateRef<any>;\n\n content?: string | TemplateRef<any>;\n actions?: TemplateRef<any>;\n\n closeButton?: TemplateRef<any> | boolean;\n}\n\nexport interface KbqToastConfig {\n position: KbqToastPosition;\n duration: number;\n delay: number;\n onTop: boolean;\n /** Custom indentation for positioning the toast stack overlay when using `GlobalPositionStrategy` */\n indent: {\n /** Vertical spacing from the top or bottom of the screen. */\n vertical: number;\n\n /** Horizontal spacing from the left or right of the screen. */\n horizontal: number;\n };\n}\n\nexport const defaultToastConfig: KbqToastConfig = {\n position: KbqToastPosition.TOP_RIGHT,\n duration: 5000,\n delay: 2000,\n onTop: false,\n indent: {\n vertical: 0,\n horizontal: 0\n }\n};\n\nexport const KBQ_TOAST_CONFIG = new InjectionToken<KbqToastConfig>('kbq-toast-config', {\n factory: () => defaultToastConfig\n});\n\n/** Utility provider for `KBQ_TOAST_CONFIG`. */\nexport const kbqToastConfigurationProvider = (configuration: Partial<KbqToastConfig>): Provider => ({\n provide: KBQ_TOAST_CONFIG,\n useValue: { ...defaultToastConfig, ...configuration }\n});\n","import { AnimationEvent } from '@angular/animations';\nimport { FocusMonitor, FocusOrigin } from '@angular/cdk/a11y';\nimport { NgTemplateOutlet } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n Directive,\n ElementRef,\n OnDestroy,\n TemplateRef,\n ViewEncapsulation,\n inject\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { KbqReadStateDirective, ThemePalette } from '@koobiq/components/core';\nimport { KbqIconModule } from '@koobiq/components/icon';\nimport { KbqTitleModule } from '@koobiq/components/title';\nimport { BehaviorSubject, merge } from 'rxjs';\nimport { filter } from 'rxjs/operators';\nimport { kbqToastAnimations } from './toast-animations';\nimport { KbqToastService } from './toast.service';\nimport { KbqToastData, KbqToastStyle } from './toast.type';\n\n@Directive({\n selector: '[kbq-toast-close-button]',\n host: {\n class: 'kbq-toast__close-button'\n }\n})\nexport class KbqToastCloseButton {}\n\nlet id = 0;\n\n@Component({\n selector: 'kbq-toast',\n imports: [\n NgTemplateOutlet,\n KbqIconModule,\n KbqTitleModule,\n KbqToastCloseButton\n ],\n templateUrl: './toast.component.html',\n styleUrls: ['./toast.component.scss', './toast-tokens.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n class: 'kbq-toast',\n '[class]': 'toastStyle',\n '[class.kbq-toast_dismissible]': 'data.closeButton',\n '[@state]': 'animationState',\n '(@state.start)': 'onAnimation($event)',\n '(@state.done)': 'onAnimation($event)',\n '(mouseenter)': 'hovered.next(true)',\n '(mouseleave)': 'hovered.next(false)',\n '(keydown.esc)': 'close()'\n },\n hostDirectives: [KbqReadStateDirective],\n animations: [kbqToastAnimations.toastState]\n})\nexport class KbqToastComponent implements OnDestroy {\n readonly data = inject(KbqToastData);\n readonly service = inject(KbqToastService);\n elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n private focusMonitor = inject(FocusMonitor);\n\n protected readonly readStateDirective = inject(KbqReadStateDirective, { host: true });\n\n themePalette = ThemePalette;\n\n animationState = 'void';\n\n readonly hovered = new BehaviorSubject<boolean>(false);\n readonly focused = new BehaviorSubject<boolean>(false);\n\n id = id++;\n ttl;\n delay;\n\n $implicit;\n\n get toastStyle() {\n return {\n [`kbq-toast_${this.data.style}`]: true\n };\n }\n\n get isFocusedOrHovered(): boolean {\n return this.hovered.getValue() || this.focused.getValue();\n }\n\n constructor() {\n this.$implicit = this;\n\n this.data.style = this.data.style || KbqToastStyle.Contrast;\n this.data.icon = this.data.icon !== undefined ? this.data.icon : true;\n this.data.iconClass = this.data.iconClass || undefined;\n this.data.closeButton = this.data.closeButton !== undefined ? this.data.closeButton : true;\n\n this.animationState = 'visible';\n\n this.runFocusMonitor();\n\n this.hovered.subscribe(this.service.hovered);\n this.focused.subscribe(this.service.focused);\n\n merge(this.hovered, this.focused)\n .pipe(\n filter((value) => value),\n takeUntilDestroyed()\n )\n .subscribe(() => {\n if (this.ttl === 0) {\n return;\n }\n\n this.ttl = this.ttl < this.delay ? this.delay : this.ttl;\n });\n\n this.readStateDirective.read\n .pipe(\n filter((value) => value),\n takeUntilDestroyed()\n )\n .subscribe(() => this.service.read.next(this.data));\n }\n\n ngOnDestroy() {\n this.stopFocusMonitor();\n\n this.hovered.next(false);\n this.focused.next(false);\n }\n\n close(): void {\n this.service.read.next(this.data);\n this.service.hide(this.id);\n }\n\n isTemplateRef(value): boolean {\n return value instanceof TemplateRef;\n }\n\n onAnimation($event: AnimationEvent) {\n this.service.animation.next($event);\n }\n\n private runFocusMonitor() {\n this.focusMonitor\n .monitor(this.elementRef.nativeElement, true)\n .subscribe((origin: FocusOrigin) => this.focused.next(!!origin));\n }\n\n private stopFocusMonitor() {\n this.focusMonitor.stopMonitoring(this.elementRef.nativeElement);\n }\n}\n","@if (data.icon) {\n <div class=\"kbq-toast__icon-container layout-row layout-align-start-start\">\n @if (data.icon === true) {\n @switch (data.style) {\n @case ('contrast') {\n <i\n kbq-icon=\"kbq-circle-info_16\"\n class=\"kbq-toast__icon\"\n [color]=\"$any(data.style)\"\n [class]=\"data.iconClass\"\n ></i>\n }\n @case ('success') {\n <i\n kbq-icon=\"kbq-circle-check_16\"\n class=\"kbq-toast__icon\"\n [color]=\"$any(data.style)\"\n [class]=\"data.iconClass\"\n ></i>\n }\n @case ('warning') {\n <i\n kbq-icon=\"kbq-triangle-exclamation_16\"\n class=\"kbq-toast__icon\"\n [color]=\"$any(data.style)\"\n [class]=\"data.iconClass\"\n ></i>\n }\n @case ('error') {\n <i\n kbq-icon=\"kbq-triangle-exclamation_16\"\n class=\"kbq-toast__icon\"\n [color]=\"$any(data.style)\"\n [class]=\"data.iconClass\"\n ></i>\n }\n }\n }\n @if (isTemplateRef(data.icon)) {\n <ng-container [ngTemplateOutlet]=\"$any(data.icon)\" [ngTemplateOutletContext]=\"{ $implicit }\" />\n }\n </div>\n}\n\n<div class=\"kbq-toast__container\">\n @if (data.title) {\n <div\n kbq-title\n class=\"kbq-toast__title\"\n [class.kbq-toast__title_only-text]=\"!isTemplateRef(data.title)\"\n [class.kbq-toast__title_with-content]=\"data.caption || data.content\"\n >\n @if (isTemplateRef(data.title)) {\n <ng-container [ngTemplateOutlet]=\"$any(data.title)\" [ngTemplateOutletContext]=\"{ $implicit }\" />\n } @else {\n <p>{{ data.title }}</p>\n }\n </div>\n }\n\n @if (data.caption) {\n <div\n kbq-title\n [class.kbq-toast__text]=\"data.title\"\n [class.kbq-toast__text_only-text]=\"!isTemplateRef(data.caption)\"\n [class.kbq-toast__title]=\"!data.title\"\n >\n @if (isTemplateRef(data.caption)) {\n <ng-container [ngTemplateOutlet]=\"$any(data.caption)\" [ngTemplateOutletContext]=\"{ $implicit }\" />\n }\n <!-- prettier-ignore -->\n @else {{{ data.caption }}}\n </div>\n }\n\n @if (data.content) {\n <div class=\"kbq-toast__content\" [class.kbq-toast__content_only-text]=\"!isTemplateRef(data.content)\">\n @if (isTemplateRef(data.content)) {\n <ng-container [ngTemplateOutlet]=\"$any(data.content)\" [ngTemplateOutletContext]=\"{ $implicit }\" />\n }\n <!-- prettier-ignore -->\n @else {{{ data.content }}}\n </div>\n }\n\n @if (data.actions) {\n <div class=\"kbq-toast__actions\">\n @if (isTemplateRef(data.actions)) {\n <ng-container [ngTemplateOutlet]=\"$any(data.actions)\" [ngTemplateOutletContext]=\"{ $implicit }\" />\n } @else {\n {{ data.actions }}\n }\n </div>\n }\n</div>\n\n@if (data.closeButton) {\n <div>\n @if (data.closeButton === true) {\n <i kbq-icon-button=\"kbq-xmark-s_16\" kbq-toast-close-button (click)=\"close()\"></i>\n }\n @if (isTemplateRef(data.closeButton)) {\n <ng-container [ngTemplateOutlet]=\"$any(data.closeButton)\" [ngTemplateOutletContext]=\"{ $implicit }\" />\n }\n </div>\n}\n","import { AnimationEvent } from '@angular/animations';\nimport { GlobalPositionStrategy, Overlay, OverlayContainer, OverlayRef } from '@angular/cdk/overlay';\nimport { ComponentPortal } from '@angular/cdk/portal';\nimport {\n ComponentRef,\n EmbeddedViewRef,\n Injectable,\n InjectionToken,\n Injector,\n NgZone,\n OnDestroy,\n TemplateRef,\n inject\n} from '@angular/core';\nimport { BehaviorSubject, Subscription, filter, shareReplay, timer } from 'rxjs';\nimport { KbqToastContainerComponent } from './toast-container.component';\nimport { KbqToastComponent } from './toast.component';\nimport { KBQ_TOAST_CONFIG, KbqToastConfig, KbqToastData, KbqToastPosition } from './toast.type';\n\nexport const KBQ_TOAST_FACTORY = new InjectionToken('KBQ_TOAST_FACTORY', {\n factory: () => KbqToastComponent\n});\n\nconst CHECK_INTERVAL = 500;\n\nlet templateId = 0;\n\n/** Generic `T` is a type hint only; the runtime component comes from `KBQ_TOAST_FACTORY`. */\n@Injectable({ providedIn: 'root' })\nexport class KbqToastService<T extends KbqToastComponent = KbqToastComponent> implements OnDestroy {\n private overlay = inject(Overlay);\n private injector = inject(Injector);\n private overlayContainer = inject(OverlayContainer);\n private ngZone = inject(NgZone);\n private toastFactory = inject(KBQ_TOAST_FACTORY);\n private toastConfig = inject<KbqToastConfig>(KBQ_TOAST_CONFIG, { optional: true })!;\n\n get toasts(): ComponentRef<T>[] {\n return Object.values(this.toastsDict).filter((item) => !item.hostView.destroyed);\n }\n\n get templates(): EmbeddedViewRef<T>[] {\n return Object.values(this.templatesDict);\n }\n\n readonly read = new BehaviorSubject<KbqToastData | null>(null);\n readonly hovered = new BehaviorSubject<boolean>(false);\n readonly focused = new BehaviorSubject<boolean>(false);\n readonly animation = new BehaviorSubject<AnimationEvent | null>(null);\n\n timer = timer(CHECK_INTERVAL, CHECK_INTERVAL).pipe(\n filter(() => this.toasts.length > 0 && !this.hovered.getValue() && !this.focused.getValue()),\n shareReplay({ bufferSize: 1, refCount: true })\n );\n\n private containerInstance?: KbqToastContainerComponent;\n private overlayRef?: OverlayRef;\n private portal?: ComponentPortal<KbqToastContainerComponent>;\n private timerSubscription: Subscription;\n private currentPosition?: KbqToastPosition;\n\n private toastsDict: { [id: number]: ComponentRef<T> } = {};\n private templatesDict: { [id: number]: EmbeddedViewRef<T> } = {};\n\n constructor() {\n this.ngZone.runOutsideAngular(() => {\n this.timerSubscription = this.timer.subscribe(this.processToasts);\n });\n }\n\n ngOnDestroy(): void {\n this.timerSubscription.unsubscribe();\n this.overlayRef?.dispose();\n this.overlayRef = undefined;\n this.containerInstance = undefined;\n this.portal = undefined;\n this.currentPosition = undefined;\n this.toastsDict = {};\n this.templatesDict = {};\n }\n\n show(\n data: KbqToastData,\n duration: number = this.toastConfig.duration,\n onTop: boolean = this.toastConfig.onTop\n ): { ref: ComponentRef<T>; id: number } {\n const container = this.prepareContainer();\n const componentRef = container.createToast<T>(data, this.toastFactory, onTop);\n\n this.toastsDict[componentRef.instance.id] = componentRef;\n\n componentRef.instance.ttl = duration;\n componentRef.instance.delay = this.toastConfig.delay;\n\n return { ref: componentRef, id: componentRef.instance.id };\n }\n\n showTemplate(\n data: KbqToastData,\n template: TemplateRef<any>,\n duration: number = this.toastConfig.duration,\n onTop: boolean = this.toastConfig.onTop\n ): { ref: EmbeddedViewRef<T>; id: number } {\n const container = this.prepareContainer();\n const viewRef = container.createTemplate<T>(data, template, onTop);\n const id = templateId++;\n\n this.templatesDict[id] = viewRef;\n this.addRemoveTimer(id, duration);\n\n return { ref: viewRef, id };\n }\n\n hide(id: number) {\n const componentRef = this.toastsDict[id];\n\n if (!componentRef) {\n return;\n }\n\n this.containerInstance?.remove(componentRef.hostView);\n\n delete this.toastsDict[id];\n\n this.detachOverlay();\n }\n\n hideTemplate(id: number) {\n const viewRef = this.templatesDict[id];\n\n if (!viewRef) {\n return;\n }\n\n this.containerInstance?.remove(viewRef);\n\n delete this.templatesDict[id];\n\n this.detachOverlay();\n }\n\n private detachOverlay() {\n if (this.toasts.length !== 0 || this.templates.length !== 0) {\n return;\n }\n\n this.overlayRef?.detach();\n }\n\n private processToasts = () => {\n for (const toast of this.toasts.filter((item) => item.instance.ttl > 0)) {\n toast.instance.ttl -= CHECK_INTERVAL;\n\n if (toast.instance.ttl <= 0) {\n this.ngZone.run(() => {\n this.hide(toast.instance.id);\n\n this.updateTTLAfterDelete();\n });\n\n break;\n }\n }\n };\n\n private updateTTLAfterDelete() {\n this.toasts\n .filter((item) => item.instance.ttl > 0)\n .forEach((item) => (item.instance.ttl = this.toastConfig.delay));\n }\n\n private addRemoveTimer(id: number, duration: number) {\n setTimeout(() => this.hideTemplate(id), duration);\n }\n\n private prepareContainer(): KbqToastContainerComponent {\n const overlayRef = this.createOverlay();\n const portal = this.portal || new ComponentPortal(KbqToastContainerComponent, null, this.injector);\n\n this.portal = portal;\n\n if (!overlayRef.hasAttached()) {\n this.containerInstance = overlayRef.attach(portal).instance;\n this.containerInstance\n .getElementRef()\n .nativeElement.classList.add(`kbq-toast-container-${this.toastConfig.position}`);\n }\n\n this.toTop(overlayRef);\n\n return this.containerInstance!;\n }\n\n private toTop(overlayRef: OverlayRef) {\n const overlays = this.overlayContainer.getContainerElement().childNodes;\n\n if (overlays.length > 1) {\n overlays[overlays.length - 1].after(overlayRef.hostElement);\n }\n }\n\n private createOverlay(): OverlayRef {\n const expectedPosition = this.toastConfig.position;\n\n if (this.overlayRef && this.currentPosition === expectedPosition) {\n return this.overlayRef;\n }\n\n if (this.overlayRef) {\n this.overlayRef.dispose();\n this.containerInstance = undefined;\n this.portal = undefined;\n }\n\n const positionStrategy = this.getPositionStrategy(expectedPosition);\n const overlayRef = this.overlay.create({ positionStrategy });\n\n overlayRef.hostElement.classList.add('kbq-toast-overlay');\n\n this.overlayRef = overlayRef;\n this.currentPosition = expectedPosition;\n\n return overlayRef;\n }\n\n private getPositionStrategy(position?: KbqToastPosition): GlobalPositionStrategy {\n switch (position) {\n case KbqToastPosition.CENTER:\n return this.getCenter();\n case KbqToastPosition.BOTTOM_CENTER:\n return this.getBottomCenter();\n case KbqToastPosition.BOTTOM_LEFT:\n return this.getBottomLeft();\n case KbqToastPosition.BOTTOM_RIGHT:\n return this.getBottomRight();\n case KbqToastPosition.TOP_CENTER:\n return this.getTopCenter();\n case KbqToastPosition.TOP_LEFT:\n return this.getTopLeft();\n case KbqToastPosition.TOP_RIGHT:\n return this.getTopRight();\n default:\n return this.getTopCenter();\n }\n }\n\n private getTopCenter(): GlobalPositionStrategy {\n return this.getGlobalOverlayPosition().top(`${this.toastConfig.indent.vertical}px`).centerHorizontally();\n }\n\n private getTopLeft(): GlobalPositionStrategy {\n return this.getGlobalOverlayPosition()\n .top(`${this.toastConfig.indent.vertical}px`)\n .left(`${this.toastConfig.indent.horizontal}px`);\n }\n\n private getTopRight(): GlobalPositionStrategy {\n return this.getGlobalOverlayPosition()\n .top(`${this.toastConfig.indent.vertical}px`)\n .right(`${this.toastConfig.indent.horizontal}px`);\n }\n\n private getBottomCenter(): GlobalPositionStrategy {\n return this.getGlobalOverlayPosition().bottom(`${this.toastConfig.indent.vertical}px`).centerHorizontally();\n }\n\n private getBottomLeft(): GlobalPositionStrategy {\n return this.getGlobalOverlayPosition()\n .bottom(`${this.toastConfig.indent.vertical}px`)\n .left(`${this.toastConfig.indent.horizontal}px`);\n }\n\n private getBottomRight(): GlobalPositionStrategy {\n return this.getGlobalOverlayPosition()\n .bottom(`${this.toastConfig.indent.vertical}px`)\n .right(`${this.toastConfig.indent.horizontal}px`);\n }\n\n private getCenter(): GlobalPositionStrategy {\n return this.getGlobalOverlayPosition().centerVertically().centerHorizontally();\n }\n\n private getGlobalOverlayPosition(): GlobalPositionStrategy {\n return this.overlay.position().global();\n }\n}\n","import { SharedResizeObserver } from '@angular/cdk/observers/private';\nimport { CdkScrollable, FlexibleConnectedPositionStrategy, OverlayKeyboardDispatcher } from '@angular/cdk/overlay';\nimport {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ComponentRef,\n EmbeddedViewRef,\n Injector,\n TemplateRef,\n ViewContainerRef,\n ViewEncapsulation,\n ViewRef,\n inject,\n viewChild\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { KbqToastService } from './toast.service';\nimport { KbqToastData } from './toast.type';\n\n@Component({\n selector: 'kbq-toast-container',\n template: '<ng-container #container />',\n styleUrls: ['./toast-container.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n class: 'kbq-toast-container'\n }\n})\nexport class KbqToastContainerComponent extends CdkScrollable {\n private injector = inject(Injector);\n private changeDetectorRef = inject(ChangeDetectorRef);\n readonly service = inject(KbqToastService);\n\n readonly viewContainer = viewChild.required('container', { read: ViewContainerRef });\n\n private readonly overlayKeyboardDispatcher = inject(OverlayKeyboardDispatcher);\n\n constructor() {\n super();\n\n // Toasts are ordinary flow children, so removing one slides the rest for as long as its height animates,\n // and an overlay opened from inside a toast is left behind its trigger: CDK re-measures the origin only on\n // a scroll or a viewport resize. The container's box tracks the reflow exactly. It is not reported as a\n // scroll: `ScrollDispatcher` is global, and every close-on-scroll overlay of the app would close.\n inject(SharedResizeObserver)\n .observe(this.elementRef.nativeElement)\n .pipe(takeUntilDestroyed())\n .subscribe(() => this.repositionConnectedOverlays());\n }\n\n createToast<C>(data: KbqToastData, componentType, onTop: boolean): ComponentRef<C> {\n const injector = this.getInjector(data);\n const index = onTop ? 0 : undefined;\n\n this.changeDetectorRef.markForCheck();\n\n return this.viewContainer().createComponent(componentType, { injector, index });\n }\n\n createTemplate<C>(data: KbqToastData, template: TemplateRef<any>, onTop: boolean): EmbeddedViewRef<C> {\n const index = onTop ? 0 : undefined;\n\n return this.viewContainer().createEmbeddedView(template, { $implicit: data }, index);\n }\n\n remove(viewRef: ViewRef) {\n const index = this.viewContainer().indexOf(viewRef);\n\n if (index < 0) {\n return;\n }\n\n this.viewContainer().remove(index);\n }\n\n getInjector(data: KbqToastData): Injector {\n return Injector.create({\n providers: [{ provide: KbqToastData, useValue: data }],\n parent: this.injector\n });\n }\n\n /**\n * Re-applies the position of every overlay anchored to an element; one whose origin has not moved stays where it\n * is. CDK keeps no public registry of attached overlays, but its keyboard dispatcher tracks each of them.\n */\n private repositionConnectedOverlays(): void {\n // A copy: a `positionChanges` handler may detach an overlay, which splices the list being iterated.\n for (const overlayRef of this.overlayKeyboardDispatcher._attachedOverlays.slice()) {\n if (overlayRef.getConfig().positionStrategy instanceof FlexibleConnectedPositionStrategy) {\n overlayRef.updatePosition();\n }\n }\n }\n\n /**\n * Fakes a scroll on the container so that overlays anchored inside a toast are repositioned by their\n * `RepositionScrollStrategy` when the stack shifts.\n *\n * @deprecated The container repositions the overlays anchored inside it on its own, so nothing calls this.\n * It is kept only for callers that already hold a container reference — the instance created by\n * `KbqToastService` is not exposed. The fake scroll also closes every close-on-scroll overlay of the app.\n */\n dispatchScrollEvent = () => {\n this.elementRef.nativeElement.dispatchEvent(new Event('scroll'));\n };\n}\n","import { NgModule } from '@angular/core';\nimport { KbqToastContainerComponent } from './toast-container.component';\nimport { KbqToastCloseButton, KbqToastComponent } from './toast.component';\n\nconst COMPONENTS = [\n KbqToastComponent,\n KbqToastCloseButton,\n KbqToastContainerComponent\n];\n\n@NgModule({\n imports: COMPONENTS,\n exports: COMPONENTS\n})\nexport class KbqToastModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["filter"],"mappings":"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"}
|
|
@@ -122,6 +122,11 @@ class KbqToggleComponent extends KbqColorDirective {
|
|
|
122
122
|
event.stopPropagation();
|
|
123
123
|
const { shouldToggle, shouldClearIndeterminate } = this.checkable.resolveClick(this.clickAction);
|
|
124
124
|
if (shouldToggle) {
|
|
125
|
+
// A first click starts from the unchecked position, so that it animates.
|
|
126
|
+
if (this.currentCheckState === TransitionCheckState.Init) {
|
|
127
|
+
this.transitionCheckState(TransitionCheckState.Unchecked);
|
|
128
|
+
this.changeDetectorRef.detectChanges();
|
|
129
|
+
}
|
|
125
130
|
// When user manually click on the toggle, `indeterminate` is set to false.
|
|
126
131
|
if (shouldClearIndeterminate) {
|
|
127
132
|
Promise.resolve().then(() => {
|
|
@@ -179,8 +184,12 @@ class KbqToggleComponent extends KbqColorDirective {
|
|
|
179
184
|
if (this.indeterminate) {
|
|
180
185
|
this.transitionCheckState(TransitionCheckState.Indeterminate);
|
|
181
186
|
}
|
|
182
|
-
else {
|
|
183
|
-
this.transitionCheckState(
|
|
187
|
+
else if (this.checked) {
|
|
188
|
+
this.transitionCheckState(TransitionCheckState.Checked);
|
|
189
|
+
}
|
|
190
|
+
else if (this.currentCheckState !== TransitionCheckState.Init) {
|
|
191
|
+
// `Init` draws the unchecked position already, so it stays until a value or a click arrives.
|
|
192
|
+
this.transitionCheckState(TransitionCheckState.Unchecked);
|
|
184
193
|
}
|
|
185
194
|
}
|
|
186
195
|
transitionCheckState(newState) {
|
|
@@ -206,7 +215,6 @@ class KbqToggleComponent extends KbqColorDirective {
|
|
|
206
215
|
state(TransitionCheckState.Unchecked, style({ left: '3px' })),
|
|
207
216
|
state(TransitionCheckState.Indeterminate, style({ left: '10px', visibility: 'hidden' })),
|
|
208
217
|
state(TransitionCheckState.Checked, style({ left: 'calc(100% - 11px)' })),
|
|
209
|
-
transition(`${TransitionCheckState.Init} => ${TransitionCheckState.Checked}`, animate(KbqAnimationDurations.Entering)),
|
|
210
218
|
transition(`${TransitionCheckState.Checked} <=> ${TransitionCheckState.Unchecked}`, animate(KbqAnimationDurations.Rapid)),
|
|
211
219
|
transition(`${TransitionCheckState.Indeterminate} => *`, animate(`${KbqAnimationDurations.Instant} ${KbqAnimationCurves.EaseInOut}`))
|
|
212
220
|
])
|
|
@@ -234,7 +242,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.30", ngImpo
|
|
|
234
242
|
state(TransitionCheckState.Unchecked, style({ left: '3px' })),
|
|
235
243
|
state(TransitionCheckState.Indeterminate, style({ left: '10px', visibility: 'hidden' })),
|
|
236
244
|
state(TransitionCheckState.Checked, style({ left: 'calc(100% - 11px)' })),
|
|
237
|
-
transition(`${TransitionCheckState.Init} => ${TransitionCheckState.Checked}`, animate(KbqAnimationDurations.Entering)),
|
|
238
245
|
transition(`${TransitionCheckState.Checked} <=> ${TransitionCheckState.Unchecked}`, animate(KbqAnimationDurations.Rapid)),
|
|
239
246
|
transition(`${TransitionCheckState.Indeterminate} => *`, animate(`${KbqAnimationDurations.Instant} ${KbqAnimationCurves.EaseInOut}`))
|
|
240
247
|
])
|