Pull request #256: Common lib

Merge in RED/ui from common-lib to master

* commit 'da5197f1010fb16c0a3ddc352d4564e3d0b308ad': (27 commits)
  artifacts
  artifacts
  listing
  fixed typo
  checkout shared first
  checkout shared first
  checkout shared first
  checkout shared first
  checkout shared first
  checkout shared first
  checkout shared first
  checkout shared first
  checkout shared first
  checkout shared first
  changed protocol to ssh
  changed protocol to ssh
  changed protocol to ssh
  changed protocol to ssh
  updated build file
  move round checkbox to common lib
  ...
This commit is contained in:
Timo Bejan 2021-08-03 09:32:59 +02:00
commit 7ed7946443
239 changed files with 802 additions and 1242 deletions

3
.gitmodules vendored Normal file
View File

@ -0,0 +1,3 @@
[submodule "libs/common-ui"]
path = libs/common-ui
url = https://git.iqser.com/scm/sl/common-ui.git

View File

@ -50,9 +50,14 @@
"input": "apps/red-ui/src/assets/",
"output": "/assets/"
},
{
"glob": "**/*",
"input": "libs/common-ui/src/assets/",
"output": "/assets/"
},
"apps/red-ui/src/manifest.webmanifest"
],
"styles": ["apps/red-ui/src/styles.scss"],
"styles": ["apps/red-ui/src/styles.scss", "libs/common-ui/src/assets/styles/common.scss"],
"scripts": ["node_modules/@pdftron/webviewer/webviewer.min.js"],
"vendorChunk": true,
"extractLicenses": false,

View File

@ -66,13 +66,13 @@
</div>
<div class="menu right flex-2">
<div class="buttons">
<redaction-circle-button
<iqser-circle-button
(action)="openSpotlightSearch()"
*ngIf="!isSearchScreen"
[icon]="'red:search'"
[tooltip]="'search.header-label' | translate"
tooltipPosition="below"
></redaction-circle-button>
></iqser-circle-button>
<redaction-notifications *ngIf="userPreferenceService.areDevFeaturesEnabled"></redaction-notifications>
</div>

View File

