UNPKG

@pega/dx-component-builder-sdk

Version:

Utility for building custom UI components

259 lines (242 loc) 13.2 kB
<div class="psdk-list-header"> <div> <h3 *ngIf="label" class="label" style="font-weight: bold"> {{ label }} <span class="results-count">{{ getResultsText() }}</span> </h3> <mat-form-field class="psdk-search" *ngIf="bShowSearch$"> <mat-label><img class="psdk-icon-search" src="{{ searchIcon$ }}" /> <span class="psdk-search-label">Search</span> </mat-label> <input matInput id="search" (keyup)="applySearch($event)" placeholder="" /> </mat-form-field> <div *ngIf="!bInForm$" class="psdk-outer-div-in-form"> <div class="psdk-inner-div-in-form" *ngIf="bColumnReorder$"> <div> <table mat-table id="list-view" [dataSource]="repeatList$" matSort cdkDropList cdkDropListOrientation="horizontal" (cdkDropListDropped)="drop($event)" > <ng-container *ngFor="let dCol of fields$" [matColumnDef]="dCol.config.name" sticky="true"> <th mat-header-cell *matHeaderCellDef class="psdk-mat-header" (click)="_headerSortClick($event, dCol)" arrowPosition="before" cdkDrag> {{ dCol.config.label }} <div class="psdk-mat-header-filter"> <img class="psdk-filter-svg-icon" name="filterOnIcon" /> </div> <div class="psdk-mat-header-arrow"> <img class="psdk-arrow-svg-icon" arrow="none" [attr.arrowid]="dCol.config.name" /> </div> <div class="psdk-mat-header-button" (click)="$event.stopPropagation()"> <button mat-icon-button [matMenuTriggerFor]="groupMenu"> <img class="psdk-list-view-svg-icon" src="{{ menuSvgIcon$ }}" /> </button> <mat-menu #groupMenu> <button *ngIf="!_showUnGroupBy(dCol) && bGrouping$" 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; index as i"> <button *ngIf="_showButton(dCol.config.name, dCol); else regular" mat-button color="primary" (click)="_listViewClick(dCol.config, element)" > {{ element[dCol.config.name] || '---' }} </button> <ng-template #regular> {{ element[dCol.config.name] || '---' }} </ng-template> </td> </ng-container> <tr mat-header-row *matHeaderRowDef="displayedColumns$; sticky: true"></tr> <tr mat-row *matRowDef="let row; columns: displayedColumns$"></tr> <!-- Group header --> <ng-container matColumnDef="groupHeader"> <td mat-cell colspan="999" *matCellDef="let group"> <mat-icon *ngIf="group.expanded" [attr.style]="_getIconStyle(group.level)">expand_less</mat-icon> <mat-icon *ngIf="!group.expanded" [attr.style]="_getIconStyle(group.level)">expand_more</mat-icon> <strong >{{ _getGroupName(groupByColumns$[group.level - 1]) }}: {{ group[groupByColumns$[group.level - 1]] }} ({{ group.totalCounts }})</strong > </td> </ng-container> <tr mat-row *matRowDef="let row; columns: ['groupHeader']; when: isGroup" (click)="_groupHeaderClick(row)"></tr> </table> </div> </div> <div class="psdk-inner-div-in-form" *ngIf="!bColumnReorder$"> <div> <table mat-table id="list-view" [dataSource]="repeatList$" matSort> <ng-container *ngFor="let dCol of fields$" [matColumnDef]="dCol.config.name" sticky="true"> <th mat-header-cell *matHeaderCellDef class="psdk-mat-header" (click)="_headerSortClick($event, dCol)" arrowPosition="before"> {{ dCol.config.label }} <div class="psdk-mat-header-filter"> <img class="psdk-filter-svg-icon" name="filterOnIcon" /> </div> <div class="psdk-mat-header-arrow"> <img class="psdk-arrow-svg-icon" arrow="none" [attr.arrowid]="dCol.config.name" /> </div> <div class="psdk-mat-header-button" (click)="$event.stopPropagation()"> <button mat-icon-button [matMenuTriggerFor]="groupMenu"> <img class="psdk-list-view-svg-icon" src="{{ menuSvgIcon$ }}" /> </button> <mat-menu #groupMenu> <button *ngIf="!_showUnGroupBy(dCol) && bGrouping$" 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; index as i"> <button *ngIf="_showButton(dCol.config.name, dCol); else regular" mat-button color="primary" (click)="_listViewClick(dCol.config, element)" > {{ element[dCol.config.name] || '---' }} </button> <ng-template #regular> {{ element[dCol.config.name] || '---' }} </ng-template> </td> </ng-container> <tr mat-header-row *matHeaderRowDef="displayedColumns$; sticky: true"></tr> <tr mat-row *matRowDef="let row; columns: displayedColumns$"></tr> <!-- Group header --> <ng-container matColumnDef="groupHeader"> <td mat-cell colspan="999" *matCellDef="let group"> <mat-icon *ngIf="group.expanded" [attr.style]="_getIconStyle(group.level)">expand_less</mat-icon> <mat-icon *ngIf="!group.expanded" [attr.style]="_getIconStyle(group.level)">expand_more</mat-icon> <strong >{{ _getGroupName(groupByColumns$[group.level - 1]) }}: {{ group[groupByColumns$[group.level - 1]] }} ({{ group.totalCounts }})</strong > </td> </ng-container> <tr mat-row *matRowDef="let row; columns: ['groupHeader']; when: isGroup" (click)="_groupHeaderClick(row)"></tr> </table> </div> </div> </div> <div *ngIf="bInForm$"> <div> <div class="psdk-inner-div-in-form"> <table id="list-view" *ngIf="repeatListData.length > 0" mat-table [dataSource]="repeatList$" matSort> <ng-container *ngIf="singleSelectionMode" matColumnDef="select"> <th mat-header-cell *matHeaderCellDef></th> <td mat-cell *matCellDef="let row"> <mat-radio-button [value]="row[rowID]" [checked]="row[rowID] === checkBoxValue" (change)="fieldOnChange(row)"></mat-radio-button> </td> </ng-container> <ng-container *ngIf="multiSelectionMode" matColumnDef="select"> <th mat-header-cell *matHeaderCellDef></th> <td mat-cell *matCellDef="let row"> <mat-checkbox [value]="row[rowID]" [checked]="isChecked(row)" (change)="onCheckboxClick(row, $event)"></mat-checkbox> </td> </ng-container> <ng-container *ngFor="let dCol of fields$" [matColumnDef]="dCol.config.name"> <th mat-header-cell *matHeaderCellDef mat-sort-header (click)="_headerSortClick($event, dCol)" arrowPosition="before"> {{ dCol.config.label }} </th> <td mat-cell *matCellDef="let element">{{ element[dCol.config.name] || '---' }}</td> </ng-container> <tr mat-header-row *matHeaderRowDef="displayedColumns$"></tr> <tr mat-row *matRowDef="let row; columns: displayedColumns$"></tr> </table> <div *ngIf="repeatListData?.length === 0"> <table id="list-view" *ngIf="repeatListData?.length === 0" mat-table [dataSource]="repeatList$"> <ng-container *ngFor="let dCol of fields$" [matColumnDef]="dCol.config.name"> <th mat-header-cell *matHeaderCellDef>{{ dCol.config.label }}</th> </ng-container> <tr mat-header-row *matHeaderRowDef="displayedColumns$"></tr> </table> </div> <div class="psdk-no-records" *ngIf="repeatListData?.length === 0"> {{ utils.getGenericFieldsLocalizedValue('CosmosFields.fields.lists', 'No records found.') }} </div> </div> </div> </div> <mat-paginator id="pagination" *ngIf="bInForm$" [pageSizeOptions]="[10, 20, 50, 100, 500, 1000]" showFirstLastButtons></mat-paginator> <mat-paginator id="pagination" *ngIf="!bInForm$" [pageSizeOptions]="[10, 20, 50, 100, 500]" showFirstLastButtons></mat-paginator> </div> <!-- 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> </div>