{"version":3,"file":"eurosat-grid.mjs","sources":["../../../projects/grid/src/lib/model/es-grid-page.ts","../../../projects/grid/src/lib/model/es-grid-paged-data.ts","../../../projects/grid/src/lib/es-grid.service.ts","../../../projects/grid/src/lib/model/es-grid.params.ts","../../../projects/grid/src/lib/es-grid.translates.ts","../../../projects/grid/src/lib/es-grid.constants.ts","../../../projects/grid/src/lib/group-checkbox/group-checkbox.component.ts","../../../projects/grid/src/lib/group-checkbox/group-checkbox.component.html","../../../projects/grid/src/lib/filter-field/filter-field.component.ts","../../../projects/grid/src/lib/filter-field/filter-field.component.html","../../../projects/grid/src/lib/row-group/row-group.component.ts","../../../projects/grid/src/lib/row-group/row-group.component.html","../../../projects/grid/src/lib/components/grid-icons/grid-icons.component.ts","../../../projects/grid/src/lib/components/grid-icons/grid-icons.component.html","../../../projects/grid/src/lib/components/grid-images/grid-images.component.ts","../../../projects/grid/src/lib/components/grid-images/grid-images.component.html","../../../projects/grid/src/lib/components/grid-html/grid-html.component.ts","../../../projects/grid/src/lib/components/grid-html/grid-html.component.html","../../../projects/grid/src/lib/components/grid-cell/grid-cell.component.ts","../../../projects/grid/src/lib/components/grid-cell/grid-cell.component.html","../../../projects/grid/src/lib/es-grid.component.ts","../../../projects/grid/src/lib/es-grid.component.html","../../../projects/grid/src/lib/group-checkbox/group-checkbox.module.ts","../../../projects/grid/src/lib/filter-field/filter-field.module.ts","../../../projects/grid/src/lib/es-grid.module.ts","../../../projects/grid/src/public_api.ts","../../../projects/grid/src/eurosat-grid.ts"],"sourcesContent":["/**\n * An object used to get page information from the server\n */\nexport class EsGridPage {\n    // The number of elements in the page\n    size = 0;\n    // The total number of elements\n    totalElements = 0;\n    // The total number of pages\n    totalPages = 0;\n    // The current page number\n    pageNumber = 0;\n}\n","import {EsGridPage} from './es-grid-page';\n\n/**\n * An array of data with an associated page object used for paging\n */\nexport class EsGridPagedData<T> {\n    data = new Array<T>();\n    page = new EsGridPage();\n    elementCountChanged = false;\n    fetchedPage: number;    // strakovani na serveru, lisi se od starnkovani datatable, vetsinou po 100 radcich\n    nextUrl?: string;       // jen pro appendable grid\n}\n","import {map} from 'rxjs/operators';\nimport {Injectable} from '@angular/core';\nimport {Observable} from 'rxjs';\nimport {EsGrid} from './model/es-grid.interface';\nimport {EsGridOptions} from './model/es-grid-options.interface';\nimport {EsGridColumn} from './model/es-grid-column';\nimport {EsGridPage} from './model/es-grid-page';\nimport {EsGridPagedData} from './model/es-grid-paged-data';\nimport {HttpParams} from '@angular/common/http';\nimport {CellCheckbox} from './model/cell-checkbox-click-event.interface';\nimport {HttpService} from '@eurosat/http';\nimport {GridResponse} from './es-grid-response';\n\n@Injectable()\nexport class EsGridService {\n    static AN_COLUMN_VISIBILITY_HIDDEN = 0; // todo pole, tyhle nebudou videt nikdy nikde !!!\n    static AN_COLUMN_VISIBILITY_DESKTOP = 1;\n    static AN_COLUMN_VISIBILITY_TABLET = 2;\n    static AN_COLUMN_VISIBILITY_MOBILE = 3;\n\n    constructor(private http: HttpService) { }\n\n    static fromJson(json: {}, gridUrl: string): EsGrid {\n\n        const options: EsGridOptions = {\n            url: json['options']['url'],\n            pager: json['options']['pager'],\n            multiselect: json['options']['multiselect'],\n            grouping: json['options']['grouping'],\n            groupingView: json['options']['groupingView'],\n            selectable: json['options']['selectable'],\n            autoSelectFirstRow: json['options']['autoSelectFirstRow']\n        };\n\n        const columns: EsGridColumn[] = [];\n        for (const column of json['columns']) {\n            columns.push({\n                title: column['title'],\n                name: column['name'],\n                index: column['index'],\n                sortable: column['sortable'],\n                filter: column['filter'],\n                visibility: column['anVisibility'],\n                checkboxable: column['edittype'] === 'checkbox',\n                disabled: column['anDisabled'] === '1',\n                width: column['width'] ? column['width'] : null,\n                tooltipVisible: column['tooltipVisible'] ? column['tooltipVisible'] : null,\n                classes: column['classes'] ? column['classes'] : null,\n            });\n        }\n\n        return {options: options, columns: columns, gridUrl: gridUrl};\n    }\n\n    static pagedDataFromJson(json: {}, grid: EsGrid, page: EsGridPage) {\n        const pagedData = new EsGridPagedData<any>();\n\n        if (json['rows']) {\n            for (const jsonRow of json['rows']) {\n                const row = {};\n                let index = 0;\n                for (const col of grid.columns) {\n                    if (col.checkboxable) {\n                        // todo otypovat checkboxable sloupec !\n                        let visible = true;\n                        if (jsonRow.cell[index] === -1) {\n                            visible = false;\n                        }\n                        row[col.name] = <CellCheckbox>{\n                            isCheckbox: true,\n                            checkboxVisible: visible,\n                            isDisabled: col.disabled,\n                            checkedData: jsonRow.cell[index],\n                            checkedDataInit: jsonRow.cell[index]};\n                    } else {\n                        row[col.name] = jsonRow.cell[index];\n                    }\n                    index++;\n                }\n                pagedData.data.push(row);\n            }\n        }\n        pagedData.page = page;\n\n        if (pagedData.page.totalElements !== json['records']) {\n            pagedData.elementCountChanged = true;\n            pagedData.page.totalElements = json['records'];\n        } else {\n            pagedData.elementCountChanged = false;\n        }\n\n        pagedData.fetchedPage = parseInt(json['page'], 10);\n\n        return pagedData;\n    }\n\n    getDynamicGrid(gridUrl, gridUrlParams): Observable<EsGrid>  {\n        return this.http.post(gridUrl, gridUrlParams).pipe(\n            map(json => {\n                return EsGridService.fromJson(json, gridUrl);\n            }));\n    }\n\n    getTotalRecords(url, gridUrlParams): Observable<any> {\n        const params = new HttpParams().set('rows', '0');\n        return this.http.post(url, gridUrlParams, {params}).pipe(\n            map(json => {\n                const total = json['records'];\n                return parseInt(total, 10);\n            }));\n    }\n\n    getDynamicGridPagedData(grid: EsGrid, page: EsGridPage, params: HttpParams = null, gridUrlParams: HttpParams = null): Observable<EsGridPagedData<any>> {\n        const dataUrl: string = grid.options.url;\n        return this.http.post(dataUrl, gridUrlParams, {params}).pipe(\n            map(json => {\n                // reindex data to object, prop = col.name\n                return EsGridService.pagedDataFromJson(json, grid, page);\n            }));\n\n    }\n\n    getArrayGridData(gridUrl: string): Observable<any>  {\n        return this.http.get(gridUrl);\n    }\n\n    // new pro es-cdk-grid\n    fetchRows(gridDataUrl,\n              gridUrlParams,\n              filter = '',\n              sortDirection = '',\n              pageIndex = null,\n              pageSize = null,\n              append = false,\n              loadPrev = false\n    ): Observable<GridResponse> {\n        let params = new HttpParams();\n        if (filter !== '') { params = params.set('filter', filter); }\n        if (sortDirection !== '') { params = params.set('sort', sortDirection); }\n        if (pageIndex !== null) { params = params.set('page', pageIndex); }\n        if (pageSize !== null) { params = params.set('rows', pageSize); }\n        if (append === true) { params = params.set('aan', '1'); }\n        if (loadPrev === true) { params = params.set('aan', '0'); }\n\n        // todo\n        return this.http.post(gridDataUrl, gridUrlParams, {params}).pipe(\n            map((res: GridResponse) => {\n                    return res;\n                }\n            ));\n    }\n}\n","export class EsGridParams {\n    static SORT_INDEX               = 'sidx';\n    static SORT_DIRECTION           = 'sord';\n    static SORT_GRID_ID             = '_gridId';\n    static FILTERS                  = 'filters';\n}","export class EsGridTranslates {\n\n    static FILTERS = 'an.es-grid.filters';\n    static SETTINGS = 'an.es-grid.settings';\n    static TOTAL = 'an.es-grid.total';\n    static CHECK_ALL = 'an.es-grid.check.all';\n    static UNCHECK_ALL = 'an.es-grid.uncheck.all';\n    static CHECK_AMONG_CHOSEN_ONES = 'an.es-grid.checkAmongTheChosenOnes';\n    static SAVE = 'an.es-grid.save';\n    static EXPAND_COLLAPSE_GROUP = 'an.es-grid.expand.collapse.group';\n    static NO_RECORDS = 'an.es-grid.no.records';\n    static SUCCESS_SAVE = 'an.es-grid.success.save';\n    static SEARCHING = 'an.es-grid.searching';\n    static CHECK_UNCHECK_ALL = 'an.es-grid.check.uncheck.all';\n    static CUSTOM_ORDER = 'an.es-grid.custom.order';\n    static NEW = 'an.es-grid.new';\n    static ITEMS_PER_PAGE = 'an.es-grid.items.per.page';\n\n    defaults = {\n        [EsGridTranslates.FILTERS]: 'Filters',\n        [EsGridTranslates.SETTINGS]: 'Settings',\n        [EsGridTranslates.TOTAL]: 'Total',\n        [EsGridTranslates.CHECK_ALL]: 'Check all',\n        [EsGridTranslates.UNCHECK_ALL]: 'Uncheck all',\n        [EsGridTranslates.CHECK_AMONG_CHOSEN_ONES]: 'Check all between selected',\n        [EsGridTranslates.SAVE]: 'Save',\n        [EsGridTranslates.EXPAND_COLLAPSE_GROUP]: 'Expand/Collapse Group',\n        [EsGridTranslates.NO_RECORDS]: 'No records were found.',\n        [EsGridTranslates.SUCCESS_SAVE]: 'Successfully saved',\n        [EsGridTranslates.SEARCHING]: 'Searching',\n        [EsGridTranslates.CHECK_UNCHECK_ALL]: 'Check/Uncheck all',\n        [EsGridTranslates.CUSTOM_ORDER]: 'Custom order',\n        [EsGridTranslates.NEW]: 'New',\n        [EsGridTranslates.ITEMS_PER_PAGE]: 'Items per page',\n    };\n\n    static getDefaults() {\n        const self = new EsGridTranslates;\n        return self.defaults;\n    }\n}\n","\nexport const CELL_CLASS_CHECKBOX = 'cell-checkbox';   // also col type\n","import {ChangeDetectionStrategy, Component, EventEmitter, Input, OnChanges, Output} from '@angular/core';\nimport {CellCheckboxClickEvent} from '../model/cell-checkbox-click-event.interface';\nimport {EsTableColumn} from '../model/es-table-column';\nimport {EsIcon} from '@eurosat/icon';\nimport {EsGridTranslates} from '../es-grid.translates';\nimport {CELL_CLASS_CHECKBOX} from '../es-grid.constants';\n\n/**\n * todo\n * checkboxable soupce budou jen na permissionech zatim\n * prepne se to zatim jen podle url\n */\n\n\n@Component({\n    selector: 'group-checkbox',\n    templateUrl: './group-checkbox.component.html',\n    styleUrls: ['./group-checkbox.component.scss'],\n    changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class GroupCheckboxComponent implements OnChanges {\n\n    @Input() row = {};\n    @Input() allTableCols: EsTableColumn[] = [];\n    @Input() tableCols: EsTableColumn[] = [];\n    @Input() checkboxCols: CellCheckboxClickEvent[] = [];\n    // todo lepsi poslat jen pole hiddenCols, vcetne checked hodnot z parenta\n\n    @Output() clicked = new EventEmitter<CellCheckboxClickEvent>();\n    esIcon = EsIcon;\n    translates = EsGridTranslates;\n\n    clickHandler(col: CellCheckboxClickEvent, event) {\n        event.preventDefault();\n        event.stopPropagation();\n        if (!col.disabled) {\n            col.checked = !col.checked;\n            this.clicked.emit(col);\n        }\n    }\n\n    ngOnChanges(): void {\n        this.checkboxCols = [];\n        this.allTableCols.forEach(col => {\n            const visibleCol = this.tableCols.filter(({prop}) => prop === col.prop);\n            if (!visibleCol[0] && col.cellClass === CELL_CLASS_CHECKBOX) {\n                this.checkboxCols.push({\n                    id: this.row['id'],\n                    prop: col.prop.toString(),\n                    name: col.name,\n                    checked: this.row[col.prop] && this.row[col.prop].checkedData > 0,\n                    isRowGroup: true,\n                    disabled: this.row[col.prop].isDisabled,\n                });\n            }\n        });\n    }\n\n\n}\n","<button mat-icon-button\n        [matMenuTriggerFor]=\"menu\"\n        class=\"row-button\">\n    <es-icon [icon]=\"esIcon.MORE_HORIZ\"></es-icon>\n</button>\n<mat-menu #menu=\"matMenu\" class=\"group-menu\"\n          [overlapTrigger]=\"false\"\n          yPosition=\"below\"\n          xPosition=\"after\">\n    <button *ngFor=\"let col of checkboxCols\"\n            mat-menu-item\n            (click)=\"clickHandler(col, $event)\"\n            title=\"{{translates.CHECK_UNCHECK_ALL | translate}}\">\n        <mat-checkbox [checked]=\"col.checked\"\n                      [disabled]=\"col.disabled\"></mat-checkbox>\n        <span>{{col.name}}</span>\n    </button>\n</mat-menu>","import {takeWhile, distinctUntilChanged, debounceTime} from 'rxjs/operators';\nimport {\n    Component, ElementRef, EventEmitter, OnDestroy, Output, ViewChild\n} from '@angular/core';\nimport {Subject} from 'rxjs';\nimport {EsGridTranslates} from '../es-grid.translates';\n\n@Component({\n    selector: 'filter-field',\n    templateUrl: './filter-field.component.html',\n    styleUrls: ['./filter-field.component.scss']\n})\nexport class FilterFieldComponent implements OnDestroy {\n\n    @Output() updateFilter = new EventEmitter<string>();\n    @ViewChild('input', {static: false}) inputEl: ElementRef;\n\n    searchTerm$      = new Subject<string>();\n    isAlive = true;\n    value = '';\n    translates = EsGridTranslates;\n\n    constructor() {\n        this.searchTerm$.asObservable().pipe(debounceTime(400), distinctUntilChanged(), takeWhile(() => this.isAlive)).subscribe(val => {\n            this.updateFilter.emit(val);\n        });\n    }\n\n    filterSearch(value: string | null | undefined): void {\n        const searchValue = (value ?? '').toString();\n        this.value = searchValue;\n        this.searchTerm$.next(searchValue);\n        setTimeout(() => {\n            this.inputEl?.nativeElement?.focus();\n        }, 1000);\n        // todo z gridu output searching => predat es-formu ze se hleda at nefocusuje\n    }\n\n    onClear() {\n        this.value = '';\n        this.searchTerm$.next('');\n    }\n\n    ngOnDestroy() {\n        this.isAlive = false;\n    }\n}\n","<mat-form-field>\n    <input\n        #input\n        tabindex=\"-1\"\n        matInput\n        [ngModel]=\"value\"\n        (ngModelChange)=\"filterSearch($event)\"\n        placeholder=\"{{translates.SEARCHING | translate}}\"\n    >\n    <button *ngIf=\"value\" matSuffix mat-icon-button aria-label=\"Clear\" (click)=\"onClear()\">\n        <mat-icon>close</mat-icon>\n    </button>\n</mat-form-field>\n","import {ChangeDetectionStrategy, Component, EventEmitter, Input, Output} from '@angular/core';\nimport {EsIcon} from '@eurosat/icon';\nimport {EsGridTranslates} from '../es-grid.translates';\n\n@Component({\n    selector: 'row-group',\n    templateUrl: './row-group.component.html',\n    styleUrls: ['./row-group.component.scss'],\n    changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class RowGroupComponent {\n\n    @Input() row: any;\n    @Input() groupFieldTitle: string;\n    @Output() expandedGroup = new EventEmitter<any>();\n    esIcon = EsIcon;\n    translates = EsGridTranslates;\n\n    toggleExpandRowGroup(row) {\n        this.expandedGroup.emit(row);\n    }\n}\n","<span *ngIf=\"row?.isRowGroup\">{{row[groupFieldTitle]}}</span>\n<button *ngIf=\"row?.isRowGroup\"\n        mat-icon-button\n        class=\"expand-group-button\"\n        title=\"{{translates.EXPAND_COLLAPSE_GROUP | translate}}\"\n        (click)=\"toggleExpandRowGroup(row)\">\n    <es-icon\n            [style.transform]=\"row?.isRowGroupExpanded ? 'rotate(-90deg)' : 'rotate(0deg)'\"\n            [style.transition]=\"'0.5s transform'\"\n            [icon]=\"esIcon.KEYBOARD_ARROW_LEFT\"\n    ></es-icon>\n</button>\n<div *ngIf=\"row?.isRowGroup\" class=\"mask-row-group-scrollbar\"></div>\n","import {\n    Component, Input\n} from '@angular/core';\nimport {IGridIcons} from './grid-icons.interface';\n\n@Component({\n    selector: 'grid-icons',\n    templateUrl: './grid-icons.component.html',\n    styleUrls: ['./grid-icons.component.scss'],\n})\nexport class GridIconsComponent {\n    @Input() icons: IGridIcons[];\n}\n","<div>\n    <span class=\"icon\" *ngFor=\"let icon of icons\">\n            <ng-template #popoverContent>\n                <div *ngFor=\"let data of icon.data\">\n                    {{data}}\n                </div>\n            </ng-template>\n        <es-icon [color]=\"icon.color\"\n                  [showInPopover]=\"true\"\n                  [title]=\"icon.title\"\n                  [content]=\"icon.title == '' || icon.data == null || icon.data == '' || icon.data?.length == 0? null : popoverContent\"\n                  [themeColor]=\"icon.themeColor\"\n                  [icon]=\"icon.icon\">\n        </es-icon>\n    </span>\n</div>\n","import {Component, Input} from '@angular/core';\nimport {IGridImages} from './grid-images.interface';\n\n@Component({\n    selector: 'grid-images',\n    templateUrl: './grid-images.component.html',\n    styleUrls: ['./grid-images.component.scss'],\n\n})\nexport class GridImagesComponent {\n\n    @Input() images: IGridImages[];\n    style: string;\n\n    constructor(\n    ) {\n\n    }\n}\n","<div class=\"img-container\" *ngFor=\"let image of images\">\n    <div class=\"img-inner\"\n         [style.min-width.px]=\"image.colWidth > 0 ? image.colWidth : null\"\n    >\n        <img class=\"img-icon\" [src]=\"image.img\">\n    </div>\n    {{image.title}}\n</div>\n","import {\n    Component, Input, OnChanges, SimpleChanges\n} from '@angular/core';\nimport {DomSanitizer} from '@angular/platform-browser';\n\n@Component({\n    selector: 'grid-html',\n    templateUrl: './grid-html.component.html',\n    styleUrls: ['./grid-html.component.scss'],\n})\nexport class GridHtmlComponent implements OnChanges {\n\n    @Input() html: any;\n    safeHtml;\n\n    constructor( private sanitizer: DomSanitizer, ) {}\n\n    ngOnChanges(changes: SimpleChanges): void {\n        if (changes['html']) {\n            this.safeHtml = this.sanitizer.bypassSecurityTrustHtml(this.html);\n        }\n    }\n}\n","<div [innerHTML]=\"safeHtml\"></div>","import {\n    Component, EventEmitter, Input, Output\n} from '@angular/core';\nimport {EsTableColumn} from '../../model/es-table-column';\n\n@Component({\n    selector: 'grid-cell',\n    templateUrl: './grid-cell.component.html',\n    styleUrls: ['./grid-cell.component.scss'],\n})\nexport class GridCellComponent {\n    @Input() gridCell: any;\n    @Input() column: EsTableColumn;\n    @Input() parentWidth: number;\n\n    @Output() reload = new EventEmitter<boolean>();\n    @Output() buttonClick = new EventEmitter<any>();\n\n    TYPE_TEXT = 0;\n    TYPE_BUTTONS = 1;\n    TYPE_ICONS = 2;\n    TYPE_IMAGES = 3;\n    TYPE_HTML = 4;\n\n    onReload(event) {\n        this.reload.emit(event);\n    }\n\n    handleButtonClick($event) {\n        this.buttonClick.emit($event);\n    }\n\n}\n","<div class=\"cell-container\" *ngIf=\"gridCell['items'] !== undefined\">\n\n        <div *ngFor=\"let item of gridCell['items']\" [ngStyle]=\"gridCell['items'].length === 1 ? {width: '100%'} : null\">\n\n            <div *ngIf=\"item[0] == TYPE_TEXT\"> {{item[1]}}</div>\n\n            <es-buttons *ngIf=\"item[0] == TYPE_BUTTONS\"\n                        [parentWidth]=\"parentWidth\"\n                        [buttons]=\"item[1]\"\n                        (click)=\"$event.stopPropagation()\"\n                        (buttonClick)=\"handleButtonClick($event)\"\n                        (reload)=\"onReload($event)\">\n            </es-buttons>\n\n            <grid-icons *ngIf=\"item[0] == TYPE_ICONS\" [icons]=\"item[1]\"></grid-icons>\n\n            <grid-images *ngIf=\"item[0] == TYPE_IMAGES\" [images]=\"item[1]\"></grid-images>\n\n            <grid-html *ngIf=\"item[0] == TYPE_HTML\" [html]=\"item[1]\"></grid-html>\n        </div>\n</div>\n\n<div *ngIf=\"gridCell['items'] == undefined\"\n     [matTooltip]=\"column.config && column.config.tooltipVisible ? gridCell : null\">\n    {{gridCell}}\n</div>","import { takeWhile, distinctUntilChanged, debounceTime } from 'rxjs/operators';\nimport {\n    Component, EventEmitter, Input, OnDestroy, Output, OnInit, TemplateRef, ViewChild, ChangeDetectorRef,\n    ElementRef, OnChanges, SimpleChanges, HostListener, ChangeDetectionStrategy\n} from '@angular/core';\nimport { DatatableComponent } from '@swimlane/ngx-datatable';\nimport { TranslateService } from '@ngx-translate/core';\nimport { EsGridService } from './es-grid.service';\nimport { EsGrid } from './model/es-grid.interface';\nimport { EsGridPage } from './model/es-grid-page';\nimport { EsGridColumn } from './model/es-grid-column';\nimport { Subject } from 'rxjs';\n\nimport { CellCheckbox, CellCheckboxClickEvent } from './model/cell-checkbox-click-event.interface';\nimport { MatMenuTrigger } from '@angular/material/menu';\nimport { SimpleSnackBar } from '@angular/material/snack-bar';\nimport { animate, style, transition, trigger } from '@angular/animations';\nimport { HttpParams } from '@angular/common/http';\nimport { EsTableColumn } from './model/es-table-column';\nimport { IGridRowButton } from './model/row-button.interface';\nimport { IRowClicked } from './model/row-clicked.interface';\nimport { HttpService } from '@eurosat/http';\nimport { UrlSerializer } from '@angular/router';\nimport { EsIcon } from '@eurosat/icon';\nimport { EsSnackBar, EsSnackBarRef } from '@eurosat/snackbar';\nimport { EsButtonsComponent } from '@eurosat/buttons';\nimport { IRowsHeight } from './model/rows-height.interface';\nimport { EsGridParams } from './model/es-grid.params';\nimport { EsGridTranslates } from './es-grid.translates';\nimport {MatOptionSelectionChange} from '@angular/material/core';\nimport {EsResizedEvent} from '@eurosat/resized-event';\nimport {CELL_CLASS_CHECKBOX} from './es-grid.constants';\n\nexport class GridDataSource {\n    static JQGRID = 'jqgrid';\n    static ARRAY = 'array';\n}\n\n@Component({\n    selector: 'es-grid',\n    templateUrl: './es-grid.component.html',\n    styleUrls: ['./es-grid.component.scss'],\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    animations: [\n        trigger(\n            'enterAnimation', [\n                transition(':enter', [\n                    style({visibility: 'hidden', opacity: 0}),\n                    animate('500ms ease-in', style({visibility: 'visible', opacity: 1}))\n                ]),\n                // transition(':enter', [\n                //     style({transform: 'translateY(-100%)', opacity: 0}),\n                //     animate('200ms', style({transform: 'translateY(0)', opacity: 1}))\n                // ]),\n\n                // transition(':leave', [\n                //     style({transform: 'translateY(0)', opacity: 1}),\n                //     animate('200ms', style({transform: 'translateY(-100%)', opacity: 0}))\n                // ])\n\n            ]\n        )\n    ],\n})\nexport class EsGridComponent implements OnInit, OnDestroy, OnChanges {\n\n    @Input() gridUrl: string;\n    @Input() preloadRowsCount               = 50;\n    @Input() minVisibleActionButtons        = 2;\n    @Input() extraFilters: TemplateRef<any>;  // todo filters componenta    // todo zrusit menu, bude se otvirat nad gridem @Input filterTpl\n    @Input() settingTemplate: TemplateRef<any>;\n    @Input() actionGridButtons: EsButtonsComponent[]  = [];\n    @Input() dataSource: 'jqgrid' | 'array' = 'jqgrid';\n    @Input() footerButtons: TemplateRef<any>;\n    @Input() checkedRowsConfig: string;\n    @Input() rowsHeight: IRowsHeight        = {header: 50, row: 50, detailRowHeight: 50, footer: 50};\n    @Input() gridUrlParams: HttpParams      = null;\n    @Input() displaySearch                  = true;\n    @Input() position = 'left';\n    @Input() paramUserId = 'u_a';\n    @Input() gridJson: any;\n    @Input() pagedData: any;\n    @Input() initFromJson = true;\n    @Input() dynamicGridJson: {};\n    @Input() filterTpl: TemplateRef<any>;\n    @Input() sortTpl: TemplateRef<any>;\n    @Input() customFilterTpl: TemplateRef<any>;\n    @Input() addButtonIcon = '';\n    @Input() reorderable = false;\n    @Input() swapColumns = false;\n    @Input() reorderLockable = false;\n    /*\n    * pokud zadam [fixedPageSize] tak prenastavi i preloadRowsCount\n    * zobrazi select na pocet radku na strance\n    * vypne posuvnik a virtualizaci\n    * */\n    @Input() fixedPageSize: number = undefined;\n    @Input() fixedPageSizeOptions: number[] = [];\n    @Input() customOrder: (string | number)[] = undefined;\n\n    @Output() checkedRows              = new EventEmitter<any>();\n    @Output() gridReadyEmitter         = new EventEmitter<boolean>();\n    @Output() rowSelected              = new EventEmitter<IRowClicked>();\n    @Output() rowHover                 = new EventEmitter<{row: any}>();\n    @Output() checkedRowHover          = new EventEmitter<{row: any}>();\n    @Output() handleButtonClickEmitter = new EventEmitter<IGridRowButton>();\n    @Output() actionGridButtonsClick   = new EventEmitter<EsButtonsComponent>();\n    @Output() filterMenuClose          = new EventEmitter<any>();\n    @Output() settingMenuClose         = new EventEmitter<any>();\n    @Output() allTableRows             = new EventEmitter<any>();\n    @Output() requestParamsEmitter     = new EventEmitter<HttpParams>();\n    @Output() filterMenuOpenedEmitter  = new EventEmitter<any>();\n    @Output() addButtonClick           = new EventEmitter<any>();\n    @Output() reorder                  = new EventEmitter<any>();\n\n    @ViewChild(DatatableComponent, {static: false}) table: DatatableComponent;\n    // @ViewChild('cellTplActions') cellTplActions: TemplateRef<any>;\n    @ViewChild('cellTpl', {static: true}) cellTpl: TemplateRef<any>;\n    @ViewChild('expandBtnTpl', {static: true}) expandBtnTpl: TemplateRef<any>;\n    @ViewChild('headerTpl', {static: true}) headerTpl: TemplateRef<any>;\n    @ViewChild('checkboxRowTpl', {static: true}) checkboxRowTpl: TemplateRef<any>;\n    @ViewChild('checkboxCellTpl', {static: true}) checkboxCellTpl: TemplateRef<any>;\n    @ViewChild('filterMenuTrigger', {static: true}) filterMenuTrigger: MatMenuTrigger;\n    @ViewChild('settingMenuTrigger', {static: true}) settingMenuTrigger: MatMenuTrigger;\n\n    // @ViewChild('iconsTpl') iconsTpl: TemplateRef<any>;\n    // @ViewChild('imgIconsTpl') imgIconsTpl: TemplateRef<any>;\n    translates = EsGridTranslates;\n\n    gridReady              = false;\n    parentElWidth           = 0;\n    dataLoading            = false;\n    isAlive                = true;  // takeWhile(() => this.isAlive) == handle multiple unsubscribe()\n    media                   = 'xs'; // xs   |sm|md|   lg|xl\n    hasRowCheckboxCol      = false;\n    rowHeight               = 50;\n    headerHeight            = 50;\n    footerHeight            = 50;\n    CHECKBOX_COL_WIDTH      = 43;\n    EXPAND_COL_WIDTH        = 43;\n    expandedRowHeight       = 0;\n    hasExpandedRow         = false;\n    hasActionCol           = false;\n    hasRowClassCol         = false; // z vrchu pridany hidden sloupec 'rowClass'\n    actionColWidth          = 50;\n    ACTION_COL_BUTTON_WIDTH = 43;   // nekde je tam o par px navic, asi kuli te vlne ?\n    ACTION_COL_PADDING = 10;\n    actionColButtonCount = 1;\n    isCellCheckedChange = false;\n    virtualization = true; // todo test vypina virtualizaci\n\n    grouping = false;\n    groupField: string;         // 'branch_id'\n    groupFieldTitle: string;    // 'branch', neni jqgrid option ! - pridano pro AN gridy + $col->option->index = '`branch_office`.`name`'\n    groupCount = 0;\n    lastSort: {dir: string, prop: string};\n\n    dynamicGrid: EsGrid;\n    page = new EsGridPage();\n    params: HttpParams = new HttpParams;\n    checkedRow: Array<boolean> = [];\n    checkedRowsCount = 0;\n\n    selectedRows = [];\n    prewSelectedRows = [];\n    rowClickedCount = 0;\n    prewRowIndexClicked = 0;\n\n    tableRows: any[] = [];\n    tableRowsGrouped: any[] = [];\n    tableRowsPreArrayFilter: any[] = [];\n    visibleTableCols: EsTableColumn[] = [];\n    allTableCols: EsTableColumn[] = [];\n    hiddenCols: string[] = ['index', 'isAppended', 'rowClass'];\n\n    tableMessages = {\n        emptyMessage: '',\n        totalMessage: '',\n    };\n\n    filterAbleColumns = false;\n\n    searchTerm$ = new Subject<string>();\n    snackBarRef: EsSnackBarRef<SimpleSnackBar>;\n\n    externalSorting = true;\n    externalPaging = true;\n\n    esIcon = EsIcon;\n    fetchedPages: number[] = [];\n    reinitTimeout;\n    startIndex = 0;\n    displayGrid = false;\n    isFirstDataRequest = true;\n    fetchNext = false;\n    forceSelectFirstRow = false;\n    filterMenuOpened = false;\n    sortMenuOpened = false;\n    scrollbarV = true;\n    fixedTableRows = [];\n    _fixedPageSize: number = undefined;\n    fixedPageSizeChange = false;\n    reorderLock = true;\n    gridHeight: number;\n\n    @HostListener('mouseleave', ['$event'])\n    onMouseLeave(event) {\n        this.rowHover.emit({row: {}});\n        this.checkedRowHover.emit({row: {}});\n    }\n\n    constructor (\n        private el: ElementRef,\n        private translate: TranslateService,\n        private gridService: EsGridService,\n        private snackBar: EsSnackBar,\n        private cd: ChangeDetectorRef,\n        private http: HttpService,\n        private urlSerializer: UrlSerializer,\n    ) {\n        this.page.pageNumber = 0;\n        this.searchTerm$.asObservable().pipe(debounceTime(400), distinctUntilChanged(), takeWhile(() => this.isAlive), ).subscribe(val => {\n            this.updateFilter(val);\n        });\n\n        // select radku pri checkboxable/multiselect verzi spusti navic checked\n        this.rowSelected.subscribe(rc => {\n            if (this.dynamicGrid.options.multiselect) {\n                if (rc && rc.row[0] && rc.row[0].index) {\n                    this.unCheckAllRows(null, false);\n                    this.toggleCheckedRow(rc.row[0].index, null, true);\n                }\n            }\n        });\n    }\n\n    ngOnInit() {\n        this.tableMessages = {\n            emptyMessage: this.translate.instant(this.translates.NO_RECORDS),\n            totalMessage: this.translate.instant(this.translates.TOTAL),\n        };\n\n        // this.reInitGrid();  // staci volat z OnChanges\n        if (this.customOrder && this.customOrder.length > 0) {\n            const defaultCols = this.allTableCols.map(x => x.prop);\n            const newCols = defaultCols.filter(x => !this.customOrder.includes(x));\n            newCols.forEach(x => {\n                const newColIndex = defaultCols.indexOf(x);\n                if (newColIndex > 0) {\n                    this.customOrder.splice(this.customOrder.indexOf(defaultCols[newColIndex - 1]) + 1, 0, x);\n                } else {\n                    this.customOrder.splice(0, 0, x);\n                }\n            });\n        }\n    }\n\n    ngOnChanges(changes: SimpleChanges): void {\n        if (changes['gridUrl'] || changes['gridUrlParams']) {\n            clearTimeout(this.reinitTimeout);\n            this.reinitTimeout = setTimeout(() => {\n                this.isFirstDataRequest = true;\n                this.reInitGrid();\n            }, 300);\n        }\n        if (changes['checkedRowsConfig'] && this.checkedRowsConfig) {\n            this.checkRowsFromConfigString();\n        }\n\n        if (changes['gridJson'] &&\n            this.gridJson !== undefined &&\n            this.gridJson !== null &&\n            this.initFromJson\n        ) {\n            this.isFirstDataRequest = true;\n            this.reInitGrid();\n        }\n        if (changes['pagedData'] && this.pagedData !== undefined && this.pagedData !== null) {\n            if (this.dataSource === GridDataSource.JQGRID) {\n                this.loadingData();\n            } else {\n                this.setDataFromArray();\n            }\n        }\n        if (changes['fixedPageSize'] && this.fixedPageSize !== undefined) {\n            this._fixedPageSize = this.fixedPageSize;\n            this.preloadRowsCount = this._fixedPageSize;\n            this.virtualization = false;\n            this.scrollbarV = false;\n        }\n    }\n\n    reInitGrid() {\n        // reset\n        this.reload();\n        this.visibleTableCols = [];\n        this.allTableCols = [];\n        this.hiddenCols = ['index', 'isAppended', 'rowClass'];\n        this.hasRowCheckboxCol = false;\n        this.hasActionCol = false;\n        this.grouping = false;\n        this.groupField = '';\n        this.groupFieldTitle = '';\n        this.selectedRows = [];\n        this.tableRows = [];\n        this.tableRowsGrouped = [];\n\n        // init\n        if (this.dataSource === 'jqgrid') {\n            this.initFromJQ();\n        }\n        if (this.dataSource === 'array') {\n            this.initFromArray();\n        }\n        this.resetDimensions();\n    }\n\n    initFromArray() {\n        if (this.gridUrl || this.initFromJson) {\n            this.gridReady = false;\n            this.displayGrid = false;\n            this.externalSorting = false;\n            this.externalPaging = false;\n\n            if (this.initFromJson) {\n                this.initGridFromJson();\n            } else {\n                this.dynamicGrid = {};\n\n                // nastavim tento typ jako 2 level array s groupingem\n                // mozna pak nastavovat pres input primo dynamicGrid.options ...\n                // sortable zatim false ...\n                this.dynamicGrid.options = {\n                    url: this.gridUrl,\n                    multiselect: false,\n                    grouping: true,\n                    selectable: true,\n                    autoSelectFirstRow: true,\n                };\n\n                this.dynamicGrid.columns = [\n                    {\n                        title: 'ID',\n                        name: 'id',\n                        index: '',\n                        sortable: false,\n                        filter: {},\n                        visibility: EsGridService.AN_COLUMN_VISIBILITY_HIDDEN,\n                        checkboxable: false,\n                        disabled: false,\n                    },\n                    {\n                        title: 'Group',\n                        name: 'group',\n                        index: '',\n                        sortable: false,\n                        filter: {},\n                        visibility: EsGridService.AN_COLUMN_VISIBILITY_HIDDEN,\n                        checkboxable: false,\n                        disabled: false,\n                    },\n                    {\n                        title: 'Název',\n                        name: 'name',\n                        index: '',\n                        sortable: false,\n                        filter: {},\n                        visibility: EsGridService.AN_COLUMN_VISIBILITY_MOBILE,\n                        checkboxable: false,\n                        disabled: false,\n                    }\n                ];\n\n                for (const column of this.dynamicGrid.columns) {\n                    this.visibleTableCols.push({\n                        prop: column.name,\n                        name: column.title,\n                        sortable: column.sortable,\n                        headerClass: this.getHeaderClass(column),\n                        headerTemplate: this.headerTpl,\n                        cellTemplate: this.cellTpl,\n                        cellClass: 'grid-cell',\n                        draggable: false,\n                        resizeable: false,\n                        config: column,\n                    });\n                }\n\n                this.filterAbleColumns = true;\n                this.allTableCols = this.visibleTableCols;\n\n                // init grouping\n                if (this.dynamicGrid.options.grouping) {\n                    this.grouping = true;\n                    this.groupField = 'group';\n                    this.groupFieldTitle = 'group';\n                    if (this.hiddenCols.lastIndexOf(this.groupField) === -1) {\n                        this.hiddenCols.push(this.groupField);\n                    }\n                    if (this.hiddenCols.lastIndexOf(this.groupFieldTitle) === -1) {\n                        this.hiddenCols.push(this.groupFieldTitle);\n                    }\n                }\n\n\n                // get data hned\n                this.gridService.getArrayGridData(this.gridUrl).pipe(takeWhile(() => this.isAlive)).subscribe(res => {\n                    const rows = [];\n                    for (const group in res) {\n                        if (res.hasOwnProperty(group)) {\n                            for (const opt in res[group]) {\n                                if (res[group].hasOwnProperty(opt)) {\n                                    rows.push({id: opt, group: group, name: res[group][opt]});\n                                }\n                            }\n                        }\n                    }\n\n                    this.actionColButtonCount = 0;\n                    this.tableRows = rows;\n                    this.tableRowsPreArrayFilter = rows;    // bkp pro jiny zpusob filtrovani\n                    this.groupRows();\n                    this.reIndexRows();\n                    this.gridReadyEmitter.emit(true);\n\n                    this.page.totalElements = rows.length;\n                    this.autoSelectFirstRow();\n                    this.gridReady = true;\n                    this.displayGrid = true;\n                    this.resetDimensions();\n                });\n            }\n        }\n    }\n\n    initGridFromJson() {\n        this.dynamicGrid = EsGridService.fromJson(this.gridJson, '');\n        this.setColumn();\n        this.resetDimensions();\n        this.requestParamsEmitter.emit();\n        this.gridReady = true;\n    }\n\n    setDataFromArray() {\n        const pagedData = EsGridService.pagedDataFromJson(this.pagedData, this.dynamicGrid, this.page);\n        this.actionColButtonCount = 0;\n        this.tableRows = pagedData.data;\n        this.tableRowsPreArrayFilter = pagedData.data;    // bkp pro jiny zpusob filtrovani\n        this.groupRows();\n        this.reIndexRows();\n        this.gridReadyEmitter.emit(true);\n\n        this.page.totalElements = pagedData.data.length;\n        this.autoSelectFirstRow();\n        this.displayGrid = true;\n\n        this.cd.markForCheck();\n        if (pagedData.data.length > 0 && pagedData.data[0].actions && pagedData.data[0].actions.items\n            && pagedData.data[0].actions.items[0][1]) {\n            if (this.actionColButtonCount !== pagedData.data[0].actions.items[0][1].length) {\n                this.actionColButtonCount = pagedData.data[0].actions.items[0][1].length;\n                this.resetDimensions();\n            }\n        }\n    }\n\n    initFromJQ() {\n        // puvodni verze\n        if (this.gridUrl || this.gridJson) {\n            this.gridReady = false;\n            if (!this.fixedPageSizeChange) {\n                this.displayGrid = false;\n            }\n            this.externalSorting = true;\n            this.externalPaging = true;\n            this.cd.markForCheck();\n            if (this.initFromJson) {\n                this.dynamicGrid = EsGridService.fromJson(this.gridJson, '');\n                this.setColumn();\n                this.totalPages(this.gridJson.records);\n            } else {\n                this.gridService.getDynamicGrid(this.gridUrl, this.gridUrlParams).pipe(\n                    takeWhile(() => this.isAlive)\n                ).subscribe(dynamicGrid => {\n                    this.dynamicGrid = dynamicGrid;\n                    this.setColumn();\n                    // todo total by melo jit poslat uz v tom prvnim requestu\n                    this.gridService.getTotalRecords(this.dynamicGrid.options.url, this.gridUrlParams)\n                        .pipe(\n                            takeWhile(() => this.isAlive)\n                        ).subscribe(total => {\n                        this.totalPages(total);\n                    });\n                });\n            }\n        }\n    }\n\n    totalPages(total) {\n        if (this._fixedPageSize > 0) {\n            const pages = Math.ceil(total / this._fixedPageSize);\n            this.fixedTableRows = [];\n            for (let i = 0; i < pages; i++) {\n                this.fixedTableRows[i] = [];\n                for (let j = 0; j < this._fixedPageSize; j++) {\n                    this.fixedTableRows[i].push({}); // prazdne objekty na radku, kvuli vysce table\n                }\n            }\n            this.page.size = this._fixedPageSize;\n            this.page.totalPages = pages;\n            this.page.pageNumber = 0;\n        }\n        this.page.totalElements = total;\n        this.gridReady = true;\n        this.fixedPageSizeChange = false;\n        this.resetDimensions();\n        this.reloadData();\n    }\n\n    setColumn() {\n        if (this.dynamicGrid.options.multiselect) {\n            this.hasRowCheckboxCol = true;\n            this.visibleTableCols.push({\n                prop: 'checkbox',\n                name: '',\n                cellTemplate: this.checkboxRowTpl,\n                width: this.CHECKBOX_COL_WIDTH,\n                resizeable: false,\n                sortable: false,\n                draggable: false,\n                canAutoResize: false,\n                config: null,\n            });\n        }\n\n        // first column = expand row\n        this.visibleTableCols.push({\n            prop: 'expand',\n            name: '',\n            cellTemplate: this.expandBtnTpl,\n            cellClass: 'grid-expand-cell',\n            width: this.EXPAND_COL_WIDTH,\n            resizeable: false,\n            sortable: false,\n            draggable: false,\n            canAutoResize: false,\n            config: null,\n        });\n\n        // init columns\n        for (const column of this.dynamicGrid.columns) {\n            if (column.name === 'actions') {\n                this.hasActionCol = true;\n                // actions column\n                this.visibleTableCols.push({\n                    prop: column.name,\n                    name: '', // column.title,\n                    cellTemplate: this.cellTpl,\n                    cellClass: 'grid-cell cell-actions',\n                    headerTemplate: this.headerTpl,\n                    headerClass: 'header-action xs-visible',\n                    sortable: false,\n                    headerCheckboxable: false,   // checkboxable => prestylovat??\n\n                    width: this.actionColWidth,\n                    canAutoResize: false,\n                    resizeable: true,\n                    config: column,\n                });\n            } else if (column.name === 'rowClass') {\n                this.hasRowClassCol = true;\n            } else if (column.checkboxable) {\n                this.visibleTableCols.push({\n                    prop: column.name,\n                    name: column.title,\n                    sortable: column.sortable,\n                    cellTemplate: this.checkboxCellTpl,\n                    cellClass: 'grid-cell ' + CELL_CLASS_CHECKBOX,\n                    headerTemplate: this.headerTpl,\n                    headerClass: this.getHeaderClass(column),\n                    headerCheckboxable: false,\n                    config: column,\n                });\n            } else {\n                this.visibleTableCols.push({\n                    prop: column.name,\n                    name: column.title,\n                    sortable: column.sortable,\n                    headerTemplate: this.headerTpl,\n                    headerClass: this.getHeaderClass(column),\n                    cellTemplate: this.cellTpl,\n                    cellClass: this.getCellClass(column),\n                    config: column,\n                    canAutoResize: column.width <= 0,\n                    // checkboxable: true,\n                    // filter { render:true } ... nema datatable ekvivalent\n\n                });\n            }\n\n        }\n\n        this.filterAbleColumns = this.dynamicGrid.columns.filter(({filter}) => filter['render'] === true).length > 0;\n\n        this.allTableCols = this.visibleTableCols;\n\n        // init grouping\n        if (this.dynamicGrid.options.grouping) {\n            this.grouping = true;\n            this.groupField = this.dynamicGrid.options.groupingView.groupField[0];  // todo array ?\n            this.groupFieldTitle = this.dynamicGrid.options.groupingView.groupFieldTitle[0];\n            if (this.hiddenCols.lastIndexOf(this.groupField) === -1) {\n                this.hiddenCols.push(this.groupField);\n            }\n            if (this.hiddenCols.lastIndexOf(this.groupFieldTitle) === -1) {\n                this.hiddenCols.push(this.groupFieldTitle);\n            }\n        }\n    }\n\n    resetDimensions() {\n        if (this.gridReady) {\n\n            if (this.parentElWidth <= 600) {\n                this.media = 'xs';\n            } else if (this.parentElWidth > 600 && this.parentElWidth < 1280) {\n                this.media = 'md';\n            } else if (this.parentElWidth >= 1280) {\n                this.media = 'lg';\n            }\n            this.responsiveFilterCols();\n            this.datatableRecalculate();\n        }\n    }\n\n    getHeaderClass(column: EsGridColumn) {\n        // todo strings => static const\n        let classes = '';\n        if (column.visibility === EsGridService.AN_COLUMN_VISIBILITY_DESKTOP) {\n            classes = 'lg-visible';\n        } else if (column.visibility === EsGridService.AN_COLUMN_VISIBILITY_TABLET) {\n            classes = 'md-visible';\n        } else if (column.visibility === EsGridService.AN_COLUMN_VISIBILITY_MOBILE) {\n            classes = 'xs-visible';\n        } else if (column.visibility === EsGridService.AN_COLUMN_VISIBILITY_HIDDEN) {\n            classes = 'hidden-visible';\n            if (this.hiddenCols.indexOf(column.name) === -1) {\n                this.hiddenCols.push(column.name);\n            }\n        }\n\n        // pro uzky sloupec pridany mensi paddingy ...\n        if (column.width && column.width <= 40) {\n            classes += ' thin-grid-col';\n        }\n        if (column.classes) {\n            classes += ' ' + column.classes;\n        }\n\n        return classes;\n    }\n\n    getCellClass(column: EsGridColumn) {\n        let classes = 'grid-cell';\n        if (column.width && column.width <= 40) {\n            classes += ' thin-grid-col';\n        }\n        if (column.classes) {\n            classes += ' ' + column.classes;\n        }\n        return classes;\n    }\n\n    recalculateActionColWidth() {\n        let visibleButtons = 1;\n\n        if (this.media === 'xs') {\n            // MOBILE\n            if (this.actionColButtonCount > 0) {\n                visibleButtons = 1;\n            }\n        } else if (this.media === 'sm' || this.media === 'md') {\n            // TABLET\n            if (this.actionColButtonCount >= 2) {\n                visibleButtons = 2;\n            }\n        } else if (this.media === 'lg' || this.media === 'xl') {\n            // DESKTOP\n            if (this.actionColButtonCount >= 3) {\n                visibleButtons = 3;\n            } else if (this.actionColButtonCount === 2) {\n                visibleButtons = 2;\n            } else if (this.actionColButtonCount === 1) {\n                visibleButtons = 1;\n            }\n        }\n\n        if (visibleButtons < this.minVisibleActionButtons) {\n            if (this.actionColButtonCount >= this.minVisibleActionButtons) {\n                visibleButtons = this.minVisibleActionButtons;\n            }\n        }\n\n        // nastaveni sirky\n        this.actionColWidth = this.ACTION_COL_BUTTON_WIDTH * visibleButtons + this.ACTION_COL_PADDING;\n    }\n\n    responsiveFilterCols() {\n        this.closeExpandedRows();\n        this.expandedRowHeight = 0;\n\n        if (this.media === 'xs') {\n            this.visibleTableCols = this.allTableCols.filter(col => {\n                let $return = false;\n                if (col.headerClass && col.headerClass.toString().includes('xs-visible')) {\n                    $return = true;\n                }\n                if (col.config && col.config.visibility && col.config.visibility > 50 && this.parentElWidth > col.config.visibility) {\n                    // pokud se zada visibilita v px\n                    $return = true;\n                }\n                if (col.prop === 'expand') {\n                    $return = false;\n                    this.allTableCols.filter(c => {\n                        if (c.headerClass) {\n                            if (c.headerClass.toString().includes('md-visible')\n                                || c.headerClass.toString().includes('lg-visible')) {\n                                $return = true;\n                            }\n                        }\n                    });\n                }\n                if (col.prop === 'checkbox') {\n                    $return = true;\n                }\n                if (col.prop === this.groupField) {\n                    $return = false;\n                }\n                if (col.prop === this.groupFieldTitle) {\n                    $return = false;\n                }\n                return $return;\n            });\n            this.setExpandedRowHeight();\n        } else if (this.media === 'sm' || this.media === 'md') {\n            this.visibleTableCols = this.allTableCols.filter(col => {\n                let $return = false;\n                if (col.headerClass) {\n                    if (col.headerClass.toString().includes('md-visible')\n                        || col.headerClass.toString().includes('xs-visible')) {\n                        $return = true;\n                    }\n                }\n                if (col.config && col.config.visibility && col.config.visibility > 50 && this.parentElWidth > col.config.visibility) {\n                    // pokud se zada visibilita v px\n                    $return = true;\n                }\n                if (col.prop === 'expand') {\n                    $return = false;\n                    this.allTableCols.filter(c => {\n                        if (c.headerClass) {\n                            if (c.headerClass.toString().includes('lg-visible')) {\n                                $return = true;\n                            }\n                        }\n                    });\n                }\n                if (col.prop === 'checkbox') {\n                    $return = true;\n                }\n                if (col.prop === this.groupField) {\n                    $return = false;\n                }\n                if (col.prop === this.groupFieldTitle) {\n                    $return = false;\n                }\n                return $return;\n            });\n            this.setExpandedRowHeight();\n        } else if (this.media === 'lg' || this.media === 'xl') {\n            this.visibleTableCols = this.allTableCols.filter(col => {\n                let $return = false;\n                if (col.headerClass) {\n                    if (col.headerClass.toString().includes('lg-visible')\n                        || col.headerClass.toString().includes('md-visible')\n                        || col.headerClass.toString().includes('xs-visible')) {\n                        $return = true;\n                    }\n                }\n                if (col.config && col.config.visibility && col.config.visibility > 50 && this.parentElWidth > col.config.visibility) {\n                    // pokud se zada visibilita v px\n                    $return = true;\n                }\n                if (col.prop === 'checkbox') {\n                    $return = true;\n                }\n                if (col.prop === this.groupField) {\n                    $return = false;\n                }\n                if (col.prop === this.groupFieldTitle) {\n                    $return = false;\n                }\n                return $return;\n            });\n        } else {\n            // this.visibleTableCols = this.allTableCols;\n            this.visibleTableCols = this.allTableCols.filter(col => {\n                let $return = false;\n                if (col.prop !== 'expand') {\n                    $return = true;\n                }\n                if (col.prop === this.groupField) {\n                    $return = false;\n                }\n                if (col.prop === this.groupFieldTitle) {\n                    $return = false;\n                }\n                return $return;\n            });\n        }\n\n        if (this.visibleTableCols) {\n            for (const col of this.visibleTableCols) {\n                if (col.prop !== 'expand'\n                    && col.prop !== 'checkbox'\n                    && col.prop !== this.groupField\n                    && col.prop !== this.groupFieldTitle\n                ) {\n                    col.isFirstColumn = true;\n                    break;\n                }\n            }\n        }\n\n        // sjednoceni sirek po pridani sloupcu\n        // ta datatable si to umi prepocitat sama, ale nejak to drhne, takto lepsi\n        this.updateColWidths();\n    }\n\n    datatableRecalculate() {\n        // jeste rychlejsi recalculate\n        this.tableRowsGrouped = this.tableRowsGrouped.slice();\n        this.cd.markForCheck();\n\n        // 100% fcni rychla verze recalculate\n        // this.tableRowsGrouped = [].concat(this.tableRowsGrouped);\n        // this.cd.markForCheck();\n\n        // zatim asi nejlepsi verze recalculate ??????????\n\n        // this.footerHeight += 1;\n        // if (this.isAlive) {\n        //     this.cd.detectChanges();\n        //     setTimeout(() => {\n        //         if (this.table) {\n        //             this.table.recalculate();\n        //             this.footerHeight -= 1;\n        //             // this.cdr.detectChanges();\n        //         }\n        //     }, 0);\n        // }\n    }\n\n    onGridResized(e: EsResizedEvent) {\n        if (e.newWidth > 0 && e.newWidth !== e.oldWidth) {\n            this.parentElWidth = e.newWidth;\n            this.resetDimensions();\n        }\n        if (this.gridReady) {\n            // this.table.recalculate();\n            this.datatableRecalculate();\n        }\n    }\n\n    setExpandedRowHeight() {\n        let hiddenCols = 0;\n        this.allTableCols.forEach(col => {\n            const isColVisible = this.visibleTableCols.filter(({prop}) => prop === col.prop)[0];\n            if (!isColVisible && this.hiddenCols.indexOf(col.prop.toString()) === -1 && col.prop !== 'expand') {\n                hiddenCols++;\n            }\n        });\n        if (hiddenCols > 0) {\n            this.expandedRowHeight = hiddenCols * this.rowsHeight.detailRowHeight; // + 25??\n        } else { this.expandedRowHeight = 0; }\n\n    }\n\n    updateColWidths() {\n        this.recalculateActionColWidth();\n\n        let tableWidth = 300;   // todo sirka pri initu ?\n        if (this.table && this.table._innerWidth) {\n            tableWidth = this.table._innerWidth;\n        }\n\n\n        let count = this.visibleTableCols.length;\n        let firstIdx = 0;\n        let lastIdx = this.visibleTableCols.length - 1;\n        if (this.hasRowCheckboxCol) {\n            tableWidth -= this.CHECKBOX_COL_WIDTH;\n            firstIdx++;                         // - checkbox col\n            count--;\n        }\n        if (this.expandedRowHeight > 0) {\n            tableWidth -= this.EXPAND_COL_WIDTH;\n            firstIdx++;                         // - expand col\n            count--;\n        }\n        if (this.hasActionCol) {\n            tableWidth -= this.actionColWidth;\n            lastIdx--;                          // - action col\n            count--;\n        }\n\n\n        this.visibleTableCols.forEach((col) => {\n            if (col.config && col.config.width) {\n                tableWidth -= col.config.width;\n                count--;\n            }\n        });\n\n\n        this.visibleTableCols.forEach((col, index) => {\n            if (index >= firstIdx && index <= lastIdx) {\n                col.width = (tableWidth / count);\n            }\n\n            if (col.config && col.config.width) {\n                col.width = col.config.width;\n            }\n\n            if (col.prop === 'actions') {\n                col.width = this.actionColWidth;\n            }\n        });\n\n        this.datatableRecalculate();\n    }\n\n    toggleExpandRow(row, e) {\n        e.preventDefault();\n        e.stopPropagation();\n        this.hasExpandedRow = true;\n        this.table.rowDetail.toggleExpandRow(row);\n    }\n\n    closeExpandedRows() {\n        if (this.table && this.hasExpandedRow) {\n            this.table.rowDetail.collapseAllRows();\n            this.hasExpandedRow = false;\n        }\n    }\n\n    getRowDetailCols(row) {\n        const hCols = [];\n        for (const rProp in row) {\n            if (row.hasOwnProperty(rProp) && this.hiddenCols.indexOf(rProp) === -1) {\n                const tableCol = this.allTableCols.filter(({prop}) => prop === rProp);\n                const visibleCol = this.visibleTableCols.filter(({prop}) => prop === rProp);\n                if (!visibleCol[0]) {\n                    hCols.push({\n                        prop: rProp,\n                        name: tableCol[0].name,\n                        data: row[rProp] ? row[rProp] : '',\n                        isObject: typeof row[rProp] === 'object',\n                    });\n                }\n            }\n        }\n        return hCols;\n    }\n\n    trackNone() {\n        // performance optimization\n        return undefined;\n    }\n\n    onDetailToggle(event) {\n        // console.log('Detail Toggled', event);\n    }\n\n    onRowGroupToggle() {\n        // console.log('Detail Toggled', event);\n    }\n\n    fetchParams() {\n        const actualRow = this.page.pageNumber * this.page.size;  // 0, 15, 30, 45 ...\n        // from budou intervaly po 100 radcich (this.preloadRowsCount)\n        const preloadRowsCount = this.preloadRowsCount;\n        let page = Math.floor(actualRow / preloadRowsCount) + 1;  // serverPage, server ma page + 1 !!\n        let from = (page - 1) * preloadRowsCount;\n        if (from < 0) { from = 0; }\n        const maxPages = Math.ceil(this.page.totalElements / preloadRowsCount);\n        let to = from + preloadRowsCount;\n        let doFetch = false;\n        const halfRows = Math.floor(preloadRowsCount / 2);\n\n        // fetch actual ?\n        if (this.fetchedPages.indexOf(page) === -1) {\n            doFetch = true;\n        }\n\n        const prevDistance = actualRow - from;   // pocet radku od predchoziho fetch bloku (rows)\n        const nextDistance = to - actualRow;     // pocet radku od dalsiho fetch bloku (rows)\n\n\n        // todo: possible bug where on grid reload only one page reloads\n        // fetch previous ?\n        if (prevDistance < halfRows && !doFetch) {\n            if (page > 1) {\n                if (this.fetchedPages.indexOf(page - 1) === -1) {\n                    doFetch = true;\n                    page = page - 1;\n                    from = from - preloadRowsCount;\n                    to = to - preloadRowsCount;\n                }\n            }\n        }\n\n        // fetch next ?\n        if (nextDistance < halfRows && !doFetch) {\n            if (page < maxPages) {\n                if (this.fetchedPages.indexOf(page + 1) === -1) {\n                    doFetch = true;\n                    page = page + 1;\n                    from = from + preloadRowsCount;\n                    to = to + preloadRowsCount;\n                }\n            }\n        }\n\n        // pokud nacitam stranku na rozmezi dvou preloadRowsCount tak chci stahnout oba preloadRowsCount\n        if (this.fetchNext) {\n            this.fetchNext = false;\n        } else  {\n            if ((actualRow + this.page.size > preloadRowsCount) && this._fixedPageSize === undefined ) {\n                this.fetchNext = true;\n            }\n        }\n\n        return {from: from, to: to, page: page, doFetch: doFetch};\n    }\n\n\n    /**\n     * Populate the table with new data based on the page number\n     * @param pageInfo Current page info\n     */\n    setPage(pageInfo) {\n        if (this.dataSource === 'jqgrid' && this.page.pageNumber !== pageInfo.offset) {\n            this.page.pageNumber = pageInfo.offset;\n            this.page.size = pageInfo.pageSize;\n            this.page.totalPages = Math.floor(this.page.totalElements / this.page.size);\n            this.getPageData();\n        }\n    }\n\n    reloadData() {\n        this.reload();\n        this.getPageData();\n    }\n\n    getPageData() {\n        const fp = this.fetchParams();\n        if (!fp.doFetch) { return; }\n        const rows = fp.to - fp.from;\n        const page = fp.page;\n        const startIndex = fp.from;\n        this.startIndex = startIndex;\n        this.fetchedPages.push(page);\n\n        this.params = this.params.set('rows', rows.toString());\n        this.params = this.params.set('page', page.toString());\n        this.params = this.params.set('startIndex', startIndex.toString());\n\n        // groupSort ?\n        if (this.grouping) {\n            const groupSidx = this.getColumnByName(this.groupFieldTitle).index;\n            const groupSord = 'asc';\n\n            if (this.lastSort) {\n                // +onSort dalsi sloupec ?\n                this.params = this.params.set(\n                    EsGridParams.SORT_INDEX, groupSidx + ' ' + groupSord + ', ' + this.getColumnByName(this.lastSort['prop']).index);\n                this.params = this.params.set(\n                    EsGridParams.SORT_DIRECTION, this.lastSort['dir']);\n            } else {\n                // vychozi razeni pri groupingu\n                this.params = this.params.set(\n                    EsGridParams.SORT_INDEX, groupSidx);\n                this.params = this.params.set(\n                    EsGridParams.SORT_DIRECTION, groupSord);\n            }\n        }\n\n        this.loadingIndicator(true);\n\n        if (this.initFromJson) {\n            this.requestParamsEmitter.emit(this.params);\n        } else {\n            this.gridService.getDynamicGridPagedData(this.dynamicGrid, this.page, this.params, this.gridUrlParams)\n                .pipe(takeWhile(() => this.isAlive))\n                .subscribe(pagedData => {\n                    this.setPagedData(pagedData, this.startIndex);\n                });\n        }\n    }\n\n    loadingData() {\n        const pagedData = EsGridService.pagedDataFromJson(this.pagedData, this.dynamicGrid, this.page);\n        this.setPagedData(pagedData, this.pagedData.startIndex);\n    }\n\n    setPagedData(pagedData, start) {\n        start = start ?? this.startIndex;\n        if (this.fetchNext) {\n            this.getPageData();\n        }\n\n        // uplne na prase zjisteni poctu buttonu.. predelat!!!!!\n        if (pagedData.data.length > 0 && pagedData.data[0].actions && pagedData.data[0].actions.items\n            && pagedData.data[0].actions.items[0][1]) {\n            if (this.actionColButtonCount !== pagedData.data[0].actions.items[0][1].length) {\n                this.actionColButtonCount = pagedData.data[0].actions.items[0][1].length;\n                this.resetDimensions();\n            }\n        }\n\n\n        setTimeout(() => {\n            this.loadingIndicator(false);\n        }, 0);\n\n        if (pagedData.elementCountChanged) {\n            this.reload();\n        }\n\n        const tRows = [...this.tableRows];\n        const fixedRows = [];\n        let i = 0;\n        for (const row of pagedData.data) {\n            tRows[start + i] = row;\n            i++;\n            fixedRows.push(row);\n        }\n        this.tableRows = tRows;\n        this.fixedTableRows[pagedData.fetchedPage - 1] = fixedRows;\n        const groups = this.groupRows();\n        if (groups > 0) {\n            this.initGroupCheckboxable();\n\n            // todo celkem po rowgroupingu\n            // pagedData.page.totalElements += groups;\n            // this.reload(true);\n        }\n\n        this.reIndexRows();\n        this.allTableRows.emit(this.tableRows);\n        this.gridReadyEmitter.emit(true);   // todo asi spatne to by melo emitnout jen poprve\n\n        // prvni radek auto selected\n        this.displayGrid = true;\n\n        if (!this.isFirstDataRequest && this.forceSelectFirstRow) {\n            this.selectFirstRow();\n            this.forceSelectFirstRow = false;\n        }\n\n        this.autoSelectFirstRow();\n        this.cd.detectChanges();\n    }\n\n\n    autoSelectFirstRow() {\n\n        if (this.dynamicGrid.options.selectable\n            && this.dynamicGrid.options.autoSelectFirstRow\n            && this.isFirstDataRequest\n            && this.selectedRows.length === 0) {\n\n            this.selectedRows = [];\n            this.prewSelectedRows = [];\n            this.isFirstDataRequest = false;\n\n            this.selectedRows.push(this.tableRows[0]);\n            this.prewSelectedRows.push(this.tableRows[0]);\n\n            if (typeof this.selectedRows[0] !== 'undefined') {\n                this.rowSelected.emit({row: this.selectedRows, clicked: false});\n            } else {\n                this.rowSelected.emit();\n            }\n        }\n    }\n\n    reIndexRows() {\n        this.tableRowsGrouped.forEach((row, index) => {\n            if (!row) { return; }\n            row['index'] = index;\n        });\n    }\n\n    groupRows() {\n        let groups = 0;\n        if (this.grouping && this.groupField !== '') {\n            if (this.allTableCols.some(col => col.prop === this.groupField)) {\n                // grouping jen pokud je tam ten sloupec\n                const gMap = new Map<string, {}>();\n                this.tableRows.forEach(row => {\n                    if (!gMap.has(row[this.groupField])) {\n                        gMap.set(row[this.groupField], {\n                            [this.groupField]: row[this.groupField],\n                            [this.groupFieldTitle]: row[this.groupFieldTitle],\n                        });\n                    }\n                });\n                const groupedRows = [];\n                if (gMap.size > 0) {\n                    gMap.forEach(gRow => {\n                        // group header radek\n                        groupedRows.push({\n                            [this.groupField]: gRow[this.groupField],\n                            [this.groupFieldTitle]: gRow[this.groupFieldTitle],\n                            isRowGroup: true,\n                            isRowGroupExpanded: true,\n                            id: gRow[this.groupField], // predpokladam ze se groupuje podle id skupiny\n                        });\n                        const gRows = this.tableRows.filter(row => {\n                            return row[this.groupField] === gRow[this.groupField];\n                        });\n                        groupedRows.push(...gRows);\n                    });\n                    groups = gMap.size;\n                }\n                this.tableRowsGrouped = groupedRows;\n\n            } else {\n                this.tableRowsGrouped = this.tableRows;\n            }\n        } else {\n            this.tableRowsGrouped = this.tableRows;\n        }\n\n        this.groupCount = groups;\n        return groups;\n    }\n\n    initGroupCheckboxable() {\n        this.allTableCols.forEach(col => {\n            this.tableRowsGrouped.forEach(row => {\n                if (col.cellClass && col.cellClass.toString().includes(CELL_CLASS_CHECKBOX) && row?.isRowGroup) {\n                    // group checkbox value - 0/1\n                    // any child value == 2\n                    // [0] = not checked\n                    // [1] = checked\n                    // [2] = group checked\n                    let max = 0;\n                    let groupDisabled = false;\n                    let groupChecked = true;\n                    this.tableRowsGrouped.forEach(r => {\n                        if (r.hasOwnProperty(col.prop)\n                            && r[this.groupField] === row[this.groupField]\n                            && !r.isRowGroup\n                            && r[col.prop].isCheckbox\n                            && max < 2\n                        ) {\n                            if (r[col.prop].checkedData && r[col.prop].checkedData > max) {\n                                max = r[col.prop].checkedData;\n                            }\n\n                            // isDisabled pro group radek\n                            // pokud ma jakykoliv data radek disabled checkbox, disabluje se i skupina\n                            // disabled pro checkboxy je ted rizeno pouze nastavenim columny EsGridColumn\n                            if (r[col.prop].isDisabled) {\n                                groupDisabled = true;\n                            }\n\n                            // all checked ?\n                            if (r[col.prop].checkedData === false) {\n                                groupChecked = false;\n                            }\n                        }\n                    });\n\n                    // set group checkbox value pokud any row checked == 2\n                    // groupChecked = max > 0 ? true : false;   // max == 2 ??\n                    row[col.prop] = <CellCheckbox>{\n                        isCheckbox: true,\n                        checkboxVisible: true,\n                        checkedData: groupChecked,\n                        checkedDataInit: groupChecked,\n                        isDisabled: groupDisabled};\n\n                    // mark row.hasGroupCheckbox\n                    row.hasGroupCheckbox = true;\n                }\n            });\n        });\n    }\n\n    onCellCheckboxClick(event: CellCheckboxClickEvent) {\n        // klik na skupinu\n        if (event.isRowGroup) {\n            // tato skupina 1x checkbox\n            this.tableRowsGrouped.forEach(row => {\n                if (row[event.prop]) {\n                    if (row[event.prop].hasOwnProperty('isCheckbox')) {\n                        if (row[this.groupField] === event.id) {\n                            if (row.isRowGroup) {\n                                row[event.prop]['checkedData'] = event.checked;\n                            }\n                            if (row[event.prop]['checkboxVisible']) {\n                                row[event.prop]['checkedData'] = event.checked;\n                            }\n                        }\n                    }\n                }\n            });\n\n            // zbytečny prochazet to dvakrat (hrozne to zpomaluje).. if presunuty to prvniho foru\n\n            // // unity ve skupine check/uncheck\n            // this.tableRows.forEach(row => {\n            //     for (let prop in row) {\n            //         if (row.hasOwnProperty(prop)) {\n            //             if (prop == event.prop) {\n            //                 if (row[prop].hasOwnProperty('isCheckbox')) {\n            //                     if (row[this.groupField] === event.id) {\n            //                         if (row[prop]['checkboxVisible']) {\n            //                             row[prop]['checkedData'] = event.checked;\n            //                         }\n            //                     }\n            //                 }\n            //             }\n            //         }\n            //     }\n            // });\n        }\n\n        // klik na jednotku\n        if (!event.isRowGroup) {\n            let parentGroup;\n            // tato jednotka 1x checkbox\n            this.tableRowsGrouped.forEach(row => {\n                for (const prop in row) {\n                    if (row.hasOwnProperty(prop)) {\n                        if (prop === event.prop) {\n                            if (row[prop].hasOwnProperty('isCheckbox')) {\n                                if (row['id'] === event.id) {\n                                    row[prop]['checkedData'] = event.checked;\n                                    parentGroup = row[this.groupField];\n                                }\n                            }\n                        }\n                    }\n                }\n            });\n\n            // detekce pro checkbox skupiny, vse ve skupine checked ?\n            let groupChecked = true;\n            this.tableRowsGrouped.forEach(row => {\n                for (const prop in row) {\n                    if (row.hasOwnProperty(prop)) {\n                        if (prop === event.prop) {\n                            if (row[prop].hasOwnProperty('isCheckbox')) {\n                                if (row[this.groupField] === parentGroup) {\n                                    if (row[prop]['checkedData'] === 0 || row[prop]['checkedData'] === false) {\n                                        if (!row.isRowGroup) {\n                                            groupChecked = false;\n                                        }\n                                    }\n                                }\n                            }\n                        }\n                    }\n                }\n            });\n\n            // parent skupina checkbox\n            if (typeof parentGroup !== 'undefined') {\n                this.tableRowsGrouped.forEach(row => {\n                    for (const prop in row) {\n                        if (row.hasOwnProperty(prop)) {\n                            if (prop === event.prop) {\n                                if (row[prop].hasOwnProperty('isCheckbox')) {\n                                    if (row[this.groupField] === parentGroup) {\n                                        if (row.isRowGroup) {\n                                            row[prop]['checkedData'] = groupChecked;\n                                        }\n                                    }\n                                }\n                            }\n                        }\n                    }\n                });\n            }\n        }\n\n        // detect change for submit\n        this.isCellCheckedChange = false;\n        this.tableRowsGrouped.forEach(row => {\n            for (const prop in row) {\n                if (row.hasOwnProperty(prop)) {\n                    if (row[prop].hasOwnProperty('isCheckbox')) {\n                        if (row[prop]['checkedData'] !== row[prop]['checkedDataInit']) {\n                            this.isCellCheckedChange = true;\n                        }\n                    }\n                }\n            }\n        });\n\n        // checkboxy se neprerendruji takze se musi detekovat zmeny\n        this.cd.markForCheck();\n        this.cd.detectChanges();\n\n        // console.log(this.isCellCheckedChange, this.snackBarRef);\n        // if (this.isCellCheckedChange && this.snackBarRef === null) {\n        //     this.snackBarRef = this.snackBar.open(this.translate.instant('an.snackbar.save.confirm'), this.translate.instant('an.save'));\n        //\n        //     this.snackBarRef.onAction().take(1).subscribe(() => {\n        //         this.onCellCheckedSave();\n        //     });\n        // }\n        //\n        // if (!this.isCellCheckedChange && this.snackBarRef) {\n        //     this.snackBarRef.dismiss();\n        //     this.snackBarRef = null;\n        // }\n    }\n\n    onCellCheckedSave() {\n        const cellCheckboxes: CellCheckboxClickEvent[] = [];\n\n\n        // zmeny na rowGroup checkboxech\n        this.tableRowsGrouped.forEach((row, index) => {\n            for (const prop in row) {\n                if (row.hasOwnProperty(prop)) {\n                    if (row[prop].hasOwnProperty('isCheckbox')) {\n                        if (row.isRowGroup) {\n                            if (row[prop]['checkedData'] !== row[prop]['checkedDataInit']) {\n                                cellCheckboxes.push({\n                                    id: row.id,\n                                    prop: prop,\n                                    isRowGroup: true,\n                                    checked: row[prop]['checkedData'] > 0,\n                                });\n                            }\n                        }\n                    }\n                }\n            }\n        });\n\n        // zmeny na unit checkboxech\n        this.tableRows.forEach((row, index) => {\n            for (const prop in row) {\n                if (row.hasOwnProperty(prop)) {\n                    if (row[prop].hasOwnProperty('isCheckbox')) {\n                        if (!row.isRowGroup) {\n                            if (row[prop]['checkedData'] !== row[prop]['checkedDataInit']) {\n                                cellCheckboxes.push({\n                                    id: row.id,\n                                    prop: prop,\n                                    isRowGroup: false,\n                                    checked: row[prop]['checkedData'] > 0,\n                                });\n                            }\n                        }\n                    }\n                }\n            }\n        });\n\n        this.saveCellCheckboxesChanges(cellCheckboxes);\n    }\n\n    saveCellCheckboxesChanges(cellCheckboxes) {\n        const formData: FormData = new FormData();\n        formData.append('checkboxes', JSON.stringify(cellCheckboxes));\n\n        const queryParams = this.urlSerializer.parse(this.gridUrl).queryParams;\n        if (Object.keys(queryParams).indexOf(this.paramUserId) !== -1) {\n            const userId = +queryParams[this.paramUserId];\n            formData.append(this.paramUserId, userId.toString());\n        }\n\n        // todo + params => formData rework\n        // let params = new HttpParams();\n        // params = params.set('checkboxes', JSON.stringify(cellCheckboxes));\n\n        this.http.post('/cnt/angularAdmin/userPermissionUnitGridForm', formData).subscribe((response: any) => {\n\n            this.snackBar.open(this.translate.instant(this.translates.SUCCESS_SAVE));\n            this.reloadData();\n\n        });\n    }\n\n    toggleExpandRowGroup(row) {\n        row.isRowGroupExpanded = !row.isRowGroupExpanded;\n        if (!row.isRowGroupExpanded) {\n            this.tableRowsGrouped = this.tableRowsGrouped.filter(gRow => {\n                return gRow[this.groupField] !== row[this.groupField] || gRow.isRowGroup;\n            });\n            this.tableRowsGrouped = [].concat(this.tableRowsGrouped);\n        } else {\n            let inserted = false;\n            this.tableRowsGrouped.forEach((gRow, index) => {\n                if (gRow[this.groupField] === row[this.groupField] && gRow.isRowGroup && !inserted) {\n                    const addRows = this.tableRows.filter(aRow => {\n                        return aRow[this.groupField] === row[this.groupField];\n                    });\n                    this.tableRowsGrouped.splice(index + 1, 0, ...addRows);\n                    this.tableRowsGrouped = [].concat(this.tableRowsGrouped);\n                    inserted = true;\n                }\n            });\n        }\n        this.table.bodyComponent.rowCount = this.tableRowsGrouped.length;   // fix pocet radku, asi maji chybu\n        this.datatableRecalculate();\n    }\n\n    // output po kliku na dynamic buttony\n    handleButtonClick(event, row) {\n        if (!(event instanceof MouseEvent)) {\n            this.selectedRows = [];\n            this.selectedRows.push(row);\n            this.handleButtonClickEmitter.emit({button: event, row: row});\n        } else {\n            this.selectedRows = [];\n            this.selectedRows.push(row);\n            event.stopPropagation();\n        }\n    }\n\n    selectCheck = (row, column, value) => {\n        return !row?.isRowGroup;\n    }\n\n    getRowClass = (row) => {\n        return row ? {\n            [row['rowClass']]: (this.hasRowClassCol)\n        } : {};\n    }\n\n    onRowActivated(e) {\n        switch (e.type) {\n            case 'mouseenter':\n                // filter checked\n                if (this.checkedRow[e.row.index]) {\n                    this.checkedRowHover.emit(e.row);\n                }\n                // all\n                this.rowHover.emit(e.row);\n                break;\n            case 'click':\n                break;\n        }\n    }\n\n    onRowSelected(event) {\n        if (this.dynamicGrid.options.selectable) {\n            const row = event.selected;\n            this.rowSelected.emit({row: row, clicked: true});\n            // this.rowClicked.emit(row);\n        }\n        //     if (event.type == 'click') {\n        //         if (event.column.prop !== 'expand' &&\n        //             event.column.prop !== 'checkbox') {\n        //             this.rowClickedCount++;\n        //             if (event.row.index === this.prewRowIndexClicked) {\n        //                 if (this.rowClickedCount == 2) {\n        //                     this.selectedRows.splice(0);\n        //                     this.rowClickedCount = 0;\n        //                 }\n        //             } else {\n        //                 this.prewSelectedRows = [...this.selectedRows];\n        //                 this.prewRowIndexClicked = event.row.index;\n        //                 this.rowClickedCount = 1;\n        //             }\n        //             this.rowSelected.emit(this.selectedRows);\n        //         } else {\n        //             this.selectedRows = [...this.prewSelectedRows];\n        //             this.rowClickedCount = 1;\n        //         }\n        //     }\n        // } else {\n        //     this.selectedRows = [];\n        // }\n    }\n\n    toggleExpandAllGroup(expand: boolean = true) {\n        // todo\n        this.tableRows.forEach(row => {\n            if (row.isRowGroup) {\n                row.isRowGroupExpanded = expand;\n            }\n        });\n    }\n\n    reload() {\n        this.tableRows = [];\n        this.selectedRows = [];\n        this.fetchedPages = [];\n    }\n\n    onSort(event) {\n        if (this.dataSource === 'jqgrid') {\n            this.page.pageNumber = 0;\n            this.table.bodyComponent.offsetY = 0; // minor hack :)\n            const sort = event.sorts[0];\n            this.lastSort = {prop: sort['prop'], dir: sort['dir']}; // pro grouping\n\n            this.params = this.params.set(EsGridParams.SORT_INDEX, this.getColumnByName(sort['prop']).index);\n            this.params = this.params.set(EsGridParams.SORT_DIRECTION, sort['dir']);\n            this.params = this.params.set(EsGridParams.SORT_GRID_ID, this.dynamicGrid.options.pager);\n            // &_col={\"nick\":{\"soidx\":\"`users`.`nick`\"}}\"   // todo ?\n\n            this.reload();\n            this.getPageData();\n        }\n    }\n\n\n    loadingIndicator(state: boolean = false) {\n        if (this.table) {\n            if (state === true) {\n                this.dataLoading = true;\n                this.table.messages.emptyMessage = '';\n            }\n            if (state === false) {\n                this.dataLoading = false;\n                this.table.messages.emptyMessage = this.translate.instant(this.translates.NO_RECORDS);\n                this.table.messages.totalMessage = this.translate.instant(this.translates.TOTAL);\n            }\n            this.cd.markForCheck();\n        }\n    }\n\n\n    getColumnByName(name: string): EsGridColumn {\n        for (const column of this.dynamicGrid.columns) {\n            if (column.name === name) {\n                return column;\n            }\n        }\n    }\n\n    updateFilter(val) {\n        this.closeExpandedRows();\n        this.table.bodyComponent.offsetY = 0; // minor hack :)\n\n        if (this.dataSource === 'jqgrid') {\n            if (val.length === 0) {\n                this.params = this.params.set('_search', 'false');\n                this.params = this.params.delete('filters');\n            } else {\n                this.params = this.params.set('_search', 'true');\n\n                const rules = [];\n                this.dynamicGrid.columns.filter(({filter}) => filter['render'] === true).forEach(col => {\n                    const rule = {\n                        'field': 'id',  // col.index,\n                        'op': 'njq',    // toto je global filter vazany na ID, musi se na serveru rucne napsat OR pravidla\n                        'data': val,\n                        'stype': 'text',\n                    };\n                    rules.push(rule);\n                });\n\n                // todo OR on server\n                // viz njq, toto zatim nebude...\n                const filters = {\n                    'groupOp': 'AND',\n                    'rules': [rules[0]], // az pojede OR tak rules => \"rules\": rules, ted filtruju jen prvni sloupec\n                };\n\n                this.params = this.params.set(EsGridParams.FILTERS, JSON.stringify(filters));\n            }\n\n            this.reload();\n            this.getPageData();\n        }\n        if (this.dataSource === 'array') {\n            const loVal = val.toLowerCase();\n            this.tableRows = this.tableRowsPreArrayFilter.filter((row) => {\n                return row['name'].toLowerCase().indexOf(loVal) !== -1 || !val;\n            });\n            this.groupRows();\n            this.reIndexRows();\n            this.page.totalElements = this.tableRows.length;\n        }\n    }\n\n    toggleCheckedRow(rowIndex: number, e?, forceChecked = false) {\n        if (e) {\n            e.preventDefault();\n            e.stopPropagation();\n        }\n        let emitChecked = true;\n\n        if (this.checkedRow[rowIndex] === true) {\n            if (!forceChecked) {\n                this.checkedRow[rowIndex] = false;\n                this.checkedRowsCount--;\n            } else {\n                emitChecked = false;\n            }\n        } else {\n            this.checkedRow[rowIndex] = true;\n            this.checkedRowsCount++;\n        }\n\n        if (emitChecked) {\n            const rows = [];\n            const rowsCount = this.page.totalElements + this.groupCount;\n            for (let i = 0; i < rowsCount; i++) {\n                if (this.checkedRow[i]) {\n                    rows.push(this.tableRows.filter(row => {\n                        return row.index === i;\n                    })[0]);\n                }\n            }\n            this.checkedRows.emit(rows);\n        }\n    }\n\n    checkAllRows($event) {\n        $event.stopPropagation();\n        $event.preventDefault();\n        const rowsCount = this.page.totalElements + this.groupCount;\n\n        for (let i = 0; i < rowsCount; i++) {\n            this.checkedRow[i] = true;\n        }\n\n        this.checkedRowsCount = rowsCount;\n\n        if (this.tableRowsGrouped.length !== this.page.totalElements) {\n            // toto je pripad kdy tam jsou ty branch radky\n            // todo stáhnout všechny řádky nebo na server info, že je to pro všechny objekty\n            // zatím fligna na posílání všech řádků\n            this.checkedRows.emit('all');\n            this.checkedRows.emit(this.tableRowsGrouped);\n\n        } else {\n            this.checkedRows.emit(this.tableRowsGrouped);\n        }\n    }\n\n    unCheckAllRows(e?, emit = true) {\n        if (e) {\n            e.stopPropagation();\n            e.preventDefault();\n        }\n        const rowsCount = this.page.totalElements + this.groupCount;\n        for (let i = 0; i < rowsCount; i++) {\n            this.checkedRow[i] = false;\n        }\n        this.checkedRowsCount = 0;\n        if (emit) {\n            this.checkedRows.emit([]);\n        }\n    }\n\n    checkBetweenRows($event) {\n        $event.stopPropagation();\n        $event.preventDefault();\n\n        const startIndex = this.checkedRow.indexOf(true);\n        const endIndex = this.checkedRow.lastIndexOf(true);\n\n        for (let i = startIndex + 1; i <= endIndex; i++) {\n            this.checkedRow[i] = true;\n        }\n\n        const rows = [];\n\n        for (let i = 0; i < this.checkedRow.length; i++) {\n            if (this.checkedRow[i]) {\n                rows.push(this.tableRowsGrouped[i]);\n            }\n        }\n\n        if (startIndex === this.tableRowsGrouped[0].isRowGroup ? 1 : 0 && endIndex === this.page.totalElements - 1) {\n            this.checkedRowsCount = this.page.totalElements;\n        }\n\n        this.checkedRows.emit(rows);\n    }\n\n    checkRowsFromConfigString() {\n        const rowIndexes = this.checkedRowsConfig.split(',');\n        rowIndexes.forEach(i => {\n            this.checkedRow[i] = true;\n        });\n\n        const rows = [];\n        for (let i = 0; i < this.checkedRow.length; i++) {\n            if (this.checkedRow[i]) {\n                rows.push(this.tableRowsGrouped[i]);\n            }\n        }\n        this.checkedRowsCount = rowIndexes.length;\n        this.checkedRows.emit(rows);\n    }\n\n    selectFirstRow() {\n        if (this.dynamicGrid.options.selectable\n            && this.dynamicGrid.options.autoSelectFirstRow) {\n            this.selectedRows = [];\n            this.selectedRows.push(this.tableRows[0]);\n            this.rowSelected.emit({row: this.selectedRows, clicked: false});\n        }\n    }\n\n    resetSelectedRows() {\n        this.selectedRows = [];\n        this.cd.markForCheck();\n    }\n\n    filterMenuToggle() {\n        this.filterMenuOpened = !this.filterMenuOpened;\n    }\n\n    closeFilterMenu() {\n        this.filterMenuOpened = false;\n    }\n\n    sortMenuToggle() {\n        this.sortMenuOpened = !this.sortMenuOpened;\n    }\n\n    closeSortMenu() {\n        this.sortMenuOpened = false;\n    }\n\n    onFilterMenuClose() {\n        this.filterMenuClose.emit();\n    }\n\n    onSettingMenuClose() {\n        this.settingMenuClose.emit();\n    }\n\n    reloadDataAndSetFirstPage(forceSelectFirstRow = true) {\n        this.forceSelectFirstRow = forceSelectFirstRow;\n        if (this.page.pageNumber !== 0) {\n            this.table.bodyComponent.updateOffsetY(0);\n            this.reload();\n        } else {\n            this.reloadData();\n        }\n        this.cd.markForCheck();\n    }\n\n    onFixedPageSizeChange(event: MatOptionSelectionChange) {\n        if (event.isUserInput && event.source.value !== this._fixedPageSize) {\n            this._fixedPageSize = event.source.value;\n            this.preloadRowsCount = this._fixedPageSize;\n            this.fixedPageSizeChange = true;\n            this.reInitGrid();\n        }\n    }\n\n    toggleReorderLock() {\n        this.reorderLock = !this.reorderLock;\n    }\n\n\n    onReorder(event: any) {\n        this.reorder.emit({...event, _internalColumns: this.table._internalColumns, allColumns: this.allTableCols.map(col => col.prop)});\n    }\n\n    reorderedCols() {\n        const reordered = [...this.visibleTableCols];\n        reordered.sort((a, b) => this.customOrder.indexOf(a.prop) - this.customOrder.indexOf(b.prop));\n        return reordered;\n    }\n\n    public ngOnDestroy() {\n        this.isAlive = false;\n        if (this.snackBarRef) {\n            this.snackBarRef.dismiss();\n        }\n    }\n\n\n}\n","<mat-spinner *ngIf=\"!displayGrid\" class=\"app-spinner\"></mat-spinner>\n<div class=\"dynamic-grid-container\"\n     [class.media-xs]=\"media === 'xs'\"\n     [style.height]=\"_fixedPageSize > 0 ? 'auto' : '100%'\"\n     [style.min-height.px]=\"!displayGrid && _fixedPageSize > 0 ? _fixedPageSize * rowsHeight.row + 2 * rowsHeight.header + rowsHeight.footer : null\"\n     (resized)=\"onGridResized($event)\"\n>\n    <div *ngIf=\"displayGrid && filterAbleColumns\"\n         [style.text-align] = position\n         class=\"filter\">\n        <filter-field *ngIf=\"displaySearch\" (updateFilter)=\"updateFilter($event)\"></filter-field>\n\n        <div *ngIf=\"customFilterTpl\" class=\"custom-filter-template\">\n            <ng-container *ngTemplateOutlet=\"customFilterTpl\"></ng-container>\n        </div>\n\n        <div class=\"filter-buttons\">\n            <button *ngIf=\"extraFilters\"\n                    #filterButton\n                    mat-icon-button\n                    #filterMenuTrigger=\"matMenuTrigger\"\n                    [matMenuTriggerFor]=\"filtersMenu\"\n                    (menuOpened)=\"filterMenuOpenedEmitter.emit()\"\n                    (menuClosed)=\"onFilterMenuClose()\"\n            >\n                <es-icon [matTooltip]=\"translates.FILTERS | translate\" [icon]=\"esIcon.FILTER_LIST\"></es-icon>\n            </button>\n\n            <button *ngIf=\"filterTpl\" mat-icon-button (click)=\"filterMenuToggle()\">\n                <es-icon [matTooltip]=\"translates.FILTERS | translate\" [icon]=\"esIcon.FILTER_LIST\"></es-icon>\n            </button>\n            <button *ngIf=\"sortTpl\" mat-icon-button (click)=\"sortMenuToggle()\">\n                <es-icon [matTooltip]=\"translates.CUSTOM_ORDER | translate\" [icon]=\"'sort'\"></es-icon>\n            </button>\n\n            <es-buttons *ngIf=\"actionGridButtons.length > 0\"\n                        [buttons]=\"actionGridButtons\"\n                        [parentWidth]=\"40*actionGridButtons.length\"\n                        (buttonClick)=\"actionGridButtonsClick.emit($event)\"\n            ></es-buttons>\n\n            <button class=\"grid-add-button\" *ngIf=\"addButtonIcon && media !== 'xs'\" mat-icon-button (click)=\"addButtonClick.emit()\">\n                <es-icon [icon]=\"addButtonIcon\"></es-icon>\n                {{translates.NEW | translate}}\n            </button>\n            <button class=\"grid-add-button\" *ngIf=\"addButtonIcon && media === 'xs'\" mat-icon-button (click)=\"addButtonClick.emit()\">\n                <es-icon [icon]=\"addButtonIcon\"></es-icon>\n            </button>\n\n\n            <button *ngIf=\"settingTemplate\"\n                    #settingButton\n                    mat-icon-button\n                    #settingMenuTrigger=\"matMenuTrigger\"\n                    [matMenuTriggerFor]=\"settingMenu\"\n                    (menuClosed)=\"onSettingMenuClose()\"\n            >\n                <es-icon [matTooltip]=\"translates.SETTINGS | translate\" [icon]=\"esIcon.SETTINGS\"></es-icon>\n            </button>\n        </div>\n\n    </div>\n\n    <div (resized)=\"onGridResized($event)\" class=\"template-menu-container\">\n        <div *ngIf=\"sortMenuOpened\" class=\"template-menu\">\n            <ng-container *ngTemplateOutlet=\"sortTpl\"></ng-container>\n        </div>\n    </div>\n\n    <div (resized)=\"onGridResized($event)\" class=\"template-menu-container\">\n        <div *ngIf=\"filterMenuOpened\" class=\"template-menu\">\n            <ng-container *ngTemplateOutlet=\"filterTpl\"></ng-container>\n        </div>\n    </div>\n\n    <!--extraFilters-->\n    <mat-menu #filtersMenu=\"matMenu\"\n              [xPosition]=\"'before'\"\n              [overlapTrigger]=\"false\"\n              esMenuResponsive\n              [isMenuOpened]=\"filterMenuTrigger? filterMenuTrigger.menuOpen : false\">\n        <div *ngIf=\"filterMenuTrigger?.menuOpen\">\n            <ng-container *ngTemplateOutlet=\"extraFilters\"></ng-container>\n        </div>\n    </mat-menu>\n\n    <!--setting-->\n    <mat-menu #settingMenu=\"matMenu\"\n              [xPosition]=\"'before'\"\n              [overlapTrigger]=\"false\"\n              esMenuResponsive\n              [isMenuOpened]=\"settingMenuTrigger? settingMenuTrigger.menuOpen : false\">\n        <div *ngIf=\"settingMenuTrigger?.menuOpen\">\n            <ng-container *ngTemplateOutlet=\"settingTemplate\"></ng-container>\n        </div>\n    </mat-menu>\n\n    <div *ngIf=\"reorderLockable\" [ngStyle]=\"{'position': 'relative', 'height.px': 0}\">\n        <es-icon\n            *ngIf=\"reorderLockable\"\n            class=\"hover-button top-right reorder-lock\"\n            [icon]=\"reorderLock ? 'lock' : 'lock_open'\"\n            scale=\"0.5\"\n            (click)=\"toggleReorderLock()\"\n        ></es-icon>\n    </div>\n\n    <ngx-datatable\n            *ngIf=\"displayGrid\"\n            #table\n            class=\"datatable material dynamic-grid-datatable\"\n            [limit]=\"_fixedPageSize\"\n            [columns]=\"customOrder ? reorderedCols() : visibleTableCols\"\n            [columnMode]=\"'force'\"\n            [headerHeight]=\"rowsHeight.header\"\n            [footerHeight]=\"media === 'xs' && _fixedPageSize > 0 ? rowsHeight.footer * 2 : rowsHeight.footer\"\n            [rowHeight]=\"rowsHeight.row\"\n            [rows]=\"_fixedPageSize > 0 ? fixedTableRows[page.pageNumber] : tableRowsGrouped\"\n            [rowClass]=\"getRowClass\"\n            [scrollbarV]=\"scrollbarV\"\n            [scrollbarH]=\"false\"\n            [messages]=\"tableMessages\"\n            [selected]=\"selectedRows\"\n            [selectionType]=\"dynamicGrid.options.selectable? 'single' : null\"\n            [selectCheck]=\"selectCheck\"\n            (select)=\"onRowSelected($event)\"\n            (activate)=\"onRowActivated($event)\"\n            [externalPaging]=\"externalPaging\"\n            [count]=\"page.totalElements + groupCount\"\n            [offset]=\"page.pageNumber\"\n            (page)=\"setPage($event)\"\n            [externalSorting]=\"externalSorting\"\n            [loadingIndicator]=\"dataLoading || fixedPageSizeChange\"\n            [virtualization]=\"virtualization\"\n            [reorderable]=\"reorderable && !reorderLock\"\n            (reorder)=\"onReorder($event)\"\n            [swapColumns]=\"swapColumns\"\n            (sort)=\"onSort($event)\"\n    >\n\n        <!-- Row Detail Template -->\n        <ngx-datatable-row-detail [rowHeight]=\"expandedRowHeight\" (toggle)=\"onDetailToggle($event)\">\n            <ng-template let-row=\"row\" ngx-datatable-row-detail-template>\n                <div class=\"e-row\"\n                     [@enterAnimation]\n                     [style.padding-left.px]=\"media == 'xs' ? 20 : 60\">\n                    <div *ngFor=\"let col of getRowDetailCols(row); trackBy: trackNone\" class=\"er-each\">\n                        <div class=\"er-name\">{{col.name}}: </div>\n\n                        <grid-cell *ngIf=\"!col.data?.isCheckbox\" class=\"er-value\" [gridCell]=\"col.data\" [column]=\"col\"></grid-cell>\n                        <!--<div class=\"er-value\" *ngIf=\"!col.isObject\">{{col.data}}</div>-->\n                        <!--<div class=\"er-value\" *ngIf=\"col.isObject\">-->\n                        <!-- Cell Templates -->\n\n                        <!--&lt;!&ndash; Row Detail Icons &ndash;&gt;-->\n                        <!--<icons-template *ngIf=\"col.prop.includes('icons')\"-->\n                        <!--[icons]=\"col.data['icons']\"></icons-template>-->\n\n                        <!--&lt;!&ndash;Row Detail Img&ndash;&gt;-->\n                        <!--<img-icons-template *ngIf=\"col.prop.includes('image')\"-->\n                        <!--[icon]=\"col.data\"></img-icons-template>-->\n\n\n                        <!-- Row Detail Checkbox -->\n                        <mat-checkbox *ngIf=\"col.data?.isCheckbox\"\n                                      (change)=\"onCellCheckboxClick({\n                                            id: row.id,\n                                            prop: col.prop,\n                                            name: col.name,\n                                            isRowGroup: !!row?.isRowGroup,\n                                            checked: $event.checked})\"\n                                      [checked]=\"col.data?.checkedData == 1 || col.data?.checkedData == 2\"\n                                      [disabled]=\"col.data?.isDisabled\"></mat-checkbox>\n\n                        <!--</div>-->\n                    </div>\n                </div>\n            </ng-template>\n        </ngx-datatable-row-detail>\n\n\n        <!-- Footer Template -->\n        <ngx-datatable-footer>\n            <ng-template\n                    ngx-datatable-footer-template\n                    let-rowCount=\"rowCount\"\n                    let-pageSize=\"pageSize\"\n                    let-curPage=\"curPage\"\n                    let-offset=\"offset\">\n\n                <div class=\"footer-inner\">\n                    <div class=\"footer-buttons\" *ngIf=\"dynamicGrid.options.multiselect || footerButtons\">\n                        <div class=\"checkbox-buttons\" *ngIf=\"dynamicGrid.options.multiselect\">\n                            <button mat-icon-button *ngIf=\"checkedRowsCount != this.page.totalElements + groupCount\" (click)=\"checkAllRows($event)\" matTooltip=\"{{translates.CHECK_ALL | translate}}\"><es-icon [icon]=\"esIcon.CHECK_BOX_OUTLINE_BLANK\"></es-icon></button>\n                            <button mat-icon-button *ngIf=\"checkedRowsCount == this.page.totalElements + groupCount\" (click)=\"unCheckAllRows($event)\" matTooltip=\"{{translates.CHECK_UNCHECK_ALL | translate}}\"><es-icon [icon]=\"esIcon.CHECK_BOX\"></es-icon></button>\n                            <button mat-icon-button [disabled]=\"checkedRowsCount != 2\" (click)=\"checkBetweenRows($event)\" matTooltip=\"{{translates.CHECK_AMONG_CHOSEN_ONES | translate}}\"><es-icon [icon]=\"esIcon.INDETERMINATE_CHECK_BOX\"></es-icon></button>\n                        </div>\n\n                        <div *ngIf=\"dynamicGrid.options.multiselect && footerButtons\" class=\"divider\"></div>\n\n                        <ng-container *ngTemplateOutlet=\"footerButtons\"></ng-container>\n                    </div>\n\n                    <button *ngIf=\"isCellCheckedChange\"\n                            [style.margin-left.px]=\"24\"\n                            mat-raised-button\n                            color=\"accent\"\n                            (click)=\"onCellCheckedSave()\"\n                    >{{translates.SAVE | translate}}</button>\n\n                    <div class=\"page-count\" *ngIf=\"media !== 'xs' || _fixedPageSize === undefined\">\n                        <!--{{rowCount}} {{translates.TOTAL | translate}}-->\n                        {{page.totalElements}} {{translates.TOTAL | translate}}\n                    </div>\n\n                    <div class=\"select-page-rows\" *ngIf=\"media !== 'xs' && _fixedPageSize > 0\">\n                        <span>{{translates.ITEMS_PER_PAGE | translate}}:</span>\n                        <mat-form-field>\n                            <mat-select [value]=\"_fixedPageSize\">\n                                <mat-option *ngFor=\"let size of fixedPageSizeOptions\"\n                                            [value]=\"size\"\n                                            (onSelectionChange)=\"onFixedPageSizeChange($event)\"\n                                >\n                                    {{size}}\n                                </mat-option>\n                            </mat-select>\n                        </mat-form-field>\n                    </div>\n\n\n                    <div class=\"datatable-footer_pagination\">\n                        <datatable-pager\n                                [style.opacity]=\"fixedPageSizeChange ? 0.25 : 1\"\n                                [style.pointer-events]=\"fixedPageSizeChange ? 'none' : 'auto'\"\n                                [pagerLeftArrowIcon]=\"'datatable-icon-left'\"\n                                [pagerRightArrowIcon]=\"'datatable-icon-right'\"\n                                [pagerPreviousIcon]=\"'datatable-icon-prev'\"\n                                [pagerNextIcon]=\"'datatable-icon-skip'\"\n                                [page]=\"curPage\"\n                                [size]=\"pageSize\"\n                                [count]=\"page.totalElements + groupCount\"\n                                [hidden]=\"false\"\n                                (change)=\"table.onFooterPage($event)\">\n                        </datatable-pager>\n                    </div>\n                </div>\n\n                <div class=\"small-second-row\" *ngIf=\"media === 'xs' && _fixedPageSize > 0\">\n                    <div class=\"page-count\">\n                        <!--{{rowCount}} {{translates.TOTAL | translate}}-->\n                        {{page.totalElements}} {{translates.TOTAL | translate}}\n                    </div>\n\n                    <div class=\"select-page-rows\">\n                        <span>{{translates.ITEMS_PER_PAGE | translate}}:</span>\n                        <mat-form-field>\n                            <mat-select [value]=\"_fixedPageSize\">\n                                <mat-option *ngFor=\"let size of fixedPageSizeOptions\"\n                                            [value]=\"size\"\n                                            (onSelectionChange)=\"onFixedPageSizeChange($event)\"\n                                >\n                                    {{size}}\n                                </mat-option>\n                            </mat-select>\n                        </mat-form-field>\n                    </div>\n                </div>\n\n            </ng-template>\n        </ngx-datatable-footer>\n    </ngx-datatable>\n\n    <!--<ng-template #checkboxTpl let-rowIndex=\"rowIndex\">-->\n    <!--<mat-checkbox (click)=\"toggleCheckedRow(rowIndex, $event)\" [checked]=\"checkedRow[rowIndex]\"></mat-checkbox>-->\n    <!--</ng-template>-->\n\n    <ng-template #headerTpl let-column=\"column\" let-sort=\"sortFn\">\n        <mat-checkbox *ngIf=\"column.headerCheckboxable\"></mat-checkbox>\n        <es-icon\n            *ngIf=\"reorderable && !reorderLock\"\n            icon=\"drag_indicator\"\n            class=\"dragBut draggable\"\n            [scale]=\"0.8\"\n        ></es-icon>\n        <span [matTooltip]=\"column.name\" (click)=\"sort()\" [class.clickable]=\"column.sortable\">{{column.name}}</span>\n    </ng-template>\n\n    <ng-template #checkboxRowTpl let-row=\"row\" let-rowindex=\"index\">\n        <div [class.row-group-cell]=\"row?.isRowGroup\">\n            <button *ngIf=\"row && !row.isRowGroup\"\n                    mat-icon-button\n                    class=\"row-button\"\n                    title=\"Check/Uncheck Row\"\n                    (click)=\"toggleCheckedRow(row.index, $event)\">\n                <!--<mat-checkbox  *ngIf=\"!row.isRowGroup\" (click)=\"toggleCheckedRow(row.index)\" title=\"Check/Uncheck Row\"></mat-checkbox>-->\n                <es-icon *ngIf=\"checkedRow[row.index]\" class=\"mat-accent\" [icon]=\"esIcon.CHECK_BOX\"></es-icon>\n                <es-icon *ngIf=\"!checkedRow[row.index]\" [icon]=\"esIcon.CHECK_BOX_OUTLINE_BLANK\"></es-icon>\n            </button>\n        </div>\n    </ng-template>\n\n    <ng-template #checkboxCellTpl let-value=\"value\" let-row=\"row\" let-column=\"column\">\n        <div [class.row-group-cell]=\"row?.isRowGroup\">\n            <mat-checkbox *ngIf=\"value.isCheckbox && value.checkboxVisible\"\n                          title=\"{{row && !row.isRowGroup ? '': translates.CHECK_UNCHECK_ALL | translate}}\"\n                          (change)=\"onCellCheckboxClick({\n                        id: row.id,\n                        prop: column.prop,\n                        name: column.name,\n                        isRowGroup: !!row?.isRowGroup,\n                        checked: $event.checked})\"\n                          [checked]=\"value.checkedData == 1 || value.checkedData == 2\"\n                          [disabled]=\"value.isDisabled\"></mat-checkbox>\n        </div>\n    </ng-template>\n\n    <ng-template #expandBtnTpl let-row=\"row\" let-column=\"column\" let-expanded=\"expanded\">\n        <div [class.row-group-cell]=\"row?.isRowGroup\">\n            <group-checkbox *ngIf=\"row?.isRowGroup && row?.hasGroupCheckbox\"\n                            [row]=\"row\"\n                            [tableCols]=\"visibleTableCols\"\n                            [allTableCols]=\"allTableCols\"\n                            (clicked)=\"onCellCheckboxClick($event)\">\n            </group-checkbox>\n\n            <button *ngIf=\"row && !row.isRowGroup\"\n                    mat-icon-button\n                    class=\"row-button\"\n                    title=\"Expand/Collapse Row\"\n                    (click)=\"toggleExpandRow(row, $event)\">\n                <es-icon\n                        [style.transform]=\"expanded ? 'rotate(90deg)' : 'rotate(0deg)'\"\n                        [style.transition]=\"'0.5s transform'\"\n                        [icon]=\"esIcon.KEYBOARD_ARROW_RIGHT\"\n                ></es-icon>\n            </button>\n        </div>\n    </ng-template>\n\n    <ng-template #cellTpl let-value=\"value\" let-column=\"column\" let-row=\"row\" let-cell=\"cell\" let-rowIndex=\"rowIndex\" ngx-datatable-cell-template>\n        <div [class.row-group-cell]=\"row?.isRowGroup\" [ngClass]=\"{'clickable': dynamicGrid.options.selectable}\">\n            <grid-cell [gridCell]=\"value\" [column]=\"column\" [parentWidth]=\"actionColWidth\" (reload)=\"reloadData();\" (buttonClick)=\"handleButtonClick($event, row)\"></grid-cell>\n            <row-group [row]=\"row\" *ngIf=\"column.isFirstColumn\" [groupFieldTitle]=\"groupFieldTitle\" (expandedGroup)=\"toggleExpandRowGroup($event)\"></row-group>\n        </div>\n    </ng-template>\n</div>\n\n\n<!--<ng-template #imgIconsTpl let-value=\"value\" let-row=\"row\"  let-column=\"column\">-->\n    <!--<div [class.row-group-cell]=\"row.isRowGroup\" >-->\n        <!--<row-group [row]=\"row\" *ngIf=\"column.isFirstColumn\" [groupFieldTitle]=\"groupFieldTitle\" (expandedGroup)=\"toggleExpandRowGroup($event)\"></row-group>-->\n        <!--<img-icons-template *ngIf=\"!row.isRowGroup\" [icon]=\"value\" [ngClass]=\"{'clickable': dynamicGrid.options.selectable}\"></img-icons-template>-->\n    <!--</div>-->\n<!--</ng-template>-->\n\n<!--<ng-template #iconsTpl let-value=\"value\" let-row=\"row\"  let-column=\"column\">-->\n    <!--<div [class.row-group-cell]=\"row.isRowGroup\">-->\n        <!--<row-group [row]=\"row\" *ngIf=\"column.isFirstColumn\" [groupFieldTitle]=\"groupFieldTitle\" (expandedGroup)=\"toggleExpandRowGroup($event)\"></row-group>-->\n        <!--<icons-template *ngIf=\"!row.isRowGroup\" [icons]=\"value['icons']\" [ngClass]=\"{'clickable': dynamicGrid.options.selectable}\"></icons-template>-->\n    <!--</div>-->\n<!--</ng-template>-->\n","import {NgModule} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {GroupCheckboxComponent} from './group-checkbox.component';\nimport {MatButtonModule} from '@angular/material/button';\nimport {MatCheckboxModule} from '@angular/material/checkbox';\nimport {MatMenuModule} from '@angular/material/menu';\nimport {TranslateModule} from '@ngx-translate/core';\nimport {EsIconModule} from '@eurosat/icon';\nimport {MatTooltipModule} from '@angular/material/tooltip';\n\n@NgModule({\n    imports: [\n        CommonModule,\n        MatTooltipModule,\n        EsIconModule,\n        MatCheckboxModule,\n        MatButtonModule,\n        MatMenuModule,\n        TranslateModule.forChild(),\n    ],\n    declarations: [GroupCheckboxComponent],\n    exports: [GroupCheckboxComponent],\n})\nexport class GroupCheckboxModule {\n\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FilterFieldComponent } from './filter-field.component';\nimport {MatButtonModule} from '@angular/material/button';\nimport {MatFormFieldModule} from '@angular/material/form-field';\nimport {MatIconModule} from '@angular/material/icon';\nimport {MatInputModule} from '@angular/material/input';\nimport {TranslateModule} from '@ngx-translate/core';\nimport {FormsModule} from '@angular/forms';\n\n@NgModule({\n    imports: [\n        CommonModule,\n        MatInputModule,\n        TranslateModule.forChild(),\n        MatFormFieldModule,\n        MatButtonModule,\n        MatIconModule,\n        FormsModule\n    ],\n    declarations: [FilterFieldComponent],\n    exports: [FilterFieldComponent]\n})\nexport class FilterFieldModule { }\n","import {NgModule} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {EsGridComponent} from './es-grid.component';\nimport {NgxDatatableModule} from '@swimlane/ngx-datatable';\nimport {TranslateModule} from '@ngx-translate/core';\nimport {MatCheckboxModule} from '@angular/material/checkbox';\nimport {MatInputModule} from '@angular/material/input';\nimport {MatTooltipModule} from '@angular/material/tooltip';\nimport {MatButtonModule} from '@angular/material/button';\nimport {MatMenuModule} from '@angular/material/menu';\nimport {MatProgressSpinnerModule} from '@angular/material/progress-spinner';\nimport {EsGridService} from './es-grid.service';\nimport {GridIconsComponent} from './components/grid-icons/grid-icons.component';\nimport {GroupCheckboxModule} from './group-checkbox/group-checkbox.module';\nimport {GridImagesComponent} from './components/grid-images/grid-images.component';\nimport {RowGroupComponent} from './row-group/row-group.component';\nimport {GridCellComponent} from './components/grid-cell/grid-cell.component';\nimport {GridHtmlComponent} from './components/grid-html/grid-html.component';\nimport {EsIconModule} from '@eurosat/icon';\nimport {EsButtonsModule} from '@eurosat/buttons';\nimport {EsSnackBarModule} from '@eurosat/snackbar';\nimport {EsResizedEventModule} from '@eurosat/resized-event';\nimport {EsMenuDirectiveModule} from '@eurosat/menu-directive';\nimport {FilterFieldModule} from './filter-field/filter-field.module';\nimport {MatSelectModule} from '@angular/material/select';\n\n\n@NgModule({\n    imports: [\n        CommonModule,\n        NgxDatatableModule,\n        EsButtonsModule,\n        GroupCheckboxModule,\n        MatInputModule,\n        MatTooltipModule,\n        MatCheckboxModule,\n        MatButtonModule,\n        MatMenuModule,\n        TranslateModule.forChild(),\n        FilterFieldModule,\n        EsSnackBarModule,\n        EsIconModule,\n        MatProgressSpinnerModule,\n        EsMenuDirectiveModule,\n        EsResizedEventModule,\n        MatSelectModule\n    ],\n    declarations: [\n        EsGridComponent,\n        GridIconsComponent,\n        GridImagesComponent,\n        GridHtmlComponent,\n        RowGroupComponent,\n        GridCellComponent,\n    ],\n    exports: [\n        EsGridComponent,\n    ],\n    providers: [EsGridService],\n})\nexport class EsGridModule {\n\n}\n","/*\n * Public API Surface of grid\n */\n\nexport * from './lib/es-grid.service';\nexport * from './lib/es-grid.component';\nexport * from './lib/es-grid.module';\nexport * from './lib/es-grid-response';\nexport * from './lib/es-grid-row';\nexport * from './lib/model/cell-checkbox-click-event.interface';\nexport * from './lib/model/es-grid.interface';\nexport * from './lib/model/es-grid-column';\nexport * from './lib/model/es-grid-options.interface';\nexport * from './lib/model/es-grid-page';\nexport * from './lib/model/es-grid-paged-data';\nexport * from './lib/model/row-button.interface';\nexport * from './lib/model/row-clicked.interface';\nexport * from './lib/model/rows-height.interface';\nexport * from './lib/model/es-table-column';\nexport * from './lib/model/es-grid.params';\nexport * from './lib/es-grid.translates';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["i1","i6","i2","i3","i5","i7","i4","i4.GridIconsComponent","i5.GridImagesComponent","i6.GridHtmlComponent","i2.EsGridService","i8","i9.GroupCheckboxComponent","i10","i11","i12","i13","i14","i15.FilterFieldComponent","i16","i22.RowGroupComponent","i23.GridCellComponent"],"mappings":"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"}