{"version":3,"file":"sebgroup-green-angular-src-v-angular-base-control-value-accessor.mjs","sources":["../../../../libs/angular/src/v-angular/base-control-value-accessor/base-control-value-accessor.component.ts","../../../../libs/angular/src/v-angular/base-control-value-accessor/base-control-value-accessor.module.ts","../../../../libs/angular/src/v-angular/base-control-value-accessor/sebgroup-green-angular-src-v-angular-base-control-value-accessor.ts"],"sourcesContent":["import {\n  AfterViewInit,\n  ChangeDetectorRef,\n  Component,\n  ContentChild,\n  ElementRef,\n  EventEmitter,\n  HostBinding,\n  Inject,\n  Injectable,\n  Input,\n  OnDestroy,\n  OnInit,\n  Optional,\n  Output,\n  Self,\n  TemplateRef,\n  ViewChild,\n} from '@angular/core'\nimport {\n  AbstractControl,\n  ControlValueAccessor,\n  NgControl,\n  ValidationErrors,\n  Validator,\n  Validators,\n} from '@angular/forms'\nimport { TRANSLOCO_SCOPE, TranslocoScope } from '@jsverse/transloco'\nimport { Observable, Subject } from 'rxjs'\nimport { takeUntil } from 'rxjs/operators'\n\n@Injectable() // Workaround for Compodoc https://github.com/compodoc/compodoc/issues/984\n@Component({\n    template: '',\n    standalone: false\n}) // Required with Angular ivy compiler\n// eslint-disable-next-line @angular-eslint/directive-class-suffix\nexport class NggvBaseControlValueAccessorComponent\n  implements AfterViewInit, OnInit, OnDestroy, ControlValueAccessor, Validator\n{\n  /** Custom template for displaying the content of the label.\n   * Specified by nesting an `<ng-template #labelTpl>Custom Label</ng-template>`.\n   */\n  @ContentChild('labelTpl', { read: TemplateRef })\n  labelContentTpl?: TemplateRef<undefined>\n\n  /** Custom template for displaying value when the input is locked.\n   * Specified by nesting an `<ng-template #lockedTpl let-state>Custom locked content state: {{ state }}</ng-template>`.\n   */\n  @ContentChild('lockedTpl', { read: TemplateRef })\n  lockedTpl?: TemplateRef<undefined>\n\n  /** Reference to the native child input element. */\n  @ViewChild('input', { read: ElementRef }) inputRef?: ElementRef\n\n  /* ATTRIBUTES */\n\n  /** Id of the host element and is accessible by the children, automatically generated if not provided. */\n  @HostBinding('attr.id') @Input() id = (window as any).nggv?.nextId()\n  /** Name of the child input element. */\n  @Input() name?: string\n  /**\n   * Label of the child input element using the default template.\n   * Can be overwritten by specifying an `<ng-template #labelTpl>Custom Label</ng-template>`.\n   */\n  @Input() label?: string\n  /** Role of the child input element. https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/Roles */\n  @Input() role?: string\n  /** Value of the child input element. Mostly used in conjunction with radio and checkboxes. */\n  @Input() value: any\n  /** An error string to be shown under invalid inputs. Overwrites any form errors. */\n  @Input() error?: string\n  /** @deprecated Only one error should be shown under each field. */\n  @Input() errorList?: string[]\n  /** @deprecated Icon is always added before error. */\n  @Input() withErrorIcon?: boolean = false\n  /** Description of the child input element. Both visibly and as `aria-label`. */\n  @Input() description?: string\n  /** Determines if the label used to display the \"description\" text will be rendered to DOM */\n  @Input() descriptionIsVisible = true\n  /** If set to true, the browser will try to automatically set focus to the child input element. */\n  @Input() autofocus = false\n  /** Deafult value of the child input element. Used when resetting child element. */\n  @Input() defaultValue?: any\n  /** If passed, the component will listen for updates and will reset its value. */\n  @Input() reset?: Observable<any>\n  /** Adds (Optional) to input label. */\n  @Input() optional?: boolean | null | undefined\n\n  private _locked: boolean | null | undefined = undefined\n  /** Hides the input borders and displays current value as a text. */\n  @Input() set locked(value: boolean | null | undefined) {\n    this._locked = value\n    this.cdr.detectChanges()\n  }\n  get locked(): boolean | null | undefined {\n    return this._locked\n  }\n  /** If set to true, using a controls disabled state will display input as locked. */\n  @Input() displayDisabledAsLocked?: boolean | null | undefined\n\n  /* STATES */\n\n  private _required: boolean | null | undefined = undefined\n  /** Override the required flag of the component. */\n  @Input() set required(value: boolean | null | undefined) {\n    this._required = value\n  }\n  /** Child input element is considered required and changes default label template accordingly. */\n  get required(): boolean | null | undefined {\n    // if required is set => return required\n    if (this._required !== undefined) return this._required\n\n    // if required can be determined from the control => return control.required\n    if (this.ngControl?.control?.validator) {\n      const validator = this.ngControl?.control?.validator(\n        {} as AbstractControl,\n      )\n      // returns true for any error that starts with required\n      return Object.keys(validator ?? {}).some((key) =>\n        key.startsWith('required'),\n      )\n    }\n\n    return\n  }\n\n  private _invalid: boolean | undefined = undefined\n  /** Override the invalid state of the component. */\n  @Input() set invalid(value: boolean) {\n    this._invalid = value\n  }\n  /** The component has the invalid state, usually decorating the elements red and shows the first error. */\n  get invalid(): boolean {\n    if (this._invalid === true || this._invalid === false) return this._invalid\n    return (\n      !!this.ngControl?.control?.invalid && this.ngControl?.control?.touched\n    )\n  }\n\n  private _valid: boolean | undefined = undefined\n  /** Override the valid state of the component. */\n  @Input() set valid(value: boolean) {\n    this._valid = value\n  }\n  /** The component has the valid state, usually decorating the elements green. */\n  get valid(): boolean {\n    if (this._valid === true || this._valid === false) return this._valid\n    return !!this.ngControl?.control?.valid && this.ngControl?.control?.touched\n  }\n\n  /** The component has the focused state, updated by the child input element's focus state. */\n  @Input() focused = false\n\n  private _disabled: boolean | undefined = undefined\n  /** Override the disabled state of the component. */\n  @Input() set disabled(value: boolean) {\n    this._disabled = value\n  }\n  /** The component has the disabled state, usually muting the colors and removes interaction. */\n  get disabled(): boolean {\n    if (this._disabled === true || this._disabled === false)\n      return this._disabled\n    return !!this.ngControl?.control?.disabled\n  }\n\n  /* TRIGGERS */\n\n  /** Emits focus events triggered by the child elements. */\n  @Output() readonly nggvFocus = new EventEmitter()\n  /** Emits focus events triggered by the child elements. */\n  @Output() readonly nggvBlur = new EventEmitter()\n\n  /* VALUE HANDLERS */\n\n  private _state: any = null\n  /** @internal */\n  protected onChange = (_: any) => {\n    // do nothing\n  }\n  /** @internal */\n  protected onTouched = () => {\n    // do nothing\n  }\n  /** @internal */\n  protected onValidatorChange: () => void = () => null\n\n  /* OTHER VARIABLES */\n  scope: string | undefined\n\n  /* LIFE CYCLE VARIABLES */\n\n  private _onDestroy$ = new Subject<boolean>()\n\n  /**\n   * Creates a new BaseControlValueAccessorComponent.\n   * @param ngControl optional FormControl provided when component is used in a form, through dependency injection.\n   * @param translocoScope optional TranslocoScope provided if component is used within a scope.\n   */\n  constructor(\n    @Self() @Optional() public ngControl: NgControl,\n    @Optional()\n    @Inject(TRANSLOCO_SCOPE)\n    protected translocoScope: TranslocoScope,\n    protected cdr: ChangeDetectorRef,\n  ) {\n    if (this.ngControl) {\n      // Note: we provide the value accessor through here, instead of\n      // the `providers` to avoid running into a circular import.\n      this.ngControl.valueAccessor = this\n    }\n\n    if (this.translocoScope) this.scope = this.translocoScope.toString()\n  }\n\n  // eslint-disable-next-line @angular-eslint/contextual-lifecycle\n  ngOnInit(): void {\n    if (this.ngControl && this.ngControl.control) {\n      this.ngControl.control.setValidators(\n        Validators.compose([this.ngControl.control.validator, this.validate]),\n      )\n    }\n\n    // if reset observable has been passed, subscribe after updates\n    this.reset?.pipe(takeUntil(this._onDestroy$)).subscribe({\n      next: () => {\n        // reset value of controller\n        this.state = this.defaultValue\n        this.onChange(this.state)\n        this.cdr.detectChanges()\n      },\n    })\n  }\n\n  // eslint-disable-next-line @angular-eslint/contextual-lifecycle\n  ngAfterViewInit(): void {\n    // if default value is set, then don't alter it. Otherwise, use\n    // current value of controller after initiation as default value\n    this.defaultValue = this.defaultValue ?? this.ngControl?.value\n  }\n\n  ngOnDestroy(): void {\n    this._onDestroy$.next(true)\n    this._onDestroy$.complete()\n  }\n\n  detectChanges(): void {\n    this.cdr.detectChanges()\n  }\n\n  /** @internal */\n  onFocus(event: Event) {\n    event.stopPropagation\n      ? event.stopPropagation()\n      : (event.cancelBubble = true)\n    this.focused = true\n    this.nggvFocus.emit(event)\n  }\n\n  /** @internal */\n  onBlur(event: Event) {\n    event.stopPropagation\n      ? event.stopPropagation()\n      : (event.cancelBubble = true)\n    this.onTouched()\n    this.focused = false\n    this.nggvBlur.emit(event)\n  }\n\n  /** Sets the focus on the actual input element. */\n  setFocus() {\n    if (this.inputRef) this.inputRef.nativeElement.focus()\n  }\n\n  // ----------------------------------------------------------------------------\n  // CONTROL VALUE ACCESSOR\n  // ----------------------------------------------------------------------------\n\n  /** Internal state/value that the native input element has.  */\n  get state() {\n    return this._state\n  }\n\n  /** Internal state/value that the native input element has.  */\n  set state(value) {\n    if (typeof value === 'undefined') value = null\n    this._state = value\n  }\n\n  /** Writes a new value to the child input element. */\n  writeValue(value: any): void {\n    this.state = value\n  }\n\n  /** Registers a callback function that is called when the child input element's value changes. */\n  registerOnChange(fn: (_: any) => object): void {\n    this.onChange = fn\n  }\n\n  /** Registers a callback function that is called when the child input element triggers on blur. */\n  registerOnTouched(fn: () => void): void {\n    this.onTouched = fn\n  }\n\n  /** Function that is called by the forms API when the control status changes to or from 'DISABLED'. */\n  setDisabledState(isDisabled: boolean): void {\n    this.disabled = isDisabled\n\n    // if displayDisabledAsLocked is enabled - update locked state based on disabled state\n    if (this.displayDisabledAsLocked) {\n      this.locked = isDisabled\n    }\n  }\n\n  // ----------------------------------------------------------------------------\n  // VALIDATORS\n  // ----------------------------------------------------------------------------\n\n  /** Method that performs synchronous validation against the provided control. Used for internal validation. */\n  validate(_control: AbstractControl): { [name: string]: any } | null {\n    return null\n  }\n\n  /** Registers a callback function to call when the validator inputs change. */\n  registerOnValidatorChange(fn: () => void): void {\n    this.onValidatorChange = fn\n  }\n\n  // ----------------------------------------------------------------------------\n  // HELPERS\n  // ----------------------------------------------------------------------------\n\n  /** Returns the first entry in an error object. */\n  get firstError(): { code: string; params: any } | null {\n    const errors: ValidationErrors | null = this.ngControl.errors\n    if (!errors) return null\n    const code: string = Object.keys(errors)[0]\n    return { code, params: errors[code] }\n  }\n}\n","import { NgModule } from '@angular/core'\n\nimport { NggvBaseControlValueAccessorComponent } from './base-control-value-accessor.component'\n\n@NgModule({\n  declarations: [NggvBaseControlValueAccessorComponent],\n  imports: [],\n  exports: [NggvBaseControlValueAccessorComponent],\n})\nexport class NggvBaseControlValueAccessorModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}