coer-elements 0.0.47 → 0.0.48
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/components/lib/coer-modal/coer-modal.component.d.ts +1 -1
- package/components/lib/coer-numberbox/coer-numberbox.component.d.ts +1 -1
- package/components/lib/coer-textarea/coer-textarea.component.d.ts +1 -1
- package/components/lib/coer-textbox/coer-textbox.component.d.ts +1 -1
- package/esm2022/components/lib/coer-grid/coer-grid.component.mjs +2 -2
- package/fesm2022/coer-elements-components.mjs +2 -2
- package/fesm2022/coer-elements-components.mjs.map +1 -1
- package/package.json +1 -1
- package/styles/coer-elements.css +1 -0
| @@ -2351,11 +2351,11 @@ class CoerGrid extends CoerGridExtension { | |
| 2351 2351 | 
             
                    }
         | 
| 2352 2352 | 
             
                }
         | 
| 2353 2353 | 
             
                static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: CoerGrid, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
         | 
| 2354 | 
            -
                static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.12", type: CoerGrid, selector: "coer-grid", providers: [CONTROL_VALUE(CoerGrid)], usesInheritance: true, ngImport: i0, template: "<div class=\"coer-grid\" [ngStyle]=\"{ 'width': width(), 'min-Width': MinWidth(), 'max-Width': MaxWidth(), 'margin': margin() }\">\r\n    <header [id]=\"_id + '-header'\" class=\"row\">\r\n        <!-- Slot -->\r\n        <ng-content></ng-content>\r\n\r\n        <!-- Export Button -->\r\n        @if(exportButton.show && gridLength().dataSource > 0) {\r\n            <div class=\"col-auto\">\r\n                <coer-button\r\n                    type=\"icon\"\r\n                    color=\"navigation\"\r\n                    icon=\"excel\"\r\n                    [tooltip]=\"_isLoading ? 'Loading' : (exportButton.tooltip || 'Export')\"\r\n                    [path]=\"(exportButton && exportButton.path) ? exportButton.path : []\"\r\n                    [isDisabled]=\"_isDisabled() || _isLoading || (exportButton.isDisabled || false)\"\r\n                    [isLoading]=\"_isLoading\"\r\n                    [animation]=\"_enableAnimations\"\r\n                    (onClick)=\"Export(!exportButton.preventDefault)\"\r\n                ></coer-button>\r\n            </div>\r\n        }\r\n\r\n        <!-- Import Button -->\r\n        @if(importButton.show) {\r\n            <div class=\"col-auto\">\r\n                <input type=\"file\" #inputFileRef [multiple]=\"false\" (change)=\"Import($event)\">\r\n\r\n                <coer-button\r\n                    type=\"icon\"\r\n                    color=\"navigation\"\r\n                    icon=\"import\"\r\n                    [tooltip]=\"importButton.tooltip || 'Import'\"\r\n                    [path]=\"(importButton && importButton.path) ? importButton.path : []\"\r\n                    [isDisabled]=\"importButton.isDisabled || false\"\r\n                    [animation]=\"_enableAnimations\"\r\n                    (onClick)=\"Import()\"\r\n                ></coer-button>\r\n            </div>\r\n        }\r\n\r\n        <!-- Add Button -->\r\n        @if(addButton.show) {\r\n            <div class=\"col-auto\">\r\n                <coer-button\r\n                    type=\"icon\"\r\n                    color=\"navigation\"\r\n                    icon=\"new\"\r\n                    [tooltip]=\"addButton.tooltip || 'New'\"\r\n                    [path]=\"(addButton && addButton.path) ? addButton.path : []\"\r\n                    [isDisabled]=\"addButton.isDisabled || false\"\r\n                    [animation]=\"_enableAnimations\"\r\n                    (onClick)=\"onClickAdd.emit()\"\r\n                ></coer-button>\r\n            </div>\r\n        }\r\n\r\n        <!-- Search -->\r\n        @if(search.show) {\r\n            <div class=\"col-auto\">\r\n                <coer-textbox\r\n                    #inputSearch\r\n                    [id]=\"_GetId(-1, -1, 'search')\"\r\n                    [ngModel]=\"_gridSearch()\"\r\n                    placeholder=\"Search\"\r\n                    [isDisabled]=\"_isDisabled() || _isLoading\"\r\n                    [selectOnFocus]=\"true\"\r\n                    width=\"250px\"\r\n                    [showSearchIcon]=\"true\"\r\n                    [showClearIcon]=\"true\"\r\n                    (onInput)=\"InputChange(-1, 'Search', $event, 'coer-textbox-search')\"\r\n                    (onClickClear)=\"InputChange(-1, 'Search', '', 'coer-textbox-search')\"\r\n                    (onKeyupEnter)=\"KeyupEnter(-1, { indexRow: -1 }, 'coer-textbox-search', $event);\"\r\n                ></coer-textbox>\r\n            </div>\r\n        }\r\n    </header>\r\n\r\n    <section [ngClass]=\"{ 'grid-container': true, 'invisible': isInvisible() }\">\r\n        <div [ngStyle]=\"{ 'height': _height, 'min-height': minHeight(), 'max-height': maxHeight() }\">\r\n            @if(isLoading()) {\r\n                <!-- Grid Message -->\r\n                <div class=\"loading\">\r\n                    <i class=\"spinner-border\"></i>\r\n                    <span class=\"fa-fade\">Loading</span>\r\n                </div>\r\n            }\r\n\r\n            @else if(!_isDisabled() && gridLength().dataSource <= 0) {\r\n                <div class=\"no-data\"> No Data </div>\r\n            }\r\n\r\n            <table class=\"table table-sm table-responsive table-striped\">\r\n                <thead>\r\n                    <tr>\r\n                        @if(checkbox.show && gridLength().dataSource > 0) {\r\n                            <!-- CheckBox Column -->\r\n                            <th scope=\"col\" class=\"check-box\">\r\n                                <div *ngIf=\"!_onlyOneCheck\" [ngClass]=\"{ 'invisible': _isLoadingMessage }\">\r\n                                    <coer-checkbox\r\n                                        [id]=\"_GetId(0, 0, 'checkboxAll')\"\r\n                                        [ignoreModel]=\"true\"\r\n                                        [isDisabled]=\"_isDisabled() || _isLoading\"\r\n                                        (onChange)=\"ClickCheck(_GetId(0, 0, 'checkboxAll'), $event, true)\"\r\n                                    ></coer-checkbox>\r\n                                </div>\r\n                            </th>\r\n                        }\r\n\r\n                        <!-- Dynamic Grid Column -->\r\n                        @for(header of gridColumns(); track header.indexColumn) {\r\n                            <th scope=\"col\" (dblclick)=\"Sort(header.columnName)\"\r\n                                [ngClass]=\"{\r\n                                    'no-selection': true,\r\n                                    'cursor-default': !enableSort() && !_isLoading,\r\n                                    'cursor-pointer': enableSort() && !_isLoading,\r\n                                    'cursor-wait': _isLoading\r\n                                }\"\r\n                                [ngStyle]=\"{\r\n                                    'width': header.width,\r\n                                    'text-align': GetAttribute(header.columnName, null, 'textAlign', 'defaul-cell')\r\n                                }\">\r\n                                <div class=\"no-selection\">\r\n                                    {{ _GetColumnName(header.columnName) }}\r\n                                    <i [class]=\"_GetShortIcon(header.columnName)\"></i>\r\n                                </div>\r\n                            </th>\r\n                        }\r\n\r\n                        <!-- Delete Button Column -->\r\n                        @if(ButtonByRow('showDeleteButton')) {\r\n                            <th scope=\"col\" class=\"action-button\"></th>\r\n                        }\r\n\r\n                        <!-- Edit Button Column -->\r\n                        @if(ButtonByRow('showEditButton')) {\r\n                            <th scope=\"col\" class=\"action-button\"></th>\r\n                        }\r\n\r\n                        <!-- Edit Button Column -->\r\n                        @if(ButtonByRow('showGoButton')) {\r\n                            <th scope=\"col\" class=\"action-button\"></th>\r\n                        }\r\n                    </tr>\r\n                </thead>\r\n\r\n                <!-- body -->\r\n                @for(group of gridDataSource(); track group.indexGroup) {\r\n                    <tbody>\r\n                        <!--<tr v-if=\"_isGrouped\">\r\n                            <td :colspan=\"_colspan\" class=\"group\">\r\n                                <MesAccordion\r\n                                    :ref=\"`accordion${group.indexGroup}-${id}`\"\r\n                                    :title=\"`${_CleanHeaderName(groupBy)} (${group.length}):  ${group.groupBy}`\"\r\n                                    :isLoading=\"_isLoading\"\r\n                                    @expanded=\"_ToogleAccordion(group.groupBy, true, group.indexGroup)\"\r\n                                    @collapsed=\"_ToogleAccordion(group.groupBy, false, group.indexGroup)\"\r\n                                ></MesAccordion>\r\n                            </td>\r\n                        </tr>-->\r\n\r\n                        @for(row of group.rows; track row.indexRow) {\r\n                            <tr [id]=\"_GetId(row.indexRow, 0, 'row')\"\r\n                                [ngClass]=\"{ 'loading': isLoading(), 'd-none': _HideRow(group), 'row-focus': (row.indexRow == _indexFocus() && enableRowFocus()) }\"\r\n                                (click)=\"_indexFocus.set(row.indexRow)\">\r\n\r\n                                @if(checkbox.show) {\r\n                                    <!-- CheckBox Column -->\r\n                                    <td class=\"check-box\">\r\n                                        <div [ngClass]=\"{ 'invisible': _isLoadingMessage }\">\r\n                                            <coer-checkbox\r\n                                                [id]=\"_GetId(row.indexRow, 0, 'checkbox')\"\r\n                                                [ignoreModel]=\"true\"\r\n                                                [isDisabled]=\"_isDisabled() || _isLoading\"\r\n                                                (onChange)=\"ClickCheck(_GetId(row.indexRow, 0, 'checkbox'), $event, false, row)\"\r\n                                            ></coer-checkbox>\r\n                                        </div>\r\n\r\n                                        <div [ngClass]=\"{ 'invisible': !_isLoadingMessage, 'spinner-border-container': true }\">\r\n                                            <i class=\"spinner-border\"></i>\r\n                                        </div>\r\n                                    </td>\r\n                                }\r\n\r\n                                <!-- Dynamic Column -->\r\n                                @for(header of gridColumns(); track header.indexColumn) {\r\n                                    @if(_IsCellType(header.columnName, row, 'template')) {\r\n                                        <td class=\"template\"\r\n                                            (click)=\"_isDisabled() ? null : onClickRow.emit(row)\"\r\n                                            (dblclick)=\"_isDisabled() ? null : onDoubleClickRow.emit(row)\">\r\n                                            <div [innerHTML]=\"GetAttribute(header.columnName, row, 'template', 'defaul-cell') | html\" class=\"template\"></div>\r\n                                        </td>\r\n                                    }\r\n\r\n                                    @else if(_IsCellType(header.columnName, row, 'coerTextbox')) {\r\n                                        <!-- coer-textbox -->\r\n                                        <td class=\"coer-textbox\">\r\n                                            <coer-textbox\r\n                                                [id]=\"_GetId(row.indexRow, header.indexColumn)\"\r\n                                                [(ngModel)]=\"row[header.columnName]\"\r\n                                                [isDisabled]=\"GetAttribute(header.columnName, row, 'isDisabled', 'coerTextbox') || _isDisabled() || _isLoading\"\r\n                                                [isValid]=\"GetAttribute(header.columnName, row, 'isValid', 'coerTextbox') || false\"\r\n                                                [isInvalid]=\"GetAttribute(header.columnName, row, 'isInvalid', 'coerTextbox') || false\"\r\n                                                [selectOnFocus]=\"GetAttribute(header.columnName, row, 'selectOnFocus', 'coerTextbox') || true\"\r\n                                                [placeholder]=\"GetAttribute(header.columnName, row, 'placeholder', 'coerTextbox') || ('Type ' + header.columnName + '...')\"\r\n                                                [textPosition]=\"GetAttribute(header.columnName, row, 'textPosition', 'coerTextbox') || 'left'\"\r\n                                                [minLength]=\"GetAttribute(header.columnName, row, 'minLength', 'coerTextbox') || 0\"\r\n                                                [maxLength]=\"GetAttribute(header.columnName, row, 'maxLength', 'coerTextbox') || 50\"\r\n                                                (onInput)=\"InputChange(row.indexRow, header.columnName, $event, 'coer-textbox')\"\r\n                                                (onKeyupEnter)=\"KeyupEnter(header.indexColumn, row, 'coer-textbox', $event)\"\r\n                                            ></coer-textbox>\r\n                                        </td>\r\n                                    }\r\n\r\n\r\n                                    @else if(_IsCellType(header.columnName, row, 'coerNumberbox')) {\r\n                                        <!-- coer-numberbox -->\r\n                                        <td class=\"coer-numberbox\">\r\n                                            <coer-numberbox\r\n                                                [id]=\"_GetId(row.indexRow, header.indexColumn)\"\r\n                                                [(ngModel)]=\"row[header.columnName]\"\r\n                                                [isDisabled]=\"GetAttribute(header.columnName, row, 'isDisabled', 'coerNumberbox') || _isDisabled() || _isLoading\"\r\n                                                [isValid]=\"GetAttribute(header.columnName, row, 'isValid', 'coerNumberbox') || false\"\r\n                                                [isInvalid]=\"GetAttribute(header.columnName, row, 'isInvalid', 'coerNumberbox') || false\"\r\n                                                [selectOnFocus]=\"GetAttribute(header.columnName, row, 'selectOnFocus', 'coerNumberbox') || true\"\r\n                                                [placeholder]=\"GetAttribute(header.columnName, row, 'placeholder', 'coerNumberbox') || ''\"\r\n                                                [textPosition]=\"GetAttribute(header.columnName, row, 'textPosition', 'coerNumberbox') || 'right'\"\r\n                                                [min]=\"GetAttribute(header.columnName, row, 'min', 'coerNumberbox') || 0\"\r\n                                                [max]=\"GetAttribute(header.columnName, row, 'max', 'coerNumberbox') || 2147483647\"\r\n                                                [decimals]=\"GetAttribute(header.columnName, row, 'decimals', 'coerNumberbox') || 0\"\r\n                                                (onInput)=\"InputChange(row.indexRow, header.columnName, $event, 'coer-numberbox')\"\r\n                                                (onKeyupEnter)=\"KeyupEnter(header.indexColumn, row, 'coer-numberbox', $event)\"\r\n                                            ></coer-numberbox>\r\n                                        </td>\r\n                                    }\r\n\r\n\r\n                                    @else if(_IsCellType(header.columnName, row, 'coerSelectbox')) {\r\n                                        <!-- coer-numberbox -->\r\n                                        <td class=\"coer-selectbox\">\r\n                                            <coer-selectbox\r\n                                                [id]=\"_GetId(row.indexRow, header.indexColumn)\"\r\n                                                [(ngModel)]=\"row[header.columnName]\"\r\n                                                [isDisabled]=\"GetAttribute(header.columnName, row, 'isDisabled', 'coerSelectbox') || _isDisabled() || _isLoading\"\r\n                                                [isValid]=\"GetAttribute(header.columnName, row, 'isValid', 'coerSelectbox') || false\"\r\n                                                [isInvalid]=\"GetAttribute(header.columnName, row, 'isInvalid', 'coerSelectbox') || false\"\r\n                                                [dataSource]=\"GetAttribute(header.columnName, row, 'dataSource', 'coerSelectbox') || []\"\r\n                                                [placeholder]=\"GetAttribute(header.columnName, row, 'placeholder', 'coerSelectbox') || '-- Select --'\"\r\n                                                [propDisplay]=\"GetAttribute(header.columnName, row, 'propDisplay', 'coerSelectbox') || 'name'\"\r\n                                                (onSelected)=\"InputChange(row.indexRow, header.columnName, $event, 'coer-selectbox'); KeyupEnter(header.indexColumn, row, 'coer-selectbox', $event)\"\r\n                                            ></coer-selectbox>\r\n                                        </td>\r\n                                    }\r\n\r\n\r\n                                    @else if(_IsCellType(header.columnName, row, 'coerSwitch')) {\r\n                                        <!-- coer-switch -->\r\n                                        <td>\r\n                                            <coer-switch\r\n                                                [id]=\"_GetId(row.indexRow, header.indexColumn)\"\r\n                                                [(ngModel)]=\"row[header.columnName]\"\r\n                                                [isDisabled]=\"GetAttribute(header.columnName, row, 'isDisabled', 'coerSwitch') || _isDisabled() || _isLoading\"\r\n                                                [tooltip]=\"GetAttribute(header.columnName, row, 'tooltip', 'coerSwitch')\"\r\n                                                [tooltipPosition]=\"GetAttribute(header.columnName, row, 'tooltipPosition', 'coerSwitch') || 'left'\"\r\n                                                [isInvisible]=\"_isDisabled()\"\r\n                                                (onChange)=\"InputChange(row.indexRow, header.columnName, $event, 'coer-switch')\"\r\n                                            ></coer-switch>\r\n                                        </td>\r\n                                    }\r\n\r\n                                    @else {\r\n                                        <!-- Default Cell -->\r\n                                        <td class=\"default-cell\"\r\n                                            (click)=\"ClickOnRow(row)\"\r\n                                            (dblclick)=\"_isDisabled() ? null : onDoubleClickRow.emit(row)\"\r\n                                            [ngStyle]=\"{\r\n                                                'text-align': GetAttribute(header.columnName, row, 'textAlign', 'defaul-cell'),\r\n                                                'white-space': 'normal'\r\n                                            }\">\r\n\r\n                                            <div [id]=\"_GetId(row.indexRow, header.indexColumn)\"\r\n                                                [ngClass]=\"{\r\n                                                    'text-blue-bold': _IsCellColor(header.columnName, row, 'colorBlue'),\r\n                                                    'text-green-bold': _IsCellColor(header.columnName, row, 'colorGreen'),\r\n                                                    'text-yellow-bold': _IsCellColor(header.columnName, row, 'colorYellow'),\r\n                                                    'text-red-bold': _IsCellColor(header.columnName, row, 'colorRed'),\r\n                                                    'text-right-bold': _IsCellType(header.columnName, row, 'number')\r\n                                                }\">\r\n\r\n                                                @if(_IsCellType(header.columnName, row, 'number')) {\r\n                                                    <span> {{ GetNumericFormat(row[header.columnName]) }} </span>\r\n                                                }\r\n\r\n                                                @else if(_IsCellType(header.columnName, row, 'date')) {\r\n                                                    <span> {{ GetDateFormat(row[header.columnName]) }} </span>\r\n                                                }\r\n\r\n                                                @else {\r\n                                                    <span> {{ _GetCellValue(row, header.columnName) }} </span>\r\n                                                }\r\n                                            </div>\r\n                                        </td>\r\n                                    }\r\n                                }\r\n\r\n                                <!-- Delete Button -->\r\n                                @if(ButtonByRow('showDeleteButton')) {\r\n                                    <td class=\"action-button\">\r\n                                        @if(ButtonByRow('showDeleteButton', row)) {\r\n                                            <coer-button\r\n                                                type=\"icon-no-border\"\r\n                                                color=\"navigation\"\r\n                                                icon=\"delete\"\r\n                                                [tooltip]=\"_GetTooltip('Delete', row)\"\r\n                                                [isInvisible]=\"_isDisabled()\"\r\n                                                [isDisabled]=\"_isLoading\"\r\n                                                (onClick)=\"onClickDeleteRow.emit(row)\"\r\n                                            ></coer-button>\r\n                                        }\r\n                                    </td>\r\n                                }\r\n\r\n                                <!-- Edit Button -->\r\n                                @if(ButtonByRow('showEditButton')) {\r\n                                    <td class=\"action-button\">\r\n                                        @if(ButtonByRow('showEditButton', row)) {\r\n                                            <coer-button\r\n                                                type=\"icon-no-border\"\r\n                                                color=\"navigation\"\r\n                                                icon=\"edit\"\r\n                                                [tooltip]=\"_GetTooltip('Edit', row)\"\r\n                                                [isInvisible]=\"_isDisabled()\"\r\n                                                [isDisabled]=\"_isLoading\"\r\n                                                (onClick)=\"onClickEditRow.emit(row)\"\r\n                                            ></coer-button>\r\n                                        }\r\n                                    </td>\r\n                                }\r\n\r\n                                <!-- GO Button -->\r\n                                @if(ButtonByRow('showGoButton')) {\r\n                                    <td class=\"action-button\">\r\n                                        @if(ButtonByRow('showGoButton', row)) {\r\n                                            <coer-button\r\n                                                type=\"icon-no-border\"\r\n                                                color=\"navigation\"\r\n                                                icon=\"go\"\r\n                                                [tooltip]=\"_GetTooltip('Go to', row, 'detail')\"\r\n                                                [isInvisible]=\"_isDisabled()\"\r\n                                                [isDisabled]=\"_isLoading\"\r\n                                                (onClick)=\"onClickGoRow.emit(row)\"\r\n                                            ></coer-button>\r\n                                        }\r\n                                    </td>\r\n                                }\r\n                            </tr>\r\n                        }\r\n                    </tbody>\r\n                }\r\n            </table>\r\n        </div>\r\n    </section>\r\n\r\n    @if(showFooter()) {\r\n        <footer class=\"grid-footer\">\r\n            <span>\r\n                @if(_isLoadingMessage) {\r\n                    <span class=\"fa-fade\"> Loading </span>\r\n                }\r\n\r\n                @else if(gridLength().dataSourceSelected > 0) {\r\n                    <span>\r\n                        <i class=\"bi bi-check2-square ms-1\"></i>\r\n                        {{ gridLength().dataSourceSelected }}\r\n                    </span>\r\n                }\r\n            </span>\r\n\r\n            <span class=\"me-1\"> {{ gridLength().dataSourceFiltered | numericFormat }} Rows </span>\r\n        </footer>\r\n    }\r\n</div>", styles: ["div.coer-grid *{--blue: #0d6efd;--gray: #6c757d;--green: #198754;--yellow: #ffc107;--red: #dc3545;--white: #f5f5f5;--black: #252525;--orange: #fd6031;--purple: #a615bc}div.coer-grid .text-blue{color:#0d6efd!important}div.coer-grid .text-blue-bold{color:#0d6efd!important;font-weight:700!important}div.coer-grid .background-blue{background-color:#0d6efd!important}div.coer-grid .background-border-blue{background-color:#0d6efd!important;border-color:#0d6efd!important}div.coer-grid .border-blue{border-color:#0d6efd!important}div.coer-grid .text-gray{color:#6c757d!important}div.coer-grid .text-gray-bold{color:#6c757d!important;font-weight:700!important}div.coer-grid .background-gray{background-color:#6c757d!important}div.coer-grid .background-border-gray{background-color:#6c757d!important;border-color:#6c757d!important}div.coer-grid .border-gray{border-color:#6c757d!important}div.coer-grid .text-green{color:#198754!important}div.coer-grid .text-green-bold{color:#198754!important;font-weight:700!important}div.coer-grid .background-green{background-color:#198754!important}div.coer-grid .background-border-green{background-color:#198754!important;border-color:#198754!important}div.coer-grid .border-green{border-color:#198754!important}div.coer-grid .text-yellow{color:#ffc107!important}div.coer-grid .text-yellow-bold{color:#ffc107!important;font-weight:700!important}div.coer-grid .background-yellow{background-color:#ffc107!important}div.coer-grid .background-border-yellow{background-color:#ffc107!important;border-color:#ffc107!important}div.coer-grid .border-yellow{border-color:#ffc107!important}div.coer-grid .text-red{color:#dc3545!important}div.coer-grid .text-red-bold{color:#dc3545!important;font-weight:700!important}div.coer-grid .background-red{background-color:#dc3545!important}div.coer-grid .background-border-red{background-color:#dc3545!important;border-color:#dc3545!important}div.coer-grid .border-red{border-color:#dc3545!important}div.coer-grid .text-white{color:#f5f5f5!important}div.coer-grid .text-white-bold{color:#f5f5f5!important;font-weight:700!important}div.coer-grid .background-white{background-color:#f5f5f5!important}div.coer-grid .background-border-white{background-color:#f5f5f5!important;border-color:#f5f5f5!important}div.coer-grid .border-white{border-color:#f5f5f5!important}div.coer-grid .text-black{color:#252525!important}div.coer-grid .text-black-bold{color:#252525!important;font-weight:700!important}div.coer-grid .background-black{background-color:#252525!important}div.coer-grid .background-border-black{background-color:#252525!important;border-color:#252525!important}div.coer-grid .border-black{border-color:#252525!important}div.coer-grid .text-orange{color:#fd6031!important}div.coer-grid .text-orange-bold{color:#fd6031!important;font-weight:700!important}div.coer-grid .background-orange{background-color:#fd6031!important}div.coer-grid .background-border-orange{background-color:#fd6031!important;border-color:#fd6031!important}div.coer-grid .border-orange{border-color:#fd6031!important}div.coer-grid .text-transparent{color:transparent!important}div.coer-grid .background-transparent{background-color:transparent!important}div.coer-grid .border-transparent{border-color:transparent!important}div.coer-grid header{align-items:flex-end;justify-content:flex-end;padding-right:8px;margin:0}div.coer-grid header>div{padding:0 0 10px 10px;display:flex;align-items:baseline}div.coer-grid header>div a{height:40px!important}div.coer-grid table{table-layout:auto;border-collapse:separate;border-spacing:1px 0px;margin:0;font-size:14px}div.coer-grid table thead tr th{position:sticky!important;z-index:100!important;top:0!important;background-color:#6c757d!important;color:#f5f5f5!important;padding:5px!important;vertical-align:middle!important;overflow:hidden;text-overflow:ellipsis;word-wrap:break-word;min-width:50px!important;white-space:nowrap!important}div.coer-grid table tbody{border:0px!important}div.coer-grid table tbody tr:not(.row-focus):hover td{color:#000!important;background-color:#f1f6ff!important}div.coer-grid table tbody tr td{border:0px!important;padding:5px!important;vertical-align:middle!important;white-space:break-spaces;text-overflow:ellipsis;overflow:hidden}div.coer-grid table tbody tr.row-focus td{background-color:#cde1ff}div.coer-grid table tbody tr td.coer-textbox,div.coer-grid table tbody tr td.coer-numberbox,div.coer-grid table tbody tr td.coer-selectbox{padding:0!important;overflow:visible!important}div.coer-grid table tbody tr td.default-cell{cursor:pointer!important}div.coer-grid table thead tr th.action-button,div.coer-grid table thead tr td.action-button,div.coer-grid table thead tr th.check-box,div.coer-grid table thead tr td.check-box,div.coer-grid table tbody tr th.action-button,div.coer-grid table tbody tr td.action-button,div.coer-grid table tbody tr th.check-box table tbody tr td.check-box{text-align:center!important;cursor:default!important;min-width:40px!important;max-width:40px!important;width:40px!important;padding:0!important}div.coer-grid footer.grid-footer{display:flex;align-items:center;justify-content:space-between;font-size:small;color:#999;padding-top:5px}div.coer-grid section.grid-container{position:relative;overflow:auto}div.coer-grid div.loading,div.coer-grid div.no-data{position:absolute;display:flex;align-items:center;justify-content:center;width:100%;height:100%;font-size:25px;color:gray}div.coer-grid div.loading{background-color:#bbbbbb83!important;flex-direction:column!important;gap:10px!important}div.coer-grid div.loading span.fa-fade{position:relative!important;top:50px!important}div.coer-grid tr.loading{background-color:#bbbbbb83!important}div.coer-grid div.loading i.spinner-border{color:#fd6031!important;width:70px!important;height:70px!important;font-size:20px!important;position:absolute!important}div.coer-grid td.check-box div.spinner-border-container{position:absolute;transform:translate(7px,-19px)}div.coer-grid td.check-box div.spinner-border-container i.spinner-border{width:15px!important;height:15px!important;color:#fd6031!important}div.coer-grid table thead tr th.check-box>div,div.coer-grid table tbody tr td.check-box>div{display:flex;align-items:center;justify-content:center;cursor:default!important}div.coer-grid input.form-check-input{box-shadow:none!important;margin:0}div.coer-grid input[type=checkbox]{cursor:pointer!important}div.coer-grid td.group{padding:0!important;margin:0!important}div.coer-grid td.group>*{border-top:1px solid #6c757d!important;border-bottom:1px solid #6c757d!important;padding:0!important;margin:0!important}div.coer-grid .template,div.coer-grid .template div{white-space:nowrap!important;display:flex!important;align-items:center!important;cursor:pointer!important;gap:5px!important;width:100%}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: i2$2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2$2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: CoerButton, selector: "coer-button", inputs: ["id", "color", "type", "icon", "iconPosition", "animation", "isLoading", "isDisabled", "isInvisible", "width", "minWidth", "height", "minHeight", "marginTop", "marginRight", "marginBottom", "marginLeft", "path", "tooltipPosition", "tooltip"], outputs: ["onClick"] }, { kind: "component", type: CoerCheckbox, selector: "coer-checkbox", inputs: ["value", "id", "label", "labelPosition", "isDisabled", "isLoading", "isInvisible", "ignoreModel"], outputs: ["onChange"] }, { kind: "component", type: CoerNumberBox, selector: "coer-numberbox", inputs: ["value", "id", "label", "placeholder", "min", "max", "decimals", "width", "minWidth", "maxWidth", "marginTop", "marginRight", "marginBottom", "marginLeft", "isInvalid", "isValid", "isDisabled", "isReadonly", "isLoading", "selectOnFocus", "textPosition"], outputs: ["onKeyupEnter", "onInput"] }, { kind: "component", type: CoerSelectbox, selector: "coer-selectbox", inputs: ["value", "id", "label", "dataSource", "propDisplay", "rowsByPage", "placeholder", "width", "minWidth", "maxWidth", "marginTop", "marginRight", "marginBottom", "marginLeft", "isInvalid", "isValid", "isDisabled", "isReadonly", "isLoading"], outputs: ["onSelected", "onUnselect"] }, { kind: "component", type: CoerSwitch, selector: "coer-switch", inputs: ["value", "id", "label", "labelPosition", "isDisabled", "isLoading", "isInvisible", "tooltipPosition", "tooltip"], outputs: ["onChange"] }, { kind: "component", type: CoerTextBox, selector: "coer-textbox", inputs: ["value", "id", "label", "placeholder", "minLength", "maxLength", "showSearchIcon", "showClearIcon", "width", "minWidth", "maxWidth", "marginTop", "marginRight", "marginBottom", "marginLeft", "isInvalid", "isValid", "isDisabled", "isReadonly", "isLoading", "selectOnFocus", "textPosition"], outputs: ["onKeyupEnter", "onInput", "onClickClear"] }, { kind: "pipe", type: i9.HtmlPipe, name: "html" }, { kind: "pipe", type: i9.NumericFormatPipe, name: "numericFormat" }] }); }
         | 
| 2354 | 
            +
                static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.12", type: CoerGrid, selector: "coer-grid", providers: [CONTROL_VALUE(CoerGrid)], usesInheritance: true, ngImport: i0, template: "<div class=\"coer-grid\" [ngStyle]=\"{ 'width': width(), 'min-Width': MinWidth(), 'max-Width': MaxWidth(), 'margin': margin() }\">\r\n    <header [id]=\"_id + '-header'\" class=\"row\">\r\n        <!-- Slot -->\r\n        <ng-content></ng-content>\r\n\r\n        <!-- Export Button -->\r\n        @if(exportButton.show && gridLength().dataSource > 0) {\r\n            <div class=\"col-auto\">\r\n                <coer-button\r\n                    type=\"icon\"\r\n                    color=\"navigation\"\r\n                    icon=\"excel\"\r\n                    [tooltip]=\"_isLoading ? 'Loading' : (exportButton.tooltip || 'Export')\"\r\n                    [path]=\"(exportButton && exportButton.path) ? exportButton.path : []\"\r\n                    [isDisabled]=\"_isDisabled() || _isLoading || (exportButton.isDisabled || false)\"\r\n                    [isLoading]=\"_isLoading\"\r\n                    [animation]=\"_enableAnimations\"\r\n                    (onClick)=\"Export(!exportButton.preventDefault)\"\r\n                ></coer-button>\r\n            </div>\r\n        }\r\n\r\n        <!-- Import Button -->\r\n        @if(importButton.show) {\r\n            <div class=\"col-auto\">\r\n                <input type=\"file\" #inputFileRef [multiple]=\"false\" (change)=\"Import($event)\">\r\n\r\n                <coer-button\r\n                    type=\"icon\"\r\n                    color=\"navigation\"\r\n                    icon=\"import\"\r\n                    [tooltip]=\"importButton.tooltip || 'Import'\"\r\n                    [path]=\"(importButton && importButton.path) ? importButton.path : []\"\r\n                    [isDisabled]=\"importButton.isDisabled || false\"\r\n                    [animation]=\"_enableAnimations\"\r\n                    (onClick)=\"Import()\"\r\n                ></coer-button>\r\n            </div>\r\n        }\r\n\r\n        <!-- Add Button -->\r\n        @if(addButton.show) {\r\n            <div class=\"col-auto\">\r\n                <coer-button\r\n                    type=\"icon\"\r\n                    color=\"navigation\"\r\n                    icon=\"new\"\r\n                    [tooltip]=\"addButton.tooltip || 'New'\"\r\n                    [path]=\"(addButton && addButton.path) ? addButton.path : []\"\r\n                    [isDisabled]=\"addButton.isDisabled || false\"\r\n                    [animation]=\"_enableAnimations\"\r\n                    (onClick)=\"onClickAdd.emit()\"\r\n                ></coer-button>\r\n            </div>\r\n        }\r\n\r\n        <!-- Search -->\r\n        @if(search.show) {\r\n            <div class=\"col-auto\">\r\n                <coer-textbox\r\n                    #inputSearch\r\n                    [id]=\"_GetId(-1, -1, 'search')\"\r\n                    [ngModel]=\"_gridSearch()\"\r\n                    placeholder=\"Search\"\r\n                    [isDisabled]=\"_isDisabled() || _isLoading\"\r\n                    [selectOnFocus]=\"true\"\r\n                    width=\"250px\"\r\n                    [showSearchIcon]=\"true\"\r\n                    [showClearIcon]=\"true\"\r\n                    (onInput)=\"InputChange(-1, 'Search', $event, 'coer-textbox-search')\"\r\n                    (onClickClear)=\"InputChange(-1, 'Search', '', 'coer-textbox-search')\"\r\n                    (onKeyupEnter)=\"KeyupEnter(-1, { indexRow: -1 }, 'coer-textbox-search', $event);\"\r\n                ></coer-textbox>\r\n            </div>\r\n        }\r\n    </header>\r\n\r\n    <section [ngClass]=\"{ 'grid-container': true, 'invisible': isInvisible() }\">\r\n        <div [ngStyle]=\"{ 'height': _height, 'min-height': minHeight(), 'max-height': maxHeight() }\">\r\n            @if(isLoading()) {\r\n                <!-- Grid Message -->\r\n                <div class=\"loading\">\r\n                    <i class=\"spinner-border\"></i>\r\n                    <span class=\"fa-fade\">Loading</span>\r\n                </div>\r\n            }\r\n\r\n            @else if(!_isDisabled() && gridLength().dataSource <= 0) {\r\n                <div class=\"no-data\"> No Data </div>\r\n            }\r\n\r\n            <table class=\"table table-sm table-responsive table-striped\">\r\n                <thead>\r\n                    <tr>\r\n                        @if(checkbox.show && gridLength().dataSource > 0) {\r\n                            <!-- CheckBox Column -->\r\n                            <th scope=\"col\" class=\"check-box\">\r\n                                <div *ngIf=\"!_onlyOneCheck\" [ngClass]=\"{ 'invisible': _isLoadingMessage }\">\r\n                                    <coer-checkbox\r\n                                        [id]=\"_GetId(0, 0, 'checkboxAll')\"\r\n                                        [ignoreModel]=\"true\"\r\n                                        [isDisabled]=\"_isDisabled() || _isLoading\"\r\n                                        (onChange)=\"ClickCheck(_GetId(0, 0, 'checkboxAll'), $event, true)\"\r\n                                    ></coer-checkbox>\r\n                                </div>\r\n                            </th>\r\n                        }\r\n\r\n                        <!-- Dynamic Grid Column -->\r\n                        @for(header of gridColumns(); track header.indexColumn) {\r\n                            <th scope=\"col\" (dblclick)=\"Sort(header.columnName)\"\r\n                                [ngClass]=\"{\r\n                                    'no-selection': true,\r\n                                    'cursor-default': !enableSort() && !_isLoading,\r\n                                    'cursor-pointer': enableSort() && !_isLoading,\r\n                                    'cursor-wait': _isLoading\r\n                                }\"\r\n                                [ngStyle]=\"{\r\n                                    'width': header.width,\r\n                                    'text-align': GetAttribute(header.columnName, null, 'textAlign', 'defaul-cell')\r\n                                }\">\r\n                                <div class=\"no-selection\">\r\n                                    {{ _GetColumnName(header.columnName) }}\r\n                                    <i [class]=\"_GetShortIcon(header.columnName)\"></i>\r\n                                </div>\r\n                            </th>\r\n                        }\r\n\r\n                        <!-- Delete Button Column -->\r\n                        @if(ButtonByRow('showDeleteButton')) {\r\n                            <th scope=\"col\" class=\"action-button\"></th>\r\n                        }\r\n\r\n                        <!-- Edit Button Column -->\r\n                        @if(ButtonByRow('showEditButton')) {\r\n                            <th scope=\"col\" class=\"action-button\"></th>\r\n                        }\r\n\r\n                        <!-- Edit Button Column -->\r\n                        @if(ButtonByRow('showGoButton')) {\r\n                            <th scope=\"col\" class=\"action-button\"></th>\r\n                        }\r\n                    </tr>\r\n                </thead>\r\n\r\n                <!-- body -->\r\n                @for(group of gridDataSource(); track group.indexGroup) {\r\n                    <tbody>\r\n                        <!--<tr v-if=\"_isGrouped\">\r\n                            <td :colspan=\"_colspan\" class=\"group\">\r\n                                <MesAccordion\r\n                                    :ref=\"`accordion${group.indexGroup}-${id}`\"\r\n                                    :title=\"`${_CleanHeaderName(groupBy)} (${group.length}):  ${group.groupBy}`\"\r\n                                    :isLoading=\"_isLoading\"\r\n                                    @expanded=\"_ToogleAccordion(group.groupBy, true, group.indexGroup)\"\r\n                                    @collapsed=\"_ToogleAccordion(group.groupBy, false, group.indexGroup)\"\r\n                                ></MesAccordion>\r\n                            </td>\r\n                        </tr>-->\r\n\r\n                        @for(row of group.rows; track row.indexRow) {\r\n                            <tr [id]=\"_GetId(row.indexRow, 0, 'row')\"\r\n                                [ngClass]=\"{ 'loading': isLoading(), 'd-none': _HideRow(group), 'row-focus': (row.indexRow == _indexFocus() && enableRowFocus()) }\"\r\n                                (click)=\"_indexFocus.set(row.indexRow)\">\r\n\r\n                                @if(checkbox.show) {\r\n                                    <!-- CheckBox Column -->\r\n                                    <td class=\"check-box\">\r\n                                        <div [ngClass]=\"{ 'invisible': _isLoadingMessage }\">\r\n                                            <coer-checkbox\r\n                                                [id]=\"_GetId(row.indexRow, 0, 'checkbox')\"\r\n                                                [ignoreModel]=\"true\"\r\n                                                [isDisabled]=\"_isDisabled() || _isLoading\"\r\n                                                (onChange)=\"ClickCheck(_GetId(row.indexRow, 0, 'checkbox'), $event, false, row)\"\r\n                                            ></coer-checkbox>\r\n                                        </div>\r\n\r\n                                        <div [ngClass]=\"{ 'invisible': !_isLoadingMessage, 'spinner-border-container': true }\">\r\n                                            <i class=\"spinner-border\"></i>\r\n                                        </div>\r\n                                    </td>\r\n                                }\r\n\r\n                                <!-- Dynamic Column -->\r\n                                @for(header of gridColumns(); track header.indexColumn) {\r\n                                    @if(_IsCellType(header.columnName, row, 'template')) {\r\n                                        <td class=\"template\"\r\n                                            (click)=\"_isDisabled() ? null : onClickRow.emit(row)\"\r\n                                            (dblclick)=\"_isDisabled() ? null : onDoubleClickRow.emit(row)\">\r\n                                            <div [innerHTML]=\"GetAttribute(header.columnName, row, 'template', 'defaul-cell') | html\" class=\"template\"></div>\r\n                                        </td>\r\n                                    }\r\n\r\n                                    @else if(_IsCellType(header.columnName, row, 'coerTextbox')) {\r\n                                        <!-- coer-textbox -->\r\n                                        <td class=\"coer-textbox\">\r\n                                            <coer-textbox\r\n                                                [id]=\"_GetId(row.indexRow, header.indexColumn)\"\r\n                                                [(ngModel)]=\"row[header.columnName]\"\r\n                                                [isDisabled]=\"GetAttribute(header.columnName, row, 'isDisabled', 'coerTextbox') || _isDisabled() || _isLoading\"\r\n                                                [isValid]=\"GetAttribute(header.columnName, row, 'isValid', 'coerTextbox') || false\"\r\n                                                [isInvalid]=\"GetAttribute(header.columnName, row, 'isInvalid', 'coerTextbox') || false\"\r\n                                                [selectOnFocus]=\"GetAttribute(header.columnName, row, 'selectOnFocus', 'coerTextbox') || true\"\r\n                                                [placeholder]=\"GetAttribute(header.columnName, row, 'placeholder', 'coerTextbox') || ('Type ' + header.columnName + '...')\"\r\n                                                [textPosition]=\"GetAttribute(header.columnName, row, 'textPosition', 'coerTextbox') || 'left'\"\r\n                                                [minLength]=\"GetAttribute(header.columnName, row, 'minLength', 'coerTextbox') || 0\"\r\n                                                [maxLength]=\"GetAttribute(header.columnName, row, 'maxLength', 'coerTextbox') || 50\"\r\n                                                (onInput)=\"InputChange(row.indexRow, header.columnName, $event, 'coer-textbox')\"\r\n                                                (onKeyupEnter)=\"KeyupEnter(header.indexColumn, row, 'coer-textbox', $event)\"\r\n                                            ></coer-textbox>\r\n                                        </td>\r\n                                    }\r\n\r\n\r\n                                    @else if(_IsCellType(header.columnName, row, 'coerNumberbox')) {\r\n                                        <!-- coer-numberbox -->\r\n                                        <td class=\"coer-numberbox\">\r\n                                            <coer-numberbox\r\n                                                [id]=\"_GetId(row.indexRow, header.indexColumn)\"\r\n                                                [(ngModel)]=\"row[header.columnName]\"\r\n                                                [isDisabled]=\"GetAttribute(header.columnName, row, 'isDisabled', 'coerNumberbox') || _isDisabled() || _isLoading\"\r\n                                                [isValid]=\"GetAttribute(header.columnName, row, 'isValid', 'coerNumberbox') || false\"\r\n                                                [isInvalid]=\"GetAttribute(header.columnName, row, 'isInvalid', 'coerNumberbox') || false\"\r\n                                                [selectOnFocus]=\"GetAttribute(header.columnName, row, 'selectOnFocus', 'coerNumberbox') || true\"\r\n                                                [placeholder]=\"GetAttribute(header.columnName, row, 'placeholder', 'coerNumberbox') || ''\"\r\n                                                [textPosition]=\"GetAttribute(header.columnName, row, 'textPosition', 'coerNumberbox') || 'right'\"\r\n                                                [min]=\"GetAttribute(header.columnName, row, 'min', 'coerNumberbox') || 0\"\r\n                                                [max]=\"GetAttribute(header.columnName, row, 'max', 'coerNumberbox') || 2147483647\"\r\n                                                [decimals]=\"GetAttribute(header.columnName, row, 'decimals', 'coerNumberbox') || 0\"\r\n                                                (onInput)=\"InputChange(row.indexRow, header.columnName, $event, 'coer-numberbox')\"\r\n                                                (onKeyupEnter)=\"KeyupEnter(header.indexColumn, row, 'coer-numberbox', $event)\"\r\n                                            ></coer-numberbox>\r\n                                        </td>\r\n                                    }\r\n\r\n\r\n                                    @else if(_IsCellType(header.columnName, row, 'coerSelectbox')) {\r\n                                        <!-- coer-numberbox -->\r\n                                        <td class=\"coer-selectbox\">\r\n                                            <coer-selectbox\r\n                                                [id]=\"_GetId(row.indexRow, header.indexColumn)\"\r\n                                                [(ngModel)]=\"row[header.columnName]\"\r\n                                                [isDisabled]=\"GetAttribute(header.columnName, row, 'isDisabled', 'coerSelectbox') || _isDisabled() || _isLoading\"\r\n                                                [isValid]=\"GetAttribute(header.columnName, row, 'isValid', 'coerSelectbox') || false\"\r\n                                                [isInvalid]=\"GetAttribute(header.columnName, row, 'isInvalid', 'coerSelectbox') || false\"\r\n                                                [dataSource]=\"GetAttribute(header.columnName, row, 'dataSource', 'coerSelectbox') || []\"\r\n                                                [placeholder]=\"GetAttribute(header.columnName, row, 'placeholder', 'coerSelectbox') || '-- Select --'\"\r\n                                                [propDisplay]=\"GetAttribute(header.columnName, row, 'propDisplay', 'coerSelectbox') || 'name'\"\r\n                                                (onSelected)=\"InputChange(row.indexRow, header.columnName, $event, 'coer-selectbox'); KeyupEnter(header.indexColumn, row, 'coer-selectbox', $event)\"\r\n                                            ></coer-selectbox>\r\n                                        </td>\r\n                                    }\r\n\r\n\r\n                                    @else if(_IsCellType(header.columnName, row, 'coerSwitch')) {\r\n                                        <!-- coer-switch -->\r\n                                        <td>\r\n                                            <coer-switch\r\n                                                [id]=\"_GetId(row.indexRow, header.indexColumn)\"\r\n                                                [(ngModel)]=\"row[header.columnName]\"\r\n                                                [isDisabled]=\"GetAttribute(header.columnName, row, 'isDisabled', 'coerSwitch') || _isDisabled() || _isLoading\"\r\n                                                [tooltip]=\"GetAttribute(header.columnName, row, 'tooltip', 'coerSwitch')\"\r\n                                                [tooltipPosition]=\"GetAttribute(header.columnName, row, 'tooltipPosition', 'coerSwitch') || 'left'\"\r\n                                                [isInvisible]=\"_isDisabled()\"\r\n                                                (onChange)=\"InputChange(row.indexRow, header.columnName, $event, 'coer-switch')\"\r\n                                            ></coer-switch>\r\n                                        </td>\r\n                                    }\r\n\r\n                                    @else {\r\n                                        <!-- Default Cell -->\r\n                                        <td class=\"default-cell\"\r\n                                            (click)=\"ClickOnRow(row)\"\r\n                                            (dblclick)=\"_isDisabled() ? null : onDoubleClickRow.emit(row)\"\r\n                                            [ngStyle]=\"{\r\n                                                'text-align': GetAttribute(header.columnName, row, 'textAlign', 'defaul-cell'),\r\n                                                'white-space': 'normal'\r\n                                            }\">\r\n\r\n                                            <div [id]=\"_GetId(row.indexRow, header.indexColumn)\"\r\n                                                [ngClass]=\"{\r\n                                                    'text-blue-bold': _IsCellColor(header.columnName, row, 'colorBlue'),\r\n                                                    'text-green-bold': _IsCellColor(header.columnName, row, 'colorGreen'),\r\n                                                    'text-yellow-bold': _IsCellColor(header.columnName, row, 'colorYellow'),\r\n                                                    'text-red-bold': _IsCellColor(header.columnName, row, 'colorRed'),\r\n                                                    'text-right-bold': _IsCellType(header.columnName, row, 'number')\r\n                                                }\">\r\n\r\n                                                @if(_IsCellType(header.columnName, row, 'number')) {\r\n                                                    <span> {{ GetNumericFormat(row[header.columnName]) }} </span>\r\n                                                }\r\n\r\n                                                @else if(_IsCellType(header.columnName, row, 'date')) {\r\n                                                    <span> {{ GetDateFormat(row[header.columnName]) }} </span>\r\n                                                }\r\n\r\n                                                @else {\r\n                                                    <span> {{ _GetCellValue(row, header.columnName) }} </span>\r\n                                                }\r\n                                            </div>\r\n                                        </td>\r\n                                    }\r\n                                }\r\n\r\n                                <!-- Delete Button -->\r\n                                @if(ButtonByRow('showDeleteButton')) {\r\n                                    <td class=\"action-button\">\r\n                                        @if(ButtonByRow('showDeleteButton', row)) {\r\n                                            <coer-button\r\n                                                type=\"icon-no-border\"\r\n                                                color=\"navigation\"\r\n                                                icon=\"delete\"\r\n                                                [tooltip]=\"_GetTooltip('Delete', row)\"\r\n                                                [isInvisible]=\"_isDisabled()\"\r\n                                                [isDisabled]=\"_isLoading\"\r\n                                                (onClick)=\"onClickDeleteRow.emit(row)\"\r\n                                            ></coer-button>\r\n                                        }\r\n                                    </td>\r\n                                }\r\n\r\n                                <!-- Edit Button -->\r\n                                @if(ButtonByRow('showEditButton')) {\r\n                                    <td class=\"action-button\">\r\n                                        @if(ButtonByRow('showEditButton', row)) {\r\n                                            <coer-button\r\n                                                type=\"icon-no-border\"\r\n                                                color=\"navigation\"\r\n                                                icon=\"edit\"\r\n                                                [tooltip]=\"_GetTooltip('Edit', row)\"\r\n                                                [isInvisible]=\"_isDisabled()\"\r\n                                                [isDisabled]=\"_isLoading\"\r\n                                                (onClick)=\"onClickEditRow.emit(row)\"\r\n                                            ></coer-button>\r\n                                        }\r\n                                    </td>\r\n                                }\r\n\r\n                                <!-- GO Button -->\r\n                                @if(ButtonByRow('showGoButton')) {\r\n                                    <td class=\"action-button\">\r\n                                        @if(ButtonByRow('showGoButton', row)) {\r\n                                            <coer-button\r\n                                                type=\"icon-no-border\"\r\n                                                color=\"navigation\"\r\n                                                icon=\"go\"\r\n                                                [tooltip]=\"_GetTooltip('Go to', row, 'detail')\"\r\n                                                [isInvisible]=\"_isDisabled()\"\r\n                                                [isDisabled]=\"_isLoading\"\r\n                                                (onClick)=\"onClickGoRow.emit(row)\"\r\n                                            ></coer-button>\r\n                                        }\r\n                                    </td>\r\n                                }\r\n                            </tr>\r\n                        }\r\n                    </tbody>\r\n                }\r\n            </table>\r\n        </div>\r\n    </section>\r\n\r\n    @if(showFooter()) {\r\n        <footer class=\"grid-footer\">\r\n            <span>\r\n                @if(_isLoadingMessage) {\r\n                    <span class=\"fa-fade\"> Loading </span>\r\n                }\r\n\r\n                @else if(gridLength().dataSourceSelected > 0) {\r\n                    <span>\r\n                        <i class=\"bi bi-check2-square ms-1\"></i>\r\n                        {{ gridLength().dataSourceSelected }}\r\n                    </span>\r\n                }\r\n            </span>\r\n\r\n            <span class=\"me-1\"> {{ gridLength().dataSourceFiltered | numericFormat }} Rows </span>\r\n        </footer>\r\n    }\r\n</div>", styles: ["div.coer-grid *{--blue: #0d6efd;--gray: #6c757d;--green: #198754;--yellow: #ffc107;--red: #dc3545;--white: #f5f5f5;--black: #252525;--orange: #fd6031;--purple: #a615bc}div.coer-grid .text-blue{color:#0d6efd!important}div.coer-grid .text-blue-bold{color:#0d6efd!important;font-weight:700!important}div.coer-grid .background-blue{background-color:#0d6efd!important}div.coer-grid .background-border-blue{background-color:#0d6efd!important;border-color:#0d6efd!important}div.coer-grid .border-blue{border-color:#0d6efd!important}div.coer-grid .text-gray{color:#6c757d!important}div.coer-grid .text-gray-bold{color:#6c757d!important;font-weight:700!important}div.coer-grid .background-gray{background-color:#6c757d!important}div.coer-grid .background-border-gray{background-color:#6c757d!important;border-color:#6c757d!important}div.coer-grid .border-gray{border-color:#6c757d!important}div.coer-grid .text-green{color:#198754!important}div.coer-grid .text-green-bold{color:#198754!important;font-weight:700!important}div.coer-grid .background-green{background-color:#198754!important}div.coer-grid .background-border-green{background-color:#198754!important;border-color:#198754!important}div.coer-grid .border-green{border-color:#198754!important}div.coer-grid .text-yellow{color:#ffc107!important}div.coer-grid .text-yellow-bold{color:#ffc107!important;font-weight:700!important}div.coer-grid .background-yellow{background-color:#ffc107!important}div.coer-grid .background-border-yellow{background-color:#ffc107!important;border-color:#ffc107!important}div.coer-grid .border-yellow{border-color:#ffc107!important}div.coer-grid .text-red{color:#dc3545!important}div.coer-grid .text-red-bold{color:#dc3545!important;font-weight:700!important}div.coer-grid .background-red{background-color:#dc3545!important}div.coer-grid .background-border-red{background-color:#dc3545!important;border-color:#dc3545!important}div.coer-grid .border-red{border-color:#dc3545!important}div.coer-grid .text-white{color:#f5f5f5!important}div.coer-grid .text-white-bold{color:#f5f5f5!important;font-weight:700!important}div.coer-grid .background-white{background-color:#f5f5f5!important}div.coer-grid .background-border-white{background-color:#f5f5f5!important;border-color:#f5f5f5!important}div.coer-grid .border-white{border-color:#f5f5f5!important}div.coer-grid .text-black{color:#252525!important}div.coer-grid .text-black-bold{color:#252525!important;font-weight:700!important}div.coer-grid .background-black{background-color:#252525!important}div.coer-grid .background-border-black{background-color:#252525!important;border-color:#252525!important}div.coer-grid .border-black{border-color:#252525!important}div.coer-grid .text-orange{color:#fd6031!important}div.coer-grid .text-orange-bold{color:#fd6031!important;font-weight:700!important}div.coer-grid .background-orange{background-color:#fd6031!important}div.coer-grid .background-border-orange{background-color:#fd6031!important;border-color:#fd6031!important}div.coer-grid .border-orange{border-color:#fd6031!important}div.coer-grid .text-transparent{color:transparent!important}div.coer-grid .background-transparent{background-color:transparent!important}div.coer-grid .border-transparent{border-color:transparent!important}div.coer-grid header{align-items:flex-end;justify-content:flex-end;padding-right:8px;margin:0}div.coer-grid header>div{padding:0 0 10px 10px;display:flex;align-items:baseline}div.coer-grid header>div a{height:40px!important}div.coer-grid table{table-layout:auto;border-collapse:separate;border-spacing:1px 0px;margin:0;font-size:14px}div.coer-grid table thead tr th{position:sticky!important;z-index:100!important;top:0!important;background-color:#6c757d!important;color:#f5f5f5!important;padding:5px!important;vertical-align:middle!important;overflow:hidden;text-overflow:ellipsis;word-wrap:break-word;min-width:50px!important;white-space:nowrap!important}div.coer-grid table tbody{border:0px!important}div.coer-grid table tbody tr:not(.row-focus):hover td{color:#000!important;background-color:#f1f6ff!important}div.coer-grid table tbody tr td{border:0px!important;padding:5px!important;vertical-align:middle!important;white-space:break-spaces;text-overflow:ellipsis;overflow:hidden;min-height:31px!important}div.coer-grid table tbody tr.row-focus td{background-color:#cde1ff}div.coer-grid table tbody tr td.coer-textbox,div.coer-grid table tbody tr td.coer-numberbox,div.coer-grid table tbody tr td.coer-selectbox{padding:0!important;overflow:visible!important}div.coer-grid table tbody tr td.default-cell{cursor:pointer!important}div.coer-grid table thead tr th.action-button,div.coer-grid table thead tr td.action-button,div.coer-grid table thead tr th.check-box,div.coer-grid table thead tr td.check-box,div.coer-grid table tbody tr th.action-button,div.coer-grid table tbody tr td.action-button,div.coer-grid table tbody tr th.check-box table tbody tr td.check-box{text-align:center!important;cursor:default!important;min-width:40px!important;max-width:40px!important;width:40px!important;padding:0!important}div.coer-grid footer.grid-footer{display:flex;align-items:center;justify-content:space-between;font-size:small;color:#999;padding-top:5px}div.coer-grid section.grid-container{position:relative;overflow:auto}div.coer-grid div.loading,div.coer-grid div.no-data{position:absolute;display:flex;align-items:center;justify-content:center;width:100%;height:100%;font-size:25px;color:gray}div.coer-grid div.loading{background-color:#bbbbbb83!important;flex-direction:column!important;gap:10px!important}div.coer-grid div.loading span.fa-fade{position:relative!important;top:50px!important}div.coer-grid tr.loading{background-color:#bbbbbb83!important}div.coer-grid div.loading i.spinner-border{color:#fd6031!important;width:70px!important;height:70px!important;font-size:20px!important;position:absolute!important}div.coer-grid td.check-box div.spinner-border-container{position:absolute;transform:translate(7px,-19px)}div.coer-grid td.check-box div.spinner-border-container i.spinner-border{width:15px!important;height:15px!important;color:#fd6031!important}div.coer-grid table thead tr th.check-box>div,div.coer-grid table tbody tr td.check-box>div{display:flex;align-items:center;justify-content:center;cursor:default!important}div.coer-grid input.form-check-input{box-shadow:none!important;margin:0}div.coer-grid input[type=checkbox]{cursor:pointer!important}div.coer-grid td.group{padding:0!important;margin:0!important}div.coer-grid td.group>*{border-top:1px solid #6c757d!important;border-bottom:1px solid #6c757d!important;padding:0!important;margin:0!important}div.coer-grid .template,div.coer-grid .template div{white-space:nowrap!important;display:flex!important;align-items:center!important;cursor:pointer!important;gap:5px!important;width:100%}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: i2$2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2$2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: CoerButton, selector: "coer-button", inputs: ["id", "color", "type", "icon", "iconPosition", "animation", "isLoading", "isDisabled", "isInvisible", "width", "minWidth", "height", "minHeight", "marginTop", "marginRight", "marginBottom", "marginLeft", "path", "tooltipPosition", "tooltip"], outputs: ["onClick"] }, { kind: "component", type: CoerCheckbox, selector: "coer-checkbox", inputs: ["value", "id", "label", "labelPosition", "isDisabled", "isLoading", "isInvisible", "ignoreModel"], outputs: ["onChange"] }, { kind: "component", type: CoerNumberBox, selector: "coer-numberbox", inputs: ["value", "id", "label", "placeholder", "min", "max", "decimals", "width", "minWidth", "maxWidth", "marginTop", "marginRight", "marginBottom", "marginLeft", "isInvalid", "isValid", "isDisabled", "isReadonly", "isLoading", "selectOnFocus", "textPosition"], outputs: ["onKeyupEnter", "onInput"] }, { kind: "component", type: CoerSelectbox, selector: "coer-selectbox", inputs: ["value", "id", "label", "dataSource", "propDisplay", "rowsByPage", "placeholder", "width", "minWidth", "maxWidth", "marginTop", "marginRight", "marginBottom", "marginLeft", "isInvalid", "isValid", "isDisabled", "isReadonly", "isLoading"], outputs: ["onSelected", "onUnselect"] }, { kind: "component", type: CoerSwitch, selector: "coer-switch", inputs: ["value", "id", "label", "labelPosition", "isDisabled", "isLoading", "isInvisible", "tooltipPosition", "tooltip"], outputs: ["onChange"] }, { kind: "component", type: CoerTextBox, selector: "coer-textbox", inputs: ["value", "id", "label", "placeholder", "minLength", "maxLength", "showSearchIcon", "showClearIcon", "width", "minWidth", "maxWidth", "marginTop", "marginRight", "marginBottom", "marginLeft", "isInvalid", "isValid", "isDisabled", "isReadonly", "isLoading", "selectOnFocus", "textPosition"], outputs: ["onKeyupEnter", "onInput", "onClickClear"] }, { kind: "pipe", type: i9.HtmlPipe, name: "html" }, { kind: "pipe", type: i9.NumericFormatPipe, name: "numericFormat" }] }); }
         | 
| 2355 2355 | 
             
            }
         | 
| 2356 2356 | 
             
            i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: CoerGrid, decorators: [{
         | 
| 2357 2357 | 
             
                        type: Component,
         | 
| 2358 | 
            -
                        args: [{ selector: 'coer-grid', providers: [CONTROL_VALUE(CoerGrid)], template: "<div class=\"coer-grid\" [ngStyle]=\"{ 'width': width(), 'min-Width': MinWidth(), 'max-Width': MaxWidth(), 'margin': margin() }\">\r\n    <header [id]=\"_id + '-header'\" class=\"row\">\r\n        <!-- Slot -->\r\n        <ng-content></ng-content>\r\n\r\n        <!-- Export Button -->\r\n        @if(exportButton.show && gridLength().dataSource > 0) {\r\n            <div class=\"col-auto\">\r\n                <coer-button\r\n                    type=\"icon\"\r\n                    color=\"navigation\"\r\n                    icon=\"excel\"\r\n                    [tooltip]=\"_isLoading ? 'Loading' : (exportButton.tooltip || 'Export')\"\r\n                    [path]=\"(exportButton && exportButton.path) ? exportButton.path : []\"\r\n                    [isDisabled]=\"_isDisabled() || _isLoading || (exportButton.isDisabled || false)\"\r\n                    [isLoading]=\"_isLoading\"\r\n                    [animation]=\"_enableAnimations\"\r\n                    (onClick)=\"Export(!exportButton.preventDefault)\"\r\n                ></coer-button>\r\n            </div>\r\n        }\r\n\r\n        <!-- Import Button -->\r\n        @if(importButton.show) {\r\n            <div class=\"col-auto\">\r\n                <input type=\"file\" #inputFileRef [multiple]=\"false\" (change)=\"Import($event)\">\r\n\r\n                <coer-button\r\n                    type=\"icon\"\r\n                    color=\"navigation\"\r\n                    icon=\"import\"\r\n                    [tooltip]=\"importButton.tooltip || 'Import'\"\r\n                    [path]=\"(importButton && importButton.path) ? importButton.path : []\"\r\n                    [isDisabled]=\"importButton.isDisabled || false\"\r\n                    [animation]=\"_enableAnimations\"\r\n                    (onClick)=\"Import()\"\r\n                ></coer-button>\r\n            </div>\r\n        }\r\n\r\n        <!-- Add Button -->\r\n        @if(addButton.show) {\r\n            <div class=\"col-auto\">\r\n                <coer-button\r\n                    type=\"icon\"\r\n                    color=\"navigation\"\r\n                    icon=\"new\"\r\n                    [tooltip]=\"addButton.tooltip || 'New'\"\r\n                    [path]=\"(addButton && addButton.path) ? addButton.path : []\"\r\n                    [isDisabled]=\"addButton.isDisabled || false\"\r\n                    [animation]=\"_enableAnimations\"\r\n                    (onClick)=\"onClickAdd.emit()\"\r\n                ></coer-button>\r\n            </div>\r\n        }\r\n\r\n        <!-- Search -->\r\n        @if(search.show) {\r\n            <div class=\"col-auto\">\r\n                <coer-textbox\r\n                    #inputSearch\r\n                    [id]=\"_GetId(-1, -1, 'search')\"\r\n                    [ngModel]=\"_gridSearch()\"\r\n                    placeholder=\"Search\"\r\n                    [isDisabled]=\"_isDisabled() || _isLoading\"\r\n                    [selectOnFocus]=\"true\"\r\n                    width=\"250px\"\r\n                    [showSearchIcon]=\"true\"\r\n                    [showClearIcon]=\"true\"\r\n                    (onInput)=\"InputChange(-1, 'Search', $event, 'coer-textbox-search')\"\r\n                    (onClickClear)=\"InputChange(-1, 'Search', '', 'coer-textbox-search')\"\r\n                    (onKeyupEnter)=\"KeyupEnter(-1, { indexRow: -1 }, 'coer-textbox-search', $event);\"\r\n                ></coer-textbox>\r\n            </div>\r\n        }\r\n    </header>\r\n\r\n    <section [ngClass]=\"{ 'grid-container': true, 'invisible': isInvisible() }\">\r\n        <div [ngStyle]=\"{ 'height': _height, 'min-height': minHeight(), 'max-height': maxHeight() }\">\r\n            @if(isLoading()) {\r\n                <!-- Grid Message -->\r\n                <div class=\"loading\">\r\n                    <i class=\"spinner-border\"></i>\r\n                    <span class=\"fa-fade\">Loading</span>\r\n                </div>\r\n            }\r\n\r\n            @else if(!_isDisabled() && gridLength().dataSource <= 0) {\r\n                <div class=\"no-data\"> No Data </div>\r\n            }\r\n\r\n            <table class=\"table table-sm table-responsive table-striped\">\r\n                <thead>\r\n                    <tr>\r\n                        @if(checkbox.show && gridLength().dataSource > 0) {\r\n                            <!-- CheckBox Column -->\r\n                            <th scope=\"col\" class=\"check-box\">\r\n                                <div *ngIf=\"!_onlyOneCheck\" [ngClass]=\"{ 'invisible': _isLoadingMessage }\">\r\n                                    <coer-checkbox\r\n                                        [id]=\"_GetId(0, 0, 'checkboxAll')\"\r\n                                        [ignoreModel]=\"true\"\r\n                                        [isDisabled]=\"_isDisabled() || _isLoading\"\r\n                                        (onChange)=\"ClickCheck(_GetId(0, 0, 'checkboxAll'), $event, true)\"\r\n                                    ></coer-checkbox>\r\n                                </div>\r\n                            </th>\r\n                        }\r\n\r\n                        <!-- Dynamic Grid Column -->\r\n                        @for(header of gridColumns(); track header.indexColumn) {\r\n                            <th scope=\"col\" (dblclick)=\"Sort(header.columnName)\"\r\n                                [ngClass]=\"{\r\n                                    'no-selection': true,\r\n                                    'cursor-default': !enableSort() && !_isLoading,\r\n                                    'cursor-pointer': enableSort() && !_isLoading,\r\n                                    'cursor-wait': _isLoading\r\n                                }\"\r\n                                [ngStyle]=\"{\r\n                                    'width': header.width,\r\n                                    'text-align': GetAttribute(header.columnName, null, 'textAlign', 'defaul-cell')\r\n                                }\">\r\n                                <div class=\"no-selection\">\r\n                                    {{ _GetColumnName(header.columnName) }}\r\n                                    <i [class]=\"_GetShortIcon(header.columnName)\"></i>\r\n                                </div>\r\n                            </th>\r\n                        }\r\n\r\n                        <!-- Delete Button Column -->\r\n                        @if(ButtonByRow('showDeleteButton')) {\r\n                            <th scope=\"col\" class=\"action-button\"></th>\r\n                        }\r\n\r\n                        <!-- Edit Button Column -->\r\n                        @if(ButtonByRow('showEditButton')) {\r\n                            <th scope=\"col\" class=\"action-button\"></th>\r\n                        }\r\n\r\n                        <!-- Edit Button Column -->\r\n                        @if(ButtonByRow('showGoButton')) {\r\n                            <th scope=\"col\" class=\"action-button\"></th>\r\n                        }\r\n                    </tr>\r\n                </thead>\r\n\r\n                <!-- body -->\r\n                @for(group of gridDataSource(); track group.indexGroup) {\r\n                    <tbody>\r\n                        <!--<tr v-if=\"_isGrouped\">\r\n                            <td :colspan=\"_colspan\" class=\"group\">\r\n                                <MesAccordion\r\n                                    :ref=\"`accordion${group.indexGroup}-${id}`\"\r\n                                    :title=\"`${_CleanHeaderName(groupBy)} (${group.length}):  ${group.groupBy}`\"\r\n                                    :isLoading=\"_isLoading\"\r\n                                    @expanded=\"_ToogleAccordion(group.groupBy, true, group.indexGroup)\"\r\n                                    @collapsed=\"_ToogleAccordion(group.groupBy, false, group.indexGroup)\"\r\n                                ></MesAccordion>\r\n                            </td>\r\n                        </tr>-->\r\n\r\n                        @for(row of group.rows; track row.indexRow) {\r\n                            <tr [id]=\"_GetId(row.indexRow, 0, 'row')\"\r\n                                [ngClass]=\"{ 'loading': isLoading(), 'd-none': _HideRow(group), 'row-focus': (row.indexRow == _indexFocus() && enableRowFocus()) }\"\r\n                                (click)=\"_indexFocus.set(row.indexRow)\">\r\n\r\n                                @if(checkbox.show) {\r\n                                    <!-- CheckBox Column -->\r\n                                    <td class=\"check-box\">\r\n                                        <div [ngClass]=\"{ 'invisible': _isLoadingMessage }\">\r\n                                            <coer-checkbox\r\n                                                [id]=\"_GetId(row.indexRow, 0, 'checkbox')\"\r\n                                                [ignoreModel]=\"true\"\r\n                                                [isDisabled]=\"_isDisabled() || _isLoading\"\r\n                                                (onChange)=\"ClickCheck(_GetId(row.indexRow, 0, 'checkbox'), $event, false, row)\"\r\n                                            ></coer-checkbox>\r\n                                        </div>\r\n\r\n                                        <div [ngClass]=\"{ 'invisible': !_isLoadingMessage, 'spinner-border-container': true }\">\r\n                                            <i class=\"spinner-border\"></i>\r\n                                        </div>\r\n                                    </td>\r\n                                }\r\n\r\n                                <!-- Dynamic Column -->\r\n                                @for(header of gridColumns(); track header.indexColumn) {\r\n                                    @if(_IsCellType(header.columnName, row, 'template')) {\r\n                                        <td class=\"template\"\r\n                                            (click)=\"_isDisabled() ? null : onClickRow.emit(row)\"\r\n                                            (dblclick)=\"_isDisabled() ? null : onDoubleClickRow.emit(row)\">\r\n                                            <div [innerHTML]=\"GetAttribute(header.columnName, row, 'template', 'defaul-cell') | html\" class=\"template\"></div>\r\n                                        </td>\r\n                                    }\r\n\r\n                                    @else if(_IsCellType(header.columnName, row, 'coerTextbox')) {\r\n                                        <!-- coer-textbox -->\r\n                                        <td class=\"coer-textbox\">\r\n                                            <coer-textbox\r\n                                                [id]=\"_GetId(row.indexRow, header.indexColumn)\"\r\n                                                [(ngModel)]=\"row[header.columnName]\"\r\n                                                [isDisabled]=\"GetAttribute(header.columnName, row, 'isDisabled', 'coerTextbox') || _isDisabled() || _isLoading\"\r\n                                                [isValid]=\"GetAttribute(header.columnName, row, 'isValid', 'coerTextbox') || false\"\r\n                                                [isInvalid]=\"GetAttribute(header.columnName, row, 'isInvalid', 'coerTextbox') || false\"\r\n                                                [selectOnFocus]=\"GetAttribute(header.columnName, row, 'selectOnFocus', 'coerTextbox') || true\"\r\n                                                [placeholder]=\"GetAttribute(header.columnName, row, 'placeholder', 'coerTextbox') || ('Type ' + header.columnName + '...')\"\r\n                                                [textPosition]=\"GetAttribute(header.columnName, row, 'textPosition', 'coerTextbox') || 'left'\"\r\n                                                [minLength]=\"GetAttribute(header.columnName, row, 'minLength', 'coerTextbox') || 0\"\r\n                                                [maxLength]=\"GetAttribute(header.columnName, row, 'maxLength', 'coerTextbox') || 50\"\r\n                                                (onInput)=\"InputChange(row.indexRow, header.columnName, $event, 'coer-textbox')\"\r\n                                                (onKeyupEnter)=\"KeyupEnter(header.indexColumn, row, 'coer-textbox', $event)\"\r\n                                            ></coer-textbox>\r\n                                        </td>\r\n                                    }\r\n\r\n\r\n                                    @else if(_IsCellType(header.columnName, row, 'coerNumberbox')) {\r\n                                        <!-- coer-numberbox -->\r\n                                        <td class=\"coer-numberbox\">\r\n                                            <coer-numberbox\r\n                                                [id]=\"_GetId(row.indexRow, header.indexColumn)\"\r\n                                                [(ngModel)]=\"row[header.columnName]\"\r\n                                                [isDisabled]=\"GetAttribute(header.columnName, row, 'isDisabled', 'coerNumberbox') || _isDisabled() || _isLoading\"\r\n                                                [isValid]=\"GetAttribute(header.columnName, row, 'isValid', 'coerNumberbox') || false\"\r\n                                                [isInvalid]=\"GetAttribute(header.columnName, row, 'isInvalid', 'coerNumberbox') || false\"\r\n                                                [selectOnFocus]=\"GetAttribute(header.columnName, row, 'selectOnFocus', 'coerNumberbox') || true\"\r\n                                                [placeholder]=\"GetAttribute(header.columnName, row, 'placeholder', 'coerNumberbox') || ''\"\r\n                                                [textPosition]=\"GetAttribute(header.columnName, row, 'textPosition', 'coerNumberbox') || 'right'\"\r\n                                                [min]=\"GetAttribute(header.columnName, row, 'min', 'coerNumberbox') || 0\"\r\n                                                [max]=\"GetAttribute(header.columnName, row, 'max', 'coerNumberbox') || 2147483647\"\r\n                                                [decimals]=\"GetAttribute(header.columnName, row, 'decimals', 'coerNumberbox') || 0\"\r\n                                                (onInput)=\"InputChange(row.indexRow, header.columnName, $event, 'coer-numberbox')\"\r\n                                                (onKeyupEnter)=\"KeyupEnter(header.indexColumn, row, 'coer-numberbox', $event)\"\r\n                                            ></coer-numberbox>\r\n                                        </td>\r\n                                    }\r\n\r\n\r\n                                    @else if(_IsCellType(header.columnName, row, 'coerSelectbox')) {\r\n                                        <!-- coer-numberbox -->\r\n                                        <td class=\"coer-selectbox\">\r\n                                            <coer-selectbox\r\n                                                [id]=\"_GetId(row.indexRow, header.indexColumn)\"\r\n                                                [(ngModel)]=\"row[header.columnName]\"\r\n                                                [isDisabled]=\"GetAttribute(header.columnName, row, 'isDisabled', 'coerSelectbox') || _isDisabled() || _isLoading\"\r\n                                                [isValid]=\"GetAttribute(header.columnName, row, 'isValid', 'coerSelectbox') || false\"\r\n                                                [isInvalid]=\"GetAttribute(header.columnName, row, 'isInvalid', 'coerSelectbox') || false\"\r\n                                                [dataSource]=\"GetAttribute(header.columnName, row, 'dataSource', 'coerSelectbox') || []\"\r\n                                                [placeholder]=\"GetAttribute(header.columnName, row, 'placeholder', 'coerSelectbox') || '-- Select --'\"\r\n                                                [propDisplay]=\"GetAttribute(header.columnName, row, 'propDisplay', 'coerSelectbox') || 'name'\"\r\n                                                (onSelected)=\"InputChange(row.indexRow, header.columnName, $event, 'coer-selectbox'); KeyupEnter(header.indexColumn, row, 'coer-selectbox', $event)\"\r\n                                            ></coer-selectbox>\r\n                                        </td>\r\n                                    }\r\n\r\n\r\n                                    @else if(_IsCellType(header.columnName, row, 'coerSwitch')) {\r\n                                        <!-- coer-switch -->\r\n                                        <td>\r\n                                            <coer-switch\r\n                                                [id]=\"_GetId(row.indexRow, header.indexColumn)\"\r\n                                                [(ngModel)]=\"row[header.columnName]\"\r\n                                                [isDisabled]=\"GetAttribute(header.columnName, row, 'isDisabled', 'coerSwitch') || _isDisabled() || _isLoading\"\r\n                                                [tooltip]=\"GetAttribute(header.columnName, row, 'tooltip', 'coerSwitch')\"\r\n                                                [tooltipPosition]=\"GetAttribute(header.columnName, row, 'tooltipPosition', 'coerSwitch') || 'left'\"\r\n                                                [isInvisible]=\"_isDisabled()\"\r\n                                                (onChange)=\"InputChange(row.indexRow, header.columnName, $event, 'coer-switch')\"\r\n                                            ></coer-switch>\r\n                                        </td>\r\n                                    }\r\n\r\n                                    @else {\r\n                                        <!-- Default Cell -->\r\n                                        <td class=\"default-cell\"\r\n                                            (click)=\"ClickOnRow(row)\"\r\n                                            (dblclick)=\"_isDisabled() ? null : onDoubleClickRow.emit(row)\"\r\n                                            [ngStyle]=\"{\r\n                                                'text-align': GetAttribute(header.columnName, row, 'textAlign', 'defaul-cell'),\r\n                                                'white-space': 'normal'\r\n                                            }\">\r\n\r\n                                            <div [id]=\"_GetId(row.indexRow, header.indexColumn)\"\r\n                                                [ngClass]=\"{\r\n                                                    'text-blue-bold': _IsCellColor(header.columnName, row, 'colorBlue'),\r\n                                                    'text-green-bold': _IsCellColor(header.columnName, row, 'colorGreen'),\r\n                                                    'text-yellow-bold': _IsCellColor(header.columnName, row, 'colorYellow'),\r\n                                                    'text-red-bold': _IsCellColor(header.columnName, row, 'colorRed'),\r\n                                                    'text-right-bold': _IsCellType(header.columnName, row, 'number')\r\n                                                }\">\r\n\r\n                                                @if(_IsCellType(header.columnName, row, 'number')) {\r\n                                                    <span> {{ GetNumericFormat(row[header.columnName]) }} </span>\r\n                                                }\r\n\r\n                                                @else if(_IsCellType(header.columnName, row, 'date')) {\r\n                                                    <span> {{ GetDateFormat(row[header.columnName]) }} </span>\r\n                                                }\r\n\r\n                                                @else {\r\n                                                    <span> {{ _GetCellValue(row, header.columnName) }} </span>\r\n                                                }\r\n                                            </div>\r\n                                        </td>\r\n                                    }\r\n                                }\r\n\r\n                                <!-- Delete Button -->\r\n                                @if(ButtonByRow('showDeleteButton')) {\r\n                                    <td class=\"action-button\">\r\n                                        @if(ButtonByRow('showDeleteButton', row)) {\r\n                                            <coer-button\r\n                                                type=\"icon-no-border\"\r\n                                                color=\"navigation\"\r\n                                                icon=\"delete\"\r\n                                                [tooltip]=\"_GetTooltip('Delete', row)\"\r\n                                                [isInvisible]=\"_isDisabled()\"\r\n                                                [isDisabled]=\"_isLoading\"\r\n                                                (onClick)=\"onClickDeleteRow.emit(row)\"\r\n                                            ></coer-button>\r\n                                        }\r\n                                    </td>\r\n                                }\r\n\r\n                                <!-- Edit Button -->\r\n                                @if(ButtonByRow('showEditButton')) {\r\n                                    <td class=\"action-button\">\r\n                                        @if(ButtonByRow('showEditButton', row)) {\r\n                                            <coer-button\r\n                                                type=\"icon-no-border\"\r\n                                                color=\"navigation\"\r\n                                                icon=\"edit\"\r\n                                                [tooltip]=\"_GetTooltip('Edit', row)\"\r\n                                                [isInvisible]=\"_isDisabled()\"\r\n                                                [isDisabled]=\"_isLoading\"\r\n                                                (onClick)=\"onClickEditRow.emit(row)\"\r\n                                            ></coer-button>\r\n                                        }\r\n                                    </td>\r\n                                }\r\n\r\n                                <!-- GO Button -->\r\n                                @if(ButtonByRow('showGoButton')) {\r\n                                    <td class=\"action-button\">\r\n                                        @if(ButtonByRow('showGoButton', row)) {\r\n                                            <coer-button\r\n                                                type=\"icon-no-border\"\r\n                                                color=\"navigation\"\r\n                                                icon=\"go\"\r\n                                                [tooltip]=\"_GetTooltip('Go to', row, 'detail')\"\r\n                                                [isInvisible]=\"_isDisabled()\"\r\n                                                [isDisabled]=\"_isLoading\"\r\n                                                (onClick)=\"onClickGoRow.emit(row)\"\r\n                                            ></coer-button>\r\n                                        }\r\n                                    </td>\r\n                                }\r\n                            </tr>\r\n                        }\r\n                    </tbody>\r\n                }\r\n            </table>\r\n        </div>\r\n    </section>\r\n\r\n    @if(showFooter()) {\r\n        <footer class=\"grid-footer\">\r\n            <span>\r\n                @if(_isLoadingMessage) {\r\n                    <span class=\"fa-fade\"> Loading </span>\r\n                }\r\n\r\n                @else if(gridLength().dataSourceSelected > 0) {\r\n                    <span>\r\n                        <i class=\"bi bi-check2-square ms-1\"></i>\r\n                        {{ gridLength().dataSourceSelected }}\r\n                    </span>\r\n                }\r\n            </span>\r\n\r\n            <span class=\"me-1\"> {{ gridLength().dataSourceFiltered | numericFormat }} Rows </span>\r\n        </footer>\r\n    }\r\n</div>", styles: ["div.coer-grid *{--blue: #0d6efd;--gray: #6c757d;--green: #198754;--yellow: #ffc107;--red: #dc3545;--white: #f5f5f5;--black: #252525;--orange: #fd6031;--purple: #a615bc}div.coer-grid .text-blue{color:#0d6efd!important}div.coer-grid .text-blue-bold{color:#0d6efd!important;font-weight:700!important}div.coer-grid .background-blue{background-color:#0d6efd!important}div.coer-grid .background-border-blue{background-color:#0d6efd!important;border-color:#0d6efd!important}div.coer-grid .border-blue{border-color:#0d6efd!important}div.coer-grid .text-gray{color:#6c757d!important}div.coer-grid .text-gray-bold{color:#6c757d!important;font-weight:700!important}div.coer-grid .background-gray{background-color:#6c757d!important}div.coer-grid .background-border-gray{background-color:#6c757d!important;border-color:#6c757d!important}div.coer-grid .border-gray{border-color:#6c757d!important}div.coer-grid .text-green{color:#198754!important}div.coer-grid .text-green-bold{color:#198754!important;font-weight:700!important}div.coer-grid .background-green{background-color:#198754!important}div.coer-grid .background-border-green{background-color:#198754!important;border-color:#198754!important}div.coer-grid .border-green{border-color:#198754!important}div.coer-grid .text-yellow{color:#ffc107!important}div.coer-grid .text-yellow-bold{color:#ffc107!important;font-weight:700!important}div.coer-grid .background-yellow{background-color:#ffc107!important}div.coer-grid .background-border-yellow{background-color:#ffc107!important;border-color:#ffc107!important}div.coer-grid .border-yellow{border-color:#ffc107!important}div.coer-grid .text-red{color:#dc3545!important}div.coer-grid .text-red-bold{color:#dc3545!important;font-weight:700!important}div.coer-grid .background-red{background-color:#dc3545!important}div.coer-grid .background-border-red{background-color:#dc3545!important;border-color:#dc3545!important}div.coer-grid .border-red{border-color:#dc3545!important}div.coer-grid .text-white{color:#f5f5f5!important}div.coer-grid .text-white-bold{color:#f5f5f5!important;font-weight:700!important}div.coer-grid .background-white{background-color:#f5f5f5!important}div.coer-grid .background-border-white{background-color:#f5f5f5!important;border-color:#f5f5f5!important}div.coer-grid .border-white{border-color:#f5f5f5!important}div.coer-grid .text-black{color:#252525!important}div.coer-grid .text-black-bold{color:#252525!important;font-weight:700!important}div.coer-grid .background-black{background-color:#252525!important}div.coer-grid .background-border-black{background-color:#252525!important;border-color:#252525!important}div.coer-grid .border-black{border-color:#252525!important}div.coer-grid .text-orange{color:#fd6031!important}div.coer-grid .text-orange-bold{color:#fd6031!important;font-weight:700!important}div.coer-grid .background-orange{background-color:#fd6031!important}div.coer-grid .background-border-orange{background-color:#fd6031!important;border-color:#fd6031!important}div.coer-grid .border-orange{border-color:#fd6031!important}div.coer-grid .text-transparent{color:transparent!important}div.coer-grid .background-transparent{background-color:transparent!important}div.coer-grid .border-transparent{border-color:transparent!important}div.coer-grid header{align-items:flex-end;justify-content:flex-end;padding-right:8px;margin:0}div.coer-grid header>div{padding:0 0 10px 10px;display:flex;align-items:baseline}div.coer-grid header>div a{height:40px!important}div.coer-grid table{table-layout:auto;border-collapse:separate;border-spacing:1px 0px;margin:0;font-size:14px}div.coer-grid table thead tr th{position:sticky!important;z-index:100!important;top:0!important;background-color:#6c757d!important;color:#f5f5f5!important;padding:5px!important;vertical-align:middle!important;overflow:hidden;text-overflow:ellipsis;word-wrap:break-word;min-width:50px!important;white-space:nowrap!important}div.coer-grid table tbody{border:0px!important}div.coer-grid table tbody tr:not(.row-focus):hover td{color:#000!important;background-color:#f1f6ff!important}div.coer-grid table tbody tr td{border:0px!important;padding:5px!important;vertical-align:middle!important;white-space:break-spaces;text-overflow:ellipsis;overflow:hidden}div.coer-grid table tbody tr.row-focus td{background-color:#cde1ff}div.coer-grid table tbody tr td.coer-textbox,div.coer-grid table tbody tr td.coer-numberbox,div.coer-grid table tbody tr td.coer-selectbox{padding:0!important;overflow:visible!important}div.coer-grid table tbody tr td.default-cell{cursor:pointer!important}div.coer-grid table thead tr th.action-button,div.coer-grid table thead tr td.action-button,div.coer-grid table thead tr th.check-box,div.coer-grid table thead tr td.check-box,div.coer-grid table tbody tr th.action-button,div.coer-grid table tbody tr td.action-button,div.coer-grid table tbody tr th.check-box table tbody tr td.check-box{text-align:center!important;cursor:default!important;min-width:40px!important;max-width:40px!important;width:40px!important;padding:0!important}div.coer-grid footer.grid-footer{display:flex;align-items:center;justify-content:space-between;font-size:small;color:#999;padding-top:5px}div.coer-grid section.grid-container{position:relative;overflow:auto}div.coer-grid div.loading,div.coer-grid div.no-data{position:absolute;display:flex;align-items:center;justify-content:center;width:100%;height:100%;font-size:25px;color:gray}div.coer-grid div.loading{background-color:#bbbbbb83!important;flex-direction:column!important;gap:10px!important}div.coer-grid div.loading span.fa-fade{position:relative!important;top:50px!important}div.coer-grid tr.loading{background-color:#bbbbbb83!important}div.coer-grid div.loading i.spinner-border{color:#fd6031!important;width:70px!important;height:70px!important;font-size:20px!important;position:absolute!important}div.coer-grid td.check-box div.spinner-border-container{position:absolute;transform:translate(7px,-19px)}div.coer-grid td.check-box div.spinner-border-container i.spinner-border{width:15px!important;height:15px!important;color:#fd6031!important}div.coer-grid table thead tr th.check-box>div,div.coer-grid table tbody tr td.check-box>div{display:flex;align-items:center;justify-content:center;cursor:default!important}div.coer-grid input.form-check-input{box-shadow:none!important;margin:0}div.coer-grid input[type=checkbox]{cursor:pointer!important}div.coer-grid td.group{padding:0!important;margin:0!important}div.coer-grid td.group>*{border-top:1px solid #6c757d!important;border-bottom:1px solid #6c757d!important;padding:0!important;margin:0!important}div.coer-grid .template,div.coer-grid .template div{white-space:nowrap!important;display:flex!important;align-items:center!important;cursor:pointer!important;gap:5px!important;width:100%}\n"] }]
         | 
| 2358 | 
            +
                        args: [{ selector: 'coer-grid', providers: [CONTROL_VALUE(CoerGrid)], template: "<div class=\"coer-grid\" [ngStyle]=\"{ 'width': width(), 'min-Width': MinWidth(), 'max-Width': MaxWidth(), 'margin': margin() }\">\r\n    <header [id]=\"_id + '-header'\" class=\"row\">\r\n        <!-- Slot -->\r\n        <ng-content></ng-content>\r\n\r\n        <!-- Export Button -->\r\n        @if(exportButton.show && gridLength().dataSource > 0) {\r\n            <div class=\"col-auto\">\r\n                <coer-button\r\n                    type=\"icon\"\r\n                    color=\"navigation\"\r\n                    icon=\"excel\"\r\n                    [tooltip]=\"_isLoading ? 'Loading' : (exportButton.tooltip || 'Export')\"\r\n                    [path]=\"(exportButton && exportButton.path) ? exportButton.path : []\"\r\n                    [isDisabled]=\"_isDisabled() || _isLoading || (exportButton.isDisabled || false)\"\r\n                    [isLoading]=\"_isLoading\"\r\n                    [animation]=\"_enableAnimations\"\r\n                    (onClick)=\"Export(!exportButton.preventDefault)\"\r\n                ></coer-button>\r\n            </div>\r\n        }\r\n\r\n        <!-- Import Button -->\r\n        @if(importButton.show) {\r\n            <div class=\"col-auto\">\r\n                <input type=\"file\" #inputFileRef [multiple]=\"false\" (change)=\"Import($event)\">\r\n\r\n                <coer-button\r\n                    type=\"icon\"\r\n                    color=\"navigation\"\r\n                    icon=\"import\"\r\n                    [tooltip]=\"importButton.tooltip || 'Import'\"\r\n                    [path]=\"(importButton && importButton.path) ? importButton.path : []\"\r\n                    [isDisabled]=\"importButton.isDisabled || false\"\r\n                    [animation]=\"_enableAnimations\"\r\n                    (onClick)=\"Import()\"\r\n                ></coer-button>\r\n            </div>\r\n        }\r\n\r\n        <!-- Add Button -->\r\n        @if(addButton.show) {\r\n            <div class=\"col-auto\">\r\n                <coer-button\r\n                    type=\"icon\"\r\n                    color=\"navigation\"\r\n                    icon=\"new\"\r\n                    [tooltip]=\"addButton.tooltip || 'New'\"\r\n                    [path]=\"(addButton && addButton.path) ? addButton.path : []\"\r\n                    [isDisabled]=\"addButton.isDisabled || false\"\r\n                    [animation]=\"_enableAnimations\"\r\n                    (onClick)=\"onClickAdd.emit()\"\r\n                ></coer-button>\r\n            </div>\r\n        }\r\n\r\n        <!-- Search -->\r\n        @if(search.show) {\r\n            <div class=\"col-auto\">\r\n                <coer-textbox\r\n                    #inputSearch\r\n                    [id]=\"_GetId(-1, -1, 'search')\"\r\n                    [ngModel]=\"_gridSearch()\"\r\n                    placeholder=\"Search\"\r\n                    [isDisabled]=\"_isDisabled() || _isLoading\"\r\n                    [selectOnFocus]=\"true\"\r\n                    width=\"250px\"\r\n                    [showSearchIcon]=\"true\"\r\n                    [showClearIcon]=\"true\"\r\n                    (onInput)=\"InputChange(-1, 'Search', $event, 'coer-textbox-search')\"\r\n                    (onClickClear)=\"InputChange(-1, 'Search', '', 'coer-textbox-search')\"\r\n                    (onKeyupEnter)=\"KeyupEnter(-1, { indexRow: -1 }, 'coer-textbox-search', $event);\"\r\n                ></coer-textbox>\r\n            </div>\r\n        }\r\n    </header>\r\n\r\n    <section [ngClass]=\"{ 'grid-container': true, 'invisible': isInvisible() }\">\r\n        <div [ngStyle]=\"{ 'height': _height, 'min-height': minHeight(), 'max-height': maxHeight() }\">\r\n            @if(isLoading()) {\r\n                <!-- Grid Message -->\r\n                <div class=\"loading\">\r\n                    <i class=\"spinner-border\"></i>\r\n                    <span class=\"fa-fade\">Loading</span>\r\n                </div>\r\n            }\r\n\r\n            @else if(!_isDisabled() && gridLength().dataSource <= 0) {\r\n                <div class=\"no-data\"> No Data </div>\r\n            }\r\n\r\n            <table class=\"table table-sm table-responsive table-striped\">\r\n                <thead>\r\n                    <tr>\r\n                        @if(checkbox.show && gridLength().dataSource > 0) {\r\n                            <!-- CheckBox Column -->\r\n                            <th scope=\"col\" class=\"check-box\">\r\n                                <div *ngIf=\"!_onlyOneCheck\" [ngClass]=\"{ 'invisible': _isLoadingMessage }\">\r\n                                    <coer-checkbox\r\n                                        [id]=\"_GetId(0, 0, 'checkboxAll')\"\r\n                                        [ignoreModel]=\"true\"\r\n                                        [isDisabled]=\"_isDisabled() || _isLoading\"\r\n                                        (onChange)=\"ClickCheck(_GetId(0, 0, 'checkboxAll'), $event, true)\"\r\n                                    ></coer-checkbox>\r\n                                </div>\r\n                            </th>\r\n                        }\r\n\r\n                        <!-- Dynamic Grid Column -->\r\n                        @for(header of gridColumns(); track header.indexColumn) {\r\n                            <th scope=\"col\" (dblclick)=\"Sort(header.columnName)\"\r\n                                [ngClass]=\"{\r\n                                    'no-selection': true,\r\n                                    'cursor-default': !enableSort() && !_isLoading,\r\n                                    'cursor-pointer': enableSort() && !_isLoading,\r\n                                    'cursor-wait': _isLoading\r\n                                }\"\r\n                                [ngStyle]=\"{\r\n                                    'width': header.width,\r\n                                    'text-align': GetAttribute(header.columnName, null, 'textAlign', 'defaul-cell')\r\n                                }\">\r\n                                <div class=\"no-selection\">\r\n                                    {{ _GetColumnName(header.columnName) }}\r\n                                    <i [class]=\"_GetShortIcon(header.columnName)\"></i>\r\n                                </div>\r\n                            </th>\r\n                        }\r\n\r\n                        <!-- Delete Button Column -->\r\n                        @if(ButtonByRow('showDeleteButton')) {\r\n                            <th scope=\"col\" class=\"action-button\"></th>\r\n                        }\r\n\r\n                        <!-- Edit Button Column -->\r\n                        @if(ButtonByRow('showEditButton')) {\r\n                            <th scope=\"col\" class=\"action-button\"></th>\r\n                        }\r\n\r\n                        <!-- Edit Button Column -->\r\n                        @if(ButtonByRow('showGoButton')) {\r\n                            <th scope=\"col\" class=\"action-button\"></th>\r\n                        }\r\n                    </tr>\r\n                </thead>\r\n\r\n                <!-- body -->\r\n                @for(group of gridDataSource(); track group.indexGroup) {\r\n                    <tbody>\r\n                        <!--<tr v-if=\"_isGrouped\">\r\n                            <td :colspan=\"_colspan\" class=\"group\">\r\n                                <MesAccordion\r\n                                    :ref=\"`accordion${group.indexGroup}-${id}`\"\r\n                                    :title=\"`${_CleanHeaderName(groupBy)} (${group.length}):  ${group.groupBy}`\"\r\n                                    :isLoading=\"_isLoading\"\r\n                                    @expanded=\"_ToogleAccordion(group.groupBy, true, group.indexGroup)\"\r\n                                    @collapsed=\"_ToogleAccordion(group.groupBy, false, group.indexGroup)\"\r\n                                ></MesAccordion>\r\n                            </td>\r\n                        </tr>-->\r\n\r\n                        @for(row of group.rows; track row.indexRow) {\r\n                            <tr [id]=\"_GetId(row.indexRow, 0, 'row')\"\r\n                                [ngClass]=\"{ 'loading': isLoading(), 'd-none': _HideRow(group), 'row-focus': (row.indexRow == _indexFocus() && enableRowFocus()) }\"\r\n                                (click)=\"_indexFocus.set(row.indexRow)\">\r\n\r\n                                @if(checkbox.show) {\r\n                                    <!-- CheckBox Column -->\r\n                                    <td class=\"check-box\">\r\n                                        <div [ngClass]=\"{ 'invisible': _isLoadingMessage }\">\r\n                                            <coer-checkbox\r\n                                                [id]=\"_GetId(row.indexRow, 0, 'checkbox')\"\r\n                                                [ignoreModel]=\"true\"\r\n                                                [isDisabled]=\"_isDisabled() || _isLoading\"\r\n                                                (onChange)=\"ClickCheck(_GetId(row.indexRow, 0, 'checkbox'), $event, false, row)\"\r\n                                            ></coer-checkbox>\r\n                                        </div>\r\n\r\n                                        <div [ngClass]=\"{ 'invisible': !_isLoadingMessage, 'spinner-border-container': true }\">\r\n                                            <i class=\"spinner-border\"></i>\r\n                                        </div>\r\n                                    </td>\r\n                                }\r\n\r\n                                <!-- Dynamic Column -->\r\n                                @for(header of gridColumns(); track header.indexColumn) {\r\n                                    @if(_IsCellType(header.columnName, row, 'template')) {\r\n                                        <td class=\"template\"\r\n                                            (click)=\"_isDisabled() ? null : onClickRow.emit(row)\"\r\n                                            (dblclick)=\"_isDisabled() ? null : onDoubleClickRow.emit(row)\">\r\n                                            <div [innerHTML]=\"GetAttribute(header.columnName, row, 'template', 'defaul-cell') | html\" class=\"template\"></div>\r\n                                        </td>\r\n                                    }\r\n\r\n                                    @else if(_IsCellType(header.columnName, row, 'coerTextbox')) {\r\n                                        <!-- coer-textbox -->\r\n                                        <td class=\"coer-textbox\">\r\n                                            <coer-textbox\r\n                                                [id]=\"_GetId(row.indexRow, header.indexColumn)\"\r\n                                                [(ngModel)]=\"row[header.columnName]\"\r\n                                                [isDisabled]=\"GetAttribute(header.columnName, row, 'isDisabled', 'coerTextbox') || _isDisabled() || _isLoading\"\r\n                                                [isValid]=\"GetAttribute(header.columnName, row, 'isValid', 'coerTextbox') || false\"\r\n                                                [isInvalid]=\"GetAttribute(header.columnName, row, 'isInvalid', 'coerTextbox') || false\"\r\n                                                [selectOnFocus]=\"GetAttribute(header.columnName, row, 'selectOnFocus', 'coerTextbox') || true\"\r\n                                                [placeholder]=\"GetAttribute(header.columnName, row, 'placeholder', 'coerTextbox') || ('Type ' + header.columnName + '...')\"\r\n                                                [textPosition]=\"GetAttribute(header.columnName, row, 'textPosition', 'coerTextbox') || 'left'\"\r\n                                                [minLength]=\"GetAttribute(header.columnName, row, 'minLength', 'coerTextbox') || 0\"\r\n                                                [maxLength]=\"GetAttribute(header.columnName, row, 'maxLength', 'coerTextbox') || 50\"\r\n                                                (onInput)=\"InputChange(row.indexRow, header.columnName, $event, 'coer-textbox')\"\r\n                                                (onKeyupEnter)=\"KeyupEnter(header.indexColumn, row, 'coer-textbox', $event)\"\r\n                                            ></coer-textbox>\r\n                                        </td>\r\n                                    }\r\n\r\n\r\n                                    @else if(_IsCellType(header.columnName, row, 'coerNumberbox')) {\r\n                                        <!-- coer-numberbox -->\r\n                                        <td class=\"coer-numberbox\">\r\n                                            <coer-numberbox\r\n                                                [id]=\"_GetId(row.indexRow, header.indexColumn)\"\r\n                                                [(ngModel)]=\"row[header.columnName]\"\r\n                                                [isDisabled]=\"GetAttribute(header.columnName, row, 'isDisabled', 'coerNumberbox') || _isDisabled() || _isLoading\"\r\n                                                [isValid]=\"GetAttribute(header.columnName, row, 'isValid', 'coerNumberbox') || false\"\r\n                                                [isInvalid]=\"GetAttribute(header.columnName, row, 'isInvalid', 'coerNumberbox') || false\"\r\n                                                [selectOnFocus]=\"GetAttribute(header.columnName, row, 'selectOnFocus', 'coerNumberbox') || true\"\r\n                                                [placeholder]=\"GetAttribute(header.columnName, row, 'placeholder', 'coerNumberbox') || ''\"\r\n                                                [textPosition]=\"GetAttribute(header.columnName, row, 'textPosition', 'coerNumberbox') || 'right'\"\r\n                                                [min]=\"GetAttribute(header.columnName, row, 'min', 'coerNumberbox') || 0\"\r\n                                                [max]=\"GetAttribute(header.columnName, row, 'max', 'coerNumberbox') || 2147483647\"\r\n                                                [decimals]=\"GetAttribute(header.columnName, row, 'decimals', 'coerNumberbox') || 0\"\r\n                                                (onInput)=\"InputChange(row.indexRow, header.columnName, $event, 'coer-numberbox')\"\r\n                                                (onKeyupEnter)=\"KeyupEnter(header.indexColumn, row, 'coer-numberbox', $event)\"\r\n                                            ></coer-numberbox>\r\n                                        </td>\r\n                                    }\r\n\r\n\r\n                                    @else if(_IsCellType(header.columnName, row, 'coerSelectbox')) {\r\n                                        <!-- coer-numberbox -->\r\n                                        <td class=\"coer-selectbox\">\r\n                                            <coer-selectbox\r\n                                                [id]=\"_GetId(row.indexRow, header.indexColumn)\"\r\n                                                [(ngModel)]=\"row[header.columnName]\"\r\n                                                [isDisabled]=\"GetAttribute(header.columnName, row, 'isDisabled', 'coerSelectbox') || _isDisabled() || _isLoading\"\r\n                                                [isValid]=\"GetAttribute(header.columnName, row, 'isValid', 'coerSelectbox') || false\"\r\n                                                [isInvalid]=\"GetAttribute(header.columnName, row, 'isInvalid', 'coerSelectbox') || false\"\r\n                                                [dataSource]=\"GetAttribute(header.columnName, row, 'dataSource', 'coerSelectbox') || []\"\r\n                                                [placeholder]=\"GetAttribute(header.columnName, row, 'placeholder', 'coerSelectbox') || '-- Select --'\"\r\n                                                [propDisplay]=\"GetAttribute(header.columnName, row, 'propDisplay', 'coerSelectbox') || 'name'\"\r\n                                                (onSelected)=\"InputChange(row.indexRow, header.columnName, $event, 'coer-selectbox'); KeyupEnter(header.indexColumn, row, 'coer-selectbox', $event)\"\r\n                                            ></coer-selectbox>\r\n                                        </td>\r\n                                    }\r\n\r\n\r\n                                    @else if(_IsCellType(header.columnName, row, 'coerSwitch')) {\r\n                                        <!-- coer-switch -->\r\n                                        <td>\r\n                                            <coer-switch\r\n                                                [id]=\"_GetId(row.indexRow, header.indexColumn)\"\r\n                                                [(ngModel)]=\"row[header.columnName]\"\r\n                                                [isDisabled]=\"GetAttribute(header.columnName, row, 'isDisabled', 'coerSwitch') || _isDisabled() || _isLoading\"\r\n                                                [tooltip]=\"GetAttribute(header.columnName, row, 'tooltip', 'coerSwitch')\"\r\n                                                [tooltipPosition]=\"GetAttribute(header.columnName, row, 'tooltipPosition', 'coerSwitch') || 'left'\"\r\n                                                [isInvisible]=\"_isDisabled()\"\r\n                                                (onChange)=\"InputChange(row.indexRow, header.columnName, $event, 'coer-switch')\"\r\n                                            ></coer-switch>\r\n                                        </td>\r\n                                    }\r\n\r\n                                    @else {\r\n                                        <!-- Default Cell -->\r\n                                        <td class=\"default-cell\"\r\n                                            (click)=\"ClickOnRow(row)\"\r\n                                            (dblclick)=\"_isDisabled() ? null : onDoubleClickRow.emit(row)\"\r\n                                            [ngStyle]=\"{\r\n                                                'text-align': GetAttribute(header.columnName, row, 'textAlign', 'defaul-cell'),\r\n                                                'white-space': 'normal'\r\n                                            }\">\r\n\r\n                                            <div [id]=\"_GetId(row.indexRow, header.indexColumn)\"\r\n                                                [ngClass]=\"{\r\n                                                    'text-blue-bold': _IsCellColor(header.columnName, row, 'colorBlue'),\r\n                                                    'text-green-bold': _IsCellColor(header.columnName, row, 'colorGreen'),\r\n                                                    'text-yellow-bold': _IsCellColor(header.columnName, row, 'colorYellow'),\r\n                                                    'text-red-bold': _IsCellColor(header.columnName, row, 'colorRed'),\r\n                                                    'text-right-bold': _IsCellType(header.columnName, row, 'number')\r\n                                                }\">\r\n\r\n                                                @if(_IsCellType(header.columnName, row, 'number')) {\r\n                                                    <span> {{ GetNumericFormat(row[header.columnName]) }} </span>\r\n                                                }\r\n\r\n                                                @else if(_IsCellType(header.columnName, row, 'date')) {\r\n                                                    <span> {{ GetDateFormat(row[header.columnName]) }} </span>\r\n                                                }\r\n\r\n                                                @else {\r\n                                                    <span> {{ _GetCellValue(row, header.columnName) }} </span>\r\n                                                }\r\n                                            </div>\r\n                                        </td>\r\n                                    }\r\n                                }\r\n\r\n                                <!-- Delete Button -->\r\n                                @if(ButtonByRow('showDeleteButton')) {\r\n                                    <td class=\"action-button\">\r\n                                        @if(ButtonByRow('showDeleteButton', row)) {\r\n                                            <coer-button\r\n                                                type=\"icon-no-border\"\r\n                                                color=\"navigation\"\r\n                                                icon=\"delete\"\r\n                                                [tooltip]=\"_GetTooltip('Delete', row)\"\r\n                                                [isInvisible]=\"_isDisabled()\"\r\n                                                [isDisabled]=\"_isLoading\"\r\n                                                (onClick)=\"onClickDeleteRow.emit(row)\"\r\n                                            ></coer-button>\r\n                                        }\r\n                                    </td>\r\n                                }\r\n\r\n                                <!-- Edit Button -->\r\n                                @if(ButtonByRow('showEditButton')) {\r\n                                    <td class=\"action-button\">\r\n                                        @if(ButtonByRow('showEditButton', row)) {\r\n                                            <coer-button\r\n                                                type=\"icon-no-border\"\r\n                                                color=\"navigation\"\r\n                                                icon=\"edit\"\r\n                                                [tooltip]=\"_GetTooltip('Edit', row)\"\r\n                                                [isInvisible]=\"_isDisabled()\"\r\n                                                [isDisabled]=\"_isLoading\"\r\n                                                (onClick)=\"onClickEditRow.emit(row)\"\r\n                                            ></coer-button>\r\n                                        }\r\n                                    </td>\r\n                                }\r\n\r\n                                <!-- GO Button -->\r\n                                @if(ButtonByRow('showGoButton')) {\r\n                                    <td class=\"action-button\">\r\n                                        @if(ButtonByRow('showGoButton', row)) {\r\n                                            <coer-button\r\n                                                type=\"icon-no-border\"\r\n                                                color=\"navigation\"\r\n                                                icon=\"go\"\r\n                                                [tooltip]=\"_GetTooltip('Go to', row, 'detail')\"\r\n                                                [isInvisible]=\"_isDisabled()\"\r\n                                                [isDisabled]=\"_isLoading\"\r\n                                                (onClick)=\"onClickGoRow.emit(row)\"\r\n                                            ></coer-button>\r\n                                        }\r\n                                    </td>\r\n                                }\r\n                            </tr>\r\n                        }\r\n                    </tbody>\r\n                }\r\n            </table>\r\n        </div>\r\n    </section>\r\n\r\n    @if(showFooter()) {\r\n        <footer class=\"grid-footer\">\r\n            <span>\r\n                @if(_isLoadingMessage) {\r\n                    <span class=\"fa-fade\"> Loading </span>\r\n                }\r\n\r\n                @else if(gridLength().dataSourceSelected > 0) {\r\n                    <span>\r\n                        <i class=\"bi bi-check2-square ms-1\"></i>\r\n                        {{ gridLength().dataSourceSelected }}\r\n                    </span>\r\n                }\r\n            </span>\r\n\r\n            <span class=\"me-1\"> {{ gridLength().dataSourceFiltered | numericFormat }} Rows </span>\r\n        </footer>\r\n    }\r\n</div>", styles: ["div.coer-grid *{--blue: #0d6efd;--gray: #6c757d;--green: #198754;--yellow: #ffc107;--red: #dc3545;--white: #f5f5f5;--black: #252525;--orange: #fd6031;--purple: #a615bc}div.coer-grid .text-blue{color:#0d6efd!important}div.coer-grid .text-blue-bold{color:#0d6efd!important;font-weight:700!important}div.coer-grid .background-blue{background-color:#0d6efd!important}div.coer-grid .background-border-blue{background-color:#0d6efd!important;border-color:#0d6efd!important}div.coer-grid .border-blue{border-color:#0d6efd!important}div.coer-grid .text-gray{color:#6c757d!important}div.coer-grid .text-gray-bold{color:#6c757d!important;font-weight:700!important}div.coer-grid .background-gray{background-color:#6c757d!important}div.coer-grid .background-border-gray{background-color:#6c757d!important;border-color:#6c757d!important}div.coer-grid .border-gray{border-color:#6c757d!important}div.coer-grid .text-green{color:#198754!important}div.coer-grid .text-green-bold{color:#198754!important;font-weight:700!important}div.coer-grid .background-green{background-color:#198754!important}div.coer-grid .background-border-green{background-color:#198754!important;border-color:#198754!important}div.coer-grid .border-green{border-color:#198754!important}div.coer-grid .text-yellow{color:#ffc107!important}div.coer-grid .text-yellow-bold{color:#ffc107!important;font-weight:700!important}div.coer-grid .background-yellow{background-color:#ffc107!important}div.coer-grid .background-border-yellow{background-color:#ffc107!important;border-color:#ffc107!important}div.coer-grid .border-yellow{border-color:#ffc107!important}div.coer-grid .text-red{color:#dc3545!important}div.coer-grid .text-red-bold{color:#dc3545!important;font-weight:700!important}div.coer-grid .background-red{background-color:#dc3545!important}div.coer-grid .background-border-red{background-color:#dc3545!important;border-color:#dc3545!important}div.coer-grid .border-red{border-color:#dc3545!important}div.coer-grid .text-white{color:#f5f5f5!important}div.coer-grid .text-white-bold{color:#f5f5f5!important;font-weight:700!important}div.coer-grid .background-white{background-color:#f5f5f5!important}div.coer-grid .background-border-white{background-color:#f5f5f5!important;border-color:#f5f5f5!important}div.coer-grid .border-white{border-color:#f5f5f5!important}div.coer-grid .text-black{color:#252525!important}div.coer-grid .text-black-bold{color:#252525!important;font-weight:700!important}div.coer-grid .background-black{background-color:#252525!important}div.coer-grid .background-border-black{background-color:#252525!important;border-color:#252525!important}div.coer-grid .border-black{border-color:#252525!important}div.coer-grid .text-orange{color:#fd6031!important}div.coer-grid .text-orange-bold{color:#fd6031!important;font-weight:700!important}div.coer-grid .background-orange{background-color:#fd6031!important}div.coer-grid .background-border-orange{background-color:#fd6031!important;border-color:#fd6031!important}div.coer-grid .border-orange{border-color:#fd6031!important}div.coer-grid .text-transparent{color:transparent!important}div.coer-grid .background-transparent{background-color:transparent!important}div.coer-grid .border-transparent{border-color:transparent!important}div.coer-grid header{align-items:flex-end;justify-content:flex-end;padding-right:8px;margin:0}div.coer-grid header>div{padding:0 0 10px 10px;display:flex;align-items:baseline}div.coer-grid header>div a{height:40px!important}div.coer-grid table{table-layout:auto;border-collapse:separate;border-spacing:1px 0px;margin:0;font-size:14px}div.coer-grid table thead tr th{position:sticky!important;z-index:100!important;top:0!important;background-color:#6c757d!important;color:#f5f5f5!important;padding:5px!important;vertical-align:middle!important;overflow:hidden;text-overflow:ellipsis;word-wrap:break-word;min-width:50px!important;white-space:nowrap!important}div.coer-grid table tbody{border:0px!important}div.coer-grid table tbody tr:not(.row-focus):hover td{color:#000!important;background-color:#f1f6ff!important}div.coer-grid table tbody tr td{border:0px!important;padding:5px!important;vertical-align:middle!important;white-space:break-spaces;text-overflow:ellipsis;overflow:hidden;min-height:31px!important}div.coer-grid table tbody tr.row-focus td{background-color:#cde1ff}div.coer-grid table tbody tr td.coer-textbox,div.coer-grid table tbody tr td.coer-numberbox,div.coer-grid table tbody tr td.coer-selectbox{padding:0!important;overflow:visible!important}div.coer-grid table tbody tr td.default-cell{cursor:pointer!important}div.coer-grid table thead tr th.action-button,div.coer-grid table thead tr td.action-button,div.coer-grid table thead tr th.check-box,div.coer-grid table thead tr td.check-box,div.coer-grid table tbody tr th.action-button,div.coer-grid table tbody tr td.action-button,div.coer-grid table tbody tr th.check-box table tbody tr td.check-box{text-align:center!important;cursor:default!important;min-width:40px!important;max-width:40px!important;width:40px!important;padding:0!important}div.coer-grid footer.grid-footer{display:flex;align-items:center;justify-content:space-between;font-size:small;color:#999;padding-top:5px}div.coer-grid section.grid-container{position:relative;overflow:auto}div.coer-grid div.loading,div.coer-grid div.no-data{position:absolute;display:flex;align-items:center;justify-content:center;width:100%;height:100%;font-size:25px;color:gray}div.coer-grid div.loading{background-color:#bbbbbb83!important;flex-direction:column!important;gap:10px!important}div.coer-grid div.loading span.fa-fade{position:relative!important;top:50px!important}div.coer-grid tr.loading{background-color:#bbbbbb83!important}div.coer-grid div.loading i.spinner-border{color:#fd6031!important;width:70px!important;height:70px!important;font-size:20px!important;position:absolute!important}div.coer-grid td.check-box div.spinner-border-container{position:absolute;transform:translate(7px,-19px)}div.coer-grid td.check-box div.spinner-border-container i.spinner-border{width:15px!important;height:15px!important;color:#fd6031!important}div.coer-grid table thead tr th.check-box>div,div.coer-grid table tbody tr td.check-box>div{display:flex;align-items:center;justify-content:center;cursor:default!important}div.coer-grid input.form-check-input{box-shadow:none!important;margin:0}div.coer-grid input[type=checkbox]{cursor:pointer!important}div.coer-grid td.group{padding:0!important;margin:0!important}div.coer-grid td.group>*{border-top:1px solid #6c757d!important;border-bottom:1px solid #6c757d!important;padding:0!important;margin:0!important}div.coer-grid .template,div.coer-grid .template div{white-space:nowrap!important;display:flex!important;align-items:center!important;cursor:pointer!important;gap:5px!important;width:100%}\n"] }]
         | 
| 2359 2359 | 
             
                    }] });
         | 
| 2360 2360 |  | 
| 2361 2361 | 
             
            class CoerList {
         |