| @@ -1,23 +1,30 @@ | |||||
| <mat-paginator *ngIf="dataLength > 0" class="" | |||||
| [pageSizeOptions]="pageSizeOptions" | |||||
| [length]="dataLength" | |||||
| (page)="handlePageEvent($event)" | |||||
| [pageSize]="pageSize" | |||||
| [pageIndex]="pageIndex" | |||||
| showFirstLastButtons> | |||||
| </mat-paginator> | |||||
| <div *ngIf="searchable"> | |||||
| <form [formGroup]="searchForm"> | |||||
| <input type="text" formControlName="inputText" placeholder="{{'form.search-placeholder' | translate}}"> | |||||
| </form> | |||||
| <div class="spt-tools"> | |||||
| <div *ngIf="searchable"> | |||||
| <form [formGroup]="searchForm" class="position-relative"> | |||||
| <input type="text" class="form-control" formControlName="inputText" | |||||
| placeholder="{{'form.search-placeholder' | translate}}"> | |||||
| <span class="spt-clear" *ngIf="searchForm.get('inputText')?.value" (click)="clearForm()"></span> | |||||
| </form> | |||||
| </div> | |||||
| <mat-paginator *ngIf="dataLength > 0" class="" | |||||
| [pageSizeOptions]="pageSizeOptions" | |||||
| [length]="dataLength" | |||||
| (page)="handlePageEvent($event)" | |||||
| [pageSize]="pageSize" | |||||
| [pageIndex]="pageIndex" | |||||
| showFirstLastButtons> | |||||
| </mat-paginator> | |||||
| </div> | </div> | ||||
| <ng-content></ng-content> | <ng-content></ng-content> | ||||
| <mat-paginator *ngIf="dataLength > 0" class="" | |||||
| [pageSizeOptions]="pageSizeOptions" | |||||
| [length]="dataLength" | |||||
| (page)="handlePageEvent($event)" | |||||
| [pageSize]="pageSize" | |||||
| [pageIndex]="pageIndex" | |||||
| showFirstLastButtons> | |||||
| </mat-paginator> | |||||
| <div *ngIf="dataLength <= 0" class="spt-no-entries">{{'form.no-data' | translate}}</div> | |||||
| <div class="spt-tools single"> | |||||
| <mat-paginator *ngIf="dataLength > 0" class="" | |||||
| [pageSizeOptions]="pageSizeOptions" | |||||
| [length]="dataLength" | |||||
| (page)="handlePageEvent($event)" | |||||
| [pageSize]="pageSize" | |||||
| [pageIndex]="pageIndex" | |||||
| showFirstLastButtons> | |||||
| </mat-paginator> | |||||
| </div> | |||||
| @@ -15,7 +15,6 @@ export class PagingComponent implements OnInit { | |||||
| @Input() public pageSize!: number; | @Input() public pageSize!: number; | ||||
| @Input() public pageSizeOptions!: number[]; | @Input() public pageSizeOptions!: number[]; | ||||
| @Input() public searchable: boolean; | @Input() public searchable: boolean; | ||||
| @ViewChild(MatPaginator) public paginator!: MatPaginator; | @ViewChild(MatPaginator) public paginator!: MatPaginator; | ||||
| @@ -25,7 +24,7 @@ export class PagingComponent implements OnInit { | |||||
| public dataLength: number; | public dataLength: number; | ||||
| public pageEvent: PageEvent; | public pageEvent: PageEvent; | ||||
| protected pageIndex: number; | protected pageIndex: number; | ||||
| protected searchForm!: FormGroup; | |||||
| public searchForm!: FormGroup; | |||||
| constructor( | constructor( | ||||
| private fb: FormBuilder | private fb: FormBuilder | ||||
| @@ -81,4 +80,8 @@ export class PagingComponent implements OnInit { | |||||
| getPageSize(): number { | getPageSize(): number { | ||||
| return this.pageSize; | return this.pageSize; | ||||
| } | } | ||||
| clearForm() { | |||||
| this.searchForm.get('inputText')!.setValue(''); | |||||
| } | |||||
| } | } | ||||
| @@ -10,6 +10,16 @@ | |||||
| <div class="table-responsive"> | <div class="table-responsive"> | ||||
| <table mat-table [dataSource]="dataSource" matSort (matSortChange)="onSortChange($event)" class="mat-elevation-z8"> | <table mat-table [dataSource]="dataSource" matSort (matSortChange)="onSortChange($event)" class="mat-elevation-z8"> | ||||
| <ng-container matColumnDef="details"> | |||||
| <th mat-header-cell *matHeaderCellDef> | |||||
| {{ 'overview.details' | translate }} | |||||
| </th> | |||||
| <td mat-cell class="spt-button-td" *matCellDef="let element"> | |||||
| <span class="btn btn-primary spt-icon-details" | |||||
| data-type="user-tool" data-action="edit" (click)="navigateToPartnerDetails(element)"></span> | |||||
| </td> | |||||
| </ng-container> | |||||
| <ng-container matColumnDef="pos"> | <ng-container matColumnDef="pos"> | ||||
| <th mat-header-cell *matHeaderCellDef> | <th mat-header-cell *matHeaderCellDef> | ||||
| {{ 'overview.number' | translate }} | {{ 'overview.number' | translate }} | ||||
| @@ -60,16 +70,6 @@ | |||||
| </td> | </td> | ||||
| </ng-container> | </ng-container> | ||||
| <ng-container matColumnDef="details"> | |||||
| <th mat-header-cell class="text-end" *matHeaderCellDef> | |||||
| {{ 'overview.details' | translate }} | |||||
| </th> | |||||
| <td mat-cell class="spt-button-td" *matCellDef="let element"> | |||||
| <span class="btn btn-primary spt-icon-details" | |||||
| data-type="user-tool" data-action="edit" (click)="navigateToPartnerDetails(element)"></span> | |||||
| </td> | |||||
| </ng-container> | |||||
| <tr mat-header-row *matHeaderRowDef="displayedColumns"></tr> | <tr mat-header-row *matHeaderRowDef="displayedColumns"></tr> | ||||
| <tr mat-row *matRowDef="let row; columns: displayedColumns;"></tr> | <tr mat-row *matRowDef="let row; columns: displayedColumns;"></tr> | ||||
| </table> | </table> | ||||
| @@ -12,6 +12,16 @@ | |||||
| <table mat-table [dataSource]="dataSource" matSort (matSortChange)="onSortChange($event)" | <table mat-table [dataSource]="dataSource" matSort (matSortChange)="onSortChange($event)" | ||||
| class="mat-elevation-z8"> | class="mat-elevation-z8"> | ||||
| <ng-container matColumnDef="details"> | |||||
| <th mat-header-cell *matHeaderCellDef> | |||||
| {{ 'overview.details' | translate }} | |||||
| </th> | |||||
| <td mat-cell class="spt-button-td" *matCellDef="let element"> | |||||
| <span class="btn btn-primary spt-icon-details" | |||||
| data-type="user-tool" data-action="edit" (click)="navigateToProductDetails(element)"></span> | |||||
| </td> | |||||
| </ng-container> | |||||
| <ng-container matColumnDef="pos"> | <ng-container matColumnDef="pos"> | ||||
| <th mat-header-cell *matHeaderCellDef> | <th mat-header-cell *matHeaderCellDef> | ||||
| {{ 'overview.number' | translate }} | {{ 'overview.number' | translate }} | ||||
| @@ -58,16 +68,6 @@ | |||||
| </td> | </td> | ||||
| </ng-container> | </ng-container> | ||||
| <ng-container matColumnDef="details"> | |||||
| <th mat-header-cell class="text-end" *matHeaderCellDef> | |||||
| {{ 'overview.details' | translate }} | |||||
| </th> | |||||
| <td mat-cell class="spt-button-td" *matCellDef="let element"> | |||||
| <span class="btn btn-primary spt-icon-details" | |||||
| data-type="user-tool" data-action="edit" (click)="navigateToProductDetails(element)"></span> | |||||
| </td> | |||||
| </ng-container> | |||||
| <tr mat-header-row *matHeaderRowDef="displayedColumns"></tr> | <tr mat-header-row *matHeaderRowDef="displayedColumns"></tr> | ||||
| <tr mat-row *matRowDef="let row; columns: displayedColumns;"></tr> | <tr mat-row *matRowDef="let row; columns: displayedColumns;"></tr> | ||||
| </table> | </table> | ||||
| @@ -10,6 +10,16 @@ | |||||
| <table mat-table [dataSource]="dataSource" matSort (matSortChange)="onSortChange($event)" | <table mat-table [dataSource]="dataSource" matSort (matSortChange)="onSortChange($event)" | ||||
| class="mat-elevation-z8"> | class="mat-elevation-z8"> | ||||
| <ng-container matColumnDef="details"> | |||||
| <th mat-header-cell *matHeaderCellDef> | |||||
| {{ 'overview.details' | translate }} | |||||
| </th> | |||||
| <td mat-cell class="spt-button-td" *matCellDef="let element"> | |||||
| <span class="btn btn-primary spt-icon-details" | |||||
| data-type="user-tool" data-action="edit" (click)="navigateToSaleDetails(element)"></span> | |||||
| </td> | |||||
| </ng-container> | |||||
| <ng-container matColumnDef="pos"> | <ng-container matColumnDef="pos"> | ||||
| <th mat-header-cell *matHeaderCellDef> | <th mat-header-cell *matHeaderCellDef> | ||||
| {{ 'overview.number' | translate }} | {{ 'overview.number' | translate }} | ||||
| @@ -79,16 +89,6 @@ | |||||
| </td> | </td> | ||||
| </ng-container> | </ng-container> | ||||
| <ng-container matColumnDef="details"> | |||||
| <th mat-header-cell class="text-end" *matHeaderCellDef> | |||||
| {{ 'overview.details' | translate }} | |||||
| </th> | |||||
| <td mat-cell class="spt-button-td" *matCellDef="let element"> | |||||
| <span class="btn btn-primary spt-icon-details" | |||||
| data-type="user-tool" data-action="edit" (click)="navigateToSaleDetails(element)"></span> | |||||
| </td> | |||||
| </ng-container> | |||||
| <tr mat-header-row *matHeaderRowDef="displayedColumns"></tr> | <tr mat-header-row *matHeaderRowDef="displayedColumns"></tr> | ||||
| <tr mat-row *matRowDef="let row; columns: displayedColumns;"></tr> | <tr mat-row *matRowDef="let row; columns: displayedColumns;"></tr> | ||||
| </table> | </table> | ||||
| @@ -6,6 +6,16 @@ | |||||
| <div class="table-responsive"> | <div class="table-responsive"> | ||||
| <table mat-table [dataSource]="dataSource" matSort (matSortChange)="onSortChange($event)" class="mat-elevation-z8"> | <table mat-table [dataSource]="dataSource" matSort (matSortChange)="onSortChange($event)" class="mat-elevation-z8"> | ||||
| <ng-container matColumnDef="details"> | |||||
| <th mat-header-cell *matHeaderCellDef> | |||||
| {{ 'overview.details' | translate }} | |||||
| </th> | |||||
| <td mat-cell class="spt-button-td" *matCellDef="let element"> | |||||
| <span class="btn btn-primary spt-icon-details" | |||||
| data-type="user-tool" data-action="edit" (click)="navigateToUserDetails(element)"></span> | |||||
| </td> | |||||
| </ng-container> | |||||
| <ng-container matColumnDef="pos"> | <ng-container matColumnDef="pos"> | ||||
| <th mat-header-cell *matHeaderCellDef> | <th mat-header-cell *matHeaderCellDef> | ||||
| {{ 'overview.number' | translate }} | {{ 'overview.number' | translate }} | ||||
| @@ -52,16 +62,6 @@ | |||||
| </td> | </td> | ||||
| </ng-container> | </ng-container> | ||||
| <ng-container matColumnDef="details"> | |||||
| <th mat-header-cell class="text-end" *matHeaderCellDef> | |||||
| {{ 'overview.details' | translate }} | |||||
| </th> | |||||
| <td mat-cell class="spt-button-td" *matCellDef="let element"> | |||||
| <span class="btn btn-primary spt-icon-details" | |||||
| data-type="user-tool" data-action="edit" (click)="navigateToUserDetails(element)"></span> | |||||
| </td> | |||||
| </ng-container> | |||||
| <tr mat-header-row *matHeaderRowDef="displayedColumns"></tr> | <tr mat-header-row *matHeaderRowDef="displayedColumns"></tr> | ||||
| <tr mat-row *matRowDef="let row; columns: displayedColumns;"></tr> | <tr mat-row *matRowDef="let row; columns: displayedColumns;"></tr> | ||||
| </table> | </table> | ||||
| @@ -122,7 +122,8 @@ | |||||
| "profit": "Gewinn", | "profit": "Gewinn", | ||||
| "quantity": "Anzahl", | "quantity": "Anzahl", | ||||
| "send": "Speichern", | "send": "Speichern", | ||||
| "search-placeholder": "Suche" | |||||
| "search-placeholder": "Suche", | |||||
| "no-data": "Keine Datensätze gefunden." | |||||
| }, | }, | ||||
| "sales": | "sales": | ||||
| { | { | ||||
| @@ -92,6 +92,7 @@ img { | |||||
| .card { | .card { | ||||
| border-radius: 0; | border-radius: 0; | ||||
| border: none; | border: none; | ||||
| .card-header:first-child { | .card-header:first-child { | ||||
| border-radius: 0; | border-radius: 0; | ||||
| } | } | ||||
| @@ -106,7 +107,7 @@ img { | |||||
| .spt-main { | .spt-main { | ||||
| background: #fff; | background: #fff; | ||||
| color: rgba(33,37,41); | |||||
| color: rgba(33, 37, 41); | |||||
| @media only screen and (max-width: 1199px) { | @media only screen and (max-width: 1199px) { | ||||
| //width: calc(100% - calc(var(--bs-gutter-x) * 0.5) - calc(var(--bs-gutter-x) * 0.5)); | //width: calc(100% - calc(var(--bs-gutter-x) * 0.5) - calc(var(--bs-gutter-x) * 0.5)); | ||||
| } | } | ||||
| @@ -116,29 +117,36 @@ img { | |||||
| position: relative; | position: relative; | ||||
| min-height: 1px; | min-height: 1px; | ||||
| margin-bottom: 3rem; | margin-bottom: 3rem; | ||||
| .top-btn { | .top-btn { | ||||
| display: flex; | display: flex; | ||||
| justify-content: flex-end; | justify-content: flex-end; | ||||
| } | } | ||||
| .card:not(.contacts .card, .tasks .card, .post .card) { | .card:not(.contacts .card, .tasks .card, .post .card) { | ||||
| border: none; | border: none; | ||||
| border-radius: 0; | border-radius: 0; | ||||
| border-top: 1px solid #2B3A44; | border-top: 1px solid #2B3A44; | ||||
| border-bottom: 1px solid #2B3A44; | border-bottom: 1px solid #2B3A44; | ||||
| .card-body { | .card-body { | ||||
| padding: 5px 0; | padding: 5px 0; | ||||
| .spt-col { | .spt-col { | ||||
| padding-top: 20px; | padding-top: 20px; | ||||
| } | } | ||||
| .has-image { | .has-image { | ||||
| border-left: 1px solid #c1c1c1; | border-left: 1px solid #c1c1c1; | ||||
| align-content: center; | align-content: center; | ||||
| } | } | ||||
| img { | img { | ||||
| margin: 0 auto; | margin: 0 auto; | ||||
| max-width: 80%; | max-width: 80%; | ||||
| } | } | ||||
| } | } | ||||
| .mat-h1, | .mat-h1, | ||||
| .mat-headline-5, | .mat-headline-5, | ||||
| .mat-h2, | .mat-h2, | ||||
| @@ -162,6 +170,7 @@ img { | |||||
| background: #fafafa; | background: #fafafa; | ||||
| margin-bottom: 20px; | margin-bottom: 20px; | ||||
| } | } | ||||
| .top-btn { | .top-btn { | ||||
| position: absolute; | position: absolute; | ||||
| //right: 0; | //right: 0; | ||||
| @@ -169,14 +178,17 @@ img { | |||||
| right: 10px; | right: 10px; | ||||
| top: -53px; | top: -53px; | ||||
| margin: 0; | margin: 0; | ||||
| .btn { | .btn { | ||||
| //padding-top: 17px; | //padding-top: 17px; | ||||
| //padding-bottom: 17px; | //padding-bottom: 17px; | ||||
| } | } | ||||
| } | } | ||||
| app-paging > .mat-mdc-paginator:first-child { | app-paging > .mat-mdc-paginator:first-child { | ||||
| border: none; | border: none; | ||||
| } | } | ||||
| .mat-mdc-cell { | .mat-mdc-cell { | ||||
| background: #fafafa; | background: #fafafa; | ||||
| } | } | ||||
| @@ -241,4 +253,76 @@ img { | |||||
| @media only screen and (max-width: 767px) { | @media only screen and (max-width: 767px) { | ||||
| display: block; | display: block; | ||||
| } | } | ||||
| } | |||||
| } | |||||
| .spt-loader { | |||||
| width: 24px; | |||||
| height: 80px; | |||||
| display: block; | |||||
| margin: 35px auto 0; | |||||
| border: 1px solid #FFF; | |||||
| border-radius: 0 0 50px 50px; | |||||
| position: relative; | |||||
| box-shadow: 0px 0px #FF3D00 inset; | |||||
| background-image: linear-gradient(#FF3D00 100px, transparent 0); | |||||
| background-position: 0px 0px; | |||||
| background-size: 22px 80px; | |||||
| background-repeat: no-repeat; | |||||
| box-sizing: border-box; | |||||
| animation: animloader 6s linear infinite; | |||||
| } | |||||
| .spt-loader::after { | |||||
| content: ''; | |||||
| box-sizing: border-box; | |||||
| top: -6px; | |||||
| left: 50%; | |||||
| transform: translateX(-50%); | |||||
| position: absolute; | |||||
| border: 1px solid #FFF; | |||||
| border-radius: 50%; | |||||
| width: 28px; | |||||
| height: 6px; | |||||
| } | |||||
| .spt-loader::before { | |||||
| content: ''; | |||||
| box-sizing: border-box; | |||||
| left: 0; | |||||
| bottom: -4px; | |||||
| border-radius: 50%; | |||||
| position: absolute; | |||||
| width: 6px; | |||||
| height: 6px; | |||||
| animation: animloader1 6s linear infinite; | |||||
| } | |||||
| @keyframes animloader { | |||||
| 0% { | |||||
| background-position: 0px 80px; | |||||
| } | |||||
| 100% { | |||||
| background-position: 0px 0px; | |||||
| } | |||||
| } | |||||
| @keyframes animloader1 { | |||||
| 0% { | |||||
| box-shadow: 4px -10px rgba(255, 255, 255, 0), 6px 0px rgba(255, 255, 255, 0), 8px -15px rgba(255, 255, 255, 0), 12px 0px rgba(255, 255, 255, 0); | |||||
| } | |||||
| 20% { | |||||
| box-shadow: 4px -20px rgba(255, 255, 255, 0), 8px -10px rgba(255, 255, 255, 0), 10px -30px rgba(255, 255, 255, 0.5), 15px -5px rgba(255, 255, 255, 0); | |||||
| } | |||||
| 40% { | |||||
| box-shadow: 2px -40px rgba(255, 255, 255, 0.5), 8px -30px rgba(255, 255, 255, 0.4), 8px -60px rgba(255, 255, 255, 0.5), 12px -15px rgba(255, 255, 255, 0.5); | |||||
| } | |||||
| 60% { | |||||
| box-shadow: 4px -60px rgba(255, 255, 255, 0.5), 6px -50px rgba(255, 255, 255, 0.4), 10px -90px rgba(255, 255, 255, 0.5), 15px -25px rgba(255, 255, 255, 0.5); | |||||
| } | |||||
| 80% { | |||||
| box-shadow: 2px -80px rgba(255, 255, 255, 0.5), 4px -70px rgba(255, 255, 255, 0.4), 8px -120px rgba(255, 255, 255, 0), 12px -35px rgba(255, 255, 255, 0.5); | |||||
| } | |||||
| 100% { | |||||
| box-shadow: 4px -100px rgba(255, 255, 255, 0), 8px -90px rgba(255, 255, 255, 0), 10px -120px rgba(255, 255, 255, 0), 15px -45px rgba(255, 255, 255, 0); | |||||
| } | |||||
| } | |||||
| @@ -45,13 +45,57 @@ th.mat-sort-header-sorted { | |||||
| } | } | ||||
| } | } | ||||
| .spt-tools { | |||||
| display: flex; | |||||
| justify-content: space-between; | |||||
| align-items: center; | |||||
| border-top: 1px solid #2b3a44; | |||||
| min-height: 57px; | |||||
| &.single { | |||||
| justify-content: flex-end; | |||||
| } | |||||
| } | |||||
| .spt-clear { | |||||
| position: absolute; | |||||
| right: 10px; | |||||
| top: 50%; | |||||
| background: #fff; | |||||
| width: 20px; | |||||
| height: 30px; | |||||
| cursor: pointer; | |||||
| transform: translate(0, -50%); | |||||
| &:before, &:after { | |||||
| content: ""; | |||||
| position: absolute; | |||||
| left: 50%; | |||||
| top: 50%; | |||||
| width: 10px; | |||||
| height: 2px; | |||||
| background: #000; | |||||
| } | |||||
| &:before { | |||||
| transform: translate(-50%, -50%) rotate(45deg); | |||||
| } | |||||
| &:after { | |||||
| transform: translate(-50%, -50%) rotate(-45deg); | |||||
| } | |||||
| } | |||||
| .spt-no-entries { | |||||
| padding: 20px 16px; | |||||
| } | |||||
| .mat-mdc-paginator { | .mat-mdc-paginator { | ||||
| background: transparent !important; | background: transparent !important; | ||||
| border-top: 1px solid #2b3a44; | |||||
| .mat-mdc-paginator-container { | .mat-mdc-paginator-container { | ||||
| display: flex; | display: flex; | ||||
| justify-content: space-between; | |||||
| justify-content: flex-start; | |||||
| } | } | ||||
| .mat-mdc-paginator-page-size-label, | .mat-mdc-paginator-page-size-label, | ||||