{"version":3,"file":"angular-extensions-controls-base-control.mjs","sources":["../../../projects/angular-extensions/controls/base-control/src/base-control.component.ts","../../../projects/angular-extensions/controls/base-control/src/base-control.component.html","../../../projects/angular-extensions/controls/base-control/src/validation-control.component.ts","../../../projects/angular-extensions/controls/base-control/src/ngx-base-control.module.ts","../../../projects/angular-extensions/controls/base-control/src/angular-extensions-controls-base-control.ts"],"sourcesContent":["import { merge, Subject, BehaviorSubject } from \"rxjs\";\r\nimport { debounceTime, switchMap, takeUntil, tap } from \"rxjs/operators\";\r\nimport { MatFormField, MatFormFieldAppearance } from \"@angular/material/form-field\";\r\nimport { MatInput } from \"@angular/material/input\";\r\n\r\nimport {\r\n  Component, Input, ViewChild, TemplateRef, ChangeDetectionStrategy, ChangeDetectorRef,\r\n  OnInit, OnDestroy, ViewEncapsulation, AfterViewInit, Directive, HostBinding, ContentChild, ElementRef, EventEmitter,\r\n} from \"@angular/core\";\r\n\r\nimport { Field } from \"angular-extensions/models\";\r\n\r\nexport interface ActionableControl {\r\n\r\n  actionButtonVisible: boolean;\r\n\r\n  actionButtonIcon?: string;\r\n\r\n  actionButtonTooltip?: string;\r\n\r\n  actionButton: EventEmitter<Field<any>>;\r\n}\r\n\r\n@Directive()\r\nexport class ControlBase<TValue, TOption = any, TOptionGroup = any, TFormattedValue = any, TControlValue = TValue> implements OnDestroy {\r\n\r\n  @HostBinding(\"class\")\r\n  public class = \"control\";\r\n\r\n  @HostBinding(\"class.d-none\")\r\n  public get visible() {\r\n    return !this.field?.visible;\r\n  }\r\n\r\n  public get field() {\r\n    return this.fieldSubject.value;\r\n  }\r\n\r\n  @Input()\r\n  public set field(value: Field<TValue, TOption, TOptionGroup, TFormattedValue, TControlValue>) {\r\n    this.fieldSubject.next(value);\r\n  }\r\n\r\n  @Input()\r\n  public fieldClass: string;\r\n\r\n  @Input()\r\n  public hintClass: string;\r\n\r\n  @Input()\r\n  public appearance: MatFormFieldAppearance = \"outline\";\r\n\r\n  @Input()\r\n  public focused = false;\r\n\r\n  @ViewChild(MatInput, { static: true })\r\n  public input?: MatInput;\r\n\r\n  private fieldSubject = new BehaviorSubject<Field<TValue, TOption, TOptionGroup, TFormattedValue, TControlValue>>(null);\r\n\r\n  protected destroy$ = new Subject();\r\n\r\n  public field$ = this.fieldSubject.asObservable().pipe(takeUntil(this.destroy$));\r\n\r\n  public focus() {\r\n    this.input?.focus();\r\n  }\r\n\r\n  public blur() {\r\n    if (this.input) {\r\n      this.input.focused = false;\r\n    }\r\n  }\r\n\r\n  public ngOnDestroy() {\r\n    this.destroy$.next(null);\r\n    this.destroy$.complete();\r\n\r\n    if (this.field.destoryWith == \"control\") {\r\n      this.field.destroy();\r\n    }\r\n  }\r\n}\r\n\r\n@Component({\r\n  selector: \"base-control\",\r\n  templateUrl: \"./base-control.component.html\",\r\n  styleUrls: [\"./base-control.component.scss\"],\r\n  encapsulation: ViewEncapsulation.None,\r\n  changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class BaseControlComponent<TValue, TOption = any, TOptionGroup = any, TFormattedValue = any, TControlValue = any>\r\n  implements OnInit, AfterViewInit {\r\n\r\n  @Input()\r\n  public control: ControlBase<TValue, TOption, TOptionGroup, TFormattedValue, TControlValue>;\r\n\r\n  @ViewChild(\"hintTemplate\", { static: true })\r\n  public hintTemplate: TemplateRef<any>;\r\n\r\n  @ViewChild(\"errorsTemplate\")\r\n  public errorsTemplate: TemplateRef<any>;\r\n\r\n  @ContentChild(MatFormField)\r\n  public formField?: MatFormField;\r\n\r\n  public initialized: boolean;\r\n\r\n  public get formElement(): HTMLElement {\r\n    return (this.formField?._elementRef || this.elementRef)?.nativeElement as HTMLElement;\r\n  }\r\n\r\n  constructor(\r\n    private elementRef: ElementRef<HTMLElement>,\r\n    private changeDetectorRef: ChangeDetectorRef,\r\n  ) {\r\n  }\r\n\r\n  public ngOnInit() {\r\n    this.control.field$\r\n      .pipe(\r\n        switchMap(field => {\r\n          field.element = this.elementRef?.nativeElement?.parentElement;\r\n\r\n          this.initializeFieldNativeValidation(field);\r\n          this.updateFieldLabel(this.control.field);\r\n\r\n          // refresh control state based on data from the new field\r\n          setTimeout(() => {\r\n            field.control._onDisabledChange.forEach(changeFn => changeFn(field.control.disabled));\r\n          });\r\n\r\n          return merge(field.control.statusChanges, field.control.root.valueChanges)\r\n            .pipe(debounceTime(0), tap(() => {\r\n              this.updateFieldLabel(field);\r\n\r\n              this.changeDetectorRef.markForCheck();\r\n            }));\r\n        }))\r\n      .subscribe();\r\n  }\r\n\r\n  public ngAfterViewInit() {\r\n    this.initializeFieldNativeValidation(this.control.field);\r\n    this.updateFieldLabel(this.control.field);\r\n\r\n    setTimeout(() => {\r\n      this.initialized = true;\r\n\r\n      if (this.control.focused) {\r\n        (this.formElement?.querySelector(\"input,[matInput],mat-select,button\") as HTMLElement)?.focus();\r\n      }\r\n\r\n      this.changeDetectorRef.markForCheck();\r\n    });\r\n  }\r\n\r\n  private initializeFieldNativeValidation(field: Field<TValue, TOption, TOptionGroup, TFormattedValue, TControlValue>) {\r\n    if (field.validation.native && !field.validation.native.value) {\r\n      field.validation.native.value = () => this.formElement?.querySelector(\"input,[matInput]\");\r\n    }\r\n  }\r\n\r\n  private updateFieldLabel(field: Field<TValue, TOption, TOptionGroup, TFormattedValue, TControlValue>) {\r\n    let required = !!field.validation.required?.getValue(field.value) ||\r\n      !!field.validation.requiredTrue?.getValue(field.value);\r\n\r\n    field.element\r\n      ?.querySelector(\"mat-label\")\r\n      ?.classList\r\n      ?.toggle(\"required\", required);\r\n  }\r\n}\r\n","<ng-content></ng-content>\r\n\r\n<ng-template #hintTemplate>\r\n  <mat-hint [ngClass]=\"control.hintClass\"\r\n            style=\"cursor: default;\"\r\n            [matTooltip]=\"control.field.info\">\r\n    {{ control.field.info }}\r\n  </mat-hint>\r\n</ng-template>\r\n\r\n<ng-template #errorsTemplate>\r\n  <mat-error *ngFor=\"let error of control.field.control.errors | keyvalue\"\r\n             [ngSwitch]=\"error.key\">\r\n    <ng-container *ngSwitchCase=\"'required'\">\r\n      {{ control.field.validation.requiredTrue?.text || control.field.validation.required?.text || \"Field is required\" }}\r\n    </ng-container>\r\n\r\n    <ng-container *ngSwitchCase=\"'min'\">\r\n      {{ control.field.validation.min?.text || \"Value should be greater than \" + error.value.min }}\r\n    </ng-container>\r\n\r\n    <ng-container *ngSwitchCase=\"'max'\">\r\n      {{ control.field.validation.max?.text || \"Value should be smaller than \" + error.value.max }}\r\n    </ng-container>\r\n\r\n    <ng-container *ngSwitchCase=\"'minlength'\">\r\n      {{ control.field.validation.minLength?.text || \"Value should be longer than \" + error.value.requiredLength }}\r\n    </ng-container>\r\n\r\n    <ng-container *ngSwitchCase=\"'maxlength'\">\r\n      {{ control.field.validation.maxLength?.text || \"Value should be shorter than \" + error.value.requiredLength }}\r\n    </ng-container>\r\n\r\n    <ng-container *ngSwitchCase=\"'minDate'\">\r\n      {{ control.field.validation.minDate?.text || \"Date should be after the \" + (error.value.expected | date) }}\r\n    </ng-container>\r\n\r\n    <ng-container *ngSwitchCase=\"'minOrEqualDate'\">\r\n      {{ control.field.validation.minOrEqualDate?.text || \"Date should be same or after the \" + (error.value.expected | date) }}\r\n    </ng-container>\r\n\r\n    <ng-container *ngSwitchCase=\"'maxDate'\">\r\n      {{ control.field.validation.maxDate?.text || \"Date should be before the \" + (error.value.expected | date) }}\r\n    </ng-container>\r\n\r\n    <ng-container *ngSwitchCase=\"'maxOrEqualDate'\">\r\n      {{ control.field.validation.maxOrEqualDate?.text || \"Date should be same or before the \" + (error.value.expected | date) }}\r\n    </ng-container>\r\n\r\n    <ng-container *ngSwitchCase=\"'pattern'\">\r\n      {{ control.field.validation.pattern?.text || error.value.message || \"Value does not match the required pattern\" }}\r\n    </ng-container>\r\n\r\n    <ng-container *ngSwitchCase=\"'mask'\">\r\n      {{ \"Value does not match the required pattern\" }}\r\n    </ng-container>\r\n\r\n    <ng-container *ngSwitchCase=\"'custom'\">\r\n      {{ control.field.validation.custom?.text || error.value.message }}\r\n    </ng-container>\r\n\r\n    <ng-container *ngSwitchCase=\"'async'\">\r\n      {{ control.field.validation.async?.text || error.value.message }}\r\n    </ng-container>\r\n\r\n    <ng-container *ngSwitchCase=\"'native'\">\r\n      {{ control.field.validation.native?.text || error.value.message }}\r\n    </ng-container>\r\n\r\n    <ng-container *ngSwitchDefault>\r\n      {{ error.value.message || error.value }}\r\n    </ng-container>\r\n  </mat-error>\r\n</ng-template>\r\n","import { ChangeDetectionStrategy, Component } from \"@angular/core\";\r\nimport { ControlBase } from \"./base-control.component\";\r\n\r\n@Component({\r\n  selector: \"validation-control\",\r\n  template: `\r\n    <base-control #baseControl [control]=\"this\">\r\n      <mat-error *ngIf=\"baseControl.initialized\">\r\n        <ng-container *ngTemplateOutlet=\"baseControl.errorsTemplate\"></ng-container>\r\n      </mat-error>\r\n    </base-control>\r\n  `,\r\n  changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class ValidationControlComponent<TValue> extends ControlBase<TValue> {\r\n}\r\n","import { NgModule } from \"@angular/core\";\r\nimport { CommonModule } from \"@angular/common\";\r\nimport { ReactiveFormsModule } from \"@angular/forms\";\r\nimport { MatIconModule } from \"@angular/material/icon\";\r\nimport { MatFormFieldModule } from \"@angular/material/form-field\";\r\nimport { MatInputModule } from \"@angular/material/input\";\r\n\r\nimport { NgxPipesModule } from \"angular-extensions/pipes\";\r\nimport { BaseControlComponent } from \"./base-control.component\";\r\nimport { ValidationControlComponent } from \"./validation-control.component\";\r\nimport { MatTooltipModule } from \"@angular/material/tooltip\";\r\nimport { MatButtonModule } from \"@angular/material/button\";\r\n\r\n@NgModule({\r\n  imports: [\r\n    CommonModule,\r\n    ReactiveFormsModule,\r\n\r\n    MatIconModule,\r\n    MatButtonModule,\r\n    MatFormFieldModule,\r\n    MatInputModule,\r\n    MatTooltipModule,\r\n\r\n    NgxPipesModule,\r\n  ],\r\n  declarations: [\r\n    BaseControlComponent,\r\n    ValidationControlComponent,\r\n  ],\r\n  exports: [\r\n    CommonModule,\r\n    ReactiveFormsModule,\r\n\r\n    MatIconModule,\r\n    MatButtonModule,\r\n    MatFormFieldModule,\r\n    MatInputModule,\r\n    MatTooltipModule,\r\n\r\n    NgxPipesModule,\r\n\r\n    BaseControlComponent,\r\n    ValidationControlComponent,\r\n  ]\r\n})\r\nexport class NgxBaseControlModule { }\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["i3.BaseControlComponent"],"mappings":"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"}