Merge branch 'VM/RED-7155'

This commit is contained in:
Valentin Mihai 2023-07-24 23:46:48 +03:00
commit 6add8982df
28 changed files with 358 additions and 166 deletions

View File

@ -2,9 +2,9 @@
<form (submit)="save()" [formGroup]="form">
<div [translate]="'add-hint.dialog.title'" class="dialog-header heading-l"></div>
<div class="dialog-content">
<div class="dialog-content redaction">
<div class="iqser-input-group w-450">
<label [translate]="'add-hint.dialog.content.selected-text'"></label>
<label class="selected-text" [translate]="'add-hint.dialog.content.selected-text'"></label>
{{ form.get('selectedText').value }}
</div>

View File

@ -1,8 +0,0 @@
label {
font-weight: bold;
padding-bottom: 8px;
}
iqser-details-radio {
padding-top: 20px;
}

View File

@ -1,6 +1,6 @@
import { Component, OnInit } from '@angular/core';
import { DetailsRadioOption, IconButtonTypes, IqserPermissionsService } from '@iqser/common-ui';
import { Dictionary, Dossier, IAddRedactionRequest, SuperTypes } from '@red/domain';
import { Dictionary, Dossier, IAddRedactionRequest } from '@red/domain';
import { FormBuilder, UntypedFormGroup } from '@angular/forms';
import { Roles } from '@users/roles';
import { JustificationsService } from '@services/entity-services/justifications.service';
@ -14,7 +14,6 @@ import { AddHintData, AddHintResult } from '../../utils/dialog-types';
@Component({
templateUrl: './add-hint-dialog.component.html',
styleUrls: ['./add-hint-dialog.component.scss'],
})
export class AddHintDialogComponent extends IqserDialogComponent<AddHintDialogComponent, AddHintData, AddHintResult> implements OnInit {
readonly roles = Roles;

View File

@ -2,9 +2,9 @@
<form (submit)="save()" [formGroup]="form">
<div [translate]="'add-annotation.dialog.title'" class="dialog-header heading-l"></div>
<div class="dialog-content">
<div class="dialog-content redaction">
<div class="iqser-input-group w-450">
<label [translate]="'add-annotation.dialog.content.selected-text'"></label>
<label class="selected-text" [translate]="'add-annotation.dialog.content.selected-text'"></label>
{{ form.get('selectedText').value }}
</div>

View File

@ -1,8 +0,0 @@
label {
font-weight: bold;
padding-bottom: 8px;
}
iqser-details-radio {
padding-top: 20px;
}

View File

@ -1,6 +1,6 @@
import { Component, OnInit } from '@angular/core';
import { IconButtonTypes, IqserPermissionsService } from '@iqser/common-ui';
import { Dictionary, Dossier, IAddRedactionRequest, SuperTypes } from '@red/domain';
import { Dictionary, Dossier, IAddRedactionRequest } from '@red/domain';
import { FormBuilder, UntypedFormGroup } from '@angular/forms';
import { Roles } from '@users/roles';
import { ActiveDossiersService } from '@services/dossiers/active-dossiers.service';
@ -10,7 +10,6 @@ import { AddAnnotationData, AddAnnotationResult } from '../../../utils/dialog-ty
@Component({
templateUrl: './add-annotation-dialog.component.html',
styleUrls: ['./add-annotation-dialog.component.scss'],
})
export class AddAnnotationDialogComponent
extends IqserDialogComponent<AddAnnotationDialogComponent, AddAnnotationData, AddAnnotationResult>

View File

@ -8,7 +8,6 @@ import { getRemoveRedactionOptions, RemoveAnnotationOption, RemoveAnnotationOpti
@Component({
templateUrl: './remove-annotation-dialog.component.html',
styleUrls: ['./remove-annotation-dialog.component.scss'],
})
export class RemoveAnnotationDialogComponent extends IqserDialogComponent<
RemoveAnnotationDialogComponent,

View File

@ -2,9 +2,9 @@
<form (submit)="save()" [formGroup]="form">
<div [translate]="'redact-text.dialog.title'" class="dialog-header heading-l"></div>
<div class="dialog-content">
<div class="dialog-content redaction">
<div class="iqser-input-group w-450">
<label [translate]="'redact-text.dialog.content.selected-text'"></label>
<label class="selected-text" [translate]="'redact-text.dialog.content.selected-text'"></label>
{{ form.get('selectedText').value }}
</div>

View File

@ -1,8 +0,0 @@
label {
font-weight: bold;
padding-bottom: 8px;
}
iqser-details-radio {
padding-top: 20px;
}

View File

@ -16,7 +16,6 @@ import { RedactTextData, RedactTextResult } from '../../utils/dialog-types';
@Component({
templateUrl: './redact-text-dialog.component.html',
styleUrls: ['./redact-text-dialog.component.scss'],
})
export class RedactTextDialogComponent
extends IqserDialogComponent<RedactTextDialogComponent, RedactTextData, RedactTextResult>

View File

@ -10,7 +10,6 @@ import { getRemoveRedactionOptions, RemoveRedactionOption } from '../../utils/di
@Component({
templateUrl: './remove-redaction-dialog.component.html',
styleUrls: ['./remove-redaction-dialog.component.scss'],
})
export class RemoveRedactionDialogComponent extends IqserDialogComponent<
RemoveRedactionDialogComponent,

View File

@ -1,31 +0,0 @@
<section class="dialog">
<form (submit)="save()" [formGroup]="form">
<div [translate]="'resize-annotation-dialog.header'" class="dialog-header heading-l"></div>
<div class="dialog-content">
<div class="iqser-input-group w-300">
<label [translate]="'resize-annotation-dialog.content.comment'"></label>
<textarea formControlName="comment" iqserHasScrollbar name="comment" rows="4" type="text"></textarea>
</div>
<div *ngIf="form.get('updateDictionary')" class="iqser-input-group">
<mat-checkbox color="primary" formControlName="updateDictionary"
><span [innerHTML]="'resize-annotation-dialog.content.update-dictionary' | translate : { text: this.text }"></span>
</mat-checkbox>
</div>
</div>
<div class="dialog-actions">
<iqser-icon-button
[disabled]="disabled"
[label]="'resize-annotation-dialog.actions.save' | translate"
[submit]="true"
[type]="iconButtonTypes.primary"
></iqser-icon-button>
<div [translate]="'resize-annotation-dialog.actions.cancel'" class="all-caps-label cancel" mat-dialog-close></div>
</div>
</form>
<iqser-circle-button (action)="close()" class="dialog-close" icon="iqser:close"></iqser-circle-button>
</section>

View File

@ -1,39 +0,0 @@
import { Component, Inject, OnInit } from '@angular/core';
import { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog';
import { BaseDialogComponent } from '@iqser/common-ui';
import { AnnotationWrapper } from '@models/file/annotation.wrapper';
@Component({
templateUrl: './resize-annotation-dialog.component.html',
})
export class ResizeAnnotationDialogComponent extends BaseDialogComponent implements OnInit {
constructor(
protected readonly _dialogRef: MatDialogRef<ResizeAnnotationDialogComponent>,
@Inject(MAT_DIALOG_DATA) private readonly _data: { annotation: AnnotationWrapper; text?: string },
) {
super(_dialogRef);
}
get disabled(): boolean {
return !this.valid;
}
get text(): string {
return this._data.text;
}
ngOnInit() {
const controlsConfig = { comment: [null] };
if (this._data.annotation.isModifyDictionary) {
controlsConfig['updateDictionary'] = [false];
}
this.form = this._formBuilder.group(controlsConfig);
this.initialFormValue = this.form.getRawValue();
}
save() {
this._dialogRef.close(this.form.getRawValue());
}
}

View File

@ -0,0 +1,55 @@
<section class="dialog">
<form (submit)="save()" [formGroup]="form">
<div
[innerHTML]="'resize-redaction.dialog.header' | translate : { type: redaction.hint ? 'hint' : 'redaction' }"
class="dialog-header heading-l"
></div>
<div class="dialog-content redaction">
<div class="iqser-input-group w-450">
<label class="selected-text" [translate]="'resize-redaction.dialog.content.original-text'"></label>
{{ redaction.value }}
</div>
<div class="iqser-input-group w-450">
<label class="selected-text" [translate]="'resize-redaction.dialog.content.resized-text'"></label>
{{ data.text }}
</div>
<iqser-details-radio [options]="options" formControlName="option"></iqser-details-radio>
<ng-container *deny="roles.getRss">
<div class="iqser-input-group required w-450">
<label [translate]="'resize-redaction.dialog.content.type'"></label>
<mat-form-field>
<mat-select formControlName="dictionary">
<mat-select-trigger>{{ displayedDictionaryLabel }}</mat-select-trigger>
<mat-option [value]="redaction.entity.type">
<span> {{ redaction.entity.label }} </span>
</mat-option>
</mat-select>
</mat-form-field>
</div>
</ng-container>
<div class="iqser-input-group w-450">
<label [translate]="'resize-redaction.dialog.content.comment'"></label>
<textarea formControlName="comment" iqserHasScrollbar name="comment" rows="4" type="text"></textarea>
</div>
</div>
<div class="dialog-actions">
<iqser-icon-button
[disabled]="disabled"
[label]="'resize-redaction.dialog.actions.save' | translate"
[submit]="true"
[type]="iconButtonTypes.primary"
></iqser-icon-button>
<div [translate]="'resize-redaction.dialog.actions.cancel'" class="all-caps-label cancel" mat-dialog-close></div>
</div>
</form>
<iqser-circle-button (action)="close()" class="dialog-close" icon="iqser:close"></iqser-circle-button>
</section>

View File

@ -0,0 +1,89 @@
import { Component, OnInit } from '@angular/core';
import { DetailsRadioOption, IconButtonTypes, IqserDialogComponent, IqserPermissionsService } from '@iqser/common-ui';
import { ResizeRedactionData, ResizeRedactionResult } from '../../utils/dialog-types';
import { FormBuilder, FormControl, UntypedFormGroup } from '@angular/forms';
import { AnnotationWrapper } from '@models/file/annotation.wrapper';
import { getResizeRedactionOptions, ResizeOptions, ResizeRedactionOption } from '../../utils/dialog-options';
import { ActiveDossiersService } from '@services/dossiers/active-dossiers.service';
import { Dictionary, Dossier } from '@red/domain';
import { Roles } from '@users/roles';
import { DictionariesMapService } from '@services/entity-services/dictionaries-map.service';
@Component({
templateUrl: './resize-redaction-dialog.component.html',
})
export class ResizeRedactionDialogComponent
extends IqserDialogComponent<ResizeRedactionDialogComponent, ResizeRedactionData, ResizeRedactionResult>
implements OnInit
{
readonly roles = Roles;
readonly iconButtonTypes = IconButtonTypes;
readonly options: DetailsRadioOption<ResizeRedactionOption>[];
dictionaries: Dictionary[] = [];
redaction: AnnotationWrapper;
form!: UntypedFormGroup;
#applyToAllDossiers: boolean;
readonly #dossier: Dossier;
readonly #isRss = this._iqserPermissionsService.has(Roles.getRss);
constructor(
private readonly _activeDossiersService: ActiveDossiersService,
private readonly _iqserPermissionsService: IqserPermissionsService,
private readonly _dictionariesMapService: DictionariesMapService,
private readonly _formBuilder: FormBuilder,
) {
super();
this.#dossier = _activeDossiersService.find(this.data.dossierId);
this.#applyToAllDossiers = this.data.applyToAllDossiers ?? true;
this.redaction = this.data.redaction;
this.options = getResizeRedactionOptions(
this.redaction,
this.#dossier,
this.#isRss,
this.#applyToAllDossiers,
this.data.isApprover,
);
this.form = this.#getForm();
}
get displayedDictionaryLabel() {
const dictType = this.form.get('dictionary').value;
if (dictType) {
return this.dictionaries.find(d => d.type === dictType)?.label ?? null;
}
return null;
}
get disabled(): boolean {
return !this.valid;
}
get text(): string {
return this.data.text;
}
async ngOnInit() {
this.dictionaries = this._dictionariesMapService.get(this.#dossier.dossierTemplateId);
}
#getForm(): UntypedFormGroup {
return this._formBuilder.group({
comment: [null],
dictionary: new FormControl({ value: this.redaction.entity.type, disabled: true }),
option: [this.options[0]],
});
}
save(): void {
const formValue = this.form.getRawValue();
const updateDictionary = formValue.option.value === ResizeOptions.IN_DOSSIER;
this.dialogRef.close({
comment: formValue.comment,
updateDictionary,
});
}
}

View File

@ -42,7 +42,7 @@ import { HighlightsSeparatorComponent } from './components/highlights-separator/
import { PendingChangesGuard } from '@guards/can-deactivate.guard';
import { ManualAnnotationDialogComponent } from './dialogs/manual-redaction-dialog/manual-annotation-dialog.component';
import { ForceAnnotationDialogComponent } from './dialogs/force-redaction-dialog/force-annotation-dialog.component';
import { ResizeAnnotationDialogComponent } from './dialogs/resize-annotation-dialog/resize-annotation-dialog.component';
import { ResizeRedactionDialogComponent } from './dialogs/resize-redaction-dialog/resize-redaction-dialog.component';
import { ChangeLegalBasisDialogComponent } from './dialogs/change-legal-basis-dialog/change-legal-basis-dialog.component';
import { RecategorizeImageDialogComponent } from './dialogs/recategorize-image-dialog/recategorize-image-dialog.component';
import { HighlightActionDialogComponent } from './dialogs/highlight-action-dialog/highlight-action-dialog.component';
@ -82,7 +82,7 @@ const routes: IqserRoutes = [
const dialogs = [
ManualAnnotationDialogComponent,
ForceAnnotationDialogComponent,
ResizeAnnotationDialogComponent,
ResizeRedactionDialogComponent,
ChangeLegalBasisDialogComponent,
RecategorizeImageDialogComponent,
HighlightActionDialogComponent,

View File

@ -34,15 +34,10 @@ import { IqserDialog } from '@common-ui/dialog/iqser-dialog.service';
import { DossierTemplatesService } from '@services/dossier-templates/dossier-templates.service';
import { isJustOne, List } from '@iqser/common-ui/lib/utils';
import { PermissionsService } from '@services/permissions.service';
import {
RedactTextData,
RemoveAnnotationResult,
RemoveRedactionData,
RemoveRedactionPermissions,
RemoveRedactionResult,
} from '../utils/dialog-types';
import { RemoveRedactionData, RemoveRedactionPermissions, RemoveRedactionResult, ResizeRedactionData } from '../utils/dialog-types';
import { RemoveRedactionOptions } from '../utils/dialog-options';
import { RemoveAnnotationDialogComponent } from '../dialogs/docu-mine/remove-annotation-dialog/remove-annotation-dialog.component';
import { ResizeRedactionDialogComponent } from '../dialogs/resize-redaction-dialog/resize-redaction-dialog.component';
@Injectable()
export class AnnotationActionsService {
@ -221,11 +216,24 @@ export class AnnotationActionsService {
return this.convertRecommendationToAnnotation([recommendation]);
}
const dossier = this._state.dossier();
const isImageText = annotation.isImage ? 'Image' : textAndPositions.text;
const text = annotation.rectangle ? annotation.value : isImageText;
const data = { annotation, text };
const isApprover = this._permissionsService.isApprover(dossier);
const dossierTemplate = this._dossierTemplatesService.find(this._state.dossierTemplateId);
this._dialogService.openDialog('resizeAnnotation', data, (result: { comment: string; updateDictionary: boolean }) => {
const data = {
redaction: annotation,
text,
applyToAllDossiers: isApprover && dossierTemplate.applyDictionaryUpdatesToAllDossiersByDefault,
isApprover,
dossierId: dossier.dossierId,
};
const result = await this.#getResizeRedactionDialog(data).result();
if (result) {
const resizeRequest: IResizeRequest = {
annotationId: annotation.id,
comment: result.comment,
@ -239,7 +247,7 @@ export class AnnotationActionsService {
const { fileId, dossierId } = this._state;
const request = this._manualRedactionService.resizeOrSuggestResize([resizeRequest], dossierId, fileId);
this.#processObsAndEmit(request);
});
}
}
async cancelResize(annotationWrapper: AnnotationWrapper) {
@ -415,4 +423,11 @@ export class AnnotationActionsService {
}
return this._iqserDialog.openDefault(RemoveRedactionDialogComponent, { data });
}
#getResizeRedactionDialog(data: ResizeRedactionData) {
// if (this.#isDocumine) {
// return this._iqserDialog.openDefault(RemoveAnnotationDialogComponent, { data });
// }
return this._iqserDialog.openDefault(ResizeRedactionDialogComponent, { data });
}
}

View File

@ -6,7 +6,6 @@ import { ManualAnnotationDialogComponent } from '../dialogs/manual-redaction-dia
import { ChangeLegalBasisDialogComponent } from '../dialogs/change-legal-basis-dialog/change-legal-basis-dialog.component';
import { RecategorizeImageDialogComponent } from '../dialogs/recategorize-image-dialog/recategorize-image-dialog.component';
import { ConfirmationDialogComponent, DialogConfig, DialogService } from '@iqser/common-ui';
import { ResizeAnnotationDialogComponent } from '../dialogs/resize-annotation-dialog/resize-annotation-dialog.component';
import { HighlightActionDialogComponent } from '../dialogs/highlight-action-dialog/highlight-action-dialog.component';
import { RssDialogComponent } from '../dialogs/rss-dialog/rss-dialog.component';
@ -16,7 +15,6 @@ type DialogType =
| 'rss'
| 'recategorizeImage'
| 'changeLegalBasis'
| 'resizeAnnotation'
| 'forceAnnotation'
| 'manualAnnotation'
| 'highlightAction';
@ -38,9 +36,6 @@ export class FilePreviewDialogService extends DialogService<DialogType> {
changeLegalBasis: {
component: ChangeLegalBasisDialogComponent,
},
resizeAnnotation: {
component: ResizeAnnotationDialogComponent,
},
forceAnnotation: {
component: ForceAnnotationDialogComponent,
},

View File

@ -5,6 +5,8 @@ import { Dossier } from '@red/domain';
import { removeRedactionTranslations } from '@translations/remove-redaction-translations';
import { RemoveRedactionData } from './dialog-types';
import { removeAnnotationTranslations } from '@translations/remove-annotation-translations';
import { resizeRedactionTranslations } from '@translations/resize-redaction-translations';
import { AnnotationWrapper } from '@models/file/annotation.wrapper';
const PIN_ICON = 'red:push-pin';
const FOLDER_ICON = 'red:folder';
@ -17,6 +19,9 @@ export const RedactOrHintOptions = {
export type RedactOrHintOption = keyof typeof RedactOrHintOptions;
export const ResizeOptions = RedactOrHintOptions;
export type ResizeRedactionOption = RedactOrHintOption;
export const RemoveRedactionOptions = {
ONLY_HERE: 'ONLY_HERE',
IN_DOSSIER: 'IN_DOSSIER',
@ -40,7 +45,7 @@ export const getRedactOrHintOptions = (
label: translations.onlyHere.label,
description: translations.onlyHere.description,
icon: PIN_ICON,
value: RedactOrHintOptions.ONLY_HERE,
value: ResizeOptions.ONLY_HERE,
},
];
if (!isRss) {
@ -49,6 +54,42 @@ export const getRedactOrHintOptions = (
description: translations.inDossier.description,
descriptionParams: { dossierName: dossier.dossierName },
icon: FOLDER_ICON,
value: ResizeOptions.IN_DOSSIER,
extraOption: {
label: translations.inDossier.extraOptionLabel,
checked: applyToAllDossiers,
hidden: !isApprover,
},
});
}
return options;
};
export const getResizeRedactionOptions = (
redaction: AnnotationWrapper,
dossier: Dossier,
isRss: boolean,
applyToAllDossiers: boolean,
isApprover: boolean,
): DetailsRadioOption<ResizeRedactionOption>[] => {
const translations = resizeRedactionTranslations;
const options: DetailsRadioOption<ResizeRedactionOption>[] = [
{
label: translations.onlyHere.label,
description: translations.onlyHere.description,
icon: PIN_ICON,
value: RedactOrHintOptions.ONLY_HERE,
},
];
if (!isRss) {
const dictBasedType = redaction.isModifyDictionary;
options.push({
label: translations.inDossier.label,
description: translations.inDossier.description,
descriptionParams: { dossierName: dossier.dossierName },
disabled: !dictBasedType,
tooltip: !dictBasedType ? translations.inDossier.tooltip : null,
icon: FOLDER_ICON,
value: RedactOrHintOptions.IN_DOSSIER,
extraOption: {
label: translations.inDossier.extraOptionLabel,

View File

@ -25,6 +25,19 @@ export interface RedactTextResult {
export type AddHintResult = RedactTextResult;
export type AddAnnotationResult = RedactTextResult;
export interface ResizeRedactionData {
redaction: AnnotationWrapper;
dossierId: string;
text: string;
applyToAllDossiers?: boolean;
isApprover?: boolean;
}
export interface ResizeRedactionResult {
comment: string;
updateDictionary: boolean;
}
export interface RemoveRedactionPermissions {
canRemoveOnlyHere: boolean;
canRemoveFromDictionary: boolean;

View File

@ -0,0 +1,19 @@
import { marker as _ } from '@biesbjerg/ngx-translate-extract-marker';
import { DialogOption } from '@translations/redact-text-translations';
interface ResizeDialogOption extends DialogOption {
tooltip?: string;
}
export const resizeRedactionTranslations: Record<'onlyHere' | 'inDossier', ResizeDialogOption> = {
onlyHere: {
label: _('resize-redaction.dialog.content.options.only-here.label'),
description: _('resize-redaction.dialog.content.options.only-here.description'),
},
inDossier: {
label: _('resize-redaction.dialog.content.options.in-dossier.label'),
description: _('resize-redaction.dialog.content.options.in-dossier.description'),
extraOptionLabel: _('resize-redaction.dialog.content.options.in-dossier.extraOptionLabel'),
tooltip: _('resize-redaction.dialog.content.options.in-dossier.tooltip'),
},
} as const;

View File

@ -2103,16 +2103,32 @@
},
"header": "Temporäres Passwort für {userName} festlegen"
},
"resize-annotation-dialog": {
"actions": {
"cancel": "Abbrechen",
"save": "Änderungen speichern"
},
"content": {
"comment": "Kommentar",
"update-dictionary": ""
},
"header": "Schwärzung ändern"
"resize-redaction": {
"dialog": {
"actions": {
"cancel": "",
"save": ""
},
"content": {
"comment": "",
"options": {
"in-dossier": {
"description": "",
"extraOptionLabel": "",
"label": "",
"tooltip": ""
},
"only-here": {
"description": "",
"label": ""
}
},
"original-text": "",
"resized-text": "",
"type": ""
},
"header": ""
}
},
"roles": {
"inactive": "Inaktiv",

View File

@ -2103,16 +2103,32 @@
},
"header": "Set Temporary Password for {userName}"
},
"resize-annotation-dialog": {
"actions": {
"cancel": "Cancel",
"save": "Save Changes"
},
"content": {
"comment": "Comment",
"update-dictionary": "Update dictionary: {text}"
},
"header": "Resize Redaction"
"resize-redaction": {
"dialog": {
"actions": {
"cancel": "Cancel",
"save": "Save Changes"
},
"content": {
"comment": "Comment",
"options": {
"in-dossier": {
"description": "Resize in every document in {dossierName}.",
"extraOptionLabel": "Apply to all dossiers",
"label": "Resize in dossier",
"tooltip": "Only available for dictionary-based types"
},
"only-here": {
"description": "Resize only at this position in this document.",
"label": "Resize only here"
}
},
"original-text": "Original text:",
"resized-text": "Resized text:",
"type": "Type"
},
"header": "Resize {type}"
}
},
"roles": {
"inactive": "Inactive",

View File

@ -2103,16 +2103,32 @@
},
"header": "Temporäres Passwort für {userName} festlegen"
},
"resize-annotation-dialog": {
"actions": {
"cancel": "Abbrechen",
"save": "Änderungen speichern"
},
"content": {
"comment": "Kommentar",
"update-dictionary": ""
},
"header": "Schwärzung ändern"
"resize-redaction": {
"dialog": {
"actions": {
"cancel": "",
"save": ""
},
"content": {
"comment": "",
"options": {
"in-dossier": {
"description": "",
"extraOptionLabel": "",
"label": "",
"tooltip": ""
},
"only-here": {
"description": "",
"label": ""
}
},
"original-text": "",
"resized-text": "",
"type": ""
},
"header": ""
}
},
"roles": {
"inactive": "Inaktiv",

View File

@ -2103,16 +2103,32 @@
},
"header": "Set Temporary Password for {userName}"
},
"resize-annotation-dialog": {
"actions": {
"cancel": "Cancel",
"save": "Save Changes"
},
"content": {
"comment": "Comment",
"update-dictionary": "Update dictionary: {text}"
},
"header": "Resize Component"
"resize-redaction": {
"dialog": {
"actions": {
"cancel": "Cancel",
"save": "Save Changes"
},
"content": {
"comment": "Comment",
"options": {
"in-dossier": {
"description": "Resize in every document in {dossierName}.",
"extraOptionLabel": "Apply to all dossiers",
"label": "Resize in dossier",
"tooltip": "Only available for dictionary-based types"
},
"only-here": {
"description": "Resize only at this position in this document.",
"label": "Resize only here"
}
},
"original-text": "Original text:",
"resized-text": "Resized text:",
"type": "Type"
},
"header": "Resize {type}"
}
},
"roles": {
"inactive": "Inactive",

@ -1 +1 @@
Subproject commit 5aa064ac65e631f0871f2833ae91007a7c9b7a55
Subproject commit b368fa6fe89b1cf65eb76ce15868bccf1a51ff67