{"version":3,"file":"outerlimitstech-ngx-bootstrap-html-table.mjs","sources":["../../../projects/olt-ngx-bootstrap/html-table/src/dynamic-table.component.ts","../../../projects/olt-ngx-bootstrap/html-table/src/dynamic-table.component.html","../../../projects/olt-ngx-bootstrap/html-table/src/table.module.ts","../../../projects/olt-ngx-bootstrap/html-table/outerlimitstech-ngx-bootstrap-html-table.ts"],"sourcesContent":["import { Component, EventEmitter, ElementRef, Output, Input, SimpleChanges, OnChanges } from '@angular/core';\r\nimport { IPaged, IPagerChangeEvent, PagerChangeEvent } from '@outerlimitstech/ngx-app-core';\r\nimport { timer } from 'rxjs';\r\n\r\n@Component({\n    selector: 'olt-dynamic-table, olt-ngx-bootstrap-table',\n    templateUrl: './dynamic-table.component.html',\n    styleUrls: ['./dynamic-table.component.scss'],\n    standalone: false\n})\r\nexport class DynamicTableComponent implements OnChanges {\r\n  @Input() loading = false;\r\n  @Input() showSizes = true;\r\n  @Input() paged: IPaged<any> = { page: 1, size: 10, count: 0, data: [] };\r\n  @Input() tableCss = 'table table-striped table-hover';\r\n  @Input() tableResponsiveCss = 'table-responsive-xl';\r\n  @Input() showPager = true;\r\n  @Output() pagerChanged: EventEmitter<IPagerChangeEvent> = new EventEmitter<IPagerChangeEvent>();\r\n  @Input() pageSizes: Array<number> = [10, 25, 50, 100];\r\n  currentPage = 1;\r\n\r\n  constructor(private elRef: ElementRef) { }\r\n\r\n  ngOnChanges(changes: SimpleChanges): void {\r\n    if (changes.paged?.currentValue?.page != null && changes.paged?.currentValue?.page != undefined) {\r\n      const page = changes.paged.currentValue.page;\r\n      if (this.currentPage !== page) {\r\n        timer(0).subscribe(time => this.currentPage = page);\r\n      }\r\n    }\r\n  }\r\n\r\n  get columns(): number {\r\n    const headers = this.elRef.nativeElement.querySelectorAll('[header] th').length;\r\n    return headers;\r\n  }\r\n\r\n  get hasRecords(): boolean {\r\n    return this.paged?.data?.length > 0;\r\n  }\r\n\r\n  get pagerColSpan(): number {\r\n    return Math.round(this.columns / 2);\r\n  }\r\n\r\n  get summaryColSpan(): number {\r\n    return Math.trunc(this.columns / 2);\r\n  }\r\n\r\n  get totalItems(): number {\r\n    return this.paged?.count || 0;\r\n  }\r\n\r\n  get itemsPerPage(): number {\r\n    return this.paged?.size || 10;\r\n  }\r\n\r\n  get showPagination(): boolean {\r\n    if (this.showPager && this.paged != null && this.paged != undefined) {\r\n      return this.paged.count > this.paged.size;\r\n    }\r\n    return false;\r\n  }\r\n\r\n  get sizesVisible(): boolean {\r\n    return this.showSizes && this.showPagination;\r\n  }\r\n  pagerChange(page: number, size: number): void {\r\n    this.pagerChanged.emit(new PagerChangeEvent(page, size));\r\n  }\r\n\r\n}\r\n","<div [ngClass]=\"tableResponsiveCss\">\r\n  <table [ngClass]=\"tableCss\">\r\n\r\n    <ng-content select=\"[header]\">\r\n\r\n    </ng-content>\r\n\r\n    <tbody *ngIf=\"loading || !hasRecords\">\r\n      <tr>\r\n        <th [attr.colspan]=\"columns\" class=\"text-center\">\r\n          <h4>{{ loading ? 'Loading...' : 'No Records'}}</h4>\r\n        </th>\r\n      </tr>\r\n    </tbody>\r\n\r\n    <ng-content select=\"[body]\" *ngIf=\"!loading && hasRecords\">\r\n\r\n    </ng-content>\r\n\r\n    <tfoot *ngIf=\"paged != null && hasRecords && showPager\">\r\n      <tr>\r\n        <td class=\"border-0\" [attr.colspan]=\"columns\">\r\n          <div class=\"d-flex justify-content-between\">\r\n            <pagination class=\"pagination pagination-md\" *ngIf=\"paged.count > paged.size\" [totalItems]=\"paged.count\"\r\n              [itemsPerPage]=\"paged.size\" [(ngModel)]=\"currentPage\" previousText=\"&lsaquo;\" nextText=\"&rsaquo;\"\r\n              firstText=\"&laquo;\" lastText=\"&raquo;\" (pageChanged)=\"pagerChange($event.page, $event.itemsPerPage)\"\r\n              [maxSize]=\"5\" [boundaryLinks]=\"true\" [rotate]=\"true\">\r\n            </pagination>\r\n            <div class=\"text-end text-right\">\r\n              {{ paged | paginationSummary }}\r\n              <ng-container *ngTemplateOutlet=\"pageSizesTmpl\"></ng-container>\r\n            </div>\r\n          </div>\r\n        </td>\r\n      </tr>\r\n    </tfoot>\r\n  </table>\r\n</div>\r\n<ng-template #pageSizesTmpl>\r\n  <div class=\"mt-1\" *ngIf=\"showSizes && paged.count > paged.size\">\r\n    <select class=\"form-select form-select-sm form-control-sm\" [(ngModel)]=\"paged.size\"\r\n      (ngModelChange)=\"pagerChange(1, $event)\">\r\n      <option *ngFor=\"let option of pageSizes\" [value]=\"option\">\r\n        {{ option }} Item Per Page\r\n      </option>\r\n    </select>\r\n  </div>\r\n</ng-template>","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { DynamicTableComponent } from './dynamic-table.component';\r\nimport { PaginationModule } from 'ngx-bootstrap/pagination';\r\nimport { OltCoreModule } from '@outerlimitstech/ngx-app-core';\r\nimport { FormsModule } from '@angular/forms';\r\n\r\n\r\n@NgModule({\r\n  declarations: [\r\n    DynamicTableComponent\r\n  ],\r\n  imports: [\r\n    CommonModule,\r\n    FormsModule,\r\n    PaginationModule.forRoot(),\r\n    OltCoreModule\r\n  ],\r\n  exports: [\r\n    DynamicTableComponent\r\n  ]\r\n})\r\nexport class OltNgxTableModule { }\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1"],"mappings":"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"}