@ohioepa/oepa-ui-lib 1.3.1 → 1.3.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.
@@ -1820,11 +1820,11 @@ class TableComponent {
1820
1820
  this.customBtnClicked.emit();
1821
1821
  }
1822
1822
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: TableComponent, deps: [{ token: i1$3.DomSanitizer }, { token: TableService }, { token: TableExportService }, { token: i1$1.OepaFileUtilService }], target: i0.ɵɵFactoryTarget.Component });
1823
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: TableComponent, selector: "oepa-table", inputs: { tableId: "tableId", config: "config", complexHeader: "complexHeader", header: "header", customBtnLabel: "customBtnLabel", customBtnVisible: "customBtnVisible", customBtnEnabled: "customBtnEnabled", data: "data", totalRow: "totalRow" }, outputs: { cellClicked: "cellClicked", actionClicked: "actionClicked", rowSelected: "rowSelected", customBtnClicked: "customBtnClicked" }, ngImport: i0, template: "<!-- Unhide select input - only visible if one or more columns are hidden -->\n\n<form *ngIf=\"hiddenColumns.length > 0\">\n <div class=\"row mb-2\">\n <label class=\"col-sm-2 col-form-label\">Show Hidden Columns:</label>\n <div class=\"col-sm-4\">\n <select class=\"form-select\" (change)=\"unhideColumn($any($event).target.value)\" [id]=\"tableId+'_UnhideColumnSelect'\">\n <option value=\"\">Choose a column</option>\n <option *ngFor=\"let col of hiddenColumns\" [value]=\"col.id\">{{col.title}}</option>\n </select>\n </div>\n </div>\n</form>\n<!-- This is the table -->\n<div ngClass=\"{{config.divClassName || ''}}\" >\n<table *ngIf=\"!config.hideTable\" class=\"table dataTable\" ngClass=\"{{config.className || ''}}\" role=\"grid\" style=\"width: 100%;\">\n\n<!-- This is the table header -->\n<thead>\n <!-- There may be multiple header rows -->\n <tr *ngFor=\"let hdr of headerRows; let hr=index;\" role=\"row\">\n <!-- Details indicator column (if data has details) -->\n <th *ngIf=\"dataHasDetails && hr === 0\" [rowSpan]=\"headerRows.length\" class=\"detail-indicator-col\">\n <span>\n <i (click)=\"toggleAllDetails()\" [id]=\"tableId+'_ShowAllDetailsLink'\" class=\"bi\" [ngClass]=\"{'bi-chevron-down': showAllDetails, 'bi-chevron-right': !showAllDetails}\"\n [tooltip]=\"(showAllDetails ? 'Hide' : 'Show') + ' details for all rows'\" placement=\"right\">\n </i>\n </span>\n </th>\n <ng-template ngFor let-column [ngForOf]=\"hdr.columns\" let-c=\"index\">\n <!-- Header cell -->\n <th *ngIf=\"!column.hidden\" ngClass=\"{{column.className || ''}}\" [colSpan]=\"column.colspan || 1\" [rowSpan]=\"column.rowspan || 1\">\n <!-- Select all Rows Checkbox -->\n <div class=\"text-center\">\n <input *ngIf=\"column.selectColumn\" type=\"checkbox\" [checked]=\"allRowsSelected\" (change)=\"toggleAllRowsSelection()\">\n\n <!-- Header cell text with sort capability (if specified) -->\n <span [oepaTableSorting]=\"true\" [column]=\"column\" [tableId]=\"tableId\" (sortChanged)=\"onSortChanged($event)\" [id]=\"tableId+'_SortColumnLink_'+column.id\">\n <span *ngIf=\"column.sort\"><i class=\"pull-left bi\" [ngClass]=\"{'bi-chevron-down': column.sort === 'desc', 'bi-chevron-up': column.sort === 'asc'}\"></i>\n <sup *ngIf=\"column?.sortIndex || 0 > 1\">{{column.sortIndex}}</sup></span>\n {{column.title}}\n </span>\n <!-- button to allow column to be hidden (if specified) -->\n <button *ngIf=\"column.hidden === false\" type=\"button\" class=\"btn-close float-end\" aria-label=\"Hide\" (click)=\"hideColumn(column)\"\n [id]=\"tableId+'_HideColumnLink'+'_'+column.id\">\n </button>\n\n </div>\n <!-- column filter (if specified) -->\n <div *ngIf=\"((rows && rows.length > 0) || !noFilters()) && column.filterable\" >\n <input [oepaTableFiltering]=\"{ filterString: '', columnId: column.id }\" [tableId]=\"tableId\" class=\"form-control input-sm\" (tableChanged)=\"onFilterChanged($event)\"\n [id]=\"tableId+'_FilterColumn_'+column.id\" />\n </div>\n </th>\n </ng-template>\n </tr>\n</thead>\n\n<!-- This is the table body -->\n<tbody>\n <ng-template ngFor let-row [ngForOf]=\"rows\" let-r=\"index\">\n <!-- Data Row -->\n <tr>\n <td *ngIf=\"dataHasDetails\">\n <!-- Detail icon (if specified) -->\n <span *ngIf=\"row.showDetail === true || row.showDetail === false\">\n <i *ngIf=\"row.detailIconClassName\" [ngClass]=\"row.detailIconClassName\"></i>\n <i (click)=\"toggleRowDetail(row)\" [id]=\"tableId+'_ShowDetailLink_'+r\" class=\"bi\" [ngClass]=\"{'bi-chevron-down': row.showDetail, 'bi-chevron-right': !row.showDetail}\"\n [tooltip]=\"(row.showDetail ? 'Hide' : 'Show') + ' details for this row'\" placement=\"right\">\n </i>\n </span>\n </td>\n <!-- If row is a divider, it spans the whole table -->\n <!-- <td *ngIf=\"row.isDivider\" [colSpan]=\"visibleColumnCount + (dataHasDetails ? 1 : 0)\" [ngClass]=\"row.dividerClassName || 'oepa-table-gray'\">&nbsp;</td> -->\n <!-- Data Rows -->\n <ng-template *ngIf=\"!row.isDivider\" ngFor let-col [ngForOf]=\"dataColumns\" let-i=\"index\">\n <td *ngIf=\"!col.hidden && (row|cellColspan:col) > 0\" ngClass=\"{{row|cellClassname:col || ''}}\" [colSpan]=\"row|cellColspan:col\">\n <!-- Data Cell -->\n <div *ngIf=\"!col.actionColumn && !col.selectColumn && !col.singleSelectColumn\">\n <!-- Template for popover 1 -->\n <ng-template #popoverTemplate>\n <div *ngIf=\"row.popover\">\n <cml-template [templateInfo]=\"row.popover.content\"></cml-template>\n </div>\n </ng-template>\n <!-- Popover 1 icon (if specified) -->\n <span *ngIf=\"row.popover && i === (row.popoverColumnIndex || 0) && row.popover\" tabindex=\"0\" [popoverTitle]=\"row.popover.title\" [popover]=\"popoverTemplate\"\n [containerClass]=\"row.popover.containerClass\" placement=\"right\" [triggers]=\"row.popover.trigger || 'mouseenter:mouseleave'\">\n <i [ngClass]=\"row.popover.className\" [id]=\"tableId+'_PopoverLink_'+r\"></i>\n </span>\n\n <!-- Template for popover 2 -->\n <ng-template #popover2Template>\n <div *ngIf=\"row.popover2\">\n <cml-template [templateInfo]=\"row.popover2.content\"></cml-template>\n </div>\n </ng-template>\n <!-- Popover 2 icon (if specified) -->\n <span *ngIf=\"i === (row.popover2ColumnIndex || 0) && row.popover2\" tabindex=\"0\" [popoverTitle]=\"row.popover2.title\" [popover]=\"popover2Template\"\n [containerClass]=\"row.popover2.containerClass\" placement=\"right\" [triggers]=\"row.popover2.trigger || 'mouseenter:mouseleave'\">\n <i [ngClass]=\"row.popover2.className\" [id]=\"tableId+'_Popover2Link_'+r\"></i>\n </span>\n\n <!-- Template for popover 3 -->\n <ng-template #popover3Template>\n <div *ngIf=\"row.popover3\">\n <cml-template [templateInfo]=\"row.popover3.content\"></cml-template>\n </div>\n </ng-template>\n <!-- Popover 3 icon (if specified) -->\n <span *ngIf=\"i === (row.popover3ColumnIndex || 0) && row.popover3\" tabindex=\"0\" [popoverTitle]=\"row.popover3.title\" [popover]=\"popover3Template\"\n [containerClass]=\"row.popover3.containerClass\" placement=\"right\" [triggers]=\"row.popover3.trigger || 'mouseenter:mouseleave'\">\n <i [ngClass]=\"row.popover3.className\" [id]=\"tableId+'_Popover3Link_'+r\"></i>\n </span>\n\n \n <!-- <div *ngIf=\"row|cellInnerHTML:col\" [innerHTML]=\"row|cellInnerHTML:col\"></div>\n <span *ngIf=\"!(row|cellInnerHTML:col)\">{{row|cellValue:col}}</span> -->\n\n <!-- If col is hyperlink, display data as a hyperlink -->\n <button *ngIf=\"col.hyperlink\" type=\"button\" class=\"btn btn-link\" (click)=\"cellClick(row, col.id)\" [id]=\"tableId+'_CellClick_'+r+'_'+i\">\n <span *ngIf=\"!(row|cellInnerHTML:col)\">\n <i [ngClass]=\"row|cellIconClassname:col\"></i>\n <span *ngIf=\"row|cellImgSrc:col\"><img [src]=\"row|cellImgSrc:col\"/></span>\n {{row|cellValue:col}}\n </span>\n <div *ngIf=\"row|cellInnerHTML:col\" [innerHTML]=\"row|cellInnerHTML:col\"></div>\n </button>\n <!-- If col is NOT hyperlink, just display data -->\n <span *ngIf=\"!col.hyperlink\">\n <span *ngIf=\"!(row|cellInnerHTML:col)\">\n <i ngClass=\"{{row|cellIconClassname:col || ''}}\"></i>\n <span *ngIf=\"row|cellImgSrc:col\"><img [src]=\"row|cellImgSrc:col\"/></span>\n {{row|cellValue:col}}\n </span>\n <div *ngIf=\"row|cellInnerHTML:col\" [innerHTML]=\"row|cellInnerHTML:col\"></div>\n </span>\n </div>\n <!-- Select Cell -->\n <div *ngIf=\"col.selectColumn\" class=\"text-center\">\n <input [id]=\"tableId+'_'+r\" type=\"checkbox\" [disabled]=\"!row.selectable\" [checked]=\"row.selected\" (change)=\"toggleRowSelection(row)\">\n </div>\n <!-- Single Select Cell -->\n <div *ngIf=\"col.singleSelectColumn\" class=\"text-center\">\n <input [id]=\"tableId+'_singleSelect_'+r\" type=\"radio\" [disabled]=\"!row.selectable\" [checked]=\"row.selected\" (change)=\"singleRowSelection(row)\">\n </div>\n <!-- Action Button Cell -->\n <div *ngIf=\"col.actionColumn && row.actions\">\n <oepa-action-btn [actions]=\"row.actions\" [data]=\"row.dataSource\" (actionClicked)=\"onActionClick($event)\" [btnId]=\"tableId+'_'+r\"></oepa-action-btn>\n </div>\n </td>\n </ng-template>\n </tr>\n\n <!-- Detail Row -->\n <tr *ngIf=\"row.showDetail\" class=\"table-info\">\n <td [colSpan]=\"visibleColumnCount + (dataHasDetails ? 1 : 0)\">\n <cml-template [templateInfo]=\"row.detail\"></cml-template>\n </td>\n </tr>\n </ng-template>\n <tr *ngIf=\"totalRow\">\n <td *ngIf=\"dataHasDetails\">\n </td>\n <ng-template ngFor let-totalCol [ngForOf]=\"dataColumns\">\n <td *ngIf=\"!totalCol.hidden\" ngClass=\"{{totalRow|cellClassname:totalCol || ''}}\">\n <div>\n <span><i ngClass=\"{{totalRow|cellIconClassname:totalCol || ''}}\"></i>{{totalRow|cellValue:totalCol}}</span>\n </div>\n </td>\n </ng-template>\n </tr>\n</tbody>\n</table>\n</div>\n<!-- Table footer -->\n<form *ngIf=\"!config.hideFooter || (data && pageInfo.itemsPerPage < data.length)\" class=\"form-horizontal\">\n<div class=\"form-group row text-right\">\n <!-- Table-wide filter -->\n <div class=\"col-sm-4\">\n <div class=\"row\">\n <div class=\"col-sm-6\">\n <input *ngIf=\"!config.hideGlobalFilter\" placeholder=\"Filter all columns\" [oepaTableFiltering]=\"{ filterString: '' }\" [tableId]=\"tableId\" class=\"form-control input-sm\" (tableChanged)=\"onFilterChanged($event)\"\n [id]=\"tableId+'_FilterAllColumnsInput'\" />\n </div>\n <div class=\"col-sm-6\">\n <span *ngIf=\"config.showRowCountInFooter && _data && _data.length > 0\">\n <span class=\"badge badge-secondary\" style=\"color: #999\">{{_data.length}}</span>&nbsp;total rows\n </span>\n </div>\n </div>\n </div>\n <!-- Export Buttons -->\n <div class=\"col-sm-4 d-flex justify-content-center\">\n <div class=\"row\">\n <div class=\"col-sm-12 text-center\">\n <button type=\"button\" *ngIf=\"config.exportToExcel\" class=\"btn btn-primary mr-1\" (click)=\"exportToExcel()\" [id]=\"tableId+'_ExportToExcelBtn'\">Export to Excel</button>\n <button type=\"button\" *ngIf=\"config.exportToHTML\" class=\"btn btn-primary mr-1\" (click)=\"exportToHTML()\" [id]=\"tableId+'_ExportToHTMLBtn'\">Export to HTML</button>\n <button *ngIf=\"customBtnVisible\" type=\"button\" class=\"btn btn-primary mr-1\" (click)=\"onCustomBtnClick()\" [id]=\"tableId+'_CustomBtn'\" [disabled]=\"!customBtnEnabled\">{{customBtnLabel}}</button>\n </div>\n <div *ngIf=\"config.exportToExcel || config.exportToHTML\" class=\"col-sm-12 text-center\">\n <span>Export only visible data:&nbsp;\n <input type=\"checkbox\" [checked]=\"exportVisibleOnly\" (click)=\"toggleExportVisibleOnly()\" id=\"exportVisibleOnlyCheckbox\"/>\n </span>\n </div>\n </div>\n </div>\n <!-- Pagination -->\n <div *ngIf=\"!config.disablePagination\" class=\"col-sm-4 d-flex justify-content-end\">\n <pagination *ngIf=\"paginationOn\" class=\"pagination-sm\" [totalItems]=\"pageInfo.length\" [itemsPerPage]=\"pageInfo.itemsPerPage\" [maxSize]=\"pageInfo.maxSize\"\n [(ngModel)]=\"currentPage\" name=\"currentTablePage\"\n [boundaryLinks]=\"true\" [rotate]=\"false\" (pageChanged)=\"onPageChanged($event)\" (numPages)=\"pageInfo.numPages = $event\">\n </pagination>\n &nbsp;\n <button (click)=\"togglePagingation()\" type=\"button\" class=\"btn btn-default btn-sm mr-1\">{{ paginationOn ? 'Show All Rows' : 'Restore Pagination'}}</button>\n </div>\n</div>\n</form>", styles: [".pagination{margin:0}th.oepa-table-header-center{text-align:center}.oepa-table-bold{font-weight:700}.oepa-table-italic{font-style:italic}.oepa-table-line-through{text-decoration:line-through}.oepa-table-gray{background-color:#ddd}td.oepa-undeline-cell{border-bottom:1pt solid black}.detail-indicator-col{width:30px}.action-btn-col{width:90px}.select-col{width:20px}\n"], dependencies: [{ kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1$2.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1$2.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i1$2.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i1$2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1$2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i1$2.NgForm, selector: "form:not([ngNoForm]):not([formGroup]),ng-form,[ngForm]", inputs: ["ngFormOptions"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "component", type: i7$1.PaginationComponent, selector: "pagination", inputs: ["align", "maxSize", "boundaryLinks", "directionLinks", "firstText", "previousText", "nextText", "lastText", "rotate", "pageBtnClass", "disabled", "customPageTemplate", "customNextTemplate", "customPreviousTemplate", "customFirstTemplate", "customLastTemplate", "itemsPerPage", "totalItems"], outputs: ["numPages", "pageChanged"] }, { kind: "directive", type: i8.PopoverDirective, selector: "[popover]", inputs: ["adaptivePosition", "boundariesElement", "popover", "popoverContext", "popoverTitle", "placement", "outsideClick", "triggers", "container", "containerClass", "isOpen", "delay"], outputs: ["onShown", "onHidden"], exportAs: ["bs-popover"] }, { kind: "directive", type: i9.TooltipDirective, selector: "[tooltip], [tooltipHtml]", inputs: ["adaptivePosition", "tooltip", "placement", "triggers", "container", "containerClass", "boundariesElement", "isOpen", "isDisabled", "delay", "tooltipHtml", "tooltipPlacement", "tooltipIsOpen", "tooltipEnable", "tooltipAppendToBody", "tooltipAnimation", "tooltipClass", "tooltipContext", "tooltipPopupDelay", "tooltipFadeDuration", "tooltipTrigger"], outputs: ["tooltipChange", "onShown", "onHidden", "tooltipStateChanged"], exportAs: ["bs-tooltip"] }, { kind: "component", type: i1$1.OepaTemplateComponent, selector: "cml-template", inputs: ["templateInfo"] }, { kind: "component", type: ActionBtnComponent, selector: "oepa-action-btn", inputs: ["label", "btnId", "data", "actions", "normalSize", "dropup"], outputs: ["actionClicked"] }, { kind: "directive", type: OepaTableSortingDirective, selector: "[oepaTableSorting]", inputs: ["tableId", "oepaTableSorting", "column"], outputs: ["sortChanged"] }, { kind: "directive", type: OepaTableFilteringDirective, selector: "[oepaTableFiltering]", inputs: ["oepaTableFiltering", "tableId"], outputs: ["tableChanged"] }, { kind: "pipe", type: OepaTableCellInnerHtmlPipe, name: "cellInnerHTML" }, { kind: "pipe", type: OepaTableCellColSpanPipe, name: "cellColspan" }, { kind: "pipe", type: OepaTableCellValuePipe, name: "cellValue" }, { kind: "pipe", type: OepaTableCellClassnamePipe, name: "cellClassname" }, { kind: "pipe", type: OepaTableCellIconClassnamePipe, name: "cellIconClassname" }, { kind: "pipe", type: OepaTableCellImgSrcPipe, name: "cellImgSrc" }] });
1823
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: TableComponent, selector: "oepa-table", inputs: { tableId: "tableId", config: "config", complexHeader: "complexHeader", header: "header", customBtnLabel: "customBtnLabel", customBtnVisible: "customBtnVisible", customBtnEnabled: "customBtnEnabled", data: "data", totalRow: "totalRow" }, outputs: { cellClicked: "cellClicked", actionClicked: "actionClicked", rowSelected: "rowSelected", customBtnClicked: "customBtnClicked" }, ngImport: i0, template: "<!-- Unhide select input - only visible if one or more columns are hidden -->\n\n<form *ngIf=\"hiddenColumns.length > 0\">\n <div class=\"row mb-2\">\n <label class=\"col-sm-2 col-form-label\">Show Hidden Columns:</label>\n <div class=\"col-sm-4\">\n <select class=\"form-select\" (change)=\"unhideColumn($any($event).target.value)\" [id]=\"tableId+'_UnhideColumnSelect'\">\n <option value=\"\">Choose a column</option>\n <option *ngFor=\"let col of hiddenColumns\" [value]=\"col.id\">{{col.title}}</option>\n </select>\n </div>\n </div>\n</form>\n<!-- This is the table -->\n<div ngClass=\"{{config.divClassName || ''}}\" >\n<table *ngIf=\"!config.hideTable\" class=\"table dataTable\" ngClass=\"{{config.className || ''}}\" role=\"grid\" style=\"width: 100%;\">\n\n<!-- This is the table header -->\n<thead>\n <!-- There may be multiple header rows -->\n <tr *ngFor=\"let hdr of headerRows; let hr=index;\" role=\"row\">\n <!-- Details indicator column (if data has details) -->\n <th *ngIf=\"dataHasDetails && hr === 0\" [rowSpan]=\"headerRows.length\" class=\"detail-indicator-col\">\n <span>\n <i (click)=\"toggleAllDetails()\" [id]=\"tableId+'_ShowAllDetailsLink'\" class=\"bi\" [ngClass]=\"{'bi-chevron-down': showAllDetails, 'bi-chevron-right': !showAllDetails}\"\n [tooltip]=\"(showAllDetails ? 'Hide' : 'Show') + ' details for all rows'\" placement=\"right\">\n </i>\n </span>\n </th>\n <ng-template ngFor let-column [ngForOf]=\"hdr.columns\" let-c=\"index\">\n <!-- Header cell -->\n <th *ngIf=\"!column.hidden\" ngClass=\"{{column.className || ''}}\" [colSpan]=\"column.colspan || 1\" [rowSpan]=\"column.rowspan || 1\">\n <!-- Select all Rows Checkbox -->\n <div class=\"text-center\">\n <input *ngIf=\"column.selectColumn\" type=\"checkbox\" [checked]=\"allRowsSelected\" (change)=\"toggleAllRowsSelection()\">\n\n <!-- Header cell text with sort capability (if specified) -->\n <span [oepaTableSorting]=\"true\" [column]=\"column\" [tableId]=\"tableId\" (sortChanged)=\"onSortChanged($event)\" [id]=\"tableId+'_SortColumnLink_'+column.id\">\n <span *ngIf=\"column.sort\"><i class=\"pull-left bi\" [ngClass]=\"{'bi-chevron-down': column.sort === 'desc', 'bi-chevron-up': column.sort === 'asc'}\"></i>\n <sup *ngIf=\"column?.sortIndex || 0 > 1\">{{column.sortIndex}}</sup></span>\n {{column.title}}\n </span>\n <!-- button to allow column to be hidden (if specified) -->\n <button *ngIf=\"column.hidden === false\" type=\"button\" class=\"btn-close float-end\" aria-label=\"Hide\" (click)=\"hideColumn(column)\"\n [id]=\"tableId+'_HideColumnLink'+'_'+column.id\">\n </button>\n\n </div>\n <!-- column filter (if specified) -->\n <div *ngIf=\"((rows && rows.length > 0) || !noFilters()) && column.filterable\" >\n <input [oepaTableFiltering]=\"{ filterString: '', columnId: column.id }\" [tableId]=\"tableId\" class=\"form-control input-sm\" (tableChanged)=\"onFilterChanged($event)\"\n [id]=\"tableId+'_FilterColumn_'+column.id\" />\n </div>\n </th>\n </ng-template>\n </tr>\n</thead>\n\n<!-- This is the table body -->\n<tbody>\n <ng-template ngFor let-row [ngForOf]=\"rows\" let-r=\"index\">\n <!-- Data Row -->\n <tr>\n <td *ngIf=\"dataHasDetails\">\n <!-- Detail icon (if specified) -->\n <span *ngIf=\"row.showDetail === true || row.showDetail === false\">\n <i *ngIf=\"row.detailIconClassName\" [ngClass]=\"row.detailIconClassName\"></i>\n <i (click)=\"toggleRowDetail(row)\" [id]=\"tableId+'_ShowDetailLink_'+r\" class=\"bi\" [ngClass]=\"{'bi-chevron-down': row.showDetail, 'bi-chevron-right': !row.showDetail}\"\n [tooltip]=\"(row.showDetail ? 'Hide' : 'Show') + ' details for this row'\" placement=\"right\">\n </i>\n </span>\n </td>\n <!-- If row is a divider, it spans the whole table -->\n <!-- <td *ngIf=\"row.isDivider\" [colSpan]=\"visibleColumnCount + (dataHasDetails ? 1 : 0)\" [ngClass]=\"row.dividerClassName || 'oepa-table-gray'\">&nbsp;</td> -->\n <!-- Data Rows -->\n <ng-template *ngIf=\"!row.isDivider\" ngFor let-col [ngForOf]=\"dataColumns\" let-i=\"index\">\n <td *ngIf=\"!col.hidden && (row|cellColspan:col) > 0\" ngClass=\"{{row|cellClassname:col || ''}}\" [colSpan]=\"row|cellColspan:col\">\n <!-- Data Cell -->\n <div *ngIf=\"!col.actionColumn && !col.selectColumn && !col.singleSelectColumn\">\n <!-- Template for popover 1 -->\n <ng-template #popoverTemplate>\n <div *ngIf=\"row.popover\">\n <cml-template [templateInfo]=\"row.popover.content\"></cml-template>\n </div>\n </ng-template>\n <!-- Popover 1 icon (if specified) -->\n <span *ngIf=\"row.popover && i === (row.popoverColumnIndex || 0) && row.popover\" tabindex=\"0\" [popoverTitle]=\"row.popover.title\" [popover]=\"popoverTemplate\"\n [containerClass]=\"row.popover.containerClass\" placement=\"right\" [triggers]=\"row.popover.trigger || 'mouseenter:mouseleave'\">\n <i [ngClass]=\"row.popover.className\" [id]=\"tableId+'_PopoverLink_'+r\"></i>\n </span>\n\n <!-- Template for popover 2 -->\n <ng-template #popover2Template>\n <div *ngIf=\"row.popover2\">\n <cml-template [templateInfo]=\"row.popover2.content\"></cml-template>\n </div>\n </ng-template>\n <!-- Popover 2 icon (if specified) -->\n <span *ngIf=\"i === (row.popover2ColumnIndex || 0) && row.popover2\" tabindex=\"0\" [popoverTitle]=\"row.popover2.title\" [popover]=\"popover2Template\"\n [containerClass]=\"row.popover2.containerClass\" placement=\"right\" [triggers]=\"row.popover2.trigger || 'mouseenter:mouseleave'\">\n <i [ngClass]=\"row.popover2.className\" [id]=\"tableId+'_Popover2Link_'+r\"></i>\n </span>\n\n <!-- Template for popover 3 -->\n <ng-template #popover3Template>\n <div *ngIf=\"row.popover3\">\n <cml-template [templateInfo]=\"row.popover3.content\"></cml-template>\n </div>\n </ng-template>\n <!-- Popover 3 icon (if specified) -->\n <span *ngIf=\"i === (row.popover3ColumnIndex || 0) && row.popover3\" tabindex=\"0\" [popoverTitle]=\"row.popover3.title\" [popover]=\"popover3Template\"\n [containerClass]=\"row.popover3.containerClass\" placement=\"right\" [triggers]=\"row.popover3.trigger || 'mouseenter:mouseleave'\">\n <i [ngClass]=\"row.popover3.className\" [id]=\"tableId+'_Popover3Link_'+r\"></i>\n </span>\n\n \n <!-- <div *ngIf=\"row|cellInnerHTML:col\" [innerHTML]=\"row|cellInnerHTML:col\"></div>\n <span *ngIf=\"!(row|cellInnerHTML:col)\">{{row|cellValue:col}}</span> -->\n\n <!-- If col is hyperlink, display data as a hyperlink -->\n <a *ngIf=\"col.hyperlink\" href=\"javascript:void(0);\" (click)=\"cellClick(row, col.id)\" [id]=\"tableId+'_CellClick_'+r+'_'+i\">\n <span *ngIf=\"!(row|cellInnerHTML:col)\">\n <i [ngClass]=\"row|cellIconClassname:col\"></i>\n <span *ngIf=\"row|cellImgSrc:col\"><img [src]=\"row|cellImgSrc:col\"/></span>\n {{row|cellValue:col}}\n </span>\n <div *ngIf=\"row|cellInnerHTML:col\" [innerHTML]=\"row|cellInnerHTML:col\"></div>\n </a>\n <!-- If col is NOT hyperlink, just display data -->\n <span *ngIf=\"!col.hyperlink\">\n <span *ngIf=\"!(row|cellInnerHTML:col)\">\n <i ngClass=\"{{row|cellIconClassname:col || ''}}\"></i>\n <span *ngIf=\"row|cellImgSrc:col\"><img [src]=\"row|cellImgSrc:col\"/></span>\n {{row|cellValue:col}}\n </span>\n <div *ngIf=\"row|cellInnerHTML:col\" [innerHTML]=\"row|cellInnerHTML:col\"></div>\n </span>\n </div>\n <!-- Select Cell -->\n <div *ngIf=\"col.selectColumn\" class=\"text-center\">\n <input [id]=\"tableId+'_'+r\" type=\"checkbox\" [disabled]=\"!row.selectable\" [checked]=\"row.selected\" (change)=\"toggleRowSelection(row)\">\n </div>\n <!-- Single Select Cell -->\n <div *ngIf=\"col.singleSelectColumn\" class=\"text-center\">\n <input [id]=\"tableId+'_singleSelect_'+r\" type=\"radio\" [disabled]=\"!row.selectable\" [checked]=\"row.selected\" (change)=\"singleRowSelection(row)\">\n </div>\n <!-- Action Button Cell -->\n <div *ngIf=\"col.actionColumn && row.actions\">\n <oepa-action-btn [actions]=\"row.actions\" [data]=\"row.dataSource\" (actionClicked)=\"onActionClick($event)\" [btnId]=\"tableId+'_'+r\"></oepa-action-btn>\n </div>\n </td>\n </ng-template>\n </tr>\n\n <!-- Detail Row -->\n <tr *ngIf=\"row.showDetail\" class=\"table-info\">\n <td [colSpan]=\"visibleColumnCount + (dataHasDetails ? 1 : 0)\">\n <cml-template [templateInfo]=\"row.detail\"></cml-template>\n </td>\n </tr>\n </ng-template>\n <tr *ngIf=\"totalRow\">\n <td *ngIf=\"dataHasDetails\">\n </td>\n <ng-template ngFor let-totalCol [ngForOf]=\"dataColumns\">\n <td *ngIf=\"!totalCol.hidden\" ngClass=\"{{totalRow|cellClassname:totalCol || ''}}\">\n <div>\n <span><i ngClass=\"{{totalRow|cellIconClassname:totalCol || ''}}\"></i>{{totalRow|cellValue:totalCol}}</span>\n </div>\n </td>\n </ng-template>\n </tr>\n</tbody>\n</table>\n</div>\n<!-- Table footer -->\n<form *ngIf=\"!config.hideFooter || (data && pageInfo.itemsPerPage < data.length)\" class=\"form-horizontal\">\n<div class=\"form-group row text-right\">\n <!-- Table-wide filter -->\n <div class=\"col-sm-4\">\n <div class=\"row\">\n <div class=\"col-sm-6\">\n <input *ngIf=\"!config.hideGlobalFilter\" placeholder=\"Filter all columns\" [oepaTableFiltering]=\"{ filterString: '' }\" [tableId]=\"tableId\" class=\"form-control input-sm\" (tableChanged)=\"onFilterChanged($event)\"\n [id]=\"tableId+'_FilterAllColumnsInput'\" />\n </div>\n <div class=\"col-sm-6\">\n <span *ngIf=\"config.showRowCountInFooter && _data && _data.length > 0\">\n <span class=\"badge badge-secondary\" style=\"color: #999\">{{_data.length}}</span>&nbsp;total rows\n </span>\n </div>\n </div>\n </div>\n <!-- Export Buttons -->\n <div class=\"col-sm-4 d-flex justify-content-center\">\n <div class=\"row\">\n <div class=\"col-sm-12 text-center\">\n <button type=\"button\" *ngIf=\"config.exportToExcel\" class=\"btn btn-primary mr-1\" (click)=\"exportToExcel()\" [id]=\"tableId+'_ExportToExcelBtn'\">Export to Excel</button>\n <button type=\"button\" *ngIf=\"config.exportToHTML\" class=\"btn btn-primary mr-1\" (click)=\"exportToHTML()\" [id]=\"tableId+'_ExportToHTMLBtn'\">Export to HTML</button>\n <button *ngIf=\"customBtnVisible\" type=\"button\" class=\"btn btn-primary mr-1\" (click)=\"onCustomBtnClick()\" [id]=\"tableId+'_CustomBtn'\" [disabled]=\"!customBtnEnabled\">{{customBtnLabel}}</button>\n </div>\n <div *ngIf=\"config.exportToExcel || config.exportToHTML\" class=\"col-sm-12 text-center\">\n <span>Export only visible data:&nbsp;\n <input type=\"checkbox\" [checked]=\"exportVisibleOnly\" (click)=\"toggleExportVisibleOnly()\" id=\"exportVisibleOnlyCheckbox\"/>\n </span>\n </div>\n </div>\n </div>\n <!-- Pagination -->\n <div *ngIf=\"!config.disablePagination\" class=\"col-sm-4 d-flex justify-content-end\">\n <pagination *ngIf=\"paginationOn\" class=\"pagination-sm\" [totalItems]=\"pageInfo.length\" [itemsPerPage]=\"pageInfo.itemsPerPage\" [maxSize]=\"pageInfo.maxSize\"\n [(ngModel)]=\"currentPage\" name=\"currentTablePage\"\n [boundaryLinks]=\"true\" [rotate]=\"false\" (pageChanged)=\"onPageChanged($event)\" (numPages)=\"pageInfo.numPages = $event\">\n </pagination>\n &nbsp;\n <button (click)=\"togglePagingation()\" type=\"button\" class=\"btn btn-default btn-sm mr-1\">{{ paginationOn ? 'Show All Rows' : 'Restore Pagination'}}</button>\n </div>\n</div>\n</form>", styles: [".pagination{margin:0}th.oepa-table-header-center{text-align:center}.oepa-table-bold{font-weight:700}.oepa-table-italic{font-style:italic}.oepa-table-line-through{text-decoration:line-through}.oepa-table-gray{background-color:#ddd}td.oepa-undeline-cell{border-bottom:1pt solid black}.detail-indicator-col{width:30px}.action-btn-col{width:90px}.select-col{width:20px}\n"], dependencies: [{ kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1$2.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1$2.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i1$2.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i1$2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1$2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i1$2.NgForm, selector: "form:not([ngNoForm]):not([formGroup]),ng-form,[ngForm]", inputs: ["ngFormOptions"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "component", type: i7$1.PaginationComponent, selector: "pagination", inputs: ["align", "maxSize", "boundaryLinks", "directionLinks", "firstText", "previousText", "nextText", "lastText", "rotate", "pageBtnClass", "disabled", "customPageTemplate", "customNextTemplate", "customPreviousTemplate", "customFirstTemplate", "customLastTemplate", "itemsPerPage", "totalItems"], outputs: ["numPages", "pageChanged"] }, { kind: "directive", type: i8.PopoverDirective, selector: "[popover]", inputs: ["adaptivePosition", "boundariesElement", "popover", "popoverContext", "popoverTitle", "placement", "outsideClick", "triggers", "container", "containerClass", "isOpen", "delay"], outputs: ["onShown", "onHidden"], exportAs: ["bs-popover"] }, { kind: "directive", type: i9.TooltipDirective, selector: "[tooltip], [tooltipHtml]", inputs: ["adaptivePosition", "tooltip", "placement", "triggers", "container", "containerClass", "boundariesElement", "isOpen", "isDisabled", "delay", "tooltipHtml", "tooltipPlacement", "tooltipIsOpen", "tooltipEnable", "tooltipAppendToBody", "tooltipAnimation", "tooltipClass", "tooltipContext", "tooltipPopupDelay", "tooltipFadeDuration", "tooltipTrigger"], outputs: ["tooltipChange", "onShown", "onHidden", "tooltipStateChanged"], exportAs: ["bs-tooltip"] }, { kind: "component", type: i1$1.OepaTemplateComponent, selector: "cml-template", inputs: ["templateInfo"] }, { kind: "component", type: ActionBtnComponent, selector: "oepa-action-btn", inputs: ["label", "btnId", "data", "actions", "normalSize", "dropup"], outputs: ["actionClicked"] }, { kind: "directive", type: OepaTableSortingDirective, selector: "[oepaTableSorting]", inputs: ["tableId", "oepaTableSorting", "column"], outputs: ["sortChanged"] }, { kind: "directive", type: OepaTableFilteringDirective, selector: "[oepaTableFiltering]", inputs: ["oepaTableFiltering", "tableId"], outputs: ["tableChanged"] }, { kind: "pipe", type: OepaTableCellInnerHtmlPipe, name: "cellInnerHTML" }, { kind: "pipe", type: OepaTableCellColSpanPipe, name: "cellColspan" }, { kind: "pipe", type: OepaTableCellValuePipe, name: "cellValue" }, { kind: "pipe", type: OepaTableCellClassnamePipe, name: "cellClassname" }, { kind: "pipe", type: OepaTableCellIconClassnamePipe, name: "cellIconClassname" }, { kind: "pipe", type: OepaTableCellImgSrcPipe, name: "cellImgSrc" }] });
1824
1824
  }
