UNPKG

@pega/dx-component-builder-sdk

Version:

Utility for building custom UI components

167 lines (159 loc) 8.11 kB
<ng-container *ngIf="bVisible$"> <div class="simple-table-wrapper"> <h3 *ngIf="label" className="label" style="font-weight: bold"> {{ label }} <span class="results-count">{{ getResultsText() }}</span> </h3> <table *ngIf="readOnlyMode || allowEditingInModal" mat-table [dataSource]="elementsData" class="mat-elevation-z8" id="readonly-table" matSort> <ng-container *ngFor="let dCol of processedFields; let i = index" [matColumnDef]="dCol.config.name"> <th mat-header-cell *matHeaderCellDef mat-sort-header (click)="_headerSortClick($event, dCol)" arrowPosition="before"> <div>{{ dCol.config.label }}</div> <div class="psdk-mat-header-filter"> <img class="psdk-filter-svg-icon" name="filterOnIcon" /> </div> <div (click)="$event.stopPropagation()"> <button mat-icon-button [matMenuTriggerFor]="groupMenu"> <img class="psdk-list-view-svg-icon" src="{{ menuSvgIcon$ }}" /> </button> <mat-menu #groupMenu> <button mat-menu-item (click)="_groupBy($event, dCol)"> <img class="psdk-list-view-svg-icon" src="{{ groupBySvgIcon$ }}" /><span>Group By</span> </button> <button *ngIf="_showUnGroupBy(dCol) && bGrouping$" mat-menu-item (click)="_unGroupBy($event, dCol)"> <img class="psdk-list-view-svg-icon" src="{{ groupBySvgIcon$ }}" /><span>Ungroup</span> </button> <button mat-menu-item (click)="_filter($event, dCol)"> <img class="psdk-list-view-svg-icon" src="{{ filterSvgIcon$ }}" /><span>Filter</span> </button> </mat-menu> </div> </th> <td mat-cell *matCellDef="let element"> <component-mapper [name]="element[i].getPConnect().getComponentName()" [props]="{ pConn$: element[i].getPConnect(), formGroup$: formGroup$ }" errorMsg="Table wants component not yet available: {{ element[i].getPConnect().getComponentName() }}" ></component-mapper> </td> </ng-container> <ng-container matColumnDef="DeleteIcon"> <div *ngIf="allowEditingInModal"> <th mat-header-cell *matHeaderCellDef></th> <td mat-cell *matCellDef="let element; index as j"> <div class="header-icon"> <button mat-icon-button [matMenuTriggerFor]="utilityMenu"> <img class="psdk-utility-card-actions-svg-icon" src="{{ settingsSvgIcon$ }}" /> </button> <mat-menu #utilityMenu="matMenu" overlapTrigger="false"> <button mat-menu-item (click)="editRecord(element, j)">Edit</button> <button mat-menu-item (click)="deleteRecord(j)">Delete</button> </mat-menu> </div> </td> </div> </ng-container> <tr mat-header-row *matHeaderRowDef="displayedColumns"></tr> <tr mat-row *matRowDef="let row; columns: displayedColumns"></tr> <tr class="mat-row psdk-no-records" *matNoDataRow> <td id="no-records" class="mat-cell" [attr.colspan]="displayedColumns.length"> {{ utils.getGenericFieldsLocalizedValue('CosmosFields.fields.lists', 'No records found.') }} </td> </tr> </table> <table *ngIf="editableMode && !allowEditingInModal" mat-table [dataSource]="elementsData" class="mat-elevation-z8" id="editable-table"> <ng-container *ngFor="let dCol of fieldDefs; let i = index"> <ng-container *ngIf="dCol.name != 'DeleteIcon'" [matColumnDef]="dCol.name"> <th mat-header-cell *matHeaderCellDef class="psdk-mat-header">{{ dCol.label }}</th> <td mat-cell *matCellDef="let element"> <component-mapper [name]="element[i].getPConnect().getComponentName()" [props]="{ pConn$: element[i].getPConnect(), formGroup$: formGroup$ }" errorMsg="Table wants component not yet available: {{ element[i].getPConnect().getComponentName() }}" ></component-mapper> </td> </ng-container> </ng-container> <ng-container matColumnDef="DeleteIcon"> <th mat-header-cell *matHeaderCellDef></th> <td mat-cell *matCellDef="let element; index as j"> <button id="delete-button" mat-icon-button (click)="deleteRecord(j)"> <img class="psdk-utility-card-action-svg-icon" src="{{ menuIconOverride$ }}" /> </button> </td> </ng-container> <tr mat-header-row *matHeaderRowDef="displayedColumns"></tr> <tr mat-row *matRowDef="let row; columns: displayedColumns"></tr> <tr class="mat-row psdk-no-records" *matNoDataRow> <td id="no-records" class="mat-cell" [attr.colspan]="displayedColumns.length"> {{ utils.getGenericFieldsLocalizedValue('CosmosFields.fields.lists', 'No records found.') }} </td> </tr> </table> </div> <button *ngIf="showAddRowButton" mat-button color="primary" style="font-size: 16px" (click)="addRecord()"> + {{ localizedVal('Add', localeCategory) }} </button> </ng-container> <!-- pop overs for filters--> <div *ngIf="bShowFilterPopover$" class="psdk-dialog-background"> <div class="psdk-modal-file-top"> <h4> Filter:<b> {{ filterContainsLabel$ }}</b> </h4> <div *ngIf="bContains$"> <mat-form-field class="psdk-full-width"> <mat-select [value]="filterContainsType$" (selectionChange)="_filterContainsType($event)"> <mat-option value="contains">Contains</mat-option> <mat-option value="equals">Equals</mat-option> <mat-option value="startswith">Starts with</mat-option> </mat-select> </mat-form-field> <mat-form-field class="psdk-full-width"> <input matInput type="text" [value]="filterContainsValue$" (change)="_filterContainsValue($event)" /> </mat-form-field> </div> <div *ngIf="bDateTime$"> <mat-form-field class="psdk-full-width"> <mat-select [value]="filterContainsType$" (selectionChange)="_filterContainsType($event)"> <mat-option value="notequal">is not equal to</mat-option> <mat-option value="after">after</mat-option> <mat-option value="before">before</mat-option> <mat-option value="null">is null</mat-option> <mat-option value="notnull">is not null</mat-option> </mat-select> </mat-form-field> <mat-form-field *ngIf="bIsDate$ && filterContainsType$ !== 'null' && filterContainsType$ != 'notnull'" class="psdk-full-width"> <mat-label>Date</mat-label> <input matInput #dateInput [matDatepicker]="pegadate" type="text" [value]="filterContainsValue$" (dateChange)="_filterContainsDateValue($event, dateInput.value)" /> <mat-datepicker-toggle matSuffix [for]="pegadate"></mat-datepicker-toggle> <mat-datepicker #pegadate [startAt]="filterContainsValue$"></mat-datepicker> </mat-form-field> <mat-form-field *ngIf="bIsDateTime$ && filterContainsType$ !== 'null' && filterContainsType$ != 'notnull'" class="psdk-full-width"> <mat-label>Date time</mat-label> <input matInput type="datetime-local" [value]="filterContainsValue$" (change)="_filterContainsDateTimeValue($event)" /> </mat-form-field> <mat-form-field *ngIf="bIsTime$ && filterContainsType$ !== 'null' && filterContainsType$ != 'notnull'" class="psdk-full-width"> <mat-label>Time</mat-label> <input matInput type="time" [value]="filterContainsValue$" (change)="_filterContainsTimeValue($event)" /> </mat-form-field> </div> <component-mapper name="ActionButtons" [props]="{ arMainButtons$: arFilterMainButtons$, arSecondaryButtons$: arFilterSecondaryButtons$ }" [parent]="this" [outputEvents]="{ actionButtonClick: _onFilterActionButtonClick }" ></component-mapper> </div> </div>