@bravobit/bb-foundation 0.45.1 → 0.45.3

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.
Files changed (27) hide show
  1. package/collections/lib/collection.d.ts +0 -2
  2. package/collections/lib/interfaces/collection.interface.d.ts +4 -0
  3. package/collections/lib/providers/api-collection.provider.d.ts +3 -2
  4. package/collections/lib/providers/collection.provider.d.ts +5 -2
  5. package/dialog/lib/dialog-container/dialog-container.component.d.ts +6 -3
  6. package/dialog/lib/dialog-overlay/dialog-overlay.component.d.ts +7 -3
  7. package/esm2022/collections/lib/collection.mjs +3 -13
  8. package/esm2022/collections/lib/components/collections-table/collections-table.component.mjs +3 -3
  9. package/esm2022/collections/lib/interfaces/collection.interface.mjs +1 -1
  10. package/esm2022/collections/lib/providers/api-collection.provider.mjs +16 -7
  11. package/esm2022/collections/lib/providers/collection.provider.mjs +27 -1
  12. package/esm2022/dialog/lib/dialog-container/dialog-container.component.mjs +19 -13
  13. package/esm2022/dialog/lib/dialog-modal/dialog-modal.component.mjs +2 -2
  14. package/esm2022/dialog/lib/dialog-overlay/dialog-overlay.component.mjs +20 -11
  15. package/esm2022/elements/lib/spinner/spinner.component.mjs +4 -4
  16. package/esm2022/select/lib/select/select.component.mjs +48 -5
  17. package/fesm2022/bravobit-bb-foundation-collections.mjs +45 -20
  18. package/fesm2022/bravobit-bb-foundation-collections.mjs.map +1 -1
  19. package/fesm2022/bravobit-bb-foundation-dialog.mjs +34 -22
  20. package/fesm2022/bravobit-bb-foundation-dialog.mjs.map +1 -1
  21. package/fesm2022/bravobit-bb-foundation-elements.mjs +3 -3
  22. package/fesm2022/bravobit-bb-foundation-elements.mjs.map +1 -1
  23. package/fesm2022/bravobit-bb-foundation-select.mjs +47 -4
  24. package/fesm2022/bravobit-bb-foundation-select.mjs.map +1 -1
  25. package/package.json +12 -12
  26. package/select/lib/select/select.component.d.ts +7 -1
  27. package/styles/theme.scss +5 -0
