@bravobit/bb-foundation 0.16.1 → 0.16.2
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/controls/lib/checkbox/checkbox/checkbox.component.d.ts +47 -0
- package/controls/lib/checkbox/checkbox-group/checkbox-group.component.d.ts +18 -0
- package/controls/lib/checkbox/checkbox.module.d.ts +4 -4
- package/controls/public_api.d.ts +2 -1
- package/esm2020/collections/lib/providers/api-collection.provider.mjs +4 -1
- package/esm2020/controls/lib/checkbox/checkbox/checkbox.component.mjs +153 -0
- package/esm2020/controls/lib/checkbox/checkbox-group/checkbox-group.component.mjs +48 -0
- package/esm2020/controls/lib/checkbox/checkbox.module.mjs +8 -8
- package/esm2020/controls/public_api.mjs +3 -2
- package/esm2020/elements/lib/checkbox/checkbox.component.mjs +2 -2
- package/esm2020/elements/lib/directives/input.directive.mjs +2 -2
- package/esm2020/elements/lib/icon/icon.component.mjs +2 -2
- package/esm2020/lib/core/mixins/can-disable.mjs +2 -2
- package/esm2020/lib/core/mixins/can-hide-errors.mjs +2 -2
- package/esm2020/lib/core/mixins/can-load.mjs +2 -2
- package/esm2020/lib/core/mixins/has-error.mjs +2 -2
- package/esm2020/lib/core/mixins/is-focused.mjs +2 -2
- package/esm2020/lib/core/mixins/is-grouped.mjs +2 -2
- package/esm2020/lib/core/mixins/is-readonly.mjs +2 -2
- package/esm2020/lib/core/mixins/is-required.mjs +2 -2
- package/esm2020/public_api.mjs +1 -2
- package/fesm2015/bravobit-bb-foundation-collections.mjs +3 -0
- package/fesm2015/bravobit-bb-foundation-collections.mjs.map +1 -1
- package/fesm2015/bravobit-bb-foundation-controls.mjs +152 -40
- package/fesm2015/bravobit-bb-foundation-controls.mjs.map +1 -1
- package/fesm2015/bravobit-bb-foundation-elements.mjs +2 -1
- package/fesm2015/bravobit-bb-foundation-elements.mjs.map +1 -1
- package/fesm2015/bravobit-bb-foundation.mjs +2 -5
- package/fesm2015/bravobit-bb-foundation.mjs.map +1 -1
- package/fesm2020/bravobit-bb-foundation-collections.mjs +3 -0
- package/fesm2020/bravobit-bb-foundation-collections.mjs.map +1 -1
- package/fesm2020/bravobit-bb-foundation-controls.mjs +152 -40
- package/fesm2020/bravobit-bb-foundation-controls.mjs.map +1 -1
- package/fesm2020/bravobit-bb-foundation-elements.mjs +2 -1
- package/fesm2020/bravobit-bb-foundation-elements.mjs.map +1 -1
- package/fesm2020/bravobit-bb-foundation.mjs +2 -5
- package/fesm2020/bravobit-bb-foundation.mjs.map +1 -1
- package/package.json +4 -3
- package/public_api.d.ts +0 -1
- package/controls/lib/checkbox/checkbox.component.d.ts +0 -27
- package/esm2020/controls/lib/checkbox/checkbox.component.mjs +0 -86
- package/esm2020/lib/core/coercions/boolean-coercion.mjs +0 -4
- package/lib/core/coercions/boolean-coercion.d.ts +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bravobit-bb-foundation-elements.mjs","sources":["../../../projects/bb-foundation/elements/src/lib/dropdown/dropdown.component.ts","../../../projects/bb-foundation/elements/src/lib/dropdown/dropdown.component.html","../../../projects/bb-foundation/elements/src/lib/elements.interfaces.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/image-picker/image-picker.component.ts","../../../projects/bb-foundation/elements/src/lib/image-picker/image-picker.component.html","../../../projects/bb-foundation/elements/src/lib/directives/form-submit.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/directives/template.directive.ts","../../../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/pipes/file-image.pipe.ts","../../../projects/bb-foundation/elements/src/lib/pipes/file-size.pipe.ts","../../../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/directives/input.directive.ts","../../../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/directives/addon.directive.ts","../../../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/directives/focus-trap.directive.ts","../../../projects/bb-foundation/elements/src/lib/directives/autosize.directive.ts","../../../projects/bb-foundation/elements/src/lib/pipes/relative-time.pipe.ts","../../../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/directives/focus.directive.ts","../../../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/icon/icon.component.ts","../../../projects/bb-foundation/elements/src/lib/icon/icon.component.html","../../../projects/bb-foundation/elements/src/lib/tag/tag.component.ts","../../../projects/bb-foundation/elements/src/lib/tag/tag.component.html","../../../projects/bb-foundation/elements/src/lib/elements.module.ts","../../../projects/bb-foundation/elements/src/bravobit-bb-foundation-elements.ts"],"sourcesContent":["import {\n ChangeDetectionStrategy,\n Component,\n Directive,\n ElementRef,\n Host,\n HostListener,\n Input,\n Optional,\n ViewEncapsulation\n} from '@angular/core';\nimport {animate, style, transition, trigger} from '@angular/animations';\nimport {BehaviorSubject} from 'rxjs';\n\n@Component({\n selector: 'bb-dropdown',\n templateUrl: './dropdown.component.html',\n styleUrls: ['./dropdown.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {'class': 'bb-dropdown'},\n preserveWhitespaces: false,\n animations: [\n trigger('dropdownMenuAnimation', [\n transition(':enter', [\n // 1. Set the initial state.\n style({opacity: 0, transform: 'scale(0.9)'}),\n // 2. Start the animation to show the item.\n animate('80ms cubic-bezier(0, 0, .2, 1)', style({opacity: 1, transform: 'scale(1)'}))\n ]),\n transition(':leave', [\n // 1. Set the initial state.\n style({opacity: 1, transform: 'scale(1)'}),\n // 2. Start the animation to hide the item.\n animate('80ms cubic-bezier(0, 0, .2, 1)', style({opacity: 0, transform: 'scale(0.9)'}))\n ])\n ])\n ]\n\n})\nexport class BbDropdown {\n\n // State.\n visible$ = new BehaviorSubject<boolean>(false);\n\n constructor(private _elementRef: ElementRef) {\n }\n\n toggle() {\n return this.visible$.next(!this.visible$.getValue());\n }\n\n close() {\n return this.visible$.next(false);\n }\n\n @HostListener('document:click', ['$event.target'])\n onDocumentClick(target: HTMLElement) {\n if (!target) {\n return;\n }\n\n if (this._elementRef?.nativeElement?.contains(target)) {\n return;\n }\n\n return this.close();\n }\n\n}\n\n@Directive({\n selector: '[bbDropdownItem]',\n host: {\n 'class': 'bb-dropdown-item'\n }\n})\nexport class BbDropdownItem {\n\n // Inputs.\n @Input() closeOnClick: boolean = true;\n\n constructor(@Optional() @Host() private _parent?: BbDropdown) {\n }\n\n @HostListener('click')\n onClick() {\n if (!this.closeOnClick) {\n return;\n }\n\n this._parent?.close();\n }\n\n}\n","<button (click)=\"toggle()\"\n [class.opened]=\"visible$ | async\"\n type=\"button\">\n <ng-content></ng-content>\n</button>\n\n<div *ngIf=\"visible$ | async\"\n [@dropdownMenuAnimation]=\"true\"\n class=\"bb-dropdown-menu\"\n role=\"list\">\n <ng-content select=\"[bbDropdownItem], hr\"></ng-content>\n</div>\n","import {InjectionToken} from '@angular/core';\n\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 | 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 ElementsIconUnknown {\n type: 'unknown';\n}\n","import {ChangeDetectionStrategy, Component, Input, ViewEncapsulation} from '@angular/core';\nimport {CanDisable, CanDisableConstructor, mixinDisabled} from '@bravobit/bb-foundation';\n\nclass BbSpinnerBase {\n}\n\nconst BbSpinnerMixinBase: CanDisableConstructor\n & typeof BbSpinnerBase\n = mixinDisabled(BbSpinnerBase);\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 inputs: ['color', 'alt', 'disabled'],\n preserveWhitespaces: false\n})\nexport class BbSpinner extends BbSpinnerMixinBase implements CanDisable {\n\n // Inputs.\n @Input() color: string = '#303f9f';\n @Input() alt: string = 'Loading...';\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 {\n CanLoad,\n CanLoadConstructor,\n mixinLoad,\n CanDisable,\n CanDisableConstructor,\n mixinDisabled\n} from '@bravobit/bb-foundation';\nimport {ChangeDetectionStrategy, Component, ElementRef, Input, ViewEncapsulation} from '@angular/core';\n\nclass BbButtonBase {\n constructor(public _elementRef: ElementRef) {\n }\n}\n\nconst BbButtonMixinBase: CanDisableConstructor & CanLoadConstructor\n & typeof BbButtonBase = mixinDisabled(mixinLoad(BbButtonBase));\n\n@Component({\n selector: 'button[bb-button]',\n templateUrl: './button.component.html',\n styleUrls: ['./button.component.scss'],\n exportAs: 'bbButton',\n host: {\n 'class': 'bb-button',\n '[class.loading]': 'loading',\n '[attr.disabled]': 'disabled || loading || null'\n },\n inputs: ['disabled', 'loading'],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class BbButton extends BbButtonMixinBase implements CanDisable, CanLoad {\n\n get nativeElement() {\n return this._elementRef.nativeElement;\n }\n\n constructor(_elementRef: ElementRef<HTMLButtonElement>) {\n super(_elementRef);\n }\n\n focus() {\n this.nativeElement && this.nativeElement.focus();\n }\n\n}\n\n@Component({\n selector: 'a[bb-button]',\n templateUrl: './button.component.html',\n styleUrls: ['./button.component.scss'],\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 '(click)': 'stopDisabledEvents($event)'\n },\n inputs: ['disabled', 'loading'],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class BbAnchor extends BbButton {\n\n // Inputs.\n @Input() tabIndex: number;\n\n constructor(_elementRef: ElementRef) {\n super(_elementRef);\n }\n\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","<bb-spinner [class.visible]=\"loading\"\n class=\"bb-button-spinner small\">\n</bb-spinner>\n\n<ng-content></ng-content>\n","import {\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n EventEmitter,\n forwardRef,\n Input,\n Output,\n ViewChild,\n ViewEncapsulation\n} from '@angular/core';\nimport {\n ImageConverter,\n CanDisableConstructor,\n mixinDisabled,\n IsGroupedConstructor,\n mixinGrouped\n} from '@bravobit/bb-foundation';\nimport {ControlValueAccessor, NG_VALUE_ACCESSOR} from '@angular/forms';\nimport {BehaviorSubject} from 'rxjs';\nimport {map} from 'rxjs/operators';\n\nclass BbImagePickerBase {\n}\n\nconst BbImagePickerMixinBase: IsGroupedConstructor\n & CanDisableConstructor\n & typeof BbImagePickerBase\n = mixinDisabled(mixinGrouped(BbImagePickerBase));\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 inputs: ['grouped', 'disabled'],\n providers: [{provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => BbImagePicker), multi: true}],\n preserveWhitespaces: false\n})\nexport class BbImagePicker extends BbImagePickerMixinBase 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\n // Form.\n private _value$ = new BehaviorSubject<string | null>(null);\n\n constructor(private _converter: ImageConverter) {\n super();\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 (error) {\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 onTouchedCallback: () => void = () => {\n };\n\n onChangeCallback: (_: string | null) => void = () => {\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\">\n </span>\n\n<button *ngIf=\"label as labelText\"\n (click)=\"openFilePicker()\"\n bb-button\n class=\"bb-image-input-button\"\n type=\"button\">\n {{ labelText }}\n</button>\n","import {distinctUntilChanged, mapTo, 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 mapTo(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 mapTo(false)\n );\n\n // Listen to the submit status.\n this.submitStatus$ = merge(regularSubmitChanges$, reactiveSubmitChanges$, resetChanges$).pipe(\n startWith(false),\n distinctUntilChanged(),\n shareReplay(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 mapTo(true)\n );\n }\n\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n EventEmitter,\n Inject,\n Input,\n OnInit,\n Optional,\n Output,\n ViewEncapsulation\n} from '@angular/core';\nimport {delay, distinctUntilChanged, map, startWith, tap} from 'rxjs/operators';\nimport {ELEMENTS_ERRORS, ElementsError} from '../elements.interfaces';\nimport {BbFormSubmit} from '../directives/form-submit.directive';\nimport {NgControl, ValidationErrors} from '@angular/forms';\nimport {combineLatest, EMPTY, Observable, of} from 'rxjs';\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: {\n 'class': 'bb-form-error'\n },\n preserveWhitespaces: false\n})\nexport class BbFormError implements OnInit {\n\n // Inputs.\n @Input()\n set control(value: NgControl) {\n this._ngControl = value;\n }\n\n get control() {\n return this._ngControl;\n }\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 // Subscriptions.\n private _ngControl: NgControl | null = null;\n\n constructor(@Optional() private _form: BbFormSubmit,\n @Optional() private _control: NgControl,\n @Optional() @Inject(ELEMENTS_ERRORS) private _errors: ElementsError[]) {\n }\n\n ngOnInit() {\n // Set the control if it was not set before.\n if (!this.control) {\n this.control = this._control;\n }\n\n // Listen for the submit changes\n const submitStatus$ = this.submitStatusChanges();\n\n // An observable that emits error changes.\n const errorChanges$ = this.statusChanges().pipe(\n map(() => this.getError(this.control.errors)),\n distinctUntilChanged(),\n map(error => typeof error === 'string' ? {token: error} : error)\n );\n\n // Whenever the user submitted the form we want to\n // listen for any error changes.\n this.error$ = combineLatest([submitStatus$, errorChanges$]).pipe(\n map(([submitted, error]) => {\n // If not submitted return null.\n if (!submitted) {\n return null;\n }\n\n // Return the error if submitted.\n return error;\n }),\n tap(value => this.errorChange.emit(value))\n );\n }\n\n private getError(errors?: ValidationErrors) {\n // Validate the errors exist.\n if (!errors) {\n return null;\n }\n\n // Get the first error in the errors.\n const [errorName] = Object.keys(errors);\n const error = errors[errorName];\n\n // Validate the error exists.\n if (!error) {\n return null;\n }\n\n // Map the arrays into a object so we can\n // access the functions by a key-lookup.\n const errorFunctions = this._errors.reduce((previous, current) => ({...previous, ...current}), {});\n\n // Get the error function.\n const errorFunction = errorFunctions[errorName] || errorFunctions['unknown'];\n\n // Validate the error function exists.\n if (!errorFunction) {\n return null;\n }\n\n // Return the parsed error.\n return errorFunction(error);\n }\n\n private submitStatusChanges() {\n if (!this._form) {\n return of(true);\n }\n\n return this._form.submitStatus$;\n }\n\n private statusChanges() {\n if (!this.control) {\n return EMPTY;\n }\n\n if (!this.control.statusChanges) {\n return EMPTY;\n }\n\n return this.control.statusChanges.pipe(\n startWith(this.control.status as unknown),\n delay(0)\n );\n }\n\n}\n","<ng-container *ngIf=\"error$ | async as error\">\n <p *ngIf=\"error?.token | bbLocalize:{optional: true, data: error?.data} as message\"\n class=\"bb-form-error-message\">\n {{ message }}\n </p>\n</ng-container>","import {Directive, Input, TemplateRef, ViewContainerRef} from '@angular/core';\n\n@Directive({\n selector: '[bbTemplate]'\n})\nexport class BbTemplate {\n\n @Input() set bbTemplate(content: string | TemplateRef<any>) {\n // Get the template.\n const template = content instanceof TemplateRef\n ? content\n : this._templateRef;\n\n // Clear the view container ref and create the view.\n this._viewContainerRef.clear();\n this._viewContainerRef.createEmbeddedView(template);\n }\n\n constructor(private _templateRef: TemplateRef<any>,\n private _viewContainerRef: ViewContainerRef) {\n }\n\n}\n","import {\n IsRequired,\n IsRequiredConstructor,\n mixinRequired,\n CanDisable,\n CanDisableConstructor,\n mixinDisabled,\n IsReadonly,\n IsReadonlyConstructor,\n mixinReadonly,\n IsGrouped,\n IsGroupedConstructor,\n mixinGrouped,\n IsFocused,\n IsFocusedConstructor,\n mixinFocused,\n HasError,\n HasErrorConstructor,\n mixinError,\n CanHideErrors,\n CanHideErrorsConstructor,\n mixinHideErrors\n} from '@bravobit/bb-foundation';\nimport {ChangeDetectionStrategy, Component, ContentChild, Input, TemplateRef, ViewEncapsulation} from '@angular/core';\nimport {NgControl} from '@angular/forms';\n\nlet nextUniqueId = 0;\n\nclass BbFormControlBase {\n}\n\nconst BbFormControlMixinBase: IsRequiredConstructor\n & IsGroupedConstructor\n & IsFocusedConstructor\n & IsReadonlyConstructor\n & CanDisableConstructor\n & HasErrorConstructor\n & CanHideErrorsConstructor\n & typeof BbFormControlBase\n = mixinDisabled(mixinFocused(mixinReadonly(mixinGrouped(mixinRequired(mixinError(mixinHideErrors(BbFormControlBase)))))));\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.readonly]': 'readonly',\n '[class.required]': 'required',\n '[class.disabled]': 'disabled',\n '[class.focused]': 'focused',\n '[class.grouped]': 'grouped',\n '[class.arrow]': 'arrow',\n '[class.error]': 'error'\n },\n inputs: ['grouped', 'hideErrors'],\n preserveWhitespaces: false\n})\nexport class BbFormControl extends BbFormControlMixinBase implements IsRequired, IsFocused, IsReadonly, IsGrouped, CanDisable, HasError, CanHideErrors {\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\n // Data.\n arrow: boolean = false;\n\n // Data.\n labelId = `bb-form-control-${nextUniqueId++}`;\n\n onErrorChange(error: { token: string, data?: any } | null) {\n this.error = !!error;\n }\n\n}\n","<!-- Label of the form control. -->\n<label *ngIf=\"label as labelContent\"\n [attr.for]=\"labelId\"\n class=\"bb-form-control-label\">\n <ng-template [bbTemplate]=\"labelContent\">\n {{ labelContent }}\n </ng-template>\n</label>\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<bb-form-error *ngIf=\"!hideErrors\"\n [control]=\"ngControl\"\n (errorChange)=\"onErrorChange($event)\">\n</bb-form-error>\n\n<!-- The form control hint. -->\n<p *ngIf=\"hint as hintContent\"\n class=\"bb-form-control-hint\">\n <ng-template [bbTemplate]=\"hintContent\">\n {{ hintContent }}\n </ng-template>\n</p>\n","import {ImageConverter, Platform} from '@bravobit/bb-foundation';\nimport {DomSanitizer} from '@angular/platform-browser';\nimport {Pipe, PipeTransform} from '@angular/core';\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/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 {Pipe, PipeTransform} from '@angular/core';\n\n@Pipe({\n name: 'bbFileSize'\n})\nexport class BbFileSize implements PipeTransform {\n\n transform(value: number) {\n return this.format(value);\n }\n\n private format = (value: number, decimals: number = 2) => {\n if (value === 0) {\n return '0 Bytes';\n }\n\n const k = 1024;\n const dm = decimals < 0 ? 0 : decimals;\n const sizes = ['Bytes', 'KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB'];\n\n const index = Math.floor(Math.log(value) / Math.log(k));\n\n return parseFloat((value / Math.pow(k, index)).toFixed(dm)) + ' ' + sizes[index];\n };\n\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n ContentChild,\n ElementRef,\n EventEmitter,\n forwardRef,\n HostListener,\n Input,\n Output,\n TemplateRef,\n ViewChild,\n ViewEncapsulation\n} from '@angular/core';\nimport {\n CanDisable,\n CanDisableConstructor,\n IsGrouped,\n IsGroupedConstructor,\n IsRequired,\n IsRequiredConstructor,\n CanHideErrors,\n CanHideErrorsConstructor,\n HasError,\n HasErrorConstructor,\n mixinDisabled,\n mixinGrouped,\n mixinRequired,\n mixinError,\n mixinHideErrors\n} from '@bravobit/bb-foundation';\nimport {ControlValueAccessor, FormControl, NG_VALIDATORS, NG_VALUE_ACCESSOR} from '@angular/forms';\nimport {animate, style, transition, trigger} from '@angular/animations';\nimport {BehaviorSubject} from 'rxjs';\n\nlet nextUniqueId = 0;\n\nclass BbFilePickerBase {\n}\n\nconst BbFilePickerMixinBase: IsRequiredConstructor\n & CanDisableConstructor\n & IsGroupedConstructor\n & HasErrorConstructor\n & CanHideErrorsConstructor\n & typeof BbFilePickerBase\n = mixinRequired(mixinDisabled(mixinGrouped(mixinError(mixinHideErrors(BbFilePickerBase)))));\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.hovered]': 'hovered',\n '[class.error]': 'error'\n },\n animations: [\n trigger('bbFilePickerImageAnimation', [\n transition(':enter', [\n style({opacity: 0}),\n animate('200ms', style({opacity: 1}))\n ]),\n transition(':leave', [\n animate('200ms', style({opacity: 0}))\n ])\n ])\n ],\n inputs: ['disabled', 'hideErrors', 'grouped', 'required'],\n preserveWhitespaces: false\n})\nexport class BbFilePicker extends BbFilePickerMixinBase implements ControlValueAccessor, IsRequired, CanDisable, IsGrouped, HasError, CanHideErrors {\n\n // Views.\n @ViewChild('fileInput', {static: true}) fileInput: ElementRef<HTMLInputElement>;\n @ContentChild('extra') extraTemplate: TemplateRef<ElementRef>;\n\n // Inputs.\n @Input() label: string | TemplateRef<any> | null = null;\n @Input() hint: string | TemplateRef<any> | null = null;\n @Input() accept: string | null = null;\n @Input() showImages: boolean = true;\n @Input() allowDragging: boolean = true;\n\n // State.\n labelId = `bb-file-picker-${nextUniqueId++}`;\n hovered: boolean = false;\n value$ = new BehaviorSubject<{ file?: File }>({});\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 @HostListener('dragover', ['$event', 'true'])\n @HostListener('dragleave', ['$event', 'false'])\n onDrag(event: Event, isHovered: boolean) {\n // Validate the input can support drag.\n if (!this.allowDragging || this.disabled) {\n return;\n }\n\n // Prevent the default event action\n // and start the hovering.\n this.preventDefault(event);\n this.hovered = isHovered;\n }\n\n @HostListener('drop', ['$event'])\n onDrop(event: Event) {\n // Validate the input can support drag.\n if (!this.allowDragging || this.disabled) {\n return;\n }\n\n // Prevent the default event action\n // and stop the hovering.\n this.preventDefault(event);\n this.hovered = false;\n\n // Save the file.\n this.saveFile(event['dataTransfer'].files);\n\n // Run the on change callback.\n this.onChangeCallback(this.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 // Validate the input is not disabled.\n if (this.disabled) {\n return;\n }\n\n // Extract the file from the event.\n const fileList = this.getFileListFromEvent(event);\n\n // Save the file.\n this.saveFile(fileList);\n\n // Run the on change callback.\n this.onChangeCallback(this.value);\n\n // Clear the file input.\n if (this.fileInput && this.fileInput.nativeElement) {\n this.fileInput.nativeElement.value = '';\n }\n }\n\n onTouchedCallback: () => void = () => {\n };\n\n onChangeCallback: (_: File | null) => void = () => {\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) {\n if (value === null || value === undefined) {\n return null;\n }\n\n const regexString = (this.accept || '*')\n .replace(/\\*/g, '.\\*')\n .replace(/,/g, '|');\n const mimeTypeRegex = new RegExp(regexString);\n\n const isNotValid = (typeof File === 'undefined') || !(value instanceof File) || !mimeTypeRegex.test(value?.type);\n return isNotValid && {\n invalidFileType: true\n };\n }\n\n private saveFile = (files?: FileList) => {\n // Validate the files exist.\n if (!files) {\n return;\n }\n\n // Retrieve the first file.\n const file = files[0];\n\n // Validate the first file exists.\n if (!file) {\n return;\n }\n\n // Save the file.\n this.value = file;\n };\n\n private getFileListFromEvent = (event: Event) => {\n const element = event.target as HTMLInputElement;\n\n if (!element) {\n return null;\n }\n\n return element.files;\n };\n\n private preventDefault = (event: Event) => {\n event.preventDefault();\n event.stopPropagation();\n };\n\n}\n","<!-- The label of the input. -->\n<label *ngIf=\"label as labelContent\"\n [for]=\"labelId\"\n class=\"bb-file-picker-label\">\n <ng-template [bbTemplate]=\"labelContent\">\n {{ labelContent }}\n </ng-template>\n</label>\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<div *ngIf=\"value$ | async as data\"\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 [class.standalone]=\"!allowDragging\"\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 *ngIf=\"allowDragging\"\n class=\"bb-file-picker-zone\">\n {{ 'file-picker.drop' | bbLocalize }}\n </div>\n </div>\n\n <ng-container *ngIf=\"!!extraTemplate\">\n <ng-container *ngTemplateOutlet=\"extraTemplate; context: {$implicit: data?.file}\"></ng-container>\n </ng-container>\n\n <ng-container *ngIf=\"showImages\">\n <div *ngIf=\"data?.file | bbFileImage | async as image\"\n class=\"bb-file-picker-image-container\">\n <div class=\"bb-file-picker-image-wrapper\">\n <div [@bbFilePickerImageAnimation]=\"true\"\n [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 </ng-container>\n\n <!-- Extra information of the file. -->\n <div [class.visible]=\"!!data?.file\"\n class=\"bb-file-picker-info\">\n <span *ngIf=\"data?.file?.name as name\">{{ name }}</span>\n <span *ngIf=\"data?.file?.size as size\">{{ size | bbFileSize }}</span>\n </div>\n</div>\n\n<bb-form-error *ngIf=\"!hideErrors\"\n (errorChange)=\"onErrorChange($event)\">\n</bb-form-error>\n\n<!-- The file picker hint. -->\n<p *ngIf=\"hint as hintContent\"\n class=\"bb-file-picker-hint\">\n <ng-template [bbTemplate]=\"hintContent\">\n {{ hintContent }}\n </ng-template>\n</p>\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=\"24\"\n height=\"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=\"24\"\n height=\"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 {\n Directive,\n DoCheck,\n ElementRef,\n Host,\n HostBinding,\n Input,\n OnDestroy,\n OnInit,\n Optional,\n Self\n} from '@angular/core';\nimport {BbFormControl} from '../form-control/form-control.component';\nimport {coerceBooleanProperty} from '@bravobit/bb-foundation';\nimport {NgControl} from '@angular/forms';\nimport {Subscription} from 'rxjs';\n\n@Directive({\n selector: 'select[bbInput]',\n host: {\n '[disabled]': 'disabled',\n '(focus)': 'setFocus(true)',\n '(blur)': 'setFocus(false)'\n }\n})\nexport class BbSelect implements OnInit, DoCheck, OnDestroy {\n\n protected hasArrow: boolean = true;\n\n private _subscription: Subscription;\n\n constructor(protected _elementRef: ElementRef,\n @Optional() @Self() protected _ngControl: NgControl,\n @Optional() @Host() protected _formControl: BbFormControl) {\n }\n\n ngOnInit() {\n // Set an arrow on the form control if\n // it requires one.\n this._formControl.arrow = this.hasArrow;\n }\n\n ngDoCheck() {\n if (this._ngControl) {\n this.disabled = this._ngControl.disabled;\n }\n }\n\n ngOnDestroy() {\n this._subscription?.unsubscribe();\n }\n\n focus() {\n return this._elementRef?.nativeElement?.focus();\n }\n\n setFocus(hasFocus: boolean) {\n if (!this._formControl) {\n return;\n }\n\n this._formControl.focused = hasFocus;\n }\n\n @HostBinding('attr.id')\n get id() {\n return this._formControl?.labelId ?? null;\n }\n\n get disabled() {\n if (this._ngControl && this._ngControl.disabled !== null) {\n return this._ngControl.disabled;\n }\n\n return this._disabled;\n }\n\n @Input()\n set disabled(newValue: boolean) {\n this._disabled = coerceBooleanProperty(newValue);\n\n if (!this._formControl) {\n return;\n }\n\n this._formControl.disabled = this._disabled;\n }\n\n private _disabled = false;\n\n get required() {\n return this._required;\n }\n\n @Input()\n set required(newValue: boolean) {\n this._required = coerceBooleanProperty(newValue);\n\n if (!this._formControl) {\n return;\n }\n\n this._formControl.required = this._required;\n }\n\n private _required = false;\n\n}\n\n@Directive({\n selector: 'input[bbInput], textarea[bbInput]',\n host: {\n '[disabled]': 'disabled',\n '[readonly]': 'readonly',\n '(focus)': 'setFocus(true)',\n '(blur)': 'setFocus(false)'\n }\n})\nexport class BbInput extends BbSelect {\n\n protected override hasArrow: boolean = false;\n\n constructor(protected override _elementRef: ElementRef,\n @Optional() @Self() protected override _ngControl: NgControl,\n @Optional() @Host() protected override _formControl: BbFormControl) {\n super(_elementRef, _ngControl, _formControl);\n }\n\n get readonly() {\n return this._readonly;\n }\n\n @Input()\n set readonly(newValue: boolean) {\n this._readonly = coerceBooleanProperty(newValue);\n\n if (!this._formControl) {\n return;\n }\n\n this._formControl.readonly = this._readonly;\n }\n\n private _readonly = false;\n\n}\n","import {\n CanDisable,\n CanDisableConstructor,\n CanHideErrors,\n CanHideErrorsConstructor,\n HasError,\n HasErrorConstructor,\n IsGrouped,\n IsGroupedConstructor,\n IsReadonly,\n IsReadonlyConstructor,\n IsRequired,\n IsRequiredConstructor,\n mixinDisabled,\n mixinError,\n mixinGrouped,\n mixinHideErrors,\n mixinReadonly,\n mixinRequired\n} from '@bravobit/bb-foundation';\nimport {\n ChangeDetectionStrategy,\n Component,\n EventEmitter,\n forwardRef,\n Inject,\n Input,\n LOCALE_ID,\n OnDestroy,\n OnInit,\n Output,\n TemplateRef,\n ViewEncapsulation\n} from '@angular/core';\nimport {\n ControlValueAccessor,\n FormControl,\n FormGroup,\n NG_VALIDATORS,\n NG_VALUE_ACCESSOR,\n Validators\n} from '@angular/forms';\nimport {BehaviorSubject, combineLatest, Observable, of, Subscription} from 'rxjs';\nimport {distinctUntilChanged, map, startWith, tap} from 'rxjs/operators';\nimport {formatDate} from '@angular/common';\n\nclass BbDatePickerBase {\n}\n\nconst BbFilePickerMixinBase: IsRequiredConstructor\n & IsReadonlyConstructor\n & CanDisableConstructor\n & IsGroupedConstructor\n & HasErrorConstructor\n & CanHideErrorsConstructor\n & typeof BbDatePickerBase\n = mixinRequired(mixinReadonly(mixinDisabled(mixinGrouped(mixinError(mixinHideErrors(BbDatePickerBase))))));\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 {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => BbDatePicker),\n multi: true\n },\n {\n provide: NG_VALIDATORS,\n useExisting: BbDatePicker,\n multi: true\n }\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 inputs: ['required', 'readonly', 'disabled', 'grouped', 'hideErrors'],\n preserveWhitespaces: false\n})\nexport class BbDatePicker extends BbFilePickerMixinBase implements ControlValueAccessor, OnInit, OnDestroy, IsRequired, IsReadonly, CanDisable, IsGrouped, HasError, CanHideErrors {\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\n @Input()\n set years(value: [string | number, string | number] | null) {\n this.parseYears(value);\n }\n\n // Forms.\n form: FormGroup;\n trackByValue = (_, item) => item?.value;\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 // Subscriptions.\n private _subscription = new Subscription();\n\n constructor(@Inject(LOCALE_ID) private _localeId: string) {\n super();\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 if (this.disabled) {\n this.form?.disable();\n } else {\n this.form?.enable();\n }\n }\n\n onTouchedCallback: () => void = () => {\n };\n\n onChangeCallback: (_: string | null) => void = () => {\n };\n\n onErrorChange(error: { token: string, data?: any } | null) {\n this.error = !!error;\n }\n\n validate({value}: FormControl) {\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 const array = Array(12).fill(0).map((_, month) => {\n const date = new Date(2000, month, 1);\n const label = formatDate(date, 'LLLL', this._localeId);\n return {label, value: month + 1};\n });\n return of(array);\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(null, required),\n month: new FormControl(null, required),\n year: new FormControl(null, yearValidators)\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 = ({year, month, day}) => {\n if (this.form?.invalid) {\n return null;\n }\n\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<label *ngIf=\"label as labelContent\"\n class=\"bb-date-picker-label\">\n <ng-template [bbTemplate]=\"labelContent\">\n {{ labelContent }}\n </ng-template>\n</label>\n\n<!-- The form containing the year/month/day fields. -->\n<form *ngIf=\"data$ | async as data\"\n [formGroup]=\"form\"\n class=\"bb-date-picker-container\"\n novalidate>\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 <option *ngFor=\"let day of data?.days; trackBy: trackByValue\"\n [ngValue]=\"day?.value\">\n {{ day?.label }}\n </option>\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 <option *ngFor=\"let month of data?.months; trackBy: trackByValue\"\n [ngValue]=\"month?.value\">\n {{ month?.label }}\n </option>\n </select>\n </bb-form-control>\n </div>\n <div class=\"bb-date-picker-item\">\n <bb-form-control hideErrors>\n <select *ngIf=\"data?.years?.length > 0; else defaultYearInputTemplate\"\n [class.has-value]=\"!!form?.get('year')?.value\"\n bbInput\n autocomplete=\"off\"\n formControlName=\"year\">\n <option [ngValue]=\"null\">{{ yearPlaceholder }}</option>\n <option *ngFor=\"let year of data?.years\"\n [value]=\"year\">\n {{ year }}\n </option>\n </select>\n\n <ng-template #defaultYearInputTemplate>\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 </ng-template>\n </bb-form-control>\n </div>\n</form>\n\n<!-- The date picker error. -->\n<bb-form-error *ngIf=\"!hideErrors\"\n (errorChange)=\"onErrorChange($event)\">\n</bb-form-error>\n\n<!-- The date picker hint. -->\n<p *ngIf=\"hint as hintContent\"\n class=\"bb-date-picker-hint\">\n <ng-template [bbTemplate]=\"hintContent\">\n {{ hintContent }}\n </ng-template>\n</p>\n","import {Directive} from '@angular/core';\n\n@Directive({\n selector: '[bbSuffix]',\n host: {\n 'class': 'bb-suffix'\n }\n})\nexport class BbSuffix {\n}\n\n@Directive({\n selector: '[bbPrefix]',\n host: {\n 'class': 'bb-prefix'\n }\n})\nexport class BbPrefix {\n}\n","import {IsGrouped, IsGroupedConstructor, mixinGrouped} from '@bravobit/bb-foundation';\nimport {ChangeDetectionStrategy, Component, ViewEncapsulation} from '@angular/core';\n\nclass BbFormGroupBase {\n}\n\nconst BbFormGroupMixinBase: IsGroupedConstructor\n & typeof BbFormGroupBase\n = mixinGrouped(BbFormGroupBase);\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 inputs: ['grouped'],\n preserveWhitespaces: false\n})\nexport class BbFormGroup extends BbFormGroupMixinBase implements IsGrouped {\n}\n","<ng-content></ng-content>\n","import {Directive, ElementRef, HostListener} from '@angular/core';\nimport {Platform} from '@bravobit/bb-foundation';\n\n@Directive({\n selector: '[bbFocusTrap]'\n})\nexport class BbFocusTrap {\n\n private readonly _focusableElements = [\n 'a[href]',\n 'area[href]',\n 'input:not([disabled]):not([type=\"hidden\"]):not([aria-hidden])',\n 'select:not([disabled]):not([aria-hidden])',\n 'textarea:not([disabled]):not([aria-hidden])',\n 'button:not([disabled]):not([aria-hidden])',\n 'iframe',\n 'object',\n 'embed',\n '[contenteditable]',\n '[tabindex]:not([tabindex^=\"-\"])'\n ];\n\n constructor(private _platform: Platform,\n private _elementRef: ElementRef) {\n }\n\n @HostListener('keydown', ['$event'])\n onKeydown(event: KeyboardEvent) {\n // Validate it is a tab event.\n if (!this.isTabEvent(event)) {\n return;\n }\n\n // Trap the focus inside the element.\n return this.trapFocus(event);\n }\n\n trapFocus(event: KeyboardEvent) {\n // Validate that the DOM is available.\n if (!this._platform.isBrowser) {\n return;\n }\n\n // Get all focusable nodes.\n const focusableNodes = this.getFocusableNodes();\n\n // Focus the first available element if the focus\n // is not in the modal.\n if (!this.element.contains(document.activeElement)) {\n return this.focus(focusableNodes[0]);\n }\n\n const focusedItemIndex = focusableNodes.indexOf(document.activeElement);\n\n if (event.shiftKey && focusedItemIndex === 0) {\n this.focus(focusableNodes[focusableNodes.length - 1]);\n return event.preventDefault();\n }\n\n if (!event.shiftKey && focusedItemIndex === focusableNodes.length - 1) {\n this.focus(focusableNodes[0]);\n return event.preventDefault();\n }\n }\n\n private get element() {\n return this._elementRef.nativeElement;\n }\n\n private getFocusableNodes() {\n const nodes = this.element.querySelectorAll(this._focusableElements);\n return Array(...nodes);\n }\n\n private focus = (element: HTMLElement) => {\n return element && element.focus && element.focus();\n };\n\n private isTabEvent = (event: KeyboardEvent) => {\n return event.key === 'Tab' || event.keyCode === 9;\n };\n\n}\n","import {AfterViewInit, Directive, ElementRef, HostBinding, HostListener, Input, Renderer2} from '@angular/core';\n\n@Directive({\n selector: 'textarea[bbAutosize]'\n})\nexport class BbAutosize implements AfterViewInit {\n\n // Min/max heights for the textarea.\n @Input() @HostBinding('style.min-height') minHeight: string | null = null;\n @Input() @HostBinding('style.max-height') maxHeight: string | null = null;\n @Input() @HostBinding('rows') rows: number = 1;\n\n constructor(private _renderer: Renderer2,\n private _elementRef: ElementRef) {\n }\n\n get element() {\n return this._elementRef?.nativeElement as HTMLTextAreaElement;\n }\n\n ngAfterViewInit() {\n // Update the styles after the DOM has loaded.\n this.updateStyles();\n }\n\n @HostListener('window:resize')\n onWindowResize() {\n // Update the styles when the window is resized.\n this.updateStyles();\n }\n\n @HostListener('input')\n onInputReceived() {\n // Update the styles after the textarea received input.\n this.updateStyles();\n }\n\n private updateStyles() {\n // Validate the element exists.\n if (!this.element) {\n return;\n }\n\n // Calculate border height which is not included in the scroll height.\n const borderHeight = this.element?.offsetHeight - this.element?.clientHeight;\n\n // Reset textarea height to auto that correctly calculate the new height.\n this.setHeight('auto');\n\n // Set new height.\n this.setHeight(`${this.element?.scrollHeight + borderHeight}px`);\n }\n\n private setHeight(value: string) {\n this._renderer.setStyle(this.element, 'height', value);\n }\n\n}\n","import {Inject, LOCALE_ID, Optional, Pipe, PipeTransform} from '@angular/core';\nimport {Localize} from '@bravobit/bb-foundation/localize';\nimport {DatePipe} from '@angular/common';\n\n@Pipe({\n name: 'bbRelativeTime'\n})\nexport class BbRelativeTime implements PipeTransform {\n\n private readonly _datePipe: DatePipe;\n\n constructor(@Optional() private _localize: Localize,\n @Inject(LOCALE_ID) private _localeId: string) {\n this._datePipe = new DatePipe(this._localeId);\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 this._datePipe.transform(date, 'mediumDate');\n }\n\n // Return the translated formatting.\n return this._localize.translate({\n token: token,\n data: {date: this._datePipe.transform(date, format)}\n });\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 {\n CanDisable,\n CanDisableConstructor,\n mixinDisabled,\n IsGrouped,\n IsGroupedConstructor,\n mixinGrouped\n} from '@bravobit/bb-foundation';\nimport {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n forwardRef,\n Input,\n ViewEncapsulation\n} from '@angular/core';\nimport {ControlValueAccessor, NG_VALUE_ACCESSOR} from '@angular/forms';\nimport {coerceBooleanProperty} from '@bravobit/bb-foundation';\n\nlet nextUniqueId = 0;\n\nclass BbCheckboxBase {\n}\n\nconst BbCheckboxMixinBase: IsGroupedConstructor\n & CanDisableConstructor\n & typeof BbCheckboxBase\n = mixinDisabled(mixinGrouped(BbCheckboxBase));\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.grouped]': 'grouped'\n },\n inputs: ['grouped', 'disabled'],\n preserveWhitespaces: false\n})\nexport class BbCheckbox extends BbCheckboxMixinBase implements ControlValueAccessor, IsGrouped, CanDisable {\n\n // Data.\n labelId = `bb-checkbox-${nextUniqueId++}`;\n\n // Inputs.\n @Input() tabIndex: number;\n\n get checked() {\n return this._checked;\n }\n\n @Input()\n set checked(value: any) {\n this._checked = coerceBooleanProperty(value);\n this._changeDetection.markForCheck();\n }\n\n private _checked: boolean = false;\n\n constructor(private _changeDetection: ChangeDetectorRef) {\n super();\n }\n\n // Methods.\n onChange: (newValue: boolean) => void = () => {\n };\n\n onTouched: () => void = () => {\n };\n\n registerOnChange(fn: any): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: any): void {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean) {\n this.disabled = isDisabled;\n this._changeDetection.markForCheck();\n }\n\n writeValue(newValue: boolean) {\n this.checked = newValue;\n }\n\n onInteractionEvent(event: Event) {\n // Stop the propagation to prevent it from bubbling up.\n event.stopPropagation();\n }\n\n onInputClick(event: Event) {\n // Stop the propagation to prevent it from bubbling up.\n event.stopPropagation();\n\n // Toggle the value.\n this.checked = !this.checked;\n\n // Emit the change event.\n this.onChange && this.onChange(this.checked);\n }\n\n}\n","<input [id]=\"labelId\"\n [checked]=\"checked\"\n [disabled]=\"disabled\"\n (change)=\"onInteractionEvent($event)\"\n (click)=\"onInputClick($event)\"\n class=\"bb-checkbox-input\"\n tabindex=\"-1\"\n type=\"checkbox\">\n\n<label [for]=\"labelId\"\n [attr.tabindex]=\"disabled ? -1 : (tabIndex || 0)\"\n (keyup.space)=\"onInputClick($event)\"\n class=\"bb-checkbox-label\">\n <span>\n <svg width=\"12px\"\n height=\"10px\"\n viewbox=\"0 0 12 10\">\n <polyline points=\"1.5 6 4.5 9 10.5 1\"></polyline>\n </svg>\n </span>\n <span>\n <ng-content></ng-content>\n </span>\n</label>\n","import {AfterViewInit, Directive, ElementRef, NgZone} from '@angular/core';\nimport {Platform} from '@bravobit/bb-foundation';\n\n@Directive({\n selector: '[bbFocus]'\n})\nexport class BbFocus implements AfterViewInit {\n\n constructor(private _zone: NgZone,\n private _platform: Platform,\n private _elementRef: ElementRef) {\n }\n\n private get nativeElement() {\n return this._elementRef.nativeElement;\n }\n\n ngAfterViewInit() {\n // Run the method outside the Angular zone.\n this._zone.runOutsideAngular(() => this.focus());\n }\n\n private focus() {\n // Check if set timeout exists and the user is\n // using the site on desktop devices.\n if (!this._platform.isDesktop || !setTimeout) {\n return;\n }\n\n // Check if the element and the focus method exist, if so focus the element.\n if (!this.nativeElement || !this.nativeElement.focus) {\n return;\n }\n\n // Execute the focus method in a timeout.\n setTimeout(() => this.nativeElement.focus(), 0);\n }\n\n}\n","import {ChangeDetectionStrategy, Component, HostBinding, Input, ViewEncapsulation} from '@angular/core';\nimport {BehaviorSubject} from 'rxjs';\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 preserveWhitespaces: false,\n host: {\n 'class': 'bb-avatar',\n 'role': 'img',\n '[style.width.px]': 'size',\n '[style.height.px]': 'size',\n '[style.font-size.px]': 'size / 2',\n '[style.color]': 'color',\n '[style.background-color]': 'backgroundColor'\n }\n})\nexport class BbAvatar {\n\n // Inputs.\n @Input() size: number = 40;\n\n // State.\n state$ = new BehaviorSubject<string>('initials');\n\n // Data.\n private _src: string | null = null;\n private _title: string | null = null;\n private _initials: string = '!';\n private _color: string = 'rgb(255, 255, 255)';\n private _backgroundColor: string = 'rgb(66, 66, 66)';\n\n @Input()\n set src(value: string) {\n this._src = value;\n\n if (this._src) {\n this.state$.next('image');\n }\n }\n\n @Input()\n @HostBinding('attr.title')\n set title(value: string) {\n // Set the title and the initials.\n this._title = value || '!';\n this._initials = this.getInitials(this._title);\n\n // Generate the colors based on the name.\n const {r, g, b} = this.toRGb(this._title);\n this.setColors(r, g, b);\n }\n\n @Input()\n set tintColor(value: string) {\n const result = this.parseColorFormat(value);\n\n if (!result) {\n return;\n }\n\n const {r, g, b} = result;\n this.setColors(r, g, b);\n }\n\n get src() {\n return this._src;\n }\n\n get color() {\n return this._color;\n }\n\n get backgroundColor() {\n return this._backgroundColor;\n }\n\n get title() {\n return this._title;\n }\n\n get initials() {\n return this._initials;\n }\n\n private setColors(red: number, green: number, blue: number) {\n this._color = `rgb(${red},${green},${blue})`;\n this._backgroundColor = `rgba(${red},${green},${blue}, 0.25)`;\n }\n\n private toRGb = (value: string) => {\n const baseRed = 128;\n const baseGreen = 128;\n const baseBlue = 128;\n\n let seed = value.charCodeAt(0) ^ value.charCodeAt(1);\n const rand_1 = Math.abs((Math.sin(seed++) * 10000)) % 256;\n const rand_2 = Math.abs((Math.sin(seed++) * 10000)) % 256;\n const rand_3 = Math.abs((Math.sin(seed++) * 10000)) % 256;\n\n const r = Math.round((rand_1 + baseRed) / 2);\n const g = Math.round((rand_2 + baseGreen) / 2);\n const b = Math.round((rand_3 + baseBlue) / 2);\n\n return {r, g, b};\n };\n\n private getInitials = (name: string) => {\n // Get all the initials.\n const names = (name || '').split(' ');\n const initials = names.map(name => name.charAt(0).toUpperCase());\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 private parseColorFormat = (value: string) => {\n // Hex 3 values.\n let match = value.match(/^#([0-9a-f]{3})$/i);\n if (match && match[1]) {\n const r = parseInt(match[1].charAt(0), 16) * 0x11;\n const g = parseInt(match[1].charAt(1), 16) * 0x11;\n const b = parseInt(match[1].charAt(2), 16) * 0x11;\n\n return {r, g, b};\n }\n\n // Hex 6 values.\n match = value.match(/^#([0-9a-f]{6})$/i);\n if (match && match[1]) {\n const r = parseInt(match[1].substr(0, 2), 16);\n const g = parseInt(match[1].substr(2, 2), 16);\n const b = parseInt(match[1].substr(4, 2), 16);\n\n return {r, g, b};\n }\n\n // Rgb values.\n match = value.match(/^rgb\\s*\\(\\s*(\\d+)\\s*,\\s*(\\d+)\\s*,\\s*(\\d+)\\s*\\)$/i);\n if (match) {\n const r = parseInt(match[1], 10);\n const g = parseInt(match[2], 10);\n const b = parseInt(match[3], 10);\n\n return {r, g, b};\n }\n\n // Not a supported color format.\n console?.warn?.(`BbAvatar: Unsupported tintColor \"${value}\" was used.`);\n return null;\n };\n\n}\n","<ng-container [ngSwitch]=\"state$ | async\">\n <!-- Image. -->\n <ng-container *ngSwitchCase=\"'image'\">\n <img [src]=\"src\"\n [alt]=\"initials\"\n (error)=\"state$?.next('initials')\"\n class=\"bb-avatar-image\">\n </ng-container>\n\n <!-- Default initials fallback. -->\n <ng-container *ngSwitchDefault>\n {{ initials }}\n </ng-container>\n</ng-container>\n","import {ChangeDetectionStrategy, Component, Inject, Input, Optional, ViewEncapsulation} from '@angular/core';\nimport {ELEMENTS_ICONS, ElementsIcon} from '../elements.interfaces';\nimport {coerceBooleanProperty} from '@bravobit/bb-foundation';\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 '[style.width.px]': 'size',\n '[style.height.px]': 'size',\n '[style.min-width.px]': 'size',\n '[style.min-height.px]': 'size',\n '[style.font-size.px]': 'size'\n },\n preserveWhitespaces: false\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() size: number = 24;\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 @Input()\n set ariaHidden(newValue: boolean) {\n this._ariaHidden = coerceBooleanProperty(newValue);\n }\n\n get ariaHidden() {\n return this._ariaHidden;\n }\n\n private _ariaHidden = true;\n\n constructor(@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 a image icon.\n const imageIcon = this.findImageIcon(namespace, value);\n if (imageIcon) {\n return imageIcon;\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 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","<ng-container *ngIf=\"state$ | async as data\"\n [ngSwitch]=\"data?.type\">\n <i *ngSwitchCase=\"'font'\"\n [attr.data-icon]=\"data?.attribute\"\n [class]=\"data?.className\">\n {{ data?.content }}\n </i>\n <img *ngSwitchCase=\"'image'\"\n [src]=\"data?.src\"\n [alt]=\"alt\">\n <svg *ngSwitchCase=\"'unknown'\"\n viewBox=\"0 0 1 1\">\n <rect x=\"0\" y=\"0\" width=\"1\" height=\"1\" fill=\"#c5c5c5\"></rect>\n </svg>\n</ng-container>\n","import {ChangeDetectionStrategy, Component, EventEmitter, Output, ViewEncapsulation} from '@angular/core';\n\n@Component({\n selector: 'bb-tag',\n templateUrl: './tag.component.html',\n styleUrls: ['./tag.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n preserveWhitespaces: false,\n host: {'class': 'bb-tag'}\n})\nexport class BbTag {\n\n // Outputs.\n @Output() onClose: EventEmitter<void> = new EventEmitter<void>();\n\n}\n","<ng-content></ng-content>\n\n<button *ngIf=\"onClose?.observers?.length > 0\"\n (click)=\"onClose.emit()\"\n type=\"button\">\n Close\n</button>","import {BbDropdown, BbDropdownItem} from './dropdown/dropdown.component';\nimport {ELEMENTS_ERRORS, ELEMENTS_ICONS} from './elements.interfaces';\nimport {BbImagePicker} from './image-picker/image-picker.component';\nimport {BbFormControl} from './form-control/form-control.component';\nimport {BbFilePicker} from './file-picker/file-picker.component';\nimport {BbDatePicker} from './date-picker/date-picker.component';\nimport {LocalizeModule} from '@bravobit/bb-foundation/localize';\nimport {BbPrefix, BbSuffix} from './directives/addon.directive';\nimport {BbFormSubmit} from './directives/form-submit.directive';\nimport {BbInput, BbSelect} from './directives/input.directive';\nimport {BbFormGroup} from './form-group/form-group.component';\nimport {BbFormError} from './form-error/form-error.component';\nimport {BbFocusTrap} from './directives/focus-trap.directive';\nimport {BbAnchor, BbButton} from './button/button.component';\nimport {ModuleWithProviders, NgModule} from '@angular/core';\nimport {BbTemplate} from './directives/template.directive';\nimport {BbAutosize} from './directives/autosize.directive';\nimport {BbRelativeTime} from './pipes/relative-time.pipe';\nimport {BbCheckbox} from './checkbox/checkbox.component';\nimport {BbSpinner} from './spinner/spinner.component';\nimport {BbFocus} from './directives/focus.directive';\nimport {BbFileImage} from './pipes/file-image.pipe';\nimport {ReactiveFormsModule} from '@angular/forms';\nimport {BbAvatar} from './avatar/avatar.component';\nimport {BbFileSize} from './pipes/file-size.pipe';\nimport {CommonModule} from '@angular/common';\nimport {BbIcon} from './icon/icon.component';\nimport {BbTag} from './tag/tag.component';\n\nconst DECLARATIONS_EXPORTS = [\n // Directives.\n BbTemplate,\n BbFormError,\n BbFormSubmit,\n BbInput,\n BbSelect,\n BbFocus,\n BbFocusTrap,\n BbAutosize,\n BbPrefix,\n BbSuffix,\n // Pipes.\n BbFileSize,\n BbFileImage,\n BbRelativeTime,\n // Components.\n BbButton,\n BbAnchor,\n BbSpinner,\n BbIcon,\n BbFormControl,\n BbFormGroup,\n BbCheckbox,\n BbDropdown,\n BbDropdownItem,\n BbTag,\n BbAvatar,\n BbFilePicker,\n BbImagePicker,\n BbDatePicker\n];\n\n@NgModule({\n imports: [CommonModule, ReactiveFormsModule, LocalizeModule],\n declarations: [...DECLARATIONS_EXPORTS],\n exports: [...DECLARATIONS_EXPORTS]\n})\nexport class ElementsModule {\n\n static forRoot(): ModuleWithProviders<ElementsModule> {\n return {\n ngModule: ElementsModule,\n providers: [\n {provide: ELEMENTS_ERRORS, useFactory: getErrors, multi: true},\n ELEMENTS_MATERIAL_ICON\n ]\n };\n }\n\n}\n\nexport const ELEMENTS_MATERIAL_ICON = {\n provide: ELEMENTS_ICONS,\n useValue: {namespace: 'material', className: 'material-icons', uses: 'content', type: 'font'},\n multi: true\n};\n\nexport function getErrors() {\n const data = {\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 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 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 return data;\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["nextUniqueId","BbFilePickerMixinBase"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"bravobit-bb-foundation-elements.mjs","sources":["../../../projects/bb-foundation/elements/src/lib/dropdown/dropdown.component.ts","../../../projects/bb-foundation/elements/src/lib/dropdown/dropdown.component.html","../../../projects/bb-foundation/elements/src/lib/elements.interfaces.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/image-picker/image-picker.component.ts","../../../projects/bb-foundation/elements/src/lib/image-picker/image-picker.component.html","../../../projects/bb-foundation/elements/src/lib/directives/form-submit.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/directives/template.directive.ts","../../../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/pipes/file-image.pipe.ts","../../../projects/bb-foundation/elements/src/lib/pipes/file-size.pipe.ts","../../../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/directives/input.directive.ts","../../../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/directives/addon.directive.ts","../../../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/directives/focus-trap.directive.ts","../../../projects/bb-foundation/elements/src/lib/directives/autosize.directive.ts","../../../projects/bb-foundation/elements/src/lib/pipes/relative-time.pipe.ts","../../../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/directives/focus.directive.ts","../../../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/icon/icon.component.ts","../../../projects/bb-foundation/elements/src/lib/icon/icon.component.html","../../../projects/bb-foundation/elements/src/lib/tag/tag.component.ts","../../../projects/bb-foundation/elements/src/lib/tag/tag.component.html","../../../projects/bb-foundation/elements/src/lib/elements.module.ts","../../../projects/bb-foundation/elements/src/bravobit-bb-foundation-elements.ts"],"sourcesContent":["import {\n ChangeDetectionStrategy,\n Component,\n Directive,\n ElementRef,\n Host,\n HostListener,\n Input,\n Optional,\n ViewEncapsulation\n} from '@angular/core';\nimport {animate, style, transition, trigger} from '@angular/animations';\nimport {BehaviorSubject} from 'rxjs';\n\n@Component({\n selector: 'bb-dropdown',\n templateUrl: './dropdown.component.html',\n styleUrls: ['./dropdown.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {'class': 'bb-dropdown'},\n preserveWhitespaces: false,\n animations: [\n trigger('dropdownMenuAnimation', [\n transition(':enter', [\n // 1. Set the initial state.\n style({opacity: 0, transform: 'scale(0.9)'}),\n // 2. Start the animation to show the item.\n animate('80ms cubic-bezier(0, 0, .2, 1)', style({opacity: 1, transform: 'scale(1)'}))\n ]),\n transition(':leave', [\n // 1. Set the initial state.\n style({opacity: 1, transform: 'scale(1)'}),\n // 2. Start the animation to hide the item.\n animate('80ms cubic-bezier(0, 0, .2, 1)', style({opacity: 0, transform: 'scale(0.9)'}))\n ])\n ])\n ]\n\n})\nexport class BbDropdown {\n\n // State.\n visible$ = new BehaviorSubject<boolean>(false);\n\n constructor(private _elementRef: ElementRef) {\n }\n\n toggle() {\n return this.visible$.next(!this.visible$.getValue());\n }\n\n close() {\n return this.visible$.next(false);\n }\n\n @HostListener('document:click', ['$event.target'])\n onDocumentClick(target: HTMLElement) {\n if (!target) {\n return;\n }\n\n if (this._elementRef?.nativeElement?.contains(target)) {\n return;\n }\n\n return this.close();\n }\n\n}\n\n@Directive({\n selector: '[bbDropdownItem]',\n host: {\n 'class': 'bb-dropdown-item'\n }\n})\nexport class BbDropdownItem {\n\n // Inputs.\n @Input() closeOnClick: boolean = true;\n\n constructor(@Optional() @Host() private _parent?: BbDropdown) {\n }\n\n @HostListener('click')\n onClick() {\n if (!this.closeOnClick) {\n return;\n }\n\n this._parent?.close();\n }\n\n}\n","<button (click)=\"toggle()\"\n [class.opened]=\"visible$ | async\"\n type=\"button\">\n <ng-content></ng-content>\n</button>\n\n<div *ngIf=\"visible$ | async\"\n [@dropdownMenuAnimation]=\"true\"\n class=\"bb-dropdown-menu\"\n role=\"list\">\n <ng-content select=\"[bbDropdownItem], hr\"></ng-content>\n</div>\n","import {InjectionToken} from '@angular/core';\n\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 | 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 ElementsIconUnknown {\n type: 'unknown';\n}\n","import {ChangeDetectionStrategy, Component, Input, ViewEncapsulation} from '@angular/core';\nimport {CanDisable, CanDisableConstructor, mixinDisabled} from '@bravobit/bb-foundation';\n\nclass BbSpinnerBase {\n}\n\nconst BbSpinnerMixinBase: CanDisableConstructor\n & typeof BbSpinnerBase\n = mixinDisabled(BbSpinnerBase);\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 inputs: ['color', 'alt', 'disabled'],\n preserveWhitespaces: false\n})\nexport class BbSpinner extends BbSpinnerMixinBase implements CanDisable {\n\n // Inputs.\n @Input() color: string = '#303f9f';\n @Input() alt: string = 'Loading...';\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 {\n CanLoad,\n CanLoadConstructor,\n mixinLoad,\n CanDisable,\n CanDisableConstructor,\n mixinDisabled\n} from '@bravobit/bb-foundation';\nimport {ChangeDetectionStrategy, Component, ElementRef, Input, ViewEncapsulation} from '@angular/core';\n\nclass BbButtonBase {\n constructor(public _elementRef: ElementRef) {\n }\n}\n\nconst BbButtonMixinBase: CanDisableConstructor & CanLoadConstructor\n & typeof BbButtonBase = mixinDisabled(mixinLoad(BbButtonBase));\n\n@Component({\n selector: 'button[bb-button]',\n templateUrl: './button.component.html',\n styleUrls: ['./button.component.scss'],\n exportAs: 'bbButton',\n host: {\n 'class': 'bb-button',\n '[class.loading]': 'loading',\n '[attr.disabled]': 'disabled || loading || null'\n },\n inputs: ['disabled', 'loading'],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class BbButton extends BbButtonMixinBase implements CanDisable, CanLoad {\n\n get nativeElement() {\n return this._elementRef.nativeElement;\n }\n\n constructor(_elementRef: ElementRef<HTMLButtonElement>) {\n super(_elementRef);\n }\n\n focus() {\n this.nativeElement && this.nativeElement.focus();\n }\n\n}\n\n@Component({\n selector: 'a[bb-button]',\n templateUrl: './button.component.html',\n styleUrls: ['./button.component.scss'],\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 '(click)': 'stopDisabledEvents($event)'\n },\n inputs: ['disabled', 'loading'],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class BbAnchor extends BbButton {\n\n // Inputs.\n @Input() tabIndex: number;\n\n constructor(_elementRef: ElementRef) {\n super(_elementRef);\n }\n\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","<bb-spinner [class.visible]=\"loading\"\n class=\"bb-button-spinner small\">\n</bb-spinner>\n\n<ng-content></ng-content>\n","import {\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n EventEmitter,\n forwardRef,\n Input,\n Output,\n ViewChild,\n ViewEncapsulation\n} from '@angular/core';\nimport {\n ImageConverter,\n CanDisableConstructor,\n mixinDisabled,\n IsGroupedConstructor,\n mixinGrouped\n} from '@bravobit/bb-foundation';\nimport {ControlValueAccessor, NG_VALUE_ACCESSOR} from '@angular/forms';\nimport {BehaviorSubject} from 'rxjs';\nimport {map} from 'rxjs/operators';\n\nclass BbImagePickerBase {\n}\n\nconst BbImagePickerMixinBase: IsGroupedConstructor\n & CanDisableConstructor\n & typeof BbImagePickerBase\n = mixinDisabled(mixinGrouped(BbImagePickerBase));\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 inputs: ['grouped', 'disabled'],\n providers: [{provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => BbImagePicker), multi: true}],\n preserveWhitespaces: false\n})\nexport class BbImagePicker extends BbImagePickerMixinBase 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\n // Form.\n private _value$ = new BehaviorSubject<string | null>(null);\n\n constructor(private _converter: ImageConverter) {\n super();\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 (error) {\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 onTouchedCallback: () => void = () => {\n };\n\n onChangeCallback: (_: string | null) => void = () => {\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\">\n </span>\n\n<button *ngIf=\"label as labelText\"\n (click)=\"openFilePicker()\"\n bb-button\n class=\"bb-image-input-button\"\n type=\"button\">\n {{ labelText }}\n</button>\n","import {distinctUntilChanged, mapTo, 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 mapTo(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 mapTo(false)\n );\n\n // Listen to the submit status.\n this.submitStatus$ = merge(regularSubmitChanges$, reactiveSubmitChanges$, resetChanges$).pipe(\n startWith(false),\n distinctUntilChanged(),\n shareReplay(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 mapTo(true)\n );\n }\n\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n EventEmitter,\n Inject,\n Input,\n OnInit,\n Optional,\n Output,\n ViewEncapsulation\n} from '@angular/core';\nimport {delay, distinctUntilChanged, map, startWith, tap} from 'rxjs/operators';\nimport {ELEMENTS_ERRORS, ElementsError} from '../elements.interfaces';\nimport {BbFormSubmit} from '../directives/form-submit.directive';\nimport {NgControl, ValidationErrors} from '@angular/forms';\nimport {combineLatest, EMPTY, Observable, of} from 'rxjs';\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: {\n 'class': 'bb-form-error'\n },\n preserveWhitespaces: false\n})\nexport class BbFormError implements OnInit {\n\n // Inputs.\n @Input()\n set control(value: NgControl) {\n this._ngControl = value;\n }\n\n get control() {\n return this._ngControl;\n }\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 // Subscriptions.\n private _ngControl: NgControl | null = null;\n\n constructor(@Optional() private _form: BbFormSubmit,\n @Optional() private _control: NgControl,\n @Optional() @Inject(ELEMENTS_ERRORS) private _errors: ElementsError[]) {\n }\n\n ngOnInit() {\n // Set the control if it was not set before.\n if (!this.control) {\n this.control = this._control;\n }\n\n // Listen for the submit changes\n const submitStatus$ = this.submitStatusChanges();\n\n // An observable that emits error changes.\n const errorChanges$ = this.statusChanges().pipe(\n map(() => this.getError(this.control.errors)),\n distinctUntilChanged(),\n map(error => typeof error === 'string' ? {token: error} : error)\n );\n\n // Whenever the user submitted the form we want to\n // listen for any error changes.\n this.error$ = combineLatest([submitStatus$, errorChanges$]).pipe(\n map(([submitted, error]) => {\n // If not submitted return null.\n if (!submitted) {\n return null;\n }\n\n // Return the error if submitted.\n return error;\n }),\n tap(value => this.errorChange.emit(value))\n );\n }\n\n private getError(errors?: ValidationErrors) {\n // Validate the errors exist.\n if (!errors) {\n return null;\n }\n\n // Get the first error in the errors.\n const [errorName] = Object.keys(errors);\n const error = errors[errorName];\n\n // Validate the error exists.\n if (!error) {\n return null;\n }\n\n // Map the arrays into a object so we can\n // access the functions by a key-lookup.\n const errorFunctions = this._errors.reduce((previous, current) => ({...previous, ...current}), {});\n\n // Get the error function.\n const errorFunction = errorFunctions[errorName] || errorFunctions['unknown'];\n\n // Validate the error function exists.\n if (!errorFunction) {\n return null;\n }\n\n // Return the parsed error.\n return errorFunction(error);\n }\n\n private submitStatusChanges() {\n if (!this._form) {\n return of(true);\n }\n\n return this._form.submitStatus$;\n }\n\n private statusChanges() {\n if (!this.control) {\n return EMPTY;\n }\n\n if (!this.control.statusChanges) {\n return EMPTY;\n }\n\n return this.control.statusChanges.pipe(\n startWith(this.control.status as unknown),\n delay(0)\n );\n }\n\n}\n","<ng-container *ngIf=\"error$ | async as error\">\n <p *ngIf=\"error?.token | bbLocalize:{optional: true, data: error?.data} as message\"\n class=\"bb-form-error-message\">\n {{ message }}\n </p>\n</ng-container>","import {Directive, Input, TemplateRef, ViewContainerRef} from '@angular/core';\n\n@Directive({\n selector: '[bbTemplate]'\n})\nexport class BbTemplate {\n\n @Input() set bbTemplate(content: string | TemplateRef<any>) {\n // Get the template.\n const template = content instanceof TemplateRef\n ? content\n : this._templateRef;\n\n // Clear the view container ref and create the view.\n this._viewContainerRef.clear();\n this._viewContainerRef.createEmbeddedView(template);\n }\n\n constructor(private _templateRef: TemplateRef<any>,\n private _viewContainerRef: ViewContainerRef) {\n }\n\n}\n","import {\n IsRequired,\n IsRequiredConstructor,\n mixinRequired,\n CanDisable,\n CanDisableConstructor,\n mixinDisabled,\n IsReadonly,\n IsReadonlyConstructor,\n mixinReadonly,\n IsGrouped,\n IsGroupedConstructor,\n mixinGrouped,\n IsFocused,\n IsFocusedConstructor,\n mixinFocused,\n HasError,\n HasErrorConstructor,\n mixinError,\n CanHideErrors,\n CanHideErrorsConstructor,\n mixinHideErrors\n} from '@bravobit/bb-foundation';\nimport {ChangeDetectionStrategy, Component, ContentChild, Input, TemplateRef, ViewEncapsulation} from '@angular/core';\nimport {NgControl} from '@angular/forms';\n\nlet nextUniqueId = 0;\n\nclass BbFormControlBase {\n}\n\nconst BbFormControlMixinBase: IsRequiredConstructor\n & IsGroupedConstructor\n & IsFocusedConstructor\n & IsReadonlyConstructor\n & CanDisableConstructor\n & HasErrorConstructor\n & CanHideErrorsConstructor\n & typeof BbFormControlBase\n = mixinDisabled(mixinFocused(mixinReadonly(mixinGrouped(mixinRequired(mixinError(mixinHideErrors(BbFormControlBase)))))));\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.readonly]': 'readonly',\n '[class.required]': 'required',\n '[class.disabled]': 'disabled',\n '[class.focused]': 'focused',\n '[class.grouped]': 'grouped',\n '[class.arrow]': 'arrow',\n '[class.error]': 'error'\n },\n inputs: ['grouped', 'hideErrors'],\n preserveWhitespaces: false\n})\nexport class BbFormControl extends BbFormControlMixinBase implements IsRequired, IsFocused, IsReadonly, IsGrouped, CanDisable, HasError, CanHideErrors {\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\n // Data.\n arrow: boolean = false;\n\n // Data.\n labelId = `bb-form-control-${nextUniqueId++}`;\n\n onErrorChange(error: { token: string, data?: any } | null) {\n this.error = !!error;\n }\n\n}\n","<!-- Label of the form control. -->\n<label *ngIf=\"label as labelContent\"\n [attr.for]=\"labelId\"\n class=\"bb-form-control-label\">\n <ng-template [bbTemplate]=\"labelContent\">\n {{ labelContent }}\n </ng-template>\n</label>\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<bb-form-error *ngIf=\"!hideErrors\"\n [control]=\"ngControl\"\n (errorChange)=\"onErrorChange($event)\">\n</bb-form-error>\n\n<!-- The form control hint. -->\n<p *ngIf=\"hint as hintContent\"\n class=\"bb-form-control-hint\">\n <ng-template [bbTemplate]=\"hintContent\">\n {{ hintContent }}\n </ng-template>\n</p>\n","import {ImageConverter, Platform} from '@bravobit/bb-foundation';\nimport {DomSanitizer} from '@angular/platform-browser';\nimport {Pipe, PipeTransform} from '@angular/core';\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/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 {Pipe, PipeTransform} from '@angular/core';\n\n@Pipe({\n name: 'bbFileSize'\n})\nexport class BbFileSize implements PipeTransform {\n\n transform(value: number) {\n return this.format(value);\n }\n\n private format = (value: number, decimals: number = 2) => {\n if (value === 0) {\n return '0 Bytes';\n }\n\n const k = 1024;\n const dm = decimals < 0 ? 0 : decimals;\n const sizes = ['Bytes', 'KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB'];\n\n const index = Math.floor(Math.log(value) / Math.log(k));\n\n return parseFloat((value / Math.pow(k, index)).toFixed(dm)) + ' ' + sizes[index];\n };\n\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n ContentChild,\n ElementRef,\n EventEmitter,\n forwardRef,\n HostListener,\n Input,\n Output,\n TemplateRef,\n ViewChild,\n ViewEncapsulation\n} from '@angular/core';\nimport {\n CanDisable,\n CanDisableConstructor,\n IsGrouped,\n IsGroupedConstructor,\n IsRequired,\n IsRequiredConstructor,\n CanHideErrors,\n CanHideErrorsConstructor,\n HasError,\n HasErrorConstructor,\n mixinDisabled,\n mixinGrouped,\n mixinRequired,\n mixinError,\n mixinHideErrors\n} from '@bravobit/bb-foundation';\nimport {ControlValueAccessor, FormControl, NG_VALIDATORS, NG_VALUE_ACCESSOR} from '@angular/forms';\nimport {animate, style, transition, trigger} from '@angular/animations';\nimport {BehaviorSubject} from 'rxjs';\n\nlet nextUniqueId = 0;\n\nclass BbFilePickerBase {\n}\n\nconst BbFilePickerMixinBase: IsRequiredConstructor\n & CanDisableConstructor\n & IsGroupedConstructor\n & HasErrorConstructor\n & CanHideErrorsConstructor\n & typeof BbFilePickerBase\n = mixinRequired(mixinDisabled(mixinGrouped(mixinError(mixinHideErrors(BbFilePickerBase)))));\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.hovered]': 'hovered',\n '[class.error]': 'error'\n },\n animations: [\n trigger('bbFilePickerImageAnimation', [\n transition(':enter', [\n style({opacity: 0}),\n animate('200ms', style({opacity: 1}))\n ]),\n transition(':leave', [\n animate('200ms', style({opacity: 0}))\n ])\n ])\n ],\n inputs: ['disabled', 'hideErrors', 'grouped', 'required'],\n preserveWhitespaces: false\n})\nexport class BbFilePicker extends BbFilePickerMixinBase implements ControlValueAccessor, IsRequired, CanDisable, IsGrouped, HasError, CanHideErrors {\n\n // Views.\n @ViewChild('fileInput', {static: true}) fileInput: ElementRef<HTMLInputElement>;\n @ContentChild('extra') extraTemplate: TemplateRef<ElementRef>;\n\n // Inputs.\n @Input() label: string | TemplateRef<any> | null = null;\n @Input() hint: string | TemplateRef<any> | null = null;\n @Input() accept: string | null = null;\n @Input() showImages: boolean = true;\n @Input() allowDragging: boolean = true;\n\n // State.\n labelId = `bb-file-picker-${nextUniqueId++}`;\n hovered: boolean = false;\n value$ = new BehaviorSubject<{ file?: File }>({});\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 @HostListener('dragover', ['$event', 'true'])\n @HostListener('dragleave', ['$event', 'false'])\n onDrag(event: Event, isHovered: boolean) {\n // Validate the input can support drag.\n if (!this.allowDragging || this.disabled) {\n return;\n }\n\n // Prevent the default event action\n // and start the hovering.\n this.preventDefault(event);\n this.hovered = isHovered;\n }\n\n @HostListener('drop', ['$event'])\n onDrop(event: Event) {\n // Validate the input can support drag.\n if (!this.allowDragging || this.disabled) {\n return;\n }\n\n // Prevent the default event action\n // and stop the hovering.\n this.preventDefault(event);\n this.hovered = false;\n\n // Save the file.\n this.saveFile(event['dataTransfer'].files);\n\n // Run the on change callback.\n this.onChangeCallback(this.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 // Validate the input is not disabled.\n if (this.disabled) {\n return;\n }\n\n // Extract the file from the event.\n const fileList = this.getFileListFromEvent(event);\n\n // Save the file.\n this.saveFile(fileList);\n\n // Run the on change callback.\n this.onChangeCallback(this.value);\n\n // Clear the file input.\n if (this.fileInput && this.fileInput.nativeElement) {\n this.fileInput.nativeElement.value = '';\n }\n }\n\n onTouchedCallback: () => void = () => {\n };\n\n onChangeCallback: (_: File | null) => void = () => {\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) {\n if (value === null || value === undefined) {\n return null;\n }\n\n const regexString = (this.accept || '*')\n .replace(/\\*/g, '.\\*')\n .replace(/,/g, '|');\n const mimeTypeRegex = new RegExp(regexString);\n\n const isNotValid = (typeof File === 'undefined') || !(value instanceof File) || !mimeTypeRegex.test(value?.type);\n return isNotValid && {\n invalidFileType: true\n };\n }\n\n private saveFile = (files?: FileList) => {\n // Validate the files exist.\n if (!files) {\n return;\n }\n\n // Retrieve the first file.\n const file = files[0];\n\n // Validate the first file exists.\n if (!file) {\n return;\n }\n\n // Save the file.\n this.value = file;\n };\n\n private getFileListFromEvent = (event: Event) => {\n const element = event.target as HTMLInputElement;\n\n if (!element) {\n return null;\n }\n\n return element.files;\n };\n\n private preventDefault = (event: Event) => {\n event.preventDefault();\n event.stopPropagation();\n };\n\n}\n","<!-- The label of the input. -->\n<label *ngIf=\"label as labelContent\"\n [for]=\"labelId\"\n class=\"bb-file-picker-label\">\n <ng-template [bbTemplate]=\"labelContent\">\n {{ labelContent }}\n </ng-template>\n</label>\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<div *ngIf=\"value$ | async as data\"\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 [class.standalone]=\"!allowDragging\"\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 *ngIf=\"allowDragging\"\n class=\"bb-file-picker-zone\">\n {{ 'file-picker.drop' | bbLocalize }}\n </div>\n </div>\n\n <ng-container *ngIf=\"!!extraTemplate\">\n <ng-container *ngTemplateOutlet=\"extraTemplate; context: {$implicit: data?.file}\"></ng-container>\n </ng-container>\n\n <ng-container *ngIf=\"showImages\">\n <div *ngIf=\"data?.file | bbFileImage | async as image\"\n class=\"bb-file-picker-image-container\">\n <div class=\"bb-file-picker-image-wrapper\">\n <div [@bbFilePickerImageAnimation]=\"true\"\n [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 </ng-container>\n\n <!-- Extra information of the file. -->\n <div [class.visible]=\"!!data?.file\"\n class=\"bb-file-picker-info\">\n <span *ngIf=\"data?.file?.name as name\">{{ name }}</span>\n <span *ngIf=\"data?.file?.size as size\">{{ size | bbFileSize }}</span>\n </div>\n</div>\n\n<bb-form-error *ngIf=\"!hideErrors\"\n (errorChange)=\"onErrorChange($event)\">\n</bb-form-error>\n\n<!-- The file picker hint. -->\n<p *ngIf=\"hint as hintContent\"\n class=\"bb-file-picker-hint\">\n <ng-template [bbTemplate]=\"hintContent\">\n {{ hintContent }}\n </ng-template>\n</p>\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=\"24\"\n height=\"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=\"24\"\n height=\"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 {\n Directive,\n DoCheck,\n ElementRef,\n Host,\n HostBinding,\n Input,\n OnDestroy,\n OnInit,\n Optional,\n Self\n} from '@angular/core';\nimport {BbFormControl} from '../form-control/form-control.component';\nimport {coerceBooleanProperty} from '@angular/cdk/coercion';\nimport {NgControl} from '@angular/forms';\nimport {Subscription} from 'rxjs';\n\n@Directive({\n selector: 'select[bbInput]',\n host: {\n '[disabled]': 'disabled',\n '(focus)': 'setFocus(true)',\n '(blur)': 'setFocus(false)'\n }\n})\nexport class BbSelect implements OnInit, DoCheck, OnDestroy {\n\n protected hasArrow: boolean = true;\n\n private _subscription: Subscription;\n\n constructor(protected _elementRef: ElementRef,\n @Optional() @Self() protected _ngControl: NgControl,\n @Optional() @Host() protected _formControl: BbFormControl) {\n }\n\n ngOnInit() {\n // Set an arrow on the form control if\n // it requires one.\n this._formControl.arrow = this.hasArrow;\n }\n\n ngDoCheck() {\n if (this._ngControl) {\n this.disabled = this._ngControl.disabled;\n }\n }\n\n ngOnDestroy() {\n this._subscription?.unsubscribe();\n }\n\n focus() {\n return this._elementRef?.nativeElement?.focus();\n }\n\n setFocus(hasFocus: boolean) {\n if (!this._formControl) {\n return;\n }\n\n this._formControl.focused = hasFocus;\n }\n\n @HostBinding('attr.id')\n get id() {\n return this._formControl?.labelId ?? null;\n }\n\n get disabled() {\n if (this._ngControl && this._ngControl.disabled !== null) {\n return this._ngControl.disabled;\n }\n\n return this._disabled;\n }\n\n @Input()\n set disabled(newValue: boolean) {\n this._disabled = coerceBooleanProperty(newValue);\n\n if (!this._formControl) {\n return;\n }\n\n this._formControl.disabled = this._disabled;\n }\n\n private _disabled = false;\n\n get required() {\n return this._required;\n }\n\n @Input()\n set required(newValue: boolean) {\n this._required = coerceBooleanProperty(newValue);\n\n if (!this._formControl) {\n return;\n }\n\n this._formControl.required = this._required;\n }\n\n private _required = false;\n\n}\n\n@Directive({\n selector: 'input[bbInput], textarea[bbInput]',\n host: {\n '[disabled]': 'disabled',\n '[readonly]': 'readonly',\n '(focus)': 'setFocus(true)',\n '(blur)': 'setFocus(false)'\n }\n})\nexport class BbInput extends BbSelect {\n\n protected override hasArrow: boolean = false;\n\n constructor(protected override _elementRef: ElementRef,\n @Optional() @Self() protected override _ngControl: NgControl,\n @Optional() @Host() protected override _formControl: BbFormControl) {\n super(_elementRef, _ngControl, _formControl);\n }\n\n get readonly() {\n return this._readonly;\n }\n\n @Input()\n set readonly(newValue: boolean) {\n this._readonly = coerceBooleanProperty(newValue);\n\n if (!this._formControl) {\n return;\n }\n\n this._formControl.readonly = this._readonly;\n }\n\n private _readonly = false;\n\n}\n","import {\n CanDisable,\n CanDisableConstructor,\n CanHideErrors,\n CanHideErrorsConstructor,\n HasError,\n HasErrorConstructor,\n IsGrouped,\n IsGroupedConstructor,\n IsReadonly,\n IsReadonlyConstructor,\n IsRequired,\n IsRequiredConstructor,\n mixinDisabled,\n mixinError,\n mixinGrouped,\n mixinHideErrors,\n mixinReadonly,\n mixinRequired\n} from '@bravobit/bb-foundation';\nimport {\n ChangeDetectionStrategy,\n Component,\n EventEmitter,\n forwardRef,\n Inject,\n Input,\n LOCALE_ID,\n OnDestroy,\n OnInit,\n Output,\n TemplateRef,\n ViewEncapsulation\n} from '@angular/core';\nimport {\n ControlValueAccessor,\n FormControl,\n FormGroup,\n NG_VALIDATORS,\n NG_VALUE_ACCESSOR,\n Validators\n} from '@angular/forms';\nimport {BehaviorSubject, combineLatest, Observable, of, Subscription} from 'rxjs';\nimport {distinctUntilChanged, map, startWith, tap} from 'rxjs/operators';\nimport {formatDate} from '@angular/common';\n\nclass BbDatePickerBase {\n}\n\nconst BbFilePickerMixinBase: IsRequiredConstructor\n & IsReadonlyConstructor\n & CanDisableConstructor\n & IsGroupedConstructor\n & HasErrorConstructor\n & CanHideErrorsConstructor\n & typeof BbDatePickerBase\n = mixinRequired(mixinReadonly(mixinDisabled(mixinGrouped(mixinError(mixinHideErrors(BbDatePickerBase))))));\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 {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => BbDatePicker),\n multi: true\n },\n {\n provide: NG_VALIDATORS,\n useExisting: BbDatePicker,\n multi: true\n }\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 inputs: ['required', 'readonly', 'disabled', 'grouped', 'hideErrors'],\n preserveWhitespaces: false\n})\nexport class BbDatePicker extends BbFilePickerMixinBase implements ControlValueAccessor, OnInit, OnDestroy, IsRequired, IsReadonly, CanDisable, IsGrouped, HasError, CanHideErrors {\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\n @Input()\n set years(value: [string | number, string | number] | null) {\n this.parseYears(value);\n }\n\n // Forms.\n form: FormGroup;\n trackByValue = (_, item) => item?.value;\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 // Subscriptions.\n private _subscription = new Subscription();\n\n constructor(@Inject(LOCALE_ID) private _localeId: string) {\n super();\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 if (this.disabled) {\n this.form?.disable();\n } else {\n this.form?.enable();\n }\n }\n\n onTouchedCallback: () => void = () => {\n };\n\n onChangeCallback: (_: string | null) => void = () => {\n };\n\n onErrorChange(error: { token: string, data?: any } | null) {\n this.error = !!error;\n }\n\n validate({value}: FormControl) {\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 const array = Array(12).fill(0).map((_, month) => {\n const date = new Date(2000, month, 1);\n const label = formatDate(date, 'LLLL', this._localeId);\n return {label, value: month + 1};\n });\n return of(array);\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(null, required),\n month: new FormControl(null, required),\n year: new FormControl(null, yearValidators)\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 = ({year, month, day}) => {\n if (this.form?.invalid) {\n return null;\n }\n\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<label *ngIf=\"label as labelContent\"\n class=\"bb-date-picker-label\">\n <ng-template [bbTemplate]=\"labelContent\">\n {{ labelContent }}\n </ng-template>\n</label>\n\n<!-- The form containing the year/month/day fields. -->\n<form *ngIf=\"data$ | async as data\"\n [formGroup]=\"form\"\n class=\"bb-date-picker-container\"\n novalidate>\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 <option *ngFor=\"let day of data?.days; trackBy: trackByValue\"\n [ngValue]=\"day?.value\">\n {{ day?.label }}\n </option>\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 <option *ngFor=\"let month of data?.months; trackBy: trackByValue\"\n [ngValue]=\"month?.value\">\n {{ month?.label }}\n </option>\n </select>\n </bb-form-control>\n </div>\n <div class=\"bb-date-picker-item\">\n <bb-form-control hideErrors>\n <select *ngIf=\"data?.years?.length > 0; else defaultYearInputTemplate\"\n [class.has-value]=\"!!form?.get('year')?.value\"\n bbInput\n autocomplete=\"off\"\n formControlName=\"year\">\n <option [ngValue]=\"null\">{{ yearPlaceholder }}</option>\n <option *ngFor=\"let year of data?.years\"\n [value]=\"year\">\n {{ year }}\n </option>\n </select>\n\n <ng-template #defaultYearInputTemplate>\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 </ng-template>\n </bb-form-control>\n </div>\n</form>\n\n<!-- The date picker error. -->\n<bb-form-error *ngIf=\"!hideErrors\"\n (errorChange)=\"onErrorChange($event)\">\n</bb-form-error>\n\n<!-- The date picker hint. -->\n<p *ngIf=\"hint as hintContent\"\n class=\"bb-date-picker-hint\">\n <ng-template [bbTemplate]=\"hintContent\">\n {{ hintContent }}\n </ng-template>\n</p>\n","import {Directive} from '@angular/core';\n\n@Directive({\n selector: '[bbSuffix]',\n host: {\n 'class': 'bb-suffix'\n }\n})\nexport class BbSuffix {\n}\n\n@Directive({\n selector: '[bbPrefix]',\n host: {\n 'class': 'bb-prefix'\n }\n})\nexport class BbPrefix {\n}\n","import {IsGrouped, IsGroupedConstructor, mixinGrouped} from '@bravobit/bb-foundation';\nimport {ChangeDetectionStrategy, Component, ViewEncapsulation} from '@angular/core';\n\nclass BbFormGroupBase {\n}\n\nconst BbFormGroupMixinBase: IsGroupedConstructor\n & typeof BbFormGroupBase\n = mixinGrouped(BbFormGroupBase);\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 inputs: ['grouped'],\n preserveWhitespaces: false\n})\nexport class BbFormGroup extends BbFormGroupMixinBase implements IsGrouped {\n}\n","<ng-content></ng-content>\n","import {Directive, ElementRef, HostListener} from '@angular/core';\nimport {Platform} from '@bravobit/bb-foundation';\n\n@Directive({\n selector: '[bbFocusTrap]'\n})\nexport class BbFocusTrap {\n\n private readonly _focusableElements = [\n 'a[href]',\n 'area[href]',\n 'input:not([disabled]):not([type=\"hidden\"]):not([aria-hidden])',\n 'select:not([disabled]):not([aria-hidden])',\n 'textarea:not([disabled]):not([aria-hidden])',\n 'button:not([disabled]):not([aria-hidden])',\n 'iframe',\n 'object',\n 'embed',\n '[contenteditable]',\n '[tabindex]:not([tabindex^=\"-\"])'\n ];\n\n constructor(private _platform: Platform,\n private _elementRef: ElementRef) {\n }\n\n @HostListener('keydown', ['$event'])\n onKeydown(event: KeyboardEvent) {\n // Validate it is a tab event.\n if (!this.isTabEvent(event)) {\n return;\n }\n\n // Trap the focus inside the element.\n return this.trapFocus(event);\n }\n\n trapFocus(event: KeyboardEvent) {\n // Validate that the DOM is available.\n if (!this._platform.isBrowser) {\n return;\n }\n\n // Get all focusable nodes.\n const focusableNodes = this.getFocusableNodes();\n\n // Focus the first available element if the focus\n // is not in the modal.\n if (!this.element.contains(document.activeElement)) {\n return this.focus(focusableNodes[0]);\n }\n\n const focusedItemIndex = focusableNodes.indexOf(document.activeElement);\n\n if (event.shiftKey && focusedItemIndex === 0) {\n this.focus(focusableNodes[focusableNodes.length - 1]);\n return event.preventDefault();\n }\n\n if (!event.shiftKey && focusedItemIndex === focusableNodes.length - 1) {\n this.focus(focusableNodes[0]);\n return event.preventDefault();\n }\n }\n\n private get element() {\n return this._elementRef.nativeElement;\n }\n\n private getFocusableNodes() {\n const nodes = this.element.querySelectorAll(this._focusableElements);\n return Array(...nodes);\n }\n\n private focus = (element: HTMLElement) => {\n return element && element.focus && element.focus();\n };\n\n private isTabEvent = (event: KeyboardEvent) => {\n return event.key === 'Tab' || event.keyCode === 9;\n };\n\n}\n","import {AfterViewInit, Directive, ElementRef, HostBinding, HostListener, Input, Renderer2} from '@angular/core';\n\n@Directive({\n selector: 'textarea[bbAutosize]'\n})\nexport class BbAutosize implements AfterViewInit {\n\n // Min/max heights for the textarea.\n @Input() @HostBinding('style.min-height') minHeight: string | null = null;\n @Input() @HostBinding('style.max-height') maxHeight: string | null = null;\n @Input() @HostBinding('rows') rows: number = 1;\n\n constructor(private _renderer: Renderer2,\n private _elementRef: ElementRef) {\n }\n\n get element() {\n return this._elementRef?.nativeElement as HTMLTextAreaElement;\n }\n\n ngAfterViewInit() {\n // Update the styles after the DOM has loaded.\n this.updateStyles();\n }\n\n @HostListener('window:resize')\n onWindowResize() {\n // Update the styles when the window is resized.\n this.updateStyles();\n }\n\n @HostListener('input')\n onInputReceived() {\n // Update the styles after the textarea received input.\n this.updateStyles();\n }\n\n private updateStyles() {\n // Validate the element exists.\n if (!this.element) {\n return;\n }\n\n // Calculate border height which is not included in the scroll height.\n const borderHeight = this.element?.offsetHeight - this.element?.clientHeight;\n\n // Reset textarea height to auto that correctly calculate the new height.\n this.setHeight('auto');\n\n // Set new height.\n this.setHeight(`${this.element?.scrollHeight + borderHeight}px`);\n }\n\n private setHeight(value: string) {\n this._renderer.setStyle(this.element, 'height', value);\n }\n\n}\n","import {Inject, LOCALE_ID, Optional, Pipe, PipeTransform} from '@angular/core';\nimport {Localize} from '@bravobit/bb-foundation/localize';\nimport {DatePipe} from '@angular/common';\n\n@Pipe({\n name: 'bbRelativeTime'\n})\nexport class BbRelativeTime implements PipeTransform {\n\n private readonly _datePipe: DatePipe;\n\n constructor(@Optional() private _localize: Localize,\n @Inject(LOCALE_ID) private _localeId: string) {\n this._datePipe = new DatePipe(this._localeId);\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 this._datePipe.transform(date, 'mediumDate');\n }\n\n // Return the translated formatting.\n return this._localize.translate({\n token: token,\n data: {date: this._datePipe.transform(date, format)}\n });\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 {\n CanDisable,\n CanDisableConstructor,\n mixinDisabled,\n IsGrouped,\n IsGroupedConstructor,\n mixinGrouped\n} from '@bravobit/bb-foundation';\nimport {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n forwardRef,\n Input,\n ViewEncapsulation\n} from '@angular/core';\nimport {ControlValueAccessor, NG_VALUE_ACCESSOR} from '@angular/forms';\nimport {coerceBooleanProperty} from '@angular/cdk/coercion';\n\nlet nextUniqueId = 0;\n\nclass BbCheckboxBase {\n}\n\nconst BbCheckboxMixinBase: IsGroupedConstructor\n & CanDisableConstructor\n & typeof BbCheckboxBase\n = mixinDisabled(mixinGrouped(BbCheckboxBase));\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.grouped]': 'grouped'\n },\n inputs: ['grouped', 'disabled'],\n preserveWhitespaces: false\n})\nexport class BbCheckbox extends BbCheckboxMixinBase implements ControlValueAccessor, IsGrouped, CanDisable {\n\n // Data.\n labelId = `bb-checkbox-${nextUniqueId++}`;\n\n // Inputs.\n @Input() tabIndex: number;\n\n get checked() {\n return this._checked;\n }\n\n @Input()\n set checked(value: any) {\n this._checked = coerceBooleanProperty(value);\n this._changeDetection.markForCheck();\n }\n\n private _checked: boolean = false;\n\n constructor(private _changeDetection: ChangeDetectorRef) {\n super();\n }\n\n // Methods.\n onChange: (newValue: boolean) => void = () => {\n };\n\n onTouched: () => void = () => {\n };\n\n registerOnChange(fn: any): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: any): void {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean) {\n this.disabled = isDisabled;\n this._changeDetection.markForCheck();\n }\n\n writeValue(newValue: boolean) {\n this.checked = newValue;\n }\n\n onInteractionEvent(event: Event) {\n // Stop the propagation to prevent it from bubbling up.\n event.stopPropagation();\n }\n\n onInputClick(event: Event) {\n // Stop the propagation to prevent it from bubbling up.\n event.stopPropagation();\n\n // Toggle the value.\n this.checked = !this.checked;\n\n // Emit the change event.\n this.onChange && this.onChange(this.checked);\n }\n\n}\n","<input [id]=\"labelId\"\n [checked]=\"checked\"\n [disabled]=\"disabled\"\n (change)=\"onInteractionEvent($event)\"\n (click)=\"onInputClick($event)\"\n class=\"bb-checkbox-input\"\n tabindex=\"-1\"\n type=\"checkbox\">\n\n<label [for]=\"labelId\"\n [attr.tabindex]=\"disabled ? -1 : (tabIndex || 0)\"\n (keyup.space)=\"onInputClick($event)\"\n class=\"bb-checkbox-label\">\n <span>\n <svg width=\"12px\"\n height=\"10px\"\n viewbox=\"0 0 12 10\">\n <polyline points=\"1.5 6 4.5 9 10.5 1\"></polyline>\n </svg>\n </span>\n <span>\n <ng-content></ng-content>\n </span>\n</label>\n","import {AfterViewInit, Directive, ElementRef, NgZone} from '@angular/core';\nimport {Platform} from '@bravobit/bb-foundation';\n\n@Directive({\n selector: '[bbFocus]'\n})\nexport class BbFocus implements AfterViewInit {\n\n constructor(private _zone: NgZone,\n private _platform: Platform,\n private _elementRef: ElementRef) {\n }\n\n private get nativeElement() {\n return this._elementRef.nativeElement;\n }\n\n ngAfterViewInit() {\n // Run the method outside the Angular zone.\n this._zone.runOutsideAngular(() => this.focus());\n }\n\n private focus() {\n // Check if set timeout exists and the user is\n // using the site on desktop devices.\n if (!this._platform.isDesktop || !setTimeout) {\n return;\n }\n\n // Check if the element and the focus method exist, if so focus the element.\n if (!this.nativeElement || !this.nativeElement.focus) {\n return;\n }\n\n // Execute the focus method in a timeout.\n setTimeout(() => this.nativeElement.focus(), 0);\n }\n\n}\n","import {ChangeDetectionStrategy, Component, HostBinding, Input, ViewEncapsulation} from '@angular/core';\nimport {BehaviorSubject} from 'rxjs';\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 preserveWhitespaces: false,\n host: {\n 'class': 'bb-avatar',\n 'role': 'img',\n '[style.width.px]': 'size',\n '[style.height.px]': 'size',\n '[style.font-size.px]': 'size / 2',\n '[style.color]': 'color',\n '[style.background-color]': 'backgroundColor'\n }\n})\nexport class BbAvatar {\n\n // Inputs.\n @Input() size: number = 40;\n\n // State.\n state$ = new BehaviorSubject<string>('initials');\n\n // Data.\n private _src: string | null = null;\n private _title: string | null = null;\n private _initials: string = '!';\n private _color: string = 'rgb(255, 255, 255)';\n private _backgroundColor: string = 'rgb(66, 66, 66)';\n\n @Input()\n set src(value: string) {\n this._src = value;\n\n if (this._src) {\n this.state$.next('image');\n }\n }\n\n @Input()\n @HostBinding('attr.title')\n set title(value: string) {\n // Set the title and the initials.\n this._title = value || '!';\n this._initials = this.getInitials(this._title);\n\n // Generate the colors based on the name.\n const {r, g, b} = this.toRGb(this._title);\n this.setColors(r, g, b);\n }\n\n @Input()\n set tintColor(value: string) {\n const result = this.parseColorFormat(value);\n\n if (!result) {\n return;\n }\n\n const {r, g, b} = result;\n this.setColors(r, g, b);\n }\n\n get src() {\n return this._src;\n }\n\n get color() {\n return this._color;\n }\n\n get backgroundColor() {\n return this._backgroundColor;\n }\n\n get title() {\n return this._title;\n }\n\n get initials() {\n return this._initials;\n }\n\n private setColors(red: number, green: number, blue: number) {\n this._color = `rgb(${red},${green},${blue})`;\n this._backgroundColor = `rgba(${red},${green},${blue}, 0.25)`;\n }\n\n private toRGb = (value: string) => {\n const baseRed = 128;\n const baseGreen = 128;\n const baseBlue = 128;\n\n let seed = value.charCodeAt(0) ^ value.charCodeAt(1);\n const rand_1 = Math.abs((Math.sin(seed++) * 10000)) % 256;\n const rand_2 = Math.abs((Math.sin(seed++) * 10000)) % 256;\n const rand_3 = Math.abs((Math.sin(seed++) * 10000)) % 256;\n\n const r = Math.round((rand_1 + baseRed) / 2);\n const g = Math.round((rand_2 + baseGreen) / 2);\n const b = Math.round((rand_3 + baseBlue) / 2);\n\n return {r, g, b};\n };\n\n private getInitials = (name: string) => {\n // Get all the initials.\n const names = (name || '').split(' ');\n const initials = names.map(name => name.charAt(0).toUpperCase());\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 private parseColorFormat = (value: string) => {\n // Hex 3 values.\n let match = value.match(/^#([0-9a-f]{3})$/i);\n if (match && match[1]) {\n const r = parseInt(match[1].charAt(0), 16) * 0x11;\n const g = parseInt(match[1].charAt(1), 16) * 0x11;\n const b = parseInt(match[1].charAt(2), 16) * 0x11;\n\n return {r, g, b};\n }\n\n // Hex 6 values.\n match = value.match(/^#([0-9a-f]{6})$/i);\n if (match && match[1]) {\n const r = parseInt(match[1].substr(0, 2), 16);\n const g = parseInt(match[1].substr(2, 2), 16);\n const b = parseInt(match[1].substr(4, 2), 16);\n\n return {r, g, b};\n }\n\n // Rgb values.\n match = value.match(/^rgb\\s*\\(\\s*(\\d+)\\s*,\\s*(\\d+)\\s*,\\s*(\\d+)\\s*\\)$/i);\n if (match) {\n const r = parseInt(match[1], 10);\n const g = parseInt(match[2], 10);\n const b = parseInt(match[3], 10);\n\n return {r, g, b};\n }\n\n // Not a supported color format.\n console?.warn?.(`BbAvatar: Unsupported tintColor \"${value}\" was used.`);\n return null;\n };\n\n}\n","<ng-container [ngSwitch]=\"state$ | async\">\n <!-- Image. -->\n <ng-container *ngSwitchCase=\"'image'\">\n <img [src]=\"src\"\n [alt]=\"initials\"\n (error)=\"state$?.next('initials')\"\n class=\"bb-avatar-image\">\n </ng-container>\n\n <!-- Default initials fallback. -->\n <ng-container *ngSwitchDefault>\n {{ initials }}\n </ng-container>\n</ng-container>\n","import {ChangeDetectionStrategy, Component, Inject, Input, Optional, ViewEncapsulation} from '@angular/core';\nimport {ELEMENTS_ICONS, ElementsIcon} from '../elements.interfaces';\nimport {coerceBooleanProperty} from '@angular/cdk/coercion';\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 '[style.width.px]': 'size',\n '[style.height.px]': 'size',\n '[style.min-width.px]': 'size',\n '[style.min-height.px]': 'size',\n '[style.font-size.px]': 'size'\n },\n preserveWhitespaces: false\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() size: number = 24;\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 @Input()\n set ariaHidden(newValue: boolean) {\n this._ariaHidden = coerceBooleanProperty(newValue);\n }\n\n get ariaHidden() {\n return this._ariaHidden;\n }\n\n private _ariaHidden = true;\n\n constructor(@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 a image icon.\n const imageIcon = this.findImageIcon(namespace, value);\n if (imageIcon) {\n return imageIcon;\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 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","<ng-container *ngIf=\"state$ | async as data\"\n [ngSwitch]=\"data?.type\">\n <i *ngSwitchCase=\"'font'\"\n [attr.data-icon]=\"data?.attribute\"\n [class]=\"data?.className\">\n {{ data?.content }}\n </i>\n <img *ngSwitchCase=\"'image'\"\n [src]=\"data?.src\"\n [alt]=\"alt\">\n <svg *ngSwitchCase=\"'unknown'\"\n viewBox=\"0 0 1 1\">\n <rect x=\"0\" y=\"0\" width=\"1\" height=\"1\" fill=\"#c5c5c5\"></rect>\n </svg>\n</ng-container>\n","import {ChangeDetectionStrategy, Component, EventEmitter, Output, ViewEncapsulation} from '@angular/core';\n\n@Component({\n selector: 'bb-tag',\n templateUrl: './tag.component.html',\n styleUrls: ['./tag.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n preserveWhitespaces: false,\n host: {'class': 'bb-tag'}\n})\nexport class BbTag {\n\n // Outputs.\n @Output() onClose: EventEmitter<void> = new EventEmitter<void>();\n\n}\n","<ng-content></ng-content>\n\n<button *ngIf=\"onClose?.observers?.length > 0\"\n (click)=\"onClose.emit()\"\n type=\"button\">\n Close\n</button>","import {BbDropdown, BbDropdownItem} from './dropdown/dropdown.component';\nimport {ELEMENTS_ERRORS, ELEMENTS_ICONS} from './elements.interfaces';\nimport {BbImagePicker} from './image-picker/image-picker.component';\nimport {BbFormControl} from './form-control/form-control.component';\nimport {BbFilePicker} from './file-picker/file-picker.component';\nimport {BbDatePicker} from './date-picker/date-picker.component';\nimport {LocalizeModule} from '@bravobit/bb-foundation/localize';\nimport {BbPrefix, BbSuffix} from './directives/addon.directive';\nimport {BbFormSubmit} from './directives/form-submit.directive';\nimport {BbInput, BbSelect} from './directives/input.directive';\nimport {BbFormGroup} from './form-group/form-group.component';\nimport {BbFormError} from './form-error/form-error.component';\nimport {BbFocusTrap} from './directives/focus-trap.directive';\nimport {BbAnchor, BbButton} from './button/button.component';\nimport {ModuleWithProviders, NgModule} from '@angular/core';\nimport {BbTemplate} from './directives/template.directive';\nimport {BbAutosize} from './directives/autosize.directive';\nimport {BbRelativeTime} from './pipes/relative-time.pipe';\nimport {BbCheckbox} from './checkbox/checkbox.component';\nimport {BbSpinner} from './spinner/spinner.component';\nimport {BbFocus} from './directives/focus.directive';\nimport {BbFileImage} from './pipes/file-image.pipe';\nimport {ReactiveFormsModule} from '@angular/forms';\nimport {BbAvatar} from './avatar/avatar.component';\nimport {BbFileSize} from './pipes/file-size.pipe';\nimport {CommonModule} from '@angular/common';\nimport {BbIcon} from './icon/icon.component';\nimport {BbTag} from './tag/tag.component';\n\nconst DECLARATIONS_EXPORTS = [\n // Directives.\n BbTemplate,\n BbFormError,\n BbFormSubmit,\n BbInput,\n BbSelect,\n BbFocus,\n BbFocusTrap,\n BbAutosize,\n BbPrefix,\n BbSuffix,\n // Pipes.\n BbFileSize,\n BbFileImage,\n BbRelativeTime,\n // Components.\n BbButton,\n BbAnchor,\n BbSpinner,\n BbIcon,\n BbFormControl,\n BbFormGroup,\n BbCheckbox,\n BbDropdown,\n BbDropdownItem,\n BbTag,\n BbAvatar,\n BbFilePicker,\n BbImagePicker,\n BbDatePicker\n];\n\n@NgModule({\n imports: [CommonModule, ReactiveFormsModule, LocalizeModule],\n declarations: [...DECLARATIONS_EXPORTS],\n exports: [...DECLARATIONS_EXPORTS]\n})\nexport class ElementsModule {\n\n static forRoot(): ModuleWithProviders<ElementsModule> {\n return {\n ngModule: ElementsModule,\n providers: [\n {provide: ELEMENTS_ERRORS, useFactory: getErrors, multi: true},\n ELEMENTS_MATERIAL_ICON\n ]\n };\n }\n\n}\n\nexport const ELEMENTS_MATERIAL_ICON = {\n provide: ELEMENTS_ICONS,\n useValue: {namespace: 'material', className: 'material-icons', uses: 'content', type: 'font'},\n multi: true\n};\n\nexport function getErrors() {\n const data = {\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 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 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 return data;\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["nextUniqueId","BbFilePickerMixinBase"],"mappings":"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"}
|