@ohioepa/oepa-ui-lib 2.0.24 → 2.0.25
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/esm2022/lib/action-btn/action-btn.component.mjs +30 -3
- package/esm2022/lib/action-btn-modal/action-btn-modal.component.mjs +1 -1
- package/esm2022/lib/table/table-data-cell/table-data-cell.component.mjs +1 -1
- package/esm2022/lib/table/table.component.mjs +7 -7
- package/fesm2022/ohioepa-oepa-ui-lib.mjs +37 -10
- package/fesm2022/ohioepa-oepa-ui-lib.mjs.map +1 -1
- package/lib/action-btn/action-btn.component.d.ts +5 -1
- package/ohioepa-oepa-ui-lib-2.0.25.tgz +0 -0
- package/package.json +1 -1
- package/ohioepa-oepa-ui-lib-2.0.24.tgz +0 -0
|
@@ -541,6 +541,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
541
541
|
class ActionBtnComponent {
|
|
542
542
|
sanitizer;
|
|
543
543
|
busy = false;
|
|
544
|
+
effectiveDropup = false;
|
|
544
545
|
actionMenuItems;
|
|
545
546
|
/** Emits true when dropdown opens, false when closes */
|
|
546
547
|
dropdownOpenChange = new EventEmitter();
|
|
@@ -556,6 +557,8 @@ class ActionBtnComponent {
|
|
|
556
557
|
normalSize = false;
|
|
557
558
|
/** dropup? */
|
|
558
559
|
dropup = false;
|
|
560
|
+
/** automatically open upward when there is not enough space below */
|
|
561
|
+
autoDropup = true;
|
|
559
562
|
/** Event emitted when an action is selected */
|
|
560
563
|
actionClicked = new EventEmitter();
|
|
561
564
|
constructor(sanitizer) {
|
|
@@ -603,9 +606,31 @@ class ActionBtnComponent {
|
|
|
603
606
|
return;
|
|
604
607
|
}
|
|
605
608
|
// Open first, then move focus into the menu.
|
|
609
|
+
this.updateDropDirection();
|
|
606
610
|
toggleBtn.click();
|
|
607
611
|
setTimeout(() => this.focusFirstOrLastItem(event.key));
|
|
608
612
|
}
|
|
613
|
+
updateDropDirection() {
|
|
614
|
+
if (this.dropup) {
|
|
615
|
+
this.effectiveDropup = true;
|
|
616
|
+
return;
|
|
617
|
+
}
|
|
618
|
+
if (!this.autoDropup) {
|
|
619
|
+
this.effectiveDropup = false;
|
|
620
|
+
return;
|
|
621
|
+
}
|
|
622
|
+
const toggleButton = document.getElementById(this.getID());
|
|
623
|
+
if (!toggleButton) {
|
|
624
|
+
this.effectiveDropup = false;
|
|
625
|
+
return;
|
|
626
|
+
}
|
|
627
|
+
const buttonRect = toggleButton.getBoundingClientRect();
|
|
628
|
+
const actionCount = this.actions && this.actions.length ? this.actions.length : 1;
|
|
629
|
+
const estimatedMenuHeight = Math.min(actionCount, 10) * 36 + 16;
|
|
630
|
+
const spaceAbove = buttonRect.top;
|
|
631
|
+
const spaceBelow = window.innerHeight - buttonRect.bottom;
|
|
632
|
+
this.effectiveDropup = spaceBelow < estimatedMenuHeight && spaceAbove > spaceBelow;
|
|
633
|
+
}
|
|
609
634
|
onMenuKeydown(event) {
|
|
610
635
|
const handledKeys = ['ArrowDown', 'ArrowUp', 'Home', 'End', 'Escape'];
|
|
611
636
|
if (!handledKeys.includes(event.key)) {
|
|
@@ -668,11 +693,11 @@ class ActionBtnComponent {
|
|
|
668
693
|
}
|
|
669
694
|
}
|
|
670
695
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ActionBtnComponent, deps: [{ token: i1$3.DomSanitizer }], target: i0.ɵɵFactoryTarget.Component });
|
|
671
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: ActionBtnComponent, selector: "oepa-action-btn", inputs: { label: "label", btnId: "btnId", data: "data", actions: "actions", normalSize: "normalSize", dropup: "dropup" }, outputs: { dropdownOpenChange: "dropdownOpenChange", actionClicked: "actionClicked" }, viewQueries: [{ propertyName: "actionMenuItems", predicate: ["actionMenuItem"], descendants: true }], ngImport: i0, template: "<div *ngIf=\"actions && actions.length > 0\" class=\"btn-group\" dropdown [dropup]=\"
|
|
696
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: ActionBtnComponent, selector: "oepa-action-btn", inputs: { label: "label", btnId: "btnId", data: "data", actions: "actions", normalSize: "normalSize", dropup: "dropup", autoDropup: "autoDropup" }, outputs: { dropdownOpenChange: "dropdownOpenChange", actionClicked: "actionClicked" }, viewQueries: [{ propertyName: "actionMenuItems", predicate: ["actionMenuItem"], descendants: true }], ngImport: i0, template: "<div *ngIf=\"actions && actions.length > 0\" class=\"btn-group\" dropdown [container]=\"'body'\" [placement]=\"effectiveDropup ? 'top right' : 'bottom right'\" [dropup]=\"effectiveDropup\" role=\"group\" aria-label=\"Action Button Group\" (onShown)=\"dropdownOpened()\" (onHidden)=\"dropdownClosed()\">\n <button dropdownToggle type=\"button\" class=\"btn btn-primary dropdown-toggle\" [ngClass]=\"{ 'btn-sm' : !normalSize }\"\n (click)=\"updateDropDirection()\"\n (keydown)=\"onToggleKeydown($event)\"\n [id]=\"btnId+'_ActionBtn'\" aria-label=\"Action Button\" aria-haspopup=\"true\" aria-expanded=\"false\">\n <span *ngIf=\"busy\" class=\"spinner-border text-primary\" role=\"status\" aria-label=\"Loading\"></span>\n {{label}} \n <span class=\"caret\" aria-hidden=\"true\"></span>\n </button>\n\n <ul *dropdownMenu class=\"oepa-action-menu dropdown-menu dropdown-menu-end\" role=\"menu\" aria-label=\"Action Menu\" (keydown)=\"onMenuKeydown($event)\">\n <li *ngFor=\"let action of actions; let i = index;\" role=\"menuitem\">\n <a *ngIf=\"!busy\" #actionMenuItem class=\"dropdown-item\" (click)=\"onActionClicked(action)\"\n (keydown.enter)=\"onActionClicked(action); $event.preventDefault(); $event.stopPropagation()\"\n (keydown.space)=\"onActionClicked(action); $event.preventDefault(); $event.stopPropagation()\"\n [id]=\"btnId+'_ActionLink_'+i\" [attr.aria-label]=\"action.title\" tabindex=\"0\">\n <i ngClass=\"{{action.className || ''}}\" aria-hidden=\"true\"></i> {{action.title}}\n </a>\n </li>\n </ul>\n</div> \n<!-- display disabled button if no actions are available -->\n<div *ngIf=\"!actions || actions.length === 0\">\n <button type=\"button\" class=\"btn btn-primary\" [ngClass]=\"{ 'btn-sm' : !normalSize }\" [id]=\"btnId+'_ActionBtn'\" disabled aria-label=\"No actions available\">\n N/A \n </button>\n</div>", styles: [".oepa-action-menu{z-index:1000}\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: i3.BsDropdownMenuDirective, selector: "[bsDropdownMenu],[dropdownMenu]", exportAs: ["bs-dropdown-menu"] }, { kind: "directive", type: i3.BsDropdownToggleDirective, selector: "[bsDropdownToggle],[dropdownToggle]", exportAs: ["bs-dropdown-toggle"] }, { kind: "directive", type: i3.BsDropdownDirective, selector: "[bsDropdown], [dropdown]", inputs: ["placement", "triggers", "container", "dropup", "autoClose", "isAnimated", "insideClick", "isDisabled", "isOpen"], outputs: ["isOpenChange", "onShown", "onHidden"], exportAs: ["bs-dropdown"] }] });
|
|
672
697
|
}
|
|
673
698
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ActionBtnComponent, decorators: [{
|
|
674
699
|
type: Component,
|
|
675
|
-
args: [{ selector: 'oepa-action-btn', template: "<div *ngIf=\"actions && actions.length > 0\" class=\"btn-group\" dropdown [dropup]=\"
|
|
700
|
+
args: [{ selector: 'oepa-action-btn', template: "<div *ngIf=\"actions && actions.length > 0\" class=\"btn-group\" dropdown [container]=\"'body'\" [placement]=\"effectiveDropup ? 'top right' : 'bottom right'\" [dropup]=\"effectiveDropup\" role=\"group\" aria-label=\"Action Button Group\" (onShown)=\"dropdownOpened()\" (onHidden)=\"dropdownClosed()\">\n <button dropdownToggle type=\"button\" class=\"btn btn-primary dropdown-toggle\" [ngClass]=\"{ 'btn-sm' : !normalSize }\"\n (click)=\"updateDropDirection()\"\n (keydown)=\"onToggleKeydown($event)\"\n [id]=\"btnId+'_ActionBtn'\" aria-label=\"Action Button\" aria-haspopup=\"true\" aria-expanded=\"false\">\n <span *ngIf=\"busy\" class=\"spinner-border text-primary\" role=\"status\" aria-label=\"Loading\"></span>\n {{label}} \n <span class=\"caret\" aria-hidden=\"true\"></span>\n </button>\n\n <ul *dropdownMenu class=\"oepa-action-menu dropdown-menu dropdown-menu-end\" role=\"menu\" aria-label=\"Action Menu\" (keydown)=\"onMenuKeydown($event)\">\n <li *ngFor=\"let action of actions; let i = index;\" role=\"menuitem\">\n <a *ngIf=\"!busy\" #actionMenuItem class=\"dropdown-item\" (click)=\"onActionClicked(action)\"\n (keydown.enter)=\"onActionClicked(action); $event.preventDefault(); $event.stopPropagation()\"\n (keydown.space)=\"onActionClicked(action); $event.preventDefault(); $event.stopPropagation()\"\n [id]=\"btnId+'_ActionLink_'+i\" [attr.aria-label]=\"action.title\" tabindex=\"0\">\n <i ngClass=\"{{action.className || ''}}\" aria-hidden=\"true\"></i> {{action.title}}\n </a>\n </li>\n </ul>\n</div> \n<!-- display disabled button if no actions are available -->\n<div *ngIf=\"!actions || actions.length === 0\">\n <button type=\"button\" class=\"btn btn-primary\" [ngClass]=\"{ 'btn-sm' : !normalSize }\" [id]=\"btnId+'_ActionBtn'\" disabled aria-label=\"No actions available\">\n N/A \n </button>\n</div>", styles: [".oepa-action-menu{z-index:1000}\n"] }]
|
|
676
701
|
}], ctorParameters: () => [{ type: i1$3.DomSanitizer }], propDecorators: { actionMenuItems: [{
|
|
677
702
|
type: ViewChildren,
|
|
678
703
|
args: ['actionMenuItem']
|
|
@@ -690,6 +715,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
690
715
|
type: Input
|
|
691
716
|
}], dropup: [{
|
|
692
717
|
type: Input
|
|
718
|
+
}], autoDropup: [{
|
|
719
|
+
type: Input
|
|
693
720
|
}], actionClicked: [{
|
|
694
721
|
type: Output
|
|
695
722
|
}] } });
|
|
@@ -703,7 +730,7 @@ class ActionBtnModalComponent {
|
|
|
703
730
|
ngOnInit() {
|
|
704
731
|
}
|
|
705
732
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ActionBtnModalComponent, deps: [{ token: i2$1.BsModalRef }], target: i0.ɵɵFactoryTarget.Component });
|
|
706
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: ActionBtnModalComponent, selector: "oepa-action-btn-modal", ngImport: i0, template: "<div class=\"modal-header\" role=\"banner\">\n <h1 class=\"modal-title pull-left\" id=\"actionBtnModalTitle\">Action Button Test</h1>\n <button type=\"button\" class=\"btn-close float-end\" aria-label=\"Close\" (click)=\"bsModalRef.hide()\"></button>\n</div>\n<div class=\"modal-body\" role=\"dialog\" aria-labelledby=\"actionBtnModalTitle\">\n <div class=\"row\">\n <div class=\"col-sm-12 text-center\">\n <oepa-action-btn [actions]=\"actions\"></oepa-action-btn>\n </div>\n <div class=\"row\">\n <div class=\"col-sm-12 text-center\">\n <div class=\"btn-group\" dropdown placement=\"bottom right\" role=\"group\" aria-label=\"Button Dropdown Group\">\n <button id=\"button-basic\" dropdownToggle type=\"button\" class=\"btn btn-primary dropdown-toggle\"\n aria-controls=\"dropdown-basic\" aria-label=\"Button dropdown\" aria-haspopup=\"true\" aria-expanded=\"false\">\n Button dropdown <span class=\"caret\" aria-hidden=\"true\"></span>\n </button>\n <ul id=\"dropdown-basic\" *dropdownMenu class=\"dropdown-menu\" role=\"menu\" aria-label=\"Dropdown Menu\" aria-labelledby=\"button-basic\">\n <li role=\"menuitem\"><a class=\"dropdown-item\" href=\"#\" tabindex=\"0\">Action</a></li>\n <li role=\"menuitem\"><a class=\"dropdown-item\" href=\"#\" tabindex=\"0\">Another action</a></li>\n <li role=\"menuitem\"><a class=\"dropdown-item\" href=\"#\" tabindex=\"0\">Something else here</a></li>\n <li class=\"divider dropdown-divider\" aria-hidden=\"true\"></li>\n <li role=\"menuitem\"><a class=\"dropdown-item\" href=\"#\" tabindex=\"0\">Separated link</a></li>\n </ul>\n </div>\n </div>\n </div>\n </div>\n</div>\n<div class=\"modal-footer\" role=\"contentinfo\">\n <button type=\"button\" class=\"btn btn-primary mr-1\" (click)=\"bsModalRef.hide()\" aria-label=\"Close\">Close</button>\n</div>", styles: [""], dependencies: [{ kind: "directive", type: i3.BsDropdownMenuDirective, selector: "[bsDropdownMenu],[dropdownMenu]", exportAs: ["bs-dropdown-menu"] }, { kind: "directive", type: i3.BsDropdownToggleDirective, selector: "[bsDropdownToggle],[dropdownToggle]", exportAs: ["bs-dropdown-toggle"] }, { kind: "directive", type: i3.BsDropdownDirective, selector: "[bsDropdown], [dropdown]", inputs: ["placement", "triggers", "container", "dropup", "autoClose", "isAnimated", "insideClick", "isDisabled", "isOpen"], outputs: ["isOpenChange", "onShown", "onHidden"], exportAs: ["bs-dropdown"] }, { kind: "component", type: ActionBtnComponent, selector: "oepa-action-btn", inputs: ["label", "btnId", "data", "actions", "normalSize", "dropup"], outputs: ["dropdownOpenChange", "actionClicked"] }] });
|
|
733
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: ActionBtnModalComponent, selector: "oepa-action-btn-modal", ngImport: i0, template: "<div class=\"modal-header\" role=\"banner\">\n <h1 class=\"modal-title pull-left\" id=\"actionBtnModalTitle\">Action Button Test</h1>\n <button type=\"button\" class=\"btn-close float-end\" aria-label=\"Close\" (click)=\"bsModalRef.hide()\"></button>\n</div>\n<div class=\"modal-body\" role=\"dialog\" aria-labelledby=\"actionBtnModalTitle\">\n <div class=\"row\">\n <div class=\"col-sm-12 text-center\">\n <oepa-action-btn [actions]=\"actions\"></oepa-action-btn>\n </div>\n <div class=\"row\">\n <div class=\"col-sm-12 text-center\">\n <div class=\"btn-group\" dropdown placement=\"bottom right\" role=\"group\" aria-label=\"Button Dropdown Group\">\n <button id=\"button-basic\" dropdownToggle type=\"button\" class=\"btn btn-primary dropdown-toggle\"\n aria-controls=\"dropdown-basic\" aria-label=\"Button dropdown\" aria-haspopup=\"true\" aria-expanded=\"false\">\n Button dropdown <span class=\"caret\" aria-hidden=\"true\"></span>\n </button>\n <ul id=\"dropdown-basic\" *dropdownMenu class=\"dropdown-menu\" role=\"menu\" aria-label=\"Dropdown Menu\" aria-labelledby=\"button-basic\">\n <li role=\"menuitem\"><a class=\"dropdown-item\" href=\"#\" tabindex=\"0\">Action</a></li>\n <li role=\"menuitem\"><a class=\"dropdown-item\" href=\"#\" tabindex=\"0\">Another action</a></li>\n <li role=\"menuitem\"><a class=\"dropdown-item\" href=\"#\" tabindex=\"0\">Something else here</a></li>\n <li class=\"divider dropdown-divider\" aria-hidden=\"true\"></li>\n <li role=\"menuitem\"><a class=\"dropdown-item\" href=\"#\" tabindex=\"0\">Separated link</a></li>\n </ul>\n </div>\n </div>\n </div>\n </div>\n</div>\n<div class=\"modal-footer\" role=\"contentinfo\">\n <button type=\"button\" class=\"btn btn-primary mr-1\" (click)=\"bsModalRef.hide()\" aria-label=\"Close\">Close</button>\n</div>", styles: [""], dependencies: [{ kind: "directive", type: i3.BsDropdownMenuDirective, selector: "[bsDropdownMenu],[dropdownMenu]", exportAs: ["bs-dropdown-menu"] }, { kind: "directive", type: i3.BsDropdownToggleDirective, selector: "[bsDropdownToggle],[dropdownToggle]", exportAs: ["bs-dropdown-toggle"] }, { kind: "directive", type: i3.BsDropdownDirective, selector: "[bsDropdown], [dropdown]", inputs: ["placement", "triggers", "container", "dropup", "autoClose", "isAnimated", "insideClick", "isDisabled", "isOpen"], outputs: ["isOpenChange", "onShown", "onHidden"], exportAs: ["bs-dropdown"] }, { kind: "component", type: ActionBtnComponent, selector: "oepa-action-btn", inputs: ["label", "btnId", "data", "actions", "normalSize", "dropup", "autoDropup"], outputs: ["dropdownOpenChange", "actionClicked"] }] });
|
|
707
734
|
}
|
|
708
735
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ActionBtnModalComponent, decorators: [{
|
|
709
736
|
type: Component,
|
|
@@ -1271,12 +1298,12 @@ class TableComponent {
|
|
|
1271
1298
|
/** Called when any oepa-action-btn dropdown open/close changes */
|
|
1272
1299
|
onDropdownOpenChange(isOpen) {
|
|
1273
1300
|
// Wait for DOM class updates from dropdown directive before measuring.
|
|
1274
|
-
setTimeout(() => this.updateDropdownFillerState());
|
|
1301
|
+
setTimeout(() => this.updateDropdownFillerState(isOpen));
|
|
1275
1302
|
}
|
|
1276
|
-
updateDropdownFillerState() {
|
|
1303
|
+
updateDropdownFillerState(isOpen) {
|
|
1277
1304
|
const host = this.elementRef.nativeElement;
|
|
1278
|
-
const openMenus = Array.from(
|
|
1279
|
-
this.isAnyActionDropdownOpen = openMenus.length > 0;
|
|
1305
|
+
const openMenus = Array.from(document.querySelectorAll('.oepa-action-menu.show'));
|
|
1306
|
+
this.isAnyActionDropdownOpen = typeof isOpen === 'boolean' ? isOpen : openMenus.length > 0;
|
|
1280
1307
|
if (!this.addActionFiller || !this.isAnyActionDropdownOpen) {
|
|
1281
1308
|
this.actionFillerHeight = 0;
|
|
1282
1309
|
return;
|
|
@@ -1965,11 +1992,11 @@ class TableComponent {
|
|
|
1965
1992
|
this.customBtnClicked.emit();
|
|
1966
1993
|
}
|
|
1967
1994
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: TableComponent, deps: [{ token: i1$3.DomSanitizer }, { token: i0.ElementRef }, { token: TableService }, { token: TableExportService }, { token: i1$1.OepaFileUtilService }], target: i0.ɵɵFactoryTarget.Component });
|
|
1968
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: TableComponent, selector: "oepa-table", inputs: { tableId: "tableId", addActionFiller: "addActionFiller", 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\" aria-label=\"Show hidden columns\">\n <div class=\"row mb-2\">\n <label class=\"col-sm-2 col-form-label\" [for]=\"tableId+'_UnhideColumnSelect'\">Show Hidden Columns:</label>\n <div class=\"col-sm-4\">\n <select class=\"form-select\" (change)=\"unhideColumn($any($event).target.value)\" [id]=\"tableId+'_UnhideColumnSelect'\" aria-label=\"Select column to unhide\">\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]=\"['oepa-table-scroll-container', config.divClassName || '']\">\n<table *ngIf=\"!config.hideTable\" class=\"table dataTable\" [ngClass]=\"config.className || ''\" role=\"table\" style=\"width: 100%;\" aria-label=\"Data table\">\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\" scope=\"col\">\n <span class=\"sr-only\">Row details</span>\n <button type=\"button\" class=\"btn btn-link p-0\" (click)=\"toggleAllDetails()\" [id]=\"tableId+'_ShowAllDetailsLink'\" [attr.aria-pressed]=\"showAllDetails\" [attr.aria-label]=\"(showAllDetails ? 'Hide' : 'Show') + ' details for all rows'\">\n <i class=\"bi\" [ngClass]=\"{'bi-chevron-down': showAllDetails, 'bi-chevron-right': !showAllDetails}\" aria-hidden=\"true\"></i>\n </button>\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\" scope=\"col\">\n <!-- Select all Rows Checkbox -->\n <div class=\"text-center\">\n <input *ngIf=\"column.selectColumn\" type=\"checkbox\" [checked]=\"allRowsSelected\" (change)=\"toggleAllRowsSelection()\" [attr.aria-label]=\"'Select all rows'\">\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\" tabindex=\"0\" role=\"button\" [attr.aria-label]=\"'Sort by ' + column.title\">\n <span *ngIf=\"column.sort\"><i class=\"pull-left bi\" [ngClass]=\"{'bi-chevron-down': column.sort === 'desc', 'bi-chevron-up': column.sort === 'asc'}\" aria-hidden=\"true\"></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 column\" (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\" [attr.aria-label]=\"'Filter for ' + column.title\" />\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\" aria-hidden=\"true\"></i>\n <button type=\"button\" class=\"btn btn-link p-0\" (click)=\"toggleRowDetail(row)\" [id]=\"tableId+'_ShowDetailLink_'+r\" [attr.aria-pressed]=\"row.showDetail\" [attr.aria-label]=\"(row.showDetail ? 'Hide' : 'Show') + ' details for this row'\">\n <i class=\"bi\" [ngClass]=\"{'bi-chevron-down': row.showDetail, 'bi-chevron-right': !row.showDetail}\" aria-hidden=\"true\"></i>\n </button>\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'\"> </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\" tabindex=\"0\" role=\"button\" [attr.aria-label]=\"'Activate ' + (col.title || 'cell')\">\n <span *ngIf=\"!(row|cellInnerHTML:col)\">\n <i [ngClass]=\"row|cellIconClassname:col\" aria-hidden=\"true\"></i>\n <span *ngIf=\"row|cellImgSrc:col\"><img [src]=\"row|cellImgSrc:col\" alt=\"\"/></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 || ''}}\" aria-hidden=\"true\"></i>\n <span *ngIf=\"row|cellImgSrc:col\"><img [src]=\"row|cellImgSrc:col\" alt=\"\"/></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)\" [attr.aria-label]=\"'Select row ' + (r+1)\">\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)\" [attr.aria-label]=\"'Select row ' + (r+1)\">\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\" (dropdownOpenChange)=\"onDropdownOpenChange($event)\"></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'\" aria-label=\"Filter all columns in table\" type=\"search\" />\n </div>\n <div class=\"col-sm-6\">\n <span *ngIf=\"config.showRowCountInFooter && _data && _data.length > 0\">\n {{_data.length}} 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'\" aria-label=\"Export to Excel\">Export to Excel</button>\n <button type=\"button\" *ngIf=\"config.exportToHTML\" class=\"btn btn-primary mr-1\" (click)=\"exportToHTML()\" [id]=\"tableId+'_ExportToHTMLBtn'\" aria-label=\"Export to HTML\">Export to HTML</button>\n <button *ngIf=\"customBtnVisible\" type=\"button\" class=\"btn btn-primary mr-1\" (click)=\"onCustomBtnClick()\" [id]=\"tableId+'_CustomBtn'\" [disabled]=\"!customBtnEnabled\" [attr.aria-label]=\"customBtnLabel\">{{customBtnLabel}}</button>\n </div>\n <div *ngIf=\"config.exportToExcel || config.exportToHTML\" class=\"col-sm-12 text-center\">\n <span>Export only visible data: \n <input type=\"checkbox\" [checked]=\"exportVisibleOnly\" (click)=\"toggleExportVisibleOnly()\" id=\"exportVisibleOnlyCheckbox\" aria-label=\"Export only visible data\"/>\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 aria-label=\"Table pagination\">\n </pagination>\n \n <button (click)=\"togglePagingation()\" type=\"button\" class=\"btn btn-default btn-sm mr-1\" [attr.aria-label]=\"paginationOn ? 'Show All Rows' : 'Restore Pagination'\">{{ paginationOn ? 'Show All Rows' : 'Restore Pagination'}}</button>\n </div>\n</div>\n</form>\n<div class=\"expansion-filler\" *ngIf=\"addActionFiller && isAnyActionDropdownOpen\" [style.height.px]=\"actionFillerHeight\"></div>", 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}.tall-expansion-panel .mat-expansion-panel-content{min-height:700px;padding-bottom:96px}.expansion-filler{width:100%;pointer-events:none;background:transparent}.oepa-table-scroll-container{width:100%;overflow-x:auto}\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: "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: ["dropdownOpenChange", "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" }] });
|
|
1995
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: TableComponent, selector: "oepa-table", inputs: { tableId: "tableId", addActionFiller: "addActionFiller", 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\" aria-label=\"Show hidden columns\">\n <div class=\"row mb-2\">\n <label class=\"col-sm-2 col-form-label\" [for]=\"tableId+'_UnhideColumnSelect'\">Show Hidden Columns:</label>\n <div class=\"col-sm-4\">\n <select class=\"form-select\" (change)=\"unhideColumn($any($event).target.value)\" [id]=\"tableId+'_UnhideColumnSelect'\" aria-label=\"Select column to unhide\">\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]=\"['oepa-table-scroll-container', config.divClassName || '']\">\n<table *ngIf=\"!config.hideTable\" class=\"table dataTable\" [ngClass]=\"config.className || ''\" role=\"table\" style=\"width: 100%;\" aria-label=\"Data table\">\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\" scope=\"col\">\n <span class=\"sr-only\">Row details</span>\n <button type=\"button\" class=\"btn btn-link p-0\" (click)=\"toggleAllDetails()\" [id]=\"tableId+'_ShowAllDetailsLink'\" [attr.aria-pressed]=\"showAllDetails\" [attr.aria-label]=\"(showAllDetails ? 'Hide' : 'Show') + ' details for all rows'\">\n <i class=\"bi\" [ngClass]=\"{'bi-chevron-down': showAllDetails, 'bi-chevron-right': !showAllDetails}\" aria-hidden=\"true\"></i>\n </button>\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\" scope=\"col\">\n <!-- Select all Rows Checkbox -->\n <div class=\"text-center\">\n <input *ngIf=\"column.selectColumn\" type=\"checkbox\" [checked]=\"allRowsSelected\" (change)=\"toggleAllRowsSelection()\" [attr.aria-label]=\"'Select all rows'\">\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\" tabindex=\"0\" role=\"button\" [attr.aria-label]=\"'Sort by ' + column.title\">\n <span *ngIf=\"column.sort\"><i class=\"pull-left bi\" [ngClass]=\"{'bi-chevron-down': column.sort === 'desc', 'bi-chevron-up': column.sort === 'asc'}\" aria-hidden=\"true\"></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 column\" (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\" [attr.aria-label]=\"'Filter for ' + column.title\" />\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\" aria-hidden=\"true\"></i>\n <button type=\"button\" class=\"btn btn-link p-0\" (click)=\"toggleRowDetail(row)\" [id]=\"tableId+'_ShowDetailLink_'+r\" [attr.aria-pressed]=\"row.showDetail\" [attr.aria-label]=\"(row.showDetail ? 'Hide' : 'Show') + ' details for this row'\">\n <i class=\"bi\" [ngClass]=\"{'bi-chevron-down': row.showDetail, 'bi-chevron-right': !row.showDetail}\" aria-hidden=\"true\"></i>\n </button>\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'\"> </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\" tabindex=\"0\" role=\"button\" [attr.aria-label]=\"'Activate ' + (col.title || 'cell')\">\n <span *ngIf=\"!(row|cellInnerHTML:col)\">\n <i [ngClass]=\"row|cellIconClassname:col\" aria-hidden=\"true\"></i>\n <span *ngIf=\"row|cellImgSrc:col\"><img [src]=\"row|cellImgSrc:col\" alt=\"\"/></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 || ''}}\" aria-hidden=\"true\"></i>\n <span *ngIf=\"row|cellImgSrc:col\"><img [src]=\"row|cellImgSrc:col\" alt=\"\"/></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)\" [attr.aria-label]=\"'Select row ' + (r+1)\">\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)\" [attr.aria-label]=\"'Select row ' + (r+1)\">\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\" (dropdownOpenChange)=\"onDropdownOpenChange($event)\"></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'\" aria-label=\"Filter all columns in table\" type=\"search\" />\n </div>\n <div class=\"col-sm-6\">\n <span *ngIf=\"config.showRowCountInFooter && _data && _data.length > 0\">\n {{_data.length}} 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'\" aria-label=\"Export to Excel\">Export to Excel</button>\n <button type=\"button\" *ngIf=\"config.exportToHTML\" class=\"btn btn-primary mr-1\" (click)=\"exportToHTML()\" [id]=\"tableId+'_ExportToHTMLBtn'\" aria-label=\"Export to HTML\">Export to HTML</button>\n <button *ngIf=\"customBtnVisible\" type=\"button\" class=\"btn btn-primary mr-1\" (click)=\"onCustomBtnClick()\" [id]=\"tableId+'_CustomBtn'\" [disabled]=\"!customBtnEnabled\" [attr.aria-label]=\"customBtnLabel\">{{customBtnLabel}}</button>\n </div>\n <div *ngIf=\"config.exportToExcel || config.exportToHTML\" class=\"col-sm-12 text-center\">\n <span>Export only visible data: \n <input type=\"checkbox\" [checked]=\"exportVisibleOnly\" (click)=\"toggleExportVisibleOnly()\" id=\"exportVisibleOnlyCheckbox\" aria-label=\"Export only visible data\"/>\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 aria-label=\"Table pagination\">\n </pagination>\n \n <button (click)=\"togglePagingation()\" type=\"button\" class=\"btn btn-default btn-sm mr-1\" [attr.aria-label]=\"paginationOn ? 'Show All Rows' : 'Restore Pagination'\">{{ paginationOn ? 'Show All Rows' : 'Restore Pagination'}}</button>\n </div>\n</div>\n</form>\n<div class=\"expansion-filler\" *ngIf=\"addActionFiller && isAnyActionDropdownOpen\" [style.height.px]=\"actionFillerHeight\"></div>", 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}.tall-expansion-panel .mat-expansion-panel-content{min-height:700px;padding-bottom:96px}.expansion-filler{width:100%;pointer-events:none;background:transparent}.oepa-table-scroll-container{width:100%;overflow-x:auto}\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: "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", "autoDropup"], outputs: ["dropdownOpenChange", "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" }] });
|
|
1969
1996
|
}
|
|
1970
1997
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: TableComponent, decorators: [{
|
|
1971
1998
|
type: Component,
|
|
1972
|
-
args: [{ selector: 'oepa-table', template: "<!-- Unhide select input - only visible if one or more columns are hidden -->\n\n<form *ngIf=\"hiddenColumns.length > 0\" aria-label=\"Show hidden columns\">\n <div class=\"row mb-2\">\n <label class=\"col-sm-2 col-form-label\" [for]=\"tableId+'_UnhideColumnSelect'\">Show Hidden Columns:</label>\n <div class=\"col-sm-4\">\n <select class=\"form-select\" (change)=\"unhideColumn($any($event).target.value)\" [id]=\"tableId+'_UnhideColumnSelect'\" aria-label=\"Select column to unhide\">\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]=\"['oepa-table-scroll-container', config.divClassName || '']\">\n<table *ngIf=\"!config.hideTable\" class=\"table dataTable\" [ngClass]=\"config.className || ''\" role=\"table\" style=\"width: 100%;\" aria-label=\"Data table\">\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\" scope=\"col\">\n <span class=\"sr-only\">Row details</span>\n <button type=\"button\" class=\"btn btn-link p-0\" (click)=\"toggleAllDetails()\" [id]=\"tableId+'_ShowAllDetailsLink'\" [attr.aria-pressed]=\"showAllDetails\" [attr.aria-label]=\"(showAllDetails ? 'Hide' : 'Show') + ' details for all rows'\">\n <i class=\"bi\" [ngClass]=\"{'bi-chevron-down': showAllDetails, 'bi-chevron-right': !showAllDetails}\" aria-hidden=\"true\"></i>\n </button>\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\" scope=\"col\">\n <!-- Select all Rows Checkbox -->\n <div class=\"text-center\">\n <input *ngIf=\"column.selectColumn\" type=\"checkbox\" [checked]=\"allRowsSelected\" (change)=\"toggleAllRowsSelection()\" [attr.aria-label]=\"'Select all rows'\">\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\" tabindex=\"0\" role=\"button\" [attr.aria-label]=\"'Sort by ' + column.title\">\n <span *ngIf=\"column.sort\"><i class=\"pull-left bi\" [ngClass]=\"{'bi-chevron-down': column.sort === 'desc', 'bi-chevron-up': column.sort === 'asc'}\" aria-hidden=\"true\"></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 column\" (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\" [attr.aria-label]=\"'Filter for ' + column.title\" />\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\" aria-hidden=\"true\"></i>\n <button type=\"button\" class=\"btn btn-link p-0\" (click)=\"toggleRowDetail(row)\" [id]=\"tableId+'_ShowDetailLink_'+r\" [attr.aria-pressed]=\"row.showDetail\" [attr.aria-label]=\"(row.showDetail ? 'Hide' : 'Show') + ' details for this row'\">\n <i class=\"bi\" [ngClass]=\"{'bi-chevron-down': row.showDetail, 'bi-chevron-right': !row.showDetail}\" aria-hidden=\"true\"></i>\n </button>\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'\"> </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\" tabindex=\"0\" role=\"button\" [attr.aria-label]=\"'Activate ' + (col.title || 'cell')\">\n <span *ngIf=\"!(row|cellInnerHTML:col)\">\n <i [ngClass]=\"row|cellIconClassname:col\" aria-hidden=\"true\"></i>\n <span *ngIf=\"row|cellImgSrc:col\"><img [src]=\"row|cellImgSrc:col\" alt=\"\"/></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 || ''}}\" aria-hidden=\"true\"></i>\n <span *ngIf=\"row|cellImgSrc:col\"><img [src]=\"row|cellImgSrc:col\" alt=\"\"/></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)\" [attr.aria-label]=\"'Select row ' + (r+1)\">\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)\" [attr.aria-label]=\"'Select row ' + (r+1)\">\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\" (dropdownOpenChange)=\"onDropdownOpenChange($event)\"></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'\" aria-label=\"Filter all columns in table\" type=\"search\" />\n </div>\n <div class=\"col-sm-6\">\n <span *ngIf=\"config.showRowCountInFooter && _data && _data.length > 0\">\n {{_data.length}} 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'\" aria-label=\"Export to Excel\">Export to Excel</button>\n <button type=\"button\" *ngIf=\"config.exportToHTML\" class=\"btn btn-primary mr-1\" (click)=\"exportToHTML()\" [id]=\"tableId+'_ExportToHTMLBtn'\" aria-label=\"Export to HTML\">Export to HTML</button>\n <button *ngIf=\"customBtnVisible\" type=\"button\" class=\"btn btn-primary mr-1\" (click)=\"onCustomBtnClick()\" [id]=\"tableId+'_CustomBtn'\" [disabled]=\"!customBtnEnabled\" [attr.aria-label]=\"customBtnLabel\">{{customBtnLabel}}</button>\n </div>\n <div *ngIf=\"config.exportToExcel || config.exportToHTML\" class=\"col-sm-12 text-center\">\n <span>Export only visible data: \n <input type=\"checkbox\" [checked]=\"exportVisibleOnly\" (click)=\"toggleExportVisibleOnly()\" id=\"exportVisibleOnlyCheckbox\" aria-label=\"Export only visible data\"/>\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 aria-label=\"Table pagination\">\n </pagination>\n \n <button (click)=\"togglePagingation()\" type=\"button\" class=\"btn btn-default btn-sm mr-1\" [attr.aria-label]=\"paginationOn ? 'Show All Rows' : 'Restore Pagination'\">{{ paginationOn ? 'Show All Rows' : 'Restore Pagination'}}</button>\n </div>\n</div>\n</form>\n<div class=\"expansion-filler\" *ngIf=\"addActionFiller && isAnyActionDropdownOpen\" [style.height.px]=\"actionFillerHeight\"></div>", 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}.tall-expansion-panel .mat-expansion-panel-content{min-height:700px;padding-bottom:96px}.expansion-filler{width:100%;pointer-events:none;background:transparent}.oepa-table-scroll-container{width:100%;overflow-x:auto}\n"] }]
|
|
1999
|
+
args: [{ selector: 'oepa-table', template: "<!-- Unhide select input - only visible if one or more columns are hidden -->\n\n<form *ngIf=\"hiddenColumns.length > 0\" aria-label=\"Show hidden columns\">\n <div class=\"row mb-2\">\n <label class=\"col-sm-2 col-form-label\" [for]=\"tableId+'_UnhideColumnSelect'\">Show Hidden Columns:</label>\n <div class=\"col-sm-4\">\n <select class=\"form-select\" (change)=\"unhideColumn($any($event).target.value)\" [id]=\"tableId+'_UnhideColumnSelect'\" aria-label=\"Select column to unhide\">\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]=\"['oepa-table-scroll-container', config.divClassName || '']\">\n<table *ngIf=\"!config.hideTable\" class=\"table dataTable\" [ngClass]=\"config.className || ''\" role=\"table\" style=\"width: 100%;\" aria-label=\"Data table\">\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\" scope=\"col\">\n <span class=\"sr-only\">Row details</span>\n <button type=\"button\" class=\"btn btn-link p-0\" (click)=\"toggleAllDetails()\" [id]=\"tableId+'_ShowAllDetailsLink'\" [attr.aria-pressed]=\"showAllDetails\" [attr.aria-label]=\"(showAllDetails ? 'Hide' : 'Show') + ' details for all rows'\">\n <i class=\"bi\" [ngClass]=\"{'bi-chevron-down': showAllDetails, 'bi-chevron-right': !showAllDetails}\" aria-hidden=\"true\"></i>\n </button>\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\" scope=\"col\">\n <!-- Select all Rows Checkbox -->\n <div class=\"text-center\">\n <input *ngIf=\"column.selectColumn\" type=\"checkbox\" [checked]=\"allRowsSelected\" (change)=\"toggleAllRowsSelection()\" [attr.aria-label]=\"'Select all rows'\">\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\" tabindex=\"0\" role=\"button\" [attr.aria-label]=\"'Sort by ' + column.title\">\n <span *ngIf=\"column.sort\"><i class=\"pull-left bi\" [ngClass]=\"{'bi-chevron-down': column.sort === 'desc', 'bi-chevron-up': column.sort === 'asc'}\" aria-hidden=\"true\"></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 column\" (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\" [attr.aria-label]=\"'Filter for ' + column.title\" />\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\" aria-hidden=\"true\"></i>\n <button type=\"button\" class=\"btn btn-link p-0\" (click)=\"toggleRowDetail(row)\" [id]=\"tableId+'_ShowDetailLink_'+r\" [attr.aria-pressed]=\"row.showDetail\" [attr.aria-label]=\"(row.showDetail ? 'Hide' : 'Show') + ' details for this row'\">\n <i class=\"bi\" [ngClass]=\"{'bi-chevron-down': row.showDetail, 'bi-chevron-right': !row.showDetail}\" aria-hidden=\"true\"></i>\n </button>\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'\"> </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\" tabindex=\"0\" role=\"button\" [attr.aria-label]=\"'Activate ' + (col.title || 'cell')\">\n <span *ngIf=\"!(row|cellInnerHTML:col)\">\n <i [ngClass]=\"row|cellIconClassname:col\" aria-hidden=\"true\"></i>\n <span *ngIf=\"row|cellImgSrc:col\"><img [src]=\"row|cellImgSrc:col\" alt=\"\"/></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 || ''}}\" aria-hidden=\"true\"></i>\n <span *ngIf=\"row|cellImgSrc:col\"><img [src]=\"row|cellImgSrc:col\" alt=\"\"/></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)\" [attr.aria-label]=\"'Select row ' + (r+1)\">\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)\" [attr.aria-label]=\"'Select row ' + (r+1)\">\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\" (dropdownOpenChange)=\"onDropdownOpenChange($event)\"></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'\" aria-label=\"Filter all columns in table\" type=\"search\" />\n </div>\n <div class=\"col-sm-6\">\n <span *ngIf=\"config.showRowCountInFooter && _data && _data.length > 0\">\n {{_data.length}} 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'\" aria-label=\"Export to Excel\">Export to Excel</button>\n <button type=\"button\" *ngIf=\"config.exportToHTML\" class=\"btn btn-primary mr-1\" (click)=\"exportToHTML()\" [id]=\"tableId+'_ExportToHTMLBtn'\" aria-label=\"Export to HTML\">Export to HTML</button>\n <button *ngIf=\"customBtnVisible\" type=\"button\" class=\"btn btn-primary mr-1\" (click)=\"onCustomBtnClick()\" [id]=\"tableId+'_CustomBtn'\" [disabled]=\"!customBtnEnabled\" [attr.aria-label]=\"customBtnLabel\">{{customBtnLabel}}</button>\n </div>\n <div *ngIf=\"config.exportToExcel || config.exportToHTML\" class=\"col-sm-12 text-center\">\n <span>Export only visible data: \n <input type=\"checkbox\" [checked]=\"exportVisibleOnly\" (click)=\"toggleExportVisibleOnly()\" id=\"exportVisibleOnlyCheckbox\" aria-label=\"Export only visible data\"/>\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 aria-label=\"Table pagination\">\n </pagination>\n \n <button (click)=\"togglePagingation()\" type=\"button\" class=\"btn btn-default btn-sm mr-1\" [attr.aria-label]=\"paginationOn ? 'Show All Rows' : 'Restore Pagination'\">{{ paginationOn ? 'Show All Rows' : 'Restore Pagination'}}</button>\n </div>\n</div>\n</form>\n<div class=\"expansion-filler\" *ngIf=\"addActionFiller && isAnyActionDropdownOpen\" [style.height.px]=\"actionFillerHeight\"></div>", 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}.tall-expansion-panel .mat-expansion-panel-content{min-height:700px;padding-bottom:96px}.expansion-filler{width:100%;pointer-events:none;background:transparent}.oepa-table-scroll-container{width:100%;overflow-x:auto}\n"] }]
|
|
1973
2000
|
}], ctorParameters: () => [{ type: i1$3.DomSanitizer }, { type: i0.ElementRef }, { type: TableService }, { type: TableExportService }, { type: i1$1.OepaFileUtilService }], propDecorators: { tableId: [{
|
|
1974
2001
|
type: Input
|
|
1975
2002
|
}], addActionFiller: [{
|
|
@@ -2473,7 +2500,7 @@ class TableDataCellComponent {
|
|
|
2473
2500
|
this.onActionClick.emit(event);
|
|
2474
2501
|
}
|
|
2475
2502
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: TableDataCellComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
2476
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: TableDataCellComponent, selector: "oepa-table-data-cell", inputs: { col: "col", row: "row", i: "i", r: "r", tableId: "tableId" }, outputs: { onCellClick: "onCellClick", onToggleRowSelection: "onToggleRowSelection", onSingleRowSelection: "onSingleRowSelection", onActionClick: "onActionClick" }, ngImport: i0, template: "<!-- Data Cell -->\n <div *ngIf=\"!col.actionColumn && !col.selectColumn && !col.singleSelectColumn && !col.inputColumn\">\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\"\n [popoverTitle]=\"row.popover.title\" [popover]=\"popoverTemplate\"\n [containerClass]=\"row.popover.containerClass\" placement=\"right\"\n [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\"\n [popoverTitle]=\"row.popover2.title\" [popover]=\"popover2Template\"\n [containerClass]=\"row.popover2.containerClass\" placement=\"right\"\n [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\"\n [popoverTitle]=\"row.popover3.title\" [popover]=\"popover3Template\"\n [containerClass]=\"row.popover3.containerClass\" placement=\"right\"\n [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 && !(row|cellNotSelectable:col)\" href=\"javascript:void(0);\"\n (click)=\"cellClick(row, col.id)\" [id]=\"tableId+'_CellClick_'+r+'_'+i\"\n [attr.aria-label]=\"col.title || 'Link'\">\n <span *ngIf=\"!(row|cellInnerHTML:col)\">\n <i [ngClass]=\"row|cellIconClassname:col\"></i>\n <span *ngIf=\"row|cellImgSrc:col\"><img [src]=\"row|cellImgSrc:col\" alt=\"\" /></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 || (row|cellNotSelectable:col)\">\n <span *ngIf=\"!(row|cellInnerHTML:col)\">\n <i ngClass=\"{{row|cellIconClassname:col || ''}}\"></i>\n <span *ngIf=\"row|cellImgSrc:col\"><img [src]=\"row|cellImgSrc:col\" alt=\"\" /></span>\n {{row|cellValue:col}}\n </span>\n <div *ngIf=\"row|cellInnerHTML:col\" [innerHTML]=\"row|cellInnerHTML:col\"></div>\n </span>\n </div>\n <!-- Input Cell -->\n <div *ngIf=\"col.inputColumn\">\n <cml-template [templateInfo]=\"row|cellInputComponent:col\"></cml-template>\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\"\n (change)=\"toggleRowSelection(row)\" [attr.aria-label]=\"'Select row ' + (r+1)\">\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\"\n [checked]=\"row.selected\" (change)=\"singleRowSelection(row)\" [attr.aria-label]=\"'Select row ' + (r+1)\">\n </div>\n <!-- Action Button Cell -->\n <div *ngIf=\"col.actionColumn && row.actions\">\n <oepa-action-btn [actions]=\"row.actions\" [data]=\"row.dataSource\" (actionClicked)=\"actionClick($event)\"\n [btnId]=\"tableId+'_'+r\"></oepa-action-btn>\n </div>\n", styles: [""], dependencies: [{ kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { 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: "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: ["dropdownOpenChange", "actionClicked"] }, { kind: "pipe", type: OepaTableCellInnerHtmlPipe, name: "cellInnerHTML" }, { kind: "pipe", type: OepaTableCellValuePipe, name: "cellValue" }, { kind: "pipe", type: OepaTableCellIconClassnamePipe, name: "cellIconClassname" }, { kind: "pipe", type: OepaTableCellImgSrcPipe, name: "cellImgSrc" }, { kind: "pipe", type: OepaTableCellNotSelectablePipe, name: "cellNotSelectable" }, { kind: "pipe", type: OepaTableCellInputComponentPipe, name: "cellInputComponent" }] });
|
|
2503
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: TableDataCellComponent, selector: "oepa-table-data-cell", inputs: { col: "col", row: "row", i: "i", r: "r", tableId: "tableId" }, outputs: { onCellClick: "onCellClick", onToggleRowSelection: "onToggleRowSelection", onSingleRowSelection: "onSingleRowSelection", onActionClick: "onActionClick" }, ngImport: i0, template: "<!-- Data Cell -->\n <div *ngIf=\"!col.actionColumn && !col.selectColumn && !col.singleSelectColumn && !col.inputColumn\">\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\"\n [popoverTitle]=\"row.popover.title\" [popover]=\"popoverTemplate\"\n [containerClass]=\"row.popover.containerClass\" placement=\"right\"\n [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\"\n [popoverTitle]=\"row.popover2.title\" [popover]=\"popover2Template\"\n [containerClass]=\"row.popover2.containerClass\" placement=\"right\"\n [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\"\n [popoverTitle]=\"row.popover3.title\" [popover]=\"popover3Template\"\n [containerClass]=\"row.popover3.containerClass\" placement=\"right\"\n [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 && !(row|cellNotSelectable:col)\" href=\"javascript:void(0);\"\n (click)=\"cellClick(row, col.id)\" [id]=\"tableId+'_CellClick_'+r+'_'+i\"\n [attr.aria-label]=\"col.title || 'Link'\">\n <span *ngIf=\"!(row|cellInnerHTML:col)\">\n <i [ngClass]=\"row|cellIconClassname:col\"></i>\n <span *ngIf=\"row|cellImgSrc:col\"><img [src]=\"row|cellImgSrc:col\" alt=\"\" /></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 || (row|cellNotSelectable:col)\">\n <span *ngIf=\"!(row|cellInnerHTML:col)\">\n <i ngClass=\"{{row|cellIconClassname:col || ''}}\"></i>\n <span *ngIf=\"row|cellImgSrc:col\"><img [src]=\"row|cellImgSrc:col\" alt=\"\" /></span>\n {{row|cellValue:col}}\n </span>\n <div *ngIf=\"row|cellInnerHTML:col\" [innerHTML]=\"row|cellInnerHTML:col\"></div>\n </span>\n </div>\n <!-- Input Cell -->\n <div *ngIf=\"col.inputColumn\">\n <cml-template [templateInfo]=\"row|cellInputComponent:col\"></cml-template>\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\"\n (change)=\"toggleRowSelection(row)\" [attr.aria-label]=\"'Select row ' + (r+1)\">\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\"\n [checked]=\"row.selected\" (change)=\"singleRowSelection(row)\" [attr.aria-label]=\"'Select row ' + (r+1)\">\n </div>\n <!-- Action Button Cell -->\n <div *ngIf=\"col.actionColumn && row.actions\">\n <oepa-action-btn [actions]=\"row.actions\" [data]=\"row.dataSource\" (actionClicked)=\"actionClick($event)\"\n [btnId]=\"tableId+'_'+r\"></oepa-action-btn>\n </div>\n", styles: [""], dependencies: [{ kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { 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: "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", "autoDropup"], outputs: ["dropdownOpenChange", "actionClicked"] }, { kind: "pipe", type: OepaTableCellInnerHtmlPipe, name: "cellInnerHTML" }, { kind: "pipe", type: OepaTableCellValuePipe, name: "cellValue" }, { kind: "pipe", type: OepaTableCellIconClassnamePipe, name: "cellIconClassname" }, { kind: "pipe", type: OepaTableCellImgSrcPipe, name: "cellImgSrc" }, { kind: "pipe", type: OepaTableCellNotSelectablePipe, name: "cellNotSelectable" }, { kind: "pipe", type: OepaTableCellInputComponentPipe, name: "cellInputComponent" }] });
|
|
2477
2504
|
}
|
|
2478
2505
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: TableDataCellComponent, decorators: [{
|
|
2479
2506
|
type: Component,
|