diff --git a/apps/red-ui/src/app/modules/admin/admin-routing.module.ts b/apps/red-ui/src/app/modules/admin/admin-routing.module.ts index 3d4098c35..4114c2532 100644 --- a/apps/red-ui/src/app/modules/admin/admin-routing.module.ts +++ b/apps/red-ui/src/app/modules/admin/admin-routing.module.ts @@ -1,4 +1,4 @@ -import { NgModule } from '@angular/core'; +import { inject, NgModule } from '@angular/core'; import { CompositeRouteGuard, IqserPermissionsGuard, IqserRoutes } from '@iqser/common-ui'; import { RedRoleGuard } from '@users/red-role.guard'; import { EntitiesListingScreenComponent } from './screens/entities-listing/entities-listing-screen.component'; @@ -20,148 +20,157 @@ import { PermissionsGuard } from '@guards/permissions-guard'; import { Roles } from '@users/roles'; import { IqserAuthGuard } from '@iqser/common-ui/lib/users'; import { ComponentMappingsScreenComponent } from './screens/component-mappings/component-mappings-screen.component'; +import { LicenseService } from '@services/license.service'; + +const entityRoutes: IqserRoutes = [ + { + path: '', + component: BaseDossierTemplateScreenComponent, + children: [{ path: '', component: EntitiesListingScreenComponent }], + canActivate: [CompositeRouteGuard], + data: { + routeGuards: [IqserAuthGuard, RedRoleGuard], + }, + }, + { + path: `:${ENTITY_TYPE}`, + loadChildren: () => import('./screens/entities/entities.module').then(m => m.EntitiesModule), + component: BaseEntityScreenComponent, + canActivate: [CompositeRouteGuard, entityExistsGuard()], + data: { + routeGuards: [IqserAuthGuard, RedRoleGuard], + }, + }, +]; const dossierTemplateIdRoutes: IqserRoutes = [ { - path: 'info', - component: BaseDossierTemplateScreenComponent, - loadChildren: () => import('./screens/info/dossier-template-info.module').then(m => m.DossierTemplateInfoModule), + path: 'entities', + children: entityRoutes, }, { - path: 'entities', + path: '', + component: BaseDossierTemplateScreenComponent, children: [ { - path: '', - component: EntitiesListingScreenComponent, + path: 'info', + loadComponent: () => import('./screens/info/dossier-template-info-screen/dossier-template-info-screen.component'), + canDeactivate: [PendingChangesGuard], + }, + { + path: 'entity-rules', + loadComponent: () => import('./screens/rules/rules-screen/rules-screen.component'), + canActivate: [CompositeRouteGuard, IqserPermissionsGuard], + canDeactivate: [PendingChangesGuard], + data: { + routeGuards: [IqserAuthGuard, RedRoleGuard], + permissions: { + allow: [Roles.rules.read], + redirectTo: 'info', + }, + type: 'ENTITY', + }, + }, + { + path: 'component-rules', + loadComponent: () => import('./screens/rules/rules-screen/rules-screen.component'), + canActivate: [CompositeRouteGuard, IqserPermissionsGuard], + canDeactivate: [PendingChangesGuard], + data: { + routeGuards: [IqserAuthGuard, RedRoleGuard], + permissions: { + allow: [Roles.rules.read], + redirectTo: 'info', + }, + type: 'COMPONENT', + }, + }, + { + path: 'component-mappings', + component: ComponentMappingsScreenComponent, canActivate: [CompositeRouteGuard], data: { routeGuards: [IqserAuthGuard, RedRoleGuard], }, }, { - path: `:${ENTITY_TYPE}`, - component: BaseEntityScreenComponent, - canActivate: [CompositeRouteGuard, entityExistsGuard()], - loadChildren: () => import('./screens/entities/entities.module').then(m => m.EntitiesModule), + path: 'file-attributes', + loadComponent: () => import('./screens/file-attributes-listing/file-attributes-listing-screen.component'), + canActivate: [CompositeRouteGuard], data: { routeGuards: [IqserAuthGuard, RedRoleGuard], }, }, + { + path: 'watermarks', + loadChildren: () => import('./screens/watermark/watermark.module').then(m => m.WatermarkModule), + }, + { + path: 'reports', + loadComponent: () => import('./screens/reports/reports-screen/reports-screen.component'), + canActivate: [IqserAuthGuard, IqserPermissionsGuard], + data: { + permissions: { + allow: [Roles.reportTemplates.read], + redirectTo: '/auth-error', + }, + }, + }, + { + path: 'dossier-attributes', + loadComponent: () => import('./screens/dossier-attributes-listing/dossier-attributes-listing-screen.component'), + canActivate: [CompositeRouteGuard], + data: { + routeGuards: [IqserAuthGuard, RedRoleGuard], + }, + }, + { + path: 'dossier-states', + loadComponent: () => + import('./screens/dossier-states-listing/dossier-states-listing-screen/dossier-states-listing-screen.component'), + canActivate: [CompositeRouteGuard], + data: { + routeGuards: [IqserAuthGuard, RedRoleGuard], + }, + }, + { + path: 'default-colors', + component: DefaultColorsScreenComponent, + canActivate: [CompositeRouteGuard], + data: { + routeGuards: [IqserAuthGuard, RedRoleGuard], + }, + }, + { + path: 'justifications', + loadComponent: () => import('./screens/justifications/justifications-screen/justifications-screen.component'), + canActivate: [IqserPermissionsGuard], + data: { + permissions: { + allow: [Roles.legalBasis.read], + redirectTo: '/auth-error', + }, + }, + }, + { path: '', redirectTo: 'info', pathMatch: 'full' }, ], }, - { - path: 'entity-rules', - component: BaseDossierTemplateScreenComponent, - canActivate: [CompositeRouteGuard, IqserPermissionsGuard], - data: { - routeGuards: [IqserAuthGuard, RedRoleGuard], - permissions: { - allow: [Roles.rules.read], - redirectTo: 'info', - }, - type: 'ENTITY', - }, - loadChildren: () => import('./screens/rules/rules.module').then(m => m.RulesModule), - }, - { - path: 'component-rules', - component: BaseDossierTemplateScreenComponent, - canActivate: [CompositeRouteGuard, IqserPermissionsGuard], - data: { - routeGuards: [IqserAuthGuard, RedRoleGuard], - permissions: { - allow: [Roles.rules.read], - redirectTo: 'info', - }, - type: 'COMPONENT', - }, - loadChildren: () => import('./screens/rules/rules.module').then(m => m.RulesModule), - }, - { - path: 'component-mappings', - component: ComponentMappingsScreenComponent, - canActivate: [CompositeRouteGuard], - data: { - routeGuards: [IqserAuthGuard, RedRoleGuard], - }, - }, - { - path: 'file-attributes', - component: BaseDossierTemplateScreenComponent, - loadChildren: () => - import('./screens/file-attributes-listing/file-attributes-listing.module').then(m => m.FileAttributesListingModule), - canActivate: [CompositeRouteGuard], - data: { - routeGuards: [IqserAuthGuard, RedRoleGuard], - }, - }, - { - path: 'watermarks', - component: BaseDossierTemplateScreenComponent, - loadChildren: () => import('./screens/watermark/watermark.module').then(m => m.WatermarkModule), - }, - { - path: 'reports', - component: BaseDossierTemplateScreenComponent, - loadChildren: () => import('./screens/reports/reports.module').then(m => m.ReportsModule), - canActivate: [IqserAuthGuard, IqserPermissionsGuard], - data: { - permissions: { - allow: [Roles.reportTemplates.read], - redirectTo: '/auth-error', - }, - }, - }, - { - path: 'dossier-attributes', - component: BaseDossierTemplateScreenComponent, - loadChildren: () => - import('./screens/dossier-attributes-listing/dossier-attributes-listing.module').then(m => m.DossierAttributesListingModule), - canActivate: [CompositeRouteGuard], - data: { - routeGuards: [IqserAuthGuard, RedRoleGuard], - }, - }, - { - path: 'dossier-states', - component: BaseDossierTemplateScreenComponent, - loadChildren: () => - import('./screens/dossier-states-listing/dossier-states-listing.module').then(m => m.DossierStatesListingModule), - canActivate: [CompositeRouteGuard], - data: { - routeGuards: [IqserAuthGuard, RedRoleGuard], - }, - }, - { - path: 'default-colors', - component: DefaultColorsScreenComponent, - canActivate: [CompositeRouteGuard], - data: { - routeGuards: [IqserAuthGuard, RedRoleGuard], - }, - }, - { - path: 'justifications', - component: BaseDossierTemplateScreenComponent, - loadChildren: () => import('./screens/justifications/justifications.module').then(m => m.JustificationsModule), - canActivate: [IqserPermissionsGuard], - data: { - permissions: { - allow: [Roles.legalBasis.read], - redirectTo: '/auth-error', - }, - }, - }, - { path: '', redirectTo: 'info', pathMatch: 'full' }, ]; const dossierTemplatesRoutes: IqserRoutes = [ { path: '', component: BaseAdminScreenComponent, + children: [ + { + path: '', + loadComponent: () => + import( + './screens/dossier-templates-listing/dossier-templates-listing-screen/dossier-templates-listing-screen.component' + ), + }, + ], canActivate: [IqserAuthGuard], - loadChildren: () => - import('./screens/dossier-templates-listing/dossier-templates-listing.module').then(m => m.DossierTemplatesListingModule), }, { path: `:${DOSSIER_TEMPLATE_ID}`, @@ -171,7 +180,6 @@ const dossierTemplatesRoutes: IqserRoutes = [ ]; const routes: IqserRoutes = [ - { path: '', redirectTo: 'dossier-templates', pathMatch: 'full' }, { path: 'dossier-templates', children: dossierTemplatesRoutes, @@ -186,101 +194,85 @@ const routes: IqserRoutes = [ }, }, { - path: 'users', + path: '', component: BaseAdminScreenComponent, children: [ { - path: '', + path: 'users', component: UserListingScreenComponent, + canActivate: [CompositeRouteGuard, IqserPermissionsGuard], + data: { + routeGuards: [IqserAuthGuard, RedRoleGuard], + permissions: { + allow: [Roles.users.read, 'RED_USER_ADMIN'], + redirectTo: '/', + }, + }, }, - ], - canActivate: [CompositeRouteGuard, IqserPermissionsGuard], - data: { - routeGuards: [IqserAuthGuard, RedRoleGuard], - permissions: { - allow: [Roles.users.read, 'RED_USER_ADMIN'], - redirectTo: '/', - }, - }, - }, - { - path: 'dossier-permissions', - component: BaseAdminScreenComponent, - canActivate: [CompositeRouteGuard, IqserPermissionsGuard], - data: { - routeGuards: [IqserAuthGuard, RedRoleGuard, PermissionsGuard], - permissionsObject: 'Dossier', - permissions: { - allow: [Roles.manageAclPermissions, 'RED_ADMIN'], - redirectTo: '/', - }, - }, - loadChildren: () => import('./screens/permissions/permissions.module').then(m => m.PermissionsModule), - }, - { - path: 'license-info', - component: BaseAdminScreenComponent, - canActivate: [IqserAuthGuard, IqserPermissionsGuard, RedRoleGuard], - data: { - permissions: { - allow: [Roles.license.readReport, 'RED_ADMIN'], - redirectTo: '/', - }, - }, - loadChildren: () => import('./screens/license/license.module').then(m => m.LicenseModule), - }, - { - path: 'digital-signature', - component: BaseAdminScreenComponent, - children: [ { - path: '', + path: 'dossier-permissions', + loadComponent: () => import('./screens/permissions/permissions-screen/permissions-screen.component'), + canActivate: [CompositeRouteGuard, IqserPermissionsGuard], + data: { + routeGuards: [IqserAuthGuard, RedRoleGuard, PermissionsGuard], + permissionsObject: 'Dossier', + permissions: { + allow: [Roles.manageAclPermissions, 'RED_ADMIN'], + redirectTo: '/', + }, + }, + }, + { + path: 'license-info', + loadComponent: () => import('./screens/license/license-screen/license-screen.component'), + canActivate: [IqserAuthGuard, IqserPermissionsGuard, RedRoleGuard], + data: { + permissions: { + allow: [Roles.license.readReport, 'RED_ADMIN'], + redirectTo: '/', + }, + }, + resolve: { + licenseData: () => inject(LicenseService).loadLicenseData(), + }, + }, + { + path: 'digital-signature', component: DigitalSignatureScreenComponent, + canActivate: [IqserAuthGuard, IqserPermissionsGuard, RedRoleGuard], + data: { + permissions: { + allow: [Roles.digitalSignature.read, 'RED_ADMIN'], + redirectTo: '/', + }, + }, }, - ], - canActivate: [IqserAuthGuard, IqserPermissionsGuard, RedRoleGuard], - data: { - permissions: { - allow: [Roles.digitalSignature.read, 'RED_ADMIN'], - redirectTo: '/', - }, - }, - }, - { - path: 'audit', - component: BaseAdminScreenComponent, - children: [ { - path: '', + path: 'audit', component: AuditScreenComponent, + canActivate: [IqserAuthGuard, IqserPermissionsGuard, RedRoleGuard], + data: { + permissions: { + allow: [Roles.searchAudit, 'RED_ADMIN'], + redirectTo: '/', + }, + }, }, - ], - canActivate: [IqserAuthGuard, IqserPermissionsGuard, RedRoleGuard], - data: { - permissions: { - allow: [Roles.searchAudit, 'RED_ADMIN'], - redirectTo: '/', - }, - }, - }, - { - path: 'general-config', - component: BaseAdminScreenComponent, - children: [ { - path: '', + path: 'general-config', component: GeneralConfigScreenComponent, + canActivate: [CompositeRouteGuard, IqserPermissionsGuard], + canDeactivate: [PendingChangesGuard], + data: { + routeGuards: [IqserAuthGuard, RedRoleGuard], + permissions: { + allow: [Roles.generalConfiguration.read, Roles.smtp.read, 'RED_ADMIN'], + redirectTo: '/', + }, + }, }, + { path: '', redirectTo: 'dossier-templates', pathMatch: 'full' }, ], - canActivate: [CompositeRouteGuard, IqserPermissionsGuard], - canDeactivate: [PendingChangesGuard], - data: { - routeGuards: [IqserAuthGuard, RedRoleGuard], - permissions: { - allow: [Roles.generalConfiguration.read, Roles.smtp.read, 'RED_ADMIN'], - redirectTo: '/', - }, - }, }, ]; diff --git a/apps/red-ui/src/app/modules/admin/screens/default-colors/default-colors-screen.component.html b/apps/red-ui/src/app/modules/admin/screens/default-colors/default-colors-screen.component.html index 27df03721..0a4bfb36e 100644 --- a/apps/red-ui/src/app/modules/admin/screens/default-colors/default-colors-screen.component.html +++ b/apps/red-ui/src/app/modules/admin/screens/default-colors/default-colors-screen.component.html @@ -1,29 +1,6 @@ -
- - -
-
- - - -
- -
-
-
+
+ +
diff --git a/apps/red-ui/src/app/modules/admin/screens/dossier-attributes-listing/dossier-attributes-listing-screen.component.ts b/apps/red-ui/src/app/modules/admin/screens/dossier-attributes-listing/dossier-attributes-listing-screen.component.ts index 576c1878b..c186dd557 100644 --- a/apps/red-ui/src/app/modules/admin/screens/dossier-attributes-listing/dossier-attributes-listing-screen.component.ts +++ b/apps/red-ui/src/app/modules/admin/screens/dossier-attributes-listing/dossier-attributes-listing-screen.component.ts @@ -2,8 +2,12 @@ import { Component, OnInit, TemplateRef, ViewChild } from '@angular/core'; import { MatDialog } from '@angular/material/dialog'; import { marker as _ } from '@biesbjerg/ngx-translate-extract-marker'; import { + CircleButtonComponent, defaultDialogConfig, + IconButtonComponent, IconButtonTypes, + InputWithActionComponent, + IqserListingModule, ListingComponent, listingProvidersFactory, LoadingService, @@ -20,6 +24,9 @@ import { AddEditDossierAttributeDialogComponent, AddEditDossierAttributeDialogData, } from './add-edit-dossier-attribute-dialog/add-edit-dossier-attribute-dialog.component'; +import { TranslateModule } from '@ngx-translate/core'; +import { AsyncPipe, NgForOf, NgIf } from '@angular/common'; +import { TableItemComponent } from './table-item/table-item.component'; @Component({ templateUrl: './dossier-attributes-listing-screen.component.html', @@ -28,8 +35,20 @@ import { entitiesService: DossierAttributesService, component: DossierAttributesListingScreenComponent, }), + standalone: true, + imports: [ + IqserListingModule, + TranslateModule, + CircleButtonComponent, + AsyncPipe, + NgIf, + InputWithActionComponent, + IconButtonComponent, + NgForOf, + TableItemComponent, + ], }) -export class DossierAttributesListingScreenComponent extends ListingComponent implements OnInit { +export default class DossierAttributesListingScreenComponent extends ListingComponent implements OnInit { readonly #dossierTemplateId = getParam(DOSSIER_TEMPLATE_ID); readonly iconButtonTypes = IconButtonTypes; readonly currentUser = getCurrentUser(); diff --git a/apps/red-ui/src/app/modules/admin/screens/dossier-attributes-listing/dossier-attributes-listing.module.ts b/apps/red-ui/src/app/modules/admin/screens/dossier-attributes-listing/dossier-attributes-listing.module.ts deleted file mode 100644 index e7ce656fd..000000000 --- a/apps/red-ui/src/app/modules/admin/screens/dossier-attributes-listing/dossier-attributes-listing.module.ts +++ /dev/null @@ -1,38 +0,0 @@ -import { NgModule } from '@angular/core'; -import { DossierAttributesListingScreenComponent } from './dossier-attributes-listing-screen.component'; -import { CommonModule } from '@angular/common'; -import { - CircleButtonComponent, - IconButtonComponent, - InputWithActionComponent, - IqserHelpModeModule, - IqserListingModule, - IqserRoutes, -} from '@iqser/common-ui'; -import { RouterModule } from '@angular/router'; -import { TranslateModule } from '@ngx-translate/core'; -import { MatTooltipModule } from '@angular/material/tooltip'; -import { TableItemComponent } from './table-item/table-item.component'; - -const routes: IqserRoutes = [ - { - path: '', - component: DossierAttributesListingScreenComponent, - }, -]; - -@NgModule({ - declarations: [DossierAttributesListingScreenComponent, TableItemComponent], - imports: [ - CommonModule, - RouterModule.forChild(routes), - TranslateModule, - CircleButtonComponent, - InputWithActionComponent, - IconButtonComponent, - IqserHelpModeModule, - MatTooltipModule, - IqserListingModule, - ], -}) -export class DossierAttributesListingModule {} diff --git a/apps/red-ui/src/app/modules/admin/screens/dossier-attributes-listing/table-item/table-item.component.ts b/apps/red-ui/src/app/modules/admin/screens/dossier-attributes-listing/table-item/table-item.component.ts index 03cd1c36b..90d7298b7 100644 --- a/apps/red-ui/src/app/modules/admin/screens/dossier-attributes-listing/table-item/table-item.component.ts +++ b/apps/red-ui/src/app/modules/admin/screens/dossier-attributes-listing/table-item/table-item.component.ts @@ -1,11 +1,17 @@ import { Component, EventEmitter, Input, Output } from '@angular/core'; import { DossierAttributeConfig, IDossierAttributeConfig } from '@red/domain'; import { dossierAttributeTypesTranslations } from '@translations/dossier-attribute-types-translations'; +import { MatTooltip } from '@angular/material/tooltip'; +import { TranslateModule } from '@ngx-translate/core'; +import { CircleButtonComponent } from '@iqser/common-ui'; +import { NgIf } from '@angular/common'; @Component({ selector: 'redaction-table-item [attribute] [canEditDossierAttributes]', templateUrl: './table-item.component.html', styleUrls: ['./table-item.component.scss'], + standalone: true, + imports: [MatTooltip, TranslateModule, CircleButtonComponent, NgIf], }) export class TableItemComponent { readonly translations = dossierAttributeTypesTranslations; diff --git a/apps/red-ui/src/app/modules/admin/screens/dossier-states-listing/add-edit-dossier-state-dialog/add-edit-dossier-state-dialog.component.ts b/apps/red-ui/src/app/modules/admin/screens/dossier-states-listing/add-edit-dossier-state-dialog/add-edit-dossier-state-dialog.component.ts index 70f623695..f989b751c 100644 --- a/apps/red-ui/src/app/modules/admin/screens/dossier-states-listing/add-edit-dossier-state-dialog/add-edit-dossier-state-dialog.component.ts +++ b/apps/red-ui/src/app/modules/admin/screens/dossier-states-listing/add-edit-dossier-state-dialog/add-edit-dossier-state-dialog.component.ts @@ -1,10 +1,14 @@ import { Component, Inject } from '@angular/core'; -import { BaseDialogComponent } from '@iqser/common-ui'; -import { Validators } from '@angular/forms'; +import { BaseDialogComponent, CircleButtonComponent, IconButtonComponent } from '@iqser/common-ui'; +import { ReactiveFormsModule, Validators } from '@angular/forms'; import { IDossierState } from '@red/domain'; import { DossierStatesService } from '@services/entity-services/dossier-states.service'; import { marker as _ } from '@biesbjerg/ngx-translate-extract-marker'; import { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog'; +import { TranslateModule } from '@ngx-translate/core'; +import { ColorPickerModule } from 'ngx-color-picker'; +import { MatIcon } from '@angular/material/icon'; +import { NgIf } from '@angular/common'; export interface AddEditDossierStateDialogData { readonly dossierState?: IDossierState; @@ -14,6 +18,8 @@ export interface AddEditDossierStateDialogData { @Component({ templateUrl: './add-edit-dossier-state-dialog.component.html', styleUrls: ['./add-edit-dossier-state-dialog.component.scss'], + standalone: true, + imports: [TranslateModule, ReactiveFormsModule, ColorPickerModule, MatIcon, NgIf, IconButtonComponent, CircleButtonComponent], }) export class AddEditDossierStateDialogComponent extends BaseDialogComponent { readonly type = this.data.dossierState ? 'edit' : 'create'; diff --git a/apps/red-ui/src/app/modules/admin/screens/dossier-states-listing/confirm-delete-dossier-state-dialog/confirm-delete-dossier-state-dialog.component.ts b/apps/red-ui/src/app/modules/admin/screens/dossier-states-listing/confirm-delete-dossier-state-dialog/confirm-delete-dossier-state-dialog.component.ts index bf8db1b8b..bd0e871f1 100644 --- a/apps/red-ui/src/app/modules/admin/screens/dossier-states-listing/confirm-delete-dossier-state-dialog/confirm-delete-dossier-state-dialog.component.ts +++ b/apps/red-ui/src/app/modules/admin/screens/dossier-states-listing/confirm-delete-dossier-state-dialog/confirm-delete-dossier-state-dialog.component.ts @@ -1,13 +1,18 @@ import { Component, Inject } from '@angular/core'; import { DossierState } from '@red/domain'; import { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog'; -import { FormBuilder } from '@angular/forms'; +import { FormBuilder, ReactiveFormsModule } from '@angular/forms'; import { marker as _ } from '@biesbjerg/ngx-translate-extract-marker'; import { combineLatest, firstValueFrom } from 'rxjs'; import { DossierStatesService } from '@services/entity-services/dossier-states.service'; -import { IconButtonTypes, LoadingService, Toaster } from '@iqser/common-ui'; +import { CircleButtonComponent, IconButtonComponent, IconButtonTypes, LoadingService, Toaster } from '@iqser/common-ui'; import { ActiveDossiersService } from '@services/dossiers/active-dossiers.service'; import { ArchivedDossiersService } from '@services/dossiers/archived-dossiers.service'; +import { TranslateModule } from '@ngx-translate/core'; +import { MatCheckbox } from '@angular/material/checkbox'; +import { MatFormField } from '@angular/material/form-field'; +import { MatOption, MatSelect } from '@angular/material/select'; +import { NgForOf, NgIf } from '@angular/common'; export interface ConfirmDeleteDossierStateDialogData { readonly toBeDeletedState: DossierState; @@ -18,6 +23,19 @@ export interface ConfirmDeleteDossierStateDialogData { @Component({ templateUrl: './confirm-delete-dossier-state-dialog.component.html', styleUrls: ['./confirm-delete-dossier-state-dialog.component.scss'], + standalone: true, + imports: [ + TranslateModule, + ReactiveFormsModule, + MatCheckbox, + MatFormField, + MatSelect, + MatOption, + NgForOf, + IconButtonComponent, + CircleButtonComponent, + NgIf, + ], }) export class ConfirmDeleteDossierStateDialogComponent { readonly iconButtonTypes = IconButtonTypes; diff --git a/apps/red-ui/src/app/modules/admin/screens/dossier-states-listing/dossier-states-listing-screen/dossier-states-listing-screen.component.ts b/apps/red-ui/src/app/modules/admin/screens/dossier-states-listing/dossier-states-listing-screen/dossier-states-listing-screen.component.ts index 730e83923..5644f963c 100644 --- a/apps/red-ui/src/app/modules/admin/screens/dossier-states-listing/dossier-states-listing-screen/dossier-states-listing-screen.component.ts +++ b/apps/red-ui/src/app/modules/admin/screens/dossier-states-listing/dossier-states-listing-screen/dossier-states-listing-screen.component.ts @@ -1,7 +1,10 @@ import { Component, OnDestroy, OnInit } from '@angular/core'; import { defaultDialogConfig, + IconButtonComponent, IconButtonTypes, + InputWithActionComponent, + IqserListingModule, ListingComponent, listingProvidersFactory, LoadingService, @@ -21,13 +24,28 @@ import { } from '../add-edit-dossier-state-dialog/add-edit-dossier-state-dialog.component'; import { SortingOrders } from '@iqser/common-ui/lib/sorting'; import { getParam } from '@iqser/common-ui/lib/utils'; +import { DonutChartComponent } from '@shared/components/donut-chart/donut-chart.component'; +import { AsyncPipe, NgIf } from '@angular/common'; +import { TranslateModule } from '@ngx-translate/core'; +import { DossierStatesTableItemComponent } from '../dossier-states-table-item/dossier-states-table-item.component'; @Component({ templateUrl: './dossier-states-listing-screen.component.html', styleUrls: ['./dossier-states-listing-screen.component.scss'], providers: listingProvidersFactory(DossierStatesListingScreenComponent), + standalone: true, + imports: [ + IqserListingModule, + DonutChartComponent, + AsyncPipe, + NgIf, + TranslateModule, + InputWithActionComponent, + IconButtonComponent, + DossierStatesTableItemComponent, + ], }) -export class DossierStatesListingScreenComponent extends ListingComponent implements OnInit, OnDestroy { +export default class DossierStatesListingScreenComponent extends ListingComponent implements OnInit, OnDestroy { readonly #dossierTemplateId = getParam(DOSSIER_TEMPLATE_ID); readonly iconButtonTypes = IconButtonTypes; readonly tableHeaderLabel = _('dossier-states-listing.table-header.title'); diff --git a/apps/red-ui/src/app/modules/admin/screens/dossier-states-listing/dossier-states-listing.module.ts b/apps/red-ui/src/app/modules/admin/screens/dossier-states-listing/dossier-states-listing.module.ts deleted file mode 100644 index 4e5910f8a..000000000 --- a/apps/red-ui/src/app/modules/admin/screens/dossier-states-listing/dossier-states-listing.module.ts +++ /dev/null @@ -1,62 +0,0 @@ -import { NgModule } from '@angular/core'; -import { CommonModule } from '@angular/common'; -import { DossierStatesListingScreenComponent } from './dossier-states-listing-screen/dossier-states-listing-screen.component'; -import { DossierStatesTableItemComponent } from './dossier-states-table-item/dossier-states-table-item.component'; -import { RouterModule } from '@angular/router'; -import { - CircleButtonComponent, - IconButtonComponent, - InputWithActionComponent, - IqserHelpModeModule, - IqserListingModule, -} from '@iqser/common-ui'; -import { MatTooltipModule } from '@angular/material/tooltip'; -import { TranslateModule } from '@ngx-translate/core'; -import { DonutChartComponent } from '@shared/components/donut-chart/donut-chart.component'; -import { AdminSideNavComponent } from '../../shared/components/admin-side-nav/admin-side-nav.component'; -import { DossierTemplateActionsComponent } from '../../shared/components/dossier-template-actions/dossier-template-actions.component'; -import { DossierTemplateBreadcrumbsComponent } from '../../shared/components/dossier-template-breadcrumbs/dossier-template-breadcrumbs.component'; -import { AddEditDossierStateDialogComponent } from './add-edit-dossier-state-dialog/add-edit-dossier-state-dialog.component'; -import { ReactiveFormsModule } from '@angular/forms'; -import { ColorPickerModule } from 'ngx-color-picker'; -import { MatIconModule } from '@angular/material/icon'; -import { ConfirmDeleteDossierStateDialogComponent } from './confirm-delete-dossier-state-dialog/confirm-delete-dossier-state-dialog.component'; -import { MatSelectModule } from '@angular/material/select'; -import { MatDialogModule } from '@angular/material/dialog'; -import { MatCheckboxModule } from '@angular/material/checkbox'; - -@NgModule({ - declarations: [ - DossierStatesListingScreenComponent, - DossierStatesTableItemComponent, - AddEditDossierStateDialogComponent, - ConfirmDeleteDossierStateDialogComponent, - ], - imports: [ - CommonModule, - RouterModule.forChild([ - { - path: '', - component: DossierStatesListingScreenComponent, - }, - ]), - MatDialogModule, - CircleButtonComponent, - IqserHelpModeModule, - MatTooltipModule, - IconButtonComponent, - TranslateModule, - IqserListingModule, - DonutChartComponent, - AdminSideNavComponent, - DossierTemplateActionsComponent, - InputWithActionComponent, - DossierTemplateBreadcrumbsComponent, - ReactiveFormsModule, - ColorPickerModule, - MatIconModule, - MatCheckboxModule, - MatSelectModule, - ], -}) -export class DossierStatesListingModule {} diff --git a/apps/red-ui/src/app/modules/admin/screens/dossier-states-listing/dossier-states-table-item/dossier-states-table-item.component.ts b/apps/red-ui/src/app/modules/admin/screens/dossier-states-listing/dossier-states-table-item/dossier-states-table-item.component.ts index 1a81dbc2d..93dad3a49 100644 --- a/apps/red-ui/src/app/modules/admin/screens/dossier-states-listing/dossier-states-table-item/dossier-states-table-item.component.ts +++ b/apps/red-ui/src/app/modules/admin/screens/dossier-states-listing/dossier-states-table-item/dossier-states-table-item.component.ts @@ -1,6 +1,6 @@ import { Component, inject, Input } from '@angular/core'; import { MatDialog } from '@angular/material/dialog'; -import { defaultDialogConfig, EntitiesService } from '@iqser/common-ui'; +import { CircleButtonComponent, defaultDialogConfig, EntitiesService } from '@iqser/common-ui'; import { DossierState, IDossierState } from '@red/domain'; import { PermissionsService } from '@services/permissions.service'; import { @@ -11,11 +11,16 @@ import { ConfirmDeleteDossierStateDialogComponent, ConfirmDeleteDossierStateDialogData, } from '../confirm-delete-dossier-state-dialog/confirm-delete-dossier-state-dialog.component'; +import { MatTooltip } from '@angular/material/tooltip'; +import { TranslateModule } from '@ngx-translate/core'; +import { NgIf } from '@angular/common'; @Component({ selector: 'redaction-dossier-states-table-item', templateUrl: './dossier-states-table-item.component.html', styleUrls: ['./dossier-states-table-item.component.scss'], + standalone: true, + imports: [MatTooltip, CircleButtonComponent, TranslateModule, NgIf], }) export class DossierStatesTableItemComponent { readonly #dialog = inject(MatDialog); diff --git a/apps/red-ui/src/app/modules/admin/screens/dossier-templates-listing/dossier-templates-listing-screen/dossier-templates-listing-screen.component.ts b/apps/red-ui/src/app/modules/admin/screens/dossier-templates-listing/dossier-templates-listing-screen/dossier-templates-listing-screen.component.ts index fa61c02bf..585f709d0 100644 --- a/apps/red-ui/src/app/modules/admin/screens/dossier-templates-listing/dossier-templates-listing-screen/dossier-templates-listing-screen.component.ts +++ b/apps/red-ui/src/app/modules/admin/screens/dossier-templates-listing/dossier-templates-listing-screen/dossier-templates-listing-screen.component.ts @@ -1,7 +1,12 @@ import { ChangeDetectionStrategy, Component, OnInit } from '@angular/core'; import { marker as _ } from '@biesbjerg/ngx-translate-extract-marker'; import { + CircleButtonComponent, + IconButtonComponent, IconButtonTypes, + InputWithActionComponent, + IqserAllowDirective, + IqserListingModule, IqserPermissionsService, ListingComponent, listingProvidersFactory, @@ -16,6 +21,9 @@ import { Roles } from '@users/roles'; import { UserPreferenceService } from '@users/user-preference.service'; import { firstValueFrom } from 'rxjs'; import { AdminDialogService } from '../../../services/admin-dialog.service'; +import { TranslateModule } from '@ngx-translate/core'; +import { AsyncPipe } from '@angular/common'; +import { TableItemComponent } from '../table-item/table-item.component'; @Component({ templateUrl: './dossier-templates-listing-screen.component.html', @@ -25,8 +33,19 @@ import { AdminDialogService } from '../../../services/admin-dialog.service'; entitiesService: DossierTemplatesService, component: DossierTemplatesListingScreenComponent, }), + standalone: true, + imports: [ + IqserListingModule, + TranslateModule, + AsyncPipe, + CircleButtonComponent, + IqserAllowDirective, + InputWithActionComponent, + IconButtonComponent, + TableItemComponent, + ], }) -export class DossierTemplatesListingScreenComponent extends ListingComponent implements OnInit { +export default class DossierTemplatesListingScreenComponent extends ListingComponent implements OnInit { readonly iconButtonTypes = IconButtonTypes; readonly roles = Roles; readonly currentUser = getCurrentUser(); @@ -58,7 +77,7 @@ export class DossierTemplatesListingScreenComponent extends ListingComponent { - this._loadingService.loadWhile(this._deleteTemplates()); + this._loadingService.loadWhile(this.#deleteTemplates()); }); } @@ -66,7 +85,7 @@ export class DossierTemplatesListingScreenComponent extends ListingComponent d.dossierTemplateId)) { + async #deleteTemplates(templateIds = this.listingService.selected.map(d => d.dossierTemplateId)) { await firstValueFrom(this._dossierTemplatesService.delete(templateIds)); } } diff --git a/apps/red-ui/src/app/modules/admin/screens/dossier-templates-listing/dossier-templates-listing.module.ts b/apps/red-ui/src/app/modules/admin/screens/dossier-templates-listing/dossier-templates-listing.module.ts deleted file mode 100644 index b0dc3dc8f..000000000 --- a/apps/red-ui/src/app/modules/admin/screens/dossier-templates-listing/dossier-templates-listing.module.ts +++ /dev/null @@ -1,39 +0,0 @@ -import { NgModule } from '@angular/core'; -import { CommonModule } from '@angular/common'; -import { RouterModule } from '@angular/router'; -import { SharedModule } from '@shared/shared.module'; -import { TableItemComponent } from './table-item/table-item.component'; -import { DossierTemplatesListingScreenComponent } from './dossier-templates-listing-screen/dossier-templates-listing-screen.component'; -import { - CircleButtonComponent, - IconButtonComponent, - InputWithActionComponent, - IqserAllowDirective, - IqserHelpModeModule, - IqserListingModule, - IqserRoutes, -} from '@iqser/common-ui'; -import { TranslateModule } from '@ngx-translate/core'; -import { DossierTemplateActionsComponent } from '../../shared/components/dossier-template-actions/dossier-template-actions.component'; -import { IqserUsersModule } from '@iqser/common-ui/lib/users'; - -const routes: IqserRoutes = [{ path: '', component: DossierTemplatesListingScreenComponent }]; - -@NgModule({ - declarations: [TableItemComponent, DossierTemplatesListingScreenComponent], - imports: [ - RouterModule.forChild(routes), - CommonModule, - SharedModule, - IqserUsersModule, - TranslateModule, - IqserListingModule, - IqserHelpModeModule, - DossierTemplateActionsComponent, - CircleButtonComponent, - IconButtonComponent, - InputWithActionComponent, - IqserAllowDirective, - ], -}) -export class DossierTemplatesListingModule {} 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 2c9f4c4e7..ecda4d86b 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 @@ -4,12 +4,20 @@ import { BehaviorSubject, Observable } from 'rxjs'; import { DossierTemplateStatsService } from '@services/entity-services/dossier-template-stats.service'; 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 { MatIcon } from '@angular/material/icon'; +import { TranslateModule } from '@ngx-translate/core'; +import { IqserUsersModule } from '@common-ui/users'; +import { DossierTemplateActionsComponent } from '../../../shared/components/dossier-template-actions/dossier-template-actions.component'; @Component({ selector: 'redaction-table-item [dossierTemplate]', templateUrl: './table-item.component.html', styleUrls: ['./table-item.component.scss'], changeDetection: ChangeDetectionStrategy.OnPush, + standalone: true, + imports: [MatTooltip, NgIf, AsyncPipe, MatIcon, TranslateModule, IqserUsersModule, DatePipe, DossierTemplateActionsComponent], }) export class TableItemComponent implements OnChanges { @Input() dossierTemplate!: DossierTemplate; diff --git a/apps/red-ui/src/app/modules/admin/screens/entities-listing/entities-listing-screen.component.html b/apps/red-ui/src/app/modules/admin/screens/entities-listing/entities-listing-screen.component.html index dd78bc33b..208e2504f 100644 --- a/apps/red-ui/src/app/modules/admin/screens/entities-listing/entities-listing-screen.component.html +++ b/apps/red-ui/src/app/modules/admin/screens/entities-listing/entities-listing-screen.component.html @@ -1,41 +1,18 @@ -
- - -
-
- - - -
- -
-
-
+
+ +
implements OnChanges { readonly translations = fileAttributeTypesTranslations; diff --git a/apps/red-ui/src/app/modules/admin/screens/file-attributes-listing/file-attributes-csv-import-dialog/file-attributes-csv-import-dialog.component.ts b/apps/red-ui/src/app/modules/admin/screens/file-attributes-listing/file-attributes-csv-import-dialog/file-attributes-csv-import-dialog.component.ts index 19abe8403..e9f36d9cf 100644 --- a/apps/red-ui/src/app/modules/admin/screens/file-attributes-listing/file-attributes-csv-import-dialog/file-attributes-csv-import-dialog.component.ts +++ b/apps/red-ui/src/app/modules/admin/screens/file-attributes-listing/file-attributes-csv-import-dialog/file-attributes-csv-import-dialog.component.ts @@ -1,15 +1,30 @@ import { ChangeDetectionStrategy, Component, Inject } from '@angular/core'; -import { AbstractControl, UntypedFormBuilder, UntypedFormGroup, ValidatorFn, Validators } from '@angular/forms'; +import { AbstractControl, ReactiveFormsModule, UntypedFormBuilder, UntypedFormGroup, ValidatorFn, Validators } from '@angular/forms'; import { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog'; import * as Papa from 'papaparse'; import { firstValueFrom, Observable } from 'rxjs'; import { map, startWith } from 'rxjs/operators'; -import { IconButtonTypes, ListingComponent, listingProvidersFactory, TableColumnConfig, Toaster } from '@iqser/common-ui'; +import { + CircleButtonComponent, + IconButtonComponent, + IconButtonTypes, + InputWithActionComponent, + IqserTranslateModule, + ListingComponent, + listingProvidersFactory, + TableColumnConfig, + Toaster, +} from '@iqser/common-ui'; import { marker as _ } from '@biesbjerg/ngx-translate-extract-marker'; import { FileAttributeConfig, FileAttributeConfigTypes, FileAttributeEncodingTypes, IField, IFileAttributesConfig } from '@red/domain'; import { FileAttributesService } from '@services/entity-services/file-attributes.service'; import { fileAttributeEncodingTypesTranslations } from '@translations/file-attribute-encoding-types-translations'; import { trackByFactory } from '@iqser/common-ui/lib/utils'; +import { MatFormField } from '@angular/material/form-field'; +import { MatAutocomplete, MatAutocompleteTrigger, MatOption } from '@angular/material/autocomplete'; +import { AsyncPipe, NgForOf, NgIf } from '@angular/common'; +import { MatSelect } from '@angular/material/select'; +import { ActiveFieldsListingComponent } from './active-fields-listing/active-fields-listing.component'; export interface IFileAttributesCSVImportData { readonly csv: File; @@ -22,6 +37,23 @@ export interface IFileAttributesCSVImportData { styleUrls: ['./file-attributes-csv-import-dialog.component.scss'], providers: listingProvidersFactory(), changeDetection: ChangeDetectionStrategy.OnPush, + standalone: true, + imports: [ + IqserTranslateModule, + ReactiveFormsModule, + MatFormField, + MatAutocompleteTrigger, + MatAutocomplete, + AsyncPipe, + MatOption, + MatSelect, + CircleButtonComponent, + NgIf, + InputWithActionComponent, + IconButtonComponent, + NgForOf, + ActiveFieldsListingComponent, + ], }) export class FileAttributesCsvImportDialogComponent extends ListingComponent { readonly iconButtonTypes = IconButtonTypes; diff --git a/apps/red-ui/src/app/modules/admin/screens/file-attributes-listing/file-attributes-csv-import-dialog/file-attributes-csv-import-dialog.module.ts b/apps/red-ui/src/app/modules/admin/screens/file-attributes-listing/file-attributes-csv-import-dialog/file-attributes-csv-import-dialog.module.ts deleted file mode 100644 index c7f221f32..000000000 --- a/apps/red-ui/src/app/modules/admin/screens/file-attributes-listing/file-attributes-csv-import-dialog/file-attributes-csv-import-dialog.module.ts +++ /dev/null @@ -1,47 +0,0 @@ -import { NgModule } from '@angular/core'; -import { FileAttributesCsvImportDialogComponent } from './file-attributes-csv-import-dialog.component'; -import { ActiveFieldsListingComponent } from './active-fields-listing/active-fields-listing.component'; -import { - ChevronButtonComponent, - CircleButtonComponent, - EditableInputComponent, - IconButtonComponent, - InputWithActionComponent, - IqserListingModule, - RoundCheckboxComponent, -} from '@iqser/common-ui'; -import { CommonModule } from '@angular/common'; -import { TranslateModule } from '@ngx-translate/core'; -import { MatDialogModule } from '@angular/material/dialog'; -import { MatFormFieldModule } from '@angular/material/form-field'; -import { MatSelectModule } from '@angular/material/select'; -import { FormsModule, ReactiveFormsModule } from '@angular/forms'; -import { MatAutocompleteModule } from '@angular/material/autocomplete'; -import { MatInputModule } from '@angular/material/input'; -import { MatMenuModule } from '@angular/material/menu'; -import { MatSlideToggleModule } from '@angular/material/slide-toggle'; - -@NgModule({ - declarations: [FileAttributesCsvImportDialogComponent, ActiveFieldsListingComponent], - imports: [ - CommonModule, - CircleButtonComponent, - TranslateModule, - MatDialogModule, - IconButtonComponent, - InputWithActionComponent, - MatFormFieldModule, - MatSelectModule, - ReactiveFormsModule, - MatAutocompleteModule, - MatInputModule, - IqserListingModule, - MatMenuModule, - ChevronButtonComponent, - EditableInputComponent, - FormsModule, - MatSlideToggleModule, - RoundCheckboxComponent, - ], -}) -export class FileAttributesCsvImportDialogModule {} diff --git a/apps/red-ui/src/app/modules/admin/screens/file-attributes-listing/file-attributes-listing-screen.component.ts b/apps/red-ui/src/app/modules/admin/screens/file-attributes-listing/file-attributes-listing-screen.component.ts index ae1f798a6..7fb89faab 100644 --- a/apps/red-ui/src/app/modules/admin/screens/file-attributes-listing/file-attributes-listing-screen.component.ts +++ b/apps/red-ui/src/app/modules/admin/screens/file-attributes-listing/file-attributes-listing-screen.component.ts @@ -3,12 +3,18 @@ import { Component, ElementRef, OnDestroy, OnInit, TemplateRef, ViewChild } from import { MatDialog } from '@angular/material/dialog'; import { marker as _ } from '@biesbjerg/ngx-translate-extract-marker'; import { + CircleButtonComponent, defaultDialogConfig, + IconButtonComponent, IconButtonTypes, + InputWithActionComponent, + IqserAllowDirective, + IqserListingModule, largeDialogConfig, ListingComponent, listingProvidersFactory, LoadingService, + RoundCheckboxComponent, TableColumnConfig, Toaster, } from '@iqser/common-ui'; @@ -31,13 +37,32 @@ import { FileAttributesCsvImportDialogComponent, IFileAttributesCSVImportData, } from './file-attributes-csv-import-dialog/file-attributes-csv-import-dialog.component'; +import { AsyncPipe, NgForOf, NgIf } from '@angular/common'; +import { MatIcon } from '@angular/material/icon'; +import { MatTooltip } from '@angular/material/tooltip'; +import { TranslateModule } from '@ngx-translate/core'; @Component({ templateUrl: './file-attributes-listing-screen.component.html', styleUrls: ['./file-attributes-listing-screen.component.scss'], providers: listingProvidersFactory(FileAttributesListingScreenComponent), + standalone: true, + imports: [ + IqserListingModule, + NgForOf, + TranslateModule, + CircleButtonComponent, + NgIf, + AsyncPipe, + InputWithActionComponent, + IqserAllowDirective, + IconButtonComponent, + MatIcon, + MatTooltip, + RoundCheckboxComponent, + ], }) -export class FileAttributesListingScreenComponent extends ListingComponent implements OnInit, OnDestroy { +export default class FileAttributesListingScreenComponent extends ListingComponent implements OnInit, OnDestroy { @ViewChild('impactedTemplates') private readonly _impactedTemplatesRef: TemplateRef; #existingConfiguration: IFileAttributesConfig; @ViewChild('fileInput') private _fileInput: ElementRef; diff --git a/apps/red-ui/src/app/modules/admin/screens/file-attributes-listing/file-attributes-listing.module.ts b/apps/red-ui/src/app/modules/admin/screens/file-attributes-listing/file-attributes-listing.module.ts deleted file mode 100644 index 07b2937e3..000000000 --- a/apps/red-ui/src/app/modules/admin/screens/file-attributes-listing/file-attributes-listing.module.ts +++ /dev/null @@ -1,43 +0,0 @@ -import { NgModule } from '@angular/core'; -import { FileAttributesListingScreenComponent } from './file-attributes-listing-screen.component'; -import { RouterModule } from '@angular/router'; -import { - CircleButtonComponent, - IconButtonComponent, - InputWithActionComponent, - IqserAllowDirective, - IqserHelpModeModule, - IqserListingModule, - IqserRoutes, - RoundCheckboxComponent, -} from '@iqser/common-ui'; -import { CommonModule } from '@angular/common'; -import { TranslateModule } from '@ngx-translate/core'; -import { MatIconModule } from '@angular/material/icon'; -import { MatTooltipModule } from '@angular/material/tooltip'; - -const routes: IqserRoutes = [ - { - path: '', - component: FileAttributesListingScreenComponent, - }, -]; - -@NgModule({ - declarations: [FileAttributesListingScreenComponent], - imports: [ - CommonModule, - RouterModule.forChild(routes), - IqserListingModule, - TranslateModule, - CircleButtonComponent, - InputWithActionComponent, - IqserHelpModeModule, - IqserAllowDirective, - IconButtonComponent, - MatIconModule, - MatTooltipModule, - RoundCheckboxComponent, - ], -}) -export class FileAttributesListingModule {} diff --git a/apps/red-ui/src/app/modules/admin/screens/general-config/general-config-screen.component.ts b/apps/red-ui/src/app/modules/admin/screens/general-config/general-config-screen.component.ts index c5c2c7f03..3dfa5c33e 100644 --- a/apps/red-ui/src/app/modules/admin/screens/general-config/general-config-screen.component.ts +++ b/apps/red-ui/src/app/modules/admin/screens/general-config/general-config-screen.component.ts @@ -4,7 +4,7 @@ import { GeneralConfigFormComponent } from './general-config-form/general-config import { SmtpFormComponent } from './smtp-form/smtp-form.component'; import { BaseFormComponent } from '@iqser/common-ui'; import { SystemPreferencesFormComponent } from './system-preferences-form/system-preferences-form.component'; -import { RouterHistoryService } from '../../../../services/router-history.service'; +import { RouterHistoryService } from '@services/router-history.service'; @Component({ selector: 'redaction-general-config-screen', 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 2ddbd44f7..7b197262b 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,6 +4,10 @@ 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 { IqserUsersModule } from '@common-ui/users'; +import { MatIcon } from '@angular/material/icon'; +import { TranslateModule } from '@ngx-translate/core'; interface Context { readonly dossierTemplate: DossierTemplate; @@ -14,6 +18,8 @@ interface Context { selector: 'redaction-dossier-template-details', templateUrl: './dossier-template-details.component.html', styleUrls: ['./dossier-template-details.component.scss'], + standalone: true, + imports: [NgIf, AsyncPipe, IqserUsersModule, MatIcon, TranslateModule, DatePipe], }) export class DossierTemplateDetailsComponent extends ContextComponent implements OnInit { readonly translations = dossierTemplateStatusTranslations; diff --git a/apps/red-ui/src/app/modules/admin/screens/info/dossier-template-info-screen/dossier-template-info-screen.component.ts b/apps/red-ui/src/app/modules/admin/screens/info/dossier-template-info-screen/dossier-template-info-screen.component.ts index 3cf61bb37..0d21402f1 100644 --- a/apps/red-ui/src/app/modules/admin/screens/info/dossier-template-info-screen/dossier-template-info-screen.component.ts +++ b/apps/red-ui/src/app/modules/admin/screens/info/dossier-template-info-screen/dossier-template-info-screen.component.ts @@ -1,5 +1,13 @@ import { Component, OnInit, signal, untracked, WritableSignal } from '@angular/core'; -import { BaseFormComponent, getConfig, IconButtonTypes, LoadingService, Toaster } from '@iqser/common-ui'; +import { + BaseFormComponent, + getConfig, + HasScrollbarDirective, + IconButtonComponent, + IconButtonTypes, + LoadingService, + Toaster, +} from '@iqser/common-ui'; import { getParam } from '@iqser/common-ui/lib/utils'; import { DOSSIER_TEMPLATE_ID, type DossierTemplate, IDossierTemplate } from '@red/domain'; import { DossierTemplatesService } from '@services/dossier-templates/dossier-templates.service'; @@ -8,9 +16,16 @@ import dayjs, { Dayjs } from 'dayjs'; import { HttpStatusCode } from '@angular/common/http'; import { marker as _ } from '@biesbjerg/ngx-translate-extract-marker'; import { applyIntervalConstraints } from '@utils/date-inputs-utils'; -import { AbstractControl, UntypedFormBuilder, Validators } from '@angular/forms'; +import { AbstractControl, ReactiveFormsModule, UntypedFormBuilder, Validators } from '@angular/forms'; import { downloadTypesTranslations } from '@translations/download-types-translations'; import { Observable } from 'rxjs'; +import { DossierTemplateDetailsComponent } from '../dossier-template-details/dossier-template-details.component'; +import { TranslateModule } from '@ngx-translate/core'; +import { MatCheckbox } from '@angular/material/checkbox'; +import { NgIf } from '@angular/common'; +import { MatDatepickerModule } from '@angular/material/datepicker'; +import { MatIcon } from '@angular/material/icon'; +import { SelectComponent } from '@shared/components/select/select.component'; const downloadTypes = ['ORIGINAL', 'PREVIEW', 'DELTA_PREVIEW', 'REDACTED'].map(type => ({ key: type, @@ -20,8 +35,21 @@ const downloadTypes = ['ORIGINAL', 'PREVIEW', 'DELTA_PREVIEW', 'REDACTED'].map(t @Component({ templateUrl: './dossier-template-info-screen.component.html', styleUrls: ['./dossier-template-info-screen.component.scss'], + standalone: true, + imports: [ + HasScrollbarDirective, + ReactiveFormsModule, + DossierTemplateDetailsComponent, + TranslateModule, + MatCheckbox, + NgIf, + MatDatepickerModule, + SelectComponent, + IconButtonComponent, + MatIcon, + ], }) -export class DossierTemplateInfoScreenComponent extends BaseFormComponent implements OnInit { +export default class DossierTemplateInfoScreenComponent extends BaseFormComponent implements OnInit { readonly translations = dossierTemplateStatusTranslations; readonly iconButtonTypes = IconButtonTypes; readonly isDocumine = getConfig().IS_DOCUMINE; @@ -31,10 +59,14 @@ export class DossierTemplateInfoScreenComponent extends BaseFormComponent implem readonly dossierTemplateId = getParam(DOSSIER_TEMPLATE_ID); readonly hasValidFrom: WritableSignal; readonly hasValidTo: WritableSignal; - private _previousValidFrom: Dayjs; - private _previousValidTo: Dayjs; - private _lastValidFrom: Dayjs; - private _lastValidTo: Dayjs; + #previousValidFrom: Dayjs; + #previousValidTo: Dayjs; + #lastValidFrom: Dayjs; + #lastValidTo: Dayjs; + + get disabled(): boolean { + return !this.valid || !this.changed; + } constructor( private readonly _dossierTemplatesService: DossierTemplatesService, @@ -50,8 +82,8 @@ export class DossierTemplateInfoScreenComponent extends BaseFormComponent implem this.hasValidFrom = signal(!!this.form.get('validFrom').value); this.hasValidTo = signal(!!this.form.get('validTo').value); - this._previousValidFrom = this._lastValidFrom = this.form.get('validFrom').value; - this._previousValidTo = this._lastValidTo = this.form.get('validTo').value; + this.#previousValidFrom = this.#lastValidFrom = this.form.get('validFrom').value; + this.#previousValidTo = this.#lastValidTo = this.form.get('validTo').value; } ngOnInit() { @@ -62,11 +94,11 @@ export class DossierTemplateInfoScreenComponent extends BaseFormComponent implem if (extremity === 'from') { const prevValue = untracked(this.hasValidFrom); this.hasValidFrom.set(!prevValue); - this.form.controls['validFrom'].setValue(!prevValue ? this._lastValidFrom : null); + this.form.controls['validFrom'].setValue(!prevValue ? this.#lastValidFrom : null); } else { const prevValue = untracked(this.hasValidTo); this.hasValidTo.set(!prevValue); - this.form.controls['validTo'].setValue(!prevValue ? this._lastValidTo : null); + this.form.controls['validTo'].setValue(!prevValue ? this.#lastValidTo : null); } this.applyValidityIntervalConstraints(); } @@ -95,12 +127,12 @@ export class DossierTemplateInfoScreenComponent extends BaseFormComponent implem applyValidityIntervalConstraints(): void { const formValue = this.form.value; - applyIntervalConstraints(formValue, this._previousValidFrom, this._previousValidTo, this.form, 'validFrom', 'validTo'); + applyIntervalConstraints(formValue, this.#previousValidFrom, this.#previousValidTo, this.form, 'validFrom', 'validTo'); - this._previousValidFrom = this.form.get('validFrom').value; - this._previousValidTo = this.form.get('validTo').value; - this._lastValidFrom = this._previousValidFrom || this._lastValidFrom; - this._lastValidTo = this._previousValidTo || this._lastValidTo; + this.#previousValidFrom = this.form.get('validFrom').value; + this.#previousValidTo = this.form.get('validTo').value; + this.#lastValidFrom = this.#previousValidFrom || this.#lastValidFrom; + this.#lastValidTo = this.#previousValidTo || this.#lastValidTo; } #getForm(dossierTemplate: DossierTemplate) { diff --git a/apps/red-ui/src/app/modules/admin/screens/info/dossier-template-info.module.ts b/apps/red-ui/src/app/modules/admin/screens/info/dossier-template-info.module.ts deleted file mode 100644 index b7d6deb4e..000000000 --- a/apps/red-ui/src/app/modules/admin/screens/info/dossier-template-info.module.ts +++ /dev/null @@ -1,36 +0,0 @@ -import { NgModule } from '@angular/core'; -import { CommonModule } from '@angular/common'; -import { DossierTemplateInfoScreenComponent } from './dossier-template-info-screen/dossier-template-info-screen.component'; -import { RouterModule } from '@angular/router'; -import { SharedModule } from '@shared/shared.module'; -import { CircleButtonComponent, HasScrollbarDirective, IconButtonComponent, IqserHelpModeModule } from '@iqser/common-ui'; -import { TranslateModule } from '@ngx-translate/core'; -import { IqserUsersModule } from '@iqser/common-ui/lib/users'; -import { SelectComponent } from '@shared/components/select/select.component'; -import { DossierTemplateDetailsComponent } from './dossier-template-details/dossier-template-details.component'; -import { PendingChangesGuard } from '@guards/can-deactivate.guard'; - -const routes = [ - { - path: '', - component: DossierTemplateInfoScreenComponent, - canDeactivate: [PendingChangesGuard], - }, -]; - -@NgModule({ - declarations: [DossierTemplateInfoScreenComponent, DossierTemplateDetailsComponent], - imports: [ - RouterModule.forChild(routes), - CommonModule, - SharedModule, - IqserUsersModule, - TranslateModule, - IqserHelpModeModule, - HasScrollbarDirective, - CircleButtonComponent, - IconButtonComponent, - SelectComponent, - ], -}) -export class DossierTemplateInfoModule {} diff --git a/apps/red-ui/src/app/modules/admin/screens/justifications/add-edit-justification-dialog/add-edit-justification-dialog.component.ts b/apps/red-ui/src/app/modules/admin/screens/justifications/add-edit-justification-dialog/add-edit-justification-dialog.component.ts index 68f39dfc1..fb62106b4 100644 --- a/apps/red-ui/src/app/modules/admin/screens/justifications/add-edit-justification-dialog/add-edit-justification-dialog.component.ts +++ b/apps/red-ui/src/app/modules/admin/screens/justifications/add-edit-justification-dialog/add-edit-justification-dialog.component.ts @@ -1,10 +1,11 @@ import { ChangeDetectionStrategy, Component, Inject } from '@angular/core'; -import { UntypedFormGroup, Validators } from '@angular/forms'; +import { ReactiveFormsModule, UntypedFormGroup, Validators } from '@angular/forms'; import { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog'; import { Justification } from '@red/domain'; import { JustificationsService } from '@services/entity-services/justifications.service'; -import { BaseDialogComponent } from '@iqser/common-ui'; +import { BaseDialogComponent, CircleButtonComponent, IconButtonComponent } from '@iqser/common-ui'; import { firstValueFrom } from 'rxjs'; +import { TranslateModule } from '@ngx-translate/core'; interface DialogData { justification?: Justification; @@ -14,6 +15,8 @@ interface DialogData { @Component({ templateUrl: './add-edit-justification-dialog.component.html', changeDetection: ChangeDetectionStrategy.OnPush, + standalone: true, + imports: [TranslateModule, ReactiveFormsModule, IconButtonComponent, CircleButtonComponent], }) export class AddEditJustificationDialogComponent extends BaseDialogComponent { constructor( diff --git a/apps/red-ui/src/app/modules/admin/screens/justifications/justifications-screen/justifications-screen.component.ts b/apps/red-ui/src/app/modules/admin/screens/justifications/justifications-screen/justifications-screen.component.ts index 296d552bd..13628fc91 100644 --- a/apps/red-ui/src/app/modules/admin/screens/justifications/justifications-screen/justifications-screen.component.ts +++ b/apps/red-ui/src/app/modules/admin/screens/justifications/justifications-screen/justifications-screen.component.ts @@ -1,26 +1,42 @@ import { ChangeDetectionStrategy, Component, OnInit } from '@angular/core'; import { marker as _ } from '@biesbjerg/ngx-translate-extract-marker'; -import { IconButtonTypes, ListingComponent, listingProvidersFactory, LoadingService, TableColumnConfig } from '@iqser/common-ui'; +import { + CircleButtonComponent, + IconButtonComponent, + IconButtonTypes, + IqserListingModule, + ListingComponent, + listingProvidersFactory, + LoadingService, + TableColumnConfig, +} from '@iqser/common-ui'; import { SortingOrders } from '@iqser/common-ui/lib/sorting'; import { getParam } from '@iqser/common-ui/lib/utils'; import { DOSSIER_TEMPLATE_ID, Justification } from '@red/domain'; import { JustificationsService } from '@services/entity-services/justifications.service'; import { PermissionsService } from '@services/permissions.service'; -import { UserPreferenceService } from '@users/user-preference.service'; import { firstValueFrom } from 'rxjs'; import { JustificationsDialogService } from '../justifications-dialog.service'; +import { AsyncPipe, NgIf } from '@angular/common'; +import { TableItemComponent } from '../table-item/table-item.component'; +import { TranslateModule } from '@ngx-translate/core'; @Component({ selector: 'redaction-justifications-screen', templateUrl: './justifications-screen.component.html', styleUrls: ['./justifications-screen.component.scss'], changeDetection: ChangeDetectionStrategy.OnPush, - providers: listingProvidersFactory({ - entitiesService: JustificationsService, - component: JustificationsScreenComponent, - }), + providers: [ + ...listingProvidersFactory({ + entitiesService: JustificationsService, + component: JustificationsScreenComponent, + }), + JustificationsDialogService, + ], + standalone: true, + imports: [IqserListingModule, CircleButtonComponent, NgIf, TableItemComponent, TranslateModule, AsyncPipe, IconButtonComponent], }) -export class JustificationsScreenComponent extends ListingComponent implements OnInit { +export default class JustificationsScreenComponent extends ListingComponent implements OnInit { readonly #dossierTemplateId = getParam(DOSSIER_TEMPLATE_ID); readonly iconButtonTypes = IconButtonTypes; readonly tableHeaderLabel = _('justifications-listing.table-header'); @@ -35,7 +51,6 @@ export class JustificationsScreenComponent extends ListingComponent this.#getData())); diff --git a/apps/red-ui/src/app/modules/admin/screens/license/components/license-page-usage/license-page-usage.component.ts b/apps/red-ui/src/app/modules/admin/screens/license/components/license-page-usage/license-page-usage.component.ts index 742ba0c28..9321df252 100644 --- a/apps/red-ui/src/app/modules/admin/screens/license/components/license-page-usage/license-page-usage.component.ts +++ b/apps/red-ui/src/app/modules/admin/screens/license/components/license-page-usage/license-page-usage.component.ts @@ -4,14 +4,18 @@ import { map } from 'rxjs/operators'; import { ChartDataset } from 'chart.js'; import { ChartBlue, ChartGreen, ChartRed } from '../../utils/constants'; import { getDataUntilCurrentMonth, getLabelsFromLicense, getLineConfig, isCurrentMonthAndYear } from '../../utils/functions'; -import { TranslateService } from '@ngx-translate/core'; +import { TranslateModule, TranslateService } from '@ngx-translate/core'; import { marker as _ } from '@biesbjerg/ngx-translate-extract-marker'; import { ILicenseData } from '@red/domain'; +import { AsyncPipe, DecimalPipe, NgIf } from '@angular/common'; +import { ChartComponent } from '../chart/chart.component'; @Component({ selector: 'red-license-page-usage', templateUrl: './license-page-usage.component.html', styleUrls: ['./license-page-usage.component.scss'], + standalone: true, + imports: [DecimalPipe, TranslateModule, ChartComponent, NgIf, AsyncPipe], }) export class LicensePageUsageComponent { readonly data$ = this.licenseService.selectedLicense$.pipe(map(() => this.#getData())); diff --git a/apps/red-ui/src/app/modules/admin/screens/license/components/license-retention-capacity-usage/license-retention-capacity.component.ts b/apps/red-ui/src/app/modules/admin/screens/license/components/license-retention-capacity-usage/license-retention-capacity.component.ts index e0cf890b9..37c5e5bbf 100644 --- a/apps/red-ui/src/app/modules/admin/screens/license/components/license-retention-capacity-usage/license-retention-capacity.component.ts +++ b/apps/red-ui/src/app/modules/admin/screens/license/components/license-retention-capacity-usage/license-retention-capacity.component.ts @@ -1,5 +1,5 @@ import { Component } from '@angular/core'; -import { TranslateService } from '@ngx-translate/core'; +import { TranslateModule, TranslateService } from '@ngx-translate/core'; import { size } from '@iqser/common-ui/lib/utils'; import { LicenseService } from '@services/license.service'; import { map } from 'rxjs/operators'; @@ -8,11 +8,17 @@ import { ChartDataset } from 'chart.js'; import { ChartBlack, ChartBlue, ChartGreen, ChartGrey, ChartRed } from '../../utils/constants'; import { getDataUntilCurrentMonth, getLabelsFromLicense, getLineConfig } from '../../utils/functions'; import { marker as _ } from '@biesbjerg/ngx-translate-extract-marker'; +import { SizePipe } from '@common-ui/pipes'; +import { AsyncPipe, DecimalPipe, NgIf } from '@angular/common'; +import { DonutChartComponent } from '@shared/components/donut-chart/donut-chart.component'; +import { ChartComponent } from '../chart/chart.component'; @Component({ selector: 'red-license-retention-capacity', templateUrl: './license-retention-capacity.component.html', styleUrls: ['./license-retention-capacity.component.scss'], + standalone: true, + imports: [SizePipe, DecimalPipe, NgIf, DonutChartComponent, AsyncPipe, ChartComponent, TranslateModule], }) export class LicenseRetentionCapacityComponent { readonly formatSize = size; diff --git a/apps/red-ui/src/app/modules/admin/screens/license/components/license-select/license-select.component.ts b/apps/red-ui/src/app/modules/admin/screens/license/components/license-select/license-select.component.ts index 609c9f95a..67c33c4c9 100644 --- a/apps/red-ui/src/app/modules/admin/screens/license/components/license-select/license-select.component.ts +++ b/apps/red-ui/src/app/modules/admin/screens/license/components/license-select/license-select.component.ts @@ -4,6 +4,11 @@ import { ILicense } from '@red/domain'; import { marker as _ } from '@biesbjerg/ngx-translate-extract-marker'; import { map, tap } from 'rxjs/operators'; import { LoadingService } from '@iqser/common-ui'; +import { AsyncPipe, NgForOf, NgIf, NgTemplateOutlet, UpperCasePipe } from '@angular/common'; +import { MatFormField } from '@angular/material/form-field'; +import { MatOption, MatSelect, MatSelectTrigger } from '@angular/material/select'; +import { FormsModule } from '@angular/forms'; +import { TranslateModule } from '@ngx-translate/core'; const translations = { active: _('license-info-screen.status.active'), @@ -14,6 +19,20 @@ const translations = { selector: 'redaction-license-select', templateUrl: './license-select.component.html', styleUrls: ['./license-select.component.scss'], + standalone: true, + imports: [ + AsyncPipe, + NgIf, + MatFormField, + MatSelect, + MatSelectTrigger, + FormsModule, + NgTemplateOutlet, + MatOption, + NgForOf, + TranslateModule, + UpperCasePipe, + ], }) export class LicenseSelectComponent { value: ILicense; 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 8f89fab94..00dc524f5 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 @@ -1,16 +1,35 @@ import { Component } from '@angular/core'; -import { getConfig, IqserPermissionsService } from '@iqser/common-ui'; +import { getConfig, IqserListingModule, IqserPermissionsService, SizePipe } from '@iqser/common-ui'; import { getCurrentUser } from '@iqser/common-ui/lib/users'; import type { AppConfig, User } from '@red/domain'; 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 { 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'; @Component({ templateUrl: './license-screen.component.html', styleUrls: ['./license-screen.component.scss'], + standalone: true, + imports: [ + IqserListingModule, + TranslateModule, + AsyncPipe, + LicenseSelectComponent, + NgIf, + DatePipe, + SizePipe, + LicensePageUsageComponent, + LicenseAnalysisCapacityUsageComponent, + LicenseRetentionCapacityComponent, + ], }) -export class LicenseScreenComponent { +export default class LicenseScreenComponent { protected readonly config = getConfig(); protected readonly roles = Roles; protected readonly currentUser = getCurrentUser(); diff --git a/apps/red-ui/src/app/modules/admin/screens/license/license.module.ts b/apps/red-ui/src/app/modules/admin/screens/license/license.module.ts deleted file mode 100644 index b509ca40e..000000000 --- a/apps/red-ui/src/app/modules/admin/screens/license/license.module.ts +++ /dev/null @@ -1,51 +0,0 @@ -import { CommonModule } from '@angular/common'; -import { inject, NgModule } from '@angular/core'; -import { FormsModule } from '@angular/forms'; -import { MatSelectModule } from '@angular/material/select'; -import { RouterModule, Routes } from '@angular/router'; -import { IqserHelpModeModule, IqserListingModule, SizePipe } from '@iqser/common-ui'; -import { TranslateModule } from '@ngx-translate/core'; -import { LicenseService } from '@services/license.service'; -import { DonutChartComponent } from '@shared/components/donut-chart/donut-chart.component'; -import { BaseChartDirective, provideCharts, withDefaultRegisterables } from 'ng2-charts'; -import { ChartComponent } from './components/chart/chart.component'; -import { LicenseAnalysisCapacityUsageComponent } from './components/license-analysis-capacity-usage/license-analysis-capacity-usage.component'; -import { LicensePageUsageComponent } from './components/license-page-usage/license-page-usage.component'; -import { LicenseRetentionCapacityComponent } from './components/license-retention-capacity-usage/license-retention-capacity.component'; -import { LicenseSelectComponent } from './components/license-select/license-select.component'; -import { LicenseScreenComponent } from './license-screen/license-screen.component'; - -const routes: Routes = [ - { - path: '', - component: LicenseScreenComponent, - resolve: { - licenseData: () => inject(LicenseService).loadLicenseData(), - }, - }, -]; - -@NgModule({ - declarations: [ - LicenseScreenComponent, - LicenseSelectComponent, - ChartComponent, - LicenseRetentionCapacityComponent, - LicensePageUsageComponent, - LicenseAnalysisCapacityUsageComponent, - ], - imports: [ - RouterModule.forChild(routes), - CommonModule, - TranslateModule, - MatSelectModule, - FormsModule, - IqserListingModule, - IqserHelpModeModule, - SizePipe, - DonutChartComponent, - BaseChartDirective, - ], - providers: [provideCharts(withDefaultRegisterables())], -}) -export class LicenseModule {} diff --git a/apps/red-ui/src/app/modules/admin/screens/permissions/permissions-screen/permissions-screen.component.ts b/apps/red-ui/src/app/modules/admin/screens/permissions/permissions-screen/permissions-screen.component.ts index a58f2305f..ddf346f77 100644 --- a/apps/red-ui/src/app/modules/admin/screens/permissions/permissions-screen/permissions-screen.component.ts +++ b/apps/red-ui/src/app/modules/admin/screens/permissions/permissions-screen/permissions-screen.component.ts @@ -1,6 +1,7 @@ import { Component, OnInit } from '@angular/core'; import { getConfig, + IqserListingModule, IqserPermissionsService, ListingComponent, listingProvidersFactory, @@ -21,13 +22,18 @@ import { Roles } from '@users/roles'; import { getCurrentUser } from '@iqser/common-ui/lib/users'; import { SortingOrders } from '@iqser/common-ui/lib/sorting'; import { takeUntilDestroyed } from '@angular/core/rxjs-interop'; +import { AsyncPipe, NgForOf, NgIf } from '@angular/common'; +import { MatSlideToggle } from '@angular/material/slide-toggle'; +import { TranslateModule } from '@ngx-translate/core'; @Component({ templateUrl: './permissions-screen.component.html', styleUrls: ['./permissions-screen.component.scss'], providers: listingProvidersFactory(PermissionsScreenComponent), + standalone: true, + imports: [IqserListingModule, NgIf, NgForOf, MatSlideToggle, AsyncPipe, TranslateModule], }) -export class PermissionsScreenComponent extends ListingComponent implements OnInit { +export default class PermissionsScreenComponent extends ListingComponent implements OnInit { readonly #config = getConfig(); readonly roles = Roles; readonly currentUser = getCurrentUser(); diff --git a/apps/red-ui/src/app/modules/admin/screens/permissions/permissions.module.ts b/apps/red-ui/src/app/modules/admin/screens/permissions/permissions.module.ts deleted file mode 100644 index c4fdbd7b6..000000000 --- a/apps/red-ui/src/app/modules/admin/screens/permissions/permissions.module.ts +++ /dev/null @@ -1,15 +0,0 @@ -import { NgModule } from '@angular/core'; -import { CommonModule } from '@angular/common'; -import { RouterModule } from '@angular/router'; -import { PermissionsScreenComponent } from './permissions-screen/permissions-screen.component'; -import { TranslateModule } from '@ngx-translate/core'; -import { IqserHelpModeModule, IqserListingModule } from '@iqser/common-ui'; -import { MatSlideToggleModule } from '@angular/material/slide-toggle'; - -const routes = [{ path: '', component: PermissionsScreenComponent }]; - -@NgModule({ - declarations: [PermissionsScreenComponent], - imports: [RouterModule.forChild(routes), CommonModule, TranslateModule, IqserListingModule, IqserHelpModeModule, MatSlideToggleModule], -}) -export class PermissionsModule {} diff --git a/apps/red-ui/src/app/modules/admin/screens/reports/reports-screen/reports-screen.component.ts b/apps/red-ui/src/app/modules/admin/screens/reports/reports-screen/reports-screen.component.ts index b2f827492..3d1f25e67 100644 --- a/apps/red-ui/src/app/modules/admin/screens/reports/reports-screen/reports-screen.component.ts +++ b/apps/red-ui/src/app/modules/admin/screens/reports/reports-screen/reports-screen.component.ts @@ -1,7 +1,15 @@ import { ChangeDetectionStrategy, Component, ElementRef, OnInit, ViewChild } from '@angular/core'; import { DOSSIER_TEMPLATE_ID, IPlaceholdersResponse, IReportTemplate, User } from '@red/domain'; import { download } from '@utils/file-download-utils'; -import { getConfig, IConfirmationDialogData, LoadingService, Toaster } from '@iqser/common-ui'; +import { + CircleButtonComponent, + getConfig, + HasScrollbarDirective, + IConfirmationDialogData, + IqserAllowDirective, + LoadingService, + Toaster, +} from '@iqser/common-ui'; import { PermissionsService } from '@services/permissions.service'; import { generalPlaceholdersDescriptionsTranslations, @@ -15,6 +23,8 @@ import { BehaviorSubject, firstValueFrom } from 'rxjs'; import { Roles } from '@users/roles'; import { getCurrentUser } from '@iqser/common-ui/lib/users'; import { getParam } from '@iqser/common-ui/lib/utils'; +import { AsyncPipe, NgForOf, NgIf } from '@angular/common'; +import { TranslateModule } from '@ngx-translate/core'; interface Placeholder { placeholder: string; @@ -30,8 +40,10 @@ const placeholderTypes: PlaceholderType[] = ['generalPlaceholders', 'fileAttribu templateUrl: './reports-screen.component.html', styleUrls: ['./reports-screen.component.scss'], changeDetection: ChangeDetectionStrategy.OnPush, + standalone: true, + imports: [HasScrollbarDirective, NgIf, NgForOf, AsyncPipe, TranslateModule, CircleButtonComponent, IqserAllowDirective], }) -export class ReportsScreenComponent implements OnInit { +export default class ReportsScreenComponent implements OnInit { @ViewChild('fileInput') private readonly _fileInput: ElementRef; readonly placeholders$ = new BehaviorSubject([]); readonly availableTemplates$ = new BehaviorSubject([]); diff --git a/apps/red-ui/src/app/modules/admin/screens/reports/reports.module.ts b/apps/red-ui/src/app/modules/admin/screens/reports/reports.module.ts deleted file mode 100644 index 9175eae4b..000000000 --- a/apps/red-ui/src/app/modules/admin/screens/reports/reports.module.ts +++ /dev/null @@ -1,22 +0,0 @@ -import { NgModule } from '@angular/core'; -import { CommonModule } from '@angular/common'; -import { RouterModule } from '@angular/router'; -import { ReportsScreenComponent } from './reports-screen/reports-screen.component'; -import { TranslateModule } from '@ngx-translate/core'; -import { CircleButtonComponent, HasScrollbarDirective, IqserAllowDirective, IqserHelpModeModule, IqserRoutes } from '@iqser/common-ui'; - -const routes: IqserRoutes = [{ path: '', component: ReportsScreenComponent }]; - -@NgModule({ - declarations: [ReportsScreenComponent], - imports: [ - RouterModule.forChild(routes), - CommonModule, - TranslateModule, - IqserHelpModeModule, - CircleButtonComponent, - HasScrollbarDirective, - IqserAllowDirective, - ], -}) -export class ReportsModule {} diff --git a/apps/red-ui/src/app/modules/admin/screens/rules/rules-screen/rules-screen.component.ts b/apps/red-ui/src/app/modules/admin/screens/rules/rules-screen/rules-screen.component.ts index 1e2396d05..4abb3ca5e 100644 --- a/apps/red-ui/src/app/modules/admin/screens/rules/rules-screen/rules-screen.component.ts +++ b/apps/red-ui/src/app/modules/admin/screens/rules/rules-screen/rules-screen.component.ts @@ -1,6 +1,6 @@ -import { ChangeDetectionStrategy, ChangeDetectorRef, Component, computed, OnChanges, OnInit, signal, SimpleChanges } from '@angular/core'; +import { ChangeDetectionStrategy, ChangeDetectorRef, Component, computed, OnInit, signal } from '@angular/core'; import { PermissionsService } from '@services/permissions.service'; -import { IconButtonTypes, LoadingService, Toaster } from '@iqser/common-ui'; +import { IconButtonComponent, IconButtonTypes, IqserTranslateModule, LoadingService, Toaster } from '@iqser/common-ui'; import { RulesService } from '../../../services/rules.service'; import { firstValueFrom } from 'rxjs'; import { DOSSIER_TEMPLATE_ID, DroolsKeywords, IRules } from '@red/domain'; @@ -12,6 +12,10 @@ import { rulesScreenTranslations } from '../../../translations/rules-screen-tran import ICodeEditor = monaco.editor.ICodeEditor; import IModelDeltaDecoration = monaco.editor.IModelDeltaDecoration; import IStandaloneEditorConstructionOptions = monaco.editor.IStandaloneEditorConstructionOptions; +import { MonacoEditorModule } from '@materia-ui/ngx-monaco-editor'; +import { MatIcon } from '@angular/material/icon'; +import { FormsModule } from '@angular/forms'; +import { NgIf } from '@angular/common'; interface SyntaxError { line: number; @@ -32,8 +36,10 @@ const RULE_VALIDATION_TIMEOUT = 2000; templateUrl: './rules-screen.component.html', styleUrls: ['./rules-screen.component.scss'], changeDetection: ChangeDetectionStrategy.OnPush, + standalone: true, + imports: [MonacoEditorModule, MatIcon, FormsModule, IqserTranslateModule, IconButtonComponent, NgIf], }) -export class RulesScreenComponent implements OnInit, ComponentCanDeactivate { +export default class RulesScreenComponent implements OnInit, ComponentCanDeactivate { readonly translations = rulesScreenTranslations; readonly iconButtonTypes = IconButtonTypes; diff --git a/apps/red-ui/src/app/modules/admin/screens/rules/rules.module.ts b/apps/red-ui/src/app/modules/admin/screens/rules/rules.module.ts deleted file mode 100644 index e6b248714..000000000 --- a/apps/red-ui/src/app/modules/admin/screens/rules/rules.module.ts +++ /dev/null @@ -1,26 +0,0 @@ -import { NgModule } from '@angular/core'; -import { CommonModule } from '@angular/common'; -import { RouterModule } from '@angular/router'; -import { RulesScreenComponent } from './rules-screen/rules-screen.component'; -import { MonacoEditorModule } from '@materia-ui/ngx-monaco-editor'; -import { PendingChangesGuard } from '@guards/can-deactivate.guard'; -import { TranslateModule } from '@ngx-translate/core'; -import { IconButtonComponent } from '@iqser/common-ui'; -import { FormsModule } from '@angular/forms'; -import { MatIconModule } from '@angular/material/icon'; - -const routes = [{ path: '', component: RulesScreenComponent, canDeactivate: [PendingChangesGuard] }]; - -@NgModule({ - declarations: [RulesScreenComponent], - imports: [ - RouterModule.forChild(routes), - CommonModule, - MonacoEditorModule, - TranslateModule, - IconButtonComponent, - FormsModule, - MatIconModule, - ], -}) -export class RulesModule {}