{"version":3,"file":"weblauncher-material-form.mjs","sources":["../../src/lib/types/entity-field-type.enum.ts","../../src/lib/types/entity-field-input-type.enum.ts","../../src/lib/components/img-preview/img-preview.component.ts","../../src/lib/form.component.ts","../../src/lib/form.component.html","../../src/lib/form.module.ts","../../src/public-api.ts","../../src/weblauncher-material-form.ts"],"sourcesContent":["export enum EntityFieldType {\r\n  String = 'string',\r\n  Timestamp = 'timestamp',\r\n  Boolean = 'boolean',\r\n  Number = 'number'\r\n}\r\n","export enum EntityFieldInputType {\r\n  Text = 'text',\r\n  Select = 'select',\r\n  MultiSelect = 'multi-select',\r\n  Ckeditor = 'ckeditor',\r\n  Radio = 'radio',\r\n  Textarea = 'textarea',\r\n  Image = 'image',\r\n  File = 'file',\r\n  Toggle = 'toggle',\r\n  Checkbox = 'checkbox',\r\n  MultiCheckbox = 'multi-checkbox',\r\n  Datepicker = 'datepicker',\r\n  Password = 'password'\r\n}\r\n","import { CommonModule } from '@angular/common';\nimport {\n ChangeDetectionStrategy, Component, Input, OnInit,\n} from '@angular/core';\nimport { BehaviorSubject } from 'rxjs';\n\n@Component({\n  selector: 'mat-img-preview',\n  template: `<img class=\"file-input-image\" [src]=\"src$ | async\" [alt]=\"alt\" style=\"width: 4rem\"/>`,\n  standalone: true,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  imports: [CommonModule],\n})\n\nexport class ImgPreviewComponent implements OnInit {\n  @Input() file!: File;\n\n  @Input() alt!: string;\n\n  src$ = new BehaviorSubject<string>('');\n\n  constructor() { }\n\n  ngOnInit() {\n    const reader = new FileReader();\n\n    reader.onload = (e) => {\n      this.src$.next(e.target?.result as string);\n    };\n\n    reader.readAsDataURL(this.file);\n  }\n}\n","import {\r\n Component, OnInit, Input, Output, EventEmitter, OnDestroy, ChangeDetectionStrategy,\r\n} from '@angular/core';\r\nimport {\r\n  UntypedFormGroup,\r\n  UntypedFormBuilder,\r\n  Validators,\r\n  UntypedFormControl,\r\n  FormControl,\r\n  FormArray,\r\n} from '@angular/forms';\r\nimport {\r\n map, takeUntil,\r\n} from 'rxjs/operators';\r\nimport { Subject } from 'rxjs';\r\nimport {\r\n MatFormEntityField, MatFormSection, MatFormSectionsLayout, EntityFieldInputType,\r\n} from './types';\r\n\r\n@Component({\r\n  selector: 'mat-form',\r\n  templateUrl: './form.component.html',\r\n  styleUrls: ['./form.component.scss'],\r\n  changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class MaterialFormComponent implements OnInit, OnDestroy {\r\n  @Input() fields!: Partial<MatFormEntityField>[] | undefined | null;\r\n\r\n  @Input() layout!: MatFormSectionsLayout | undefined | null;\r\n\r\n  @Input() saveBtnText = 'Save';\r\n\r\n  @Input() removeBtnText = 'Remove';\r\n\r\n  @Input() disableOnInvalid = true;\r\n\r\n  @Output() ngSubmit: EventEmitter<any> = new EventEmitter();\r\n\r\n  @Output() valueChanges: EventEmitter<any> = new EventEmitter();\r\n\r\n  @Output() validChanges: EventEmitter<boolean> = new EventEmitter();\r\n\r\n  form!: UntypedFormGroup;\r\n\r\n  sections!: Partial<MatFormSection>[];\r\n\r\n  EntityFieldInputType = EntityFieldInputType;\r\n\r\n  formStyles = this.getLayoutStyles(this.layout);\r\n\r\n  private destroyed$: Subject<void> = new Subject();\r\n\r\n  constructor(private formBuilder: UntypedFormBuilder) {\r\n    // empty\r\n  }\r\n\r\n  ngOnInit(): void {\r\n    if (this.fields) {\r\n      this.form = this.formBuilder.group(\r\n        this.fields?.reduce((prev, cur) => ({ ...prev,\r\n[cur?.name ?? '']: this.getField(cur) }), {}),\r\n      );\r\n\r\n      this.form.valueChanges\r\n        .pipe(\r\n          map((value) => this.mapFormValue(value)),\r\n          takeUntil(this.destroyed$),\r\n        )\r\n        .subscribe(this.valueChanges);\r\n      this.form.statusChanges.pipe(takeUntil(this.destroyed$)).subscribe(() => this.validChanges.emit(this.form.valid));\r\n    }\r\n\r\n    this.sections = this.getSectionsWithFields() as Partial<MatFormSection>[];\r\n  }\r\n\r\n  ngOnDestroy() {\r\n    this.destroyed$.next();\r\n    this.destroyed$.complete();\r\n  }\r\n\r\n  submit() {\r\n    if (this.form.valid) {\r\n      this.ngSubmit.emit(this.form.value);\r\n    }\r\n  }\r\n\r\n  removeImage(field: MatFormEntityField) {\r\n    if (field?.name) {\r\n      this.form.get(field.name)?.setValue(null);\r\n    }\r\n  }\r\n\r\n  get disabled(): boolean {\r\n    return this.disableOnInvalid && this.form.invalid;\r\n  }\r\n\r\n  getLayoutStyles(layout: any) {\r\n    return {\r\n      display: 'flex',\r\n      flexFlow: layout?.direction ?? 'column wrap',\r\n      placeContent: `${layout?.crossAlign ?? 'stretch'} ${layout?.mainAlign ?? 'center'}`,\r\n      rowGap: layout?.gap,\r\n      columnGap: layout?.gap,\r\n    };\r\n  }\r\n\r\n  showError(field: MatFormEntityField, messageKey: string | unknown) {\r\n    return (\r\n      messageKey &&\r\n      field?.validatorMessages &&\r\n      field?.name &&\r\n      this.form.get(field?.name)?.invalid &&\r\n      this.form.get(field?.name)?.hasError(messageKey as string)\r\n    );\r\n  }\r\n\r\n  private getSectionsWithFields() {\r\n    if (!this.layout?.sections) {\r\n      return [\r\n        {\r\n          fields: this.fields,\r\n          layout: this.layout,\r\n        },\r\n      ];\r\n    }\r\n\r\n    return this.layout?.sections.map((section) => ({\r\n      ...section,\r\n      fields: ((section?.fields ?? []) as string[]).map((fieldName) =>\r\n        this.fields?.find((field) => field?.name === fieldName),\r\n      ),\r\n      layout: section?.layout ?? this.layout,\r\n    }));\r\n  }\r\n\r\n  private getFieldValue(field: Partial<MatFormEntityField>) {\r\n    return field?.value;\r\n  }\r\n\r\n  private getFieldValidators(field: Partial<MatFormEntityField>) {\r\n    return field.validatorOrOpts ?? [Validators.required];\r\n  }\r\n\r\n  private getField(field: Partial<MatFormEntityField>) {\r\n    // see if field is a form array field\r\n    if (field?.inputType === EntityFieldInputType.MultiCheckbox) {\r\n      return new FormArray([\r\n        ...(field?.options?.map(\r\n          (option: { value: any; label: string; valueObject?: any }) =>\r\n            new FormControl(this.getFieldValue(field)?.includes(option?.value)),\r\n        ) ?? []),\r\n      ]);\r\n    }\r\n\r\n    return new UntypedFormControl(this.getFieldValue(field), this.getFieldValidators(field));\r\n  }\r\n\r\n  private mapFormValue(formValue: any) {\r\n    return this.fields?.reduce(\r\n      (prev, cur) => ({ ...prev,\r\n[cur?.name ?? '']: this.getFormFieldValue(cur, formValue?.[cur?.name ?? '']) }),\r\n      {},\r\n    );\r\n  }\r\n\r\n  private getFormFieldValue(field: Partial<MatFormEntityField>, formValue: any) {\r\n    if (field?.inputType === EntityFieldInputType.MultiCheckbox) {\r\n      return field?.options?.filter((_, i) => !!formValue?.[i]).map((option) => option?.value);\r\n    }\r\n\r\n    return formValue;\r\n  }\r\n}\r\n","<form [formGroup]=\"form\" (ngSubmit)=\"submit()\" class=\"display-flex\" [ngStyle]=\"formStyles\">\r\n  <mat-card\r\n    class=\"form-section\"\r\n    *ngFor=\"let section of sections\"\r\n    [ngClass]=\"{ 'mat-elevation-z0': sections.length === 1 }\"\r\n  >\r\n    <mat-card-header>\r\n      <mat-card-title class=\"form-section-header\" *ngIf=\"section?.title\"> {{ section.title }}</mat-card-title>\r\n      <mat-card-subtitle class=\"form-section-header\" *ngIf=\"section?.subtitle\">\r\n        {{ section.subtitle }}</mat-card-subtitle\r\n      >\r\n    </mat-card-header>\r\n\r\n    <mat-card-content class=\"form-section-body display-flex\" [ngStyle]=\"getLayoutStyles(section?.layout)\">\r\n      <ng-container *ngIf=\"section?.fields\">\r\n        <ng-container *ngFor=\"let field of $any(section?.fields)\">\r\n          <ng-container *ngTemplateOutlet=\"formField; context: { field: field }\"></ng-container>\r\n        </ng-container>\r\n      </ng-container>\r\n    </mat-card-content>\r\n  </mat-card>\r\n\r\n  <div class=\"display-flex\" [ngStyle]=\"{ 'justify-content': 'end' }\">\r\n    <button mat-flat-button color=\"primary\" type=\"submit\" [disabled]=\"disabled\">{{ saveBtnText }}</button>\r\n  </div>\r\n\r\n  <ng-template #formField let-field=\"field\">\r\n    <div\r\n      class=\"form-field-container\"\r\n      [ngClass]=\"'form-field-' + (field?.inputType || 'text')\"\r\n      [ngStyle]=\"field?.style?.form\"\r\n    >\r\n      <ng-container [ngSwitch]=\"field?.inputType\">\r\n        <!-- ckeditor -->\r\n        <mat-form-field *ngSwitchCase=\"EntityFieldInputType.Ckeditor\" class=\"ckeditor\">\r\n          <mat-label>{{ field?.label }}</mat-label>\r\n          <mat-ckeditor [formControlName]=\"field?.name\"></mat-ckeditor>\r\n          <mat-error>\r\n            <ng-container *ngTemplateOutlet=\"formFieldErrors; context: { field: field }\"></ng-container>\r\n          </mat-error>\r\n        </mat-form-field>\r\n        <!-- textarea -->\r\n        <mat-form-field *ngSwitchCase=\"EntityFieldInputType.Textarea\">\r\n          <mat-label>{{ field?.label }}</mat-label>\r\n          <textarea matInput [formControlName]=\"field?.name\"></textarea>\r\n          <mat-error>\r\n            <ng-container *ngTemplateOutlet=\"formFieldErrors; context: { field: field }\"></ng-container>\r\n          </mat-error>\r\n        </mat-form-field>\r\n        <!-- select -->\r\n        <mat-form-field *ngSwitchCase=\"EntityFieldInputType.Select\">\r\n          <mat-label>{{ field?.label }}</mat-label>\r\n          <mat-select [formControlName]=\"field?.name\">\r\n            <mat-option *ngFor=\"let option of field?.options\" [value]=\"option?.value\">\r\n              {{ option?.label }}\r\n            </mat-option>\r\n          </mat-select>\r\n          <mat-error>\r\n            <ng-container *ngTemplateOutlet=\"formFieldErrors; context: { field: field }\"></ng-container>\r\n          </mat-error>\r\n        </mat-form-field>\r\n        <!-- multi select -->\r\n        <mat-form-field *ngSwitchCase=\"EntityFieldInputType.MultiSelect\">\r\n          <mat-label>{{ field?.label }}</mat-label>\r\n          <mat-select [formControlName]=\"field?.name\" multiple>\r\n            <mat-option *ngFor=\"let option of field?.options\" [value]=\"option?.value\">\r\n              {{ option?.label }}\r\n            </mat-option>\r\n          </mat-select>\r\n          <mat-error>\r\n            <ng-container *ngTemplateOutlet=\"formFieldErrors; context: { field: field }\"></ng-container>\r\n          </mat-error>\r\n        </mat-form-field>\r\n        <!-- radio -->\r\n        <div *ngSwitchCase=\"EntityFieldInputType.Radio\" class=\"radio\">\r\n          <mat-label>{{ field?.label }}:</mat-label>\r\n          <mat-radio-group [formControlName]=\"field?.name\" color=\"primary\">\r\n            <mat-radio-button *ngFor=\"let option of field?.options\" [value]=\"option?.value\">{{\r\n              option?.label\r\n            }}</mat-radio-button>\r\n          </mat-radio-group>\r\n          <mat-error>\r\n            <ng-container *ngTemplateOutlet=\"formFieldErrors; context: { field: field }\"></ng-container>\r\n          </mat-error>\r\n        </div>\r\n        <!-- datepicker -->\r\n        <mat-form-field *ngSwitchCase=\"EntityFieldInputType.Datepicker\">\r\n          <mat-label>{{ field?.label }}</mat-label>\r\n          <input matInput [formControlName]=\"field?.name\" [matDatepicker]=\"picker\" />\r\n          <mat-datepicker-toggle matSuffix [for]=\"picker\"></mat-datepicker-toggle>\r\n          <mat-datepicker touchUi #picker></mat-datepicker>\r\n          <mat-error>\r\n            <ng-container *ngTemplateOutlet=\"formFieldErrors; context: { field: field }\"></ng-container>\r\n          </mat-error>\r\n        </mat-form-field>\r\n        <!-- checkbox -->\r\n        <div *ngSwitchCase=\"EntityFieldInputType.Checkbox\" class=\"checkbox\">\r\n          <mat-checkbox [formControlName]=\"field?.name\" color=\"primary\" [value]=\"'1'\">{{ field?.label }}</mat-checkbox>\r\n          <mat-error>\r\n            <ng-container *ngTemplateOutlet=\"formFieldErrors; context: { field: field }\"></ng-container>\r\n          </mat-error>\r\n        </div>\r\n        <!-- multi checkbox -->\r\n        <div *ngSwitchCase=\"EntityFieldInputType.MultiCheckbox\" class=\"checkbox multi\" [formArrayName]=\"field?.name\">\r\n          <div>\r\n            <mat-label>{{ field?.label }}</mat-label>\r\n          </div>\r\n          <mat-checkbox *ngFor=\"let option of field?.options; let i = index\" [formControlName]=\"i\" color=\"primary\">\r\n            {{ option?.label }}\r\n          </mat-checkbox>\r\n          <mat-error>\r\n            <ng-container *ngTemplateOutlet=\"formFieldErrors; context: { field: field }\"></ng-container>\r\n          </mat-error>\r\n        </div>\r\n        <!-- slide toggle -->\r\n        <div *ngSwitchCase=\"EntityFieldInputType.Toggle\" class=\"checkbox\">\r\n          <mat-slide-toggle color=\"primary\" [formControlName]=\"field?.name\">\r\n            {{ field?.label }}\r\n          </mat-slide-toggle>\r\n          <mat-error>\r\n            <ng-container *ngTemplateOutlet=\"formFieldErrors; context: { field: field }\"></ng-container>\r\n          </mat-error>\r\n        </div>\r\n        <!-- file upload -->\r\n        <mat-form-field *ngSwitchCase=\"EntityFieldInputType.File\">\r\n          <mat-label>{{ field?.label }}</mat-label>\r\n          <mat-file-input [formControlName]=\"field?.name\" [placeholder]=\"field?.placeholder\"></mat-file-input>\r\n          <mat-error>\r\n            <ng-container *ngTemplateOutlet=\"formFieldErrors; context: { field: field }\"></ng-container>\r\n          </mat-error>\r\n        </mat-form-field>\r\n        <!-- image upload -->\r\n        <div *ngSwitchCase=\"EntityFieldInputType.Image\">\r\n          <div *ngIf=\"form.controls[field?.name].value\">\r\n            <mat-label>{{ field?.label }}</mat-label>\r\n            <div style=\"display: flex; flex-direction: row\">\r\n              <mat-img-preview [file]=\"form.controls[field?.name].value?.[0]\" [alt]=\"field?.label\"></mat-img-preview>\r\n              <button type=\"button\" mat-flat-button (click)=\"removeImage(field)\">{{ removeBtnText }}</button>\r\n            </div>\r\n          </div>\r\n\r\n          <mat-form-field *ngIf=\"!form.controls[field?.name].value\">\r\n            <mat-label>{{ field?.label }}</mat-label>\r\n            <mat-file-input [formControlName]=\"field?.name\" [placeholder]=\"field?.placeholder\"></mat-file-input>\r\n            <mat-error>\r\n              <ng-container *ngTemplateOutlet=\"formFieldErrors; context: { field: field }\"></ng-container>\r\n            </mat-error>\r\n          </mat-form-field>\r\n        </div>\r\n        <!-- password input -->\r\n        <mat-form-field *ngSwitchCase=\"EntityFieldInputType.Password\">\r\n          <mat-label>{{ field?.label }}</mat-label>\r\n          <input matInput [formControlName]=\"field?.name\" type=\"password\" [placeholder]=\"field?.placeholder\" />\r\n          <mat-error>\r\n            <ng-container *ngTemplateOutlet=\"formFieldErrors; context: { field: field }\"></ng-container>\r\n          </mat-error>\r\n        </mat-form-field>\r\n        <!-- text input -->\r\n        <mat-form-field *ngSwitchDefault>\r\n          <mat-label>{{ field?.label || field?.name }}</mat-label>\r\n          <input matInput [formControlName]=\"field?.name\" [placeholder]=\"field?.placeholder\" />\r\n          <mat-error>\r\n            <ng-container *ngTemplateOutlet=\"formFieldErrors; context: { field: field }\"></ng-container>\r\n          </mat-error>\r\n        </mat-form-field>\r\n      </ng-container>\r\n    </div>\r\n  </ng-template>\r\n\r\n  <ng-template #formFieldErrors let-field=\"field\">\r\n    <ng-container *ngFor=\"let message of field?.validatorMessages | keyvalue\">\r\n      <div *ngIf=\"showError(field, message?.key)\" [innerHTML]=\"message?.value\"></div>\r\n    </ng-container>\r\n  </ng-template>\r\n</form>\r\n","import {\r\n NgModule, CUSTOM_ELEMENTS_SCHEMA,\r\n} from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { MatCardModule } from '@angular/material/card';\r\nimport {\r\n FormsModule, ReactiveFormsModule,\r\n} from '@angular/forms';\r\nimport { MatFormFieldModule } from '@angular/material/form-field';\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { MatInputModule } from '@angular/material/input';\r\nimport { MatSelectModule } from '@angular/material/select';\r\nimport { MatRadioModule } from '@angular/material/radio';\r\nimport { MatCheckboxModule } from '@angular/material/checkbox';\r\nimport { MatSlideToggleModule } from '@angular/material/slide-toggle';\r\nimport { MatDatepickerModule } from '@angular/material/datepicker';\r\nimport { MatSnackBarModule } from '@angular/material/snack-bar';\r\nimport { MatNativeDateModule } from '@angular/material/core';\r\nimport { MatCkeditorModule } from '@weblauncher/material-ckeditor';\r\nimport { MatFileInputModule } from '@weblauncher/material-file-input';\r\nimport { MaterialFormComponent } from './form.component';\r\nimport { ImgPreviewComponent } from './components/img-preview/img-preview.component';\r\n\r\n@NgModule({\r\n  declarations: [MaterialFormComponent],\r\n  imports: [\r\n    CommonModule,\r\n    MatCardModule,\r\n    FormsModule,\r\n    ReactiveFormsModule,\r\n    MatFormFieldModule,\r\n    MatButtonModule,\r\n    MatInputModule,\r\n    MatSelectModule,\r\n    MatRadioModule,\r\n    MatCheckboxModule,\r\n    MatSlideToggleModule,\r\n    MatDatepickerModule,\r\n    MatSnackBarModule,\r\n    MatNativeDateModule,\r\n    MatCkeditorModule,\r\n    MatFileInputModule,\r\n    ImgPreviewComponent,\r\n  ],\r\n  exports: [MaterialFormComponent],\r\n  schemas: [CUSTOM_ELEMENTS_SCHEMA],\r\n})\r\nexport class MatFormModule {}\r\n","/*\r\n * Public API Surface of material-form\r\n */\r\n\r\nexport * from './lib/form.component';\r\nexport * from './lib/form.module';\r\nexport * from './lib/types';\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1","i15.ImgPreviewComponent"],"mappings":"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"}