@ng-matero/extensions 12.10.1 → 12.10.3
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/bundles/mtxCheckboxGroup.umd.js +12 -12
- package/bundles/mtxCheckboxGroup.umd.js.map +1 -1
- package/bundles/mtxGrid.umd.js +3 -3
- package/bundles/mtxGrid.umd.js.map +1 -1
- package/bundles/mtxSplit.umd.js +1 -1
- package/bundles/mtxSplit.umd.js.map +1 -1
- package/checkbox-group/checkbox-group.component.d.ts +6 -6
- package/checkbox-group/mtxCheckboxGroup.metadata.json +1 -1
- package/esm2015/checkbox-group/checkbox-group.component.js +13 -13
- package/esm2015/grid/cell.component.js +2 -2
- package/esm2015/grid/column-menu.component.js +2 -2
- package/esm2015/grid/grid.component.js +2 -2
- package/esm2015/split/split.component.js +2 -2
- package/fesm2015/mtxCheckboxGroup.js +10 -10
- package/fesm2015/mtxCheckboxGroup.js.map +1 -1
- package/fesm2015/mtxGrid.js +3 -3
- package/fesm2015/mtxGrid.js.map +1 -1
- package/fesm2015/mtxSplit.js +1 -1
- package/fesm2015/mtxSplit.js.map +1 -1
- package/grid/grid.component.d.ts +9 -9
- package/grid/mtxGrid.metadata.json +1 -1
- package/package.json +1 -1
package/fesm2015/mtxGrid.js
CHANGED
|
@@ -369,7 +369,7 @@ MtxGridComponent.decorators = [
|
|
|
369
369
|
{ type: Component, args: [{
|
|
370
370
|
selector: 'mtx-grid',
|
|
371
371
|
exportAs: 'mtxGrid',
|
|
372
|
-
template: "<!-- Progress bar-->\r\n<div class=\"mtx-grid-progress\" *ngIf=\"loading\">\r\n <mat-progress-bar mode=\"indeterminate\"></mat-progress-bar>\r\n</div>\r\n\r\n<!-- Toolbar -->\r\n<div class=\"mtx-grid-toolbar\" *ngIf=\"showToolbar\">\r\n <div class=\"mtx-grid-toolbar-content\">\r\n <ng-template [ngIf]=\"_isTemplateRef(toolbarTemplate)\" [ngIfElse]=\"defaultToolbarTemplate\">\r\n <ng-template [ngTemplateOutlet]=\"toolbarTemplate\"></ng-template>\r\n </ng-template>\r\n <ng-template #defaultToolbarTemplate>\r\n <div class=\"mtx-grid-toolbar-title\" *ngIf=\"toolbarTitle\">{{toolbarTitle}}</div>\r\n </ng-template>\r\n </div>\r\n <div class=\"mtx-grid-toolbar-actions\">\r\n <mtx-grid-column-menu *ngIf=\"showColumnMenuButton\" #columnMenu\r\n [columns]=\"columns\"\r\n [buttonText]=\"columnMenuButtonText\"\r\n [buttonType]=\"columnMenuButtonType\"\r\n [buttonColor]=\"columnMenuButtonColor\"\r\n [buttonClass]=\"columnMenuButtonClass\"\r\n [buttonIcon]=\"columnMenuButtonIcon\"\r\n [selectable]=\"columnHideable\"\r\n [selectableChecked]=\"columnHideableChecked\"\r\n [sortable]=\"columnSortable\"\r\n [pinnable]=\"columnPinnable\"\r\n [showHeader]=\"showColumnMenuHeader\"\r\n [headerText]=\"columnMenuHeaderText\"\r\n [headerTemplate]=\"columnMenuHeaderTemplate\"\r\n [showFooter]=\"showColumnMenuFooter\"\r\n [footerText]=\"columnMenuFooterText\"\r\n [footerTemplate]=\"columnMenuFooterTemplate\"\r\n [pinOptions]=\"columnPinOptions\"\r\n (columnChange)=\"_onColumnChange($event)\">\r\n </mtx-grid-column-menu>\r\n </div>\r\n</div>\r\n\r\n<div class=\"mtx-grid-main mtx-grid-layout\">\r\n <!-- Table content -->\r\n <div class=\"mtx-grid-content mtx-grid-layout\">\r\n <div #tableContainer class=\"mat-table-container\"\r\n [ngClass]=\"{'mat-table-with-data': !_hasNoResult}\">\r\n <table mat-table *ngIf=\"!columnResizable\"\r\n [ngClass]=\"{'mat-table-hover': rowHover, 'mat-table-striped': rowStriped, 'mat-table-expandable': expandable}\"\r\n [dataSource]=\"dataSource\" [multiTemplateDataRows]=\"expandable\"\r\n matSort\r\n [matSortActive]=\"sortActive\"\r\n [matSortDirection]=\"sortDirection\"\r\n [matSortDisableClear]=\"sortDisableClear\"\r\n [matSortDisabled]=\"sortDisabled\"\r\n [matSortStart]=\"sortStart\"\r\n (matSortChange)=\"_onSortChange($event)\"\r\n [trackBy]=\"trackBy\">\r\n\r\n <ng-container *ngIf=\"rowSelectable && !hideRowSelectionCheckbox\"\r\n matColumnDef=\"MtxGridCheckboxColumnDef\">\r\n <th mat-header-cell *matHeaderCellDef class=\"mtx-grid-checkbox-cell\">\r\n <mat-checkbox *ngIf=\"multiSelectable\"\r\n [checked]=\"rowSelection.hasValue() && _isAllSelected()\"\r\n [indeterminate]=\"rowSelection.hasValue() && !_isAllSelected()\"\r\n (change)=\"$event ? _toggleMasterCheckbox() : null\">\r\n </mat-checkbox>\r\n </th>\r\n <td mat-cell *matCellDef=\"let row; let index = index; let dataIndex = dataIndex;\"\r\n class=\"mtx-grid-checkbox-cell\">\r\n <mat-checkbox *ngIf=\"!(rowSelectionFormatter.hideCheckbox && rowSelectionFormatter.hideCheckbox(row, _getIndex(index, dataIndex)))\"\r\n [disabled]=\"rowSelectionFormatter.disabled && rowSelectionFormatter.disabled(row, _getIndex(index, dataIndex))\"\r\n [checked]=\"rowSelection.isSelected(row)\"\r\n (click)=\"$event.stopPropagation()\"\r\n (change)=\"$event ? _toggleNormalCheckbox(row) : null\">\r\n </mat-checkbox>\r\n </td>\r\n <td mat-footer-cell *matFooterCellDef class=\"mtx-grid-checkbox-cell\"></td>\r\n </ng-container>\r\n\r\n <ng-container *ngFor=\"let col of columns;\">\r\n <ng-container [matColumnDef]=\"col.field\"\r\n [sticky]=\"col.pinned==='left'\" [stickyEnd]=\"col.pinned==='right'\">\r\n <th mat-header-cell *matHeaderCellDef\r\n [class]=\"col.class!\"\r\n [ngClass]=\"{'mat-table-sticky-left': col.pinned === 'left', 'mat-table-sticky-right': col.pinned === 'right'}\"\r\n [ngStyle]=\"{'width': col.width, 'min-width': col.width, 'left': col.left, 'right': col.right}\">\r\n <div class=\"mat-header-cell-inner\">\r\n <ng-template [ngIf]=\"_isTemplateRef(headerTemplate)\" [ngIfElse]=\"headerTpl\">\r\n <ng-template [ngTemplateOutlet]=\"headerTemplate\"\r\n [ngTemplateOutletContext]=\"{ $implicit: col, colDef: col }\">\r\n </ng-template>\r\n </ng-template>\r\n <ng-template #headerTpl>\r\n <ng-template [ngIf]=\"headerTemplate && _isTemplateRef(headerTemplate[col.field])\"\r\n [ngIfElse]=\"defaultHeaderTpl\">\r\n <ng-template [ngTemplateOutlet]=\"headerTemplate[col.field]\"\r\n [ngTemplateOutletContext]=\"{ $implicit: col, colDef: col }\">\r\n </ng-template>\r\n </ng-template>\r\n </ng-template>\r\n <ng-template #defaultHeaderTpl>\r\n <div [mat-sort-header]=\"col.sortProp?.id || col.field\"\r\n [disabled]=\"!col.sortable\"\r\n [arrowPosition]=\"col.sortProp?.arrowPosition!\"\r\n [disableClear]=\"col.sortProp?.disableClear\"\r\n [start]=\"col.sortProp?.start!\">\r\n <span class=\"mtx-grid-expansion-placeholder\" *ngIf=\"col.showExpand\"></span>\r\n <span>{{col.header | toObservable | async}}</span>\r\n <svg class=\"mtx-grid-icon mat-sort-header-icon\" *ngIf=\"col.sortable\"\r\n viewBox=\"0 0 24 24\" width=\"24px\" height=\"24px\" fill=\"currentColor\"\r\n focusable=\"false\">\r\n <path d=\"M3,13H15V11H3M3,6V8H21V6M3,18H9V16H3V18Z\"></path>\r\n </svg>\r\n </div>\r\n <ng-template [ngTemplateOutlet]=\"headerExtraTplBase\"\r\n [ngTemplateOutletContext]=\"{ $implicit: headerExtraTemplate, colDef: col }\">\r\n </ng-template>\r\n </ng-template>\r\n </div>\r\n </th>\r\n\r\n <td mat-cell *matCellDef=\"let row; let index = index; let dataIndex = dataIndex;\"\r\n [class]=\"col.class!\"\r\n [ngClass]=\"{'mat-table-sticky-left': col.pinned === 'left', 'mat-table-sticky-right': col.pinned === 'right'}\"\r\n [ngStyle]=\"{'width': col.width, 'min-width': col.width, 'left': col.left, 'right': col.right}\"\r\n mtx-grid-selectable-cell (cellSelectionChange)=\"_selectCell($event, row, col)\">\r\n <ng-template [ngIf]=\"_isTemplateRef(cellTemplate)\" [ngIfElse]=\"cellTpl\">\r\n <ng-template [ngTemplateOutlet]=\"cellTemplate\"\r\n [ngTemplateOutletContext]=\"{ $implicit: row, rowData: row, index: _getIndex(index, dataIndex), colDef: col }\">\r\n </ng-template>\r\n </ng-template>\r\n <ng-template #cellTpl>\r\n <ng-template [ngIf]=\"cellTemplate && _isTemplateRef(cellTemplate[col.field])\"\r\n [ngIfElse]=\"colDefCellTpl\">\r\n <ng-template [ngTemplateOutlet]=\"cellTemplate[col.field]\"\r\n [ngTemplateOutletContext]=\"{ $implicit: row, rowData: row, index: _getIndex(index, dataIndex), colDef: col }\">\r\n </ng-template>\r\n </ng-template>\r\n </ng-template>\r\n <ng-template #colDefCellTpl>\r\n <ng-template [ngIf]=\"col.cellTemplate\" [ngIfElse]=\"defaultCellTpl\"\r\n [ngTemplateOutlet]=\"col.cellTemplate!\"\r\n [ngTemplateOutletContext]=\"{ $implicit: row, rowData: row, index: _getIndex(index, dataIndex), colDef: col }\">\r\n </ng-template>\r\n </ng-template>\r\n <ng-template #defaultCellTpl>\r\n <button class=\"mtx-grid-row-expand-button\" *ngIf=\"col.showExpand\"\r\n mat-icon-button mtx-grid-expansion-toggle\r\n [(opened)]=\"expansionRowStates[dataIndex].expanded\"\r\n (toggleChange)=\"_onExpansionChange($event, row, col, dataIndex);\">\r\n <svg class=\"mtx-grid-icon mtx-grid-row-expand-icon\" viewBox=\"0 0 24 24\"\r\n width=\"24px\" height=\"24px\" fill=\"currentColor\" focusable=\"false\">\r\n <path d=\"M10 6L8.59 7.41 13.17 12l-4.58 4.59L10 18l6-6z\"></path>\r\n </svg>\r\n </button>\r\n\r\n <mtx-grid-cell [rowData]=\"row\" [colDef]=\"col\" [placeholder]=\"emptyValuePlaceholder\">\r\n </mtx-grid-cell>\r\n </ng-template>\r\n </td>\r\n\r\n <td mat-footer-cell *matFooterCellDef\r\n [ngClass]=\"{'mat-table-sticky-left': col.pinned === 'left', 'mat-table-sticky-right': col.pinned === 'right'}\"\r\n [ngStyle]=\"{'width': col.width, 'min-width': col.width, 'left': col.left, 'right': col.right}\">\r\n <span class=\"mtx-grid-expansion-placeholder\" *ngIf=\"col.showExpand\"></span>\r\n\r\n <ng-template [ngIf]=\"_isTemplateRef(summaryTemplate)\" [ngIfElse]=\"summaryTpl\">\r\n <ng-template [ngTemplateOutlet]=\"summaryTemplate\"\r\n [ngTemplateOutletContext]=\"{ $implicit: col, colDef: col, data: data }\">\r\n </ng-template>\r\n </ng-template>\r\n <ng-template #summaryTpl>\r\n <ng-template [ngIf]=\"summaryTemplate && _isTemplateRef(summaryTemplate[col.field])\"\r\n [ngIfElse]=\"defaultSummaryTpl\">\r\n <ng-template [ngTemplateOutlet]=\"summaryTemplate[col.field]\"\r\n [ngTemplateOutletContext]=\"{ $implicit: _getColData(data, col), colData: _getColData(data, col), colDef: col }\">\r\n </ng-template>\r\n </ng-template>\r\n </ng-template>\r\n <ng-template #defaultSummaryTpl>\r\n <mtx-grid-cell [summary]=\"true\" [data]=\"data\" [colDef]=\"col\"\r\n [placeholder]=\"emptyValuePlaceholder\">\r\n </mtx-grid-cell>\r\n </ng-template>\r\n </td>\r\n </ng-container>\r\n </ng-container>\r\n\r\n <ng-template [ngIf]=\"useContentHeaderRowTemplate\" [ngIfElse]=\"defaultHeaderRowTpl\">\r\n </ng-template>\r\n <ng-template #defaultHeaderRowTpl>\r\n <tr mat-header-row *matHeaderRowDef=\"displayedColumns; sticky: true\"></tr>\r\n </ng-template>\r\n\r\n <ng-template [ngIf]=\"useContentRowTemplate\" [ngIfElse]=\"defaultRowTpl\"></ng-template>\r\n <ng-template #defaultRowTpl>\r\n <tr mat-row\r\n *matRowDef=\"let row; let index = index; let dataIndex = dataIndex; columns: displayedColumns;\"\r\n [ngClass]=\"_getRowClassList(row, _getIndex(index, dataIndex))\"\r\n (click)=\"_selectRow($event, row, _getIndex(index, dataIndex))\">\r\n </tr>\r\n </ng-template>\r\n\r\n <ng-template [ngIf]=\"_whetherShowSummary\">\r\n <tr mat-footer-row *matFooterRowDef=\"displayedColumns; sticky: true\"></tr>\r\n </ng-template>\r\n <ng-template [ngIf]=\"useContentFooterRowTemplate\"></ng-template>\r\n\r\n <ng-container *ngIf=\"expandable\">\r\n <!-- Expanded Content Column - The expandable row is made up of this one column that spans across all columns -->\r\n <ng-container matColumnDef=\"MtxGridExpansionColumnDef\">\r\n <td mat-cell *matCellDef=\"let row; let dataIndex = dataIndex\"\r\n [attr.colspan]=\"displayedColumns.length\">\r\n <div class=\"mtx-grid-expansion-detail\"\r\n [@expansion]=\"expansionRowStates[dataIndex].expanded ? 'expanded' : 'collapsed'\">\r\n <ng-template [ngTemplateOutlet]=\"expansionTemplate\"\r\n [ngTemplateOutletContext]=\"{ $implicit: row, rowData: row, index: dataIndex, expanded: expansionRowStates[dataIndex].expanded }\">\r\n </ng-template>\r\n </div>\r\n </td>\r\n </ng-container>\r\n\r\n <tr mat-row\r\n *matRowDef=\"let row; columns: ['MtxGridExpansionColumnDef']; let dataIndex = dataIndex\"\r\n [ngClass]=\"['mtx-grid-expansion', expansionRowStates[dataIndex].expanded ? 'expanded' : 'collapsed']\">\r\n </tr>\r\n </ng-container>\r\n </table>\r\n\r\n <!-- TODO: Use flexbox-based mat-table -->\r\n <table mat-table *ngIf=\"columnResizable\"\r\n columnResize\r\n [ngClass]=\"{'mat-table-hover': rowHover, 'mat-table-striped': rowStriped, 'mat-table-expandable': expandable}\"\r\n [dataSource]=\"dataSource\" [multiTemplateDataRows]=\"expandable\"\r\n matSort\r\n [matSortActive]=\"sortActive\"\r\n [matSortDirection]=\"sortDirection\"\r\n [matSortDisableClear]=\"sortDisableClear\"\r\n [matSortDisabled]=\"sortDisabled\"\r\n [matSortStart]=\"sortStart\"\r\n (matSortChange)=\"_onSortChange($event)\"\r\n [trackBy]=\"trackBy\">\r\n\r\n <ng-container *ngIf=\"rowSelectable && !hideRowSelectionCheckbox\"\r\n matColumnDef=\"MtxGridCheckboxColumnDef\">\r\n <th mat-header-cell *matHeaderCellDef class=\"mtx-grid-checkbox-cell\">\r\n <mat-checkbox *ngIf=\"multiSelectable\"\r\n [checked]=\"rowSelection.hasValue() && _isAllSelected()\"\r\n [indeterminate]=\"rowSelection.hasValue() && !_isAllSelected()\"\r\n (change)=\"$event ? _toggleMasterCheckbox() : null\">\r\n </mat-checkbox>\r\n </th>\r\n <td mat-cell *matCellDef=\"let row; let index = index; let dataIndex = dataIndex;\"\r\n class=\"mtx-grid-checkbox-cell\">\r\n <mat-checkbox *ngIf=\"!(rowSelectionFormatter.hideCheckbox && rowSelectionFormatter.hideCheckbox(row, _getIndex(index, dataIndex)))\"\r\n [disabled]=\"rowSelectionFormatter.disabled && rowSelectionFormatter.disabled(row, _getIndex(index, dataIndex))\"\r\n [checked]=\"rowSelection.isSelected(row)\"\r\n (click)=\"$event.stopPropagation()\"\r\n (change)=\"$event ? _toggleNormalCheckbox(row) : null\">\r\n </mat-checkbox>\r\n </td>\r\n <td mat-footer-cell *matFooterCellDef class=\"mtx-grid-checkbox-cell\"></td>\r\n </ng-container>\r\n\r\n <ng-container *ngFor=\"let col of columns;\">\r\n <ng-container [matColumnDef]=\"col.field\"\r\n [sticky]=\"col.pinned==='left'\" [stickyEnd]=\"col.pinned==='right'\">\r\n <th mat-header-cell *matHeaderCellDef\r\n [class]=\"col.class!\"\r\n [ngClass]=\"{'mat-table-sticky-left': col.pinned === 'left', 'mat-table-sticky-right': col.pinned === 'right'}\"\r\n [ngStyle]=\"{'width': col.width, 'left': col.left, 'right': col.right}\"\r\n [resizable]=\"col.resizable\"\r\n [matResizableMinWidthPx]=\"col.minWidth\" [matResizableMaxWidthPx]=\"col.maxWidth\">\r\n <div class=\"mat-header-cell-inner\">\r\n <ng-template [ngIf]=\"_isTemplateRef(headerTemplate)\" [ngIfElse]=\"headerTpl\">\r\n <ng-template [ngTemplateOutlet]=\"headerTemplate\"\r\n [ngTemplateOutletContext]=\"{ $implicit: col, colDef: col }\">\r\n </ng-template>\r\n </ng-template>\r\n <ng-template #headerTpl>\r\n <ng-template [ngIf]=\"headerTemplate && _isTemplateRef(headerTemplate[col.field])\"\r\n [ngIfElse]=\"defaultHeaderTpl\">\r\n <ng-template [ngTemplateOutlet]=\"headerTemplate[col.field]\"\r\n [ngTemplateOutletContext]=\"{ $implicit: col, colDef: col }\">\r\n </ng-template>\r\n </ng-template>\r\n </ng-template>\r\n <ng-template #defaultHeaderTpl>\r\n <div [mat-sort-header]=\"col.sortProp?.id || col.field\"\r\n [disabled]=\"!col.sortable\"\r\n [arrowPosition]=\"col.sortProp?.arrowPosition!\"\r\n [disableClear]=\"col.sortProp?.disableClear\"\r\n [start]=\"col.sortProp?.start!\">\r\n <span class=\"mtx-grid-expansion-placeholder\" *ngIf=\"col.showExpand\"></span>\r\n <span>{{col.header | toObservable | async}}</span>\r\n <svg class=\"mtx-grid-icon mat-sort-header-icon\" *ngIf=\"col.sortable\"\r\n viewBox=\"0 0 24 24\" width=\"24px\" height=\"24px\" fill=\"currentColor\"\r\n focusable=\"false\">\r\n <path d=\"M3,13H15V11H3M3,6V8H21V6M3,18H9V16H3V18Z\"></path>\r\n </svg>\r\n </div>\r\n <ng-template [ngTemplateOutlet]=\"headerExtraTplBase\"\r\n [ngTemplateOutletContext]=\"{ $implicit: headerExtraTemplate, colDef: col }\">\r\n </ng-template>\r\n </ng-template>\r\n </div>\r\n </th>\r\n\r\n <td mat-cell *matCellDef=\"let row; let index = index; let dataIndex = dataIndex;\"\r\n [class]=\"col.class!\"\r\n [ngClass]=\"{'mat-table-sticky-left': col.pinned === 'left', 'mat-table-sticky-right': col.pinned === 'right'}\"\r\n [ngStyle]=\"{'width': col.width, 'left': col.left, 'right': col.right}\"\r\n mtx-grid-selectable-cell (cellSelectionChange)=\"_selectCell($event, row, col)\">\r\n <ng-template [ngIf]=\"_isTemplateRef(cellTemplate)\" [ngIfElse]=\"cellTpl\">\r\n <ng-template [ngTemplateOutlet]=\"cellTemplate\"\r\n [ngTemplateOutletContext]=\"{ $implicit: row, rowData: row, index: _getIndex(index, dataIndex), colDef: col }\">\r\n </ng-template>\r\n </ng-template>\r\n <ng-template #cellTpl>\r\n <ng-template [ngIf]=\"cellTemplate && _isTemplateRef(cellTemplate[col.field])\"\r\n [ngIfElse]=\"colDefCellTpl\">\r\n <ng-template [ngTemplateOutlet]=\"cellTemplate[col.field]\"\r\n [ngTemplateOutletContext]=\"{ $implicit: row, rowData: row, index: _getIndex(index, dataIndex), colDef: col }\">\r\n </ng-template>\r\n </ng-template>\r\n </ng-template>\r\n <ng-template #colDefCellTpl>\r\n <ng-template [ngIf]=\"col.cellTemplate\" [ngIfElse]=\"defaultCellTpl\"\r\n [ngTemplateOutlet]=\"col.cellTemplate!\"\r\n [ngTemplateOutletContext]=\"{ $implicit: row, rowData: row, index: _getIndex(index, dataIndex), colDef: col }\">\r\n </ng-template>\r\n </ng-template>\r\n <ng-template #defaultCellTpl>\r\n <button class=\"mtx-grid-row-expand-button\" *ngIf=\"col.showExpand\"\r\n mat-icon-button mtx-grid-expansion-toggle\r\n [(opened)]=\"expansionRowStates[dataIndex].expanded\"\r\n (toggleChange)=\"_onExpansionChange($event, row, col, dataIndex);\">\r\n <svg class=\"mtx-grid-icon mtx-grid-row-expand-icon\" viewBox=\"0 0 24 24\"\r\n width=\"24px\" height=\"24px\" fill=\"currentColor\" focusable=\"false\">\r\n <path d=\"M10 6L8.59 7.41 13.17 12l-4.58 4.59L10 18l6-6z\"></path>\r\n </svg>\r\n </button>\r\n\r\n <mtx-grid-cell [rowData]=\"row\" [colDef]=\"col\" [placeholder]=\"emptyValuePlaceholder\">\r\n </mtx-grid-cell>\r\n </ng-template>\r\n </td>\r\n\r\n <td mat-footer-cell *matFooterCellDef\r\n [ngClass]=\"{'mat-table-sticky-left': col.pinned === 'left', 'mat-table-sticky-right': col.pinned === 'right'}\"\r\n [ngStyle]=\"{'width': col.width, 'left': col.left, 'right': col.right}\">\r\n <span class=\"mtx-grid-expansion-placeholder\" *ngIf=\"col.showExpand\"></span>\r\n\r\n <ng-template [ngIf]=\"_isTemplateRef(summaryTemplate)\" [ngIfElse]=\"summaryTpl\">\r\n <ng-template [ngTemplateOutlet]=\"summaryTemplate\"\r\n [ngTemplateOutletContext]=\"{ $implicit: col, colDef: col, data: data }\">\r\n </ng-template>\r\n </ng-template>\r\n <ng-template #summaryTpl>\r\n <ng-template [ngIf]=\"summaryTemplate && _isTemplateRef(summaryTemplate[col.field])\"\r\n [ngIfElse]=\"defaultSummaryTpl\">\r\n <ng-template [ngTemplateOutlet]=\"summaryTemplate[col.field]\"\r\n [ngTemplateOutletContext]=\"{ $implicit: _getColData(data, col), colData: _getColData(data, col), colDef: col }\">\r\n </ng-template>\r\n </ng-template>\r\n </ng-template>\r\n <ng-template #defaultSummaryTpl>\r\n <mtx-grid-cell [summary]=\"true\" [data]=\"data\" [colDef]=\"col\"\r\n [placeholder]=\"emptyValuePlaceholder\">\r\n </mtx-grid-cell>\r\n </ng-template>\r\n </td>\r\n </ng-container>\r\n </ng-container>\r\n\r\n <ng-template [ngIf]=\"useContentHeaderRowTemplate\" [ngIfElse]=\"defaultHeaderRowTpl\">\r\n </ng-template>\r\n <ng-template #defaultHeaderRowTpl>\r\n <tr mat-header-row *matHeaderRowDef=\"displayedColumns; sticky: true\"></tr>\r\n </ng-template>\r\n\r\n <ng-template [ngIf]=\"useContentRowTemplate\" [ngIfElse]=\"defaultRowTpl\"></ng-template>\r\n <ng-template #defaultRowTpl>\r\n <tr mat-row\r\n *matRowDef=\"let row; let index = index; let dataIndex = dataIndex; columns: displayedColumns;\"\r\n [ngClass]=\"_getRowClassList(row, _getIndex(index, dataIndex))\"\r\n (click)=\"_selectRow($event, row, _getIndex(index, dataIndex))\">\r\n </tr>\r\n </ng-template>\r\n\r\n <ng-template [ngIf]=\"_whetherShowSummary\">\r\n <tr mat-footer-row *matFooterRowDef=\"displayedColumns; sticky: true\"></tr>\r\n </ng-template>\r\n <ng-template [ngIf]=\"useContentFooterRowTemplate\"></ng-template>\r\n\r\n <ng-container *ngIf=\"expandable\">\r\n <!-- Expanded Content Column - The expandable row is made up of this one column that spans across all columns -->\r\n <ng-container matColumnDef=\"MtxGridExpansionColumnDef\">\r\n <td mat-cell *matCellDef=\"let row; let dataIndex = dataIndex\"\r\n [attr.colspan]=\"displayedColumns.length\">\r\n <div class=\"mtx-grid-expansion-detail\"\r\n [@expansion]=\"expansionRowStates[dataIndex].expanded ? 'expanded' : 'collapsed'\">\r\n <ng-template [ngTemplateOutlet]=\"expansionTemplate\"\r\n [ngTemplateOutletContext]=\"{ $implicit: row, rowData: row, index: dataIndex, expanded: expansionRowStates[dataIndex].expanded }\">\r\n </ng-template>\r\n </div>\r\n </td>\r\n </ng-container>\r\n\r\n <tr mat-row\r\n *matRowDef=\"let row; columns: ['MtxGridExpansionColumnDef']; let dataIndex = dataIndex\"\r\n [ngClass]=\"['mtx-grid-expansion', expansionRowStates[dataIndex].expanded ? 'expanded' : 'collapsed']\">\r\n </tr>\r\n </ng-container>\r\n </table>\r\n </div>\r\n\r\n <!-- No result -->\r\n <div class=\"mtx-grid-no-result\" *ngIf=\"_hasNoResult\">\r\n <ng-template [ngIf]=\"_isTemplateRef(noResultTemplate)\" [ngIfElse]=\"defaultNoResultTpl\">\r\n <ng-template [ngTemplateOutlet]=\"noResultTemplate\"></ng-template>\r\n </ng-template>\r\n <ng-template #defaultNoResultTpl>{{noResultText}}</ng-template>\r\n </div>\r\n </div>\r\n\r\n <!-- Tool sidebar -->\r\n <div class=\"mtx-grid-sidebar\" *ngIf=\"showSidebar\">\r\n <ng-template [ngIf]=\"_isTemplateRef(sidebarTemplate)\">\r\n <ng-template [ngTemplateOutlet]=\"sidebarTemplate\"></ng-template>\r\n </ng-template>\r\n </div>\r\n</div>\r\n\r\n<div class=\"mtx-grid-footer\">\r\n <!-- Status Bar -->\r\n <div class=\"mtx-grid-statusbar\" *ngIf=\"showStatusbar\">\r\n <ng-template [ngIf]=\"_isTemplateRef(statusbarTemplate)\">\r\n <ng-template [ngTemplateOutlet]=\"statusbarTemplate\"></ng-template>\r\n </ng-template>\r\n </div>\r\n\r\n <!-- Pagination -->\r\n <div class=\"mtx-grid-pagination\">\r\n <ng-template [ngIf]=\"_isTemplateRef(paginationTemplate)\" [ngIfElse]=\"defaultPaginationTemplate\">\r\n <ng-template [ngTemplateOutlet]=\"paginationTemplate\"></ng-template>\r\n </ng-template>\r\n <ng-template #defaultPaginationTemplate>\r\n <mat-paginator [class.mat-paginator-hidden]=\"!showPaginator || _hasNoResult\"\r\n [showFirstLastButtons]=\"showFirstLastButtons\"\r\n [length]=\"length\"\r\n [pageIndex]=\"pageIndex\"\r\n [pageSize]=\"pageSize\"\r\n [pageSizeOptions]=\"pageSizeOptions\"\r\n [hidePageSize]=\"hidePageSize\"\r\n (page)=\"_onPage($event)\"\r\n [disabled]=\"pageDisabled\">\r\n </mat-paginator>\r\n </ng-template>\r\n </div>\r\n</div>\r\n\r\n<!-- Header template for extra content -->\r\n<ng-template #headerExtraTplBase let-headerExtraTemplate let-col=\"colDef\">\r\n <ng-template [ngIf]=\"_isTemplateRef(headerExtraTemplate)\" [ngIfElse]=\"headerExtraTpl\">\r\n <ng-template [ngTemplateOutlet]=\"headerExtraTemplate\"\r\n [ngTemplateOutletContext]=\"{ $implicit: col, colDef: col }\">\r\n </ng-template>\r\n </ng-template>\r\n <ng-template #headerExtraTpl>\r\n <ng-template [ngIf]=\"headerExtraTemplate && _isTemplateRef(headerExtraTemplate[col.field])\">\r\n <ng-template [ngTemplateOutlet]=\"headerExtraTemplate[col.field]\"\r\n [ngTemplateOutletContext]=\"{ $implicit: col, colDef: col }\">\r\n </ng-template>\r\n </ng-template>\r\n </ng-template>\r\n</ng-template>\r\n",
|
|
372
|
+
template: "<!-- Progress bar-->\r\n<div class=\"mtx-grid-progress\" *ngIf=\"loading\">\r\n <mat-progress-bar mode=\"indeterminate\"></mat-progress-bar>\r\n</div>\r\n\r\n<!-- Toolbar -->\r\n<div class=\"mtx-grid-toolbar\" *ngIf=\"showToolbar\">\r\n <div class=\"mtx-grid-toolbar-content\">\r\n <ng-template [ngIf]=\"toolbarTemplate\" [ngIfElse]=\"defaultToolbarTemplate\">\r\n <ng-template [ngTemplateOutlet]=\"toolbarTemplate\"></ng-template>\r\n </ng-template>\r\n <ng-template #defaultToolbarTemplate>\r\n <div class=\"mtx-grid-toolbar-title\" *ngIf=\"toolbarTitle\">{{toolbarTitle}}</div>\r\n </ng-template>\r\n </div>\r\n <div class=\"mtx-grid-toolbar-actions\">\r\n <mtx-grid-column-menu *ngIf=\"showColumnMenuButton\" #columnMenu\r\n [columns]=\"columns\"\r\n [buttonText]=\"columnMenuButtonText\"\r\n [buttonType]=\"columnMenuButtonType\"\r\n [buttonColor]=\"columnMenuButtonColor\"\r\n [buttonClass]=\"columnMenuButtonClass\"\r\n [buttonIcon]=\"columnMenuButtonIcon\"\r\n [selectable]=\"columnHideable\"\r\n [selectableChecked]=\"columnHideableChecked\"\r\n [sortable]=\"columnSortable\"\r\n [pinnable]=\"columnPinnable\"\r\n [showHeader]=\"showColumnMenuHeader\"\r\n [headerText]=\"columnMenuHeaderText\"\r\n [headerTemplate]=\"columnMenuHeaderTemplate\"\r\n [showFooter]=\"showColumnMenuFooter\"\r\n [footerText]=\"columnMenuFooterText\"\r\n [footerTemplate]=\"columnMenuFooterTemplate\"\r\n [pinOptions]=\"columnPinOptions\"\r\n (columnChange)=\"_onColumnChange($event)\">\r\n </mtx-grid-column-menu>\r\n </div>\r\n</div>\r\n\r\n<div class=\"mtx-grid-main mtx-grid-layout\">\r\n <!-- Table content -->\r\n <div class=\"mtx-grid-content mtx-grid-layout\">\r\n <div #tableContainer class=\"mat-table-container\"\r\n [ngClass]=\"{'mat-table-with-data': !_hasNoResult}\">\r\n <table mat-table *ngIf=\"!columnResizable\"\r\n [ngClass]=\"{'mat-table-hover': rowHover, 'mat-table-striped': rowStriped, 'mat-table-expandable': expandable}\"\r\n [dataSource]=\"dataSource\" [multiTemplateDataRows]=\"expandable\"\r\n matSort\r\n [matSortActive]=\"sortActive\"\r\n [matSortDirection]=\"sortDirection\"\r\n [matSortDisableClear]=\"sortDisableClear\"\r\n [matSortDisabled]=\"sortDisabled\"\r\n [matSortStart]=\"sortStart\"\r\n (matSortChange)=\"_onSortChange($event)\"\r\n [trackBy]=\"trackBy\">\r\n\r\n <ng-container *ngIf=\"rowSelectable && !hideRowSelectionCheckbox\"\r\n matColumnDef=\"MtxGridCheckboxColumnDef\">\r\n <th mat-header-cell *matHeaderCellDef class=\"mtx-grid-checkbox-cell\">\r\n <mat-checkbox *ngIf=\"multiSelectable\"\r\n [checked]=\"rowSelection.hasValue() && _isAllSelected()\"\r\n [indeterminate]=\"rowSelection.hasValue() && !_isAllSelected()\"\r\n (change)=\"$event ? _toggleMasterCheckbox() : null\">\r\n </mat-checkbox>\r\n </th>\r\n <td mat-cell *matCellDef=\"let row; let index = index; let dataIndex = dataIndex;\"\r\n class=\"mtx-grid-checkbox-cell\">\r\n <mat-checkbox *ngIf=\"!(rowSelectionFormatter.hideCheckbox && rowSelectionFormatter.hideCheckbox(row, _getIndex(index, dataIndex)))\"\r\n [disabled]=\"rowSelectionFormatter.disabled && rowSelectionFormatter.disabled(row, _getIndex(index, dataIndex))\"\r\n [checked]=\"rowSelection.isSelected(row)\"\r\n (click)=\"$event.stopPropagation()\"\r\n (change)=\"$event ? _toggleNormalCheckbox(row) : null\">\r\n </mat-checkbox>\r\n </td>\r\n <td mat-footer-cell *matFooterCellDef class=\"mtx-grid-checkbox-cell\"></td>\r\n </ng-container>\r\n\r\n <ng-container *ngFor=\"let col of columns;\">\r\n <ng-container [matColumnDef]=\"col.field\"\r\n [sticky]=\"col.pinned==='left'\" [stickyEnd]=\"col.pinned==='right'\">\r\n <th mat-header-cell *matHeaderCellDef\r\n [class]=\"col.class!\"\r\n [ngClass]=\"{'mat-table-sticky-left': col.pinned === 'left', 'mat-table-sticky-right': col.pinned === 'right'}\"\r\n [ngStyle]=\"{'width': col.width, 'min-width': col.width, 'left': col.left, 'right': col.right}\">\r\n <div class=\"mat-header-cell-inner\">\r\n <ng-template [ngIf]=\"_isTemplateRef(headerTemplate)\" [ngIfElse]=\"headerTpl\">\r\n <ng-template [ngTemplateOutlet]=\"$any(headerTemplate)\"\r\n [ngTemplateOutletContext]=\"{ $implicit: col, colDef: col }\">\r\n </ng-template>\r\n </ng-template>\r\n <ng-template #headerTpl>\r\n <ng-template [ngIf]=\"_isTemplateRef($any(headerTemplate)?.[col.field])\"\r\n [ngIfElse]=\"defaultHeaderTpl\">\r\n <ng-template [ngTemplateOutlet]=\"$any(headerTemplate)[col.field]\"\r\n [ngTemplateOutletContext]=\"{ $implicit: col, colDef: col }\">\r\n </ng-template>\r\n </ng-template>\r\n </ng-template>\r\n <ng-template #defaultHeaderTpl>\r\n <div [mat-sort-header]=\"col.sortProp?.id || col.field\"\r\n [disabled]=\"!col.sortable\"\r\n [disableClear]=\"col.sortProp?.disableClear ?? sortDisableClear\"\r\n [arrowPosition]=\"col.sortProp?.arrowPosition!\"\r\n [start]=\"col.sortProp?.start!\">\r\n <span class=\"mtx-grid-expansion-placeholder\" *ngIf=\"col.showExpand\"></span>\r\n <span>{{col.header | toObservable | async}}</span>\r\n <svg class=\"mtx-grid-icon mat-sort-header-icon\" *ngIf=\"col.sortable\"\r\n viewBox=\"0 0 24 24\" width=\"24px\" height=\"24px\" fill=\"currentColor\"\r\n focusable=\"false\">\r\n <path d=\"M3,13H15V11H3M3,6V8H21V6M3,18H9V16H3V18Z\"></path>\r\n </svg>\r\n </div>\r\n <ng-template [ngTemplateOutlet]=\"headerExtraTplBase\"\r\n [ngTemplateOutletContext]=\"{ $implicit: headerExtraTemplate, colDef: col }\">\r\n </ng-template>\r\n </ng-template>\r\n </div>\r\n </th>\r\n\r\n <td mat-cell *matCellDef=\"let row; let index = index; let dataIndex = dataIndex;\"\r\n [class]=\"col.class!\"\r\n [ngClass]=\"{'mat-table-sticky-left': col.pinned === 'left', 'mat-table-sticky-right': col.pinned === 'right'}\"\r\n [ngStyle]=\"{'width': col.width, 'min-width': col.width, 'left': col.left, 'right': col.right}\"\r\n mtx-grid-selectable-cell (cellSelectionChange)=\"_selectCell($event, row, col)\">\r\n <ng-template [ngIf]=\"_isTemplateRef(cellTemplate)\" [ngIfElse]=\"cellTpl\">\r\n <ng-template [ngTemplateOutlet]=\"$any(cellTemplate)\"\r\n [ngTemplateOutletContext]=\"{ $implicit: row, rowData: row, index: _getIndex(index, dataIndex), colDef: col }\">\r\n </ng-template>\r\n </ng-template>\r\n <ng-template #cellTpl>\r\n <ng-template [ngIf]=\"_isTemplateRef($any(cellTemplate)?.[col.field])\"\r\n [ngIfElse]=\"colDefCellTpl\">\r\n <ng-template [ngTemplateOutlet]=\"$any(cellTemplate)[col.field]\"\r\n [ngTemplateOutletContext]=\"{ $implicit: row, rowData: row, index: _getIndex(index, dataIndex), colDef: col }\">\r\n </ng-template>\r\n </ng-template>\r\n </ng-template>\r\n <ng-template #colDefCellTpl>\r\n <ng-template [ngIf]=\"col.cellTemplate\" [ngIfElse]=\"defaultCellTpl\"\r\n [ngTemplateOutlet]=\"col.cellTemplate!\"\r\n [ngTemplateOutletContext]=\"{ $implicit: row, rowData: row, index: _getIndex(index, dataIndex), colDef: col }\">\r\n </ng-template>\r\n </ng-template>\r\n <ng-template #defaultCellTpl>\r\n <button class=\"mtx-grid-row-expand-button\" *ngIf=\"col.showExpand\"\r\n mat-icon-button mtx-grid-expansion-toggle type=\"button\"\r\n [(opened)]=\"expansionRowStates[dataIndex].expanded\"\r\n (toggleChange)=\"_onExpansionChange($event, row, col, dataIndex);\">\r\n <svg class=\"mtx-grid-icon mtx-grid-row-expand-icon\" viewBox=\"0 0 24 24\"\r\n width=\"24px\" height=\"24px\" fill=\"currentColor\" focusable=\"false\">\r\n <path d=\"M10 6L8.59 7.41 13.17 12l-4.58 4.59L10 18l6-6z\"></path>\r\n </svg>\r\n </button>\r\n\r\n <mtx-grid-cell [rowData]=\"row\" [colDef]=\"col\" [placeholder]=\"emptyValuePlaceholder\">\r\n </mtx-grid-cell>\r\n </ng-template>\r\n </td>\r\n\r\n <td mat-footer-cell *matFooterCellDef\r\n [ngClass]=\"{'mat-table-sticky-left': col.pinned === 'left', 'mat-table-sticky-right': col.pinned === 'right'}\"\r\n [ngStyle]=\"{'width': col.width, 'min-width': col.width, 'left': col.left, 'right': col.right}\">\r\n <span class=\"mtx-grid-expansion-placeholder\" *ngIf=\"col.showExpand\"></span>\r\n\r\n <ng-template [ngIf]=\"_isTemplateRef(summaryTemplate)\" [ngIfElse]=\"summaryTpl\">\r\n <ng-template [ngTemplateOutlet]=\"$any(summaryTemplate)\"\r\n [ngTemplateOutletContext]=\"{ $implicit: col, colDef: col, data: data }\">\r\n </ng-template>\r\n </ng-template>\r\n <ng-template #summaryTpl>\r\n <ng-template [ngIf]=\"_isTemplateRef($any(summaryTemplate)?.[col.field])\"\r\n [ngIfElse]=\"defaultSummaryTpl\">\r\n <ng-template [ngTemplateOutlet]=\"$any(summaryTemplate)[col.field]\"\r\n [ngTemplateOutletContext]=\"{ $implicit: _getColData(data, col), colData: _getColData(data, col), colDef: col }\">\r\n </ng-template>\r\n </ng-template>\r\n </ng-template>\r\n <ng-template #defaultSummaryTpl>\r\n <mtx-grid-cell [summary]=\"true\" [data]=\"data\" [colDef]=\"col\"\r\n [placeholder]=\"emptyValuePlaceholder\">\r\n </mtx-grid-cell>\r\n </ng-template>\r\n </td>\r\n </ng-container>\r\n </ng-container>\r\n\r\n <ng-template [ngIf]=\"useContentHeaderRowTemplate\" [ngIfElse]=\"defaultHeaderRowTpl\">\r\n </ng-template>\r\n <ng-template #defaultHeaderRowTpl>\r\n <tr mat-header-row *matHeaderRowDef=\"displayedColumns; sticky: true\"></tr>\r\n </ng-template>\r\n\r\n <ng-template [ngIf]=\"useContentRowTemplate\" [ngIfElse]=\"defaultRowTpl\"></ng-template>\r\n <ng-template #defaultRowTpl>\r\n <tr mat-row\r\n *matRowDef=\"let row; let index = index; let dataIndex = dataIndex; columns: displayedColumns;\"\r\n [ngClass]=\"_getRowClassList(row, _getIndex(index, dataIndex))\"\r\n (click)=\"_selectRow($event, row, _getIndex(index, dataIndex))\">\r\n </tr>\r\n </ng-template>\r\n\r\n <ng-template [ngIf]=\"_whetherShowSummary\">\r\n <tr mat-footer-row *matFooterRowDef=\"displayedColumns; sticky: true\"></tr>\r\n </ng-template>\r\n <ng-template [ngIf]=\"useContentFooterRowTemplate\"></ng-template>\r\n\r\n <ng-container *ngIf=\"expandable\">\r\n <!-- Expanded Content Column - The expandable row is made up of this one column that spans across all columns -->\r\n <ng-container matColumnDef=\"MtxGridExpansionColumnDef\">\r\n <td mat-cell *matCellDef=\"let row; let dataIndex = dataIndex\"\r\n [attr.colspan]=\"displayedColumns.length\">\r\n <div class=\"mtx-grid-expansion-detail\"\r\n [@expansion]=\"expansionRowStates[dataIndex].expanded ? 'expanded' : 'collapsed'\">\r\n <ng-template [ngTemplateOutlet]=\"expansionTemplate\"\r\n [ngTemplateOutletContext]=\"{ $implicit: row, rowData: row, index: dataIndex, expanded: expansionRowStates[dataIndex].expanded }\">\r\n </ng-template>\r\n </div>\r\n </td>\r\n </ng-container>\r\n\r\n <tr mat-row\r\n *matRowDef=\"let row; columns: ['MtxGridExpansionColumnDef']; let dataIndex = dataIndex\"\r\n [ngClass]=\"['mtx-grid-expansion', expansionRowStates[dataIndex].expanded ? 'expanded' : 'collapsed']\">\r\n </tr>\r\n </ng-container>\r\n </table>\r\n\r\n <!-- TODO: Use flexbox-based mat-table -->\r\n <table mat-table *ngIf=\"columnResizable\"\r\n columnResize\r\n [ngClass]=\"{'mat-table-hover': rowHover, 'mat-table-striped': rowStriped, 'mat-table-expandable': expandable}\"\r\n [dataSource]=\"dataSource\" [multiTemplateDataRows]=\"expandable\"\r\n matSort\r\n [matSortActive]=\"sortActive\"\r\n [matSortDirection]=\"sortDirection\"\r\n [matSortDisableClear]=\"sortDisableClear\"\r\n [matSortDisabled]=\"sortDisabled\"\r\n [matSortStart]=\"sortStart\"\r\n (matSortChange)=\"_onSortChange($event)\"\r\n [trackBy]=\"trackBy\">\r\n\r\n <ng-container *ngIf=\"rowSelectable && !hideRowSelectionCheckbox\"\r\n matColumnDef=\"MtxGridCheckboxColumnDef\">\r\n <th mat-header-cell *matHeaderCellDef class=\"mtx-grid-checkbox-cell\">\r\n <mat-checkbox *ngIf=\"multiSelectable\"\r\n [checked]=\"rowSelection.hasValue() && _isAllSelected()\"\r\n [indeterminate]=\"rowSelection.hasValue() && !_isAllSelected()\"\r\n (change)=\"$event ? _toggleMasterCheckbox() : null\">\r\n </mat-checkbox>\r\n </th>\r\n <td mat-cell *matCellDef=\"let row; let index = index; let dataIndex = dataIndex;\"\r\n class=\"mtx-grid-checkbox-cell\">\r\n <mat-checkbox *ngIf=\"!(rowSelectionFormatter.hideCheckbox && rowSelectionFormatter.hideCheckbox(row, _getIndex(index, dataIndex)))\"\r\n [disabled]=\"rowSelectionFormatter.disabled && rowSelectionFormatter.disabled(row, _getIndex(index, dataIndex))\"\r\n [checked]=\"rowSelection.isSelected(row)\"\r\n (click)=\"$event.stopPropagation()\"\r\n (change)=\"$event ? _toggleNormalCheckbox(row) : null\">\r\n </mat-checkbox>\r\n </td>\r\n <td mat-footer-cell *matFooterCellDef class=\"mtx-grid-checkbox-cell\"></td>\r\n </ng-container>\r\n\r\n <ng-container *ngFor=\"let col of columns;\">\r\n <ng-container [matColumnDef]=\"col.field\"\r\n [sticky]=\"col.pinned==='left'\" [stickyEnd]=\"col.pinned==='right'\">\r\n <th mat-header-cell *matHeaderCellDef\r\n [class]=\"col.class!\"\r\n [ngClass]=\"{'mat-table-sticky-left': col.pinned === 'left', 'mat-table-sticky-right': col.pinned === 'right'}\"\r\n [ngStyle]=\"{'width': col.width, 'left': col.left, 'right': col.right}\"\r\n [resizable]=\"col.resizable\"\r\n [matResizableMinWidthPx]=\"col.minWidth\" [matResizableMaxWidthPx]=\"col.maxWidth\">\r\n <div class=\"mat-header-cell-inner\">\r\n <ng-template [ngIf]=\"_isTemplateRef(headerTemplate)\" [ngIfElse]=\"headerTpl\">\r\n <ng-template [ngTemplateOutlet]=\"$any(headerTemplate)\"\r\n [ngTemplateOutletContext]=\"{ $implicit: col, colDef: col }\">\r\n </ng-template>\r\n </ng-template>\r\n <ng-template #headerTpl>\r\n <ng-template [ngIf]=\"_isTemplateRef($any(headerTemplate)?.[col.field])\"\r\n [ngIfElse]=\"defaultHeaderTpl\">\r\n <ng-template [ngTemplateOutlet]=\"$any(headerTemplate)[col.field]\"\r\n [ngTemplateOutletContext]=\"{ $implicit: col, colDef: col }\">\r\n </ng-template>\r\n </ng-template>\r\n </ng-template>\r\n <ng-template #defaultHeaderTpl>\r\n <div [mat-sort-header]=\"col.sortProp?.id || col.field\"\r\n [disabled]=\"!col.sortable\"\r\n [disableClear]=\"col.sortProp?.disableClear ?? sortDisableClear\"\r\n [arrowPosition]=\"col.sortProp?.arrowPosition!\"\r\n [start]=\"col.sortProp?.start!\">\r\n <span class=\"mtx-grid-expansion-placeholder\" *ngIf=\"col.showExpand\"></span>\r\n <span>{{col.header | toObservable | async}}</span>\r\n <svg class=\"mtx-grid-icon mat-sort-header-icon\" *ngIf=\"col.sortable\"\r\n viewBox=\"0 0 24 24\" width=\"24px\" height=\"24px\" fill=\"currentColor\"\r\n focusable=\"false\">\r\n <path d=\"M3,13H15V11H3M3,6V8H21V6M3,18H9V16H3V18Z\"></path>\r\n </svg>\r\n </div>\r\n <ng-template [ngTemplateOutlet]=\"headerExtraTplBase\"\r\n [ngTemplateOutletContext]=\"{ $implicit: headerExtraTemplate, colDef: col }\">\r\n </ng-template>\r\n </ng-template>\r\n </div>\r\n </th>\r\n\r\n <td mat-cell *matCellDef=\"let row; let index = index; let dataIndex = dataIndex;\"\r\n [class]=\"col.class!\"\r\n [ngClass]=\"{'mat-table-sticky-left': col.pinned === 'left', 'mat-table-sticky-right': col.pinned === 'right'}\"\r\n [ngStyle]=\"{'width': col.width, 'left': col.left, 'right': col.right}\"\r\n mtx-grid-selectable-cell (cellSelectionChange)=\"_selectCell($event, row, col)\">\r\n <ng-template [ngIf]=\"_isTemplateRef(cellTemplate)\" [ngIfElse]=\"cellTpl\">\r\n <ng-template [ngTemplateOutlet]=\"$any(cellTemplate)\"\r\n [ngTemplateOutletContext]=\"{ $implicit: row, rowData: row, index: _getIndex(index, dataIndex), colDef: col }\">\r\n </ng-template>\r\n </ng-template>\r\n <ng-template #cellTpl>\r\n <ng-template [ngIf]=\"_isTemplateRef($any(cellTemplate)?.[col.field])\"\r\n [ngIfElse]=\"colDefCellTpl\">\r\n <ng-template [ngTemplateOutlet]=\"$any(cellTemplate)[col.field]\"\r\n [ngTemplateOutletContext]=\"{ $implicit: row, rowData: row, index: _getIndex(index, dataIndex), colDef: col }\">\r\n </ng-template>\r\n </ng-template>\r\n </ng-template>\r\n <ng-template #colDefCellTpl>\r\n <ng-template [ngIf]=\"col.cellTemplate\" [ngIfElse]=\"defaultCellTpl\"\r\n [ngTemplateOutlet]=\"col.cellTemplate!\"\r\n [ngTemplateOutletContext]=\"{ $implicit: row, rowData: row, index: _getIndex(index, dataIndex), colDef: col }\">\r\n </ng-template>\r\n </ng-template>\r\n <ng-template #defaultCellTpl>\r\n <button class=\"mtx-grid-row-expand-button\" *ngIf=\"col.showExpand\"\r\n mat-icon-button mtx-grid-expansion-toggle type=\"button\"\r\n [(opened)]=\"expansionRowStates[dataIndex].expanded\"\r\n (toggleChange)=\"_onExpansionChange($event, row, col, dataIndex);\">\r\n <svg class=\"mtx-grid-icon mtx-grid-row-expand-icon\" viewBox=\"0 0 24 24\"\r\n width=\"24px\" height=\"24px\" fill=\"currentColor\" focusable=\"false\">\r\n <path d=\"M10 6L8.59 7.41 13.17 12l-4.58 4.59L10 18l6-6z\"></path>\r\n </svg>\r\n </button>\r\n\r\n <mtx-grid-cell [rowData]=\"row\" [colDef]=\"col\" [placeholder]=\"emptyValuePlaceholder\">\r\n </mtx-grid-cell>\r\n </ng-template>\r\n </td>\r\n\r\n <td mat-footer-cell *matFooterCellDef\r\n [ngClass]=\"{'mat-table-sticky-left': col.pinned === 'left', 'mat-table-sticky-right': col.pinned === 'right'}\"\r\n [ngStyle]=\"{'width': col.width, 'left': col.left, 'right': col.right}\">\r\n <span class=\"mtx-grid-expansion-placeholder\" *ngIf=\"col.showExpand\"></span>\r\n\r\n <ng-template [ngIf]=\"_isTemplateRef(summaryTemplate)\" [ngIfElse]=\"summaryTpl\">\r\n <ng-template [ngTemplateOutlet]=\"$any(summaryTemplate)\"\r\n [ngTemplateOutletContext]=\"{ $implicit: col, colDef: col, data: data }\">\r\n </ng-template>\r\n </ng-template>\r\n <ng-template #summaryTpl>\r\n <ng-template [ngIf]=\"_isTemplateRef($any(summaryTemplate)?.[col.field])\"\r\n [ngIfElse]=\"defaultSummaryTpl\">\r\n <ng-template [ngTemplateOutlet]=\"$any(summaryTemplate)[col.field]\"\r\n [ngTemplateOutletContext]=\"{ $implicit: _getColData(data, col), colData: _getColData(data, col), colDef: col }\">\r\n </ng-template>\r\n </ng-template>\r\n </ng-template>\r\n <ng-template #defaultSummaryTpl>\r\n <mtx-grid-cell [summary]=\"true\" [data]=\"data\" [colDef]=\"col\"\r\n [placeholder]=\"emptyValuePlaceholder\">\r\n </mtx-grid-cell>\r\n </ng-template>\r\n </td>\r\n </ng-container>\r\n </ng-container>\r\n\r\n <ng-template [ngIf]=\"useContentHeaderRowTemplate\" [ngIfElse]=\"defaultHeaderRowTpl\">\r\n </ng-template>\r\n <ng-template #defaultHeaderRowTpl>\r\n <tr mat-header-row *matHeaderRowDef=\"displayedColumns; sticky: true\"></tr>\r\n </ng-template>\r\n\r\n <ng-template [ngIf]=\"useContentRowTemplate\" [ngIfElse]=\"defaultRowTpl\"></ng-template>\r\n <ng-template #defaultRowTpl>\r\n <tr mat-row\r\n *matRowDef=\"let row; let index = index; let dataIndex = dataIndex; columns: displayedColumns;\"\r\n [ngClass]=\"_getRowClassList(row, _getIndex(index, dataIndex))\"\r\n (click)=\"_selectRow($event, row, _getIndex(index, dataIndex))\">\r\n </tr>\r\n </ng-template>\r\n\r\n <ng-template [ngIf]=\"_whetherShowSummary\">\r\n <tr mat-footer-row *matFooterRowDef=\"displayedColumns; sticky: true\"></tr>\r\n </ng-template>\r\n <ng-template [ngIf]=\"useContentFooterRowTemplate\"></ng-template>\r\n\r\n <ng-container *ngIf=\"expandable\">\r\n <!-- Expanded Content Column - The expandable row is made up of this one column that spans across all columns -->\r\n <ng-container matColumnDef=\"MtxGridExpansionColumnDef\">\r\n <td mat-cell *matCellDef=\"let row; let dataIndex = dataIndex\"\r\n [attr.colspan]=\"displayedColumns.length\">\r\n <div class=\"mtx-grid-expansion-detail\"\r\n [@expansion]=\"expansionRowStates[dataIndex].expanded ? 'expanded' : 'collapsed'\">\r\n <ng-template [ngTemplateOutlet]=\"expansionTemplate\"\r\n [ngTemplateOutletContext]=\"{ $implicit: row, rowData: row, index: dataIndex, expanded: expansionRowStates[dataIndex].expanded }\">\r\n </ng-template>\r\n </div>\r\n </td>\r\n </ng-container>\r\n\r\n <tr mat-row\r\n *matRowDef=\"let row; columns: ['MtxGridExpansionColumnDef']; let dataIndex = dataIndex\"\r\n [ngClass]=\"['mtx-grid-expansion', expansionRowStates[dataIndex].expanded ? 'expanded' : 'collapsed']\">\r\n </tr>\r\n </ng-container>\r\n </table>\r\n </div>\r\n\r\n <!-- No result -->\r\n <div class=\"mtx-grid-no-result\" *ngIf=\"_hasNoResult\">\r\n <ng-template [ngIf]=\"noResultTemplate\" [ngIfElse]=\"defaultNoResultTpl\">\r\n <ng-template [ngTemplateOutlet]=\"noResultTemplate\"></ng-template>\r\n </ng-template>\r\n <ng-template #defaultNoResultTpl>{{noResultText}}</ng-template>\r\n </div>\r\n </div>\r\n\r\n <!-- Tool sidebar -->\r\n <div class=\"mtx-grid-sidebar\" *ngIf=\"showSidebar\">\r\n <ng-template [ngIf]=\"sidebarTemplate\">\r\n <ng-template [ngTemplateOutlet]=\"sidebarTemplate\"></ng-template>\r\n </ng-template>\r\n </div>\r\n</div>\r\n\r\n<div class=\"mtx-grid-footer\">\r\n <!-- Status Bar -->\r\n <div class=\"mtx-grid-statusbar\" *ngIf=\"showStatusbar\">\r\n <ng-template [ngIf]=\"statusbarTemplate\">\r\n <ng-template [ngTemplateOutlet]=\"statusbarTemplate\"></ng-template>\r\n </ng-template>\r\n </div>\r\n\r\n <!-- Pagination -->\r\n <div class=\"mtx-grid-pagination\">\r\n <ng-template [ngIf]=\"paginationTemplate\" [ngIfElse]=\"defaultPaginationTemplate\">\r\n <ng-template [ngTemplateOutlet]=\"paginationTemplate\"></ng-template>\r\n </ng-template>\r\n <ng-template #defaultPaginationTemplate>\r\n <mat-paginator [class.mat-paginator-hidden]=\"!showPaginator\"\r\n [showFirstLastButtons]=\"showFirstLastButtons\"\r\n [length]=\"length\"\r\n [pageIndex]=\"pageIndex\"\r\n [pageSize]=\"pageSize\"\r\n [pageSizeOptions]=\"pageSizeOptions\"\r\n [hidePageSize]=\"hidePageSize\"\r\n (page)=\"_onPage($event)\"\r\n [disabled]=\"pageDisabled\">\r\n </mat-paginator>\r\n </ng-template>\r\n </div>\r\n</div>\r\n\r\n<!-- Header template for extra content -->\r\n<ng-template #headerExtraTplBase let-headerExtraTemplate let-col=\"colDef\">\r\n <ng-template [ngIf]=\"_isTemplateRef(headerExtraTemplate)\" [ngIfElse]=\"headerExtraTpl\">\r\n <ng-template [ngTemplateOutlet]=\"headerExtraTemplate\"\r\n [ngTemplateOutletContext]=\"{ $implicit: col, colDef: col }\">\r\n </ng-template>\r\n </ng-template>\r\n <ng-template #headerExtraTpl>\r\n <ng-template [ngIf]=\"_isTemplateRef($any(headerExtraTemplate)?.[col.field])\">\r\n <ng-template [ngTemplateOutlet]=\"$any(headerExtraTemplate)[col.field]\"\r\n [ngTemplateOutletContext]=\"{ $implicit: col, colDef: col }\">\r\n </ng-template>\r\n </ng-template>\r\n </ng-template>\r\n</ng-template>\r\n",
|
|
373
373
|
host: {
|
|
374
374
|
class: 'mtx-grid',
|
|
375
375
|
},
|
|
@@ -571,7 +571,7 @@ MtxGridCellComponent.decorators = [
|
|
|
571
571
|
{ type: Component, args: [{
|
|
572
572
|
selector: 'mtx-grid-cell',
|
|
573
573
|
exportAs: 'mtxGridCell',
|
|
574
|
-
template: "<span *ngIf=\"summary; else customCellFormattingTpl\"\r\n [title]=\"_getFormatterTooltip(_formatSummary(data, colDef))\"\r\n [innerHTML]=\"_getText(_formatSummary(data, colDef))\">\r\n</span>\r\n\r\n<!-- Custom formatting -->\r\n<ng-template #customCellFormattingTpl>\r\n <span *ngIf=\"colDef.formatter; else defaultCellFormattingTpl\"\r\n [title]=\"_getFormatterTooltip(colDef.formatter(rowData, colDef))\"\r\n [innerHTML]=\"_getText(colDef.formatter(rowData, colDef))\">\r\n </span>\r\n</ng-template>\r\n\r\n<!-- Default formatting -->\r\n<ng-template #defaultCellFormattingTpl>\r\n <ng-container [ngSwitch]=\"colDef.type\">\r\n <!-- Tag -->\r\n <ng-container *ngSwitchCase=\"'tag'\">\r\n <mat-chip-list *ngIf=\"colDef.tag && colDef.tag[_colValue]; else tagEmptyTpl\">\r\n <mat-chip color=\"primary\" [ngClass]=\"['bg-' + colDef.tag[_colValue].color]\">\r\n {{colDef.tag[_colValue].text}}\r\n </mat-chip>\r\n </mat-chip-list>\r\n <ng-template #tagEmptyTpl>{{_colValue}}</ng-template>\r\n </ng-container>\r\n <!-- Buttons -->\r\n <ng-container *ngSwitchCase=\"'button'\">\r\n <ng-container *ngFor=\"let btn of colDef.buttons;\">\r\n <ng-container *ngIf=\"!btn.iif || btn.iif(rowData)\">\r\n <button [ngClass]=\"['mtx-grid-action-button', btn.class||'']\"\r\n
|
|
574
|
+
template: "<span *ngIf=\"summary; else customCellFormattingTpl\"\r\n [title]=\"_getFormatterTooltip(_formatSummary(data, colDef))\"\r\n [innerHTML]=\"_getText(_formatSummary(data, colDef))\">\r\n</span>\r\n\r\n<!-- Custom formatting -->\r\n<ng-template #customCellFormattingTpl>\r\n <span *ngIf=\"colDef.formatter; else defaultCellFormattingTpl\"\r\n [title]=\"_getFormatterTooltip(colDef.formatter(rowData, colDef))\"\r\n [innerHTML]=\"_getText(colDef.formatter(rowData, colDef))\">\r\n </span>\r\n</ng-template>\r\n\r\n<!-- Default formatting -->\r\n<ng-template #defaultCellFormattingTpl>\r\n <ng-container [ngSwitch]=\"colDef.type\">\r\n <!-- Tag -->\r\n <ng-container *ngSwitchCase=\"'tag'\">\r\n <mat-chip-list *ngIf=\"colDef.tag && colDef.tag[_colValue]; else tagEmptyTpl\">\r\n <mat-chip color=\"primary\" [ngClass]=\"['bg-' + colDef.tag[_colValue].color]\">\r\n {{colDef.tag[_colValue].text}}\r\n </mat-chip>\r\n </mat-chip-list>\r\n <ng-template #tagEmptyTpl>{{_colValue}}</ng-template>\r\n </ng-container>\r\n <!-- Buttons -->\r\n <ng-container *ngSwitchCase=\"'button'\">\r\n <ng-container *ngFor=\"let btn of colDef.buttons;\">\r\n <ng-container *ngIf=\"!btn.iif || btn.iif(rowData)\">\r\n <button *ngIf=\"btn.type==='basic'\" type=\"button\"\r\n [ngClass]=\"['mtx-grid-action-button', btn.class||'']\"\r\n mat-button [color]=\"btn.color || 'primary'\" [disabled]=\"btn.disabled\"\r\n [matTooltip]=\"btn.tooltip | toObservable | async\"\r\n (click)=\"_handleActionClick($event, btn, rowData)\">\r\n <mat-icon class=\"mtx-grid-icon\" *ngIf=\"btn.icon\">{{btn.icon}}</mat-icon>\r\n <span>{{btn.text | toObservable | async}}</span>\r\n </button>\r\n <button *ngIf=\"!btn.type || btn.type==='icon'\" type=\"button\"\r\n [ngClass]=\"['mtx-grid-action-button', btn.class||'']\"\r\n mat-icon-button [color]=\"btn.color || 'primary'\" [disabled]=\"btn.disabled\"\r\n [matTooltip]=\"btn.tooltip | toObservable | async\"\r\n (click)=\"_handleActionClick($event, btn, rowData)\">\r\n <mat-icon class=\"mtx-grid-icon\">{{btn.icon}}</mat-icon>\r\n </button>\r\n </ng-container>\r\n </ng-container>\r\n </ng-container>\r\n <!-- Link -->\r\n <ng-container *ngSwitchCase=\"'link'\">\r\n <a [href]=\"_colValue\" target=\"_blank\">{{_colValue}}</a>\r\n </ng-container>\r\n <!-- Image -->\r\n <ng-container *ngSwitchCase=\"'image'\">\r\n <img class=\"mtx-grid-img\" [src]=\"_colValue\" (click)=\"_handleImagePreview(_colValue)\">\r\n </ng-container>\r\n <!-- Boolean -->\r\n <ng-container *ngSwitchCase=\"'boolean'\">\r\n <span [title]=\"_getTooltip(_colValue)\">{{_getText(_colValue)}}</span>\r\n </ng-container>\r\n <!-- Number -->\r\n <ng-container *ngSwitchCase=\"'number'\">\r\n <span [title]=\"_getTooltip(_colValue | number: colDef.typeParameter?.digitsInfo :\r\n colDef.typeParameter?.locale)\">\r\n {{_getText(_colValue | number: colDef.typeParameter?.digitsInfo :\r\n colDef.typeParameter?.locale)}}\r\n </span>\r\n </ng-container>\r\n <!-- Currency -->\r\n <ng-container *ngSwitchCase=\"'currency'\">\r\n <span [title]=\"_getTooltip(_colValue | currency: colDef.typeParameter?.currencyCode :\r\n colDef.typeParameter?.display :\r\n colDef.typeParameter?.digitsInfo :\r\n colDef.typeParameter?.locale)\">\r\n {{_getText(_colValue | currency: colDef.typeParameter?.currencyCode :\r\n colDef.typeParameter?.display :\r\n colDef.typeParameter?.digitsInfo :\r\n colDef.typeParameter?.locale)}}\r\n </span>\r\n </ng-container>\r\n <!-- Percent -->\r\n <ng-container *ngSwitchCase=\"'percent'\">\r\n <span [title]=\"_getTooltip(_colValue | percent: colDef.typeParameter?.digitsInfo :\r\n colDef.typeParameter?.locale)\">\r\n {{_getText(_colValue | percent: colDef.typeParameter?.digitsInfo :\r\n colDef.typeParameter?.locale)}}\r\n </span>\r\n </ng-container>\r\n <!-- Date -->\r\n <ng-container *ngSwitchCase=\"'date'\">\r\n <span [title]=\"_getTooltip(_colValue | date: colDef.typeParameter?.format :\r\n colDef.typeParameter?.timezone :\r\n colDef.typeParameter?.locale)\">\r\n {{_getText(_colValue | date: colDef.typeParameter?.format :\r\n colDef.typeParameter?.timezone :\r\n colDef.typeParameter?.locale)}}\r\n </span>\r\n </ng-container>\r\n <!-- Default -->\r\n <ng-container *ngSwitchDefault>\r\n <span [title]=\"_getTooltip(_colValue)\">{{_getText(_colValue)}}</span>\r\n </ng-container>\r\n </ng-container>\r\n</ng-template>\r\n",
|
|
575
575
|
encapsulation: ViewEncapsulation.None,
|
|
576
576
|
styles: [".mtx-grid-img{display:block;width:30px;border-radius:4px;cursor:pointer}\n"]
|
|
577
577
|
},] }
|
|
@@ -652,7 +652,7 @@ MtxGridColumnMenuComponent.decorators = [
|
|
|
652
652
|
{ type: Component, args: [{
|
|
653
653
|
selector: 'mtx-grid-column-menu',
|
|
654
654
|
exportAs: 'mtxGridColumnMenu',
|
|
655
|
-
template: "<ng-container [ngSwitch]=\"buttonType\">\r\n <ng-container *ngSwitchCase=\"'raised'\">\r\n <button [ngClass]=\"buttonClass\" mat-raised-button [color]=\"buttonColor\"\r\n [matMenuTriggerFor]=\"menu\">\r\n <mat-icon *ngIf=\"buttonIcon\">{{buttonIcon}}</mat-icon> {{buttonText}}\r\n </button>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'stroked'\">\r\n <button [ngClass]=\"buttonClass\" mat-stroked-button [color]=\"buttonColor\"\r\n [matMenuTriggerFor]=\"menu\">\r\n <mat-icon *ngIf=\"buttonIcon\">{{buttonIcon}}</mat-icon> {{buttonText}}\r\n </button>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'flat'\">\r\n <button [ngClass]=\"buttonClass\" mat-flat-button [color]=\"buttonColor\"\r\n [matMenuTriggerFor]=\"menu\">\r\n <mat-icon *ngIf=\"buttonIcon\">{{buttonIcon}}</mat-icon> {{buttonText}}\r\n </button>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'icon'\">\r\n <button [ngClass]=\"buttonClass\" mat-icon-button [color]=\"buttonColor\"\r\n [matMenuTriggerFor]=\"menu\">\r\n <mat-icon *ngIf=\"buttonIcon\">{{buttonIcon}}</mat-icon>\r\n </button>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'fab'\">\r\n <button [ngClass]=\"buttonClass\" mat-fab [color]=\"buttonColor\"
|
|
655
|
+
template: "<ng-container [ngSwitch]=\"buttonType\">\r\n <ng-container *ngSwitchCase=\"'raised'\">\r\n <button [ngClass]=\"buttonClass\" mat-raised-button type=\"button\" [color]=\"buttonColor\"\r\n [matMenuTriggerFor]=\"menu\">\r\n <mat-icon *ngIf=\"buttonIcon\">{{buttonIcon}}</mat-icon> {{buttonText}}\r\n </button>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'stroked'\">\r\n <button [ngClass]=\"buttonClass\" mat-stroked-button type=\"button\" [color]=\"buttonColor\"\r\n [matMenuTriggerFor]=\"menu\">\r\n <mat-icon *ngIf=\"buttonIcon\">{{buttonIcon}}</mat-icon> {{buttonText}}\r\n </button>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'flat'\">\r\n <button [ngClass]=\"buttonClass\" mat-flat-button type=\"button\" [color]=\"buttonColor\"\r\n [matMenuTriggerFor]=\"menu\">\r\n <mat-icon *ngIf=\"buttonIcon\">{{buttonIcon}}</mat-icon> {{buttonText}}\r\n </button>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'icon'\">\r\n <button [ngClass]=\"buttonClass\" mat-icon-button type=\"button\" [color]=\"buttonColor\"\r\n [matMenuTriggerFor]=\"menu\">\r\n <mat-icon *ngIf=\"buttonIcon\">{{buttonIcon}}</mat-icon>\r\n </button>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'fab'\">\r\n <button [ngClass]=\"buttonClass\" mat-fab type=\"button\" [color]=\"buttonColor\"\r\n [matMenuTriggerFor]=\"menu\">\r\n <mat-icon *ngIf=\"buttonIcon\">{{buttonIcon}}</mat-icon> {{buttonText}}\r\n </button>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'mini-fab'\">\r\n <button [ngClass]=\"buttonClass\" mat-mini-fab type=\"button\" [color]=\"buttonColor\"\r\n [matMenuTriggerFor]=\"menu\">\r\n <mat-icon *ngIf=\"buttonIcon\">{{buttonIcon}}</mat-icon> {{buttonText}}\r\n </button>\r\n </ng-container>\r\n <ng-container *ngSwitchDefault>\r\n <button [ngClass]=\"buttonClass\" mat-button type=\"button\" [color]=\"buttonColor\"\r\n [matMenuTriggerFor]=\"menu\">\r\n <mat-icon *ngIf=\"buttonIcon\">{{buttonIcon}}</mat-icon> {{buttonText}}\r\n </button>\r\n </ng-container>\r\n</ng-container>\r\n\r\n<mat-menu #menu=\"matMenu\" class=\"mtx-grid-column-menu\">\r\n <div class=\"mtx-grid-column-menu-content\"\r\n (click)=\"$event.stopPropagation()\" (keydown)=\"$event.stopPropagation()\">\r\n <div class=\"mtx-grid-column-menu-header\" *ngIf=\"showHeader\">\r\n <ng-template [ngIf]=\"headerTemplate\" [ngIfElse]=\"defaultHeaderTpl\">\r\n <ng-template [ngTemplateOutlet]=\"headerTemplate\"></ng-template>\r\n </ng-template>\r\n <ng-template #defaultHeaderTpl>{{headerText}}</ng-template>\r\n </div>\r\n\r\n <div class=\"mtx-grid-column-menu-body\">\r\n <div class=\"mtx-grid-column-menu-list\" *ngIf=\"sortable\"\r\n cdkDropList (cdkDropListDropped)=\"_handleDroped($event)\">\r\n <div class=\"mtx-grid-column-menu-item\" *ngFor=\"let col of columns\"\r\n cdkDrag [cdkDragDisabled]=\"selectableChecked === 'show'? !col.show : col.hide\">\r\n <svg class=\"mtx-grid-icon mtx-grid-column-drag-handle-icon\" viewBox=\"0 0 24 24\"\r\n width=\"24px\" height=\"24px\" fill=\"currentColor\" focusable=\"false\">\r\n <path\r\n d=\"M7,19V17H9V19H7M11,19V17H13V19H11M15,19V17H17V19H15M7,15V13H9V15H7M11,15V13H13V15H11M15,15V13H17V15H15M7,11V9H9V11H7M11,11V9H13V11H11M15,11V9H17V11H15M7,7V5H9V7H7M11,7V5H13V7H11M15,7V5H17V7H15Z\">\r\n </path>\r\n </svg>\r\n <ng-template [ngTemplateOutlet]=\"checkboxList\"\r\n [ngTemplateOutletContext]=\"{ $implicit: col }\">\r\n </ng-template>\r\n </div>\r\n </div>\r\n\r\n <div class=\"mtx-grid-column-menu-list\" *ngIf=\"!sortable\">\r\n <div class=\"mtx-grid-column-menu-item\" *ngFor=\"let col of columns\">\r\n <ng-template [ngTemplateOutlet]=\"checkboxList\"\r\n [ngTemplateOutletContext]=\"{ $implicit: col }\">\r\n </ng-template>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"mtx-grid-column-menu-footer\" *ngIf=\"showFooter\">\r\n <ng-template [ngIf]=\"footerTemplate\" [ngIfElse]=\"defaultFooterTpl\">\r\n <ng-template [ngTemplateOutlet]=\"footerTemplate\"></ng-template>\r\n </ng-template>\r\n <ng-template #defaultFooterTpl>{{footerText}}</ng-template>\r\n </div>\r\n </div>\r\n</mat-menu>\r\n\r\n<ng-template #checkboxList let-col>\r\n <ng-container *ngIf=\"pinnable\">\r\n <button class=\"mtx-grid-column-pin-button\" mat-icon-button type=\"button\"\r\n [matMenuTriggerFor]=\"pinList\">\r\n <svg class=\"mtx-grid-icon mtx-grid-column-pin-icon\" *ngIf=\"col.pinned\"\r\n viewBox=\"0 0 24 24\" width=\"24px\" height=\"24px\" fill=\"currentColor\" focusable=\"false\">\r\n <path d=\"M16,12V4H17V2H7V4H8V12L6,14V16H11.2V22H12.8V16H18V14L16,12Z\" />\r\n </svg>\r\n <svg class=\"mtx-grid-icon mtx-grid-column-pin-off-icon\" *ngIf=\"!col.pinned\"\r\n viewBox=\"0 0 24 24\" width=\"24px\" height=\"24px\" fill=\"currentColor\" focusable=\"false\">\r\n <path\r\n d=\"M2,5.27L3.28,4L20,20.72L18.73,22L12.8,16.07V22H11.2V16H6V14L8,12V11.27L2,5.27M16,12L18,14V16H17.82L8,6.18V4H7V2H17V4H16V12Z\" />\r\n </svg>\r\n </button>\r\n <mat-menu #pinList=\"matMenu\" class=\"mtx-grid-column-pin-list\">\r\n <button class=\"mtx-grid-column-pin-option\" type=\"button\"\r\n *ngFor=\"let item of pinOptions\" mat-menu-item\r\n (click)=\"_handlePinSelect(col, item.value)\">\r\n <span class=\"mtx-grid-column-pin-option-placeholder\">\r\n <!-- eslint-disable-next-line @angular-eslint/template/eqeqeq -->\r\n <svg class=\"mtx-grid-icon mtx-grid-column-pin-check-icon\" *ngIf=\"col.pinned==item.value\"\r\n viewBox=\"0 0 24 24\" width=\"24px\" height=\"24px\" fill=\"currentColor\" focusable=\"false\">\r\n <path d=\"M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z\" />\r\n </svg>\r\n </span>\r\n <span class=\"mtx-grid-column-pin-option-text\">{{item.label | toObservable | async}}</span>\r\n </button>\r\n </mat-menu>\r\n </ng-container>\r\n\r\n <mat-checkbox class=\"mtx-grid-column-menu-item-label\" *ngIf=\"selectable\"\r\n [(ngModel)]=\"col[selectableChecked]\" [disabled]=\"col.disabled\"\r\n (change)=\"_handleChecked($event)\">\r\n {{col.header | toObservable | async}}\r\n </mat-checkbox>\r\n <span class=\"mtx-grid-column-menu-item-label\" *ngIf=\"!selectable\">\r\n {{col.header | toObservable | async}}\r\n </span>\r\n</ng-template>\r\n",
|
|
656
656
|
encapsulation: ViewEncapsulation.None,
|
|
657
657
|
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
658
658
|
styles: [".mtx-grid-column-menu .mat-menu-content{padding:0}.mtx-grid-column-menu-body{padding:8px 16px}.mtx-grid-column-menu-header,.mtx-grid-column-menu-footer{position:sticky;z-index:1;padding:8px 16px}.mtx-grid-column-menu-header{top:0}.mtx-grid-column-menu-footer{bottom:0}.mtx-grid-column-menu-list{display:block;max-width:100%}.mtx-grid-column-menu-list.cdk-drop-list-dragging .mtx-grid-column-menu-item:not(.cdk-drag-placeholder){transition:transform .25s cubic-bezier(0,0,.2,1)}.mtx-grid-column-menu-list.cdk-drop-list .mtx-grid-column-menu-item-label{padding:0 4px}.mtx-grid-column-menu-item{display:flex;flex-direction:row;align-items:center}.mtx-grid-column-menu-item.cdk-drag-disabled .cdk-drag-handle{opacity:.35;cursor:no-drop}.mtx-grid-column-menu-item .cdk-drag-handle{cursor:move}.mtx-grid-column-menu-item.cdk-drag-preview{box-shadow:0 3px 1px -2px #0003,0 2px 2px #00000024,0 1px 5px #0000001f}.mtx-grid-column-menu-item.cdk-drag-placeholder{opacity:0}.mtx-grid-column-menu-item.cdk-drag-animating{transition:transform .25s cubic-bezier(0,0,.2,1)}.mtx-grid-column-pin-button.mat-icon-button{width:32px;height:32px;line-height:32px}.mtx-grid-column-pin-option.mat-menu-item{display:flex;align-items:center;height:32px}.mtx-grid-column-pin-option-placeholder{display:inline-block;width:20px;height:20px;line-height:20px}.mtx-grid-column-pin-option-text{padding:0 8px}.mtx-grid-column-drag-handle-icon:hover{cursor:move}\n"]
|
package/fesm2015/mtxGrid.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mtxGrid.js","sources":["../../../projects/extensions/grid/grid.service.ts","../../../projects/extensions/grid/grid.component.ts","../../../projects/extensions/grid/cell.component.ts","../../../projects/extensions/grid/column-menu.component.ts","../../../projects/extensions/grid/expansion-toggle.directive.ts","../../../projects/extensions/grid/cell-selection.directive.ts","../../../projects/extensions/grid/column-resize/resize-strategy.ts","../../../projects/extensions/grid/column-resize/column-resize-directives/common.ts","../../../projects/extensions/grid/column-resize/column-resize-directives/column-resize.ts","../../../projects/extensions/grid/column-resize/column-resize-directives/column-resize-flex.ts","../../../projects/extensions/grid/column-resize/overlay-handle.ts","../../../projects/extensions/grid/column-resize/resizable-directives/common.ts","../../../projects/extensions/grid/column-resize/resizable-directives/resizable.ts","../../../projects/extensions/grid/column-resize/column-resize-module.ts","../../../projects/extensions/grid/grid.module.ts","../../../projects/extensions/grid/mtxGrid.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\nimport { MtxGridColumn } from './grid.interface';\n\n@Injectable()\nexport class MtxGridService {\n constructor() {}\n\n /**\n * Get cell value from column key e.g. `a.b.c`\n * @param rowData Row data\n * @param colDef Column definition\n */\n getCellValue(rowData: any, colDef: MtxGridColumn): string {\n const keyArr = colDef.field ? colDef.field.split('.') : [];\n\n let tmp: any = '';\n\n keyArr.forEach((key: string, i: number) => {\n if (i === 0) {\n tmp = rowData[key];\n } else {\n tmp = tmp && tmp[key];\n }\n });\n return tmp;\n }\n\n /**\n * Get all data of a col\n * @param data All data\n * @param colDef Column definition\n */\n getColData(data: any[], colDef: MtxGridColumn): any[] {\n return data.map((rowData: any) => this.getCellValue(rowData, colDef));\n }\n\n /**\n * Remove white spaces in a string and convert string to array\n * @param str string\n */\n str2arr(str: string): string[] {\n return str.replace(/[\\r\\n\\s]/g, '').split(',');\n }\n}\n","import {\n Component,\n Input,\n Output,\n EventEmitter,\n ViewEncapsulation,\n ChangeDetectionStrategy,\n ViewChild,\n OnChanges,\n TemplateRef,\n TrackByFunction,\n OnDestroy,\n AfterViewInit,\n ChangeDetectorRef,\n ElementRef,\n SimpleChanges,\n QueryList,\n ContentChildren,\n} from '@angular/core';\nimport { trigger, state, style, transition, animate } from '@angular/animations';\nimport { SelectionModel } from '@angular/cdk/collections';\nimport {\n MatFooterRow,\n MatFooterRowDef,\n MatHeaderRowDef,\n MatRowDef,\n MatTable,\n MatTableDataSource,\n} from '@angular/material/table';\nimport { MatPaginator, PageEvent } from '@angular/material/paginator';\nimport { Sort, MatSort, SortDirection } from '@angular/material/sort';\nimport { ThemePalette } from '@angular/material/core';\n\nimport {\n MtxGridColumn,\n MtxGridCellTemplate,\n MtxGridRowSelectionFormatter,\n MtxGridRowClassFormatter,\n MtxGridColumnMenu,\n MtxGridButtonType,\n MtxGridColumnPinOption,\n} from './grid.interface';\nimport { MtxGridCellSelectionDirective } from './cell-selection.directive';\nimport { MtxGridExpansionToggleDirective } from './expansion-toggle.directive';\nimport { MtxGridService } from './grid.service';\n\n@Component({\n selector: 'mtx-grid',\n exportAs: 'mtxGrid',\n templateUrl: './grid.component.html',\n styleUrls: ['./grid.component.scss'],\n host: {\n class: 'mtx-grid',\n },\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n animations: [\n trigger('expansion', [\n state('collapsed, void', style({ height: '0', minHeight: '0', visibility: 'hidden' })),\n state('expanded', style({ height: '*', visibility: 'visible' })),\n transition('expanded <=> collapsed', animate('225ms cubic-bezier(0.4, 0.0, 0.2, 1)')),\n transition('expanded <=> void', animate('225ms cubic-bezier(0.4, 0.0, 0.2, 1)')),\n ]),\n ],\n})\nexport class MtxGridComponent implements OnChanges, AfterViewInit, OnDestroy {\n @ViewChild(MatTable) table!: MatTable<any>;\n @ViewChild(MatPaginator) paginator!: MatPaginator;\n @ViewChild(MatSort) sort!: MatSort;\n @ContentChildren(MatRowDef) rowDefs!: QueryList<MatRowDef<any>>;\n @ContentChildren(MatHeaderRowDef) headerRowDefs!: QueryList<MatHeaderRowDef>;\n @ContentChildren(MatFooterRow) footerRowDefs!: QueryList<MatFooterRowDef>;\n @ViewChild('columnMenu') columnMenu!: MtxGridColumnMenu;\n @ViewChild('tableContainer') tableContainer!: ElementRef<HTMLDivElement>;\n\n dataSource = new MatTableDataSource();\n\n @Input() displayedColumns: string[] = [];\n @Input() columns: MtxGridColumn[] = [];\n @Input() data: any[] = [];\n @Input() length = 0;\n @Input() loading = false;\n\n @Input() trackBy!: TrackByFunction<any>;\n\n @Input() columnResizable = false;\n\n /** Placeholder for the empty value (`null`, `''`, `[]`) */\n @Input() emptyValuePlaceholder: string = '--';\n\n // ===== Page =====\n\n @Input() pageOnFront = true;\n @Input() showPaginator = true;\n @Input() pageDisabled = false;\n @Input() showFirstLastButtons = true;\n @Input() pageIndex = 0;\n @Input() pageSize = 10;\n @Input() pageSizeOptions = [10, 50, 100];\n @Input() hidePageSize = false;\n @Output() page = new EventEmitter<PageEvent>();\n\n @Input() paginationTemplate!: TemplateRef<any>;\n\n // ===== Sort =====\n\n @Input() sortOnFront = true;\n @Input() sortActive!: string;\n @Input() sortDirection!: SortDirection;\n @Input() sortDisableClear: boolean = false;\n @Input() sortDisabled: boolean = false;\n @Input() sortStart: 'asc' | 'desc' = 'asc';\n @Output() sortChange = new EventEmitter<Sort>();\n\n // ===== Row =====\n\n @Input() rowHover = false;\n @Input() rowStriped = false;\n @Output() rowClick = new EventEmitter<any>();\n\n // ===== Expandable Row =====\n\n expansionRowStates: any[] = [];\n\n @Input() expandable = false;\n @Input() expansionTemplate!: TemplateRef<any>;\n @Output() expansionChange = new EventEmitter<any>();\n\n // ===== Row Selection =====\n\n /** Whether support multiple row/cell selection. */\n @Input() multiSelectable = true;\n\n @Input() multiSelectionWithClick = false;\n\n rowSelection: SelectionModel<any> = new SelectionModel<any>(true, []);\n\n @Input() rowSelected: any[] = [];\n @Input() rowSelectable = false;\n @Input() hideRowSelectionCheckbox = false;\n @Input() rowSelectionFormatter: MtxGridRowSelectionFormatter = {};\n @Input() rowClassFormatter!: MtxGridRowClassFormatter;\n @Output() rowSelectionChange = new EventEmitter<any[]>();\n\n // ===== Cell Selection =====\n\n cellSelection: any[] = [];\n\n @Input() cellSelectable = true;\n @Output() cellSelectionChange = new EventEmitter<any[]>();\n\n private _selectedCell: MtxGridCellSelectionDirective | undefined;\n\n // ===== Toolbar =====\n\n @Input() showToolbar = false;\n @Input() toolbarTitle = '';\n @Input() toolbarTemplate!: TemplateRef<any>;\n\n // ===== Column Menu =====\n\n @Input() showColumnMenuButton = true;\n @Input() columnMenuButtonText = '';\n @Input() columnMenuButtonType: MtxGridButtonType = 'stroked';\n @Input() columnMenuButtonColor: ThemePalette;\n @Input() columnMenuButtonClass = '';\n @Input() columnMenuButtonIcon = '';\n\n @Input() columnHideable = true;\n @Input() columnHideableChecked: 'show' | 'hide' = 'show';\n @Input() columnSortable = true;\n @Input() columnPinnable = true;\n @Output() columnChange = new EventEmitter<MtxGridColumn[]>();\n\n @Input() showColumnMenuHeader = false;\n @Input() columnMenuHeaderText = 'Columns Header';\n @Input() columnMenuHeaderTemplate!: TemplateRef<any>;\n @Input() showColumnMenuFooter = false;\n @Input() columnMenuFooterText = 'Columns Footer';\n @Input() columnMenuFooterTemplate!: TemplateRef<any>;\n\n @Input() columnPinOptions: MtxGridColumnPinOption[] = [];\n\n // ===== No Result =====\n\n @Input() noResultText = 'No records found';\n @Input() noResultTemplate!: TemplateRef<any>;\n\n get _hasNoResult() {\n return (!this.data || this.data.length === 0) && !this.loading;\n }\n\n // ===== Cell Templates =====\n\n @Input() headerTemplate: TemplateRef<any> | MtxGridCellTemplate | any;\n @Input() headerExtraTemplate: TemplateRef<any> | MtxGridCellTemplate | any;\n @Input() cellTemplate: TemplateRef<any> | MtxGridCellTemplate | any;\n\n // ===== Row Templates =====\n\n @Input() useContentRowTemplate = false;\n // TODO: It can't use together with `useContentRowTemplate`\n @Input() useContentHeaderRowTemplate = false;\n // TODO: It's not working\n @Input() useContentFooterRowTemplate = false;\n\n // ===== Summary =====\n\n @Input() showSummary = false;\n @Input() summaryTemplate: TemplateRef<any> | MtxGridCellTemplate | any;\n\n // TODO: Summary display conditions\n get _whetherShowSummary() {\n return this.showSummary;\n }\n\n // ===== Side Bar =====\n\n @Input() showSidebar = false;\n @Input() sidebarTemplate!: TemplateRef<any>;\n\n // ===== Status Bar =====\n\n @Input() showStatusbar = false;\n @Input() statusbarTemplate!: TemplateRef<any>;\n\n constructor(\n private _dataGridSrv: MtxGridService,\n private _changeDetectorRef: ChangeDetectorRef\n ) {}\n\n detectChanges() {\n this._changeDetectorRef.detectChanges();\n }\n\n _isTemplateRef(obj: any) {\n return obj instanceof TemplateRef;\n }\n\n _getColData(data: any[], colDef: MtxGridColumn) {\n return this._dataGridSrv.getColData(data, colDef);\n }\n\n _getRowClassList(rowData: any, index: number) {\n const classList: any = {\n 'selected': this.rowSelection.isSelected(rowData),\n 'mat-row-odd': index % 2,\n };\n if (this.rowClassFormatter) {\n for (const key of Object.keys(this.rowClassFormatter)) {\n classList[key] = this.rowClassFormatter[key](rowData, index);\n }\n }\n return classList;\n }\n\n // Waiting for async data\n ngOnChanges(changes: SimpleChanges) {\n this._countPinnedPosition();\n\n this.displayedColumns = this.columns.filter(item => !item.hide).map(item => item.field);\n\n if (this.showColumnMenuButton) {\n this.columns.forEach(item => {\n if (this.columnHideableChecked === 'show') {\n item.show = !item.hide;\n } else {\n item.hide = !!item.hide;\n }\n });\n }\n\n if (this.rowSelectable && !this.hideRowSelectionCheckbox) {\n this.displayedColumns.unshift('MtxGridCheckboxColumnDef');\n }\n\n // We should copy each item of data for expansion data\n if (this.expandable) {\n this.expansionRowStates = []; // reset\n\n this.data?.forEach(_ => {\n this.expansionRowStates.push({ expanded: false });\n });\n }\n\n if (this.rowSelectable) {\n this.rowSelection = new SelectionModel<any>(this.multiSelectable, this.rowSelected);\n }\n\n this.dataSource = new MatTableDataSource(this.data);\n\n this.dataSource.paginator = this.pageOnFront ? this.paginator : null;\n this.dataSource.sort = this.sortOnFront ? this.sort : null;\n\n // Only scroll top with data change\n if (changes.data) {\n this.scrollTop(0);\n }\n }\n\n ngAfterViewInit() {\n if (this.pageOnFront) {\n this.dataSource.paginator = this.paginator;\n }\n\n if (this.sortOnFront) {\n this.dataSource.sort = this.sort;\n }\n\n if (this.rowDefs?.length > 0 && this.useContentRowTemplate) {\n this.rowDefs.forEach(rowDef => this.table.addRowDef(rowDef));\n }\n if (this.headerRowDefs?.length > 0 && this.useContentHeaderRowTemplate) {\n this.headerRowDefs.forEach(headerRowDef => this.table.addHeaderRowDef(headerRowDef));\n }\n if (this.footerRowDefs?.length > 0 && this.useContentFooterRowTemplate) {\n this.footerRowDefs.forEach(footerRowDef => this.table.addFooterRowDef(footerRowDef));\n }\n }\n\n ngOnDestroy() {}\n\n _countPinnedPosition() {\n const count = (acc: number, cur: MtxGridColumn) => acc + parseFloat(cur.width || '80px');\n\n const pinnedLeftCols = this.columns.filter(col => col.pinned && col.pinned === 'left');\n pinnedLeftCols.forEach((item, idx) => {\n item.left = pinnedLeftCols.slice(0, idx).reduce(count, 0) + 'px';\n });\n\n const pinnedRightCols = this.columns\n .filter(col => col.pinned && col.pinned === 'right')\n .reverse();\n pinnedRightCols.forEach((item, idx) => {\n item.right = pinnedRightCols.slice(0, idx).reduce(count, 0) + 'px';\n });\n }\n\n _getIndex(index: number, dataIndex: number) {\n return typeof index === 'undefined' ? dataIndex : index;\n }\n\n _onSortChange(sort: Sort) {\n this.sortChange.emit(sort);\n }\n\n /** Expansion change event */\n _onExpansionChange(\n expansionRef: MtxGridExpansionToggleDirective,\n rowData: any,\n column: any,\n index: number\n ) {\n this.expansionChange.emit({ expanded: expansionRef.expanded, data: rowData, index, column });\n }\n\n /** Cell select event */\n _selectCell(cellRef: MtxGridCellSelectionDirective, rowData: any, colDef: any): void {\n // If not the same cell\n if (this._selectedCell !== cellRef) {\n const colValue = this._dataGridSrv.getCellValue(rowData, colDef);\n this.cellSelection = []; // reset\n this.cellSelection.push({ cellData: colValue, rowData, colDef });\n\n this.cellSelectionChange.emit(this.cellSelection);\n\n if (this._selectedCell) {\n this._selectedCell.deselect(); // the selectedCell will be undefined\n }\n }\n\n this._selectedCell = cellRef.selected ? cellRef : undefined;\n }\n\n /** Row select event */\n _selectRow(event: MouseEvent, rowData: any, index: number) {\n if (\n this.rowSelectable &&\n !this.rowSelectionFormatter.disabled?.(rowData, index) &&\n !this.rowSelectionFormatter.hideCheckbox?.(rowData, index)\n ) {\n // metaKey -> command key\n if (!this.multiSelectionWithClick && !event.ctrlKey && !event.metaKey) {\n this.rowSelection.clear();\n }\n\n this._toggleNormalCheckbox(rowData);\n }\n\n this.rowClick.emit({ rowData, index });\n }\n\n /** Whether the number of selected elements matches the total number of rows. */\n _isAllSelected() {\n const numSelected = this.rowSelection.selected.length;\n const numRows = this.dataSource.data.filter(\n (row, index) => !this.rowSelectionFormatter.disabled?.(row, index)\n ).length;\n return numSelected === numRows;\n }\n\n /** Select all rows if they are not all selected; otherwise clear selection. */\n _toggleMasterCheckbox() {\n this._isAllSelected()\n ? this.rowSelection.clear()\n : this.dataSource.data.forEach((row, index) => {\n if (!this.rowSelectionFormatter.disabled?.(row, index)) {\n this.rowSelection.select(row);\n }\n });\n this.rowSelectionChange.emit(this.rowSelection.selected);\n }\n\n /** Select normal row */\n _toggleNormalCheckbox(row: any) {\n this.rowSelection.toggle(row);\n this.rowSelectionChange.emit(this.rowSelection.selected);\n }\n\n /** Column change event */\n _onColumnChange(columns: any[]) {\n this.columnChange.emit(columns);\n\n this.displayedColumns = Object.assign([], this.getDisplayedColumnFields(columns));\n\n if (this.rowSelectable && !this.hideRowSelectionCheckbox) {\n this.displayedColumns.unshift('MtxGridCheckboxColumnDef');\n }\n }\n\n getDisplayedColumnFields(columns: MtxGridColumn[]): string[] {\n const fields = columns\n .filter(item => (this.columnHideableChecked === 'show' ? item.show : !item.hide))\n .map(item => item.field);\n return fields;\n }\n\n /** Customize expansion event */\n toggleExpansion(index: number) {\n if (!this.expandable) {\n throw new Error('The `expandable` should be set true.');\n }\n this.expansionRowStates[index].expanded = !this.expansionRowStates[index].expanded;\n return this.expansionRowStates[index].expanded;\n }\n\n /** Scroll to top when turn to the next page. */\n _onPage(e: PageEvent) {\n if (this.pageOnFront) {\n this.scrollTop(0);\n }\n this.page.emit(e);\n }\n\n scrollTop(value?: number): number | void {\n if (value == null) {\n return this.tableContainer?.nativeElement.scrollTop;\n }\n if (this.tableContainer && !this.loading) {\n this.tableContainer.nativeElement.scrollTop = value;\n }\n }\n\n scrollLeft(value?: number): number | void {\n if (value == null) {\n return this.tableContainer?.nativeElement.scrollLeft;\n }\n if (this.tableContainer && !this.loading) {\n this.tableContainer.nativeElement.scrollLeft = value;\n }\n }\n}\n","import { Component, Input, ViewEncapsulation } from '@angular/core';\nimport { MtxDialog } from '@ng-matero/extensions/dialog';\n\nimport { MtxGridColumn, MtxGridColumnButton } from './grid.interface';\nimport { MtxGridService } from './grid.service';\nimport PhotoViewer from 'photoviewer';\n\n@Component({\n selector: 'mtx-grid-cell',\n exportAs: 'mtxGridCell',\n templateUrl: './cell.component.html',\n styleUrls: ['./cell.component.scss'],\n encapsulation: ViewEncapsulation.None,\n})\nexport class MtxGridCellComponent {\n /** Row data */\n @Input() rowData: any = {};\n\n /** Column definition */\n @Input() colDef!: MtxGridColumn;\n\n /** Table data */\n @Input() data: any[] = [];\n\n /** Whether show summary */\n @Input() summary = false;\n\n /** Placeholder for the empty value (`null`, `''`, `[]`) */\n @Input() placeholder: string = '--';\n\n get _colValue() {\n return this._dataGridSrv.getCellValue(this.rowData, this.colDef);\n }\n\n _isEmptyValue(value: any) {\n return value == null || value.toString() === '';\n }\n\n _isContainHTML(value: string) {\n return /<\\/?[a-z][\\s\\S]*>/i.test(value);\n }\n\n _getText(value: any) {\n return value === undefined ? '' : this._isEmptyValue(value) ? this.placeholder : value;\n }\n\n _getTooltip(value: any) {\n return this._isEmptyValue(value) ? '' : value;\n }\n\n _getFormatterTooltip(value: any) {\n return this._isContainHTML(value) || this._isEmptyValue(value) ? '' : value;\n }\n\n _formatSummary(data: any[], colDef: MtxGridColumn) {\n if (typeof colDef.summary === 'string') {\n return colDef.summary;\n } else if (typeof colDef.summary === 'function') {\n return (colDef.summary as (data: any[], colDef?: MtxGridColumn) => void)(\n this._dataGridSrv.getColData(data, colDef),\n colDef\n );\n }\n }\n\n constructor(private _dialog: MtxDialog, private _dataGridSrv: MtxGridService) {}\n\n _handleActionClick(event: MouseEvent, btn: MtxGridColumnButton, rowData: any) {\n event.preventDefault();\n event.stopPropagation();\n\n if (btn.pop) {\n this._dialog.open({\n title: btn.popTitle,\n description: btn.popDescription,\n buttons: [\n {\n color: btn.popOkColor || 'primary',\n text: btn.popOkText || 'OK',\n onClick: () => btn.click?.(rowData) || {},\n },\n {\n color: btn.popCloseColor,\n text: btn.popCloseText || 'CLOSE',\n onClick: () => {},\n },\n ],\n });\n } else {\n btn.click?.(rowData);\n }\n }\n\n /** Preview enlarged image */\n _handleImagePreview(urlStr: string) {\n const imgs: PhotoViewer.Img[] = [];\n\n this._dataGridSrv.str2arr(urlStr).forEach((url, index) => {\n imgs.push({ title: index + 1 + '', src: url });\n });\n\n const footerToolbar =\n imgs.length > 1\n ? ['zoomIn', 'zoomOut', 'prev', 'next', 'rotateRight', 'rotateLeft', 'actualSize']\n : ['zoomIn', 'zoomOut', 'rotateRight', 'rotateLeft', 'actualSize'];\n\n const options: PhotoViewer.Options = {\n title: imgs.length > 1,\n footerToolbar,\n };\n\n const photoviewer = new PhotoViewer(imgs, options);\n }\n}\n","import {\n Component,\n Input,\n ViewEncapsulation,\n ChangeDetectionStrategy,\n Output,\n EventEmitter,\n TemplateRef,\n ViewChild,\n} from '@angular/core';\nimport { CdkDragDrop, moveItemInArray } from '@angular/cdk/drag-drop';\nimport { MatCheckboxChange } from '@angular/material/checkbox';\nimport { MatMenu, MatMenuTrigger } from '@angular/material/menu';\nimport { ThemePalette } from '@angular/material/core';\nimport {\n MtxGridButtonType,\n MtxGridColumn,\n MtxGridColumnPinOption,\n MtxGridColumnPinValue,\n} from './grid.interface';\n\n@Component({\n selector: 'mtx-grid-column-menu',\n exportAs: 'mtxGridColumnMenu',\n templateUrl: './column-menu.component.html',\n styleUrls: ['./column-menu.component.scss'],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class MtxGridColumnMenuComponent {\n @ViewChild('menu', { static: true }) menuPanel!: MatMenu;\n @ViewChild(MatMenuTrigger) menuTrigger!: MatMenuTrigger;\n\n @Input() columns: MtxGridColumn[] = [];\n @Input() selectable = true;\n @Input() selectableChecked: 'show' | 'hide' = 'show';\n @Input() sortable = true;\n @Input() pinnable = true;\n\n @Input()\n get buttonText() {\n const defaultText = `Columns ${this.selectableChecked === 'show' ? 'Shown' : 'Hidden'}`;\n return this._buttonText ? this._buttonText : defaultText;\n }\n set buttonText(value: string) {\n this._buttonText = value;\n }\n private _buttonText = '';\n\n @Input() buttonType: MtxGridButtonType = 'stroked';\n @Input() buttonColor: ThemePalette;\n @Input() buttonClass = '';\n @Input() buttonIcon = '';\n\n @Input() showHeader = false;\n @Input() headerText = 'Columns Header';\n @Input() headerTemplate!: TemplateRef<any>;\n @Input() showFooter = false;\n @Input() footerText = 'Columns Footer';\n @Input() footerTemplate!: TemplateRef<any>;\n\n @Output() columnChange = new EventEmitter<MtxGridColumn[]>();\n\n @Input()\n get pinOptions() {\n return this._pinOptions;\n }\n set pinOptions(value: MtxGridColumnPinOption[]) {\n if (value.length > 0) {\n this._pinOptions = value;\n }\n }\n private _pinOptions: MtxGridColumnPinOption[] = [\n { label: 'Pin Left', value: 'left' },\n { label: 'Pin Right', value: 'right' },\n { label: 'No Pin', value: null },\n ];\n\n _handleDroped(e: CdkDragDrop<string[]>) {\n moveItemInArray(this.columns, e.previousIndex, e.currentIndex);\n this.columnChange.emit(this.columns);\n }\n\n _handleChecked(e: MatCheckboxChange) {\n this.columnChange.emit(this.columns);\n }\n\n _handlePinSelect(col: MtxGridColumn, val: MtxGridColumnPinValue) {\n if (col.pinned != val) {\n col.pinned = val;\n this.columnChange.emit(this.columns);\n }\n }\n}\n","import {\n Directive,\n EventEmitter,\n HostBinding,\n HostListener,\n Input,\n Output,\n TemplateRef,\n} from '@angular/core';\n\n@Directive({\n selector: '[mtx-grid-expansion-toggle]',\n})\nexport class MtxGridExpansionToggleDirective {\n private _opened = false;\n private _row: any;\n private _tplRef!: TemplateRef<any>;\n\n @Input()\n get opened() {\n return this._opened;\n }\n set opened(newValue: boolean) {\n this._opened = newValue;\n this.openedChange.emit(newValue);\n }\n @Output() openedChange = new EventEmitter<boolean>();\n\n @HostBinding('class.expanded')\n get expanded(): boolean {\n return this._opened;\n }\n\n @Input()\n set expandableRow(value: any) {\n if (value !== this._row) {\n this._row = value;\n }\n }\n\n @Input('expansionRowTpl')\n set template(value: TemplateRef<any>) {\n if (value !== this._tplRef) {\n this._tplRef = value;\n }\n }\n\n @Output() toggleChange = new EventEmitter<MtxGridExpansionToggleDirective>();\n\n constructor() {}\n\n @HostListener('click', ['$event'])\n onClick(event: MouseEvent): void {\n event.preventDefault();\n event.stopPropagation();\n this.toggle();\n }\n\n toggle(): void {\n this.opened = !this.opened;\n this.toggleChange.emit(this);\n }\n}\n","import { Directive, EventEmitter, HostBinding, HostListener, Input, Output } from '@angular/core';\n\nimport { MtxGridComponent } from './grid.component';\n\n@Directive({\n selector: '[mtx-grid-selectable-cell]',\n})\nexport class MtxGridCellSelectionDirective {\n private _selected = false;\n private _rowData: any;\n\n shiftKeyPressed = false;\n ctrlKeyPressed = false;\n\n @HostBinding('class.selected')\n get selected(): boolean {\n return this._selected;\n }\n\n @Input()\n set matSelectableRowData(value: any) {\n if (value !== this._rowData) {\n this._rowData = value;\n }\n }\n\n @Output() cellSelectionChange = new EventEmitter<MtxGridCellSelectionDirective>();\n\n constructor(private _dataGrid: MtxGridComponent) {}\n\n @HostListener('click', ['$event'])\n onClick(event: MouseEvent): void {\n this.ctrlKeyPressed = event.ctrlKey;\n this.shiftKeyPressed = event.shiftKey;\n\n if (this._dataGrid.cellSelectable) {\n this.select();\n }\n }\n\n select(): void {\n this._selected = true;\n this.cellSelectionChange.emit(this);\n }\n\n deselect(): void {\n this._selected = false;\n this.cellSelectionChange.emit(this);\n }\n\n toggle(): void {\n this._selected = !this._selected;\n this.cellSelectionChange.emit(this);\n }\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport { Inject, Injectable, Provider } from '@angular/core';\nimport { DOCUMENT } from '@angular/common';\nimport { CdkTable, _CoalescedStyleScheduler, _COALESCED_STYLE_SCHEDULER } from '@angular/cdk/table';\n\nimport {\n ColumnResize,\n ResizeStrategy,\n CdkFlexTableResizeStrategy,\n TABLE_LAYOUT_FIXED_RESIZE_STRATEGY_PROVIDER,\n} from '@ng-matero/extensions/column-resize';\n\nexport { TABLE_LAYOUT_FIXED_RESIZE_STRATEGY_PROVIDER };\n\n/**\n * Overrides CdkFlexTableResizeStrategy to match mat-column elements.\n */\n@Injectable()\nexport class MatFlexTableResizeStrategy extends CdkFlexTableResizeStrategy {\n constructor(\n columnResize: ColumnResize,\n @Inject(_COALESCED_STYLE_SCHEDULER) styleScheduler: _CoalescedStyleScheduler,\n table: CdkTable<unknown>,\n @Inject(DOCUMENT) document: any\n ) {\n super(columnResize, styleScheduler, table, document);\n }\n\n protected getColumnCssClass(cssFriendlyColumnName: string): string {\n return `mat-column-${cssFriendlyColumnName}`;\n }\n}\n\nexport const FLEX_RESIZE_STRATEGY_PROVIDER: Provider = {\n provide: ResizeStrategy,\n useClass: MatFlexTableResizeStrategy,\n};\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport { Provider } from '@angular/core';\n\nimport {\n ColumnResize,\n ColumnResizeNotifier,\n ColumnResizeNotifierSource,\n HeaderRowEventDispatcher,\n} from '@ng-matero/extensions/column-resize';\n\nimport {\n TABLE_LAYOUT_FIXED_RESIZE_STRATEGY_PROVIDER,\n FLEX_RESIZE_STRATEGY_PROVIDER,\n} from '../resize-strategy';\n\nconst PROVIDERS: Provider[] = [\n ColumnResizeNotifier,\n HeaderRowEventDispatcher,\n ColumnResizeNotifierSource,\n];\nexport const TABLE_PROVIDERS: Provider[] = [\n ...PROVIDERS,\n TABLE_LAYOUT_FIXED_RESIZE_STRATEGY_PROVIDER,\n];\nexport const FLEX_PROVIDERS: Provider[] = [...PROVIDERS, FLEX_RESIZE_STRATEGY_PROVIDER];\n\nexport const TABLE_HOST_BINDINGS = {\n class: 'mat-column-resize-table',\n};\nexport const FLEX_HOST_BINDINGS = {\n class: 'mat-column-resize-flex',\n};\n\nexport abstract class AbstractMatColumnResize extends ColumnResize {\n getTableHeight() {\n const table = this.elementRef.nativeElement;\n const tableParent = table!.parentNode as HTMLElement;\n const isTableContainer = tableParent!.classList.contains('mat-table-container');\n return isTableContainer ? tableParent!.offsetHeight : table!.offsetHeight;\n }\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport { Directive, ElementRef, NgZone } from '@angular/core';\nimport {\n ColumnResize,\n ColumnResizeNotifier,\n ColumnResizeNotifierSource,\n HeaderRowEventDispatcher,\n} from '@ng-matero/extensions/column-resize';\n\nimport { AbstractMatColumnResize, TABLE_HOST_BINDINGS, TABLE_PROVIDERS } from './common';\n\n/**\n * Explicitly enables column resizing for a table-based mat-table.\n * Individual columns must be annotated specifically.\n */\n@Directive({\n selector: 'table[mat-table][columnResize]',\n host: TABLE_HOST_BINDINGS,\n providers: [...TABLE_PROVIDERS, { provide: ColumnResize, useExisting: MatColumnResize }],\n})\nexport class MatColumnResize extends AbstractMatColumnResize {\n constructor(\n readonly columnResizeNotifier: ColumnResizeNotifier,\n readonly elementRef: ElementRef<HTMLElement>,\n protected readonly eventDispatcher: HeaderRowEventDispatcher,\n protected readonly ngZone: NgZone,\n protected readonly notifier: ColumnResizeNotifierSource\n ) {\n super();\n }\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport { Directive, ElementRef, NgZone } from '@angular/core';\nimport {\n ColumnResize,\n ColumnResizeNotifier,\n ColumnResizeNotifierSource,\n HeaderRowEventDispatcher,\n} from '@ng-matero/extensions/column-resize';\n\nimport { AbstractMatColumnResize, FLEX_HOST_BINDINGS, FLEX_PROVIDERS } from './common';\n\n/**\n * Explicitly enables column resizing for a flexbox-based mat-table.\n * Individual columns must be annotated specifically.\n */\n@Directive({\n selector: 'mat-table[columnResize]',\n host: FLEX_HOST_BINDINGS,\n providers: [...FLEX_PROVIDERS, { provide: ColumnResize, useExisting: MatColumnResizeFlex }],\n})\nexport class MatColumnResizeFlex extends AbstractMatColumnResize {\n constructor(\n readonly columnResizeNotifier: ColumnResizeNotifier,\n readonly elementRef: ElementRef<HTMLElement>,\n protected readonly eventDispatcher: HeaderRowEventDispatcher,\n protected readonly ngZone: NgZone,\n protected readonly notifier: ColumnResizeNotifierSource\n ) {\n super();\n }\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n Inject,\n NgZone,\n ViewEncapsulation,\n} from '@angular/core';\nimport { DOCUMENT } from '@angular/common';\nimport {\n CdkColumnDef,\n _CoalescedStyleScheduler,\n _COALESCED_STYLE_SCHEDULER,\n} from '@angular/cdk/table';\nimport { Directionality } from '@angular/cdk/bidi';\nimport {\n ColumnResize,\n ColumnResizeNotifierSource,\n HeaderRowEventDispatcher,\n ResizeOverlayHandle,\n ResizeRef,\n} from '@ng-matero/extensions/column-resize';\n\nimport { AbstractMatColumnResize } from './column-resize-directives/common';\n\n/**\n * Component shown over the edge of a resizable column that is responsible\n * for handling column resize mouse events and displaying a vertical line along the column edge.\n */\n@Component({\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: { class: 'mat-column-resize-overlay-thumb' },\n template: '',\n})\nexport class MatColumnResizeOverlayHandle extends ResizeOverlayHandle {\n protected readonly document: Document;\n\n constructor(\n protected readonly columnDef: CdkColumnDef,\n protected readonly columnResize: ColumnResize,\n protected readonly directionality: Directionality,\n protected readonly elementRef: ElementRef,\n protected readonly eventDispatcher: HeaderRowEventDispatcher,\n protected readonly ngZone: NgZone,\n protected readonly resizeNotifier: ColumnResizeNotifierSource,\n protected readonly resizeRef: ResizeRef,\n @Inject(_COALESCED_STYLE_SCHEDULER)\n protected readonly styleScheduler: _CoalescedStyleScheduler,\n @Inject(DOCUMENT) document: any\n ) {\n super();\n this.document = document;\n }\n\n protected updateResizeActive(active: boolean): void {\n super.updateResizeActive(active);\n\n this.resizeRef.overlayRef.updateSize({\n height: active\n ? (this.columnResize as AbstractMatColumnResize).getTableHeight()\n : this.resizeRef.origin.nativeElement!.offsetHeight,\n });\n }\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport { Type } from '@angular/core';\nimport { Resizable } from '@ng-matero/extensions/column-resize';\nimport { MatColumnResizeOverlayHandle } from '../overlay-handle';\n\nexport abstract class AbstractMatResizable extends Resizable<MatColumnResizeOverlayHandle> {\n minWidthPxInternal = 32;\n\n protected getInlineHandleCssClassName(): string {\n return 'mat-resizable-handle';\n }\n\n protected getOverlayHandleComponentType(): Type<MatColumnResizeOverlayHandle> {\n return MatColumnResizeOverlayHandle;\n }\n}\n\nexport const RESIZABLE_HOST_BINDINGS = {\n class: 'mat-resizable',\n};\n\nexport const RESIZABLE_INPUTS = [\n 'minWidthPx: matResizableMinWidthPx',\n 'maxWidthPx: matResizableMaxWidthPx',\n];\n","import {\n Directive,\n ElementRef,\n Inject,\n Injector,\n NgZone,\n ViewContainerRef,\n ChangeDetectorRef,\n Input,\n HostBinding,\n} from '@angular/core';\nimport { DOCUMENT } from '@angular/common';\nimport { Directionality } from '@angular/cdk/bidi';\nimport { Overlay } from '@angular/cdk/overlay';\nimport {\n CdkColumnDef,\n _CoalescedStyleScheduler,\n _COALESCED_STYLE_SCHEDULER,\n} from '@angular/cdk/table';\nimport {\n ColumnResize,\n ColumnResizeNotifierSource,\n HeaderRowEventDispatcher,\n ResizeStrategy,\n} from '@ng-matero/extensions/column-resize';\n\nimport { AbstractMatResizable, RESIZABLE_HOST_BINDINGS, RESIZABLE_INPUTS } from './common';\n\n/**\n * Explicitly enables column resizing for a mat-header-cell.\n */\n@Directive({\n selector: 'mat-header-cell[resizable], th[mat-header-cell][resizable]',\n inputs: RESIZABLE_INPUTS,\n})\nexport class MatResizable extends AbstractMatResizable {\n isResizable = true;\n\n @HostBinding('class') get hasResizableClass() {\n return this.isResizable ? RESIZABLE_HOST_BINDINGS.class : '';\n }\n\n @Input()\n get resizable() {\n return this.isResizable;\n }\n set resizable(newValue: any) {\n this.isResizable = newValue == null || newValue === '' || newValue;\n }\n\n protected readonly document: Document;\n\n constructor(\n protected readonly columnDef: CdkColumnDef,\n protected readonly columnResize: ColumnResize,\n protected readonly directionality: Directionality,\n @Inject(DOCUMENT) document: any,\n protected readonly elementRef: ElementRef,\n protected readonly eventDispatcher: HeaderRowEventDispatcher,\n protected readonly injector: Injector,\n protected readonly ngZone: NgZone,\n protected readonly overlay: Overlay,\n protected readonly resizeNotifier: ColumnResizeNotifierSource,\n protected readonly resizeStrategy: ResizeStrategy,\n @Inject(_COALESCED_STYLE_SCHEDULER)\n protected readonly styleScheduler: _CoalescedStyleScheduler,\n protected readonly viewContainerRef: ViewContainerRef,\n protected readonly changeDetectorRef: ChangeDetectorRef\n ) {\n super();\n this.document = document;\n }\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport { NgModule } from '@angular/core';\nimport { OverlayModule } from '@angular/cdk/overlay';\n\nimport { MatColumnResize } from './column-resize-directives/column-resize';\nimport { MatColumnResizeFlex } from './column-resize-directives/column-resize-flex';\nimport { MatResizable } from './resizable-directives/resizable';\nimport { MatColumnResizeOverlayHandle } from './overlay-handle';\n\nconst ENTRY_COMMON_COMPONENTS = [MatColumnResizeOverlayHandle];\n\n@NgModule({\n declarations: ENTRY_COMMON_COMPONENTS,\n exports: ENTRY_COMMON_COMPONENTS,\n entryComponents: ENTRY_COMMON_COMPONENTS,\n})\nexport class MatColumnResizeCommonModule {}\n\nconst IMPORTS = [OverlayModule, MatColumnResizeCommonModule];\n\n@NgModule({\n imports: IMPORTS,\n declarations: [MatColumnResize, MatColumnResizeFlex, MatResizable],\n exports: [MatColumnResize, MatColumnResizeFlex, MatResizable],\n})\nexport class MatColumnResizeModule {}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\nimport { MatTableModule } from '@angular/material/table';\nimport { MatSortModule } from '@angular/material/sort';\nimport { MatPaginatorModule } from '@angular/material/paginator';\nimport { MatCheckboxModule } from '@angular/material/checkbox';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatProgressBarModule } from '@angular/material/progress-bar';\nimport { MatChipsModule } from '@angular/material/chips';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatSelectModule } from '@angular/material/select';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatMenuModule } from '@angular/material/menu';\nimport { DragDropModule } from '@angular/cdk/drag-drop';\n\nimport { MtxPipesModule } from '@ng-matero/extensions/pipes';\nimport { MtxDialogModule } from '@ng-matero/extensions/dialog';\nimport { MtxGridComponent } from './grid.component';\nimport { MtxGridCellComponent } from './cell.component';\nimport { MtxGridColumnMenuComponent } from './column-menu.component';\nimport { MtxGridExpansionToggleDirective } from './expansion-toggle.directive';\nimport { MtxGridCellSelectionDirective } from './cell-selection.directive';\nimport { MtxGridService } from './grid.service';\nimport { MatColumnResizeModule } from './column-resize/column-resize-module';\n\n@NgModule({\n imports: [\n CommonModule,\n FormsModule,\n MatTableModule,\n MatSortModule,\n MatPaginatorModule,\n MatCheckboxModule,\n MatButtonModule,\n MatProgressBarModule,\n MatChipsModule,\n MatTooltipModule,\n MatIconModule,\n MatSelectModule,\n MatFormFieldModule,\n MatMenuModule,\n DragDropModule,\n MtxDialogModule,\n MtxPipesModule,\n MatColumnResizeModule,\n ],\n exports: [\n MtxGridComponent,\n MtxGridCellComponent,\n MtxGridColumnMenuComponent,\n MtxGridExpansionToggleDirective,\n MtxGridCellSelectionDirective,\n MatColumnResizeModule,\n ],\n declarations: [\n MtxGridComponent,\n MtxGridCellComponent,\n MtxGridColumnMenuComponent,\n MtxGridExpansionToggleDirective,\n MtxGridCellSelectionDirective,\n ],\n providers: [MtxGridService],\n})\nexport class MtxGridModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"mtxGrid.js","sources":["../../../projects/extensions/grid/grid.service.ts","../../../projects/extensions/grid/grid.component.ts","../../../projects/extensions/grid/cell.component.ts","../../../projects/extensions/grid/column-menu.component.ts","../../../projects/extensions/grid/expansion-toggle.directive.ts","../../../projects/extensions/grid/cell-selection.directive.ts","../../../projects/extensions/grid/column-resize/resize-strategy.ts","../../../projects/extensions/grid/column-resize/column-resize-directives/common.ts","../../../projects/extensions/grid/column-resize/column-resize-directives/column-resize.ts","../../../projects/extensions/grid/column-resize/column-resize-directives/column-resize-flex.ts","../../../projects/extensions/grid/column-resize/overlay-handle.ts","../../../projects/extensions/grid/column-resize/resizable-directives/common.ts","../../../projects/extensions/grid/column-resize/resizable-directives/resizable.ts","../../../projects/extensions/grid/column-resize/column-resize-module.ts","../../../projects/extensions/grid/grid.module.ts","../../../projects/extensions/grid/mtxGrid.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\nimport { MtxGridColumn } from './grid.interface';\n\n@Injectable()\nexport class MtxGridService {\n constructor() {}\n\n /**\n * Get cell value from column key e.g. `a.b.c`\n * @param rowData Row data\n * @param colDef Column definition\n */\n getCellValue(rowData: any, colDef: MtxGridColumn): string {\n const keyArr = colDef.field ? colDef.field.split('.') : [];\n\n let tmp: any = '';\n\n keyArr.forEach((key: string, i: number) => {\n if (i === 0) {\n tmp = rowData[key];\n } else {\n tmp = tmp && tmp[key];\n }\n });\n return tmp;\n }\n\n /**\n * Get all data of a col\n * @param data All data\n * @param colDef Column definition\n */\n getColData(data: any[], colDef: MtxGridColumn): any[] {\n return data.map((rowData: any) => this.getCellValue(rowData, colDef));\n }\n\n /**\n * Remove white spaces in a string and convert string to array\n * @param str string\n */\n str2arr(str: string): string[] {\n return str.replace(/[\\r\\n\\s]/g, '').split(',');\n }\n}\n","import {\n Component,\n Input,\n Output,\n EventEmitter,\n ViewEncapsulation,\n ChangeDetectionStrategy,\n ViewChild,\n OnChanges,\n TemplateRef,\n TrackByFunction,\n OnDestroy,\n AfterViewInit,\n ChangeDetectorRef,\n ElementRef,\n SimpleChanges,\n QueryList,\n ContentChildren,\n} from '@angular/core';\nimport { trigger, state, style, transition, animate } from '@angular/animations';\nimport { SelectionModel } from '@angular/cdk/collections';\nimport {\n MatFooterRow,\n MatFooterRowDef,\n MatHeaderRowDef,\n MatRowDef,\n MatTable,\n MatTableDataSource,\n} from '@angular/material/table';\nimport { MatPaginator, PageEvent } from '@angular/material/paginator';\nimport { Sort, MatSort, SortDirection } from '@angular/material/sort';\nimport { ThemePalette } from '@angular/material/core';\n\nimport {\n MtxGridColumn,\n MtxGridCellTemplate,\n MtxGridRowSelectionFormatter,\n MtxGridRowClassFormatter,\n MtxGridColumnMenu,\n MtxGridButtonType,\n MtxGridColumnPinOption,\n} from './grid.interface';\nimport { MtxGridCellSelectionDirective } from './cell-selection.directive';\nimport { MtxGridExpansionToggleDirective } from './expansion-toggle.directive';\nimport { MtxGridService } from './grid.service';\n\n@Component({\n selector: 'mtx-grid',\n exportAs: 'mtxGrid',\n templateUrl: './grid.component.html',\n styleUrls: ['./grid.component.scss'],\n host: {\n class: 'mtx-grid',\n },\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n animations: [\n trigger('expansion', [\n state('collapsed, void', style({ height: '0', minHeight: '0', visibility: 'hidden' })),\n state('expanded', style({ height: '*', visibility: 'visible' })),\n transition('expanded <=> collapsed', animate('225ms cubic-bezier(0.4, 0.0, 0.2, 1)')),\n transition('expanded <=> void', animate('225ms cubic-bezier(0.4, 0.0, 0.2, 1)')),\n ]),\n ],\n})\nexport class MtxGridComponent implements OnChanges, AfterViewInit, OnDestroy {\n @ViewChild(MatTable) table!: MatTable<any>;\n @ViewChild(MatPaginator) paginator!: MatPaginator;\n @ViewChild(MatSort) sort!: MatSort;\n @ContentChildren(MatRowDef) rowDefs!: QueryList<MatRowDef<any>>;\n @ContentChildren(MatHeaderRowDef) headerRowDefs!: QueryList<MatHeaderRowDef>;\n @ContentChildren(MatFooterRow) footerRowDefs!: QueryList<MatFooterRowDef>;\n @ViewChild('columnMenu') columnMenu!: MtxGridColumnMenu;\n @ViewChild('tableContainer') tableContainer!: ElementRef<HTMLDivElement>;\n\n dataSource = new MatTableDataSource();\n\n @Input() displayedColumns: string[] = [];\n @Input() columns: MtxGridColumn[] = [];\n @Input() data: any[] = [];\n @Input() length = 0;\n @Input() loading = false;\n\n @Input() trackBy!: TrackByFunction<any>;\n\n @Input() columnResizable = false;\n\n /** Placeholder for the empty value (`null`, `''`, `[]`) */\n @Input() emptyValuePlaceholder: string = '--';\n\n // ===== Page =====\n\n @Input() pageOnFront = true;\n @Input() showPaginator = true;\n @Input() pageDisabled = false;\n @Input() showFirstLastButtons = true;\n @Input() pageIndex = 0;\n @Input() pageSize = 10;\n @Input() pageSizeOptions = [10, 50, 100];\n @Input() hidePageSize = false;\n @Output() page = new EventEmitter<PageEvent>();\n\n @Input() paginationTemplate!: TemplateRef<any>;\n\n // ===== Sort =====\n\n @Input() sortOnFront = true;\n @Input() sortActive!: string;\n @Input() sortDirection!: SortDirection;\n @Input() sortDisableClear: boolean = false;\n @Input() sortDisabled: boolean = false;\n @Input() sortStart: 'asc' | 'desc' = 'asc';\n @Output() sortChange = new EventEmitter<Sort>();\n\n // ===== Row =====\n\n @Input() rowHover = false;\n @Input() rowStriped = false;\n @Output() rowClick = new EventEmitter<any>();\n\n // ===== Expandable Row =====\n\n expansionRowStates: any[] = [];\n\n @Input() expandable = false;\n @Input() expansionTemplate!: TemplateRef<any>;\n @Output() expansionChange = new EventEmitter<any>();\n\n // ===== Row Selection =====\n\n /** Whether support multiple row/cell selection. */\n @Input() multiSelectable = true;\n\n @Input() multiSelectionWithClick = false;\n\n rowSelection: SelectionModel<any> = new SelectionModel<any>(true, []);\n\n @Input() rowSelected: any[] = [];\n @Input() rowSelectable = false;\n @Input() hideRowSelectionCheckbox = false;\n @Input() rowSelectionFormatter: MtxGridRowSelectionFormatter = {};\n @Input() rowClassFormatter!: MtxGridRowClassFormatter;\n @Output() rowSelectionChange = new EventEmitter<any[]>();\n\n // ===== Cell Selection =====\n\n cellSelection: any[] = [];\n\n @Input() cellSelectable = true;\n @Output() cellSelectionChange = new EventEmitter<any[]>();\n\n private _selectedCell: MtxGridCellSelectionDirective | undefined;\n\n // ===== Toolbar =====\n\n @Input() showToolbar = false;\n @Input() toolbarTitle = '';\n @Input() toolbarTemplate!: TemplateRef<any>;\n\n // ===== Column Menu =====\n\n @Input() showColumnMenuButton = true;\n @Input() columnMenuButtonText = '';\n @Input() columnMenuButtonType: MtxGridButtonType = 'stroked';\n @Input() columnMenuButtonColor: ThemePalette;\n @Input() columnMenuButtonClass = '';\n @Input() columnMenuButtonIcon = '';\n\n @Input() columnHideable = true;\n @Input() columnHideableChecked: 'show' | 'hide' = 'show';\n @Input() columnSortable = true;\n @Input() columnPinnable = true;\n @Output() columnChange = new EventEmitter<MtxGridColumn[]>();\n\n @Input() showColumnMenuHeader = false;\n @Input() columnMenuHeaderText = 'Columns Header';\n @Input() columnMenuHeaderTemplate!: TemplateRef<any>;\n @Input() showColumnMenuFooter = false;\n @Input() columnMenuFooterText = 'Columns Footer';\n @Input() columnMenuFooterTemplate!: TemplateRef<any>;\n\n @Input() columnPinOptions: MtxGridColumnPinOption[] = [];\n\n // ===== No Result =====\n\n @Input() noResultText = 'No records found';\n @Input() noResultTemplate!: TemplateRef<any>;\n\n get _hasNoResult() {\n return (!this.data || this.data.length === 0) && !this.loading;\n }\n\n // ===== Cell Templates =====\n\n @Input() headerTemplate!: TemplateRef<any> | MtxGridCellTemplate;\n @Input() headerExtraTemplate!: TemplateRef<any> | MtxGridCellTemplate;\n @Input() cellTemplate!: TemplateRef<any> | MtxGridCellTemplate;\n\n // ===== Row Templates =====\n\n @Input() useContentRowTemplate = false;\n // TODO: It can't use together with `useContentRowTemplate`\n @Input() useContentHeaderRowTemplate = false;\n // TODO: It's not working\n @Input() useContentFooterRowTemplate = false;\n\n // ===== Summary =====\n\n @Input() showSummary = false;\n @Input() summaryTemplate!: TemplateRef<any> | MtxGridCellTemplate;\n\n // TODO: Summary display conditions\n get _whetherShowSummary() {\n return this.showSummary;\n }\n\n // ===== Side Bar =====\n\n @Input() showSidebar = false;\n @Input() sidebarTemplate!: TemplateRef<any>;\n\n // ===== Status Bar =====\n\n @Input() showStatusbar = false;\n @Input() statusbarTemplate!: TemplateRef<any>;\n\n constructor(\n private _dataGridSrv: MtxGridService,\n private _changeDetectorRef: ChangeDetectorRef\n ) {}\n\n detectChanges() {\n this._changeDetectorRef.detectChanges();\n }\n\n _isTemplateRef(obj: any) {\n return obj instanceof TemplateRef;\n }\n\n _getColData(data: any[], colDef: MtxGridColumn) {\n return this._dataGridSrv.getColData(data, colDef);\n }\n\n _getRowClassList(rowData: any, index: number) {\n const classList: any = {\n 'selected': this.rowSelection.isSelected(rowData),\n 'mat-row-odd': index % 2,\n };\n if (this.rowClassFormatter) {\n for (const key of Object.keys(this.rowClassFormatter)) {\n classList[key] = this.rowClassFormatter[key](rowData, index);\n }\n }\n return classList;\n }\n\n // Waiting for async data\n ngOnChanges(changes: SimpleChanges) {\n this._countPinnedPosition();\n\n this.displayedColumns = this.columns.filter(item => !item.hide).map(item => item.field);\n\n if (this.showColumnMenuButton) {\n this.columns.forEach(item => {\n if (this.columnHideableChecked === 'show') {\n item.show = !item.hide;\n } else {\n item.hide = !!item.hide;\n }\n });\n }\n\n if (this.rowSelectable && !this.hideRowSelectionCheckbox) {\n this.displayedColumns.unshift('MtxGridCheckboxColumnDef');\n }\n\n // We should copy each item of data for expansion data\n if (this.expandable) {\n this.expansionRowStates = []; // reset\n\n this.data?.forEach(_ => {\n this.expansionRowStates.push({ expanded: false });\n });\n }\n\n if (this.rowSelectable) {\n this.rowSelection = new SelectionModel<any>(this.multiSelectable, this.rowSelected);\n }\n\n this.dataSource = new MatTableDataSource(this.data);\n\n this.dataSource.paginator = this.pageOnFront ? this.paginator : null;\n this.dataSource.sort = this.sortOnFront ? this.sort : null;\n\n // Only scroll top with data change\n if (changes.data) {\n this.scrollTop(0);\n }\n }\n\n ngAfterViewInit() {\n if (this.pageOnFront) {\n this.dataSource.paginator = this.paginator;\n }\n\n if (this.sortOnFront) {\n this.dataSource.sort = this.sort;\n }\n\n if (this.rowDefs?.length > 0 && this.useContentRowTemplate) {\n this.rowDefs.forEach(rowDef => this.table.addRowDef(rowDef));\n }\n if (this.headerRowDefs?.length > 0 && this.useContentHeaderRowTemplate) {\n this.headerRowDefs.forEach(headerRowDef => this.table.addHeaderRowDef(headerRowDef));\n }\n if (this.footerRowDefs?.length > 0 && this.useContentFooterRowTemplate) {\n this.footerRowDefs.forEach(footerRowDef => this.table.addFooterRowDef(footerRowDef));\n }\n }\n\n ngOnDestroy() {}\n\n _countPinnedPosition() {\n const count = (acc: number, cur: MtxGridColumn) => acc + parseFloat(cur.width || '80px');\n\n const pinnedLeftCols = this.columns.filter(col => col.pinned && col.pinned === 'left');\n pinnedLeftCols.forEach((item, idx) => {\n item.left = pinnedLeftCols.slice(0, idx).reduce(count, 0) + 'px';\n });\n\n const pinnedRightCols = this.columns\n .filter(col => col.pinned && col.pinned === 'right')\n .reverse();\n pinnedRightCols.forEach((item, idx) => {\n item.right = pinnedRightCols.slice(0, idx).reduce(count, 0) + 'px';\n });\n }\n\n _getIndex(index: number, dataIndex: number) {\n return typeof index === 'undefined' ? dataIndex : index;\n }\n\n _onSortChange(sort: Sort) {\n this.sortChange.emit(sort);\n }\n\n /** Expansion change event */\n _onExpansionChange(\n expansionRef: MtxGridExpansionToggleDirective,\n rowData: Record<string, any>,\n column: MtxGridColumn,\n index: number\n ) {\n this.expansionChange.emit({ expanded: expansionRef.expanded, data: rowData, index, column });\n }\n\n /** Cell select event */\n _selectCell(\n cellRef: MtxGridCellSelectionDirective,\n rowData: Record<string, any>,\n colDef: MtxGridColumn\n ): void {\n // If not the same cell\n if (this._selectedCell !== cellRef) {\n const colValue = this._dataGridSrv.getCellValue(rowData, colDef);\n this.cellSelection = []; // reset\n this.cellSelection.push({ cellData: colValue, rowData, colDef });\n\n this.cellSelectionChange.emit(this.cellSelection);\n\n if (this._selectedCell) {\n this._selectedCell.deselect(); // the selectedCell will be undefined\n }\n }\n\n this._selectedCell = cellRef.selected ? cellRef : undefined;\n }\n\n /** Row select event */\n _selectRow(event: MouseEvent, rowData: Record<string, any>, index: number) {\n if (\n this.rowSelectable &&\n !this.rowSelectionFormatter.disabled?.(rowData, index) &&\n !this.rowSelectionFormatter.hideCheckbox?.(rowData, index)\n ) {\n // metaKey -> command key\n if (!this.multiSelectionWithClick && !event.ctrlKey && !event.metaKey) {\n this.rowSelection.clear();\n }\n\n this._toggleNormalCheckbox(rowData);\n }\n\n this.rowClick.emit({ rowData, index });\n }\n\n /** Whether the number of selected elements matches the total number of rows. */\n _isAllSelected() {\n const numSelected = this.rowSelection.selected.length;\n const numRows = this.dataSource.data.filter(\n (row, index) => !this.rowSelectionFormatter.disabled?.(row, index)\n ).length;\n return numSelected === numRows;\n }\n\n /** Select all rows if they are not all selected; otherwise clear selection. */\n _toggleMasterCheckbox() {\n this._isAllSelected()\n ? this.rowSelection.clear()\n : this.dataSource.data.forEach((row, index) => {\n if (!this.rowSelectionFormatter.disabled?.(row, index)) {\n this.rowSelection.select(row);\n }\n });\n this.rowSelectionChange.emit(this.rowSelection.selected);\n }\n\n /** Select normal row */\n _toggleNormalCheckbox(row: Record<string, any>) {\n this.rowSelection.toggle(row);\n this.rowSelectionChange.emit(this.rowSelection.selected);\n }\n\n /** Column change event */\n _onColumnChange(columns: MtxGridColumn[]) {\n this.columnChange.emit(columns);\n\n this.displayedColumns = Object.assign([], this.getDisplayedColumnFields(columns));\n\n if (this.rowSelectable && !this.hideRowSelectionCheckbox) {\n this.displayedColumns.unshift('MtxGridCheckboxColumnDef');\n }\n }\n\n getDisplayedColumnFields(columns: MtxGridColumn[]): string[] {\n const fields = columns\n .filter(item => (this.columnHideableChecked === 'show' ? item.show : !item.hide))\n .map(item => item.field);\n return fields;\n }\n\n /** Customize expansion event */\n toggleExpansion(index: number) {\n if (!this.expandable) {\n throw new Error('The `expandable` should be set true.');\n }\n this.expansionRowStates[index].expanded = !this.expansionRowStates[index].expanded;\n return this.expansionRowStates[index].expanded;\n }\n\n /** Scroll to top when turn to the next page. */\n _onPage(e: PageEvent) {\n if (this.pageOnFront) {\n this.scrollTop(0);\n }\n this.page.emit(e);\n }\n\n scrollTop(value?: number): number | void {\n if (value == null) {\n return this.tableContainer?.nativeElement.scrollTop;\n }\n if (this.tableContainer && !this.loading) {\n this.tableContainer.nativeElement.scrollTop = value;\n }\n }\n\n scrollLeft(value?: number): number | void {\n if (value == null) {\n return this.tableContainer?.nativeElement.scrollLeft;\n }\n if (this.tableContainer && !this.loading) {\n this.tableContainer.nativeElement.scrollLeft = value;\n }\n }\n}\n","import { Component, Input, ViewEncapsulation } from '@angular/core';\nimport { MtxDialog } from '@ng-matero/extensions/dialog';\n\nimport { MtxGridColumn, MtxGridColumnButton } from './grid.interface';\nimport { MtxGridService } from './grid.service';\nimport PhotoViewer from 'photoviewer';\n\n@Component({\n selector: 'mtx-grid-cell',\n exportAs: 'mtxGridCell',\n templateUrl: './cell.component.html',\n styleUrls: ['./cell.component.scss'],\n encapsulation: ViewEncapsulation.None,\n})\nexport class MtxGridCellComponent {\n /** Row data */\n @Input() rowData: any = {};\n\n /** Column definition */\n @Input() colDef!: MtxGridColumn;\n\n /** Table data */\n @Input() data: any[] = [];\n\n /** Whether show summary */\n @Input() summary = false;\n\n /** Placeholder for the empty value (`null`, `''`, `[]`) */\n @Input() placeholder: string = '--';\n\n get _colValue() {\n return this._dataGridSrv.getCellValue(this.rowData, this.colDef);\n }\n\n _isEmptyValue(value: any) {\n return value == null || value.toString() === '';\n }\n\n _isContainHTML(value: string) {\n return /<\\/?[a-z][\\s\\S]*>/i.test(value);\n }\n\n _getText(value: any) {\n return value === undefined ? '' : this._isEmptyValue(value) ? this.placeholder : value;\n }\n\n _getTooltip(value: any) {\n return this._isEmptyValue(value) ? '' : value;\n }\n\n _getFormatterTooltip(value: any) {\n return this._isContainHTML(value) || this._isEmptyValue(value) ? '' : value;\n }\n\n _formatSummary(data: any[], colDef: MtxGridColumn) {\n if (typeof colDef.summary === 'string') {\n return colDef.summary;\n } else if (typeof colDef.summary === 'function') {\n return (colDef.summary as (data: any[], colDef?: MtxGridColumn) => void)(\n this._dataGridSrv.getColData(data, colDef),\n colDef\n );\n }\n }\n\n constructor(private _dialog: MtxDialog, private _dataGridSrv: MtxGridService) {}\n\n _handleActionClick(event: MouseEvent, btn: MtxGridColumnButton, rowData: any) {\n event.preventDefault();\n event.stopPropagation();\n\n if (btn.pop) {\n this._dialog.open({\n title: btn.popTitle,\n description: btn.popDescription,\n buttons: [\n {\n color: btn.popOkColor || 'primary',\n text: btn.popOkText || 'OK',\n onClick: () => btn.click?.(rowData) || {},\n },\n {\n color: btn.popCloseColor,\n text: btn.popCloseText || 'CLOSE',\n onClick: () => {},\n },\n ],\n });\n } else {\n btn.click?.(rowData);\n }\n }\n\n /** Preview enlarged image */\n _handleImagePreview(urlStr: string) {\n const imgs: PhotoViewer.Img[] = [];\n\n this._dataGridSrv.str2arr(urlStr).forEach((url, index) => {\n imgs.push({ title: index + 1 + '', src: url });\n });\n\n const footerToolbar =\n imgs.length > 1\n ? ['zoomIn', 'zoomOut', 'prev', 'next', 'rotateRight', 'rotateLeft', 'actualSize']\n : ['zoomIn', 'zoomOut', 'rotateRight', 'rotateLeft', 'actualSize'];\n\n const options: PhotoViewer.Options = {\n title: imgs.length > 1,\n footerToolbar,\n };\n\n const photoviewer = new PhotoViewer(imgs, options);\n }\n}\n","import {\n Component,\n Input,\n ViewEncapsulation,\n ChangeDetectionStrategy,\n Output,\n EventEmitter,\n TemplateRef,\n ViewChild,\n} from '@angular/core';\nimport { CdkDragDrop, moveItemInArray } from '@angular/cdk/drag-drop';\nimport { MatCheckboxChange } from '@angular/material/checkbox';\nimport { MatMenu, MatMenuTrigger } from '@angular/material/menu';\nimport { ThemePalette } from '@angular/material/core';\nimport {\n MtxGridButtonType,\n MtxGridColumn,\n MtxGridColumnPinOption,\n MtxGridColumnPinValue,\n} from './grid.interface';\n\n@Component({\n selector: 'mtx-grid-column-menu',\n exportAs: 'mtxGridColumnMenu',\n templateUrl: './column-menu.component.html',\n styleUrls: ['./column-menu.component.scss'],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class MtxGridColumnMenuComponent {\n @ViewChild('menu', { static: true }) menuPanel!: MatMenu;\n @ViewChild(MatMenuTrigger) menuTrigger!: MatMenuTrigger;\n\n @Input() columns: MtxGridColumn[] = [];\n @Input() selectable = true;\n @Input() selectableChecked: 'show' | 'hide' = 'show';\n @Input() sortable = true;\n @Input() pinnable = true;\n\n @Input()\n get buttonText() {\n const defaultText = `Columns ${this.selectableChecked === 'show' ? 'Shown' : 'Hidden'}`;\n return this._buttonText ? this._buttonText : defaultText;\n }\n set buttonText(value: string) {\n this._buttonText = value;\n }\n private _buttonText = '';\n\n @Input() buttonType: MtxGridButtonType = 'stroked';\n @Input() buttonColor: ThemePalette;\n @Input() buttonClass = '';\n @Input() buttonIcon = '';\n\n @Input() showHeader = false;\n @Input() headerText = 'Columns Header';\n @Input() headerTemplate!: TemplateRef<any>;\n @Input() showFooter = false;\n @Input() footerText = 'Columns Footer';\n @Input() footerTemplate!: TemplateRef<any>;\n\n @Output() columnChange = new EventEmitter<MtxGridColumn[]>();\n\n @Input()\n get pinOptions() {\n return this._pinOptions;\n }\n set pinOptions(value: MtxGridColumnPinOption[]) {\n if (value.length > 0) {\n this._pinOptions = value;\n }\n }\n private _pinOptions: MtxGridColumnPinOption[] = [\n { label: 'Pin Left', value: 'left' },\n { label: 'Pin Right', value: 'right' },\n { label: 'No Pin', value: null },\n ];\n\n _handleDroped(e: CdkDragDrop<string[]>) {\n moveItemInArray(this.columns, e.previousIndex, e.currentIndex);\n this.columnChange.emit(this.columns);\n }\n\n _handleChecked(e: MatCheckboxChange) {\n this.columnChange.emit(this.columns);\n }\n\n _handlePinSelect(col: MtxGridColumn, val: MtxGridColumnPinValue) {\n if (col.pinned != val) {\n col.pinned = val;\n this.columnChange.emit(this.columns);\n }\n }\n}\n","import {\n Directive,\n EventEmitter,\n HostBinding,\n HostListener,\n Input,\n Output,\n TemplateRef,\n} from '@angular/core';\n\n@Directive({\n selector: '[mtx-grid-expansion-toggle]',\n})\nexport class MtxGridExpansionToggleDirective {\n private _opened = false;\n private _row: any;\n private _tplRef!: TemplateRef<any>;\n\n @Input()\n get opened() {\n return this._opened;\n }\n set opened(newValue: boolean) {\n this._opened = newValue;\n this.openedChange.emit(newValue);\n }\n @Output() openedChange = new EventEmitter<boolean>();\n\n @HostBinding('class.expanded')\n get expanded(): boolean {\n return this._opened;\n }\n\n @Input()\n set expandableRow(value: any) {\n if (value !== this._row) {\n this._row = value;\n }\n }\n\n @Input('expansionRowTpl')\n set template(value: TemplateRef<any>) {\n if (value !== this._tplRef) {\n this._tplRef = value;\n }\n }\n\n @Output() toggleChange = new EventEmitter<MtxGridExpansionToggleDirective>();\n\n constructor() {}\n\n @HostListener('click', ['$event'])\n onClick(event: MouseEvent): void {\n event.preventDefault();\n event.stopPropagation();\n this.toggle();\n }\n\n toggle(): void {\n this.opened = !this.opened;\n this.toggleChange.emit(this);\n }\n}\n","import { Directive, EventEmitter, HostBinding, HostListener, Input, Output } from '@angular/core';\n\nimport { MtxGridComponent } from './grid.component';\n\n@Directive({\n selector: '[mtx-grid-selectable-cell]',\n})\nexport class MtxGridCellSelectionDirective {\n private _selected = false;\n private _rowData: any;\n\n shiftKeyPressed = false;\n ctrlKeyPressed = false;\n\n @HostBinding('class.selected')\n get selected(): boolean {\n return this._selected;\n }\n\n @Input()\n set matSelectableRowData(value: any) {\n if (value !== this._rowData) {\n this._rowData = value;\n }\n }\n\n @Output() cellSelectionChange = new EventEmitter<MtxGridCellSelectionDirective>();\n\n constructor(private _dataGrid: MtxGridComponent) {}\n\n @HostListener('click', ['$event'])\n onClick(event: MouseEvent): void {\n this.ctrlKeyPressed = event.ctrlKey;\n this.shiftKeyPressed = event.shiftKey;\n\n if (this._dataGrid.cellSelectable) {\n this.select();\n }\n }\n\n select(): void {\n this._selected = true;\n this.cellSelectionChange.emit(this);\n }\n\n deselect(): void {\n this._selected = false;\n this.cellSelectionChange.emit(this);\n }\n\n toggle(): void {\n this._selected = !this._selected;\n this.cellSelectionChange.emit(this);\n }\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport { Inject, Injectable, Provider } from '@angular/core';\nimport { DOCUMENT } from '@angular/common';\nimport { CdkTable, _CoalescedStyleScheduler, _COALESCED_STYLE_SCHEDULER } from '@angular/cdk/table';\n\nimport {\n ColumnResize,\n ResizeStrategy,\n CdkFlexTableResizeStrategy,\n TABLE_LAYOUT_FIXED_RESIZE_STRATEGY_PROVIDER,\n} from '@ng-matero/extensions/column-resize';\n\nexport { TABLE_LAYOUT_FIXED_RESIZE_STRATEGY_PROVIDER };\n\n/**\n * Overrides CdkFlexTableResizeStrategy to match mat-column elements.\n */\n@Injectable()\nexport class MatFlexTableResizeStrategy extends CdkFlexTableResizeStrategy {\n constructor(\n columnResize: ColumnResize,\n @Inject(_COALESCED_STYLE_SCHEDULER) styleScheduler: _CoalescedStyleScheduler,\n table: CdkTable<unknown>,\n @Inject(DOCUMENT) document: any\n ) {\n super(columnResize, styleScheduler, table, document);\n }\n\n protected getColumnCssClass(cssFriendlyColumnName: string): string {\n return `mat-column-${cssFriendlyColumnName}`;\n }\n}\n\nexport const FLEX_RESIZE_STRATEGY_PROVIDER: Provider = {\n provide: ResizeStrategy,\n useClass: MatFlexTableResizeStrategy,\n};\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport { Provider } from '@angular/core';\n\nimport {\n ColumnResize,\n ColumnResizeNotifier,\n ColumnResizeNotifierSource,\n HeaderRowEventDispatcher,\n} from '@ng-matero/extensions/column-resize';\n\nimport {\n TABLE_LAYOUT_FIXED_RESIZE_STRATEGY_PROVIDER,\n FLEX_RESIZE_STRATEGY_PROVIDER,\n} from '../resize-strategy';\n\nconst PROVIDERS: Provider[] = [\n ColumnResizeNotifier,\n HeaderRowEventDispatcher,\n ColumnResizeNotifierSource,\n];\nexport const TABLE_PROVIDERS: Provider[] = [\n ...PROVIDERS,\n TABLE_LAYOUT_FIXED_RESIZE_STRATEGY_PROVIDER,\n];\nexport const FLEX_PROVIDERS: Provider[] = [...PROVIDERS, FLEX_RESIZE_STRATEGY_PROVIDER];\n\nexport const TABLE_HOST_BINDINGS = {\n class: 'mat-column-resize-table',\n};\nexport const FLEX_HOST_BINDINGS = {\n class: 'mat-column-resize-flex',\n};\n\nexport abstract class AbstractMatColumnResize extends ColumnResize {\n getTableHeight() {\n const table = this.elementRef.nativeElement;\n const tableParent = table!.parentNode as HTMLElement;\n const isTableContainer = tableParent!.classList.contains('mat-table-container');\n return isTableContainer ? tableParent!.offsetHeight : table!.offsetHeight;\n }\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport { Directive, ElementRef, NgZone } from '@angular/core';\nimport {\n ColumnResize,\n ColumnResizeNotifier,\n ColumnResizeNotifierSource,\n HeaderRowEventDispatcher,\n} from '@ng-matero/extensions/column-resize';\n\nimport { AbstractMatColumnResize, TABLE_HOST_BINDINGS, TABLE_PROVIDERS } from './common';\n\n/**\n * Explicitly enables column resizing for a table-based mat-table.\n * Individual columns must be annotated specifically.\n */\n@Directive({\n selector: 'table[mat-table][columnResize]',\n host: TABLE_HOST_BINDINGS,\n providers: [...TABLE_PROVIDERS, { provide: ColumnResize, useExisting: MatColumnResize }],\n})\nexport class MatColumnResize extends AbstractMatColumnResize {\n constructor(\n readonly columnResizeNotifier: ColumnResizeNotifier,\n readonly elementRef: ElementRef<HTMLElement>,\n protected readonly eventDispatcher: HeaderRowEventDispatcher,\n protected readonly ngZone: NgZone,\n protected readonly notifier: ColumnResizeNotifierSource\n ) {\n super();\n }\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport { Directive, ElementRef, NgZone } from '@angular/core';\nimport {\n ColumnResize,\n ColumnResizeNotifier,\n ColumnResizeNotifierSource,\n HeaderRowEventDispatcher,\n} from '@ng-matero/extensions/column-resize';\n\nimport { AbstractMatColumnResize, FLEX_HOST_BINDINGS, FLEX_PROVIDERS } from './common';\n\n/**\n * Explicitly enables column resizing for a flexbox-based mat-table.\n * Individual columns must be annotated specifically.\n */\n@Directive({\n selector: 'mat-table[columnResize]',\n host: FLEX_HOST_BINDINGS,\n providers: [...FLEX_PROVIDERS, { provide: ColumnResize, useExisting: MatColumnResizeFlex }],\n})\nexport class MatColumnResizeFlex extends AbstractMatColumnResize {\n constructor(\n readonly columnResizeNotifier: ColumnResizeNotifier,\n readonly elementRef: ElementRef<HTMLElement>,\n protected readonly eventDispatcher: HeaderRowEventDispatcher,\n protected readonly ngZone: NgZone,\n protected readonly notifier: ColumnResizeNotifierSource\n ) {\n super();\n }\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n Inject,\n NgZone,\n ViewEncapsulation,\n} from '@angular/core';\nimport { DOCUMENT } from '@angular/common';\nimport {\n CdkColumnDef,\n _CoalescedStyleScheduler,\n _COALESCED_STYLE_SCHEDULER,\n} from '@angular/cdk/table';\nimport { Directionality } from '@angular/cdk/bidi';\nimport {\n ColumnResize,\n ColumnResizeNotifierSource,\n HeaderRowEventDispatcher,\n ResizeOverlayHandle,\n ResizeRef,\n} from '@ng-matero/extensions/column-resize';\n\nimport { AbstractMatColumnResize } from './column-resize-directives/common';\n\n/**\n * Component shown over the edge of a resizable column that is responsible\n * for handling column resize mouse events and displaying a vertical line along the column edge.\n */\n@Component({\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: { class: 'mat-column-resize-overlay-thumb' },\n template: '',\n})\nexport class MatColumnResizeOverlayHandle extends ResizeOverlayHandle {\n protected readonly document: Document;\n\n constructor(\n protected readonly columnDef: CdkColumnDef,\n protected readonly columnResize: ColumnResize,\n protected readonly directionality: Directionality,\n protected readonly elementRef: ElementRef,\n protected readonly eventDispatcher: HeaderRowEventDispatcher,\n protected readonly ngZone: NgZone,\n protected readonly resizeNotifier: ColumnResizeNotifierSource,\n protected readonly resizeRef: ResizeRef,\n @Inject(_COALESCED_STYLE_SCHEDULER)\n protected readonly styleScheduler: _CoalescedStyleScheduler,\n @Inject(DOCUMENT) document: any\n ) {\n super();\n this.document = document;\n }\n\n protected updateResizeActive(active: boolean): void {\n super.updateResizeActive(active);\n\n this.resizeRef.overlayRef.updateSize({\n height: active\n ? (this.columnResize as AbstractMatColumnResize).getTableHeight()\n : this.resizeRef.origin.nativeElement!.offsetHeight,\n });\n }\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport { Type } from '@angular/core';\nimport { Resizable } from '@ng-matero/extensions/column-resize';\nimport { MatColumnResizeOverlayHandle } from '../overlay-handle';\n\nexport abstract class AbstractMatResizable extends Resizable<MatColumnResizeOverlayHandle> {\n minWidthPxInternal = 32;\n\n protected getInlineHandleCssClassName(): string {\n return 'mat-resizable-handle';\n }\n\n protected getOverlayHandleComponentType(): Type<MatColumnResizeOverlayHandle> {\n return MatColumnResizeOverlayHandle;\n }\n}\n\nexport const RESIZABLE_HOST_BINDINGS = {\n class: 'mat-resizable',\n};\n\nexport const RESIZABLE_INPUTS = [\n 'minWidthPx: matResizableMinWidthPx',\n 'maxWidthPx: matResizableMaxWidthPx',\n];\n","import {\n Directive,\n ElementRef,\n Inject,\n Injector,\n NgZone,\n ViewContainerRef,\n ChangeDetectorRef,\n Input,\n HostBinding,\n} from '@angular/core';\nimport { DOCUMENT } from '@angular/common';\nimport { Directionality } from '@angular/cdk/bidi';\nimport { Overlay } from '@angular/cdk/overlay';\nimport {\n CdkColumnDef,\n _CoalescedStyleScheduler,\n _COALESCED_STYLE_SCHEDULER,\n} from '@angular/cdk/table';\nimport {\n ColumnResize,\n ColumnResizeNotifierSource,\n HeaderRowEventDispatcher,\n ResizeStrategy,\n} from '@ng-matero/extensions/column-resize';\n\nimport { AbstractMatResizable, RESIZABLE_HOST_BINDINGS, RESIZABLE_INPUTS } from './common';\n\n/**\n * Explicitly enables column resizing for a mat-header-cell.\n */\n@Directive({\n selector: 'mat-header-cell[resizable], th[mat-header-cell][resizable]',\n inputs: RESIZABLE_INPUTS,\n})\nexport class MatResizable extends AbstractMatResizable {\n isResizable = true;\n\n @HostBinding('class') get hasResizableClass() {\n return this.isResizable ? RESIZABLE_HOST_BINDINGS.class : '';\n }\n\n @Input()\n get resizable() {\n return this.isResizable;\n }\n set resizable(newValue: any) {\n this.isResizable = newValue == null || newValue === '' || newValue;\n }\n\n protected readonly document: Document;\n\n constructor(\n protected readonly columnDef: CdkColumnDef,\n protected readonly columnResize: ColumnResize,\n protected readonly directionality: Directionality,\n @Inject(DOCUMENT) document: any,\n protected readonly elementRef: ElementRef,\n protected readonly eventDispatcher: HeaderRowEventDispatcher,\n protected readonly injector: Injector,\n protected readonly ngZone: NgZone,\n protected readonly overlay: Overlay,\n protected readonly resizeNotifier: ColumnResizeNotifierSource,\n protected readonly resizeStrategy: ResizeStrategy,\n @Inject(_COALESCED_STYLE_SCHEDULER)\n protected readonly styleScheduler: _CoalescedStyleScheduler,\n protected readonly viewContainerRef: ViewContainerRef,\n protected readonly changeDetectorRef: ChangeDetectorRef\n ) {\n super();\n this.document = document;\n }\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport { NgModule } from '@angular/core';\nimport { OverlayModule } from '@angular/cdk/overlay';\n\nimport { MatColumnResize } from './column-resize-directives/column-resize';\nimport { MatColumnResizeFlex } from './column-resize-directives/column-resize-flex';\nimport { MatResizable } from './resizable-directives/resizable';\nimport { MatColumnResizeOverlayHandle } from './overlay-handle';\n\nconst ENTRY_COMMON_COMPONENTS = [MatColumnResizeOverlayHandle];\n\n@NgModule({\n declarations: ENTRY_COMMON_COMPONENTS,\n exports: ENTRY_COMMON_COMPONENTS,\n entryComponents: ENTRY_COMMON_COMPONENTS,\n})\nexport class MatColumnResizeCommonModule {}\n\nconst IMPORTS = [OverlayModule, MatColumnResizeCommonModule];\n\n@NgModule({\n imports: IMPORTS,\n declarations: [MatColumnResize, MatColumnResizeFlex, MatResizable],\n exports: [MatColumnResize, MatColumnResizeFlex, MatResizable],\n})\nexport class MatColumnResizeModule {}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\nimport { MatTableModule } from '@angular/material/table';\nimport { MatSortModule } from '@angular/material/sort';\nimport { MatPaginatorModule } from '@angular/material/paginator';\nimport { MatCheckboxModule } from '@angular/material/checkbox';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatProgressBarModule } from '@angular/material/progress-bar';\nimport { MatChipsModule } from '@angular/material/chips';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatSelectModule } from '@angular/material/select';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatMenuModule } from '@angular/material/menu';\nimport { DragDropModule } from '@angular/cdk/drag-drop';\n\nimport { MtxPipesModule } from '@ng-matero/extensions/pipes';\nimport { MtxDialogModule } from '@ng-matero/extensions/dialog';\nimport { MtxGridComponent } from './grid.component';\nimport { MtxGridCellComponent } from './cell.component';\nimport { MtxGridColumnMenuComponent } from './column-menu.component';\nimport { MtxGridExpansionToggleDirective } from './expansion-toggle.directive';\nimport { MtxGridCellSelectionDirective } from './cell-selection.directive';\nimport { MtxGridService } from './grid.service';\nimport { MatColumnResizeModule } from './column-resize/column-resize-module';\n\n@NgModule({\n imports: [\n CommonModule,\n FormsModule,\n MatTableModule,\n MatSortModule,\n MatPaginatorModule,\n MatCheckboxModule,\n MatButtonModule,\n MatProgressBarModule,\n MatChipsModule,\n MatTooltipModule,\n MatIconModule,\n MatSelectModule,\n MatFormFieldModule,\n MatMenuModule,\n DragDropModule,\n MtxDialogModule,\n MtxPipesModule,\n MatColumnResizeModule,\n ],\n exports: [\n MtxGridComponent,\n MtxGridCellComponent,\n MtxGridColumnMenuComponent,\n MtxGridExpansionToggleDirective,\n MtxGridCellSelectionDirective,\n MatColumnResizeModule,\n ],\n declarations: [\n MtxGridComponent,\n MtxGridCellComponent,\n MtxGridColumnMenuComponent,\n MtxGridExpansionToggleDirective,\n MtxGridCellSelectionDirective,\n ],\n providers: [MtxGridService],\n})\nexport class MtxGridModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
|
package/fesm2015/mtxSplit.js
CHANGED
|
@@ -683,7 +683,7 @@ class MtxSplitComponent extends _MtxSplitComponentBase {
|
|
|
683
683
|
let offset = this.direction === 'horizontal'
|
|
684
684
|
? this.startPoint.x - this.endPoint.x
|
|
685
685
|
: this.startPoint.y - this.endPoint.y;
|
|
686
|
-
if (this.dir === 'rtl') {
|
|
686
|
+
if (this.dir === 'rtl' && this.direction === 'horizontal') {
|
|
687
687
|
offset = -offset;
|
|
688
688
|
}
|
|
689
689
|
const steppedOffset = Math.round(offset / this.gutterStep) * this.gutterStep;
|