{"version":3,"file":"bootkit-angular-components-data-table.mjs","sources":["../../../projects/bootkit/components/data-table/data-table-column.directive.ts","../../../projects/bootkit/components/data-table/data-table-detail-row.directive.ts","../../../projects/bootkit/components/data-table/data-table.component.ts","../../../projects/bootkit/components/data-table/data-table.component.html","../../../projects/bootkit/components/data-table/data-table.module.ts","../../../projects/bootkit/components/data-table/bootkit-angular-components-data-table.ts"],"sourcesContent":["import { ContentChild, Directive, Input, TemplateRef } from '@angular/core';\r\nimport { BooleanTranslateFormat } from '@bootkit/angular/localization';\r\n\r\nexport type DataTableColumnBadgeValueType = string | number | boolean;\r\n\r\n@Directive({\r\n  selector: 'bk-data-table-col',\r\n  standalone: true,\r\n})\r\nexport class DataTableColumnDirective {\r\n  @Input() field?: string;\r\n  @Input() title?: string;\r\n  @Input() emptyCellText?: string;\r\n\r\n  /** Column type */\r\n  @Input() type: 'text' | 'number' | 'currency' | 'date' | 'time' | {\r\n    enum?: string,\r\n    boolean?: BooleanTranslateFormat,\r\n    currency?: string,\r\n  } = 'text';\r\n  @ContentChild(TemplateRef) template?: TemplateRef<any>;\r\n  @Input() cellClass?: string | string[] | { [klass: string]: any; } | null | undefined;\r\n  @Input() shrink = false;\r\n  @Input() bold = false;\r\n  @Input() badge?: { primary?: DataTableColumnBadgeValueType, secondary?: DataTableColumnBadgeValueType, success?: DataTableColumnBadgeValueType };\r\n  @Input() filterable = false;\r\n  @Input() filterValue?: string;\r\n  @Input() filterField?: string;\r\n\r\n  constructor() {\r\n  }\r\n}\r\n","import { Directive, Input, TemplateRef } from '@angular/core';\r\n\r\n\r\n@Directive({\r\n  selector: '[bk-data-table-detail-row]',\r\n  standalone: true,\r\n})\r\nexport class DataTableDetailRowDirective {\r\n  @Input() showCallback?: (row: any) => boolean;\r\n\r\n  constructor(public readonly templateRef: TemplateRef<any>) {\r\n  }\r\n}\r\n","import { AfterContentInit, AfterViewInit, Component, ContentChild, ContentChildren, Input, OnChanges, OnDestroy, OnInit, QueryList, SimpleChanges } from '@angular/core';\r\nimport { Subscription } from 'rxjs';\r\nimport { DataTableColumnDirective } from './data-table-column.directive';\r\nimport { DataTableDetailRowDirective } from './data-table-detail-row.directive';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { LocalizationModule } from '@bootkit/angular/localization';\r\nimport { DataRequest, DataRequestFilter, DataResult, DataSource } from '@bootkit/angular/data';\r\nimport { formatString } from '@bootkit/angular/text';\r\n\r\n@Component({\r\n  selector: 'bk-data-table',\r\n  templateUrl: './data-table.component.html',\r\n  styleUrls: ['./data-table.component.scss'],\r\n  standalone: true,\r\n  imports: [\r\n    CommonModule,\r\n    FormsModule,\r\n    LocalizationModule\r\n  ]\r\n})\r\nexport class DataTableComponent implements OnInit, AfterContentInit, OnChanges, OnDestroy {\r\n  @Input() dataSource!: DataSource;\r\n  @Input() autoLoad = true;\r\n  @Input() showRowNumber = true;\r\n  @Input() showHeader = true;\r\n  @Input() pagable = true;\r\n  @Input() pageSize = 10;\r\n  @Input() pageIndex = 0;\r\n  @Input() showPagination = true;\r\n  @Input() borderless = false;\r\n  @Input() small = false;\r\n  @Input() height?: string;\r\n  @Input() filterable = false;\r\n  // @Input() rowColor?: (row: any) => BootstrapColor;\r\n\r\n  @ContentChildren(DataTableColumnDirective) protected _columns!: QueryList<DataTableColumnDirective>;\r\n  @ContentChild(DataTableDetailRowDirective) protected _detailRow?: DataTableDetailRowDirective;\r\n\r\n  protected _result?: DataResult;\r\n  protected _totalPages?: number;\r\n  protected _rowStates = new Map<any, { expanded: boolean }>();\r\n  protected _formatString = formatString;\r\n  private _changeSubscription?: Subscription;\r\n\r\n  constructor() {\r\n  }\r\n\r\n\r\n  ngOnInit(): void {\r\n    this._changeSubscription = this.dataSource.change.subscribe(result => {\r\n      this._result = result;\r\n      this._totalPages = Math.ceil(result.total! / this.pageSize);\r\n      this.pageIndex = result.request.pageIndex;\r\n    });\r\n  }\r\n\r\n  ngAfterContentInit(): void {\r\n    if (this.autoLoad) {\r\n      this.reload();\r\n    }\r\n  }\r\n\r\n\r\n  ngOnChanges(changes: SimpleChanges) {\r\n    // if (changes['dataSource']) {}\r\n  }\r\n\r\n  reload() {\r\n    const filters = this._columns\r\n      .filter(x => x.filterable && x.filterValue != '' && x.filterValue != undefined)\r\n      .map(col => new DataRequestFilter(col.filterField ?? col.field!, col.filterValue));\r\n\r\n    var dr = new DataRequest(this.pageIndex, this.pageSize, this.pagable == true, filters)\r\n    this.dataSource.load(dr);\r\n  }\r\n\r\n  get loading() {\r\n    return this.dataSource.loading;\r\n  }\r\n\r\n  protected _getCellValue(row: any, col: DataTableColumnDirective) {\r\n    var subFields = col.field!.split('.');\r\n    let value = row[subFields[0]];\r\n    for (let i = 1; i < subFields.length; i++) {\r\n      if (value == null) break;\r\n      value = value[subFields[i]];\r\n    }\r\n\r\n    return value;\r\n  }\r\n\r\n  protected onNextPageClick() {\r\n    ++this.pageIndex\r\n    this.reload();\r\n  }\r\n\r\n  protected onPreviousPageClick() {\r\n    --this.pageIndex\r\n    this.reload();\r\n  }\r\n\r\n  protected onToggleRowDetailClick(row: any) {\r\n    var state = this._rowStates.get(row)\r\n    if (!state) {\r\n      this._rowStates.set(row, { expanded: true });\r\n    } else {\r\n      state.expanded = !state.expanded;\r\n    }\r\n  }\r\n\r\n  protected isRowExpanded(row: any) {\r\n    var state = this._rowStates.get(row)\r\n    return state == undefined ? false : state.expanded;\r\n  }\r\n\r\n  ngOnDestroy(): void {\r\n    this._changeSubscription?.unsubscribe();\r\n  }\r\n}\r\n","<div class=\"table-responsive\" [style.height]=\"height\" [class.table-scrollable]=\"height\">\r\n    <table class=\"table\" [class.table-borderless]=\"borderless\" [class.table-sm]=\"small\">\r\n        <thead *ngIf=\"showHeader\">\r\n            <tr>\r\n                <th *ngIf=\"_detailRow\"></th>\r\n                <th *ngIf=\"showRowNumber\" class=\"row-number text-muted\">#</th>\r\n                <th *ngFor=\"let col of _columns\">{{col.title}}</th>\r\n            </tr>\r\n        </thead>\r\n        <thead *ngIf=\"filterable\">\r\n            <tr>\r\n                <th *ngIf=\"_detailRow\"></th>\r\n                <th *ngIf=\"showRowNumber\"></th>\r\n                <th *ngFor=\"let col of _columns\">\r\n                    @if(col.filterable) {\r\n                    @if(col.type == 'text') {\r\n                    <input [name]=\"'datatablecol-' + col.field\"\r\n                           type=\"text\"\r\n                           [maxlength]=\"50\"\r\n                           class=\"form-control form-control-sm\"\r\n                           [(ngModel)]=\"col.filterValue\"\r\n                           (keydown.enter)=\"reload()\">\r\n                    }@else if(col.type == 'number') {\r\n                    <input [name]=\"'datatablecol-' + col.field\"\r\n                           type=\"number\"\r\n                           class=\"form-control form-control-sm\"\r\n                           [(ngModel)]=\"col.filterValue\"\r\n                           (keydown.enter)=\"reload()\">\r\n                    }\r\n                    }\r\n                </th>\r\n            </tr>\r\n        </thead>\r\n\r\n        <tbody>\r\n            <ng-container *ngIf=\"_result?.data && _result?.data?.length! > 0\">\r\n                <ng-container *ngFor=\"let row of _result?.data; let i=index\">\r\n                    <tr [class.table-active]=\"isRowExpanded(row)\">\r\n                        <td class=\"detail-row-expander\" *ngIf=\"_detailRow\">\r\n                            <button class=\"btn\" (click)=\"onToggleRowDetailClick(row)\"\r\n                                    *ngIf=\"_detailRow.showCallback == null || _detailRow.showCallback(row)\">\r\n                                <ng-template [ngIf]=\"isRowExpanded(row)\" [ngIfElse]=\"collapse\"><i\r\n                                       class=\"far fa-minus\"></i></ng-template>\r\n                                <ng-template #collapse><i class=\"far fa-plus\"></i> </ng-template>\r\n                            </button>\r\n                        </td>\r\n\r\n                        <td class=\"row-number text-muted\" *ngIf=\"showRowNumber\">{{pageSize * pageIndex + i + 1}}</td>\r\n\r\n                        <td *ngFor=\"let col of _columns\" [ngClass]=\"col.cellClass\" [class.shrinked]=\"col.shrink\"\r\n                            [class.fw-bold]=\"col.bold\">\r\n                            @if(col.template){\r\n                            <ng-template [ngIf]=\"col.template\">\r\n                                <ng-container\r\n                                              *ngTemplateOutlet=\"col.template; context: {$implicit: row}\"></ng-container>\r\n                            </ng-template>\r\n                            }@else if(col.field){\r\n                            @let cellValue = _getCellValue(row, col);\r\n                            <div\r\n                                 [class.badge]=\"col.badge\"\r\n                                 [class.text-bg-primary]=\"col.badge?.primary && cellValue === col.badge?.primary\"\r\n                                 [class.text-bg-secondary]=\"col.badge?.secondary && cellValue === col.badge?.secondary\"\r\n                                 [class.text-bg-success]=\"col.badge?.success && cellValue === col.badge?.success\"\r\n                                 [class.text-bg-light]=\"col.badge && cellValue !== col.badge.success && cellValue !== col.badge.secondary  && cellValue !== col.badge.success \">\r\n\r\n                                <ng-container *ngIf=\"col.type=='text'\">\r\n                                    {{cellValue}}\r\n                                </ng-container>\r\n                                <ng-container *ngIf=\"col.type=='date'\">\r\n                                    <span class=\"date-time\">{{cellValue | bkDate}}</span>\r\n                                </ng-container>\r\n                                <ng-container *ngIf=\"col.type=='number'\">\r\n                                    {{cellValue | number}}\r\n                                </ng-container>\r\n                                <ng-container *ngIf=\"col.type=='currency'\">\r\n                                    {{cellValue | number}}\r\n                                </ng-container>\r\n                                <ng-container *ngIf=\"$any(col?.type)?.enum\">\r\n                                    {{cellValue | bkTranslateEnum:$any(col.type).enum}}\r\n                                </ng-container>\r\n                                <ng-container *ngIf=\"$any(col?.type)?.boolean\">\r\n                                    {{cellValue | bkTranslateBool:$any(col.type).boolean}}\r\n                                </ng-container>\r\n                                <ng-container *ngIf=\"$any(col?.type)?.currency\">\r\n                                    {{cellValue | currency:$any(col?.type)?.currency}}\r\n                                </ng-container>\r\n                                \r\n                                <ng-container *ngIf=\"cellValue == null && col.emptyCellText\">\r\n                                    {{col.emptyCellText}}\r\n                                </ng-container>\r\n                            </div>\r\n                            }\r\n                        </td>\r\n                    </tr>\r\n\r\n                    <tr class=\"detail-row\" *ngIf=\"_detailRow && isRowExpanded(row)\">\r\n                        <td [attr.colspan]=\"_columns.length + (showRowNumber ? 1 : 0) + 1\" class=\"ps-2 pb-4\">\r\n                            <ng-container\r\n                                          *ngTemplateOutlet=\"_detailRow.templateRef; context: {$implicit: row}\"></ng-container>\r\n                        </td>\r\n                    </tr>\r\n                </ng-container>\r\n\r\n            </ng-container>\r\n\r\n            <tr *ngIf=\"_result?.data?.length === 0\">\r\n                <td [colSpan]=\"_columns.length + (showRowNumber ? 1 : 0)\" class=\"text-center text-muted small p-2\">\r\n                    {{'noRecords' | bkTranslate}}\r\n                </td>\r\n            </tr>\r\n            <tr *ngIf=\"dataSource && dataSource.loading\" class=\"loading-row\">\r\n                <td [colSpan]=\"_columns.length + (showRowNumber ? 1 : 0)\" class=\"text-center\">\r\n                    <div class=\"spinner-border text-primary\" role=\"status\"></div>\r\n                </td>\r\n            </tr>\r\n        </tbody>\r\n    </table>\r\n</div>\r\n\r\n<div class=\"mt-auto\" *ngIf=\"pagable && showPagination\">\r\n    <div class=\"btn-group me-2\" role=\"group\" [class.btn-group-sm]=\"small\">\r\n        <button type=\"button\"\r\n                class=\"btn btn-outline-primary\"\r\n                (click)=\"onPreviousPageClick()\"\r\n                [disabled]=\"loading || pageIndex == 0\">\r\n            {{'previous' | bkTranslate}}\r\n        </button>\r\n        <button type=\"button\"\r\n                class=\"btn btn-outline-primary\"\r\n                (click)=\"onNextPageClick()\"\r\n                [disabled]=\"loading || !_totalPages || (pageIndex == _totalPages-1)\">\r\n            {{'next' | bkTranslate}}\r\n        </button>\r\n    </div>\r\n\r\n    <span *ngIf=\"_totalPages\">\r\n        {{_formatString( 'dataTablePagination' | bkTranslate, pageIndex+1, _totalPages) }}\r\n    </span>\r\n\r\n\r\n    <!-- <select class=\"form-select\" style=\"width: initial;\">\r\n        <option selected>همه رکوردها</option>\r\n    </select> -->\r\n</div>","import { NgModule } from '@angular/core';\r\nimport { DataTableColumnDirective } from './data-table-column.directive';\r\nimport { DataTableComponent } from './data-table.component';\r\nimport { DataTableDetailRowDirective } from './data-table-detail-row.directive';\r\n\r\n@NgModule({\r\n    imports: [\r\n        DataTableComponent,\r\n        DataTableColumnDirective,\r\n        DataTableDetailRowDirective,\r\n    ],\r\n    exports: [\r\n        DataTableComponent,\r\n        DataTableColumnDirective,\r\n        DataTableDetailRowDirective\r\n    ],\r\n})\r\nexport class DataTableModule { }\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}