{"version":3,"file":"main-class-componentes-crud.mjs","sources":["../../../../projects/main-class/componentes/crud/src/query/query-field/query-field.component.ts","../../../../projects/main-class/componentes/crud/src/query/query-field/query-field.component.html","../../../../projects/main-class/componentes/crud/src/query/query-form-field/query-form-field.component.ts","../../../../projects/main-class/componentes/crud/src/query/query-form-field/query-form-field.component.html","../../../../projects/main-class/componentes/crud/src/query/query-modal-form/query-modal-form.component.ts","../../../../projects/main-class/componentes/crud/src/query/query-modal-form/query-modal-form.component.html","../../../../projects/main-class/componentes/crud/src/query/query-form.component.ts","../../../../projects/main-class/componentes/crud/src/query/query-form.component.html","../../../../projects/main-class/componentes/crud/src/abstract-consulta-paginada-component.ts","../../../../projects/main-class/componentes/crud/src/abstract-edicao-component.ts","../../../../projects/main-class/componentes/crud/src/abstract-edicao-modal-component.ts","../../../../projects/main-class/componentes/crud/main-class-componentes-crud.ts"],"sourcesContent":["import {Component, ContentChildren, Inject, Input, Optional, QueryList, Self} from '@angular/core';\nimport {AbstractControl, FormControl, ReactiveFormsModule, Validators} from '@angular/forms';\nimport {Observable, of} from 'rxjs';\nimport {DatePipe} from '@angular/common';\nimport {SELECT_OPTION_PROVIDER, SelectOption, SelectOptionComponent, SelectOptionProvider} from '@main-class/componentes/input';\nimport {CpfCnpjPipe, MaskPipe, MonetarioPipe} from '@main-class/componentes/misc';\n\ntype FieldType = 'group' | 'input' | 'cpf' | 'cnpj' | 'cpf_cnpj' | 'date' | 'option' | 'currency' | 'mask';\n\n@Component({\n  selector: 'mcl-query-field',\n  imports: [\n    ReactiveFormsModule\n  ],\n  templateUrl: './query-field.component.html',\n  styleUrl: './query-field.component.scss'\n})\nexport class QueryFieldComponent implements SelectOptionProvider {\n  private cpfCnpjPipe = new CpfCnpjPipe();\n  private datePipe = new DatePipe('pt-BR');\n  private currencyPipe = new MonetarioPipe();\n  private maskPipe = new MaskPipe();\n  private $fieldType?: FieldType;\n\n  formControl: AbstractControl = new FormControl('');\n\n  @Input('label') labelText?: string;\n\n  @Input() description?: string;\n\n  @Input() mask?: string;\n\n  @Input() name?: string;\n\n  private $fixed?: boolean;\n\n  @ContentChildren(SelectOptionComponent) options?: QueryList<SelectOptionComponent>;\n\n  @ContentChildren(QueryFieldComponent) fields?: QueryList<QueryFieldComponent>;\n\n  constructor(\n    @Inject(SELECT_OPTION_PROVIDER) @Self() @Optional() public optionProvider?: SelectOptionProvider\n  ) {\n\n  }\n\n  @Input() set fixed(fixed: any) {\n    this.$fixed = fixed || fixed === '';\n  }\n\n  get fixed() {\n    return this.$fixed;\n  }\n\n  get required() {\n    return this.formControl.hasValidator(Validators.required);\n  }\n\n  get fieldType(): FieldType | undefined {\n    return this.$fieldType;\n  }\n\n  @Input('type')\n  set fieldType(fieldType: FieldType | undefined) {\n    this.$fieldType = fieldType;\n  }\n\n  get empty(): boolean {\n    if (this.fieldType === 'group') {\n      return !this.fields?.find(field => !field.empty)\n    }\n\n    return this.formControl?.value === '' || this.formControl?.value === undefined || this.formControl?.value === null;\n  }\n\n  get value(): string | undefined | null {\n    if (!this.empty) {\n      switch (this.fieldType) {\n        case 'cpf':\n        case 'cnpj':\n        case 'cpf_cnpj':\n          return this.cpfCnpjPipe.transform(this.formControl?.value);\n        case 'date':\n          return this.datePipe.transform(this.formControl?.value, 'dd/MM/yyyy');\n        case 'option':\n          return this.label(this.formControl?.value);\n        case 'currency':\n          return this.currencyPipe.transform(this.formControl?.value);\n        case 'mask':\n          return this.maskPipe.transform(this.formControl?.value, this.mask!);\n      }\n\n      return this.formControl?.value;\n    }\n\n    return undefined;\n  }\n\n  type(): \"number\" | \"object\" | \"string\" | \"date\" {\n    switch (this.fieldType) {\n      case 'date':\n        return 'date';\n      case 'option':\n        return this.optionProvider?.type() || 'object';\n    }\n\n    return 'string';\n  }\n\n  provide(search: string | null): Observable<SelectOption<any>[]> {\n    if (!!this.optionProvider) {\n      return this.optionProvider.provide(search);\n    }\n\n    if (typeof search === 'string' || search == undefined) {\n      return of((this.options?.toArray() || [])\n        .filter(op => (op.label || '').indexOf((search || '')!.toLowerCase()) >= 0))\n    }\n\n    return of(this.options?.toArray() || []);\n  }\n\n  label(value: any): string {\n    if (!!this.optionProvider) {\n      return this.optionProvider.label(value);\n    }\n\n    return this.options?.find(op => op.value === value)?.label || '';\n  }\n\n  trackBy(value: any) {\n    if (!!this.optionProvider?.trackBy) {\n      return this.optionProvider.trackBy!(value);\n    }\n\n    return value;\n  }\n\n  clear() {\n    if (this.fieldType === 'group') {\n      this.fields?.forEach(field => field.clear());\n    } else {\n      this.formControl?.setValue(undefined);\n    }\n  }\n\n  serialized(): string | undefined {\n    if (!this.empty) {\n      switch (this.type()) {\n        case 'object':\n          return JSON.stringify(this.formControl.value);\n      }\n\n      return String(this.formControl.value);\n    }\n\n    return undefined;\n  }\n\n  desserialize(value: string | undefined): any {\n    if (!!value) {\n      switch (this.type()) {\n        case 'object':\n          return JSON.parse(value);\n        case 'date':\n          return new Date(value);\n        case 'number':\n          return Number(value);\n      }\n\n      return value;\n    }\n\n    return undefined;\n  }\n}\n","","import {Component, Input} from '@angular/core';\nimport {AbstractControl, FormControl, FormGroup, ReactiveFormsModule} from '@angular/forms';\nimport {QueryFieldComponent} from '../query-field/query-field.component';\nimport {\n  DelegateOptionProviderDirective,\n  InputCnpjComponent,\n  InputCpfCnpjComponent,\n  InputCpfComponent,\n  InputCurrencyComponent,\n  InputDatetimeComponent,\n  InputMaskComponent,\n  SelectAutocompleteComponent\n} from '@main-class/componentes/input';\nimport {MensagensErroComponent} from '@main-class/componentes/form';\nimport {MatIconButton} from '@angular/material/button';\nimport {MatIcon} from '@angular/material/icon';\nimport {MatError, MatFormField, MatHint, MatLabel, MatSuffix} from '@angular/material/form-field';\nimport {MatInput} from '@angular/material/input';\n\n@Component({\n  selector: 'mcl-query-form-field',\n  imports: [\n    MatFormField,\n    ReactiveFormsModule,\n    MatInput,\n    InputDatetimeComponent,\n    MatError,\n    MatLabel,\n    MatHint,\n    InputCpfComponent,\n    InputCnpjComponent,\n    InputCpfCnpjComponent,\n    SelectAutocompleteComponent,\n    InputMaskComponent,\n    MensagensErroComponent,\n    InputCurrencyComponent,\n    DelegateOptionProviderDirective,\n    MatIconButton,\n    MatIcon,\n    MatSuffix\n  ],\n  templateUrl: './query-form-field.component.html',\n  styleUrl: './query-form-field.component.scss'\n})\nexport class QueryFormFieldComponent {\n\n  @Input() field?: QueryFieldComponent;\n\n  @Input() control?: AbstractControl;\n\n  get formControl() {\n    return this.control as FormControl;\n  }\n\n  get formGroup() {\n    return this.control as FormGroup;\n  }\n\n  clear() {\n    this.formControl.setValue(undefined);\n  }\n\n}\n","@if (field!.fieldType === 'group') {\n  <div [formGroup]=\"formGroup\">\n    @for (child of field!.fields; track child.labelText) {\n      <mcl-query-form-field [field]=\"child\"\n                            [control]=\"formGroup.controls[child.labelText!]\"></mcl-query-form-field>\n    }\n  </div>\n} @else {\n  <mat-form-field>\n    <mat-label>{{ field!.labelText }}</mat-label>\n    @switch (field!.fieldType) {\n      @case ('input') {\n        <input matInput [formControl]=\"formControl\"/>\n      }\n      @case ('cpf') {\n        <mcl-input cpf [formControl]=\"formControl\"/>\n      }\n      @case ('cnpj') {\n        <mcl-input cnpj [formControl]=\"formControl\"/>\n      }\n      @case ('cpf_cnpj') {\n        <mcl-input cpfCnpj [formControl]=\"formControl\"/>\n      }\n      @case ('date') {\n        <mcl-input-datetime type=\"date\" [formControl]=\"formControl\"/>\n      }\n      @case ('option') {\n        <mcl-select-autocomplete [formControl]=\"formControl\" [delegate]=\"field\"/>\n      }\n      @case ('mask') {\n        <mcl-input [mask]=\"field!.mask!\" [formControl]=\"formControl\"/>\n      }\n      @case ('currency') {\n        <mcl-input currency [formControl]=\"formControl\"/>\n      }\n    }\n    @if (formControl.value) {\n      <button mat-icon-button matSuffix (click)=\"clear()\">\n        <mat-icon>close</mat-icon>\n      </button>\n    }\n    @if (!!field?.description) {\n      <mat-hint>{{ field?.description }}</mat-hint>\n    }\n    <mat-error [mclErrorFor]=\"formControl\"></mat-error>\n  </mat-form-field>\n}\n","import {Component, Inject} from '@angular/core';\nimport {QueryFieldComponent} from '../query-field/query-field.component';\nimport {AbstractControl, FormBuilder, FormControl, FormGroup, FormsModule, ReactiveFormsModule} from '@angular/forms';\nimport {QueryFormFieldComponent} from '../query-form-field/query-form-field.component';\nimport {NgClass} from '@angular/common';\nimport {\n  ModalBodyDirective,\n  ModalCloseDirective,\n  ModalFooterDirective,\n  ModalHeaderDirective,\n  SIDEBAR_MODAL_DATA,\n  SidebarModalRef\n} from '@main-class/componentes/dialog';\nimport {MatButton} from '@angular/material/button';\nimport {MatIcon} from '@angular/material/icon';\n\n@Component({\n  selector: 'mcl-query-form',\n  imports: [\n    ReactiveFormsModule,\n    FormsModule,\n    ModalHeaderDirective,\n    ModalCloseDirective,\n    ModalBodyDirective,\n    ModalFooterDirective,\n    QueryFormFieldComponent,\n    NgClass,\n    ModalFooterDirective,\n    ModalCloseDirective,\n    MatButton,\n    ModalBodyDirective,\n    ModalHeaderDirective,\n    MatIcon\n  ],\n  templateUrl: './query-modal-form.component.html',\n  styleUrl: './query-modal-form.component.scss'\n})\nexport class QueryModalFormComponent {\n\n  form: FormGroup;\n\n  constructor(\n    fb: FormBuilder,\n    private modalRef: SidebarModalRef<any>,\n    @Inject(SIDEBAR_MODAL_DATA) public fields: Array<QueryFieldComponent>,\n  ) {\n    this.form = fb.group(\n      fields.map(field => {\n        if (field.fieldType === 'group') {\n          return {\n            [field.name!]: fb.group(\n              field.fields!.map(child => ({\n                [child.name!]: fb.control(child.formControl.value)\n              })).reduce((c1, c2) => ({...c1, ...c2}))\n            ) as AbstractControl\n          };\n        } else {\n          return {[field.name!]: fb.control(field.formControl.value) as AbstractControl};\n        }\n      }).reduce((c1, c2) => ({...c1, ...c2}))\n    );\n  }\n\n  apply() {\n    this.fields.forEach(field => {\n      if (field.fieldType === 'group') {\n        const formGroup = this.form.controls[field.name!] as FormGroup;\n        field.fields?.forEach(child => {\n          child.formControl!.patchValue(formGroup.controls[child.name!].value);\n        })\n      } else {\n        const formControl = this.form.controls[field.name!] as FormControl;\n        field.formControl!.patchValue(formControl.value);\n      }\n    });\n\n    this.modalRef.close();\n  }\n}\n","<form (ngSubmit)=\"apply()\" class=\"sidebar\">\n  <h2 mclSidebarModalHeader>\n    <mat-icon>search</mat-icon>\n    Aplicar filtros\n  </h2>\n\n  <div mclSidebarModalBody>\n    @for (field of fields; track field.name) {\n      <div [ngClass]=\"field.fieldType\">\n        @if (field.fieldType === 'group') {\n          <h3>{{ field.labelText }}</h3>\n        }\n\n        <mcl-query-form-field [field]=\"field\" [control]=\"form.controls[field.name!]!\"></mcl-query-form-field>\n      </div>\n    }\n  </div>\n\n  <div mclSidebarModalFooter>\n    <button mat-flat-button color=\"primary\" type=\"submit\">\n      Aplicar\n    </button>\n    <button mat-button type=\"button\" mclSidebarModalClose>\n      Cancelar\n    </button>\n  </div>\n</form>\n","import {AfterViewInit, Component, ContentChildren, EventEmitter, OnDestroy, Output, QueryList, TemplateRef, ViewChild} from '@angular/core';\nimport {QueryFieldComponent} from './query-field/query-field.component';\nimport {FormsModule, Validators} from '@angular/forms';\nimport {QueryModalFormComponent} from './query-modal-form/query-modal-form.component';\nimport {DialogService} from '@main-class/componentes/dialog';\nimport {MatIcon} from '@angular/material/icon';\nimport {ActivatedRoute, Router} from '@angular/router';\nimport {debounceTime, Subscription} from 'rxjs';\nimport {QueryFormFieldComponent} from './query-form-field/query-form-field.component';\nimport {NgClass} from '@angular/common';\nimport {MatButton} from '@angular/material/button';\nimport {delay} from 'rxjs/operators';\n\n@Component({\n  selector: 'mcl-query-form',\n  imports: [\n    FormsModule,\n    MatIcon,\n    QueryFormFieldComponent,\n    NgClass,\n    MatButton,\n  ],\n  templateUrl: './query-form.component.html',\n  styleUrl: './query-form.component.scss',\n})\nexport class QueryFormComponent implements AfterViewInit, OnDestroy {\n\n  @ContentChildren(QueryFieldComponent) fields?: QueryList<QueryFieldComponent>;\n\n  @ViewChild('modalTemplate', {read: TemplateRef}) modalTemplate?: TemplateRef<any>;\n\n  @Output() query = new EventEmitter<any>();\n\n  private _subscriptions: { [key: string]: Subscription } = {};\n\n  constructor(\n    private router: Router,\n    private dialogService: DialogService,\n    private activatedRoute: ActivatedRoute,\n  ) {\n  }\n\n  ngAfterViewInit() {\n    this.activatedRoute.queryParams\n      .pipe(debounceTime(300))\n      .subscribe(qp => {\n        this.desserialize(qp);\n      });\n\n    this.fields!.changes.subscribe(() => {\n      this.configFieldsSubscriptions();\n    });\n\n    this.configFieldsSubscriptions();\n  }\n\n  ngOnDestroy() {\n    Object.keys(this._subscriptions).forEach(key => {\n      this._subscriptions[key].unsubscribe();\n      delete this._subscriptions[key];\n    });\n  }\n\n  get filterCount() {\n    return this.fields?.filter(f => !f.fixed && !f.empty)?.length || 0;\n  }\n\n  openFilter($event: MouseEvent) {\n    $event.stopPropagation();\n\n    this.dialogService.openSidebar(QueryModalFormComponent, {\n      data: this.fields!.toArray()\n    }).afterClosed().subscribe(query => {\n      this.router.navigate(['./'], {\n        relativeTo: this.activatedRoute,\n        queryParams: this.serialized(),\n      });\n    });\n  }\n\n  clearAll() {\n    this.fields?.forEach(field => {\n      field.clear();\n    });\n    this.router.navigate(['./'], {\n      relativeTo: this.activatedRoute,\n      queryParams: this.serialized(),\n    });\n  }\n\n  clear(item: QueryFieldComponent) {\n    item.clear();\n    this.router.navigate(['./'], {\n      relativeTo: this.activatedRoute,\n      queryParams: this.serialized(),\n    });\n  }\n\n  protected readonly Validators = Validators;\n\n  private serialized(): any {\n    let obj = this.fields?.map(field => {\n      if (field.fieldType === 'group') {\n        return field.fields!.map(child => ({\n          [`${field.name}.${child.name}`]: child.serialized()\n        })).reduce((c1, c2) => ({...c1, ...c2}));\n      } else {\n        return {[field.name!]: field.serialized()};\n      }\n    }).reduce((c1, c2) => ({...c1, ...c2}));\n\n    console.log('filtro: ', obj);\n\n    return obj;\n  }\n\n  private desserialize(value: any) {\n    this.fields?.forEach(field => {\n      if (field.fieldType === 'group') {\n        field.fields!.forEach(child => {\n          child.formControl.patchValue(\n            child.desserialize(value[`${field.name}.${child.name}`])\n          );\n        });\n      } else {\n        field.formControl.patchValue(\n          field.desserialize(value[field.name!])\n        );\n      }\n    });\n\n    const query = this.fields\n      ?.filter(field => !field.empty)\n      ?.map(field => {\n        if (field.fieldType === 'group') {\n          return {\n            [field.name!]: field.fields\n              ?.filter(field => !field.empty)\n              ?.map(field => ({[field.name!]: field.formControl.value}))\n              .reduce((o1, o2) => ({...o1, ...o2}), {})\n          };\n        } else {\n          return {[field.name!]: field.formControl.value};\n        }\n      })\n      .reduce((o1, o2) => ({...o1, ...o2}), {});\n\n    this.query.emit(query);\n  }\n\n  private configFieldsSubscriptions() {\n    this.fields!.forEach(field => {\n      if (!this._subscriptions[field.name!]) {\n        this._subscriptions[field.name!] = field.formControl.valueChanges\n          .pipe(delay(300)).subscribe(_ => {\n            console.log('field: ', field.name, ' value: ', field.formControl.value);\n            const queryParams = this.activatedRoute.snapshot.queryParams;\n\n            if (field.serialized() !== queryParams[field.name!]) {\n              this.router.navigate(['./'], {\n                relativeTo: this.activatedRoute,\n                queryParams: this.serialized(),\n              });\n            }\n          });\n      }\n    });\n\n    Object.keys(this._subscriptions).forEach(key => {\n      if (!this.fields?.find(field => field.name === key)) {\n        this._subscriptions[key].unsubscribe();\n        delete this._subscriptions[key];\n      }\n    });\n  }\n}\n","@if (!!fields) {\n  <section class=\"flt\" aria-label=\"Filtros e busca\">\n    <header class=\"flt__head\">\n      <h2 class=\"flt__title\">\n        <span class=\"flt__title-mark\" aria-hidden=\"true\"></span>\n        Filtros e busca\n      </h2>\n    </header>\n\n    <!-- Barra de filtros aplicados (chips) -->\n    @if (filterCount > 0) {\n      <div class=\"flt__applied\">\n        <div class=\"flt__applied-title\">Filtros aplicados:</div>\n\n        <ul class=\"flt__chips\" role=\"list\">\n          @for (field of fields.toArray(); track field.labelText) {\n            @if (!field.fixed && !field.empty) {\n\n              @if (field.fieldType === 'group') {\n\n                <li class=\"flt__chip-group\">\n                  <div class=\"flt__chip-group-head\">\n                    <span class=\"flt__chip-group-title\">{{ field.labelText }}</span>\n                    @if (!field.required) {\n                      <button\n                        type=\"button\"\n                        class=\"flt__chip-group-clear\"\n                        (click)=\"clear(field)\">\n                        <mat-icon aria-hidden=\"true\">close</mat-icon>\n                      </button>\n                    }\n                  </div>\n\n                  <ul class=\"flt__chip-group-items\" role=\"list\">\n                    @for (sub of field.fields; track sub.labelText) {\n                      <li class=\"flt__chip flt__chip--sub\">\n                        @if (sub.labelText) {\n                          <span class=\"flt__chip-label\">{{ sub.labelText }}:</span>\n                        }\n                        <span class=\"flt__chip-value\">{{ sub.value }}</span>\n\n                        @if (!sub.required) {\n                          <button\n                            type=\"button\"\n                            class=\"flt__chip-remove\"\n                            (click)=\"clear(field)\">\n                            <mat-icon aria-hidden=\"true\">close</mat-icon>\n                          </button>\n                        }\n                      </li>\n                    }\n                  </ul>\n                </li>\n              } @else {\n                <li class=\"flt__chip\">\n                  <span class=\"flt__chip-label\">{{ field.labelText }}:</span>\n                  <span class=\"flt__chip-value\">{{ field.value }}</span>\n\n                  @if (!field.required) {\n                    <button\n                      type=\"button\"\n                      class=\"flt__chip-remove\"\n                      (click)=\"clear(field)\">\n                      <mat-icon aria-hidden=\"true\">close</mat-icon>\n                    </button>\n                  }\n                </li>\n              }\n\n            }\n          }\n        </ul>\n\n        <button type=\"button\" class=\"flt__clear\" (click)=\"clearAll()\">\n          <mat-icon aria-hidden=\"true\">filter_alt_off</mat-icon>\n          Limpar tudo\n        </button>\n      </div>\n    }\n\n    <div class=\"flt__body\">\n      @for (field of fields; track field.name) {\n        @if (field.fixed) {\n          <div [ngClass]=\"field.fieldType\" class=\"flt__field\" >\n            @if (field.fieldType === 'group') {\n              <h3>{{ field.labelText }}</h3>\n            }\n\n            <mcl-query-form-field [field]=\"field\" [control]=\"field.formControl\"></mcl-query-form-field>\n          </div>\n        }\n      }\n\n      <div class=\"flt__separator\"></div>\n\n      <!-- Ações -->\n      <div class=\"flt__actions\">\n        <button mat-stroked-button type=\"button\" (click)=\"openFilter($event)\">\n          <mat-icon aria-hidden=\"true\">tune</mat-icon>\n          Filtros avançados\n        </button>\n      </div>\n    </div>\n  </section>\n\n}\n\n","import {AfterViewInit, Component, inject, ViewChild} from '@angular/core';\nimport {Router} from '@angular/router';\nimport {DialogService} from '@main-class/componentes/dialog';\nimport {LoaderService} from '@main-class/componentes/loader';\nimport {NumericPaginationEvent, Page, PaginatedTableComponent, UndefinedPaginationEvent} from '@main-class/componentes/table';\nimport {lastValueFrom} from 'rxjs';\n\n@Component({\n  template: ''\n})\nexport abstract class AbstractConsultaPaginadaComponent<T> implements AfterViewInit {\n\n  protected readonly router = inject(Router);\n\n  protected readonly dialogService = inject(DialogService);\n\n  protected readonly loaderService = inject(LoaderService);\n\n  private timeoutConsulta: any;\n\n  filtro: any = {};\n  page?: Page<T>;\n\n  @ViewChild(PaginatedTableComponent) table!: PaginatedTableComponent<T>;\n\n  ngAfterViewInit(): void {\n    this.reset();\n  }\n\n  async reset(filtro = this.filtro) {\n    this.filtro = filtro;\n    this.page = undefined;\n    await this.busca();\n  }\n\n  protected abstract consultaEntidades(pagina: number, tamanhoPagina: number): Promise<Page<T>>;\n\n  protected abstract deleteEntidade(entidade: T): Promise<any>;\n\n  get tamanhoPagina() {\n    return (this.page as any)?.tamanhoPagina || (this.page as any)?.size;\n  }\n\n  async busca(event: NumericPaginationEvent | UndefinedPaginationEvent = {type: 'numeric', page: 1, size: 10}) {\n    if (event.type === 'numeric') {\n      clearTimeout(this.timeoutConsulta);\n      this.timeoutConsulta = setTimeout(async () => {\n        this.page = await lastValueFrom(\n          this.table.loadingAround(\n            this.consultaEntidades(event.page, event.size)\n          )\n        );\n      }, 300);\n    }\n  }\n\n  async remove(entidade: T) {\n    const confirmacao = await this.dialogService\n      .confirma('mcl.consulta.confirma-remocao').toPromise();\n\n    if (confirmacao) {\n      await this.loaderService.listen(\n        this.deleteEntidade(entidade)\n      ).toPromise();\n    }\n  }\n}\n","import {Component, inject, OnInit} from '@angular/core';\nimport {NgForm} from '@angular/forms';\nimport {ActivatedRoute, Router} from '@angular/router';\nimport {MensageriaService} from '@main-class/componentes/core';\nimport {LoaderService} from '@main-class/componentes/loader';\n\n@Component({\n  template: ''\n})\nexport abstract class AbstractEdicaoComponent<T> implements OnInit {\n\n  entidade: T = {} as any;\n\n  protected readonly router = inject(Router);\n\n  protected readonly activatedRoute = inject(ActivatedRoute);\n\n  protected readonly mensageriaService = inject(MensageriaService);\n\n  protected readonly loaderService = inject(LoaderService);\n\n  protected abstract detalhaEntidade?(id: any): Promise<T>;\n\n  protected abstract salvaEntidade(): Promise<any>;\n\n  ngOnInit(): void {\n    if (!!this.detalhaEntidade) {\n      this.activatedRoute.params.subscribe(params => {\n        if (params['id']) {\n          this.loaderService.listen(\n            this.detalhaEntidade!(params['id'])\n          ).subscribe((entidade: any) => this.entidade = entidade);\n        }\n      });\n    }\n  }\n\n  async salva(form: NgForm) {\n    if (!form.valid) {\n      return;\n    }\n\n    await this.loaderService.listen(\n      this.salvaEntidade()\n    ).toPromise();\n\n    this.mensageriaService.addMensagem('mcl.edicao.salvo-sucesso');\n  }\n}\n","import {NgForm} from '@angular/forms';\nimport {MensageriaService} from '@main-class/componentes/core';\nimport {MatDialogRef} from '@angular/material/dialog';\nimport {LoaderService} from '@main-class/componentes/loader';\nimport {DialogService} from '@main-class/componentes/dialog';\nimport {inject} from '@angular/core';\nimport {ActivatedRoute, Router} from '@angular/router';\n\nexport abstract class AbstractEdicaoModalComponent<T> {\n\n  public abstract get entidade(): T;\n\n  protected readonly router = inject(Router);\n\n  protected readonly activatedRoute = inject(ActivatedRoute);\n\n  protected readonly dialogService = inject(DialogService);\n\n  protected readonly loaderService = inject(LoaderService);\n\n  protected readonly mensageriaService = inject(MensageriaService);\n\n  protected readonly dialogRef: MatDialogRef<T> = inject(MatDialogRef);\n\n  protected abstract salvaEntidade(): Promise<T>;\n\n  protected abstract deleteEntidade?(entidade: T): Promise<any>;\n\n  async salva(form: NgForm) {\n    if (!form.valid) {\n      return;\n    }\n\n    const salvo = await this.loaderService.listen(\n      this.salvaEntidade()\n    ).toPromise();\n\n    this.mensageriaService.addMensagem('mcl.edicao.salvo-sucesso');\n\n    this.dialogRef.close(salvo);\n  }\n\n  async remove(entidade: T) {\n\n    if (!!this.deleteEntidade) {\n      const confirmacao = await this.dialogService\n        .confirma('mcl.consulta.confirma-remocao').toPromise();\n\n      if (confirmacao) {\n        await this.loaderService.listen(\n          this.deleteEntidade(entidade)\n        ).toPromise();\n\n        this.dialogRef.close(true);\n      }\n    }\n  }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1"],"mappings":"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"}