diff --git a/apps/red-ui/src/app/components/base-screen/base-screen.component.html b/apps/red-ui/src/app/components/base-screen/base-screen.component.html index b7efcf7a5..fe3838c65 100644 --- a/apps/red-ui/src/app/components/base-screen/base-screen.component.html +++ b/apps/red-ui/src/app/components/base-screen/base-screen.component.html @@ -1,4 +1,4 @@ - +
@@ -25,7 +25,7 @@ [placeholder]="'search.placeholder' | translate" > - + boolean = url => url.includes('/search'); styleUrls: ['./base-screen.component.scss'], }) export class BaseScreenComponent { + readonly #navigationStart$ = this._router.events.pipe( + filter(isNavigationStart), + map(event => event.url), + startWith(this._router.url), + shareDistinctLast(), + ); readonly roles = Roles; readonly documentViewer = inject(REDDocumentViewer); readonly currentUser = this.userService.currentUser; @@ -46,23 +52,8 @@ export class BaseScreenComponent { action: (query): void => this.#search(query, []), }, ]; - readonly #navigationStart$ = this._router.events.pipe( - filter(isNavigationStart), - map(event => event.url), - startWith(this._router.url), - shareDistinctLast(), - ); readonly isSearchScreen$ = this.#navigationStart$.pipe(map(isSearchScreen)); - - get #hideSearchThisDossier() { - const routerLink = this.breadcrumbsService.breadcrumbs[1]?.options?.routerLink; - if (!routerLink) { - return true; - } - - const isDossierOverview = (routerLink.includes(DOSSIERS_ROUTE) || routerLink.includes(ARCHIVE_ROUTE)) && routerLink.length === 3; - return !isDossierOverview; - } + readonly config = getConfig(); constructor( private readonly _router: Router, @@ -80,6 +71,16 @@ export class BaseScreenComponent { activatedRoute.queryParamMap.pipe(takeUntilDestroyed()).subscribe(queryParams => this.#navigate(queryParams)); } + get #hideSearchThisDossier() { + const routerLink = this.breadcrumbsService.breadcrumbs[1]?.options?.routerLink; + if (!routerLink) { + return true; + } + + const isDossierOverview = (routerLink.includes(DOSSIERS_ROUTE) || routerLink.includes(ARCHIVE_ROUTE)) && routerLink.length === 3; + return !isDossierOverview; + } + #navigate(queryParams: ParamMap) { if (queryParams.has('username')) { return this._router.navigate([], { diff --git a/apps/red-ui/src/app/modules/account/screens/notifications/notifications-screen/notifications-screen.component.ts b/apps/red-ui/src/app/modules/account/screens/notifications/notifications-screen/notifications-screen.component.ts index f1cb7e65b..a6a2b4fe5 100644 --- a/apps/red-ui/src/app/modules/account/screens/notifications/notifications-screen/notifications-screen.component.ts +++ b/apps/red-ui/src/app/modules/account/screens/notifications/notifications-screen/notifications-screen.component.ts @@ -1,7 +1,7 @@ import { ChangeDetectionStrategy, ChangeDetectorRef, Component, inject, OnInit } from '@angular/core'; -import { UntypedFormBuilder, UntypedFormGroup } from '@angular/forms'; +import { UntypedFormBuilder } from '@angular/forms'; import { NotificationPreferencesService } from '../../../services/notification-preferences.service'; -import { BaseFormComponent, IqserPermissionsService, LoadingService, Toaster } from '@iqser/common-ui'; +import { BaseFormComponent, getConfig, LoadingService, Toaster } from '@iqser/common-ui'; import { marker as _ } from '@biesbjerg/ngx-translate-extract-marker'; import { NotificationCategoriesValues, @@ -13,7 +13,6 @@ import { import { firstValueFrom } from 'rxjs'; import { notificationsSettingsTranslations } from '@translations/notifications-settings-translations'; import { getCurrentUser } from '@iqser/common-ui/lib/users'; -import { Roles } from '@users/roles'; const RSS_EXCLUDED_SETTINGS = ['USER_PROMOTED_TO_APPROVER', 'USER_DEGRADED_TO_REVIEWER', 'ASSIGN_REVIEWER']; @@ -23,19 +22,17 @@ const RSS_EXCLUDED_SETTINGS = ['USER_PROMOTED_TO_APPROVER', 'USER_DEGRADED_TO_RE changeDetection: ChangeDetectionStrategy.OnPush, }) export class NotificationsScreenComponent extends BaseFormComponent implements OnInit { - readonly notificationCategories = NotificationCategoriesValues; - readonly notificationGroupsKeys = NotificationGroupsKeys; - readonly notificationGroupsValues = NotificationGroupsValues; - readonly translations = notificationsSettingsTranslations; - readonly currentUser = getCurrentUser(); - readonly #toaster = inject(Toaster); readonly #formBuilder = inject(UntypedFormBuilder); readonly #loadingService = inject(LoadingService); readonly #notificationPreferencesService = inject(NotificationPreferencesService); readonly #cdRef = inject(ChangeDetectorRef); - readonly #iqserPermissionsService = inject(IqserPermissionsService); - readonly #isRss = this.#iqserPermissionsService.has(Roles.getRss); + readonly #config = getConfig(); + readonly notificationCategories = NotificationCategoriesValues; + readonly notificationGroupsKeys = NotificationGroupsKeys; + readonly notificationGroupsValues = NotificationGroupsValues; + readonly translations = notificationsSettingsTranslations; + readonly currentUser = getCurrentUser(); constructor() { super(); @@ -46,7 +43,10 @@ export class NotificationsScreenComponent extends BaseFormComponent implements O } getRssFilteredSettings(settings: string[]) { - return settings.filter(s => (this.#isRss ? !RSS_EXCLUDED_SETTINGS.includes(s) : true)); + if (this.#config.IS_DOCUMINE) { + return settings.filter(s => !RSS_EXCLUDED_SETTINGS.includes(s)); + } + return settings; } isCategoryActive(category: string) { @@ -86,7 +86,7 @@ export class NotificationsScreenComponent extends BaseFormComponent implements O this.#loadingService.stop(); } - #getForm(): UntypedFormGroup { + #getForm() { return this.#formBuilder.group({ inAppNotificationsEnabled: [undefined], emailNotificationsEnabled: [undefined], diff --git a/apps/red-ui/src/app/modules/admin/dialogs/add-edit-dossier-template-dialog/add-edit-clone-dossier-template-dialog.component.html b/apps/red-ui/src/app/modules/admin/dialogs/add-edit-dossier-template-dialog/add-edit-clone-dossier-template-dialog.component.html index d3f993aa4..931efd74f 100644 --- a/apps/red-ui/src/app/modules/admin/dialogs/add-edit-dossier-template-dialog/add-edit-clone-dossier-template-dialog.component.html +++ b/apps/red-ui/src/app/modules/admin/dialogs/add-edit-dossier-template-dialog/add-edit-clone-dossier-template-dialog.component.html @@ -79,7 +79,7 @@
- +

{{ 'download-includes' | translate }}

+
diff --git a/apps/red-ui/src/app/modules/admin/dialogs/add-edit-dossier-template-dialog/add-edit-clone-dossier-template-dialog.component.ts b/apps/red-ui/src/app/modules/admin/dialogs/add-edit-dossier-template-dialog/add-edit-clone-dossier-template-dialog.component.ts index 33a838b66..2537456d6 100644 --- a/apps/red-ui/src/app/modules/admin/dialogs/add-edit-dossier-template-dialog/add-edit-clone-dossier-template-dialog.component.ts +++ b/apps/red-ui/src/app/modules/admin/dialogs/add-edit-dossier-template-dialog/add-edit-clone-dossier-template-dialog.component.ts @@ -9,7 +9,6 @@ import { marker as _ } from '@biesbjerg/ngx-translate-extract-marker'; import { DossierTemplate, IDossierTemplate } from '@red/domain'; import { HttpStatusCode } from '@angular/common/http'; import dayjs, { Dayjs } from 'dayjs'; -import { Roles } from '@users/roles'; interface EditCloneTemplateData { dossierTemplateId: string; @@ -26,16 +25,15 @@ const downloadTypes = ['ORIGINAL', 'PREVIEW', 'DELTA_PREVIEW', 'REDACTED'].map(t styleUrls: ['./add-edit-clone-dossier-template-dialog.component.scss'], }) export class AddEditCloneDossierTemplateDialogComponent extends BaseDialogComponent { - readonly roles = Roles; + private _previousValidFrom: Dayjs; + private _previousValidTo: Dayjs; + private _lastValidFrom: Dayjs; + private _lastValidTo: Dayjs; readonly isDocumine = getConfig().IS_DOCUMINE; hasValidFrom: boolean; hasValidTo: boolean; readonly downloadTypes = downloadTypes; readonly dossierTemplate: DossierTemplate; - private _previousValidFrom: Dayjs; - private _previousValidTo: Dayjs; - private _lastValidFrom: Dayjs; - private _lastValidTo: Dayjs; constructor( private readonly _dossierTemplatesService: DossierTemplatesService, diff --git a/apps/red-ui/src/app/modules/admin/dialogs/add-entity-dialog/add-entity-dialog.component.html b/apps/red-ui/src/app/modules/admin/dialogs/add-entity-dialog/add-entity-dialog.component.html index 1e7375e6a..0b9200a81 100644 --- a/apps/red-ui/src/app/modules/admin/dialogs/add-entity-dialog/add-entity-dialog.component.html +++ b/apps/red-ui/src/app/modules/admin/dialogs/add-entity-dialog/add-entity-dialog.component.html @@ -20,7 +20,8 @@ [submit]="true" [type]="iconButtonTypes.primary" > - + + 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 b5974388a..88f4b2b99 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 @@ -1,8 +1,7 @@ import { ChangeDetectionStrategy, Component, inject, ViewChild } from '@angular/core'; import { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog'; import { AddEditEntityComponent } from '@shared/components/add-edit-entity/add-edit-entity.component'; -import { BaseDialogComponent, IconButtonTypes } from '@iqser/common-ui'; -import { Roles } from '@users/roles'; +import { BaseDialogComponent, getConfig, IconButtonTypes } from '@iqser/common-ui'; interface DialogData { readonly dossierTemplateId: string; @@ -14,10 +13,10 @@ interface DialogData { changeDetection: ChangeDetectionStrategy.OnPush, }) export class AddEntityDialogComponent extends BaseDialogComponent { - readonly iconButtonTypes = IconButtonTypes; - readonly roles = Roles; - readonly data = inject(MAT_DIALOG_DATA); @ViewChild(AddEditEntityComponent, { static: true }) private readonly _addEditEntityComponent: AddEditEntityComponent; + readonly iconButtonTypes = IconButtonTypes; + readonly data = inject(MAT_DIALOG_DATA); + readonly config = getConfig(); constructor(protected readonly _dialogRef: MatDialogRef) { super(_dialogRef, false); diff --git a/apps/red-ui/src/app/modules/admin/screens/entities/screens/entity-info/entity-info.component.html b/apps/red-ui/src/app/modules/admin/screens/entities/screens/entity-info/entity-info.component.html index d7830e0dd..d6c524524 100644 --- a/apps/red-ui/src/app/modules/admin/screens/entities/screens/entity-info/entity-info.component.html +++ b/apps/red-ui/src/app/modules/admin/screens/entities/screens/entity-info/entity-info.component.html @@ -27,7 +27,7 @@
- + 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 e992f7d9c..dac54c423 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 @@ -5,9 +5,8 @@ import { ActivatedRoute } from '@angular/router'; import { getCurrentUser } from '@users/user.service'; import { PermissionsService } from '@services/permissions.service'; import { AddEditEntityComponent } from '@shared/components/add-edit-entity/add-edit-entity.component'; -import { IconButtonTypes } from '@iqser/common-ui'; +import { getConfig, IconButtonTypes } from '@iqser/common-ui'; import { Observable } from 'rxjs'; -import { Roles } from '@users/roles'; import { IqserEventTarget } from '@iqser/common-ui/lib/utils'; @Component({ @@ -21,7 +20,7 @@ export class EntityInfoComponent { readonly currentUser = getCurrentUser(); readonly entity$: Observable; readonly dossierTemplateId: string; - readonly roles = Roles; + readonly config = getConfig(); readonly iconButtonTypes = IconButtonTypes; constructor(route: ActivatedRoute, dictionariesMapService: DictionariesMapService, readonly permissionsService: PermissionsService) { 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.html b/apps/red-ui/src/app/modules/admin/screens/file-attributes-listing/add-edit-file-attribute-dialog/add-edit-file-attribute-dialog.component.html index 160e24e3c..ff2097450 100644 --- a/apps/red-ui/src/app/modules/admin/screens/file-attributes-listing/add-edit-file-attribute-dialog/add-edit-file-attribute-dialog.component.html +++ b/apps/red-ui/src/app/modules/admin/screens/file-attributes-listing/add-edit-file-attribute-dialog/add-edit-file-attribute-dialog.component.html @@ -86,7 +86,7 @@ [type]="iconButtonTypes.primary" > - + 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 feed67329..95e89df51 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,14 +3,13 @@ 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, IconButtonComponent, IqserDenyDirective, IqserHelpModeModule } from '@iqser/common-ui'; +import { BaseDialogComponent, CircleButtonComponent, getConfig, IconButtonComponent, IqserHelpModeModule } from '@iqser/common-ui'; import { TranslateModule } from '@ngx-translate/core'; import { MatFormFieldModule } from '@angular/material/form-field'; import { MatSelectModule } from '@angular/material/select'; -import { NgForOf } from '@angular/common'; +import { NgForOf, NgIf } from '@angular/common'; import { MatCheckboxModule } from '@angular/material/checkbox'; import { MatTooltipModule } from '@angular/material/tooltip'; -import { Roles } from '@users/roles'; import { MatSlideToggleModule } from '@angular/material/slide-toggle'; export interface AddEditFileAttributeDialogData { @@ -35,12 +34,12 @@ export interface AddEditFileAttributeDialogData { MatTooltipModule, IconButtonComponent, CircleButtonComponent, - IqserDenyDirective, IqserHelpModeModule, + NgIf, ], }) export class AddEditFileAttributeDialogComponent extends BaseDialogComponent { - readonly roles = Roles; + readonly config = getConfig(); readonly DISPLAYED_FILTERABLE_LIMIT = 3; readonly translations = fileAttributeTypesTranslations; readonly fileAttribute = this.data.fileAttribute; diff --git a/apps/red-ui/src/app/modules/admin/screens/permissions/config.service.ts b/apps/red-ui/src/app/modules/admin/screens/permissions/config.service.ts deleted file mode 100644 index 846024fd3..000000000 --- a/apps/red-ui/src/app/modules/admin/screens/permissions/config.service.ts +++ /dev/null @@ -1,20 +0,0 @@ -import { Injectable } from '@angular/core'; -import { TableColumnConfig } from '@iqser/common-ui'; -import { marker as _ } from '@biesbjerg/ngx-translate-extract-marker'; -import { PermissionsMapping } from '@red/domain'; -import { PermissionsConfigurationMapService } from '@services/entity-permissions/permissions-configuration-map.service'; -import { permissionsTranslations } from '@translations/permissions-translations'; - -@Injectable() -export class ConfigService { - constructor(private readonly _permissionsConfigurationMapService: PermissionsConfigurationMapService) {} - - tableConfig(targetObject: string): TableColumnConfig[] { - const columns = this._permissionsConfigurationMapService.getMappedPermissions(targetObject).map(p => ({ - label: permissionsTranslations.mapped[p], - class: 'flex-center', - })); - - return [{ label: _('permissions-screen.table-col-names.permission') }, ...columns]; - } -} 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 a7f36d2fa..a58f2305f 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,27 +1,34 @@ -import { Component, OnDestroy, OnInit } from '@angular/core'; -import { IqserPermissionsService, ListingComponent, listingProvidersFactory, LoadingService, TableColumnConfig } from '@iqser/common-ui'; +import { Component, OnInit } from '@angular/core'; +import { + getConfig, + IqserPermissionsService, + ListingComponent, + listingProvidersFactory, + LoadingService, + TableColumnConfig, +} from '@iqser/common-ui'; import { PermissionsMapping, User } from '@red/domain'; -import { ConfigService } from '../config.service'; import { marker as _ } from '@biesbjerg/ngx-translate-extract-marker'; import { EntityPermissionsService } from '@services/entity-permissions/entity-permissions.service'; import { ActivatedRoute } from '@angular/router'; import { PermissionsMapService } from '@services/entity-permissions/permissions-map.service'; import { PermissionsConfigurationMapService } from '@services/entity-permissions/permissions-configuration-map.service'; -import { interval, map, Subscription } from 'rxjs'; +import { interval, map } from 'rxjs'; import { switchMap, tap } from 'rxjs/operators'; import { permissionsTranslations } from '@translations/permissions-translations'; import { RouterHistoryService } from '@services/router-history.service'; 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'; @Component({ templateUrl: './permissions-screen.component.html', styleUrls: ['./permissions-screen.component.scss'], providers: listingProvidersFactory(PermissionsScreenComponent), }) -export class PermissionsScreenComponent extends ListingComponent implements OnInit, OnDestroy { - readonly #subscription: Subscription = new Subscription(); +export class PermissionsScreenComponent extends ListingComponent implements OnInit { + readonly #config = getConfig(); readonly roles = Roles; readonly currentUser = getCurrentUser(); readonly translations = permissionsTranslations; @@ -32,37 +39,37 @@ export class PermissionsScreenComponent extends ListingComponent permissions.map(p => new PermissionsMapping(p))), - tap(permissions => this.entitiesService.setEntities(permissions)), - ) - .subscribe(), - ); - this.#subscription.add( - interval(5000) - .pipe(switchMap(() => this._entityPermissionsService.loadFor(this.targetObject))) - .subscribe(), - ); + this._permissionsMapService + .get$(this.targetObject) + .pipe( + // force update internal mappings set in constructor + map(permissions => permissions.map(p => new PermissionsMapping(p))), + tap(permissions => this.entitiesService.setEntities(permissions)), + takeUntilDestroyed(), + ) + .subscribe(); + + interval(5000) + .pipe( + switchMap(() => this._entityPermissionsService.loadFor(this.targetObject)), + takeUntilDestroyed(), + ) + .subscribe(); } ngOnInit() { @@ -75,7 +82,20 @@ export class PermissionsScreenComponent extends ListingComponent p !== 'REVIEW'); + } + return mappedPermissions; + } + + getTableConfig(mappedPermissions: string[]) { + const columns = mappedPermissions.map(p => ({ + label: permissionsTranslations.mapped[p], + class: 'flex-center', + })); + + return [{ label: _('permissions-screen.table-col-names.permission') }, ...columns]; } } 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 index bb54b92c8..c4fdbd7b6 100644 --- 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 @@ -2,7 +2,6 @@ import { NgModule } from '@angular/core'; import { CommonModule } from '@angular/common'; import { RouterModule } from '@angular/router'; import { PermissionsScreenComponent } from './permissions-screen/permissions-screen.component'; -import { ConfigService } from './config.service'; import { TranslateModule } from '@ngx-translate/core'; import { IqserHelpModeModule, IqserListingModule } from '@iqser/common-ui'; import { MatSlideToggleModule } from '@angular/material/slide-toggle'; @@ -12,6 +11,5 @@ const routes = [{ path: '', component: PermissionsScreenComponent }]; @NgModule({ declarations: [PermissionsScreenComponent], imports: [RouterModule.forChild(routes), CommonModule, TranslateModule, IqserListingModule, IqserHelpModeModule, MatSlideToggleModule], - providers: [ConfigService], }) export class PermissionsModule {} diff --git a/apps/red-ui/src/app/modules/shared/components/add-edit-entity/add-edit-entity.component.html b/apps/red-ui/src/app/modules/shared/components/add-edit-entity/add-edit-entity.component.html index 850cc8726..26943eaff 100644 --- a/apps/red-ui/src/app/modules/shared/components/add-edit-entity/add-edit-entity.component.html +++ b/apps/red-ui/src/app/modules/shared/components/add-edit-entity/add-edit-entity.component.html @@ -85,7 +85,7 @@
- + ; colors: Color[]; - readonly roles = Roles; - readonly isDocumine = getConfig().IS_DOCUMINE; constructor( private readonly _dictionariesMapService: DictionariesMapService, - private readonly _permissionsService: PermissionsService, private readonly _dictionaryService: DictionaryService, private readonly _toaster: Toaster, private readonly _loadingService: LoadingService, diff --git a/apps/red-ui/src/app/modules/shared/dialogs/download-dialog/download-dialog.component.html b/apps/red-ui/src/app/modules/shared/dialogs/download-dialog/download-dialog.component.html index 4a4193cb3..d15d33200 100644 --- a/apps/red-ui/src/app/modules/shared/dialogs/download-dialog/download-dialog.component.html +++ b/apps/red-ui/src/app/modules/shared/dialogs/download-dialog/download-dialog.component.html @@ -18,13 +18,13 @@ > -
+
{ + readonly #logger = inject(NGXLogger); readonly iconButtonTypes = IconButtonTypes; readonly hasApprovedFiles: boolean; readonly downloadTypes: { key: DownloadFileType; label: string }[]; readonly availableReportTypes = this.#availableReportTypes; readonly form = this.#getForm(); readonly isDocumine = getConfig().IS_DOCUMINE; - readonly roles = Roles; initialFormValue = this.form.getRawValue(); - readonly #logger = inject(NGXLogger); constructor( private readonly _defaultColorsService: DefaultColorsService, diff --git a/apps/red-ui/src/assets/i18n/scm/en.json b/apps/red-ui/src/assets/i18n/scm/en.json index afab713a2..9ae67907d 100644 --- a/apps/red-ui/src/assets/i18n/scm/en.json +++ b/apps/red-ui/src/assets/i18n/scm/en.json @@ -1931,10 +1931,10 @@ }, "label": "{targetObject, select, Dossier{Dossier} other{}} Permissions", "mapped": { - "approve": "Approvers", + "approve": "Dossier members", "everyone-else": "Everyone else", "owner": "Owner", - "review": "Reviewers" + "review": "" }, "table-col-names": { "permission": "Permission" diff --git a/docker/red-ui/Dockerfile b/docker/red-ui/Dockerfile index 730dfb3bc..79351b3fa 100644 --- a/docker/red-ui/Dockerfile +++ b/docker/red-ui/Dockerfile @@ -1,4 +1,4 @@ -FROM node:20.4-buster as builder +FROM node:20.5-buster as builder WORKDIR /ng-app