{"version":3,"file":"ngx-ui-builder-table.mjs","sources":["../../../libs/ngx-ui-builder/table/src/table.service.ts","../../../libs/ngx-ui-builder/table/src/component/cell/cell.component.ts","../../../libs/ngx-ui-builder/table/src/component/filter/filter.component.ts","../../../libs/ngx-ui-builder/table/src/component/table/table.component.ts","../../../libs/ngx-ui-builder/table/src/component/table/table.component.html","../../../libs/ngx-ui-builder/table/src/table.module.ts","../../../libs/ngx-ui-builder/table/src/public-api.ts","../../../libs/ngx-ui-builder/table/src/ngx-ui-builder-table.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\n\n@Injectable({\n  providedIn: 'root',\n})\nexport class NubTableService {\n  constructor() {}\n}\n","import { ChangeDetectionStrategy, Component, Input, OnInit, ViewContainerRef } from '@angular/core';\n\n@Component({\n  selector: 'nub-table-cell',\n  template: '',\n  changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class NubTableCellComponent implements OnInit {\n  // Common cell properties\n  @Input() set cell(cell: any) {\n    this.localConfigs.cell = { ...cell };\n  };\n  @Input() set metadata(metadata: any) {\n    this.localConfigs.metadata = { ...metadata };\n  };\n\n  localConfigs: { cell?: any, metadata?: any } = {};\n\n  constructor(private viewContainerRef: ViewContainerRef) {}\n\n  ngOnInit(): void {\n    const cell: any = this.viewContainerRef.createComponent(this.localConfigs.metadata.component);\n    cell.instance.cell = this.localConfigs.cell;\n    cell.instance.metadata = this.localConfigs.metadata;\n  }\n}\n","import {\n  ChangeDetectionStrategy,\n  Component,\n  forwardRef,\n  Injector,\n  Input,\n  OnInit,\n  ViewContainerRef,\n} from '@angular/core';\nimport { NubTableColumnConfig } from '../../table.types';\nimport { NG_VALUE_ACCESSOR, NgControl } from '@angular/forms';\n\n@Component({\n  selector: 'nub-table-filter',\n  template: '',\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  providers: [\n    {\n      provide: NG_VALUE_ACCESSOR,\n      useExisting: forwardRef(() => NubFilterComponent),\n      multi: true\n    }\n  ]\n})\nexport class NubFilterComponent implements OnInit {\n  // Common cell properties\n  @Input() set column(column: NubTableColumnConfig) {\n    this.localConfigs.column = {...column};\n  }\n\n  localConfigs: { column?: NubTableColumnConfig } = {};\n\n  constructor(\n    public injector: Injector,\n    private viewContainerRef: ViewContainerRef\n  ) {}\n\n  ngOnInit(): void {\n    const injectorControl = this.injector.get(NgControl);\n    const cell = this.viewContainerRef.createComponent<any>(this.localConfigs.column?.filter?.component);\n\n    injectorControl.valueAccessor = cell.instance;\n  }\n}\n","import {\n  AfterViewInit,\n  ChangeDetectionStrategy,\n  Component,\n  Input,\n  OnDestroy,\n  OnInit,\n  ViewChild,\n  ViewContainerRef,\n} from '@angular/core';\nimport {\n  BehaviorSubject,\n  debounceTime,\n  filter,\n  lastValueFrom,\n  map,\n  Observable,\n  Subject,\n  takeUntil,\n  tap,\n} from 'rxjs';\nimport { NubTableCell, NubTableColumnConfig, NubTableConfig, NubTableRow } from '../../table.types';\nimport { FormControl, FormGroup } from '@angular/forms';\n\n@Component({\n  selector: 'nub-table',\n  styleUrls: ['./table.component.css'],\n  templateUrl: './table.component.html',\n  changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class NubTableComponent implements OnInit, AfterViewInit, OnDestroy {\n  @Input() set configs(configs: NubTableConfig) {\n    this.setConfigs(configs);\n  }\n\n  @ViewChild('footerComponent', { read: ViewContainerRef }) footerComponent: any;\n\n  localConfigs: NubTableConfig = {\n    id: new Date().getTime(),\n    sortOrder: {},\n    columnOptions: [],\n    footer: {\n      configs: {\n        page: 1,\n        pageSize: 10,\n        pageSizes: [5, 10, 20, 50, 100]\n      }\n    }\n  };\n\n  tableMatrix$: BehaviorSubject<NubTableRow[]> = new BehaviorSubject<NubTableRow[]>([]);\n  obChangeWithData$: BehaviorSubject<any[] | undefined> = new BehaviorSubject<any[] | undefined>(undefined);\n\n  txtSearch: FormControl = new FormControl();\n\n  filterFormGroup: FormGroup = new FormGroup<any>({});\n\n  private _unsubscribeAll: Subject<void> = new Subject<void>();\n\n  constructor() { }\n\n  ngOnInit(): void {\n    this.obChangeWithData$\n      .pipe(\n        filter(data => data !== undefined),\n        tap(data => this.buildTableMatrix(data ?? [])),\n        map(value => value),\n      )\n      .subscribe();\n\n    this.txtSearch.valueChanges.pipe(\n      debounceTime(this.localConfigs.search?.debounceTime || 300),\n      takeUntil(this._unsubscribeAll),\n    ).subscribe(val => {\n      if (this.localConfigs.search) {\n        this.localConfigs.search.value = val;\n      }\n      this.refresh();\n    });\n\n    // Filter section\n    this.localConfigs.columnOptions.forEach((col: NubTableColumnConfig) => {\n      if (col.filter) {\n        this.filterFormGroup.addControl(col.property, new FormControl(''));\n\n        this.filterFormGroup.controls[col.property].valueChanges.pipe(\n          debounceTime(col.filter.debounceTime || 300),\n          takeUntil(this._unsubscribeAll),\n        ).subscribe(() => {\n          this.refresh();\n        });\n      }\n    });\n\n    this.refresh();\n  }\n\n  ngAfterViewInit(): void {\n    if (this.localConfigs.footer?.component) {\n      const viewContainerRef = this.footerComponent;\n      viewContainerRef.clear();\n\n      const footerComponent = viewContainerRef.createComponent(this.localConfigs.footer?.component);\n      footerComponent.instance.configs = this.localConfigs.footer.configs || null;\n    }\n  }\n\n  ngOnDestroy() {\n    this._unsubscribeAll.next();\n    this._unsubscribeAll.complete();\n  }\n\n  async refresh() {\n    let data: any[] = [];\n    let totalItems: number;\n    if (!this.localConfigs.dataSource) {\n      this.obChangeWithData$.next(data);\n    }\n\n    let dataSource;\n    if (this.localConfigs.dataSource) {\n      dataSource = this.localConfigs.dataSource(this.buildQueryParams(), this);\n    }\n    if (dataSource instanceof Promise) {\n      ({ data, totalItems } = await dataSource);\n    } else if (dataSource instanceof Observable) {\n      ({ data, totalItems } = await lastValueFrom(dataSource));\n    } else {\n      ({ data, totalItems } = dataSource ?? { data: [], totalItems: 0 });\n    }\n\n    if (this.localConfigs.footer?.configs) {\n      this.localConfigs.footer.configs.totalItems = totalItems;\n    }\n\n    this.obChangeWithData$.next(data);\n  }\n\n  buildQueryParams() {\n    let queryParams = Object.create(null);\n\n    if (this.localConfigs.search) {\n      queryParams.search = this.localConfigs.search.value || '';\n    }\n\n    if (this.localConfigs.columnOptions.some(col => !!col.filter)) {\n      queryParams.filter = this.filterFormGroup.getRawValue();\n    }\n\n    if (this.localConfigs.sortOrder) {\n      queryParams.sort = this.localConfigs.sortOrder || {};\n    }\n\n    if (!this.localConfigs.footer?.component && this.localConfigs.footer?.configs) {\n      Object.assign(queryParams, this.localConfigs.footer.configs);\n    }\n\n    if (this.localConfigs.mapQueryParams) {\n      queryParams = this.localConfigs.mapQueryParams(queryParams);\n    }\n\n    return new URLSearchParams(queryParams).toString();\n  }\n\n  buildTableMatrix<T>(data: T[]) {\n    const result: NubTableRow[] = [];\n\n    for (const index in data) {\n      // Build a row\n      const row: NubTableRow = {\n        id: `${this.localConfigs.id}-${index}`,\n        data: data[index],\n        columns: [],\n        class: this.localConfigs.rowOptions?.class,\n        metadata: this.localConfigs.rowOptions,\n      };\n\n      // Build a column in row (cell)\n      const rowClone = Object.assign({}, row);\n      delete rowClone.columns;\n      for (const columnOption of this.localConfigs.columnOptions) {\n        const col: NubTableCell = {\n          cell: {\n            title: columnOption.title,\n            data: (data as any)[index][columnOption.property],\n          },\n          metadata: { ...columnOption, row: rowClone },\n        };\n\n        row.columns?.push(col);\n      }\n\n      result.push(row);\n    }\n\n    this.tableMatrix$.next(result);\n  }\n\n  onChangeSortType(col: NubTableColumnConfig) {\n    const sortTypes = ['', 'asc', 'desc'];\n    const idx = col.sort?.type ? sortTypes.findIndex(sortType => sortType === col.sort?.type) : 0;\n\n    if (col.sort) {\n      col.sort.type = sortTypes[idx + 1] || ('' as any);\n    }\n    this.localConfigs.sortOrder[col.property] = col.sort?.type;\n    return this.refresh();\n  }\n\n  /*-------------------Paging section-----------------*/\n  async setPageSize(): Promise<void> {\n    await this.refresh();\n    return this.goToPage(0);\n  }\n\n  goToPage(pageIndex: number): Promise<void> {\n    if (this.localConfigs.footer?.configs) {\n      this.localConfigs.footer.configs.page = pageIndex + 1;\n    }\n    return this.refresh();\n  }\n  /*---------------End Paging section ----------------*/\n\n  private setConfigs(configs: NubTableConfig) {\n    // Combine configs and local configs\n    this.localConfigs = { ...this.localConfigs, ...configs };\n  }\n}\n","\n\n<!-- Table Section -->\n<table>\n  <caption *ngIf=\"localConfigs.caption\" [style.caption-side]=\"localConfigs.captionPosition\">{{localConfigs.caption}}</caption>\n\n  <thead>\n    <tr>\n      <td\n        *ngIf=\"localConfigs.search\"\n        [attr.colspan]=\"localConfigs.columnOptions.length\"\n        class=\"search-container\"\n        [ngClass]=\"localConfigs.search.class\"\n      >\n        <!-- Search Section -->\n          <label>\n            {{ localConfigs.search.title }}\n            <input\n              type=\"text\"\n              [title]=\"localConfigs.search.title\"\n              [placeholder]=\"localConfigs.search.placeholder\"\n              [formControl]=\"txtSearch\"\n            />\n          </label>\n      </td>\n    </tr>\n    <tr [formGroup]=\"filterFormGroup\">\n      <th class=\"title\" *ngFor=\"let col of localConfigs.columnOptions\">\n        <div class=\"header-container\" (click)=\"!!col.sort && onChangeSortType(col)\">\n          <span>{{ col.title }}</span>\n          <span *ngIf=\"!!col.sort\" class=\"sorting\">\n            <svg\n              *ngIf=\"col.sort.type === 'asc'\"\n              xmlns=\"http://www.w3.org/2000/svg\"\n              fill=\"none\"\n              viewBox=\"0 0 24 24\"\n              stroke-width=\"1.5\"\n              stroke=\"currentColor\"\n            >\n              <path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M19.5 8.25l-7.5 7.5-7.5-7.5\" />\n            </svg>\n            <svg\n              *ngIf=\"col.sort.type === 'desc'\"\n              xmlns=\"http://www.w3.org/2000/svg\"\n              fill=\"none\"\n              viewBox=\"0 0 24 24\"\n              stroke-width=\"1.5\"\n              stroke=\"currentColor\"\n            >\n              <path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M4.5 15.75l7.5-7.5 7.5 7.5\" />\n            </svg>\n          </span>\n        </div>\n        <div *ngIf=\"!!col.filter\" class=\"filtering\">\n          <ng-container *ngIf=\"col.filter.component\">\n            <nub-table-filter [column]=\"col\" [formControlName]=\"col.property\"></nub-table-filter>\n          </ng-container>\n          <ng-container *ngIf=\"!col.filter.component\">\n            <input type=\"text\" [formControlName]=\"col.property\" />\n          </ng-container>\n        </div>\n      </th>\n    </tr>\n  </thead>\n  <tbody>\n    <tr *ngFor=\"let row of tableMatrix$ | async\">\n      <ng-container *ngFor=\"let column of row.columns\">\n        <ng-container *ngIf=\"column.metadata['component']\">\n          <nub-table-cell [cell]=\"column.cell\" [metadata]=\"column.metadata\"></nub-table-cell>\n        </ng-container>\n        <ng-container *ngIf=\"!column.metadata['component']\">\n          <td>{{ column.cell['data'] }}</td>\n        </ng-container>\n      </ng-container>\n    </tr>\n  </tbody>\n  <tfoot\n    class=\"table-footer\"\n  >\n    <tr>\n      <td\n        [attr.colspan]=\"localConfigs.columnOptions.length\"\n      >\n        <ng-container *ngIf=\"!!localConfigs.footer?.component; else defaultFooter\" #footerComponent></ng-container>\n      </td>\n    </tr>\n  </tfoot>\n</table>\n\n<ng-template #defaultFooter>\n  <div class=\"footer-container\">\n    <div class=\"settings\">\n      <label>\n        Items per page:\n        <select [(ngModel)]=\"localConfigs.footer!.configs!.pageSize!\" (change)=\"setPageSize()\">\n          <option *ngFor=\"let page of localConfigs.footer!.configs!.pageSizes\">\n            <span>{{ page }}</span>\n          </option>\n        </select>\n      </label>\n    </div>\n    <div class=\"pagination\">\n      <div class=\"page-number\">\n        {{(localConfigs.footer?.configs?.page! - 1) * localConfigs.footer?.configs?.pageSize! + 1}}\n        -\n        {{localConfigs.footer?.configs?.page! * localConfigs.footer?.configs?.pageSize!}}\n        of\n        {{localConfigs.footer?.configs?.totalItems}}\n      </div>\n      <div class=\"page-function\">\n        <button type=\"button\" class=\"page-first\" (click)=\"goToPage(0)\"></button>\n        <button type=\"button\" class=\"page-previous\" (click)=\"goToPage(localConfigs.footer?.configs?.page! > 1 ? localConfigs.footer?.configs?.page! - 2 : 0)\"></button>\n        <button type=\"button\" class=\"page-next\" (click)=\"goToPage(localConfigs.footer?.configs?.page!)\"></button>\n        <button type=\"button\" class=\"page-last\" (click)=\"goToPage(localConfigs.footer?.configs?.totalItems! / localConfigs.footer?.configs?.pageSize!)\"></button>\n      </div>\n    </div>\n  </div>\n</ng-template>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { NubTableComponent } from './component/table/table.component';\nimport { NubTableCellComponent } from './component/cell/cell.component';\nimport { NubFilterComponent } from './component/filter/filter.component';\nimport { NubUtilsModule } from 'ngx-ui-builder/utils';\n\n@NgModule({\n  declarations: [\n    NubTableComponent,\n    NubTableCellComponent,\n    NubFilterComponent,\n  ],\n  imports: [CommonModule, FormsModule, ReactiveFormsModule, NubUtilsModule],\n  exports: [NubTableComponent],\n})\nexport class NubTableModule {}\n","/*\n * Public API Surface of table\n */\n\nexport * from './table.service';\nexport * from './component/table/table.component';\nexport * from './table.module';\nexport * from './table.types';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i3.NubTableCellComponent","i4.NubFilterComponent"],"mappings":"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"}