{"version":3,"file":"webresto-components-webresto-form-control.mjs","sources":["../../../projects/components/webresto-form-control/webresto-form-control.component.ts","../../../projects/components/webresto-form-control/webresto-form-control.component.html","../../../projects/components/webresto-form-control/webresto-components-webresto-form-control.ts"],"sourcesContent":["import { NgIf } from '@angular/common';\nimport {\n  AfterViewInit,\n  ChangeDetectionStrategy,\n  Component,\n  Input,\n  ViewChild,\n  ViewEncapsulation,\n} from '@angular/core';\nimport { FormControl, ReactiveFormsModule } from '@angular/forms';\nimport { ThemePalette } from '@angular/material/core';\nimport {\n  MatFormFieldAppearance,\n  MatFormFieldModule,\n} from '@angular/material/form-field';\nimport { MatInput, MatInputModule } from '@angular/material/input';\nimport {\n  CommonBaseControl,\n  ControlErrorMessagePipe,\n  TranslatePipe,\n  isValue,\n  objectEntries,\n} from '@axrl/common';\nimport { NgxMaskDirective } from 'ngx-mask';\n\nexport interface WebrestoFormControlColorConfig {\n  'outline-color'?: string | undefined;\n}\n\n@Component({\n  selector: 'webresto-form-control[formControlName]',\n  standalone: true,\n  imports: [\n    NgIf,\n    MatFormFieldModule,\n    MatInputModule,\n    ReactiveFormsModule,\n    NgxMaskDirective,\n    ControlErrorMessagePipe,\n    TranslatePipe,\n  ],\n  host: {\n    class: 'webresto-form-control',\n    '[class.fullwidth]': 'fullwidth',\n    '(focus)': 'onFocused()',\n  },\n  templateUrl: './webresto-form-control.component.html',\n  encapsulation: ViewEncapsulation.None,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class WebrestoFormControlComponent\n  extends CommonBaseControl<string | number>\n  implements AfterViewInit\n{\n  private _formFielAppearance: MatFormFieldAppearance = 'fill';\n  private _autofocus: boolean = false;\n  @Input() readonly: boolean = false;\n  @Input() autocomplete: 'off' | 'new-password' | 'on' = 'on';\n  @Input() prefix: string | undefined;\n  @Input() color: ThemePalette;\n  @Input() fullwidth: boolean = false;\n  @Input() isTextarea: boolean = false;\n  @Input() textareaMinRow: number = 2;\n  @Input() textareaMaxRow: number = 5;\n  @Input() label: string | undefined;\n  @Input() inputMask: string | undefined;\n  @Input() placeholder: string | undefined;\n  @Input() inputMode: string = 'verbatim';\n  @Input() type:\n    | 'text'\n    | 'number'\n    | 'email'\n    | 'url'\n    | 'password'\n    | 'tel'\n    | 'date'\n    | 'time' = 'text';\n\n  @Input() hint: string | undefined;\n\n  @Input() set isOutlined(value: boolean) {\n    this._formFielAppearance = value ? 'outline' : 'fill';\n  }\n\n  get formFielAppearance(): MatFormFieldAppearance {\n    return this._formFielAppearance;\n  }\n\n  @Input() set autofocus(value: boolean) {\n    this._autofocus = value;\n    if (value && isValue(this.inputElement)) {\n      this.inputElement.focus();\n    }\n  }\n\n  get autofocus(): boolean {\n    return this._autofocus;\n  }\n\n  @Input() set styleConfig(value: WebrestoFormControlColorConfig) {\n    objectEntries(value).forEach(([property, value]) => {\n      if (isValue(value)) {\n        const propertyLavlue =\n          typeof value === 'string' && value.includes('$')\n            ? document.documentElement.style.getPropertyValue(\n                `--${value.replace('$', '')}`\n              )\n            : value;\n        this.__elementRef.nativeElement.style.setProperty(\n          `--${property}`,\n          propertyLavlue\n        );\n      }\n    });\n  }\n\n  @ViewChild(MatInput) inputElement: MatInput | undefined;\n\n  get control(): FormControl<string | number> | null {\n    return <FormControl<string | number> | null>this.ngControl?.control;\n  }\n\n  ngAfterViewInit(): void {\n    if (isValue(this._autofocus) && this._autofocus) {\n      this.onFocused();\n    }\n  }\n\n  onFocused(): void {\n    if (isValue(this.inputElement)) {\n      this.inputElement.focus();\n    }\n  }\n}\n","<mat-form-field\n  [color]=\"color\"\n  [appearance]=\"formFielAppearance\"\n  subscriptSizing=\"fixed\"\n  floatLabel=\"auto\"\n  *ngIf=\"control\"\n>\n  <mat-label *ngIf=\"label\">{{ label | translate }}</mat-label>\n  <span matTextPrefix *ngIf=\"prefix\">{{ prefix | translate }} </span>\n  <ng-content\n    *ngIf=\"!prefix\"\n    select=\".prefix,[matPrefix],[matIconPrefix],[matTextPrefix]\"\n  ></ng-content>\n  <input\n    *ngIf=\"!isTextarea; else textAreaTemplate\"\n    matInput\n    [type]=\"type\"\n    [placeholder]=\"(placeholder | translate) ?? ''\"\n    [mask]=\"inputMask\"\n    [readonly]=\"readonly\"\n    [inputMode]=\"inputMode\"\n    [formControl]=\"control\"\n  />\n  <ng-template #textAreaTemplate>\n    <textarea\n      matInput\n      [placeholder]=\"(placeholder | translate) ?? ''\"\n      [readonly]=\"readonly\"\n      cdkTextareaAutosize\n      [cdkAutosizeMinRows]=\"textareaMinRow\"\n      [cdkAutosizeMaxRows]=\"textareaMaxRow\"\n      [formControl]=\"control\"\n    ></textarea>\n  </ng-template>\n  <ng-content\n    select=\".suffix,[matSuffix],[matIconSuffix],[matTextSuffix]\"\n  ></ng-content>\n  <mat-hint *ngIf=\"hint\">{{ hint | translate }}</mat-hint>\n  <mat-error>{{ control | controlErrorMessage | translate }}</mat-error>\n</mat-form-field>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}