{"version":3,"file":"ngx-mui-kit-components-muk-form-array-builder.mjs","sources":["../../../projects/ngx-mui-kit/components/muk-form-array-builder/src/muk-form-array-builder.component.ts","../../../projects/ngx-mui-kit/components/muk-form-array-builder/src/muk-form-array-builder.component.html","../../../projects/ngx-mui-kit/components/muk-form-array-builder/ngx-mui-kit-components-muk-form-array-builder.ts"],"sourcesContent":["import {\r\n  Component,\r\n  inject,\r\n  Input,\r\n  OnChanges,\r\n} from \"@angular/core\";\r\nimport {CommonModule} from \"@angular/common\";\r\nimport {\r\n  FormArray,\r\n  FormBuilder,\r\n  FormControl,\r\n  FormGroup,\r\n  ReactiveFormsModule,\r\n  Validators,\r\n} from \"@angular/forms\";\r\nimport {MatCardModule} from \"@angular/material/card\";\r\nimport {Filed, IFormControl, MukFieldBuilderComponent} from \"ngx-mui-kit/components/muk-field-builder\";\r\nimport {MukDynamicButtonsComponent} from \"ngx-mui-kit/components/muk-dynamic-buttons\";\r\nimport {ButtonColors, ButtonTypes, IButton} from \"ngx-mui-kit/components/muk-button\";\r\nimport {MukButtonComponent} from \"ngx-mui-kit/components/muk-button\";\r\n\r\n@Component({\r\n  selector: \"lib-muk-form-array-builder\",\r\n  imports: [\r\n    CommonModule,\r\n    ReactiveFormsModule,\r\n    MukFieldBuilderComponent,\r\n    MatCardModule,\r\n    MukButtonComponent,\r\n    MukDynamicButtonsComponent,\r\n    MukFieldBuilderComponent,\r\n  ],\r\n  templateUrl: \"./muk-form-array-builder.component.html\",\r\n  styleUrls: [\"./muk-form-array-builder.component.scss\"],\r\n  standalone: true,\r\n})\r\nexport class MukFormArrayBuilderComponent implements OnChanges {\r\n  @Input({required: true, alias: \"arrayController\"}) formArrayName!: string;\r\n  @Input({required: true}) formGroup!: FormGroup;\r\n  @Input({required: true}) label!: string;\r\n  @Input({required: true}) fields: { fields: IFormControl<Filed>[] }[] = [];\r\n  protected buttons: IButton[] = [\r\n    {\r\n      text: \"Add\",\r\n      buttonType: \"button\",\r\n      icon: \"add\",\r\n      matType: ButtonTypes.flat,\r\n      color: ButtonColors.primary,\r\n      clicked: () => {\r\n        this.addNewCard();\r\n      },\r\n    },\r\n  ];\r\n  private readonly _fb: FormBuilder = inject(FormBuilder);\r\n\r\n  ngOnChanges(): void {\r\n    if (this.formArrayName && this.formGroup && this.fields && this.label) {\r\n      this.initializeFormArray();\r\n    }\r\n  }\r\n\r\n  protected getFormArray(): FormArray {\r\n    return this.formGroup.get(this.formArrayName) as FormArray;\r\n  }\r\n\r\n  private initializeFormArray() {\r\n    let formControllers: { [key: string]: FormControl<unknown> } = {};\r\n    const formArray: FormArray = this.formGroup.get(\r\n      this.formArrayName\r\n    ) as FormArray;\r\n    for (let i = 0; i < this.fields.length; i++) {\r\n      for (const field of this.fields[i].fields) {\r\n        formControllers[field.controller.name] = field.controller\r\n          .controller as FormControl;\r\n      }\r\n      formArray.push(this._fb.group(formControllers));\r\n    }\r\n  }\r\n\r\n  private addNewCard() {\r\n    let formControllers: { [key: string]: FormControl<unknown> } = {};\r\n    const formArray: FormArray = this.formGroup.get(\r\n      this.formArrayName\r\n    ) as FormArray;\r\n    for (const field of this.fields[0].fields) {\r\n      formControllers[field.controller.name] = this._fb.control(null, [\r\n        Validators.required,\r\n      ]);\r\n    }\r\n    this.fields.push({\r\n      fields: [\r\n        ...this.fields[0].fields.map(field => {\r\n          return {\r\n            ...field,\r\n            controller: {\r\n              ...field.controller,\r\n              controller: this._fb.control(\r\n                null,\r\n                (field.controller.controller as FormControl).validator\r\n              ) as FormControl,\r\n            },\r\n          };\r\n        }),\r\n      ],\r\n    });\r\n    formArray.push(this._fb.group(formControllers));\r\n    formArray.at(formArray.length - 1).reset();\r\n  }\r\n}\r\n","<div [formGroup]=\"formGroup\">\r\n  <div [formArrayName]=\"formArrayName\">\r\n    <mat-card\r\n      *ngFor=\"let item of getFormArray().controls; let groupIndex = index\"\r\n      class=\"row my-2\">\r\n      <div [formGroupName]=\"groupIndex\" class=\"p-3 m-2 row\">\r\n        <ng-container\r\n          *ngFor=\"\r\n            let filed of fields[groupIndex]['fields'];\r\n            let filedIndex = index\r\n          \">\r\n          <div\r\n            class=\"col-{{ filed['columnSize'] }} {{ filed['containerStyle'] }}\">\r\n            <lib-muk-field-builder [inputSpecification]=\"filed\" />\r\n          </div>\r\n        </ng-container>\r\n      </div>\r\n    </mat-card>\r\n  </div>\r\n  <lib-muk-dynamic-buttons [buttons]=\"buttons\"></lib-muk-dynamic-buttons>\r\n</div>\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}