File preview right new layout
This commit is contained in:
parent
38a3c07d1f
commit
03f69a6b3f
@ -1,6 +1,6 @@
|
||||
<div class="rectangle-container">
|
||||
<div class="rectangle-container" [ngClass]="{ small: small }">
|
||||
<div *ngFor="let rect of config" [className]="'section-wrapper flex-' + rect.length">
|
||||
<div *ngIf="rect.title" class="subtitle">{{ rect.title }}</div>
|
||||
<div [className]="'rectangle ' + rect.color "></div>
|
||||
<div *ngIf="rect.title" class="subtitle">{{ rect.title }}</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@ -5,8 +5,16 @@
|
||||
display: flex;
|
||||
width: 100%;
|
||||
|
||||
.subtitle {
|
||||
margin-bottom: 8px;
|
||||
&.small {
|
||||
.rectangle {
|
||||
width: 12px;
|
||||
}
|
||||
|
||||
.section-wrapper {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: 10px;
|
||||
}
|
||||
}
|
||||
|
||||
.section-wrapper:first-child {
|
||||
|
||||
@ -14,6 +14,9 @@ export class StatusBarComponent implements OnInit {
|
||||
title?: string,
|
||||
}[] = [];
|
||||
|
||||
@Input()
|
||||
public small = false;
|
||||
|
||||
constructor() {
|
||||
}
|
||||
|
||||
|
||||
@ -29,26 +29,21 @@
|
||||
</div>
|
||||
|
||||
<div class="right-fixed-container">
|
||||
<div class="actions-row">
|
||||
<div>Edit</div>
|
||||
<div>Delete</div>
|
||||
<div>View</div>
|
||||
|
||||
<!-- Quick navigation tab-->
|
||||
<div class="vertical" (click)="selectTab('NAVIGATION')" [ngClass]="{ active: navigationTab}">
|
||||
<div class="tab-title" [ngClass]="navigationTab ? 'heading' : 'subheading'">
|
||||
Quick Navigation
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="tabs">
|
||||
<div class="tabs-title-row flex-row">
|
||||
<div class="tab"
|
||||
[ngClass]="{ active: selectedTab === 'ANNOTATIONS'}"
|
||||
(click)="selectTab('ANNOTATIONS')">
|
||||
Annotations
|
||||
</div>
|
||||
<div class="tab"
|
||||
[ngClass]="{ active: selectedTab === 'INFO'}"
|
||||
(click)="selectTab('INFO')">
|
||||
Info
|
||||
</div>
|
||||
<!-- Annotations tab-->
|
||||
<div (click)="selectTab('ANNOTATIONS')" class="vertical" [ngClass]="{ active: annotationsTab }">
|
||||
<div class="tab-title" [ngClass]="annotationsTab ? 'heading' : 'subheading'">
|
||||
Annotations
|
||||
</div>
|
||||
<div class="tab-content" #annotationsContainer *ngIf="selectedTab === 'ANNOTATIONS'">
|
||||
|
||||
<div *ngIf="annotationsTab" class="content-container" #annotationsContainer>
|
||||
<div *ngFor="let annotation of annotations"
|
||||
class="annotation" [id]="'ann-' + annotation.Id"
|
||||
(click)="selectAnnotation(annotation)"
|
||||
@ -59,19 +54,26 @@
|
||||
<div>{{annotation.getStatus()}}</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="tab-content" *ngIf="selectedTab === 'INFO'">
|
||||
<redaction-status-bar
|
||||
[config]="[{ length: 1, color: 'grey', title: 'Unassigned'}]"
|
||||
></redaction-status-bar>
|
||||
</div>
|
||||
|
||||
<div class="subtitle stats-subtitle mt-20">
|
||||
<!-- Info tab-->
|
||||
<div class="vertical" (click)="selectTab('INFO')" [ngClass]="{ active: infoTab}">
|
||||
<div class="tab-title" [ngClass]="infoTab ? 'heading' : 'subheading'">
|
||||
Info
|
||||
</div>
|
||||
|
||||
<div *ngIf="infoTab" class="content-container info-container">
|
||||
<redaction-status-bar [small]="true"
|
||||
[config]="[{ length: 1, title: 'Unassigned', color: 'grey'}]"></redaction-status-bar>
|
||||
|
||||
<div class="subtitle stats-subtitle mt-5">
|
||||
<div>645</div>
|
||||
<div>9</div>
|
||||
</div>
|
||||
|
||||
<div class="flex-row mt-20">
|
||||
<redaction-initials-avatar size="large"></redaction-initials-avatar>
|
||||
<a class="assign-reviewer">+ Assign Reviewer</a>
|
||||
<redaction-initials-avatar size="large" color="red-white"></redaction-initials-avatar>
|
||||
<a class="assign-reviewer">Assign Reviewer</a>
|
||||
</div>
|
||||
|
||||
<div class="subheading mt-20">
|
||||
@ -97,7 +99,6 @@
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<button (click)="showDetailsDialog($event)" aria-label="details" class="details-button" color="primary" mat-fab>
|
||||
<mat-icon svgIcon="red:info"></mat-icon>
|
||||
|
||||
@ -14,56 +14,64 @@ redaction-pdf-viewer {
|
||||
.right-fixed-container {
|
||||
padding: 0;
|
||||
width: calc(#{$right-container-width} - 1px);
|
||||
display: flex;
|
||||
|
||||
.tabs-title-row {
|
||||
border-bottom: 1px solid rgba(226,228,233,0.9);
|
||||
box-sizing: border-box;
|
||||
height: 45px;
|
||||
.vertical {
|
||||
height: 100%;
|
||||
border-right: 1px solid $separator;
|
||||
|
||||
.tab {
|
||||
font-size: 13px;
|
||||
font-weight: 600;
|
||||
line-height: 18px;
|
||||
padding: 12px;
|
||||
cursor: pointer;
|
||||
border-bottom: 3px solid transparent;
|
||||
&.active {
|
||||
width: calc(#{$right-container-width} - 80px);
|
||||
padding-top: 0;
|
||||
|
||||
&:first-child {
|
||||
margin-left: 2px;
|
||||
.tab-title {
|
||||
height: 70px;
|
||||
display: flex;
|
||||
border-bottom: 1px solid $separator;
|
||||
align-items: center;
|
||||
padding: 0 25px;
|
||||
}
|
||||
|
||||
&.active {
|
||||
color: $red-1;
|
||||
border-bottom: 3px solid $red-1;
|
||||
.content-container {
|
||||
overflow-y: scroll;
|
||||
overflow-x: hidden;
|
||||
height: calc(100vh - 110px - 73px);
|
||||
box-sizing: border-box;
|
||||
|
||||
scrollbar-width: none; /* Firefox */
|
||||
-ms-overflow-style: none; /* IE 10+ */
|
||||
&::-webkit-scrollbar {
|
||||
width: 0;
|
||||
background: transparent; /* Chrome/Safari/Webkit */
|
||||
}
|
||||
}
|
||||
|
||||
.info-container {
|
||||
padding: 15px;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.actions-row {
|
||||
margin: $right-container-padding $right-container-padding 0;
|
||||
}
|
||||
&:not(.active) {
|
||||
width: 40px;
|
||||
padding-top: 15px;
|
||||
cursor: pointer;
|
||||
|
||||
.tab-content {
|
||||
padding: $right-container-padding;
|
||||
overflow-y: scroll;
|
||||
overflow-x: hidden;
|
||||
height: calc(100vh - 110px - 40px - 45px - 3*#{$right-container-padding});
|
||||
}
|
||||
|
||||
.stats-subtitle {
|
||||
font-size: 13px;
|
||||
line-height: 16px;
|
||||
.tab-title {
|
||||
transform: translateX(27px) rotate(90deg);
|
||||
transform-origin: 0 0;
|
||||
position: absolute;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.assign-reviewer {
|
||||
font-size: 13px;
|
||||
line-height: 16px;
|
||||
|
||||
margin-left: 12px;
|
||||
}
|
||||
|
||||
.annotation {
|
||||
border: 1px solid $grey-2;
|
||||
border-bottom: 1px solid $grey-2;
|
||||
padding: 14px;
|
||||
font-size: 12px;
|
||||
cursor: pointer;
|
||||
|
||||
@ -22,6 +22,7 @@ export class FilePreviewScreenComponent implements OnInit {
|
||||
private _readyViewers: string[] = [];
|
||||
private _clickedAnnotationInSidebar = false;
|
||||
private projectId: string;
|
||||
private _selectedTab: 'NAVIGATION' | 'ANNOTATIONS' | 'INFO' = 'NAVIGATION';
|
||||
|
||||
@ViewChild(PdfViewerComponent)
|
||||
private _viewerComponent: PdfViewerComponent;
|
||||
@ -31,7 +32,6 @@ export class FilePreviewScreenComponent implements OnInit {
|
||||
|
||||
public fileId: string;
|
||||
public annotations: Annotations.Annotation[] = [];
|
||||
public selectedTab: 'ANNOTATIONS' | 'INFO' = 'ANNOTATIONS';
|
||||
public selectedAnnotation: Annotations.Annotation;
|
||||
|
||||
constructor(
|
||||
@ -83,8 +83,8 @@ export class FilePreviewScreenComponent implements OnInit {
|
||||
this._viewerSyncService.activateViewer(value);
|
||||
}
|
||||
|
||||
selectTab(value: 'ANNOTATIONS' | 'INFO') {
|
||||
this.selectedTab = value;
|
||||
selectTab(value: 'ANNOTATIONS' | 'INFO' | 'NAVIGATION') {
|
||||
this._selectedTab = value;
|
||||
}
|
||||
|
||||
handleAnnotationsAdded(annotations: Annotations.Annotation[]) {
|
||||
@ -129,4 +129,16 @@ export class FilePreviewScreenComponent implements OnInit {
|
||||
this._annotationsContainer.nativeElement.scroll({ top: scrollTop + top - headerHeight, behavior: 'smooth' });
|
||||
}
|
||||
}
|
||||
|
||||
public get navigationTab() {
|
||||
return this._selectedTab === 'NAVIGATION';
|
||||
}
|
||||
|
||||
public get annotationsTab() {
|
||||
return this._selectedTab === 'ANNOTATIONS';
|
||||
}
|
||||
|
||||
public get infoTab() {
|
||||
return this._selectedTab === 'INFO';
|
||||
}
|
||||
}
|
||||
|
||||
@ -29,10 +29,6 @@
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="table-header">
|
||||
<redaction-status-bar [config]="[{ length: 2, color: 'yellow', title: 'text 1'}, { length: 1, color: 'green', title: 'text 2'}]"></redaction-status-bar>
|
||||
</div>
|
||||
|
||||
<div class="table-col-names">
|
||||
<div class="flex-3 subtitle min-width" translate="project-overview.table-col-names.name.label"></div>
|
||||
<div class="flex-2 subtitle min-width" translate="project-overview.table-col-names.added-on.label"></div>
|
||||
@ -120,7 +116,7 @@
|
||||
|
||||
<div class="project-team mt-20">
|
||||
<div class="subheading" translate="project-overview.project-details.project-team.label"></div>
|
||||
<div class="flex mt-20">
|
||||
<div class="flex mt-20 members-container">
|
||||
<div *ngFor="let username of ['S H', 'D O', 'E G', 'D V', 'J A', 'T H', 'P B']" class="member">
|
||||
<redaction-initials-avatar [username]="username" size="large"></redaction-initials-avatar>
|
||||
</div>
|
||||
|
||||
@ -29,9 +29,7 @@
|
||||
line-height: 18px;
|
||||
}
|
||||
|
||||
.project-team {
|
||||
.member:not(:last-child) {
|
||||
margin-right: 5px;
|
||||
}
|
||||
.members-container {
|
||||
gap: 5px;
|
||||
}
|
||||
}
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
<section class="red-upload-overlay mat-elevation-z4">
|
||||
<div class="red-upload-header" (click)="collapsed = !collapsed">
|
||||
<div class="text">
|
||||
<div class="title">
|
||||
{{ 'upload-status.dialog.title.label' | translate: {p1: uploadService.files.length} }}
|
||||
</div>
|
||||
<div class="collapse-icon" *ngIf="!collapsed">
|
||||
|
||||
@ -10,11 +10,11 @@
|
||||
border-radius: 12px;
|
||||
font-size: 10px;
|
||||
border: 1px solid #E2E4E9;
|
||||
font-family: Inter, sans-serif;
|
||||
letter-spacing: 0;
|
||||
line-height: 12px;
|
||||
text-align: center;
|
||||
|
||||
text-transform: uppercase;
|
||||
font-family: Inter, sans-serif;
|
||||
|
||||
&.large {
|
||||
height: 32px;
|
||||
@ -50,7 +50,5 @@
|
||||
align-items: center;
|
||||
}
|
||||
|
||||
> div:not(:last-child) {
|
||||
margin-right: 12px;
|
||||
}
|
||||
gap: 12px;
|
||||
}
|
||||
|
||||
@ -6,7 +6,7 @@ html, body {
|
||||
padding: 0;
|
||||
height: 100vh;
|
||||
font-family: 'Inter', sans-serif;
|
||||
color: $grey-1;
|
||||
color: $accent;
|
||||
}
|
||||
|
||||
.page-header {
|
||||
@ -142,8 +142,6 @@ html, body {
|
||||
.app-name {
|
||||
margin-left: 16px;
|
||||
height: 20px;
|
||||
color: #283241;
|
||||
font-family: Inter, sans-serif;
|
||||
font-size: 16px;
|
||||
font-weight: 600;
|
||||
letter-spacing: 0;
|
||||
@ -158,7 +156,7 @@ html, body {
|
||||
|
||||
.breadcrumb {
|
||||
text-decoration: none;
|
||||
color: $grey-1;
|
||||
color: $accent;
|
||||
font-size: 13px;
|
||||
line-height: 18px;
|
||||
font-weight: 600;
|
||||
|
||||
@ -47,11 +47,6 @@
|
||||
@include line-clamp(1);
|
||||
}
|
||||
|
||||
.table-item-title--large {
|
||||
font-size: 16px;
|
||||
line-height: 20px;
|
||||
}
|
||||
|
||||
.on-hover-wrapper {
|
||||
width: 0;
|
||||
height: 0;
|
||||
|
||||
@ -24,14 +24,17 @@ a {
|
||||
}
|
||||
|
||||
.heading-l {
|
||||
color: #283241;
|
||||
font-family: Inter, sans-serif;
|
||||
font-size: 18px;
|
||||
font-weight: bold;
|
||||
letter-spacing: 0;
|
||||
font-weight: 600;
|
||||
line-height: 22px;
|
||||
}
|
||||
|
||||
.heading {
|
||||
font-size: 16px;
|
||||
line-height: 20px;
|
||||
font-weight: 600;
|
||||
}
|
||||
|
||||
.subheading {
|
||||
text-transform: uppercase;
|
||||
opacity: 0.7;
|
||||
|
||||
@ -16,6 +16,8 @@ $red-1: #F65757;
|
||||
$yellow-1: #FFB83B;
|
||||
$green-1: #46CE7D;
|
||||
|
||||
$separator: rgba(226,228,233,0.9);
|
||||
|
||||
$right-container-inside-width: 340px;
|
||||
$right-container-padding: 16px;
|
||||
$right-container-width: calc(#{$right-container-inside-width} + 2*#{$right-container-padding} + 1px);
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user