@bravobit/bb-foundation 0.58.0 → 0.60.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/fesm2022/bravobit-bb-foundation-auth.mjs +22 -22
- package/fesm2022/bravobit-bb-foundation-collections.mjs +43 -43
- package/fesm2022/bravobit-bb-foundation-dashboard.mjs +25 -25
- package/fesm2022/bravobit-bb-foundation-dialog.mjs +35 -35
- package/fesm2022/bravobit-bb-foundation-dialog.mjs.map +1 -1
- package/fesm2022/bravobit-bb-foundation-elements.mjs +111 -111
- package/fesm2022/bravobit-bb-foundation-elements.mjs.map +1 -1
- package/fesm2022/bravobit-bb-foundation-http.mjs +10 -10
- package/fesm2022/bravobit-bb-foundation-localize.mjs +171 -17
- package/fesm2022/bravobit-bb-foundation-localize.mjs.map +1 -1
- package/fesm2022/bravobit-bb-foundation-masking.mjs +16 -16
- package/fesm2022/bravobit-bb-foundation-notifications.mjs +13 -13
- package/fesm2022/bravobit-bb-foundation-permissions.mjs +10 -10
- package/fesm2022/bravobit-bb-foundation-recaptcha.mjs +10 -10
- package/fesm2022/bravobit-bb-foundation-select.mjs +27 -24
- package/fesm2022/bravobit-bb-foundation-select.mjs.map +1 -1
- package/fesm2022/bravobit-bb-foundation-storage.mjs +3 -3
- package/fesm2022/bravobit-bb-foundation-table.mjs +22 -22
- package/fesm2022/bravobit-bb-foundation-tooltip.mjs +10 -10
- package/fesm2022/bravobit-bb-foundation-utils.mjs +16 -16
- package/fesm2022/bravobit-bb-foundation.mjs +68 -23
- package/fesm2022/bravobit-bb-foundation.mjs.map +1 -1
- package/package.json +5 -5
- package/types/bravobit-bb-foundation-localize.d.ts +155 -1
- package/types/bravobit-bb-foundation-select.d.ts +2 -1
- package/types/bravobit-bb-foundation.d.ts +8 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bravobit-bb-foundation-elements.mjs","sources":["../../../projects/bb-foundation/elements/src/lib/directives/form-submit.directive.ts","../../../projects/bb-foundation/elements/src/lib/directives/form-submitter.directive.ts","../../../projects/bb-foundation/elements/src/lib/elements.interfaces.ts","../../../projects/bb-foundation/elements/src/lib/directives/extra-error-controls.directive.ts","../../../projects/bb-foundation/elements/src/lib/form-error/form-error.component.ts","../../../projects/bb-foundation/elements/src/lib/form-error/form-error.component.html","../../../projects/bb-foundation/elements/src/lib/form-control/form-control.component.ts","../../../projects/bb-foundation/elements/src/lib/form-control/form-control.component.html","../../../projects/bb-foundation/elements/src/lib/directives/input.directive.ts","../../../projects/bb-foundation/elements/src/lib/directives/image-upload.directive.ts","../../../projects/bb-foundation/elements/src/lib/directives/file-drop.directive.ts","../../../projects/bb-foundation/elements/src/lib/color-slider/color-slider.component.ts","../../../projects/bb-foundation/elements/src/lib/color-slider/color-slider.component.html","../../../projects/bb-foundation/elements/src/lib/color-picker/color-picker.component.ts","../../../projects/bb-foundation/elements/src/lib/color-picker/color-picker.component.html","../../../projects/bb-foundation/elements/src/lib/directives/color-picker.directive.ts","../../../projects/bb-foundation/elements/src/lib/pipes/file-size.pipe.ts","../../../projects/bb-foundation/elements/src/lib/pipes/file-image.pipe.ts","../../../projects/bb-foundation/elements/src/lib/pipes/file-data-url.pipe.ts","../../../projects/bb-foundation/elements/src/lib/pipes/relative-time.pipe.ts","../../../projects/bb-foundation/elements/src/lib/pipes/date.pipe.ts","../../../projects/bb-foundation/elements/src/lib/spinner/spinner.component.ts","../../../projects/bb-foundation/elements/src/lib/spinner/spinner.component.html","../../../projects/bb-foundation/elements/src/lib/button/button.component.ts","../../../projects/bb-foundation/elements/src/lib/button/button.component.html","../../../projects/bb-foundation/elements/src/lib/icon/icon.component.ts","../../../projects/bb-foundation/elements/src/lib/icon/icon.component.html","../../../projects/bb-foundation/elements/src/lib/form-group/form-group.component.ts","../../../projects/bb-foundation/elements/src/lib/form-group/form-group.component.html","../../../projects/bb-foundation/elements/src/lib/checkbox/checkbox.component.ts","../../../projects/bb-foundation/elements/src/lib/checkbox/checkbox.component.html","../../../projects/bb-foundation/elements/src/lib/checkbox-group/checkbox-group.component.ts","../../../projects/bb-foundation/elements/src/lib/checkbox-group/checkbox-group.component.html","../../../projects/bb-foundation/elements/src/lib/radio-group/radio-group.component.ts","../../../projects/bb-foundation/elements/src/lib/radio-group/radio-group.component.html","../../../projects/bb-foundation/elements/src/lib/radio-button/radio-button.component.ts","../../../projects/bb-foundation/elements/src/lib/radio-button/radio-button.component.html","../../../projects/bb-foundation/elements/src/lib/avatar/avatar.component.ts","../../../projects/bb-foundation/elements/src/lib/avatar/avatar.component.html","../../../projects/bb-foundation/elements/src/lib/elements.inject.ts","../../../projects/bb-foundation/elements/src/lib/multi-file-control/multi-file-control.component.ts","../../../projects/bb-foundation/elements/src/lib/multi-file-control/multi-file-control.component.html","../../../projects/bb-foundation/elements/src/lib/file-picker/file-picker.component.ts","../../../projects/bb-foundation/elements/src/lib/file-picker/file-picker.component.html","../../../projects/bb-foundation/elements/src/lib/image-picker/image-picker.component.ts","../../../projects/bb-foundation/elements/src/lib/image-picker/image-picker.component.html","../../../projects/bb-foundation/elements/src/lib/date-picker/date-picker.component.ts","../../../projects/bb-foundation/elements/src/lib/date-picker/date-picker.component.html","../../../projects/bb-foundation/elements/src/lib/image-control/image-control.component.ts","../../../projects/bb-foundation/elements/src/lib/image-control/image-control.component.html","../../../projects/bb-foundation/elements/src/lib/pincode-control/pincode-control.component.ts","../../../projects/bb-foundation/elements/src/lib/pincode-control/pincode-control.component.html","../../../projects/bb-foundation/elements/src/lib/elements.config.ts","../../../projects/bb-foundation/elements/src/lib/elements.module.ts","../../../projects/bb-foundation/elements/src/bravobit-bb-foundation-elements.ts"],"sourcesContent":["import {distinctUntilChanged, map, shareReplay, startWith} from 'rxjs/operators';\nimport {Directive, ElementRef, OnInit, Optional, Self} from '@angular/core';\nimport {EMPTY, fromEvent, merge, Observable} from 'rxjs';\nimport {FormGroupDirective} from '@angular/forms';\n\n@Directive({\n selector: 'form',\n exportAs: 'bbForm'\n})\nexport class BbFormSubmit implements OnInit {\n\n submitStatus$: Observable<boolean>;\n\n constructor(private _host: ElementRef<HTMLFormElement>,\n @Optional() @Self() private _formDirective: FormGroupDirective) {\n }\n\n ngOnInit() {\n // Submit changes.\n const regularSubmitChanges$ = fromEvent(this.nativeElement, 'submit').pipe(\n map(() => true)\n );\n\n // Reactive form submit changes.\n const reactiveSubmitChanges$ = this.reactiveSubmitChanges();\n\n // Reset changes.\n const resetChanges$ = fromEvent(this.nativeElement, 'reset').pipe(\n map(() => false)\n );\n\n // Listen to the submit status.\n this.submitStatus$ = merge(regularSubmitChanges$, reactiveSubmitChanges$, resetChanges$).pipe(\n startWith(false),\n distinctUntilChanged(),\n shareReplay({refCount: true, bufferSize: 1})\n );\n }\n\n submit() {\n this._formDirective?.ngSubmit?.emit();\n }\n\n reset() {\n return this.nativeElement?.reset();\n }\n\n private get nativeElement() {\n return this._host?.nativeElement;\n }\n\n private reactiveSubmitChanges() {\n if (!this._formDirective) {\n return EMPTY;\n }\n\n return this._formDirective.ngSubmit.pipe(\n map(() => true)\n );\n }\n\n}\n","import {Directive} from '@angular/core';\nimport {BehaviorSubject} from 'rxjs';\n\n@Directive({\n selector: '[bbFormSubmitter]',\n exportAs: 'bbFormSubmitter'\n})\nexport class BbFormSubmitter {\n\n // State.\n submitted$ = new BehaviorSubject<boolean>(false);\n\n submit() {\n this.submitted$.next(true);\n }\n\n reset() {\n this.submitted$.next(false);\n }\n\n}\n","import {InjectionToken} from '@angular/core';\n\nexport const ELEMENTS_CONFIG = new InjectionToken<ElementsConfig>('elements config');\nexport const ELEMENTS_ICONS: InjectionToken<ElementsIcon[]> = new InjectionToken('elements_icons');\nexport const ELEMENTS_ERRORS: InjectionToken<ElementsError[]> = new InjectionToken('elements_errors');\n\nexport type ElementsIcon = ElementsIconFont | ElementsIconImage | ElementsIconUrl | ElementsIconUnknown;\nexport type ElementsError = { [error: string]: (data?: any) => string | { token: string, data?: any }; };\n\nexport interface ElementsIconFont {\n namespace: string;\n className: string;\n uses: 'content' | 'data-attribute';\n type: 'font';\n}\n\nexport interface ElementsIconImage {\n namespace: string;\n name: string;\n src: string;\n type: 'image';\n}\n\nexport interface ElementsIconUrl {\n namespace: string;\n url: string;\n type: 'url';\n}\n\nexport interface ElementsIconUnknown {\n type: 'unknown';\n}\n\nexport interface ElementsConfig {\n useMaterialDesignIcons?: boolean;\n iconFonts?: ElementsIcon[];\n errors?: ElementsError;\n defaultDisplayUnit?: ElementsDisplayUnit;\n allowedFileTypes?: string[];\n maxFileSize?: number;\n maxTotalFileSize?: number;\n avatarColorAlgorithm?: ElementsAvatarColorAlgorithm;\n}\n\nexport type ElementsDisplayUnit = 'rem' | 'px';\n\nexport type ElementsAvatarColorAlgorithm = (value: string) => { color: string, background: string } | null;\n","import {BehaviorSubject, combineLatest, Subscription} from 'rxjs';\nimport {AbstractControl, ValidationErrors} from '@angular/forms';\nimport {Directive, Input, OnDestroy} from '@angular/core';\nimport {distinctUntilChanged, map} from 'rxjs/operators';\n\n@Directive({\n selector: '[bbExtraErrorControls]'\n})\nexport class BbExtraErrorControls implements OnDestroy {\n\n // State.\n readonly changes = new BehaviorSubject<ValidationErrors | null>(null);\n\n // Subscriptions.\n private _subscription: Subscription | null = null;\n\n @Input({alias: 'bbExtraErrorControls'})\n set extraControls(controls: AbstractControl[]) {\n this.handle(controls);\n }\n\n ngOnDestroy() {\n this._subscription?.unsubscribe();\n }\n\n private handle(controls: AbstractControl[]) {\n this._subscription?.unsubscribe();\n\n if (controls.length <= 0) {\n return;\n }\n\n const validationErrors$ = controls.map(control => {\n return control.valueChanges.pipe(\n map(_ => control?.errors)\n );\n });\n\n const errors$ = combineLatest(validationErrors$).pipe(\n map(validationErrors => validationErrors.find(error => !!error)),\n distinctUntilChanged()\n );\n\n this._subscription = errors$\n .subscribe(errors => this.changes.next(errors ?? null));\n }\n\n}\n","import {ChangeDetectionStrategy, Component, EventEmitter, Inject, Input, OnInit, Optional, Output, ViewEncapsulation} from '@angular/core';\nimport {BbExtraErrorControls} from '../directives/extra-error-controls.directive';\nimport {delay, distinctUntilChanged, map, startWith, tap} from 'rxjs/operators';\nimport {BbFormSubmitter} from '../directives/form-submitter.directive';\nimport {ELEMENTS_ERRORS, ElementsError} from '../elements.interfaces';\nimport {BbFormSubmit} from '../directives/form-submit.directive';\nimport {BbLocalize} from '@bravobit/bb-foundation/localize';\nimport {NgControl, ValidationErrors} from '@angular/forms';\nimport {combineLatest, Observable, of} from 'rxjs';\nimport {AsyncPipe} from '@angular/common';\n\n@Component({\n selector: 'bb-form-error',\n templateUrl: './form-error.component.html',\n styleUrls: ['./form-error.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {'class': 'bb-form-error'},\n imports: [AsyncPipe, BbLocalize]\n})\nexport class BbFormError implements OnInit {\n\n // Readonly data.\n readonly errorsMap: ElementsError;\n\n // Inputs.\n @Input() control: NgControl | null = null;\n\n // Outputs.\n @Output() errorChange = new EventEmitter<{ token: string, data?: any } | null>();\n\n // State.\n error$: Observable<{ token: string, data?: any } | null>;\n\n constructor(@Optional() private _form?: BbFormSubmit,\n @Optional() private _ngControl?: NgControl,\n @Optional() private _formSubmitter?: BbFormSubmitter,\n @Optional() private _extraErrorControls?: BbExtraErrorControls,\n @Optional() @Inject(ELEMENTS_ERRORS) private _errors?: ElementsError[]) {\n this.errorsMap = this._errors.reduce((previous, current) => ({...previous, ...current}), {});\n }\n\n ngOnInit() {\n this.setControl();\n this.setError();\n }\n\n private setControl() {\n if (!this.control) {\n this.control = this._ngControl;\n }\n }\n\n private setError() {\n const submitStatus$ = this.submitStatusChanges();\n const errorChanges$ = this.getErrors().pipe(\n map(errors => this.formatError(errors)),\n distinctUntilChanged(),\n map(error => typeof error === 'string' ? {token: error} : error)\n );\n\n this.error$ = combineLatest([submitStatus$, errorChanges$]).pipe(\n map(([submitted, error]) => submitted ? error : null),\n tap(value => this.errorChange.emit(value))\n );\n }\n\n private formatError(errors?: ValidationErrors) {\n const [errorName] = Object.keys(errors ?? {});\n const error = errors?.[errorName];\n if (!error) {\n return null;\n }\n\n const errorFunction = this.errorsMap?.[errorName] ?? this.errorsMap?.['unknown'];\n if (!errorFunction) {\n return null;\n }\n\n return errorFunction(error);\n }\n\n private submitStatusChanges() {\n const native$ = this.getNativeFormSubmit();\n const manual$ = this.getManualFormSubmit();\n return combineLatest([native$, manual$]).pipe(\n map(([native, manual]) => native || manual),\n distinctUntilChanged()\n );\n }\n\n private getNativeFormSubmit() {\n if (!this._form) {\n return of(true);\n }\n\n return this._form.submitStatus$;\n }\n\n private getManualFormSubmit() {\n if (!this._formSubmitter) {\n return of(false);\n }\n\n return this._formSubmitter.submitted$.pipe(\n distinctUntilChanged()\n );\n }\n\n private getErrors() {\n const error$ = (this.control?.statusChanges ?? of(null)).pipe(\n startWith(this.control?.status),\n map(_ => this.control?.errors ?? null),\n delay(0)\n );\n\n const extraError$ = this._extraErrorControls?.changes?.asObservable() ?? of(null);\n\n return combineLatest([error$, extraError$]).pipe(\n map(([error, extraError]) => error ?? extraError ?? null),\n distinctUntilChanged()\n );\n }\n\n}\n","@if (error$ | async; as error) {\n @if (error?.token | bbLocalize:{optional: true, data: error?.data}; as message) {\n <p class=\"bb-form-error-message\">{{ message }}</p>\n }\n}\n","import {booleanAttribute, ChangeDetectionStrategy, Component, ContentChild, Input, TemplateRef, ViewEncapsulation} from '@angular/core';\nimport {BbFormError} from '../form-error/form-error.component';\nimport {BbTemplate} from '@bravobit/bb-foundation/utils';\nimport {NgControl} from '@angular/forms';\n\nlet nextUniqueId = 0;\n\n@Component({\n selector: 'bb-form-control',\n templateUrl: './form-control.component.html',\n styleUrls: ['./form-control.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n 'class': 'bb-form-control',\n '[class.grouped]': 'grouped',\n '[class.error]': 'error'\n },\n imports: [BbTemplate, BbFormError]\n})\nexport class BbFormControl {\n\n // Readonly data.\n readonly labelId: string = `bb-form-control-${nextUniqueId++}`;\n\n // Views.\n @ContentChild(NgControl) ngControl: NgControl;\n\n // Inputs.\n @Input() label: string | TemplateRef<any> | null = null;\n @Input() hint: string | TemplateRef<any> | null = null;\n @Input({transform: booleanAttribute}) grouped: boolean = false;\n @Input({transform: booleanAttribute}) hideErrors: boolean = false;\n\n // State.\n error: boolean = false;\n\n onErrorChange(error: { token: string, data?: any } | null) {\n this.error = !!error;\n }\n\n}\n","<!-- Label of the form control. -->\n@if (label; as labelContent) {\n <label [attr.for]=\"labelId\"\n class=\"bb-form-control-label\">\n <ng-template [bbTemplate]=\"labelContent\">{{ labelContent }}</ng-template>\n </label>\n}\n\n<!-- The input with the addons. -->\n<div class=\"bb-form-control-container\">\n <ng-content select=\"[bbPrefix]\"></ng-content>\n <ng-content select=\"[bbInput]\"></ng-content>\n <ng-content select=\"[bbSuffix]\"></ng-content>\n</div>\n\n<!-- The error component. -->\n@if (!hideErrors) {\n <bb-form-error [control]=\"ngControl\"\n (errorChange)=\"onErrorChange($event)\">\n </bb-form-error>\n}\n\n<!-- The form control hint. -->\n@if (hint; as hintContent) {\n <p class=\"bb-form-control-hint\">\n <ng-template [bbTemplate]=\"hintContent\">{{ hintContent }}</ng-template>\n </p>\n}\n","import {booleanAttribute, Directive, ElementRef, Host, HostBinding, Input, Optional} from '@angular/core';\nimport {BbFormControl} from '../form-control/form-control.component';\nimport {Validators} from '@angular/forms';\n\n@Directive({\n selector: 'input[bbInput],textarea[bbInput],select[bbInput]'\n})\nexport class BbInput {\n\n constructor(private _elementRef: ElementRef,\n @Optional() @Host() private _formControl: BbFormControl) {\n }\n\n focus() {\n return this._elementRef?.nativeElement?.focus();\n }\n\n @HostBinding('attr.id')\n get id() {\n return this._formControl?.labelId ?? null;\n }\n\n @Input({transform: booleanAttribute})\n @HostBinding('attr.required')\n get required() {\n const hasValidator = this._formControl?.ngControl?.control?.hasValidator(Validators.required);\n return hasValidator || this._required === true ? true : null;\n }\n\n set required(value: boolean) {\n this._required = value;\n }\n\n private _required: boolean = false;\n\n}\n","import {Directive, EventEmitter, HostListener, inject, Input, numberAttribute, Output, Renderer2} from '@angular/core';\nimport {Platform} from '@angular/cdk/platform';\nimport {Files} from '@bravobit/bb-foundation';\n\n@Directive({\n selector: 'button[bbImageUpload]'\n})\nexport class BbImageUpload {\n\n // Dependencies.\n private readonly _files: Files = inject(Files);\n private readonly _platform: Platform = inject(Platform);\n private readonly _renderer: Renderer2 = inject(Renderer2);\n\n // Inputs.\n @Input({alias: 'bbImageUploadWidth', transform: numberAttribute}) width: number | null = null;\n @Input({alias: 'bbImageUploadHeight', transform: numberAttribute}) height: number | null = null;\n @Input({alias: 'bbImageUploadMode'}) mode: 'aspect-fit' | 'aspect-fill' = 'aspect-fit';\n @Input({alias: 'bbImageUploadType'}) type: 'png' | 'jpg' = 'png';\n\n // Outputs.\n @Output() onDataUri = new EventEmitter<string>();\n @Output() onFile = new EventEmitter<File>();\n\n @HostListener('click')\n async onClick() {\n if (!this._platform.isBrowser) {\n return;\n }\n\n const originalFile = await this.openFilePicker();\n const dataUri = await this.toDataUri(originalFile);\n const image = await this.toImage(dataUri);\n const scaledDataUri = this.scaleImage(image);\n this.onDataUri.emit(scaledDataUri);\n\n if (this.onFile?.observed) {\n const name = this.getFileName();\n const file = this._files.fromDataUri(scaledDataUri, name);\n this.onFile.emit(file);\n }\n }\n\n private openFilePicker() {\n return new Promise<File>(resolve => {\n const input = this._renderer.createElement('input');\n this._renderer.setProperty(input, 'type', 'file');\n this._renderer.setProperty(input, 'accept', 'image/png,image/jpeg');\n const handler = this._renderer.listen(input, 'change', event => {\n handler();\n const files = event?.target?.files ?? [];\n const file = files?.[0] ?? null;\n return resolve(file);\n });\n input?.click?.();\n });\n }\n\n private async toDataUri(file: File) {\n return new Promise<string>((resolve, reject) => {\n const reader = new FileReader();\n reader.onerror = () => reject('error file read');\n reader.onabort = () => reject('abort file read');\n reader.onload = () => resolve(reader?.result as string);\n reader.readAsDataURL(file);\n });\n }\n\n private toImage(src: string) {\n return new Promise<HTMLImageElement>((resolve, reject) => {\n const image = new Image();\n image.src = src;\n image.onload = () => resolve(image);\n image.onerror = error => reject(error);\n });\n }\n\n private scaleImage(image: HTMLImageElement) {\n const imageWidth = image?.width ?? 0;\n const imageHeight = image?.height ?? 0;\n\n const canvas: HTMLCanvasElement = this._renderer.createElement('canvas');\n this._renderer.setProperty(canvas, 'width', this.width ?? imageWidth);\n this._renderer.setProperty(canvas, 'height', this.height ?? imageHeight);\n\n const context = canvas.getContext('2d');\n\n const scaleX = canvas.width / imageWidth;\n const scaleY = canvas.height / imageHeight;\n const scale = this.getScaleByMode(scaleX, scaleY);\n\n const scaledWidth = imageWidth * scale;\n const scaledHeight = imageHeight * scale;\n const offsetX = (canvas.width - scaledWidth) / 2;\n const offsetY = (canvas.height - scaledHeight) / 2;\n\n context.drawImage(image, 0, 0, imageWidth, imageHeight, offsetX, offsetY, scaledWidth, scaledHeight);\n\n const type = this.getExportType();\n return canvas.toDataURL(type);\n }\n\n private getExportType() {\n switch (this.type) {\n case 'jpg':\n return 'image/jpeg';\n case 'png':\n default:\n return 'image/png';\n }\n }\n\n private getScaleByMode(x: number, y: number) {\n switch (this.mode) {\n case 'aspect-fill':\n return Math.max(x, y);\n case 'aspect-fit':\n default:\n return Math.min(x, y);\n }\n }\n\n private getFileName() {\n switch (this.type) {\n case 'jpg':\n return 'image.jpg';\n case 'png':\n return 'image.png';\n default:\n return 'image';\n }\n }\n\n}\n","import {booleanAttribute, Directive, EventEmitter, HostBinding, HostListener, Input, Output} from '@angular/core';\n\n@Directive({\n selector: '[bbFileDrop]'\n})\nexport class BbFileDrop {\n\n // Inputs.\n @Input({alias: 'bbFileDropDisabled', transform: booleanAttribute}) disabled: boolean = false;\n\n // Outputs.\n @Output('bbFileDrop') onFileDropped = new EventEmitter<File[]>();\n\n // State.\n @HostBinding('class.is-hovered') hovered: boolean = false;\n\n @HostListener('dragover', ['$event', 'true'])\n @HostListener('dragleave', ['$event', 'false'])\n onDrag(event: Event, isHovered: boolean) {\n if (this.disabled) {\n return;\n }\n\n event.preventDefault();\n event.stopPropagation();\n this.setHovered(isHovered);\n }\n\n @HostListener('drop', ['$event'])\n onDrop(event: Event) {\n if (this.disabled) {\n return;\n }\n\n event.preventDefault();\n event.stopPropagation();\n this.setHovered(false);\n\n const files: File[] = Array.from(event['dataTransfer'].files);\n if (files?.length <= 0) {\n return;\n }\n\n this.onFileDropped.emit(files);\n }\n\n private setHovered(value: boolean) {\n this.hovered = value;\n }\n\n}\n","import {ChangeDetectionStrategy, Component, ElementRef, EventEmitter, inject, Input, numberAttribute, OnDestroy, OnInit, Output, ViewEncapsulation, DOCUMENT} from '@angular/core';\nimport {map, shareReplay, startWith, switchMap, tap} from 'rxjs/operators';\nimport {fromEvent, Subscription, takeUntil} from 'rxjs';\nimport {clamp} from '@bravobit/bb-foundation';\n\n@Component({\n selector: 'bb-color-slider',\n templateUrl: './color-slider.component.html',\n styleUrls: ['./color-slider.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {'class': 'bb-color-slider'}\n})\nexport class BbColorSlider implements OnInit, OnDestroy {\n\n // Dependencies.\n private readonly _elementRef: ElementRef = inject(ElementRef);\n private readonly _document: Document = inject(DOCUMENT);\n\n // Inputs.\n @Input({transform: numberAttribute}) xOffset: number = 0;\n @Input({transform: numberAttribute}) yOffset: number = 0;\n @Input({transform: numberAttribute}) size: number = 1;\n\n // Outputs.\n @Output() xOffsetChange = new EventEmitter<number>();\n @Output() yOffsetChange = new EventEmitter<number>();\n\n // Subscriptions.\n private _subscription = new Subscription();\n\n get x() {\n return clamp(this.xOffset, 0, 1);\n }\n\n get y() {\n return clamp(this.yOffset, 0, 1);\n }\n\n ngOnInit() {\n this.setOffsets();\n }\n\n ngOnDestroy() {\n this._subscription?.unsubscribe();\n }\n\n private updateValue(value: { x?: number, y?: number }) {\n this.xOffset = value?.x;\n this.yOffset = value?.y;\n this.xOffsetChange.emit(this.xOffset);\n this.yOffsetChange.emit(this.yOffset);\n }\n\n private setOffsets() {\n const element = this._elementRef?.nativeElement ?? null;\n const offsets$ = fromEvent<PointerEvent>(element, 'pointerdown').pipe(\n switchMap(pointerDownEvent => {\n const rect = element.getBoundingClientRect();\n\n return fromEvent<PointerEvent>(this._document, 'pointermove').pipe(\n map(pointerMoveEvent => this.calculate(pointerMoveEvent, rect)),\n startWith(this.calculate(pointerDownEvent, rect)),\n takeUntil(fromEvent<PointerEvent>(this._document, 'pointerup'))\n );\n }),\n tap(value => this.updateValue(value)),\n shareReplay({bufferSize: 1, refCount: true})\n );\n\n const subscription = offsets$.subscribe();\n this._subscription.add(subscription);\n }\n\n private calculate(event: PointerEvent, rect: DOMRect) {\n const x = clamp(event.clientX - rect.left, 0, rect.width);\n const y = clamp(event.clientY - rect.top, 0, rect.height);\n return {\n x: x / rect.width,\n y: y / rect.height\n };\n }\n\n}\n","<div\n [style.left]=\"'clamp(calc(0% + ' + (size / 2) + 'rem), ' + (x * 100) + '%, calc(100% - ' + (size / 2) + 'rem))'\"\n [style.top]=\"'clamp(calc(0% + ' + (size / 2) + 'rem), ' + (y * 100) + '%, calc(100% - ' + (size / 2) + 'rem))'\"\n [style.width.rem]=\"size\"\n [style.height.rem]=\"size\"\n class=\"bb-color-slider-control\"></div>\n","import {booleanAttribute, ChangeDetectionStrategy, Component, EventEmitter, Input, Output, ViewEncapsulation} from '@angular/core';\nimport {BbColorSlider} from '../color-slider/color-slider.component';\nimport {clamp, hexToHsv, hsvToHex} from '@bravobit/bb-foundation';\n\n@Component({\n selector: 'bb-color-picker',\n templateUrl: './color-picker.component.html',\n styleUrls: ['./color-picker.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {'class': 'bb-color-picker'},\n imports: [BbColorSlider]\n})\nexport class BbColorPicker {\n\n // Inputs.\n @Input({transform: booleanAttribute}) showAlpha: boolean = false;\n\n @Input() set color(value: string) {\n if (this._color === value) {\n return;\n }\n this._color = value;\n this.setUIVariables();\n }\n\n get color() {\n return this._color;\n }\n\n // Outputs.\n @Output() colorChange = new EventEmitter<string>();\n\n // UI variables.\n hueOffset: number = 0;\n saturationOffset: number = 0;\n valueOffset: number = 0;\n opacityOffset: number = 1;\n\n // State.\n private _color: string | null = null;\n\n setColor() {\n try {\n const hue = this.hueOffset * 360;\n const saturation = clamp(this.saturationOffset * 100, 0, 100);\n const value = clamp((1 - this.valueOffset) * 100, 0, 100);\n const opacity = this.showAlpha ? clamp(this.opacityOffset, 0, 1) : 1;\n const newColor = hsvToHex(hue, saturation, value, opacity);\n if (newColor === this._color) {\n return;\n }\n this._color = newColor;\n this.colorChange.emit(this._color);\n } catch {\n // do nothing.\n }\n }\n\n private setUIVariables() {\n if (this._color === null || this._color === undefined) {\n return;\n }\n\n try {\n const {hue, saturation, value, alpha} = hexToHsv(this._color);\n this.hueOffset = hue / 360;\n this.saturationOffset = saturation / 100;\n this.valueOffset = 1 - (value / 100);\n this.opacityOffset = this.showAlpha ? alpha : 1;\n } catch {\n this.hueOffset = 0;\n this.saturationOffset = 0;\n this.valueOffset = 0;\n this.opacityOffset = 1;\n }\n }\n\n}\n","<bb-color-slider [(xOffset)]=\"saturationOffset\"\n [(yOffset)]=\"valueOffset\"\n [style.background-color]=\"'hsl(' + (hueOffset * 360) + ', 100%, 50%)'\"\n (xOffsetChange)=\"setColor()\"\n size=\"1.5\"\n class=\"bb-color-picker-saturation\">\n</bb-color-slider>\n\n<bb-color-slider [(xOffset)]=\"hueOffset\"\n (xOffsetChange)=\"setColor()\"\n size=\"1.5\"\n class=\"bb-color-picker-hue\">\n</bb-color-slider>\n\n@if (showAlpha) {\n <bb-color-slider [(xOffset)]=\"opacityOffset\"\n [style.background-image]=\"'linear-gradient(45deg, rgba(255, 255, 255, 0.2) 25%, transparent 25%, transparent 75%, rgba(255, 255, 255, 0.2) 75%, rgba(255, 255, 255, 0.2)), linear-gradient(45deg, rgba(255, 255, 255, 0.2) 25%, transparent 25%, transparent 75%, rgba(255, 255, 255, 0.2) 75%, rgba(255, 255, 255, 0.2)), linear-gradient(to right, hsla(' + (hueOffset * 360) + ',100%,50%,0), hsla(' + (hueOffset * 360) + ',100%,50%,1))'\"\n (xOffsetChange)=\"setColor()\"\n size=\"1.5\"\n class=\"bb-color-picker-alpha\">\n </bb-color-slider>\n}\n","import {booleanAttribute, Directive, ElementRef, EnvironmentInjector, EventEmitter, HostListener, inject, Input, OnDestroy, OnInit, Output, ViewContainerRef} from '@angular/core';\nimport {ConnectedPosition, Overlay, OverlayRef} from '@angular/cdk/overlay';\nimport {BbColorPicker} from '../color-picker/color-picker.component';\nimport {ComponentPortal} from '@angular/cdk/portal';\nimport {merge, Subscription} from 'rxjs';\n\n@Directive({\n selector: '[bbColorPicker]'\n})\nexport class ColorPickerDirective implements OnInit, OnDestroy {\n\n // Dependencies.\n private readonly _overlay: Overlay = inject(Overlay);\n private readonly _viewContainerRef: ViewContainerRef = inject(ViewContainerRef);\n private readonly _elementRef: ElementRef<HTMLElement> = inject(ElementRef<HTMLElement>);\n private readonly _environmentInjector: EnvironmentInjector = inject(EnvironmentInjector);\n\n // Inputs.\n @Input({required: true}) bbColorPicker!: string;\n @Input({transform: booleanAttribute}) bbColorPickerShowAlpha: boolean = false;\n @Input({transform: booleanAttribute}) bbColorPickerDisabled: boolean = false;\n\n // Outputs.\n @Output() bbColorPickerChange = new EventEmitter<string>();\n\n // State.\n private _overlayRef: OverlayRef | null = null;\n\n // Subscriptions.\n private _subscription = new Subscription();\n\n @HostListener('click')\n showColorPicker() {\n if (this._overlayRef?.hasAttached() || this.bbColorPickerDisabled) {\n return;\n }\n this.attachColorPicker();\n }\n\n hideColorPicker() {\n if (!this._overlayRef?.hasAttached()) {\n return;\n }\n this._overlayRef?.detach();\n }\n\n ngOnInit() {\n this.createOverlay();\n this.handleOverlayEvents();\n }\n\n ngOnDestroy() {\n this._subscription?.unsubscribe();\n this._overlayRef?.dispose();\n }\n\n private attachColorPicker() {\n const component = new ComponentPortal(BbColorPicker, this._viewContainerRef, this._environmentInjector);\n const componentRef = this._overlayRef.attach(component);\n componentRef.setInput('color', this.bbColorPicker);\n componentRef.setInput('showAlpha', this.bbColorPickerShowAlpha);\n componentRef.instance.colorChange.subscribe(color => {\n this.bbColorPickerChange.emit(color);\n });\n }\n\n private getPositionStrategy() {\n const positions = this.getPositions();\n\n return this._overlay\n .position()\n .flexibleConnectedTo(this._elementRef)\n .withPositions(positions);\n }\n\n private handleOverlayEvents() {\n if (!this._overlayRef) {\n return;\n }\n\n const backdropClick$ = this._overlayRef.backdropClick();\n const outside$ = this._overlayRef.outsidePointerEvents();\n const detachments$ = this._overlayRef.detachments();\n\n const subscription = merge(backdropClick$, outside$, detachments$).subscribe(() => {\n this.hideColorPicker();\n });\n this._subscription.add(subscription);\n }\n\n private createOverlay() {\n const positionStrategy = this.getPositionStrategy();\n const scrollStrategy = this._overlay.scrollStrategies.reposition();\n\n this._overlayRef = this._overlay.create({\n positionStrategy,\n scrollStrategy,\n minHeight: 200,\n disposeOnNavigation: true,\n width: '100%',\n maxWidth: '20rem'\n });\n }\n\n private getPositions() {\n return [\n {\n originX: 'start',\n originY: 'bottom',\n overlayX: 'start',\n overlayY: 'top',\n offsetY: 8\n },\n {\n originX: 'start',\n originY: 'top',\n overlayX: 'start',\n overlayY: 'bottom',\n offsetY: -8\n },\n {\n originX: 'end',\n originY: 'top',\n overlayX: 'start',\n overlayY: 'top',\n offsetX: 8\n },\n {\n originX: 'start',\n originY: 'top',\n overlayX: 'end',\n overlayY: 'top',\n offsetX: -8\n }\n ] satisfies ConnectedPosition[];\n }\n\n}\n","import {formatFileSize} from '@bravobit/bb-foundation';\nimport {Pipe, PipeTransform} from '@angular/core';\n\n@Pipe({\n name: 'bbFileSize'\n})\nexport class BbFileSize implements PipeTransform {\n\n transform(value: number) {\n return formatFileSize(value);\n }\n\n}\n","import {ImageConverter} from '@bravobit/bb-foundation';\nimport {DomSanitizer} from '@angular/platform-browser';\nimport {Pipe, PipeTransform} from '@angular/core';\nimport {Platform} from '@angular/cdk/platform';\n\n@Pipe({\n name: 'bbFileImage'\n})\nexport class BbFileImage implements PipeTransform {\n\n constructor(private _platform: Platform,\n private _image: ImageConverter,\n private _sanitizer: DomSanitizer) {\n }\n\n async transform(file: File) {\n // If the file is not a file return.\n if (!this._platform.isBrowser || !(file instanceof File)) {\n return null;\n }\n\n return this._image.fileToImage(file, [\n 'image/png',\n 'image/jpeg',\n 'image/webp',\n 'image/gif',\n 'image/svg+xml'\n ]).then(image => {\n if (!image) {\n return null;\n }\n\n return {\n background: this._sanitizer.bypassSecurityTrustStyle(`url(${image.src})`),\n aspectRatio: image.height / image.width\n };\n }).catch(() => {\n return null;\n });\n }\n\n}\n","import {inject, Pipe, PipeTransform} from '@angular/core';\nimport {Exif, FileLoader} from '@bravobit/bb-foundation';\nimport {Platform} from '@angular/cdk/platform';\n\n@Pipe({\n name: 'bbFileDataUrl'\n})\nexport class BbFileDataUrl implements PipeTransform {\n\n // Dependencies.\n private readonly _platform: Platform = inject(Platform);\n private readonly _exif: Exif = inject(Exif);\n private readonly _fileLoader: FileLoader = inject(FileLoader);\n\n async transform(input: File | Blob) {\n if (!this._platform.isBrowser) {\n return null;\n }\n\n if (input === null || input === undefined || !this.isFileLike(input)) {\n return null;\n }\n\n const stripped = await this.stripExif(input);\n return await this._fileLoader.asDataUrl(stripped);\n }\n\n private async stripExif(input: File | Blob) {\n try {\n if (input instanceof Blob) {\n return input;\n }\n return await this._exif.strip(input);\n } catch {\n return input;\n }\n }\n\n private isFileLike(input: unknown) {\n return 'File' in window && input instanceof File\n || 'Blob' in window && input instanceof Blob;\n }\n\n}\n","import {Inject, LOCALE_ID, Optional, Pipe, PipeTransform} from '@angular/core';\nimport {Localize} from '@bravobit/bb-foundation/localize';\nimport {formatDate} from '@angular/common';\n\n@Pipe({\n name: 'bbRelativeTime'\n})\nexport class BbRelativeTime implements PipeTransform {\n\n constructor(@Inject(LOCALE_ID) private _localeId: string,\n @Optional() private _localize?: Localize) {\n }\n\n transform(value: string | number | Date) {\n // Parse the value to a date object.\n const date = this.parseAsDate(value);\n\n // Check if the date is valid.\n if (!this.isValidDate(date)) {\n return value;\n }\n\n // Return the formatted date.\n return this.format(date);\n }\n\n private format(date: Date) {\n // It happens tomorrow.\n if (this.isTomorrow(date)) {\n return this.formatString(date, 'times.tomorrow_at', 'shortTime');\n }\n\n // It happened today.\n if (this.isToday(date)) {\n return this.formatString(date, 'times.today_at', 'shortTime');\n }\n\n // It happened yesterday.\n if (this.isYesterday(date)) {\n return this.formatString(date, 'times.yesterday_at', 'shortTime');\n }\n\n // Just return the date.\n return this.formatString(date);\n }\n\n private formatString(date: Date, token?: string, format?: string) {\n // Just return the parsed date.\n if (!this._localize || !token || !format) {\n return formatDate(date, 'mediumDate', this.locale);\n }\n\n // Return the translated formatting.\n return this._localize.translate({\n token: token,\n data: {date: formatDate(date, format, this.locale)}\n });\n }\n\n private get locale() {\n return this._localize?.current?.locale ?? this._localeId;\n }\n\n private isValidDate = (date: Date) => {\n return typeof date === 'object' &&\n typeof date.getTime === 'function' &&\n !isNaN(date.getTime());\n };\n\n private parseAsDate = (value: string | number | Date) => {\n // Add a Z after the date so\n // it is treated as a UTC date.\n if (typeof value === 'string' && /^[0-9]{4}-[0-9]{2}-[0-9]{2}T[0-9]{2}:[0-9]{2}:[0-9]{2}$/.test(value)) {\n return new Date(`${value}Z`);\n }\n\n // Return the regular parsed date.\n return new Date(value);\n };\n\n private isToday = (date: Date) => {\n const today = new Date();\n return date?.getDate() === today?.getDate() &&\n date?.getMonth() === today?.getMonth() &&\n date?.getFullYear() === today?.getFullYear();\n };\n\n private isYesterday = (date: Date) => {\n const yesterday = new Date(new Date()?.setDate(new Date()?.getDate() - 1));\n return date?.getDate() === yesterday?.getDate() &&\n date?.getMonth() === yesterday?.getMonth() &&\n date?.getFullYear() === yesterday?.getFullYear();\n };\n\n private isTomorrow = (date: Date) => {\n const tomorrow = new Date(new Date()?.setDate(new Date()?.getDate() + 1));\n return date?.getDate() === tomorrow?.getDate() &&\n date?.getMonth() === tomorrow?.getMonth() &&\n date?.getFullYear() === tomorrow?.getFullYear();\n };\n\n}\n","import {inject, LOCALE_ID, Pipe, PipeTransform} from '@angular/core';\nimport {Localize} from '@bravobit/bb-foundation/localize';\nimport {parseDate} from '@bravobit/bb-foundation';\nimport {formatDate} from '@angular/common';\n\n@Pipe({\n name: 'bbDate'\n})\nexport class BbDate implements PipeTransform {\n\n // Dependencies.\n private readonly _localize = inject(Localize, {optional: true});\n private readonly _localeId = inject(LOCALE_ID);\n\n transform(value: string | number | Date, format?: string) {\n const date = parseDate(value);\n if (date === null) {\n return null;\n }\n\n const locale = this._localize?.current?.locale ?? this._localeId ?? 'en-US';\n return formatDate(date, format ?? 'mediumDate', locale);\n }\n\n}\n","import {booleanAttribute, ChangeDetectionStrategy, Component, input, ViewEncapsulation} from '@angular/core';\n\n@Component({\n selector: 'bb-spinner',\n templateUrl: './spinner.component.html',\n styleUrls: ['./spinner.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {'class': 'bb-spinner'}\n})\nexport class BbSpinner {\n\n // Inputs.\n readonly color = input<string>('var(--bb-spinner-color)');\n readonly alt = input<string>('Loading...');\n readonly disabled = input(false, {transform: booleanAttribute});\n\n}\n","<!--\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","import {booleanAttribute, ChangeDetectionStrategy, Component, ElementRef, HostListener, Input, ViewEncapsulation} from '@angular/core';\nimport {BbSpinner} from '../spinner/spinner.component';\n\n@Component({\n selector: 'button[bb-button]',\n templateUrl: './button.component.html',\n styleUrls: ['./button.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n exportAs: 'bbButton',\n host: {\n 'class': 'bb-button',\n '[class.loading]': 'loading',\n '[attr.disabled]': 'disabled || loading || null'\n },\n imports: [BbSpinner]\n})\nexport class BbButton {\n\n // Inputs.\n @Input({transform: booleanAttribute}) disabled: boolean = false;\n @Input({transform: booleanAttribute}) loading: boolean = false;\n\n constructor(protected elementRef: ElementRef<HTMLButtonElement>) {\n }\n\n focus() {\n const element = this.elementRef?.nativeElement ?? null;\n element?.focus?.();\n }\n\n}\n\n@Component({\n selector: 'a[bb-button]',\n templateUrl: './button.component.html',\n styleUrls: ['./button.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n exportAs: 'bbButton, bbAnchor',\n host: {\n 'class': 'bb-button',\n '[attr.tabindex]': '(disabled || loading) ? -1 : (tabIndex || 0)',\n '[attr.disabled]': 'disabled || loading || null',\n '[attr.aria-disabled]': '(disabled || loading).toString()'\n },\n imports: [BbSpinner]\n})\nexport class BbAnchor extends BbButton {\n\n // Inputs.\n @Input() tabIndex: number | null = null;\n\n constructor(protected override elementRef: ElementRef) {\n super(elementRef);\n }\n\n @HostListener('click', ['$event'])\n stopDisabledEvents(event: Event) {\n // If the button is not disabled (and not loading) let all events pass.\n if (!this.disabled && !this.loading) {\n return;\n }\n\n // If the button is disabled and/or loading stop\n // the event from bubbling up.\n event.preventDefault();\n event.stopImmediatePropagation();\n }\n\n}\n","@if (loading) {\n <bb-spinner class=\"bb-button-spinner small\"></bb-spinner>\n}\n\n<ng-content select=\"[prefix]\"></ng-content>\n<span class=\"bb-button-content\"><ng-content></ng-content></span>\n<ng-content select=\"[suffix]\"></ng-content>\n","import {booleanAttribute, ChangeDetectionStrategy, Component, HostBinding, Inject, Input, numberAttribute, Optional, ViewEncapsulation} from '@angular/core';\nimport {ELEMENTS_CONFIG, ELEMENTS_ICONS, ElementsConfig, ElementsDisplayUnit, ElementsIcon} from '../elements.interfaces';\nimport {AsyncPipe} from '@angular/common';\nimport {BehaviorSubject} from 'rxjs';\n\n@Component({\n selector: 'bb-icon',\n templateUrl: './icon.component.html',\n styleUrls: ['./icon.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n 'class': 'bb-icon',\n '[attr.aria-hidden]': 'ariaHidden'\n },\n imports: [AsyncPipe]\n})\nexport class BbIcon {\n\n // Data.\n private _src: string | null = null;\n\n // State.\n state$ = new BehaviorSubject<any>(null);\n\n @Input() alt: string | null = null;\n @Input({transform: numberAttribute}) size: number = 1.5;\n @Input({transform: booleanAttribute}) ariaHidden: boolean = true;\n @Input() unit: ElementsDisplayUnit | null = null;\n\n @Input()\n set src(newValue: string | null) {\n this.state$.next(this.convert(newValue));\n this._src = newValue;\n }\n\n get src() {\n return this._src;\n }\n\n @HostBinding('style.width')\n @HostBinding('style.height')\n @HostBinding('style.min-width')\n @HostBinding('style.min-height')\n @HostBinding('style.font-size')\n get sizes() {\n const unit = this.unit ?? this._config?.defaultDisplayUnit ?? 'rem';\n return `${this.size}${unit}`;\n }\n\n constructor(@Optional() @Inject(ELEMENTS_CONFIG) private _config?: ElementsConfig,\n @Optional() @Inject(ELEMENTS_ICONS) private _registry?: ElementsIcon[]) {\n }\n\n private convert(src: string | null) {\n const [namespace, value] = (src || '').split(':');\n\n const onError = () => {\n this.warn(`ElementsModule: The icon with src \"${src}\" could not be rendered correctly; Did you put a correct src attribute?`);\n return {type: 'unknown'};\n };\n\n if (!namespace || !value || !this._registry) {\n return onError();\n }\n\n // Try to find an image icon.\n const imageIcon = this.findImageIcon(namespace, value);\n if (imageIcon) {\n return imageIcon;\n }\n\n // Try to find an url icon.\n const urlIcon = this.findUrlIcon(namespace, value);\n if (urlIcon) {\n return urlIcon;\n }\n\n // Try to find a font icon.\n const fontIcon = this.findFontIcon(namespace, value);\n if (fontIcon) {\n return fontIcon;\n }\n\n // Return the on error function.\n return onError();\n }\n\n private findImageIcon(namespace: string, value: string) {\n const data = this._registry.find(item => item['namespace'] === namespace && item['name'] === value);\n\n if (!data) {\n return null;\n }\n\n return {type: data['type'], src: data['src']};\n }\n\n private findUrlIcon(namespace: string, value: string) {\n const data = this._registry.find(item => item?.type === 'url' && item?.namespace === namespace);\n if (!data) {\n return null;\n }\n\n return {type: data['type'], src: data?.['url']?.replace('{value}', value)};\n }\n\n private findFontIcon(namespace: string, content: string) {\n const data = this._registry.find(item => item['namespace'] === namespace);\n\n if (!data) {\n return null;\n }\n\n const uses = data['uses'];\n if (uses === 'data-attribute') {\n return {type: data['type'], className: data['className'], attribute: content};\n }\n\n return {type: data['type'], className: data['className'], content};\n }\n\n private warn = (content: string) => {\n return console && console.warn && console.warn(content);\n };\n\n}\n","@if (state$ | async; as data) {\n @switch (data?.type) {\n @case ('font') {\n <i [attr.data-icon]=\"data?.attribute\"\n [class]=\"data?.className\">\n {{ data?.content }}\n </i>\n }\n @case ('image') {\n <img [src]=\"data?.src\"\n [alt]=\"alt\">\n }\n @case ('url') {\n <img [src]=\"data?.src\"\n [alt]=\"alt\">\n }\n @default {\n <svg viewBox=\"0 0 1 1\">\n <rect x=\"0\" y=\"0\" width=\"1\" height=\"1\" fill=\"#c5c5c5\"></rect>\n </svg>\n }\n }\n}\n","import {booleanAttribute, ChangeDetectionStrategy, Component, input, ViewEncapsulation} from '@angular/core';\n\n@Component({\n selector: 'bb-form-group',\n templateUrl: './form-group.component.html',\n styleUrls: ['./form-group.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n 'class': 'bb-form-group',\n '[class.grouped]': 'grouped()'\n }\n})\nexport class BbFormGroup {\n\n // Inputs.\n readonly grouped = input(false, {transform: booleanAttribute});\n\n}\n","<ng-content></ng-content>\n","import {\n AfterViewInit,\n booleanAttribute,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef,\n EventEmitter,\n forwardRef,\n Input,\n Output,\n Renderer2,\n ViewChild,\n ViewEncapsulation\n} from '@angular/core';\nimport {ControlValueAccessor, NG_VALUE_ACCESSOR} from '@angular/forms';\n\nlet nextUniqueId = 0;\n\n@Component({\n selector: 'bb-checkbox',\n templateUrl: './checkbox.component.html',\n styleUrls: ['./checkbox.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n providers: [\n {provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => BbCheckbox), multi: true}\n ],\n host: {\n 'class': 'bb-checkbox',\n '[class.indeterminate]': 'indeterminate',\n '[class.disabled]': 'disabled',\n '[class.grouped]': 'grouped'\n }\n})\nexport class BbCheckbox implements AfterViewInit, ControlValueAccessor {\n\n // Data.\n readonly labelId: string = `bb-checkbox-${nextUniqueId++}`;\n\n // Views.\n @ViewChild('input', {static: true}) inputElementRef: ElementRef<HTMLInputElement>;\n\n // Inputs.\n @Input({transform: booleanAttribute}) checked: boolean = false;\n @Input({transform: booleanAttribute}) indeterminate: boolean = false;\n @Input({transform: booleanAttribute}) disabled: boolean = false;\n @Input({transform: booleanAttribute}) grouped: boolean = false;\n @Input({transform: booleanAttribute}) hideText: boolean = false;\n\n // Outputs.\n @Output() checkedChange = new EventEmitter<boolean>();\n @Output() indeterminateChange = new EventEmitter<boolean>();\n\n // Callbacks.\n onTouchedCallback: () => void = () => ({});\n onChangeCallback: (_: boolean | null) => void = () => ({});\n\n constructor(private _renderer: Renderer2,\n private _changeDetectorRef: ChangeDetectorRef) {\n }\n\n ngAfterViewInit() {\n this.syncField('indeterminate', this.indeterminate);\n }\n\n toggle() {\n this.checked = !this.checked;\n }\n\n writeValue(newValue: boolean) {\n this.checked = newValue;\n }\n\n registerOnChange(method: (_: boolean | null) => void) {\n this.onChangeCallback = method;\n }\n\n registerOnTouched(method: () => void) {\n this.onTouchedCallback = method;\n }\n\n setDisabledState(isDisabled: boolean) {\n this.disabled = isDisabled;\n this._changeDetectorRef.markForCheck();\n }\n\n onClickEvent(event: Event) {\n event.stopPropagation();\n\n if (this.disabled) {\n return;\n }\n\n // When user manually click on the checkbox, `indeterminate` is set to false.\n if (this.indeterminate) {\n Promise.resolve().then(() => {\n this.indeterminate = false;\n this.indeterminateChange.emit(this.indeterminate);\n });\n }\n\n // Toggle the value.\n this.toggle();\n\n // Emit the change event.\n this.emitChangeEvent();\n }\n\n onChangeEvent(event: Event) {\n // We always have to stop propagation on the change event.\n // Otherwise, the change event, from the input element, will bubble up and\n // emit its event object to the `change` output.\n event.stopPropagation();\n }\n\n private emitChangeEvent() {\n this.onChangeCallback?.(this.checked);\n this.checkedChange.emit(this.checked);\n this.syncField('checked', this.checked);\n }\n\n private syncField(field: string, value: boolean) {\n const element = this.inputElementRef?.nativeElement;\n if (!element) {\n return;\n }\n this._renderer.setProperty(element, field, value);\n }\n\n\n}\n","<input #input\n [id]=\"labelId\"\n [checked]=\"checked\"\n [disabled]=\"disabled\"\n (change)=\"onChangeEvent($event)\"\n (click)=\"onClickEvent($event)\"\n (blur)=\"onTouchedCallback()\"\n class=\"bb-checkbox-input\"\n tabindex=\"-1\"\n type=\"checkbox\">\n\n<label [for]=\"labelId\"\n [attr.tabindex]=\"disabled ? -1 : 0\"\n (keyup.space)=\"onClickEvent($event)\"\n class=\"bb-checkbox-label\">\n <span class=\"bb-checkbox-area\">\n <svg width=\"68%\"\n height=\"68%\"\n viewBox=\"0 0 12 12\">\n <polyline [attr.points]=\"indeterminate ? '1 6 11 6' : '1.5 7 4.5 10 10.5 2'\"></polyline>\n </svg>\n </span>\n @if (!hideText) {\n <span class=\"bb-checkbox-content\">\n <ng-content></ng-content>\n </span>\n }\n</label>\n","import {booleanAttribute, ChangeDetectionStrategy, Component, input, TemplateRef, ViewEncapsulation} from '@angular/core';\nimport {BbTemplate} from '@bravobit/bb-foundation/utils';\n\n@Component({\n selector: 'bb-checkbox-group',\n templateUrl: './checkbox-group.component.html',\n styleUrls: ['./checkbox-group.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n 'class': 'bb-checkbox-group',\n '[class.grouped]': 'grouped()',\n '[class.required]': 'required()',\n '[class.inline]': 'inline()'\n },\n imports: [BbTemplate]\n})\nexport class BbCheckboxGroup {\n\n // Inputs.\n readonly label = input<string | TemplateRef<any>>(null);\n readonly required = input(false, {transform: booleanAttribute});\n readonly grouped = input(false, {transform: booleanAttribute});\n readonly inline = input(false, {transform: booleanAttribute});\n\n}\n","@if (label(); as labelContent) {\n <label class=\"bb-checkbox-group-label\">\n <ng-template [bbTemplate]=\"labelContent\">{{ labelContent }}</ng-template>\n </label>\n}\n\n<div class=\"bb-checkbox-group-items\">\n <ng-content select=\"bb-checkbox\"></ng-content>\n</div>\n","import {booleanAttribute, ChangeDetectionStrategy, ChangeDetectorRef, Component, EventEmitter, forwardRef, Input, Output, TemplateRef, ViewEncapsulation} from '@angular/core';\nimport {ControlValueAccessor, NG_VALUE_ACCESSOR} from '@angular/forms';\nimport {BbFormError} from '../form-error/form-error.component';\nimport {BbTemplate} from '@bravobit/bb-foundation/utils';\n\n@Component({\n selector: 'bb-radio-group',\n templateUrl: './radio-group.component.html',\n styleUrls: ['./radio-group.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n providers: [\n {provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => BbRadioGroup), multi: true}\n ],\n host: {\n 'class': 'bb-radio-group',\n '[class.disabled]': 'disabled',\n '[class.readonly]': 'readonly',\n '[class.grouped]': 'grouped',\n '[class.required]': 'required',\n '[class.inline]': 'inline',\n '[class.error]': 'error'\n },\n imports: [BbTemplate, BbFormError]\n})\nexport class BbRadioGroup<T> implements ControlValueAccessor {\n\n // Inputs.\n @Input() label: string | TemplateRef<any> | null = null;\n @Input({transform: booleanAttribute}) disabled: boolean = false;\n @Input({transform: booleanAttribute}) readonly: boolean = false;\n @Input({transform: booleanAttribute}) required: boolean = false;\n @Input({transform: booleanAttribute}) grouped: boolean = false;\n @Input({transform: booleanAttribute}) inline: boolean = false;\n @Input({transform: booleanAttribute}) hideErrors: boolean = false;\n\n // Outputs.\n @Output() valueChange = new EventEmitter<T>();\n\n // Value.\n @Input()\n get value() {\n return this._value;\n }\n\n set value(value: T) {\n this._value = value;\n this._changeDetectorRef.markForCheck();\n }\n\n private _value: T | null = null;\n\n // Callbacks.\n onTouchedCallback: () => void = () => ({});\n onChangeCallback: (_: T | null) => void = () => ({});\n\n // State.\n error: boolean = false;\n\n constructor(private _changeDetectorRef: ChangeDetectorRef) {\n }\n\n select(value: any) {\n if (this.value === value || this.disabled || this.readonly) {\n return;\n }\n this.value = value;\n this.onChangeCallback?.(this.value);\n this.valueChange.emit(this.value);\n this.onTouchedCallback?.();\n }\n\n registerOnChange(fn: (newValue: T) => void) {\n this.onChangeCallback = fn;\n }\n\n registerOnTouched(fn: () => void) {\n this.onTouchedCallback = fn;\n }\n\n setDisabledState(isDisabled: boolean) {\n this.disabled = isDisabled;\n }\n\n writeValue(newValue: T) {\n this.value = newValue;\n }\n\n onErrorChange(error: { token: string, data?: any } | null) {\n this.error = !!error;\n }\n\n}\n","@if (label; as labelContent) {\n <label class=\"bb-radio-group-label\">\n <ng-template [bbTemplate]=\"labelContent\">{{ labelContent }}</ng-template>\n </label>\n}\n\n<div class=\"bb-radio-group-items\">\n <ng-content select=\"bb-radio-button\"></ng-content>\n</div>\n\n<!-- The error component. -->\n@if (!hideErrors) {\n <bb-form-error (errorChange)=\"onErrorChange($event)\"></bb-form-error>\n}\n","import {booleanAttribute, ChangeDetectionStrategy, Component, HostBinding, HostListener, inject, Input, ViewEncapsulation} from '@angular/core';\nimport {BbRadioGroup} from '../radio-group/radio-group.component';\n\n@Component({\n selector: 'bb-radio-button',\n templateUrl: './radio-button.component.html',\n styleUrls: ['./radio-button.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n 'class': 'bb-radio-button',\n '[class.disabled]': 'disabled',\n '[tabindex]': 'disabled ? -1 : 0'\n }\n})\nexport class BbRadioButton<T> {\n\n // Dependencies.\n private readonly _radioGroup?: BbRadioGroup<T> = inject(BbRadioGroup, {optional: true});\n\n // Inputs.\n @Input() value: T | null = null;\n @Input({transform: booleanAttribute}) hideText: boolean = false;\n\n // Disabled.\n @Input({transform: booleanAttribute})\n set disabled(value: boolean) {\n this._disabled = value;\n }\n\n get disabled() {\n return this._radioGroup?.disabled || this._disabled;\n }\n\n private _disabled: boolean = false;\n\n @HostListener('click')\n onClick() {\n if (this.disabled || !this._radioGroup) {\n return;\n }\n this._radioGroup.select(this.value);\n }\n\n @HostListener('keydown.space')\n onSpacePressed() {\n return this.onClick();\n }\n\n @HostBinding('class.selected')\n get selected() {\n return this._radioGroup?.value === this.value;\n }\n\n}\n","<div class=\"bb-radio-button-indicator\"></div>\n@if (!hideText) {\n <span class=\"bb-radio-button-text\"><ng-content></ng-content></span>\n}\n\n","import {ChangeDetectionStrategy, Component, computed, inject, input, numberAttribute, ViewEncapsulation} from '@angular/core';\nimport {ELEMENTS_CONFIG, ElementsConfig, ElementsDisplayUnit} from '../elements.interfaces';\n\nexport function avatarColorAlgorithm(value: string) {\n if (value === null || value === undefined) {\n return null;\n }\n let hash = 5381;\n for (let index = 0; index < value.length; index++) {\n hash = (hash * 33) ^ value.charCodeAt(index);\n }\n const result = hash >>> 0;\n return {\n color: `hsl(${result % 360}, 75%, 20%)`,\n background: `hsl(${result % 360}, 45%, 85%)`\n };\n}\n\n@Component({\n selector: 'bb-avatar',\n templateUrl: './avatar.component.html',\n styleUrls: ['./avatar.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n 'class': 'bb-avatar',\n 'role': 'img',\n '[style.color]': 'color()',\n '[style.background-color]': 'backgroundColor()',\n '[style.width]': 'visualSize()',\n '[style.height]': 'visualSize()',\n '[style.min-width]': 'visualSize()',\n '[style.min-height]': 'visualSize()',\n '[style.font-size]': 'fontSize()'\n },\n imports: []\n})\nexport class BbAvatar {\n\n // Dependencies.\n private readonly _config?: ElementsConfig = inject(ELEMENTS_CONFIG, {optional: true});\n\n // Inputs.\n readonly size = input(2.5, {transform: numberAttribute});\n readonly unit = input<ElementsDisplayUnit>(null);\n readonly src = input<string>(null);\n readonly title = input.required<string>();\n\n // Computed.\n readonly color = computed(() => {\n const title = this.title();\n return this._config?.avatarColorAlgorithm?.(title)?.color\n ?? avatarColorAlgorithm(title)?.color\n ?? '#ffffff';\n });\n\n readonly backgroundColor = computed(() => {\n const title = this.title();\n return this._config?.avatarColorAlgorithm?.(title)?.background\n ?? avatarColorAlgorithm(title)?.background\n ?? '#424242';\n });\n\n readonly visualSize = computed(() => {\n const unit = this.unit() ?? this._config?.defaultDisplayUnit ?? 'rem';\n return `${this.size()}${unit}`;\n });\n\n readonly fontSize = computed(() => {\n const unit = this.unit() ?? this._config?.defaultDisplayUnit ?? 'rem';\n return `${this.size() * 0.42}${unit}`;\n });\n\n readonly initials = computed(() => {\n const title = this.title();\n const names = (title ?? '').split(' ');\n const initials = names\n .map(name => name.charAt(0).toUpperCase())\n .filter(name => /^[a-zA-Z]+$/.test(name));\n\n // Check if there are any initials.\n if (initials?.length <= 0) {\n return null;\n }\n\n // Get the first and last initials.\n if (initials?.length > 1) {\n return `${initials?.[0]}${initials?.[initials?.length - 1]}`;\n }\n\n // Get only the first initial.\n return initials?.[0];\n });\n\n}\n","@if (src(); as src) {\n <img [src]=\"src\"\n [alt]=\"initials()\"\n class=\"bb-avatar-image\">\n} @else {\n {{ initials() }}\n}\n","import {ELEMENTS_CONFIG} from './elements.interfaces';\nimport {inject} from '@angular/core';\n\nexport function injectAcceptString() {\n const config = inject(ELEMENTS_CONFIG, {optional: true});\n const allowedFileTypes = config?.allowedFileTypes ?? [];\n return allowedFileTypes?.length <= 0\n ? null\n : allowedFileTypes.join(',');\n}\n\nexport function injectMaxFileSize() {\n const config = inject(ELEMENTS_CONFIG, {optional: true});\n return config?.maxFileSize ?? Number.MAX_SAFE_INTEGER;\n}\n\nexport function injectMaxTotalFileSize() {\n const config = inject(ELEMENTS_CONFIG, {optional: true});\n return config?.maxTotalFileSize ?? Number.MAX_SAFE_INTEGER;\n}\n","import {\n booleanAttribute,\n ChangeDetectionStrategy,\n Component,\n computed,\n ElementRef,\n EventEmitter,\n forwardRef,\n inject,\n input,\n model,\n numberAttribute,\n Output, signal,\n TemplateRef,\n viewChild,\n ViewEncapsulation\n} from '@angular/core';\nimport {Files, formatFileSize, isFileLike, isValidFileSize, isValidFileType} from '@bravobit/bb-foundation';\nimport {ControlValueAccessor, FormControl, NG_VALIDATORS, NG_VALUE_ACCESSOR} from '@angular/forms';\nimport {BbLocalize, BbLocalizeTemplate, BbLocalizeString} from '@bravobit/bb-foundation/localize';\nimport {injectAcceptString, injectMaxFileSize, injectMaxTotalFileSize} from '../elements.inject';\nimport {BbFormError} from '../form-error/form-error.component';\nimport {BbFileDrop} from '../directives/file-drop.directive';\nimport {BbTemplate} from '@bravobit/bb-foundation/utils';\nimport {BbButton} from '../button/button.component';\n\nlet nextUniqueId = 0;\n\nexport interface BbMultiFileControlItem {\n id: number;\n label: string;\n url: string;\n description?: string;\n}\n\nexport type BbMultiFileControlOpenEvent =\n { type: 'item', item: BbMultiFileControlItem }\n | { type: 'file', file: File };\n\n@Component({\n selector: 'bb-multi-file-control',\n templateUrl: './multi-file-control.component.html',\n styleUrls: ['./multi-file-control.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n providers: [\n {provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => BbMultiFileControl), multi: true},\n {provide: NG_VALIDATORS, useExisting: BbMultiFileControl, multi: true}\n ],\n host: {\n 'class': 'bb-multi-file-control',\n '[class.required]': 'required()',\n '[class.disabled]': 'disabled()',\n '[class.grouped]': 'grouped()',\n '[class.error]': 'error()',\n '[class.single]': 'appearance() === \\'single\\''\n },\n imports: [BbFormError, BbTemplate, BbButton, BbLocalize, BbLocalizeTemplate, BbLocalizeString, BbFileDrop]\n})\nexport class BbMultiFileControl implements ControlValueAccessor {\n\n // Dependencies.\n private readonly _files: Files = inject(Files);\n\n // Readonly data.\n readonly labelId: string = `bb-multi-file-control-${nextUniqueId++}`;\n\n // Views.\n readonly fileInputRef = viewChild<ElementRef<HTMLInputElement>>('fileInput');\n\n // Inputs.\n readonly appearance = input<'multiple' | 'single'>('multiple');\n readonly label = input<string | TemplateRef<any>>();\n readonly hint = input<string | TemplateRef<any>>();\n readonly accept = input<string>(injectAcceptString());\n readonly maxFileSize = input(injectMaxFileSize(), {transform: numberAttribute});\n readonly maxTotalFileSize = input(injectMaxTotalFileSize(), {transform: numberAttribute});\n readonly grouped = input(false, {transform: booleanAttribute});\n readonly required = input(false, {transform: booleanAttribute});\n readonly hideErrors = input(false, {transform: booleanAttribute});\n readonly disabled = model<boolean>(false);\n readonly items = model<BbMultiFileControlItem[]>([]);\n\n // Outputs.\n @Output() delete = new EventEmitter<BbMultiFileControlItem>();\n @Output() open = new EventEmitter<BbMultiFileControlOpenEvent>();\n\n // State.\n readonly value = signal<File[]>([]);\n readonly error = signal<boolean>(false);\n\n // Computed.\n readonly showList = computed(() => this.value()?.length > 0 || this.items()?.length > 0);\n\n // Callbacks.\n onTouchedCallback: () => void = () => ({});\n onChangeCallback: (_: File[] | null) => void = () => ({});\n\n openItem(event: Event, item: BbMultiFileControlItem) {\n if (!this.open.observed) {\n return;\n }\n event.preventDefault();\n this.open.emit({type: 'item', item: item});\n }\n\n downloadFile(event: Event, file: File) {\n if (!this.open.observed) {\n return this._files.download(file, file?.name);\n }\n event.preventDefault();\n this.open.emit({type: 'file', file: file});\n }\n\n openFileDialog() {\n const element = this.fileInputRef()?.nativeElement as HTMLInputElement;\n element?.click();\n }\n\n onFileChange(event: Event) {\n const files: File[] = Array.from(event.target?.['files']);\n this.addFiles(files);\n this.fileInputRef().nativeElement.value = null;\n }\n\n deleteFile(index: number) {\n this.value.update(value => value?.filter((_, i) => i !== index) ?? []);\n this.onChangeCallback?.(this.value());\n }\n\n writeValue(value: File[] | null) {\n this.value.set(value ?? []);\n }\n\n registerOnChange(method: (_: File[] | null) => void) {\n this.onChangeCallback = method;\n }\n\n registerOnTouched(method: () => void) {\n this.onTouchedCallback = method;\n }\n\n setDisabledState(isDisabled: boolean) {\n this.disabled.set(isDisabled);\n }\n\n onErrorChange(error: { token: string, data?: any } | null) {\n this.error.set(!!error);\n }\n\n validate(control: FormControl<File[]>) {\n const value = control?.value ?? [];\n const errors = value.reduce((previous, current, index) => {\n if (isValidFileType(current, this.accept())) {\n return previous;\n }\n\n return {...previous, [index]: true};\n }, <Record<number, boolean>>{});\n\n if (Object.keys(errors)?.length > 0) {\n return {invalidFiles: errors};\n }\n\n for (const file of value) {\n if (!isValidFileSize(file, this.maxFileSize())) {\n return {maxFileSize: {maxSize: formatFileSize(this.maxFileSize())}};\n }\n }\n\n const totalSize = value.reduce((previous, current) => previous + (current?.size ?? 0), 0);\n if (totalSize > this.maxTotalFileSize()) {\n return {\n maxTotalFileSize: {\n max: formatFileSize(this.maxTotalFileSize()),\n current: formatFileSize(totalSize)\n }\n };\n }\n\n return null;\n }\n\n addFiles(files: File[]) {\n if (this.disabled()) {\n return;\n }\n\n const newFiles = this.appearance() === 'single' ? [files?.[0]] : files;\n const filteredFiles = newFiles.filter(file => !!file && isFileLike(file));\n this.value.update(value => ([...value, ...filteredFiles]));\n this.onChangeCallback?.(this.value());\n }\n\n}\n","<!-- The label of the input. -->\n@if (label(); as labelContent) {\n <label [for]=\"labelId\"\n class=\"bb-multi-file-control-label\">\n <ng-template [bbTemplate]=\"labelContent\">{{ labelContent }}</ng-template>\n </label>\n}\n\n<input #fileInput\n [id]=\"labelId\"\n [accept]=\"accept()\"\n [disabled]=\"disabled()\"\n [multiple]=\"appearance() === 'multiple'\"\n (change)=\"onFileChange($event)\"\n class=\"bb-multi-file-control-input\"\n type=\"file\"\n tabindex=\"-1\">\n\n<div [bbFileDropDisabled]=\"disabled()\"\n (bbFileDrop)=\"addFiles($event)\"\n class=\"bb-multi-file-control-container\">\n @if (showList()) {\n <ul class=\"bb-multi-file-control-list\">\n @for (item of items(); track item?.id) {\n <li class=\"bb-multi-file-control-item\">\n <i class=\"bb-multi-file-control-icon attach-horizontal\"></i>\n <a [href]=\"item?.url\"\n (click)=\"openItem($event, item)\"\n target=\"_blank\"\n rel=\"noopener\"\n class=\"bb-multi-file-control-item-content\">\n <span>{{ item?.label }}</span>\n @if (item?.description; as description) {\n <small>{{ description }}</small>\n }\n </a>\n\n @if (!disabled() && delete?.observed) {\n <button (click)=\"delete?.emit(item)\"\n type=\"button\"\n class=\"bb-multi-file-control-item-button\">\n <i class=\"bb-multi-file-control-icon clear\"></i>\n </button>\n }\n </li>\n }\n @for (file of value(); track $index) {\n <li class=\"bb-multi-file-control-item\">\n <i class=\"bb-multi-file-control-icon attach-horizontal\"></i>\n <button (click)=\"downloadFile($event, file)\"\n class=\"bb-multi-file-control-item-content\"\n type=\"button\">\n {{ file?.name }}\n </button>\n @if (!disabled()) {\n <button (click)=\"deleteFile($index)\"\n type=\"button\"\n class=\"bb-multi-file-control-item-button\">\n <i class=\"bb-multi-file-control-icon clear\"></i>\n </button>\n }\n </li>\n }\n </ul>\n } @else if (!disabled()) {\n <i class=\"bb-multi-file-control-icon attach-vertical\"></i>\n <p [bb-localize-string]=\"`multi-file-control.${appearance()}_choose_file_text` | bbLocalize\"\n class=\"bb-multi-file-control-empty\">\n <label *bbLocalizeTemplate=\"'label'\"\n [for]=\"labelId\">{{ `multi-file-control.${appearance()}_choose_file` | bbLocalize }}</label>\n </p>\n }\n @if (!disabled()) {\n <button (click)=\"openFileDialog()\"\n type=\"button\"\n class=\"primary small bb-multi-file-control-button\"\n bb-button>\n <i class=\"bb-multi-file-control-icon add\" suffix></i>\n {{ `multi-file-control.${appearance()}_choose_file` | bbLocalize }}\n </button>\n }\n</div>\n\n@if (!hideErrors()) {\n <bb-form-error (errorChange)=\"onErrorChange($event)\"></bb-form-error>\n}\n\n<!-- The file picker hint. -->\n@if (hint(); as hintContent) {\n <p class=\"bb-multi-file-control-hint\">\n <ng-template [bbTemplate]=\"hintContent\">{{ hintContent }}</ng-template>\n </p>\n}\n","import {\n booleanAttribute,\n ChangeDetectionStrategy,\n Component,\n ContentChild,\n ElementRef,\n EventEmitter,\n forwardRef,\n Input,\n numberAttribute,\n Output,\n TemplateRef,\n ViewChild,\n ViewEncapsulation\n} from '@angular/core';\nimport {ControlValueAccessor, FormControl, NG_VALIDATORS, NG_VALUE_ACCESSOR} from '@angular/forms';\nimport {formatFileSize, isValidFileSize, isValidFileType} from '@bravobit/bb-foundation';\nimport {injectAcceptString, injectMaxFileSize} from '../elements.inject';\nimport {BbFormError} from '../form-error/form-error.component';\nimport {BbFileDrop} from '../directives/file-drop.directive';\nimport {AsyncPipe, NgTemplateOutlet} from '@angular/common';\nimport {BbLocalize} from '@bravobit/bb-foundation/localize';\nimport {BbTemplate} from '@bravobit/bb-foundation/utils';\nimport {BbFileImage} from '../pipes/file-image.pipe';\nimport {BbFileSize} from '../pipes/file-size.pipe';\nimport {BehaviorSubject} from 'rxjs';\n\nlet nextUniqueId = 0;\n\n@Component({\n selector: 'bb-file-picker',\n templateUrl: './file-picker.component.html',\n styleUrls: ['./file-picker.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => BbFilePicker),\n multi: true\n },\n {\n provide: NG_VALIDATORS,\n useExisting: BbFilePicker,\n multi: true\n }\n ],\n host: {\n 'class': 'bb-file-picker',\n '[class.required]': 'required',\n '[class.disabled]': 'disabled',\n '[class.grouped]': 'grouped',\n '[class.error]': 'error'\n },\n imports: [BbTemplate, AsyncPipe, NgTemplateOutlet, BbLocalize, BbFormError, BbFileSize, BbFileImage, BbFileDrop]\n})\nexport class BbFilePicker implements ControlValueAccessor {\n\n // Readonly data.\n readonly labelId: string = `bb-file-picker-${nextUniqueId++}`;\n\n // Views.\n @ViewChild('fileInput', {static: true}) fileInput: ElementRef<HTMLInputElement>;\n @ContentChild('extra') extraTemplate: TemplateRef<any>;\n\n // Inputs.\n @Input() label: string | TemplateRef<any> | null = null;\n @Input() hint: string | TemplateRef<any> | null = null;\n @Input() accept: string = injectAcceptString();\n @Input({transform: numberAttribute}) maxFileSize: number = injectMaxFileSize();\n @Input({transform: booleanAttribute}) showImages: boolean = true;\n @Input({transform: booleanAttribute}) grouped: boolean = false;\n @Input({transform: booleanAttribute}) required: boolean = false;\n @Input({transform: booleanAttribute}) disabled: boolean = false;\n @Input({transform: booleanAttribute}) hideErrors: boolean = false;\n\n // State.\n error: boolean = false;\n value$ = new BehaviorSubject<{ file?: File }>({});\n\n // Callbacks.\n onTouchedCallback: () => void = () => ({});\n onChangeCallback: (_: File | null) => void = () => ({});\n\n @Input()\n get value() {\n const {file} = this.value$.getValue();\n return file;\n }\n\n @Output() valueChange = new EventEmitter<File | null>();\n\n set value(value: File | null) {\n this.value$.next({file: value});\n this.valueChange.emit(value);\n }\n\n onButtonPressed(file?: File) {\n if (file) {\n this.value = null;\n this.onChangeCallback(this.value);\n return;\n }\n\n return this.openFilePicker();\n }\n\n openFilePicker() {\n return this.fileInput\n && this.fileInput.nativeElement\n && this.fileInput.nativeElement.click\n && this.fileInput.nativeElement.click();\n }\n\n onFileChange(event: Event) {\n if (this.disabled) {\n return;\n }\n\n // Extract the file from the event.\n const files = this.getFilesFromEvent(event);\n this.saveFile(files);\n\n // Clear the file input.\n if (this.fileInput && this.fileInput.nativeElement) {\n this.fileInput.nativeElement.value = '';\n }\n }\n\n writeValue(value: File | null) {\n this.value = value;\n }\n\n registerOnChange(method: (_: File | null) => void) {\n this.onChangeCallback = method;\n }\n\n registerOnTouched(method: () => void) {\n this.onTouchedCallback = method;\n }\n\n setDisabledState(isDisabled: boolean) {\n this.disabled = isDisabled;\n }\n\n onErrorChange(error: { token: string, data?: any } | null) {\n this.error = !!error;\n }\n\n validate({value}: FormControl<File>) {\n if (value === null || value === undefined) {\n return null;\n }\n\n if (!isValidFileType(value, this.accept)) {\n return {invalidFileType: true};\n }\n\n if (!isValidFileSize(value, this.maxFileSize)) {\n return {maxFileSize: {maxSize: formatFileSize(this.maxFileSize)}};\n }\n\n return null;\n }\n\n saveFile(files: File[]) {\n const file = files?.[0] ?? null;\n if (!file || this.disabled) {\n return;\n }\n this.value = file;\n this.onChangeCallback(this.value);\n }\n\n private getFilesFromEvent(event: Event) {\n const element = event.target as HTMLInputElement;\n if (!element) {\n return null;\n }\n return Array.from(element.files);\n }\n\n}\n","<!-- The label of the input. -->\n@if (label; as labelContent) {\n <label [for]=\"labelId\"\n class=\"bb-file-picker-label\">\n <ng-template [bbTemplate]=\"labelContent\">{{ labelContent }}</ng-template>\n </label>\n}\n\n<!-- The input that can open the file picker. -->\n<input #fileInput\n [accept]=\"accept\"\n [disabled]=\"disabled\"\n (change)=\"onFileChange($event)\"\n class=\"bb-file-picker-input\"\n type=\"file\"\n tabindex=\"-1\">\n\n@if (value$ | async; as data) {\n <div [bbFileDropDisabled]=\"disabled\"\n (bbFileDrop)=\"saveFile($event)\"\n class=\"bb-file-picker-wrapper\">\n <!-- The button that accepts files. -->\n <div class=\"bb-file-picker-container\">\n <button [class.destructive]=\"!!data?.file\"\n [disabled]=\"disabled\"\n [id]=\"labelId\"\n (click)=\"onButtonPressed(data?.file)\"\n type=\"button\"\n class=\"bb-file-picker-button\">\n <ng-container *ngTemplateOutlet=\"data?.file ? closeIcon : uploadIcon\"></ng-container>\n {{ (data?.file ? 'file-picker.remove' : 'file-picker.choose') | bbLocalize }}\n </button>\n <div class=\"bb-file-picker-zone\">\n {{ 'file-picker.drop' | bbLocalize }}\n </div>\n </div>\n\n @if (!!extraTemplate) {\n <ng-container *ngTemplateOutlet=\"extraTemplate; context: {$implicit: data?.file}\"></ng-container>\n }\n\n @if (showImages) {\n @if (data?.file | bbFileImage | async; as image) {\n <div class=\"bb-file-picker-image-container\"\n animate.leave=\"leaving\">\n <div class=\"bb-file-picker-image-wrapper\">\n <div [style.padding-top.%]=\"image?.aspectRatio * 100\"\n [style.background-image]=\"image?.background\"\n class=\"bb-file-picker-image\">\n </div>\n </div>\n </div>\n }\n }\n\n <!-- Extra information of the file. -->\n <div [class.visible]=\"!!data?.file\"\n class=\"bb-file-picker-info\">\n @if (data?.file?.name; as name) {\n <span>{{ name }}</span>\n }\n @if (data?.file?.size; as size) {\n <span>{{ size | bbFileSize }}</span>\n }\n </div>\n </div>\n}\n\n@if (!hideErrors) {\n <bb-form-error (errorChange)=\"onErrorChange($event)\"></bb-form-error>\n}\n\n<!-- The file picker hint. -->\n@if (hint; as hintContent) {\n <p class=\"bb-file-picker-hint\">\n <ng-template [bbTemplate]=\"hintContent\">{{ hintContent }}</ng-template>\n </p>\n}\n\n<!-- Upload icon. -->\n<ng-template #uploadIcon>\n <svg xmlns=\"http://www.w3.org/2000/svg\"\n class=\"bb-file-picker-icon\"\n width=\"1.5rem\"\n height=\"1.5rem\"\n viewBox=\"0 0 24 24\">\n <path fill=\"currentColor\"\n d=\"M2 12.5C2 9.46 4.46 7 7.5 7H18c2.21 0 4 1.79 4 4s-1.79 4-4 4H9.5a2.5 2.5 0 010-5H17v2H9.41c-.55 0-.55 1 0 1H18c1.1 0 2-.9 2-2s-.9-2-2-2H7.5C5.57 9 4 10.57 4 12.5S5.57 16 7.5 16H17v2H7.5C4.46 18 2 15.54 2 12.5z\"></path>\n <path fill=\"none\" d=\"M0 0h24v24H0V0z\"></path>\n </svg>\n</ng-template>\n\n<!-- Close icon. -->\n<ng-template #closeIcon>\n <svg xmlns=\"http://www.w3.org/2000/svg\"\n class=\"bb-file-picker-icon\"\n width=\"1.5rem\"\n height=\"1.5rem\"\n viewBox=\"0 0 24 24\">\n <path fill=\"currentColor\"\n d=\"M19 6.41L17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z\"></path>\n <path d=\"M0 0h24v24H0z\" fill=\"none\"></path>\n </svg>\n</ng-template>\n","import {booleanAttribute, ChangeDetectionStrategy, Component, ElementRef, EventEmitter, forwardRef, Input, Output, ViewChild, ViewEncapsulation} from '@angular/core';\nimport {ControlValueAccessor, NG_VALUE_ACCESSOR} from '@angular/forms';\nimport {ImageConverter} from '@bravobit/bb-foundation';\nimport {BbButton} from '../button/button.component';\nimport {AsyncPipe} from '@angular/common';\nimport {BehaviorSubject} from 'rxjs';\nimport {map} from 'rxjs/operators';\n\n@Component({\n selector: 'bb-image-picker',\n templateUrl: './image-picker.component.html',\n styleUrls: ['./image-picker.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n 'class': 'bb-image-picker',\n '[class.disabled]': 'disabled',\n '[class.grouped]': 'grouped'\n },\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => BbImagePicker),\n multi: true\n }\n ],\n imports: [BbButton, AsyncPipe]\n})\nexport class BbImagePicker implements ControlValueAccessor {\n\n // Views.\n @ViewChild('fileInput', {static: true}) fileInput: ElementRef<HTMLInputElement>;\n\n // Inputs.\n @Input() label: string | null = null;\n @Input() placeholder: string | null = null;\n @Input() styleDimensions: { width: string, height: string } | null = null;\n @Input() cropDimensions: { width: number, height: number } | null = null;\n @Input() buttonClass: string | null = null;\n @Input({transform: booleanAttribute}) disabled: boolean = false;\n @Input({transform: booleanAttribute}) grouped: boolean = false;\n\n // Callbacks.\n onTouchedCallback: () => void = () => ({});\n onChangeCallback: (_: string | null) => void = () => ({});\n\n // Form.\n private _value$ = new BehaviorSubject<string | null>(null);\n\n constructor(private _converter: ImageConverter) {\n }\n\n @Input()\n get value() {\n return this._value$.getValue();\n }\n\n @Output() valueChange = new EventEmitter<string | null>();\n\n set value(value: string | null) {\n this._value$.next(value);\n this.valueChange.emit(value);\n }\n\n get image() {\n return this._value$.pipe(\n map(value => value || this.placeholder),\n map(value => value ? `url(${value})` : null)\n );\n }\n\n async onFileChange(event) {\n // Grab the file from the event.\n const file: File = event.target.files[0];\n\n // Check if the file exists.\n if (!file || this.disabled) {\n return;\n }\n\n try {\n this.value = await this._converter.toDataUri(file, this.cropDimensions);\n } catch {\n this.value = null;\n }\n\n this.onChangeCallback(this.value);\n\n if (this.fileInput && this.fileInput.nativeElement) {\n this.fileInput.nativeElement.value = '';\n }\n }\n\n openFilePicker() {\n if (this.disabled) {\n return;\n }\n\n // Execute a click on the file input.\n this.fileInput\n && this.fileInput.nativeElement\n && this.fileInput.nativeElement.click\n && this.fileInput.nativeElement.click();\n }\n\n writeValue(value: string | null) {\n this.value = value;\n }\n\n registerOnChange(method: (_: string | null) => void) {\n this.onChangeCallback = method;\n }\n\n registerOnTouched(method: () => void) {\n this.onTouchedCallback = method;\n }\n\n setDisabledState(isDisabled: boolean) {\n this.disabled = isDisabled;\n }\n\n}\n","<!-- The input that can open the file picker. -->\n<input #fileInput\n (change)=\"onFileChange($event)\"\n class=\"bb-image-picker-input\"\n type=\"file\"\n tabindex=\"-1\"\n accept=\"image/*\">\n\n<span [style.width]=\"styleDimensions?.width ?? '100%'\"\n [style.height]=\"styleDimensions?.height ?? '215px'\"\n [style.background-image]=\"image | async\"\n class=\"bb-image-input-image\"></span>\n\n@if (label; as labelText) {\n <button (click)=\"openFilePicker()\"\n bb-button\n class=\"bb-image-input-button {{ buttonClass }}\"\n type=\"button\">\n {{ labelText }}\n </button>\n}\n","import {\n booleanAttribute,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n EventEmitter,\n forwardRef,\n Inject,\n Input,\n OnDestroy,\n OnInit,\n Output,\n TemplateRef,\n ViewEncapsulation\n} from '@angular/core';\nimport {ControlValueAccessor, FormControl, FormGroup, NG_VALIDATORS, NG_VALUE_ACCESSOR, ReactiveFormsModule, Validators} from '@angular/forms';\nimport {BehaviorSubject, combineLatest, Observable, Subscription} from 'rxjs';\nimport {distinctUntilChanged, map, startWith, tap} from 'rxjs/operators';\nimport {BbFormControl} from '../form-control/form-control.component';\nimport {BbFormError} from '../form-error/form-error.component';\nimport {LOCALIZE_ID} from '@bravobit/bb-foundation/localize';\nimport {BbTemplate} from '@bravobit/bb-foundation/utils';\nimport {AsyncPipe, formatDate} from '@angular/common';\nimport {BbInput} from '../directives/input.directive';\n\n@Component({\n selector: 'bb-date-picker',\n templateUrl: './date-picker.component.html',\n styleUrls: ['./date-picker.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n providers: [\n {provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => BbDatePicker), multi: true},\n {provide: NG_VALIDATORS, useExisting: BbDatePicker, multi: true}\n ],\n host: {\n 'class': 'bb-date-picker',\n '[class.required]': 'required',\n '[class.readonly]': 'readonly',\n '[class.disabled]': 'disabled',\n '[class.grouped]': 'grouped',\n '[class.error]': 'error'\n },\n imports: [\n BbTemplate,\n AsyncPipe,\n ReactiveFormsModule,\n BbFormControl,\n BbInput,\n BbFormError\n ]\n})\nexport class BbDatePicker implements ControlValueAccessor, OnInit, OnDestroy {\n\n // Readonly data.\n readonly _yearRegex = /^(10|[1-9][0-9])\\d{2}$/; // Note: 1000 - 9999\n\n // Inputs.\n @Input() label: string | TemplateRef<any> | null = null;\n @Input() hint: string | TemplateRef<any> | null = null;\n @Input() dayPlaceholder: string | null = 'dd';\n @Input() monthPlaceholder: string | null = 'mm';\n @Input() yearPlaceholder: string | null = 'yyyy';\n @Input({transform: booleanAttribute}) required: boolean = false;\n @Input({transform: booleanAttribute}) grouped: boolean = false;\n @Input({transform: booleanAttribute}) readonly: boolean = false;\n @Input({transform: booleanAttribute}) hideErrors: boolean = false;\n\n @Input({transform: booleanAttribute})\n set disabled(value: boolean) {\n this._disabled = value;\n this._disabled ? this.form?.disable() : this.form?.enable();\n this._changeDetectorRef.markForCheck();\n }\n\n get disabled() {\n return this._disabled;\n }\n\n @Input()\n set years(value: [string | number, string | number] | null) {\n this.parseYears(value);\n }\n\n // Forms.\n form: FormGroup;\n\n // Data.\n data$: Observable<{\n days?: { label: string, value: number }[],\n months?: { label: string, value: number }[],\n years?: number[] | null\n }>;\n years$ = new BehaviorSubject<number[] | null>(null);\n\n get value() {\n return this.formToDateString(this.form?.value);\n }\n\n @Input()\n set value(value: string | null) {\n this.parseDateStringInForm(value);\n this.valueChange.emit(this.value);\n }\n\n @Output() valueChange = new EventEmitter<string | null>();\n\n // State.\n error: boolean = false;\n private _disabled: boolean = false;\n\n // Callbacks.\n onTouchedCallback: () => void = () => ({});\n onChangeCallback: (_: string | null) => void = () => ({});\n\n // Subscriptions.\n private _subscription = new Subscription();\n\n constructor(private _changeDetectorRef: ChangeDetectorRef,\n @Inject(LOCALIZE_ID) private _localizeId: Observable<string>) {\n }\n\n ngOnInit() {\n this.composeForm();\n this.getData();\n this.handleChanges();\n }\n\n ngOnDestroy() {\n this._subscription?.unsubscribe();\n }\n\n writeValue(value: string | null) {\n this.parseDateStringInForm(value);\n }\n\n registerOnChange(method: (_: string | null) => void) {\n this.onChangeCallback = method;\n }\n\n registerOnTouched(method: () => void) {\n this.onTouchedCallback = method;\n }\n\n setDisabledState(isDisabled: boolean) {\n this.disabled = isDisabled;\n }\n\n onErrorChange(error: { token: string, data?: any } | null) {\n this.error = !!error;\n }\n\n validate({value}: FormControl<string>) {\n if (value === null || value === undefined) {\n return null;\n }\n\n const data = this.parseDateString(value);\n const date = new Date(data?.year, data?.month - 1, data?.day);\n\n const maxDays = this.getDaysInMonth(data?.month, `${data?.year}`);\n\n const isInvalidDate = date.toString() === 'Invalid Date';\n const exceededMaxDays = data?.day > maxDays;\n\n return (isInvalidDate || exceededMaxDays) && {\n invalidDate: true\n };\n }\n\n private handleChanges() {\n const dateOrNull$ = this.form.valueChanges.pipe(\n map(value => this.formToDateString(value)),\n distinctUntilChanged()\n );\n\n const subscription = dateOrNull$.subscribe(() => {\n this.valueChange.emit(this.value);\n this.onChangeCallback(this.value);\n });\n this._subscription.add(subscription);\n }\n\n private getData() {\n const years$ = this.years$.asObservable();\n const months$ = this.getMonthData();\n const days$ = this.getDayData();\n\n this.data$ = combineLatest([years$, months$, days$]).pipe(\n map(([years, months, days]) => ({years, months, days})),\n tap(data => this.verifyListData(data?.days?.length, data?.years))\n );\n }\n\n private verifyListData(maxDays: number, years: number[] | null) {\n const dayControl = this.form.get('day');\n if (dayControl?.value !== null && dayControl?.value > maxDays) {\n dayControl.patchValue(maxDays);\n }\n\n const yearControl = this.form.get('year');\n if (years !== null && yearControl?.value !== null && this._yearRegex.test(yearControl?.value)) {\n const selectedYear = Number(yearControl?.value);\n\n const firstYear = Math.min(...years);\n const lastYear = Math.max(...years);\n\n if (selectedYear < firstYear || selectedYear > lastYear) {\n Promise.resolve().then(() => yearControl.patchValue(null));\n }\n }\n }\n\n private getDayData() {\n const count$ = this.form.valueChanges.pipe(\n startWith(this.form?.value as object),\n map(({month, year}) => this.getDaysInMonth(month, year)),\n distinctUntilChanged()\n );\n\n return count$.pipe(\n map(count => Array(count).fill(0).map((_, index) => ({\n label: `${index + 1}`,\n value: index + 1\n })))\n );\n }\n\n private getMonthData() {\n return this._localizeId.pipe(\n map(locale => {\n return Array(12).fill(0).map((_, month) => {\n const date = new Date(2000, month, 1);\n const label = formatDate(date, 'LLLL', locale);\n return {label, value: month + 1};\n });\n })\n );\n }\n\n private composeForm() {\n const {required, pattern, minLength, maxLength} = Validators;\n const yearPattern = pattern(this._yearRegex);\n const yearValidators = [required, yearPattern, minLength(4), maxLength(4)];\n\n this.form = new FormGroup({\n day: new FormControl<number>(null, required),\n month: new FormControl<number>(null, required),\n year: new FormControl<number>(null, yearValidators)\n });\n\n if (this.disabled) {\n this.form?.disable();\n }\n }\n\n private parseDateStringInForm(value: string | null) {\n // If the date string was not a valid format, reset the form.\n if (!this.isValidDateString(value)) {\n if (value !== null) {\n this.form?.reset({year: null, month: null, day: null}, {emitEvent: false});\n }\n return;\n }\n\n // Parse the date string and save in the form.\n const data = this.parseDateString(value);\n const year = data?.year !== null && data?.year !== undefined\n ? this.padString(`${data?.year}`, 4, '0')\n : null;\n const formData = {...(data ?? {}), year};\n\n this.form?.patchValue(formData, {emitEvent: false});\n }\n\n private parseDateString(value: string) {\n if (!this.isValidDateString(value)) {\n return null;\n }\n\n // Parse the date string.\n const [year, month, day] = value?.split('-');\n\n return {\n day: day ? parseInt(day, 10) : null,\n month: month ? parseInt(month, 10) : null,\n year: year ? parseInt(year, 10) : null\n };\n }\n\n private parseYears(values: [string | number, string | number] | null) {\n if (!values) {\n return this.years$.next(null);\n }\n\n // Parse the values to years (in numbers).\n const [first, last] = values;\n const firstYear = this.parseYearFormat(first);\n const lastYear = this.parseYearFormat(last);\n\n // Check cases in where we cannot parse.\n if (firstYear === null || lastYear === null) {\n return this.years$.next(null);\n }\n\n const difference = firstYear - lastYear;\n const absoluteDifference = Math.abs(difference) + 1;\n\n // Create an array with years.\n const years = Array(absoluteDifference)\n .fill(0)\n .map((_, index) => difference < 0 ? (firstYear + index) : (firstYear - index));\n\n // Validate we have one or more years.\n if (years?.length <= 0) {\n return this.years$.next(null);\n }\n\n // Push the years.\n return this.years$.next(years);\n }\n\n private formToDateString(data: { year: number, month: number, day: number }) {\n if (this.form?.invalid) {\n return null;\n }\n\n if (data === null || data === undefined) {\n return null;\n }\n\n const {year, month, day} = data;\n const prefixedMonth = this.padString(`${month}`, 2, '0');\n const prefixedDay = this.padString(`${day}`, 2, '0');\n\n return [year, prefixedMonth, prefixedDay].join('-');\n }\n\n private parseYearFormat = (value: string | number) => {\n // Transform the value to a definitive string.\n const yearString = `${value}`;\n const currentFullYear = new Date().getFullYear();\n\n // Handle default \"current\" syntax.\n if (yearString === 'current') {\n return currentFullYear;\n }\n\n // Handle \"current + {amount}\" syntax.\n if (/^current\\s?\\+\\s?\\d+$/.test(yearString)) {\n const amount = Number(yearString?.split('+')?.[1]?.trim()) ?? 0;\n return currentFullYear + amount;\n }\n\n // Handle \"current - {amount}\" syntax.\n if (/^current\\s?-\\s?\\d+$/.test(yearString)) {\n const amount = Number(yearString?.split('-')?.[1]?.trim()) ?? 0;\n return currentFullYear - amount;\n }\n\n // Handling the default number case.\n if (/^[0-9]{4}$/.test(yearString)) {\n return Number(yearString);\n }\n\n // We could not parse it.\n return null;\n };\n\n private getDaysInMonth = (month: number | null = null, year: string | null = null) => {\n if (this.form?.invalid || month === null || year === null) {\n return 31;\n }\n\n const parsedYear = parseInt(year, 10);\n return new Date(parsedYear, month, 0).getDate();\n };\n\n private isValidDateString = (value: unknown) => {\n return typeof value === 'string' && /^[0-9]{4}-[0-9]{2}-[0-9]{2}$/.test(value);\n };\n\n private padString = (value: string, maxLength: number, fillString: string = '0') => {\n const count = maxLength - value.length;\n for (let index = 0; index < count; index++) {\n value = `${fillString}${value}`;\n }\n\n return value;\n };\n\n}\n","<!-- Label of the date picker. -->\n@if (label; as labelContent) {\n <label class=\"bb-date-picker-label\">\n <ng-template [bbTemplate]=\"labelContent\">{{ labelContent }}</ng-template>\n </label>\n}\n\n@if (data$ | async; as data) {\n <!-- The form containing the year/month/day fields. -->\n <div [formGroup]=\"form\"\n class=\"bb-date-picker-container\">\n <div class=\"bb-date-picker-item\">\n <bb-form-control hideErrors>\n <select [class.has-value]=\"!!form?.get('day')?.value\"\n bbInput\n autocomplete=\"off\"\n formControlName=\"day\">\n <option [ngValue]=\"null\">{{ dayPlaceholder }}</option>\n @for (day of data?.days; track day?.value) {\n <option [value]=\"day?.value\">{{ day?.label }}</option>\n }\n </select>\n </bb-form-control>\n </div>\n <div class=\"bb-date-picker-item\">\n <bb-form-control hideErrors>\n <select [class.has-value]=\"!!form?.get('month')?.value\"\n bbInput\n autocomplete=\"off\"\n formControlName=\"month\">\n <option [ngValue]=\"null\">{{ monthPlaceholder }}</option>\n @for (month of data?.months; track month?.value) {\n <option [value]=\"month?.value\">{{ month?.label }}</option>\n }\n </select>\n </bb-form-control>\n </div>\n <div class=\"bb-date-picker-item\">\n <bb-form-control hideErrors>\n @if (data?.years?.length > 0) {\n <select [class.has-value]=\"!!form?.get('year')?.value\"\n bbInput\n autocomplete=\"off\"\n formControlName=\"year\">\n <option [ngValue]=\"null\">{{ yearPlaceholder }}</option>\n @for (year of data?.years; track year) {\n <option [value]=\"year\">{{ year }}</option>\n }\n </select>\n } @else {\n <input [placeholder]=\"yearPlaceholder\"\n bbInput\n type=\"text\"\n inputmode=\"numeric\"\n minlength=\"4\"\n maxlength=\"4\"\n pattern=\"^[0-9]{4}$\"\n formControlName=\"year\"\n autocomplete=\"off\">\n }\n </bb-form-control>\n </div>\n </div>\n}\n\n<!-- The date picker error. -->\n@if (!hideErrors) {\n <bb-form-error (errorChange)=\"onErrorChange($event)\"></bb-form-error>\n}\n<!-- The date picker hint. -->\n@if (hint; as hintContent) {\n <p class=\"bb-date-picker-hint\">\n <ng-template [bbTemplate]=\"hintContent\">{{ hintContent }}</ng-template>\n </p>\n}\n","import {booleanAttribute, ChangeDetectionStrategy, ChangeDetectorRef, Component, EventEmitter, forwardRef, inject, Input, numberAttribute, Output, TemplateRef, ViewEncapsulation} from '@angular/core';\nimport {ControlValueAccessor, NG_VALUE_ACCESSOR} from '@angular/forms';\nimport {BbImageUpload} from '../directives/image-upload.directive';\nimport {TooltipDirective} from '@bravobit/bb-foundation/tooltip';\nimport {BbFormError} from '../form-error/form-error.component';\nimport {BbFileDrop} from '../directives/file-drop.directive';\nimport {BbLocalize} from '@bravobit/bb-foundation/localize';\nimport {BbFileDataUrl} from '../pipes/file-data-url.pipe';\nimport {BbTemplate} from '@bravobit/bb-foundation/utils';\nimport {BbButton} from '../button/button.component';\nimport {AsyncPipe} from '@angular/common';\n\nlet nextUniqueId = 0;\n\n@Component({\n selector: 'bb-image-control',\n templateUrl: './image-control.component.html',\n styleUrls: ['./image-control.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n providers: [\n {provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => BbImageControl), multi: true}\n ],\n host: {\n 'class': 'bb-image-control',\n '[class.disabled]': 'disabled',\n '[class.required]': 'required',\n '[class.grouped]': 'grouped',\n '[class.error]': 'error'\n },\n imports: [BbButton, AsyncPipe, BbFileDataUrl, BbTemplate, BbImageUpload, BbLocalize, BbFileDrop, TooltipDirective, BbFormError]\n})\nexport class BbImageControl implements ControlValueAccessor {\n\n // Dependencies.\n private readonly _changeDetectorRef: ChangeDetectorRef = inject(ChangeDetectorRef);\n\n // Readonly data.\n readonly labelId = `bb-image-control-${nextUniqueId++}`;\n\n // Inputs.\n @Input() label: string | TemplateRef<any> | null = null;\n @Input() hint: string | TemplateRef<any> | null = null;\n @Input() buttonLabel: string | null = null;\n @Input() imageUrl: string | null = null;\n @Input() mode: 'aspect-fit' | 'aspect-fill' = 'aspect-fit';\n @Input() type: 'png' | 'jpg' = 'png';\n @Input({transform: numberAttribute}) cropWidth: number = 320;\n @Input({transform: numberAttribute}) visualMaxWidth: number | null = null;\n @Input({transform: numberAttribute}) aspectRatio: number = 1;\n @Input({transform: booleanAttribute}) grouped: boolean = false;\n @Input({transform: booleanAttribute}) required: boolean = false;\n @Input({transform: booleanAttribute}) disabled: boolean = false;\n @Input({transform: booleanAttribute}) hideErrors: boolean = false;\n\n // Outputs.\n @Output() delete = new EventEmitter<void>();\n\n // State.\n value: File | null = null;\n error: boolean = false;\n\n // Callbacks.\n onTouchedCallback: () => void = () => ({});\n onChangeCallback: (_: File | null) => void = () => ({});\n\n onFile(file: File) {\n if (this.disabled || !file || !['image/png', 'image/jpeg'].includes(file?.type)) {\n return;\n }\n\n this.value = file;\n this._changeDetectorRef.markForCheck();\n this.onChangeCallback?.(this.value);\n }\n\n async onDelete() {\n if (this.disabled) {\n return;\n }\n\n if (this.value) {\n this.value = null;\n this._changeDetectorRef.markForCheck();\n return this.onChangeCallback?.(this.value);\n }\n\n return this.delete?.emit();\n }\n\n writeValue(value: File | null) {\n this.value = value;\n this._changeDetectorRef.markForCheck();\n }\n\n registerOnChange(method: (_: File | null) => void) {\n this.onChangeCallback = method;\n }\n\n registerOnTouched(method: () => void) {\n this.onTouchedCallback = method;\n }\n\n setDisabledState(isDisabled: boolean) {\n this.disabled = isDisabled;\n this._changeDetectorRef.markForCheck();\n }\n\n onErrorChange(error: { token: string, data?: any } | null) {\n this.error = !!error;\n }\n\n}\n","<!-- Label of the form control. -->\n@if (label; as labelContent) {\n <label [attr.for]=\"labelId\"\n class=\"bb-image-control-label\">\n <ng-template [bbTemplate]=\"labelContent\">{{ labelContent }}</ng-template>\n </label>\n}\n\n<div [style.aspect-ratio]=\"1 / aspectRatio\"\n [style.max-width.px]=\"visualMaxWidth ?? cropWidth\"\n [bbFileDropDisabled]=\"disabled\"\n (bbFileDrop)=\"onFile($event?.[0])\"\n class=\"bb-image-control-image\">\n @if ((value | bbFileDataUrl | async) || imageUrl; as dataUri) {\n <div [style.background-image]=\"'url(' + dataUri + ')'\"></div>\n }\n</div>\n\n@if (!hideErrors) {\n <bb-form-error (errorChange)=\"onErrorChange($event)\"></bb-form-error>\n}\n\n@if (hint; as hintContent) {\n <p class=\"bb-image-control-hint\">\n <ng-template [bbTemplate]=\"hintContent\">{{ hintContent }}</ng-template>\n </p>\n}\n\n@if (!disabled) {\n\n <div class=\"bb-image-control-button\">\n <button [bbImageUploadWidth]=\"cropWidth\"\n [bbImageUploadHeight]=\"cropWidth * aspectRatio\"\n [disabled]=\"disabled\"\n [bbImageUploadMode]=\"mode\"\n [bbImageUploadType]=\"type\"\n (onFile)=\"onFile($event)\"\n bbImageUpload\n type=\"button\"\n class=\"secondary small\"\n bb-button>\n {{ buttonLabel ?? ('image-control.button_label' | bbLocalize) }}\n <ng-content ngProjectAs=\"[suffix]\"\n select=\"[suffix]\"></ng-content>\n </button>\n\n @if (value || (imageUrl && delete?.observed)) {\n <button (click)=\"onDelete()\"\n type=\"button\"\n class=\"bb-image-control-link\">\n {{ 'image-control.delete_label' | bbLocalize }}\n </button>\n }\n </div>\n}\n","import {\n booleanAttribute,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef,\n EventEmitter,\n forwardRef, inject,\n Input,\n numberAttribute,\n OnDestroy,\n OnInit,\n Output,\n TemplateRef,\n ViewChild,\n ViewEncapsulation\n} from '@angular/core';\nimport {ControlValueAccessor, FormControl, NG_VALIDATORS, NG_VALUE_ACCESSOR, ReactiveFormsModule, Validator} from '@angular/forms';\nimport {BbFormError} from '../form-error/form-error.component';\nimport {getControlValue} from '@bravobit/bb-foundation/rxjs';\nimport {BbTemplate} from '@bravobit/bb-foundation/utils';\nimport {distinctUntilChanged, map} from 'rxjs/operators';\nimport {Platform} from '@angular/cdk/platform';\nimport {Observable, Subscription} from 'rxjs';\nimport {AsyncPipe} from '@angular/common';\n\n@Component({\n selector: 'bb-pincode-control',\n templateUrl: './pincode-control.component.html',\n styleUrls: ['./pincode-control.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n providers: [\n {provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => BbPincodeControl), multi: true},\n {provide: NG_VALIDATORS, useExisting: BbPincodeControl, multi: true}\n ],\n host: {\n 'class': 'bb-pincode-control',\n '[class.required]': 'required',\n '[class.readonly]': 'readonly',\n '[class.grouped]': 'grouped',\n '[class.error]': 'error'\n },\n imports: [ReactiveFormsModule, BbTemplate, BbFormError, AsyncPipe]\n})\nexport class BbPincodeControl implements OnInit, OnDestroy, ControlValueAccessor, Validator {\n\n // Dependencies.\n private readonly _platform: Platform = inject(Platform);\n private readonly _changeDetectorRef: ChangeDetectorRef = inject(ChangeDetectorRef);\n\n // Views.\n @ViewChild('htmlInputElement', {static: true}) htmlInputElementRef: ElementRef<HTMLInputElement>;\n\n // Inputs.\n @Input() label: string | TemplateRef<any> | null = null;\n @Input() hint: string | TemplateRef<any> | null = null;\n @Input() placeholder: string | null = null;\n @Input({transform: booleanAttribute}) autoFocus: boolean = false;\n @Input({transform: booleanAttribute}) required: boolean = false;\n @Input({transform: booleanAttribute}) readonly: boolean = false;\n @Input({transform: booleanAttribute}) grouped: boolean = false;\n @Input({transform: numberAttribute}) digits: number = 6;\n\n @Input()\n get value() {\n return this.control?.value;\n }\n\n @Output() valueChange = new EventEmitter<string | null>();\n\n set value(value: string | null) {\n this.control?.setValue(value);\n this.valueChange.emit(value);\n }\n\n // Data.\n data$: Observable<{\n items?: { index: number, value: string, active: boolean }[]\n }>;\n\n // State.\n control = new FormControl<string>(null);\n error: boolean = false;\n\n // Callbacks.\n onTouchedCallback: () => void = () => ({});\n onChangeCallback: (_: string | null) => void = () => ({});\n\n // Subscriptions.\n private _subscription = new Subscription();\n\n ngOnInit() {\n this.setData();\n this.handleValueChanges();\n this.handleAutoFocus();\n }\n\n ngOnDestroy() {\n this._subscription?.unsubscribe();\n }\n\n writeValue(value: string | null) {\n this.value = value;\n }\n\n registerOnChange(method: (_: string | null) => void) {\n this.onChangeCallback = method;\n }\n\n registerOnTouched(method: () => void) {\n this.onTouchedCallback = method;\n }\n\n setDisabledState(isDisabled: boolean) {\n isDisabled\n ? this.control?.disable()\n : this.control?.enable();\n this._changeDetectorRef.markForCheck();\n }\n\n onErrorChange(error: { token: string, data?: any } | null) {\n this.error = !!error;\n }\n\n validate(control: FormControl) {\n const value = control?.value;\n if (value === null || value === undefined) {\n return null;\n }\n\n if (value?.length > this.digits) {\n return {\n maxlength: {\n actualLength: value?.length ?? 0,\n requiredLength: this.digits ?? 0\n }\n };\n }\n\n if (value?.length < this.digits) {\n return {\n minlength: {\n actualLength: value?.length ?? 0,\n requiredLength: this.digits ?? 0\n }\n };\n }\n\n return null;\n }\n\n focusEnd() {\n const input = this.htmlInputElementRef?.nativeElement;\n if (input === null || input === undefined) {\n return;\n }\n const length = input?.value?.length ?? 0;\n input?.focus();\n input.setSelectionRange(length, length);\n }\n\n private setData() {\n this.data$ = getControlValue<string>(this.control).pipe(\n map(value => value ?? ''),\n map(value => {\n const items = Array(this.digits)\n .fill(0)\n .map((_, index, array) => ({\n index: index,\n value: value?.[index] ?? '',\n active: Math.min(array?.length - 1, value?.length) === index\n }));\n return {items};\n })\n );\n }\n\n private handleValueChanges() {\n const subscription = this.control.valueChanges.pipe(\n distinctUntilChanged()\n ).subscribe(() => {\n this.valueChange.emit(this.value);\n this.onChangeCallback(this.value);\n });\n this._subscription.add(subscription);\n }\n\n private handleAutoFocus() {\n if (!this.autoFocus || !this._platform.isBrowser) {\n return;\n }\n setTimeout(() => this.focusEnd(), 0);\n }\n\n}\n","<!-- The label of the input. -->\n@if (label; as labelContent) {\n <label class=\"bb-pincode-control-label\">\n <ng-template [bbTemplate]=\"labelContent\">{{ labelContent }}</ng-template>\n </label>\n}\n\n<input #htmlInputElement\n [formControl]=\"control\"\n [minlength]=\"digits\"\n [maxlength]=\"digits\"\n [readonly]=\"readonly\"\n inputmode=\"numeric\"\n tabindex=\"-1\"\n autocomplete=\"off\"\n class=\"bb-pincode-control-element\"\n type=\"text\">\n\n@if (data$ | async; as data) {\n <div class=\"bb-pincode-control-container\">\n @for (item of data?.items; track item?.index) {\n <div [class.active]=\"item?.active\"\n [class.has-value]=\"!!item?.value\"\n [attr.data-placeholder]=\"placeholder\"\n (click)=\"focusEnd()\"\n class=\"bb-pincode-control-cell\">\n {{ item?.value }}\n </div>\n }\n </div>\n}\n\n<bb-form-error (errorChange)=\"onErrorChange($event)\"></bb-form-error>\n\n<!-- The file picker hint. -->\n@if (hint; as hintContent) {\n <p class=\"bb-pincode-control-hint\">\n <ng-template [bbTemplate]=\"hintContent\">{{ hintContent }}</ng-template>\n </p>\n}\n","import {ELEMENTS_CONFIG, ELEMENTS_ERRORS, ELEMENTS_ICONS, ElementsConfig} from './elements.interfaces';\nimport {EnvironmentProviders, makeEnvironmentProviders, Provider} from '@angular/core';\n\nexport function provideElementsConfig(config?: ElementsConfig): EnvironmentProviders {\n const providers: Provider[] = [\n {provide: ELEMENTS_CONFIG, useValue: config},\n {\n provide: ELEMENTS_ERRORS,\n multi: true,\n useValue: {\n unknown: () => 'form-control-errors.unknown',\n required: () => 'form-control-errors.required',\n pattern: () => 'form-control-errors.pattern',\n email: () => 'form-control-errors.email',\n emailTaken: () => 'form-control-errors.emailTaken',\n passwordMatch: () => 'form-control-errors.passwordMatch',\n confirm: () => 'form-control-errors.confirm',\n fullNumber: () => 'form-control-errors.fullNumber',\n min: ({min}) => ({token: 'form-control-errors.min', data: {min}}),\n max: ({max}) => ({token: 'form-control-errors.max', data: {max}}),\n maxFileSize: ({maxSize}) => ({token: 'form-control-errors.maxFileSize', data: {maxSize}}),\n maxTotalFileSize: ({max, current}) => ({token: 'form-control-errors.maxTotalFileSize', data: {max, current}}),\n minDate: ({date}) => ({token: 'form-control-errors.minDate', data: {date}}),\n maxDate: ({date}) => ({token: 'form-control-errors.maxDate', data: {date}}),\n invalidDate: () => 'form-control-errors.invalidDate',\n invalidFileType: () => 'form-control-errors.invalidFileType',\n invalidFiles: () => 'form-control-errors.invalidFiles',\n minlength: ({requiredLength, actualLength}) => ({\n token: 'form-control-errors.minlength',\n data: {requiredLength, actualLength}\n }),\n maxlength: ({requiredLength, actualLength}) => ({\n token: 'form-control-errors.maxlength',\n data: {requiredLength, actualLength}\n })\n }\n }\n ];\n\n const useMaterialDesignIcons = config?.useMaterialDesignIcons ?? true;\n if (useMaterialDesignIcons) {\n providers.push({\n provide: ELEMENTS_ICONS,\n multi: true,\n useValue: {namespace: 'material', className: 'material-icons', uses: 'content', type: 'font'}\n });\n }\n\n const iconFonts = config?.iconFonts ?? [];\n for (const font of iconFonts) {\n providers.push({provide: ELEMENTS_ICONS, multi: true, useValue: font});\n }\n\n if (config?.errors) {\n providers.push({provide: ELEMENTS_ERRORS, multi: true, useValue: config?.errors});\n }\n\n return makeEnvironmentProviders(providers);\n}\n","import {BbMultiFileControl} from './multi-file-control/multi-file-control.component';\nimport {BbExtraErrorControls} from './directives/extra-error-controls.directive';\nimport {BbPincodeControl} from './pincode-control/pincode-control.component';\nimport {BbCheckboxGroup} from './checkbox-group/checkbox-group.component';\nimport {ColorPickerDirective} from './directives/color-picker.directive';\nimport {BbImageControl} from './image-control/image-control.component';\nimport {BbFormSubmitter} from './directives/form-submitter.directive';\nimport {BbImagePicker} from './image-picker/image-picker.component';\nimport {BbFormControl} from './form-control/form-control.component';\nimport {BbColorSlider} from './color-slider/color-slider.component';\nimport {BbColorPicker} from './color-picker/color-picker.component';\nimport {BbRadioButton} from './radio-button/radio-button.component';\nimport {BbImageUpload} from './directives/image-upload.directive';\nimport {BbFilePicker} from './file-picker/file-picker.component';\nimport {BbDatePicker} from './date-picker/date-picker.component';\nimport {BbRadioGroup} from './radio-group/radio-group.component';\nimport {BbFormSubmit} from './directives/form-submit.directive';\nimport {BbFormGroup} from './form-group/form-group.component';\nimport {BbFormError} from './form-error/form-error.component';\nimport {BbAnchor, BbButton} from './button/button.component';\nimport {ModuleWithProviders, NgModule} from '@angular/core';\nimport {BbFileDrop} from './directives/file-drop.directive';\nimport {BbRelativeTime} from './pipes/relative-time.pipe';\nimport {BbCheckbox} from './checkbox/checkbox.component';\nimport {provideElementsConfig} from './elements.config';\nimport {BbSpinner} from './spinner/spinner.component';\nimport {ElementsConfig} from './elements.interfaces';\nimport {BbInput} from './directives/input.directive';\nimport {BbFileImage} from './pipes/file-image.pipe';\nimport {BbAvatar} from './avatar/avatar.component';\nimport {BbFileSize} from './pipes/file-size.pipe';\nimport {BbIcon} from './icon/icon.component';\nimport {BbDate} from './pipes/date.pipe';\n\nconst IMPORTS_EXPORTS = [\n // Directives.\n BbFormError,\n BbFormSubmit,\n BbFormSubmitter,\n BbInput,\n BbImageUpload,\n BbExtraErrorControls,\n BbFileDrop,\n ColorPickerDirective,\n // Pipes.\n BbFileSize,\n BbFileImage,\n BbRelativeTime,\n BbDate,\n // Components.\n BbButton,\n BbAnchor,\n BbSpinner,\n BbIcon,\n BbFormControl,\n BbFormGroup,\n BbCheckbox,\n BbCheckboxGroup,\n BbRadioGroup,\n BbRadioButton,\n BbAvatar,\n BbMultiFileControl,\n BbFilePicker,\n BbImagePicker,\n BbDatePicker,\n BbColorSlider,\n BbColorPicker,\n BbImageControl,\n BbPincodeControl\n];\n\n@NgModule({\n imports: [...IMPORTS_EXPORTS],\n exports: [...IMPORTS_EXPORTS]\n})\nexport class ElementsModule {\n\n static forRoot(config?: ElementsConfig): ModuleWithProviders<ElementsModule> {\n return {\n ngModule: ElementsModule,\n providers: [\n provideElementsConfig(config)\n ]\n };\n }\n\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["nextUniqueId","i1.BbFormControl","i1"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"bravobit-bb-foundation-elements.mjs","sources":["../../../projects/bb-foundation/elements/src/lib/directives/form-submit.directive.ts","../../../projects/bb-foundation/elements/src/lib/directives/form-submitter.directive.ts","../../../projects/bb-foundation/elements/src/lib/elements.interfaces.ts","../../../projects/bb-foundation/elements/src/lib/directives/extra-error-controls.directive.ts","../../../projects/bb-foundation/elements/src/lib/form-error/form-error.component.ts","../../../projects/bb-foundation/elements/src/lib/form-error/form-error.component.html","../../../projects/bb-foundation/elements/src/lib/form-control/form-control.component.ts","../../../projects/bb-foundation/elements/src/lib/form-control/form-control.component.html","../../../projects/bb-foundation/elements/src/lib/directives/input.directive.ts","../../../projects/bb-foundation/elements/src/lib/directives/image-upload.directive.ts","../../../projects/bb-foundation/elements/src/lib/directives/file-drop.directive.ts","../../../projects/bb-foundation/elements/src/lib/color-slider/color-slider.component.ts","../../../projects/bb-foundation/elements/src/lib/color-slider/color-slider.component.html","../../../projects/bb-foundation/elements/src/lib/color-picker/color-picker.component.ts","../../../projects/bb-foundation/elements/src/lib/color-picker/color-picker.component.html","../../../projects/bb-foundation/elements/src/lib/directives/color-picker.directive.ts","../../../projects/bb-foundation/elements/src/lib/pipes/file-size.pipe.ts","../../../projects/bb-foundation/elements/src/lib/pipes/file-image.pipe.ts","../../../projects/bb-foundation/elements/src/lib/pipes/file-data-url.pipe.ts","../../../projects/bb-foundation/elements/src/lib/pipes/relative-time.pipe.ts","../../../projects/bb-foundation/elements/src/lib/pipes/date.pipe.ts","../../../projects/bb-foundation/elements/src/lib/spinner/spinner.component.ts","../../../projects/bb-foundation/elements/src/lib/spinner/spinner.component.html","../../../projects/bb-foundation/elements/src/lib/button/button.component.ts","../../../projects/bb-foundation/elements/src/lib/button/button.component.html","../../../projects/bb-foundation/elements/src/lib/icon/icon.component.ts","../../../projects/bb-foundation/elements/src/lib/icon/icon.component.html","../../../projects/bb-foundation/elements/src/lib/form-group/form-group.component.ts","../../../projects/bb-foundation/elements/src/lib/form-group/form-group.component.html","../../../projects/bb-foundation/elements/src/lib/checkbox/checkbox.component.ts","../../../projects/bb-foundation/elements/src/lib/checkbox/checkbox.component.html","../../../projects/bb-foundation/elements/src/lib/checkbox-group/checkbox-group.component.ts","../../../projects/bb-foundation/elements/src/lib/checkbox-group/checkbox-group.component.html","../../../projects/bb-foundation/elements/src/lib/radio-group/radio-group.component.ts","../../../projects/bb-foundation/elements/src/lib/radio-group/radio-group.component.html","../../../projects/bb-foundation/elements/src/lib/radio-button/radio-button.component.ts","../../../projects/bb-foundation/elements/src/lib/radio-button/radio-button.component.html","../../../projects/bb-foundation/elements/src/lib/avatar/avatar.component.ts","../../../projects/bb-foundation/elements/src/lib/avatar/avatar.component.html","../../../projects/bb-foundation/elements/src/lib/elements.inject.ts","../../../projects/bb-foundation/elements/src/lib/multi-file-control/multi-file-control.component.ts","../../../projects/bb-foundation/elements/src/lib/multi-file-control/multi-file-control.component.html","../../../projects/bb-foundation/elements/src/lib/file-picker/file-picker.component.ts","../../../projects/bb-foundation/elements/src/lib/file-picker/file-picker.component.html","../../../projects/bb-foundation/elements/src/lib/image-picker/image-picker.component.ts","../../../projects/bb-foundation/elements/src/lib/image-picker/image-picker.component.html","../../../projects/bb-foundation/elements/src/lib/date-picker/date-picker.component.ts","../../../projects/bb-foundation/elements/src/lib/date-picker/date-picker.component.html","../../../projects/bb-foundation/elements/src/lib/image-control/image-control.component.ts","../../../projects/bb-foundation/elements/src/lib/image-control/image-control.component.html","../../../projects/bb-foundation/elements/src/lib/pincode-control/pincode-control.component.ts","../../../projects/bb-foundation/elements/src/lib/pincode-control/pincode-control.component.html","../../../projects/bb-foundation/elements/src/lib/elements.config.ts","../../../projects/bb-foundation/elements/src/lib/elements.module.ts","../../../projects/bb-foundation/elements/src/bravobit-bb-foundation-elements.ts"],"sourcesContent":["import {distinctUntilChanged, map, shareReplay, startWith} from 'rxjs/operators';\nimport {Directive, ElementRef, OnInit, Optional, Self} from '@angular/core';\nimport {EMPTY, fromEvent, merge, Observable} from 'rxjs';\nimport {FormGroupDirective} from '@angular/forms';\n\n@Directive({\n selector: 'form',\n exportAs: 'bbForm'\n})\nexport class BbFormSubmit implements OnInit {\n\n submitStatus$: Observable<boolean>;\n\n constructor(private _host: ElementRef<HTMLFormElement>,\n @Optional() @Self() private _formDirective: FormGroupDirective) {\n }\n\n ngOnInit() {\n // Submit changes.\n const regularSubmitChanges$ = fromEvent(this.nativeElement, 'submit').pipe(\n map(() => true)\n );\n\n // Reactive form submit changes.\n const reactiveSubmitChanges$ = this.reactiveSubmitChanges();\n\n // Reset changes.\n const resetChanges$ = fromEvent(this.nativeElement, 'reset').pipe(\n map(() => false)\n );\n\n // Listen to the submit status.\n this.submitStatus$ = merge(regularSubmitChanges$, reactiveSubmitChanges$, resetChanges$).pipe(\n startWith(false),\n distinctUntilChanged(),\n shareReplay({refCount: true, bufferSize: 1})\n );\n }\n\n submit() {\n this._formDirective?.ngSubmit?.emit();\n }\n\n reset() {\n return this.nativeElement?.reset();\n }\n\n private get nativeElement() {\n return this._host?.nativeElement;\n }\n\n private reactiveSubmitChanges() {\n if (!this._formDirective) {\n return EMPTY;\n }\n\n return this._formDirective.ngSubmit.pipe(\n map(() => true)\n );\n }\n\n}\n","import {Directive} from '@angular/core';\nimport {BehaviorSubject} from 'rxjs';\n\n@Directive({\n selector: '[bbFormSubmitter]',\n exportAs: 'bbFormSubmitter'\n})\nexport class BbFormSubmitter {\n\n // State.\n submitted$ = new BehaviorSubject<boolean>(false);\n\n submit() {\n this.submitted$.next(true);\n }\n\n reset() {\n this.submitted$.next(false);\n }\n\n}\n","import {InjectionToken} from '@angular/core';\n\nexport const ELEMENTS_CONFIG = new InjectionToken<ElementsConfig>('elements config');\nexport const ELEMENTS_ICONS: InjectionToken<ElementsIcon[]> = new InjectionToken('elements_icons');\nexport const ELEMENTS_ERRORS: InjectionToken<ElementsError[]> = new InjectionToken('elements_errors');\n\nexport type ElementsIcon = ElementsIconFont | ElementsIconImage | ElementsIconUrl | ElementsIconUnknown;\nexport type ElementsError = { [error: string]: (data?: any) => string | { token: string, data?: any }; };\n\nexport interface ElementsIconFont {\n namespace: string;\n className: string;\n uses: 'content' | 'data-attribute';\n type: 'font';\n}\n\nexport interface ElementsIconImage {\n namespace: string;\n name: string;\n src: string;\n type: 'image';\n}\n\nexport interface ElementsIconUrl {\n namespace: string;\n url: string;\n type: 'url';\n}\n\nexport interface ElementsIconUnknown {\n type: 'unknown';\n}\n\nexport interface ElementsConfig {\n useMaterialDesignIcons?: boolean;\n iconFonts?: ElementsIcon[];\n errors?: ElementsError;\n defaultDisplayUnit?: ElementsDisplayUnit;\n allowedFileTypes?: string[];\n maxFileSize?: number;\n maxTotalFileSize?: number;\n avatarColorAlgorithm?: ElementsAvatarColorAlgorithm;\n}\n\nexport type ElementsDisplayUnit = 'rem' | 'px';\n\nexport type ElementsAvatarColorAlgorithm = (value: string) => { color: string, background: string } | null;\n","import {BehaviorSubject, combineLatest, Subscription} from 'rxjs';\nimport {AbstractControl, ValidationErrors} from '@angular/forms';\nimport {Directive, Input, OnDestroy} from '@angular/core';\nimport {distinctUntilChanged, map} from 'rxjs/operators';\n\n@Directive({\n selector: '[bbExtraErrorControls]'\n})\nexport class BbExtraErrorControls implements OnDestroy {\n\n // State.\n readonly changes = new BehaviorSubject<ValidationErrors | null>(null);\n\n // Subscriptions.\n private _subscription: Subscription | null = null;\n\n @Input({alias: 'bbExtraErrorControls'})\n set extraControls(controls: AbstractControl[]) {\n this.handle(controls);\n }\n\n ngOnDestroy() {\n this._subscription?.unsubscribe();\n }\n\n private handle(controls: AbstractControl[]) {\n this._subscription?.unsubscribe();\n\n if (controls.length <= 0) {\n return;\n }\n\n const validationErrors$ = controls.map(control => {\n return control.valueChanges.pipe(\n map(_ => control?.errors)\n );\n });\n\n const errors$ = combineLatest(validationErrors$).pipe(\n map(validationErrors => validationErrors.find(error => !!error)),\n distinctUntilChanged()\n );\n\n this._subscription = errors$\n .subscribe(errors => this.changes.next(errors ?? null));\n }\n\n}\n","import {ChangeDetectionStrategy, Component, EventEmitter, Inject, Input, OnInit, Optional, Output, ViewEncapsulation} from '@angular/core';\nimport {BbExtraErrorControls} from '../directives/extra-error-controls.directive';\nimport {delay, distinctUntilChanged, map, startWith, tap} from 'rxjs/operators';\nimport {BbFormSubmitter} from '../directives/form-submitter.directive';\nimport {ELEMENTS_ERRORS, ElementsError} from '../elements.interfaces';\nimport {BbFormSubmit} from '../directives/form-submit.directive';\nimport {BbLocalize} from '@bravobit/bb-foundation/localize';\nimport {NgControl, ValidationErrors} from '@angular/forms';\nimport {combineLatest, Observable, of} from 'rxjs';\nimport {AsyncPipe} from '@angular/common';\n\n@Component({\n selector: 'bb-form-error',\n templateUrl: './form-error.component.html',\n styleUrls: ['./form-error.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {'class': 'bb-form-error'},\n imports: [AsyncPipe, BbLocalize]\n})\nexport class BbFormError implements OnInit {\n\n // Readonly data.\n readonly errorsMap: ElementsError;\n\n // Inputs.\n @Input() control: NgControl | null = null;\n\n // Outputs.\n @Output() errorChange = new EventEmitter<{ token: string, data?: any } | null>();\n\n // State.\n error$: Observable<{ token: string, data?: any } | null>;\n\n constructor(@Optional() private _form?: BbFormSubmit,\n @Optional() private _ngControl?: NgControl,\n @Optional() private _formSubmitter?: BbFormSubmitter,\n @Optional() private _extraErrorControls?: BbExtraErrorControls,\n @Optional() @Inject(ELEMENTS_ERRORS) private _errors?: ElementsError[]) {\n this.errorsMap = this._errors.reduce((previous, current) => ({...previous, ...current}), {});\n }\n\n ngOnInit() {\n this.setControl();\n this.setError();\n }\n\n private setControl() {\n if (!this.control) {\n this.control = this._ngControl;\n }\n }\n\n private setError() {\n const submitStatus$ = this.submitStatusChanges();\n const errorChanges$ = this.getErrors().pipe(\n map(errors => this.formatError(errors)),\n distinctUntilChanged(),\n map(error => typeof error === 'string' ? {token: error} : error)\n );\n\n this.error$ = combineLatest([submitStatus$, errorChanges$]).pipe(\n map(([submitted, error]) => submitted ? error : null),\n tap(value => this.errorChange.emit(value))\n );\n }\n\n private formatError(errors?: ValidationErrors) {\n const [errorName] = Object.keys(errors ?? {});\n const error = errors?.[errorName];\n if (!error) {\n return null;\n }\n\n const errorFunction = this.errorsMap?.[errorName] ?? this.errorsMap?.['unknown'];\n if (!errorFunction) {\n return null;\n }\n\n return errorFunction(error);\n }\n\n private submitStatusChanges() {\n const native$ = this.getNativeFormSubmit();\n const manual$ = this.getManualFormSubmit();\n return combineLatest([native$, manual$]).pipe(\n map(([native, manual]) => native || manual),\n distinctUntilChanged()\n );\n }\n\n private getNativeFormSubmit() {\n if (!this._form) {\n return of(true);\n }\n\n return this._form.submitStatus$;\n }\n\n private getManualFormSubmit() {\n if (!this._formSubmitter) {\n return of(false);\n }\n\n return this._formSubmitter.submitted$.pipe(\n distinctUntilChanged()\n );\n }\n\n private getErrors() {\n const error$ = (this.control?.statusChanges ?? of(null)).pipe(\n startWith(this.control?.status),\n map(_ => this.control?.errors ?? null),\n delay(0)\n );\n\n const extraError$ = this._extraErrorControls?.changes?.asObservable() ?? of(null);\n\n return combineLatest([error$, extraError$]).pipe(\n map(([error, extraError]) => error ?? extraError ?? null),\n distinctUntilChanged()\n );\n }\n\n}\n","@if (error$ | async; as error) {\n @if (error?.token | bbLocalize:{optional: true, data: error?.data}; as message) {\n <p class=\"bb-form-error-message\">{{ message }}</p>\n }\n}\n","import {booleanAttribute, ChangeDetectionStrategy, Component, ContentChild, Input, TemplateRef, ViewEncapsulation} from '@angular/core';\nimport {BbFormError} from '../form-error/form-error.component';\nimport {BbTemplate} from '@bravobit/bb-foundation/utils';\nimport {NgControl} from '@angular/forms';\n\nlet nextUniqueId = 0;\n\n@Component({\n selector: 'bb-form-control',\n templateUrl: './form-control.component.html',\n styleUrls: ['./form-control.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n 'class': 'bb-form-control',\n '[class.grouped]': 'grouped',\n '[class.error]': 'error'\n },\n imports: [BbTemplate, BbFormError]\n})\nexport class BbFormControl {\n\n // Readonly data.\n readonly labelId: string = `bb-form-control-${nextUniqueId++}`;\n\n // Views.\n @ContentChild(NgControl) ngControl: NgControl;\n\n // Inputs.\n @Input() label: string | TemplateRef<any> | null = null;\n @Input() hint: string | TemplateRef<any> | null = null;\n @Input({transform: booleanAttribute}) grouped: boolean = false;\n @Input({transform: booleanAttribute}) hideErrors: boolean = false;\n\n // State.\n error: boolean = false;\n\n onErrorChange(error: { token: string, data?: any } | null) {\n this.error = !!error;\n }\n\n}\n","<!-- Label of the form control. -->\n@if (label; as labelContent) {\n <label [attr.for]=\"labelId\"\n class=\"bb-form-control-label\">\n <ng-template [bbTemplate]=\"labelContent\">{{ labelContent }}</ng-template>\n </label>\n}\n\n<!-- The input with the addons. -->\n<div class=\"bb-form-control-container\">\n <ng-content select=\"[bbPrefix]\"></ng-content>\n <ng-content select=\"[bbInput]\"></ng-content>\n <ng-content select=\"[bbSuffix]\"></ng-content>\n</div>\n\n<!-- The error component. -->\n@if (!hideErrors) {\n <bb-form-error [control]=\"ngControl\"\n (errorChange)=\"onErrorChange($event)\">\n </bb-form-error>\n}\n\n<!-- The form control hint. -->\n@if (hint; as hintContent) {\n <p class=\"bb-form-control-hint\">\n <ng-template [bbTemplate]=\"hintContent\">{{ hintContent }}</ng-template>\n </p>\n}\n","import {booleanAttribute, Directive, ElementRef, Host, HostBinding, Input, Optional} from '@angular/core';\nimport {BbFormControl} from '../form-control/form-control.component';\nimport {Validators} from '@angular/forms';\n\n@Directive({\n selector: 'input[bbInput],textarea[bbInput],select[bbInput]'\n})\nexport class BbInput {\n\n constructor(private _elementRef: ElementRef,\n @Optional() @Host() private _formControl: BbFormControl) {\n }\n\n focus() {\n return this._elementRef?.nativeElement?.focus();\n }\n\n @HostBinding('attr.id')\n get id() {\n return this._formControl?.labelId ?? null;\n }\n\n @Input({transform: booleanAttribute})\n @HostBinding('attr.required')\n get required() {\n const hasValidator = this._formControl?.ngControl?.control?.hasValidator(Validators.required);\n return hasValidator || this._required === true ? true : null;\n }\n\n set required(value: boolean) {\n this._required = value;\n }\n\n private _required: boolean = false;\n\n}\n","import {Directive, EventEmitter, HostListener, inject, Input, numberAttribute, Output, Renderer2} from '@angular/core';\nimport {Platform} from '@angular/cdk/platform';\nimport {Files} from '@bravobit/bb-foundation';\n\n@Directive({\n selector: 'button[bbImageUpload]'\n})\nexport class BbImageUpload {\n\n // Dependencies.\n private readonly _files: Files = inject(Files);\n private readonly _platform: Platform = inject(Platform);\n private readonly _renderer: Renderer2 = inject(Renderer2);\n\n // Inputs.\n @Input({alias: 'bbImageUploadWidth', transform: numberAttribute}) width: number | null = null;\n @Input({alias: 'bbImageUploadHeight', transform: numberAttribute}) height: number | null = null;\n @Input({alias: 'bbImageUploadMode'}) mode: 'aspect-fit' | 'aspect-fill' = 'aspect-fit';\n @Input({alias: 'bbImageUploadType'}) type: 'png' | 'jpg' = 'png';\n\n // Outputs.\n @Output() onDataUri = new EventEmitter<string>();\n @Output() onFile = new EventEmitter<File>();\n\n @HostListener('click')\n async onClick() {\n if (!this._platform.isBrowser) {\n return;\n }\n\n const originalFile = await this.openFilePicker();\n const dataUri = await this.toDataUri(originalFile);\n const image = await this.toImage(dataUri);\n const scaledDataUri = this.scaleImage(image);\n this.onDataUri.emit(scaledDataUri);\n\n if (this.onFile?.observed) {\n const name = this.getFileName();\n const file = this._files.fromDataUri(scaledDataUri, name);\n this.onFile.emit(file);\n }\n }\n\n private openFilePicker() {\n return new Promise<File>(resolve => {\n const input = this._renderer.createElement('input');\n this._renderer.setProperty(input, 'type', 'file');\n this._renderer.setProperty(input, 'accept', 'image/png,image/jpeg');\n const handler = this._renderer.listen(input, 'change', event => {\n handler();\n const files = event?.target?.files ?? [];\n const file = files?.[0] ?? null;\n return resolve(file);\n });\n input?.click?.();\n });\n }\n\n private async toDataUri(file: File) {\n return new Promise<string>((resolve, reject) => {\n const reader = new FileReader();\n reader.onerror = () => reject('error file read');\n reader.onabort = () => reject('abort file read');\n reader.onload = () => resolve(reader?.result as string);\n reader.readAsDataURL(file);\n });\n }\n\n private toImage(src: string) {\n return new Promise<HTMLImageElement>((resolve, reject) => {\n const image = new Image();\n image.src = src;\n image.onload = () => resolve(image);\n image.onerror = error => reject(error);\n });\n }\n\n private scaleImage(image: HTMLImageElement) {\n const imageWidth = image?.width ?? 0;\n const imageHeight = image?.height ?? 0;\n\n const canvas: HTMLCanvasElement = this._renderer.createElement('canvas');\n this._renderer.setProperty(canvas, 'width', this.width ?? imageWidth);\n this._renderer.setProperty(canvas, 'height', this.height ?? imageHeight);\n\n const context = canvas.getContext('2d');\n\n const scaleX = canvas.width / imageWidth;\n const scaleY = canvas.height / imageHeight;\n const scale = this.getScaleByMode(scaleX, scaleY);\n\n const scaledWidth = imageWidth * scale;\n const scaledHeight = imageHeight * scale;\n const offsetX = (canvas.width - scaledWidth) / 2;\n const offsetY = (canvas.height - scaledHeight) / 2;\n\n context.drawImage(image, 0, 0, imageWidth, imageHeight, offsetX, offsetY, scaledWidth, scaledHeight);\n\n const type = this.getExportType();\n return canvas.toDataURL(type);\n }\n\n private getExportType() {\n switch (this.type) {\n case 'jpg':\n return 'image/jpeg';\n case 'png':\n default:\n return 'image/png';\n }\n }\n\n private getScaleByMode(x: number, y: number) {\n switch (this.mode) {\n case 'aspect-fill':\n return Math.max(x, y);\n case 'aspect-fit':\n default:\n return Math.min(x, y);\n }\n }\n\n private getFileName() {\n switch (this.type) {\n case 'jpg':\n return 'image.jpg';\n case 'png':\n return 'image.png';\n default:\n return 'image';\n }\n }\n\n}\n","import {booleanAttribute, Directive, EventEmitter, HostBinding, HostListener, Input, Output} from '@angular/core';\n\n@Directive({\n selector: '[bbFileDrop]'\n})\nexport class BbFileDrop {\n\n // Inputs.\n @Input({alias: 'bbFileDropDisabled', transform: booleanAttribute}) disabled: boolean = false;\n\n // Outputs.\n @Output('bbFileDrop') onFileDropped = new EventEmitter<File[]>();\n\n // State.\n @HostBinding('class.is-hovered') hovered: boolean = false;\n\n @HostListener('dragover', ['$event', 'true'])\n @HostListener('dragleave', ['$event', 'false'])\n onDrag(event: Event, isHovered: boolean) {\n if (this.disabled) {\n return;\n }\n\n event.preventDefault();\n event.stopPropagation();\n this.setHovered(isHovered);\n }\n\n @HostListener('drop', ['$event'])\n onDrop(event: Event) {\n if (this.disabled) {\n return;\n }\n\n event.preventDefault();\n event.stopPropagation();\n this.setHovered(false);\n\n const files: File[] = Array.from(event['dataTransfer'].files);\n if (files?.length <= 0) {\n return;\n }\n\n this.onFileDropped.emit(files);\n }\n\n private setHovered(value: boolean) {\n this.hovered = value;\n }\n\n}\n","import {ChangeDetectionStrategy, Component, ElementRef, EventEmitter, inject, Input, numberAttribute, OnDestroy, OnInit, Output, ViewEncapsulation, DOCUMENT} from '@angular/core';\nimport {map, shareReplay, startWith, switchMap, tap} from 'rxjs/operators';\nimport {fromEvent, Subscription, takeUntil} from 'rxjs';\nimport {clamp} from '@bravobit/bb-foundation';\n\n@Component({\n selector: 'bb-color-slider',\n templateUrl: './color-slider.component.html',\n styleUrls: ['./color-slider.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {'class': 'bb-color-slider'}\n})\nexport class BbColorSlider implements OnInit, OnDestroy {\n\n // Dependencies.\n private readonly _elementRef: ElementRef = inject(ElementRef);\n private readonly _document: Document = inject(DOCUMENT);\n\n // Inputs.\n @Input({transform: numberAttribute}) xOffset: number = 0;\n @Input({transform: numberAttribute}) yOffset: number = 0;\n @Input({transform: numberAttribute}) size: number = 1;\n\n // Outputs.\n @Output() xOffsetChange = new EventEmitter<number>();\n @Output() yOffsetChange = new EventEmitter<number>();\n\n // Subscriptions.\n private _subscription = new Subscription();\n\n get x() {\n return clamp(this.xOffset, 0, 1);\n }\n\n get y() {\n return clamp(this.yOffset, 0, 1);\n }\n\n ngOnInit() {\n this.setOffsets();\n }\n\n ngOnDestroy() {\n this._subscription?.unsubscribe();\n }\n\n private updateValue(value: { x?: number, y?: number }) {\n this.xOffset = value?.x;\n this.yOffset = value?.y;\n this.xOffsetChange.emit(this.xOffset);\n this.yOffsetChange.emit(this.yOffset);\n }\n\n private setOffsets() {\n const element = this._elementRef?.nativeElement ?? null;\n const offsets$ = fromEvent<PointerEvent>(element, 'pointerdown').pipe(\n switchMap(pointerDownEvent => {\n const rect = element.getBoundingClientRect();\n\n return fromEvent<PointerEvent>(this._document, 'pointermove').pipe(\n map(pointerMoveEvent => this.calculate(pointerMoveEvent, rect)),\n startWith(this.calculate(pointerDownEvent, rect)),\n takeUntil(fromEvent<PointerEvent>(this._document, 'pointerup'))\n );\n }),\n tap(value => this.updateValue(value)),\n shareReplay({bufferSize: 1, refCount: true})\n );\n\n const subscription = offsets$.subscribe();\n this._subscription.add(subscription);\n }\n\n private calculate(event: PointerEvent, rect: DOMRect) {\n const x = clamp(event.clientX - rect.left, 0, rect.width);\n const y = clamp(event.clientY - rect.top, 0, rect.height);\n return {\n x: x / rect.width,\n y: y / rect.height\n };\n }\n\n}\n","<div\n [style.left]=\"'clamp(calc(0% + ' + (size / 2) + 'rem), ' + (x * 100) + '%, calc(100% - ' + (size / 2) + 'rem))'\"\n [style.top]=\"'clamp(calc(0% + ' + (size / 2) + 'rem), ' + (y * 100) + '%, calc(100% - ' + (size / 2) + 'rem))'\"\n [style.width.rem]=\"size\"\n [style.height.rem]=\"size\"\n class=\"bb-color-slider-control\"></div>\n","import {booleanAttribute, ChangeDetectionStrategy, Component, EventEmitter, Input, Output, ViewEncapsulation} from '@angular/core';\nimport {BbColorSlider} from '../color-slider/color-slider.component';\nimport {clamp, hexToHsv, hsvToHex} from '@bravobit/bb-foundation';\n\n@Component({\n selector: 'bb-color-picker',\n templateUrl: './color-picker.component.html',\n styleUrls: ['./color-picker.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {'class': 'bb-color-picker'},\n imports: [BbColorSlider]\n})\nexport class BbColorPicker {\n\n // Inputs.\n @Input({transform: booleanAttribute}) showAlpha: boolean = false;\n\n @Input() set color(value: string) {\n if (this._color === value) {\n return;\n }\n this._color = value;\n this.setUIVariables();\n }\n\n get color() {\n return this._color;\n }\n\n // Outputs.\n @Output() colorChange = new EventEmitter<string>();\n\n // UI variables.\n hueOffset: number = 0;\n saturationOffset: number = 0;\n valueOffset: number = 0;\n opacityOffset: number = 1;\n\n // State.\n private _color: string | null = null;\n\n setColor() {\n try {\n const hue = this.hueOffset * 360;\n const saturation = clamp(this.saturationOffset * 100, 0, 100);\n const value = clamp((1 - this.valueOffset) * 100, 0, 100);\n const opacity = this.showAlpha ? clamp(this.opacityOffset, 0, 1) : 1;\n const newColor = hsvToHex(hue, saturation, value, opacity);\n if (newColor === this._color) {\n return;\n }\n this._color = newColor;\n this.colorChange.emit(this._color);\n } catch {\n // do nothing.\n }\n }\n\n private setUIVariables() {\n if (this._color === null || this._color === undefined) {\n return;\n }\n\n try {\n const {hue, saturation, value, alpha} = hexToHsv(this._color);\n this.hueOffset = hue / 360;\n this.saturationOffset = saturation / 100;\n this.valueOffset = 1 - (value / 100);\n this.opacityOffset = this.showAlpha ? alpha : 1;\n } catch {\n this.hueOffset = 0;\n this.saturationOffset = 0;\n this.valueOffset = 0;\n this.opacityOffset = 1;\n }\n }\n\n}\n","<bb-color-slider [(xOffset)]=\"saturationOffset\"\n [(yOffset)]=\"valueOffset\"\n [style.background-color]=\"'hsl(' + (hueOffset * 360) + ', 100%, 50%)'\"\n (xOffsetChange)=\"setColor()\"\n size=\"1.5\"\n class=\"bb-color-picker-saturation\">\n</bb-color-slider>\n\n<bb-color-slider [(xOffset)]=\"hueOffset\"\n (xOffsetChange)=\"setColor()\"\n size=\"1.5\"\n class=\"bb-color-picker-hue\">\n</bb-color-slider>\n\n@if (showAlpha) {\n <bb-color-slider [(xOffset)]=\"opacityOffset\"\n [style.background-image]=\"'linear-gradient(45deg, rgba(255, 255, 255, 0.2) 25%, transparent 25%, transparent 75%, rgba(255, 255, 255, 0.2) 75%, rgba(255, 255, 255, 0.2)), linear-gradient(45deg, rgba(255, 255, 255, 0.2) 25%, transparent 25%, transparent 75%, rgba(255, 255, 255, 0.2) 75%, rgba(255, 255, 255, 0.2)), linear-gradient(to right, hsla(' + (hueOffset * 360) + ',100%,50%,0), hsla(' + (hueOffset * 360) + ',100%,50%,1))'\"\n (xOffsetChange)=\"setColor()\"\n size=\"1.5\"\n class=\"bb-color-picker-alpha\">\n </bb-color-slider>\n}\n","import {booleanAttribute, Directive, ElementRef, EnvironmentInjector, EventEmitter, HostListener, inject, Input, OnDestroy, OnInit, Output, ViewContainerRef} from '@angular/core';\nimport {ConnectedPosition, Overlay, OverlayRef} from '@angular/cdk/overlay';\nimport {BbColorPicker} from '../color-picker/color-picker.component';\nimport {ComponentPortal} from '@angular/cdk/portal';\nimport {merge, Subscription} from 'rxjs';\n\n@Directive({\n selector: '[bbColorPicker]'\n})\nexport class ColorPickerDirective implements OnInit, OnDestroy {\n\n // Dependencies.\n private readonly _overlay: Overlay = inject(Overlay);\n private readonly _viewContainerRef: ViewContainerRef = inject(ViewContainerRef);\n private readonly _elementRef: ElementRef<HTMLElement> = inject(ElementRef<HTMLElement>);\n private readonly _environmentInjector: EnvironmentInjector = inject(EnvironmentInjector);\n\n // Inputs.\n @Input({required: true}) bbColorPicker!: string;\n @Input({transform: booleanAttribute}) bbColorPickerShowAlpha: boolean = false;\n @Input({transform: booleanAttribute}) bbColorPickerDisabled: boolean = false;\n\n // Outputs.\n @Output() bbColorPickerChange = new EventEmitter<string>();\n\n // State.\n private _overlayRef: OverlayRef | null = null;\n\n // Subscriptions.\n private _subscription = new Subscription();\n\n @HostListener('click')\n showColorPicker() {\n if (this._overlayRef?.hasAttached() || this.bbColorPickerDisabled) {\n return;\n }\n this.attachColorPicker();\n }\n\n hideColorPicker() {\n if (!this._overlayRef?.hasAttached()) {\n return;\n }\n this._overlayRef?.detach();\n }\n\n ngOnInit() {\n this.createOverlay();\n this.handleOverlayEvents();\n }\n\n ngOnDestroy() {\n this._subscription?.unsubscribe();\n this._overlayRef?.dispose();\n }\n\n private attachColorPicker() {\n const component = new ComponentPortal(BbColorPicker, this._viewContainerRef, this._environmentInjector);\n const componentRef = this._overlayRef.attach(component);\n componentRef.setInput('color', this.bbColorPicker);\n componentRef.setInput('showAlpha', this.bbColorPickerShowAlpha);\n componentRef.instance.colorChange.subscribe(color => {\n this.bbColorPickerChange.emit(color);\n });\n }\n\n private getPositionStrategy() {\n const positions = this.getPositions();\n\n return this._overlay\n .position()\n .flexibleConnectedTo(this._elementRef)\n .withPositions(positions);\n }\n\n private handleOverlayEvents() {\n if (!this._overlayRef) {\n return;\n }\n\n const backdropClick$ = this._overlayRef.backdropClick();\n const outside$ = this._overlayRef.outsidePointerEvents();\n const detachments$ = this._overlayRef.detachments();\n\n const subscription = merge(backdropClick$, outside$, detachments$).subscribe(() => {\n this.hideColorPicker();\n });\n this._subscription.add(subscription);\n }\n\n private createOverlay() {\n const positionStrategy = this.getPositionStrategy();\n const scrollStrategy = this._overlay.scrollStrategies.reposition();\n\n this._overlayRef = this._overlay.create({\n positionStrategy,\n scrollStrategy,\n minHeight: 200,\n disposeOnNavigation: true,\n width: '100%',\n maxWidth: '20rem'\n });\n }\n\n private getPositions() {\n return [\n {\n originX: 'start',\n originY: 'bottom',\n overlayX: 'start',\n overlayY: 'top',\n offsetY: 8\n },\n {\n originX: 'start',\n originY: 'top',\n overlayX: 'start',\n overlayY: 'bottom',\n offsetY: -8\n },\n {\n originX: 'end',\n originY: 'top',\n overlayX: 'start',\n overlayY: 'top',\n offsetX: 8\n },\n {\n originX: 'start',\n originY: 'top',\n overlayX: 'end',\n overlayY: 'top',\n offsetX: -8\n }\n ] satisfies ConnectedPosition[];\n }\n\n}\n","import {formatFileSize} from '@bravobit/bb-foundation';\nimport {Pipe, PipeTransform} from '@angular/core';\n\n@Pipe({\n name: 'bbFileSize'\n})\nexport class BbFileSize implements PipeTransform {\n\n transform(value: number) {\n return formatFileSize(value);\n }\n\n}\n","import {ImageConverter} from '@bravobit/bb-foundation';\nimport {DomSanitizer} from '@angular/platform-browser';\nimport {Pipe, PipeTransform} from '@angular/core';\nimport {Platform} from '@angular/cdk/platform';\n\n@Pipe({\n name: 'bbFileImage'\n})\nexport class BbFileImage implements PipeTransform {\n\n constructor(private _platform: Platform,\n private _image: ImageConverter,\n private _sanitizer: DomSanitizer) {\n }\n\n async transform(file: File) {\n // If the file is not a file return.\n if (!this._platform.isBrowser || !(file instanceof File)) {\n return null;\n }\n\n return this._image.fileToImage(file, [\n 'image/png',\n 'image/jpeg',\n 'image/webp',\n 'image/gif',\n 'image/svg+xml'\n ]).then(image => {\n if (!image) {\n return null;\n }\n\n return {\n background: this._sanitizer.bypassSecurityTrustStyle(`url(${image.src})`),\n aspectRatio: image.height / image.width\n };\n }).catch(() => {\n return null;\n });\n }\n\n}\n","import {inject, Pipe, PipeTransform} from '@angular/core';\nimport {Exif, FileLoader} from '@bravobit/bb-foundation';\nimport {Platform} from '@angular/cdk/platform';\n\n@Pipe({\n name: 'bbFileDataUrl'\n})\nexport class BbFileDataUrl implements PipeTransform {\n\n // Dependencies.\n private readonly _platform: Platform = inject(Platform);\n private readonly _exif: Exif = inject(Exif);\n private readonly _fileLoader: FileLoader = inject(FileLoader);\n\n async transform(input: File | Blob) {\n if (!this._platform.isBrowser) {\n return null;\n }\n\n if (input === null || input === undefined || !this.isFileLike(input)) {\n return null;\n }\n\n const stripped = await this.stripExif(input);\n return await this._fileLoader.asDataUrl(stripped);\n }\n\n private async stripExif(input: File | Blob) {\n try {\n if (input instanceof Blob) {\n return input;\n }\n return await this._exif.strip(input);\n } catch {\n return input;\n }\n }\n\n private isFileLike(input: unknown) {\n return 'File' in window && input instanceof File\n || 'Blob' in window && input instanceof Blob;\n }\n\n}\n","import {Inject, LOCALE_ID, Optional, Pipe, PipeTransform} from '@angular/core';\nimport {Localize} from '@bravobit/bb-foundation/localize';\nimport {formatDate} from '@angular/common';\n\n@Pipe({\n name: 'bbRelativeTime'\n})\nexport class BbRelativeTime implements PipeTransform {\n\n constructor(@Inject(LOCALE_ID) private _localeId: string,\n @Optional() private _localize?: Localize) {\n }\n\n transform(value: string | number | Date) {\n // Parse the value to a date object.\n const date = this.parseAsDate(value);\n\n // Check if the date is valid.\n if (!this.isValidDate(date)) {\n return value;\n }\n\n // Return the formatted date.\n return this.format(date);\n }\n\n private format(date: Date) {\n // It happens tomorrow.\n if (this.isTomorrow(date)) {\n return this.formatString(date, 'times.tomorrow_at', 'shortTime');\n }\n\n // It happened today.\n if (this.isToday(date)) {\n return this.formatString(date, 'times.today_at', 'shortTime');\n }\n\n // It happened yesterday.\n if (this.isYesterday(date)) {\n return this.formatString(date, 'times.yesterday_at', 'shortTime');\n }\n\n // Just return the date.\n return this.formatString(date);\n }\n\n private formatString(date: Date, token?: string, format?: string) {\n // Just return the parsed date.\n if (!this._localize || !token || !format) {\n return formatDate(date, 'mediumDate', this.locale);\n }\n\n // Return the translated formatting.\n return this._localize.translate({\n token: token,\n data: {date: formatDate(date, format, this.locale)}\n });\n }\n\n private get locale() {\n return this._localize?.current?.locale ?? this._localeId;\n }\n\n private isValidDate = (date: Date) => {\n return typeof date === 'object' &&\n typeof date.getTime === 'function' &&\n !isNaN(date.getTime());\n };\n\n private parseAsDate = (value: string | number | Date) => {\n // Add a Z after the date so\n // it is treated as a UTC date.\n if (typeof value === 'string' && /^[0-9]{4}-[0-9]{2}-[0-9]{2}T[0-9]{2}:[0-9]{2}:[0-9]{2}$/.test(value)) {\n return new Date(`${value}Z`);\n }\n\n // Return the regular parsed date.\n return new Date(value);\n };\n\n private isToday = (date: Date) => {\n const today = new Date();\n return date?.getDate() === today?.getDate() &&\n date?.getMonth() === today?.getMonth() &&\n date?.getFullYear() === today?.getFullYear();\n };\n\n private isYesterday = (date: Date) => {\n const yesterday = new Date(new Date()?.setDate(new Date()?.getDate() - 1));\n return date?.getDate() === yesterday?.getDate() &&\n date?.getMonth() === yesterday?.getMonth() &&\n date?.getFullYear() === yesterday?.getFullYear();\n };\n\n private isTomorrow = (date: Date) => {\n const tomorrow = new Date(new Date()?.setDate(new Date()?.getDate() + 1));\n return date?.getDate() === tomorrow?.getDate() &&\n date?.getMonth() === tomorrow?.getMonth() &&\n date?.getFullYear() === tomorrow?.getFullYear();\n };\n\n}\n","import {inject, LOCALE_ID, Pipe, PipeTransform} from '@angular/core';\nimport {Localize} from '@bravobit/bb-foundation/localize';\nimport {parseDate} from '@bravobit/bb-foundation';\nimport {formatDate} from '@angular/common';\n\n@Pipe({\n name: 'bbDate'\n})\nexport class BbDate implements PipeTransform {\n\n // Dependencies.\n private readonly _localize = inject(Localize, {optional: true});\n private readonly _localeId = inject(LOCALE_ID);\n\n transform(value: string | number | Date, format?: string) {\n const date = parseDate(value);\n if (date === null) {\n return null;\n }\n\n const locale = this._localize?.current?.locale ?? this._localeId ?? 'en-US';\n return formatDate(date, format ?? 'mediumDate', locale);\n }\n\n}\n","import {booleanAttribute, ChangeDetectionStrategy, Component, input, ViewEncapsulation} from '@angular/core';\n\n@Component({\n selector: 'bb-spinner',\n templateUrl: './spinner.component.html',\n styleUrls: ['./spinner.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {'class': 'bb-spinner'}\n})\nexport class BbSpinner {\n\n // Inputs.\n readonly color = input<string>('var(--bb-spinner-color)');\n readonly alt = input<string>('Loading...');\n readonly disabled = input(false, {transform: booleanAttribute});\n\n}\n","<!--\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","import {booleanAttribute, ChangeDetectionStrategy, Component, ElementRef, HostListener, Input, ViewEncapsulation} from '@angular/core';\nimport {BbSpinner} from '../spinner/spinner.component';\n\n@Component({\n selector: 'button[bb-button]',\n templateUrl: './button.component.html',\n styleUrls: ['./button.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n exportAs: 'bbButton',\n host: {\n 'class': 'bb-button',\n '[class.loading]': 'loading',\n '[attr.disabled]': 'disabled || loading || null'\n },\n imports: [BbSpinner]\n})\nexport class BbButton {\n\n // Inputs.\n @Input({transform: booleanAttribute}) disabled: boolean = false;\n @Input({transform: booleanAttribute}) loading: boolean = false;\n\n constructor(protected elementRef: ElementRef<HTMLButtonElement>) {\n }\n\n focus() {\n const element = this.elementRef?.nativeElement ?? null;\n element?.focus?.();\n }\n\n}\n\n@Component({\n selector: 'a[bb-button]',\n templateUrl: './button.component.html',\n styleUrls: ['./button.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n exportAs: 'bbButton, bbAnchor',\n host: {\n 'class': 'bb-button',\n '[attr.tabindex]': '(disabled || loading) ? -1 : (tabIndex || 0)',\n '[attr.disabled]': 'disabled || loading || null',\n '[attr.aria-disabled]': '(disabled || loading).toString()'\n },\n imports: [BbSpinner]\n})\nexport class BbAnchor extends BbButton {\n\n // Inputs.\n @Input() tabIndex: number | null = null;\n\n constructor(protected override elementRef: ElementRef) {\n super(elementRef);\n }\n\n @HostListener('click', ['$event'])\n stopDisabledEvents(event: Event) {\n // If the button is not disabled (and not loading) let all events pass.\n if (!this.disabled && !this.loading) {\n return;\n }\n\n // If the button is disabled and/or loading stop\n // the event from bubbling up.\n event.preventDefault();\n event.stopImmediatePropagation();\n }\n\n}\n","@if (loading) {\n <bb-spinner class=\"bb-button-spinner small\"></bb-spinner>\n}\n\n<ng-content select=\"[prefix]\"></ng-content>\n<span class=\"bb-button-content\"><ng-content></ng-content></span>\n<ng-content select=\"[suffix]\"></ng-content>\n","import {booleanAttribute, ChangeDetectionStrategy, Component, HostBinding, Inject, Input, numberAttribute, Optional, ViewEncapsulation} from '@angular/core';\nimport {ELEMENTS_CONFIG, ELEMENTS_ICONS, ElementsConfig, ElementsDisplayUnit, ElementsIcon} from '../elements.interfaces';\nimport {AsyncPipe} from '@angular/common';\nimport {BehaviorSubject} from 'rxjs';\n\n@Component({\n selector: 'bb-icon',\n templateUrl: './icon.component.html',\n styleUrls: ['./icon.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n 'class': 'bb-icon',\n '[attr.aria-hidden]': 'ariaHidden'\n },\n imports: [AsyncPipe]\n})\nexport class BbIcon {\n\n // Data.\n private _src: string | null = null;\n\n // State.\n state$ = new BehaviorSubject<any>(null);\n\n @Input() alt: string | null = null;\n @Input({transform: numberAttribute}) size: number = 1.5;\n @Input({transform: booleanAttribute}) ariaHidden: boolean = true;\n @Input() unit: ElementsDisplayUnit | null = null;\n\n @Input()\n set src(newValue: string | null) {\n this.state$.next(this.convert(newValue));\n this._src = newValue;\n }\n\n get src() {\n return this._src;\n }\n\n @HostBinding('style.width')\n @HostBinding('style.height')\n @HostBinding('style.min-width')\n @HostBinding('style.min-height')\n @HostBinding('style.font-size')\n get sizes() {\n const unit = this.unit ?? this._config?.defaultDisplayUnit ?? 'rem';\n return `${this.size}${unit}`;\n }\n\n constructor(@Optional() @Inject(ELEMENTS_CONFIG) private _config?: ElementsConfig,\n @Optional() @Inject(ELEMENTS_ICONS) private _registry?: ElementsIcon[]) {\n }\n\n private convert(src: string | null) {\n const [namespace, value] = (src || '').split(':');\n\n const onError = () => {\n this.warn(`ElementsModule: The icon with src \"${src}\" could not be rendered correctly; Did you put a correct src attribute?`);\n return {type: 'unknown'};\n };\n\n if (!namespace || !value || !this._registry) {\n return onError();\n }\n\n // Try to find an image icon.\n const imageIcon = this.findImageIcon(namespace, value);\n if (imageIcon) {\n return imageIcon;\n }\n\n // Try to find an url icon.\n const urlIcon = this.findUrlIcon(namespace, value);\n if (urlIcon) {\n return urlIcon;\n }\n\n // Try to find a font icon.\n const fontIcon = this.findFontIcon(namespace, value);\n if (fontIcon) {\n return fontIcon;\n }\n\n // Return the on error function.\n return onError();\n }\n\n private findImageIcon(namespace: string, value: string) {\n const data = this._registry.find(item => item['namespace'] === namespace && item['name'] === value);\n\n if (!data) {\n return null;\n }\n\n return {type: data['type'], src: data['src']};\n }\n\n private findUrlIcon(namespace: string, value: string) {\n const data = this._registry.find(item => item?.type === 'url' && item?.namespace === namespace);\n if (!data) {\n return null;\n }\n\n return {type: data['type'], src: data?.['url']?.replace('{value}', value)};\n }\n\n private findFontIcon(namespace: string, content: string) {\n const data = this._registry.find(item => item['namespace'] === namespace);\n\n if (!data) {\n return null;\n }\n\n const uses = data['uses'];\n if (uses === 'data-attribute') {\n return {type: data['type'], className: data['className'], attribute: content};\n }\n\n return {type: data['type'], className: data['className'], content};\n }\n\n private warn = (content: string) => {\n return console && console.warn && console.warn(content);\n };\n\n}\n","@if (state$ | async; as data) {\n @switch (data?.type) {\n @case ('font') {\n <i [attr.data-icon]=\"data?.attribute\"\n [class]=\"data?.className\">\n {{ data?.content }}\n </i>\n }\n @case ('image') {\n <img [src]=\"data?.src\"\n [alt]=\"alt\">\n }\n @case ('url') {\n <img [src]=\"data?.src\"\n [alt]=\"alt\">\n }\n @default {\n <svg viewBox=\"0 0 1 1\">\n <rect x=\"0\" y=\"0\" width=\"1\" height=\"1\" fill=\"#c5c5c5\"></rect>\n </svg>\n }\n }\n}\n","import {booleanAttribute, ChangeDetectionStrategy, Component, input, ViewEncapsulation} from '@angular/core';\n\n@Component({\n selector: 'bb-form-group',\n templateUrl: './form-group.component.html',\n styleUrls: ['./form-group.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n 'class': 'bb-form-group',\n '[class.grouped]': 'grouped()'\n }\n})\nexport class BbFormGroup {\n\n // Inputs.\n readonly grouped = input(false, {transform: booleanAttribute});\n\n}\n","<ng-content></ng-content>\n","import {\n AfterViewInit,\n booleanAttribute,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef,\n EventEmitter,\n forwardRef,\n Input,\n Output,\n Renderer2,\n ViewChild,\n ViewEncapsulation\n} from '@angular/core';\nimport {ControlValueAccessor, NG_VALUE_ACCESSOR} from '@angular/forms';\n\nlet nextUniqueId = 0;\n\n@Component({\n selector: 'bb-checkbox',\n templateUrl: './checkbox.component.html',\n styleUrls: ['./checkbox.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n providers: [\n {provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => BbCheckbox), multi: true}\n ],\n host: {\n 'class': 'bb-checkbox',\n '[class.indeterminate]': 'indeterminate',\n '[class.disabled]': 'disabled',\n '[class.grouped]': 'grouped'\n }\n})\nexport class BbCheckbox implements AfterViewInit, ControlValueAccessor {\n\n // Data.\n readonly labelId: string = `bb-checkbox-${nextUniqueId++}`;\n\n // Views.\n @ViewChild('input', {static: true}) inputElementRef: ElementRef<HTMLInputElement>;\n\n // Inputs.\n @Input({transform: booleanAttribute}) checked: boolean = false;\n @Input({transform: booleanAttribute}) indeterminate: boolean = false;\n @Input({transform: booleanAttribute}) disabled: boolean = false;\n @Input({transform: booleanAttribute}) grouped: boolean = false;\n @Input({transform: booleanAttribute}) hideText: boolean = false;\n\n // Outputs.\n @Output() checkedChange = new EventEmitter<boolean>();\n @Output() indeterminateChange = new EventEmitter<boolean>();\n\n // Callbacks.\n onTouchedCallback: () => void = () => ({});\n onChangeCallback: (_: boolean | null) => void = () => ({});\n\n constructor(private _renderer: Renderer2,\n private _changeDetectorRef: ChangeDetectorRef) {\n }\n\n ngAfterViewInit() {\n this.syncField('indeterminate', this.indeterminate);\n }\n\n toggle() {\n this.checked = !this.checked;\n }\n\n writeValue(newValue: boolean) {\n this.checked = newValue;\n }\n\n registerOnChange(method: (_: boolean | null) => void) {\n this.onChangeCallback = method;\n }\n\n registerOnTouched(method: () => void) {\n this.onTouchedCallback = method;\n }\n\n setDisabledState(isDisabled: boolean) {\n this.disabled = isDisabled;\n this._changeDetectorRef.markForCheck();\n }\n\n onClickEvent(event: Event) {\n event.stopPropagation();\n\n if (this.disabled) {\n return;\n }\n\n // When user manually click on the checkbox, `indeterminate` is set to false.\n if (this.indeterminate) {\n Promise.resolve().then(() => {\n this.indeterminate = false;\n this.indeterminateChange.emit(this.indeterminate);\n });\n }\n\n // Toggle the value.\n this.toggle();\n\n // Emit the change event.\n this.emitChangeEvent();\n }\n\n onChangeEvent(event: Event) {\n // We always have to stop propagation on the change event.\n // Otherwise, the change event, from the input element, will bubble up and\n // emit its event object to the `change` output.\n event.stopPropagation();\n }\n\n private emitChangeEvent() {\n this.onChangeCallback?.(this.checked);\n this.checkedChange.emit(this.checked);\n this.syncField('checked', this.checked);\n }\n\n private syncField(field: string, value: boolean) {\n const element = this.inputElementRef?.nativeElement;\n if (!element) {\n return;\n }\n this._renderer.setProperty(element, field, value);\n }\n\n\n}\n","<input #input\n [id]=\"labelId\"\n [checked]=\"checked\"\n [disabled]=\"disabled\"\n (change)=\"onChangeEvent($event)\"\n (click)=\"onClickEvent($event)\"\n (blur)=\"onTouchedCallback()\"\n class=\"bb-checkbox-input\"\n tabindex=\"-1\"\n type=\"checkbox\">\n\n<label [for]=\"labelId\"\n [attr.tabindex]=\"disabled ? -1 : 0\"\n (keyup.space)=\"onClickEvent($event)\"\n class=\"bb-checkbox-label\">\n <span class=\"bb-checkbox-area\">\n <svg width=\"68%\"\n height=\"68%\"\n viewBox=\"0 0 12 12\">\n <polyline [attr.points]=\"indeterminate ? '1 6 11 6' : '1.5 7 4.5 10 10.5 2'\"></polyline>\n </svg>\n </span>\n @if (!hideText) {\n <span class=\"bb-checkbox-content\">\n <ng-content></ng-content>\n </span>\n }\n</label>\n","import {booleanAttribute, ChangeDetectionStrategy, Component, input, TemplateRef, ViewEncapsulation} from '@angular/core';\nimport {BbTemplate} from '@bravobit/bb-foundation/utils';\n\n@Component({\n selector: 'bb-checkbox-group',\n templateUrl: './checkbox-group.component.html',\n styleUrls: ['./checkbox-group.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n 'class': 'bb-checkbox-group',\n '[class.grouped]': 'grouped()',\n '[class.required]': 'required()',\n '[class.inline]': 'inline()'\n },\n imports: [BbTemplate]\n})\nexport class BbCheckboxGroup {\n\n // Inputs.\n readonly label = input<string | TemplateRef<any>>(null);\n readonly required = input(false, {transform: booleanAttribute});\n readonly grouped = input(false, {transform: booleanAttribute});\n readonly inline = input(false, {transform: booleanAttribute});\n\n}\n","@if (label(); as labelContent) {\n <label class=\"bb-checkbox-group-label\">\n <ng-template [bbTemplate]=\"labelContent\">{{ labelContent }}</ng-template>\n </label>\n}\n\n<div class=\"bb-checkbox-group-items\">\n <ng-content select=\"bb-checkbox\"></ng-content>\n</div>\n","import {booleanAttribute, ChangeDetectionStrategy, ChangeDetectorRef, Component, EventEmitter, forwardRef, Input, Output, TemplateRef, ViewEncapsulation} from '@angular/core';\nimport {ControlValueAccessor, NG_VALUE_ACCESSOR} from '@angular/forms';\nimport {BbFormError} from '../form-error/form-error.component';\nimport {BbTemplate} from '@bravobit/bb-foundation/utils';\n\n@Component({\n selector: 'bb-radio-group',\n templateUrl: './radio-group.component.html',\n styleUrls: ['./radio-group.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n providers: [\n {provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => BbRadioGroup), multi: true}\n ],\n host: {\n 'class': 'bb-radio-group',\n '[class.disabled]': 'disabled',\n '[class.readonly]': 'readonly',\n '[class.grouped]': 'grouped',\n '[class.required]': 'required',\n '[class.inline]': 'inline',\n '[class.error]': 'error'\n },\n imports: [BbTemplate, BbFormError]\n})\nexport class BbRadioGroup<T> implements ControlValueAccessor {\n\n // Inputs.\n @Input() label: string | TemplateRef<any> | null = null;\n @Input({transform: booleanAttribute}) disabled: boolean = false;\n @Input({transform: booleanAttribute}) readonly: boolean = false;\n @Input({transform: booleanAttribute}) required: boolean = false;\n @Input({transform: booleanAttribute}) grouped: boolean = false;\n @Input({transform: booleanAttribute}) inline: boolean = false;\n @Input({transform: booleanAttribute}) hideErrors: boolean = false;\n\n // Outputs.\n @Output() valueChange = new EventEmitter<T>();\n\n // Value.\n @Input()\n get value() {\n return this._value;\n }\n\n set value(value: T) {\n this._value = value;\n this._changeDetectorRef.markForCheck();\n }\n\n private _value: T | null = null;\n\n // Callbacks.\n onTouchedCallback: () => void = () => ({});\n onChangeCallback: (_: T | null) => void = () => ({});\n\n // State.\n error: boolean = false;\n\n constructor(private _changeDetectorRef: ChangeDetectorRef) {\n }\n\n select(value: any) {\n if (this.value === value || this.disabled || this.readonly) {\n return;\n }\n this.value = value;\n this.onChangeCallback?.(this.value);\n this.valueChange.emit(this.value);\n this.onTouchedCallback?.();\n }\n\n registerOnChange(fn: (newValue: T) => void) {\n this.onChangeCallback = fn;\n }\n\n registerOnTouched(fn: () => void) {\n this.onTouchedCallback = fn;\n }\n\n setDisabledState(isDisabled: boolean) {\n this.disabled = isDisabled;\n }\n\n writeValue(newValue: T) {\n this.value = newValue;\n }\n\n onErrorChange(error: { token: string, data?: any } | null) {\n this.error = !!error;\n }\n\n}\n","@if (label; as labelContent) {\n <label class=\"bb-radio-group-label\">\n <ng-template [bbTemplate]=\"labelContent\">{{ labelContent }}</ng-template>\n </label>\n}\n\n<div class=\"bb-radio-group-items\">\n <ng-content select=\"bb-radio-button\"></ng-content>\n</div>\n\n<!-- The error component. -->\n@if (!hideErrors) {\n <bb-form-error (errorChange)=\"onErrorChange($event)\"></bb-form-error>\n}\n","import {booleanAttribute, ChangeDetectionStrategy, Component, HostBinding, HostListener, inject, Input, ViewEncapsulation} from '@angular/core';\nimport {BbRadioGroup} from '../radio-group/radio-group.component';\n\n@Component({\n selector: 'bb-radio-button',\n templateUrl: './radio-button.component.html',\n styleUrls: ['./radio-button.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n 'class': 'bb-radio-button',\n '[class.disabled]': 'disabled',\n '[tabindex]': 'disabled ? -1 : 0'\n }\n})\nexport class BbRadioButton<T> {\n\n // Dependencies.\n private readonly _radioGroup?: BbRadioGroup<T> = inject(BbRadioGroup, {optional: true});\n\n // Inputs.\n @Input() value: T | null = null;\n @Input({transform: booleanAttribute}) hideText: boolean = false;\n\n // Disabled.\n @Input({transform: booleanAttribute})\n set disabled(value: boolean) {\n this._disabled = value;\n }\n\n get disabled() {\n return this._radioGroup?.disabled || this._disabled;\n }\n\n private _disabled: boolean = false;\n\n @HostListener('click')\n onClick() {\n if (this.disabled || !this._radioGroup) {\n return;\n }\n this._radioGroup.select(this.value);\n }\n\n @HostListener('keydown.space')\n onSpacePressed() {\n return this.onClick();\n }\n\n @HostBinding('class.selected')\n get selected() {\n return this._radioGroup?.value === this.value;\n }\n\n}\n","<div class=\"bb-radio-button-indicator\"></div>\n@if (!hideText) {\n <span class=\"bb-radio-button-text\"><ng-content></ng-content></span>\n}\n\n","import {ChangeDetectionStrategy, Component, computed, inject, input, numberAttribute, ViewEncapsulation} from '@angular/core';\nimport {ELEMENTS_CONFIG, ElementsConfig, ElementsDisplayUnit} from '../elements.interfaces';\n\nexport function avatarColorAlgorithm(value: string) {\n if (value === null || value === undefined) {\n return null;\n }\n let hash = 5381;\n for (let index = 0; index < value.length; index++) {\n hash = (hash * 33) ^ value.charCodeAt(index);\n }\n const result = hash >>> 0;\n return {\n color: `hsl(${result % 360}, 75%, 20%)`,\n background: `hsl(${result % 360}, 45%, 85%)`\n };\n}\n\n@Component({\n selector: 'bb-avatar',\n templateUrl: './avatar.component.html',\n styleUrls: ['./avatar.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n 'class': 'bb-avatar',\n 'role': 'img',\n '[style.color]': 'color()',\n '[style.background-color]': 'backgroundColor()',\n '[style.width]': 'visualSize()',\n '[style.height]': 'visualSize()',\n '[style.min-width]': 'visualSize()',\n '[style.min-height]': 'visualSize()',\n '[style.font-size]': 'fontSize()'\n },\n imports: []\n})\nexport class BbAvatar {\n\n // Dependencies.\n private readonly _config?: ElementsConfig = inject(ELEMENTS_CONFIG, {optional: true});\n\n // Inputs.\n readonly size = input(2.5, {transform: numberAttribute});\n readonly unit = input<ElementsDisplayUnit>(null);\n readonly src = input<string>(null);\n readonly title = input.required<string>();\n\n // Computed.\n readonly color = computed(() => {\n const title = this.title();\n return this._config?.avatarColorAlgorithm?.(title)?.color\n ?? avatarColorAlgorithm(title)?.color\n ?? '#ffffff';\n });\n\n readonly backgroundColor = computed(() => {\n const title = this.title();\n return this._config?.avatarColorAlgorithm?.(title)?.background\n ?? avatarColorAlgorithm(title)?.background\n ?? '#424242';\n });\n\n readonly visualSize = computed(() => {\n const unit = this.unit() ?? this._config?.defaultDisplayUnit ?? 'rem';\n return `${this.size()}${unit}`;\n });\n\n readonly fontSize = computed(() => {\n const unit = this.unit() ?? this._config?.defaultDisplayUnit ?? 'rem';\n return `${this.size() * 0.42}${unit}`;\n });\n\n readonly initials = computed(() => {\n const title = this.title();\n const names = (title ?? '').split(' ');\n const initials = names\n .map(name => name.charAt(0).toUpperCase())\n .filter(name => /^[a-zA-Z]+$/.test(name));\n\n // Check if there are any initials.\n if (initials?.length <= 0) {\n return null;\n }\n\n // Get the first and last initials.\n if (initials?.length > 1) {\n return `${initials?.[0]}${initials?.[initials?.length - 1]}`;\n }\n\n // Get only the first initial.\n return initials?.[0];\n });\n\n}\n","@if (src(); as src) {\n <img [src]=\"src\"\n [alt]=\"initials()\"\n class=\"bb-avatar-image\">\n} @else {\n {{ initials() }}\n}\n","import {ELEMENTS_CONFIG} from './elements.interfaces';\nimport {inject} from '@angular/core';\n\nexport function injectAcceptString() {\n const config = inject(ELEMENTS_CONFIG, {optional: true});\n const allowedFileTypes = config?.allowedFileTypes ?? [];\n return allowedFileTypes?.length <= 0\n ? null\n : allowedFileTypes.join(',');\n}\n\nexport function injectMaxFileSize() {\n const config = inject(ELEMENTS_CONFIG, {optional: true});\n return config?.maxFileSize ?? Number.MAX_SAFE_INTEGER;\n}\n\nexport function injectMaxTotalFileSize() {\n const config = inject(ELEMENTS_CONFIG, {optional: true});\n return config?.maxTotalFileSize ?? Number.MAX_SAFE_INTEGER;\n}\n","import {\n booleanAttribute,\n ChangeDetectionStrategy,\n Component,\n computed,\n ElementRef,\n EventEmitter,\n forwardRef,\n inject,\n input,\n model,\n numberAttribute,\n Output, signal,\n TemplateRef,\n viewChild,\n ViewEncapsulation\n} from '@angular/core';\nimport {Files, formatFileSize, isFileLike, isValidFileSize, isValidFileType} from '@bravobit/bb-foundation';\nimport {ControlValueAccessor, FormControl, NG_VALIDATORS, NG_VALUE_ACCESSOR} from '@angular/forms';\nimport {BbLocalize, BbLocalizeTemplate, BbLocalizeString} from '@bravobit/bb-foundation/localize';\nimport {injectAcceptString, injectMaxFileSize, injectMaxTotalFileSize} from '../elements.inject';\nimport {BbFormError} from '../form-error/form-error.component';\nimport {BbFileDrop} from '../directives/file-drop.directive';\nimport {BbTemplate} from '@bravobit/bb-foundation/utils';\nimport {BbButton} from '../button/button.component';\n\nlet nextUniqueId = 0;\n\nexport interface BbMultiFileControlItem {\n id: number;\n label: string;\n url: string;\n description?: string;\n}\n\nexport type BbMultiFileControlOpenEvent =\n { type: 'item', item: BbMultiFileControlItem }\n | { type: 'file', file: File };\n\n@Component({\n selector: 'bb-multi-file-control',\n templateUrl: './multi-file-control.component.html',\n styleUrls: ['./multi-file-control.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n providers: [\n {provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => BbMultiFileControl), multi: true},\n {provide: NG_VALIDATORS, useExisting: BbMultiFileControl, multi: true}\n ],\n host: {\n 'class': 'bb-multi-file-control',\n '[class.required]': 'required()',\n '[class.disabled]': 'disabled()',\n '[class.grouped]': 'grouped()',\n '[class.error]': 'error()',\n '[class.single]': 'appearance() === \\'single\\''\n },\n imports: [BbFormError, BbTemplate, BbButton, BbLocalize, BbLocalizeTemplate, BbLocalizeString, BbFileDrop]\n})\nexport class BbMultiFileControl implements ControlValueAccessor {\n\n // Dependencies.\n private readonly _files: Files = inject(Files);\n\n // Readonly data.\n readonly labelId: string = `bb-multi-file-control-${nextUniqueId++}`;\n\n // Views.\n readonly fileInputRef = viewChild<ElementRef<HTMLInputElement>>('fileInput');\n\n // Inputs.\n readonly appearance = input<'multiple' | 'single'>('multiple');\n readonly label = input<string | TemplateRef<any>>();\n readonly hint = input<string | TemplateRef<any>>();\n readonly accept = input<string>(injectAcceptString());\n readonly maxFileSize = input(injectMaxFileSize(), {transform: numberAttribute});\n readonly maxTotalFileSize = input(injectMaxTotalFileSize(), {transform: numberAttribute});\n readonly grouped = input(false, {transform: booleanAttribute});\n readonly required = input(false, {transform: booleanAttribute});\n readonly hideErrors = input(false, {transform: booleanAttribute});\n readonly disabled = model<boolean>(false);\n readonly items = model<BbMultiFileControlItem[]>([]);\n\n // Outputs.\n @Output() delete = new EventEmitter<BbMultiFileControlItem>();\n @Output() open = new EventEmitter<BbMultiFileControlOpenEvent>();\n\n // State.\n readonly value = signal<File[]>([]);\n readonly error = signal<boolean>(false);\n\n // Computed.\n readonly showList = computed(() => this.value()?.length > 0 || this.items()?.length > 0);\n\n // Callbacks.\n onTouchedCallback: () => void = () => ({});\n onChangeCallback: (_: File[] | null) => void = () => ({});\n\n openItem(event: Event, item: BbMultiFileControlItem) {\n if (!this.open.observed) {\n return;\n }\n event.preventDefault();\n this.open.emit({type: 'item', item: item});\n }\n\n downloadFile(event: Event, file: File) {\n if (!this.open.observed) {\n return this._files.download(file, file?.name);\n }\n event.preventDefault();\n this.open.emit({type: 'file', file: file});\n }\n\n openFileDialog() {\n const element = this.fileInputRef()?.nativeElement as HTMLInputElement;\n element?.click();\n }\n\n onFileChange(event: Event) {\n const files: File[] = Array.from(event.target?.['files']);\n this.addFiles(files);\n this.fileInputRef().nativeElement.value = null;\n }\n\n deleteFile(index: number) {\n this.value.update(value => value?.filter((_, i) => i !== index) ?? []);\n this.onChangeCallback?.(this.value());\n }\n\n writeValue(value: File[] | null) {\n this.value.set(value ?? []);\n }\n\n registerOnChange(method: (_: File[] | null) => void) {\n this.onChangeCallback = method;\n }\n\n registerOnTouched(method: () => void) {\n this.onTouchedCallback = method;\n }\n\n setDisabledState(isDisabled: boolean) {\n this.disabled.set(isDisabled);\n }\n\n onErrorChange(error: { token: string, data?: any } | null) {\n this.error.set(!!error);\n }\n\n validate(control: FormControl<File[]>) {\n const value = control?.value ?? [];\n const errors = value.reduce((previous, current, index) => {\n if (isValidFileType(current, this.accept())) {\n return previous;\n }\n\n return {...previous, [index]: true};\n }, <Record<number, boolean>>{});\n\n if (Object.keys(errors)?.length > 0) {\n return {invalidFiles: errors};\n }\n\n for (const file of value) {\n if (!isValidFileSize(file, this.maxFileSize())) {\n return {maxFileSize: {maxSize: formatFileSize(this.maxFileSize())}};\n }\n }\n\n const totalSize = value.reduce((previous, current) => previous + (current?.size ?? 0), 0);\n if (totalSize > this.maxTotalFileSize()) {\n return {\n maxTotalFileSize: {\n max: formatFileSize(this.maxTotalFileSize()),\n current: formatFileSize(totalSize)\n }\n };\n }\n\n return null;\n }\n\n addFiles(files: File[]) {\n if (this.disabled()) {\n return;\n }\n\n const newFiles = this.appearance() === 'single' ? [files?.[0]] : files;\n const filteredFiles = newFiles.filter(file => !!file && isFileLike(file));\n this.value.update(value => ([...value, ...filteredFiles]));\n this.onChangeCallback?.(this.value());\n }\n\n}\n","<!-- The label of the input. -->\n@if (label(); as labelContent) {\n <label [for]=\"labelId\"\n class=\"bb-multi-file-control-label\">\n <ng-template [bbTemplate]=\"labelContent\">{{ labelContent }}</ng-template>\n </label>\n}\n\n<input #fileInput\n [id]=\"labelId\"\n [accept]=\"accept()\"\n [disabled]=\"disabled()\"\n [multiple]=\"appearance() === 'multiple'\"\n (change)=\"onFileChange($event)\"\n class=\"bb-multi-file-control-input\"\n type=\"file\"\n tabindex=\"-1\">\n\n<div [bbFileDropDisabled]=\"disabled()\"\n (bbFileDrop)=\"addFiles($event)\"\n class=\"bb-multi-file-control-container\">\n @if (showList()) {\n <ul class=\"bb-multi-file-control-list\">\n @for (item of items(); track item?.id) {\n <li class=\"bb-multi-file-control-item\">\n <i class=\"bb-multi-file-control-icon attach-horizontal\"></i>\n <a [href]=\"item?.url\"\n (click)=\"openItem($event, item)\"\n target=\"_blank\"\n rel=\"noopener\"\n class=\"bb-multi-file-control-item-content\">\n <span>{{ item?.label }}</span>\n @if (item?.description; as description) {\n <small>{{ description }}</small>\n }\n </a>\n\n @if (!disabled() && delete?.observed) {\n <button (click)=\"delete?.emit(item)\"\n type=\"button\"\n class=\"bb-multi-file-control-item-button\">\n <i class=\"bb-multi-file-control-icon clear\"></i>\n </button>\n }\n </li>\n }\n @for (file of value(); track $index) {\n <li class=\"bb-multi-file-control-item\">\n <i class=\"bb-multi-file-control-icon attach-horizontal\"></i>\n <button (click)=\"downloadFile($event, file)\"\n class=\"bb-multi-file-control-item-content\"\n type=\"button\">\n {{ file?.name }}\n </button>\n @if (!disabled()) {\n <button (click)=\"deleteFile($index)\"\n type=\"button\"\n class=\"bb-multi-file-control-item-button\">\n <i class=\"bb-multi-file-control-icon clear\"></i>\n </button>\n }\n </li>\n }\n </ul>\n } @else if (!disabled()) {\n <i class=\"bb-multi-file-control-icon attach-vertical\"></i>\n <p [bb-localize-string]=\"`multi-file-control.${appearance()}_choose_file_text` | bbLocalize\"\n class=\"bb-multi-file-control-empty\">\n <label *bbLocalizeTemplate=\"'label'\"\n [for]=\"labelId\">{{ `multi-file-control.${appearance()}_choose_file` | bbLocalize }}</label>\n </p>\n }\n @if (!disabled()) {\n <button (click)=\"openFileDialog()\"\n type=\"button\"\n class=\"primary small bb-multi-file-control-button\"\n bb-button>\n <i class=\"bb-multi-file-control-icon add\" suffix></i>\n {{ `multi-file-control.${appearance()}_choose_file` | bbLocalize }}\n </button>\n }\n</div>\n\n@if (!hideErrors()) {\n <bb-form-error (errorChange)=\"onErrorChange($event)\"></bb-form-error>\n}\n\n<!-- The file picker hint. -->\n@if (hint(); as hintContent) {\n <p class=\"bb-multi-file-control-hint\">\n <ng-template [bbTemplate]=\"hintContent\">{{ hintContent }}</ng-template>\n </p>\n}\n","import {\n booleanAttribute,\n ChangeDetectionStrategy,\n Component,\n ContentChild,\n ElementRef,\n EventEmitter,\n forwardRef,\n Input,\n numberAttribute,\n Output,\n TemplateRef,\n ViewChild,\n ViewEncapsulation\n} from '@angular/core';\nimport {ControlValueAccessor, FormControl, NG_VALIDATORS, NG_VALUE_ACCESSOR} from '@angular/forms';\nimport {formatFileSize, isValidFileSize, isValidFileType} from '@bravobit/bb-foundation';\nimport {injectAcceptString, injectMaxFileSize} from '../elements.inject';\nimport {BbFormError} from '../form-error/form-error.component';\nimport {BbFileDrop} from '../directives/file-drop.directive';\nimport {AsyncPipe, NgTemplateOutlet} from '@angular/common';\nimport {BbLocalize} from '@bravobit/bb-foundation/localize';\nimport {BbTemplate} from '@bravobit/bb-foundation/utils';\nimport {BbFileImage} from '../pipes/file-image.pipe';\nimport {BbFileSize} from '../pipes/file-size.pipe';\nimport {BehaviorSubject} from 'rxjs';\n\nlet nextUniqueId = 0;\n\n@Component({\n selector: 'bb-file-picker',\n templateUrl: './file-picker.component.html',\n styleUrls: ['./file-picker.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => BbFilePicker),\n multi: true\n },\n {\n provide: NG_VALIDATORS,\n useExisting: BbFilePicker,\n multi: true\n }\n ],\n host: {\n 'class': 'bb-file-picker',\n '[class.required]': 'required',\n '[class.disabled]': 'disabled',\n '[class.grouped]': 'grouped',\n '[class.error]': 'error'\n },\n imports: [BbTemplate, AsyncPipe, NgTemplateOutlet, BbLocalize, BbFormError, BbFileSize, BbFileImage, BbFileDrop]\n})\nexport class BbFilePicker implements ControlValueAccessor {\n\n // Readonly data.\n readonly labelId: string = `bb-file-picker-${nextUniqueId++}`;\n\n // Views.\n @ViewChild('fileInput', {static: true}) fileInput: ElementRef<HTMLInputElement>;\n @ContentChild('extra') extraTemplate: TemplateRef<any>;\n\n // Inputs.\n @Input() label: string | TemplateRef<any> | null = null;\n @Input() hint: string | TemplateRef<any> | null = null;\n @Input() accept: string = injectAcceptString();\n @Input({transform: numberAttribute}) maxFileSize: number = injectMaxFileSize();\n @Input({transform: booleanAttribute}) showImages: boolean = true;\n @Input({transform: booleanAttribute}) grouped: boolean = false;\n @Input({transform: booleanAttribute}) required: boolean = false;\n @Input({transform: booleanAttribute}) disabled: boolean = false;\n @Input({transform: booleanAttribute}) hideErrors: boolean = false;\n\n // State.\n error: boolean = false;\n value$ = new BehaviorSubject<{ file?: File }>({});\n\n // Callbacks.\n onTouchedCallback: () => void = () => ({});\n onChangeCallback: (_: File | null) => void = () => ({});\n\n @Input()\n get value() {\n const {file} = this.value$.getValue();\n return file;\n }\n\n @Output() valueChange = new EventEmitter<File | null>();\n\n set value(value: File | null) {\n this.value$.next({file: value});\n this.valueChange.emit(value);\n }\n\n onButtonPressed(file?: File) {\n if (file) {\n this.value = null;\n this.onChangeCallback(this.value);\n return;\n }\n\n return this.openFilePicker();\n }\n\n openFilePicker() {\n return this.fileInput\n && this.fileInput.nativeElement\n && this.fileInput.nativeElement.click\n && this.fileInput.nativeElement.click();\n }\n\n onFileChange(event: Event) {\n if (this.disabled) {\n return;\n }\n\n // Extract the file from the event.\n const files = this.getFilesFromEvent(event);\n this.saveFile(files);\n\n // Clear the file input.\n if (this.fileInput && this.fileInput.nativeElement) {\n this.fileInput.nativeElement.value = '';\n }\n }\n\n writeValue(value: File | null) {\n this.value = value;\n }\n\n registerOnChange(method: (_: File | null) => void) {\n this.onChangeCallback = method;\n }\n\n registerOnTouched(method: () => void) {\n this.onTouchedCallback = method;\n }\n\n setDisabledState(isDisabled: boolean) {\n this.disabled = isDisabled;\n }\n\n onErrorChange(error: { token: string, data?: any } | null) {\n this.error = !!error;\n }\n\n validate({value}: FormControl<File>) {\n if (value === null || value === undefined) {\n return null;\n }\n\n if (!isValidFileType(value, this.accept)) {\n return {invalidFileType: true};\n }\n\n if (!isValidFileSize(value, this.maxFileSize)) {\n return {maxFileSize: {maxSize: formatFileSize(this.maxFileSize)}};\n }\n\n return null;\n }\n\n saveFile(files: File[]) {\n const file = files?.[0] ?? null;\n if (!file || this.disabled) {\n return;\n }\n this.value = file;\n this.onChangeCallback(this.value);\n }\n\n private getFilesFromEvent(event: Event) {\n const element = event.target as HTMLInputElement;\n if (!element) {\n return null;\n }\n return Array.from(element.files);\n }\n\n}\n","<!-- The label of the input. -->\n@if (label; as labelContent) {\n <label [for]=\"labelId\"\n class=\"bb-file-picker-label\">\n <ng-template [bbTemplate]=\"labelContent\">{{ labelContent }}</ng-template>\n </label>\n}\n\n<!-- The input that can open the file picker. -->\n<input #fileInput\n [accept]=\"accept\"\n [disabled]=\"disabled\"\n (change)=\"onFileChange($event)\"\n class=\"bb-file-picker-input\"\n type=\"file\"\n tabindex=\"-1\">\n\n@if (value$ | async; as data) {\n <div [bbFileDropDisabled]=\"disabled\"\n (bbFileDrop)=\"saveFile($event)\"\n class=\"bb-file-picker-wrapper\">\n <!-- The button that accepts files. -->\n <div class=\"bb-file-picker-container\">\n <button [class.destructive]=\"!!data?.file\"\n [disabled]=\"disabled\"\n [id]=\"labelId\"\n (click)=\"onButtonPressed(data?.file)\"\n type=\"button\"\n class=\"bb-file-picker-button\">\n <ng-container *ngTemplateOutlet=\"data?.file ? closeIcon : uploadIcon\"></ng-container>\n {{ (data?.file ? 'file-picker.remove' : 'file-picker.choose') | bbLocalize }}\n </button>\n <div class=\"bb-file-picker-zone\">\n {{ 'file-picker.drop' | bbLocalize }}\n </div>\n </div>\n\n @if (!!extraTemplate) {\n <ng-container *ngTemplateOutlet=\"extraTemplate; context: {$implicit: data?.file}\"></ng-container>\n }\n\n @if (showImages) {\n @if (data?.file | bbFileImage | async; as image) {\n <div class=\"bb-file-picker-image-container\"\n animate.leave=\"leaving\">\n <div class=\"bb-file-picker-image-wrapper\">\n <div [style.padding-top.%]=\"image?.aspectRatio * 100\"\n [style.background-image]=\"image?.background\"\n class=\"bb-file-picker-image\">\n </div>\n </div>\n </div>\n }\n }\n\n <!-- Extra information of the file. -->\n <div [class.visible]=\"!!data?.file\"\n class=\"bb-file-picker-info\">\n @if (data?.file?.name; as name) {\n <span>{{ name }}</span>\n }\n @if (data?.file?.size; as size) {\n <span>{{ size | bbFileSize }}</span>\n }\n </div>\n </div>\n}\n\n@if (!hideErrors) {\n <bb-form-error (errorChange)=\"onErrorChange($event)\"></bb-form-error>\n}\n\n<!-- The file picker hint. -->\n@if (hint; as hintContent) {\n <p class=\"bb-file-picker-hint\">\n <ng-template [bbTemplate]=\"hintContent\">{{ hintContent }}</ng-template>\n </p>\n}\n\n<!-- Upload icon. -->\n<ng-template #uploadIcon>\n <svg xmlns=\"http://www.w3.org/2000/svg\"\n class=\"bb-file-picker-icon\"\n width=\"1.5rem\"\n height=\"1.5rem\"\n viewBox=\"0 0 24 24\">\n <path fill=\"currentColor\"\n d=\"M2 12.5C2 9.46 4.46 7 7.5 7H18c2.21 0 4 1.79 4 4s-1.79 4-4 4H9.5a2.5 2.5 0 010-5H17v2H9.41c-.55 0-.55 1 0 1H18c1.1 0 2-.9 2-2s-.9-2-2-2H7.5C5.57 9 4 10.57 4 12.5S5.57 16 7.5 16H17v2H7.5C4.46 18 2 15.54 2 12.5z\"></path>\n <path fill=\"none\" d=\"M0 0h24v24H0V0z\"></path>\n </svg>\n</ng-template>\n\n<!-- Close icon. -->\n<ng-template #closeIcon>\n <svg xmlns=\"http://www.w3.org/2000/svg\"\n class=\"bb-file-picker-icon\"\n width=\"1.5rem\"\n height=\"1.5rem\"\n viewBox=\"0 0 24 24\">\n <path fill=\"currentColor\"\n d=\"M19 6.41L17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z\"></path>\n <path d=\"M0 0h24v24H0z\" fill=\"none\"></path>\n </svg>\n</ng-template>\n","import {booleanAttribute, ChangeDetectionStrategy, Component, ElementRef, EventEmitter, forwardRef, Input, Output, ViewChild, ViewEncapsulation} from '@angular/core';\nimport {ControlValueAccessor, NG_VALUE_ACCESSOR} from '@angular/forms';\nimport {ImageConverter} from '@bravobit/bb-foundation';\nimport {BbButton} from '../button/button.component';\nimport {AsyncPipe} from '@angular/common';\nimport {BehaviorSubject} from 'rxjs';\nimport {map} from 'rxjs/operators';\n\n@Component({\n selector: 'bb-image-picker',\n templateUrl: './image-picker.component.html',\n styleUrls: ['./image-picker.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n 'class': 'bb-image-picker',\n '[class.disabled]': 'disabled',\n '[class.grouped]': 'grouped'\n },\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => BbImagePicker),\n multi: true\n }\n ],\n imports: [BbButton, AsyncPipe]\n})\nexport class BbImagePicker implements ControlValueAccessor {\n\n // Views.\n @ViewChild('fileInput', {static: true}) fileInput: ElementRef<HTMLInputElement>;\n\n // Inputs.\n @Input() label: string | null = null;\n @Input() placeholder: string | null = null;\n @Input() styleDimensions: { width: string, height: string } | null = null;\n @Input() cropDimensions: { width: number, height: number } | null = null;\n @Input() buttonClass: string | null = null;\n @Input({transform: booleanAttribute}) disabled: boolean = false;\n @Input({transform: booleanAttribute}) grouped: boolean = false;\n\n // Callbacks.\n onTouchedCallback: () => void = () => ({});\n onChangeCallback: (_: string | null) => void = () => ({});\n\n // Form.\n private _value$ = new BehaviorSubject<string | null>(null);\n\n constructor(private _converter: ImageConverter) {\n }\n\n @Input()\n get value() {\n return this._value$.getValue();\n }\n\n @Output() valueChange = new EventEmitter<string | null>();\n\n set value(value: string | null) {\n this._value$.next(value);\n this.valueChange.emit(value);\n }\n\n get image() {\n return this._value$.pipe(\n map(value => value || this.placeholder),\n map(value => value ? `url(${value})` : null)\n );\n }\n\n async onFileChange(event) {\n // Grab the file from the event.\n const file: File = event.target.files[0];\n\n // Check if the file exists.\n if (!file || this.disabled) {\n return;\n }\n\n try {\n this.value = await this._converter.toDataUri(file, this.cropDimensions);\n } catch {\n this.value = null;\n }\n\n this.onChangeCallback(this.value);\n\n if (this.fileInput && this.fileInput.nativeElement) {\n this.fileInput.nativeElement.value = '';\n }\n }\n\n openFilePicker() {\n if (this.disabled) {\n return;\n }\n\n // Execute a click on the file input.\n this.fileInput\n && this.fileInput.nativeElement\n && this.fileInput.nativeElement.click\n && this.fileInput.nativeElement.click();\n }\n\n writeValue(value: string | null) {\n this.value = value;\n }\n\n registerOnChange(method: (_: string | null) => void) {\n this.onChangeCallback = method;\n }\n\n registerOnTouched(method: () => void) {\n this.onTouchedCallback = method;\n }\n\n setDisabledState(isDisabled: boolean) {\n this.disabled = isDisabled;\n }\n\n}\n","<!-- The input that can open the file picker. -->\n<input #fileInput\n (change)=\"onFileChange($event)\"\n class=\"bb-image-picker-input\"\n type=\"file\"\n tabindex=\"-1\"\n accept=\"image/*\">\n\n<span [style.width]=\"styleDimensions?.width ?? '100%'\"\n [style.height]=\"styleDimensions?.height ?? '215px'\"\n [style.background-image]=\"image | async\"\n class=\"bb-image-input-image\"></span>\n\n@if (label; as labelText) {\n <button (click)=\"openFilePicker()\"\n bb-button\n class=\"bb-image-input-button {{ buttonClass }}\"\n type=\"button\">\n {{ labelText }}\n </button>\n}\n","import {\n booleanAttribute,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n EventEmitter,\n forwardRef,\n Inject,\n Input,\n OnDestroy,\n OnInit,\n Output,\n TemplateRef,\n ViewEncapsulation\n} from '@angular/core';\nimport {ControlValueAccessor, FormControl, FormGroup, NG_VALIDATORS, NG_VALUE_ACCESSOR, ReactiveFormsModule, Validators} from '@angular/forms';\nimport {BehaviorSubject, combineLatest, Observable, Subscription} from 'rxjs';\nimport {distinctUntilChanged, map, startWith, tap} from 'rxjs/operators';\nimport {BbFormControl} from '../form-control/form-control.component';\nimport {BbFormError} from '../form-error/form-error.component';\nimport {LOCALIZE_ID} from '@bravobit/bb-foundation/localize';\nimport {BbTemplate} from '@bravobit/bb-foundation/utils';\nimport {AsyncPipe, formatDate} from '@angular/common';\nimport {BbInput} from '../directives/input.directive';\n\n@Component({\n selector: 'bb-date-picker',\n templateUrl: './date-picker.component.html',\n styleUrls: ['./date-picker.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n providers: [\n {provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => BbDatePicker), multi: true},\n {provide: NG_VALIDATORS, useExisting: BbDatePicker, multi: true}\n ],\n host: {\n 'class': 'bb-date-picker',\n '[class.required]': 'required',\n '[class.readonly]': 'readonly',\n '[class.disabled]': 'disabled',\n '[class.grouped]': 'grouped',\n '[class.error]': 'error'\n },\n imports: [\n BbTemplate,\n AsyncPipe,\n ReactiveFormsModule,\n BbFormControl,\n BbInput,\n BbFormError\n ]\n})\nexport class BbDatePicker implements ControlValueAccessor, OnInit, OnDestroy {\n\n // Readonly data.\n readonly _yearRegex = /^(10|[1-9][0-9])\\d{2}$/; // Note: 1000 - 9999\n\n // Inputs.\n @Input() label: string | TemplateRef<any> | null = null;\n @Input() hint: string | TemplateRef<any> | null = null;\n @Input() dayPlaceholder: string | null = 'dd';\n @Input() monthPlaceholder: string | null = 'mm';\n @Input() yearPlaceholder: string | null = 'yyyy';\n @Input({transform: booleanAttribute}) required: boolean = false;\n @Input({transform: booleanAttribute}) grouped: boolean = false;\n @Input({transform: booleanAttribute}) readonly: boolean = false;\n @Input({transform: booleanAttribute}) hideErrors: boolean = false;\n\n @Input({transform: booleanAttribute})\n set disabled(value: boolean) {\n this._disabled = value;\n this._disabled ? this.form?.disable() : this.form?.enable();\n this._changeDetectorRef.markForCheck();\n }\n\n get disabled() {\n return this._disabled;\n }\n\n @Input()\n set years(value: [string | number, string | number] | null) {\n this.parseYears(value);\n }\n\n // Forms.\n form: FormGroup;\n\n // Data.\n data$: Observable<{\n days?: { label: string, value: number }[],\n months?: { label: string, value: number }[],\n years?: number[] | null\n }>;\n years$ = new BehaviorSubject<number[] | null>(null);\n\n get value() {\n return this.formToDateString(this.form?.value);\n }\n\n @Input()\n set value(value: string | null) {\n this.parseDateStringInForm(value);\n this.valueChange.emit(this.value);\n }\n\n @Output() valueChange = new EventEmitter<string | null>();\n\n // State.\n error: boolean = false;\n private _disabled: boolean = false;\n\n // Callbacks.\n onTouchedCallback: () => void = () => ({});\n onChangeCallback: (_: string | null) => void = () => ({});\n\n // Subscriptions.\n private _subscription = new Subscription();\n\n constructor(private _changeDetectorRef: ChangeDetectorRef,\n @Inject(LOCALIZE_ID) private _localizeId: Observable<string>) {\n }\n\n ngOnInit() {\n this.composeForm();\n this.getData();\n this.handleChanges();\n }\n\n ngOnDestroy() {\n this._subscription?.unsubscribe();\n }\n\n writeValue(value: string | null) {\n this.parseDateStringInForm(value);\n }\n\n registerOnChange(method: (_: string | null) => void) {\n this.onChangeCallback = method;\n }\n\n registerOnTouched(method: () => void) {\n this.onTouchedCallback = method;\n }\n\n setDisabledState(isDisabled: boolean) {\n this.disabled = isDisabled;\n }\n\n onErrorChange(error: { token: string, data?: any } | null) {\n this.error = !!error;\n }\n\n validate({value}: FormControl<string>) {\n if (value === null || value === undefined) {\n return null;\n }\n\n const data = this.parseDateString(value);\n const date = new Date(data?.year, data?.month - 1, data?.day);\n\n const maxDays = this.getDaysInMonth(data?.month, `${data?.year}`);\n\n const isInvalidDate = date.toString() === 'Invalid Date';\n const exceededMaxDays = data?.day > maxDays;\n\n return (isInvalidDate || exceededMaxDays) && {\n invalidDate: true\n };\n }\n\n private handleChanges() {\n const dateOrNull$ = this.form.valueChanges.pipe(\n map(value => this.formToDateString(value)),\n distinctUntilChanged()\n );\n\n const subscription = dateOrNull$.subscribe(() => {\n this.valueChange.emit(this.value);\n this.onChangeCallback(this.value);\n });\n this._subscription.add(subscription);\n }\n\n private getData() {\n const years$ = this.years$.asObservable();\n const months$ = this.getMonthData();\n const days$ = this.getDayData();\n\n this.data$ = combineLatest([years$, months$, days$]).pipe(\n map(([years, months, days]) => ({years, months, days})),\n tap(data => this.verifyListData(data?.days?.length, data?.years))\n );\n }\n\n private verifyListData(maxDays: number, years: number[] | null) {\n const dayControl = this.form.get('day');\n if (dayControl?.value !== null && dayControl?.value > maxDays) {\n dayControl.patchValue(maxDays);\n }\n\n const yearControl = this.form.get('year');\n if (years !== null && yearControl?.value !== null && this._yearRegex.test(yearControl?.value)) {\n const selectedYear = Number(yearControl?.value);\n\n const firstYear = Math.min(...years);\n const lastYear = Math.max(...years);\n\n if (selectedYear < firstYear || selectedYear > lastYear) {\n Promise.resolve().then(() => yearControl.patchValue(null));\n }\n }\n }\n\n private getDayData() {\n const count$ = this.form.valueChanges.pipe(\n startWith(this.form?.value as object),\n map(({month, year}) => this.getDaysInMonth(month, year)),\n distinctUntilChanged()\n );\n\n return count$.pipe(\n map(count => Array(count).fill(0).map((_, index) => ({\n label: `${index + 1}`,\n value: index + 1\n })))\n );\n }\n\n private getMonthData() {\n return this._localizeId.pipe(\n map(locale => {\n return Array(12).fill(0).map((_, month) => {\n const date = new Date(2000, month, 1);\n const label = formatDate(date, 'LLLL', locale);\n return {label, value: month + 1};\n });\n })\n );\n }\n\n private composeForm() {\n const {required, pattern, minLength, maxLength} = Validators;\n const yearPattern = pattern(this._yearRegex);\n const yearValidators = [required, yearPattern, minLength(4), maxLength(4)];\n\n this.form = new FormGroup({\n day: new FormControl<number>(null, required),\n month: new FormControl<number>(null, required),\n year: new FormControl<number>(null, yearValidators)\n });\n\n if (this.disabled) {\n this.form?.disable();\n }\n }\n\n private parseDateStringInForm(value: string | null) {\n // If the date string was not a valid format, reset the form.\n if (!this.isValidDateString(value)) {\n if (value !== null) {\n this.form?.reset({year: null, month: null, day: null}, {emitEvent: false});\n }\n return;\n }\n\n // Parse the date string and save in the form.\n const data = this.parseDateString(value);\n const year = data?.year !== null && data?.year !== undefined\n ? this.padString(`${data?.year}`, 4, '0')\n : null;\n const formData = {...(data ?? {}), year};\n\n this.form?.patchValue(formData, {emitEvent: false});\n }\n\n private parseDateString(value: string) {\n if (!this.isValidDateString(value)) {\n return null;\n }\n\n // Parse the date string.\n const [year, month, day] = value?.split('-');\n\n return {\n day: day ? parseInt(day, 10) : null,\n month: month ? parseInt(month, 10) : null,\n year: year ? parseInt(year, 10) : null\n };\n }\n\n private parseYears(values: [string | number, string | number] | null) {\n if (!values) {\n return this.years$.next(null);\n }\n\n // Parse the values to years (in numbers).\n const [first, last] = values;\n const firstYear = this.parseYearFormat(first);\n const lastYear = this.parseYearFormat(last);\n\n // Check cases in where we cannot parse.\n if (firstYear === null || lastYear === null) {\n return this.years$.next(null);\n }\n\n const difference = firstYear - lastYear;\n const absoluteDifference = Math.abs(difference) + 1;\n\n // Create an array with years.\n const years = Array(absoluteDifference)\n .fill(0)\n .map((_, index) => difference < 0 ? (firstYear + index) : (firstYear - index));\n\n // Validate we have one or more years.\n if (years?.length <= 0) {\n return this.years$.next(null);\n }\n\n // Push the years.\n return this.years$.next(years);\n }\n\n private formToDateString(data: { year: number, month: number, day: number }) {\n if (this.form?.invalid) {\n return null;\n }\n\n if (data === null || data === undefined) {\n return null;\n }\n\n const {year, month, day} = data;\n const prefixedMonth = this.padString(`${month}`, 2, '0');\n const prefixedDay = this.padString(`${day}`, 2, '0');\n\n return [year, prefixedMonth, prefixedDay].join('-');\n }\n\n private parseYearFormat = (value: string | number) => {\n // Transform the value to a definitive string.\n const yearString = `${value}`;\n const currentFullYear = new Date().getFullYear();\n\n // Handle default \"current\" syntax.\n if (yearString === 'current') {\n return currentFullYear;\n }\n\n // Handle \"current + {amount}\" syntax.\n if (/^current\\s?\\+\\s?\\d+$/.test(yearString)) {\n const amount = Number(yearString?.split('+')?.[1]?.trim()) ?? 0;\n return currentFullYear + amount;\n }\n\n // Handle \"current - {amount}\" syntax.\n if (/^current\\s?-\\s?\\d+$/.test(yearString)) {\n const amount = Number(yearString?.split('-')?.[1]?.trim()) ?? 0;\n return currentFullYear - amount;\n }\n\n // Handling the default number case.\n if (/^[0-9]{4}$/.test(yearString)) {\n return Number(yearString);\n }\n\n // We could not parse it.\n return null;\n };\n\n private getDaysInMonth = (month: number | null = null, year: string | null = null) => {\n if (this.form?.invalid || month === null || year === null) {\n return 31;\n }\n\n const parsedYear = parseInt(year, 10);\n return new Date(parsedYear, month, 0).getDate();\n };\n\n private isValidDateString = (value: unknown) => {\n return typeof value === 'string' && /^[0-9]{4}-[0-9]{2}-[0-9]{2}$/.test(value);\n };\n\n private padString = (value: string, maxLength: number, fillString: string = '0') => {\n const count = maxLength - value.length;\n for (let index = 0; index < count; index++) {\n value = `${fillString}${value}`;\n }\n\n return value;\n };\n\n}\n","<!-- Label of the date picker. -->\n@if (label; as labelContent) {\n <label class=\"bb-date-picker-label\">\n <ng-template [bbTemplate]=\"labelContent\">{{ labelContent }}</ng-template>\n </label>\n}\n\n@if (data$ | async; as data) {\n <!-- The form containing the year/month/day fields. -->\n <div [formGroup]=\"form\"\n class=\"bb-date-picker-container\">\n <div class=\"bb-date-picker-item\">\n <bb-form-control hideErrors>\n <select [class.has-value]=\"!!form?.get('day')?.value\"\n bbInput\n autocomplete=\"off\"\n formControlName=\"day\">\n <option [ngValue]=\"null\">{{ dayPlaceholder }}</option>\n @for (day of data?.days; track day?.value) {\n <option [value]=\"day?.value\">{{ day?.label }}</option>\n }\n </select>\n </bb-form-control>\n </div>\n <div class=\"bb-date-picker-item\">\n <bb-form-control hideErrors>\n <select [class.has-value]=\"!!form?.get('month')?.value\"\n bbInput\n autocomplete=\"off\"\n formControlName=\"month\">\n <option [ngValue]=\"null\">{{ monthPlaceholder }}</option>\n @for (month of data?.months; track month?.value) {\n <option [value]=\"month?.value\">{{ month?.label }}</option>\n }\n </select>\n </bb-form-control>\n </div>\n <div class=\"bb-date-picker-item\">\n <bb-form-control hideErrors>\n @if (data?.years?.length > 0) {\n <select [class.has-value]=\"!!form?.get('year')?.value\"\n bbInput\n autocomplete=\"off\"\n formControlName=\"year\">\n <option [ngValue]=\"null\">{{ yearPlaceholder }}</option>\n @for (year of data?.years; track year) {\n <option [value]=\"year\">{{ year }}</option>\n }\n </select>\n } @else {\n <input [placeholder]=\"yearPlaceholder\"\n bbInput\n type=\"text\"\n inputmode=\"numeric\"\n minlength=\"4\"\n maxlength=\"4\"\n pattern=\"^[0-9]{4}$\"\n formControlName=\"year\"\n autocomplete=\"off\">\n }\n </bb-form-control>\n </div>\n </div>\n}\n\n<!-- The date picker error. -->\n@if (!hideErrors) {\n <bb-form-error (errorChange)=\"onErrorChange($event)\"></bb-form-error>\n}\n<!-- The date picker hint. -->\n@if (hint; as hintContent) {\n <p class=\"bb-date-picker-hint\">\n <ng-template [bbTemplate]=\"hintContent\">{{ hintContent }}</ng-template>\n </p>\n}\n","import {booleanAttribute, ChangeDetectionStrategy, ChangeDetectorRef, Component, EventEmitter, forwardRef, inject, Input, numberAttribute, Output, TemplateRef, ViewEncapsulation} from '@angular/core';\nimport {ControlValueAccessor, NG_VALUE_ACCESSOR} from '@angular/forms';\nimport {BbImageUpload} from '../directives/image-upload.directive';\nimport {TooltipDirective} from '@bravobit/bb-foundation/tooltip';\nimport {BbFormError} from '../form-error/form-error.component';\nimport {BbFileDrop} from '../directives/file-drop.directive';\nimport {BbLocalize} from '@bravobit/bb-foundation/localize';\nimport {BbFileDataUrl} from '../pipes/file-data-url.pipe';\nimport {BbTemplate} from '@bravobit/bb-foundation/utils';\nimport {BbButton} from '../button/button.component';\nimport {AsyncPipe} from '@angular/common';\n\nlet nextUniqueId = 0;\n\n@Component({\n selector: 'bb-image-control',\n templateUrl: './image-control.component.html',\n styleUrls: ['./image-control.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n providers: [\n {provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => BbImageControl), multi: true}\n ],\n host: {\n 'class': 'bb-image-control',\n '[class.disabled]': 'disabled',\n '[class.required]': 'required',\n '[class.grouped]': 'grouped',\n '[class.error]': 'error'\n },\n imports: [BbButton, AsyncPipe, BbFileDataUrl, BbTemplate, BbImageUpload, BbLocalize, BbFileDrop, TooltipDirective, BbFormError]\n})\nexport class BbImageControl implements ControlValueAccessor {\n\n // Dependencies.\n private readonly _changeDetectorRef: ChangeDetectorRef = inject(ChangeDetectorRef);\n\n // Readonly data.\n readonly labelId = `bb-image-control-${nextUniqueId++}`;\n\n // Inputs.\n @Input() label: string | TemplateRef<any> | null = null;\n @Input() hint: string | TemplateRef<any> | null = null;\n @Input() buttonLabel: string | null = null;\n @Input() imageUrl: string | null = null;\n @Input() mode: 'aspect-fit' | 'aspect-fill' = 'aspect-fit';\n @Input() type: 'png' | 'jpg' = 'png';\n @Input({transform: numberAttribute}) cropWidth: number = 320;\n @Input({transform: numberAttribute}) visualMaxWidth: number | null = null;\n @Input({transform: numberAttribute}) aspectRatio: number = 1;\n @Input({transform: booleanAttribute}) grouped: boolean = false;\n @Input({transform: booleanAttribute}) required: boolean = false;\n @Input({transform: booleanAttribute}) disabled: boolean = false;\n @Input({transform: booleanAttribute}) hideErrors: boolean = false;\n\n // Outputs.\n @Output() delete = new EventEmitter<void>();\n\n // State.\n value: File | null = null;\n error: boolean = false;\n\n // Callbacks.\n onTouchedCallback: () => void = () => ({});\n onChangeCallback: (_: File | null) => void = () => ({});\n\n onFile(file: File) {\n if (this.disabled || !file || !['image/png', 'image/jpeg'].includes(file?.type)) {\n return;\n }\n\n this.value = file;\n this._changeDetectorRef.markForCheck();\n this.onChangeCallback?.(this.value);\n }\n\n async onDelete() {\n if (this.disabled) {\n return;\n }\n\n if (this.value) {\n this.value = null;\n this._changeDetectorRef.markForCheck();\n return this.onChangeCallback?.(this.value);\n }\n\n return this.delete?.emit();\n }\n\n writeValue(value: File | null) {\n this.value = value;\n this._changeDetectorRef.markForCheck();\n }\n\n registerOnChange(method: (_: File | null) => void) {\n this.onChangeCallback = method;\n }\n\n registerOnTouched(method: () => void) {\n this.onTouchedCallback = method;\n }\n\n setDisabledState(isDisabled: boolean) {\n this.disabled = isDisabled;\n this._changeDetectorRef.markForCheck();\n }\n\n onErrorChange(error: { token: string, data?: any } | null) {\n this.error = !!error;\n }\n\n}\n","<!-- Label of the form control. -->\n@if (label; as labelContent) {\n <label [attr.for]=\"labelId\"\n class=\"bb-image-control-label\">\n <ng-template [bbTemplate]=\"labelContent\">{{ labelContent }}</ng-template>\n </label>\n}\n\n<div [style.aspect-ratio]=\"1 / aspectRatio\"\n [style.max-width.px]=\"visualMaxWidth ?? cropWidth\"\n [bbFileDropDisabled]=\"disabled\"\n (bbFileDrop)=\"onFile($event?.[0])\"\n class=\"bb-image-control-image\">\n @if ((value | bbFileDataUrl | async) || imageUrl; as dataUri) {\n <div [style.background-image]=\"'url(' + dataUri + ')'\"></div>\n }\n</div>\n\n@if (!hideErrors) {\n <bb-form-error (errorChange)=\"onErrorChange($event)\"></bb-form-error>\n}\n\n@if (hint; as hintContent) {\n <p class=\"bb-image-control-hint\">\n <ng-template [bbTemplate]=\"hintContent\">{{ hintContent }}</ng-template>\n </p>\n}\n\n@if (!disabled) {\n\n <div class=\"bb-image-control-button\">\n <button [bbImageUploadWidth]=\"cropWidth\"\n [bbImageUploadHeight]=\"cropWidth * aspectRatio\"\n [disabled]=\"disabled\"\n [bbImageUploadMode]=\"mode\"\n [bbImageUploadType]=\"type\"\n (onFile)=\"onFile($event)\"\n bbImageUpload\n type=\"button\"\n class=\"secondary small\"\n bb-button>\n {{ buttonLabel ?? ('image-control.button_label' | bbLocalize) }}\n <ng-content ngProjectAs=\"[suffix]\"\n select=\"[suffix]\"></ng-content>\n </button>\n\n @if (value || (imageUrl && delete?.observed)) {\n <button (click)=\"onDelete()\"\n type=\"button\"\n class=\"bb-image-control-link\">\n {{ 'image-control.delete_label' | bbLocalize }}\n </button>\n }\n </div>\n}\n","import {\n booleanAttribute,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef,\n EventEmitter,\n forwardRef, inject,\n Input,\n numberAttribute,\n OnDestroy,\n OnInit,\n Output,\n TemplateRef,\n ViewChild,\n ViewEncapsulation\n} from '@angular/core';\nimport {ControlValueAccessor, FormControl, NG_VALIDATORS, NG_VALUE_ACCESSOR, ReactiveFormsModule, Validator} from '@angular/forms';\nimport {BbFormError} from '../form-error/form-error.component';\nimport {getControlValue} from '@bravobit/bb-foundation/rxjs';\nimport {BbTemplate} from '@bravobit/bb-foundation/utils';\nimport {distinctUntilChanged, map} from 'rxjs/operators';\nimport {Platform} from '@angular/cdk/platform';\nimport {Observable, Subscription} from 'rxjs';\nimport {AsyncPipe} from '@angular/common';\n\n@Component({\n selector: 'bb-pincode-control',\n templateUrl: './pincode-control.component.html',\n styleUrls: ['./pincode-control.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n providers: [\n {provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => BbPincodeControl), multi: true},\n {provide: NG_VALIDATORS, useExisting: BbPincodeControl, multi: true}\n ],\n host: {\n 'class': 'bb-pincode-control',\n '[class.required]': 'required',\n '[class.readonly]': 'readonly',\n '[class.grouped]': 'grouped',\n '[class.error]': 'error'\n },\n imports: [ReactiveFormsModule, BbTemplate, BbFormError, AsyncPipe]\n})\nexport class BbPincodeControl implements OnInit, OnDestroy, ControlValueAccessor, Validator {\n\n // Dependencies.\n private readonly _platform: Platform = inject(Platform);\n private readonly _changeDetectorRef: ChangeDetectorRef = inject(ChangeDetectorRef);\n\n // Views.\n @ViewChild('htmlInputElement', {static: true}) htmlInputElementRef: ElementRef<HTMLInputElement>;\n\n // Inputs.\n @Input() label: string | TemplateRef<any> | null = null;\n @Input() hint: string | TemplateRef<any> | null = null;\n @Input() placeholder: string | null = null;\n @Input({transform: booleanAttribute}) autoFocus: boolean = false;\n @Input({transform: booleanAttribute}) required: boolean = false;\n @Input({transform: booleanAttribute}) readonly: boolean = false;\n @Input({transform: booleanAttribute}) grouped: boolean = false;\n @Input({transform: numberAttribute}) digits: number = 6;\n\n @Input()\n get value() {\n return this.control?.value;\n }\n\n @Output() valueChange = new EventEmitter<string | null>();\n\n set value(value: string | null) {\n this.control?.setValue(value);\n this.valueChange.emit(value);\n }\n\n // Data.\n data$: Observable<{\n items?: { index: number, value: string, active: boolean }[]\n }>;\n\n // State.\n control = new FormControl<string>(null);\n error: boolean = false;\n\n // Callbacks.\n onTouchedCallback: () => void = () => ({});\n onChangeCallback: (_: string | null) => void = () => ({});\n\n // Subscriptions.\n private _subscription = new Subscription();\n\n ngOnInit() {\n this.setData();\n this.handleValueChanges();\n this.handleAutoFocus();\n }\n\n ngOnDestroy() {\n this._subscription?.unsubscribe();\n }\n\n writeValue(value: string | null) {\n this.value = value;\n }\n\n registerOnChange(method: (_: string | null) => void) {\n this.onChangeCallback = method;\n }\n\n registerOnTouched(method: () => void) {\n this.onTouchedCallback = method;\n }\n\n setDisabledState(isDisabled: boolean) {\n isDisabled\n ? this.control?.disable()\n : this.control?.enable();\n this._changeDetectorRef.markForCheck();\n }\n\n onErrorChange(error: { token: string, data?: any } | null) {\n this.error = !!error;\n }\n\n validate(control: FormControl) {\n const value = control?.value;\n if (value === null || value === undefined) {\n return null;\n }\n\n if (value?.length > this.digits) {\n return {\n maxlength: {\n actualLength: value?.length ?? 0,\n requiredLength: this.digits ?? 0\n }\n };\n }\n\n if (value?.length < this.digits) {\n return {\n minlength: {\n actualLength: value?.length ?? 0,\n requiredLength: this.digits ?? 0\n }\n };\n }\n\n return null;\n }\n\n focusEnd() {\n const input = this.htmlInputElementRef?.nativeElement;\n if (input === null || input === undefined) {\n return;\n }\n const length = input?.value?.length ?? 0;\n input?.focus();\n input.setSelectionRange(length, length);\n }\n\n private setData() {\n this.data$ = getControlValue<string>(this.control).pipe(\n map(value => value ?? ''),\n map(value => {\n const items = Array(this.digits)\n .fill(0)\n .map((_, index, array) => ({\n index: index,\n value: value?.[index] ?? '',\n active: Math.min(array?.length - 1, value?.length) === index\n }));\n return {items};\n })\n );\n }\n\n private handleValueChanges() {\n const subscription = this.control.valueChanges.pipe(\n distinctUntilChanged()\n ).subscribe(() => {\n this.valueChange.emit(this.value);\n this.onChangeCallback(this.value);\n });\n this._subscription.add(subscription);\n }\n\n private handleAutoFocus() {\n if (!this.autoFocus || !this._platform.isBrowser) {\n return;\n }\n setTimeout(() => this.focusEnd(), 0);\n }\n\n}\n","<!-- The label of the input. -->\n@if (label; as labelContent) {\n <label class=\"bb-pincode-control-label\">\n <ng-template [bbTemplate]=\"labelContent\">{{ labelContent }}</ng-template>\n </label>\n}\n\n<input #htmlInputElement\n [formControl]=\"control\"\n [minlength]=\"digits\"\n [maxlength]=\"digits\"\n [readonly]=\"readonly\"\n inputmode=\"numeric\"\n tabindex=\"-1\"\n autocomplete=\"off\"\n class=\"bb-pincode-control-element\"\n type=\"text\">\n\n@if (data$ | async; as data) {\n <div class=\"bb-pincode-control-container\">\n @for (item of data?.items; track item?.index) {\n <div [class.active]=\"item?.active\"\n [class.has-value]=\"!!item?.value\"\n [attr.data-placeholder]=\"placeholder\"\n (click)=\"focusEnd()\"\n class=\"bb-pincode-control-cell\">\n {{ item?.value }}\n </div>\n }\n </div>\n}\n\n<bb-form-error (errorChange)=\"onErrorChange($event)\"></bb-form-error>\n\n<!-- The file picker hint. -->\n@if (hint; as hintContent) {\n <p class=\"bb-pincode-control-hint\">\n <ng-template [bbTemplate]=\"hintContent\">{{ hintContent }}</ng-template>\n </p>\n}\n","import {ELEMENTS_CONFIG, ELEMENTS_ERRORS, ELEMENTS_ICONS, ElementsConfig} from './elements.interfaces';\nimport {EnvironmentProviders, makeEnvironmentProviders, Provider} from '@angular/core';\n\nexport function provideElementsConfig(config?: ElementsConfig): EnvironmentProviders {\n const providers: Provider[] = [\n {provide: ELEMENTS_CONFIG, useValue: config},\n {\n provide: ELEMENTS_ERRORS,\n multi: true,\n useValue: {\n unknown: () => 'form-control-errors.unknown',\n required: () => 'form-control-errors.required',\n pattern: () => 'form-control-errors.pattern',\n email: () => 'form-control-errors.email',\n emailTaken: () => 'form-control-errors.emailTaken',\n passwordMatch: () => 'form-control-errors.passwordMatch',\n confirm: () => 'form-control-errors.confirm',\n fullNumber: () => 'form-control-errors.fullNumber',\n min: ({min}) => ({token: 'form-control-errors.min', data: {min}}),\n max: ({max}) => ({token: 'form-control-errors.max', data: {max}}),\n maxFileSize: ({maxSize}) => ({token: 'form-control-errors.maxFileSize', data: {maxSize}}),\n maxTotalFileSize: ({max, current}) => ({token: 'form-control-errors.maxTotalFileSize', data: {max, current}}),\n minDate: ({date}) => ({token: 'form-control-errors.minDate', data: {date}}),\n maxDate: ({date}) => ({token: 'form-control-errors.maxDate', data: {date}}),\n invalidDate: () => 'form-control-errors.invalidDate',\n invalidFileType: () => 'form-control-errors.invalidFileType',\n invalidFiles: () => 'form-control-errors.invalidFiles',\n minlength: ({requiredLength, actualLength}) => ({\n token: 'form-control-errors.minlength',\n data: {requiredLength, actualLength}\n }),\n maxlength: ({requiredLength, actualLength}) => ({\n token: 'form-control-errors.maxlength',\n data: {requiredLength, actualLength}\n })\n }\n }\n ];\n\n const useMaterialDesignIcons = config?.useMaterialDesignIcons ?? true;\n if (useMaterialDesignIcons) {\n providers.push({\n provide: ELEMENTS_ICONS,\n multi: true,\n useValue: {namespace: 'material', className: 'material-icons', uses: 'content', type: 'font'}\n });\n }\n\n const iconFonts = config?.iconFonts ?? [];\n for (const font of iconFonts) {\n providers.push({provide: ELEMENTS_ICONS, multi: true, useValue: font});\n }\n\n if (config?.errors) {\n providers.push({provide: ELEMENTS_ERRORS, multi: true, useValue: config?.errors});\n }\n\n return makeEnvironmentProviders(providers);\n}\n","import {BbMultiFileControl} from './multi-file-control/multi-file-control.component';\nimport {BbExtraErrorControls} from './directives/extra-error-controls.directive';\nimport {BbPincodeControl} from './pincode-control/pincode-control.component';\nimport {BbCheckboxGroup} from './checkbox-group/checkbox-group.component';\nimport {ColorPickerDirective} from './directives/color-picker.directive';\nimport {BbImageControl} from './image-control/image-control.component';\nimport {BbFormSubmitter} from './directives/form-submitter.directive';\nimport {BbImagePicker} from './image-picker/image-picker.component';\nimport {BbFormControl} from './form-control/form-control.component';\nimport {BbColorSlider} from './color-slider/color-slider.component';\nimport {BbColorPicker} from './color-picker/color-picker.component';\nimport {BbRadioButton} from './radio-button/radio-button.component';\nimport {BbImageUpload} from './directives/image-upload.directive';\nimport {BbFilePicker} from './file-picker/file-picker.component';\nimport {BbDatePicker} from './date-picker/date-picker.component';\nimport {BbRadioGroup} from './radio-group/radio-group.component';\nimport {BbFormSubmit} from './directives/form-submit.directive';\nimport {BbFormGroup} from './form-group/form-group.component';\nimport {BbFormError} from './form-error/form-error.component';\nimport {BbAnchor, BbButton} from './button/button.component';\nimport {ModuleWithProviders, NgModule} from '@angular/core';\nimport {BbFileDrop} from './directives/file-drop.directive';\nimport {BbRelativeTime} from './pipes/relative-time.pipe';\nimport {BbCheckbox} from './checkbox/checkbox.component';\nimport {provideElementsConfig} from './elements.config';\nimport {BbSpinner} from './spinner/spinner.component';\nimport {ElementsConfig} from './elements.interfaces';\nimport {BbInput} from './directives/input.directive';\nimport {BbFileImage} from './pipes/file-image.pipe';\nimport {BbAvatar} from './avatar/avatar.component';\nimport {BbFileSize} from './pipes/file-size.pipe';\nimport {BbIcon} from './icon/icon.component';\nimport {BbDate} from './pipes/date.pipe';\n\nconst IMPORTS_EXPORTS = [\n // Directives.\n BbFormError,\n BbFormSubmit,\n BbFormSubmitter,\n BbInput,\n BbImageUpload,\n BbExtraErrorControls,\n BbFileDrop,\n ColorPickerDirective,\n // Pipes.\n BbFileSize,\n BbFileImage,\n BbRelativeTime,\n BbDate,\n // Components.\n BbButton,\n BbAnchor,\n BbSpinner,\n BbIcon,\n BbFormControl,\n BbFormGroup,\n BbCheckbox,\n BbCheckboxGroup,\n BbRadioGroup,\n BbRadioButton,\n BbAvatar,\n BbMultiFileControl,\n BbFilePicker,\n BbImagePicker,\n BbDatePicker,\n BbColorSlider,\n BbColorPicker,\n BbImageControl,\n BbPincodeControl\n];\n\n@NgModule({\n imports: [...IMPORTS_EXPORTS],\n exports: [...IMPORTS_EXPORTS]\n})\nexport class ElementsModule {\n\n static forRoot(config?: ElementsConfig): ModuleWithProviders<ElementsModule> {\n return {\n ngModule: ElementsModule,\n providers: [\n provideElementsConfig(config)\n ]\n };\n }\n\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["nextUniqueId","i1.BbFormControl","i1"],"mappings":"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"}
|