diff --git a/apps/red-ui/src/app/modules/admin/dialogs/add-edit-user-dialog/user-details/user-details.component.ts b/apps/red-ui/src/app/modules/admin/dialogs/add-edit-user-dialog/user-details/user-details.component.ts index 73b7148c1..57e28460d 100644 --- a/apps/red-ui/src/app/modules/admin/dialogs/add-edit-user-dialog/user-details/user-details.component.ts +++ b/apps/red-ui/src/app/modules/admin/dialogs/add-edit-user-dialog/user-details/user-details.component.ts @@ -14,7 +14,7 @@ import { firstValueFrom } from 'rxjs'; templateUrl: './user-details.component.html', styleUrls: ['./user-details.component.scss'], }) -export class UserDetailsComponent extends BaseFormComponent implements OnChanges, OnDestroy { +export class UserDetailsComponent extends BaseFormComponent implements OnChanges { readonly iconButtonTypes = IconButtonTypes; @Input() user: User; diff --git a/apps/red-ui/src/app/modules/admin/dialogs/file-attributes-configurations-dialog/file-attributes-configurations-dialog.component.ts b/apps/red-ui/src/app/modules/admin/dialogs/file-attributes-configurations-dialog/file-attributes-configurations-dialog.component.ts index 6e2e7f942..1d2d34bcb 100644 --- a/apps/red-ui/src/app/modules/admin/dialogs/file-attributes-configurations-dialog/file-attributes-configurations-dialog.component.ts +++ b/apps/red-ui/src/app/modules/admin/dialogs/file-attributes-configurations-dialog/file-attributes-configurations-dialog.component.ts @@ -1,4 +1,4 @@ -import { ChangeDetectionStrategy, Component, Inject, OnInit } from '@angular/core'; +import { ChangeDetectionStrategy, Component, Inject } from '@angular/core'; import { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog'; import { UntypedFormGroup, Validators } from '@angular/forms'; import { FileAttributeEncodingTypes, IFileAttributesConfig } from '@red/domain'; @@ -9,7 +9,7 @@ import { BaseDialogComponent } from '@iqser/common-ui'; templateUrl: './file-attributes-configurations-dialog.component.html', changeDetection: ChangeDetectionStrategy.OnPush, }) -export class FileAttributesConfigurationsDialogComponent extends BaseDialogComponent implements OnInit { +export class FileAttributesConfigurationsDialogComponent extends BaseDialogComponent { readonly encodingTypeOptions = Object.keys(FileAttributeEncodingTypes); readonly translations = fileAttributeEncodingTypesTranslations; readonly #configuration = this._data.config; diff --git a/apps/red-ui/src/app/modules/admin/screens/general-config/general-config-form/general-config-form.component.ts b/apps/red-ui/src/app/modules/admin/screens/general-config/general-config-form/general-config-form.component.ts index 60a0e18bb..2cc4d16bc 100644 --- a/apps/red-ui/src/app/modules/admin/screens/general-config/general-config-form/general-config-form.component.ts +++ b/apps/red-ui/src/app/modules/admin/screens/general-config/general-config-form/general-config-form.component.ts @@ -1,4 +1,4 @@ -import { Component, OnDestroy, OnInit } from '@angular/core'; +import { Component, OnInit } from '@angular/core'; import { BaseFormComponent, LoadingService } from '@iqser/common-ui'; import { GeneralSettingsService } from '@services/general-settings.service'; import { IGeneralConfiguration } from '@red/domain'; @@ -10,7 +10,7 @@ import { firstValueFrom } from 'rxjs'; selector: 'redaction-general-config-form', templateUrl: './general-config-form.component.html', }) -export class GeneralConfigFormComponent extends BaseFormComponent implements OnInit, OnDestroy { +export class GeneralConfigFormComponent extends BaseFormComponent implements OnInit { private _initialConfiguration: IGeneralConfiguration; constructor( diff --git a/apps/red-ui/src/app/modules/admin/screens/general-config/smtp-form/smtp-form.component.ts b/apps/red-ui/src/app/modules/admin/screens/general-config/smtp-form/smtp-form.component.ts index 02dbffb7d..08284bc17 100644 --- a/apps/red-ui/src/app/modules/admin/screens/general-config/smtp-form/smtp-form.component.ts +++ b/apps/red-ui/src/app/modules/admin/screens/general-config/smtp-form/smtp-form.component.ts @@ -11,7 +11,7 @@ import { firstValueFrom } from 'rxjs'; selector: 'redaction-smtp-form', templateUrl: './smtp-form.component.html', }) -export class SmtpFormComponent extends BaseFormComponent implements OnInit, OnDestroy { +export class SmtpFormComponent extends BaseFormComponent implements OnInit { readonly iconButtonTypes = IconButtonTypes; private _initialConfiguration: ISmtpConfiguration; diff --git a/apps/red-ui/src/app/modules/file-preview/components/comments/comments.component.ts b/apps/red-ui/src/app/modules/file-preview/components/comments/comments.component.ts index c239b296d..0e05e8124 100644 --- a/apps/red-ui/src/app/modules/file-preview/components/comments/comments.component.ts +++ b/apps/red-ui/src/app/modules/file-preview/components/comments/comments.component.ts @@ -3,15 +3,14 @@ import { Dossier, File, IComment } from '@red/domain'; import { AnnotationWrapper } from '@models/file/annotation.wrapper'; import { UserService } from '@services/user.service'; import { PermissionsService } from '@services/permissions.service'; -import { InputWithActionComponent, LoadingService, trackByFactory } from '@iqser/common-ui'; +import { InputWithActionComponent, LoadingService, trackByFactory, ContextComponent } from '@iqser/common-ui'; import { firstValueFrom, Observable } from 'rxjs'; import { CommentingService } from '../../services/commenting.service'; import { tap } from 'rxjs/operators'; import { FilePreviewStateService } from '../../services/file-preview-state.service'; import { ManualRedactionService } from '../../services/manual-redaction.service'; -import { ContextComponent } from '@utils/context.component'; -interface CommentsTemplate { +interface CommentsContext { dossier: Dossier; file: File; hiddenComments: boolean; @@ -23,7 +22,7 @@ interface CommentsTemplate { styleUrls: ['./comments.component.scss'], changeDetection: ChangeDetectionStrategy.OnPush, }) -export class CommentsComponent extends ContextComponent implements OnInit { +export class CommentsComponent extends ContextComponent implements OnInit { @Input() annotation: AnnotationWrapper; readonly trackBy = trackByFactory(); readonly file$: Observable; diff --git a/apps/red-ui/src/app/modules/file-preview/components/page-indicator/page-indicator.component.html b/apps/red-ui/src/app/modules/file-preview/components/page-indicator/page-indicator.component.html index 38c94bf0b..331337b1d 100644 --- a/apps/red-ui/src/app/modules/file-preview/components/page-indicator/page-indicator.component.html +++ b/apps/red-ui/src/app/modules/file-preview/components/page-indicator/page-indicator.component.html @@ -1,4 +1,5 @@
implements OnChanges, OnInit { @Input() active = false; @Input() showDottedIcon = false; @Input() number: number; @@ -61,10 +56,13 @@ export class PageIndicatorComponent extends AutoUnsubscribe implements OnDestroy } ngOnInit() { - this.addSubscription = this.pageRotationService.isRotated$(this.number).subscribe(value => { - this.isRotated = value; - this._changeDetectorRef.detectChanges(); - }); + const isRotated$ = this.pageRotationService.isRotated$(this.number).pipe( + tap(value => { + this.isRotated = value; + this._changeDetectorRef.detectChanges(); + }), + ); + super._initContext({ isRotated: isRotated$ }); } ngOnChanges() { diff --git a/apps/red-ui/src/app/modules/file-preview/dialogs/accept-recommendation-dialog/accept-recommendation-dialog.component.ts b/apps/red-ui/src/app/modules/file-preview/dialogs/accept-recommendation-dialog/accept-recommendation-dialog.component.ts index da06a178b..4740e83b9 100644 --- a/apps/red-ui/src/app/modules/file-preview/dialogs/accept-recommendation-dialog/accept-recommendation-dialog.component.ts +++ b/apps/red-ui/src/app/modules/file-preview/dialogs/accept-recommendation-dialog/accept-recommendation-dialog.component.ts @@ -55,7 +55,6 @@ export class AcceptRecommendationDialogComponent extends BaseDialogComponent imp } async ngOnInit() { - super.ngOnInit(); this.possibleDictionaries = await this._dictionaryService.getDictionariesOptions(this._dossier.dossierTemplateId, this._dossier.id); this.form.patchValue({ dictionary: this.possibleDictionaries.find(dict => dict.type === this.data.annotations[0].recommendationType).type, diff --git a/apps/red-ui/src/app/modules/file-preview/dialogs/change-legal-basis-dialog/change-legal-basis-dialog.component.ts b/apps/red-ui/src/app/modules/file-preview/dialogs/change-legal-basis-dialog/change-legal-basis-dialog.component.ts index c0ee5badc..d0256c6ee 100644 --- a/apps/red-ui/src/app/modules/file-preview/dialogs/change-legal-basis-dialog/change-legal-basis-dialog.component.ts +++ b/apps/red-ui/src/app/modules/file-preview/dialogs/change-legal-basis-dialog/change-legal-basis-dialog.component.ts @@ -33,7 +33,6 @@ export class ChangeLegalBasisDialogComponent extends BaseDialogComponent impleme } async ngOnInit() { - super.ngOnInit(); const data = await firstValueFrom(this._justificationsService.getForDossierTemplate(this._data.dossier.dossierTemplateId)); this.legalOptions = data diff --git a/apps/red-ui/src/app/modules/file-preview/dialogs/document-info-dialog/document-info-dialog.component.ts b/apps/red-ui/src/app/modules/file-preview/dialogs/document-info-dialog/document-info-dialog.component.ts index ff2a2aa0a..3846939ee 100644 --- a/apps/red-ui/src/app/modules/file-preview/dialogs/document-info-dialog/document-info-dialog.component.ts +++ b/apps/red-ui/src/app/modules/file-preview/dialogs/document-info-dialog/document-info-dialog.component.ts @@ -29,7 +29,6 @@ export class DocumentInfoDialogComponent extends BaseDialogComponent implements } async ngOnInit() { - super.ngOnInit(); this.attributes = ( await firstValueFrom(this._fileAttributesService.loadFileAttributesConfig(this._dossier.dossierTemplateId)) ).fileAttributeConfigs.filter(attr => attr.editable); diff --git a/apps/red-ui/src/app/modules/file-preview/dialogs/force-redaction-dialog/force-annotation-dialog.component.ts b/apps/red-ui/src/app/modules/file-preview/dialogs/force-redaction-dialog/force-annotation-dialog.component.ts index 0fa81e0de..b374c8943 100644 --- a/apps/red-ui/src/app/modules/file-preview/dialogs/force-redaction-dialog/force-annotation-dialog.component.ts +++ b/apps/red-ui/src/app/modules/file-preview/dialogs/force-redaction-dialog/force-annotation-dialog.component.ts @@ -40,7 +40,6 @@ export class ForceAnnotationDialogComponent extends BaseDialogComponent implemen } async ngOnInit() { - super.ngOnInit(); const data = await firstValueFrom(this._justificationsService.getForDossierTemplate(this._data.dossier.dossierTemplateId)); this.legalOptions = data.map(lbm => ({ diff --git a/apps/red-ui/src/app/modules/file-preview/dialogs/manual-redaction-dialog/manual-annotation-dialog.component.ts b/apps/red-ui/src/app/modules/file-preview/dialogs/manual-redaction-dialog/manual-annotation-dialog.component.ts index b3acd6846..b59fa2c38 100644 --- a/apps/red-ui/src/app/modules/file-preview/dialogs/manual-redaction-dialog/manual-annotation-dialog.component.ts +++ b/apps/red-ui/src/app/modules/file-preview/dialogs/manual-redaction-dialog/manual-annotation-dialog.component.ts @@ -72,7 +72,6 @@ export class ManualAnnotationDialogComponent extends BaseDialogComponent impleme } async ngOnInit() { - super.ngOnInit(); this.possibleDictionaries = await this._dictionaryService.getDictionariesOptions(this._dossier.dossierTemplateId, this._dossier.id); const data = await firstValueFrom(this._justificationsService.getForDossierTemplate(this._dossier.dossierTemplateId)); this.legalOptions = data.map(lbm => ({ diff --git a/apps/red-ui/src/app/modules/file-preview/dialogs/recategorize-image-dialog/recategorize-image-dialog.component.ts b/apps/red-ui/src/app/modules/file-preview/dialogs/recategorize-image-dialog/recategorize-image-dialog.component.ts index 1589d4fb0..fc5256af6 100644 --- a/apps/red-ui/src/app/modules/file-preview/dialogs/recategorize-image-dialog/recategorize-image-dialog.component.ts +++ b/apps/red-ui/src/app/modules/file-preview/dialogs/recategorize-image-dialog/recategorize-image-dialog.component.ts @@ -25,8 +25,6 @@ export class RecategorizeImageDialogComponent extends BaseDialogComponent implem } ngOnInit() { - super.ngOnInit(); - this.form = this._formBuilder.group({ type: [this.data.annotations[0].type, Validators.required], comment: [null], diff --git a/apps/red-ui/src/app/modules/file-preview/dialogs/resize-annotation-dialog/resize-annotation-dialog.component.ts b/apps/red-ui/src/app/modules/file-preview/dialogs/resize-annotation-dialog/resize-annotation-dialog.component.ts index 0ad30acaf..4596a3b48 100644 --- a/apps/red-ui/src/app/modules/file-preview/dialogs/resize-annotation-dialog/resize-annotation-dialog.component.ts +++ b/apps/red-ui/src/app/modules/file-preview/dialogs/resize-annotation-dialog/resize-annotation-dialog.component.ts @@ -23,8 +23,6 @@ export class ResizeAnnotationDialogComponent extends BaseDialogComponent impleme } ngOnInit() { - super.ngOnInit(); - const controlsConfig = { comment: [null] }; if (this._data.annotation.isModifyDictionary) { diff --git a/apps/red-ui/src/app/modules/shared-dossiers/dialogs/edit-dossier-dialog/edit-dossier-team/edit-dossier-team.component.ts b/apps/red-ui/src/app/modules/shared-dossiers/dialogs/edit-dossier-dialog/edit-dossier-team/edit-dossier-team.component.ts index 977a431ff..138b56f2c 100644 --- a/apps/red-ui/src/app/modules/shared-dossiers/dialogs/edit-dossier-dialog/edit-dossier-team/edit-dossier-team.component.ts +++ b/apps/red-ui/src/app/modules/shared-dossiers/dialogs/edit-dossier-dialog/edit-dossier-team/edit-dossier-team.component.ts @@ -2,7 +2,6 @@ import { ChangeDetectionStrategy, Component, Input, OnDestroy, OnInit } from '@a import { UserService } from '@services/user.service'; import { UntypedFormBuilder, UntypedFormGroup, Validators } from '@angular/forms'; import { Dossier, IDossierRequest } from '@red/domain'; -import { AutoUnsubscribe } from '@iqser/common-ui'; import { EditDossierSaveResult, EditDossierSectionInterface } from '../edit-dossier-section.interface'; import { BehaviorSubject, firstValueFrom } from 'rxjs'; import { PermissionsService } from '@services/permissions.service'; @@ -15,7 +14,7 @@ import { compareLists } from '@utils/functions'; styleUrls: ['./edit-dossier-team.component.scss'], changeDetection: ChangeDetectionStrategy.OnPush, }) -export class EditDossierTeamComponent extends AutoUnsubscribe implements EditDossierSectionInterface, OnInit, OnDestroy { +export class EditDossierTeamComponent implements EditDossierSectionInterface, OnInit { form: UntypedFormGroup; searchQuery = ''; @@ -31,9 +30,7 @@ export class EditDossierTeamComponent extends AutoUnsubscribe implements EditDos private readonly _formBuilder: UntypedFormBuilder, private readonly _dossiersService: DossiersService, private readonly _permissionsService: PermissionsService, - ) { - super(); - } + ) {} get selectedOwnerId(): string { return this.form.get('owner').value; diff --git a/apps/red-ui/src/app/modules/shared/components/initials-avatar/initials-avatar.component.ts b/apps/red-ui/src/app/modules/shared/components/initials-avatar/initials-avatar.component.ts index 3d79a2c10..6c5ca2331 100644 --- a/apps/red-ui/src/app/modules/shared/components/initials-avatar/initials-avatar.component.ts +++ b/apps/red-ui/src/app/modules/shared/components/initials-avatar/initials-avatar.component.ts @@ -1,6 +1,5 @@ -import { ChangeDetectionStrategy, Component, Input, OnChanges, OnDestroy, OnInit } from '@angular/core'; +import { ChangeDetectionStrategy, Component, Input, OnChanges, OnInit } from '@angular/core'; import { UserService } from '@services/user.service'; -import { AutoUnsubscribe } from '@iqser/common-ui'; import { User } from '@red/domain'; import { TranslateService } from '@ngx-translate/core'; import { NamePipeOptions } from '@shared/pipes/name.pipe'; @@ -11,7 +10,7 @@ import { NamePipeOptions } from '@shared/pipes/name.pipe'; styleUrls: ['./initials-avatar.component.scss'], changeDetection: ChangeDetectionStrategy.OnPush, }) -export class InitialsAvatarComponent extends AutoUnsubscribe implements OnInit, OnChanges, OnDestroy { +export class InitialsAvatarComponent implements OnInit, OnChanges { @Input() color = 'lightgray'; @Input() size: 'small' | 'large' = 'small'; @Input() withName = false; @@ -22,9 +21,7 @@ export class InitialsAvatarComponent extends AutoUnsubscribe implements OnInit, namePipeOptions: NamePipeOptions; - constructor(private readonly _userService: UserService, private readonly _translateService: TranslateService) { - super(); - } + constructor(private readonly _userService: UserService, private readonly _translateService: TranslateService) {} _user: User; diff --git a/apps/red-ui/src/app/utils/context.component.ts b/apps/red-ui/src/app/utils/context.component.ts deleted file mode 100644 index 4adf56774..000000000 --- a/apps/red-ui/src/app/utils/context.component.ts +++ /dev/null @@ -1,17 +0,0 @@ -import { combineLatest, Observable, of } from 'rxjs'; -import { map, startWith } from 'rxjs/operators'; -import { ValuesOf } from '@iqser/common-ui'; - -export class ContextComponent { - componentContext$: Observable | null = of({} as T); - - protected _initContext(context: Record>>): void { - const observables = Object.values(context).map(obs => obs.pipe(startWith(null))); - const keys = Object.keys(context); - this.componentContext$ = combineLatest(observables).pipe(map(values => this._mapKeysToObs(keys, values))); - } - - protected _mapKeysToObs(keys: string[], observables: ValuesOf[]): T { - return keys.reduce((acc, key, index) => ({ ...acc, [key]: observables[index] }), {} as T); - } -} diff --git a/libs/common-ui b/libs/common-ui index 7875f99a0..767837c0d 160000 --- a/libs/common-ui +++ b/libs/common-ui @@ -1 +1 @@ -Subproject commit 7875f99a074704eaa3252258d7efd83c39a355b7 +Subproject commit 767837c0deb93c475afe30150b3c169726168277