1825
1825
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: TableComponent, decorators: [{
1826
1826
  type: Component,
1827
- args: [{ selector: 'oepa-table', template: "<!-- Unhide select input - only visible if one or more columns are hidden -->\n\n<form *ngIf=\"hiddenColumns.length > 0\">\n <div class=\"row mb-2\">\n <label class=\"col-sm-2 col-form-label\">Show Hidden Columns:</label>\n <div class=\"col-sm-4\">\n <select class=\"form-select\" (change)=\"unhideColumn($any($event).target.value)\" [id]=\"tableId+'_UnhideColumnSelect'\">\n <option value=\"\">Choose a column</option>\n <option *ngFor=\"let col of hiddenColumns\" [value]=\"col.id\">{{col.title}}</option>\n </select>\n </div>\n </div>\n</form>\n<!-- This is the table -->\n<div ngClass=\"{{config.divClassName || ''}}\" >\n<table *ngIf=\"!config.hideTable\" class=\"table dataTable\" ngClass=\"{{config.className || ''}}\" role=\"grid\" style=\"width: 100%;\">\n\n<!-- This is the table header -->\n<thead>\n <!-- There may be multiple header rows -->\n <tr *ngFor=\"let hdr of headerRows; let hr=index;\" role=\"row\">\n <!-- Details indicator column (if data has details) -->\n <th *ngIf=\"dataHasDetails && hr === 0\" [rowSpan]=\"headerRows.length\" class=\"detail-indicator-col\">\n <span>\n <i (click)=\"toggleAllDetails()\" [id]=\"tableId+'_ShowAllDetailsLink'\" class=\"bi\" [ngClass]=\"{'bi-chevron-down': showAllDetails, 'bi-chevron-right': !showAllDetails}\"\n [tooltip]=\"(showAllDetails ? 'Hide' : 'Show') + ' details for all rows'\" placement=\"right\">\n </i>\n </span>\n </th>\n <ng-template ngFor let-column [ngForOf]=\"hdr.columns\" let-c=\"index\">\n <!-- Header cell -->\n <th *ngIf=\"!column.hidden\" ngClass=\"{{column.className || ''}}\" [colSpan]=\"column.colspan || 1\" [rowSpan]=\"column.rowspan || 1\">\n <!-- Select all Rows Checkbox -->\n <div class=\"text-center\">\n <input *ngIf=\"column.selectColumn\" type=\"checkbox\" [checked]=\"allRowsSelected\" (change)=\"toggleAllRowsSelection()\">\n\n <!-- Header cell text with sort capability (if specified) -->\n <span [oepaTableSorting]=\"true\" [column]=\"column\" [tableId]=\"tableId\" (sortChanged)=\"onSortChanged($event)\" [id]=\"tableId+'_SortColumnLink_'+column.id\">\n <span *ngIf=\"column.sort\"><i class=\"pull-left bi\" [ngClass]=\"{'bi-chevron-down': column.sort === 'desc', 'bi-chevron-up': column.sort === 'asc'}\"></i>\n <sup *ngIf=\"column?.sortIndex || 0 > 1\">{{column.sortIndex}}</sup></span>\n {{column.title}}\n </span>\n <!-- button to allow column to be hidden (if specified) -->\n <button *ngIf=\"column.hidden === false\" type=\"button\" class=\"btn-close float-end\" aria-label=\"Hide\" (click)=\"hideColumn(column)\"\n [id]=\"tableId+'_HideColumnLink'+'_'+column.id\">\n </button>\n\n </div>\n <!-- column filter (if specified) -->\n <div *ngIf=\"((rows && rows.length > 0) || !noFilters()) && column.filterable\" >\n <input [oepaTableFiltering]=\"{ filterString: '', columnId: column.id }\" [tableId]=\"tableId\" class=\"form-control input-sm\" (tableChanged)=\"onFilterChanged($event)\"\n [id]=\"tableId+'_FilterColumn_'+column.id\" />\n </div>\n </th>\n </ng-template>\n </tr>\n</thead>\n\n<!-- This is the table body -->\n<tbody>\n <ng-template ngFor let-row [ngForOf]=\"rows\" let-r=\"index\">\n <!-- Data Row -->\n <tr>\n <td *ngIf=\"dataHasDetails\">\n <!-- Detail icon (if specified) -->\n <span *ngIf=\"row.showDetail === true || row.showDetail === false\">\n <i *ngIf=\"row.detailIconClassName\" [ngClass]=\"row.detailIconClassName\"></i>\n <i (click)=\"toggleRowDetail(row)\" [id]=\"tableId+'_ShowDetailLink_'+r\" class=\"bi\" [ngClass]=\"{'bi-chevron-down': row.showDetail, 'bi-chevron-right': !row.showDetail}\"\n [tooltip]=\"(row.showDetail ? 'Hide' : 'Show') + ' details for this row'\" placement=\"right\">\n </i>\n </span>\n </td>\n <!-- If row is a divider, it spans the whole table -->\n <!-- <td *ngIf=\"row.isDivider\" [colSpan]=\"visibleColumnCount + (dataHasDetails ? 1 : 0)\" [ngClass]=\"row.dividerClassName || 'oepa-table-gray'\">&nbsp;</td> -->\n <!-- Data Rows -->\n <ng-template *ngIf=\"!row.isDivider\" ngFor let-col [ngForOf]=\"dataColumns\" let-i=\"index\">\n <td *ngIf=\"!col.hidden && (row|cellColspan:col) > 0\" ngClass=\"{{row|cellClassname:col || ''}}\" [colSpan]=\"row|cellColspan:col\">\n <!-- Data Cell -->\n <div *ngIf=\"!col.actionColumn && !col.selectColumn && !col.singleSelectColumn\">\n <!-- Template for popover 1 -->\n <ng-template #popoverTemplate>\n <div *ngIf=\"row.popover\">\n <cml-template [templateInfo]=\"row.popover.content\"></cml-template>\n </div>\n </ng-template>\n <!-- Popover 1 icon (if specified) -->\n <span *ngIf=\"row.popover && i === (row.popoverColumnIndex || 0) && row.popover\" tabindex=\"0\" [popoverTitle]=\"row.popover.title\" [popover]=\"popoverTemplate\"\n [containerClass]=\"row.popover.containerClass\" placement=\"right\" [triggers]=\"row.popover.trigger || 'mouseenter:mouseleave'\">\n <i [ngClass]=\"row.popover.className\" [id]=\"tableId+'_PopoverLink_'+r\"></i>\n </span>\n\n <!-- Template for popover 2 -->\n <ng-template #popover2Template>\n <div *ngIf=\"row.popover2\">\n <cml-template [templateInfo]=\"row.popover2.content\"></cml-template>\n </div>\n </ng-template>\n <!-- Popover 2 icon (if specified) -->\n <span *ngIf=\"i === (row.popover2ColumnIndex || 0) && row.popover2\" tabindex=\"0\" [popoverTitle]=\"row.popover2.title\" [popover]=\"popover2Template\"\n [containerClass]=\"row.popover2.containerClass\" placement=\"right\" [triggers]=\"row.popover2.trigger || 'mouseenter:mouseleave'\">\n <i [ngClass]=\"row.popover2.className\" [id]=\"tableId+'_Popover2Link_'+r\"></i>\n </span>\n\n <!-- Template for popover 3 -->\n <ng-template #popover3Template>\n <div *ngIf=\"row.popover3\">\n <cml-template [templateInfo]=\"row.popover3.content\"></cml-template>\n </div>\n </ng-template>\n <!-- Popover 3 icon (if specified) -->\n <span *ngIf=\"i === (row.popover3ColumnIndex || 0) && row.popover3\" tabindex=\"0\" [popoverTitle]=\"row.popover3.title\" [popover]=\"popover3Template\"\n [containerClass]=\"row.popover3.containerClass\" placement=\"right\" [triggers]=\"row.popover3.trigger || 'mouseenter:mouseleave'\">\n <i [ngClass]=\"row.popover3.className\" [id]=\"tableId+'_Popover3Link_'+r\"></i>\n </span>\n\n \n <!-- <div *ngIf=\"row|cellInnerHTML:col\" [innerHTML]=\"row|cellInnerHTML:col\"></div>\n <span *ngIf=\"!(row|cellInnerHTML:col)\">{{row|cellValue:col}}</span> -->\n\n <!-- If col is hyperlink, display data as a hyperlink -->\n <button *ngIf=\"col.hyperlink\" type=\"button\" class=\"btn btn-link\" (click)=\"cellClick(row, col.id)\" [id]=\"tableId+'_CellClick_'+r+'_'+i\">\n <span *ngIf=\"!(row|cellInnerHTML:col)\">\n <i [ngClass]=\"row|cellIconClassname:col\"></i>\n <span *ngIf=\"row|cellImgSrc:col\"><img [src]=\"row|cellImgSrc:col\"/></span>\n {{row|cellValue:col}}\n </span>\n <div *ngIf=\"row|cellInnerHTML:col\" [innerHTML]=\"row|cellInnerHTML:col\"></div>\n </button>\n <!-- If col is NOT hyperlink, just display data -->\n <span *ngIf=\"!col.hyperlink\">\n <span *ngIf=\"!(row|cellInnerHTML:col)\">\n <i ngClass=\"{{row|cellIconClassname:col || ''}}\"></i>\n <span *ngIf=\"row|cellImgSrc:col\"><img [src]=\"row|cellImgSrc:col\"/></span>\n {{row|cellValue:col}}\n </span>\n <div *ngIf=\"row|cellInnerHTML:col\" [innerHTML]=\"row|cellInnerHTML:col\"></div>\n </span>\n </div>\n <!-- Select Cell -->\n <div *ngIf=\"col.selectColumn\" class=\"text-center\">\n <input [id]=\"tableId+'_'+r\" type=\"checkbox\" [disabled]=\"!row.selectable\" [checked]=\"row.selected\" (change)=\"toggleRowSelection(row)\">\n </div>\n <!-- Single Select Cell -->\n <div *ngIf=\"col.singleSelectColumn\" class=\"text-center\">\n <input [id]=\"tableId+'_singleSelect_'+r\" type=\"radio\" [disabled]=\"!row.selectable\" [checked]=\"row.selected\" (change)=\"singleRowSelection(row)\">\n </div>\n <!-- Action Button Cell -->\n <div *ngIf=\"col.actionColumn && row.actions\">\n <oepa-action-btn [actions]=\"row.actions\" [data]=\"row.dataSource\" (actionClicked)=\"onActionClick($event)\" [btnId]=\"tableId+'_'+r\"></oepa-action-btn>\n </div>\n </td>\n </ng-template>\n </tr>\n\n <!-- Detail Row -->\n <tr *ngIf=\"row.showDetail\" class=\"table-info\">\n <td [colSpan]=\"visibleColumnCount + (dataHasDetails ? 1 : 0)\">\n <cml-template [templateInfo]=\"row.detail\"></cml-template>\n </td>\n </tr>\n </ng-template>\n <tr *ngIf=\"totalRow\">\n <td *ngIf=\"dataHasDetails\">\n </td>\n <ng-template ngFor let-totalCol [ngForOf]=\"dataColumns\">\n <td *ngIf=\"!totalCol.hidden\" ngClass=\"{{totalRow|cellClassname:totalCol || ''}}\">\n <div>\n <span><i ngClass=\"{{totalRow|cellIconClassname:totalCol || ''}}\"></i>{{totalRow|cellValue:totalCol}}</span>\n </div>\n </td>\n </ng-template>\n </tr>\n</tbody>\n</table>\n</div>\n<!-- Table footer -->\n<form *ngIf=\"!config.hideFooter || (data && pageInfo.itemsPerPage < data.length)\" class=\"form-horizontal\">\n<div class=\"form-group row text-right\">\n <!-- Table-wide filter -->\n <div class=\"col-sm-4\">\n <div class=\"row\">\n <div class=\"col-sm-6\">\n <input *ngIf=\"!config.hideGlobalFilter\" placeholder=\"Filter all columns\" [oepaTableFiltering]=\"{ filterString: '' }\" [tableId]=\"tableId\" class=\"form-control input-sm\" (tableChanged)=\"onFilterChanged($event)\"\n [id]=\"tableId+'_FilterAllColumnsInput'\" />\n </div>\n <div class=\"col-sm-6\">\n <span *ngIf=\"config.showRowCountInFooter && _data && _data.length > 0\">\n <span class=\"badge badge-secondary\" style=\"color: #999\">{{_data.length}}</span>&nbsp;total rows\n </span>\n </div>\n </div>\n </div>\n <!-- Export Buttons -->\n <div class=\"col-sm-4 d-flex justify-content-center\">\n <div class=\"row\">\n <div class=\"col-sm-12 text-center\">\n <button type=\"button\" *ngIf=\"config.exportToExcel\" class=\"btn btn-primary mr-1\" (click)=\"exportToExcel()\" [id]=\"tableId+'_ExportToExcelBtn'\">Export to Excel</button>\n <button type=\"button\" *ngIf=\"config.exportToHTML\" class=\"btn btn-primary mr-1\" (click)=\"exportToHTML()\" [id]=\"tableId+'_ExportToHTMLBtn'\">Export to HTML</button>\n <button *ngIf=\"customBtnVisible\" type=\"button\" class=\"btn btn-primary mr-1\" (click)=\"onCustomBtnClick()\" [id]=\"tableId+'_CustomBtn'\" [disabled]=\"!customBtnEnabled\">{{customBtnLabel}}</button>\n </div>\n <div *ngIf=\"config.exportToExcel || config.exportToHTML\" class=\"col-sm-12 text-center\">\n <span>Export only visible data:&nbsp;\n <input type=\"checkbox\" [checked]=\"exportVisibleOnly\" (click)=\"toggleExportVisibleOnly()\" id=\"exportVisibleOnlyCheckbox\"/>\n </span>\n </div>\n </div>\n </div>\n <!-- Pagination -->\n <div *ngIf=\"!config.disablePagination\" class=\"col-sm-4 d-flex justify-content-end\">\n <pagination *ngIf=\"paginationOn\" class=\"pagination-sm\" [totalItems]=\"pageInfo.length\" [itemsPerPage]=\"pageInfo.itemsPerPage\" [maxSize]=\"pageInfo.maxSize\"\n [(ngModel)]=\"currentPage\" name=\"currentTablePage\"\n [boundaryLinks]=\"true\" [rotate]=\"false\" (pageChanged)=\"onPageChanged($event)\" (numPages)=\"pageInfo.numPages = $event\">\n </pagination>\n &nbsp;\n <button (click)=\"togglePagingation()\" type=\"button\" class=\"btn btn-default btn-sm mr-1\">{{ paginationOn ? 'Show All Rows' : 'Restore Pagination'}}</button>\n </div>\n</div>\n</form>", styles: [".pagination{margin:0}th.oepa-table-header-center{text-align:center}.oepa-table-bold{font-weight:700}.oepa-table-italic{font-style:italic}.oepa-table-line-through{text-decoration:line-through}.oepa-table-gray{background-color:#ddd}td.oepa-undeline-cell{border-bottom:1pt solid black}.detail-indicator-col{width:30px}.action-btn-col{width:90px}.select-col{width:20px}\n"] }]
1827
+ args: [{ selector: 'oepa-table', template: "<!-- Unhide select input - only visible if one or more columns are hidden -->\n\n<form *ngIf=\"hiddenColumns.length > 0\">\n <div class=\"row mb-2\">\n <label class=\"col-sm-2 col-form-label\">Show Hidden Columns:</label>\n <div class=\"col-sm-4\">\n <select class=\"form-select\" (change)=\"unhideColumn($any($event).target.value)\" [id]=\"tableId+'_UnhideColumnSelect'\">\n <option value=\"\">Choose a column</option>\n <option *ngFor=\"let col of hiddenColumns\" [value]=\"col.id\">{{col.title}}</option>\n </select>\n </div>\n </div>\n</form>\n<!-- This is the table -->\n<div ngClass=\"{{config.divClassName || ''}}\" >\n<table *ngIf=\"!config.hideTable\" class=\"table dataTable\" ngClass=\"{{config.className || ''}}\" role=\"grid\" style=\"width: 100%;\">\n\n<!-- This is the table header -->\n<thead>\n <!-- There may be multiple header rows -->\n <tr *ngFor=\"let hdr of headerRows; let hr=index;\" role=\"row\">\n <!-- Details indicator column (if data has details) -->\n <th *ngIf=\"dataHasDetails && hr === 0\" [rowSpan]=\"headerRows.length\" class=\"detail-indicator-col\">\n <span>\n <i (click)=\"toggleAllDetails()\" [id]=\"tableId+'_ShowAllDetailsLink'\" class=\"bi\" [ngClass]=\"{'bi-chevron-down': showAllDetails, 'bi-chevron-right': !showAllDetails}\"\n [tooltip]=\"(showAllDetails ? 'Hide' : 'Show') + ' details for all rows'\" placement=\"right\">\n </i>\n </span>\n </th>\n <ng-template ngFor let-column [ngForOf]=\"hdr.columns\" let-c=\"index\">\n <!-- Header cell -->\n <th *ngIf=\"!column.hidden\" ngClass=\"{{column.className || ''}}\" [colSpan]=\"column.colspan || 1\" [rowSpan]=\"column.rowspan || 1\">\n <!-- Select all Rows Checkbox -->\n <div class=\"text-center\">\n <input *ngIf=\"column.selectColumn\" type=\"checkbox\" [checked]=\"allRowsSelected\" (change)=\"toggleAllRowsSelection()\">\n\n <!-- Header cell text with sort capability (if specified) -->\n <span [oepaTableSorting]=\"true\" [column]=\"column\" [tableId]=\"tableId\" (sortChanged)=\"onSortChanged($event)\" [id]=\"tableId+'_SortColumnLink_'+column.id\">\n <span *ngIf=\"column.sort\"><i class=\"pull-left bi\" [ngClass]=\"{'bi-chevron-down': column.sort === 'desc', 'bi-chevron-up': column.sort === 'asc'}\"></i>\n <sup *ngIf=\"column?.sortIndex || 0 > 1\">{{column.sortIndex}}</sup></span>\n {{column.title}}\n </span>\n <!-- button to allow column to be hidden (if specified) -->\n <button *ngIf=\"column.hidden === false\" type=\"button\" class=\"btn-close float-end\" aria-label=\"Hide\" (click)=\"hideColumn(column)\"\n [id]=\"tableId+'_HideColumnLink'+'_'+column.id\">\n </button>\n\n </div>\n <!-- column filter (if specified) -->\n <div *ngIf=\"((rows && rows.length > 0) || !noFilters()) && column.filterable\" >\n <input [oepaTableFiltering]=\"{ filterString: '', columnId: column.id }\" [tableId]=\"tableId\" class=\"form-control input-sm\" (tableChanged)=\"onFilterChanged($event)\"\n [id]=\"tableId+'_FilterColumn_'+column.id\" />\n </div>\n </th>\n </ng-template>\n </tr>\n</thead>\n\n<!-- This is the table body -->\n<tbody>\n <ng-template ngFor let-row [ngForOf]=\"rows\" let-r=\"index\">\n <!-- Data Row -->\n <tr>\n <td *ngIf=\"dataHasDetails\">\n <!-- Detail icon (if specified) -->\n <span *ngIf=\"row.showDetail === true || row.showDetail === false\">\n <i *ngIf=\"row.detailIconClassName\" [ngClass]=\"row.detailIconClassName\"></i>\n <i (click)=\"toggleRowDetail(row)\" [id]=\"tableId+'_ShowDetailLink_'+r\" class=\"bi\" [ngClass]=\"{'bi-chevron-down': row.showDetail, 'bi-chevron-right': !row.showDetail}\"\n [tooltip]=\"(row.showDetail ? 'Hide' : 'Show') + ' details for this row'\" placement=\"right\">\n </i>\n </span>\n </td>\n <!-- If row is a divider, it spans the whole table -->\n <!-- <td *ngIf=\"row.isDivider\" [colSpan]=\"visibleColumnCount + (dataHasDetails ? 1 : 0)\" [ngClass]=\"row.dividerClassName || 'oepa-table-gray'\">&nbsp;</td> -->\n <!-- Data Rows -->\n <ng-template *ngIf=\"!row.isDivider\" ngFor let-col [ngForOf]=\"dataColumns\" let-i=\"index\">\n <td *ngIf=\"!col.hidden && (row|cellColspan:col) > 0\" ngClass=\"{{row|cellClassname:col || ''}}\" [colSpan]=\"row|cellColspan:col\">\n <!-- Data Cell -->\n <div *ngIf=\"!col.actionColumn && !col.selectColumn && !col.singleSelectColumn\">\n <!-- Template for popover 1 -->\n <ng-template #popoverTemplate>\n <div *ngIf=\"row.popover\">\n <cml-template [templateInfo]=\"row.popover.content\"></cml-template>\n </div>\n </ng-template>\n <!-- Popover 1 icon (if specified) -->\n <span *ngIf=\"row.popover && i === (row.popoverColumnIndex || 0) && row.popover\" tabindex=\"0\" [popoverTitle]=\"row.popover.title\" [popover]=\"popoverTemplate\"\n [containerClass]=\"row.popover.containerClass\" placement=\"right\" [triggers]=\"row.popover.trigger || 'mouseenter:mouseleave'\">\n <i [ngClass]=\"row.popover.className\" [id]=\"tableId+'_PopoverLink_'+r\"></i>\n </span>\n\n <!-- Template for popover 2 -->\n <ng-template #popover2Template>\n <div *ngIf=\"row.popover2\">\n <cml-template [templateInfo]=\"row.popover2.content\"></cml-template>\n </div>\n </ng-template>\n <!-- Popover 2 icon (if specified) -->\n <span *ngIf=\"i === (row.popover2ColumnIndex || 0) && row.popover2\" tabindex=\"0\" [popoverTitle]=\"row.popover2.title\" [popover]=\"popover2Template\"\n [containerClass]=\"row.popover2.containerClass\" placement=\"right\" [triggers]=\"row.popover2.trigger || 'mouseenter:mouseleave'\">\n <i [ngClass]=\"row.popover2.className\" [id]=\"tableId+'_Popover2Link_'+r\"></i>\n </span>\n\n <!-- Template for popover 3 -->\n <ng-template #popover3Template>\n <div *ngIf=\"row.popover3\">\n <cml-template [templateInfo]=\"row.popover3.content\"></cml-template>\n </div>\n </ng-template>\n <!-- Popover 3 icon (if specified) -->\n <span *ngIf=\"i === (row.popover3ColumnIndex || 0) && row.popover3\" tabindex=\"0\" [popoverTitle]=\"row.popover3.title\" [popover]=\"popover3Template\"\n [containerClass]=\"row.popover3.containerClass\" placement=\"right\" [triggers]=\"row.popover3.trigger || 'mouseenter:mouseleave'\">\n <i [ngClass]=\"row.popover3.className\" [id]=\"tableId+'_Popover3Link_'+r\"></i>\n </span>\n\n \n <!-- <div *ngIf=\"row|cellInnerHTML:col\" [innerHTML]=\"row|cellInnerHTML:col\"></div>\n <span *ngIf=\"!(row|cellInnerHTML:col)\">{{row|cellValue:col}}</span> -->\n\n <!-- If col is hyperlink, display data as a hyperlink -->\n <a *ngIf=\"col.hyperlink\" href=\"javascript:void(0);\" (click)=\"cellClick(row, col.id)\" [id]=\"tableId+'_CellClick_'+r+'_'+i\">\n <span *ngIf=\"!(row|cellInnerHTML:col)\">\n <i [ngClass]=\"row|cellIconClassname:col\"></i>\n <span *ngIf=\"row|cellImgSrc:col\"><img [src]=\"row|cellImgSrc:col\"/></span>\n {{row|cellValue:col}}\n </span>\n <div *ngIf=\"row|cellInnerHTML:col\" [innerHTML]=\"row|cellInnerHTML:col\"></div>\n </a>\n <!-- If col is NOT hyperlink, just display data -->\n <span *ngIf=\"!col.hyperlink\">\n <span *ngIf=\"!(row|cellInnerHTML:col)\">\n <i ngClass=\"{{row|cellIconClassname:col || ''}}\"></i>\n <span *ngIf=\"row|cellImgSrc:col\"><img [src]=\"row|cellImgSrc:col\"/></span>\n {{row|cellValue:col}}\n </span>\n <div *ngIf=\"row|cellInnerHTML:col\" [innerHTML]=\"row|cellInnerHTML:col\"></div>\n </span>\n </div>\n <!-- Select Cell -->\n <div *ngIf=\"col.selectColumn\" class=\"text-center\">\n <input [id]=\"tableId+'_'+r\" type=\"checkbox\" [disabled]=\"!row.selectable\" [checked]=\"row.selected\" (change)=\"toggleRowSelection(row)\">\n </div>\n <!-- Single Select Cell -->\n <div *ngIf=\"col.singleSelectColumn\" class=\"text-center\">\n <input [id]=\"tableId+'_singleSelect_'+r\" type=\"radio\" [disabled]=\"!row.selectable\" [checked]=\"row.selected\" (change)=\"singleRowSelection(row)\">\n </div>\n <!-- Action Button Cell -->\n <div *ngIf=\"col.actionColumn && row.actions\">\n <oepa-action-btn [actions]=\"row.actions\" [data]=\"row.dataSource\" (actionClicked)=\"onActionClick($event)\" [btnId]=\"tableId+'_'+r\"></oepa-action-btn>\n </div>\n </td>\n </ng-template>\n </tr>\n\n <!-- Detail Row -->\n <tr *ngIf=\"row.showDetail\" class=\"table-info\">\n <td [colSpan]=\"visibleColumnCount + (dataHasDetails ? 1 : 0)\">\n <cml-template [templateInfo]=\"row.detail\"></cml-template>\n </td>\n </tr>\n </ng-template>\n <tr *ngIf=\"totalRow\">\n <td *ngIf=\"dataHasDetails\">\n </td>\n <ng-template ngFor let-totalCol [ngForOf]=\"dataColumns\">\n <td *ngIf=\"!totalCol.hidden\" ngClass=\"{{totalRow|cellClassname:totalCol || ''}}\">\n <div>\n <span><i ngClass=\"{{totalRow|cellIconClassname:totalCol || ''}}\"></i>{{totalRow|cellValue:totalCol}}</span>\n </div>\n </td>\n </ng-template>\n </tr>\n</tbody>\n</table>\n</div>\n<!-- Table footer -->\n<form *ngIf=\"!config.hideFooter || (data && pageInfo.itemsPerPage < data.length)\" class=\"form-horizontal\">\n<div class=\"form-group row text-right\">\n <!-- Table-wide filter -->\n <div class=\"col-sm-4\">\n <div class=\"row\">\n <div class=\"col-sm-6\">\n <input *ngIf=\"!config.hideGlobalFilter\" placeholder=\"Filter all columns\" [oepaTableFiltering]=\"{ filterString: '' }\" [tableId]=\"tableId\" class=\"form-control input-sm\" (tableChanged)=\"onFilterChanged($event)\"\n [id]=\"tableId+'_FilterAllColumnsInput'\" />\n </div>\n <div class=\"col-sm-6\">\n <span *ngIf=\"config.showRowCountInFooter && _data && _data.length > 0\">\n <span class=\"badge badge-secondary\" style=\"color: #999\">{{_data.length}}</span>&nbsp;total rows\n </span>\n </div>\n </div>\n </div>\n <!-- Export Buttons -->\n <div class=\"col-sm-4 d-flex justify-content-center\">\n <div class=\"row\">\n <div class=\"col-sm-12 text-center\">\n <button type=\"button\" *ngIf=\"config.exportToExcel\" class=\"btn btn-primary mr-1\" (click)=\"exportToExcel()\" [id]=\"tableId+'_ExportToExcelBtn'\">Export to Excel</button>\n <button type=\"button\" *ngIf=\"config.exportToHTML\" class=\"btn btn-primary mr-1\" (click)=\"exportToHTML()\" [id]=\"tableId+'_ExportToHTMLBtn'\">Export to HTML</button>\n <button *ngIf=\"customBtnVisible\" type=\"button\" class=\"btn btn-primary mr-1\" (click)=\"onCustomBtnClick()\" [id]=\"tableId+'_CustomBtn'\" [disabled]=\"!customBtnEnabled\">{{customBtnLabel}}</button>\n </div>\n <div *ngIf=\"config.exportToExcel || config.exportToHTML\" class=\"col-sm-12 text-center\">\n <span>Export only visible data:&nbsp;\n <input type=\"checkbox\" [checked]=\"exportVisibleOnly\" (click)=\"toggleExportVisibleOnly()\" id=\"exportVisibleOnlyCheckbox\"/>\n </span>\n </div>\n </div>\n </div>\n <!-- Pagination -->\n <div *ngIf=\"!config.disablePagination\" class=\"col-sm-4 d-flex justify-content-end\">\n <pagination *ngIf=\"paginationOn\" class=\"pagination-sm\" [totalItems]=\"pageInfo.length\" [itemsPerPage]=\"pageInfo.itemsPerPage\" [maxSize]=\"pageInfo.maxSize\"\n [(ngModel)]=\"currentPage\" name=\"currentTablePage\"\n [boundaryLinks]=\"true\" [rotate]=\"false\" (pageChanged)=\"onPageChanged($event)\" (numPages)=\"pageInfo.numPages = $event\">\n </pagination>\n &nbsp;\n <button (click)=\"togglePagingation()\" type=\"button\" class=\"btn btn-default btn-sm mr-1\">{{ paginationOn ? 'Show All Rows' : 'Restore Pagination'}}</button>\n </div>\n</div>\n</form>", styles: [".pagination{margin:0}th.oepa-table-header-center{text-align:center}.oepa-table-bold{font-weight:700}.oepa-table-italic{font-style:italic}.oepa-table-line-through{text-decoration:line-through}.oepa-table-gray{background-color:#ddd}td.oepa-undeline-cell{border-bottom:1pt solid black}.detail-indicator-col{width:30px}.action-btn-col{width:90px}.select-col{width:20px}\n"] }]
1828
1828
  }], ctorParameters: () => [{ type: i1$3.DomSanitizer }, { type: TableService }, { type: TableExportService }, { type: i1$1.OepaFileUtilService }], propDecorators: { tableId: [{
1829
1829
  type: Input
1830
1830
  }], config: [{
@@ -7741,6 +7741,9 @@ class ShoppingCartService {
7741
7741
  this.ebizRootURL = ebizRootURL;
7742
7742
  this.paymentUrl = ebizRootURL + this.paymentUrl;
7743
7743
  }
7744
+ getEbizRootURL() {
7745
+ return this.ebizRootURL;
7746
+ }
7744
7747
  /**
7745
7748
  * Retrieve a shopping cart for the current user for the provided serviceName.
7746
7749
  * @param serviceName
@@ -7988,7 +7991,8 @@ class ShoppingCartViewComponent {
7988
7991
  this.shoppingCartService.checkOut(this.shoppingCart).subscribe({
7989
7992
  next: transactionID => {
7990
7993
  // navigate to CBOSS payment screen
7991
- window.location.href = '/portal/paymentSubmissionAction.po?transactionID=' + transactionID;
7994
+ const ebizRootURL = this.shoppingCartService.getEbizRootURL();
7995
+ window.location.href = ebizRootURL + '/portal/paymentSubmissionAction.po?transactionID=' + transactionID;
7992
7996
  }, error: err => {
7993
7997
  this.checkOutInProgress = false;
7994
7998
  this.errorMessage = 'Checkout failed: ' + err;