Merge remote-tracking branch 'origin/RED-5875'

This commit is contained in:
Dan Percic 2023-05-31 23:54:21 +03:00
commit 987374959f
24 changed files with 112 additions and 117 deletions

View File

@ -7,6 +7,7 @@ import { BaseScreenComponent } from '@components/base-screen/base-screen.compone
import { MissingTranslationHandler } from '@ngx-translate/core';
import {
CachingModule,
ChevronButtonComponent,
CircleButtonComponent,
CommonUiModule,
EmptyStateComponent,
@ -169,6 +170,7 @@ export const appModuleFactory = (config: AppConfig) => {
IconButtonComponent,
TenantPipe,
MatDividerModule,
ChevronButtonComponent,
],
providers: [
{

View File

@ -22,10 +22,11 @@
</a>
<ng-container *ngIf="is(breadcrumb, 'dropdown')">
<button [matMenuTriggerFor]="dropdownMenu" class="dropdown-breadcrumb" mat-button>
<span>{{ breadcrumb.name$ | async }}</span>
<mat-icon svgIcon="iqser:arrow-down"></mat-icon>
</button>
<iqser-chevron-button
[label]="breadcrumb.name$ | async"
[matMenuTriggerFor]="dropdownMenu"
class="dropdown-breadcrumb"
></iqser-chevron-button>
<mat-menu #dropdownMenu="matMenu" class="padding-bottom-8">
<a

View File

@ -1,5 +1,3 @@
@use 'variables';
::ng-deep .notifications-backdrop + .cdk-overlay-connected-position-bounding-box {
right: 0 !important;
@ -67,7 +65,7 @@
}
&.unread {
background-color: rgba(variables.$primary, 0.1);
background-color: rgba(var(--iqser-primary-rgb), 0.1);
.dot {
background-color: var(--iqser-primary);

View File

@ -21,9 +21,9 @@ import { ReactiveFormsModule } from '@angular/forms';
import { ColorPickerModule } from 'ngx-color-picker';
import { MatIconModule } from '@angular/material/icon';
import { ConfirmDeleteDossierStateDialogComponent } from './confirm-delete-dossier-state-dialog/confirm-delete-dossier-state-dialog.component';
import { MatLegacyCheckboxModule } from '@angular/material/legacy-checkbox';
import { MatSelectModule } from '@angular/material/select';
import { MatDialogModule } from '@angular/material/dialog';
import { MatCheckboxModule } from '@angular/material/checkbox';
@NgModule({
declarations: [
@ -55,7 +55,7 @@ import { MatDialogModule } from '@angular/material/dialog';
ReactiveFormsModule,
ColorPickerModule,
MatIconModule,
MatLegacyCheckboxModule,
MatCheckboxModule,
MatSelectModule,
],
})

View File

@ -8,10 +8,10 @@ import { TranslateModule } from '@ngx-translate/core';
import { MatFormFieldModule } from '@angular/material/form-field';
import { MatSelectModule } from '@angular/material/select';
import { NgForOf } from '@angular/common';
import { MatLegacySlideToggleModule } from '@angular/material/legacy-slide-toggle';
import { MatLegacyCheckboxModule as MatCheckboxModule } from '@angular/material/legacy-checkbox';
import { MatCheckboxModule } from '@angular/material/checkbox';
import { MatTooltipModule } from '@angular/material/tooltip';
import { ROLES } from '@users/roles';
import { MatSlideToggleModule } from '@angular/material/slide-toggle';
export interface AddEditFileAttributeDialogData {
readonly fileAttribute: IFileAttributeConfig;
@ -30,7 +30,7 @@ export interface AddEditFileAttributeDialogData {
MatFormFieldModule,
MatSelectModule,
NgForOf,
MatLegacySlideToggleModule,
MatSlideToggleModule,
MatCheckboxModule,
MatTooltipModule,
IconButtonComponent,
@ -84,6 +84,4 @@ export class AddEditFileAttributeDialogComponent extends BaseDialogComponent {
displayedInFileList: { value: fileAttribute?.displayedInFileList, disabled: !this.canSetDisplayed },
});
}
protected readonly ROLES = ROLES;
}

View File

@ -4,11 +4,11 @@ import { ReactiveFormsModule, Validators } from '@angular/forms';
import { FileAttributeEncodingTypes, IFileAttributesConfig } from '@red/domain';
import { fileAttributeEncodingTypesTranslations } from '@translations/file-attribute-encoding-types-translations';
import { BaseDialogComponent, CircleButtonComponent, IconButtonComponent } from '@iqser/common-ui';
import { MatLegacySlideToggleModule } from '@angular/material/legacy-slide-toggle';
import { NgForOf, NgIf } from '@angular/common';
import { TranslateModule } from '@ngx-translate/core';
import { MatFormFieldModule } from '@angular/material/form-field';
import { MatSelectModule } from '@angular/material/select';
import { MatSlideToggleModule } from '@angular/material/slide-toggle';
@Component({
templateUrl: './file-attributes-configurations-dialog.component.html',
@ -16,7 +16,7 @@ import { MatSelectModule } from '@angular/material/select';
standalone: true,
imports: [
ReactiveFormsModule,
MatLegacySlideToggleModule,
MatSlideToggleModule,
NgIf,
TranslateModule,
MatFormFieldModule,

View File

@ -49,6 +49,7 @@
.csv-part {
display: flex;
flex: 1;
overflow: hidden;
.csv-part-header {

View File

@ -19,7 +19,7 @@ import { FormsModule, ReactiveFormsModule } from '@angular/forms';
import { MatAutocompleteModule } from '@angular/material/autocomplete';
import { MatInputModule } from '@angular/material/input';
import { MatMenuModule } from '@angular/material/menu';
import { MatLegacySlideToggleModule } from '@angular/material/legacy-slide-toggle';
import { MatSlideToggleModule } from '@angular/material/slide-toggle';
@NgModule({
declarations: [FileAttributesCsvImportDialogComponent, ActiveFieldsListingComponent],
@ -40,7 +40,7 @@ import { MatLegacySlideToggleModule } from '@angular/material/legacy-slide-toggl
ChevronButtonComponent,
EditableInputComponent,
FormsModule,
MatLegacySlideToggleModule,
MatSlideToggleModule,
RoundCheckboxComponent,
],
})

View File

@ -5,20 +5,13 @@ import { PermissionsScreenComponent } from './permissions-screen/permissions-scr
import { ConfigService } from './config.service';
import { TranslateModule } from '@ngx-translate/core';
import { IqserHelpModeModule, IqserListingModule } from '@iqser/common-ui';
import { MatLegacySlideToggleModule } from '@angular/material/legacy-slide-toggle';
import { MatSlideToggleModule } from '@angular/material/slide-toggle';
const routes = [{ path: '', component: PermissionsScreenComponent }];
@NgModule({
declarations: [PermissionsScreenComponent],
imports: [
RouterModule.forChild(routes),
CommonModule,
TranslateModule,
IqserListingModule,
IqserHelpModeModule,
MatLegacySlideToggleModule,
],
imports: [RouterModule.forChild(routes), CommonModule, TranslateModule, IqserListingModule, IqserHelpModeModule, MatSlideToggleModule],
providers: [ConfigService],
})
export class PermissionsModule {}

View File

@ -56,9 +56,11 @@
<div class="flex">
<div class="alignment-buttons" [class.disabled]="form.controls.horizontalTextAlignment.disabled">
<div
(click)="alignHorizontally(alignment)"
*ngFor="let alignment of watermarkHorizontalAlignments"
class="alignment"
[class.active]="currentAlignment.horizontal === alignment"
[matTooltipPosition]="'above'"
[matTooltip]="translations.HORIZONTAL[alignment] | translate"
[ngClass]="'horizontal-' + alignment.toLowerCase()"
[matTooltip]="translations.HORIZONTAL[alignment] | translate"
[matTooltipPosition]="'above'"
@ -70,9 +72,11 @@
</div>
<div class="alignment-buttons" [class.disabled]="form.controls.verticalTextAlignment.disabled">
<div
(click)="alignVertically(alignment)"
*ngFor="let alignment of watermarkVerticalAlignments"
class="alignment"
[class.active]="currentAlignment.vertical === alignment"
[matTooltipPosition]="'above'"
[matTooltip]="translations.VERTICAL[alignment] | translate"
[ngClass]="'vertical-' + alignment.toLowerCase()"
[matTooltip]="translations.VERTICAL[alignment] | translate"
[matTooltipPosition]="'above'"
@ -85,14 +89,18 @@
</div>
</div>
<div class="iqser-input-group">
<div class="iqser-input-group w-150">
<label [translate]="'watermark-screen.form.font-size'" class="all-caps-label"></label>
<mat-slider (change)="configChanged()" color="primary" formControlName="fontSize" max="50" min="5"></mat-slider>
<mat-slider (change)="configChanged()" color="primary" max="50" min="5">
<input formControlName="fontSize" matSliderThumb />
</mat-slider>
</div>
<div class="iqser-input-group">
<div class="iqser-input-group w-150">
<label [translate]="'watermark-screen.form.opacity'" class="all-caps-label"></label>
<mat-slider (change)="configChanged()" color="primary" formControlName="opacity" min="1"></mat-slider>
<mat-slider (change)="configChanged()" color="primary" min="1">
<input formControlName="opacity" matSliderThumb />
</mat-slider>
</div>
<div class="iqser-input-group w-150">

View File

@ -84,15 +84,15 @@ export class WatermarkScreenComponent implements OnInit {
readonly orientationOptions = ['DIAGONAL', 'HORIZONTAL', 'VERTICAL'];
instance: WebViewerInstance;
readonly loaded$: Observable<boolean>;
readonly watermarkHorizontalAlignments = Object.values(WATERMARK_HORIZONTAL_ALIGNMENTS);
readonly watermarkVerticalAlignments = Object.values(WATERMARK_VERTICAL_ALIGNMENTS);
currentAlignment: WatermarkAlignment;
@ViewChild('viewer', { static: true }) private readonly _viewer: ElementRef<HTMLDivElement>;
private readonly _convertPath = inject(BASE_HREF_FN);
readonly #loaded$ = new BehaviorSubject(false);
readonly #dossierTemplateId = getParam(DOSSIER_TEMPLATE_ID);
readonly #watermarkId = Number(getParam(WATERMARK_ID));
#watermark: Partial<IWatermark> = {};
readonly watermarkHorizontalAlignments = Object.values(WATERMARK_HORIZONTAL_ALIGNMENTS);
readonly watermarkVerticalAlignments = Object.values(WATERMARK_VERTICAL_ALIGNMENTS);
currentAlignment: WatermarkAlignment;
constructor(
private readonly _http: HttpClient,

View File

@ -23,10 +23,10 @@ import { TranslateModule } from '@ngx-translate/core';
import { PaginatorComponent } from './paginator/paginator.component';
import { MatIconModule } from '@angular/material/icon';
import { ReactiveFormsModule } from '@angular/forms';
import { MatLegacySliderModule } from '@angular/material/legacy-slider';
import { MatSliderModule } from '@angular/material/slider';
import { ColorPickerModule } from 'ngx-color-picker';
import { MatLegacySlideToggleModule } from '@angular/material/legacy-slide-toggle';
import { MatTooltipModule } from '@angular/material/tooltip';
import { MatSlideToggleModule } from '@angular/material/slide-toggle';
const routes: IqserRoutes = [
{
@ -67,9 +67,9 @@ const routes: IqserRoutes = [
MatIconModule,
IconButtonComponent,
ReactiveFormsModule,
MatLegacySliderModule,
MatSliderModule,
ColorPickerModule,
MatLegacySlideToggleModule,
MatSlideToggleModule,
CircleButtonComponent,
HasScrollbarDirective,
IqserAllowDirective,

View File

@ -1,19 +1,18 @@
import { NgModule } from '@angular/core';
import { MatNativeDateModule } from '@angular/material/core';
import { MatToolbarModule } from '@angular/material/toolbar';
import { MatLegacyButtonModule as MatButtonModule } from '@angular/material/legacy-button';
import { MatLegacySlideToggleModule as MatSlideToggleModule } from '@angular/material/legacy-slide-toggle';
import { MatLegacySliderModule as MatSliderModule } from '@angular/material/legacy-slider';
import { MatButtonModule } from '@angular/material/button';
import { MatSlideToggleModule } from '@angular/material/slide-toggle';
import { MatMenuModule } from '@angular/material/menu';
import { MatTooltipModule } from '@angular/material/tooltip';
import { MatButtonToggleModule } from '@angular/material/button-toggle';
import { MatFormFieldModule } from '@angular/material/form-field';
import { MatLegacyProgressSpinnerModule as MatProgressSpinnerModule } from '@angular/material/legacy-progress-spinner';
import { MatLegacyCheckboxModule as MatCheckboxModule } from '@angular/material/legacy-checkbox';
import { MatProgressSpinnerModule } from '@angular/material/progress-spinner';
import { MatCheckboxModule } from '@angular/material/checkbox';
import { MatDatepickerModule } from '@angular/material/datepicker';
import { MatInputModule } from '@angular/material/input';
import { MatSelectModule } from '@angular/material/select';
import { MatLegacyProgressBarModule as MatProgressBarModule } from '@angular/material/legacy-progress-bar';
import { MatProgressBarModule } from '@angular/material/progress-bar';
import { MatAutocompleteModule } from '@angular/material/autocomplete';
import { MatChipsModule } from '@angular/material/chips';
import { MatDialogModule } from '@angular/material/dialog';
@ -24,7 +23,6 @@ const matImports = [
MatToolbarModule,
MatButtonModule,
MatSlideToggleModule,
MatSliderModule,
MatMenuModule,
MatTooltipModule,
MatButtonToggleModule,

View File

@ -12,12 +12,12 @@
<iqser-dynamic-input
*ngFor="let attr of customAttributes"
[canEditInput]="!disabled"
[classList]="'w-full'"
[formControlName]="attr.id"
[id]="attr.id"
[label]="attr.label"
[type]="attr.type"
[canEditInput]="!disabled"
></iqser-dynamic-input>
</div>
@ -39,32 +39,30 @@
[class.displayed-preview]="currentAttrValue(attr)"
class="iqser-input-group image-attribute"
>
<div>
<img *ngIf="currentAttrValue(attr)" [alt]="attr.label" [src]="currentAttrValue(attr)" />
<img *ngIf="currentAttrValue(attr)" [alt]="attr.label" [src]="currentAttrValue(attr)" />
<label>{{ attr.label }}</label>
<label>{{ attr.label }}</label>
<iqser-icon-button
(action)="fileInputClick(attr)"
*ngIf="!currentAttrValue(attr)"
[disabled]="disabled"
[label]="'edit-dossier-dialog.attributes.upload-image' | translate"
[type]="iconButtonTypes.dark"
class="upload-button"
icon="iqser:upload"
></iqser-icon-button>
<iqser-icon-button
(action)="fileInputClick(attr)"
*ngIf="!currentAttrValue(attr)"
[disabled]="disabled"
[label]="'edit-dossier-dialog.attributes.upload-image' | translate"
[type]="iconButtonTypes.dark"
class="upload-button"
icon="iqser:upload"
></iqser-icon-button>
<input
#fileInput
(change)="uploadImage($event, attr)"
[id]="attr.id"
[name]="attr.id"
accept="image/jpg, image/jpeg, image/png"
class="file-upload-input"
hidden
type="file"
/>
</div>
<input
#fileInput
(change)="uploadImage($event, attr)"
[id]="attr.id"
[name]="attr.id"
accept="image/jpg, image/jpeg, image/png"
class="file-upload-input"
hidden
type="file"
/>
<div *ngIf="currentAttrValue(attr) && !disabled">
<iqser-circle-button

View File

@ -1,5 +1,5 @@
<div *ngIf="watermarks$ | async as watermarks" class="mt-14">
<div class="iqser-input-group w-300">
<div class="iqser-input-group">
<mat-checkbox (change)="changeChecked($event)" [checked]="!!value" [disabled]="disabled || isReadonly" color="primary">
{{ label }}
</mat-checkbox>

View File

@ -5,7 +5,7 @@ import { filter, map, tap } from 'rxjs/operators';
import { NG_VALIDATORS, NG_VALUE_ACCESSOR } from '@angular/forms';
import { Watermark } from '@red/domain';
import { WatermarksMapService } from '@services/entity-services/watermarks-map.service';
import { MatLegacyCheckboxChange as MatCheckboxChange } from '@angular/material/legacy-checkbox';
import { MatCheckboxChange } from '@angular/material/checkbox';
@Component({
selector: 'redaction-watermark-selector [dossierTemplateId] [label]',

View File

@ -5,7 +5,7 @@ import { marker as _ } from '@biesbjerg/ngx-translate-extract-marker';
import { FileDownloadService } from '@upload-download/services/file-download.service';
import { PermissionsService } from '@services/permissions.service';
import { firstValueFrom } from 'rxjs';
import { MatLegacyMenuTrigger as MatMenuTrigger } from '@angular/material/legacy-menu';
import { MatMenuTrigger } from '@angular/material/menu';
import {
DownloadDialogComponent,
DownloadDialogData,

View File

@ -15,7 +15,7 @@ import { MatChipListbox, MatChipSelectionChange } from '@angular/material/chips'
],
})
export class SelectComponent implements AfterViewInit, ControlValueAccessor {
@Input() optionTemplate?: TemplateRef<unknown>;
@Input() optionTemplate?: TemplateRef<{ option: any }>;
@Input() label: string;
@Input() options: any[];
@Input() disabled = false;
@ -26,11 +26,6 @@ export class SelectComponent implements AfterViewInit, ControlValueAccessor {
constructor(private readonly _changeDetector: ChangeDetectorRef, private readonly _elementRef: ElementRef) {}
@HostBinding('class.fixed-height')
get isFixedHeight(): boolean {
return !!this._height;
}
private _height?: number;
@Input()
@ -42,6 +37,11 @@ export class SelectComponent implements AfterViewInit, ControlValueAccessor {
}
}
@HostBinding('class.fixed-height')
get isFixedHeight(): boolean {
return !!this._height;
}
@Input() valueMapper: (option: any) => any = option => option.key;
ngAfterViewInit(): void {

View File

@ -20,12 +20,12 @@
<iqser-circle-button
(action)="openEditDossierDialog()"
*allow="roles.dossiers.edit; if: currentUser.isManager && canAdd"
[attr.help-mode-key]="'edit_dossier_members'"
[class.large-spacing]="largeSpacing"
[icon]="'iqser:plus'"
[size]="32"
[tooltip]="'dossier-details.assign-members' | translate"
[type]="circleButtonTypes.primary"
[attr.help-mode-key]="'edit_dossier_members'"
class="member"
></iqser-circle-button>
</div>

View File

@ -62,9 +62,11 @@
</redaction-watermark-selector>
<div class="due-date">
<mat-checkbox (change)="hasDueDate = !hasDueDate" [checked]="hasDueDate" class="filter-menu-checkbox" color="primary">
{{ 'add-dossier-dialog.form.due-date' | translate }}
</mat-checkbox>
<div class="iqser-input-group">
<mat-checkbox (change)="hasDueDate = !hasDueDate" [checked]="hasDueDate" color="primary">
{{ 'add-dossier-dialog.form.due-date' | translate }}
</mat-checkbox>
</div>
<div *ngIf="hasDueDate" class="iqser-input-group datepicker-wrapper">
<input [matDatepicker]="picker" formControlName="dueDate" placeholder="dd/mm/yy" />

View File

@ -40,8 +40,8 @@
<div *ngIf="!model.error" class="upload-download-progress">
<mat-progress-bar
[class.green]="model.completed"
[class.primary]="true"
[value]="model.progress"
color="primary"
mode="determinate"
></mat-progress-bar>
</div>

View File

@ -394,7 +394,7 @@ export class PermissionsService {
private _canEnableAutoAnalysis(file: File, dossier: Dossier): boolean {
return (
dossier.isActive && !!file.lastProcessed && file.excludedFromAutomaticAnalysis && this.isFileAssignee(file) && !file.isApproved
dossier.isActive && file.excludedFromAutomaticAnalysis && this.isFileAssignee(file) && !file.isApproved && !!file.lastProcessed
);
}

View File

@ -1,16 +1,7 @@
@use '@angular/material' as mat;
@use 'variables';
// TODO(v15): As of v15 mat.legacy-core no longer includes default typography styles.
// The following line adds:
// 1. Default typography styles for all components
// 2. Styles for typography hierarchy classes (e.g. .mat-headline-1)
// If you specify typography styles for the components you use elsewhere, you should delete this line.
// If you don't need the default component typographies but still want the hierarchy styles,
// you can delete this line and instead use:
// `@include mat.legacy-typography-hierarchy(mat.define-legacy-typography-config());`
@include mat.all-legacy-component-typographies();
@include mat.legacy-core();
@include mat.core();
$primary-palette: (
default: variables.$primary,
@ -52,7 +43,7 @@ $gn-next-primary: mat.define-palette($primary-palette, default, lighter, darker,
$gn-next-secondary: mat.define-palette($secondary-palette, default, lighter, darker, text);
$gn-next-warning: mat.define-palette($red-palette, default, lighter, darker, text);
$gn-next-mat-theme: mat.define-light-theme(
$light-theme: mat.define-light-theme(
(
color: (
primary: $gn-next-primary,
@ -62,28 +53,33 @@ $gn-next-mat-theme: mat.define-light-theme(
)
);
@include mat.all-legacy-component-themes($gn-next-mat-theme);
$custom-typography: mat.define-legacy-typography-config(
$font-family: 'Inter, sans-serif',
$dark-theme: mat.define-dark-theme(
(
color: (
primary: $gn-next-primary,
accent: $gn-next-secondary,
warn: $gn-next-warning,
),
)
);
@include mat.all-legacy-component-typographies($custom-typography);
@include mat.core-theme($light-theme);
@include mat.all-component-themes($light-theme);
.mat-flat-button {
min-width: unset !important;
$custom-typography: mat.define-typography-config(
$font-family: 'Inter, sans-serif',
$body-1: mat.define-typography-level(13px, 18px, 400),
$body-2: mat.define-typography-level(13px, 18px, 400),
$button: mat.define-typography-level(13px, 13px, 400),
);
@include mat.all-component-typographies($custom-typography);
* {
--mdc-theme-text-primary-on-background: var(--iqser-text);
--mdc-theme-surface: var(--iqser-popup-background);
}
.mat-progress-spinner circle,
.mat-spinner circle {
stroke: var(--iqser-primary);
}
.mat-progress-bar-fill::after {
background-color: var(--iqser-primary);
}
.mat-checkbox-indeterminate.mat-primary .mat-checkbox-background,
.mat-checkbox-checked.mat-primary .mat-checkbox-background {
background-color: var(--iqser-primary);
.dark {
@include mat.all-component-colors($dark-theme);
}

@ -1 +1 @@
Subproject commit 226ce2e73ad52810fc0035fd744c99c0e6866d6c
Subproject commit 47080bcd8b18ac0a01417d5e5b5a433e8b11f581