{"version":3,"file":"smallpearl-crispy-mat-form.mjs","sources":["../../../../projects/smallpearl/crispy-mat-form/src/lib/field-name.directive.ts","../../../../projects/smallpearl/crispy-mat-form/src/lib/crispy-mat-form-helper.ts","../../../../projects/smallpearl/crispy-mat-form/src/lib/providers.ts","../../../../projects/smallpearl/crispy-mat-form/src/lib/config.ts","../../../../projects/smallpearl/crispy-mat-form/src/lib/crispy-internal-components.ts","../../../../projects/smallpearl/crispy-mat-form/src/lib/builder.ts","../../../../projects/smallpearl/crispy-mat-form/src/lib/crispy-mat-form.component.ts","../../../../projects/smallpearl/crispy-mat-form/src/lib/crispy-mat-form.module.ts","../../../../projects/smallpearl/crispy-mat-form/src/public-api.ts","../../../../projects/smallpearl/crispy-mat-form/src/smallpearl-crispy-mat-form.ts"],"sourcesContent":["import {\n  Directive,\n  OnInit,\n  OnDestroy,\n  Input,\n  TemplateRef,\n} from '@angular/core';\n\n@Directive({\n  selector: 'ng-template.[crispyFieldName]',\n})\nexport class CrispyFieldNameDirective implements OnInit, OnDestroy {\n  static _crispyFieldTemplates: Array<CrispyFieldNameDirective> = [];\n\n  @Input()\n  crispyFieldName!: string;\n\n  constructor(public templateRef: TemplateRef<any>) {}\n\n  ngOnInit(): void {\n    CrispyFieldNameDirective._crispyFieldTemplates.push(this);\n    // console.log(`CrispyFieldNameDirective.ngOnInit - field: ${this.crispyFieldName},_crispyFieldTemplates.length: ${CrispyFieldNameDirective._crispyFieldTemplates.length}`);\n  }\n\n  ngOnDestroy(): void {\n    const index = CrispyFieldNameDirective._crispyFieldTemplates.findIndex(\n      (f) => f.crispyFieldName.localeCompare(this.crispyFieldName) == 0,\n      1\n    );\n    // console.log(`CrispyFieldNameDirective.ngOnDestroy(bf) - field: ${this.crispyFieldName}, _crispyFieldTemplates.length: ${CrispyFieldNameDirective._crispyFieldTemplates.length}, index: ${index}`);\n    if (index !== -1) {\n      CrispyFieldNameDirective._crispyFieldTemplates.splice(index, 1);\n      // console.log(`CrispyFieldNameDirective.ngOnDestroy(af) - field: ${this.crispyFieldName}, _crispyFieldTemplates.length: ${CrispyFieldNameDirective._crispyFieldTemplates.length}`);\n    }\n  }\n}\n","import {\n  ValidatorFn\n} from '@angular/forms';\nimport { Observable } from 'rxjs';\nimport {\n  CrispyField,\n  CustomComponentOptions,\n  DateRangeOptions,\n  FieldContext,\n  GroupArrayOptions,\n  SelectOption,\n  TemplateComponentOptions\n} from './crispy-types';\n\n\nexport function CrispyDiv(\n  cssClass: string,\n  children: CrispyField | CrispyField[],\n  options?: Partial<CrispyField>\n): CrispyField {\n  return {\n    ...(options ?? {}),\n    type: 'div',\n    name: '',\n    cssClass,\n    children: Array.isArray(children) ? children : [children],\n  };\n}\n\nexport function CrispyRow(\n  children: CrispyField[],\n  cssClass?: string,\n  options?: Partial<CrispyField>\n): CrispyField {\n  return {\n    ...(options ?? {}),\n    type: 'row',\n    name: '',\n    cssClass: cssClass ? cssClass : 'row',\n    children: children,\n  };\n}\n\nexport function crispyTextField(\n  name: string,\n  initial: string,\n  validators?: ValidatorFn | ValidatorFn[],\n  cssClass?: string,\n  label?: string,\n  hint?: string\n): CrispyField {\n  return { type: 'text', name, initial, validators, label, hint, cssClass };\n}\n\nexport function CrispyText(\n  name: string,\n  initial?: string,\n  options?: Partial<CrispyField>\n): CrispyField {\n  return {\n    ...(options ?? {}),\n    type: 'text',\n    name,\n    initial,\n  };\n}\n\nexport function crispyNumberField(\n  name: string,\n  initial: number | undefined,\n  validators?: ValidatorFn | ValidatorFn[],\n  cssClass?: string,\n  label?: string,\n  hint?: string\n): CrispyField {\n  return { type: 'number', name, initial, validators, label, hint, cssClass };\n}\n\nexport function CrispyNumber(\n  name: string,\n  initial?: number,\n  options?: Partial<CrispyField>\n): CrispyField {\n  return {\n    ...(options ?? {}),\n    type: 'number',\n    name,\n    initial,\n  };\n}\n\nexport function crispyEmailField(\n  name: string,\n  initial: string,\n  validators?: ValidatorFn | ValidatorFn[],\n  cssClass?: string,\n  label?: string,\n  hint?: string\n): CrispyField {\n  return { type: 'email', name, initial, validators, label, hint, cssClass };\n}\n\nexport function CrispyEmail(\n  name: string,\n  initial?: string,\n  options?: Partial<CrispyField>\n): CrispyField {\n  return {\n    ...(options ?? {}),\n    type: 'email',\n    name,\n    initial,\n  };\n}\n\nexport function crispyDateField(\n  name: string,\n  initial: Date,\n  validators?: ValidatorFn | ValidatorFn[],\n  cssClass?: string,\n  label?: string,\n  hint?: string\n): CrispyField {\n  return { type: 'date', name, initial, validators, label, hint, cssClass };\n}\n\nexport function CrispyDate(\n  name: string,\n  initial?: Date,\n  options?: Partial<CrispyField>\n): CrispyField {\n  return {\n    ...(options ?? {}),\n    type: 'date',\n    name,\n    initial,\n  };\n}\n\nexport function crispyTextareaField(\n  name: string,\n  initial: string,\n  validators?: ValidatorFn | ValidatorFn[],\n  cssClass?: string,\n  label?: string,\n  hint?: string\n): CrispyField {\n  return { type: 'textarea', name, initial, validators, label, hint, cssClass };\n}\n\nexport function CrispyTextarea(\n  name: string,\n  initial?: string,\n  options?: Partial<CrispyField>\n): CrispyField {\n  return {\n    ...(options ?? {}),\n    type: 'textarea',\n    name,\n    initial,\n  };\n}\n\nexport function crispySearchField(\n  name: string,\n  initial: string,\n  validators?: ValidatorFn | ValidatorFn[],\n  cssClass?: string,\n  label?: string,\n  hint?: string\n): CrispyField {\n  return { type: 'search', name, initial, validators, label, hint, cssClass };\n}\n\nexport function CrispySearch(\n  name: string,\n  initial?: string,\n  options?: Partial<CrispyField>\n): CrispyField {\n  return {\n    ...(options ?? {}),\n    type: 'search',\n    name,\n    initial,\n  };\n}\n\nexport function crispyPasswordField(\n  name: string,\n  initial = '',\n  validators?: ValidatorFn | ValidatorFn[],\n  cssClass?: string,\n  label?: string,\n  hint?: string\n): CrispyField {\n  return { type: 'password', name, initial, validators, label, hint, cssClass };\n}\n\nexport function CrispyPassword(\n  name: string,\n  initial?: string,\n  options?: Partial<CrispyField>\n): CrispyField {\n  return {\n    ...(options ?? {}),\n    type: 'password',\n    name,\n    initial,\n  };\n}\n\nexport function crispySelectField(\n  name: string,\n  options: SelectOption[] | Observable<SelectOption[]>,\n  initial: any,\n  validators?: ValidatorFn | ValidatorFn[],\n  cssClass?: string,\n  label?: string,\n  hint?: string\n): CrispyField {\n  return {\n    type: 'select',\n    name,\n    initial,\n    validators,\n    label,\n    hint,\n    cssClass,\n    options: {\n      selectOptions: { options: options },\n    },\n  };\n}\n\nexport function CrispySelect(\n  name: string,\n  selectOptions: SelectOption[] | Observable<SelectOption[]>,\n  options?: Partial<CrispyField>\n): CrispyField {\n  return {\n    ...(options ?? {}),\n    type: 'select',\n    name,\n    options: {\n      selectOptions: { options: selectOptions },\n    },\n  };\n}\n\nexport function crispyDateRangeField(\n  name: string,\n  options: DateRangeOptions,\n  initial: any,\n  validators?: ValidatorFn | ValidatorFn[],\n  cssClass?: string,\n  label?: string,\n  hint?: string\n): CrispyField {\n  return {\n    type: 'daterange',\n    name,\n    initial,\n    validators,\n    label,\n    hint,\n    cssClass,\n    options: {\n      dateRangeOptions: options,\n    },\n  };\n}\n\nexport function CrispyDateRange(\n  name: string,\n  dateRangeOptions: DateRangeOptions,\n  initial?: any,\n  options?: Partial<CrispyField>\n): CrispyField {\n  return {\n    ...(options ?? {}),\n    type: 'daterange',\n    name,\n    initial,\n    options: {\n      dateRangeOptions,\n    },\n  };\n}\n\nexport function crispyCustomComponentField(\n  name: string,\n  options: CustomComponentOptions,\n  initial: any,\n  validators?: ValidatorFn | ValidatorFn[],\n  cssClass?: string,\n  label?: string,\n  hint?: string\n): CrispyField {\n  return {\n    type: 'custom',\n    name,\n    initial,\n    validators,\n    label,\n    hint,\n    cssClass,\n    options: {\n      customComponentOptions: options,\n    },\n  };\n}\n\nexport function CrispyCustomComponent(\n  name: string,\n  initial?: any,\n  customComponentOptions?: CustomComponentOptions,\n  options?: Partial<CrispyField>\n): CrispyField {\n  return {\n    ...(options ?? {}),\n    type: 'custom',\n    name,\n    initial,\n    options: {\n      customComponentOptions,\n    },\n  };\n}\n\nexport function crispyTemplateField(\n  name: string,\n  initial: any,\n  validators?: ValidatorFn | ValidatorFn[],\n  cssClass?: string,\n  label?: string,\n  hint?: string,\n  context?: FieldContext\n): CrispyField {\n  return {\n    type: 'template',\n    name,\n    initial,\n    validators,\n    label,\n    hint,\n    cssClass,\n    options: {\n      templateComponentOptions: {\n        context: context,\n      },\n    },\n  };\n}\n\nexport function CrispyTemplate(\n  name: string,\n  initial?: any,\n  templateComponentOptions?: TemplateComponentOptions,\n  options?: Partial<CrispyField>\n): CrispyField {\n  return {\n    ...(options ?? {}),\n    type: 'template',\n    name,\n    initial,\n    options: {\n      templateComponentOptions,\n    },\n  };\n}\n\nexport function crispyFormGroup(\n  name: string,\n  fields: CrispyField[],\n  initial?: any,\n  validators?: ValidatorFn | ValidatorFn[],\n  cssClass?: string\n): CrispyField {\n  return {\n    type: 'group',\n    name,\n    initial,\n    validators,\n    label: undefined,\n    hint: undefined,\n    cssClass,\n    children: fields,\n  };\n}\n\nexport function CrispyFormGroup(\n  name: string,\n  fields: CrispyField | CrispyField[],\n  validators?: ValidatorFn | ValidatorFn[]\n): CrispyField {\n  return {\n    type: 'group',\n    name,\n    initial: undefined,\n    validators,\n    label: undefined,\n    hint: undefined,\n    cssClass: undefined,\n    children: Array.isArray(fields) ? fields : [fields],\n  };\n}\n\nexport function crispyFormGroupArray(\n  name: string,\n  fields: CrispyField[],\n  initial?: any,\n  validators?: ValidatorFn | ValidatorFn[],\n  cssClass?: string,\n  label?: string\n): CrispyField {\n  return {\n    type: 'groupArray',\n    name,\n    initial,\n    validators,\n    label: label,\n    hint: undefined,\n    cssClass,\n    children: fields,\n  };\n}\n\nexport function CrispyFormGroupArray(\n  name: string,\n  children: CrispyField[],\n  initial?: any,\n  groupArrayOptions?: GroupArrayOptions,\n  options?: Partial<CrispyField>\n): CrispyField {\n  const setFormFieldOptions = (fields: CrispyField[], options: { [K: string]: string|number|boolean }) => {\n    fields.forEach(field => {\n      field.formFieldOptions = options;\n      if (field?.children) {\n        setFormFieldOptions(field.children, options);\n      }\n    })\n  }\n  setFormFieldOptions(children, { subscriptSizing: \"dynamic\" });\n  return {\n    ...(options ?? {}),\n    type: 'groupArray',\n    name,\n    initial,\n    children,\n    options: {\n      groupArrayOptions\n    },\n  };\n}\n\nexport function crispyCheckboxField(\n  name: string,\n  initial: boolean,\n  validators?: ValidatorFn | ValidatorFn[],\n  cssClass?: string,\n  label?: string,\n  hint?: string\n): CrispyField {\n  return { type: 'checkbox', name, initial, validators, label, hint, cssClass };\n}\n\nexport function CrispyCheckbox(\n  name: string,\n  initial?: boolean,\n  options?: Partial<CrispyField>\n): CrispyField {\n  return {\n    ...(options ?? {}),\n    type: 'checkbox',\n    name,\n    initial: !!initial,\n  };\n}\n","import { InjectionToken } from '@angular/core';\nimport { Observable } from 'rxjs';\n\ntype TRANSLATE_FN = (fieldName: string) => string;\n\nexport interface CrispyFormsConfig {\n  /**\n   * Function that translates the two user facing strings of a field -- its\n   * label and its hint. If this is defined, it will be called giving a field's\n   * label or hint as its argument. If a field's label is not explicitly\n   * defined, its name will be used as its label. So in this case, this\n   * function will be called with the field's name as argument.\n   */\n  translateFn?: TRANSLATE_FN;\n  /**\n   * For `groupArray` field types, Crispy adds a button at the bottom of\n   * all rows of FormGroups to allow the user to add a new FormGroup to the\n   * FormArray. This allows the text of that button to be customized.\n   */\n  groupArrayConfig?: {\n    addRowText?: string|Observable<string>;\n  },\n  /**\n   * Defaults to 12 cols per row.\n   */\n  numberOfColsPerRow?: number;\n  /**\n   * Defaults to 'container', if not specified.\n   */\n  defaultContainerCssClass?: string;\n  /**\n   * Defaults to 'row', if not specified.\n   */\n  defaultRowCssClass?: string;\n  /**\n   * Defaults to 'col', if not specified.\n   */\n  defaultColCssClass?: string;\n  /**\n   * Defaults to 'col-sm-{width}. {width} gets replaced with the column width\n   * calculated based on the number of cols per each row rounded up to the\n   * nearest whole number.\n   */\n  defaultColDivCssClassTemplate?: string;\n}\n\nexport const CRISPY_FORMS_CONFIG_PROVIDER = new InjectionToken<CrispyFormsConfig>(\n  'CrispyFormsConfigProvider'\n);\n","import { CrispyFormsConfig } from './providers';\n\n/**\n * The default label function. It splits camel cased strings into separate\n * words and uppercases the first character of each word and returns the\n * string comprising of all these words joined.\n * @param value \n * @returns string\n */\nexport const DEFAULT_LABEL_FN = (value: string): string => {\n  // Function to break camel cased words into separate words\n  // with a space in between.\n  const breakWords = (value: string) => {\n    return value.replace(/([\\w])([A-Z])/g, function(m) {\n        return m[0] + \" \" + m[1];\n    });\n  }\n  return breakWords(value)\n    .split(' ')\n    .map((w: string) => w[0].toLocaleUpperCase() + w.slice(1))\n    .join(' ');\n}\n\n// Default crispy config\nexport const DEFAULT_CRISPY_CONFIG: CrispyFormsConfig = {\n  translateFn: undefined, // (code: string) => DEFAULT_LABEL_FN(code),\n  groupArrayConfig: {\n    addRowText: 'Add Row'\n  },\n  // These come from bootstrap convention.\n  defaultContainerCssClass: 'container',\n  defaultRowCssClass: 'row',\n  defaultColCssClass: 'col-12',\n  numberOfColsPerRow: 12,\n  defaultColDivCssClassTemplate: 'col-sm-{width}'\n}\n","import {\n  AfterContentInit,\n  AfterViewInit,\n  ChangeDetectionStrategy,\n  ChangeDetectorRef,\n  Component,\n  ComponentRef,\n  Directive,\n  ElementRef,\n  EventEmitter,\n  Injector,\n  Input,\n  OnInit,\n  Output,\n  ViewChild,\n  ViewContainerRef,\n  forwardRef\n} from '@angular/core';\nimport {\n  ControlValueAccessor,\n  FormArray,\n  FormControl,\n  FormGroup,\n  NG_VALUE_ACCESSOR,\n  UntypedFormGroup\n} from '@angular/forms';\nimport { MatFormField } from '@angular/material/form-field';\nimport { Observable, of } from 'rxjs';\nimport { CrispyDiv } from './crispy-mat-form-helper';\nimport {\n  CrispyField,\n  CrispyFieldType,\n  CrispyForm,\n  CustomComponentOptions,\n  DateRangeOptions,\n  SelectOption,\n  TemplateComponentOptions,\n} from './crispy-types';\nimport { CrispyFieldNameDirective } from './field-name.directive';\nimport { CRISPY_FORMS_CONFIG_PROVIDER, CrispyFormsConfig } from './providers';\nimport { DEFAULT_CRISPY_CONFIG } from './config';\n\n\nexport function safeGetCrispyConfig(injector: Injector): CrispyFormsConfig {\n  // return empty config object if one was not provided by client.\n  const crispyConfig = injector.get(CRISPY_FORMS_CONFIG_PROVIDER, {});\n  return {\n    ...DEFAULT_CRISPY_CONFIG,\n    ...crispyConfig\n  }\n}\n\n/**\n * Core of the crispy-forms library. This recursively iterates through the\n * CrispyFields (and its children) and creates the relevant AbstractControl\n * specialization for the field and adds them to the FormGroup object in\n * argument 2.\n * \n * @param cfs Fields to be processed\n * @param fg FormGroup to which AbstractControl specialization is to be added.\n * @returns FormGroup object passed in arg 2.\n */\nexport function buildFormGroup(\n  cfs: CrispyField[],\n  fg: FormGroup,\n  rowCssClass: string,\n  colCssClass: string,\n  numberOfColsPerRow: number,\n  colDivCssClassTemplate: string\n): FormGroup {\n  const colClass = colDivCssClassTemplate;\n  const COLUMN_CSS_CLASS = (width: number): string => {\n    return colClass.replace('{width}', `${width}`);\n  };\n  cfs.forEach((cf) => {\n    if (cf.type === 'row') {\n      // All the children of this row should be distributed equally in the\n      // row. Use 12 columns/# of children to get the width of each column.\n      if (cf.children) {\n        const colWidth = Math.floor(12 / cf.children.length);\n        const lastColWidth = colWidth + (12 - cf.children.length * colWidth);\n        const colWidths: string[] = [];\n        for (let index = 0; index < cf.children.length - 1; index++) {\n          colWidths.push(COLUMN_CSS_CLASS(colWidth));\n        }\n        colWidths.push(COLUMN_CSS_CLASS(lastColWidth));\n        buildFormGroup(cf.children, fg, rowCssClass, colCssClass, numberOfColsPerRow, colDivCssClassTemplate);\n        cf.children.forEach((field: CrispyField, index: number) => {\n          field.cssClass = field.cssClass ? field.cssClass : (colCssClass + ' ' + colWidths[index]);\n        });\n      }\n    } else if (cf.type === 'div') {\n      if (cf.children) {\n        buildFormGroup(cf.children, fg, rowCssClass, colCssClass, numberOfColsPerRow, colDivCssClassTemplate);\n      }\n    } else {\n      if (cf.type === 'group') {\n        if (cf.children) {\n          const subFg = new FormGroup({}, cf.validators);\n          fg.addControl(\n            cf.name,\n            buildFormGroup(cf.children, subFg, rowCssClass, colCssClass, numberOfColsPerRow, colDivCssClassTemplate)\n          );\n        }\n      } else if (cf.type === 'groupArray') {\n        const fa = new FormArray<FormGroup>([], cf.validators);\n        fg.addControl(cf.name, fa);\n      } else {\n        fg.addControl(cf.name, getFormControl(cf));\n      }\n    }\n  });\n  return fg;\n}\n\n/**\n * Returns true if the given type is of HTML input field type.\n * @param type\n * @returns\n */\nconst isInputFieldType = (type: CrispyFieldType) =>\n  type == 'text' ||\n  type == 'number' ||\n  type == 'email' ||\n  type == 'password' ||\n  type == 'search' ||\n  type == 'textarea';\n\nfunction getFormControl(cf: CrispyField) {\n  const keys = Object.keys(cf);\n  const hasInitial =\n    keys.find((k) => k.localeCompare('initial') == 0 && !!(cf as any)[k]) != undefined;\n  if (cf.type === 'daterange') {\n    // Special handler for 'daterange' field type\n    const options: DateRangeOptions = cf.options?.dateRangeOptions!;\n    const group = new FormGroup({}, cf.validators);\n    const beginInitial =\n      (hasInitial &&\n        cf.initial[options.beginRangeFormControlName]) ||\n      null;\n    group.addControl(\n      options.beginRangeFormControlName,\n      new FormControl<Date | null>(beginInitial, {\n        nonNullable: !!beginInitial,\n        validators: options?.beginRangeValidators,\n      })\n    );\n    const endInitial =\n      (hasInitial &&\n        cf.initial[options.endRangeFormControlName]) ||\n      null;\n    group.addControl(\n      options.endRangeFormControlName,\n      new FormControl<Date | null>(endInitial, {\n        nonNullable: !!endInitial,\n        validators: options?.endRangeValidators,\n      })\n    );\n    return group;\n  } else {\n    if (cf.type === 'number') {\n      return new FormControl<number>(hasInitial ? cf.initial : undefined,\n        hasInitial\n          ? { nonNullable: true, validators: cf.validators }\n          : { validators: cf.validators }\n      );\n    }\n    return new FormControl<string>(\n      cf.type === 'checkbox'\n        ? !!cf?.initial\n        : (hasInitial ? cf.initial : isInputFieldType(cf.type) ? '' : undefined),\n      hasInitial\n        ? { nonNullable: true, validators: cf.validators }\n        : { validators: cf.validators }\n    );\n  }\n}\n\n@Component({\n  selector: 'crispy-field-input',\n  template: `\n    <mat-form-field\n      class=\"w-100\"\n      [formGroup]=\"crispy.form\"\n      [subscriptSizing]=\"field.formFieldOptions?.subscriptSizing\"\n    >\n      <mat-label>{{ field.label }}</mat-label>\n      <mat-hint *ngIf=\"field.hint\">{{ field.hint }}</mat-hint>\n      <input\n        *ngIf=\"field.type != 'textarea' && field.type != 'number'\"\n        [type]=\"field.type\"\n        matInput\n        placeholder=\"{{ field.label }}\"\n        [formControlName]=\"field.name\"\n        [controlErrorAnchor]=\"errorAnchor\"\n      />\n      <!-- number type has to specified as a literal during initial declaration. Or else input treats it like a\n      string and the value returned will be a string. -->\n      <input\n        *ngIf=\"field.type == 'number'\"\n        type=\"number\"\n        matInput\n        placeholder=\"{{ field.label }}\"\n        [formControlName]=\"field.name\"\n        [controlErrorAnchor]=\"errorAnchor\"\n      />\n      <textarea\n        *ngIf=\"field.type == 'textarea'\"\n        matInput\n        placeholder=\"{{ field.label }}\"\n        [formControlName]=\"field.name\"\n        [controlErrorAnchor]=\"errorAnchor\"\n      ></textarea>\n      <mat-error\n        ><ng-template\n          controlErrorAnchor\n          #errorAnchor=\"controlErrorAnchor\"\n        ></ng-template\n      ></mat-error>\n    </mat-form-field>\n  `,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class CrispyInputFieldTypeComponent implements OnInit {\n  @Input() crispy!: CrispyForm;\n  @Input() field!: CrispyField;\n  constructor() {}\n  ngOnInit() {}\n}\n\n@Component({\n  selector: 'crispy-field-select',\n  template: `\n    <mat-form-field\n      class=\"w-100\"\n      [formGroup]=\"crispy.form\"\n      [subscriptSizing]=\"field.formFieldOptions?.subscriptSizing\"\n    >\n      <mat-label>{{ field.label }}</mat-label>\n      <mat-hint *ngIf=\"field.hint\">{{ field.hint }}</mat-hint>\n      <mat-select\n        [formControlName]=\"field.name\"\n        [controlErrorAnchor]=\"errorAnchor\"\n      >\n        <mat-option\n          *ngFor=\"let option of options | async\"\n          [value]=\"option.value\"\n          >{{ option.label }}</mat-option\n        >\n      </mat-select>\n      <mat-error\n        ><ng-template\n          controlErrorAnchor\n          #errorAnchor=\"controlErrorAnchor\"\n        ></ng-template\n      ></mat-error>\n    </mat-form-field>\n  `,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class CrispySelectFieldComponent implements OnInit {\n  @Input() crispy!: CrispyForm;\n  @Input() field!: CrispyField;\n  constructor() {}\n  ngOnInit() {}\n\n  get options(): Observable<SelectOption[]> {\n    const option = this?.field?.options?.selectOptions!;\n    if (Array.isArray(option.options)) {\n      return of(option.options || []);\n    } else if (option.options instanceof Observable) {\n      return option.options;\n    }\n    return of([]);\n  }\n}\n\n@Component({\n  selector: 'crispy-field-daterange',\n  template: `\n    <mat-form-field\n      class=\"w-100\"\n      [formGroup]=\"crispy.form\"\n      [subscriptSizing]=\"field.formFieldOptions?.subscriptSizing\"\n    >\n      <mat-label>{{ field.label }}</mat-label>\n      <mat-date-range-input\n        [formGroup]=\"rangeFormGroup\"\n        [rangePicker]=\"picker\"\n        [controlErrorAnchor]=\"errorAnchor\"\n      >\n        <input\n          matStartDate\n          [formControlName]=\"options.beginRangeFormControlName || ''\"\n          [placeholder]=\"options.beginRangeLabel ?? 'Start'\"\n        />\n        <input\n          matEndDate\n          [formControlName]=\"options.endRangeFormControlName || ''\"\n          [placeholder]=\"options.endRangeLabel ?? 'End'\"\n        />\n      </mat-date-range-input>\n      <mat-hint *ngIf=\"field.hint\">{{ field.hint }}</mat-hint>\n      <mat-datepicker-toggle\n        matIconSuffix\n        [for]=\"picker\"\n      ></mat-datepicker-toggle>\n      <mat-date-range-picker #picker></mat-date-range-picker>\n      <mat-error\n        ><ng-template\n          controlErrorAnchor\n          #errorAnchor=\"controlErrorAnchor\"\n        ></ng-template\n      ></mat-error>\n    </mat-form-field>\n  `,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class CrispyDateRangeFieldComponent implements OnInit {\n  @Input() crispy!: CrispyForm;\n  @Input() field!: CrispyField;\n  options!: DateRangeOptions;\n\n  constructor() {}\n\n  ngOnInit() {\n    this.options = this.field.options?.dateRangeOptions!;\n  }\n\n  get rangeFormGroup() {\n    return this.crispy.form.controls[\n      this.field.name\n    ] as UntypedFormGroup;\n  }\n}\n\n@Component({\n  selector: 'crispy-field-date',\n  template: `\n    <mat-form-field\n      class=\"w-100\"\n      [formGroup]=\"crispy.form\"\n      [subscriptSizing]=\"field.formFieldOptions?.subscriptSizing\"\n    >\n      <mat-label>{{ field.label }}</mat-label>\n      <input\n        matInput\n        [formControlName]=\"field.name\"\n        [matDatepicker]=\"picker\"\n        [controlErrorAnchor]=\"errorAnchor\"\n      />\n      <mat-datepicker-toggle\n        matIconSuffix\n        [for]=\"picker\"\n      ></mat-datepicker-toggle>\n      <mat-datepicker #picker></mat-datepicker>\n      <mat-hint *ngIf=\"field.hint\">{{ field.hint }}</mat-hint>\n      <mat-error\n        ><ng-template\n          controlErrorAnchor\n          #errorAnchor=\"controlErrorAnchor\"\n        ></ng-template\n      ></mat-error>\n    </mat-form-field>\n  `,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class CrispyDateFieldComponent implements OnInit {\n  @Input() crispy!: CrispyForm;\n  @Input() field!: CrispyField;\n  constructor() {}\n  ngOnInit() {}\n}\n\n@Component({\n  selector: 'crispy-field-checkbox',\n  template: `\n    <span [formGroup]=\"crispy.form\">\n      <mat-checkbox\n        [class]=\"field.cssClass ?? ''\"\n        [formControlName]=\"field.name\"\n      >\n        {{ field.label }}\n        <small *ngIf=\"field.hint\"><br />{{ field.hint }}</small>\n      </mat-checkbox>\n    </span>\n  `,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class CrispyCheckboxComponent implements OnInit {\n  @Input() crispy!: CrispyForm;\n  @Input() field!: CrispyField;\n  constructor() {}\n  ngOnInit() {}\n}\n\n@Directive({\n  selector: '[crispyDynamicControl]',\n})\nexport class CrispyDynamicControlDirective {\n  constructor(public viewContainerRef: ViewContainerRef) {}\n}\n\n@Component({\n  selector: 'crispy-field-custom',\n  template: `\n    <mat-form-field\n      #matFormField\n      class=\"w-100\"\n      [formGroup]=\"crispy.form\"\n      [subscriptSizing]=\"field.formFieldOptions?.subscriptSizing\"\n    >\n      <mat-label>{{ field.label }}</mat-label>\n      <mat-hint *ngIf=\"field.hint\">{{ field.hint }}</mat-hint>\n      <input matInput />\n      <ng-template crispyDynamicControl></ng-template>\n    </mat-form-field>\n  `,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  providers: [\n    {\n      provide: NG_VALUE_ACCESSOR,\n      useExisting: forwardRef(() => CrispyCustomFieldComponent),\n      multi: true,\n    },\n  ],\n})\nexport class CrispyCustomFieldComponent\n  implements OnInit, AfterViewInit, AfterContentInit, ControlValueAccessor\n{\n  @Input() crispy!: CrispyForm;\n  @Input() field!: CrispyField;\n\n  options!: CustomComponentOptions;\n\n  @ViewChild(CrispyDynamicControlDirective, { static: true })\n  componentLocation!: CrispyDynamicControlDirective;\n  @ViewChild(MatFormField, { static: true }) matFormField!: MatFormField;\n\n  private component!: ComponentRef<any>;\n  instantiateControl = false;\n\n  constructor(\n    private _elementRef: ElementRef,\n    private cdr: ChangeDetectorRef,\n    private vcr: ViewContainerRef\n  ) {}\n\n  ngOnInit() {\n    this.options = this.field.options?.customComponentOptions!;\n    if (this.componentLocation) {\n      // TODO: Howe can we specify that the component returend by createComponent\n      // implements FormFieldControl interface?\n      this.component =\n        this.componentLocation.viewContainerRef.createComponent<any>(\n          this.options.component\n        );\n      const input = this._elementRef.nativeElement.querySelector('input');\n      input.remove();\n      if (this.matFormField) {\n        // We're assuming that the component is an instance of MatFormField\n        this.matFormField._control = this.component.instance;\n        this.component.instance.ngControl =\n          this.crispy.form.controls[this.field.name];\n      }\n    }\n  }\n\n  ngAfterViewInit(): void {\n    // this.instantiateControl = true;\n    // this.cdr.detectChanges();\n  }\n\n  ngAfterContentInit(): void {}\n\n  // ControlValueAccessor interface methods\n  writeValue(value: string): void {\n    if (this.component && this.component.instance) {\n      this.component.instance.writeValue(value);\n    }\n  }\n  registerOnChange(fn: any): void {\n    // this._onChange = fn;\n    if (this.component && this.component.instance) {\n      this.component.instance.registerOnChange(fn);\n    }\n  }\n  registerOnTouched(fn: any): void {\n    // this._onTouched = fn;\n    if (this.component && this.component.instance) {\n      this.component.instance.registerOnTouched(fn);\n    }\n  }\n  // End ControlValueAccessor methods\n}\n\n/**\n * Give the template full width and height of the parent element\n */\n@Component({\n  selector: 'crispy-field-template',\n  template: `\n    <div [class]=\"field.cssClass || ''\">\n      <ng-template crispyDynamicControl></ng-template>\n    </div>\n  `,\n  styles: [\n    `\n      div {\n        display: inline-flex;\n        flex-direction: column;\n        height: 100% !important;\n        width: 100% !important;\n      }\n    `,\n  ],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class CrispyTemplateFieldComponent implements OnInit {\n  @Input() crispy!: CrispyForm;\n  @Input() field!: CrispyField;\n  options!: TemplateComponentOptions;\n\n  @ViewChild(CrispyDynamicControlDirective, { static: true })\n  componentLocation!: CrispyDynamicControlDirective;\n\n  constructor() {}\n\n  ngOnInit() {\n    this.options = this.field.options?.templateComponentOptions!\n    this.loadTemplate();\n  }\n\n  private loadTemplate() {\n    const fnd = CrispyFieldNameDirective._crispyFieldTemplates.find(\n      (ft) => ft.crispyFieldName.localeCompare(this.field.name) == 0\n    );\n    const templateRef = fnd ? fnd.templateRef : undefined;\n    if (templateRef) {\n      const userContext = this.options?.context ?? {};\n      // console.log(`CrispyTemplateFieldComponent - userContext: ${JSON.stringify(userContext)}`);\n      const context = {\n        ...userContext,\n        crispy: this.crispy,\n        field: this.field,\n        control: this.crispy.form.controls[this.field.name],\n        formGroup: this.crispy.form,\n      };\n      const view = this.componentLocation.viewContainerRef.createEmbeddedView(\n        templateRef,\n        context\n      );\n    }\n  }\n}\n\n\n@Component({\n  selector: 'crispy-div',\n  template: `\n  <div [class]=\"field.cssClass ?? 'w-100'\">\n    <ng-container *ngFor=\"let child of field.children\">\n      <crispy-render-field\n        [crispy]=\"crispy\"\n        [field]=\"child\"\n        [class]=\"child.cssClass ? child.cssClass : 'row'\"\n        (formGroupAdded)=\"formGroupAdded.emit($event)\"\n        (formGroupRemoved)=\"formGroupRemoved.emit($event)\"\n      ></crispy-render-field>\n    </ng-container>\n  </div> `,\n  styles: `\n  .w-100 { width: 100% !important }\n  `,\n})\nexport class CrispyDivComponent implements OnInit {\n  @Input({ required: true }) crispy!: CrispyForm;\n  @Input({ required: true }) field!: CrispyField;\n\n  @Output() formGroupAdded = new EventEmitter<{\n    field: string;\n    form: FormGroup;\n  }>();\n  @Output() formGroupRemoved = new EventEmitter<{\n    field: string;\n    form: FormGroup;\n  }>();\n\n  constructor() {}\n\n  ngOnInit() {}\n}\n\n\n@Component({\n  selector: 'crispy-row',\n  template: `\n  <div *ngIf=\"showTitleRow\" [class]=\"field.cssClass ? field.cssClass : rowCssClass\">\n    <div *ngFor=\"let child of field.children\" [class]=\"child.cssClass\">{{ child.label }}</div>\n  </div>\n  <div [class]=\"field.cssClass ? field.cssClass : rowCssClass\">\n    <ng-container *ngFor=\"let child of field.children\">\n      <crispy-render-field\n        [crispy]=\"crispy\"\n        [field]=\"child\"\n        [class]=\"child.cssClass ?? ''\"\n      ></crispy-render-field>\n    </ng-container>\n  </div> `,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class CrispyRowComponent implements OnInit {\n  @Input({ required: true }) crispy!: CrispyForm;\n  @Input({ required: true }) field!: CrispyField;\n  @Input({ required: false }) showTitleRow: boolean = false;\n\n  rowCssClass: string = 'row';\n  constructor(injector: Injector) {\n    this.rowCssClass = safeGetCrispyConfig(injector).defaultRowCssClass!;\n  }\n\n  ngOnInit() {}\n}\n\n\n/**\n * A component to render an array of crispy forms. This can come handy in\n * uses cases such as Invoice -> Line Items. Essentially this component would\n * take a CrispyForm object as input and build a FormArray consisting of many\n * instances of this object. \n */\n@Component({\n  selector: 'crispy-form-array',\n  template: `\n    <div class=\"crispy-form-array-wrapper\" [formGroup]=\"group\">\n      <div class=\"form-array-label\">{{ field.label }}</div>\n      <div\n        class=\"form-array-wrapper\"\n        *ngFor=\"let crispy of crispies; let i = index\"\n      >\n        <div class=\"form-array\">\n          <crispy-mat-form-impl [crispy]=\"crispy\"></crispy-mat-form-impl>\n        </div>\n        <div class=\"array-control\">\n          <button \n            *ngIf=\"!disableDelRow\"\n            mat-icon-button\n            type=\"button\"\n            (click)=\"delRow(i)\"\n          >&#x274C;</button>\n        </div>\n      </div>\n      <div class=\"add-row-buttons\" *ngIf=\"!disableAddRow\">\n        <button\n          mat-raised-button\n          color=\"primary\"\n          type=\"button\"\n          (click)=\"addRow(undefined)\"\n        >{{ addRowLabel|async }}</button>\n      </div>\n    </div>\n  `,\n  styles: [\n    `\n      .crispy-form-array-wrapper {\n        margin: 0.5em 0;\n        /*\n        border: 1px solid lightgrey;\n        border-radius: 4px;\n        padding: 0.5em;\n        */\n      }\n      .form-array-wrapper {\n        width: 100% !important;\n        display: flex;\n        flex-direction: row;\n        padding: 0.25em 0;\n      }\n      .form-array-label {\n        font-size: 1.2em;\n        font-weight: 600;\n        padding: 0.3em 0.3em;\n        /* background-color: lightgrey; */\n      }\n      .form-array {\n        flex-grow: 1;\n      }\n      .array-control {\n        display: flex;\n        flex-direction: row;\n      }\n      .array-control button {\n        font-size: 0.8em;\n        width: 28px !important;\n        height: 28px !important;\n        padding: 4px !important;\n      }\n    `,\n  ],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class CrispyFormArrayComponent implements OnInit {\n  // This is the label for the form array element\n  @Input({ required: false }) label!: string;\n  @Input({ required: true }) group!: FormGroup;\n  @Input({ required: true }) field!: CrispyField;\n  @Input({ required: true }) crispy!: CrispyForm;\n  @Input({ required: false }) initial!: Array<any>;\n\n  @Output() formGroupAdded = new EventEmitter<{\n    field: string;\n    form: FormGroup;\n  }>();\n  @Output() formGroupRemoved = new EventEmitter<{\n    field: string;\n    form: FormGroup;\n  }>();\n  crispyConfig!: CrispyFormsConfig;\n\n  control!: FormArray;\n  crispies: CrispyForm[] = [];\n  addRowLabel!: Observable<string>;\n  colTitles: string[] = [];\n\n  constructor(private cdr: ChangeDetectorRef, private injector: Injector) {}\n\n  ngOnInit() {\n    const crispyConfig = this.crispyConfig = safeGetCrispyConfig(this.injector);\n    if (crispyConfig && crispyConfig?.groupArrayConfig?.addRowText) {\n      if (crispyConfig?.groupArrayConfig?.addRowText instanceof Observable) {\n        this.addRowLabel = crispyConfig.groupArrayConfig.addRowText;\n      } else {\n        this.addRowLabel = of(crispyConfig.groupArrayConfig.addRowText);\n      }\n    } else {\n      this.addRowLabel = of('Add Row');\n    }\n    this.control = this.group.controls[this.field.name] as FormArray;\n    // Don't add the row directly or else you will get\n    // ExpressionChangedAfterItHasBeenCheckedError. Add it via a timeout so\n    // that the natural change detect algo (that happens after the\n    // timer routine) picks it up. This will avoid the error as well.\n    // Adding rows when user clicks the 'Add Row' button is okay as the change\n    // detect algo loop is run after every user input.\n    setTimeout(() => {\n      if (this.initial && Array.isArray(this.initial)) {\n        this.initial.forEach(values => {\n          this.addRow(values, true);\n        });\n      }\n      if (!this.field.options?.groupArrayOptions?.disableAddRow) {\n        this.addRow(undefined, true);\n      }\n    });\n  }\n\n  addRow(initial: any, emit = true) {\n    const crispyConfig = safeGetCrispyConfig(this.injector);\n    if (this.field.children) {\n      const crispy: CrispyForm = {\n        form: buildFormGroup(\n          this.field.children!,\n          new FormGroup({}, this.field.validators),\n          crispyConfig.defaultRowCssClass!,\n          crispyConfig.defaultColCssClass!,\n          crispyConfig.numberOfColsPerRow!,\n          crispyConfig.defaultColDivCssClassTemplate!\n        ),\n        field: Array.isArray(this.field.children) ? CrispyDiv('', this.field.children) : this.field.children\n      };\n      // set initial value if it was provided\n      if (initial) {\n        for (const key in initial) {\n          if (crispy.form.controls[key] && initial[key] !== undefined) {\n            crispy.form.controls[key].setValue(initial[key]);\n          }\n        }\n      }\n      this.control.push(crispy.form);\n      this.crispies.push(crispy);\n      if (emit) {\n        this.formGroupAdded.emit({ field: this.field.name, form: crispy.form });\n      }\n      this.cdr.markForCheck();\n    }\n  }\n\n  delRow(index: number) {\n    if (index < this.crispies.length) {\n      this.control.removeAt(index);\n      const crispy = this.crispies.splice(index, 1);\n      this.formGroupRemoved.emit({ field: this.field.name, form: crispy[0].form });\n      this.cdr.markForCheck();\n    }\n  }\n\n  get disableAddRow() {\n    return !!this.field.options?.groupArrayOptions?.disableAddRow;\n  }\n  get disableDelRow() {\n    return !!this.field.options?.groupArrayOptions?.disableDelRow;\n  }\n}\n\n@Component({\n  selector: 'crispy-render-field',\n  template: `\n    <crispy-row\n      *ngIf=\"field.type == 'row'\"\n      [crispy]=\"crispy\"\n      [field]=\"field\"\n    ></crispy-row>\n    <crispy-div\n      *ngIf=\"field.type == 'div'\"\n      [crispy]=\"crispy\"\n      [field]=\"field\"\n    ></crispy-div>\n    <crispy-field-input\n      *ngIf=\"\n        field.type == 'text' ||\n        field.type == 'number' ||\n        field.type == 'email' ||\n        field.type == 'password' ||\n        field.type == 'search' ||\n        field.type == 'textarea'\n      \"\n      [crispy]=\"crispy\"\n      [field]=\"field\"\n    ></crispy-field-input>\n    <crispy-field-select\n      *ngIf=\"field.type == 'select'\"\n      [crispy]=\"crispy\"\n      [field]=\"field\"\n    ></crispy-field-select>\n    <crispy-field-daterange\n      *ngIf=\"field.type == 'daterange'\"\n      [crispy]=\"crispy\"\n      [field]=\"field\"\n    ></crispy-field-daterange>\n    <crispy-field-date\n      *ngIf=\"field.type == 'date'\"\n      [crispy]=\"crispy\"\n      [field]=\"field\"\n    ></crispy-field-date>\n    <crispy-field-checkbox\n      *ngIf=\"field.type == 'checkbox'\"\n      [crispy]=\"crispy\"\n      [field]=\"field\"\n    ></crispy-field-checkbox>\n    <ng-container *ngIf=\"field.type == 'custom'\" [formGroup]=\"crispy.form\">\n      <crispy-field-custom\n        [crispy]=\"crispy\"\n        [formControlName]=\"field.name\"\n        [field]=\"field\"\n      ></crispy-field-custom>\n    </ng-container>\n    <ng-container *ngIf=\"field.type === 'group'\">\n      <crispy-mat-form-impl [crispy]=\"groupCrispy\"></crispy-mat-form-impl>\n    </ng-container>\n    <crispy-form-array\n      *ngIf=\"field.type === 'groupArray'\"\n      [group]=\"crispy.form\"\n      [initial]=\"field.initial\"\n      [field]=\"field\"\n      [crispy]=\"crispy\"\n      (formGroupAdded)=\"formGroupAdded.emit($event)\"\n      (formGroupRemoved)=\"formGroupRemoved.emit($event)\"\n    ></crispy-form-array>\n    <crispy-field-template\n      *ngIf=\"field.type == 'template'\"\n      [crispy]=\"crispy\"\n      [field]=\"field\"\n    ></crispy-field-template>\n  `,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class CrispyRenderFieldComponent implements OnInit {\n  @Input({ required: true }) crispy!: CrispyForm;\n  @Input({ required: true }) field!: CrispyField;\n\n  @Output() formGroupAdded = new EventEmitter<{\n    field: string;\n    form: FormGroup;\n  }>();\n  @Output() formGroupRemoved = new EventEmitter<{\n    field: string;\n    form: FormGroup;\n  }>();\n\n  private _tempForm = new FormGroup({});\n  groupCrispy!: CrispyForm;\n\n  constructor() {}\n\n  ngOnInit() {\n    if (this.field.type === 'group') {\n      this.groupCrispy = {\n        form: this.crispy.form.controls[this.field.name] as FormGroup,\n        field: CrispyDiv('', this.field.children ?? []),\n      };\n    }\n  }\n\n  get form(): FormGroup<any> {\n    return this.crispy ? this.crispy.form : this._tempForm;\n  }\n}\n\n@Component({\n  selector: 'crispy-mat-form-impl',\n  template: `\n    <crispy-div\n      [crispy]=\"crispy\"\n      [field]=\"crispy.field\"\n      (formGroupAdded)=\"formGroupAdded.emit($event)\"\n      (formGroupRemoved)=\"formGroupRemoved.emit($event)\"\n    ></crispy-div>\n  `,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class CrispyMatFormImplComponent implements OnInit {\n  @Input({ required: true }) crispy!: CrispyForm;\n  @Output() formGroupAdded = new EventEmitter<{\n    field: string;\n    form: FormGroup;\n  }>();\n  @Output() formGroupRemoved = new EventEmitter<{\n    field: string;\n    form: FormGroup;\n  }>();\n\n  constructor() {}\n\n  ngOnInit() {}\n}\n","import { Injectable, Injector } from '@angular/core';\nimport {\n  AbstractControlOptions,\n  AsyncValidatorFn,\n  FormGroup,\n  ValidatorFn,\n} from '@angular/forms';\nimport { buildFormGroup, safeGetCrispyConfig } from './crispy-internal-components';\nimport { CrispyDiv } from './crispy-mat-form-helper';\nimport { CrispyField, CrispyForm } from './crispy-types';\n\n@Injectable({ providedIn: 'any' })\nexport class CrispyBuilder {\n  constructor(private injector: Injector) {}\n\n  build(\n    field: CrispyField | CrispyField[],\n    validatorOrOpts?:\n      | ValidatorFn\n      | ValidatorFn[]\n      | AbstractControlOptions\n      | null,\n    asyncValidator?: AsyncValidatorFn | AsyncValidatorFn[] | null\n  ): CrispyForm {\n    const config = safeGetCrispyConfig(this.injector);\n    if (Array.isArray(field)) {\n      field = CrispyDiv(config.defaultContainerCssClass!, field);\n    }\n    const fg = new FormGroup({}, validatorOrOpts, asyncValidator);\n    return {\n      form: buildFormGroup(\n        [field],\n        fg,\n        config.defaultRowCssClass!,\n        config.defaultColCssClass!,\n        config.numberOfColsPerRow!,\n        config.defaultColDivCssClassTemplate!\n      ),\n      field\n    };    \n  }\n}\n","import {\n  AfterViewInit,\n  ChangeDetectionStrategy,\n  Component,\n  ContentChildren,\n  EventEmitter,\n  Injector,\n  Input,\n  OnChanges,\n  OnDestroy,\n  OnInit,\n  Output,\n  QueryList,\n  SimpleChanges,\n  ViewChild\n} from '@angular/core';\nimport {\n  FormGroup\n} from '@angular/forms';\nimport { CrispyBuilder } from './builder';\nimport { CrispyDivComponent, safeGetCrispyConfig } from './crispy-internal-components';\nimport { CrispyField, CrispyForm } from './crispy-types';\nimport { CrispyFieldNameDirective } from './field-name.directive';\n\n/**\n * `<crispy-mat-form>` is a component that makes creating & rendering angular\n * material forms a breeze. The component layers on top of angular's reactive\n * forms to create the required form fields and then layout them in a \n * standardized way such that application code only has to declare the fields\n * of the form in an array and pass this array to the component as a property.\n * \n * To illustrate with an example:\n * \n * `<crispy-mat-form [fields]=\"fields\"> </crispy-mat-form>`\n * \n * where `fields` is defined as:\n * \n * ```\n *   @ViewChild(CrispyFormComponent) crispyForm: CrispyFormComponent;\n *   ...\n *   ...\n *   ngOnInit() {\n *     this.fields = [\n *       crispyTextField('firstName', 'Peter', Validators.required, 'pe-2 w-50'),\n *       crispyTextField('lastName', 'Parker', Validators.required, 'w-50'),\n *     ]\n *   }\n * ```\n * This will create a form with two fields, `firstName` & `lastName` arranged \n * side by side. Note that in the example, the css classes used come from\n * Bootstrap and it's these classes that provide the side-by-side single-line\n * layout in the form.\n * \n * Then in the submit handler you can:\n * \n *   ```\n *   onSubmit() {\n *     const values = this.crispyForm.form.value;\n *     // send the value to the service or use it as data in HttpClient.post().\n *   }\n *   ```\n * \n * Behind the scenes crispy form works via the structure\n * ```\n * interface CrispyForm {\n *    form: FormGroup;\n *    fields: CrispyField[];\n * }\n * ```\n * Whereas `form` is the obvious angular's reactive form FormGroup object,\n * `fields` member provides the layout instructions for the individual fields\n * defined in `form`.\n * \n * To ease the process of composing these two values separately, the library\n * includes a bunch of helper functions that allows you declare the `form` and\n * the `fields` values via a single declaration. What you see in the first\n * example above is code written using these helper functions.\n * \n * Crispy forms supports the following form field types:\n * \n *  * HTML input\n *    - text, number, date, password, email, search & textarea\n *  * Material's daterange control\n *  * custom control where the control's component is specified\n *    as an option\n *  * template, where the control's html fragment may be specified\n *    in the client code via ng-template. The NgTemplate is expected\n *    to have the same name as the field.\n *  * group: For nested FormGroups.\n *  * array - for an array of fields or forms\n */\n@Component({\n  selector: 'crispy-mat-form',\n  template: `\n    <crispy-mat-form-impl\n    [crispy]=\"crispy\"\n    ></crispy-mat-form-impl>\n    <!-- <crispy-div\n      [crispy]=\"crispy\"\n      [field]=\"crispy.field\"\n      (formGroupAdded)=\"formGroupAdded.emit($event)\"\n      (formGroupRemoved)=\"formGroupRemoved.emit($event)\"\n    ></crispy-div> -->\n  `,\n  styles: [],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class CrispyMatFormComponent implements OnInit, OnChanges {\n  /**\n   * @deprecated\n   */\n  @Input({ required: false }) fields!: CrispyField[];\n\n  @Input({ required: false }) crispy!: CrispyForm;\n  @Input({ required: false }) cssClass!: string;\n\n  @Output() formGroupAdded = new EventEmitter<{\n    field: string;\n    form: FormGroup;\n  }>();\n  @Output() formGroupRemoved = new EventEmitter<{\n    field: string;\n    form: FormGroup;\n  }>();\n\n  @ViewChild(CrispyDivComponent) wrapperDiv!: CrispyDivComponent;\n\n  constructor(private injector: Injector, private builder: CrispyBuilder) {}\n\n  ngOnInit(): void {\n    if (this.fields && !this.crispy) {\n      this.crispy = this.createCrispyFormFromFields(this.fields);\n    }\n    // this.initFieldStrings();\n  }\n\n  // We should move away from this and to signals API\n  ngOnChanges(changes: SimpleChanges): void {\n    if ('crispy' in changes) {\n      this.initFieldStrings();\n    }\n  }\n\n  /**\n   * If CrispyFormsConfig.translateStrings is set to true, call the\n   * user provided translation function with the field's label and hint (if\n   * specified) and set the return value as the label & hint respectively.\n   */\n  private initFieldStrings() {\n    const crispyConfig = safeGetCrispyConfig(this.injector);\n    if (this.crispy) {\n      // const labelFn = crispyConfig.translateFn!;\n      // A recursive function that calls itself for each child CrispyField.\n      const setFieldLabel = (field: CrispyField) => {\n        if (!field.label && field.name) {\n          // Set field's name as its label\n          field.label = field.name;\n        }\n        if (crispyConfig.translateFn) {\n          const translateFn = crispyConfig.translateFn;\n          if (field.label) {\n            field.label = translateFn(field.label!);\n          }\n          if (field.hint) {\n            field.hint = translateFn(field.hint);\n          }\n        }\n\n        if (field.children) {\n          field.children.forEach(child => {\n            setFieldLabel(child);\n          });\n        }\n      }\n      setFieldLabel(this.crispy.field);\n    }\n  }\n\n  /**\n   * @deprecated - Use `crispy` property to specify CrispyForm as input\n   * instead of the `fields` property.\n   *\n   * Creates CrispyForm object from array of CrispyField objects passed\n   * as @Input() fields.\n   *\n   * @returns CrispyForm\n   */\n  private createCrispyFormFromFields(fields: CrispyField[]): CrispyForm {\n    return this.builder.build(fields);\n  }\n}\n","import { NgModule } from '@angular/core';\n\nimport { CommonModule } from '@angular/common';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatCheckboxModule } from '@angular/material/checkbox';\nimport { MatNativeDateModule } from '@angular/material/core';\nimport { MatDatepickerModule } from '@angular/material/datepicker';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatSelectModule } from '@angular/material/select';\nimport { errorTailorImports } from '@ngneat/error-tailor';\nimport {\n  CrispyCheckboxComponent,\n  CrispyCustomFieldComponent,\n  CrispyDateFieldComponent,\n  CrispyDateRangeFieldComponent,\n  CrispyDivComponent,\n  CrispyDynamicControlDirective,\n  CrispyFormArrayComponent,\n  CrispyInputFieldTypeComponent,\n  CrispyMatFormImplComponent,\n  CrispyRenderFieldComponent,\n  CrispyRowComponent,\n  CrispySelectFieldComponent,\n  CrispyTemplateFieldComponent\n} from './crispy-internal-components';\nimport { CrispyMatFormComponent } from './crispy-mat-form.component';\nimport { CrispyFieldNameDirective } from './field-name.directive';\n\n@NgModule({\n  declarations: [\n    CrispyFieldNameDirective,\n    CrispyMatFormComponent,\n    CrispyFormArrayComponent,\n    CrispySelectFieldComponent,\n    CrispyInputFieldTypeComponent,\n    CrispyDateRangeFieldComponent,\n    CrispyDateFieldComponent,\n    CrispyDynamicControlDirective,\n    CrispyCustomFieldComponent,\n    CrispyCheckboxComponent,\n    CrispyTemplateFieldComponent,\n    CrispyRenderFieldComponent,\n    CrispyDivComponent,\n    CrispyRowComponent,\n    CrispyMatFormImplComponent,\n  ],\n  imports: [\n    CommonModule,\n    FormsModule,\n    ReactiveFormsModule,\n    MatFormFieldModule,\n    MatInputModule,\n    MatButtonModule,\n    MatSelectModule,\n    MatNativeDateModule,\n    MatDatepickerModule,\n    MatCheckboxModule,\n    errorTailorImports,\n  ],\n  exports: [\n    CrispyFieldNameDirective,\n    CrispyMatFormComponent\n  ],\n  providers: [],\n})\nexport class CrispyMatFormModule {}\n","/*\n * Public API Surface of crispy-mat-form\n */\n\nexport * from './lib/crispy-types';\nexport * from './lib/field-name.directive';\nexport * from './lib/crispy-mat-form.component';\nexport * from './lib/crispy-mat-form.module';\nexport * from './lib/crispy-mat-form-helper';\nexport * from './lib/builder';\nexport * from './lib/providers';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.CrispyBuilder","i2.CrispyMatFormImplComponent"],"mappings":"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"}