{"version":3,"file":"skooltrak-custom-components.mjs","sources":["../../../projects/components/src/lib/components/custom-datepicker/custom-datepicker.component.ts","../../../projects/components/src/lib/components/custom-datepicker/custom-datepicker.component.html","../../../projects/components/src/lib/components/custom-datepicker/custom-datepicker.module.ts","../../../projects/components/src/lib/pipes/array.pipe.ts","../../../projects/components/src/lib/pipes/boolean.pipe.ts","../../../projects/components/src/lib/pipes/column.pipe.ts","../../../projects/components/src/lib/pipes/pipes.module.ts","../../../projects/components/src/lib/util.service.ts","../../../projects/components/src/lib/components/custom-select/custom-select.component.ts","../../../projects/components/src/lib/components/custom-select/custom-select.component.html","../../../projects/components/src/lib/components/custom-select/custom-select.module.ts","../../../projects/components/src/lib/enums/regex.enum.ts","../../../projects/components/src/lib/components/custom-form/custom-form.component.ts","../../../projects/components/src/lib/components/custom-form/custom-form.component.html","../../../projects/components/src/lib/components/custom-form/custom-form.module.ts","../../../projects/components/src/lib/components/loading-modal/loading-modal.component.ts","../../../projects/components/src/lib/components/loading-modal/loading-modal.component.html","../../../projects/components/src/lib/components/loading-modal/loading-modal.module.ts","../../../projects/components/src/lib/components/paginator/paginator.component.ts","../../../projects/components/src/lib/components/paginator/paginator.component.html","../../../projects/components/src/lib/components/paginator/paginator.module.ts","../../../projects/components/src/lib/components/custom-table/pdf.ts","../../../projects/components/src/lib/components/custom-table/custom-table.component.ts","../../../projects/components/src/lib/components/custom-table/custom-table.component.html","../../../projects/components/src/lib/components/custom-table/custom-table.module.ts","../../../projects/components/src/lib/components/floating-datepicker/floating-datepicker.component.ts","../../../projects/components/src/lib/components/floating-datepicker/floating-datepicker.component.html","../../../projects/components/src/lib/components/floating-datepicker/floating-datepicker.module.ts","../../../projects/components/src/lib/hide-outside.directive.ts","../../../projects/components/src/lib/custom-components.module.ts","../../../projects/components/src/lib/async-wrapper.ts","../../../projects/components/src/lib/components/custom-table/table-options.ts","../../../projects/components/src/skooltrak-custom-components.ts"],"sourcesContent":["import { Component, forwardRef, Input } from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { NgbDateParserFormatter, NgbDateStruct } from '@ng-bootstrap/ng-bootstrap';\n\n@Component({\n  selector: 'sk-custom-datepicker',\n  templateUrl: './custom-datepicker.component.html',\n  styleUrls: ['./custom-datepicker.component.sass'],\n  providers: [\n    {\n      provide: NG_VALUE_ACCESSOR,\n      useExisting: forwardRef(() => CustomDatepickerComponent),\n      multi: true,\n    },\n  ],\n})\nexport class CustomDatepickerComponent implements ControlValueAccessor {\n  @Input() maxDate: NgbDateStruct = {\n    year: new Date().getFullYear() - 5,\n    month: 1,\n    day: 1,\n  };\n  @Input() minDate: NgbDateStruct = {\n    year: new Date().getFullYear(),\n    month: 12,\n    day: 31,\n  };\n  @Input() required: boolean = false;\n  currentDate!: NgbDateStruct | null;\n  disabled: boolean = false;\n\n  constructor(private formatter: NgbDateParserFormatter) {}\n\n  get value(): Date {\n    return new Date(this.formatter.format(this.currentDate));\n  }\n\n  onChange = (date: any): void => {};\n\n  change(): void {\n    this.onChange(this.value);\n  }\n\n  onTouched = (): void => {};\n\n  writeValue(date: Date): void {\n    if (date) {\n      this.currentDate = this.formatter.parse(date.toString());\n      this.onChange(this.value);\n    }\n  }\n  setDisabledState(isDisabled: boolean): void {\n    this.disabled = isDisabled;\n  }\n\n  registerOnChange(fn: () => void): void {\n    this.onChange = fn;\n  }\n\n  registerOnTouched(fn: () => void): void {\n    this.onTouched = fn;\n  }\n}\n","<input\n  [required]=\"required\"\n  class=\"form-control\"\n  [(ngModel)]=\"currentDate\"\n  [minDate]=\"minDate\"\n  [maxDate]=\"maxDate\"\n  (ngModelChange)=\"change()\"\n  placeholder=\"YYYY-MM-DD\"\n  ngbDatepicker\n  #d=\"ngbDatepicker\"\n  [readonly]=\"disabled\"\n  (click)=\"d.toggle()\"\n/>\n","import { NgModule } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { NgbDatepickerModule } from '@ng-bootstrap/ng-bootstrap';\n\nimport { CustomDatepickerComponent } from './custom-datepicker.component';\n\n@NgModule({\n  declarations: [CustomDatepickerComponent],\n  imports: [FormsModule, NgbDatepickerModule],\n  exports: [CustomDatepickerComponent],\n})\nexport class CustomDatePickerModule {}\n","import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({\n  name: 'array',\n})\nexport class ArrayPipe implements PipeTransform {\n  transform(value: any[], args: string): any {\n    const items = value?.map(\n      (item) =>\n        `<span class=\"badge rounded-pill badge-primary mt-1\">${item[args]}</span>`\n    );\n    return items?.join(' ');\n  }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({\n  name: 'boolean'\n})\nexport class BooleanPipe implements PipeTransform {\n\n  transform(value: boolean, args?: any): string {\n    if (value) {\n      return '<span class=\"badge rounded-pill badge-success\">Sí</span>';\n    } else if (value === false) {\n      return '<span class=\"badge rounded-pill badge-false\">No</span>';\n    } else {\n      return '--';\n    }\n  }\n\n}\n","import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({\n  name: 'column'\n})\nexport class ColumnPipe implements PipeTransform {\n  transform(value: any, args: string): any {\n    args.split('.').forEach((element) => {\n      value = value[element];\n    });\n\n    return value;\n  }\n\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\n\nimport { ArrayPipe } from './array.pipe';\nimport { BooleanPipe } from './boolean.pipe';\nimport { ColumnPipe } from './column.pipe';\n\n@NgModule({\n  imports: [CommonModule],\n  declarations: [ArrayPipe, BooleanPipe, ColumnPipe],\n  exports: [ArrayPipe, BooleanPipe, ColumnPipe],\n})\nexport class PipesModule {}\n","import { Injectable } from '@angular/core';\nimport * as _ from 'underscore';\n\n@Injectable({\n  providedIn: 'root',\n})\nexport class UtilService {\n  constructor() {}\n  removeById(array: Array<any>, id: string): Array<any> {\n    return array.filter((item) => item.id !== id);\n  }\n\n  filterById(array: Array<any>, id: string, property: string = 'id'): any {\n    return array.find((item) => item[property] === id);\n  }\n\n  updateItem(item: any, array: any[]): any[] {\n    const objIndex = array.findIndex((obj) => obj.ID === item.ID);\n    array[objIndex] = item;\n    return array;\n  }\n\n  isNullString(str?: string): string {\n    return str || '';\n  }\n\n  searchFilter(\n    array: Array<any>,\n    args: Array<string>,\n    searchText: string\n  ): Array<any> {\n    const filterArray: Array<any> = [];\n\n    searchText = searchText.toLocaleLowerCase();\n\n    for (const item of array) {\n      let term = '';\n      for (const col of args) {\n        term = term + this.isNullString(this.getProperty(item, col));\n      }\n      term = term.toLocaleLowerCase();\n      if (term.indexOf(searchText) >= 0) {\n        filterArray.push(item);\n      }\n    }\n    return filterArray;\n  }\n\n  sortBy(array: Array<any>, args: string, desc?: boolean): Array<any> {\n    if (desc) {\n      array.sort((a: any, b: any) => {\n        if (!a[args]) {\n          return 1;\n        } else if (!b[args]) {\n          return -1;\n        } else if (a[args] < b[args]) {\n          return 1;\n        } else if (a[args] > b[args]) {\n          return -1;\n        } else {\n          return 0;\n        }\n      });\n    } else {\n      array.sort((a: any, b: any) => {\n        if (!a[args]) {\n          return -1;\n        } else if (!b[args]) {\n          return 1;\n        } else if (a[args] < b[args]) {\n          return -1;\n        } else if (a[args] > b[args]) {\n          return 1;\n        } else {\n          return 0;\n        }\n      });\n    }\n    return array;\n  }\n\n  paginate(itemsCount: number, currentPage: number = 1, pageSize: number): any {\n    const totalPages: number = Math.ceil(itemsCount / pageSize) + 1;\n    let startPage: number;\n    let endPage: number;\n\n    if (totalPages <= 5) {\n      startPage = 1;\n      endPage = totalPages;\n    } else {\n      if (currentPage <= 3) {\n        startPage = 1;\n        endPage = 6;\n      } else if (currentPage + 2 >= totalPages) {\n        startPage = totalPages - 5;\n        endPage = totalPages;\n      } else {\n        startPage = currentPage - 2;\n        endPage = currentPage + 3;\n      }\n    }\n\n    const startIndex = (currentPage - 1) * pageSize;\n    const endIndex = Math.min(startIndex + (pageSize - 1), itemsCount - 1);\n\n    const pages = _.range(startPage, endPage);\n\n    return {\n      totalItems: itemsCount,\n      currentPage,\n      pageSize,\n      totalPages,\n      startPage,\n      endPage,\n      startIndex,\n      endIndex,\n      pages,\n    };\n  }\n\n  getProperty(item: any, property: string): string {\n    property?.split('.').forEach((e) => {\n      item = item ? item[e] : '';\n    });\n    return item;\n  }\n}\n","import { Component, forwardRef, HostListener, Input, OnChanges, OnInit, SimpleChanges } from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\n\nimport { ArrayPipe } from '../../pipes/array.pipe';\nimport { UtilService } from '../../util.service';\n\n@Component({\n  selector: 'sk-custom-select',\n  templateUrl: './custom-select.component.html',\n  styleUrls: ['./custom-select.component.sass'],\n  providers: [\n    {\n      provide: NG_VALUE_ACCESSOR,\n      useExisting: forwardRef(() => CustomSelectComponent),\n      multi: true,\n    },\n  ],\n})\nexport class CustomSelectComponent\n  implements OnInit, ControlValueAccessor, OnChanges\n{\n  @Input() multiple = false;\n  @Input() items!: any[] | null;\n  @Input() search = true;\n  @Input() displayValue!: string;\n  @Input() secondaryDisplay!: string;\n  @Input() placeholder = 'Insert value';\n  @Input() objectId = 'id';\n  showDropdown = false;\n  currentValue: any | any[];\n  arrayPipe = new ArrayPipe();\n  filterValue!: string;\n  inputDisplay!: string;\n  filteredItems!: any[];\n  calledInside = false;\n\n  @HostListener('click')\n  clickInside() {\n    this.calledInside = true;\n  }\n\n  @HostListener('document: click')\n  clickOutside() {\n    if (!this.calledInside && this.showDropdown) {\n      this.toggleShow();\n      this.filterItems();\n    }\n\n    this.calledInside = false;\n  }\n\n  constructor(private util: UtilService) {}\n\n  ngOnInit(): void {\n    if (this.multiple) {\n      this.currentValue = [];\n    } else {\n      this.currentValue = {};\n    }\n  }\n\n  ngOnChanges(model: SimpleChanges): void {\n    if (model['items']) {\n      if (this.items) {\n        this.filteredItems = [...this.items];\n        if (this.multiple) {\n          this.items.forEach((x) => {\n            if (\n              this.currentValue &&\n              this.util.filterById(\n                this.currentValue,\n                x[this.objectId],\n                this.objectId\n              )\n            ) {\n              x.selected = true;\n            } else {\n              x.selected = false;\n            }\n          });\n        } else {\n          if (this.currentValue) {\n            this.items\n              .filter(\n                (x) => x[this.objectId] === this.currentValue[this.objectId]\n              )\n              .map((x) => {\n                x.selected = true;\n                return x;\n              });\n          }\n        }\n        this.items = this.util.sortBy(this.items, this.displayValue);\n      }\n    }\n  }\n\n  toggleShow(): void {\n    this.filterValue = '';\n    this.showDropdown = !this.showDropdown;\n  }\n\n  get value(): any | any[] {\n    return this.currentValue;\n  }\n\n  onChange = (value: any | any[]): void => {};\n\n  change(): void {\n    this.onChange(this.value);\n  }\n\n  valueDisplay(): string | null {\n    if (this.multiple) {\n      return this.arrayPipe.transform(this.value, this.displayValue);\n    } else {\n      if (this.value && this.value[this.displayValue]) {\n        return `<bold>${this.value[this.displayValue]}</bold>`;\n      } else {\n        return null;\n      }\n    }\n  }\n\n  clearAll(): void {\n    if (this.multiple) {\n      this.currentValue = [];\n    } else {\n      this.currentValue = null;\n    }\n\n    this.items!.filter((x) => x.selected === true).forEach(\n      (y) => (y.selected = false)\n    );\n\n    this.change();\n  }\n\n  toggleItem(item: any): void {\n    item.selected = !item.selected;\n    if (this.multiple) {\n      if (item.selected) {\n        this.currentValue.push(item);\n      } else {\n        this.currentValue = this.util.removeById(this.currentValue, item.id);\n      }\n    } else {\n      this.items!.filter(\n        (x) => x[this.objectId] !== item[this.objectId]\n      ).forEach((x) => (x.selected = false));\n      this.currentValue = item;\n      this.toggleShow();\n    }\n\n    this.change();\n  }\n\n  onTouched = (): void => {};\n\n  writeValue(val: any | any[]): void {\n    if (val) {\n      this.currentValue = val;\n      this.onChange(this.value);\n      this.change();\n    }\n  }\n\n  filterItems(): void {\n    this.filteredItems = this.util.searchFilter(\n      this.items!,\n      [this.displayValue, this.secondaryDisplay],\n      this.filterValue\n    );\n  }\n\n  registerOnChange(fn: () => void): void {\n    this.onChange = fn;\n  }\n\n  registerOnTouched(fn: () => void): void {\n    this.onTouched = fn;\n  }\n}\n","<div class=\"dropdown\" [ngClass]=\"{ show: showDropdown }\">\n  <div\n    class=\"\n      form-control\n      d-flex\n      align-items-center\n      justify-content-between\n      input-container\n    \"\n    (click)=\"toggleShow()\"\n  >\n    <div>\n      <span class=\"font-weight-bold\" [innerHTML]=\"valueDisplay()\"></span>\n      <span *ngIf=\"!valueDisplay()\" [innerHTML]=\"placeholder\"></span>\n    </div>\n    <div><i class=\"bi bi-funnel\" aria-hidden=\"true\"></i></div>\n  </div>\n  <div class=\"dropdown-menu shadow-medium\" [ngClass]=\"{ show: showDropdown }\">\n    <div [hidden]=\"!search\" class=\"form-group search-form mb-2 dropdown-item\">\n      <input\n        type=\"text\"\n        autocomplete=\"new-text\"\n        name=\"search\"\n        [(ngModel)]=\"filterValue\"\n        (ngModelChange)=\"filterItems()\"\n        id=\"search\"\n        class=\"form-control form-control-sm\"\n        placeholder=\"Buscar\"\n      />\n    </div>\n    <div class=\"items-container\">\n      <a\n        *ngFor=\"let item of filteredItems\"\n        (click)=\"toggleItem(item)\"\n        class=\"\n          dropdown-item\n          px-3\n          py-2\n          d-flex\n          align-items-center\n          justify-content-between\n        \"\n        [ngClass]=\"{ selected: item.selected }\"\n      >\n        <ng-container *ngIf=\"multiple\">\n          <div class=\"main-container\">\n            <i\n              [hidden]=\"item.selected\"\n              class=\"bi bi-square me-2 text-muted\"\n              aria-hidden=\"true\"\n            ></i>\n            <i\n              [hidden]=\"!item.selected\"\n              class=\"bi bi-check-square-fill me-2 text-success\"\n              aria-hidden=\"true\"\n            ></i>\n            {{ item[displayValue] }}\n          </div>\n        </ng-container>\n        <div class=\"main-container\" *ngIf=\"!multiple\">\n          {{ item[displayValue] }}\n        </div>\n        <div *ngIf=\"secondaryDisplay\">\n          <small class=\"clear-text\">{{\n            item | column: secondaryDisplay\n          }}</small>\n        </div>\n      </a>\n      <h5 *ngIf=\"!filteredItems?.length\" class=\"text-center my-3\">\n        {{ 'No items' | transloco }}\n      </h5>\n    </div>\n    <div class=\"buttom-row d-flex justify-content-between\">\n      <div>\n        <a class=\"btn btn-link\" role=\"button\" (click)=\"clearAll()\">{{\n          'Clear all' | transloco\n        }}</a>\n      </div>\n      <div>\n        <button\n          type=\"button\"\n          class=\"btn btn-primary btn-sm\"\n          (click)=\"toggleShow()\"\n        >\n          {{ 'Save' | transloco }}\n        </button>\n      </div>\n    </div>\n  </div>\n</div>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { TranslocoModule } from '@ngneat/transloco';\n\nimport { PipesModule } from '../../pipes/pipes.module';\nimport { CustomSelectComponent } from './custom-select.component';\n\n@NgModule({\n  imports: [CommonModule, FormsModule, TranslocoModule, PipesModule],\n  declarations: [CustomSelectComponent],\n  exports: [CustomSelectComponent],\n})\nexport class CustomSelectModule {}\n","// @dynamic\nexport class RegexEnum {\n  public static EMAIL =\n    // eslint-disable-next-line max-len\n    /^(([^<>()\\[\\]\\\\,;:\\s@\"]+(\\.[^<>()\\[\\]\\\\,;:\\s@\"]+)*)|(\".+\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$/;\n  public static MOBILE_PHONE = /([6][0-9]{3}[-][0-9]{4})$/;\n  public static HOME_PHONE = /([0-9]{3}[-][0-9]{4})/;\n}\n","import { Component, Input, OnInit } from '@angular/core';\nimport { UntypedFormControl, UntypedFormGroup, ValidatorFn, Validators } from '@angular/forms';\nimport { NgbActiveModal } from '@ng-bootstrap/ng-bootstrap';\n\nimport { RegexEnum } from '../../enums/regex.enum';\nimport { UtilService } from '../../util.service';\nimport { Column } from '../custom-table/table-options';\n\n@Component({\n  selector: 'sk-custom-form',\n  templateUrl: './custom-form.component.html',\n  styleUrls: ['./custom-form.component.sass'],\n})\nexport class CustomFormComponent implements OnInit {\n  @Input() fields!: Column[];\n  @Input() item?: any = {};\n\n  form: UntypedFormGroup = new UntypedFormGroup({});\n\n  constructor(\n    public readonly activeModal: NgbActiveModal,\n    private readonly util: UtilService\n  ) {}\n\n  ngOnInit(): void {\n    this.resolveLists();\n    this.generateForm();\n  }\n\n  generateForm(): void {\n    this.fields\n      .filter((x) => !x.readonly)\n      .forEach((field) => {\n        const control = new UntypedFormControl(this.item[field.name]);\n        const validators: ValidatorFn[] = [];\n\n        if (field.required) {\n          validators.push(Validators.required);\n        }\n\n        if (field.type === 'email') {\n          validators.push(Validators.pattern(RegexEnum.EMAIL));\n        }\n\n        if (field.type === 'mobile-phone') {\n          validators.push(Validators.pattern(RegexEnum.MOBILE_PHONE));\n        }\n\n        if (field.type === 'home-phone') {\n          validators.push(Validators.pattern(RegexEnum.HOME_PHONE));\n        }\n\n        if (validators.length) {\n          control.setValidators(validators);\n        }\n        this.form.addControl(field.name, control);\n      });\n  }\n\n  updateObject(event: any): void {\n    this.fields\n      .filter((x) => !x.readonly)\n      .forEach((field) => {\n        if (field.type === 'object' && this.item[field.objectID!]) {\n          this.item[field.name] = this.util.filterById(\n            field.list!,\n            this.item[field.objectID!]\n          );\n          this.item[field.objectText!] =\n            this.item[field.name][field.listDisplay];\n        } else {\n          this.item[field.name] = this.form.get(field.name)?.value;\n        }\n      });\n  }\n\n  setFile(file: any, field: Column): void {\n    this.item[field.name] = file.target.files;\n  }\n\n  resolveLists(): void {\n    this.fields\n      .filter((x) => !x.readonly && x.asyncList)\n      .forEach((field) => {\n        field.asyncList!.subscribe({\n          next: (data) => {\n            field.list = field.listDisplay\n              ? this.util.sortBy(data, field.listDisplay)\n              : this.util.sortBy(data, 'name');\n          },\n          error: (err) => {\n            console.error(err);\n          },\n        });\n      });\n  }\n\n  validateForm(): void {\n    if (this.form.valid) {\n      this.activeModal.close();\n    }\n  }\n\n  compareFn(c1: any, c2: any): boolean {\n    return c1 && c2 ? c1.id === c2.id : c1 === c2;\n  }\n}\n","<form\n  [formGroup]=\"form\"\n  (keydown.enter)=\"$event.preventDefault()\"\n  (ngSubmit)=\"validateForm()\"\n  novalidate\n>\n  <div class=\"modal-header\">\n    <h5 class=\"modal-title\" *ngIf=\"!item.id\">{{ \"New item\" | transloco }}</h5>\n    <h5 class=\"modal-title\" *ngIf=\"item.id\">{{ \"Edit item\" | transloco }}</h5>\n    <button\n      type=\"button\"\n      class=\"btn-close\"\n      aria-label=\"close\"\n      (click)=\"activeModal.dismiss('close button')\"\n    ></button>\n  </div>\n  <div class=\"modal-body\">\n    <ng-container *ngFor=\"let field of fields\">\n      <div class=\"form-group row\" *ngIf=\"!field.readonly\">\n        <label for=\"{{ field.name }}\" class=\"col-sm-4 col-form-label\"\n          >{{ field.title }}\n          <small *ngIf=\"!field.required\" class=\"optional-label\">{{\n            \"Optional\" | transloco\n          }}</small>\n        </label>\n        <div class=\"col-sm-8\">\n          <ng-container [ngSwitch]=\"true\">\n            <sk-custom-select\n              *ngSwitchCase=\"field.type === 'object'\"\n              [items]=\"field.list!\"\n              [displayValue]=\"field.listDisplay ?? 'name'\"\n              [multiple]=\"false\"\n              [placeholder]=\"'-Select-' | transloco\"\n              [formControlName]=\"field.name\"\n              (ngModelChange)=\"updateObject($event)\"\n              [id]=\"field.name\"\n            >\n            </sk-custom-select>\n\n            <select\n              *ngSwitchCase=\"field.type === 'boolean'\"\n              [required]=\"field.required ?? false\"\n              [formControlName]=\"field.name\"\n              (ngModelChange)=\"updateObject($event)\"\n              class=\"custom-select form-control\"\n              [name]=\"field.name\"\n              [id]=\"field.name\"\n            >\n              <option [value]=\"undefined\" [disabled]=\"true\">\n                {{ \"-Select-\" | transloco }}\n              </option>\n              <option [ngValue]=\"true\">{{ \"Yes\" | transloco }}</option>\n              <option [ngValue]=\"false\">{{ \"No\" | transloco }}</option>\n            </select>\n            <textarea\n              *ngSwitchCase=\"field.type === 'text'\"\n              [required]=\"field.required ?? false\"\n              class=\"form-control\"\n              [id]=\"field.name\"\n              [name]=\"field.name\"\n              [cols]=\"2\"\n              [readOnly]=\"field.readonly\"\n              [formControlName]=\"field.name\"\n              (ngModelChange)=\"updateObject($event)\"\n            ></textarea>\n            <sk-custom-datepicker\n              [formControlName]=\"field.name\"\n              [required]=\"field.required ?? false\"\n              [id]=\"field.name\"\n              (ngModelChange)=\"updateObject($event)\"\n              *ngSwitchCase=\"field.type === 'datetime' || field.type === 'date'\"\n            ></sk-custom-datepicker>\n            <input\n              *ngSwitchCase=\"field.type === 'money' || field.type === 'number'\"\n              [formControlName]=\"field.name\"\n              (ngModelChange)=\"updateObject($event)\"\n              [required]=\"field.required ?? false\"\n              type=\"number\"\n              class=\"form-control\"\n              [readOnly]=\"field.readonly\"\n              [ngClass]=\"{ 'form-control-plaintext': field.readonly }\"\n              [id]=\"field.name\"\n              [name]=\"field.name\"\n            />\n            <input\n              *ngSwitchCase=\"field.type === 'file'\"\n              [required]=\"field.required\"\n              (ngModelChange)=\"updateObject($event)\"\n              type=\"file\"\n              class=\"form-control\"\n              accept=\".pdf, .jpg, .jpeg, .png\"\n              (change)=\"setFile($event, field)\"\n            />\n            <sk-custom-select\n              *ngSwitchCase=\"field.type === 'array'\"\n              [items]=\"field.list!\"\n              [displayValue]=\"field!.objectText!\"\n              [multiple]=\"true\"\n              [placeholder]=\"'Select value' | transloco\"\n              [formControlName]=\"field.name\"\n              (ngModelChange)=\"updateObject($event)\"\n              [id]=\"field.name\"\n            >\n            </sk-custom-select>\n            <input\n              *ngSwitchDefault\n              [formControlName]=\"field.name\"\n              (ngModelChange)=\"updateObject($event)\"\n              [required]=\"field.required ?? false\"\n              type=\"text\"\n              class=\"form-control\"\n              [readOnly]=\"field.readonly\"\n              [ngClass]=\"{ 'form-control-plaintext': field.readonly }\"\n              [id]=\"field.name\"\n              [name]=\"field.name\"\n            />\n          </ng-container>\n          <ng-container *ngIf=\"form.get(field.name)!.invalid\">\n            <div\n              class=\"invalid-feedback\"\n              *ngIf=\"\n                (form.get(field.name)?.errors)!['pattern'] &&\n                field.type === 'email'\n              \"\n            >\n              {{ \"email message error\" | transloco }}\n            </div>\n            <div\n              class=\"invalid-feedback\"\n              *ngIf=\"\n                (form.get(field.name)?.errors)!['pattern'] &&\n                field.type === 'home-phone'\n              \"\n            >\n              {{ \"home phone message error\" | transloco }}\n            </div>\n            <div\n              class=\"invalid-feedback\"\n              *ngIf=\"\n                (form.get(field.name)?.errors)!['pattern'] &&\n                field.type === 'mobile-phone'\n              \"\n            >\n              {{ \"mobile phone message error\" | transloco }}\n            </div>\n            <div\n              class=\"invalid-feedback\"\n              *ngIf=\"(form.get(field.name)?.errors)!['required']\"\n            >\n              {{ \"required message error\" | transloco }}\n            </div>\n          </ng-container>\n        </div>\n      </div>\n    </ng-container>\n  </div>\n  <div class=\"modal-footer\">\n    <button ngbAutofocus type=\"submit\" class=\"btn btn-primary\">\n      <i class=\"bi bi-save\" aria-hidden=\"true\"></i>\n      {{ \"Save\" | transloco }}\n    </button>\n  </div>\n</form>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { TranslocoModule } from '@ngneat/transloco';\n\nimport { CustomDatePickerModule } from '../custom-datepicker/custom-datepicker.module';\nimport { CustomSelectModule } from '../custom-select/custom-select.module';\nimport { CustomFormComponent } from './custom-form.component';\n\n\n\n@NgModule({\n  imports: [\n    CommonModule,\n    FormsModule,\n    ReactiveFormsModule,\n    TranslocoModule,\n    CustomSelectModule,\n    CustomDatePickerModule,\n  ],\n  declarations: [CustomFormComponent],\n  exports: [CustomFormComponent],\n})\nexport class CustomFormModule {}\n","import { Component } from '@angular/core';\nimport { AnimationOptions } from 'ngx-lottie';\n\n@Component({\n  selector: 'sk-loading-modal',\n  templateUrl: './loading-modal.component.html',\n  styleUrls: ['./loading-modal.component.sass'],\n})\nexport class LoadingModalComponent {\n  options: AnimationOptions = {\n    path: '/assets/animations/loading-books.json',\n  };\n}\n","<div class=\"row d-flex justify-content-center animated fadeIn\">\n  <div class=\"text-center\">\n    <ng-lottie height=\"250px\" [options]=\"options\"></ng-lottie>\n  </div>\n</div>\n","import { NgModule } from '@angular/core';\nimport { LottieModule } from 'ngx-lottie';\n\nimport { LoadingModalComponent } from './loading-modal.component';\n\n@NgModule({\n  imports: [LottieModule],\n  declarations: [LoadingModalComponent],\n  exports: [LoadingModalComponent],\n})\nexport class LoadingModalModule {}\n","import { Component, EventEmitter, Input, OnChanges, OnInit, Output, SimpleChange, SimpleChanges } from '@angular/core';\n\nimport { UtilService } from '../../util.service';\n\n@Component({\n  selector: 'sk-paginator',\n  templateUrl: './paginator.component.html',\n  styleUrls: ['./paginator.component.sass'],\n})\nexport class PaginatorComponent implements OnInit, OnChanges {\n  @Input() itemsCount!: number;\n  @Input() pageSize!: number;\n  @Output() paginate = new EventEmitter();\n\n  pager: any = {};\n  sizes!: number[];\n  private count!: number;\n  constructor(private util: UtilService) {}\n\n  ngOnInit(): void {\n    this.sizes = [5, 10, 15, 20];\n    this.setPage(1);\n  }\n\n  ngOnChanges(changes: SimpleChanges): void {\n    const count: SimpleChange = changes['itemsCount'];\n    this.count = count.currentValue;\n    this.setPage(1);\n  }\n\n  setPage(page: number): void {\n    if (page < 1 || page > this.pager.totalPages) {\n      return;\n    }\n\n    this.pager = this.util.paginate(this.count, page, this.pageSize);\n\n    this.paginate.emit(this.pager);\n  }\n}\n","<nav class=\"d-flex align-items-center me-2\">\n  <ul *ngIf=\"pager.pages && pager.pages.length\" class=\"pagination\">\n    <li\n      class=\"page-item\"\n      ngbTooltip=\"Inicio\"\n      [ngClass]=\"{ disabled: pager.currentPage === 1 }\"\n    >\n      <a class=\"page-link\" (click)=\"setPage(1)\">\n        <i class=\"bi bi-skip-backward\" aria-hidden=\"true\"></i>\n      </a>\n    </li>\n    <li\n      class=\"page-item\"\n      ngbTooltip=\"Anterior\"\n      [ngClass]=\"{ disabled: pager.currentPage === 1 }\"\n    >\n      <a class=\"page-link\" (click)=\"setPage(pager.currentPage - 1)\">\n        <i class=\"bi bi-backspace\" aria-hidden=\"true\"></i>\n      </a>\n    </li>\n    <li\n      class=\"page-item\"\n      *ngFor=\"let page of pager.pages\"\n      [ngClass]=\"{ active: pager.currentPage === page }\"\n    >\n      <a class=\"page-link\" (click)=\"setPage(page)\">\n        {{ page }}\n      </a>\n    </li>\n    <li\n      class=\"page-item\"\n      ngbTooltip=\"Siguiente\"\n      [ngClass]=\"{ disabled: pager.currentPage === pager.totalPages - 1 }\"\n    >\n      <a class=\"page-link\" (click)=\"setPage(pager.currentPage + 1)\">\n        <i class=\"bi bi-backspace-reverse\" aria-hidden=\"true\"></i>\n      </a>\n    </li>\n    <li\n      class=\"page-item\"\n      ngbTooltip=\"Final\"\n      [ngClass]=\"{ disabled: pager.currentPage === pager.totalPages - 1 }\"\n    >\n      <a class=\"page-link\" (click)=\"setPage(pager.totalPages - 1)\">\n        <i class=\"bi bi-skip-forward\" aria-hidden=\"true\"></i>\n      </a>\n    </li>\n  </ul>\n</nav>\n<span class=\"d-flex align-items-center\">\n  <select\n    class=\"form-control custom-select\"\n    name=\"page-size\"\n    [(ngModel)]=\"pageSize\"\n    (ngModelChange)=\"setPage(pager.currentPage)\"\n  >\n    <option *ngFor=\"let val of sizes\" [value]=\"val\">{{ val }}</option>\n  </select>\n  {{ \"items of\" | transloco: { value: itemsCount } }}\n</span>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { TranslocoModule } from '@ngneat/transloco';\n\nimport { PaginatorComponent } from './paginator.component';\n\n@NgModule({\n  imports: [CommonModule, TranslocoModule, FormsModule],\n  declarations: [PaginatorComponent],\n  exports: [PaginatorComponent],\n})\nexport class PaginatorModule {}\n","import * as pdfMake from 'pdfmake/build/pdfmake.js';\n\nimport { Column } from './table-options';\n\nexport const generatePDF = (\n  columns: Column[],\n  data: any[],\n  name?: string\n): void => {\n  const headers: any[] = [];\n  const dataRows: any[] = [];\n\n  const date = new Date();\n\n  columns.forEach((col) => {\n    if (!col.hidden) {\n      const header: any = {};\n      header.text = col.title;\n      header.style = 'tableHeader';\n      headers.push(header);\n    }\n  });\n\n  dataRows.push(headers);\n  data.forEach((item) => {\n    const currentRow: any[] = [];\n    headers.forEach((column) => {\n      currentRow.push(item[column.text]);\n    });\n    dataRows.push(currentRow);\n  });\n\n  const docDefinition: any = {\n    pageOrientation: 'landscape',\n    header: {\n      columns: [\n        { text: 'ProCompliance', margin: [20, 20], style: 'header' },\n        {\n          text: `Reporte de ${name}`,\n          margin: [20, 20],\n          style: 'header',\n          alignment: 'center',\n        },\n        {\n          text: `Fecha de impresión: ${date.toLocaleString()}`,\n          margin: [20, 20],\n          alignment: 'right',\n        },\n      ],\n    },\n    pageMargins: [40, 60, 40, 60],\n    content: [{ table: { headerRows: 1, body: dataRows } }],\n    styles: {\n      header: { fontSize: 18, bold: true },\n      tableHeader: { bold: true, fillColor: '#287FB9', color: '#fff' },\n      anotherStyle: { fontSize: 13, italics: true, alignment: 'right' },\n    },\n    footer: (currentPage: number, pageCount: number) => ({\n      text: `Pág. ${currentPage.toString()} de ${pageCount}`,\n      alignment: 'right',\n      margin: [20, 20],\n    }),\n  };\n\n  pdfMake.createPdf(docDefinition).open();\n};\n","/* eslint-disable @angular-eslint/no-conflicting-lifecycle */\nimport { DatePipe } from '@angular/common';\nimport {\n  AfterViewChecked,\n  ChangeDetectorRef,\n  Component,\n  DoCheck,\n  EventEmitter,\n  Input,\n  OnChanges,\n  Output,\n  SimpleChanges,\n  ViewEncapsulation,\n} from '@angular/core';\nimport { NgbModal } from '@ng-bootstrap/ng-bootstrap';\nimport { TranslocoService } from '@ngneat/transloco';\nimport { saveAs } from 'file-saver';\nimport Swal from 'sweetalert2';\nimport * as XLSX from 'xlsx';\n\nimport { UtilService } from '../../util.service';\nimport { CustomFormComponent } from '../custom-form/custom-form.component';\nimport * as pdf from './pdf';\nimport { Column, TableOptions } from './table-options';\n\n// eslint-disable-next-line @angular-eslint/no-conflicting-lifecycle\n@Component({\n  selector: 'sk-custom-table',\n  templateUrl: './custom-table.component.html',\n  styleUrls: ['./custom-table.component.sass'],\n  encapsulation: ViewEncapsulation.None,\n})\nexport class CustomTableComponent\n  implements OnChanges, DoCheck, AfterViewChecked\n{\n  @Input() options!: TableOptions;\n  @Input() items!: any[] | null;\n  @Input() selectedItems: any[] = [];\n  @Input() isBordered: boolean = false;\n  @Input() isHover: boolean = false;\n  @Output() editItem = new EventEmitter();\n  @Output() removeItem = new EventEmitter();\n  @Output() addItem = new EventEmitter();\n  @Output() customAction = new EventEmitter();\n  @Output() customCreate = new EventEmitter();\n  @Output() updateSelection = new EventEmitter();\n  sorting = false;\n  allSelected: boolean = false;\n  newItem: any = {};\n  selectedItem: any = {};\n  sortColumn: string | undefined;\n  sortDesc = true;\n  itemsCount!: number;\n  originalCount!: number;\n  pagedItems: Array<any> = [];\n  currentPage: any = {};\n  searchText = '';\n  filteredItems!: Array<any>;\n  searchColumns: Array<string> = [];\n  pageSizes: Array<number> = [5, 10, 15, 20, 25];\n  idColumn: Column = {\n    name: 'id',\n    title: 'ID',\n  };\n  filterValues: { [key: string]: string } = {};\n  visibleColumns!: number;\n  booleanValues: any = [\n    { value: true, display: 'Sí' },\n    { value: false, display: 'No' },\n  ];\n  constructor(\n    private util: UtilService,\n    private cdr: ChangeDetectorRef,\n    private modalService: NgbModal,\n    private datePipe: DatePipe,\n    private translate: TranslocoService\n  ) {}\n\n  ngOnChanges(model: SimpleChanges): void {\n    if (model['items']) {\n      if (this.items) {\n        this.initTable();\n        if (this.options.sortColumn) {\n          this.filteredItems = this.util.sortBy(\n            this.items,\n            this.options.sortColumn,\n            this.options.sortDesc\n          );\n        }\n        // this.filterItems();\n      }\n    }\n  }\n\n  ngDoCheck(): void {\n    if (this.items) {\n      if (!this.options.pageable) {\n        this.filteredItems = this.items;\n        this.pagedItems = this.filteredItems;\n        this.initTable();\n      } else if (!this.filteredItems) {\n        this.filteredItems = this.items;\n        this.filterItems();\n      } else {\n        if (this.originalCount !== this.items.length) {\n          this.initTable();\n          this.itemsCount = this.filteredItems.length;\n          this.originalCount = this.items.length;\n        }\n      }\n    }\n  }\n\n  initTable(): void {\n    if (this.options.type === 'select') {\n      this.setSelectedItems();\n    }\n    this.items?.map((x, i) => (x.currentIndex = i));\n    this.visibleColumns = 0;\n    this.options.columns.forEach((column) => {\n      if (column.type === 'object') {\n        column.objectText = `text${column.name}`;\n        this.items?.forEach((element) => {\n          this.getObjectText(element, column);\n        });\n      }\n      if (column.filterable) {\n        this.searchColumns.push(column.name);\n      }\n      if (this.options.showID) {\n        this.options.columns.push(this.idColumn);\n      }\n      if (this.options.lookup) {\n        column.lookupValues = this.getLookup(column);\n      }\n\n      if (!column.hidden) {\n        this.visibleColumns++;\n      }\n    });\n    this.changeFilter();\n  }\n\n  setSelectedItems(): void {\n    if (this.selectedItems) {\n      this.items!.forEach((item) => {\n        if (this.util.filterById(this.selectedItems, item.id)) {\n          item.selected = true;\n          if (!this.util.filterById(this.selectedItems, item.id)) {\n            this.selectedItems.push(item);\n          }\n        } else {\n          item.selected = false;\n        }\n      });\n    } else {\n      this.selectedItems = [];\n    }\n  }\n\n  toggleSelection(item: any): void {\n    item.selected = !item.selected;\n    if (item.selected) {\n      if (this.options.type === 'single-select') {\n        this.selectedItems = [];\n        this.cleanSelected(item.id);\n      }\n      this.selectedItems.push(item);\n    } else {\n      this.selectedItems = this.util.removeById(this.selectedItems, item.id);\n    }\n    this.pageItems();\n    this.updateSelection.emit(this.selectedItems);\n  }\n\n  cleanSelected(id: string): void {\n    this.filteredItems.forEach((item) => {\n      if (item.id !== id) {\n        item.selected = false;\n      }\n    });\n  }\n\n  toggleSelectAll(isToggle?: boolean): void {\n    if (isToggle) {\n      this.selectedItems = [];\n      this.allSelected = !this.allSelected;\n      if (this.allSelected) {\n        this.filteredItems.forEach((item) => {\n          item.selected = true;\n          this.selectedItems.push(item);\n        });\n      } else {\n        this.filteredItems.forEach((item) => {\n          item.selected = false;\n        });\n      }\n    } else {\n      this.allSelected = false;\n    }\n    this.updateSelection.emit(this.selectedItems);\n  }\n\n  openModal(isNew = true): void {\n    if (this.customCreate.observers.length) {\n      this.customCreate.emit();\n      return;\n    }\n    const modalRef = this.modalService.open(CustomFormComponent, {\n      size: this.options.modalSize,\n    });\n    modalRef.result.then(\n      (result) => {\n        if (!isNew) {\n          this.updateItem();\n        } else {\n          this.createItem();\n        }\n      },\n      (dismiss) => {\n        this.cancelSelect();\n      }\n    );\n    modalRef.componentInstance.fields = this.options.columns;\n    if (!isNew) {\n      modalRef.componentInstance.item = this.selectedItem;\n    } else {\n      modalRef.componentInstance.item = this.newItem;\n    }\n  }\n\n  getObjectText(item: any, column: Column): void {\n    if (!column.objectColumn) {\n      column.objectColumn = `${column.name}.name`;\n    }\n    item[`text${column.name}`] = this.util.getProperty(\n      item,\n      column.objectColumn\n    );\n  }\n\n  getLookup(col: Column): Array<any> {\n    const values: Array<any> = [];\n    if (col.type === 'object') {\n      this.items!.forEach((element) => {\n        if (\n          !values.includes(this.util.getProperty(element, col.objectColumn!)) &&\n          this.util.getProperty(element, col.objectColumn!)\n        ) {\n          values.push(this.util.getProperty(element, col.objectColumn!));\n        }\n      });\n    } else {\n      this.items!.forEach((element) => {\n        if (!values.includes(element[col.name])) {\n          values.push(element[col.name]);\n        }\n      });\n    }\n    values.sort();\n    return values;\n  }\n\n  selectItem(item: any): void {\n    if (this.customAction.observers.length) {\n      this.customAction.emit(item);\n      return;\n    }\n    if (this.options.type === 'datatable' && this.editItem.observers.length) {\n      if (this.options.hasId) {\n        this.selectedItem = Object.assign({}, this.selectedItem, item);\n      } else {\n        this.selectedItem = item;\n      }\n\n      if (this.options.addMethod === 'modal') {\n        this.openModal(false);\n      }\n    }\n  }\n\n  generatePDF(): void {\n    pdf.generatePDF(\n      this.options.columns,\n      this.itemsToReports(true),\n      this.options.title\n    );\n  }\n\n  changeFilter(): void {\n    this.filterItems();\n    for (const key in this.filterValues) {\n      if (this.filterValues.hasOwnProperty(key)) {\n        const col = this.options.columns.find((item) => item.name === key);\n        const element = this.filterValues[key];\n        if (element) {\n          if (col?.type === 'object') {\n            this.filteredItems = this.filteredItems.filter(\n              (item) =>\n                this.util.getProperty(item, col.objectColumn!) === element\n            );\n          } else {\n            this.filteredItems = this.filteredItems.filter(\n              (item) => item[key] === element\n            );\n          }\n        }\n        this.itemsCount = this.filteredItems.length;\n      }\n    }\n    this.sortColumn = '';\n    this.pageItems();\n  }\n\n  cancelSelect(): void {\n    this.selectedItem = {};\n  }\n\n  ngAfterViewChecked(): void {\n    this.cdr.detectChanges();\n  }\n\n  sortByColumn(column: Column): void {\n    this.sorting = true;\n    if (column.name === this.sortColumn) {\n      this.sortDesc = !this.sortDesc;\n    }\n\n    if (column.type === 'object') {\n      this.filteredItems = this.util.sortBy(\n        this.filteredItems,\n        column.objectText!,\n        this.sortDesc\n      );\n    } else {\n      this.filteredItems = this.util.sortBy(\n        this.filteredItems,\n        column.name,\n        this.sortDesc\n      );\n    }\n\n    this.sortColumn = column.name;\n\n    this.pageItems();\n  }\n\n  getDetailsURL(id: string): string | undefined {\n    const URL = this.options?.detailsURL?.slice();\n    URL?.push(id);\n    return URL?.join('/');\n  }\n\n  setPage(pager: any): void {\n    this.currentPage.startIndex = pager.startIndex;\n    this.currentPage.endIndex = pager.endIndex;\n    if (this.options.pageable) {\n      this.pageItems();\n    } else {\n      this.pagedItems = this.filteredItems;\n    }\n  }\n\n  pageItems(): void {\n    this.pagedItems = this.filteredItems.slice(\n      this.currentPage.startIndex,\n      this.currentPage.endIndex + 1\n    );\n  }\n\n  filterItems(): void {\n    this.sorting = false;\n    this.filteredItems = this.util.searchFilter(\n      this.items!,\n      this.searchColumns,\n      this.searchText\n    );\n    if (this.options.pageable) {\n      this.itemsCount = this.filteredItems.length;\n      this.pageItems();\n    } else {\n      this.pagedItems = this.filteredItems;\n    }\n    this.toggleSelectAll();\n  }\n\n  createItem(): void {\n    this.addItem.emit(this.newItem);\n    this.newItem = {};\n  }\n\n  attachNewItem(item: any): void {\n    this.options.columns.forEach((column) => {\n      if (column.type === 'object') {\n        item[column.name] = this.util.filterById(\n          column.list!,\n          item[column.objectID!]\n        );\n        this.getObjectText(item, column);\n      }\n    });\n    this.items!.push(item);\n  }\n\n  updateItem(): void {\n    if (this.options.hasId) {\n      this.pagedItems = this.util.updateItem(\n        this.selectedItem,\n        this.pagedItems\n      );\n      this.items = this.util.updateItem(this.selectedItem, this.items!);\n      this.filteredItems = this.util.updateItem(\n        this.selectedItem,\n        this.filteredItems\n      );\n    }\n\n    // item = this.selectedItem;\n    this.editItem.emit(this.selectedItem);\n    this.selectedItem = {};\n  }\n\n  deleteItem(item: any): void {\n    Swal.fire<boolean>({\n      title: this.translate.translate('Wanna delete item?'),\n      text: this.translate.translate('This cant be undone'),\n      icon: 'question',\n      showCancelButton: true,\n      confirmButtonColor: '#3182ce',\n      cancelButtonColor: '#718096',\n      cancelButtonText: this.translate.translate('Cancel'),\n      confirmButtonText: this.translate.translate('Confirm delete'),\n    }).then((result) => {\n      if (result.isConfirmed) {\n        if (this.options.hasId) {\n          this.items = this.util.removeById(this.items!, item.id);\n          this.removeItem.emit(item.id);\n        } else {\n          this.items = this.items!.filter(\n            (x) => x.currentIndex !== item.currentIndex\n          );\n          this.removeItem.emit(item);\n        }\n        this.filterItems();\n      }\n    });\n  }\n\n  exportCSV(): void {\n    const ws: XLSX.WorkSheet = XLSX.utils.json_to_sheet(this.itemsToReports());\n    const wb: XLSX.WorkBook = XLSX.utils.book_new();\n    XLSX.utils.book_append_sheet(wb, ws, 'Sheet1');\n\n    let filename: string;\n    const date = new Date();\n\n    if (this.options.title) {\n      filename = `${this.options.title} - ${date.toLocaleString()}.xlsx`;\n    } else {\n      filename = `Export - ${date.toLocaleString()}.xlsx`;\n    }\n\n    const options: string = XLSX.write(wb, {\n      bookType: 'xlsx',\n      type: 'binary',\n    });\n    saveAs(new Blob([this.s2ab(options)]), filename);\n  }\n\n  s2ab(s: string): ArrayBuffer {\n    const buf: ArrayBuffer = new ArrayBuffer(s.length);\n    const view: Uint8Array = new Uint8Array(buf);\n    for (let i = 0; i !== s.length; ++i) {\n      // eslint-disable-next-line no-bitwise\n      view[i] = s.charCodeAt(i) & 0xff;\n    }\n    return buf;\n  }\n\n  itemsToReports(visible?: boolean): any[] {\n    const items: any[] = [];\n    this.filteredItems.forEach((item) => {\n      const object: { [key: string]: any } = {};\n      this.options.columns.forEach((column) => {\n        if (!column.hidden || !visible) {\n          if (column.type === 'object') {\n            object[column.title] = this.util.getProperty(\n              item,\n              column.objectColumn!\n            );\n          } else if (column.type === 'date') {\n            object[column.title] = this.datePipe.transform(\n              this.util.getProperty(item, column.name),\n              'dd/MM/yyyy'\n            );\n          } else {\n            object[column.title] = this.util.getProperty(item, column.name);\n          }\n        }\n      });\n      items.push(object);\n    });\n    return items;\n  }\n}\n","<ng-template #loading>\n  <sk-loading-modal></sk-loading-modal>\n</ng-template>\n<ng-container *ngIf=\"items; else loading\">\n  <ng-container *ngIf=\"options.permissions.read; else restricted\">\n    <div class=\"row justify-content-between top-bar\">\n      <div class=\"col-md-12\">\n        <h4 *ngIf=\"options.showTitle && options.title\">{{ options.title }}</h4>\n      </div>\n      <div class=\"col-lg-6 col-md-8\">\n        <div *ngIf=\"options.searchable\" class=\"form-group search-form\">\n          <input\n            type=\"text\"\n            class=\"form-control\"\n            name=\"filter\"\n            id=\"filter\"\n            [(ngModel)]=\"searchText\"\n            (ngModelChange)=\"filterItems()\"\n            [placeholder]=\"'Search' | transloco\"\n          />\n        </div>\n      </div>\n      <div class=\"col-md-6\" *ngIf=\"options.type === 'select'\">\n        <span class=\"clear-text float-end\"\n          >{{ selectedItems.length }} of {{ filteredItems.length }}</span\n        >\n      </div>\n      <div\n        id=\"exports-buttons\"\n        class=\"col-md-6 d-flex justify-content-end pull-right\"\n      >\n        <button\n          *ngIf=\"options.exportToPDF\"\n          type=\"button\"\n          class=\"btn btn-outline-danger\"\n          (click)=\"generatePDF()\"\n          ngbTooltip=\"{{ 'Export as PDF' | transloco }}\"\n        >\n          <i class=\"bi bi-file-pdf\" aria-hidden=\"true\"></i>\n          {{ \"Export as PDF\" | transloco }}\n        </button>\n        <button\n          *ngIf=\"options.exportToCSV\"\n          type=\"button\"\n          class=\"btn btn-outline-success\"\n          (click)=\"exportCSV()\"\n          ngbTooltip=\"{{ 'Export as excel' | transloco }}\"\n        >\n          <i class=\"bi bi-file-excel\" aria-hidden=\"true\"></i>\n          {{ \"Export as excel\" | transloco }}\n        </button>\n      </div>\n    </div>\n    <div class=\"table-responsive mt-3\">\n      <table\n        class=\"sk-custom-table table\"\n        [class.table-bordered]=\"isBordered\"\n        [class.table-hover]=\"isHover\"\n        [ngClass]=\"options.style ?? ''\"\n        *ngIf=\"pagedItems\"\n      >\n        <thead>\n          <tr>\n            <ng-container *ngFor=\"let header of options.columns\">\n              <th\n                scope=\"col\"\n                class=\"text-nowrap\"\n                *ngIf=\"!header.hidden\"\n                (click)=\"sortByColumn(header)\"\n                [ngClass]=\"{ 'text-center': header.type === 'checkbox' }\"\n              >\n                {{ header.title }}\n                <ng-container>\n                  <span *ngIf=\"sortColumn !== header.name\">\n                    <i class=\"bi bi-filter ms-1\" aria-hidden=\"true\"></i>\n                  </span>\n                  <span *ngIf=\"sortColumn === header.name && sortDesc\">\n                    <i class=\"bi bi-sort-down ms-1\" aria-hidden=\"true\"></i>\n                  </span>\n                  <span *ngIf=\"sortColumn === header.name && !sortDesc\">\n                    <i class=\"bi bi-sort-up ms-1\" aria-hidden=\"true\"></i>\n                  </span>\n                </ng-container>\n              </th>\n            </ng-container>\n            <th\n              scope=\"col\"\n              *ngIf=\"\n                editItem.observers.length ||\n                removeItem.observers.length ||\n                customAction.observers.length ||\n                options.detailsURL ||\n                options.type === 'select' ||\n                options.type === 'single-select'\n              \"\n              class=\"text-center actions-header text-nowrap\"\n            >\n              <ng-container *ngIf=\"options.type === 'select'\">\n                <span\n                  class=\"action-button\"\n                  placement=\"left\"\n                  [ngbTooltip]=\"'Select all' | transloco\"\n                  [attr.arial-label]=\"'Select all' | transloco\"\n                  *ngIf=\"options.type === 'select'\"\n                  (click)=\"toggleSelectAll(true)\"\n                >\n                  <i\n                    *ngIf=\"!allSelected\"\n                    class=\"bi medium-text bi-square text-muted\"\n                    aria-hidden=\"true\"\n                  ></i>\n                  <i\n                    *ngIf=\"allSelected\"\n                    class=\"bi bi-check-square-fill medium-text text-primary\"\n                    aria-hidden=\"true\"\n                  ></i>\n                </span>\n              </ng-container>\n            </th>\n          </tr>\n        </thead>\n        <tbody>\n          <tr *ngIf=\"options.lookup\" id=\"lookup-row\">\n            <ng-container *ngFor=\"let col of options.columns\">\n              <td *ngIf=\"!col.hidden\">\n                <select\n                  [disabled]=\"!col.lookup\"\n                  [ngClass]=\"{ 'font-weight-bold': filterValues[col.name] }\"\n                  class=\"custom-select form-control form-control-sm\"\n                  [(ngModel)]=\"filterValues[col.name]\"\n                  (change)=\"changeFilter()\"\n                >\n                  <option [ngValue]=\"undefined\" selected>---Todos---</option>\n                  <ng-container *ngIf=\"col.lookup\">\n                    <option\n                      *ngFor=\"let value of col.lookupValues\"\n                      class=\"font-weight-bold\"\n                      [ngValue]=\"value\"\n                    >\n                      {{ value }}\n                    </option>\n                  </ng-container>\n                </select>\n              </td>\n            </ng-container>\n            <td\n              *ngIf=\"\n                editItem.observers.length ||\n                removeItem.observers.length ||\n                customAction.observers.length ||\n                options.detailsURL ||\n                options.type === 'select' ||\n                options.type === 'single-select'\n              \"\n            ></td>\n          </tr>\n          <tr *ngIf=\"!pagedItems.length\">\n            <td class=\"text-center\" [colSpan]=\"visibleColumns + 1\">\n              <img src=\"assets/img/no-data.svg\" alt=\"\" style=\"height: 140px\" />\n              <br />\n              <strong>Sin elementos disponibles</strong>\n            </td>\n          </tr>\n          <ng-container *ngFor=\"let item of pagedItems\">\n            <tr\n              *ngIf=\"\n                item.id !== selectedItem.id || options.addMethod !== 'inline'\n              \"\n              (dblclick)=\"selectItem(item)\"\n            >\n              <ng-container *ngFor=\"let col of options.columns\">\n                <td\n                  [ngClass]=\"{ 'text-nowrap': col.type !== 'array' }\"\n                  [class.text-nowrap]=\"\n                    col.type !== 'array' && col.type !== 'text'\n                  \"\n                  *ngIf=\"!col.hidden\"\n                >\n                  <ng-container [ngSwitch]=\"col.type\">\n                    <span *ngSwitchCase=\"'date'\">\n                      {{ item | column: col.name | date: \"d/MM/yyyy\":\"+0600\" }}\n                    </span>\n                    <span *ngSwitchCase=\"'datetime'\">\n                      {{ item | column: col.name | date: \"d/MM/yyyy, h:mm a\" }}\n                    </span>\n                    <span *ngSwitchCase=\"'decimal'\">\n                      {{ item | column: col.name | number: \"1.3-3\" }}\n                    </span>\n                    <span *ngSwitchCase=\"'email'\">\n                      <a\n                        href=\"mailto:{{ item | column: col.name }}\"\n                        target=\"_blank\"\n                        >{{ item | column: col.name }}</a\n                      >\n                    </span>\n                    <span *ngSwitchCase=\"'number'\">\n                      {{ item | column: col.name | number: \"1.2-2\" }}\n                    </span>\n                    <span *ngSwitchCase=\"'percent'\">\n                      {{ item | column: col.name | number: \"1.2-2\" }} %\n                    </span>\n                    <span *ngSwitchCase=\"'money'\">\n                      {{ item | column: col.name | currency: \"PAB\" }}\n                    </span>\n                    <span *ngSwitchCase=\"'boolean'\">\n                      <span\n                        [innerHTML]=\"item | column: col.name | boolean\"\n                      ></span>\n                    </span>\n                    <span *ngSwitchCase=\"'checkbox'\">\n                      <span\n                        [innerHTML]=\"item | column: col.name | boolean\"\n                      ></span>\n                    </span>\n                    <span *ngSwitchCase=\"'object'\">\n                      {{ item | column: col?.objectText! }}\n                    </span>\n                    <span\n                      *ngSwitchCase=\"'array'\"\n                      [innerHTML]=\"item[col.name] | array: col.objectText!\"\n                    >\n                    </span>\n                    <span *ngSwitchCase=\"'count'\">\n                      {{ item[col.name].length }}\n                    </span>\n                    <span *ngSwitchCase=\"'file'\">\n                      <a\n                        [href]=\"col.fileURL + item[col.fileID!]\"\n                        [target]=\"'blank'\"\n                        >{{ item | column: col.fileName! }}</a\n                      >\n                    </span>\n                    <span *ngSwitchDefault>\n                      {{ item | column: col.name }}\n                    </span>\n                  </ng-container>\n                </td>\n              </ng-container>\n              <td\n                *ngIf=\"\n                  removeItem.observers.length ||\n                  editItem.observers.length ||\n                  customAction.observers.length ||\n                  options.detailsURL ||\n                  options.type === 'select' ||\n                  options.type === 'single-select'\n                \"\n                class=\"text-center actions-cell\"\n              >\n                <div\n                  *ngIf=\"\n                    options.type !== 'select' &&\n                    options.type !== 'single-select'\n                  \"\n                  ngbDropdown\n                  container=\"body\"\n                >\n                  <i\n                    class=\"\n                      bi bi-three-dots-vertical\n                      medium-text\n                      text-muted\n                      pointer\n                    \"\n                    aria-hidden=\"true\"\n                    [id]=\"item.id + '-menu'\"\n                    ngbDropdownToggle\n                  ></i>\n                  <div\n                    ngbDropdownMenu\n                    [attr.aria-labelledby]=\"item.id + '-menu'\"\n                  >\n                    <a\n                      ngbDropdownItem\n                      *ngIf=\"options.detailsURL && options.permissions.details\"\n                      class=\"d-flex align-items-center\"\n                      [routerLink]=\"getDetailsURL(item.id)\"\n                      [ngbTooltip]=\"'Details' | transloco\"\n                      [attr.aria-label]=\"'Details' | transloco\"\n                    >\n                      <i\n                        class=\"bi bi-search text-primary me-2\"\n                        aria-hidden=\"true\"\n                      ></i>\n                      {{ \"Open\" | transloco }}\n                    </a>\n\n                    <button\n                      ngbDropdownItem\n                      *ngIf=\"\n                        options.permissions.edit &&\n                        (editItem.observers.length ||\n                          customAction.observers.length)\n                      \"\n                      [ngbTooltip]=\"'Edit' | transloco\"\n                      [attr.aria-label]=\"'Edit' | transloco\"\n                      class=\"d-flex align-items-center\"\n                      (click)=\"selectItem(item)\"\n                    >\n                      <i\n                        class=\"bi bi-pencil-square text-success me-2\"\n                        aria-hidden=\"true\"\n                      ></i>\n                      {{ \"Edit\" | transloco }}\n                    </button>\n                    <button\n                      *ngIf=\"\n                        removeItem.observers.length &&\n                        options.permissions.delete\n                      \"\n                      ngbDropdownItem\n                      class=\"d-flex align-items-center\"\n                      (click)=\"deleteItem(item)\"\n                      [ngbTooltip]=\"'Delete' | transloco\"\n                      [attr.aria-label]=\"'Delete' | transloco\"\n                    >\n                      <i\n                        class=\"bi bi-trash text-danger me-2\"\n                        aria-hidden=\"true\"\n                      ></i>\n                      {{ \"Delete\" | transloco }}\n                    </button>\n                  </div>\n                </div>\n                <span\n                  class=\"action-button toggle-selection\"\n                  *ngIf=\"\n                    options.type === 'select' ||\n                    options.type === 'single-select'\n                  \"\n                  (click)=\"toggleSelection(item)\"\n                >\n                  <i\n                    *ngIf=\"!item.selected\"\n                    class=\"bi bi-square medium-text text-muted\"\n                    aria-hidden=\"true\"\n                  ></i>\n                  <i\n                    *ngIf=\"item.selected\"\n                    class=\"bi bi-check-square-fill medium-text text-primary\"\n                    aria-hidden=\"true\"\n                  ></i>\n                </span>\n              </td>\n            </tr>\n            <tr\n              class=\"table-info\"\n              *ngIf=\"\n                item.id === selectedItem.id && options.addMethod === 'inline'\n              \"\n            >\n              <ng-container *ngFor=\"let col of options.columns\">\n                <td\n                  *ngIf=\"!col.hidden\"\n                  [ngClass]=\"{ 'text-center': col.type === 'checkbox' }\"\n                >\n                  <ng-container *ngIf=\"!col.readonly\" [ngSwitch]=\"col.type\">\n                    <select\n                      *ngSwitchCase=\"'boolean'\"\n                      class=\"form-control custom-select\"\n                      [(ngModel)]=\"selectedItem[col.name]\"\n                      [name]=\"col.name\"\n                    >\n                      <option value=\"null\" disabled>---</option>\n                      <option\n                        *ngFor=\"let val of booleanValues\"\n                        class=\"font-weight-bold\"\n                        [ngValue]=\"val.value\"\n                      >\n                        {{ val.display }}\n                      </option>\n                    </select>\n                    <input\n                      *ngSwitchCase=\"'checkbox'\"\n                      [checked]=\"selectedItem[col.name]\"\n                      class=\"form-control\"\n                      type=\"{{ col.type }}\"\n                      (change)=\"\n                        selectedItem[col.name] = !selectedItem[col.name]\n                      \"\n                    />\n                    <input\n                      *ngSwitchDefault\n                      class=\"form-control\"\n                      type=\"{{ col.type }}\"\n                      [(ngModel)]=\"selectedItem[col.name]\"\n                      placeholder=\"{{ col.title }}\"\n                    />\n                    <select\n                      *ngSwitchCase=\"'object'\"\n                      class=\"form-control custom-select\"\n                      [(ngModel)]=\"selectedItem[col.objectID!]\"\n                      [name]=\"col.name\"\n                      [id]=\"col.name\"\n                    >\n                      <option\n                        *ngFor=\"let val of col.list\"\n                        [value]=\"val[col.listID]\"\n                      >\n                        {{ val[col.listDisplay] }}\n                      </option>\n                    </select>\n                  </ng-container>\n                  <ng-container *ngIf=\"col.readonly\" [ngSwitch]=\"col.type\">\n                    <ng-container *ngSwitchCase=\"'date'\">\n                      {{ item | column: col.name | date: \"dd/MM/yyyy\":\"+0600\" }}\n                    </ng-container>\n                    <ng-container *ngSwitchCase=\"'datetime'\">\n                      {{\n                        item\n                          | column: col.name\n                          | date: \"d/MM/yyyy, h:mm a\":\"-0600\"\n                      }}\n                    </ng-container>\n                    <ng-container *ngSwitchCase=\"'decimal'\">\n                      {{ item | column: col.name | number: \"1.3-3\" }}\n                    </ng-container>\n                    <ng-container *ngSwitchCase=\"'boolean'\">\n                      <span\n                        [innerHTML]=\"item | column: col.name | boolean\"\n                      ></span>\n                    </ng-container>\n                    <ng-container *ngSwitchCase=\"'checkbox'\">\n                      <span\n                        [innerHTML]=\"item | column: col.name | boolean\"\n                      ></span>\n                    </ng-container>\n                    <ng-container *ngSwitchCase=\"'object'\">\n                      {{ item | column: col.objectColumn! }}\n                    </ng-container>\n                    <ng-container *ngSwitchDefault>\n                      {{ item | column: col.name }}\n                    </ng-container>\n                  </ng-container>\n                </td>\n              </ng-container>\n              <td class=\"text-center actions-cell\">\n                <span\n                  class=\"action-button\"\n                  (click)=\"updateItem()\"\n                  placement=\"top\"\n                  ngbTooltip=\"Guardar Cambios\"\n                >\n                  <i class=\"bi bi-lock text-success\" aria-hidden=\"true\"></i>\n                </span>\n                <span\n                  class=\"action-button\"\n                  (click)=\"cancelSelect()\"\n                  placement=\"top\"\n                  ngbTooltip=\"Cancelar\"\n                >\n                  <i class=\"bi bi-x-lg text-danger\" aria-hidden=\"true\"></i>\n                </span>\n              </td>\n            </tr>\n          </ng-container>\n          <tr\n            *ngIf=\"\n              (editItem.observers.length || removeItem.observers.length) &&\n              options.addMethod === 'inline' &&\n              addItem.observers.length\n            \"\n          >\n            <ng-container *ngFor=\"let col of options.columns\">\n              <td *ngIf=\"!col.hidden\">\n                <ng-container *ngIf=\"!col.readonly\" [ngSwitch]=\"col.type\">\n                  <select\n                    *ngSwitchCase=\"'object'\"\n                    class=\"form-control custom-select\"\n                    [(ngModel)]=\"newItem[col.objectID!]\"\n                    [name]=\"col.name\"\n                    [id]=\"col.name\"\n                  >\n                    <option value=\"undefined\" disabled>\n                      --- Seleccionar ---\n                    </option>\n                    <option\n                      *ngFor=\"let val of col.list\"\n                      [value]=\"val[col.listID]\"\n                    >\n                      {{ val[col.listDisplay] }}\n                    </option>\n                  </select>\n                  <select\n                    *ngSwitchCase=\"'boolean'\"\n                    class=\"form-control custom-select\"\n                    [(ngModel)]=\"newItem[col.name]\"\n                    [name]=\"col.name\"\n                  >\n                    <option value=\"undefined\" disabled>---</option>\n                    <option\n                      *ngFor=\"let val of booleanValues\"\n                      class=\"font-weight-bold\"\n                      [ngValue]=\"val.value\"\n                    >\n                      {{ val.display }}\n                    </option>\n                  </select>\n                  <input\n                    *ngSwitchDefault\n                    class=\"form-control\"\n                    type=\"{{ col.type }}\"\n                    [(ngModel)]=\"newItem[col.name]\"\n                    placeholder=\"{{ col.title }}\"\n                  />\n                </ng-container>\n              </td>\n            </ng-container>\n            <td class=\"text-center\">\n              <span\n                (click)=\"createItem()\"\n                placement=\"top\"\n                ngbTooltip=\"Agregar elemento\"\n              >\n                <i\n                  class=\"bi bi-plus-square text-primary\"\n                  aria-hidden=\"true\"\n                ></i>\n              </span>\n            </td>\n          </tr>\n        </tbody>\n      </table>\n    </div>\n    <div class=\"row justify-content-between paginator\">\n      <div class=\"col-md-8 d-flex\">\n        <ng-container *ngIf=\"options.pageable\">\n          <sk-paginator\n            [pageSize]=\"options.pageSize\"\n            [itemsCount]=\"itemsCount\"\n            (paginate)=\"setPage($event)\"\n            class=\"d-flex\"\n          ></sk-paginator>\n        </ng-container>\n      </div>\n      <div class=\"col-md-4\">\n        <button\n          *ngIf=\"\n            options.addMethod === 'modal' &&\n            options.permissions.create &&\n            (addItem.observers.length || customCreate.observers.length)\n          \"\n          type=\"button\"\n          class=\"btn btn-primary float-end\"\n          (click)=\"openModal()\"\n        >\n          <i class=\"bi bi-plus-circle\"></i>\n          {{ \"New item\" | transloco }}\n        </button>\n        <a\n          *ngIf=\"options.newURL && options.permissions.create\"\n          [routerLink]=\"options.newURL\"\n          class=\"btn btn-primary float-end\"\n        >\n          <i class=\"bi bi-plus-circle\"></i>\n          {{ \"New item\" | transloco }}\n        </a>\n      </div>\n    </div>\n  </ng-container>\n  <ng-template #restricted>\n    <div\n      class=\"d-flex flex-column justify-content-center align-items-center\"\n      style=\"min-height: 75vh\"\n    >\n      <img src=\"assets/img/restricted-data.svg\" class=\"mb-3\" />\n      <h5>{{ \"Restricted data message\" | transloco }}</h5>\n    </div>\n  </ng-template>\n</ng-container>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { RouterModule } from '@angular/router';\nimport { NgbDropdownModule, NgbModalModule, NgbTooltipModule } from '@ng-bootstrap/ng-bootstrap';\nimport { TranslocoModule } from '@ngneat/transloco';\n\nimport { PipesModule } from '../../pipes/pipes.module';\nimport { CustomFormModule } from '../custom-form/custom-form.module';\nimport { LoadingModalModule } from '../loading-modal/loading-modal.module';\nimport { PaginatorModule } from '../paginator/paginator.module';\nimport { CustomTableComponent } from './custom-table.component';\n\n@NgModule({\n  imports: [\n    CommonModule,\n    FormsModule,\n    RouterModule,\n    LoadingModalModule,\n    TranslocoModule,\n    NgbTooltipModule,\n    NgbDropdownModule,\n    NgbModalModule,\n    CustomFormModule,\n    PipesModule,\n    PaginatorModule,\n  ],\n  declarations: [CustomTableComponent],\n  exports: [CustomTableComponent],\n})\nexport class CustomTableModule {}\n","import { Component, forwardRef, Input } from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { NgbDateParserFormatter, NgbDateStruct } from '@ng-bootstrap/ng-bootstrap';\n\n@Component({\n  selector: 'sk-floating-datepicker',\n  templateUrl: './floating-datepicker.component.html',\n  styleUrls: ['./floating-datepicker.component.sass'],\n  providers: [\n    {\n      provide: NG_VALUE_ACCESSOR,\n      useExisting: forwardRef(() => FloatingDatepickerComponent),\n      multi: true,\n    },\n  ],\n})\nexport class FloatingDatepickerComponent implements ControlValueAccessor {\n  @Input() label!: string;\n  @Input() id!: string;\n\n  @Input() maxDate: NgbDateStruct = {\n    year: new Date().getFullYear() - 5,\n    month: 1,\n    day: 1,\n  };\n  @Input() minDate: NgbDateStruct = {\n    year: new Date().getFullYear(),\n    month: 12,\n    day: 31,\n  };\n  @Input() required: boolean = false;\n  current!: NgbDateStruct | null;\n  disabled: boolean = false;\n  constructor(private formatter: NgbDateParserFormatter) {}\n\n  get value(): Date {\n    return new Date(this.formatter.format(this.current));\n  }\n\n  onChange = (date: any): void => {};\n\n  change(): void {\n    this.onChange(this.value);\n  }\n\n  onTouched = (): void => {};\n\n  writeValue(date: Date): void {\n    if (date) {\n      this.current = this.formatter.parse(date.toString());\n      this.onChange(this.value);\n    }\n  }\n\n  registerOnChange(fn: () => void): void {\n    this.onChange = fn;\n  }\n\n  registerOnTouched(fn: () => void): void {\n    this.onTouched = fn;\n  }\n}\n","<div class=\"form-label-group\">\n  <input\n    [required]=\"required\"\n    class=\"form-control\"\n    [(ngModel)]=\"current\"\n    [minDate]=\"minDate\"\n    [maxDate]=\"maxDate\"\n    (ngModelChange)=\"change()\"\n    placeholder=\" \"\n    ngbDatepicker\n    #d=\"ngbDatepicker\"\n    id=\"id\"\n    (click)=\"d.toggle()\"\n  />\n  <label for=\"id\">{{ label }}</label>\n</div>\n","import { NgModule } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { NgbDatepickerModule } from '@ng-bootstrap/ng-bootstrap';\n\nimport { FloatingDatepickerComponent } from './floating-datepicker.component';\n\n@NgModule({\n  imports: [NgbDatepickerModule, FormsModule],\n  declarations: [FloatingDatepickerComponent],\n  exports: [FloatingDatepickerComponent],\n})\nexport class FloatingDatepickerModule {}\n","import { Directive } from '@angular/core';\n\n@Directive({\n  selector: '[skHideOutside]'\n})\nexport class HideOutsideDirective {\n\n  constructor() { }\n\n}\n","import { NgModule } from '@angular/core';\n\nimport { CustomDatePickerModule } from './components/custom-datepicker/custom-datepicker.module';\nimport { CustomFormModule } from './components/custom-form/custom-form.module';\nimport { CustomSelectModule } from './components/custom-select/custom-select.module';\nimport { CustomTableModule } from './components/custom-table/custom-table.module';\nimport { FloatingDatepickerModule } from './components/floating-datepicker/floating-datepicker.module';\nimport { LoadingModalModule } from './components/loading-modal/loading-modal.module';\nimport { HideOutsideDirective } from './hide-outside.directive';\nimport { PipesModule } from './pipes/pipes.module';\n\n@NgModule({\n  exports: [\n    CustomDatePickerModule,\n    CustomTableModule,\n    FloatingDatepickerModule,\n    CustomFormModule,\n    PipesModule,\n    LoadingModalModule,\n    CustomSelectModule,\n  ],\n  declarations: [\n    HideOutsideDirective\n  ],\n})\nexport class CustomComponentsModule {}\n","/* eslint-disable no-underscore-dangle */\n/* eslint-disable @typescript-eslint/member-ordering */\nimport { Observable, of, Subject } from 'rxjs';\nimport { catchError, shareReplay } from 'rxjs/operators';\n\nexport class AsyncWrapper<T> {\n  private readonly _errorLoading$ = new Subject<boolean>();\n  readonly errorLoading$: Observable<boolean> = this._errorLoading$.pipe(\n    shareReplay(1)\n  );\n  readonly data$: Observable<T>;\n\n  constructor(data$: Observable<T>) {\n    this.data$ = data$.pipe(\n      shareReplay(1),\n      catchError((error) => {\n        console.error(error);\n        // eslint-disable-next-line no-underscore-dangle\n        this._errorLoading$.next(true);\n        return of<T>();\n      })\n    );\n  }\n}\n","/* eslint-disable @typescript-eslint/ban-types */\nimport { Observable } from 'rxjs';\n\nexport interface TableOptions {\n  columns: Column[];\n  hasId: boolean;\n  type: 'single-select' | 'datatable' | 'select';\n  style?: string;\n  title?: string;\n  pageable: boolean;\n  deletable?: boolean;\n  creatable?: boolean;\n  addMethod: 'inline' | 'modal';\n  detailsURL?: String[];\n  newURL?: String[];\n  showID?: boolean;\n  lookup?: boolean;\n  exportToCSV?: boolean;\n  exportToPDF?: boolean;\n  reportsOnly?: boolean;\n  showTitle?: boolean;\n  sortColumn?: string;\n  sortDesc?: boolean;\n  pageSize: number;\n  searchable: boolean;\n  modalSize?: 'lg' | 'sm';\n  accessCode: string;\n  permissions: {\n    read: boolean;\n    details: boolean;\n    create: boolean;\n    edit: boolean;\n    delete: boolean;\n  };\n}\n\nexport class TableOptions {\n  constructor(\n    public type: 'datatable' | 'select' | 'single-select' = 'datatable',\n    public permissions = {\n      read: true,\n      details: true,\n      create: true,\n      edit: true,\n      delete: true,\n    },\n    public pageable = true,\n    public addMethod: 'inline' | 'modal' = 'modal',\n    public searchable = true,\n    public hasId = true,\n    public pageSize = 10\n  ) {}\n}\n\nexport interface Column {\n  name: string;\n  title: string;\n  type?:\n    | 'date'\n    | 'datetime'\n    | 'decimal'\n    | 'email'\n    | 'number'\n    | 'percent'\n    | 'money'\n    | 'boolean'\n    | 'mobile-phone'\n    | 'home-phone'\n    | 'checkbox'\n    | 'object'\n    | 'text'\n    | 'file'\n    | 'array'\n    | 'count';\n  sortable?: boolean;\n  filterable?: boolean;\n  pipe?: string;\n  hidden?: boolean;\n  style?: string;\n  readonly?: boolean;\n  list?: any[];\n  // eslint-disable-next-line rxjs/finnish\n  asyncList?: Observable<any[]>;\n  listID?: any;\n  listDisplay?: any;\n  objectColumn?: string;\n  objectID?: string;\n  objectText?: string;\n  lookup?: boolean;\n  lookupValues?: any[];\n  customClasses?: string;\n  rateField?: boolean;\n  fileURL?: string;\n  fileID?: string;\n  fileName?: string;\n  required?: boolean;\n  filterField?: string;\n  filterColumn?: string;\n  model?: Column[];\n  removeSelf?: boolean;\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i2","i1.UtilService","i3","i4","i5.ColumnPipe","i2.UtilService","i5.CustomSelectComponent","i6.CustomDatepickerComponent","i7","i1","pdf.generatePDF","i5","i7.LoadingModalComponent","i8.PaginatorComponent","i9.ArrayPipe","i10.BooleanPipe","i11.ColumnPipe"],"mappings":"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"}