@ -1,4 +1,4 @@
@import '../../../assets/styles/red-variables';
@import '../../../assets/styles/variables';
@import '../../../assets/styles/red-mixins';
.dev-mode {

View File

@ -22,7 +22,7 @@
<!-- Table lines -->
<div *cdkVirtualFor="let download of sortedDisplayedEntities$ | async; trackBy: trackByPrimaryKey" class="table-item">
<div (click)="toggleEntitySelected($event, download)" class="selection-column">
<redaction-round-checkbox [active]="isSelected(download)"></redaction-round-checkbox>
<iqser-round-checkbox [active]="isSelected(download)"></iqser-round-checkbox>
</div>
<div>
@ -47,22 +47,20 @@
</div>
<div class="actions-container">
<div [class.active]="download.inProgress" class="action-buttons">
<redaction-circle-button
<iqser-circle-button
(action)="downloadItem(download)"
*ngIf="download.status === 'READY' && !download.inProgress"
[tooltip]="'downloads-list.actions.download' | translate"
icon="red:download"
type="dark-bg"
>
</redaction-circle-button>
[type]="circleButtonTypes.dark"
></iqser-circle-button>
<redaction-circle-button
<iqser-circle-button
(action)="deleteItems([download])"
[tooltip]="'downloads-list.actions.delete' | translate"
icon="red:trash"
type="dark-bg"
>
</redaction-circle-button>
[type]="circleButtonTypes.dark"
></iqser-circle-button>
<mat-spinner *ngIf="download.inProgress" diameter="15"></mat-spinner>
</div>
@ -75,11 +73,11 @@
</section>
<ng-template #bulkActions>
<redaction-circle-button
<iqser-circle-button
(action)="deleteItems()"
*ngIf="screenStateService.areSomeEntitiesSelected$ | async"
[tooltip]="'downloads-list.bulk.delete' | translate"
icon="red:trash"
type="dark-bg"
></redaction-circle-button>
[type]="circleButtonTypes.dark"
></iqser-circle-button>
</ng-template>

View File

@ -9,6 +9,7 @@ import { ScreenStateService } from '@shared/services/screen-state.service';
import { SortingService } from '@services/sorting.service';
import { marker as _ } from '@biesbjerg/ngx-translate-extract-marker';
import { TableColConfig } from '@shared/components/table-col-name/table-col-name.component';
import { CircleButtonTypes } from '@iqser/common-ui';
@Component({
selector: 'redaction-downloads-list-screen',
@ -17,15 +18,16 @@ import { TableColConfig } from '@shared/components/table-col-name/table-col-name
providers: [FilterService, SearchService, ScreenStateService, SortingService]
})
export class DownloadsListScreenComponent extends BaseListingComponent<DownloadStatusWrapper> implements OnInit {
itemSize = 80;
tableColConfigs: TableColConfig[] = [
readonly circleButtonTypes = CircleButtonTypes;
readonly itemSize = 80;
readonly tableColConfigs: TableColConfig[] = [
{ label: _('downloads-list.table-col-names.name') },
{ label: _('downloads-list.table-col-names.size') },
{ label: _('downloads-list.table-col-names.date') },
{ label: _('downloads-list.table-col-names.status') }
];
protected readonly _primaryKey = 'storageId';
protected _tableHeaderLabel = _('downloads-list.table-header.title');
protected readonly _tableHeaderLabel = _('downloads-list.table-header.title');
constructor(
readonly fileDownloadService: FileDownloadService,

View File

@ -1,4 +1,4 @@
@import '../../../assets/styles/red-variables';
@import '../../../assets/styles/variables';
:host {
color: $primary;

View File

@ -1,4 +1,4 @@
<redaction-circle-button [matMenuTriggerFor]="overlay" [showDot]="hasUnread" icon="red:notification"></redaction-circle-button>
<iqser-circle-button [matMenuTriggerFor]="overlay" [showDot]="hasUnread" icon="red:notification"></iqser-circle-button>
<mat-menu #overlay="matMenu" backdropClass="notifications-backdrop" class="notifications-menu" xPosition="before">
<div *ngFor="let group of groupedNotifications | sortBy: 'desc':'dateString'">
<div class="all-caps-label">{{ day(group) }}</div>

View File

@ -1,4 +1,4 @@
@import '../../../assets/styles/red-variables';
@import '../../../assets/styles/variables';
.mt-2 {
margin-top: 2px;

View File

@ -5,12 +5,7 @@
<ng-container *ngIf="showActions$ | async as showActions">
<mat-icon class="mr-34" *ngIf="!showActions" [svgIcon]="'red:search'"></mat-icon>
<redaction-circle-button
*ngIf="showActions"
class="mr-24"
(action)="dialogRef.close()"
icon="red:close"
></redaction-circle-button>
<iqser-circle-button *ngIf="showActions" class="mr-24" (action)="dialogRef.close()" icon="red:close"></iqser-circle-button>
</ng-container>
</div>

View File

@ -1,4 +1,4 @@
@import 'apps/red-ui/src/assets/styles/red-variables';
@import '../../../assets/styles/variables';
.spotlight-wrapper {
overflow: hidden;
@ -19,7 +19,7 @@
font-weight: 500;
border: none;
outline: none;
color: $grey-1;
color: $accent;
padding: 0 24px;
background-color: $white;
}

View File

@ -1 +1 @@
@import '../../../assets/styles/red-variables';
@import '../../../assets/styles/variables';

View File

@ -1,17 +1,17 @@
<div class="action-buttons">
<redaction-circle-button
<iqser-circle-button
(action)="openDeleteDossierTemplateDialog($event)"
*ngIf="permissionsService.isAdmin()"
[tooltip]="'dossier-templates-listing.action.delete' | translate"
icon="red:trash"
type="dark-bg"
></redaction-circle-button>
[type]="circleButtonTypes.dark"
></iqser-circle-button>
<redaction-circle-button
<iqser-circle-button
(action)="openEditDossierTemplateDialog($event)"
*ngIf="permissionsService.isAdmin()"
[tooltip]="'dossier-templates-listing.action.edit' | translate"
icon="red:edit"
type="dark-bg"
></redaction-circle-button>
[type]="circleButtonTypes.dark"
></iqser-circle-button>
</div>

View File

@ -1,7 +1,7 @@
.action-buttons {
display: flex;
redaction-circle-button:not(:last-child) {
iqser-circle-button:not(:last-child) {
margin-right: 2px;
}
}

View File

@ -5,6 +5,7 @@ import { Router } from '@angular/router';
import { AdminDialogService } from '../../services/admin-dialog.service';
import { DossierTemplateControllerService } from '@redaction/red-ui-http';
import { LoadingService } from '@services/loading.service';
import { CircleButtonTypes } from '@iqser/common-ui';
@Component({
selector: 'redaction-dossier-template-actions',
@ -12,6 +13,8 @@ import { LoadingService } from '@services/loading.service';
styleUrls: ['./dossier-template-actions.component.scss']
})
export class DossierTemplateActionsComponent {
readonly circleButtonTypes = CircleButtonTypes;
@Input() dossierTemplateId: string;
@Output() loadDossierTemplatesData = new EventEmitter<any>();

View File

@ -1,21 +1,21 @@
<div class="collapsed-wrapper">
<redaction-circle-button
<iqser-circle-button
(action)="toggleCollapse.emit()"
[tooltip]="'user-stats.expand' | translate"
icon="red:expand"
tooltipPosition="before"
></redaction-circle-button>
></iqser-circle-button>
<div class="all-caps-label" translate="user-stats.title"></div>
</div>
<div class="header-wrapper mt-8">
<div class="heading-xl flex-1" translate="user-stats.title"></div>
<redaction-circle-button
<iqser-circle-button
(action)="toggleCollapse.emit()"
[tooltip]="'user-stats.collapse' | translate"
icon="red:collapse"
tooltipPosition="before"
></redaction-circle-button>
></iqser-circle-button>
</div>
<div class="mt-44">

View File

@ -7,7 +7,7 @@
max-width: 88%;
}
redaction-circle-button {
iqser-circle-button {
position: absolute;
top: -8px;
left: 270px;

View File

@ -96,5 +96,5 @@
</div>
</form>
<redaction-circle-button class="dialog-close" icon="red:close" mat-dialog-close></redaction-circle-button>
<iqser-circle-button class="dialog-close" icon="red:close" mat-dialog-close></iqser-circle-button>
</section>

View File

@ -1,4 +1,4 @@
@import '../../../../../assets/styles/red-variables';
@import '../../../../../assets/styles/variables';
.first-row {
display: flex;

View File

@ -41,5 +41,5 @@
</div>
</form>
<redaction-circle-button class="dialog-close" icon="red:close" mat-dialog-close></redaction-circle-button>
<iqser-circle-button class="dialog-close" icon="red:close" mat-dialog-close></iqser-circle-button>
</section>

View File

@ -1,26 +1,23 @@
import { Component, Inject, OnDestroy } from '@angular/core';
import { FormBuilder, FormGroup, Validators } from '@angular/forms';
import { DossierAttributeConfig, FileAttributeConfig } from '@redaction/red-ui-http';
import { AppStateService } from '@state/app-state.service';
import { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog';
import { LoadingService } from '@services/loading.service';
import { HttpErrorResponse } from '@angular/common/http';
import { Toaster } from '@services/toaster.service';
import { AutoUnsubscribeComponent } from '@shared/base/auto-unsubscribe.component';
import { DossierAttributesService } from '@shared/services/controller-wrappers/dossier-attributes.service';
import { dossierAttributeTypesTranslations } from '../../translations/dossier-attribute-types-translations';
import { marker as _ } from '@biesbjerg/ngx-translate-extract-marker';
import { AutoUnsubscribeComponent } from '@iqser/common-ui';
@Component({
selector: 'redaction-add-edit-dossier-attribute-dialog',
templateUrl: './add-edit-dossier-attribute-dialog.component.html',
styleUrls: ['./add-edit-dossier-attribute-dialog.component.scss']
})
export class AddEditDossierAttributeDialogComponent extends AutoUnsubscribeComponent implements OnDestroy {
dossierAttributeForm: FormGroup;
dossierAttribute: DossierAttributeConfig;
translations = dossierAttributeTypesTranslations;
dossierTemplateId: string;
readonly translations = dossierAttributeTypesTranslations;
readonly typeOptions = [
DossierAttributeConfig.TypeEnum.TEXT,
DossierAttributeConfig.TypeEnum.NUMBER,
@ -29,18 +26,16 @@ export class AddEditDossierAttributeDialogComponent extends AutoUnsubscribeCompo
];
constructor(
private readonly _appStateService: AppStateService,
private readonly _formBuilder: FormBuilder,
private readonly _loadingService: LoadingService,
private readonly _dossierAttributesService: DossierAttributesService,
private readonly _toaster: Toaster,
public dialogRef: MatDialogRef<AddEditDossierAttributeDialogComponent>,
readonly dialogRef: MatDialogRef<AddEditDossierAttributeDialogComponent>,
@Inject(MAT_DIALOG_DATA)
public data: { dossierAttribute: DossierAttributeConfig; dossierTemplateId: string }
readonly data: { readonly dossierAttribute: DossierAttributeConfig }
) {
super();
this.dossierAttribute = data.dossierAttribute;
this.dossierTemplateId = data.dossierTemplateId;
this.dossierAttributeForm = this._formBuilder.group({
label: [this.dossierAttribute?.label, Validators.required],

View File

@ -110,7 +110,7 @@
</div>
</form>
<redaction-circle-button class="dialog-close" icon="red:close" mat-dialog-close></redaction-circle-button>
<iqser-circle-button class="dialog-close" icon="red:close" mat-dialog-close></iqser-circle-button>
</section>
<ng-template #reportTemplateOptionTemplate let-option="option">

View File

@ -60,5 +60,5 @@
</div>
</form>
<redaction-circle-button class="dialog-close" icon="red:close" mat-dialog-close></redaction-circle-button>
<iqser-circle-button class="dialog-close" icon="red:close" mat-dialog-close></iqser-circle-button>
</section>

View File

@ -13,5 +13,5 @@
[user]="user"
></redaction-reset-password>
<redaction-circle-button class="dialog-close" icon="red:close" mat-dialog-close></redaction-circle-button>
<iqser-circle-button class="dialog-close" icon="red:close" mat-dialog-close></iqser-circle-button>
</section>

View File

@ -45,13 +45,13 @@
{{ (user ? 'add-edit-user.actions.save-changes' : 'add-edit-user.actions.save') | translate }}
</button>
<redaction-icon-button
<iqser-icon-button
(action)="delete()"
*ngIf="user"
[label]="'add-edit-user.actions.delete' | translate"
icon="red:trash"
type="show-bg"
></redaction-icon-button>
[type]="iconButtonTypes.dark"
></iqser-icon-button>
<div class="all-caps-label cancel" mat-dialog-close translate="add-edit-user.actions.cancel"></div>
</div>

View File

@ -4,6 +4,7 @@ import { User, UserControllerService } from '@redaction/red-ui-http';
import { AdminDialogService } from '../../../services/admin-dialog.service';
import { LoadingService } from '@services/loading.service';
import { rolesTranslations } from '../../../../../translations/roles-translations';
import { IconButtonTypes } from '@iqser/common-ui';
@Component({
selector: 'redaction-user-details',
@ -11,12 +12,14 @@ import { rolesTranslations } from '../../../../../translations/roles-translation
styleUrls: ['./user-details.component.scss']
})
export class UserDetailsComponent implements OnInit {
readonly iconButtonTypes = IconButtonTypes;
@Input() user: User;
@Output() toggleResetPassword = new EventEmitter();
@Output() closeDialog = new EventEmitter<any>();
userForm: FormGroup;
readonly ROLES = ['RED_USER', 'RED_MANAGER', 'RED_USER_ADMIN', 'RED_ADMIN'];
translations = rolesTranslations;
readonly translations = rolesTranslations;
private readonly _ROLE_REQUIREMENTS = { RED_MANAGER: 'RED_USER', RED_ADMIN: 'RED_USER_ADMIN' };
constructor(

View File

@ -41,5 +41,5 @@
class="all-caps-label cancel"
></div>
</div>
<redaction-circle-button class="dialog-close" icon="red:close" mat-dialog-close></redaction-circle-button>
<iqser-circle-button class="dialog-close" icon="red:close" mat-dialog-close></iqser-circle-button>
</section>

View File

@ -1,4 +1,4 @@
@import '../../../../../assets/styles/red-variables';
@import '../../../../../assets/styles/variables';
.dialog-header {
color: $primary;

View File

@ -39,5 +39,5 @@
class="all-caps-label cancel"
></div>
</div>
<redaction-circle-button class="dialog-close" icon="red:close" mat-dialog-close></redaction-circle-button>
<iqser-circle-button class="dialog-close" icon="red:close" mat-dialog-close></iqser-circle-button>
</section>

View File

@ -1,4 +1,4 @@
@import '../../../../../assets/styles/red-variables';
@import '../../../../../assets/styles/variables';
.dialog-header {
color: $primary;

View File

@ -34,5 +34,5 @@
</div>
</form>
<redaction-circle-button class="dialog-close" icon="red:close" mat-dialog-close></redaction-circle-button>
<iqser-circle-button class="dialog-close" icon="red:close" mat-dialog-close></iqser-circle-button>
</section>

View File

@ -1,34 +1,34 @@
<div class="header-item">
<redaction-round-checkbox
<iqser-round-checkbox
(click)="toggleSelectAll()"
[active]="screenStateService.areAllEntitiesSelected$ | async"
[indeterminate]="screenStateService.notAllEntitiesSelected$ | async"
></redaction-round-checkbox>
></iqser-round-checkbox>
<span class="all-caps-label">
{{ 'file-attributes-csv-import.table-header.title' | translate: { length: (screenStateService.allEntitiesLength$ | async) } }}
</span>
<ng-container *ngIf="screenStateService.areSomeEntitiesSelected$ | async">
<redaction-circle-button
<iqser-circle-button
[matMenuTriggerFor]="readOnlyMenu"
[tooltip]="'file-attributes-csv-import.table-header.actions.read-only' | translate"
icon="red:read-only"
type="dark-bg"
></redaction-circle-button>
[type]="circleButtonTypes.dark"
></iqser-circle-button>
<redaction-circle-button
<iqser-circle-button
(action)="deactivateSelection()"
[tooltip]="'file-attributes-csv-import.table-header.actions.remove-selected' | translate"
icon="red:trash"
type="dark-bg"
></redaction-circle-button>
[type]="circleButtonTypes.dark"
></iqser-circle-button>
<div class="separator"></div>
<redaction-chevron-button
<iqser-chevron-button
[label]="'file-attributes-csv-import.table-header.actions.type' | translate"
[matMenuTriggerFor]="typeMenu"
></redaction-chevron-button>
></iqser-chevron-button>
<mat-menu #readOnlyMenu="matMenu" class="padding-bottom-8">
<button
@ -93,7 +93,7 @@
class="table-item"
>
<div (click)="toggleEntitySelected($event, field)" class="selection-column">
<redaction-round-checkbox [active]="isSelected(field)"></redaction-round-checkbox>
<iqser-round-checkbox [active]="isSelected(field)"></iqser-round-checkbox>
</div>
<div [class.editing]="field.editingName" class="name">
<div *ngIf="!field.editingName">
@ -104,27 +104,27 @@
<input [(ngModel)]="field.temporaryName" name="name" />
</div>
</form>
<redaction-circle-button
<iqser-circle-button
(action)="field.editingName = true"
*ngIf="!field.editingName"
[tooltip]="'file-attributes-csv-import.action.edit-name' | translate"
class="edit-name-button"
icon="red:edit"
type="dark-bg"
></redaction-circle-button>
[type]="circleButtonTypes.dark"
></iqser-circle-button>
<ng-container *ngIf="field.editingName">
<redaction-circle-button
<iqser-circle-button
(action)="field.editingName = false; field.name = field.temporaryName"
[tooltip]="'file-attributes-csv-import.action.save-name' | translate"
icon="red:check"
type="dark-bg"
></redaction-circle-button>
<redaction-circle-button
[type]="circleButtonTypes.dark"
></iqser-circle-button>
<iqser-circle-button
(action)="field.editingName = false; field.temporaryName = field.name"
[tooltip]="'file-attributes-csv-import.action.cancel-edit-name' | translate"
icon="red:close"
type="dark-bg"
></redaction-circle-button>
[type]="circleButtonTypes.dark"
></iqser-circle-button>
</ng-container>
</div>
<div>
@ -142,17 +142,17 @@
<mat-slide-toggle [(ngModel)]="field.readonly" color="primary"></mat-slide-toggle>
</div>
<div class="center">
<redaction-round-checkbox (click)="togglePrimary(field)" [active]="field.primaryAttribute"></redaction-round-checkbox>
<iqser-round-checkbox (click)="togglePrimary(field)" [active]="field.primaryAttribute"></iqser-round-checkbox>
</div>
<div class="actions-container">
<div class="action-buttons">
<redaction-circle-button
<iqser-circle-button
(action)="field.primaryAttribute = false; toggleFieldActive.emit(field)"
[removeTooltip]="true"
[tooltip]="'file-attributes-csv-import.action.remove' | translate"
icon="red:trash"
type="dark-bg"
></redaction-circle-button>
[type]="circleButtonTypes.dark"
></iqser-circle-button>
</div>
</div>
<div class="scrollbar-placeholder"></div>

View File

@ -1,4 +1,4 @@
@import '../../../../../../assets/styles/red-variables';
@import '../../../../../../assets/styles/variables';
redaction-table-col-name::ng-deep {
> div {
@ -19,7 +19,7 @@ redaction-table-col-name::ng-deep {
margin-right: 10px;
}
redaction-circle-button {
iqser-circle-button {
margin-right: 2px;
}
@ -63,7 +63,7 @@ cdk-virtual-scroll-viewport {
display: none;
}
redaction-circle-button:first-of-type {
iqser-circle-button:first-of-type {
margin-left: 7px;
margin-right: 2px;
}

View File

@ -7,6 +7,7 @@ import { ScreenStateService } from '@shared/services/screen-state.service';
import { SortingService } from '@services/sorting.service';
import { BaseListingComponent } from '@shared/base/base-listing.component';
import { fileAttributeTypesTranslations } from '../../../translations/file-attribute-types-translations';
import { CircleButtonTypes } from '@iqser/common-ui';
@Component({
selector: 'redaction-active-fields-listing',
@ -15,11 +16,13 @@ import { fileAttributeTypesTranslations } from '../../../translations/file-attri
providers: [FilterService, SearchService, ScreenStateService, SortingService]
})
export class ActiveFieldsListingComponent extends BaseListingComponent<Field> implements OnChanges {
readonly circleButtonTypes = CircleButtonTypes;
readonly translations = fileAttributeTypesTranslations;
@Input() entities: Field[];
@Output() entitiesChange = new EventEmitter<Field[]>();
@Output() setHoveredColumn = new EventEmitter<string>();
@Output() toggleFieldActive = new EventEmitter<Field>();
translations = fileAttributeTypesTranslations;
readonly typeOptions = [FileAttributeConfig.TypeEnum.TEXT, FileAttributeConfig.TypeEnum.NUMBER, FileAttributeConfig.TypeEnum.DATE];
protected readonly _primaryKey = 'csvColumn';

View File

@ -48,12 +48,12 @@
type="text"
/>
</div>
<redaction-circle-button
<iqser-circle-button
(action)="readFile()"
*ngIf="changedParseConfig"
[tooltip]="'file-attributes-csv-import.parse-csv' | translate"
icon="red:check"
></redaction-circle-button>
></iqser-circle-button>
</form>
</div>
</div>
@ -69,11 +69,11 @@
}}</span>
</div>
<div class="actions">
<redaction-circle-button
<iqser-circle-button
(click)="isSearchOpen = !isSearchOpen"
[attr.aria-expanded]="isSearchOpen"
icon="red:search"
></redaction-circle-button>
></iqser-circle-button>
<div class="quick-activation">
<span
(click)="activateAll()"
@ -127,10 +127,10 @@
>
<div class="csv-part-header">
<div [translate]="'file-attributes-csv-import.csv-column'" class="all-caps-label"></div>
<redaction-circle-button
<iqser-circle-button
(click)="previewExpanded = !previewExpanded"
[icon]="previewExpanded ? 'red:expand' : 'red:collapse'"
></redaction-circle-button>
></iqser-circle-button>
</div>
<div [class.hidden]="!previewExpanded" class="csv-part-content">
<div *ngIf="!hoveredColumn" class="no-column-data" translate="file-attributes-csv-import.no-hovered-column"></div>
@ -162,5 +162,5 @@
</div>
</div>
<redaction-circle-button class="dialog-close" icon="red:close" mat-dialog-close></redaction-circle-button>
<iqser-circle-button class="dialog-close" icon="red:close" mat-dialog-close></iqser-circle-button>
</section>

View File

@ -1,4 +1,4 @@
@import '../../../../../assets/styles/red-variables';
@import '../../../../../assets/styles/variables';
@import '../../../../../assets/styles/red-mixins';
.sub-header {
@ -37,7 +37,7 @@
margin: 0 8px;
}
redaction-circle-button {
iqser-circle-button {
margin-left: 8px;
}
}
@ -174,7 +174,7 @@
background: $grey-2;
border-right: 1px solid $separator;
&:not(.collapsed) redaction-circle-button {
&:not(.collapsed) iqser-circle-button {
margin-right: -8px;
}

View File

@ -27,5 +27,5 @@
</div>
</form>
<redaction-circle-button class="dialog-close" icon="red:close" mat-dialog-close></redaction-circle-button>
<iqser-circle-button class="dialog-close" icon="red:close" mat-dialog-close></iqser-circle-button>
</section>

View File

@ -8,14 +8,14 @@
<div class="breadcrumb" translate="audit"></div>
<div class="actions">
<redaction-circle-button
<iqser-circle-button
*ngIf="permissionsService.isUser()"
[tooltip]="'common.close' | translate"
class="ml-6"
icon="red:close"
redactionNavigateLastDossiersScreen
tooltipPosition="below"
></redaction-circle-button>
></iqser-circle-button>
</div>
</div>
<div class="red-content-inner">

View File

@ -5,7 +5,7 @@ import { AuditControllerService, AuditResponse, AuditSearchRequest } from '@reda
import { Moment } from 'moment';
import { applyIntervalConstraints } from '@utils/date-inputs-utils';
import { LoadingService } from '@services/loading.service';
import { AutoUnsubscribeComponent } from '@shared/base/auto-unsubscribe.component';
import { AutoUnsubscribeComponent } from '@iqser/common-ui';
import { auditCategoriesTranslations } from '../../translations/audit-categories-translations';
import { marker as _ } from '@biesbjerg/ngx-translate-extract-marker';

View File

@ -5,12 +5,12 @@
<div class="flex-1 actions">
<redaction-dossier-template-actions></redaction-dossier-template-actions>
<redaction-circle-button
<iqser-circle-button
[routerLink]="['../..']"
[tooltip]="'common.close' | translate"
icon="red:close"
tooltipPosition="below"
></redaction-circle-button>
></iqser-circle-button>
</div>
</div>
@ -55,13 +55,13 @@
<div class="actions-container">
<div class="action-buttons">
<redaction-circle-button
<iqser-circle-button
(action)="openEditColorDialog($event, color)"
*ngIf="permissionsService.isAdmin()"
[tooltip]="'default-colors-screen.action.edit' | translate"
icon="red:edit"
type="dark-bg"
></redaction-circle-button>
[type]="circleButtonTypes.dark"
></iqser-circle-button>
</div>
</div>
<div class="scrollbar-placeholder"></div>

View File

@ -12,6 +12,7 @@ import { BaseListingComponent } from '@shared/base/base-listing.component';
import { DefaultColorType } from '@models/default-color-key.model';
import { SortingService } from '@services/sorting.service';
import { defaultColorsTranslations } from '../../translations/default-colors-translations';
import { CircleButtonTypes } from '@iqser/common-ui';
@Component({
templateUrl: './default-colors-screen.component.html',
@ -26,7 +27,8 @@ export class DefaultColorsScreenComponent
}>
implements OnInit
{
translations = defaultColorsTranslations;
readonly circleButtonTypes = CircleButtonTypes;
readonly translations = defaultColorsTranslations;
protected readonly _primaryKey = 'key';
private _colorsObj: Colors;

View File

@ -5,12 +5,12 @@
<div class="flex-1 actions">
<redaction-dossier-template-actions></redaction-dossier-template-actions>
<redaction-circle-button
<iqser-circle-button
[routerLink]="['../..']"
[tooltip]="'common.close' | translate"
icon="red:close"
tooltipPosition="below"
></redaction-circle-button>
></iqser-circle-button>
</div>
</div>
@ -21,23 +21,23 @@
<div class="content-container">
<div class="header-item">
<redaction-round-checkbox
<iqser-round-checkbox
(click)="toggleSelectAll()"
[active]="screenStateService.areAllEntitiesSelected$ | async"
[indeterminate]="screenStateService.notAllEntitiesSelected$ | async"
></redaction-round-checkbox>
></iqser-round-checkbox>
<span class="all-caps-label">
{{ 'dictionary-listing.table-header.title' | translate: { length: (screenStateService.displayedLength$ | async) } }}
</span>
<redaction-circle-button
<iqser-circle-button
(action)="openDeleteDictionariesDialog($event)"
*ngIf="canBulkDelete$(permissionsService.isAdmin()) | async"
[tooltip]="'dictionary-listing.bulk.delete' | translate"
icon="red:trash"
type="dark-bg"
></redaction-circle-button>
[type]="circleButtonTypes.dark"
></iqser-circle-button>
<div class="attributes-actions-container">
<redaction-input-with-action
@ -46,13 +46,13 @@
type="search"
></redaction-input-with-action>
<div class="actions">
<redaction-icon-button
<iqser-icon-button
(action)="openAddEditDictionaryDialog()"
*ngIf="permissionsService.isAdmin()"
[label]="'dictionary-listing.add-new' | translate"
icon="red:plus"
type="primary"
></redaction-icon-button>
[type]="iconButtonTypes.primary"
></iqser-icon-button>
</div>
</div>
</div>
@ -102,7 +102,7 @@
class="table-item pointer"
>
<div (click)="toggleEntitySelected($event, dict)" class="selection-column">
<redaction-round-checkbox [active]="isSelected(dict)"></redaction-round-checkbox>
<iqser-round-checkbox [active]="isSelected(dict)"></iqser-round-checkbox>
</div>
<div>
@ -134,19 +134,19 @@
<div class="actions-container">
<div *ngIf="permissionsService.isAdmin()" class="action-buttons">
<redaction-circle-button
<iqser-circle-button
(action)="openDeleteDictionariesDialog($event, [dict])"
[tooltip]="'dictionary-listing.action.delete' | translate"
icon="red:trash"
type="dark-bg"
></redaction-circle-button>
[type]="circleButtonTypes.dark"
></iqser-circle-button>
<redaction-circle-button
<iqser-circle-button
(action)="openAddEditDictionaryDialog($event, dict)"
[tooltip]="'dictionary-listing.action.edit' | translate"
icon="red:edit"
type="dark-bg"
></redaction-circle-button>
[type]="circleButtonTypes.dark"
></iqser-circle-button>
</div>
</div>
<div class="scrollbar-placeholder"></div>

View File

@ -1,4 +1,4 @@
@import '../../../../../assets/styles/red-variables';
@import '../../../../../assets/styles/variables';
@import '../../../../../assets/styles/red-mixins';
.header-item {

View File

@ -15,6 +15,7 @@ import { ScreenStateService } from '@shared/services/screen-state.service';
import { SortingService } from '@services/sorting.service';
import { BaseListingComponent } from '@shared/base/base-listing.component';
import { AdminDialogService } from '../../services/admin-dialog.service';
import { CircleButtonTypes, IconButtonTypes } from '@iqser/common-ui';
const toChartConfig = (dict: TypeValueWrapper): DoughnutChartConfig => ({
value: dict.entries?.length ?? 0,
@ -29,6 +30,9 @@ const toChartConfig = (dict: TypeValueWrapper): DoughnutChartConfig => ({
providers: [FilterService, SearchService, ScreenStateService, SortingService]
})
export class DictionaryListingScreenComponent extends BaseListingComponent<TypeValueWrapper> implements OnInit {
readonly iconButtonTypes = IconButtonTypes;
readonly circleButtonTypes = CircleButtonTypes;
chartData: DoughnutChartConfig[] = [];
protected readonly _primaryKey = 'label';

View File

@ -3,48 +3,48 @@
<redaction-admin-breadcrumbs></redaction-admin-breadcrumbs>
<div class="actions">
<redaction-circle-button
<iqser-circle-button
(action)="openDeleteDictionaryDialog($event)"
*ngIf="permissionsService.isAdmin()"
[tooltip]="'dictionary-overview.action.delete' | translate"
icon="red:trash"
tooltipPosition="below"
type="dark-bg"
></redaction-circle-button>
[type]="circleButtonTypes.dark"
></iqser-circle-button>
<redaction-circle-button
<iqser-circle-button
(action)="openEditDictionaryDialog($event)"
*ngIf="permissionsService.isAdmin()"
[tooltip]="'dictionary-overview.action.edit' | translate"
icon="red:edit"
tooltipPosition="below"
type="dark-bg"
></redaction-circle-button>
[type]="circleButtonTypes.dark"
></iqser-circle-button>
<redaction-circle-button
<iqser-circle-button
(action)="download()"
[tooltip]="'dictionary-overview.action.download' | translate"
icon="red:download"
tooltipPosition="below"
></redaction-circle-button>
></iqser-circle-button>
<redaction-circle-button
<iqser-circle-button
(action)="fileInput.click()"
*ngIf="permissionsService.isAdmin()"
[tooltip]="'dictionary-overview.action.upload' | translate"
icon="red:upload"
tooltipPosition="below"
></redaction-circle-button>
></iqser-circle-button>
<input #fileInput (change)="upload($event)" accept="text/plain" class="file-upload-input" hidden type="file" />
<redaction-circle-button
<iqser-circle-button
[routerLink]="['..']"
[tooltip]="'common.close' | translate"
class="ml-6"
icon="red:close"
tooltipPosition="below"
></redaction-circle-button>
></iqser-circle-button>
</div>
</div>

View File

@ -1,4 +1,4 @@
@import '../../../../../assets/styles/red-variables';
@import '../../../../../assets/styles/variables';
@import '../../../../../assets/styles/red-mixins';
.right-container {

View File

@ -11,13 +11,15 @@ import { DictionaryManagerComponent } from '@shared/components/dictionary-manage
import { DictionarySaveService } from '@shared/services/dictionary-save.service';
import { TypeValueWrapper } from '@models/file/type-value.wrapper';
import { LoadingService } from '@services/loading.service';
import { CircleButtonTypes } from '@iqser/common-ui';
@Component({
selector: 'redaction-dictionary-overview-screen',
templateUrl: './dictionary-overview-screen.component.html',
styleUrls: ['./dictionary-overview-screen.component.scss']
})
export class DictionaryOverviewScreenComponent extends ComponentHasChanges implements OnInit {
readonly circleButtonTypes = CircleButtonTypes;
entries: string[] = [];
@ViewChild('dictionaryManager', { static: false })

View File

@ -73,21 +73,21 @@
</div>
<div [class.hidden]="!hasDigitalSignatureSet" class="changes-box">
<redaction-icon-button
<iqser-icon-button
(action)="saveDigitalSignature()"
[disabled]="digitalSignatureForm.invalid"
[label]="'digital-signature-screen.action.save' | translate"
icon="red:check"
type="primary"
></redaction-icon-button>
[type]="iconButtonTypes.primary"
></iqser-icon-button>
<redaction-icon-button
<iqser-icon-button
(action)="removeDigitalSignature()"
*ngIf="digitalSignatureExists"
[label]="'digital-signature-screen.action.delete' | translate"
icon="red:trash"
type="primary"
></redaction-icon-button>
[type]="iconButtonTypes.primary"
></iqser-icon-button>
<div
(click)="loadDigitalSignatureAndInitializeForm()"

View File

@ -4,9 +4,10 @@ import { FormBuilder, FormGroup, Validators } from '@angular/forms';
import { Toaster } from '@services/toaster.service';
import { PermissionsService } from '@services/permissions.service';
import { lastIndexOfEnd } from '@utils/functions';
import { AutoUnsubscribeComponent } from '@shared/base/auto-unsubscribe.component';
import { AutoUnsubscribeComponent } from '@iqser/common-ui';
import { LoadingService } from '@services/loading.service';
import { marker as _ } from '@biesbjerg/ngx-translate-extract-marker';
import { IconButtonTypes } from '@iqser/common-ui';
@Component({
selector: 'redaction-digital-signature-screen',
@ -14,6 +15,8 @@ import { marker as _ } from '@biesbjerg/ngx-translate-extract-marker';
styleUrls: ['./digital-signature-screen.component.scss']
})
export class DigitalSignatureScreenComponent extends AutoUnsubscribeComponent implements OnDestroy {
readonly iconButtonTypes = IconButtonTypes;
digitalSignature: DigitalSignature;
digitalSignatureForm: FormGroup;

View File

@ -5,12 +5,12 @@
<div class="actions flex-1">
<redaction-dossier-template-actions></redaction-dossier-template-actions>
<redaction-circle-button
<iqser-circle-button
[routerLink]="['../..']"
[tooltip]="'common.close' | translate"
icon="red:close"
tooltipPosition="below"
></redaction-circle-button>
></iqser-circle-button>
</div>
</div>
@ -21,11 +21,11 @@
<div class="content-container">
<div *ngIf="(screenStateService.noData$ | async) === false" class="header-item">
<redaction-round-checkbox
<iqser-round-checkbox
(click)="toggleSelectAll()"
[active]="screenStateService.areAllEntitiesSelected$ | async"
[indeterminate]="screenStateService.notAllEntitiesSelected$ | async"
></redaction-round-checkbox>
></iqser-round-checkbox>
<span class="all-caps-label">
{{
@ -34,13 +34,13 @@
}}
</span>
<redaction-circle-button
<iqser-circle-button
(action)="openConfirmDeleteAttributeDialog($event)"
*ngIf="permissionsService.isAdmin() && screenStateService.areSomeEntitiesSelected$ | async"
[tooltip]="'dossier-attributes-listing.bulk.delete' | translate"
icon="red:trash"
type="dark-bg"
></redaction-circle-button>
[type]="circleButtonTypes.dark"
></iqser-circle-button>
<div class="attributes-actions-container">
<redaction-input-with-action
@ -49,13 +49,13 @@
type="search"
></redaction-input-with-action>
<redaction-icon-button
<iqser-icon-button
(action)="openAddEditAttributeDialog($event)"
*ngIf="permissionsService.isAdmin()"
[label]="'dossier-attributes-listing.add-new' | translate"
icon="red:plus"
type="primary"
></redaction-icon-button>
[type]="iconButtonTypes.primary"
></iqser-icon-button>
</div>
</div>
@ -102,7 +102,7 @@
class="table-item pointer"
>
<div (click)="toggleEntitySelected($event, attribute)" class="selection-column">
<redaction-round-checkbox [active]="isSelected(attribute)"></redaction-round-checkbox>
<iqser-round-checkbox [active]="isSelected(attribute)"></iqser-round-checkbox>
</div>
<div>
@ -118,19 +118,19 @@
</div>
<div class="actions-container">
<div *ngIf="permissionsService.isAdmin()" class="action-buttons">
<redaction-circle-button
<iqser-circle-button
(action)="openAddEditAttributeDialog($event, attribute)"
[tooltip]="'dossier-attributes-listing.action.edit' | translate"
icon="red:edit"
type="dark-bg"
></redaction-circle-button>
[type]="circleButtonTypes.dark"
></iqser-circle-button>
<redaction-circle-button
<iqser-circle-button
(action)="openConfirmDeleteAttributeDialog($event, attribute)"
[tooltip]="'dossier-attributes-listing.action.delete' | translate"
icon="red:trash"
type="dark-bg"
></redaction-circle-button>
[type]="circleButtonTypes.dark"
></iqser-circle-button>
</div>
</div>
<div class="scrollbar-placeholder"></div>

View File

@ -12,6 +12,7 @@ import { ScreenStateService } from '@shared/services/screen-state.service';
import { PermissionsService } from '@services/permissions.service';
import { DossierAttributesService } from '@shared/services/controller-wrappers/dossier-attributes.service';
import { dossierAttributeTypesTranslations } from '../../translations/dossier-attribute-types-translations';
import { CircleButtonTypes, IconButtonTypes } from '@iqser/common-ui';
@Component({
templateUrl: './dossier-attributes-listing-screen.component.html',
@ -19,7 +20,9 @@ import { dossierAttributeTypesTranslations } from '../../translations/dossier-at
providers: [FilterService, SearchService, ScreenStateService, SortingService]
})
export class DossierAttributesListingScreenComponent extends BaseListingComponent<DossierAttributeConfig> implements OnInit {
translations = dossierAttributeTypesTranslations;
readonly iconButtonTypes = IconButtonTypes;
readonly circleButtonTypes = CircleButtonTypes;
readonly translations = dossierAttributeTypesTranslations;
protected readonly _primaryKey = 'label';
constructor(

View File

@ -12,11 +12,11 @@
<div class="red-content-inner">
<div class="content-container">
<div class="header-item">
<redaction-round-checkbox
<iqser-round-checkbox
(click)="toggleSelectAll()"
[active]="screenStateService.areAllEntitiesSelected$ | async"
[indeterminate]="screenStateService.notAllEntitiesSelected$ | async"
></redaction-round-checkbox>
></iqser-round-checkbox>
<span class="all-caps-label">
{{
@ -25,13 +25,13 @@
}}
</span>
<redaction-circle-button
<iqser-circle-button
(action)="openDeleteTemplatesDialog($event)"
*ngIf="canBulkDelete$(permissionsService.isAdmin()) | async"
[tooltip]="'dossier-templates-listing.bulk.delete' | translate"
icon="red:trash"
type="dark-bg"
></redaction-circle-button>
[type]="circleButtonTypes.dark"
></iqser-circle-button>
<div class="actions flex-1">
<redaction-input-with-action
@ -40,13 +40,13 @@
type="search"
></redaction-input-with-action>
<redaction-icon-button
<iqser-icon-button
(action)="openAddDossierTemplateDialog()"
*ngIf="permissionsService.isAdmin() && userPreferenceService.areDevFeaturesEnabled"
[label]="'dossier-templates-listing.add-new' | translate"
icon="red:plus"
type="primary"
></redaction-icon-button>
[type]="iconButtonTypes.primary"
></iqser-icon-button>
</div>
</div>
@ -94,7 +94,7 @@
class="table-item pointer"
>
<div (click)="toggleEntitySelected($event, dossierTemplate)" class="selection-column">
<redaction-round-checkbox [active]="isSelected(dossierTemplate)"></redaction-round-checkbox>
<iqser-round-checkbox [active]="isSelected(dossierTemplate)"></iqser-round-checkbox>
</div>
<div>

View File

@ -1,4 +1,4 @@
@import '../../../../../assets/styles/red-variables';
@import '../../../../../assets/styles/variables';
@import '../../../../../assets/styles/red-mixins';
.header-item {

View File

@ -11,6 +11,7 @@ import { SearchService } from '@shared/services/search.service';
import { ScreenStateService } from '@shared/services/screen-state.service';
import { BaseListingComponent } from '@shared/base/base-listing.component';
import { SortingService } from '@services/sorting.service';
import { CircleButtonTypes, IconButtonTypes } from '@iqser/common-ui';
@Component({
templateUrl: './dossier-templates-listing-screen.component.html',
@ -19,7 +20,9 @@ import { SortingService } from '@services/sorting.service';
providers: [FilterService, SearchService, ScreenStateService, SortingService]
})
export class DossierTemplatesListingScreenComponent extends BaseListingComponent<DossierTemplateModelWrapper> implements OnInit {
protected _primaryKey = 'name';
readonly iconButtonTypes = IconButtonTypes;
readonly circleButtonTypes = CircleButtonTypes;
protected readonly _primaryKey = 'name';
constructor(
private readonly _dialogService: AdminDialogService,

View File

@ -5,12 +5,12 @@
<div class="actions flex-1">
<redaction-dossier-template-actions></redaction-dossier-template-actions>
<redaction-circle-button
<iqser-circle-button
[routerLink]="['../..']"
[tooltip]="'common.close' | translate"
icon="red:close"
tooltipPosition="below"
></redaction-circle-button>
></iqser-circle-button>
</div>
</div>
@ -21,11 +21,11 @@
<div class="content-container">
<div class="header-item">
<redaction-round-checkbox
<iqser-round-checkbox
(click)="toggleSelectAll()"
[active]="screenStateService.areAllEntitiesSelected$ | async"
[indeterminate]="screenStateService.notAllEntitiesSelected$ | async"
></redaction-round-checkbox>
></iqser-round-checkbox>
<span class="all-caps-label">
{{
@ -33,13 +33,13 @@
}}
</span>
<redaction-circle-button
<iqser-circle-button
(click)="openConfirmDeleteAttributeDialog($event)"
*ngIf="canBulkDelete$(permissionsService.isAdmin()) | async"
[tooltip]="'file-attributes-listing.bulk-actions.delete' | translate"
icon="red:trash"
type="dark-bg"
></redaction-circle-button>
[type]="circleButtonTypes.dark"
></iqser-circle-button>
<div class="attributes-actions-container">
<redaction-input-with-action
@ -49,22 +49,22 @@
></redaction-input-with-action>
<input #fileInput (change)="importCSV($event.target['files'])" accept=".csv" class="csv-input" type="file" />
<redaction-circle-button
<iqser-circle-button
(action)="fileInput.click()"
*ngIf="permissionsService.isAdmin()"
[tooltip]="'file-attributes-listing.upload-csv' | translate"
icon="red:upload"
tooltipPosition="above"
type="dark-bg"
></redaction-circle-button>
[type]="circleButtonTypes.dark"
></iqser-circle-button>
<redaction-icon-button
<iqser-icon-button
(action)="openAddEditAttributeDialog($event)"
*ngIf="permissionsService.isAdmin()"
[label]="'file-attributes-listing.add-new' | translate"
icon="red:plus"
type="primary"
></redaction-icon-button>
[type]="iconButtonTypes.primary"
></iqser-icon-button>
</div>
</div>
@ -121,7 +121,7 @@
<!-- Table lines -->
<div *cdkVirtualFor="let attribute of sortedDisplayedEntities$ | async" class="table-item">
<div (click)="toggleEntitySelected($event, attribute)" class="selection-column">
<redaction-round-checkbox [active]="isSelected(attribute)"></redaction-round-checkbox>
<iqser-round-checkbox [active]="isSelected(attribute)"></iqser-round-checkbox>
</div>
<div class="label">
@ -142,24 +142,22 @@
{{ attribute.csvColumnHeader }}
</div>
<div class="center">
<redaction-round-checkbox *ngIf="attribute.primaryAttribute" [active]="true" [size]="18"></redaction-round-checkbox>
<iqser-round-checkbox *ngIf="attribute.primaryAttribute" [active]="true" [size]="18"></iqser-round-checkbox>
</div>
<div class="actions-container">
<div *ngIf="permissionsService.isAdmin()" class="action-buttons">
<redaction-circle-button
<iqser-circle-button
(action)="openAddEditAttributeDialog($event, attribute)"
[tooltip]="'file-attributes-listing.action.edit' | translate"
icon="red:edit"
type="dark-bg"
>
</redaction-circle-button>
<redaction-circle-button
[type]="circleButtonTypes.dark"
></iqser-circle-button>
<iqser-circle-button
(action)="openConfirmDeleteAttributeDialog($event, attribute)"
[tooltip]="'file-attributes-listing.action.delete' | translate"
icon="red:trash"
type="dark-bg"
>
</redaction-circle-button>
[type]="circleButtonTypes.dark"
></iqser-circle-button>
</div>
</div>
<div class="scrollbar-placeholder"></div>

View File

@ -67,6 +67,6 @@ redaction-table-col-name::ng-deep {
visibility: hidden;
}
.table-item > div:not(.selection-column) redaction-round-checkbox {
.table-item > div:not(.selection-column) iqser-round-checkbox {
cursor: default;
}

View File

@ -11,6 +11,7 @@ import { ScreenStateService } from '@shared/services/screen-state.service';
import { SortingService } from '@services/sorting.service';
import { BaseListingComponent } from '@shared/base/base-listing.component';
import { fileAttributeTypesTranslations } from '../../translations/file-attribute-types-translations';
import { CircleButtonTypes, IconButtonTypes } from '@iqser/common-ui';
@Component({
templateUrl: './file-attributes-listing-screen.component.html',
@ -19,7 +20,9 @@ import { fileAttributeTypesTranslations } from '../../translations/file-attribut
providers: [FilterService, SearchService, ScreenStateService, SortingService]
})
export class FileAttributesListingScreenComponent extends BaseListingComponent<FileAttributeConfig> implements OnInit, OnDestroy {
translations = fileAttributeTypesTranslations;
readonly iconButtonTypes = IconButtonTypes;
readonly circleButtonTypes = CircleButtonTypes;
readonly translations = fileAttributeTypesTranslations;
protected readonly _primaryKey = 'label';
private _existingConfiguration: FileAttributesConfig;
@ViewChild('fileInput') private _fileInput: ElementRef;

View File

@ -8,14 +8,14 @@
<div class="breadcrumb" translate="configurations"></div>
<div class="actions">
<redaction-circle-button
<iqser-circle-button
*ngIf="permissionsService.isUser()"
class="ml-6"
icon="red:close"
redactionNavigateLastDossiersScreen
tooltip="common.close"
tooltipPosition="below"
></redaction-circle-button>
></iqser-circle-button>
</div>
</div>
@ -164,12 +164,12 @@
{{ 'general-config-screen.actions.save' | translate }}
</button>
<redaction-icon-button
<iqser-icon-button
(action)="testConnection()"
[disabled]="smtpForm.invalid"
[label]="'general-config-screen.actions.test-connection' | translate"
type="show-bg"
></redaction-icon-button>
[type]="iconButtonTypes.dark"
></iqser-icon-button>
</div>
</form>
</div>

View File

@ -1,4 +1,4 @@
@import '../../../../../assets/styles/red-variables';
@import '../../../../../assets/styles/variables';
@import '../../../../../assets/styles/red-mixins';
.content-container {

View File

@ -1,4 +1,4 @@
import { Component, OnInit } from '@angular/core';
import { Component, OnDestroy, OnInit } from '@angular/core';
import { PermissionsService } from '@services/permissions.service';
import { FormBuilder, FormGroup, Validators } from '@angular/forms';
import { AdminDialogService } from '../../services/admin-dialog.service';
@ -8,20 +8,22 @@ import {
SmtpConfigurationControllerService,
SMTPConfigurationModel
} from '@redaction/red-ui-http';
import { AppConfigService } from '../../../app-config/app-config.service';
import { AutoUnsubscribeComponent } from '../../../shared/base/auto-unsubscribe.component';
import { Toaster } from '../../../../services/toaster.service';
import { LoadingService } from '../../../../services/loading.service';
import { AppConfigService } from '@app-config/app-config.service';
import { AutoUnsubscribeComponent } from '@iqser/common-ui';
import { Toaster } from '@services/toaster.service';
import { LoadingService } from '@services/loading.service';
import { marker as _ } from '@biesbjerg/ngx-translate-extract-marker';
import { IconButtonTypes } from '@iqser/common-ui';
@Component({
selector: 'redaction-general-config-screen',
templateUrl: './general-config-screen.component.html',
styleUrls: ['./general-config-screen.component.scss']
})
export class GeneralConfigScreenComponent extends AutoUnsubscribeComponent implements OnInit {
configForm: FormGroup;
smtpForm: FormGroup;
export class GeneralConfigScreenComponent extends AutoUnsubscribeComponent implements OnInit, OnDestroy {
readonly iconButtonTypes = IconButtonTypes;
readonly configForm: FormGroup;
readonly smtpForm: FormGroup;
private _initialGeneralConfiguration: GeneralConfigurationModel;
private _initialSMTPConfiguration: SMTPConfigurationModel;

View File

@ -1,5 +1,5 @@
@import '../../../../../assets/styles/red-mixins';
@import '../../../../../assets/styles/red-variables';
@import '../../../../../assets/styles/variables';
.content-container {
overflow: auto;

View File

@ -4,9 +4,9 @@ import { LicenseReport, LicenseReportControllerService } from '@redaction/red-ui
import { AppConfigService } from '@app-config/app-config.service';
import * as moment from 'moment';
import { TranslateService } from '@ngx-translate/core';
import { LoadingService } from '@services/loading.service';
import { ButtonConfig } from '@shared/components/page-header/models/button-config.model';
import { IconButtonTypes } from '@shared/components/buttons/icon-button/icon-button.component';
import { LoadingService } from '../../../../services/loading.service';
import { ButtonConfig } from '../../../shared/components/page-header/models/button-config.model';
import { IconButtonTypes } from '@iqser/common-ui';
import { marker as _ } from '@biesbjerg/ngx-translate-extract-marker';
@Component({
@ -38,7 +38,7 @@ export class LicenseInformationScreenComponent implements OnInit {
{
label: _('license-info-screen.email-report'),
action: () => this.sendMail(),
type: IconButtonTypes.PRIMARY
type: IconButtonTypes.primary
}
];

View File

@ -5,12 +5,12 @@
<div class="actions flex-1">
<redaction-dossier-template-actions></redaction-dossier-template-actions>
<redaction-circle-button
<iqser-circle-button
[routerLink]="['../..']"
[tooltip]="'common.close' | translate"
icon="red:close"
tooltipPosition="below"
></redaction-circle-button>
></iqser-circle-button>
</div>
</div>
@ -44,12 +44,12 @@
<div class="right-container" redactionHasScrollbar>
<div class="header">
<div class="heading" translate="reports-screen.report-documents"></div>
<redaction-circle-button
<iqser-circle-button
(action)="fileInput.click()"
*ngIf="permissionsService.isAdmin()"
[tooltip]="'reports-screen.upload-document' | translate"
icon="red:upload"
></redaction-circle-button>
></iqser-circle-button>
</div>
<div
@ -63,19 +63,19 @@
<div class="name">{{ template.fileName }}</div>
<div class="actions">
<redaction-circle-button
<iqser-circle-button
(action)="download(template)"
[iconSize]="12"
[size]="18"
icon="red:download"
></redaction-circle-button>
<redaction-circle-button
></iqser-circle-button>
<iqser-circle-button
(action)="deleteTemplate(template)"
*ngIf="permissionsService.isAdmin()"
[iconSize]="12"
[size]="18"
icon="red:trash"
></redaction-circle-button>
></iqser-circle-button>
</div>
</div>
</div>

View File

@ -1,4 +1,4 @@
@import '../../../../../assets/styles/red-variables';
@import '../../../../../assets/styles/variables';
@import '../../../../../assets/styles/red-mixins';
.page-header .actions {

View File

@ -5,12 +5,12 @@
<div class="flex-1 actions">
<redaction-dossier-template-actions></redaction-dossier-template-actions>
<redaction-circle-button
<iqser-circle-button
[routerLink]="['../..']"
[tooltip]="'common.close' | translate"
icon="red:close"
tooltipPosition="below"
></redaction-circle-button>
></iqser-circle-button>
</div>
</div>
@ -23,12 +23,12 @@
<ngx-monaco-editor (init)="onCodeEditorInit($event)" [(ngModel)]="codeEditorText" [options]="editorOptions"></ngx-monaco-editor>
</div>
<div *ngIf="hasChanges && permissionsService.isAdmin()" class="changes-box">
<redaction-icon-button
<iqser-icon-button
(action)="save()"
[label]="'rules-screen.save-changes' | translate"
icon="red:check"
type="primary"
></redaction-icon-button>
[type]="iconButtonTypes.primary"
></iqser-icon-button>
<div (click)="revert()" class="all-caps-label cancel" translate="rules-screen.revert-changes"></div>
</div>
</div>

View File

@ -13,6 +13,7 @@ import { LoadingService } from '../../../../services/loading.service';
import ICodeEditor = monaco.editor.ICodeEditor;
import IModelDeltaDecoration = monaco.editor.IModelDeltaDecoration;
import IStandaloneEditorConstructionOptions = monaco.editor.IStandaloneEditorConstructionOptions;
import { IconButtonTypes } from '@iqser/common-ui';
@Component({
selector: 'redaction-rules-screen',
@ -20,7 +21,8 @@ import IStandaloneEditorConstructionOptions = monaco.editor.IStandaloneEditorCon
styleUrls: ['./rules-screen.component.scss']
})
export class RulesScreenComponent extends ComponentHasChanges implements OnInit {
editorOptions: IStandaloneEditorConstructionOptions = {
readonly iconButtonTypes = IconButtonTypes;
readonly editorOptions: IStandaloneEditorConstructionOptions = {
theme: 'vs',
language: 'java',
automaticLayout: true,

View File

@ -6,31 +6,31 @@
<div class="red-content-inner">
<div class="content-container">
<div class="header-item">
<redaction-round-checkbox
<iqser-round-checkbox
(click)="toggleSelectAll()"
[active]="screenStateService.areAllEntitiesSelected$ | async"
[indeterminate]="screenStateService.notAllEntitiesSelected$ | async"
></redaction-round-checkbox>
></iqser-round-checkbox>
<span class="all-caps-label">
{{ 'trash.table-header.title' | translate: { length: (screenStateService.displayedLength$ | async) } }}
</span>
<redaction-circle-button
<iqser-circle-button
(action)="bulkRestore()"
*ngIf="screenStateService.areSomeEntitiesSelected$ | async"
[tooltip]="'trash.bulk.restore' | translate"
icon="red:put-back"
type="dark-bg"
></redaction-circle-button>
[type]="circleButtonTypes.dark"
></iqser-circle-button>
<redaction-circle-button
<iqser-circle-button
(action)="bulkDelete()"
*ngIf="screenStateService.areSomeEntitiesSelected$ | async"
[tooltip]="'trash.bulk.delete' | translate"
icon="red:trash"
type="dark-bg"
></redaction-circle-button>
[type]="circleButtonTypes.dark"
></iqser-circle-button>
</div>
<div [class.no-data]="screenStateService.noData$ | async" class="table-header" redactionSyncWidth="table-item">
@ -69,7 +69,7 @@
<cdk-virtual-scroll-viewport [itemSize]="itemSize" redactionHasScrollbar>
<div *cdkVirtualFor="let entity of sortedDisplayedEntities$ | async; trackBy: trackByPrimaryKey" class="table-item">
<div (click)="toggleEntitySelected($event, entity)" class="selection-column">
<redaction-round-checkbox [active]="isSelected(entity)"></redaction-round-checkbox>
<iqser-round-checkbox [active]="isSelected(entity)"></iqser-round-checkbox>
</div>
<div class="filename">
@ -105,20 +105,20 @@
{{ getRestoreDate(entity.softDeletedTime) | date: 'timeFromNow' }}
</div>
<div class="action-buttons">
<redaction-circle-button
<iqser-circle-button
*ngIf="canRestore(entity.softDeletedTime)"
(action)="bulkRestore([entity.dossierId])"
[tooltip]="'trash.action.restore' | translate"
icon="red:put-back"
type="dark-bg"
></redaction-circle-button>
[type]="circleButtonTypes.dark"
></iqser-circle-button>
<redaction-circle-button
<iqser-circle-button
(action)="bulkDelete([entity.dossierId])"
[tooltip]="'trash.action.delete' | translate"
icon="red:trash"
type="dark-bg"
></redaction-circle-button>
[type]="circleButtonTypes.dark"
></iqser-circle-button>
</div>
</div>

View File

@ -1,10 +1,10 @@
@import '../../../../../assets/styles/red-variables';
@import '../../../../../assets/styles/variables';
@import '../../../../../assets/styles/red-mixins';
.header-item {
padding: 0 24px 0 10px;
redaction-circle-button:not(:last-child) {
iqser-circle-button:not(:last-child) {
margin-right: 4px !important;
}
}

View File

@ -2,7 +2,7 @@ import { ChangeDetectionStrategy, Component, Injector, OnInit } from '@angular/c
import { PermissionsService } from '@services/permissions.service';
import { Dossier } from '@redaction/red-ui-http';
import { LoadingService } from '@services/loading.service';
import { AppConfigKey, AppConfigService } from '../../../app-config/app-config.service';
import { AppConfigKey, AppConfigService } from '@app-config/app-config.service';
import * as moment from 'moment';
import { FilterService } from '@shared/services/filter.service';
import { SearchService } from '@shared/services/search.service';
@ -10,6 +10,7 @@ import { ScreenStateService } from '@shared/services/screen-state.service';
import { SortingService } from '@services/sorting.service';
import { BaseListingComponent } from '@shared/base/base-listing.component';
import { DossiersService } from '../../../dossier/services/dossiers.service';
import { CircleButtonTypes } from '@iqser/common-ui';
const HOURS_IN_A_DAY = 24;
const MINUTES_IN_AN_HOUR = 60;
@ -21,6 +22,7 @@ const MINUTES_IN_AN_HOUR = 60;
providers: [FilterService, SearchService, ScreenStateService, SortingService, DossiersService]
})
export class TrashScreenComponent extends BaseListingComponent<Dossier> implements OnInit {
readonly circleButtonTypes = CircleButtonTypes;
readonly itemSize = 80;
protected readonly _primaryKey = 'dossierName';
private readonly _deleteRetentionHours = this._appConfigService.getConfig(AppConfigKey.DELETE_RETENTION_HOURS);

View File

@ -13,38 +13,38 @@
[placeholder]="'user-listing.search' | translate"
type="search"
></redaction-input-with-action>
<redaction-icon-button
<iqser-icon-button
(action)="openAddEditUserDialog($event)"
*ngIf="permissionsService.isUserAdmin()"
[label]="'user-listing.add-new' | translate"
icon="red:plus"
type="primary"
></redaction-icon-button>
<redaction-circle-button
[type]="iconButtonTypes.primary"
></iqser-icon-button>
<iqser-circle-button
*ngIf="permissionsService.isUser()"
[tooltip]="'common.close' | translate"
class="ml-6"
icon="red:close"
redactionNavigateLastDossiersScreen
tooltipPosition="below"
></redaction-circle-button>
></iqser-circle-button>
</div>
</div>
<div class="red-content-inner">
<div [class.extended]="collapsedDetails" class="content-container">
<div class="header-item">
<redaction-round-checkbox
<iqser-round-checkbox
(click)="toggleSelectAll()"
[active]="screenStateService.areAllEntitiesSelected$ | async"
[indeterminate]="screenStateService.notAllEntitiesSelected$ | async"
></redaction-round-checkbox>
></iqser-round-checkbox>
<span class="all-caps-label">
{{ 'user-listing.table-header.title' | translate: { length: (screenStateService.displayedLength$ | async) } }}
</span>
<redaction-circle-button
<iqser-circle-button
(action)="bulkDelete()"
*ngIf="screenStateService.areSomeEntitiesSelected$ | async"
[disabled]="(canDeleteSelected$ | async) === false"
@ -55,8 +55,8 @@
"
icon="red:trash"
tooltipPosition="after"
type="dark-bg"
></redaction-circle-button>
[type]="circleButtonTypes.dark"
></iqser-circle-button>
</div>
<div class="table-header" redactionSyncWidth="table-item">
@ -83,7 +83,7 @@
<!-- Table lines -->
<div *cdkVirtualFor="let user of sortedDisplayedEntities$ | async; trackBy: trackByPrimaryKey" class="table-item">
<div (click)="toggleEntitySelected($event, user)" class="selection-column">
<redaction-round-checkbox [active]="isSelected(user)"></redaction-round-checkbox>
<iqser-round-checkbox [active]="isSelected(user)"></iqser-round-checkbox>
</div>
<div>
@ -104,19 +104,19 @@
<div class="small-label">{{ getDisplayRoles(user) }}</div>
<div class="actions-container">
<div class="action-buttons">
<redaction-circle-button
<iqser-circle-button
(action)="openAddEditUserDialog($event, user)"
[tooltip]="'user-listing.action.edit' | translate"
icon="red:edit"
type="dark-bg"
></redaction-circle-button>
<redaction-circle-button
[type]="circleButtonTypes.dark"
></iqser-circle-button>
<iqser-circle-button
(action)="openDeleteUsersDialog([user], $event)"
[disabled]="user.userId === userService.userId"
[tooltip]="'user-listing.action.delete' | translate"
icon="red:trash"
type="dark-bg"
></redaction-circle-button>
[type]="circleButtonTypes.dark"
></iqser-circle-button>
</div>
</div>
<div class="scrollbar-placeholder"></div>

View File

@ -54,7 +54,7 @@
margin-right: 16px;
}
redaction-icon-button:not(:last-child) {
iqser-icon-button:not(:last-child) {
margin-right: 6px;
}
}

View File

@ -16,6 +16,7 @@ import { BaseListingComponent } from '@shared/base/base-listing.component';
import { Observable } from 'rxjs';
import { map } from 'rxjs/operators';
import { rolesTranslations } from '../../../../translations/roles-translations';
import { CircleButtonTypes, IconButtonTypes } from '@iqser/common-ui';
@Component({
templateUrl: './user-listing-screen.component.html',
@ -23,10 +24,12 @@ import { rolesTranslations } from '../../../../translations/roles-translations';
providers: [FilterService, SearchService, ScreenStateService, SortingService]
})
export class UserListingScreenComponent extends BaseListingComponent<User> implements OnInit {
readonly iconButtonTypes = IconButtonTypes;
readonly circleButtonTypes = CircleButtonTypes;
readonly canDeleteSelected$ = this._canDeleteSelected$;
collapsedDetails = false;
chartData: DoughnutChartConfig[] = [];
translations = rolesTranslations;
readonly translations = rolesTranslations;
protected readonly _primaryKey = 'userId';
@ViewChildren(InitialsAvatarComponent)
private readonly _avatars: QueryList<InitialsAvatarComponent>;

View File

@ -5,12 +5,12 @@
<div class="actions flex-1">
<redaction-dossier-template-actions></redaction-dossier-template-actions>
<redaction-circle-button
<iqser-circle-button
[routerLink]="['../..']"
[tooltip]="'common.close' | translate"
icon="red:close"
tooltipPosition="below"
></redaction-circle-button>
></iqser-circle-button>
</div>
</div>
@ -22,13 +22,13 @@
<div class="content-container">
<div #viewer class="viewer"></div>
<div *ngIf="changed && permissionsService.isAdmin()" class="changes-box">
<redaction-icon-button
<iqser-icon-button
(action)="save()"
[disabled]="configForm.invalid"
[label]="'watermark-screen.action.save' | translate"
icon="red:check"
type="primary"
></redaction-icon-button>
[type]="iconButtonTypes.primary"
></iqser-icon-button>
<div (click)="revert()" class="all-caps-label cancel" translate="watermark-screen.action.revert"></div>
</div>
</div>

View File

@ -1,4 +1,4 @@
@import '../../../../../assets/styles/red-variables';
@import '../../../../../assets/styles/variables';
.page-header .actions {
display: flex;

View File

@ -13,6 +13,7 @@ import { BASE_HREF } from '../../../../tokens';
import { stampPDFPage } from '../../../../utils/page-stamper';
import { marker as _ } from '@biesbjerg/ngx-translate-extract-marker';
import { LoadingService } from '../../../../services/loading.service';
import { IconButtonTypes } from '@iqser/common-ui';
export const DEFAULT_WATERMARK: WatermarkModelRes = {
text: null,
@ -21,7 +22,7 @@ export const DEFAULT_WATERMARK: WatermarkModelRes = {
fontSize: 11,
fontType: 'sans-serif',
orientation: WatermarkModelRes.OrientationEnum.DIAGONAL
};
} as const;
@Component({
selector: 'redaction-watermark-screen',
@ -29,6 +30,7 @@ export const DEFAULT_WATERMARK: WatermarkModelRes = {
styleUrls: ['./watermark-screen.component.scss']
})
export class WatermarkScreenComponent implements OnInit {
readonly iconButtonTypes = IconButtonTypes;
configForm: FormGroup;
private _instance: WebViewerInstance;
private _watermark: WatermarkModelRes = {};

View File

@ -11,7 +11,7 @@ import { AddEditUserDialogComponent } from '../dialogs/add-edit-user-dialog/add-
import { ConfirmDeleteUsersDialogComponent } from '../dialogs/confirm-delete-users-dialog/confirm-delete-users-dialog.component';
import { FileAttributesCsvImportDialogComponent } from '../dialogs/file-attributes-csv-import-dialog/file-attributes-csv-import-dialog.component';
import { ComponentType } from '@angular/cdk/portal';
import { DialogService } from '@shared/services/dialog.service';
import { DialogService, largeDialogConfig } from '@shared/services/dialog.service';
import { AddEditDossierAttributeDialogComponent } from '../dialogs/add-edit-dossier-attribute-dialog/add-edit-dossier-attribute-dialog.component';
type DialogType =
@ -57,7 +57,7 @@ export class AdminDialogService extends DialogService<DialogType> {
},
importFileAttributes: {
component: FileAttributesCsvImportDialogComponent,
dialogConfig: this._largeConfig
dialogConfig: largeDialogConfig
},
deleteUsers: {
component: ConfirmDeleteUsersDialogComponent,

View File

@ -1,118 +1,118 @@
<div *ngIf="canPerformAnnotationActions" [class.always-visible]="alwaysVisible" class="annotation-actions">
<redaction-circle-button
<iqser-circle-button
(action)="annotationActionsService.changeLegalBasis($event, annotations, annotationsChanged)"
*ngIf="annotationPermissions.canChangeLegalBasis"
[tooltipPosition]="tooltipPosition"
[tooltip]="'annotation-actions.edit-reason.label' | translate"
[type]="btnType"
[type]="buttonType"
icon="red:edit"
></redaction-circle-button>
></iqser-circle-button>
<redaction-circle-button
<iqser-circle-button
(action)="annotationActionsService.convertRecommendationToAnnotation($event, annotations, annotationsChanged)"
*ngIf="annotationPermissions.canAcceptRecommendation"
[tooltipPosition]="tooltipPosition"
[tooltip]="'annotation-actions.accept-recommendation.label' | translate"
[type]="btnType"
[type]="buttonType"
icon="red:check"
></redaction-circle-button>
></iqser-circle-button>
<redaction-circle-button
<iqser-circle-button
(action)="annotationActionsService.acceptSuggestion($event, annotations, annotationsChanged)"
*ngIf="annotationPermissions.canAcceptSuggestion"
[tooltipPosition]="tooltipPosition"
[tooltip]="'annotation-actions.accept-suggestion.label' | translate"
[type]="btnType"
[type]="buttonType"
icon="red:check"
></redaction-circle-button>
></iqser-circle-button>
<redaction-circle-button
<iqser-circle-button
(action)="annotationActionsService.undoDirectAction($event, annotations, annotationsChanged)"
*ngIf="annotationPermissions.canUndo"
[tooltipPosition]="tooltipPosition"
[tooltip]="'annotation-actions.undo' | translate"
[type]="btnType"
[type]="buttonType"
icon="red:undo"
></redaction-circle-button>
></iqser-circle-button>
<redaction-circle-button
<iqser-circle-button
(action)="annotationActionsService.rejectSuggestion($event, annotations, annotationsChanged)"
*ngIf="annotationPermissions.canRejectSuggestion"
[tooltipPosition]="tooltipPosition"
[tooltip]="'annotation-actions.reject-suggestion' | translate"
[type]="btnType"
[type]="buttonType"
icon="red:trash"
></redaction-circle-button>
></iqser-circle-button>
<redaction-circle-button
<iqser-circle-button
(action)="annotationActionsService.recategorizeImage($event, annotations, annotationsChanged)"
*ngIf="annotationPermissions.canRecategorizeImage"
[tooltipPosition]="tooltipPosition"
[tooltip]="'annotation-actions.recategorize-image' | translate"
[type]="btnType"
[type]="buttonType"
icon="red:thumb-down"
></redaction-circle-button>
></iqser-circle-button>
<redaction-circle-button
<iqser-circle-button
(action)="annotationActionsService.markAsFalsePositive($event, annotations, annotationsChanged)"
*ngIf="annotationPermissions.canMarkTextOnlyAsFalsePositive && !annotationPermissions.canPerformMultipleRemoveActions"
[tooltipPosition]="tooltipPosition"
[tooltip]="'annotation-actions.remove-annotation.false-positive' | translate"
[type]="btnType"
[type]="buttonType"
icon="red:thumb-down"
></redaction-circle-button>
></iqser-circle-button>
<redaction-circle-button
<iqser-circle-button
(action)="annotationActionsService.forceRedaction($event, annotations, annotationsChanged)"
*ngIf="annotationPermissions.canForceRedaction"
[tooltipPosition]="tooltipPosition"
[tooltip]="'annotation-actions.force-redaction.label' | translate"
[type]="btnType"
[type]="buttonType"
icon="red:thumb-up"
></redaction-circle-button>
></iqser-circle-button>
<redaction-circle-button
<iqser-circle-button
(action)="hideAnnotation($event)"
*ngIf="isImage && isVisible"
[tooltipPosition]="tooltipPosition"
[tooltip]="'annotation-actions.hide' | translate"
[type]="btnType"
[type]="buttonType"
icon="red:visibility-off"
></redaction-circle-button>
></iqser-circle-button>
<redaction-circle-button
<iqser-circle-button
(action)="showAnnotation($event)"
*ngIf="isImage && !isVisible"
[tooltipPosition]="tooltipPosition"
[tooltip]="'annotation-actions.show' | translate"
[type]="btnType"
[type]="buttonType"
icon="red:visibility"
></redaction-circle-button>
></iqser-circle-button>
<redaction-circle-button
<iqser-circle-button
(action)="suggestRemoveAnnotations($event, true)"
*ngIf="annotationPermissions.canRemoveOrSuggestToRemoveFromDictionary"
[tooltipPosition]="tooltipPosition"
[tooltip]="'annotation-actions.remove-annotation.remove-from-dict' | translate"
[type]="btnType"
[type]="buttonType"
icon="red:remove-from-dict"
></redaction-circle-button>
></iqser-circle-button>
<redaction-circle-button
<iqser-circle-button
(action)="markAsFalsePositive($event)"
*ngIf="annotationPermissions.canMarkAsFalsePositive"
[tooltipPosition]="tooltipPosition"
[tooltip]="'annotation-actions.remove-annotation.false-positive' | translate"
[type]="btnType"
[type]="buttonType"
icon="red:thumb-down"
></redaction-circle-button>
></iqser-circle-button>
<redaction-circle-button
<iqser-circle-button
(action)="suggestRemoveAnnotations($event, false)"
*ngIf="annotationPermissions.canRemoveOrSuggestToRemoveOnlyHere"
[tooltipPosition]="tooltipPosition"
[tooltip]="'annotation-actions.remove-annotation.only-here' | translate"
[type]="btnType"
[type]="buttonType"
icon="red:trash"
></redaction-circle-button>
></iqser-circle-button>
</div>

View File

@ -1,9 +1,9 @@
@import '../../../../../assets/styles/red-variables';
@import '../../../../../assets/styles/variables';
.annotation-actions {
display: none;
redaction-circle-button {
iqser-circle-button {
display: block;
}

View File

@ -6,13 +6,20 @@ import { AnnotationPermissions } from '@models/file/annotation.permissions';
import { AnnotationActionsService } from '../../services/annotation-actions.service';
import { WebViewerInstance } from '@pdftron/webviewer';
export const AnnotationButtonTypes = {
dark: 'dark',
primary: 'primary'
} as const;
export type AnnotationButtonType = keyof typeof AnnotationButtonTypes;
@Component({
selector: 'redaction-annotation-actions',
templateUrl: './annotation-actions.component.html',
styleUrls: ['./annotation-actions.component.scss']
})
export class AnnotationActionsComponent implements OnInit {
@Input() btnType: 'dark-bg' | 'primary' = 'dark-bg';
@Input() buttonType: AnnotationButtonType = AnnotationButtonTypes.dark;
@Input() tooltipPosition: 'before' | 'above' = 'before';
@Input() canPerformAnnotationActions: boolean;
@Input() viewer: WebViewerInstance;

View File

@ -1,78 +1,78 @@
<ng-container *ngIf="areSomeFilesSelected">
<redaction-circle-button
<iqser-circle-button
(action)="delete()"
*ngIf="canDelete"
[tooltip]="'dossier-overview.bulk.delete' | translate"
icon="red:trash"
type="dark-bg"
></redaction-circle-button>
[type]="circleButtonTypes.dark"
></iqser-circle-button>
<redaction-circle-button
<iqser-circle-button
(action)="assign()"
*ngIf="canAssign"
[tooltip]="assignTooltip"
icon="red:assign"
type="dark-bg"
></redaction-circle-button>
[type]="circleButtonTypes.dark"
></iqser-circle-button>
<redaction-circle-button
<iqser-circle-button
(action)="assignToMe()"
*ngIf="canAssignToSelf"
[tooltip]="'dossier-overview.assign-me' | translate"
icon="red:assign-me"
type="dark-bg"
></redaction-circle-button>
[type]="circleButtonTypes.dark"
></iqser-circle-button>
<redaction-circle-button
<iqser-circle-button
(action)="setToUnderApproval()"
*ngIf="canSetToUnderApproval"
[tooltip]="'dossier-overview.under-approval' | translate"
icon="red:ready-for-approval"
type="dark-bg"
></redaction-circle-button>
[type]="circleButtonTypes.dark"
></iqser-circle-button>
<redaction-circle-button
<iqser-circle-button
(action)="setToUnderReview()"
*ngIf="canSetToUnderReview"
[tooltip]="'dossier-overview.under-review' | translate"
icon="red:undo"
type="dark-bg"
></redaction-circle-button>
[type]="circleButtonTypes.dark"
></iqser-circle-button>
<redaction-file-download-btn [dossier]="dossier" [file]="selectedFiles"></redaction-file-download-btn>
<!-- Approved-->
<redaction-circle-button
<iqser-circle-button
(action)="approveDocuments()"
*ngIf="isReadyForApproval"
[disabled]="!canApprove"
[tooltip]="canApprove ? ('dossier-overview.approve' | translate) : ('dossier-overview.approve-disabled' | translate)"
icon="red:approved"
type="dark-bg"
></redaction-circle-button>
[type]="circleButtonTypes.dark"
></iqser-circle-button>
<!-- Back to approval -->
<redaction-circle-button
<iqser-circle-button
(action)="setToUnderApproval()"
*ngIf="canUndoApproval"
[tooltip]="'dossier-overview.under-approval' | translate"
icon="red:undo"
type="dark-bg"
></redaction-circle-button>
[type]="circleButtonTypes.dark"
></iqser-circle-button>
<redaction-circle-button
<iqser-circle-button
(action)="ocr()"
*ngIf="canOcr"
[tooltip]="'dossier-overview.ocr-file' | translate"
icon="red:ocr"
type="dark-bg"
></redaction-circle-button>
[type]="circleButtonTypes.dark"
></iqser-circle-button>
<redaction-circle-button
<iqser-circle-button
(action)="reanalyse()"
*ngIf="canReanalyse"
[tooltip]="'dossier-overview.bulk.reanalyse' | translate"
icon="red:refresh"
type="dark-bg"
></redaction-circle-button>
[type]="circleButtonTypes.dark"
></iqser-circle-button>
</ng-container>

View File

@ -11,6 +11,7 @@ import { ConfirmationDialogInput } from '@shared/dialogs/confirmation-dialog/con
import { ScreenStateService } from '@shared/services/screen-state.service';
import { TranslateService } from '@ngx-translate/core';
import { marker as _ } from '@biesbjerg/ngx-translate-extract-marker';
import { CircleButtonTypes } from '@iqser/common-ui';
@Component({
selector: 'redaction-dossier-overview-bulk-actions',
@ -18,6 +19,8 @@ import { marker as _ } from '@biesbjerg/ngx-translate-extract-marker';
styleUrls: ['./dossier-overview-bulk-actions.component.scss']
})
export class DossierOverviewBulkActionsComponent {
readonly circleButtonTypes = CircleButtonTypes;
@Output()
reload = new EventEmitter();

View File

@ -5,14 +5,14 @@
<div>{{ comment.date | date: 'd MMM. yyyy, hh:mm a' }}</div>
</div>
<div class="comment-actions">
<redaction-circle-button
<iqser-circle-button
(action)="deleteComment(comment)"
*ngIf="permissionsService.canDeleteComment(comment)"
[iconSize]="10"
[size]="20"
class="pointer"
icon="red:trash"
></redaction-circle-button>
></iqser-circle-button>
</div>
</div>
<div>{{ comment.text }}</div>

View File

@ -1,4 +1,4 @@
@import '../../../../../assets/styles/red-variables';
@import '../../../../../assets/styles/variables';
:host {
display: flex;

View File

@ -1,17 +1,17 @@
<div class="right-title heading" translate="file-preview.tabs.document-info.label">
<div>
<redaction-circle-button
<iqser-circle-button
(action)="edit()"
[tooltip]="'file-preview.tabs.document-info.edit' | translate"
icon="red:edit"
tooltipPosition="before"
></redaction-circle-button>
<redaction-circle-button
></iqser-circle-button>
<iqser-circle-button
(action)="closeDocumentInfoView.emit()"
[tooltip]="'file-preview.tabs.document-info.close' | translate"
icon="red:close"
tooltipPosition="before"
></redaction-circle-button>
></iqser-circle-button>
</div>
</div>

View File

@ -1,4 +1,4 @@
@import '../../../../../assets/styles/red-variables';
@import '../../../../../assets/styles/variables';
@import '../../../../../assets/styles/red-mixins';
:host {
@ -28,7 +28,7 @@
.right-title > div {
display: flex;
> redaction-circle-button:not(:last-child) {
> iqser-circle-button:not(:last-child) {
margin-right: 2px;
}
}

View File

@ -1,4 +1,4 @@
@import '../../../../../assets/styles/red-variables';
@import '../../../../../assets/styles/variables';
@import '../../../../../assets/styles/red-components';
@import '../../../../../assets/styles/red-text-styles';

View File

@ -17,14 +17,14 @@
<ng-container *ngIf="!editingOwner; else editOwner">
<redaction-initials-avatar [userId]="owner.userId" [withName]="true" color="gray" size="large"></redaction-initials-avatar>
<redaction-circle-button
<iqser-circle-button
(action)="editingOwner = true"
*ngIf="permissionsService.isManager()"
[tooltip]="'dossier-details.edit-owner' | translate"
class="ml-14"
icon="red:edit"
tooltipPosition="below"
></redaction-circle-button>
></iqser-circle-button>
</ng-container>
</div>
</div>
@ -81,10 +81,10 @@
</ng-template>
<ng-template #collapsible let-action="action" let-tooltip="tooltip">
<redaction-circle-button
<iqser-circle-button
(action)="toggleCollapse.emit()"
[icon]="'red:' + action"
[tooltip]="tooltip"
tooltipPosition="before"
></redaction-circle-button>
></iqser-circle-button>
</ng-template>

View File

@ -1,4 +1,4 @@
@import '../../../../../assets/styles/red-variables';
@import '../../../../../assets/styles/variables';
.header-wrapper {
display: flex;
@ -9,7 +9,7 @@
max-width: 88%;
}
redaction-circle-button {
iqser-circle-button {
position: absolute;
top: -8px;
left: 290px;

View File

@ -1,20 +1,20 @@
<redaction-status-bar [config]="getDossierStatusConfig(dossier)"></redaction-status-bar>
<div [class.active]="actionMenuOpen" class="action-buttons">
<redaction-circle-button
<iqser-circle-button
(action)="openEditDossierDialog($event, dossier)"
*ngIf="permissionsService.isManager()"
[tooltip]="'dossier-listing.edit.action' | translate"
icon="red:edit"
type="dark-bg"
></redaction-circle-button>
[type]="circleButtonTypes.dark"
></iqser-circle-button>
<redaction-circle-button
<iqser-circle-button
(action)="reanalyseDossier($event, dossier)"
*ngIf="permissionsService.displayReanalyseBtn(dossier)"
[tooltip]="'dossier-listing.reanalyse.action' | translate"
icon="red:refresh"
type="dark-bg"
></redaction-circle-button>
[type]="circleButtonTypes.dark"
></iqser-circle-button>
<redaction-file-download-btn [dossier]="dossier" [file]="dossier.files" type="dark-bg"></redaction-file-download-btn>
<redaction-file-download-btn [dossier]="dossier" [file]="dossier.files" [type]="circleButtonTypes.dark"></redaction-file-download-btn>
</div>

View File

@ -4,6 +4,7 @@ import { DossierWrapper } from '@state/model/dossier.wrapper';
import { StatusSorter } from '@utils/sorters/status-sorter';
import { AppStateService } from '@state/app-state.service';
import { DossiersDialogService } from '../../services/dossiers-dialog.service';
import { CircleButtonTypes } from '@iqser/common-ui';
@Component({
selector: 'redaction-dossier-listing-actions',
@ -11,6 +12,8 @@ import { DossiersDialogService } from '../../services/dossiers-dialog.service';
styleUrls: ['./dossier-listing-actions.component.scss']
})
export class DossierListingActionsComponent {
readonly circleButtonTypes = CircleButtonTypes;
@Input() dossier: DossierWrapper;
@Output() actionPerformed = new EventEmitter<DossierWrapper | undefined>();
actionMenuOpen = false;

View File

@ -1,4 +1,4 @@
@import '../../../../../assets/styles/red-variables';
@import '../../../../../assets/styles/variables';
:host {
flex: 1;

View File

@ -10,32 +10,32 @@
<ng-template #actions>
<div class="file-actions" *ngIf="fileStatus">
<!-- delete-->
<redaction-circle-button
<iqser-circle-button
(action)="openDeleteFileDialog($event)"
*ngIf="permissionsService.canDeleteFile(fileStatus)"
[tooltipPosition]="tooltipPosition"
[tooltip]="'dossier-overview.delete.action' | translate"
[type]="buttonType"
icon="red:trash"
></redaction-circle-button>
></iqser-circle-button>
<redaction-circle-button
<iqser-circle-button
(action)="assign($event)"
*ngIf="canAssign && screen === 'dossier-overview'"
[tooltipPosition]="tooltipPosition"
[tooltip]="assignTooltip"
[type]="buttonType"
icon="red:assign"
></redaction-circle-button>
></iqser-circle-button>
<redaction-circle-button
<iqser-circle-button
(action)="assignToMe($event)"
*ngIf="canAssignToSelf && screen === 'dossier-overview'"
[tooltipPosition]="tooltipPosition"
[tooltip]="'dossier-overview.assign-me' | translate"
[type]="buttonType"
icon="red:assign-me"
></redaction-circle-button>
></iqser-circle-button>
<!-- download redacted file-->
<redaction-file-download-btn
@ -46,16 +46,16 @@
[type]="buttonType"
></redaction-file-download-btn>
<redaction-circle-button
<iqser-circle-button
(action)="toggleViewDocumentInfo()"
*ngIf="screen === 'file-preview'"
[attr.aria-expanded]="activeDocumentInfo"
[tooltip]="'file-preview.document-info' | translate"
icon="red:status-info"
tooltipPosition="below"
></redaction-circle-button>
></iqser-circle-button>
<redaction-circle-button
<iqser-circle-button
(action)="toggleExcludePages()"
*ngIf="screen === 'file-preview'"
[attr.aria-expanded]="activeExcludePages"
@ -63,30 +63,30 @@
[tooltip]="'file-preview.exclude-pages' | translate"
icon="red:exclude-pages"
tooltipPosition="below"
></redaction-circle-button>
></iqser-circle-button>
<!-- Ready for approval-->
<redaction-circle-button
<iqser-circle-button
(action)="setFileUnderApproval($event)"
*ngIf="canSetToUnderApproval"
[tooltipPosition]="tooltipPosition"
[tooltip]="'dossier-overview.under-approval' | translate"
[type]="buttonType"
icon="red:ready-for-approval"
></redaction-circle-button>
></iqser-circle-button>
<!-- Back to review -->
<redaction-circle-button
<iqser-circle-button
(action)="setFileUnderReview($event, true)"
*ngIf="canSetToUnderReview"
[tooltipPosition]="tooltipPosition"
[tooltip]="'dossier-overview.under-review' | translate"
[type]="buttonType"
icon="red:undo"
></redaction-circle-button>
></iqser-circle-button>
<!-- Approved-->
<redaction-circle-button
<iqser-circle-button
(action)="setFileApproved($event)"
*ngIf="permissionsService.isReadyForApproval(fileStatus)"
[disabled]="!permissionsService.canApprove(fileStatus)"
@ -98,47 +98,47 @@
"
[type]="buttonType"
icon="red:approved"
></redaction-circle-button>
></iqser-circle-button>
<!-- Back to approval -->
<redaction-circle-button
<iqser-circle-button
(action)="setFileUnderApproval($event)"
*ngIf="canUndoApproval"
[tooltipPosition]="tooltipPosition"
[tooltip]="'dossier-overview.under-approval' | translate"
[type]="buttonType"
icon="red:undo"
></redaction-circle-button>
></iqser-circle-button>
<redaction-circle-button
<iqser-circle-button
(action)="ocrFile($event)"
*ngIf="canOcr"
[tooltipPosition]="tooltipPosition"
[tooltip]="'dossier-overview.ocr-file' | translate"
[type]="buttonType"
icon="red:ocr"
></redaction-circle-button>
></iqser-circle-button>
<!-- reanalyse file preview -->
<redaction-circle-button
<iqser-circle-button
(action)="reanalyseFile($event)"
*ngIf="canReanalyse && screen === 'file-preview'"
[tooltip]="'file-preview.reanalyse-notification' | translate"
icon="red:refresh"
tooltipClass="warn small"
tooltipPosition="below"
type="warn"
></redaction-circle-button>
[type]="circleButtonTypes.warn"
></iqser-circle-button>
<!-- reanalyse file listing -->
<redaction-circle-button
<iqser-circle-button
(action)="reanalyseFile($event)"
*ngIf="canReanalyse && screen === 'dossier-overview'"
[tooltipPosition]="tooltipPosition"
[tooltip]="'dossier-overview.reanalyse.action' | translate"
icon="red:refresh"
type="dark-bg"
></redaction-circle-button>
[type]="circleButtonTypes.dark"
></iqser-circle-button>
<!-- exclude from redaction -->
<div class="red-input-group">

View File

@ -9,6 +9,7 @@ import { LoadingService } from '@services/loading.service';
import { FileManagementControllerService } from '@redaction/red-ui-http';
import { TranslateService } from '@ngx-translate/core';
import { marker as _ } from '@biesbjerg/ngx-translate-extract-marker';
import { CircleButtonTypes } from '@iqser/common-ui';
@Component({
selector: 'redaction-file-actions',
@ -16,6 +17,8 @@ import { marker as _ } from '@biesbjerg/ngx-translate-extract-marker';
styleUrls: ['./file-actions.component.scss']
})
export class FileActionsComponent implements OnInit {
readonly circleButtonTypes = CircleButtonTypes;
@Input() fileStatus: FileStatusWrapper;
@Input() activeDocumentInfo: boolean;
@Input() activeExcludePages: boolean;
@ -43,7 +46,7 @@ export class FileActionsComponent implements OnInit {
}
get buttonType() {
return this.screen === 'file-preview' ? 'default' : 'dark-bg';
return this.screen === 'file-preview' ? CircleButtonTypes.default : CircleButtonTypes.dark;
}
get toggleTooltip(): string {

View File

@ -17,12 +17,12 @@
</div>
<div *ngIf="excludePages" class="right-title heading" translate="file-preview.tabs.exclude-pages.label">
<div>
<redaction-circle-button
<iqser-circle-button
(action)="actionPerformed.emit('view-exclude-pages')"
[tooltip]="'file-preview.tabs.exclude-pages.close' | translate"
icon="red:close"
tooltipPosition="before"
></redaction-circle-button>
></iqser-circle-button>
</div>
</div>
<div class="right-content">
@ -38,11 +38,11 @@
</div>
<div *ngIf="multiSelectActive" class="multi-select">
<div class="selected-wrapper">
<redaction-round-checkbox
<iqser-round-checkbox
(click)="!!selectedAnnotations?.length && selectAnnotations.emit()"
[indeterminate]="!!selectedAnnotations?.length"
type="red-bg"
></redaction-round-checkbox>
type="with-bg"
></iqser-round-checkbox>
<span class="all-caps-label">{{ selectedAnnotations?.length || 0 }} selected </span>
<redaction-annotation-actions
(annotationsChanged)="annotationsChanged.emit($event)"
@ -51,11 +51,11 @@
[annotations]="selectedAnnotations"
[canPerformAnnotationActions]="!isReadOnly"
[viewer]="viewer"
btnType="primary"
buttonType="primary"
tooltipPosition="above"
></redaction-annotation-actions>
</div>
<redaction-circle-button (action)="multiSelectActive = false" icon="red:close" type="primary"></redaction-circle-button>
<iqser-circle-button (action)="multiSelectActive = false" icon="red:close" [type]="circleButtonTypes.primary"></iqser-circle-button>
</div>
<div [class.lower-height]="multiSelectActive || isReadOnly" class="annotations-wrapper">
<div
@ -147,21 +147,21 @@
</ng-container>
</redaction-empty-state>
<div class="no-annotations-buttons-container mt-32">
<redaction-icon-button
<iqser-icon-button
(action)="jumpToPreviousWithAnnotations()"
[disabled]="activeViewerPage <= displayedPages[0]"
[label]="'file-preview.tabs.annotations.jump-to-previous' | translate"
icon="red:nav-prev"
type="show-bg"
></redaction-icon-button>
<redaction-icon-button
[type]="iconButtonTypes.dark"
></iqser-icon-button>
<iqser-icon-button
(action)="jumpToNextWithAnnotations()"
[disabled]="activeViewerPage >= displayedPages[displayedPages.length - 1]"
[label]="'file-preview.tabs.annotations.jump-to-next' | translate"
class="mt-8"
icon="red:nav-next"
type="show-bg"
></redaction-icon-button>
[type]="iconButtonTypes.dark"
></iqser-icon-button>
</div>
</ng-container>
@ -195,10 +195,10 @@
</div>
<div class="active-icon-marker-container">
<redaction-round-checkbox
<iqser-round-checkbox
*ngIf="multiSelectActive && isSelected(annotation)"
[active]="true"
></redaction-round-checkbox>
></iqser-round-checkbox>
</div>
</div>
@ -244,10 +244,10 @@
</ng-template>
<ng-template #annotationFilterActionTemplate let-filter="filter">
<redaction-circle-button
<iqser-circle-button
(action)="toggleSkipped.emit($event)"
*ngIf="filter.key === 'skipped'"
[icon]="hideSkipped ? 'red:visibility-off' : 'red:visibility'"
type="dark-bg"
></redaction-circle-button>
[type]="circleButtonTypes.dark"
></iqser-circle-button>
</ng-template>

View File

@ -1,4 +1,4 @@
@import '../../../../../assets/styles/red-variables';
@import '../../../../../assets/styles/variables';
@import '../../../../../assets/styles/red-mixins';
.read-only {
@ -41,7 +41,7 @@
align-items: center;
flex-direction: column;
redaction-icon-button {
iqser-icon-button {
width: 100%;
}
}
@ -59,7 +59,7 @@
display: flex;
align-items: center;
redaction-round-checkbox.inactive {
iqser-round-checkbox .wrapper.inactive {
cursor: default;
}

View File

@ -21,6 +21,7 @@ import { FilterModel } from '@shared/components/filters/popup-filter/model/filte
import { CommentsComponent } from '../comments/comments.component';
import { PermissionsService } from '@services/permissions.service';
import { WebViewerInstance } from '@pdftron/webviewer';
import { CircleButtonTypes, IconButtonTypes } from '@iqser/common-ui';
const COMMAND_KEY_ARRAY = ['ArrowLeft', 'ArrowRight', 'ArrowUp', 'ArrowDown', 'Escape'];
const ALL_HOTKEY_ARRAY = ['ArrowLeft', 'ArrowRight', 'ArrowUp', 'ArrowDown'];
@ -31,6 +32,9 @@ const ALL_HOTKEY_ARRAY = ['ArrowLeft', 'ArrowRight', 'ArrowUp', 'ArrowDown'];
styleUrls: ['./file-workload.component.scss']
})
export class FileWorkloadComponent {
readonly iconButtonTypes = IconButtonTypes;
readonly circleButtonTypes = CircleButtonTypes;
displayedAnnotations: { [key: number]: { annotations: AnnotationWrapper[] } } = {};
@Input() selectedAnnotations: AnnotationWrapper[];
@Input() activeViewerPage: number;

View File

@ -1,4 +1,4 @@
@import 'apps/red-ui/src/assets/styles/red-variables';
@import '../../../../../assets/styles/variables';
.needs-work {
display: flex;

View File

@ -21,12 +21,12 @@
{{ range.startPage }}
</ng-container>
<ng-container *ngIf="range.startPage !== range.endPage"> {{ range.startPage }} -{{ range.endPage }} </ng-container>
<redaction-circle-button
<iqser-circle-button
(action)="includePagesRange(range)"
*ngIf="permissionsService.canExcludePages()"
[tooltip]="'file-preview.tabs.exclude-pages.put-back' | translate"
icon="red:undo"
></redaction-circle-button>
></iqser-circle-button>
</div>
</div>

View File

@ -1,4 +1,4 @@
@import '../../../../../assets/styles/red-variables';
@import '../../../../../assets/styles/variables';
@import '../../../../../assets/styles/red-mixins';
:host {
@ -29,14 +29,14 @@
justify-content: space-between;
height: 50px;
redaction-circle-button {
iqser-circle-button {
display: none;
}
&:hover {
background-color: $grey-8;
redaction-circle-button {
iqser-circle-button {
display: initial;
}
}

View File

@ -1,7 +1,7 @@
@import '../../../../../assets/styles/red-variables';
@import '../../../../../assets/styles/variables';
.page-wrapper {
color: $grey-1;
color: $accent;
position: relative;
padding: 12px 14px 12px 8px;
cursor: pointer;
@ -12,7 +12,7 @@
}
&.active {
border-left: 4px solid $red-1;
border-left: 4px solid $primary;
}
mat-icon {
@ -38,7 +38,7 @@
color: $grey-5;
.text {
color: $grey-1;
color: $accent;
}
}

Some files were not shown because too many files have changed in this diff Show More