{"version":3,"file":"ngx-simple-crud.mjs","sources":["../../../projects/ngx-simple-crud/src/lib/utils.ts","../../../projects/ngx-simple-crud/src/lib/components/manager-header/manager-header.component.ts","../../../projects/ngx-simple-crud/src/lib/components/manager-header/manager-header.component.html","../../../projects/ngx-simple-crud/src/lib/components/manager-panel/manager-panel.component.ts","../../../projects/ngx-simple-crud/src/lib/components/manager-panel/manager-panel.component.html","../../../projects/ngx-simple-crud/src/lib/components/manager-read/manager-read.service.ts","../../../projects/ngx-simple-crud/src/lib/components/manager-read/manager-read.component.ts","../../../projects/ngx-simple-crud/src/lib/components/manager-read/manager-read.component.html","../../../projects/ngx-simple-crud/src/lib/components/manager-create/manager-create.service.ts","../../../projects/ngx-simple-crud/src/lib/components/manager-create/manager-create.component.ts","../../../projects/ngx-simple-crud/src/lib/components/manager-create/manager-create.component.html","../../../projects/ngx-simple-crud/src/lib/components/manager-update/manager-update.component.ts","../../../projects/ngx-simple-crud/src/lib/components/manager-update/manager-update.component.html","../../../projects/ngx-simple-crud/src/lib/components/manager-delete/manager-delete.component.ts","../../../projects/ngx-simple-crud/src/lib/components/manager-delete/manager-delete.component.html","../../../projects/ngx-simple-crud/src/lib/components/manager/manager.component.ts","../../../projects/ngx-simple-crud/src/lib/components/manager/manager.component.html","../../../projects/ngx-simple-crud/src/public-api.ts","../../../projects/ngx-simple-crud/src/ngx-simple-crud.ts"],"sourcesContent":["export function addGetterSetter<T>(\n  obj: any,\n  path: string,\n  callback: (oldValue: T, newValue: T) => void,\n  deep: boolean = false\n) {\n  const parts = path.split('.');\n  let current = obj;\n\n  for (let i = 0; i < parts.length - 1; i++) {\n    const part = parts[i];\n    if (!(part in current)) {\n      return;\n    }\n    current = current[part];\n  }\n\n  const lastKey = parts[parts.length - 1];\n  let value = current[lastKey];\n\n  if (deep && typeof value === 'object' && value !== null) {\n    for (const key of Object.keys(value)) {\n      addGetterSetter(value, key, callback, deep);\n    }\n  }\n\n  Object.defineProperty(current, lastKey, {\n    get() {\n      return value;\n    },\n    set(newValue) {\n      const oldValue = value;\n      value = newValue;\n      callback(oldValue, newValue);\n\n      if (deep && typeof newValue === 'object' && newValue !== null) {\n        for (const key of Object.keys(newValue)) {\n          addGetterSetter(newValue, key, callback, deep);\n        }\n      }\n    },\n    enumerable: true,\n    configurable: true,\n  });\n}\n\nexport function getDeepValue<T = unknown>(\n  object: unknown,\n  keys?: string\n): T | undefined {\n  if (typeof object !== 'object' || object === null) {\n    return undefined;\n  }\n\n  if (!keys) {\n    return object as T;\n  }\n\n  return keys.split('.').reduce((obj, key) => {\n    if (obj && typeof obj === 'object') {\n      return (obj as Record<string, any>)[key];\n    }\n    return undefined;\n  }, object) as T | undefined;\n}\n\nexport function deepClone<T>(value: T, map = new WeakMap<object, any>()): T {\n  if (value === null || typeof value !== 'object') {\n    return value;\n  }\n\n  if (map.has(value)) {\n    return map.get(value);\n  }\n\n  if (typeof value === 'function') {\n    const fn = value as Function;\n    return fn.bind({}) as unknown as T;\n  }\n\n  if (value instanceof Date) {\n    return new Date(value) as T;\n  }\n\n  if (value instanceof RegExp) {\n    return new RegExp(value) as T;\n  }\n\n  if (value instanceof Map) {\n    const result = new Map();\n    map.set(value, result);\n    value.forEach((v, k) => {\n      result.set(deepClone(k, map), deepClone(v, map));\n    });\n    return result as T;\n  }\n\n  if (value instanceof Set) {\n    const result = new Set();\n    map.set(value, result);\n    value.forEach((v) => {\n      result.add(deepClone(v, map));\n    });\n    return result as T;\n  }\n\n  if (Array.isArray(value)) {\n    const result: any[] = [];\n    map.set(value, result);\n    value.forEach((item, index) => {\n      result[index] = deepClone(item, map);\n    });\n    return result as T;\n  }\n\n  const result = Object.create(Object.getPrototypeOf(value));\n  map.set(value, result);\n\n  Object.keys(value).forEach((key) => {\n    (result as any)[key] = deepClone((value as any)[key], map);\n  });\n\n  return result as T;\n}\n\nexport function deepMerge<T extends object>(target: T, source: T): T {\n  if (target === source) return target;\n\n  if (\n    typeof target !== 'object' ||\n    target === null ||\n    typeof source !== 'object' ||\n    source === null\n  ) {\n    return source;\n  }\n\n  if (Array.isArray(target) && Array.isArray(source)) {\n    return [...target, ...source] as T;\n  }\n\n  if (target instanceof Date && source instanceof Date) {\n    return new Date(Math.max(target.getTime(), source.getTime())) as T;\n  }\n\n  if (target instanceof Map && source instanceof Map) {\n    return new Map([...target, ...source]) as T;\n  }\n\n  if (target instanceof Set && source instanceof Set) {\n    return new Set([...target, ...source]) as T;\n  }\n\n  const merged: Record<string | symbol, any> = { ...target };\n\n  for (const key of Reflect.ownKeys(source)) {\n    const targetValue = (target as Record<string | symbol, any>)[key];\n    const sourceValue = (source as Record<string | symbol, any>)[key];\n\n    if (typeof sourceValue === 'function') {\n      merged[key] = sourceValue;\n    } else if (sourceValue instanceof Date) {\n      merged[key] = new Date(sourceValue.getTime());\n    } else if (sourceValue instanceof Map) {\n      merged[key] = new Map(sourceValue);\n    } else if (sourceValue instanceof Set) {\n      merged[key] = new Set(sourceValue);\n    } else if (typeof sourceValue === 'object' && sourceValue !== null) {\n      merged[key] = deepMerge(targetValue, sourceValue);\n    } else {\n      merged[key] = sourceValue;\n    }\n  }\n\n  return merged as T;\n}\n","import { Component, Input } from '@angular/core';\nimport { MatToolbarModule } from '@angular/material/toolbar';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatButtonModule } from '@angular/material/button';\nimport { FormComponent } from 'ngx-simple-forms';\nimport { ManagerHeaderParameters } from './manager-header.parameters';\n\n@Component({\n  selector: 'ngx-simple-crud-manager-header',\n  standalone: true,\n  imports: [MatToolbarModule, MatIconModule, MatButtonModule, FormComponent],\n  templateUrl: './manager-header.component.html',\n  styleUrl: './manager-header.component.css',\n})\nexport class ManagerHeaderComponent {\n  @Input({ required: true }) parameters: ManagerHeaderParameters = {\n    title: 'Lista',\n  };\n}\n","<mat-toolbar [color]=\"parameters.color\">\n  @if (parameters.leftElements) {\n  <ngx-simple-forms-form\n    [checkTimer]=\"256\"\n    [elements]=\"parameters.leftElements\"\n  ></ngx-simple-forms-form>\n  }\n\n  <h2>{{ parameters.title }}</h2>\n\n  <span class=\"spacer\"></span>\n\n  @if (parameters.rightElements) {\n  <ngx-simple-forms-form\n    [checkTimer]=\"256\"\n    [elements]=\"parameters.rightElements\"\n  ></ngx-simple-forms-form>\n  }\n</mat-toolbar>\n","import { Component, Input } from '@angular/core';\nimport { ManagerPanelParameters } from './manager-panel.parameters';\nimport { FormComponent } from 'ngx-simple-forms';\n\n@Component({\n  selector: 'ngx-simple-crud-manager-panel',\n  standalone: true,\n  imports: [FormComponent],\n  templateUrl: './manager-panel.component.html',\n  styleUrl: './manager-panel.component.css',\n})\nexport class ManagerPanelComponent {\n  @Input({ required: true }) parameters!: ManagerPanelParameters;\n}\n","@if (parameters.elements) {\n<ngx-simple-forms-form\n  [checkTimer]=\"256\"\n  [elements]=\"parameters.elements || {}\"\n></ngx-simple-forms-form>\n}\n","import { HttpClient } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport {\n  ManagerReadParametersService,\n  ManagerReadParametersServiceData,\n} from './manager-read.parameters';\n\n@Injectable({\n  providedIn: 'root',\n})\nexport class ManagerReadService {\n  constructor(private readonly http: HttpClient) {}\n\n  getSubscribe(\n    service: ManagerReadParametersService,\n    data: ManagerReadParametersServiceData\n  ) {\n    const method = service.method ?? 'GET';\n    const url = service.url(data);\n    const body =\n      typeof service.body === 'function' ? service.body(data) : undefined;\n\n    switch (method) {\n      case 'GET':\n        return this.http.get(url);\n      case 'POST':\n        return this.http.post(url, body);\n      case 'PATCH':\n        return this.http.patch(url, body);\n      case 'DELETE':\n        return this.http.delete(url);\n      case 'PUT':\n        return this.http.put(url, body);\n      default:\n        throw new Error('Invalid method');\n    }\n  }\n\n  get(\n    service: ManagerReadParametersService,\n    data: ManagerReadParametersServiceData\n  ): Promise<unknown> {\n    return new Promise((resolve, reject) => {\n      const result = this.getSubscribe(service, data);\n\n      result?.subscribe(\n        (data) => {\n          resolve(data);\n        },\n        (error) => {\n          reject(error);\n        }\n      );\n    });\n  }\n}\n","import {\n  ChangeDetectorRef,\n  Component,\n  Input,\n  QueryList,\n  ViewChild,\n  ViewChildren,\n} from '@angular/core';\nimport { MatPaginator, MatPaginatorModule } from '@angular/material/paginator';\nimport { MatTableModule } from '@angular/material/table';\nimport {\n  ManagerReadParameters,\n  ManagerReadParametersColumn,\n  ManagerReadParametersServiceData,\n} from './manager-read.parameters';\nimport { ManagerReadService } from './manager-read.service';\nimport { HttpClientModule } from '@angular/common/http';\nimport { getDeepValue } from '../../utils';\nimport { debounceTime } from 'rxjs';\nimport { FormComponent, FormElement } from 'ngx-simple-forms';\nimport { NgIf, NgStyle } from '@angular/common';\nimport { MatProgressSpinnerModule } from '@angular/material/progress-spinner';\n\n@Component({\n  selector: 'ngx-simple-crud-manager-read',\n  standalone: true,\n  imports: [\n    MatTableModule,\n    MatPaginatorModule,\n    HttpClientModule,\n    FormComponent,\n    NgStyle,\n    NgIf,\n    MatProgressSpinnerModule,\n  ],\n  templateUrl: './manager-read.component.html',\n  styleUrl: './manager-read.component.css',\n})\nexport class ManagerReadComponent {\n  public readonly DEFAULT_PAGE_SIZE = 10;\n  public readonly DEFAULT_PAGE_SIZE_OPTIONS = [10, 20, 50, 100];\n  public readonly DEFAULT_DEBOUNCE_TIME = 1000;\n\n  @ViewChildren('elementsOnItem') elementsOnItem!: QueryList<FormComponent>;\n  @ViewChild(MatPaginator) paginator!: MatPaginator;\n\n  @Input() parameters!: ManagerReadParameters;\n\n  public loading?: boolean = true;\n  public error?: Error;\n  public displayedColumns: string[] = [];\n  public lastResult!: unknown;\n  public clonedElementColumns: {\n    [key: number]: { [key: string]: FormElement };\n  } = {};\n\n  constructor(\n    private readonly changeDetectorRef: ChangeDetectorRef,\n    private readonly managerReadService: ManagerReadService\n  ) {}\n\n  ngAfterViewInit() {\n    this.displayedColumnsListener();\n    this.initFilters();\n    this.refreshData();\n  }\n\n  private interceptButtonsOnItems() {\n    this.changeDetectorRef.detectChanges();\n\n    const data = this.parameters.data || [];\n\n    for (let index = 0; index < data.length; index++) {\n      const item = data[index];\n\n      if (!item) {\n        continue;\n      }\n\n      const formInstance = this.elementsOnItem.get(index);\n\n      if (!formInstance) {\n        continue;\n      }\n\n      for (const key in formInstance?.elements || {}) {\n        const element = formInstance?.elements?.[key];\n\n        if (!element) {\n          continue;\n        }\n\n        const getOnExtraFn = element.getOnExtra;\n\n        element.getOnExtra = () => {\n          let data = {};\n\n          if (typeof getOnExtraFn === 'function') {\n            data = getOnExtraFn();\n          }\n\n          return { ...data, item, elements: formInstance.elements };\n        };\n\n        if (element.type !== 'button') {\n          continue;\n        }\n\n        const getExtraFn = element.params.getExtra;\n\n        element.params.getExtra = () => {\n          if (typeof getExtraFn === 'function') {\n            getExtraFn();\n          }\n\n          return item;\n        };\n      }\n    }\n  }\n\n  private displayedColumnsListener() {\n    this.fnSetDisplayedColumns();\n  }\n\n  private fnSetDisplayedColumns() {\n    this.displayedColumns = this.parameters.columns\n      .filter((column) => !column.hidden)\n      .map((column) => column.property);\n\n    this.changeDetectorRef.detectChanges();\n  }\n\n  private initFilters() {\n    this.parameters.filters = this.parameters.filters || {};\n    this.parameters.filters.submitOn ??= 'change';\n\n    this.initFiltersOnChange();\n    this.initFiltersOnSubmit();\n  }\n\n  private initFiltersOnChange() {\n    for (const key in this.parameters.filters?.elements ?? {}) {\n      const element = this.parameters.filters?.elements?.[key];\n\n      if (!element) {\n        continue;\n      }\n\n      element.formControl?.valueChanges\n        .pipe(\n          debounceTime(\n            this.parameters.filters?.debounceTime ?? this.DEFAULT_DEBOUNCE_TIME\n          )\n        )\n        .subscribe(() => {\n          if (this.parameters.filters?.submitOn !== 'change') {\n            return;\n          }\n\n          this.refreshData();\n        });\n    }\n  }\n\n  private initFiltersOnSubmit() {\n    for (const key in this.parameters.filters?.elements ?? {}) {\n      const element = this.parameters.filters?.elements?.[key];\n\n      if (!element) {\n        continue;\n      }\n\n      if (!(element.type === 'button' && element.params.type === 'submit')) {\n        continue;\n      }\n\n      const handleFn = element.params.handle;\n\n      element.params.handle = async (form) => {\n        if (typeof handleFn === 'function') {\n          await handleFn(form);\n        }\n\n        if (this.parameters.filters?.submitOn !== 'submit') {\n          return;\n        }\n\n        this.refreshData();\n      };\n    }\n  }\n\n  public async refreshData(forceFetch: boolean = false) {\n    this.loading = true;\n    this.error = undefined;\n    this.parameters.data = [];\n\n    try {\n      const pageIndex = this.paginator.pageIndex;\n      const pageSize = this.paginator.pageSize ?? this.DEFAULT_PAGE_SIZE;\n      const offset = pageIndex * pageSize;\n      const filterValues = this.getFilterValues();\n      const data: ManagerReadParametersServiceData = {\n        offset,\n        to: offset + pageSize,\n        pageSize,\n        pageNumber: pageIndex + 1,\n        filters: {\n          query: new URLSearchParams(\n            filterValues as Record<string, string>\n          ).toString(),\n          json: filterValues,\n        },\n      };\n\n      if (\n        this.parameters.pagination?.remote ||\n        !this.lastResult ||\n        forceFetch\n      ) {\n        this.lastResult = await this.managerReadService.get(\n          this.parameters.service,\n          data\n        );\n      }\n\n      const allItems = getDeepValue<{ [key: string]: unknown }[]>(\n        this.lastResult,\n        this.parameters.service.keys?.results\n      );\n\n      let result: { [key: string]: unknown }[] = [];\n      let toShow: { [key: string]: unknown }[] = [];\n\n      if (this.parameters.pagination?.remote) {\n        result = allItems || [];\n        toShow = result || [];\n\n        this.paginator.length =\n          getDeepValue<number>(\n            this.lastResult,\n            this.parameters.service.keys?.count\n          ) ?? 0;\n      } else {\n        result = this.filterItems(allItems || []);\n        toShow = result?.slice(offset, offset + pageSize) || [];\n\n        this.paginator.length = result?.length ?? 0;\n      }\n\n      this.parameters.data = toShow || [];\n\n      this.interceptButtonsOnItems();\n    } catch (err) {\n      console.log('err', err);\n      const error: Error = err as Error;\n\n      this.error = error;\n    }\n\n    this.loading = false;\n\n    this.changeDetectorRef.markForCheck();\n  }\n\n  private getFilterValues() {\n    const filters = this.parameters.filters?.elements;\n\n    if (!filters) {\n      return {};\n    }\n\n    const values: { [key: string]: unknown } = {};\n\n    for (const key in filters) {\n      const element = filters[key];\n\n      if (!element) {\n        continue;\n      }\n\n      const value = element.formControl?.value;\n\n      if (typeof value === 'undefined' || value === null) {\n        continue;\n      }\n\n      values[key] = element.formControl?.value;\n    }\n\n    return values;\n  }\n\n  private filterItems(items: { [key: string]: unknown }[]) {\n    const filters = this.parameters.filters?.elements;\n\n    if (!filters) {\n      return items;\n    }\n\n    const result = items.filter((item) => {\n      for (const key in filters) {\n        const element = filters[key];\n\n        if (\n          !element?.formControl?.value ||\n          element?.formControl?.value === null\n        ) {\n          continue;\n        }\n\n        const value = getDeepValue<string | number | undefined | null>(\n          item,\n          key\n        );\n\n        if (typeof value === 'undefined' || value === '' || value === null) {\n          return false;\n        }\n\n        switch (element.type) {\n          case 'input': {\n            if (\n              value\n                ?.toString?.()\n                ?.toLowerCase?.()\n                ?.indexOf?.(element?.formControl?.value?.toLowerCase?.()) === -1\n            ) {\n              return false;\n            }\n\n            continue;\n          }\n          case 'select':\n          case 'remote-select': {\n            if (value !== element.formControl?.value) {\n              return false;\n            }\n\n            continue;\n          }\n        }\n      }\n\n      return true;\n    });\n\n    return result;\n  }\n\n  public mutate(value: unknown, column: ManagerReadParametersColumn) {\n    if (!column.mutate) {\n      return value;\n    }\n\n    return column.mutate(value);\n  }\n}\n","<table mat-table [dataSource]=\"parameters.data ?? []\">\n  @for (column of this.parameters.columns; track column) {\n  <ng-container [matColumnDef]=\"column.property\">\n    <th mat-header-cell [ngStyle]=\"column.styles\" *matHeaderCellDef>\n      {{ column.title }}\n    </th>\n    <td mat-cell *matCellDef=\"let element\">\n      @if (!column.elements) {\n      {{ mutate(element?.[column.property] ?? \"-\", column) }}\n      } @else {\n      <ngx-simple-forms-form\n        #elementsOnItem\n        [checkTimer]=\"256\"\n        [elements]=\"column.elements || {}\"\n        [cloneElements]=\"true\"\n      ></ngx-simple-forms-form>\n      }\n    </td>\n  </ng-container>\n  }\n\n  <tr mat-header-row *matHeaderRowDef=\"displayedColumns\"></tr>\n  <tr mat-row *matRowDef=\"let row; columns: displayedColumns\"></tr>\n</table>\n\n<div *ngIf=\"!loading && error\" class=\"error-container\">\n  <div class=\"error-message\">\n    <p>\n      {{\n        parameters.error?.message ??\n          \"Ha ocurrido un error. Inténtalo de nuevo más tarde.\"\n      }}\n    </p>\n  </div>\n</div>\n\n<div\n  *ngIf=\"!loading && !error && !parameters.data?.length\"\n  class=\"not-found-container\"\n>\n  <p>{{ parameters.notFound?.message ?? \"No se encontraron resultados\" }}</p>\n</div>\n\n<div class=\"loading-container\" *ngIf=\"this.loading\">\n  <mat-spinner diameter=\"48\"></mat-spinner>\n</div>\n\n<mat-paginator\n  [pageSize]=\"parameters.pagination?.pageSize ?? DEFAULT_PAGE_SIZE\"\n  [pageSizeOptions]=\"\n    parameters.pagination?.pageSizeOptions ?? DEFAULT_PAGE_SIZE_OPTIONS\n  \"\n  [disabled]=\"loading\"\n  showFirstLastButtons\n  (page)=\"refreshData()\"\n>\n</mat-paginator>\n","import { HttpClient, HttpResponse } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport {\n  ManagerCreateParametersService,\n  ManagerCreateParametersServiceData,\n} from './manager-create.parameters';\n\n@Injectable({\n  providedIn: 'root',\n})\nexport class ManagerCreateService {\n  constructor(private http: HttpClient) {}\n\n  storeSubscribe(\n    service: ManagerCreateParametersService,\n    data: ManagerCreateParametersServiceData\n  ) {\n    const method = service.method || 'GET';\n    const url = service.url(data);\n    const body =\n      typeof service.body === 'function'\n        ? service.body(data.form.json)\n        : undefined;\n\n    switch (method) {\n      case 'GET':\n        return this.http.get(url, { observe: 'response' });\n      case 'POST':\n        return this.http.post(url, body, { observe: 'response' });\n      case 'PATCH':\n        return this.http.patch(url, body, { observe: 'response' });\n      case 'DELETE':\n        return this.http.delete(url, { observe: 'response' });\n      case 'PUT':\n        return this.http.put(url, body, { observe: 'response' });\n      default:\n        throw new Error('Invalid method');\n    }\n  }\n\n  store(\n    service: ManagerCreateParametersService,\n    data: ManagerCreateParametersServiceData\n  ): Promise<HttpResponse<Object>> {\n    return new Promise((resolve, reject) => {\n      const result = this.storeSubscribe(service, data);\n\n      result?.subscribe(\n        (data) => {\n          resolve(data);\n        },\n        (error) => {\n          reject(error);\n        }\n      );\n    });\n  }\n}\n","import {\n  ChangeDetectorRef,\n  Component,\n  EventEmitter,\n  Input,\n  Output,\n} from '@angular/core';\nimport { ManagerCreateParameters } from './manager-create.parameters';\nimport {\n  ButtonParametersHandleData,\n  DialogComponent,\n  DialogService,\n  FormElement,\n} from 'ngx-simple-forms';\nimport { MatDialogRef } from '@angular/material/dialog';\nimport { ManagerCreateService } from './manager-create.service';\nimport { HttpResponse } from '@angular/common/http';\nimport { MatSnackBar, MatSnackBarModule } from '@angular/material/snack-bar';\n\n@Component({\n  selector: 'ngx-simple-crud-manager-create',\n  standalone: true,\n  imports: [MatSnackBarModule],\n  templateUrl: './manager-create.component.html',\n  styleUrl: './manager-create.component.css',\n})\nexport class ManagerCreateComponent {\n  public readonly DEFAULT_METHOD: 'GET' | 'POST' | 'PATCH' | 'PUT' | 'DELETE' =\n    'POST';\n  public readonly DEFAULT_SUCCESS_WHEN_FN = (response: HttpResponse<Object>) =>\n    response.status === 201;\n\n  @Output() public readonly success = new EventEmitter<void>();\n  @Output() public readonly cancel = new EventEmitter<void>();\n  @Output() public readonly error = new EventEmitter<void>();\n  @Input({ required: true }) parameters!: ManagerCreateParameters;\n\n  dialog!: MatDialogRef<DialogComponent>;\n\n  originalDescription?: string;\n  prefill?: { [key: string]: unknown };\n\n  constructor(\n    private readonly changeDetectorRef: ChangeDetectorRef,\n    private readonly dialogService: DialogService,\n    private readonly managerCreateService: ManagerCreateService,\n    private readonly snackBar: MatSnackBar\n  ) {}\n\n  ngAfterViewInit(): void {\n    this.saveOriginalDescription();\n    this.interceptSubmitButton();\n    this.interceptCancelButton();\n    this.interceptAllElementsForDisableWhenLoading();\n  }\n\n  private saveOriginalDescription() {\n    this.originalDescription = this.parameters.description;\n  }\n\n  private setDescription(message?: string, color?: string) {\n    if (this.dialog.componentInstance.parameters.description) {\n      this.dialog.componentInstance.parameters.description.text = message;\n\n      if (!this.dialog.componentInstance.parameters.description.styles) {\n        this.dialog.componentInstance.parameters.description.styles = {};\n      }\n\n      this.dialog.componentInstance.parameters.description.styles.color = color;\n    }\n  }\n\n  private resetOriginalDescription() {\n    return this.setDescription(this.originalDescription, 'black');\n  }\n\n  public open(prefill?: unknown) {\n    this.dialog = this.dialogService.open({\n      title: {\n        text: this.parameters.title,\n        color: this.parameters.color,\n      },\n      description: {\n        text: this.parameters.description ?? '',\n      },\n      checkTimer: 256,\n      elements: this.getAllElements(),\n    });\n\n    this.dialog.afterOpened().subscribe(() => {\n      this.setPrefill(prefill as { [key: string]: unknown });\n    });\n\n    this.dialog.afterClosed().subscribe(() => {\n      this.dialog.componentInstance.form.group.reset();\n      this.resetOriginalDescription();\n    });\n  }\n\n  public close() {\n    this.dialog.close();\n  }\n\n  protected getAllElements() {\n    return {\n      ...(this.parameters.fields || {}),\n      ...(this.parameters.buttons || {}),\n    };\n  }\n\n  private setPrefill(prefill?: { [key: string]: unknown }) {\n    this.prefill = prefill;\n\n    if (\n      !this.prefill ||\n      typeof this.prefill !== 'object' ||\n      this.prefill === null\n    ) {\n      return;\n    }\n\n    for (const key in this.parameters.fields || {}) {\n      const element = this.parameters.fields?.[key];\n\n      if (!element) {\n        continue;\n      }\n\n      element.formControl?.setValue(\n        (this.prefill as { [key: string]: unknown })?.[key]\n      );\n    }\n\n    this.changeDetectorRef.detectChanges();\n  }\n\n  private interceptSubmitButton() {\n    const submitButton = this.getFirstSubmitButton();\n\n    if (!submitButton || submitButton.type !== 'button') {\n      return;\n    }\n\n    const handleFn = submitButton.params.handle;\n\n    submitButton.params.handle = async (data) => {\n      if (typeof handleFn === 'function') {\n        await handleFn(data);\n      }\n\n      await this.submit(data);\n    };\n  }\n\n  private async submit(data: ButtonParametersHandleData<unknown>) {\n    const submitButton = this.getFirstSubmitButton();\n    const { group } = data;\n\n    if (group.invalid || !submitButton || submitButton.type !== 'button') {\n      return;\n    }\n\n    this.resetOriginalDescription();\n\n    submitButton.params.loading = true;\n\n    const json = group.value;\n    const query = new URLSearchParams(json).toString();\n\n    try {\n      const response = await this.managerCreateService.store(\n        this.parameters.service,\n        { form: { json, query }, item: this.prefill }\n      );\n\n      const success =\n        typeof this.parameters.service.success?.when === 'function'\n          ? this.parameters.service.success?.when?.(response)\n          : this.DEFAULT_SUCCESS_WHEN_FN(response);\n\n      if (!success) {\n        throw new Error('Error al enviar el formulario');\n      }\n\n      this.snackBar.open(this.parameters.service.success.message, 'X', {\n        duration: 4000,\n      });\n\n      this.close();\n\n      this.success.emit();\n    } catch (err) {\n      this.setDescription(this.parameters.service.error.message, 'red');\n\n      this.error.emit();\n    }\n\n    submitButton.params.loading = false;\n  }\n\n  private interceptCancelButton() {\n    const cancelButton = this.getFirstCancelButton();\n\n    if (!cancelButton || cancelButton.type !== 'button') {\n      return;\n    }\n\n    const handleFn = cancelButton.params.handle;\n\n    cancelButton.params.handle = async (form) => {\n      if (typeof handleFn === 'function') {\n        await handleFn(form);\n      }\n\n      this.cancel.emit();\n      this.close();\n    };\n  }\n\n  private interceptAllElementsForDisableWhenLoading() {\n    const allElements = {\n      ...(this.parameters.fields || {}),\n      ...(this.parameters.buttons || {}),\n    };\n    const submitButton = this.getFirstSubmitButton();\n\n    if (!submitButton || submitButton.type !== 'button') {\n      return;\n    }\n\n    for (const key in allElements) {\n      const element = allElements[key];\n\n      if (!element) {\n        continue;\n      }\n\n      const disabledFn = element.disabled;\n\n      element.disabled = () => {\n        let originalDisabled = false;\n\n        if (typeof disabledFn === 'function') {\n          originalDisabled = !!disabledFn();\n        }\n\n        return originalDisabled || submitButton.params.loading;\n      };\n    }\n  }\n\n  private getFirstSubmitButton() {\n    let submitButton!: FormElement;\n\n    for (const key in this.parameters.buttons || {}) {\n      const element = this.parameters.buttons?.[key];\n\n      if (!element) {\n        continue;\n      }\n\n      if (element.type !== 'button' || element.params.type !== 'submit') {\n        continue;\n      }\n\n      submitButton = element;\n\n      break;\n    }\n\n    return submitButton;\n  }\n\n  private getFirstCancelButton() {\n    let cancelButton!: FormElement;\n\n    for (const key in this.parameters.buttons) {\n      const element = this.parameters.buttons[key];\n\n      if (!element) {\n        continue;\n      }\n\n      if (\n        element.type !== 'button' ||\n        element.params.type !== 'button' ||\n        typeof element.params.handle === 'function'\n      ) {\n        continue;\n      }\n\n      cancelButton = element;\n\n      break;\n    }\n\n    return cancelButton;\n  }\n}\n","","import { Component, Input } from '@angular/core';\nimport { ManagerUpdateParameters } from './manager-update.parameters';\nimport { ManagerCreateComponent } from '../manager-create/manager-create.component';\nimport { deepMerge } from '../../utils';\nimport { HttpResponse } from '@angular/common/http';\n\n@Component({\n  selector: 'ngx-simple-crud-manager-update',\n  standalone: true,\n  imports: [],\n  templateUrl: './manager-update.component.html',\n  styleUrl: './manager-update.component.css',\n})\nexport class ManagerUpdateComponent extends ManagerCreateComponent {\n  public override readonly DEFAULT_METHOD:\n    | 'GET'\n    | 'POST'\n    | 'PATCH'\n    | 'PUT'\n    | 'DELETE' = 'PATCH';\n  public override readonly DEFAULT_SUCCESS_WHEN_FN = (\n    response: HttpResponse<Object>\n  ) => response.status === 200;\n\n  @Input({ required: true }) override parameters!: ManagerUpdateParameters;\n\n  override ngAfterViewInit(): void {\n    this.cloneFromBase();\n\n    super.ngAfterViewInit();\n  }\n\n  protected cloneFromBase() {\n    const base = this.parameters.base;\n\n    if (!base && typeof this.parameters.base !== 'object') {\n      return;\n    }\n\n    this.parameters = deepMerge<ManagerUpdateParameters>(\n      base as ManagerUpdateParameters,\n      { ...this.parameters, base: undefined }\n    );\n  }\n}\n","","import { Component, Input } from '@angular/core';\nimport { ManagerDeleteParameters } from './manager-delete.parameters';\nimport { HttpResponse } from '@angular/common/http';\nimport { ManagerUpdateComponent } from '../manager-update/manager-update.component';\n\n@Component({\n  selector: 'ngx-simple-crud-manager-delete',\n  standalone: true,\n  imports: [],\n  templateUrl: './manager-delete.component.html',\n  styleUrl: './manager-delete.component.css',\n})\nexport class ManagerDeleteComponent extends ManagerUpdateComponent {\n  public override readonly DEFAULT_METHOD:\n    | 'GET'\n    | 'POST'\n    | 'PATCH'\n    | 'PUT'\n    | 'DELETE' = 'DELETE';\n  public override readonly DEFAULT_SUCCESS_WHEN_FN = (\n    response: HttpResponse<Object>\n  ) => response.status === 204;\n\n  @Input({ required: true }) override parameters!: ManagerDeleteParameters;\n\n  override ngAfterViewInit(): void {\n    this.cloneFromBase();\n\n    super.ngAfterViewInit();\n  }\n\n  protected override getAllElements() {\n    return { ...this.parameters.buttons };\n  }\n}\n","","import { Component, Input, ViewChild } from '@angular/core';\nimport { ManagerHeaderComponent } from '../manager-header/manager-header.component';\nimport { ManagerPanelComponent } from '../manager-panel/manager-panel.component';\nimport { ManagerHeaderParameters } from '../manager-header/manager-header.parameters';\nimport { ManagerPanelParameters } from '../manager-panel/manager-panel.parameters';\nimport { ManagerReadComponent } from '../manager-read/manager-read.component';\nimport { ManagerReadParameters } from '../manager-read/manager-read.parameters';\nimport { ManagerCreateComponent } from '../manager-create/manager-create.component';\nimport { ManagerCreateParameters } from '../manager-create/manager-create.parameters';\nimport { ManagerUpdateComponent } from '../manager-update/manager-update.component';\nimport { ManagerDeleteComponent } from '../manager-delete/manager-delete.component';\nimport { ManagerDeleteParameters } from '../manager-delete/manager-delete.parameters';\nimport { ManagerUpdateParameters } from '../manager-update/manager-update.parameters';\nimport { NgIf } from '@angular/common';\n\n@Component({\n  selector: 'ngx-simple-crud-manager',\n  standalone: true,\n  imports: [\n    ManagerHeaderComponent,\n    ManagerPanelComponent,\n    ManagerReadComponent,\n    ManagerCreateComponent,\n    ManagerUpdateComponent,\n    ManagerDeleteComponent,\n    NgIf,\n  ],\n  templateUrl: './manager.component.html',\n  styleUrl: './manager.component.css',\n})\nexport class ManagerComponent {\n  @ViewChild(ManagerHeaderComponent) headerComponent!: ManagerHeaderComponent;\n  @ViewChild(ManagerPanelComponent) panelComponent!: ManagerPanelComponent;\n  @ViewChild(ManagerCreateComponent) createComponent!: ManagerCreateComponent;\n  @ViewChild(ManagerReadComponent) readComponent!: ManagerReadComponent;\n  @ViewChild(ManagerUpdateComponent) updateComponent!: ManagerUpdateComponent;\n  @ViewChild(ManagerDeleteComponent) deleteComponent!: ManagerDeleteComponent;\n\n  @Input() headerParameters!: ManagerHeaderParameters;\n  @Input() panelParameters!: ManagerPanelParameters;\n  @Input() createParameters!: ManagerCreateParameters;\n  @Input() readParameters!: ManagerReadParameters;\n  @Input() updateParameters!: ManagerUpdateParameters;\n  @Input() deleteParameters!: ManagerDeleteParameters;\n\n  public onCreate() {\n    this.readComponent.paginator.pageIndex = 0;\n    this.readComponent.refreshData(true);\n  }\n\n  public onUpdate() {\n    this.readComponent.refreshData(true);\n  }\n\n  public onDelete() {\n    const itemsInCurrentPage = this.readComponent.parameters.data || [];\n\n    if (itemsInCurrentPage.length === 0) {\n      this.readComponent.paginator.pageIndex = 0;\n      this.readComponent.refreshData(true);\n\n      return;\n    }\n\n    if (itemsInCurrentPage.length === 1) {\n      this.readComponent.paginator.pageIndex -= 1;\n      this.readComponent.paginator.pageIndex =\n        this.readComponent.paginator.pageIndex < 0\n          ? 0\n          : this.readComponent.paginator.pageIndex;\n\n      this.readComponent.refreshData(true);\n\n      return;\n    }\n\n    this.readComponent.refreshData(true);\n  }\n}\n","<div class=\"header-container\" *ngIf=\"headerParameters\">\n  <ngx-simple-crud-manager-header\n    [parameters]=\"headerParameters\"\n  ></ngx-simple-crud-manager-header>\n</div>\n\n<div class=\"panel-container\" *ngIf=\"panelParameters\">\n  <ngx-simple-crud-manager-panel\n    [parameters]=\"panelParameters\"\n  ></ngx-simple-crud-manager-panel>\n</div>\n\n<div class=\"read-container\">\n  <ngx-simple-crud-manager-read [parameters]=\"readParameters\">\n  </ngx-simple-crud-manager-read>\n</div>\n\n<div class=\"create-container\" *ngIf=\"createParameters\">\n  <ngx-simple-crud-manager-create\n    [parameters]=\"createParameters\"\n    (success)=\"onCreate()\"\n  ></ngx-simple-crud-manager-create>\n</div>\n\n<div class=\"update-container\" *ngIf=\"updateParameters\">\n  <ngx-simple-crud-manager-update\n    [parameters]=\"updateParameters\"\n    (success)=\"onUpdate()\"\n  ></ngx-simple-crud-manager-update>\n</div>\n\n<div class=\"delete-container\" *ngIf=\"deleteParameters\">\n  <ngx-simple-crud-manager-delete\n    [parameters]=\"deleteParameters\"\n    (success)=\"onDelete()\"\n  ></ngx-simple-crud-manager-delete>\n</div>\n","/*\n * Public API Surface of ngx-simple-crud\n */\n\nexport * from './lib/utils';\n\nexport * from './lib/components/manager/manager.component';\n\nexport * from './lib/components/manager-header/manager-header.component';\nexport * from './lib/components/manager-header/manager-header.parameters';\n\nexport * from './lib/components/manager-panel/manager-panel.component';\nexport * from './lib/components/manager-panel/manager-panel.parameters';\n\nexport * from './lib/components/manager-read/manager-read.component';\nexport * from './lib/components/manager-read/manager-read.parameters';\n\nexport * from './lib/components/manager-create/manager-create.component';\nexport * from './lib/components/manager-create/manager-create.parameters';\n\nexport * from './lib/components/manager-update/manager-update.component';\nexport * from './lib/components/manager-update/manager-update.parameters';\n\nexport * from './lib/components/manager-delete/manager-delete.component';\nexport * from './lib/components/manager-delete/manager-delete.parameters';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1","i1.ManagerReadService","i2.ManagerCreateService","i3"],"mappings":"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"}