RED-9321: deleted shared-dossiers module.

This commit is contained in:
Nicoleta Panaghiu 2024-06-14 15:11:58 +03:00 committed by Dan Percic
parent 0e9dcc2b1f
commit ae01864e0d
39 changed files with 298 additions and 177 deletions

View File

@ -24,13 +24,14 @@ import {
ChevronButtonComponent,
CircleButtonComponent,
EmptyStateComponent,
HelpButtonComponent,
HelpModeComponent,
HelpModeKey,
HiddenActionDirective,
IconButtonComponent,
InputWithActionComponent,
IqserAllowDirective,
IqserDenyDirective,
IqserHelpModeModule,
IqserListingModule,
IqserLoadingModule,
IqserTranslateModule,
@ -69,6 +70,8 @@ import { AppComponent } from './app.component';
import { PdfViewerModule } from './modules/pdf-viewer/pdf-viewer.module';
import { ACTIVE_DOSSIERS_SERVICE, ARCHIVED_DOSSIERS_SERVICE } from './tokens';
import { AuthErrorComponent } from '@components/auth-error/auth-error.component';
import { provideCustomDateFormatter } from '@shared/custom-date-formatting.provider';
import { provideHelpMode } from '@common-ui/help-mode';
export const appModuleFactory = (config: AppConfig) => {
@NgModule({
@ -104,7 +107,6 @@ export const appModuleFactory = (config: AppConfig) => {
existingRoleGuard: RedRoleGuard,
}),
CachingModule.forRoot(UI_CACHES),
IqserHelpModeModule.forRoot(helpModeKeys as HelpModeKey[]),
PdfViewerModule,
ToastrModule.forRoot({
closeButton: true,
@ -187,6 +189,8 @@ export const appModuleFactory = (config: AppConfig) => {
MatDividerModule,
ChevronButtonComponent,
InitialsAvatarComponent,
HelpModeComponent,
HelpButtonComponent,
],
providers: [
{
@ -250,6 +254,8 @@ export const appModuleFactory = (config: AppConfig) => {
},
BaseDatePipe,
DatePipe,
...provideCustomDateFormatter(),
...provideHelpMode(helpModeKeys as HelpModeKey[]),
],
bootstrap: [AppComponent],
})

View File

@ -4,9 +4,9 @@ import {
BaseDialogComponent,
CircleButtonComponent,
getConfig,
HelpButtonComponent,
IconButtonComponent,
IconButtonTypes,
IqserHelpModeModule,
} from '@iqser/common-ui';
import { AddEditEntityComponent } from '@shared/components/add-edit-entity/add-edit-entity.component';
import { TranslateModule } from '@ngx-translate/core';
@ -20,7 +20,7 @@ interface DialogData {
templateUrl: './add-entity-dialog.component.html',
styleUrls: ['./add-entity-dialog.component.scss'],
standalone: true,
imports: [AddEditEntityComponent, TranslateModule, IconButtonComponent, IqserHelpModeModule, NgIf, CircleButtonComponent],
imports: [AddEditEntityComponent, TranslateModule, IconButtonComponent, NgIf, CircleButtonComponent, HelpButtonComponent],
})
export class AddEntityDialogComponent extends BaseDialogComponent {
@ViewChild(AddEditEntityComponent, { static: true }) private readonly _addEditEntityComponent: AddEditEntityComponent;

View File

@ -25,9 +25,10 @@ import { TranslateModule } from '@ngx-translate/core';
import { PaginationComponent } from '@common-ui/pagination';
import { MatFormField, MatSuffix } from '@angular/material/form-field';
import { MatOption, MatSelect, MatSelectTrigger } from '@angular/material/select';
import { AsyncPipe, DatePipe, NgForOf, NgIf } from '@angular/common';
import { AsyncPipe, NgForOf, NgIf } from '@angular/common';
import { MatDatepickerModule } from '@angular/material/datepicker';
import { MatIcon } from '@angular/material/icon';
import { DatePipe } from '@shared/pipes/date.pipe';
const PAGE_SIZE = 50;
@ -63,7 +64,7 @@ export class AuditScreenComponent extends ListingComponent<Audit> implements OnI
readonly ALL_CATEGORIES = 'allCategories';
readonly ALL_USERS = _('audit-screen.all-users');
readonly translations = auditCategoriesTranslations;
readonly form: UntypedFormGroup = this._getForm();
readonly form: UntypedFormGroup = this.#getForm();
readonly routerHistoryService = inject(RouterHistoryService);
readonly permissionsService = inject(IqserPermissionsService);
readonly roles = Roles;
@ -96,17 +97,17 @@ export class AuditScreenComponent extends ListingComponent<Audit> implements OnI
}
async pageChanged(page: number) {
await this._fetchData(page);
await this.#fetchData(page);
}
async ngOnInit() {
this.sortingService.setSortingOption({ column: 'recordDate', order: 'desc' });
await this._fetchData();
await this.#fetchData();
}
async filterChange() {
if (!this._updateDateFilters(this.form.value)) {
await this._fetchData();
if (!this.#updateDateFilters(this.form.value)) {
await this.#fetchData();
}
}
@ -114,7 +115,7 @@ export class AuditScreenComponent extends ListingComponent<Audit> implements OnI
this._dialogService.openDialog('auditInfo', { auditEntry: log });
}
private _getForm(): UntypedFormGroup {
#getForm(): UntypedFormGroup {
return this._formBuilder.group({
category: [this.ALL_CATEGORIES],
userId: [this.ALL_USERS],
@ -123,7 +124,7 @@ export class AuditScreenComponent extends ListingComponent<Audit> implements OnI
});
}
private _updateDateFilters(value): boolean {
#updateDateFilters(value): boolean {
if (applyIntervalConstraints(value, this._previousFrom, this._previousTo, this.form, 'from', 'to')) {
return true;
}
@ -133,7 +134,7 @@ export class AuditScreenComponent extends ListingComponent<Audit> implements OnI
return false;
}
private async _fetchData(page?: number) {
async #fetchData(page?: number) {
this._loadingService.start();
const promises = [];
const category = this.form.get('category').value;

View File

@ -5,11 +5,12 @@ import { DossierTemplateStatsService } from '@services/entity-services/dossier-t
import { switchMap } from 'rxjs/operators';
import { dossierTemplateStatusTranslations } from '@translations/dossier-template-status-translations';
import { MatTooltip } from '@angular/material/tooltip';
import { AsyncPipe, DatePipe, NgIf } from '@angular/common';
import { AsyncPipe, NgIf } from '@angular/common';
import { MatIcon } from '@angular/material/icon';
import { TranslateModule } from '@ngx-translate/core';
import { DossierTemplateActionsComponent } from '../../../shared/components/dossier-template-actions/dossier-template-actions.component';
import { InitialsAvatarComponent } from '@common-ui/users';
import { DatePipe } from '@shared/pipes/date.pipe';
@Component({
selector: 'redaction-table-item [dossierTemplate]',

View File

@ -1,6 +1,6 @@
import { ChangeDetectionStrategy, Component, HostListener, ViewChild } from '@angular/core';
import { ActivatedRoute } from '@angular/router';
import { getConfig, HasScrollbarDirective, IconButtonComponent, IconButtonTypes, IqserHelpModeModule } from '@iqser/common-ui';
import { getConfig, HasScrollbarDirective, HelpButtonComponent, IconButtonComponent, IconButtonTypes } from '@iqser/common-ui';
import { IqserEventTarget } from '@iqser/common-ui/lib/utils';
import { Dictionary, DOSSIER_TEMPLATE_ID, ENTITY_TYPE } from '@red/domain';
import { DictionariesMapService } from '@services/entity-services/dictionaries-map.service';
@ -25,8 +25,8 @@ import { TranslateModule } from '@ngx-translate/core';
TranslateModule,
AsyncPipe,
IconButtonComponent,
IqserHelpModeModule,
AddEditEntityComponent,
HelpButtonComponent,
],
})
export class EntityInfoComponent {

View File

@ -3,7 +3,7 @@ import { ReactiveFormsModule, Validators } from '@angular/forms';
import { FileAttributeConfigTypes, IFileAttributeConfig } from '@red/domain';
import { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog';
import { fileAttributeTypesTranslations } from '@translations/file-attribute-types-translations';
import { BaseDialogComponent, CircleButtonComponent, getConfig, IconButtonComponent, IqserHelpModeModule } from '@iqser/common-ui';
import { BaseDialogComponent, CircleButtonComponent, getConfig, HelpButtonComponent, IconButtonComponent } from '@iqser/common-ui';
import { TranslateModule } from '@ngx-translate/core';
import { MatFormFieldModule } from '@angular/material/form-field';
import { MatSelectModule } from '@angular/material/select';
@ -34,8 +34,8 @@ export interface AddEditFileAttributeDialogData {
MatTooltipModule,
IconButtonComponent,
CircleButtonComponent,
IqserHelpModeModule,
NgIf,
HelpButtonComponent,
],
})
export class AddEditFileAttributeDialogComponent extends BaseDialogComponent {

View File

@ -4,10 +4,11 @@ import { type DossierTemplate, type DossierTemplateStats } from '@red/domain';
import { DossierTemplatesService } from '@services/dossier-templates/dossier-templates.service';
import { DossierTemplateStatsService } from '@services/entity-services/dossier-template-stats.service';
import { dossierTemplateStatusTranslations } from '@translations/dossier-template-status-translations';
import { AsyncPipe, DatePipe, NgIf } from '@angular/common';
import { AsyncPipe, NgIf } from '@angular/common';
import { MatIcon } from '@angular/material/icon';
import { TranslateModule } from '@ngx-translate/core';
import { InitialsAvatarComponent } from '@common-ui/users';
import { DatePipe } from '@shared/pipes/date.pipe';
interface Context {
readonly dossierTemplate: DossierTemplate;

View File

@ -6,11 +6,12 @@ import { LicenseService } from '@services/license.service';
import { RouterHistoryService } from '@services/router-history.service';
import { Roles } from '@users/roles';
import { TranslateModule } from '@ngx-translate/core';
import { AsyncPipe, DatePipe, NgIf } from '@angular/common';
import { AsyncPipe, NgIf } from '@angular/common';
import { LicenseSelectComponent } from '../components/license-select/license-select.component';
import { LicensePageUsageComponent } from '../components/license-page-usage/license-page-usage.component';
import { LicenseAnalysisCapacityUsageComponent } from '../components/license-analysis-capacity-usage/license-analysis-capacity-usage.component';
import { LicenseRetentionCapacityComponent } from '../components/license-retention-capacity-usage/license-retention-capacity.component';
import { DatePipe } from '@shared/pipes/date.pipe';
@Component({
templateUrl: './license-screen.component.html',

View File

@ -24,7 +24,8 @@ import { AdminDialogService } from '../../../services/admin-dialog.service';
import { TranslateModule } from '@ngx-translate/core';
import { RouterLink } from '@angular/router';
import { MatSlideToggle } from '@angular/material/slide-toggle';
import { AsyncPipe, DatePipe } from '@angular/common';
import { AsyncPipe } from '@angular/common';
import { DatePipe } from '@shared/pipes/date.pipe';
@Component({
templateUrl: './watermarks-listing-screen.component.html',
@ -39,9 +40,9 @@ import { AsyncPipe, DatePipe } from '@angular/common';
RouterLink,
MatSlideToggle,
InitialsAvatarComponent,
DatePipe,
CircleButtonComponent,
AsyncPipe,
DatePipe,
],
})
export class WatermarksListingScreenComponent extends ListingComponent<Watermark> implements OnInit {

View File

@ -2,7 +2,7 @@ import { NgForOf, NgIf } from '@angular/common';
import { Component, HostBinding, Input, OnInit } from '@angular/core';
import { ActivatedRoute, RouterLink, RouterLinkActive } from '@angular/router';
import { marker as _ } from '@biesbjerg/ngx-translate-extract-marker';
import { getConfig, IqserHelpModeModule, IqserPermissionsService, isIqserDevMode } from '@iqser/common-ui';
import { getConfig, IqserPermissionsService, isIqserDevMode } from '@iqser/common-ui';
import { SideNavComponent } from '@iqser/common-ui/lib/shared';
import { getCurrentUser } from '@iqser/common-ui/lib/users';
import { TranslateModule } from '@ngx-translate/core';
@ -22,7 +22,7 @@ interface NavItem {
templateUrl: './admin-side-nav.component.html',
styleUrls: ['./admin-side-nav.component.scss'],
standalone: true,
imports: [TranslateModule, NgIf, IqserHelpModeModule, RouterLink, RouterLinkActive, NgForOf, SideNavComponent],
imports: [TranslateModule, NgIf, RouterLink, RouterLinkActive, NgForOf, SideNavComponent],
})
export class AdminSideNavComponent implements OnInit {
readonly isIqserDevMode = isIqserDevMode();

View File

@ -1,7 +1,7 @@
import { NgIf } from '@angular/common';
import { Component, Input, OnInit } from '@angular/core';
import { ActivatedRoute, Router, RouterLink } from '@angular/router';
import { CircleButtonComponent, IqserHelpModeModule, LoadingService } from '@iqser/common-ui';
import { CircleButtonComponent, LoadingService } from '@iqser/common-ui';
import { getCurrentUser } from '@iqser/common-ui/lib/users';
import { TranslateModule } from '@ngx-translate/core';
import { DOSSIER_TEMPLATE_ID, DossierTemplate, type User } from '@red/domain';
@ -14,7 +14,7 @@ import { AdminDialogService } from '../../../services/admin-dialog.service';
templateUrl: './dossier-template-actions.component.html',
styleUrls: ['./dossier-template-actions.component.scss'],
standalone: true,
imports: [NgIf, IqserHelpModeModule, CircleButtonComponent, TranslateModule, RouterLink],
imports: [NgIf, CircleButtonComponent, TranslateModule, RouterLink],
})
export class DossierTemplateActionsComponent implements OnInit {
@Input() dossierTemplateId: string;

View File

@ -7,7 +7,8 @@ import { DossierNameColumnComponent } from '@shared/components/dossier-name-colu
import { InitialsAvatarComponent } from '@common-ui/users';
import { DossierStateComponent } from '@shared/components/dossier-state/dossier-state.component';
import { DossiersListingActionsComponent } from '../../../shared-dossiers/components/dossiers-listing-actions/dossiers-listing-actions.component';
import { AsyncPipe, DatePipe } from '@angular/common';
import { AsyncPipe } from '@angular/common';
import { DatePipe } from '@shared/pipes/date.pipe';
@Component({
selector: 'redaction-table-item [dossier]',

View File

@ -7,8 +7,9 @@ import { DossierStatsService } from '@services/dossiers/dossier-stats.service';
import { DossiersDialogService } from '../../../shared-dossiers/services/dossiers-dialog.service';
import { getConfig } from '@iqser/common-ui';
import { MatIcon } from '@angular/material/icon';
import { AsyncPipe, DatePipe, DecimalPipe, NgForOf, NgIf } from '@angular/common';
import { AsyncPipe, DecimalPipe, NgForOf, NgIf } from '@angular/common';
import { TranslateModule } from '@ngx-translate/core';
import { DatePipe } from '@shared/pipes/date.pipe';
@Component({
selector: 'redaction-dossier-details-stats',

View File

@ -19,10 +19,11 @@ import { NavigationEnd, Router } from '@angular/router';
import { filter, map, tap } from 'rxjs/operators';
import { ConfigService } from '../../config.service';
import { Debounce } from '@iqser/common-ui/lib/utils';
import { AsyncPipe, DatePipe, NgClass, NgIf, NgTemplateOutlet } from '@angular/common';
import { AsyncPipe, NgClass, NgIf, NgTemplateOutlet } from '@angular/common';
import { MatTooltipModule } from '@angular/material/tooltip';
import { MatIconModule } from '@angular/material/icon';
import { TranslateModule } from '@ngx-translate/core';
import { DatePipe } from '@shared/pipes/date.pipe';
@Component({
selector: 'redaction-file-attribute',

View File

@ -3,7 +3,7 @@ import { DefaultColorType, Dossier, DossierStats } from '@red/domain';
import { DefaultColorsService } from '@services/entity-services/default-colors.service';
import { BehaviorSubject, Observable, switchMap } from 'rxjs';
import { AnnotationIconComponent } from '@shared/components/annotation-icon/annotation-icon.component';
import { AsyncPipe } from '@angular/common';
import { AsyncPipe, NgIf } from '@angular/common';
import { TranslateModule } from '@ngx-translate/core';
@Component({
@ -12,7 +12,7 @@ import { TranslateModule } from '@ngx-translate/core';
styleUrls: ['./dossier-workload-column.component.scss'],
changeDetection: ChangeDetectionStrategy.OnPush,
standalone: true,
imports: [AnnotationIconComponent, AsyncPipe, TranslateModule],
imports: [AnnotationIconComponent, AsyncPipe, TranslateModule, NgIf],
})
export class DossierWorkloadColumnComponent implements OnChanges {
readonly #dossierTemplateId$ = new BehaviorSubject<string>(null);

View File

@ -8,10 +8,11 @@ import { CommentsApiService } from '@services/comments-api.service';
import { PermissionsService } from '@services/permissions.service';
import { NGXLogger } from 'ngx-logger';
import { FilePreviewStateService } from '../../services/file-preview-state.service';
import { DatePipe, NgForOf, NgIf } from '@angular/common';
import { NgForOf, NgIf } from '@angular/common';
import { MatTooltip } from '@angular/material/tooltip';
import { NamePipe } from '@common-ui/users/name.pipe';
import { TranslateModule } from '@ngx-translate/core';
import { DatePipe } from '@shared/pipes/date.pipe';
@Component({
selector: 'redaction-comments',

View File

@ -10,9 +10,10 @@ import { ContextComponent } from '@iqser/common-ui/lib/utils';
import { toSignal } from '@angular/core/rxjs-interop';
import { setLocalStorageDataByFileId } from '@utils/local-storage';
import { CircleButtonComponent, HasScrollbarDirective } from '@iqser/common-ui';
import { DatePipe, NgForOf, NgIf } from '@angular/common';
import { NgForOf, NgIf } from '@angular/common';
import { TranslateModule } from '@ngx-translate/core';
import { MatIcon } from '@angular/material/icon';
import { DatePipe } from '@shared/pipes/date.pipe';
interface FileAttribute {
label: string;

View File

@ -3,11 +3,12 @@ import { FormControl, FormGroup, ReactiveFormsModule } from '@angular/forms';
import {
CircleButtonComponent,
DetailsRadioOption,
HasScrollbarDirective,
HelpButtonComponent,
IconButtonComponent,
IconButtonTypes,
IqserDenyDirective,
IqserDialogComponent,
IqserHelpModeModule,
} from '@iqser/common-ui';
import { Dictionary, SuperTypes } from '@red/domain';
import { ActiveDossiersService } from '@services/dossiers/active-dossiers.service';
@ -28,6 +29,7 @@ import { MatFormField } from '@angular/material/form-field';
import { NgForOf, NgIf } from '@angular/common';
import { MatOption, MatSelect, MatSelectTrigger } from '@angular/material/select';
import { MatTooltip } from '@angular/material/tooltip';
import { MatDialogClose } from '@angular/material/dialog';
interface TypeSelectOptions {
type: string;
@ -51,9 +53,11 @@ interface TypeSelectOptions {
NgForOf,
MatTooltip,
IconButtonComponent,
IqserHelpModeModule,
IqserDenyDirective,
CircleButtonComponent,
HelpButtonComponent,
MatDialogClose,
HasScrollbarDirective,
],
})
export class EditRedactionDialogComponent

View File

@ -6,9 +6,9 @@ import {
CircleButtonComponent,
getConfig,
HasScrollbarDirective,
HelpButtonComponent,
IconButtonComponent,
IqserDenyDirective,
IqserHelpModeModule,
} from '@iqser/common-ui';
import { JustificationsService } from '@services/entity-services/justifications.service';
import { Dossier, ILegalBasisChangeRequest } from '@red/domain';
@ -51,10 +51,10 @@ const DOCUMINE_LEGAL_BASIS = 'n-a.';
HasScrollbarDirective,
TranslateModule,
IconButtonComponent,
IqserHelpModeModule,
IqserDenyDirective,
CircleButtonComponent,
NgForOf,
HelpButtonComponent,
],
})
export class ForceAnnotationDialogComponent extends BaseDialogComponent implements OnInit {

View File

@ -7,9 +7,9 @@ import {
CircleButtonComponent,
DetailsRadioComponent,
DetailsRadioOption,
HelpButtonComponent,
IconButtonComponent,
IqserDenyDirective,
IqserHelpModeModule,
} from '@iqser/common-ui';
import { EarmarksService } from '@services/files/earmarks.service';
import { firstValueFrom } from 'rxjs';
@ -42,10 +42,10 @@ export interface HighlightActionData {
MatCheckbox,
TranslateModule,
IconButtonComponent,
IqserHelpModeModule,
IqserDenyDirective,
CircleButtonComponent,
MatDialogClose,
HelpButtonComponent,
],
})
export class HighlightActionDialogComponent extends BaseDialogComponent {

View File

@ -5,11 +5,11 @@ import {
DetailsRadioComponent,
DetailsRadioOption,
HasScrollbarDirective,
HelpButtonComponent,
IconButtonComponent,
IconButtonTypes,
IqserDenyDirective,
IqserDialogComponent,
IqserHelpModeModule,
} from '@iqser/common-ui';
import { getRemoveRedactionOptions, RemoveRedactionOption, RemoveRedactionOptions } from '../../utils/dialog-options';
import { RemoveRedactionData, RemoveRedactionResult } from '../../utils/dialog-types';
@ -39,11 +39,11 @@ import { MatDialogClose } from '@angular/material/dialog';
SelectedAnnotationsTableComponent,
DetailsRadioComponent,
IconButtonComponent,
IqserHelpModeModule,
CircleButtonComponent,
HasScrollbarDirective,
MatDialogClose,
IqserDenyDirective,
HelpButtonComponent,
],
})
export class RemoveRedactionDialogComponent extends IqserDialogComponent<

View File

@ -1,5 +1,5 @@
import { ChangeDetectionStrategy, Component, Input } from '@angular/core';
import { DatePipe } from '@angular/common';
import { DatePipe } from '@shared/pipes/date.pipe';
@Component({
selector: 'redaction-date-column [date]',

View File

@ -1,7 +1,14 @@
import { Component } from '@angular/core';
import { FormBuilder, Validators } from '@angular/forms';
import { FormBuilder, ReactiveFormsModule, Validators } from '@angular/forms';
import { marker as _ } from '@biesbjerg/ngx-translate-extract-marker';
import { IconButtonTypes, IqserDialogComponent, LoadingService, Toaster } from '@iqser/common-ui';
import {
CircleButtonComponent,
IconButtonComponent,
IconButtonTypes,
IqserDialogComponent,
LoadingService,
Toaster,
} from '@iqser/common-ui';
import { getCurrentUser } from '@iqser/common-ui/lib/users';
import { File, User, WorkflowFileStatus, WorkflowFileStatuses } from '@red/domain';
import { ActiveDossiersService } from '@services/dossiers/active-dossiers.service';
@ -9,6 +16,12 @@ import { FilesService } from '@services/files/files.service';
import { PermissionsService } from '@services/permissions.service';
import { UserService } from '@users/user.service';
import { moveElementInArray } from '@utils/functions';
import { TranslateModule } from '@ngx-translate/core';
import { MatFormField } from '@angular/material/form-field';
import { MatOption, MatSelect } from '@angular/material/select';
import { NgForOf } from '@angular/common';
import { NamePipe } from '@common-ui/users/name.pipe';
import { MatDialogClose } from '@angular/material/dialog';
class DialogData {
targetStatus: WorkflowFileStatus;
@ -20,6 +33,19 @@ class DialogData {
@Component({
templateUrl: './assign-reviewer-approver-dialog.component.html',
standalone: true,
imports: [
TranslateModule,
ReactiveFormsModule,
MatFormField,
MatSelect,
MatOption,
NgForOf,
NamePipe,
IconButtonComponent,
MatDialogClose,
CircleButtonComponent,
],
})
export class AssignReviewerApproverDialogComponent extends IqserDialogComponent<
AssignReviewerApproverDialogComponent,

View File

@ -1,18 +1,41 @@
import { Component, ElementRef, Input, OnInit, QueryList, ViewChildren } from '@angular/core';
import { UntypedFormBuilder, UntypedFormGroup } from '@angular/forms';
import { ReactiveFormsModule, UntypedFormBuilder, UntypedFormGroup } from '@angular/forms';
import { marker as _ } from '@biesbjerg/ngx-translate-extract-marker';
import { IconButtonTypes, LoadingService, Toaster } from '@iqser/common-ui';
import {
CircleButtonComponent,
DynamicInputComponent,
EmptyStateComponent,
IconButtonComponent,
IconButtonTypes,
LoadingService,
Toaster,
} from '@iqser/common-ui';
import { Dossier, DossierAttributeConfigType, DossierAttributeConfigTypes, DossierAttributeWithValue } from '@red/domain';
import { DossierAttributesService } from '@services/entity-services/dossier-attributes.service';
import { PermissionsService } from '@services/permissions.service';
import dayjs from 'dayjs';
import { firstValueFrom } from 'rxjs';
import { EditDossierSaveResult, EditDossierSectionInterface } from '../edit-dossier-section.interface';
import { NgForOf, NgIf } from '@angular/common';
import { TranslateModule } from '@ngx-translate/core';
import { SnakeCasePipe } from '@common-ui/pipes/snake-case.pipe';
@Component({
selector: 'redaction-edit-dossier-attributes',
templateUrl: './edit-dossier-attributes.component.html',
styleUrls: ['./edit-dossier-attributes.component.scss'],
standalone: true,
imports: [
ReactiveFormsModule,
NgIf,
TranslateModule,
EmptyStateComponent,
DynamicInputComponent,
NgForOf,
IconButtonComponent,
SnakeCasePipe,
CircleButtonComponent,
],
})
export class EditDossierAttributesComponent implements EditDossierSectionInterface, OnInit {
@ViewChildren('fileInput') private _fileInputs: QueryList<ElementRef>;

View File

@ -1,5 +1,5 @@
import { Component, Input, OnInit, ViewChild } from '@angular/core';
import { IqserDialog, LoadingService } from '@iqser/common-ui';
import { CircleButtonComponent, IconButtonComponent, IqserDialog, LoadingService } from '@iqser/common-ui';
import { List } from '@iqser/common-ui/lib/utils';
import { Dictionary, DictionaryEntryType, DictionaryEntryTypes, Dossier } from '@red/domain';
import { DictionaryService } from '@services/entity-services/dictionary.service';
@ -8,11 +8,28 @@ import { DictionaryManagerComponent } from '@shared/components/dictionary-manage
import { firstValueFrom } from 'rxjs';
import { EditDossierSaveResult } from '../edit-dossier-section.interface';
import { EditDictionaryDialogComponent } from '../../edit-dictionary-dialog/edit-dictionary-dialog.component';
import { NgForOf, NgIf } from '@angular/common';
import { AnnotationIconComponent } from '@shared/components/annotation-icon/annotation-icon.component';
import { MatTooltip } from '@angular/material/tooltip';
import { MatIcon } from '@angular/material/icon';
import { TranslateModule } from '@ngx-translate/core';
@Component({
selector: 'redaction-edit-dossier-dictionary',
templateUrl: './edit-dossier-dictionary.component.html',
styleUrls: ['./edit-dossier-dictionary.component.scss'],
standalone: true,
imports: [
NgForOf,
AnnotationIconComponent,
MatTooltip,
MatIcon,
CircleButtonComponent,
NgIf,
TranslateModule,
IconButtonComponent,
DictionaryManagerComponent,
],
})
export class EditDossierDictionaryComponent implements OnInit {
@Input() dossier: Dossier;

View File

@ -1,6 +1,6 @@
import { Component, Input, OnInit } from '@angular/core';
import { Dossier, DownloadFileType, IReportTemplate } from '@red/domain';
import { FormBuilder, FormGroup } from '@angular/forms';
import { FormBuilder, FormGroup, ReactiveFormsModule } from '@angular/forms';
import { EditDossierSaveResult, EditDossierSectionInterface } from '../edit-dossier-section.interface';
import { downloadTypesTranslations } from '@translations/download-types-translations';
import { ReportTemplateService } from '@services/report-template.service';
@ -10,6 +10,11 @@ import { DossiersService } from '@services/dossiers/dossiers.service';
import { WatermarksMapService } from '@services/entity-services/watermarks-map.service';
import { ContextComponent, shareLast } from '@iqser/common-ui/lib/utils';
import { Roles } from '@users/roles';
import { AsyncPipe, NgIf } from '@angular/common';
import { SelectComponent } from '@shared/components/select/select.component';
import { TranslateModule } from '@ngx-translate/core';
import { WatermarkSelectorComponent } from '@shared/components/dossier-watermark-selector/watermark-selector.component';
import { IqserAllowDirective, IqserDenyDirective } from '@iqser/common-ui';
interface EditDossierDownloadPackageContext {
existsWatermarks: boolean;
@ -19,6 +24,17 @@ interface EditDossierDownloadPackageContext {
selector: 'redaction-edit-dossier-download-package',
templateUrl: './edit-dossier-download-package.component.html',
styleUrls: ['./edit-dossier-download-package.component.scss'],
standalone: true,
imports: [
AsyncPipe,
NgIf,
SelectComponent,
ReactiveFormsModule,
TranslateModule,
WatermarkSelectorComponent,
IqserAllowDirective,
IqserDenyDirective,
],
})
export class EditDossierDownloadPackageComponent
extends ContextComponent<EditDossierDownloadPackageContext>

View File

@ -4,7 +4,16 @@ import { Dossier } from '@red/domain';
import { EditDossierGeneralInfoComponent } from './general-info/edit-dossier-general-info.component';
import { EditDossierDownloadPackageComponent } from './download-package/edit-dossier-download-package.component';
import { EditDossierSectionInterface } from './edit-dossier-section.interface';
import { BaseDialogComponent, ConfirmOptions, IconButtonTypes, SaveOptions } from '@iqser/common-ui';
import {
BaseDialogComponent,
CircleButtonComponent,
ConfirmOptions,
HelpButtonComponent,
IconButtonComponent,
IconButtonTypes,
IqserDenyDirective,
SaveOptions,
} from '@iqser/common-ui';
import { EditDossierDictionaryComponent } from './dictionary/edit-dossier-dictionary.component';
import { EditDossierAttributesComponent } from './attributes/edit-dossier-attributes.component';
import { marker as _ } from '@biesbjerg/ngx-translate-extract-marker';
@ -15,6 +24,10 @@ import { dossiersServiceProvider } from '@services/entity-services/dossiers.serv
import { Roles } from '@users/roles';
import { ConfigService } from '@services/config.service';
import { toSignal } from '@angular/core/rxjs-interop';
import { TranslateModule } from '@ngx-translate/core';
import { SideNavComponent } from '@common-ui/shared';
import { NgForOf, NgIf } from '@angular/common';
import { MatIcon } from '@angular/material/icon';
type Section = 'dossierInfo' | 'downloadPackage' | 'dossierDictionary' | 'members' | 'dossierAttributes';
@ -31,6 +44,23 @@ interface NavItem {
templateUrl: './edit-dossier-dialog.component.html',
styleUrls: ['./edit-dossier-dialog.component.scss'],
providers: [dossiersServiceProvider],
standalone: true,
imports: [
TranslateModule,
SideNavComponent,
NgForOf,
NgIf,
MatIcon,
EditDossierGeneralInfoComponent,
EditDossierDownloadPackageComponent,
EditDossierDictionaryComponent,
EditDossierTeamComponent,
EditDossierAttributesComponent,
IconButtonComponent,
HelpButtonComponent,
IqserDenyDirective,
CircleButtonComponent,
],
})
export class EditDossierDialogComponent extends BaseDialogComponent implements AfterViewInit {
readonly roles = Roles;

View File

@ -1,6 +1,6 @@
import { ChangeDetectionStrategy, Component, inject, Input, OnChanges, SimpleChanges } from '@angular/core';
import { FormControl, FormGroup, Validators } from '@angular/forms';
import { getConfig } from '@iqser/common-ui';
import { FormControl, FormGroup, ReactiveFormsModule, Validators } from '@angular/forms';
import { getConfig, InputWithActionComponent, RoundCheckboxComponent, StopPropagationDirective } from '@iqser/common-ui';
import { Debounce } from '@iqser/common-ui/lib/utils';
import { Dossier, IDossierRequest } from '@red/domain';
import { DossiersService } from '@services/dossiers/dossiers.service';
@ -11,12 +11,38 @@ import { compareLists } from '@utils/functions';
import { firstValueFrom } from 'rxjs';
import { map } from 'rxjs/operators';
import { EditDossierSaveResult, EditDossierSectionInterface } from '../edit-dossier-section.interface';
import { MatFormField } from '@angular/material/form-field';
import { MatOption, MatSelect } from '@angular/material/select';
import { NamePipe } from '@common-ui/users/name.pipe';
import { AsyncPipe, NgForOf, NgIf } from '@angular/common';
import { TeamMembersComponent } from '@shared/components/team-members/team-members.component';
import { TranslateModule } from '@ngx-translate/core';
import { InitialsAvatarComponent } from '@common-ui/users';
import { MatIcon } from '@angular/material/icon';
@Component({
selector: 'redaction-edit-dossier-team',
templateUrl: './edit-dossier-team.component.html',
styleUrls: ['./edit-dossier-team.component.scss'],
changeDetection: ChangeDetectionStrategy.OnPush,
standalone: true,
imports: [
ReactiveFormsModule,
MatFormField,
MatSelect,
MatOption,
NamePipe,
NgForOf,
NgIf,
AsyncPipe,
TeamMembersComponent,
TranslateModule,
InputWithActionComponent,
InitialsAvatarComponent,
StopPropagationDirective,
RoundCheckboxComponent,
MatIcon,
],
})
export class EditDossierTeamComponent implements EditDossierSectionInterface, OnChanges {
form = this.#getForm();

View File

@ -1,5 +1,5 @@
import { ChangeDetectionStrategy, Component, Input, OnInit } from '@angular/core';
import { UntypedFormBuilder, UntypedFormGroup, Validators } from '@angular/forms';
import { ReactiveFormsModule, UntypedFormBuilder, UntypedFormGroup, Validators } from '@angular/forms';
import { Dossier, DOSSIER_TEMPLATE_ID, IDossierRequest, IDossierTemplate } from '@red/domain';
import { EditDossierSaveResult, EditDossierSectionInterface } from '../edit-dossier-section.interface';
import { DossiersDialogService } from '../../../services/dossiers-dialog.service';
@ -7,24 +7,59 @@ import { PermissionsService } from '@services/permissions.service';
import { Router } from '@angular/router';
import { MatDialogRef } from '@angular/material/dialog';
import { EditDossierDialogComponent } from '../edit-dossier-dialog.component';
import { ConfirmOptions, IconButtonTypes, IConfirmationDialogData, LoadingService, TitleColors, Toaster } from '@iqser/common-ui';
import {
ConfirmOptions,
HasScrollbarDirective,
IconButtonComponent,
IconButtonTypes,
IConfirmationDialogData,
LoadingService,
TitleColors,
Toaster,
} from '@iqser/common-ui';
import { marker as _ } from '@biesbjerg/ngx-translate-extract-marker';
import { DossierTemplatesService } from '@services/dossier-templates/dossier-templates.service';
import { DossierStatsService } from '@services/dossiers/dossier-stats.service';
import { firstValueFrom } from 'rxjs';
import { TranslateService } from '@ngx-translate/core';
import { TranslateModule, TranslateService } from '@ngx-translate/core';
import { DossiersService } from '@services/dossiers/dossiers.service';
import { TrashService } from '@services/entity-services/trash.service';
import { ArchivedDossiersService } from '@services/dossiers/archived-dossiers.service';
import { DossierStatesMapService } from '@services/entity-services/dossier-states-map.service';
import dayjs from 'dayjs';
import { dateWithoutTime } from '@utils/functions';
import { MatFormField, MatSuffix } from '@angular/material/form-field';
import { MatOption, MatSelect } from '@angular/material/select';
import { NgForOf, NgIf } from '@angular/common';
import { MatTooltip } from '@angular/material/tooltip';
import { SmallChipComponent } from '@common-ui/shared';
import { MatCheckbox } from '@angular/material/checkbox';
import { MatDatepickerModule } from '@angular/material/datepicker';
import { MatIcon } from '@angular/material/icon';
@Component({
selector: 'redaction-edit-dossier-general-info',
templateUrl: './edit-dossier-general-info.component.html',
styleUrls: ['./edit-dossier-general-info.component.scss'],
changeDetection: ChangeDetectionStrategy.OnPush,
standalone: true,
imports: [
ReactiveFormsModule,
MatFormField,
TranslateModule,
MatSelect,
MatOption,
NgForOf,
MatTooltip,
HasScrollbarDirective,
SmallChipComponent,
MatCheckbox,
MatDatepickerModule,
MatIcon,
MatSuffix,
IconButtonComponent,
NgIf,
],
})
export class EditDossierGeneralInfoComponent implements OnInit, EditDossierSectionInterface {
@Input() dossier: Dossier;

View File

@ -11,7 +11,7 @@ import { DossiersDialogService } from './dossiers-dialog.service';
const atLeastOneAssignee = (files: File[]) => files.reduce((acc, fs) => acc || !!fs.assignee, false);
@Injectable()
@Injectable({ providedIn: 'root' })
export class FileAssignService {
readonly currentUser = getCurrentUser<User>();

View File

@ -1,82 +0,0 @@
import { NgModule } from '@angular/core';
import { CommonModule } from '@angular/common';
import { SharedModule } from '@shared/shared.module';
import { EditDossierDialogComponent } from './dialogs/edit-dossier-dialog/edit-dossier-dialog.component';
import { AssignReviewerApproverDialogComponent } from './dialogs/assign-reviewer-approver-dialog/assign-reviewer-approver-dialog.component';
import { EditDossierGeneralInfoComponent } from './dialogs/edit-dossier-dialog/general-info/edit-dossier-general-info.component';
import { EditDossierDownloadPackageComponent } from './dialogs/edit-dossier-dialog/download-package/edit-dossier-download-package.component';
import { EditDossierDictionaryComponent } from './dialogs/edit-dossier-dialog/dictionary/edit-dossier-dictionary.component';
import { EditDossierAttributesComponent } from './dialogs/edit-dossier-dialog/attributes/edit-dossier-attributes.component';
import { EditDossierTeamComponent } from './dialogs/edit-dossier-dialog/edit-dossier-team/edit-dossier-team.component';
import { FileAssignService } from './services/file-assign.service';
import {
CircleButtonComponent,
DynamicInputComponent,
EmptyStateComponent,
HasScrollbarDirective,
IconButtonComponent,
InputWithActionComponent,
IqserAllowDirective,
IqserDenyDirective,
IqserHelpModeModule,
RoundCheckboxComponent,
StopPropagationDirective,
} from '@iqser/common-ui';
import { TranslateModule } from '@ngx-translate/core';
import { InitialsAvatarComponent, IqserUsersModule } from '@iqser/common-ui/lib/users';
import { SideNavComponent, SmallChipComponent, StatusBarComponent } from '@iqser/common-ui/lib/shared';
import { SelectComponent } from '@shared/components/select/select.component';
import { SnakeCasePipe } from '@common-ui/pipes/snake-case.pipe';
import { EditDictionaryDialogComponent } from './dialogs/edit-dictionary-dialog/edit-dictionary-dialog.component';
import { TeamMembersComponent } from '@shared/components/team-members/team-members.component';
import { LongPressDirective } from '@shared/directives/long-press.directive';
import { FileDownloadBtnComponent } from '@shared/components/buttons/file-download-btn/file-download-btn.component';
import { AnnotationIconComponent } from '@shared/components/annotation-icon/annotation-icon.component';
import { NamePipe } from '@common-ui/users/name.pipe';
import { DictionaryManagerComponent } from '@shared/components/dictionary-manager/dictionary-manager.component';
const components = [
EditDossierGeneralInfoComponent,
EditDossierDownloadPackageComponent,
EditDossierDictionaryComponent,
EditDossierAttributesComponent,
EditDossierTeamComponent,
];
const dialogs = [EditDossierDialogComponent, AssignReviewerApproverDialogComponent];
@NgModule({
declarations: [...components, ...dialogs],
exports: [...components, ...dialogs],
providers: [FileAssignService],
imports: [
CommonModule,
SharedModule,
IqserHelpModeModule,
IqserUsersModule,
TranslateModule,
IconButtonComponent,
CircleButtonComponent,
EmptyStateComponent,
SmallChipComponent,
StatusBarComponent,
SideNavComponent,
StopPropagationDirective,
HasScrollbarDirective,
RoundCheckboxComponent,
InputWithActionComponent,
DynamicInputComponent,
IqserAllowDirective,
IqserDenyDirective,
SelectComponent,
SnakeCasePipe,
EditDictionaryDialogComponent,
TeamMembersComponent,
LongPressDirective,
FileDownloadBtnComponent,
AnnotationIconComponent,
InitialsAvatarComponent,
NamePipe,
DictionaryManagerComponent,
],
})
export class SharedDossiersModule {}

View File

@ -1,6 +1,5 @@
import { Component, EventEmitter, Input, OnChanges, OnInit, Optional, Output, TemplateRef } from '@angular/core';
import { DonutChartConfig } from '@red/domain';
import { IqserHelpModeModule } from '@iqser/common-ui';
import { Observable, of } from 'rxjs';
import { map } from 'rxjs/operators';
import { AsyncPipe, NgForOf, NgIf, NgTemplateOutlet } from '@angular/common';
@ -14,7 +13,7 @@ import { StatusBarComponent } from '@iqser/common-ui/lib/shared';
templateUrl: './donut-chart.component.html',
styleUrls: ['./donut-chart.component.scss'],
standalone: true,
imports: [NgForOf, NgIf, MatSelectModule, IqserHelpModeModule, StatusBarComponent, AsyncPipe, NgTemplateOutlet],
imports: [NgForOf, NgIf, MatSelectModule, StatusBarComponent, AsyncPipe, NgTemplateOutlet],
})
export class DonutChartComponent implements OnChanges, OnInit {
@Input() subtitles: string[] = [];
@ -110,8 +109,8 @@ export class DonutChartComponent implements OnChanges, OnInit {
return this.totalType === 'simpleLabel'
? `${label}`
: this.totalType === 'sum'
? `${this.getFormattedValue(value)} ${label}`
: `${label} (${this.getFormattedValue(value)} ${this.counterText})`;
? `${this.getFormattedValue(value)} ${label}`
: `${label} (${this.getFormattedValue(value)} ${this.counterText})`;
}
selectValue(key: string): void {

View File

@ -5,8 +5,12 @@ 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 { MatCheckboxChange } from '@angular/material/checkbox';
import { MatCheckbox, MatCheckboxChange } from '@angular/material/checkbox';
import { shareLast } from '@iqser/common-ui/lib/utils';
import { AsyncPipe, NgForOf, NgIf } from '@angular/common';
import { MatFormField } from '@angular/material/form-field';
import { MatOption, MatSelect, MatSelectTrigger } from '@angular/material/select';
import { MatIcon } from '@angular/material/icon';
@Component({
selector: 'redaction-watermark-selector [dossierTemplateId] [label]',
@ -25,6 +29,8 @@ import { shareLast } from '@iqser/common-ui/lib/utils';
useExisting: WatermarkSelectorComponent,
},
],
standalone: true,
imports: [NgIf, AsyncPipe, MatCheckbox, MatFormField, MatSelectTrigger, MatSelect, MatIcon, MatOption, NgForOf],
})
export class WatermarkSelectorComponent extends FormFieldComponent<number> implements OnChanges {
#watermarks: Watermark[] = [];

View File

@ -1,8 +1,9 @@
import { ChangeDetectionStrategy, Component, Input } from '@angular/core';
import { MatIcon } from '@angular/material/icon';
import { MatTooltip } from '@angular/material/tooltip';
import { DatePipe, NgIf } from '@angular/common';
import { NgIf } from '@angular/common';
import { TranslateModule } from '@ngx-translate/core';
import { DatePipe } from '@shared/pipes/date.pipe';
@Component({
selector: 'redaction-file-stats',

View File

@ -0,0 +1,25 @@
import { DateAdapter, MAT_DATE_FORMATS } from '@angular/material/core';
import { CustomDateAdapter } from '@shared/CustomDateAdapter';
export function provideCustomDateFormatter() {
return [
{
provide: DateAdapter,
useClass: CustomDateAdapter,
},
{
provide: MAT_DATE_FORMATS,
useValue: {
parse: {
dateInput: 'D/M/YY',
},
display: {
dateInput: 'D/M/YY',
monthYearLabel: 'YYYY',
dateA11yLabel: 'LL',
monthYearA11yLabel: 'YYYY',
},
},
},
];
}

View File

@ -6,9 +6,13 @@ import dayjs from 'dayjs';
@Pipe({
name: 'date',
standalone: true,
})
export class DatePipe extends BaseDatePipe implements PipeTransform {
constructor(@Inject(LOCALE_ID) private readonly _locale: string, private readonly _translateService: TranslateService) {
constructor(
@Inject(LOCALE_ID) private readonly _locale: string,
private readonly _translateService: TranslateService,
) {
super(_locale);
}

View File

@ -5,7 +5,7 @@ import { ConfirmationDialogComponent, DialogConfig, DialogService } from '@iqser
type DialogType = 'addDossier' | 'confirm';
@Injectable()
@Injectable({ providedIn: 'root' })
export class SharedDialogService extends DialogService<DialogType> {
protected readonly _config: DialogConfig<DialogType> = {
confirm: {

View File

@ -9,35 +9,29 @@ import {
CircleButtonComponent,
DynamicInputComponent,
HasScrollbarDirective,
HelpButtonComponent,
IconButtonComponent,
IqserAllowDirective,
IqserDenyDirective,
IqserHelpModeModule,
RoundCheckboxComponent,
StopPropagationDirective,
} from '@iqser/common-ui';
import { NavigateLastDossiersScreenDirective } from './directives/navigate-last-dossiers-screen.directive';
import { MonacoEditorModule } from '@materia-ui/ngx-monaco-editor';
import { DatePipe } from './pipes/date.pipe';
import { DateAdapter, MAT_DATE_FORMATS } from '@angular/material/core';
import { TranslateModule } from '@ngx-translate/core';
import { RouterModule } from '@angular/router';
import { AddDossierDialogComponent } from './dialogs/add-dossier-dialog/add-dossier-dialog.component';
import { SharedDialogService } from './services/dialog.service';
import { ColorPickerModule } from 'ngx-color-picker';
import { WatermarkSelectorComponent } from './components/dossier-watermark-selector/watermark-selector.component';
import { CustomDateAdapter } from '@shared/CustomDateAdapter';
import { IqserUsersModule } from '@iqser/common-ui/lib/users';
import { SmallChipComponent } from '@iqser/common-ui/lib/shared';
import { SelectComponent } from '@shared/components/select/select.component';
import { FileAttributeComponent } from '../dossier-overview/components/file-attribute/file-attribute.component';
import { MatDividerModule } from '@angular/material/divider';
const components = [AddDossierDialogComponent, WatermarkSelectorComponent];
const components = [AddDossierDialogComponent];
const utils = [DatePipe, NavigateLastDossiersScreenDirective];
const services = [SharedDialogService];
const utils = [NavigateLastDossiersScreenDirective];
const modules = [MatConfigModule, ScrollingModule, IconsModule, FormsModule, ReactiveFormsModule, ColorPickerModule];
@ -51,7 +45,6 @@ const deleteThisWhenAllComponentsAreStandalone = [DonutChartComponent, FileAttri
MonacoEditorModule,
TranslateModule,
RouterModule,
IqserHelpModeModule,
IqserUsersModule,
...deleteThisWhenAllComponentsAreStandalone,
CircleButtonComponent,
@ -65,28 +58,9 @@ const deleteThisWhenAllComponentsAreStandalone = [DonutChartComponent, FileAttri
RoundCheckboxComponent,
DynamicInputComponent,
MatDividerModule,
WatermarkSelectorComponent,
HelpButtonComponent,
],
exports: [...modules, ...components, ...utils, ...deleteThisWhenAllComponentsAreStandalone],
providers: [
...services,
{
provide: DateAdapter,
useClass: CustomDateAdapter,
},
{
provide: MAT_DATE_FORMATS,
useValue: {
parse: {
dateInput: 'D/M/YY',
},
display: {
dateInput: 'D/M/YY',
monthYearLabel: 'YYYY',
dateA11yLabel: 'LL',
monthYearA11yLabel: 'YYYY',
},
},
},
],
})
export class SharedModule {}

View File

@ -7,10 +7,11 @@ import { Observable } from 'rxjs';
import { getCurrentUser, InitialsAvatarComponent } from '@common-ui/users';
import { MatIcon } from '@angular/material/icon';
import { FileNameColumnComponent } from '@shared/components/file-name-column/file-name-column.component';
import { AsyncPipe, DatePipe, NgIf } from '@angular/common';
import { AsyncPipe, NgIf } from '@angular/common';
import { CircleButtonComponent } from '@iqser/common-ui';
import { RouterLink } from '@angular/router';
import { TranslateModule } from '@ngx-translate/core';
import { DatePipe } from '@shared/pipes/date.pipe';
@Component({
selector: 'redaction-trash-table-item [item]',