{"version":3,"file":"ng-mat-form-builder.mjs","sources":["../../../projects/ng-mat-form-builder/src/lib/ng-mat-form-builder.service.ts","../../../projects/ng-mat-form-builder/src/lib/ng-mat-form-builder.component.ts","../../../projects/ng-mat-form-builder/src/lib/ng-mat-form-builder.module.ts","../../../projects/ng-mat-form-builder/src/public-api.ts","../../../projects/ng-mat-form-builder/src/ng-mat-form-builder.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\n\n@Injectable({\n  providedIn: 'root'\n})\nexport class NgMatFormBuilderService {\n\n  constructor() { }\n}\n","import {Component, EventEmitter, Input, OnChanges, OnInit, Output, SimpleChanges} from '@angular/core';\nimport {FormBuilder, FormGroup} from \"@angular/forms\";\nimport {HttpClient, HttpHeaders} from \"@angular/common/http\";\n\ninterface FormObject {\n  [key: string]: any;\n}\n\n@Component({\n  selector: 'lib-ng-mat-form-builder',\n  template: `\n      <form [formGroup]='form' (ngSubmit)='returnForm()'>\n          <div class='row'>\n              <div class='col' *ngFor='let item of items; let i = index'\n                   [ngClass]=\"{ 'col-12': item?.type === 'hidden' }\">\n\n                  <div *ngIf=\"item.type === 'hidden'\">\n                      <mat-label>{{ item?.label }}</mat-label>\n                      <hr class='w-100 bg-danger'/>\n                  </div>\n\n                  <div class='col' *ngIf=\"item?.type !== 'hidden'\">\n                      <mat-form-field appearance='outline' class='w-100'\n                                      *ngIf=\"!item?.isFile\">\n                          <mat-label>{{ item.label }}</mat-label>\n\n                          <!--Normal Input Control-->\n                          <input\n                                  matInput\n                                  [formControlName]='item.formControlName'\n                                  *ngIf=\"!item.options && item.type !== 'date' && item.type !== 'autoComplete' && !item?.isTextArea && item.type\"\n                                  [type]='item.type'\n                                  [required]='item.required'\n                                  [readonly]='item?.readonly'\n                          />\n\n                          <!--Normal Select Option Control-->\n                          <mat-select\n                                  *ngIf='item.options && !item?.isAutoComplete'\n                                  [multiple]='item.isMultiple'\n                                  [formControlName]='item.formControlName'\n                                  [disabled]='item?.disabled'\n                          >\n                              <mat-option *ngFor='let option of item.options' [value]='option.value'>\n                                  {{ option.name }}\n                              </mat-option>\n                          </mat-select>\n\n                        <!--Select With Auto Complete Option Control-->\n                        <div *ngIf=\"item.options && item?.type === 'autoComplete'\">\n                          <mat-select\n                            [multiple]=\"item.isMultiple\"\n                            [formControlName]=\"item.formControlName\"\n                            [disabled]=\"item?.disabled\"\n                          >\n                            <input (keyup)=\"onKey($event.target, i)\" class=\"w-100\" name=\"search\" autofocus [autofocus]=\"true\" />\n                            <mat-option *ngFor=\"let option of item.options\" [value]=\"option.value\">\n                              {{ option.name }}\n                            </mat-option>\n                          </mat-select>\n                        </div>\n\n\n                          <!--Normal Date Picker Control-->\n                          <input\n                                  matInput\n                                  *ngIf=\"item.type === 'date'\"\n                                  [matDatepicker]='picker'\n                                  [formControlName]='item.formControlName'\n                                  [readonly]='item?.readonly'\n                          />\n                          <mat-datepicker-toggle [for]='picker' matSuffix\n                                                 *ngIf=\"item.type === 'date'\"></mat-datepicker-toggle>\n                          <mat-datepicker #picker></mat-datepicker>\n\n                          <!--Normal Text Area Control-->\n                          <textarea\n                                  matInput\n                                  style='line-height: 2'\n                                  *ngIf='item?.isTextArea'\n                                  [formControlName]='item.formControlName'\n                                  [required]='item.required'\n                                  [readonly]='item?.readonly'\n                          ></textarea>\n\n                          <!--Normal File Control-->\n                          <input\n                                  *ngIf='item?.isFile'\n                                  type='file'\n                                  [formControlName]='item.formControlName'\n                                  [required]='item.required'\n                                  [readonly]='item?.readonly'\n                          />\n\n                          <mat-hint *ngIf='item.hint'>{{ item.hint }}</mat-hint>\n                      </mat-form-field>\n\n                      <input\n                              name='uploadedFile'\n                              class='d-none'\n                              type='file'\n                              [id]=\"item.formControlName\"\n                              (change)='addFile($event, item.formControlName)'\n                              *ngIf='item?.isFile'\n                      />\n                      <button\n                              mat-raised-button\n                              color='accent'\n                              class='w-100 mt-3 mb-3'\n                              (click)='triggerFileSelect(item.formControlName)'\n                              *ngIf='item?.isFile'\n                              type='button'\n                      >\n                          {{ form.get(item.formControlName)?.value.name || item.label }}\n                      </button>\n                      <mat-hint *ngIf='item?.isFile && item?.link'>\n                          <a href='javascript:void(0)'\n                             (click)='openFile(item?.link, item?.header)'>{{ item?.downloadLinkTitle}}</a>\n                      </mat-hint>\n\n                  </div>\n              </div>\n          </div>\n\n          <div class='row mt-2' *ngIf='showSaveButton'>\n              <div class='col'>\n                  <button mat-raised-button [color]=\"saveButtonColor\" [ngStyle]='{ width: buttonWidth }'\n                          [disabled]='form.invalid'>\n                      {{ saveButtonName }}\n                  </button>\n              </div>\n          </div>\n      </form>\n  `,\n  styles: [\n  ]\n})\nexport class NgMatFormBuilderComponent implements OnInit, OnChanges {\n\n  @Input() items: any[] = [];\n  @Input() formAppearance = 'outline';\n  @Input() saveButtonName = 'Save';\n  @Input() saveButtonColor: string = 'warn';\n  @Input() showSaveButton = true;\n  @Input() checkForValid = true;\n  @Input() buttonWidth: any;\n  @Input() patchValue: any;\n  @Input() fileDownloadPath: any;\n  @Input() resetForm!: boolean;\n\n  @Output() formResult: EventEmitter<FormGroup> = new EventEmitter<FormGroup>();\n  @Output() valueChangesForm: EventEmitter<any> = new EventEmitter<any>();\n  @Output() mainFormValueChanges: EventEmitter<any> = new EventEmitter<any>();\n\n  form!: FormGroup;\n\n  constructor(private formBuilder: FormBuilder,\n              private http: HttpClient) {\n  }\n\n  ngOnChanges(changes: SimpleChanges): void {\n    if (this.resetForm) {\n      this.form.reset();\n    }\n  }\n\n  ngOnInit(): void {\n    this.createForm();\n    if (this.patchValue) {\n      this.form.patchValue(this.patchValue);\n      for (const item of this.items) {\n        if (item.isFile) {\n          this.form.get(item.formControlName)?.setValue(this.patchValue[item.formControlName]);\n        }\n      }\n    }\n  }\n\n  createForm(): void {\n    const group: FormObject = {};\n    for (const item of this.items) {\n      const validators = item.validators;\n      group[item.formControlName] = [{value: '', disabled: item.disabled}, validators];\n      if (item.options && item.isAutoComplete) {\n        item.tempOptions = item.options;\n      }\n    }\n    this.form = this.formBuilder.group(group);\n    this.form.valueChanges.subscribe((result) => {\n      this.valueChangesForm.emit(result);\n    });\n    this.mainFormValueChanges.emit(this.form);\n  }\n\n  returnForm(): void {\n    this.formResult.emit(this.form);\n  }\n\n  addFile(files: any, formControlName: string): void {\n    this.form.get(formControlName)?.patchValue(files?.target.files?.item(0));\n  }\n\n  triggerFileSelect(id: string): void {\n    document.getElementById(id)?.click();\n  }\n\n  openFile(link: string, headers: HttpHeaders): void {\n    this.http.get(link, {headers: headers}).subscribe((response: any) => {\n      window.open(response?.link, '_blank')\n    });\n  }\n\n  onKey(event: any, itemIndex: any): any {\n    if (!event.value) {\n      this.items[itemIndex].options = this.items[itemIndex].tempOptions;\n    }\n    const filterValue = event.value.toLowerCase();\n    this.items[itemIndex].options = this.items[itemIndex].options.filter((option: any) =>\n      option.name.toLowerCase().includes(filterValue)\n    );\n  }\n\n}\n","import {NgModule} from '@angular/core';\nimport {NgMatFormBuilderComponent} from './ng-mat-form-builder.component';\nimport {ReactiveFormsModule} from \"@angular/forms\";\nimport {MatButtonModule} from \"@angular/material/button\";\nimport {MatInputModule} from \"@angular/material/input\";\nimport {MatDatepickerModule} from \"@angular/material/datepicker\";\nimport {MatNativeDateModule, MatOptionModule} from \"@angular/material/core\";\nimport {MatSelectModule} from \"@angular/material/select\";\nimport {NgClass, NgForOf, NgIf, NgStyle} from \"@angular/common\";\nimport {HttpClientModule} from \"@angular/common/http\";\nimport {MatAutocompleteModule} from \"@angular/material/autocomplete\";\n\n\n@NgModule({\n  declarations: [\n    NgMatFormBuilderComponent\n  ],\n  imports: [\n    ReactiveFormsModule,\n    MatButtonModule,\n    MatInputModule,\n    MatDatepickerModule,\n    MatOptionModule,\n    MatSelectModule,\n    MatNativeDateModule,\n    NgStyle,\n    NgClass,\n    NgForOf,\n    NgIf,\n    HttpClientModule,\n    MatAutocompleteModule\n  ],\n  exports: [\n    NgMatFormBuilderComponent\n  ]\n})\nexport class NgMatFormBuilderModule {\n}\n","/*\n * Public API Surface of ng-mat-form-builder\n */\n\nexport * from './lib/ng-mat-form-builder.service';\nexport * from './lib/ng-mat-form-builder.component';\nexport * from './lib/ng-mat-form-builder.module';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}