mirror of https://github.com/Squidex/squidex.git
80 changed files with 13415 additions and 250 deletions
@ -1,109 +1,101 @@ |
|||
<sqx-title message="User Management"></sqx-title> |
|||
|
|||
<sqx-panel desiredWidth="50rem"> |
|||
<div class="panel-header"> |
|||
<div class="panel-title-row"> |
|||
<div class="float-right"> |
|||
<button class="btn btn-link btn-secondary" (click)="load(true)" title="Refresh Users (CTRL + SHIFT + R)"> |
|||
<i class="icon-reset"></i> Refresh |
|||
</button> |
|||
<sqx-panel desiredWidth="50rem" contentClass="grid"> |
|||
<ng-container title> |
|||
Users |
|||
</ng-container> |
|||
|
|||
<sqx-shortcut keys="ctrl+shift+r" (trigger)="load(true)"></sqx-shortcut> |
|||
<sqx-shortcut keys="ctrl+shift+f" (trigger)="inputFind.focus()"></sqx-shortcut> |
|||
<sqx-shortcut keys="ctrl+shift+n" (trigger)="buttonNew.click()"></sqx-shortcut> |
|||
<ng-container menu> |
|||
<button class="btn btn-link btn-secondary" (click)="load(true)" title="Refresh Users (CTRL + SHIFT + R)"> |
|||
<i class="icon-reset"></i> Refresh |
|||
</button> |
|||
|
|||
<form class="form-inline" (ngSubmit)="search()"> |
|||
<input class="form-control" #inputFind [formControl]="usersFilter" placeholder="Search for user" /> |
|||
</form> |
|||
<sqx-shortcut keys="ctrl+shift+r" (trigger)="load(true)"></sqx-shortcut> |
|||
<sqx-shortcut keys="ctrl+shift+f" (trigger)="inputFind.focus()"></sqx-shortcut> |
|||
<sqx-shortcut keys="ctrl+shift+n" (trigger)="buttonNew.click()"></sqx-shortcut> |
|||
|
|||
<button class="btn btn-success" #buttonNew routerLink="new" title="New User (CTRL + N)"> |
|||
<i class="icon-plus"></i> New |
|||
</button> |
|||
</div> |
|||
|
|||
<h3 class="panel-title">Users</h3> |
|||
</div> |
|||
<form class="form-inline" (ngSubmit)="search()"> |
|||
<input class="form-control" #inputFind [formControl]="usersFilter" placeholder="Search for user" /> |
|||
</form> |
|||
|
|||
<a class="panel-close" sqxParentLink isLazyLoaded="true"> |
|||
<i class="icon-close"></i> |
|||
</a> |
|||
</div> |
|||
<button class="btn btn-success" #buttonNew routerLink="new" title="New User (CTRL + N)"> |
|||
<i class="icon-plus"></i> New |
|||
</button> |
|||
</ng-container> |
|||
|
|||
<div class="panel-main"> |
|||
<div class="panel-content grid"> |
|||
<div class="grid-header"> |
|||
<ng-container content> |
|||
<div class="grid-header"> |
|||
<table class="table table-items table-fixed"> |
|||
<thead> |
|||
<tr> |
|||
<th class="cell-user"> |
|||
|
|||
</th> |
|||
<th class="cell-auto"> |
|||
Name |
|||
</th> |
|||
<th class="cell-auto"> |
|||
Email |
|||
</th> |
|||
<th class="cell-actions"> |
|||
Actions |
|||
</th> |
|||
</tr> |
|||
</thead> |
|||
</table> |
|||
</div> |
|||
|
|||
<div class="grid-content"> |
|||
<div sqxIgnoreScrollbar> |
|||
<table class="table table-items table-fixed"> |
|||
<thead> |
|||
<tr> |
|||
<th class="cell-user"> |
|||
|
|||
</th> |
|||
<th class="cell-auto"> |
|||
Name |
|||
</th> |
|||
<th class="cell-auto"> |
|||
Email |
|||
</th> |
|||
<th class="cell-actions"> |
|||
Actions |
|||
</th> |
|||
</tr> |
|||
</thead> |
|||
</table> |
|||
</div> |
|||
|
|||
<div class="grid-content"> |
|||
<div sqxIgnoreScrollbar> |
|||
<table class="table table-items table-fixed"> |
|||
<tbody> |
|||
<ng-template ngFor let-user [ngForOf]="usersState.users | async" [ngForTrackBy]="usersState.trackByUser"> |
|||
<tr [routerLink]="user.id" routerLinkActive="active"> |
|||
<td class="cell-user"> |
|||
<img class="user-picture" [attr.title]="user.name" [attr.src]="user | sqxUserDtoPicture" /> |
|||
</td> |
|||
<td class="cell-auto"> |
|||
<span class="user-name table-cell">{{user.displayName}}</span> |
|||
</td> |
|||
<td class="cell-auto"> |
|||
<span class="user-email table-cell">{{user.email}}</span> |
|||
</td> |
|||
<td class="cell-actions"> |
|||
<span *ngIf="user.id !== authState.user.id"> |
|||
<button class="btn btn-link" (click)="lock(user); $event.stopPropagation();" *ngIf="!user.isLocked" title="Lock User"> |
|||
<i class="icon icon-unlocked"></i> |
|||
</button> |
|||
<button class="btn btn-link" (click)="unlock(user); $event.stopPropagation();" *ngIf="user.isLocked" title="Unlock User"> |
|||
<i class="icon icon-lock"></i> |
|||
</button> |
|||
</span> |
|||
<button *ngIf="user.id === authState.user?.id" class="btn btn-link invisible"> |
|||
|
|||
<tbody> |
|||
<ng-template ngFor let-user [ngForOf]="usersState.users | async" [ngForTrackBy]="usersState.trackByUser"> |
|||
<tr [routerLink]="user.id" routerLinkActive="active"> |
|||
<td class="cell-user"> |
|||
<img class="user-picture" [attr.title]="user.name" [attr.src]="user | sqxUserDtoPicture" /> |
|||
</td> |
|||
<td class="cell-auto"> |
|||
<span class="user-name table-cell">{{user.displayName}}</span> |
|||
</td> |
|||
<td class="cell-auto"> |
|||
<span class="user-email table-cell">{{user.email}}</span> |
|||
</td> |
|||
<td class="cell-actions"> |
|||
<span *ngIf="user.id !== authState.user?.id"> |
|||
<button class="btn btn-link" (click)="lock(user); $event.stopPropagation();" *ngIf="!user.isLocked" title="Lock User"> |
|||
<i class="icon icon-unlocked"></i> |
|||
</button> |
|||
</td> |
|||
</tr> |
|||
<tr class="spacer"></tr> |
|||
</ng-template> |
|||
</tbody> |
|||
</table> |
|||
</div> |
|||
<button class="btn btn-link" (click)="unlock(user); $event.stopPropagation();" *ngIf="user.isLocked" title="Unlock User"> |
|||
<i class="icon icon-lock"></i> |
|||
</button> |
|||
</span> |
|||
<button *ngIf="user.id === authState.user?.id" class="btn btn-link invisible"> |
|||
|
|||
</button> |
|||
</td> |
|||
</tr> |
|||
<tr class="spacer"></tr> |
|||
</ng-template> |
|||
</tbody> |
|||
</table> |
|||
</div> |
|||
</div> |
|||
|
|||
<ng-container *ngIf="usersState.usersPager | async as pager"> |
|||
<div class="grid-footer clearfix" *ngIf="pager.numberOfItems > 0"> |
|||
<div class="float-right pagination"> |
|||
<span class="pagination-text">{{pager.itemFirst}}-{{pager.itemLast}} of {{pager.numberOfItems}}</span> |
|||
|
|||
<button class="btn btn-link btn-secondary pagination-button" [disabled]="!pager.canGoPrev" (click)="goPrev()"> |
|||
<i class="icon-angle-left"></i> |
|||
</button> |
|||
<button class="btn btn-link btn-secondary pagination-button" [disabled]="!pager.canGoNext" (click)="goNext()"> |
|||
<i class="icon-angle-right"></i> |
|||
</button> |
|||
</div> |
|||
<ng-container *ngIf="usersState.usersPager | async as pager"> |
|||
<div class="grid-footer clearfix" *ngIf="pager.numberOfItems > 0"> |
|||
<div class="float-right pagination"> |
|||
<span class="pagination-text">{{pager.itemFirst}}-{{pager.itemLast}} of {{pager.numberOfItems}}</span> |
|||
|
|||
<button class="btn btn-link btn-secondary pagination-button" [disabled]="!pager.canGoPrev" (click)="goPrev()"> |
|||
<i class="icon-angle-left"></i> |
|||
</button> |
|||
<button class="btn btn-link btn-secondary pagination-button" [disabled]="!pager.canGoNext" (click)="goNext()"> |
|||
<i class="icon-angle-right"></i> |
|||
</button> |
|||
</div> |
|||
</ng-container> |
|||
</div> |
|||
</div> |
|||
</div> |
|||
</ng-container> |
|||
</ng-container> |
|||
</sqx-panel> |
|||
|
|||
<router-outlet></router-outlet> |
|||
@ -0,0 +1,29 @@ |
|||
<div #panel> |
|||
<div class="panel panel-{{theme}}" [@slideRight]> |
|||
<div class="panel-header"> |
|||
<div class="panel-title-row"> |
|||
<div class="float-right"> |
|||
<ng-content select=[menu]></ng-content> |
|||
</div> |
|||
|
|||
<h3 class="panel-title"> |
|||
<ng-content select=[title]></ng-content> |
|||
</h3> |
|||
</div> |
|||
|
|||
<a class="panel-close" sqxParentLink isLazyLoaded="true" *ngIf="showClose"> |
|||
<i class="icon-close"></i> |
|||
</a> |
|||
</div> |
|||
|
|||
<div class="panel-main"> |
|||
<div class="panel-content {{contentClass}} {{showScrollbar ? 'panel-content-scroll' : ''}} {{isBlank ? 'panel-content-blank' : ''}}"> |
|||
<ng-content select=[content]></ng-content> |
|||
</div> |
|||
|
|||
<div class="panel-sidebar" *ngIf="showSidebar"> |
|||
<ng-content select=[sidebar]></ng-content>> |
|||
</div> |
|||
</div> |
|||
</div> |
|||
</div> |
|||
@ -0,0 +1,2 @@ |
|||
@import '_mixins'; |
|||
@import '_vars'; |
|||
File diff suppressed because it is too large
Loading…
Reference in new issue