diff --git a/apps/red-ui/src/app/app.module.ts b/apps/red-ui/src/app/app.module.ts index 49d997e5b..c01223cf8 100644 --- a/apps/red-ui/src/app/app.module.ts +++ b/apps/red-ui/src/app/app.module.ts @@ -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], }) diff --git a/apps/red-ui/src/app/modules/admin/dialogs/add-entity-dialog/add-entity-dialog.component.ts b/apps/red-ui/src/app/modules/admin/dialogs/add-entity-dialog/add-entity-dialog.component.ts index 8a0c01ec1..568c41a13 100644 --- a/apps/red-ui/src/app/modules/admin/dialogs/add-entity-dialog/add-entity-dialog.component.ts +++ b/apps/red-ui/src/app/modules/admin/dialogs/add-entity-dialog/add-entity-dialog.component.ts @@ -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; diff --git a/apps/red-ui/src/app/modules/admin/screens/audit/audit-screen.component.ts b/apps/red-ui/src/app/modules/admin/screens/audit/audit-screen.component.ts index 424f8d01a..9ee61a43e 100644 --- a/apps/red-ui/src/app/modules/admin/screens/audit/audit-screen.component.ts +++ b/apps/red-ui/src/app/modules/admin/screens/audit/audit-screen.component.ts @@ -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 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 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 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 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 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; diff --git a/apps/red-ui/src/app/modules/admin/screens/dossier-templates-listing/table-item/table-item.component.ts b/apps/red-ui/src/app/modules/admin/screens/dossier-templates-listing/table-item/table-item.component.ts index fb26a773c..59ed7e1c1 100644 --- a/apps/red-ui/src/app/modules/admin/screens/dossier-templates-listing/table-item/table-item.component.ts +++ b/apps/red-ui/src/app/modules/admin/screens/dossier-templates-listing/table-item/table-item.component.ts @@ -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]', diff --git a/apps/red-ui/src/app/modules/admin/screens/entities/screens/entity-info/entity-info.component.ts b/apps/red-ui/src/app/modules/admin/screens/entities/screens/entity-info/entity-info.component.ts index 7577e8905..0942d7891 100644 --- a/apps/red-ui/src/app/modules/admin/screens/entities/screens/entity-info/entity-info.component.ts +++ b/apps/red-ui/src/app/modules/admin/screens/entities/screens/entity-info/entity-info.component.ts @@ -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 { diff --git a/apps/red-ui/src/app/modules/admin/screens/file-attributes-listing/add-edit-file-attribute-dialog/add-edit-file-attribute-dialog.component.ts b/apps/red-ui/src/app/modules/admin/screens/file-attributes-listing/add-edit-file-attribute-dialog/add-edit-file-attribute-dialog.component.ts index 95e89df51..bc4ef6307 100644 --- a/apps/red-ui/src/app/modules/admin/screens/file-attributes-listing/add-edit-file-attribute-dialog/add-edit-file-attribute-dialog.component.ts +++ b/apps/red-ui/src/app/modules/admin/screens/file-attributes-listing/add-edit-file-attribute-dialog/add-edit-file-attribute-dialog.component.ts @@ -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 { diff --git a/apps/red-ui/src/app/modules/admin/screens/info/dossier-template-details/dossier-template-details.component.ts b/apps/red-ui/src/app/modules/admin/screens/info/dossier-template-details/dossier-template-details.component.ts index 125e7f4b3..a6dab16e7 100644 --- a/apps/red-ui/src/app/modules/admin/screens/info/dossier-template-details/dossier-template-details.component.ts +++ b/apps/red-ui/src/app/modules/admin/screens/info/dossier-template-details/dossier-template-details.component.ts @@ -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; diff --git a/apps/red-ui/src/app/modules/admin/screens/license/license-screen/license-screen.component.ts b/apps/red-ui/src/app/modules/admin/screens/license/license-screen/license-screen.component.ts index 00dc524f5..02e22f51b 100644 --- a/apps/red-ui/src/app/modules/admin/screens/license/license-screen/license-screen.component.ts +++ b/apps/red-ui/src/app/modules/admin/screens/license/license-screen/license-screen.component.ts @@ -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', diff --git a/apps/red-ui/src/app/modules/admin/screens/watermark/watermarks-listing/watermarks-listing-screen.component.ts b/apps/red-ui/src/app/modules/admin/screens/watermark/watermarks-listing/watermarks-listing-screen.component.ts index 76ea73e72..9ae234ca6 100644 --- a/apps/red-ui/src/app/modules/admin/screens/watermark/watermarks-listing/watermarks-listing-screen.component.ts +++ b/apps/red-ui/src/app/modules/admin/screens/watermark/watermarks-listing/watermarks-listing-screen.component.ts @@ -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 implements OnInit { diff --git a/apps/red-ui/src/app/modules/admin/shared/components/admin-side-nav/admin-side-nav.component.ts b/apps/red-ui/src/app/modules/admin/shared/components/admin-side-nav/admin-side-nav.component.ts index 83620ad86..721c2b99c 100644 --- a/apps/red-ui/src/app/modules/admin/shared/components/admin-side-nav/admin-side-nav.component.ts +++ b/apps/red-ui/src/app/modules/admin/shared/components/admin-side-nav/admin-side-nav.component.ts @@ -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(); diff --git a/apps/red-ui/src/app/modules/admin/shared/components/dossier-template-actions/dossier-template-actions.component.ts b/apps/red-ui/src/app/modules/admin/shared/components/dossier-template-actions/dossier-template-actions.component.ts index 7888afacb..3ca60b7fd 100644 --- a/apps/red-ui/src/app/modules/admin/shared/components/dossier-template-actions/dossier-template-actions.component.ts +++ b/apps/red-ui/src/app/modules/admin/shared/components/dossier-template-actions/dossier-template-actions.component.ts @@ -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; diff --git a/apps/red-ui/src/app/modules/archive/components/table-item/table-item.component.ts b/apps/red-ui/src/app/modules/archive/components/table-item/table-item.component.ts index 9e5bc8923..2d56c16fe 100644 --- a/apps/red-ui/src/app/modules/archive/components/table-item/table-item.component.ts +++ b/apps/red-ui/src/app/modules/archive/components/table-item/table-item.component.ts @@ -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]', diff --git a/apps/red-ui/src/app/modules/dossier-overview/components/dossier-details-stats/dossier-details-stats.component.ts b/apps/red-ui/src/app/modules/dossier-overview/components/dossier-details-stats/dossier-details-stats.component.ts index b4ed970ba..98c6d3579 100644 --- a/apps/red-ui/src/app/modules/dossier-overview/components/dossier-details-stats/dossier-details-stats.component.ts +++ b/apps/red-ui/src/app/modules/dossier-overview/components/dossier-details-stats/dossier-details-stats.component.ts @@ -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', diff --git a/apps/red-ui/src/app/modules/dossier-overview/components/file-attribute/file-attribute.component.ts b/apps/red-ui/src/app/modules/dossier-overview/components/file-attribute/file-attribute.component.ts index 9346306ed..a69cc33ab 100644 --- a/apps/red-ui/src/app/modules/dossier-overview/components/file-attribute/file-attribute.component.ts +++ b/apps/red-ui/src/app/modules/dossier-overview/components/file-attribute/file-attribute.component.ts @@ -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', diff --git a/apps/red-ui/src/app/modules/dossiers-listing/components/dossier-workload-column/dossier-workload-column.component.ts b/apps/red-ui/src/app/modules/dossiers-listing/components/dossier-workload-column/dossier-workload-column.component.ts index 77d83c4b1..abf8db8ad 100644 --- a/apps/red-ui/src/app/modules/dossiers-listing/components/dossier-workload-column/dossier-workload-column.component.ts +++ b/apps/red-ui/src/app/modules/dossiers-listing/components/dossier-workload-column/dossier-workload-column.component.ts @@ -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(null); 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 397648169..4e596eea3 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 @@ -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', diff --git a/apps/red-ui/src/app/modules/file-preview/components/document-info/document-info.component.ts b/apps/red-ui/src/app/modules/file-preview/components/document-info/document-info.component.ts index c5e4f7495..fe3d55f0c 100644 --- a/apps/red-ui/src/app/modules/file-preview/components/document-info/document-info.component.ts +++ b/apps/red-ui/src/app/modules/file-preview/components/document-info/document-info.component.ts @@ -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; diff --git a/apps/red-ui/src/app/modules/file-preview/dialogs/edit-redaction-dialog/edit-redaction-dialog.component.ts b/apps/red-ui/src/app/modules/file-preview/dialogs/edit-redaction-dialog/edit-redaction-dialog.component.ts index 614e4d7b9..714aa1db4 100644 --- a/apps/red-ui/src/app/modules/file-preview/dialogs/edit-redaction-dialog/edit-redaction-dialog.component.ts +++ b/apps/red-ui/src/app/modules/file-preview/dialogs/edit-redaction-dialog/edit-redaction-dialog.component.ts @@ -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 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 fc793c341..28630826d 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 @@ -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 { diff --git a/apps/red-ui/src/app/modules/file-preview/dialogs/highlight-action-dialog/highlight-action-dialog.component.ts b/apps/red-ui/src/app/modules/file-preview/dialogs/highlight-action-dialog/highlight-action-dialog.component.ts index 039489df1..1ba594f55 100644 --- a/apps/red-ui/src/app/modules/file-preview/dialogs/highlight-action-dialog/highlight-action-dialog.component.ts +++ b/apps/red-ui/src/app/modules/file-preview/dialogs/highlight-action-dialog/highlight-action-dialog.component.ts @@ -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 { diff --git a/apps/red-ui/src/app/modules/file-preview/dialogs/remove-redaction-dialog/remove-redaction-dialog.component.ts b/apps/red-ui/src/app/modules/file-preview/dialogs/remove-redaction-dialog/remove-redaction-dialog.component.ts index 681ee4048..c6eed1d89 100644 --- a/apps/red-ui/src/app/modules/file-preview/dialogs/remove-redaction-dialog/remove-redaction-dialog.component.ts +++ b/apps/red-ui/src/app/modules/file-preview/dialogs/remove-redaction-dialog/remove-redaction-dialog.component.ts @@ -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< diff --git a/apps/red-ui/src/app/modules/shared-dossiers/components/date-column/date-column.component.ts b/apps/red-ui/src/app/modules/shared-dossiers/components/date-column/date-column.component.ts index 7b652fb01..2e0e44152 100644 --- a/apps/red-ui/src/app/modules/shared-dossiers/components/date-column/date-column.component.ts +++ b/apps/red-ui/src/app/modules/shared-dossiers/components/date-column/date-column.component.ts @@ -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]', diff --git a/apps/red-ui/src/app/modules/shared-dossiers/dialogs/assign-reviewer-approver-dialog/assign-reviewer-approver-dialog.component.ts b/apps/red-ui/src/app/modules/shared-dossiers/dialogs/assign-reviewer-approver-dialog/assign-reviewer-approver-dialog.component.ts index 31554c994..d98700c9a 100644 --- a/apps/red-ui/src/app/modules/shared-dossiers/dialogs/assign-reviewer-approver-dialog/assign-reviewer-approver-dialog.component.ts +++ b/apps/red-ui/src/app/modules/shared-dossiers/dialogs/assign-reviewer-approver-dialog/assign-reviewer-approver-dialog.component.ts @@ -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, diff --git a/apps/red-ui/src/app/modules/shared-dossiers/dialogs/edit-dossier-dialog/attributes/edit-dossier-attributes.component.ts b/apps/red-ui/src/app/modules/shared-dossiers/dialogs/edit-dossier-dialog/attributes/edit-dossier-attributes.component.ts index b03686c6b..b5dec159b 100644 --- a/apps/red-ui/src/app/modules/shared-dossiers/dialogs/edit-dossier-dialog/attributes/edit-dossier-attributes.component.ts +++ b/apps/red-ui/src/app/modules/shared-dossiers/dialogs/edit-dossier-dialog/attributes/edit-dossier-attributes.component.ts @@ -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; diff --git a/apps/red-ui/src/app/modules/shared-dossiers/dialogs/edit-dossier-dialog/dictionary/edit-dossier-dictionary.component.ts b/apps/red-ui/src/app/modules/shared-dossiers/dialogs/edit-dossier-dialog/dictionary/edit-dossier-dictionary.component.ts index d517176d8..fd125866d 100644 --- a/apps/red-ui/src/app/modules/shared-dossiers/dialogs/edit-dossier-dialog/dictionary/edit-dossier-dictionary.component.ts +++ b/apps/red-ui/src/app/modules/shared-dossiers/dialogs/edit-dossier-dialog/dictionary/edit-dossier-dictionary.component.ts @@ -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; diff --git a/apps/red-ui/src/app/modules/shared-dossiers/dialogs/edit-dossier-dialog/download-package/edit-dossier-download-package.component.ts b/apps/red-ui/src/app/modules/shared-dossiers/dialogs/edit-dossier-dialog/download-package/edit-dossier-download-package.component.ts index c8c1d00a3..ce7c1d58c 100644 --- a/apps/red-ui/src/app/modules/shared-dossiers/dialogs/edit-dossier-dialog/download-package/edit-dossier-download-package.component.ts +++ b/apps/red-ui/src/app/modules/shared-dossiers/dialogs/edit-dossier-dialog/download-package/edit-dossier-download-package.component.ts @@ -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 diff --git a/apps/red-ui/src/app/modules/shared-dossiers/dialogs/edit-dossier-dialog/edit-dossier-dialog.component.ts b/apps/red-ui/src/app/modules/shared-dossiers/dialogs/edit-dossier-dialog/edit-dossier-dialog.component.ts index 2fe15fd2b..7dae7a2d2 100644 --- a/apps/red-ui/src/app/modules/shared-dossiers/dialogs/edit-dossier-dialog/edit-dossier-dialog.component.ts +++ b/apps/red-ui/src/app/modules/shared-dossiers/dialogs/edit-dossier-dialog/edit-dossier-dialog.component.ts @@ -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; 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 2d330d904..8bc3dc239 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 @@ -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(); diff --git a/apps/red-ui/src/app/modules/shared-dossiers/dialogs/edit-dossier-dialog/general-info/edit-dossier-general-info.component.ts b/apps/red-ui/src/app/modules/shared-dossiers/dialogs/edit-dossier-dialog/general-info/edit-dossier-general-info.component.ts index 1894b809a..9eff96343 100644 --- a/apps/red-ui/src/app/modules/shared-dossiers/dialogs/edit-dossier-dialog/general-info/edit-dossier-general-info.component.ts +++ b/apps/red-ui/src/app/modules/shared-dossiers/dialogs/edit-dossier-dialog/general-info/edit-dossier-general-info.component.ts @@ -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; diff --git a/apps/red-ui/src/app/modules/shared-dossiers/services/file-assign.service.ts b/apps/red-ui/src/app/modules/shared-dossiers/services/file-assign.service.ts index 75f0c3fcb..b5f106d0d 100644 --- a/apps/red-ui/src/app/modules/shared-dossiers/services/file-assign.service.ts +++ b/apps/red-ui/src/app/modules/shared-dossiers/services/file-assign.service.ts @@ -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(); diff --git a/apps/red-ui/src/app/modules/shared-dossiers/shared-dossiers.module.ts b/apps/red-ui/src/app/modules/shared-dossiers/shared-dossiers.module.ts deleted file mode 100644 index a3ba94d00..000000000 --- a/apps/red-ui/src/app/modules/shared-dossiers/shared-dossiers.module.ts +++ /dev/null @@ -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 {} diff --git a/apps/red-ui/src/app/modules/shared/components/donut-chart/donut-chart.component.ts b/apps/red-ui/src/app/modules/shared/components/donut-chart/donut-chart.component.ts index e2925e41d..00435a9e5 100644 --- a/apps/red-ui/src/app/modules/shared/components/donut-chart/donut-chart.component.ts +++ b/apps/red-ui/src/app/modules/shared/components/donut-chart/donut-chart.component.ts @@ -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 { diff --git a/apps/red-ui/src/app/modules/shared/components/dossier-watermark-selector/watermark-selector.component.ts b/apps/red-ui/src/app/modules/shared/components/dossier-watermark-selector/watermark-selector.component.ts index 14b47c44d..8d5039a01 100644 --- a/apps/red-ui/src/app/modules/shared/components/dossier-watermark-selector/watermark-selector.component.ts +++ b/apps/red-ui/src/app/modules/shared/components/dossier-watermark-selector/watermark-selector.component.ts @@ -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 implements OnChanges { #watermarks: Watermark[] = []; diff --git a/apps/red-ui/src/app/modules/shared/components/file-stats/file-stats.component.ts b/apps/red-ui/src/app/modules/shared/components/file-stats/file-stats.component.ts index 7e2e34aed..68ccc8e60 100644 --- a/apps/red-ui/src/app/modules/shared/components/file-stats/file-stats.component.ts +++ b/apps/red-ui/src/app/modules/shared/components/file-stats/file-stats.component.ts @@ -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', diff --git a/apps/red-ui/src/app/modules/shared/custom-date-formatting.provider.ts b/apps/red-ui/src/app/modules/shared/custom-date-formatting.provider.ts new file mode 100644 index 000000000..8ad493936 --- /dev/null +++ b/apps/red-ui/src/app/modules/shared/custom-date-formatting.provider.ts @@ -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', + }, + }, + }, + ]; +} diff --git a/apps/red-ui/src/app/modules/shared/pipes/date.pipe.ts b/apps/red-ui/src/app/modules/shared/pipes/date.pipe.ts index c633e678a..632f71bfd 100644 --- a/apps/red-ui/src/app/modules/shared/pipes/date.pipe.ts +++ b/apps/red-ui/src/app/modules/shared/pipes/date.pipe.ts @@ -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); } diff --git a/apps/red-ui/src/app/modules/shared/services/dialog.service.ts b/apps/red-ui/src/app/modules/shared/services/dialog.service.ts index edb55c943..c5781554a 100644 --- a/apps/red-ui/src/app/modules/shared/services/dialog.service.ts +++ b/apps/red-ui/src/app/modules/shared/services/dialog.service.ts @@ -5,7 +5,7 @@ import { ConfirmationDialogComponent, DialogConfig, DialogService } from '@iqser type DialogType = 'addDossier' | 'confirm'; -@Injectable() +@Injectable({ providedIn: 'root' }) export class SharedDialogService extends DialogService { protected readonly _config: DialogConfig = { confirm: { diff --git a/apps/red-ui/src/app/modules/shared/shared.module.ts b/apps/red-ui/src/app/modules/shared/shared.module.ts index d0fd8c541..760119b15 100644 --- a/apps/red-ui/src/app/modules/shared/shared.module.ts +++ b/apps/red-ui/src/app/modules/shared/shared.module.ts @@ -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 {} diff --git a/apps/red-ui/src/app/modules/trash/trash-screen/trash-table-item/trash-table-item.component.ts b/apps/red-ui/src/app/modules/trash/trash-screen/trash-table-item/trash-table-item.component.ts index 0c0cd3c0e..12baf4873 100644 --- a/apps/red-ui/src/app/modules/trash/trash-screen/trash-table-item/trash-table-item.component.ts +++ b/apps/red-ui/src/app/modules/trash/trash-screen/trash-table-item/trash-table-item.component.ts @@ -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]',