Fx flex replacements. Switch to tailwind.css.
This commit is contained in:
parent
899820cd27
commit
b48e276f44
@ -19,7 +19,7 @@
|
||||
ngxClipboard
|
||||
[cbContent]="credential"
|
||||
(cbOnSuccess)="onCopyCredential()"
|
||||
[fxHide]="hideButton"
|
||||
[class.!hidden]="hideButton"
|
||||
[disabled]="disabled || loading">
|
||||
<mat-icon svgIcon="mdi:clipboard-arrow-left"></mat-icon>
|
||||
<span>{{ buttonLabel }}</span>
|
||||
|
||||
@ -15,7 +15,7 @@
|
||||
limitations under the License.
|
||||
|
||||
-->
|
||||
<section [formGroup]="serverFormGroup" fxLayout="column">
|
||||
<section [formGroup]="serverFormGroup" class="flex flex-col">
|
||||
<mat-form-field class="mat-block">
|
||||
<mat-label translate>device.lwm2m-security-config.mode</mat-label>
|
||||
<mat-select formControlName="securityMode">
|
||||
@ -24,7 +24,7 @@
|
||||
</mat-option>
|
||||
</mat-select>
|
||||
</mat-form-field>
|
||||
<div [fxShow]="serverFormGroup.get('securityMode').value !== securityConfigLwM2MType.NO_SEC">
|
||||
<div [class.!hidden]="serverFormGroup.get('securityMode').value === securityConfigLwM2MType.NO_SEC">
|
||||
<mat-form-field class="mat-block">
|
||||
<mat-label>{{ 'device.lwm2m-security-config.client-publicKey-or-id' | translate }}</mat-label>
|
||||
<mat-icon class="mat-primary" aria-hidden="false" aria-label="help-icon" matSuffix style="cursor:pointer;"
|
||||
|
||||
@ -16,7 +16,7 @@
|
||||
|
||||
-->
|
||||
<section [formGroup]="deviceCredentialsFormGroup">
|
||||
<section [fxShow]="credentialsTypes?.length > 1" style="margin-bottom: 16px">
|
||||
<section [class.!hidden]="!(credentialsTypes?.length > 1)" style="margin-bottom: 16px">
|
||||
<div class="tb-type-title" translate>device.credentials-type</div>
|
||||
<tb-toggle-select formControlName="credentialsType" appearance="fill">
|
||||
<tb-toggle-option *ngFor="let credentialsType of credentialsTypes" [value]="credentialsType">
|
||||
|
||||
@ -30,9 +30,9 @@
|
||||
</ng-container>
|
||||
</ng-template>
|
||||
<ng-template #deviceFilterPanel>
|
||||
<form fxLayout="column" class="mat-content mat-padding" (ngSubmit)="update()">
|
||||
<form class="mat-content mat-padding flex flex-col" (ngSubmit)="update()">
|
||||
<ng-container *ngTemplateOutlet="deviceFilter"></ng-container>
|
||||
<div fxLayout="row" class="tb-panel-actions" fxLayoutAlign="end center">
|
||||
<div class="tb-panel-actions flex flex-row justify-end items-center">
|
||||
<button type="button"
|
||||
mat-button
|
||||
(click)="cancel()">
|
||||
@ -48,7 +48,7 @@
|
||||
</form>
|
||||
</ng-template>
|
||||
<ng-template #deviceFilter>
|
||||
<div fxLayout="column" fxLayoutGap="16px" style="min-width: 280px;" [formGroup]="deviceInfoFilterForm">
|
||||
<div class="flex flex-col gap-4" style="min-width: 280px;" [formGroup]="deviceInfoFilterForm">
|
||||
<tb-device-profile-autocomplete
|
||||
subscriptSizing="dynamic"
|
||||
formControlName="deviceProfileId"
|
||||
|
||||
@ -15,10 +15,10 @@
|
||||
limitations under the License.
|
||||
|
||||
-->
|
||||
<form (ngSubmit)="add()" style="min-width: 400px; width: 750px;" [ngStyle]="entitiesTableConfig.addDialogStyle">
|
||||
<form (ngSubmit)="add()" style="min-width: 400px; width: 750px;" [style]="entitiesTableConfig.addDialogStyle">
|
||||
<mat-toolbar color="primary">
|
||||
<h2 translate>{{ translations.add }}</h2>
|
||||
<span fxFlex></span>
|
||||
<span class="flex-1"></span>
|
||||
<div [tb-help]="helpLinkId()"></div>
|
||||
<button mat-icon-button
|
||||
(click)="cancel()"
|
||||
@ -32,7 +32,7 @@
|
||||
<div mat-dialog-content>
|
||||
<tb-anchor #entityDetailsForm></tb-anchor>
|
||||
</div>
|
||||
<div mat-dialog-actions fxLayoutAlign="end center">
|
||||
<div mat-dialog-actions class="flex justify-end items-center">
|
||||
<button mat-button color="primary"
|
||||
type="button"
|
||||
cdkFocusInitial
|
||||
|
||||
@ -34,18 +34,18 @@
|
||||
</mat-drawer>
|
||||
<mat-drawer-content>
|
||||
<div class="mat-padding tb-entity-table tb-absolute-fill">
|
||||
<div fxLayout="column" class="tb-entity-table-content tb-outlined-border">
|
||||
<mat-toolbar class="mat-mdc-table-toolbar" [fxShow]="!textSearchMode && dataSource.selection.isEmpty()">
|
||||
<div class="tb-entity-table-content tb-outlined-border flex flex-col">
|
||||
<mat-toolbar class="mat-mdc-table-toolbar" [class.!hidden]="textSearchMode || !dataSource.selection.isEmpty()">
|
||||
<div class="mat-toolbar-tools">
|
||||
<div fxLayout="row" fxLayoutAlign="start center" fxLayout.xs="column" fxLayoutAlign.xs="center start" class="title-container">
|
||||
<div class="title-container flex flex-row justify-start items-center xs:flex-col xs:justify-center xs:items-start">
|
||||
<span *ngIf="entitiesTableConfig.tableTitle" class="tb-entity-table-title">{{ entitiesTableConfig.tableTitle }}</span>
|
||||
<tb-anchor #entityTableHeader></tb-anchor>
|
||||
<tb-timewindow *ngIf="entitiesTableConfig.useTimePageLink" [(ngModel)]="timewindow"
|
||||
(ngModelChange)="onTimewindowChange()"
|
||||
asButton strokedButton historyOnly [forAllTimeEnabled]="entitiesTableConfig.forAllTimeEnabled"></tb-timewindow>
|
||||
</div>
|
||||
<span fxFlex></span>
|
||||
<div [fxShow]="addEnabled()">
|
||||
<span class="flex-1"></span>
|
||||
<div [class.!hidden]="!addEnabled()">
|
||||
<button mat-icon-button [disabled]="isLoading$ | async"
|
||||
*ngIf="!entitiesTableConfig.addActionDescriptors.length; else addActions"
|
||||
(click)="addEntity($event)"
|
||||
@ -56,7 +56,7 @@
|
||||
<ng-template #addActions>
|
||||
<button mat-icon-button [disabled]="isLoading$ | async"
|
||||
*ngIf="entitiesTableConfig.addActionDescriptors.length === 1; else addActionsMenu"
|
||||
[fxShow]="entitiesTableConfig.addActionDescriptors[0].isEnabled()"
|
||||
[class.!hidden]="!entitiesTableConfig.addActionDescriptors[0].isEnabled()"
|
||||
(click)="entitiesTableConfig.addActionDescriptors[0].onAction($event)"
|
||||
matTooltip="{{ entitiesTableConfig.addActionDescriptors[0].name }}"
|
||||
matTooltipPosition="above">
|
||||
@ -72,7 +72,7 @@
|
||||
<mat-menu #addActionsMenu="matMenu" xPosition="before">
|
||||
<button mat-menu-item *ngFor="let actionDescriptor of entitiesTableConfig.addActionDescriptors"
|
||||
[disabled]="isLoading$ | async"
|
||||
[fxShow]="actionDescriptor.isEnabled()"
|
||||
[class.!hidden]="!actionDescriptor.isEnabled()"
|
||||
(click)="actionDescriptor.onAction($event)">
|
||||
<tb-icon matMenuItemIcon>{{actionDescriptor.icon}}</tb-icon>
|
||||
<span>{{ actionDescriptor.name }}</span>
|
||||
@ -82,7 +82,7 @@
|
||||
</ng-template>
|
||||
</div>
|
||||
<button mat-icon-button [disabled]="isLoading$ | async"
|
||||
[fxShow]="actionDescriptor.isEnabled()" *ngFor="let actionDescriptor of headerActionDescriptors"
|
||||
[class.!hidden]="!actionDescriptor.isEnabled()" *ngFor="let actionDescriptor of headerActionDescriptors"
|
||||
matTooltip="{{ actionDescriptor.name }}"
|
||||
matTooltipPosition="above"
|
||||
(click)="actionDescriptor.onAction($event)">
|
||||
@ -101,14 +101,14 @@
|
||||
</button>
|
||||
</div>
|
||||
</mat-toolbar>
|
||||
<mat-toolbar class="mat-mdc-table-toolbar" [fxShow]="textSearchMode && dataSource.selection.isEmpty()">
|
||||
<mat-toolbar class="mat-mdc-table-toolbar" [class.!hidden]="!textSearchMode || !dataSource.selection.isEmpty()">
|
||||
<div class="mat-toolbar-tools">
|
||||
<button mat-icon-button
|
||||
matTooltip="{{ translations.search | translate }}"
|
||||
matTooltipPosition="above">
|
||||
<mat-icon>search</mat-icon>
|
||||
</button>
|
||||
<mat-form-field fxFlex>
|
||||
<mat-form-field class="flex-1">
|
||||
<mat-label> </mat-label>
|
||||
<input #searchInput matInput
|
||||
[formControl]="textSearch"
|
||||
@ -121,14 +121,14 @@
|
||||
</button>
|
||||
</div>
|
||||
</mat-toolbar>
|
||||
<mat-toolbar *ngIf="entitiesTableConfig.selectionEnabled" class="mat-mdc-table-toolbar" color="primary" [fxShow]="!dataSource.selection.isEmpty()">
|
||||
<mat-toolbar *ngIf="entitiesTableConfig.selectionEnabled" class="mat-mdc-table-toolbar" color="primary" [class.!hidden]="dataSource.selection.isEmpty()">
|
||||
<div class="mat-toolbar-tools">
|
||||
<span class="tb-entity-table-info">
|
||||
{{ translations.selectedEntities | translate:{count: dataSource.selection.selected.length} }}
|
||||
</span>
|
||||
<span fxFlex></span>
|
||||
<span class="flex-1"></span>
|
||||
<button mat-icon-button [disabled]="isLoading$ | async"
|
||||
[fxShow]="actionDescriptor.isEnabled" *ngFor="let actionDescriptor of groupActionDescriptors"
|
||||
[class.!hidden]="!actionDescriptor.isEnabled" *ngFor="let actionDescriptor of groupActionDescriptors"
|
||||
matTooltip="{{ actionDescriptor.name }}"
|
||||
matTooltipPosition="above"
|
||||
(click)="actionDescriptor.onAction($event, dataSource.selection.selected)">
|
||||
@ -136,7 +136,7 @@
|
||||
</button>
|
||||
</div>
|
||||
</mat-toolbar>
|
||||
<div fxFlex class="table-container">
|
||||
<div class="table-container flex-1">
|
||||
<table mat-table [dataSource]="dataSource" [trackBy]="trackByEntityId"
|
||||
matSort [matSortActive]="pageLink.sortOrder?.property" [matSortDirection]="pageLink.sortDirection()" matSortDisableClear>
|
||||
<ng-container matColumnDef="select" sticky>
|
||||
@ -148,23 +148,23 @@
|
||||
</mat-header-cell>
|
||||
<mat-cell *matCellDef="let entity">
|
||||
<mat-checkbox (click)="$event.stopPropagation()"
|
||||
[fxShow]="entitiesTableConfig.entitySelectionEnabled(entity)"
|
||||
[class.!hidden]="!entitiesTableConfig.entitySelectionEnabled(entity)"
|
||||
(change)="$event ? dataSource.selection.toggle(entity) : null"
|
||||
[checked]="dataSource.selection.isSelected(entity)">
|
||||
</mat-checkbox>
|
||||
</mat-cell>
|
||||
</ng-container>
|
||||
<ng-container [matColumnDef]="column.key" *ngFor="let column of entityColumns; trackBy: trackByColumnKey;">
|
||||
<mat-header-cell [ngClass]="{'mat-number-cell': column.isNumberColumn}"
|
||||
[fxHide.lt-lg]="column.mobileHide"
|
||||
*matHeaderCellDef [ngStyle]="headerCellStyle(column)" mat-sort-header [disabled]="!column.sortable">
|
||||
<mat-header-cell [class.mat-number-cell]="column.isNumberColumn"
|
||||
[class.lt-lg:!hidden]="column.mobileHide"
|
||||
*matHeaderCellDef [style]="headerCellStyle(column)" mat-sort-header [disabled]="!column.sortable">
|
||||
{{ column.ignoreTranslate ? column.title : (column.title | translate) }} </mat-header-cell>
|
||||
<mat-cell [ngClass]="{'mat-number-cell': column.isNumberColumn}"
|
||||
[fxHide.lt-lg]="column.mobileHide"
|
||||
<mat-cell [class.mat-number-cell]="column.isNumberColumn"
|
||||
[class.lt-lg:!hidden]="column.mobileHide"
|
||||
*matCellDef="let entity; let row = index"
|
||||
[matTooltip]="cellTooltip(entity, column, row)"
|
||||
matTooltipPosition="above"
|
||||
[ngStyle]="cellStyle(entity, column, row)">
|
||||
[style]="cellStyle(entity, column, row)">
|
||||
<ng-container [ngSwitch]="column.type">
|
||||
<ng-template [ngSwitchCase]="'link'">
|
||||
<a *ngIf="column.entityURL(entity) as detailsPageURL; else defaultContent"
|
||||
@ -183,7 +183,7 @@
|
||||
<ng-template [ngSwitchCase]="cellActionType.COPY_BUTTON">
|
||||
<tb-copy-button
|
||||
[disabled]="isLoading$ | async"
|
||||
[fxShow]="column.actionCell.isEnabled(entity)"
|
||||
[class.!hidden]="!column.actionCell.isEnabled(entity)"
|
||||
[copyText]="column.actionCell.onAction(null, entity)"
|
||||
tooltipText="{{ column.actionCell.nameFunction ? column.actionCell.nameFunction(entity) : column.actionCell.name }}"
|
||||
tooltipPosition="above"
|
||||
@ -193,11 +193,11 @@
|
||||
</ng-template>
|
||||
<ng-template ngSwitchDefault>
|
||||
<button mat-icon-button [disabled]="isLoading$ | async"
|
||||
[fxShow]="column.actionCell.isEnabled(entity)"
|
||||
[class.!hidden]="!column.actionCell.isEnabled(entity)"
|
||||
matTooltip="{{ column.actionCell.nameFunction ? column.actionCell.nameFunction(entity) : column.actionCell.name }}"
|
||||
matTooltipPosition="above"
|
||||
(click)="column.actionCell.onAction($event, entity)">
|
||||
<tb-icon [ngStyle]="column.actionCell.style">
|
||||
<tb-icon [style]="column.actionCell.style">
|
||||
{{column.actionCell.icon}}
|
||||
</tb-icon>
|
||||
</button>
|
||||
@ -207,74 +207,83 @@
|
||||
</mat-cell>
|
||||
</ng-container>
|
||||
<ng-container [matColumnDef]="column.key" *ngFor="let column of actionColumns; trackBy: trackByColumnKey;">
|
||||
<mat-header-cell *matHeaderCellDef [ngStyle]="headerCellStyle(column)" mat-sort-header [disabled]="!column.sortable"> {{ column.title | translate }} </mat-header-cell>
|
||||
<mat-header-cell *matHeaderCellDef [style]="headerCellStyle(column)" mat-sort-header [disabled]="!column.sortable"> {{ column.title | translate }} </mat-header-cell>
|
||||
<mat-cell *matCellDef="let entity; let row = index"
|
||||
[ngStyle]="cellStyle(entity, column, row)">
|
||||
[style]="cellStyle(entity, column, row)">
|
||||
<button mat-icon-button [disabled]="isLoading$ | async"
|
||||
[fxShow]="column.actionDescriptor.isEnabled(entity)"
|
||||
[class.!hidden]="!column.actionDescriptor.isEnabled(entity)"
|
||||
matTooltip="{{ column.actionDescriptor.nameFunction ? column.actionDescriptor.nameFunction(entity) : column.actionDescriptor.name }}"
|
||||
matTooltipPosition="above"
|
||||
(click)="column.actionDescriptor.onAction($event, entity)">
|
||||
<tb-icon [ngStyle]="column.actionDescriptor.style">
|
||||
<tb-icon [style]="column.actionDescriptor.style">
|
||||
{{column.actionDescriptor.iconFunction ? column.actionDescriptor.iconFunction(entity) : column.actionDescriptor.icon}}
|
||||
</tb-icon>
|
||||
</button>
|
||||
</mat-cell>
|
||||
</ng-container>
|
||||
<ng-container matColumnDef="actions" stickyEnd>
|
||||
<mat-header-cell *matHeaderCellDef [ngStyle.gt-md]="{ minWidth: (cellActionDescriptors.length * 48) + 'px',
|
||||
maxWidth: (cellActionDescriptors.length * 48) + 'px',
|
||||
width: (cellActionDescriptors.length * 48) + 'px' }">
|
||||
{{ entitiesTableConfig.actionsColumnTitle ? (entitiesTableConfig.actionsColumnTitle | translate) : '' }}
|
||||
<mat-header-cell *matHeaderCellDef>
|
||||
<ng-container *ngIf="cellActionDescriptors.length">
|
||||
<div class="gt-md:!hidden" style="width: 48px; min-width: 48px; max-width: 48px;">
|
||||
{{ entitiesTableConfig.actionsColumnTitle ? (entitiesTableConfig.actionsColumnTitle | translate) : '' }}
|
||||
</div>
|
||||
<div class="lt-lg:!hidden"
|
||||
[style.width]="(cellActionDescriptors.length * 48) + 'px'"
|
||||
[style.min-width]="(cellActionDescriptors.length * 48) + 'px'"
|
||||
[style.max-width]="(cellActionDescriptors.length * 48) + 'px'">
|
||||
{{ entitiesTableConfig.actionsColumnTitle ? (entitiesTableConfig.actionsColumnTitle | translate) : '' }}
|
||||
</div>
|
||||
</ng-container>
|
||||
</mat-header-cell>
|
||||
<mat-cell *matCellDef="let entity" [ngStyle.gt-md]="{ minWidth: (cellActionDescriptors.length * 48) + 'px',
|
||||
maxWidth: (cellActionDescriptors.length * 48) + 'px',
|
||||
width: (cellActionDescriptors.length * 48) + 'px' }">
|
||||
<div [fxHide]="cellActionDescriptors.length !== 1" fxShow.gt-md fxFlex fxLayout="row" fxLayoutAlign="end">
|
||||
<button mat-icon-button [disabled]="(isLoading$ | async) || !actionDescriptor.isEnabled(entity)"
|
||||
*ngFor="let actionDescriptor of cellActionDescriptors"
|
||||
matTooltip="{{ actionDescriptor.nameFunction ? actionDescriptor.nameFunction(entity) : actionDescriptor.name }}"
|
||||
matTooltipPosition="above"
|
||||
(click)="actionDescriptor.onAction($event, entity)">
|
||||
<tb-icon [ngStyle]="actionDescriptor.style">
|
||||
{{actionDescriptor.iconFunction ? actionDescriptor.iconFunction(entity) : actionDescriptor.icon}}
|
||||
</tb-icon>
|
||||
</button>
|
||||
</div>
|
||||
<div fxHide [fxShow.lt-lg]="cellActionDescriptors.length !== 1" *ngIf="cellActionDescriptors.length">
|
||||
<button mat-icon-button
|
||||
(click)="$event.stopPropagation()"
|
||||
[matMenuTriggerFor]="cellActionsMenu">
|
||||
<mat-icon class="material-icons">more_vert</mat-icon>
|
||||
</button>
|
||||
<mat-menu #cellActionsMenu="matMenu" xPosition="before">
|
||||
<button mat-menu-item *ngFor="let actionDescriptor of cellActionDescriptors"
|
||||
[disabled]="isLoading$ | async"
|
||||
[fxShow]="actionDescriptor.isEnabled(entity)"
|
||||
<mat-cell *matCellDef="let entity">
|
||||
<ng-container *ngIf="cellActionDescriptors.length">
|
||||
<div [class.lt-lg:!hidden]="cellActionDescriptors.length !== 1" class="flex flex-row justify-end items-stretch"
|
||||
[style.width]="(cellActionDescriptors.length * 48) + 'px'"
|
||||
[style.min-width]="(cellActionDescriptors.length * 48) + 'px'"
|
||||
[style.max-width]="(cellActionDescriptors.length * 48) + 'px'">
|
||||
<button mat-icon-button [disabled]="(isLoading$ | async) || !actionDescriptor.isEnabled(entity)"
|
||||
*ngFor="let actionDescriptor of cellActionDescriptors"
|
||||
matTooltip="{{ actionDescriptor.nameFunction ? actionDescriptor.nameFunction(entity) : actionDescriptor.name }}"
|
||||
matTooltipPosition="above"
|
||||
(click)="actionDescriptor.onAction($event, entity)">
|
||||
<tb-icon matMenuItemIcon [ngStyle]="actionDescriptor.style">
|
||||
<tb-icon [style]="actionDescriptor.style">
|
||||
{{actionDescriptor.iconFunction ? actionDescriptor.iconFunction(entity) : actionDescriptor.icon}}
|
||||
</tb-icon>
|
||||
<span>{{ actionDescriptor.nameFunction ? actionDescriptor.nameFunction(entity) : actionDescriptor.name }}</span>
|
||||
</button>
|
||||
</mat-menu>
|
||||
</div>
|
||||
</div>
|
||||
<div [class.!hidden]="cellActionDescriptors.length === 1" class="gt-md:!hidden">
|
||||
<button mat-icon-button
|
||||
(click)="$event.stopPropagation()"
|
||||
[matMenuTriggerFor]="cellActionsMenu">
|
||||
<mat-icon class="material-icons">more_vert</mat-icon>
|
||||
</button>
|
||||
<mat-menu #cellActionsMenu="matMenu" xPosition="before">
|
||||
<button mat-menu-item *ngFor="let actionDescriptor of cellActionDescriptors"
|
||||
[disabled]="isLoading$ | async"
|
||||
[class.!hidden]="!actionDescriptor.isEnabled(entity)"
|
||||
(click)="actionDescriptor.onAction($event, entity)">
|
||||
<tb-icon matMenuItemIcon [style]="actionDescriptor.style">
|
||||
{{actionDescriptor.iconFunction ? actionDescriptor.iconFunction(entity) : actionDescriptor.icon}}
|
||||
</tb-icon>
|
||||
<span>{{ actionDescriptor.nameFunction ? actionDescriptor.nameFunction(entity) : actionDescriptor.name }}</span>
|
||||
</button>
|
||||
</mat-menu>
|
||||
</div>
|
||||
</ng-container>
|
||||
</mat-cell>
|
||||
</ng-container>
|
||||
<mat-header-row [ngClass]="{'mat-row-select': selectionEnabled}" *matHeaderRowDef="displayedColumns; sticky: true"></mat-header-row>
|
||||
<mat-row [fxShow]="!dataSource.dataLoading"
|
||||
[ngClass]="{'mat-row-select': selectionEnabled,
|
||||
'mat-selected': dataSource.selection.isSelected(entity),
|
||||
'tb-current-entity': dataSource.isCurrentEntity(entity),
|
||||
'tb-pointer': entitiesTableConfig.rowPointer}"
|
||||
<mat-header-row [class.mat-row-select]="selectionEnabled" *matHeaderRowDef="displayedColumns; sticky: true"></mat-header-row>
|
||||
<mat-row [class.!hidden]="dataSource.dataLoading"
|
||||
[class.mat-row-select]="selectionEnabled"
|
||||
[class.mat-selected]="dataSource.selection.isSelected(entity)"
|
||||
[class.tb-current-entity]="dataSource.isCurrentEntity(entity)"
|
||||
[class.tb-pointer]="entitiesTableConfig.rowPointer"
|
||||
*matRowDef="let entity; columns: displayedColumns;" (click)="onRowClick($event, entity)"></mat-row>
|
||||
</table>
|
||||
<span [fxShow]="!(isLoading$ | async) && (dataSource.isEmpty() | async) && !dataSource.dataLoading"
|
||||
fxLayoutAlign="center center"
|
||||
class="no-data-found">{{ translations.noEntities | translate }}</span>
|
||||
<span [fxShow]="dataSource.dataLoading"
|
||||
fxLayoutAlign="center center"
|
||||
class="no-data-found">{{ 'common.loading' | translate }}</span>
|
||||
<span [class.!hidden]="(isLoading$ | async) || (dataSource.isEmpty() | async) === false || dataSource.dataLoading"
|
||||
class="no-data-found flex justify-center items-center">{{ translations.noEntities | translate }}</span>
|
||||
<span [class.!hidden]="!dataSource.dataLoading"
|
||||
class="no-data-found flex justify-center items-center">{{ 'common.loading' | translate }}</span>
|
||||
</div>
|
||||
<mat-divider *ngIf="displayPagination"></mat-divider>
|
||||
<mat-paginator *ngIf="displayPagination"
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user