@@ -1 +1 @@
1
- {"version":3,"file":"bravobit-bb-foundation-dialog.mjs","sources":["../../../projects/bb-foundation/dialog/src/lib/dialog.ref.ts","../../../projects/bb-foundation/dialog/src/lib/dialog.interfaces.ts","../../../projects/bb-foundation/dialog/src/lib/dialog-overlay/dialog-overlay.component.ts","../../../projects/bb-foundation/dialog/src/lib/dialog-overlay/dialog-overlay.component.html","../../../projects/bb-foundation/dialog/src/lib/dialog-modal/dialog-modal.component.ts","../../../projects/bb-foundation/dialog/src/lib/dialog-modal/dialog-modal.component.html","../../../projects/bb-foundation/dialog/src/lib/dialog-header/dialog-header.component.ts","../../../projects/bb-foundation/dialog/src/lib/dialog-header/dialog-header.component.html","../../../projects/bb-foundation/dialog/src/lib/dialog-link/dialog-link.component.ts","../../../projects/bb-foundation/dialog/src/lib/dialog-link/dialog-link.component.html","../../../projects/bb-foundation/dialog/src/lib/dialog-actions/dialog-actions.component.ts","../../../projects/bb-foundation/dialog/src/lib/dialog-actions/dialog-actions.component.html","../../../projects/bb-foundation/dialog/src/lib/dialog.insertion.ts","../../../projects/bb-foundation/dialog/src/lib/dialog-container/dialog-container.component.ts","../../../projects/bb-foundation/dialog/src/lib/dialog-container/dialog-container.component.html","../../../projects/bb-foundation/dialog/src/lib/dialog-confirm/dialog-confirm.component.ts","../../../projects/bb-foundation/dialog/src/lib/dialog-confirm/dialog-confirm.component.html","../../../projects/bb-foundation/dialog/src/lib/dialog.service.ts","../../../projects/bb-foundation/dialog/src/lib/directives/confirm.directive.ts","../../../projects/bb-foundation/dialog/src/lib/dialog.config.ts","../../../projects/bb-foundation/dialog/src/lib/dialog.module.ts","../../../projects/bb-foundation/dialog/src/bravobit-bb-foundation-dialog.ts"],"sourcesContent":["import {take} from 'rxjs/operators';\nimport {Subject} from 'rxjs';\n\nexport class BbDialogRef<T = any> {\n\n // Data.\n private readonly _afterClosed$ = new Subject<T>();\n private readonly _overlayClicked$ = new Subject<void>();\n\n readonly afterClosed = this._afterClosed$.pipe(take(1));\n readonly overlayClicked = this._overlayClicked$.pipe(take(1));\n\n onOverlayClicked() {\n this._overlayClicked$.next();\n }\n\n close(result?: T) {\n this._afterClosed$.next(result);\n }\n\n}\n","import {InjectionToken} from '@angular/core';\n\nexport class BbDialogConfig<T = any> {\n data?: T;\n}\n\nexport interface DialogConfirmOptions {\n cancelButtonClass: string;\n cancelButtonText: string;\n confirmButtonText: string;\n confirmButtonClass: string;\n width: string;\n}\n\nexport class DialogConfig {\n animationMs?: number;\n}\n\nexport const DIALOG_CONFIG: InjectionToken<DialogConfig> = new InjectionToken('dialog config');\n","import {ChangeDetectionStrategy, Component, ElementRef, EventEmitter, HostListener, inject, Output, Renderer2, ViewEncapsulation} from '@angular/core';\nimport {DIALOG_CONFIG, DialogConfig} from '../dialog.interfaces';\nimport {firstValueFrom, timer} from 'rxjs';\n\n@Component({\n selector: 'bb-dialog-overlay',\n templateUrl: './dialog-overlay.component.html',\n styleUrls: ['./dialog-overlay.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {'class': 'bb-dialog-overlay'},\n preserveWhitespaces: false,\n standalone: true\n})\nexport class BbDialogOverlay {\n\n // Dependencies.\n private readonly _config?: DialogConfig = inject(DIALOG_CONFIG, {optional: true});\n private readonly _renderer: Renderer2 = inject(Renderer2);\n private readonly _elementRef: ElementRef = inject(ElementRef);\n\n // Outputs.\n @Output() closeRequested = new EventEmitter<void>();\n\n @HostListener('click', ['$event'])\n onClick(event: MouseEvent) {\n if (event?.target !== event?.currentTarget) {\n return;\n }\n this.closeRequested.emit();\n }\n\n @HostListener('window:keyup', ['$event'])\n onKeyEvent(event: KeyboardEvent) {\n if (event?.key !== 'Escape') {\n return;\n }\n this.closeRequested.emit();\n }\n\n async close() {\n this._renderer.addClass(this._elementRef.nativeElement, 'leaving');\n const timer$ = timer(this._config?.animationMs ?? 240);\n return firstValueFrom(timer$);\n }\n\n}\n","<ng-content select=\"[bb-dialog-modal]\"></ng-content>\n","import {booleanAttribute, ChangeDetectionStrategy, Component, HostBinding, Inject, Input, OnInit, Optional, Renderer2, ViewEncapsulation} from '@angular/core';\nimport {Patch} from '@bravobit/bb-foundation';\nimport {DOCUMENT} from '@angular/common';\n\n@Component({\n selector: '[bb-dialog-modal]',\n templateUrl: './dialog-modal.component.html',\n styleUrls: ['./dialog-modal.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n 'class': 'bb-dialog-modal',\n '[class.without-body-padding]': 'withoutBodyPadding',\n 'role': 'dialog'\n },\n preserveWhitespaces: false,\n standalone: true\n})\nexport class BbDialogModal implements OnInit {\n\n // Styling.\n @HostBinding('style.max-width') @Input() maxWidth: string | null = '30rem';\n\n @Input({transform: booleanAttribute}) withoutBodyPadding: boolean = false;\n\n constructor(private _patch: Patch,\n private _renderer: Renderer2,\n @Optional() @Inject(DOCUMENT) private _document?: Document) {\n }\n\n ngOnInit() {\n this._patch.mobileVerticalHeight();\n this.allowGlobalOverflow(false);\n }\n\n ngOnDestroy() {\n this.allowGlobalOverflow(true);\n }\n\n private allowGlobalOverflow(allow: boolean) {\n const element = this._document?.body ?? null;\n if (!element) {\n return;\n }\n\n allow\n ? this._renderer.removeStyle(element, 'overflow')\n : this._renderer.setStyle(element, 'overflow', 'hidden');\n }\n\n}\n","<ng-content select=\"[bb-dialog-header]\"></ng-content>\n\n<div class=\"bb-dialog-modal-body\">\n <ng-content></ng-content>\n</div>\n\n<ng-content select=\"[bb-dialog-actions]\"></ng-content>\n","import {ChangeDetectionStrategy, Component, EventEmitter, Output, ViewEncapsulation} from '@angular/core';\n\n@Component({\n selector: '[bb-dialog-header]',\n templateUrl: './dialog-header.component.html',\n styleUrls: ['./dialog-header.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {'class': 'bb-dialog-header'},\n preserveWhitespaces: false,\n standalone: true\n})\nexport class BbDialogHeader {\n\n // Outputs.\n @Output() closeRequested = new EventEmitter<void>();\n\n}\n","<div class=\"bb-dialog-header-row\">\n <div class=\"bb-dialog-header-content\">\n <ng-content></ng-content>\n </div>\n\n @if (closeRequested?.observed) {\n <button (click)=\"closeRequested?.emit()\"\n type=\"button\"\n class=\"bb-dialog-header-close\">\n </button>\n }\n</div>\n\n<nav class=\"bb-dialog-header-navigation\">\n <ng-content select=\"[bb-dialog-link]\"></ng-content>\n</nav>\n","import {ChangeDetectionStrategy, Component, ViewEncapsulation} from '@angular/core';\n\n@Component({\n selector: '[bb-dialog-link]',\n templateUrl: './dialog-link.component.html',\n styleUrls: ['./dialog-link.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {'class': 'bb-dialog-link'},\n preserveWhitespaces: false,\n standalone: true\n})\nexport class BbDialogLink {\n}\n","<ng-content></ng-content>\n","import {ChangeDetectionStrategy, Component, ViewEncapsulation} from '@angular/core';\nimport {BbFormGroup} from '@bravobit/bb-foundation/elements';\n\n@Component({\n selector: '[bb-dialog-actions]',\n templateUrl: './dialog-actions.component.html',\n styleUrls: ['./dialog-actions.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {'class': 'bb-dialog-actions'},\n preserveWhitespaces: false,\n standalone: true,\n imports: [BbFormGroup]\n})\nexport class BbDialogActions {\n}\n","<bb-form-group class=\"end\">\n <ng-content></ng-content>\n</bb-form-group>\n","import {Directive, ViewContainerRef} from '@angular/core';\n\n@Directive({\n selector: '[bbDialogInsertion]',\n standalone: true\n})\nexport class BbDialogInsertion {\n\n constructor(public viewContainerRef: ViewContainerRef) {\n }\n\n}\n","import {ChangeDetectionStrategy, Component, ComponentRef, ElementRef, HostListener, inject, OnInit, Renderer2, Type, ViewChild, ViewEncapsulation} from '@angular/core';\nimport {DIALOG_CONFIG, DialogConfig} from '../dialog.interfaces';\nimport {BbDialogInsertion} from '../dialog.insertion';\nimport {firstValueFrom, Subject, timer} from 'rxjs';\nimport {take} from 'rxjs/operators';\n\n@Component({\n selector: 'bb-dialog-container',\n templateUrl: './dialog-container.component.html',\n styleUrls: ['./dialog-container.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {'class': 'bb-dialog-container'},\n preserveWhitespaces: false,\n standalone: true,\n imports: [BbDialogInsertion]\n})\nexport class BbDialogContainer implements OnInit {\n\n // Dependencies.\n private readonly _config?: DialogConfig = inject(DIALOG_CONFIG, {optional: true});\n private readonly _renderer: Renderer2 = inject(Renderer2);\n private readonly _elementRef: ElementRef = inject(ElementRef);\n\n // Views.\n @ViewChild(BbDialogInsertion, {static: true}) insertion: BbDialogInsertion;\n\n // Data.\n componentRef: ComponentRef<any> | null = null;\n childComponentType: Type<any> | null = null;\n\n // State.\n private _overlayClicked$ = new Subject<void>();\n onOverlayClicked = this._overlayClicked$.pipe(take(1));\n\n ngOnInit() {\n this.loadChildComponent(this.childComponentType);\n }\n\n @HostListener('click', ['$event'])\n onClick(event: MouseEvent) {\n if (event?.target !== event?.currentTarget) {\n return;\n }\n this._overlayClicked$.next();\n }\n\n async close() {\n this._renderer.addClass(this._elementRef.nativeElement, 'leaving');\n const timer$ = timer(this._config?.animationMs ?? 240);\n return firstValueFrom(timer$);\n }\n\n private loadChildComponent(componentType: Type<any>) {\n const viewContainerRef = this.insertion.viewContainerRef;\n viewContainerRef.clear();\n this.componentRef = viewContainerRef.createComponent(componentType);\n }\n\n}\n","<div class=\"bb-dialog-container-component\">\n <ng-container bbDialogInsertion></ng-container>\n</div>\n","import {AfterViewInit, ChangeDetectionStrategy, Component, inject, TemplateRef, ViewChild, ViewEncapsulation} from '@angular/core';\nimport {BbDialogHeader} from '../dialog-header/dialog-header.component';\nimport {BbFocusTrap, BbTemplate} from '@bravobit/bb-foundation/utils';\nimport {BbDialogModal} from '../dialog-modal/dialog-modal.component';\nimport {BbLocalize} from '@bravobit/bb-foundation/localize';\nimport {BbButton} from '@bravobit/bb-foundation/elements';\nimport {BbDialogConfig} from '../dialog.interfaces';\nimport {BbDialogRef} from '../dialog.ref';\nimport {NgClass} from '@angular/common';\n\nlet nextUniqueId = 0;\n\n@Component({\n selector: 'bb-dialog-confirm',\n templateUrl: './dialog-confirm.component.html',\n styleUrls: ['./dialog-confirm.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n preserveWhitespaces: false,\n host: {'class': 'bb-dialog-confirm'},\n standalone: true,\n imports: [BbDialogModal, BbDialogHeader, BbFocusTrap, BbLocalize, BbTemplate, NgClass, BbButton]\n})\nexport class BbDialogConfirm implements AfterViewInit {\n\n // Dependencies.\n private readonly _config: BbDialogConfig = inject(BbDialogConfig);\n private readonly _dialogRef: BbDialogRef<boolean> = inject(BbDialogRef);\n\n // Readonly data.\n readonly dialogId: string = `bb-dialog-confirm-${nextUniqueId++}`;\n readonly title: string | TemplateRef<any> = this._config?.data?.title ?? null;\n readonly description: string | TemplateRef<any> = this._config?.data?.description ?? null;\n readonly confirmButtonText: string = this._config?.data?.confirmButtonText ?? 'dialog.default_confirm_button';\n readonly cancelButtonText: string = this._config?.data?.cancelButtonText ?? 'dialog.default_cancel_button';\n readonly confirmButtonClass: string = this._config?.data?.confirmButtonClass ?? null;\n readonly cancelButtonClass: string = this._config?.data?.cancelButtonClass ?? null;\n readonly width: string = this._config?.data?.width ?? '30rem';\n\n // Views.\n @ViewChild('confirm', {read: BbButton, static: false}) confirmButton?: BbButton;\n\n ngAfterViewInit() {\n // Initial focus the button.\n this.confirmButton?.focus();\n }\n\n onClose(result: boolean) {\n this._dialogRef.close(result);\n }\n}\n","<div [attr.aria-labelledby]=\"dialogId\"\n [maxWidth]=\"width\"\n bb-dialog-modal\n bbFocusTrap>\n <header bb-dialog-header>\n @if (title; as titleContent) {\n <h1 [id]=\"dialogId\">\n <ng-template [bbTemplate]=\"titleContent\">\n {{ $any(titleContent) | bbLocalize:{optional: true} }}\n </ng-template>\n </h1>\n }\n </header>\n\n @if (description; as descriptionContent) {\n <p class=\"bb-dialog-confirm-description\">\n <ng-template [bbTemplate]=\"descriptionContent\">\n {{ $any(descriptionContent) | bbLocalize:{optional: true} }}\n </ng-template>\n </p>\n }\n\n <footer class=\"bb-dialog-confirm-footer\">\n @if (cancelButtonText; as cancelButtonTextLabel) {\n <button [ngClass]=\"cancelButtonClass ? cancelButtonClass : 'secondary full'\"\n (click)=\"onClose(false)\"\n bb-button\n type=\"button\">\n {{ cancelButtonTextLabel | bbLocalize:{optional: true} }}\n </button>\n }\n @if (confirmButtonText; as confirmButtonTextLabel) {\n <button #confirm\n [ngClass]=\"confirmButtonClass ? confirmButtonClass : 'destructive full'\"\n (click)=\"onClose(true)\"\n bb-button\n type=\"button\">\n {{ confirmButtonTextLabel | bbLocalize:{optional: true} }}\n </button>\n }\n </footer>\n</div>\n","import {ApplicationRef, ComponentRef, createComponent, createEnvironmentInjector, EnvironmentInjector, Injectable, TemplateRef, Type} from '@angular/core';\nimport {BbDialogContainer} from './dialog-container/dialog-container.component';\nimport {BbDialogConfirm} from './dialog-confirm/dialog-confirm.component';\nimport {BbDialogConfig, DialogConfirmOptions} from './dialog.interfaces';\nimport {BbDialogRef} from './dialog.ref';\nimport {firstValueFrom} from 'rxjs';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class Dialog {\n\n constructor(private _applicationRef: ApplicationRef,\n private _environmentInjector: EnvironmentInjector) {\n }\n\n open<T = any>(componentType: Type<any>, config?: BbDialogConfig) {\n return this.createDialog<T>(componentType, config);\n }\n\n async confirm(title: string | TemplateRef<any>, description: string | TemplateRef<any>, options?: Partial<DialogConfirmOptions>) {\n const dialogRef = this.open<boolean>(BbDialogConfirm, {\n data: {title, description, ...(options ?? {})}\n });\n return await firstValueFrom(dialogRef.afterClosed);\n }\n\n private createDialog<T = any>(componentType: Type<any>, config?: BbDialogConfig) {\n // Create a reference.\n const dialogRef = new BbDialogRef<T>();\n const environmentInjector = createEnvironmentInjector([\n {provide: BbDialogConfig, useValue: config ?? {}},\n {provide: BbDialogRef, useValue: dialogRef}\n ], this._environmentInjector);\n const dialogComponentRef = createComponent(BbDialogContainer, {environmentInjector});\n\n // Attach the host view to the application.\n this._applicationRef.attachView(dialogComponentRef.hostView);\n\n try {\n // Remove the current focus.\n const activeElement = document.activeElement as HTMLElement;\n activeElement.blur();\n\n // Append the element to the DOM.\n document.body.appendChild(dialogComponentRef.location.nativeElement);\n } catch {\n // Don't do anything, because it must've failed.\n }\n\n // Set the child component type on the component.\n dialogComponentRef.instance.childComponentType = componentType;\n dialogComponentRef.instance.onOverlayClicked.subscribe(() => dialogRef.onOverlayClicked());\n\n // Listen for close events.\n dialogRef.afterClosed.subscribe(async () => {\n await dialogComponentRef?.instance?.close();\n return this.deleteDialog(dialogComponentRef);\n });\n\n // Return the reference.\n return dialogRef;\n }\n\n private deleteDialog(dialogComponentRef: ComponentRef<BbDialogContainer>) {\n // Only continue if the dialog component ref exists.\n if (!dialogComponentRef) {\n return;\n }\n\n // Detach the dialog.\n this._applicationRef.detachView(dialogComponentRef.hostView);\n\n // Destroy the dialog.\n dialogComponentRef.destroy();\n dialogComponentRef = null;\n }\n\n}\n","import {Directive, EventEmitter, HostListener, inject, Input, Output} from '@angular/core';\nimport {Dialog} from '../dialog.service';\n\n@Directive({\n selector: '[bbConfirm]',\n standalone: true\n})\nexport class BbConfirm {\n\n // Dependencies.\n private _dialog = inject(Dialog);\n\n // Inputs.\n @Input() bbConfirmTitle: string = 'dialog.default_title';\n @Input() bbConfirmDescription: string = 'dialog.default_description';\n @Input() bbConfirmButtonText: string | null = null;\n @Input() bbCancelButtonText: string | null = null;\n\n // Outputs.\n @Output('bbConfirm') confirm = new EventEmitter<MouseEvent>();\n\n @HostListener('click', ['$event'])\n async onClick(event: MouseEvent) {\n const confirmed = await this._dialog.confirm(this.bbConfirmTitle, this.bbConfirmDescription, {\n confirmButtonText: this.bbConfirmButtonText,\n cancelButtonText: this.bbCancelButtonText\n });\n if (!confirmed) {\n return;\n }\n\n this.confirm.emit(event);\n }\n\n}\n","import {EnvironmentProviders, makeEnvironmentProviders} from '@angular/core';\nimport {DIALOG_CONFIG, DialogConfig} from './dialog.interfaces';\n\nexport function provideDialogConfig(config?: DialogConfig): EnvironmentProviders {\n return makeEnvironmentProviders([\n {provide: DIALOG_CONFIG, useValue: config ?? {}}\n ]);\n}\n","import {BbDialogContainer} from './dialog-container/dialog-container.component';\nimport {BbDialogConfirm} from './dialog-confirm/dialog-confirm.component';\nimport {BbDialogActions} from './dialog-actions/dialog-actions.component';\nimport {BbDialogOverlay} from './dialog-overlay/dialog-overlay.component';\nimport {BbDialogHeader} from './dialog-header/dialog-header.component';\nimport {BbDialogModal} from './dialog-modal/dialog-modal.component';\nimport {BbDialogLink} from './dialog-link/dialog-link.component';\nimport {ModuleWithProviders, NgModule} from '@angular/core';\nimport {BbConfirm} from './directives/confirm.directive';\nimport {BbDialogInsertion} from './dialog.insertion';\nimport {provideDialogConfig} from './dialog.config';\nimport {DialogConfig} from './dialog.interfaces';\n\n@NgModule({\n imports: [\n BbDialogContainer,\n BbDialogOverlay,\n BbDialogModal,\n BbDialogHeader,\n BbDialogLink,\n BbDialogActions,\n BbDialogConfirm,\n BbDialogInsertion,\n BbConfirm\n ],\n exports: [\n BbDialogOverlay,\n BbDialogModal,\n BbDialogHeader,\n BbDialogLink,\n BbDialogActions,\n BbConfirm\n ]\n})\nexport class DialogModule {\n\n static forRoot(config?: DialogConfig): ModuleWithProviders<DialogModule> {\n return {\n ngModule: DialogModule,\n providers: [\n provideDialogConfig(config)\n ]\n };\n }\n\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"bravobit-bb-foundation-dialog.mjs","sources":["../../../projects/bb-foundation/dialog/src/lib/dialog.ref.ts","../../../projects/bb-foundation/dialog/src/lib/dialog.interfaces.ts","../../../projects/bb-foundation/dialog/src/lib/dialog-overlay/dialog-overlay.component.ts","../../../projects/bb-foundation/dialog/src/lib/dialog-overlay/dialog-overlay.component.html","../../../projects/bb-foundation/dialog/src/lib/dialog-modal/dialog-modal.component.ts","../../../projects/bb-foundation/dialog/src/lib/dialog-modal/dialog-modal.component.html","../../../projects/bb-foundation/dialog/src/lib/dialog-header/dialog-header.component.ts","../../../projects/bb-foundation/dialog/src/lib/dialog-header/dialog-header.component.html","../../../projects/bb-foundation/dialog/src/lib/dialog-link/dialog-link.component.ts","../../../projects/bb-foundation/dialog/src/lib/dialog-link/dialog-link.component.html","../../../projects/bb-foundation/dialog/src/lib/dialog-actions/dialog-actions.component.ts","../../../projects/bb-foundation/dialog/src/lib/dialog-actions/dialog-actions.component.html","../../../projects/bb-foundation/dialog/src/lib/dialog.insertion.ts","../../../projects/bb-foundation/dialog/src/lib/dialog-container/dialog-container.component.ts","../../../projects/bb-foundation/dialog/src/lib/dialog-container/dialog-container.component.html","../../../projects/bb-foundation/dialog/src/lib/dialog-confirm/dialog-confirm.component.ts","../../../projects/bb-foundation/dialog/src/lib/dialog-confirm/dialog-confirm.component.html","../../../projects/bb-foundation/dialog/src/lib/dialog.service.ts","../../../projects/bb-foundation/dialog/src/lib/directives/confirm.directive.ts","../../../projects/bb-foundation/dialog/src/lib/dialog.config.ts","../../../projects/bb-foundation/dialog/src/lib/dialog.module.ts","../../../projects/bb-foundation/dialog/src/bravobit-bb-foundation-dialog.ts"],"sourcesContent":["import {take} from 'rxjs/operators';\nimport {Subject} from 'rxjs';\n\nexport class BbDialogRef<T = any> {\n\n // Data.\n private readonly _afterClosed$ = new Subject<T>();\n private readonly _overlayClicked$ = new Subject<void>();\n\n readonly afterClosed = this._afterClosed$.pipe(take(1));\n readonly overlayClicked = this._overlayClicked$.pipe(take(1));\n\n onOverlayClicked() {\n this._overlayClicked$.next();\n }\n\n close(result?: T) {\n this._afterClosed$.next(result);\n }\n\n}\n","import {InjectionToken} from '@angular/core';\n\nexport class BbDialogConfig<T = any> {\n data?: T;\n}\n\nexport interface DialogConfirmOptions {\n cancelButtonClass: string;\n cancelButtonText: string;\n confirmButtonText: string;\n confirmButtonClass: string;\n width: string;\n}\n\nexport class DialogConfig {\n animationMs?: number;\n}\n\nexport const DIALOG_CONFIG: InjectionToken<DialogConfig> = new InjectionToken('dialog config');\n","import {ChangeDetectionStrategy, Component, ElementRef, EventEmitter, HostListener, inject, OnDestroy, OnInit, Output, Renderer2, ViewEncapsulation} from '@angular/core';\nimport {firstValueFrom, fromEvent, Subscription, takeUntil, timer} from 'rxjs';\nimport {DIALOG_CONFIG, DialogConfig} from '../dialog.interfaces';\nimport {filter, switchMap} from 'rxjs/operators';\nimport {DOCUMENT} from '@angular/common';\n\n@Component({\n selector: 'bb-dialog-overlay',\n templateUrl: './dialog-overlay.component.html',\n styleUrls: ['./dialog-overlay.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {'class': 'bb-dialog-overlay'},\n preserveWhitespaces: false,\n standalone: true\n})\nexport class BbDialogOverlay implements OnInit, OnDestroy {\n\n // Dependencies.\n private readonly _config?: DialogConfig = inject(DIALOG_CONFIG, {optional: true});\n private readonly _renderer: Renderer2 = inject(Renderer2);\n private readonly _elementRef: ElementRef = inject(ElementRef);\n private readonly _document: Document = inject(DOCUMENT);\n\n // Outputs.\n @Output() closeRequested = new EventEmitter<void>();\n\n // Subscriptions.\n private _subscription = new Subscription();\n\n ngOnInit() {\n this.handleOverlayClicks();\n }\n\n ngOnDestroy() {\n this._subscription?.unsubscribe();\n }\n\n @HostListener('window:keyup', ['$event'])\n onKeyEvent(event: KeyboardEvent) {\n if (event?.key !== 'Escape') {\n return;\n }\n this.closeRequested.emit();\n }\n\n async close() {\n this._renderer.addClass(this._elementRef.nativeElement, 'leaving');\n const timer$ = timer(this._config?.animationMs ?? 240);\n return firstValueFrom(timer$);\n }\n\n private handleOverlayClicks() {\n const element = this._elementRef.nativeElement ?? null;\n const subscription = fromEvent<PointerEvent>(element, 'pointerdown').pipe(\n filter(event => event?.target === element),\n switchMap(() =>\n fromEvent<PointerEvent>(this._document, 'pointerup').pipe(\n filter((event) => event?.target === element),\n takeUntil(fromEvent(this._document, 'pointermove'))\n )\n )\n ).subscribe(() => {\n this.closeRequested.emit();\n });\n this._subscription.add(subscription);\n }\n\n}\n","<ng-content select=\"[bb-dialog-modal]\"></ng-content>\n","import {booleanAttribute, ChangeDetectionStrategy, Component, HostBinding, Inject, Input, OnInit, Optional, Renderer2, ViewEncapsulation} from '@angular/core';\nimport {Patch} from '@bravobit/bb-foundation';\nimport {DOCUMENT} from '@angular/common';\n\n@Component({\n selector: '[bb-dialog-modal]',\n templateUrl: './dialog-modal.component.html',\n styleUrls: ['./dialog-modal.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n 'class': 'bb-dialog-modal',\n '[class.without-body-padding]': 'withoutBodyPadding',\n 'role': 'dialog'\n },\n preserveWhitespaces: false,\n standalone: true\n})\nexport class BbDialogModal implements OnInit {\n\n // Styling.\n @HostBinding('style.max-width') @Input() maxWidth: string | null = '30rem';\n\n @Input({transform: booleanAttribute}) withoutBodyPadding: boolean = false;\n\n constructor(private _patch: Patch,\n private _renderer: Renderer2,\n @Optional() @Inject(DOCUMENT) private _document?: Document) {\n }\n\n ngOnInit() {\n this._patch.mobileVerticalHeight();\n this.allowGlobalOverflow(false);\n }\n\n ngOnDestroy() {\n this.allowGlobalOverflow(true);\n }\n\n private allowGlobalOverflow(allow: boolean) {\n const element = this._document?.body ?? null;\n if (!element) {\n return;\n }\n\n allow\n ? this._renderer.removeStyle(element, 'overflow')\n : this._renderer.setStyle(element, 'overflow', 'hidden');\n }\n\n}\n","<ng-content select=\"[bb-dialog-header]\"></ng-content>\n\n<div class=\"bb-dialog-modal-body\">\n <ng-content></ng-content>\n</div>\n\n<ng-content select=\"[bb-dialog-actions]\"></ng-content>\n","import {ChangeDetectionStrategy, Component, EventEmitter, Output, ViewEncapsulation} from '@angular/core';\n\n@Component({\n selector: '[bb-dialog-header]',\n templateUrl: './dialog-header.component.html',\n styleUrls: ['./dialog-header.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {'class': 'bb-dialog-header'},\n preserveWhitespaces: false,\n standalone: true\n})\nexport class BbDialogHeader {\n\n // Outputs.\n @Output() closeRequested = new EventEmitter<void>();\n\n}\n","<div class=\"bb-dialog-header-row\">\n <div class=\"bb-dialog-header-content\">\n <ng-content></ng-content>\n </div>\n\n @if (closeRequested?.observed) {\n <button (click)=\"closeRequested?.emit()\"\n type=\"button\"\n class=\"bb-dialog-header-close\">\n </button>\n }\n</div>\n\n<nav class=\"bb-dialog-header-navigation\">\n <ng-content select=\"[bb-dialog-link]\"></ng-content>\n</nav>\n","import {ChangeDetectionStrategy, Component, ViewEncapsulation} from '@angular/core';\n\n@Component({\n selector: '[bb-dialog-link]',\n templateUrl: './dialog-link.component.html',\n styleUrls: ['./dialog-link.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {'class': 'bb-dialog-link'},\n preserveWhitespaces: false,\n standalone: true\n})\nexport class BbDialogLink {\n}\n","<ng-content></ng-content>\n","import {ChangeDetectionStrategy, Component, ViewEncapsulation} from '@angular/core';\nimport {BbFormGroup} from '@bravobit/bb-foundation/elements';\n\n@Component({\n selector: '[bb-dialog-actions]',\n templateUrl: './dialog-actions.component.html',\n styleUrls: ['./dialog-actions.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {'class': 'bb-dialog-actions'},\n preserveWhitespaces: false,\n standalone: true,\n imports: [BbFormGroup]\n})\nexport class BbDialogActions {\n}\n","<bb-form-group class=\"end\">\n <ng-content></ng-content>\n</bb-form-group>\n","import {Directive, ViewContainerRef} from '@angular/core';\n\n@Directive({\n selector: '[bbDialogInsertion]',\n standalone: true\n})\nexport class BbDialogInsertion {\n\n constructor(public viewContainerRef: ViewContainerRef) {\n }\n\n}\n","import {ChangeDetectionStrategy, Component, ComponentRef, ElementRef, inject, OnDestroy, OnInit, Renderer2, Type, ViewChild, ViewEncapsulation} from '@angular/core';\nimport {firstValueFrom, fromEvent, Subject, Subscription, takeUntil, timer} from 'rxjs';\nimport {DIALOG_CONFIG, DialogConfig} from '../dialog.interfaces';\nimport {filter, switchMap, take} from 'rxjs/operators';\nimport {BbDialogInsertion} from '../dialog.insertion';\nimport {DOCUMENT} from '@angular/common';\n\n@Component({\n selector: 'bb-dialog-container',\n templateUrl: './dialog-container.component.html',\n styleUrls: ['./dialog-container.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {'class': 'bb-dialog-container'},\n preserveWhitespaces: false,\n standalone: true,\n imports: [BbDialogInsertion]\n})\nexport class BbDialogContainer implements OnInit, OnDestroy {\n\n // Dependencies.\n private readonly _config?: DialogConfig = inject(DIALOG_CONFIG, {optional: true});\n private readonly _renderer: Renderer2 = inject(Renderer2);\n private readonly _elementRef: ElementRef = inject(ElementRef);\n private readonly _document: Document = inject(DOCUMENT);\n\n // Views.\n @ViewChild(BbDialogInsertion, {static: true}) insertion: BbDialogInsertion;\n\n // Data.\n componentRef: ComponentRef<any> | null = null;\n childComponentType: Type<any> | null = null;\n\n // State.\n private _overlayClicked$ = new Subject<void>();\n onOverlayClicked = this._overlayClicked$.pipe(take(1));\n\n // Subscriptions.\n private _subscription = new Subscription();\n\n ngOnInit() {\n this.handleOverlayClicks();\n this.loadChildComponent(this.childComponentType);\n }\n\n ngOnDestroy() {\n this._subscription?.unsubscribe();\n }\n\n async close() {\n this._renderer.addClass(this._elementRef.nativeElement, 'leaving');\n const timer$ = timer(this._config?.animationMs ?? 240);\n return firstValueFrom(timer$);\n }\n\n private loadChildComponent(componentType: Type<any>) {\n const viewContainerRef = this.insertion.viewContainerRef;\n viewContainerRef.clear();\n this.componentRef = viewContainerRef.createComponent(componentType);\n }\n\n private handleOverlayClicks() {\n const element = this._elementRef.nativeElement ?? null;\n const subscription = fromEvent<PointerEvent>(element, 'pointerdown').pipe(\n filter(event => event?.target === element),\n switchMap(() =>\n fromEvent<PointerEvent>(this._document, 'pointerup').pipe(\n filter((event) => event?.target === element),\n takeUntil(fromEvent(this._document, 'pointermove'))\n )\n )\n ).subscribe(() => {\n this._overlayClicked$.next();\n });\n this._subscription.add(subscription);\n }\n\n}\n","<div class=\"bb-dialog-container-component\">\n <ng-container bbDialogInsertion></ng-container>\n</div>\n","import {AfterViewInit, ChangeDetectionStrategy, Component, inject, TemplateRef, ViewChild, ViewEncapsulation} from '@angular/core';\nimport {BbDialogHeader} from '../dialog-header/dialog-header.component';\nimport {BbFocusTrap, BbTemplate} from '@bravobit/bb-foundation/utils';\nimport {BbDialogModal} from '../dialog-modal/dialog-modal.component';\nimport {BbLocalize} from '@bravobit/bb-foundation/localize';\nimport {BbButton} from '@bravobit/bb-foundation/elements';\nimport {BbDialogConfig} from '../dialog.interfaces';\nimport {BbDialogRef} from '../dialog.ref';\nimport {NgClass} from '@angular/common';\n\nlet nextUniqueId = 0;\n\n@Component({\n selector: 'bb-dialog-confirm',\n templateUrl: './dialog-confirm.component.html',\n styleUrls: ['./dialog-confirm.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n preserveWhitespaces: false,\n host: {'class': 'bb-dialog-confirm'},\n standalone: true,\n imports: [BbDialogModal, BbDialogHeader, BbFocusTrap, BbLocalize, BbTemplate, NgClass, BbButton]\n})\nexport class BbDialogConfirm implements AfterViewInit {\n\n // Dependencies.\n private readonly _config: BbDialogConfig = inject(BbDialogConfig);\n private readonly _dialogRef: BbDialogRef<boolean> = inject(BbDialogRef);\n\n // Readonly data.\n readonly dialogId: string = `bb-dialog-confirm-${nextUniqueId++}`;\n readonly title: string | TemplateRef<any> = this._config?.data?.title ?? null;\n readonly description: string | TemplateRef<any> = this._config?.data?.description ?? null;\n readonly confirmButtonText: string = this._config?.data?.confirmButtonText ?? 'dialog.default_confirm_button';\n readonly cancelButtonText: string = this._config?.data?.cancelButtonText ?? 'dialog.default_cancel_button';\n readonly confirmButtonClass: string = this._config?.data?.confirmButtonClass ?? null;\n readonly cancelButtonClass: string = this._config?.data?.cancelButtonClass ?? null;\n readonly width: string = this._config?.data?.width ?? '30rem';\n\n // Views.\n @ViewChild('confirm', {read: BbButton, static: false}) confirmButton?: BbButton;\n\n ngAfterViewInit() {\n // Initial focus the button.\n this.confirmButton?.focus();\n }\n\n onClose(result: boolean) {\n this._dialogRef.close(result);\n }\n}\n","<div [attr.aria-labelledby]=\"dialogId\"\n [maxWidth]=\"width\"\n bb-dialog-modal\n bbFocusTrap>\n <header bb-dialog-header>\n @if (title; as titleContent) {\n <h1 [id]=\"dialogId\">\n <ng-template [bbTemplate]=\"titleContent\">\n {{ $any(titleContent) | bbLocalize:{optional: true} }}\n </ng-template>\n </h1>\n }\n </header>\n\n @if (description; as descriptionContent) {\n <p class=\"bb-dialog-confirm-description\">\n <ng-template [bbTemplate]=\"descriptionContent\">\n {{ $any(descriptionContent) | bbLocalize:{optional: true} }}\n </ng-template>\n </p>\n }\n\n <footer class=\"bb-dialog-confirm-footer\">\n @if (cancelButtonText; as cancelButtonTextLabel) {\n <button [ngClass]=\"cancelButtonClass ? cancelButtonClass : 'secondary full'\"\n (click)=\"onClose(false)\"\n bb-button\n type=\"button\">\n {{ cancelButtonTextLabel | bbLocalize:{optional: true} }}\n </button>\n }\n @if (confirmButtonText; as confirmButtonTextLabel) {\n <button #confirm\n [ngClass]=\"confirmButtonClass ? confirmButtonClass : 'destructive full'\"\n (click)=\"onClose(true)\"\n bb-button\n type=\"button\">\n {{ confirmButtonTextLabel | bbLocalize:{optional: true} }}\n </button>\n }\n </footer>\n</div>\n","import {ApplicationRef, ComponentRef, createComponent, createEnvironmentInjector, EnvironmentInjector, Injectable, TemplateRef, Type} from '@angular/core';\nimport {BbDialogContainer} from './dialog-container/dialog-container.component';\nimport {BbDialogConfirm} from './dialog-confirm/dialog-confirm.component';\nimport {BbDialogConfig, DialogConfirmOptions} from './dialog.interfaces';\nimport {BbDialogRef} from './dialog.ref';\nimport {firstValueFrom} from 'rxjs';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class Dialog {\n\n constructor(private _applicationRef: ApplicationRef,\n private _environmentInjector: EnvironmentInjector) {\n }\n\n open<T = any>(componentType: Type<any>, config?: BbDialogConfig) {\n return this.createDialog<T>(componentType, config);\n }\n\n async confirm(title: string | TemplateRef<any>, description: string | TemplateRef<any>, options?: Partial<DialogConfirmOptions>) {\n const dialogRef = this.open<boolean>(BbDialogConfirm, {\n data: {title, description, ...(options ?? {})}\n });\n return await firstValueFrom(dialogRef.afterClosed);\n }\n\n private createDialog<T = any>(componentType: Type<any>, config?: BbDialogConfig) {\n // Create a reference.\n const dialogRef = new BbDialogRef<T>();\n const environmentInjector = createEnvironmentInjector([\n {provide: BbDialogConfig, useValue: config ?? {}},\n {provide: BbDialogRef, useValue: dialogRef}\n ], this._environmentInjector);\n const dialogComponentRef = createComponent(BbDialogContainer, {environmentInjector});\n\n // Attach the host view to the application.\n this._applicationRef.attachView(dialogComponentRef.hostView);\n\n try {\n // Remove the current focus.\n const activeElement = document.activeElement as HTMLElement;\n activeElement.blur();\n\n // Append the element to the DOM.\n document.body.appendChild(dialogComponentRef.location.nativeElement);\n } catch {\n // Don't do anything, because it must've failed.\n }\n\n // Set the child component type on the component.\n dialogComponentRef.instance.childComponentType = componentType;\n dialogComponentRef.instance.onOverlayClicked.subscribe(() => dialogRef.onOverlayClicked());\n\n // Listen for close events.\n dialogRef.afterClosed.subscribe(async () => {\n await dialogComponentRef?.instance?.close();\n return this.deleteDialog(dialogComponentRef);\n });\n\n // Return the reference.\n return dialogRef;\n }\n\n private deleteDialog(dialogComponentRef: ComponentRef<BbDialogContainer>) {\n // Only continue if the dialog component ref exists.\n if (!dialogComponentRef) {\n return;\n }\n\n // Detach the dialog.\n this._applicationRef.detachView(dialogComponentRef.hostView);\n\n // Destroy the dialog.\n dialogComponentRef.destroy();\n dialogComponentRef = null;\n }\n\n}\n","import {Directive, EventEmitter, HostListener, inject, Input, Output} from '@angular/core';\nimport {Dialog} from '../dialog.service';\n\n@Directive({\n selector: '[bbConfirm]',\n standalone: true\n})\nexport class BbConfirm {\n\n // Dependencies.\n private _dialog = inject(Dialog);\n\n // Inputs.\n @Input() bbConfirmTitle: string = 'dialog.default_title';\n @Input() bbConfirmDescription: string = 'dialog.default_description';\n @Input() bbConfirmButtonText: string | null = null;\n @Input() bbCancelButtonText: string | null = null;\n\n // Outputs.\n @Output('bbConfirm') confirm = new EventEmitter<MouseEvent>();\n\n @HostListener('click', ['$event'])\n async onClick(event: MouseEvent) {\n const confirmed = await this._dialog.confirm(this.bbConfirmTitle, this.bbConfirmDescription, {\n confirmButtonText: this.bbConfirmButtonText,\n cancelButtonText: this.bbCancelButtonText\n });\n if (!confirmed) {\n return;\n }\n\n this.confirm.emit(event);\n }\n\n}\n","import {EnvironmentProviders, makeEnvironmentProviders} from '@angular/core';\nimport {DIALOG_CONFIG, DialogConfig} from './dialog.interfaces';\n\nexport function provideDialogConfig(config?: DialogConfig): EnvironmentProviders {\n return makeEnvironmentProviders([\n {provide: DIALOG_CONFIG, useValue: config ?? {}}\n ]);\n}\n","import {BbDialogContainer} from './dialog-container/dialog-container.component';\nimport {BbDialogConfirm} from './dialog-confirm/dialog-confirm.component';\nimport {BbDialogActions} from './dialog-actions/dialog-actions.component';\nimport {BbDialogOverlay} from './dialog-overlay/dialog-overlay.component';\nimport {BbDialogHeader} from './dialog-header/dialog-header.component';\nimport {BbDialogModal} from './dialog-modal/dialog-modal.component';\nimport {BbDialogLink} from './dialog-link/dialog-link.component';\nimport {ModuleWithProviders, NgModule} from '@angular/core';\nimport {BbConfirm} from './directives/confirm.directive';\nimport {BbDialogInsertion} from './dialog.insertion';\nimport {provideDialogConfig} from './dialog.config';\nimport {DialogConfig} from './dialog.interfaces';\n\n@NgModule({\n imports: [\n BbDialogContainer,\n BbDialogOverlay,\n BbDialogModal,\n BbDialogHeader,\n BbDialogLink,\n BbDialogActions,\n BbDialogConfirm,\n BbDialogInsertion,\n BbConfirm\n ],\n exports: [\n BbDialogOverlay,\n BbDialogModal,\n BbDialogHeader,\n BbDialogLink,\n BbDialogActions,\n BbConfirm\n ]\n})\nexport class DialogModule {\n\n static forRoot(config?: DialogConfig): ModuleWithProviders<DialogModule> {\n return {\n ngModule: DialogModule,\n providers: [\n provideDialogConfig(config)\n ]\n };\n }\n\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}
@@ -719,15 +719,15 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.12", ngImpo
719
719
 
720
720
  class BbSpinner {
721
721
  // Inputs.
722
- color = 'hsla(212, 80%, 42%, 1)';
722
+ color = 'var(--bb-spinner-color)';
723
723
  alt = 'Loading...';
724
724
  disabled = false;
725
725
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: BbSpinner, deps: [], target: i0.ɵɵFactoryTarget.Component });
726
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "16.1.0", version: "18.2.12", type: BbSpinner, isStandalone: true, selector: "bb-spinner", inputs: { color: "color", alt: "alt", disabled: ["disabled", "disabled", booleanAttribute] }, host: { classAttribute: "bb-spinner" }, ngImport: i0, template: "<!--\n The spinner element.\n\n This element contains a circle with a 25% bar that spins\n indefinitely. The border color can be set via the \"color\"\n property.\n-->\n<div class=\"bb-spinner-container\">\n <div [style.border-left-color]=\"color\"\n [class.disabled]=\"disabled\"\n class=\"bb-spinner-loader\"\n aria-live=\"assertive\"\n role=\"alert\">\n {{ alt }}\n </div>\n <ng-content select=\"img\"></ng-content>\n</div>\n\n<!--\n The content of the spinner.\n\n This element contains the content of the spinner. The user\n can set the content inside the tag.\n-->\n<span class=\"bb-spinner-content\">\n <ng-content></ng-content>\n</span>\n", styles: [".bb-spinner{padding:1.5rem 0;text-align:center;align-items:center;display:inline-flex;flex-direction:column;justify-content:center;color:#666}.bb-spinner.block{display:flex}.bb-spinner.inverse .bb-spinner-loader{border-color:#fff3}.bb-spinner.inverse .bb-spinner-content{color:#fff}.bb-spinner.small .bb-spinner-loader,.bb-spinner.small .bb-spinner-loader:after{width:1.5rem;height:1.5rem;min-width:1.5rem;min-height:1.5rem}.bb-spinner.small .bb-spinner-loader{border-width:.125rem}.bb-spinner.small .bb-spinner-content{font-size:.75rem}.bb-spinner.medium .bb-spinner-loader,.bb-spinner.medium .bb-spinner-loader:after{width:3rem;height:3rem;min-width:3rem;min-height:3rem}.bb-spinner.medium .bb-spinner-loader{border-width:.1875rem}.bb-spinner.medium .bb-spinner-content{font-size:.875rem}.bb-spinner.large .bb-spinner-loader,.bb-spinner.large .bb-spinner-loader:after{width:4.5rem;height:4.5rem;min-width:4.5rem;min-height:4.5rem}.bb-spinner.large .bb-spinner-loader{border-width:.25rem}.bb-spinner.large .bb-spinner-content{font-size:1rem}.bb-spinner.horizontal{text-align:left;flex-direction:row}.bb-spinner.horizontal .bb-spinner-content:not(:empty){margin-top:0;margin-left:.75rem}.bb-spinner.vertical{text-align:center;flex-direction:column}.bb-spinner.vertical .bb-spinner-content:not(:empty){margin-left:0;margin-top:.75rem}.bb-spinner-container{display:flex;position:relative}.bb-spinner-container>img{top:20%;left:20%;width:60%;height:60%;position:absolute}.bb-spinner-loader{margin:0;padding:0;overflow:hidden;text-indent:100%;color:transparent;position:relative;display:inline-block;vertical-align:middle;border:.1875rem solid #f2f4f6;animation:1s linear infinite spin}.bb-spinner-loader,.bb-spinner-loader:after{width:3rem;height:3rem;min-width:3rem;min-height:3rem;border-radius:50%}.bb-spinner-loader.disabled{cursor:default;-webkit-user-select:none;user-select:none;pointer-events:none;animation-play-state:paused}.bb-spinner-content:not(:empty){font-weight:400;font-size:.875rem;margin-top:.75rem}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
726
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "16.1.0", version: "18.2.12", type: BbSpinner, isStandalone: true, selector: "bb-spinner", inputs: { color: "color", alt: "alt", disabled: ["disabled", "disabled", booleanAttribute] }, host: { classAttribute: "bb-spinner" }, ngImport: i0, template: "<!--\n The spinner element.\n\n This element contains a circle with a 25% bar that spins\n indefinitely. The border color can be set via the \"color\"\n property.\n-->\n<div class=\"bb-spinner-container\">\n <div [style.border-left-color]=\"color\"\n [class.disabled]=\"disabled\"\n class=\"bb-spinner-loader\"\n aria-live=\"assertive\"\n role=\"alert\">\n {{ alt }}\n </div>\n <ng-content select=\"img\"></ng-content>\n</div>\n\n<!--\n The content of the spinner.\n\n This element contains the content of the spinner. The user\n can set the content inside the tag.\n-->\n<span class=\"bb-spinner-content\">\n <ng-content></ng-content>\n</span>\n", styles: [".bb-spinner{color:#525252;padding:1.5rem 0;text-align:center;align-items:center;display:inline-flex;flex-direction:column;justify-content:center}.bb-spinner.block{display:flex}.bb-spinner.inverse .bb-spinner-loader{border-color:#fff3}.bb-spinner.inverse .bb-spinner-content{color:#fff}.bb-spinner.small .bb-spinner-loader,.bb-spinner.small .bb-spinner-loader:after{width:1.5rem;height:1.5rem;min-width:1.5rem;min-height:1.5rem}.bb-spinner.small .bb-spinner-loader{border-width:.125rem}.bb-spinner.small .bb-spinner-content{font-size:.75rem}.bb-spinner.medium .bb-spinner-loader,.bb-spinner.medium .bb-spinner-loader:after{width:3rem;height:3rem;min-width:3rem;min-height:3rem}.bb-spinner.medium .bb-spinner-loader{border-width:.1875rem}.bb-spinner.medium .bb-spinner-content{font-size:.875rem}.bb-spinner.large .bb-spinner-loader,.bb-spinner.large .bb-spinner-loader:after{width:4.5rem;height:4.5rem;min-width:4.5rem;min-height:4.5rem}.bb-spinner.large .bb-spinner-loader{border-width:.25rem}.bb-spinner.large .bb-spinner-content{font-size:1rem}.bb-spinner.horizontal{text-align:left;flex-direction:row}.bb-spinner.horizontal .bb-spinner-content:not(:empty){margin-top:0;margin-left:.75rem}.bb-spinner.vertical{text-align:center;flex-direction:column}.bb-spinner.vertical .bb-spinner-content:not(:empty){margin-left:0;margin-top:.75rem}.bb-spinner-container{display:flex;position:relative}.bb-spinner-container>img{top:20%;left:20%;width:60%;height:60%;position:absolute}.bb-spinner-loader{margin:0;padding:0;overflow:hidden;text-indent:100%;color:transparent;position:relative;display:inline-block;vertical-align:middle;animation:1s linear infinite spin;border:.1875rem solid var(--bb-spinner-background-color)}.bb-spinner-loader,.bb-spinner-loader:after{width:3rem;height:3rem;min-width:3rem;min-height:3rem;border-radius:50%}.bb-spinner-loader.disabled{cursor:default;-webkit-user-select:none;user-select:none;pointer-events:none;animation-play-state:paused}.bb-spinner-content:not(:empty){font-weight:400;font-size:.875rem;margin-top:.75rem}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
727
727
  }
728
728
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: BbSpinner, decorators: [{
729
729
  type: Component,
730
- args: [{ selector: 'bb-spinner', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: { 'class': 'bb-spinner' }, preserveWhitespaces: false, standalone: true, template: "<!--\n The spinner element.\n\n This element contains a circle with a 25% bar that spins\n indefinitely. The border color can be set via the \"color\"\n property.\n-->\n<div class=\"bb-spinner-container\">\n <div [style.border-left-color]=\"color\"\n [class.disabled]=\"disabled\"\n class=\"bb-spinner-loader\"\n aria-live=\"assertive\"\n role=\"alert\">\n {{ alt }}\n </div>\n <ng-content select=\"img\"></ng-content>\n</div>\n\n<!--\n The content of the spinner.\n\n This element contains the content of the spinner. The user\n can set the content inside the tag.\n-->\n<span class=\"bb-spinner-content\">\n <ng-content></ng-content>\n</span>\n", styles: [".bb-spinner{padding:1.5rem 0;text-align:center;align-items:center;display:inline-flex;flex-direction:column;justify-content:center;color:#666}.bb-spinner.block{display:flex}.bb-spinner.inverse .bb-spinner-loader{border-color:#fff3}.bb-spinner.inverse .bb-spinner-content{color:#fff}.bb-spinner.small .bb-spinner-loader,.bb-spinner.small .bb-spinner-loader:after{width:1.5rem;height:1.5rem;min-width:1.5rem;min-height:1.5rem}.bb-spinner.small .bb-spinner-loader{border-width:.125rem}.bb-spinner.small .bb-spinner-content{font-size:.75rem}.bb-spinner.medium .bb-spinner-loader,.bb-spinner.medium .bb-spinner-loader:after{width:3rem;height:3rem;min-width:3rem;min-height:3rem}.bb-spinner.medium .bb-spinner-loader{border-width:.1875rem}.bb-spinner.medium .bb-spinner-content{font-size:.875rem}.bb-spinner.large .bb-spinner-loader,.bb-spinner.large .bb-spinner-loader:after{width:4.5rem;height:4.5rem;min-width:4.5rem;min-height:4.5rem}.bb-spinner.large .bb-spinner-loader{border-width:.25rem}.bb-spinner.large .bb-spinner-content{font-size:1rem}.bb-spinner.horizontal{text-align:left;flex-direction:row}.bb-spinner.horizontal .bb-spinner-content:not(:empty){margin-top:0;margin-left:.75rem}.bb-spinner.vertical{text-align:center;flex-direction:column}.bb-spinner.vertical .bb-spinner-content:not(:empty){margin-left:0;margin-top:.75rem}.bb-spinner-container{display:flex;position:relative}.bb-spinner-container>img{top:20%;left:20%;width:60%;height:60%;position:absolute}.bb-spinner-loader{margin:0;padding:0;overflow:hidden;text-indent:100%;color:transparent;position:relative;display:inline-block;vertical-align:middle;border:.1875rem solid #f2f4f6;animation:1s linear infinite spin}.bb-spinner-loader,.bb-spinner-loader:after{width:3rem;height:3rem;min-width:3rem;min-height:3rem;border-radius:50%}.bb-spinner-loader.disabled{cursor:default;-webkit-user-select:none;user-select:none;pointer-events:none;animation-play-state:paused}.bb-spinner-content:not(:empty){font-weight:400;font-size:.875rem;margin-top:.75rem}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}\n"] }]
730
+ args: [{ selector: 'bb-spinner', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: { 'class': 'bb-spinner' }, preserveWhitespaces: false, standalone: true, template: "<!--\n The spinner element.\n\n This element contains a circle with a 25% bar that spins\n indefinitely. The border color can be set via the \"color\"\n property.\n-->\n<div class=\"bb-spinner-container\">\n <div [style.border-left-color]=\"color\"\n [class.disabled]=\"disabled\"\n class=\"bb-spinner-loader\"\n aria-live=\"assertive\"\n role=\"alert\">\n {{ alt }}\n </div>\n <ng-content select=\"img\"></ng-content>\n</div>\n\n<!--\n The content of the spinner.\n\n This element contains the content of the spinner. The user\n can set the content inside the tag.\n-->\n<span class=\"bb-spinner-content\">\n <ng-content></ng-content>\n</span>\n", styles: [".bb-spinner{color:#525252;padding:1.5rem 0;text-align:center;align-items:center;display:inline-flex;flex-direction:column;justify-content:center}.bb-spinner.block{display:flex}.bb-spinner.inverse .bb-spinner-loader{border-color:#fff3}.bb-spinner.inverse .bb-spinner-content{color:#fff}.bb-spinner.small .bb-spinner-loader,.bb-spinner.small .bb-spinner-loader:after{width:1.5rem;height:1.5rem;min-width:1.5rem;min-height:1.5rem}.bb-spinner.small .bb-spinner-loader{border-width:.125rem}.bb-spinner.small .bb-spinner-content{font-size:.75rem}.bb-spinner.medium .bb-spinner-loader,.bb-spinner.medium .bb-spinner-loader:after{width:3rem;height:3rem;min-width:3rem;min-height:3rem}.bb-spinner.medium .bb-spinner-loader{border-width:.1875rem}.bb-spinner.medium .bb-spinner-content{font-size:.875rem}.bb-spinner.large .bb-spinner-loader,.bb-spinner.large .bb-spinner-loader:after{width:4.5rem;height:4.5rem;min-width:4.5rem;min-height:4.5rem}.bb-spinner.large .bb-spinner-loader{border-width:.25rem}.bb-spinner.large .bb-spinner-content{font-size:1rem}.bb-spinner.horizontal{text-align:left;flex-direction:row}.bb-spinner.horizontal .bb-spinner-content:not(:empty){margin-top:0;margin-left:.75rem}.bb-spinner.vertical{text-align:center;flex-direction:column}.bb-spinner.vertical .bb-spinner-content:not(:empty){margin-left:0;margin-top:.75rem}.bb-spinner-container{display:flex;position:relative}.bb-spinner-container>img{top:20%;left:20%;width:60%;height:60%;position:absolute}.bb-spinner-loader{margin:0;padding:0;overflow:hidden;text-indent:100%;color:transparent;position:relative;display:inline-block;vertical-align:middle;animation:1s linear infinite spin;border:.1875rem solid var(--bb-spinner-background-color)}.bb-spinner-loader,.bb-spinner-loader:after{width:3rem;height:3rem;min-width:3rem;min-height:3rem;border-radius:50%}.bb-spinner-loader.disabled{cursor:default;-webkit-user-select:none;user-select:none;pointer-events:none;animation-play-state:paused}.bb-spinner-content:not(:empty){font-weight:400;font-size:.875rem;margin-top:.75rem}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}\n"] }]
731
731
  }], propDecorators: { color: [{
732
732
  type: Input
733
733
  }], alt: [{