@bravobit/bb-foundation 0.53.3 → 0.53.5

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.
@@ -1 +1 @@
1
- {"version":3,"file":"bravobit-bb-foundation-utils.mjs","sources":["../../../projects/bb-foundation/utils/src/lib/directives/template.directive.ts","../../../projects/bb-foundation/utils/src/lib/directives/autosize.directive.ts","../../../projects/bb-foundation/utils/src/lib/directives/focus.directive.ts","../../../projects/bb-foundation/utils/src/lib/directives/focus-trap.directive.ts","../../../projects/bb-foundation/utils/src/lib/utils.module.ts","../../../projects/bb-foundation/utils/src/bravobit-bb-foundation-utils.ts"],"sourcesContent":["import {Directive, inject, Input, TemplateRef, ViewContainerRef} from '@angular/core';\n\n@Directive({\n selector: '[bbTemplate]'\n})\nexport class BbTemplate {\n\n // Dependencies.\n private readonly _templateRef: TemplateRef<any> = inject(TemplateRef);\n private readonly _viewContainerRef: ViewContainerRef = inject(ViewContainerRef);\n\n @Input() set bbTemplate(content: string | TemplateRef<any>) {\n // Get the template.\n const template = content instanceof TemplateRef\n ? content\n : this._templateRef;\n\n // Clear the view container ref and create the view.\n this._viewContainerRef.clear();\n this._viewContainerRef.createEmbeddedView(template);\n }\n\n // Required so that the template type checker can infer the type of the coerced inputs.\n static ngAcceptInputType_bbTemplate: string | TemplateRef<any>;\n\n}\n","import {AfterViewInit, Directive, ElementRef, HostBinding, HostListener, inject, Input, numberAttribute, Renderer2} from '@angular/core';\n\n@Directive({\n selector: 'textarea[bbAutosize]'\n})\nexport class BbAutosize implements AfterViewInit {\n\n // Dependencies.\n private readonly _renderer: Renderer2 = inject(Renderer2);\n private readonly _elementRef: ElementRef = inject(ElementRef);\n\n // Min/max heights for the textarea.\n @Input() @HostBinding('style.min-height') minHeight: string | null = null;\n @Input() @HostBinding('style.max-height') maxHeight: string | null = null;\n @Input({transform: numberAttribute}) @HostBinding('rows') rows: number = 1;\n\n get element() {\n return this._elementRef?.nativeElement as HTMLTextAreaElement;\n }\n\n ngAfterViewInit() {\n // Update the styles after the DOM has loaded.\n this.updateStyles();\n }\n\n @HostListener('window:resize')\n onWindowResize() {\n // Update the styles when the window is resized.\n this.updateStyles();\n }\n\n @HostListener('input')\n onInputReceived() {\n // Update the styles after the textarea received input.\n this.updateStyles();\n }\n\n private updateStyles() {\n // Validate the element exists.\n if (!this.element) {\n return;\n }\n\n // Calculate border height which is not included in the scroll height.\n const borderHeight = this.element?.offsetHeight - this.element?.clientHeight;\n\n // Reset textarea height to auto that correctly calculate the new height.\n this.setHeight('auto');\n\n // Set new height.\n this.setHeight(`${this.element?.scrollHeight + borderHeight}px`);\n }\n\n private setHeight(value: string) {\n this._renderer.setStyle(this.element, 'height', value);\n }\n\n}\n","import {AfterViewInit, Directive, ElementRef, inject, Input, NgZone} from '@angular/core';\nimport {GLOBAL_FOCUS_MODE, FocusMode} from '@bravobit/bb-foundation';\nimport {Platform} from '@angular/cdk/platform';\n\n@Directive({\n selector: '[bbFocus]'\n})\nexport class BbFocus implements AfterViewInit {\n\n // Dependencies.\n private readonly _zone: NgZone = inject(NgZone);\n private readonly _platform: Platform = inject(Platform);\n private readonly _elementRef: ElementRef = inject(ElementRef);\n private readonly _globalFocusMode: FocusMode = inject(GLOBAL_FOCUS_MODE);\n\n // Inputs.\n @Input() bbFocusMode: FocusMode | null = null;\n\n private get nativeElement() {\n return this._elementRef.nativeElement;\n }\n\n ngAfterViewInit() {\n // Run the method outside the Angular zone.\n this._zone.runOutsideAngular(() => this.focus());\n }\n\n private isMobile() {\n return this._platform.IOS || this._platform.ANDROID;\n }\n\n private focus() {\n const focusMode = this.bbFocusMode ?? this._globalFocusMode;\n if (focusMode === 'only-desktop' && this.isMobile()) {\n return;\n }\n\n // Check if set timeout exists and the user is\n // using the site on desktop devices.\n if (!setTimeout) {\n return;\n }\n\n // Check if the element and the focus method exist, if so focus the element.\n if (!this.nativeElement || !this.nativeElement.focus) {\n return;\n }\n\n // Execute the focus method in a timeout.\n setTimeout(() => this.nativeElement.focus(), 0);\n }\n\n}\n","import {Directive, ElementRef, HostListener, inject} from '@angular/core';\nimport {Platform} from '@angular/cdk/platform';\n\n@Directive({\n selector: '[bbFocusTrap]'\n})\nexport class BbFocusTrap {\n\n // Dependencies.\n private readonly _platform: Platform = inject(Platform);\n private readonly _elementRef: ElementRef = inject(ElementRef);\n\n private readonly _focusableElements = [\n 'a[href]',\n 'area[href]',\n 'input:not([disabled]):not([type=\"hidden\"]):not([aria-hidden])',\n 'select:not([disabled]):not([aria-hidden])',\n 'textarea:not([disabled]):not([aria-hidden])',\n 'button:not([disabled]):not([aria-hidden])',\n 'iframe',\n 'object',\n 'embed',\n '[contenteditable]',\n '[tabindex]:not([tabindex^=\"-\"])'\n ];\n\n @HostListener('keydown', ['$event'])\n onKeydown(event: KeyboardEvent) {\n // Validate it is a tab event.\n if (!this.isTabEvent(event)) {\n return;\n }\n\n // Trap the focus inside the element.\n return this.trapFocus(event);\n }\n\n trapFocus(event: KeyboardEvent) {\n // Validate that the DOM is available.\n if (!this._platform.isBrowser) {\n return;\n }\n\n // Get all focusable nodes.\n const focusableNodes = this.getFocusableNodes();\n\n // Focus the first available element if the focus\n // is not in the modal.\n if (!this.element.contains(document.activeElement)) {\n return this.focus(focusableNodes[0]);\n }\n\n const focusedItemIndex = focusableNodes.indexOf(document.activeElement);\n\n if (event.shiftKey && focusedItemIndex === 0) {\n this.focus(focusableNodes[focusableNodes.length - 1]);\n return event.preventDefault();\n }\n\n if (!event.shiftKey && focusedItemIndex === focusableNodes.length - 1) {\n this.focus(focusableNodes[0]);\n return event.preventDefault();\n }\n }\n\n private get element() {\n return this._elementRef.nativeElement;\n }\n\n private getFocusableNodes() {\n const nodes = this.element.querySelectorAll(this._focusableElements);\n return Array(...nodes);\n }\n\n private focus = (element: HTMLElement) => {\n return element && element.focus && element.focus();\n };\n\n private isTabEvent = (event: KeyboardEvent) => {\n return event?.key === 'Tab' || event?.keyCode === 9;\n };\n\n}\n","import {BbFocusTrap} from './directives/focus-trap.directive';\nimport {BbTemplate} from './directives/template.directive';\nimport {BbAutosize} from './directives/autosize.directive';\nimport {BbFocus} from './directives/focus.directive';\nimport {NgModule} from '@angular/core';\n\n@NgModule({\n imports: [\n BbTemplate,\n BbAutosize,\n BbFocus,\n BbFocusTrap\n ],\n exports: [\n BbTemplate,\n BbAutosize,\n BbFocus,\n BbFocusTrap\n ]\n})\nexport class UtilsModule {\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-utils.mjs","sources":["../../../projects/bb-foundation/utils/src/lib/directives/template.directive.ts","../../../projects/bb-foundation/utils/src/lib/directives/autosize.directive.ts","../../../projects/bb-foundation/utils/src/lib/directives/focus.directive.ts","../../../projects/bb-foundation/utils/src/lib/directives/focus-trap.directive.ts","../../../projects/bb-foundation/utils/src/lib/utils.module.ts","../../../projects/bb-foundation/utils/src/bravobit-bb-foundation-utils.ts"],"sourcesContent":["import {Directive, inject, Input, TemplateRef, ViewContainerRef} from '@angular/core';\n\n@Directive({\n selector: '[bbTemplate]'\n})\nexport class BbTemplate {\n\n // Dependencies.\n private readonly _templateRef: TemplateRef<any> = inject(TemplateRef);\n private readonly _viewContainerRef: ViewContainerRef = inject(ViewContainerRef);\n\n @Input() set bbTemplate(content: string | TemplateRef<any>) {\n // Get the template.\n const template = content instanceof TemplateRef\n ? content\n : this._templateRef;\n\n // Clear the view container ref and create the view.\n this._viewContainerRef.clear();\n this._viewContainerRef.createEmbeddedView(template);\n }\n\n // Required so that the template type checker can infer the type of the coerced inputs.\n static ngAcceptInputType_bbTemplate: string | TemplateRef<any>;\n\n}\n","import {AfterViewInit, Directive, ElementRef, HostBinding, HostListener, inject, Input, numberAttribute, Renderer2} from '@angular/core';\n\n@Directive({\n selector: 'textarea[bbAutosize]'\n})\nexport class BbAutosize implements AfterViewInit {\n\n // Dependencies.\n private readonly _renderer: Renderer2 = inject(Renderer2);\n private readonly _elementRef: ElementRef = inject(ElementRef);\n\n // Min/max heights for the textarea.\n @Input() @HostBinding('style.min-height') minHeight: string | null = null;\n @Input() @HostBinding('style.max-height') maxHeight: string | null = null;\n @Input({transform: numberAttribute}) @HostBinding('rows') rows: number = 1;\n\n get element() {\n return this._elementRef?.nativeElement as HTMLTextAreaElement;\n }\n\n ngAfterViewInit() {\n // Update the styles after the DOM has loaded.\n this.updateStylesInitial();\n }\n\n @HostListener('window:resize')\n onWindowResize() {\n // Update the styles when the window is resized.\n this.updateStyles();\n }\n\n @HostListener('input')\n onInputReceived() {\n // Update the styles after the textarea received input.\n this.updateStyles();\n }\n\n private updateStyles() {\n // Validate the element exists.\n if (!this.element) {\n return;\n }\n\n // Calculate border height which is not included in the scroll height.\n const borderHeight = this.element?.offsetHeight - this.element?.clientHeight;\n\n // Reset textarea height to auto that correctly calculate the new height.\n this.setHeight('auto');\n\n // Set new height.\n this.setHeight(`${this.element?.scrollHeight + borderHeight}px`);\n }\n\n private setHeight(value: string) {\n this._renderer.setStyle(this.element, 'height', value);\n }\n\n private updateStylesInitial() {\n if (setTimeout === null || setTimeout === undefined) {\n return this.updateStyles();\n }\n\n return setTimeout(() => this.updateStyles(), 0);\n }\n\n}\n","import {AfterViewInit, Directive, ElementRef, inject, Input, NgZone} from '@angular/core';\nimport {GLOBAL_FOCUS_MODE, FocusMode} from '@bravobit/bb-foundation';\nimport {Platform} from '@angular/cdk/platform';\n\n@Directive({\n selector: '[bbFocus]'\n})\nexport class BbFocus implements AfterViewInit {\n\n // Dependencies.\n private readonly _zone: NgZone = inject(NgZone);\n private readonly _platform: Platform = inject(Platform);\n private readonly _elementRef: ElementRef = inject(ElementRef);\n private readonly _globalFocusMode: FocusMode = inject(GLOBAL_FOCUS_MODE);\n\n // Inputs.\n @Input() bbFocusMode: FocusMode | null = null;\n\n private get nativeElement() {\n return this._elementRef.nativeElement;\n }\n\n ngAfterViewInit() {\n // Run the method outside the Angular zone.\n this._zone.runOutsideAngular(() => this.focus());\n }\n\n private isMobile() {\n return this._platform.IOS || this._platform.ANDROID;\n }\n\n private focus() {\n const focusMode = this.bbFocusMode ?? this._globalFocusMode;\n if (focusMode === 'only-desktop' && this.isMobile()) {\n return;\n }\n\n // Check if set timeout exists and the user is\n // using the site on desktop devices.\n if (!setTimeout) {\n return;\n }\n\n // Check if the element and the focus method exist, if so focus the element.\n if (!this.nativeElement || !this.nativeElement.focus) {\n return;\n }\n\n // Execute the focus method in a timeout.\n setTimeout(() => this.nativeElement.focus(), 0);\n }\n\n}\n","import {Directive, ElementRef, HostListener, inject} from '@angular/core';\nimport {Platform} from '@angular/cdk/platform';\n\n@Directive({\n selector: '[bbFocusTrap]'\n})\nexport class BbFocusTrap {\n\n // Dependencies.\n private readonly _platform: Platform = inject(Platform);\n private readonly _elementRef: ElementRef = inject(ElementRef);\n\n private readonly _focusableElements = [\n 'a[href]',\n 'area[href]',\n 'input:not([disabled]):not([type=\"hidden\"]):not([aria-hidden])',\n 'select:not([disabled]):not([aria-hidden])',\n 'textarea:not([disabled]):not([aria-hidden])',\n 'button:not([disabled]):not([aria-hidden])',\n 'iframe',\n 'object',\n 'embed',\n '[contenteditable]',\n '[tabindex]:not([tabindex^=\"-\"])'\n ];\n\n @HostListener('keydown', ['$event'])\n onKeydown(event: KeyboardEvent) {\n // Validate it is a tab event.\n if (!this.isTabEvent(event)) {\n return;\n }\n\n // Trap the focus inside the element.\n return this.trapFocus(event);\n }\n\n trapFocus(event: KeyboardEvent) {\n // Validate that the DOM is available.\n if (!this._platform.isBrowser) {\n return;\n }\n\n // Get all focusable nodes.\n const focusableNodes = this.getFocusableNodes();\n\n // Focus the first available element if the focus\n // is not in the modal.\n if (!this.element.contains(document.activeElement)) {\n return this.focus(focusableNodes[0]);\n }\n\n const focusedItemIndex = focusableNodes.indexOf(document.activeElement);\n\n if (event.shiftKey && focusedItemIndex === 0) {\n this.focus(focusableNodes[focusableNodes.length - 1]);\n return event.preventDefault();\n }\n\n if (!event.shiftKey && focusedItemIndex === focusableNodes.length - 1) {\n this.focus(focusableNodes[0]);\n return event.preventDefault();\n }\n }\n\n private get element() {\n return this._elementRef.nativeElement;\n }\n\n private getFocusableNodes() {\n const nodes = this.element.querySelectorAll(this._focusableElements);\n return Array(...nodes);\n }\n\n private focus = (element: HTMLElement) => {\n return element && element.focus && element.focus();\n };\n\n private isTabEvent = (event: KeyboardEvent) => {\n return event?.key === 'Tab' || event?.keyCode === 9;\n };\n\n}\n","import {BbFocusTrap} from './directives/focus-trap.directive';\nimport {BbTemplate} from './directives/template.directive';\nimport {BbAutosize} from './directives/autosize.directive';\nimport {BbFocus} from './directives/focus.directive';\nimport {NgModule} from '@angular/core';\n\n@NgModule({\n imports: [\n BbTemplate,\n BbAutosize,\n BbFocus,\n BbFocusTrap\n ],\n exports: [\n BbTemplate,\n BbAutosize,\n BbFocus,\n BbFocusTrap\n ]\n})\nexport class UtilsModule {\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}
@@ -78,10 +78,10 @@ class FileLoader {
78
78
  anyBlob.name = fileName;
79
79
  return anyBlob;
80
80
  };
81
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.1.6", ngImport: i0, type: FileLoader, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
82
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.1.6", ngImport: i0, type: FileLoader, providedIn: 'root' });
81
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.1", ngImport: i0, type: FileLoader, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
82
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.1", ngImport: i0, type: FileLoader, providedIn: 'root' });
83
83
  }
84
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.6", ngImport: i0, type: FileLoader, decorators: [{
84
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.1", ngImport: i0, type: FileLoader, decorators: [{
85
85
  type: Injectable,
86
86
  args: [{
87
87
  providedIn: 'root'
@@ -236,10 +236,10 @@ class Exif {
236
236
  }
237
237
  return -1;
238
238
  };
239
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.1.6", ngImport: i0, type: Exif, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
240
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.1.6", ngImport: i0, type: Exif, providedIn: 'root' });
239
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.1", ngImport: i0, type: Exif, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
240
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.1", ngImport: i0, type: Exif, providedIn: 'root' });
241
241
  }
242
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.6", ngImport: i0, type: Exif, decorators: [{
242
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.1", ngImport: i0, type: Exif, decorators: [{
243
243
  type: Injectable,
244
244
  args: [{
245
245
  providedIn: 'root'
@@ -353,10 +353,10 @@ class ImageConverter {
353
353
  }
354
354
  return { xOffset, yOffset, width, height };
355
355
  };
356
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.1.6", ngImport: i0, type: ImageConverter, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
357
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.1.6", ngImport: i0, type: ImageConverter, providedIn: 'root' });
356
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.1", ngImport: i0, type: ImageConverter, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
357
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.1", ngImport: i0, type: ImageConverter, providedIn: 'root' });
358
358
  }
359
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.6", ngImport: i0, type: ImageConverter, decorators: [{
359
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.1", ngImport: i0, type: ImageConverter, decorators: [{
360
360
  type: Injectable,
361
361
  args: [{
362
362
  providedIn: 'root'
@@ -437,10 +437,10 @@ class Files {
437
437
  anchor.click();
438
438
  }
439
439
  }
440
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.1.6", ngImport: i0, type: Files, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
441
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.1.6", ngImport: i0, type: Files, providedIn: 'root' });
440
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.1", ngImport: i0, type: Files, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
441
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.1", ngImport: i0, type: Files, providedIn: 'root' });
442
442
  }
443
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.6", ngImport: i0, type: Files, decorators: [{
443
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.1", ngImport: i0, type: Files, decorators: [{
444
444
  type: Injectable,
445
445
  args: [{
446
446
  providedIn: 'root'
@@ -511,10 +511,10 @@ class Languages {
511
511
  .filter(item => !!item)
512
512
  .sort((a, b) => b.quality - a.quality);
513
513
  }
514
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.1.6", ngImport: i0, type: Languages, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
515
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.1.6", ngImport: i0, type: Languages, providedIn: 'root' });
514
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.1", ngImport: i0, type: Languages, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
515
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.1", ngImport: i0, type: Languages, providedIn: 'root' });
516
516
  }
517
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.6", ngImport: i0, type: Languages, decorators: [{
517
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.1", ngImport: i0, type: Languages, decorators: [{
518
518
  type: Injectable,
519
519
  args: [{
520
520
  providedIn: 'root'
@@ -550,10 +550,10 @@ class Network {
550
550
  // a user is online/offline.
551
551
  this._online$ = merge(now$, online$, offline$).pipe(distinctUntilChanged(), shareReplay({ refCount: true, bufferSize: 1 }));
552
552
  }
553
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.1.6", ngImport: i0, type: Network, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
554
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.1.6", ngImport: i0, type: Network, providedIn: 'root' });
553
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.1", ngImport: i0, type: Network, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
554
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.1", ngImport: i0, type: Network, providedIn: 'root' });
555
555
  }
556
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.6", ngImport: i0, type: Network, decorators: [{
556
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.1", ngImport: i0, type: Network, decorators: [{
557
557
  type: Injectable,
558
558
  args: [{
559
559
  providedIn: 'root'
@@ -596,10 +596,10 @@ class Patch {
596
596
  // Save the subscription so we can destroy it later.
597
597
  this._subscription.add(subscription);
598
598
  }
599
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.1.6", ngImport: i0, type: Patch, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
600
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.1.6", ngImport: i0, type: Patch, providedIn: 'root' });
599
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.1", ngImport: i0, type: Patch, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
600
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.1", ngImport: i0, type: Patch, providedIn: 'root' });
601
601
  }
602
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.6", ngImport: i0, type: Patch, decorators: [{
602
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.1", ngImport: i0, type: Patch, decorators: [{
603
603
  type: Injectable,
604
604
  args: [{
605
605
  providedIn: 'root'
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@bravobit/bb-foundation",
3
- "version": "0.53.3",
3
+ "version": "0.53.5",
4
4
  "description": "The Angular core foundation of the Bravobit team.",
5
5
  "author": {
6
6
  "name": "Stan van Heumen",
@@ -8,9 +8,9 @@
8
8
  "url": "https://bravobit.nl"
9
9
  },
10
10
  "peerDependencies": {
11
- "@angular/common": "^19.1.0",
12
- "@angular/core": "^19.1.0",
13
- "@angular/cdk": "^19.1.0"
11
+ "@angular/common": "^19.2.0",
12
+ "@angular/core": "^19.2.0",
13
+ "@angular/cdk": "^19.2.0"
14
14
  },
15
15
  "dependencies": {
16
16
  "tslib": "^2.8.1",
@@ -44,25 +44,25 @@
44
44
  "types": "./collections/index.d.ts",
45
45
  "default": "./fesm2022/bravobit-bb-foundation-collections.mjs"
46
46
  },
47
- "./combobox": {
48
- "types": "./combobox/index.d.ts",
49
- "default": "./fesm2022/bravobit-bb-foundation-combobox.mjs"
47
+ "./elements": {
48
+ "types": "./elements/index.d.ts",
49
+ "default": "./fesm2022/bravobit-bb-foundation-elements.mjs"
50
50
  },
51
51
  "./dialog": {
52
52
  "types": "./dialog/index.d.ts",
53
53
  "default": "./fesm2022/bravobit-bb-foundation-dialog.mjs"
54
54
  },
55
+ "./http": {
56
+ "types": "./http/index.d.ts",
57
+ "default": "./fesm2022/bravobit-bb-foundation-http.mjs"
58
+ },
55
59
  "./dashboard": {
56
60
  "types": "./dashboard/index.d.ts",
57
61
  "default": "./fesm2022/bravobit-bb-foundation-dashboard.mjs"
58
62
  },
59
- "./elements": {
60
- "types": "./elements/index.d.ts",
61
- "default": "./fesm2022/bravobit-bb-foundation-elements.mjs"
62
- },
63
- "./http": {
64
- "types": "./http/index.d.ts",
65
- "default": "./fesm2022/bravobit-bb-foundation-http.mjs"
63
+ "./combobox": {
64
+ "types": "./combobox/index.d.ts",
65
+ "default": "./fesm2022/bravobit-bb-foundation-combobox.mjs"
66
66
  },
67
67
  "./localize": {
68
68
  "types": "./localize/index.d.ts",
@@ -76,6 +76,10 @@
76
76
  "types": "./notifications/index.d.ts",
77
77
  "default": "./fesm2022/bravobit-bb-foundation-notifications.mjs"
78
78
  },
79
+ "./permissions": {
80
+ "types": "./permissions/index.d.ts",
81
+ "default": "./fesm2022/bravobit-bb-foundation-permissions.mjs"
82
+ },
79
83
  "./recaptcha": {
80
84
  "types": "./recaptcha/index.d.ts",
81
85
  "default": "./fesm2022/bravobit-bb-foundation-recaptcha.mjs"
@@ -88,10 +92,6 @@
88
92
  "types": "./select/index.d.ts",
89
93
  "default": "./fesm2022/bravobit-bb-foundation-select.mjs"
90
94
  },
91
- "./permissions": {
92
- "types": "./permissions/index.d.ts",
93
- "default": "./fesm2022/bravobit-bb-foundation-permissions.mjs"
94
- },
95
95
  "./storage": {
96
96
  "types": "./storage/index.d.ts",
97
97
  "default": "./fesm2022/bravobit-bb-foundation-storage.mjs"
@@ -100,13 +100,13 @@
100
100
  "types": "./table/index.d.ts",
101
101
  "default": "./fesm2022/bravobit-bb-foundation-table.mjs"
102
102
  },
103
- "./utils": {
104
- "types": "./utils/index.d.ts",
105
- "default": "./fesm2022/bravobit-bb-foundation-utils.mjs"
106
- },
107
103
  "./tooltip": {
108
104
  "types": "./tooltip/index.d.ts",
109
105
  "default": "./fesm2022/bravobit-bb-foundation-tooltip.mjs"
106
+ },
107
+ "./utils": {
108
+ "types": "./utils/index.d.ts",
109
+ "default": "./fesm2022/bravobit-bb-foundation-utils.mjs"
110
110
  }
111
111
  }
112
112
  }
package/styles/theme.scss CHANGED
@@ -100,9 +100,12 @@
100
100
 
101
101
  // Multi file control.
102
102
  --bb-multi-file-control-color: var(--bb-primary-color-550);
103
- --bb-multi-file-control-box-shadow: 0 0 0 0.1875rem var(--bb-primary-color-100);
104
103
  --bb-multi-file-control-border-color: var(--bb-control-border-color);
104
+ --bb-multi-file-control-focus-box-shadow: 0 0 0 0.1875rem var(--bb-primary-color-100);
105
105
  --bb-multi-file-control-focus-border-color: var(--bb-control-focus-border-color);
106
+ --bb-multi-file-control-border-radius: var(--bb-form-control-border-radius);
107
+ --bb-multi-file-control-background-color: white;
108
+ --bb-multi-file-control-box-shadow: 0 0.375rem 0.375rem -0.375rem hsla(0, 0%, 0%, 0.1);
106
109
 
107
110
  // Image control.
108
111
  --bb-image-control-hover-color: var(--bb-primary-color-550);
@@ -170,5 +173,13 @@
170
173
 
171
174
  // Legacy dialog styling.
172
175
  --bb-dialog-border-radius: 0.25rem;
176
+
177
+ // Legacy multi file control.
178
+ --bb-multi-file-control-color: var(--bb-primary-color-550);
179
+ --bb-multi-file-control-border-color: hsla(213, 8%, 74%, 1);
180
+ --bb-multi-file-control-focus-border-color: var(--bb-control-focus-border-color);
181
+ --bb-multi-file-control-border-radius: 0.1875rem;
182
+ --bb-multi-file-control-background-color: hsla(300, 100%, 99%, 1);
183
+ --bb-multi-file-control-box-shadow: inset 0 0.1875rem hsla(213, 8%, 74%, 0.2), 0 0.375rem 0.375rem -0.375rem hsla(0, 0%, 0%, 0.1);
173
184
  }
174
185
  }
@@ -12,6 +12,7 @@ export declare class BbAutosize implements AfterViewInit {
12
12
  onInputReceived(): void;
13
13
  private updateStyles;
14
14
  private setHeight;
15
+ private updateStylesInitial;
15
16
  static ɵfac: i0.ɵɵFactoryDeclaration<BbAutosize, never>;
16
17
  static ɵdir: i0.ɵɵDirectiveDeclaration<BbAutosize, "textarea[bbAutosize]", never, { "minHeight": { "alias": "minHeight"; "required": false; }; "maxHeight": { "alias": "maxHeight"; "required": false; }; "rows": { "alias": "rows"; "required": false; }; }, {}, never, never, true, never>;
17
18
  static ngAcceptInputType_rows: unknown;