RED-4718: import common-ui only once in app module

This commit is contained in:
Dan Percic 2022-07-28 13:07:59 +03:00
parent e112c320ce
commit 05beb8bdd2
56 changed files with 349 additions and 168 deletions

View File

@ -3,14 +3,16 @@ import { APP_INITIALIZER, ErrorHandler, NgModule } from '@angular/core';
import { AppComponent } from './app.component'; import { AppComponent } from './app.component';
import { ActivatedRoute, Router } from '@angular/router'; import { ActivatedRoute, Router } from '@angular/router';
import { BrowserAnimationsModule } from '@angular/platform-browser/animations'; import { BrowserAnimationsModule } from '@angular/platform-browser/animations';
import { HTTP_INTERCEPTORS, HttpClient, HttpClientModule } from '@angular/common/http'; import { HTTP_INTERCEPTORS } from '@angular/common/http';
import { BaseScreenComponent } from '@components/base-screen/base-screen.component'; import { BaseScreenComponent } from '@components/base-screen/base-screen.component';
import { MissingTranslationHandler, TranslateCompiler, TranslateLoader, TranslateModule } from '@ngx-translate/core'; import { MissingTranslationHandler } from '@ngx-translate/core';
import { import {
BASE_HREF, BASE_HREF,
CachingModule, CachingModule,
CommonUiModule, CommonUiModule,
IqserHelpModeModule, IqserHelpModeModule,
IqserLoadingModule,
IqserTranslateModule,
IqserUsersModule, IqserUsersModule,
LanguageService, LanguageService,
MAX_RETRIES_ON_SERVER_ERROR, MAX_RETRIES_ON_SERVER_ERROR,
@ -32,11 +34,9 @@ import { ACTIVE_DOSSIERS_SERVICE, ARCHIVED_DOSSIERS_SERVICE } from './tokens';
import { MonacoEditorModule } from '@materia-ui/ngx-monaco-editor'; import { MonacoEditorModule } from '@materia-ui/ngx-monaco-editor';
import { GlobalErrorHandler } from '@utils/global-error-handler.service'; import { GlobalErrorHandler } from '@utils/global-error-handler.service';
import { REDMissingTranslationHandler } from '@utils/missing-translations-handler'; import { REDMissingTranslationHandler } from '@utils/missing-translations-handler';
import { TranslateMessageFormatCompiler } from 'ngx-translate-messageformat-compiler';
import { configurationInitializer } from '@utils/configuration.initializer'; import { configurationInitializer } from '@utils/configuration.initializer';
import { ConfigService } from '@services/config.service'; import { ConfigService } from '@services/config.service';
import { SpotlightSearchComponent } from '@components/spotlight-search/spotlight-search.component'; import { SpotlightSearchComponent } from '@components/spotlight-search/spotlight-search.component';
import { PruningTranslationLoader } from '@utils/pruning-translation-loader';
import { DatePipe } from '@shared/pipes/date.pipe'; import { DatePipe } from '@shared/pipes/date.pipe';
import * as links from '../assets/help-mode/links.json'; import * as links from '../assets/help-mode/links.json';
import { KeycloakService } from 'keycloak-angular'; import { KeycloakService } from 'keycloak-angular';
@ -58,10 +58,6 @@ import { TenantIdInterceptor } from '@utils/tenant-id-interceptor';
import { UI_CACHES } from '@utils/constants'; import { UI_CACHES } from '@utils/constants';
import { RedRoleGuard } from '@users/red-role.guard'; import { RedRoleGuard } from '@users/red-role.guard';
export function httpLoaderFactory(httpClient: HttpClient, configService: ConfigService): PruningTranslationLoader {
return new PruningTranslationLoader(httpClient, '/assets/i18n/', `.json?version=${configService.values.FRONTEND_APP_VERSION}`);
}
const screens = [BaseScreenComponent, DownloadsListScreenComponent]; const screens = [BaseScreenComponent, DownloadsListScreenComponent];
const components = [AppComponent, AuthErrorComponent, NotificationsComponent, SpotlightSearchComponent, BreadcrumbsComponent, ...screens]; const components = [AppComponent, AuthErrorComponent, NotificationsComponent, SpotlightSearchComponent, BreadcrumbsComponent, ...screens];
@ -74,7 +70,6 @@ export const appModuleFactory = (config: AppConfig) => {
BrowserAnimationsModule, BrowserAnimationsModule,
SharedModule, SharedModule,
FileUploadDownloadModule, FileUploadDownloadModule,
HttpClientModule,
AppRoutingModule, AppRoutingModule,
MonacoEditorModule, MonacoEditorModule,
CommonUiModule.forRoot({ CommonUiModule.forRoot({
@ -96,17 +91,8 @@ export const appModuleFactory = (config: AppConfig) => {
preventDuplicates: true, preventDuplicates: true,
resetTimeoutOnDuplicate: true, resetTimeoutOnDuplicate: true,
}), }),
TranslateModule.forRoot({ IqserTranslateModule.forRoot(),
loader: { IqserLoadingModule.forRoot(),
provide: TranslateLoader,
useFactory: httpLoaderFactory,
deps: [HttpClient, ConfigService],
},
compiler: {
provide: TranslateCompiler,
useClass: TranslateMessageFormatCompiler,
},
}),
ServiceWorkerModule.register('ngsw-worker.js', { enabled: environment.production }), ServiceWorkerModule.register('ngsw-worker.js', { enabled: environment.production }),
LoggerModule.forRoot(undefined, { LoggerModule.forRoot(undefined, {
ruleProvider: { ruleProvider: {

View File

@ -1,7 +1,12 @@
<iqser-side-nav [title]="'account-settings' | translate"> <iqser-side-nav [title]="'account-settings' | translate">
<ng-container *ngFor="let item of items"> <ng-container *ngFor="let item of items">
<div *ngIf="!item.hideIf" <div
[routerLinkActiveOptions]="{ exact: false }" [routerLink]="'../' + item.screen" class="item" routerLinkActive="active"> *ngIf="!item.hideIf"
[routerLinkActiveOptions]="{ exact: false }"
[routerLink]="'../' + item.screen"
class="item"
routerLinkActive="active"
>
{{ item.label | translate }} {{ item.label | translate }}
</div> </div>
</ng-container> </ng-container>

View File

@ -5,10 +5,12 @@ import { AccountRoutingModule } from './account-routing.module';
import { AccountSideNavComponent } from './account-side-nav/account-side-nav.component'; import { AccountSideNavComponent } from './account-side-nav/account-side-nav.component';
import { BaseAccountScreenComponent } from './base-account-screen/base-account-screen-component'; import { BaseAccountScreenComponent } from './base-account-screen/base-account-screen-component';
import { NotificationPreferencesService } from './services/notification-preferences.service'; import { NotificationPreferencesService } from './services/notification-preferences.service';
import { TranslateModule } from '@ngx-translate/core';
import { IqserSharedModule } from '@iqser/common-ui';
@NgModule({ @NgModule({
declarations: [AccountSideNavComponent, BaseAccountScreenComponent], declarations: [AccountSideNavComponent, BaseAccountScreenComponent],
imports: [CommonModule, SharedModule, AccountRoutingModule], imports: [CommonModule, SharedModule, AccountRoutingModule, TranslateModule, IqserSharedModule],
providers: [NotificationPreferencesService], providers: [NotificationPreferencesService],
}) })
export class AccountModule {} export class AccountModule {}

View File

@ -8,7 +8,7 @@
</div> </div>
<div *ngIf="isCategoryActive(category)" class="options-content"> <div *ngIf="isCategoryActive(category)" class="options-content">
<div class="statement" translate="notifications-screen.options-title"></div> <div [translate]="'notifications-screen.options-title'" class="statement"></div>
<div *ngFor="let key of notificationGroupsKeys; let i = index" class="group"> <div *ngFor="let key of notificationGroupsKeys; let i = index" class="group">
<div [translate]="translations[key]" class="group-title"></div> <div [translate]="translations[key]" class="group-title"></div>

View File

@ -4,11 +4,12 @@ import { CommonModule } from '@angular/common';
import { SharedModule } from '@shared/shared.module'; import { SharedModule } from '@shared/shared.module';
import { NotificationsScreenComponent } from './notifications-screen/notifications-screen.component'; import { NotificationsScreenComponent } from './notifications-screen/notifications-screen.component';
import { PendingChangesGuard } from '@guards/can-deactivate.guard'; import { PendingChangesGuard } from '@guards/can-deactivate.guard';
import { TranslateModule } from '@ngx-translate/core';
const routes = [{ path: '', component: NotificationsScreenComponent, canDeactivate: [PendingChangesGuard] }]; const routes = [{ path: '', component: NotificationsScreenComponent, canDeactivate: [PendingChangesGuard] }];
@NgModule({ @NgModule({
declarations: [NotificationsScreenComponent], declarations: [NotificationsScreenComponent],
imports: [RouterModule.forChild(routes), CommonModule, SharedModule], imports: [RouterModule.forChild(routes), CommonModule, SharedModule, TranslateModule],
}) })
export class NotificationsModule {} export class NotificationsModule {}

View File

@ -2,22 +2,22 @@
<div class="dialog-content"> <div class="dialog-content">
<div class="dialog-content-left"> <div class="dialog-content-left">
<div class="iqser-input-group required"> <div class="iqser-input-group required">
<label translate="user-profile-screen.form.email"></label> <label [translate]="'user-profile-screen.form.email'"></label>
<input formControlName="email" name="email" type="email" /> <input formControlName="email" name="email" type="email" />
</div> </div>
<div class="iqser-input-group"> <div class="iqser-input-group">
<label translate="user-profile-screen.form.first-name"></label> <label [translate]="'user-profile-screen.form.first-name'"></label>
<input formControlName="firstName" name="firstName" type="text" /> <input formControlName="firstName" name="firstName" type="text" />
</div> </div>
<div class="iqser-input-group"> <div class="iqser-input-group">
<label translate="user-profile-screen.form.last-name"></label> <label [translate]="'user-profile-screen.form.last-name'"></label>
<input formControlName="lastName" name="lastName" type="text" /> <input formControlName="lastName" name="lastName" type="text" />
</div> </div>
<div *ngIf="userPreferences.areDevFeaturesEnabled" class="iqser-input-group"> <div *ngIf="userPreferences.areDevFeaturesEnabled" class="iqser-input-group">
<label translate="top-bar.navigation-items.my-account.children.language.label"></label> <label [translate]="'top-bar.navigation-items.my-account.children.language.label'"></label>
<mat-select formControlName="language"> <mat-select formControlName="language">
<mat-option *ngFor="let language of languages" [value]="language"> <mat-option *ngFor="let language of languages" [value]="language">
{{ translations[language] | translate }} {{ translations[language] | translate }}

View File

@ -4,11 +4,12 @@ import { CommonModule } from '@angular/common';
import { SharedModule } from '@shared/shared.module'; import { SharedModule } from '@shared/shared.module';
import { UserProfileScreenComponent } from './user-profile-screen/user-profile-screen.component'; import { UserProfileScreenComponent } from './user-profile-screen/user-profile-screen.component';
import { PendingChangesGuard } from '@guards/can-deactivate.guard'; import { PendingChangesGuard } from '@guards/can-deactivate.guard';
import { TranslateModule } from '@ngx-translate/core';
const routes = [{ path: '', component: UserProfileScreenComponent, canDeactivate: [PendingChangesGuard] }]; const routes = [{ path: '', component: UserProfileScreenComponent, canDeactivate: [PendingChangesGuard] }];
@NgModule({ @NgModule({
declarations: [UserProfileScreenComponent], declarations: [UserProfileScreenComponent],
imports: [RouterModule.forChild(routes), CommonModule, SharedModule], imports: [RouterModule.forChild(routes), CommonModule, SharedModule, TranslateModule],
}) })
export class UserProfileModule {} export class UserProfileModule {}

View File

@ -45,7 +45,18 @@ import { SystemPreferencesFormComponent } from './screens/general-config/system-
import { ConfigureCertificateDialogComponent } from './dialogs/configure-digital-signature-dialog/configure-certificate-dialog.component'; import { ConfigureCertificateDialogComponent } from './dialogs/configure-digital-signature-dialog/configure-certificate-dialog.component';
import { PkcsSignatureConfigurationComponent } from './dialogs/configure-digital-signature-dialog/form/pkcs-signature-configuration/pkcs-signature-configuration.component'; import { PkcsSignatureConfigurationComponent } from './dialogs/configure-digital-signature-dialog/form/pkcs-signature-configuration/pkcs-signature-configuration.component';
import { KmsSignatureConfigurationComponent } from './dialogs/configure-digital-signature-dialog/form/kms-signature-configuration/kms-signature-configuration.component'; import { KmsSignatureConfigurationComponent } from './dialogs/configure-digital-signature-dialog/form/kms-signature-configuration/kms-signature-configuration.component';
import { IqserUsersModule } from '@iqser/common-ui'; import {
HumanizePipe,
IqserButtonsModule,
IqserEmptyStatesModule,
IqserInputsModule,
IqserListingModule,
IqserScrollbarModule,
IqserSharedModule,
IqserUploadFileModule,
IqserUsersModule,
} from '@iqser/common-ui';
import { TranslateModule } from '@ngx-translate/core';
const dialogs = [ const dialogs = [
AddEditCloneDossierTemplateDialogComponent, AddEditCloneDossierTemplateDialogComponent,
@ -98,6 +109,22 @@ const components = [
@NgModule({ @NgModule({
declarations: [...components], declarations: [...components],
providers: [AdminDialogService, AuditService, DigitalSignatureService, RulesService, SmtpConfigService], providers: [AdminDialogService, AuditService, DigitalSignatureService, RulesService, SmtpConfigService],
imports: [CommonModule, SharedModule, AdminRoutingModule, SharedAdminModule, A11yModule, IqserUsersModule], imports: [
CommonModule,
SharedModule,
AdminRoutingModule,
SharedAdminModule,
A11yModule,
IqserUsersModule,
TranslateModule,
HumanizePipe,
IqserButtonsModule,
IqserListingModule,
IqserScrollbarModule,
IqserInputsModule,
IqserUploadFileModule,
IqserEmptyStatesModule,
IqserSharedModule,
],
}) })
export class AdminModule {} export class AdminModule {}

View File

@ -5,11 +5,12 @@
icon="iqser:expand" icon="iqser:expand"
tooltipPosition="before" tooltipPosition="before"
></iqser-circle-button> ></iqser-circle-button>
<div class="all-caps-label" translate="user-stats.title"></div> <div [translate]="'user-stats.title'" class="all-caps-label"></div>
</div> </div>
<div class="header-wrapper mt-8"> <div class="header-wrapper mt-8">
<div class="heading-xl flex-1" translate="user-stats.title"></div> <div [translate]="'user-stats.title'" class="heading-xl flex-1"></div>
<iqser-circle-button <iqser-circle-button
(action)="toggleCollapse.emit()" (action)="toggleCollapse.emit()"
[tooltip]="'user-stats.collapse' | translate" [tooltip]="'user-stats.collapse' | translate"

View File

@ -11,7 +11,7 @@
<form [formGroup]="form"> <form [formGroup]="form">
<div class="dialog-content"> <div class="dialog-content">
<div class="iqser-input-group required w-300"> <div class="iqser-input-group required w-300">
<label translate="add-edit-dossier-attribute.form.label"></label> <label [translate]="'add-edit-dossier-attribute.form.label'"></label>
<input <input
[placeholder]="'add-edit-dossier-attribute.form.label-placeholder' | translate" [placeholder]="'add-edit-dossier-attribute.form.label-placeholder' | translate"
formControlName="label" formControlName="label"
@ -21,12 +21,12 @@
</div> </div>
<div *ngIf="!!dossierAttribute" class="iqser-input-group required w-300"> <div *ngIf="!!dossierAttribute" class="iqser-input-group required w-300">
<label translate="add-edit-dossier-attribute.form.placeholder"></label> <label [translate]="'add-edit-dossier-attribute.form.placeholder'"></label>
<input formControlName="placeholder" name="placeholder" type="text" /> <input formControlName="placeholder" name="placeholder" type="text" />
</div> </div>
<div class="iqser-input-group w-300"> <div class="iqser-input-group w-300">
<label translate="add-edit-dossier-attribute.form.type"></label> <label [translate]="'add-edit-dossier-attribute.form.type'"></label>
<mat-select formControlName="type"> <mat-select formControlName="type">
<mat-option *ngFor="let type of typeOptions" [value]="type"> <mat-option *ngFor="let type of typeOptions" [value]="type">
{{ translations[type] | translate }} {{ translations[type] | translate }}

View File

@ -11,7 +11,7 @@
<form [formGroup]="form"> <form [formGroup]="form">
<div class="dialog-content"> <div class="dialog-content">
<div class="iqser-input-group required w-300 mb-14"> <div class="iqser-input-group required w-300 mb-14">
<label translate="add-edit-dossier-state.form.name"></label> <label [translate]="'add-edit-dossier-state.form.name'"></label>
<input <input
[placeholder]="'add-edit-dossier-state.form.name-placeholder' | translate" [placeholder]="'add-edit-dossier-state.form.name-placeholder' | translate"
formControlName="name" formControlName="name"
@ -22,12 +22,12 @@
<div class="flex"> <div class="flex">
<div class="iqser-input-group required w-75"> <div class="iqser-input-group required w-75">
<label translate="add-edit-dossier-state.form.rank"></label> <label [translate]="'add-edit-dossier-state.form.rank'"></label>
<input formControlName="rank" name="rank" type="number" /> <input formControlName="rank" name="rank" type="number" />
</div> </div>
<div class="iqser-input-group required"> <div class="iqser-input-group required">
<label translate="add-edit-dossier-state.form.color"></label> <label [translate]="'add-edit-dossier-state.form.color'"></label>
<input <input
[placeholder]="'add-edit-dossier-state.form.color-placeholder' | translate" [placeholder]="'add-edit-dossier-state.form.color-placeholder' | translate"
class="hex-color-input" class="hex-color-input"

View File

@ -11,7 +11,7 @@
<form [formGroup]="form"> <form [formGroup]="form">
<div class="dialog-content"> <div class="dialog-content">
<div class="iqser-input-group required w-300"> <div class="iqser-input-group required w-300">
<label translate="add-edit-clone-dossier-template.form.name"></label> <label [translate]="'add-edit-clone-dossier-template.form.name'"></label>
<input <input
[placeholder]="'add-edit-clone-dossier-template.form.name-placeholder' | translate" [placeholder]="'add-edit-clone-dossier-template.form.name-placeholder' | translate"
formControlName="name" formControlName="name"
@ -21,7 +21,7 @@
</div> </div>
<div class="iqser-input-group w-400"> <div class="iqser-input-group w-400">
<label translate="add-edit-clone-dossier-template.form.description"></label> <label [translate]="'add-edit-clone-dossier-template.form.description'"></label>
<textarea <textarea
[placeholder]="'add-edit-clone-dossier-template.form.description-placeholder' | translate" [placeholder]="'add-edit-clone-dossier-template.form.description-placeholder' | translate"
formControlName="description" formControlName="description"
@ -46,9 +46,9 @@
<div class="iqser-input-group datepicker-wrapper"> <div class="iqser-input-group datepicker-wrapper">
<ng-container *ngIf="hasValidFrom"> <ng-container *ngIf="hasValidFrom">
<input <input
(dateChange)="applyValidityIntervalConstraints()"
[matDatepicker]="fromPicker" [matDatepicker]="fromPicker"
formControlName="validFrom" formControlName="validFrom"
(dateChange)="applyValidityIntervalConstraints()"
placeholder="dd/mm/yy" placeholder="dd/mm/yy"
/> />
<mat-datepicker-toggle [for]="fromPicker" matSuffix> <mat-datepicker-toggle [for]="fromPicker" matSuffix>
@ -61,9 +61,9 @@
<div class="iqser-input-group datepicker-wrapper"> <div class="iqser-input-group datepicker-wrapper">
<ng-container *ngIf="hasValidTo"> <ng-container *ngIf="hasValidTo">
<input <input
(dateChange)="applyValidityIntervalConstraints()"
[matDatepicker]="toPicker" [matDatepicker]="toPicker"
formControlName="validTo" formControlName="validTo"
(dateChange)="applyValidityIntervalConstraints()"
placeholder="dd/mm/yy" placeholder="dd/mm/yy"
/> />
<mat-datepicker-toggle [for]="toPicker" matSuffix> <mat-datepicker-toggle [for]="toPicker" matSuffix>

View File

@ -11,7 +11,7 @@
<form [formGroup]="form"> <form [formGroup]="form">
<div class="dialog-content"> <div class="dialog-content">
<div class="iqser-input-group required w-300"> <div class="iqser-input-group required w-300">
<label translate="add-edit-file-attribute.form.name"></label> <label [translate]="'add-edit-file-attribute.form.name'"></label>
<input <input
[placeholder]="'add-edit-file-attribute.form.name-placeholder' | translate" [placeholder]="'add-edit-file-attribute.form.name-placeholder' | translate"
formControlName="label" formControlName="label"
@ -21,7 +21,7 @@
</div> </div>
<div class="iqser-input-group w-300"> <div class="iqser-input-group w-300">
<label translate="add-edit-file-attribute.form.column-header"></label> <label [translate]="'add-edit-file-attribute.form.column-header'"></label>
<input <input
[placeholder]="'add-edit-file-attribute.form.column-header-placeholder' | translate" [placeholder]="'add-edit-file-attribute.form.column-header-placeholder' | translate"
formControlName="csvColumnHeader" formControlName="csvColumnHeader"
@ -31,7 +31,7 @@
</div> </div>
<div class="iqser-input-group w-300 required"> <div class="iqser-input-group w-300 required">
<label translate="add-edit-file-attribute.form.type"></label> <label [translate]="'add-edit-file-attribute.form.type'"></label>
<mat-select formControlName="type"> <mat-select formControlName="type">
<mat-option *ngFor="let type of typeOptions" [value]="type"> <mat-option *ngFor="let type of typeOptions" [value]="type">
{{ translations[type] | translate }} {{ translations[type] | translate }}

View File

@ -3,7 +3,7 @@
<form (submit)="save()" [formGroup]="form"> <form (submit)="save()" [formGroup]="form">
<div class="dialog-content"> <div class="dialog-content">
<div class="iqser-input-group required w-300"> <div class="iqser-input-group required w-300">
<label translate="reset-password-dialog.form.password"></label> <label [translate]="'reset-password-dialog.form.password'"></label>
<input formControlName="temporaryPassword" name="temporaryPassword" type="password" /> <input formControlName="temporaryPassword" name="temporaryPassword" type="password" />
</div> </div>
</div> </div>
@ -13,6 +13,6 @@
{{ 'reset-password-dialog.actions.save' | translate }} {{ 'reset-password-dialog.actions.save' | translate }}
</button> </button>
<div (click)="toggleResetPassword.emit()" class="all-caps-label cancel" translate="reset-password-dialog.actions.cancel"></div> <div (click)="toggleResetPassword.emit()" [translate]="'reset-password-dialog.actions.cancel'" class="all-caps-label cancel"></div>
</div> </div>
</form> </form>

View File

@ -9,22 +9,22 @@
<form (submit)="save()" [formGroup]="form"> <form (submit)="save()" [formGroup]="form">
<div class="dialog-content"> <div class="dialog-content">
<div class="iqser-input-group required w-300"> <div class="iqser-input-group required w-300">
<label translate="add-edit-user.form.first-name"></label> <label [translate]="'add-edit-user.form.first-name'"></label>
<input formControlName="firstName" name="firstName" type="text" /> <input formControlName="firstName" name="firstName" type="text" />
</div> </div>
<div class="iqser-input-group required w-300"> <div class="iqser-input-group required w-300">
<label translate="add-edit-user.form.last-name"></label> <label [translate]="'add-edit-user.form.last-name'"></label>
<input formControlName="lastName" name="lastName" type="text" /> <input formControlName="lastName" name="lastName" type="text" />
</div> </div>
<div class="iqser-input-group required w-300"> <div class="iqser-input-group required w-300">
<label translate="add-edit-user.form.email"></label> <label [translate]="'add-edit-user.form.email'"></label>
<input formControlName="email" name="email" type="email" /> <input formControlName="email" name="email" type="email" />
</div> </div>
<div class="iqser-input-group"> <div class="iqser-input-group">
<label translate="add-edit-user.form.role"></label> <label [translate]="'add-edit-user.form.role'"></label>
<div class="roles-wrapper"> <div class="roles-wrapper">
<mat-checkbox <mat-checkbox
(change)="setRolesRequirements($event.checked, role)" (change)="setRolesRequirements($event.checked, role)"
@ -40,8 +40,8 @@
<div <div
(click)="toggleResetPassword.emit()" (click)="toggleResetPassword.emit()"
*ngIf="!!user" *ngIf="!!user"
[translate]="'add-edit-user.form.reset-password'"
class="mt-24 fit-content link-action" class="mt-24 fit-content link-action"
translate="add-edit-user.form.reset-password"
></div> ></div>
</div> </div>
@ -58,6 +58,6 @@
icon="iqser:trash" icon="iqser:trash"
></iqser-icon-button> ></iqser-icon-button>
<div (click)="cancel.emit()" class="all-caps-label cancel" translate="add-edit-user.actions.cancel"></div> <div (click)="cancel.emit()" [translate]="'add-edit-user.actions.cancel'" class="all-caps-label cancel"></div>
</div> </div>
</form> </form>

View File

@ -1,11 +1,11 @@
<section class="dialog"> <section class="dialog">
<div <div
class="dialog-header heading-l"
[translate]="!isInConfiguration ? translations.title.beforeConfiguration : translations.title[selectedOption]" [translate]="!isInConfiguration ? translations.title.beforeConfiguration : translations.title[selectedOption]"
class="dialog-header heading-l"
></div> ></div>
<div class="dialog-content"> <div class="dialog-content">
<form [formGroup]="form" *ngIf="!isInConfiguration"> <form *ngIf="!isInConfiguration" [formGroup]="form">
<iqser-details-radio [options]="options" formControlName="option"></iqser-details-radio> <iqser-details-radio [options]="options" formControlName="option"></iqser-details-radio>
</form> </form>
<ng-container *ngIf="isInConfiguration"> <ng-container *ngIf="isInConfiguration">
@ -25,13 +25,17 @@
<button (click)="toggleIsInConfiguration()" color="primary" mat-flat-button> <button (click)="toggleIsInConfiguration()" color="primary" mat-flat-button>
{{ 'digital-signature-dialog.actions.continue' | translate }} {{ 'digital-signature-dialog.actions.continue' | translate }}
</button> </button>
<div translate="digital-signature-dialog.actions.cancel" class="all-caps-label cancel" mat-dialog-close></div> <div [translate]="'digital-signature-dialog.actions.cancel'" class="all-caps-label cancel" mat-dialog-close></div>
</ng-container> </ng-container>
<ng-container *ngIf="isInConfiguration"> <ng-container *ngIf="isInConfiguration">
<button (click)="save()" [disabled]="disabled" color="primary" mat-flat-button> <button (click)="save()" [disabled]="disabled" color="primary" mat-flat-button>
{{ 'digital-signature-dialog.actions.save' | translate }} {{ 'digital-signature-dialog.actions.save' | translate }}
</button> </button>
<div translate="digital-signature-dialog.actions.back" class="all-caps-label cancel" (click)="toggleIsInConfiguration()"></div> <div
(click)="toggleIsInConfiguration()"
[translate]="'digital-signature-dialog.actions.back'"
class="all-caps-label cancel"
></div>
</ng-container> </ng-container>
</div> </div>

View File

@ -1,37 +1,38 @@
<iqser-upload-file [class.w-300]="!!file" accept=".pem" [file]="file" [readonly]="!!file" (fileChanged)="addRemoveCertificate($event)"> <iqser-upload-file (fileChanged)="addRemoveCertificate($event)" [class.w-300]="!!file" [file]="file" [readonly]="!!file" accept=".pem">
</iqser-upload-file> </iqser-upload-file>
<form [formGroup]="form"> <form [formGroup]="form">
<div class="flex"> <div class="flex">
<div class="flex fields-container"> <div class="flex fields-container">
<div class="iqser-input-group required w-300"> <div class="iqser-input-group required w-300">
<label translate="digital-signature-dialog.forms.kms.certificate-name"></label> <label [translate]="'digital-signature-dialog.forms.kms.certificate-name'"></label>
<input formControlName="certificateName" type="text" /> <input formControlName="certificateName" type="text" />
</div> </div>
<div class="iqser-input-group required w-300"> <div class="iqser-input-group required w-300">
<label translate="digital-signature-dialog.forms.kms.kms-service-endpoint"></label> <label [translate]="'digital-signature-dialog.forms.kms.kms-service-endpoint'"></label>
<input formControlName="kmsServiceEndpoint" type="text" /> <input formControlName="kmsServiceEndpoint" type="text" />
</div> </div>
<div class="iqser-input-group required w-300"> <div class="iqser-input-group required w-300">
<label translate="digital-signature-dialog.forms.kms.kms-region"></label> <label [translate]="'digital-signature-dialog.forms.kms.kms-region'"></label>
<input formControlName="kmsRegion" type="text" /> <input formControlName="kmsRegion" type="text" />
</div> </div>
<div class="iqser-input-group required w-300"> <div class="iqser-input-group required w-300">
<label translate="digital-signature-dialog.forms.kms.kms-id"></label> <label [translate]="'digital-signature-dialog.forms.kms.kms-id'"></label>
<input formControlName="kmsKeyId" type="text" /> <input formControlName="kmsKeyId" type="text" />
</div> </div>
<div class="iqser-input-group required w-300"> <div class="iqser-input-group required w-300">
<label translate="digital-signature-dialog.forms.kms.kms-access-key"></label> <label [translate]="'digital-signature-dialog.forms.kms.kms-access-key'"></label>
<input formControlName="kmsAccessKey" type="text" /> <input formControlName="kmsAccessKey" type="text" />
</div> </div>
<div class="iqser-input-group required w-300" *ngIf="!digitalSignature"> <div *ngIf="!digitalSignature" class="iqser-input-group required w-300">
<label translate="digital-signature-dialog.forms.kms.kms-secret-key"></label> <label [translate]="'digital-signature-dialog.forms.kms.kms-secret-key'"></label>
<input formControlName="kmsSecretKey" type="text" /> <input formControlName="kmsSecretKey" type="text" />
</div> </div>
</div> </div>
<div class="flex fields-container" *ngIf="!digitalSignature"> <div *ngIf="!digitalSignature" class="flex fields-container">
<div class="iqser-input-group required w-400 certificate"> <div class="iqser-input-group required w-400 certificate">
<label translate="digital-signature-dialog.forms.kms.certificate-content"></label> <label [translate]="'digital-signature-dialog.forms.kms.certificate-content'"></label>
<textarea formControlName="certificate" type="text"></textarea> <textarea formControlName="certificate" type="text"></textarea>
</div> </div>
</div> </div>

View File

@ -1,31 +1,31 @@
<iqser-upload-file <iqser-upload-file
(fileChanged)="addRemoveCertificate($event)"
[class.w-400]="!!file" [class.w-400]="!!file"
accept=".p12"
[file]="file" [file]="file"
[readonly]="!!file" [readonly]="!!file"
(fileChanged)="addRemoveCertificate($event)" accept=".p12"
></iqser-upload-file> ></iqser-upload-file>
<form [formGroup]="form"> <form [formGroup]="form">
<div class="flex"> <div class="flex">
<div class="flex fields-container"> <div class="flex fields-container">
<div class="iqser-input-group required w-300"> <div class="iqser-input-group required w-300">
<label translate="digital-signature-dialog.forms.pkcs.certificate-name"></label> <label [translate]="'digital-signature-dialog.forms.pkcs.certificate-name'"></label>
<input formControlName="certificateName" type="text" /> <input formControlName="certificateName" type="text" />
</div> </div>
<div class="iqser-input-group required w-300" *ngIf="!digitalSignature"> <div *ngIf="!digitalSignature" class="iqser-input-group required w-300">
<label translate="digital-signature-dialog.forms.pkcs.password-key"></label> <label [translate]="'digital-signature-dialog.forms.pkcs.password-key'"></label>
<input formControlName="password" type="password" /> <input formControlName="password" type="password" />
</div> </div>
<div class="iqser-input-group w-300"> <div class="iqser-input-group w-300">
<label translate="digital-signature-dialog.forms.pkcs.contact-information"></label> <label [translate]="'digital-signature-dialog.forms.pkcs.contact-information'"></label>
<input formControlName="contactInfo" type="text" /> <input formControlName="contactInfo" type="text" />
</div> </div>
<div class="iqser-input-group w-300"> <div class="iqser-input-group w-300">
<label translate="digital-signature-dialog.forms.pkcs.location"></label> <label [translate]="'digital-signature-dialog.forms.pkcs.location'"></label>
<input formControlName="location" type="text" /> <input formControlName="location" type="text" />
</div> </div>
<div class="iqser-input-group w-450"> <div class="iqser-input-group w-450">
<label translate="digital-signature-dialog.forms.pkcs.reason"></label> <label [translate]="'digital-signature-dialog.forms.pkcs.reason'"></label>
<textarea formControlName="reason" rows="4" type="text"></textarea> <textarea formControlName="reason" rows="4" type="text"></textarea>
</div> </div>
</div> </div>

View File

@ -1,5 +1,5 @@
<section class="dialog"> <section class="dialog">
<div class="dialog-header heading-l" translate="file-attributes-configurations.title"></div> <div [translate]="'file-attributes-configurations.title'" class="dialog-header heading-l"></div>
<form [formGroup]="form"> <form [formGroup]="form">
<div class="dialog-content"> <div class="dialog-content">
@ -10,7 +10,7 @@
</div> </div>
<ng-container *ngIf="form.get('supportCsvMapping').value"> <ng-container *ngIf="form.get('supportCsvMapping').value">
<div class="iqser-input-group required w-250"> <div class="iqser-input-group required w-250">
<label translate="file-attributes-configurations.form.key-column"></label> <label [translate]="'file-attributes-configurations.form.key-column'"></label>
<input <input
[placeholder]="'file-attributes-configurations.form.key-column' | translate" [placeholder]="'file-attributes-configurations.form.key-column' | translate"
formControlName="keyColumn" formControlName="keyColumn"
@ -20,7 +20,7 @@
</div> </div>
<div class="iqser-input-group required w-110"> <div class="iqser-input-group required w-110">
<label translate="file-attributes-configurations.form.delimiter"></label> <label [translate]="'file-attributes-configurations.form.delimiter'"></label>
<input <input
[placeholder]="'file-attributes-configurations.form.delimiter' | translate" [placeholder]="'file-attributes-configurations.form.delimiter' | translate"
formControlName="delimiter" formControlName="delimiter"
@ -30,7 +30,7 @@
</div> </div>
<div class="iqser-input-group w-150 required"> <div class="iqser-input-group w-150 required">
<label translate="file-attributes-configurations.form.encoding-type"></label> <label [translate]="'file-attributes-configurations.form.encoding-type'"></label>
<mat-select formControlName="encodingType"> <mat-select formControlName="encodingType">
<mat-option *ngFor="let type of encodingTypeOptions" [value]="type"> <mat-option *ngFor="let type of encodingTypeOptions" [value]="type">
{{ translations[type] | translate }} {{ translations[type] | translate }}
@ -45,7 +45,7 @@
{{ 'file-attributes-configurations.save' | translate }} {{ 'file-attributes-configurations.save' | translate }}
</button> </button>
<div (click)="close()" class="all-caps-label cancel" translate="file-attributes-configurations.cancel"></div> <div (click)="close()" [translate]="'file-attributes-configurations.cancel'" class="all-caps-label cancel"></div>
</div> </div>
</form> </form>

View File

@ -36,13 +36,13 @@
<mat-menu #readOnlyMenu="matMenu" class="padding-bottom-8"> <mat-menu #readOnlyMenu="matMenu" class="padding-bottom-8">
<button <button
(click)="setAttributeForSelection('readonly', true)" (click)="setAttributeForSelection('readonly', true)"
[translate]="'file-attributes-csv-import.table-header.actions.enable-read-only'"
mat-menu-item mat-menu-item
translate="file-attributes-csv-import.table-header.actions.enable-read-only"
></button> ></button>
<button <button
(click)="setAttributeForSelection('readonly', false)" (click)="setAttributeForSelection('readonly', false)"
[translate]="'file-attributes-csv-import.table-header.actions.disable-read-only'"
mat-menu-item mat-menu-item
translate="file-attributes-csv-import.table-header.actions.disable-read-only"
></button> ></button>
</mat-menu> </mat-menu>

View File

@ -1,10 +1,10 @@
<section class="dialog"> <section class="dialog">
<div class="dialog-header heading-l" translate="file-attributes-csv-import.title"></div> <div [translate]="'file-attributes-csv-import.title'" class="dialog-header heading-l"></div>
<div class="dialog-content"> <div class="dialog-content">
<div class="sub-header"> <div class="sub-header">
<div class="left"> <div class="left">
<div class="info"><span translate="file-attributes-csv-import.file"> </span> {{ data.csv.name }}</div> <div class="info"><span [translate]="'file-attributes-csv-import.file'"> </span> {{ data.csv.name }}</div>
<div class="large-label"> <div class="large-label">
{{ 'file-attributes-csv-import.total-rows' | translate: { rows: parseResult?.data?.length } }} {{ 'file-attributes-csv-import.total-rows' | translate: { rows: parseResult?.data?.length } }}
</div> </div>
@ -79,13 +79,13 @@
<div class="quick-activation"> <div class="quick-activation">
<span <span
(click)="activateAll()" (click)="activateAll()"
[translate]="'file-attributes-csv-import.quick-activation.all'"
class="all-caps-label primary pointer" class="all-caps-label primary pointer"
translate="file-attributes-csv-import.quick-activation.all"
></span> ></span>
<span <span
(click)="deactivateAll()" (click)="deactivateAll()"
[translate]="'file-attributes-csv-import.quick-activation.none'"
class="all-caps-label primary pointer" class="all-caps-label primary pointer"
translate="file-attributes-csv-import.quick-activation.none"
></span> ></span>
</div> </div>
</div> </div>

View File

@ -4,7 +4,7 @@
<form (submit)="save()" [formGroup]="form"> <form (submit)="save()" [formGroup]="form">
<div class="dialog-content"> <div class="dialog-content">
<div class="iqser-input-group required w-300"> <div class="iqser-input-group required w-300">
<label translate="smtp-auth-config.form.username"></label> <label [translate]="'smtp-auth-config.form.username'"></label>
<input <input
[placeholder]="'smtp-auth-config.form.username-placeholder' | translate" [placeholder]="'smtp-auth-config.form.username-placeholder' | translate"
formControlName="user" formControlName="user"
@ -14,7 +14,7 @@
</div> </div>
<div class="iqser-input-group required w-300"> <div class="iqser-input-group required w-300">
<label translate="smtp-auth-config.form.password"></label> <label [translate]="'smtp-auth-config.form.password'"></label>
<input formControlName="password" name="password" type="password" /> <input formControlName="password" name="password" type="password" />
</div> </div>
</div> </div>
@ -23,9 +23,9 @@
<button [disabled]="form.invalid" color="primary" mat-flat-button type="submit"> <button [disabled]="form.invalid" color="primary" mat-flat-button type="submit">
{{ 'smtp-auth-config.actions.save' | translate }} {{ 'smtp-auth-config.actions.save' | translate }}
</button> </button>
<div class="all-caps-label cancel" mat-dialog-close translate="smtp-auth-config.actions.cancel"></div> <div [translate]="'smtp-auth-config.actions.cancel'" class="all-caps-label cancel" mat-dialog-close></div>
</div> </div>
</form> </form>
<iqser-circle-button class="dialog-close" icon="iqser:close" (action)="close()"></iqser-circle-button> <iqser-circle-button (action)="close()" class="dialog-close" icon="iqser:close"></iqser-circle-button>
</section> </section>

View File

@ -9,20 +9,20 @@
[bulkActions]="bulkActions" [bulkActions]="bulkActions"
[headerTemplate]="headerTemplate" [headerTemplate]="headerTemplate"
[itemSize]="80" [itemSize]="80"
[noDataIcon]="'red:template'"
[noDataText]="'dossier-templates-listing.no-data.title' | translate" [noDataText]="'dossier-templates-listing.no-data.title' | translate"
[noMatchText]="'dossier-templates-listing.no-match.title' | translate" [noMatchText]="'dossier-templates-listing.no-match.title' | translate"
[selectionEnabled]="true" [selectionEnabled]="true"
[tableColumnConfigs]="tableColumnConfigs" [tableColumnConfigs]="tableColumnConfigs"
noDataIcon="red:template"
></iqser-table> ></iqser-table>
<ng-template #bulkActions> <ng-template #bulkActions>
<iqser-circle-button <iqser-circle-button
(action)="openBulkDeleteTemplatesDialog($event)" (action)="openBulkDeleteTemplatesDialog($event)"
*ngIf="currentUser.isAdmin && (listingService.areSomeSelected$ | async)" *ngIf="currentUser.isAdmin && (listingService.areSomeSelected$ | async)"
[icon]="'iqser:trash'"
[tooltip]="'dossier-templates-listing.bulk.delete' | translate" [tooltip]="'dossier-templates-listing.bulk.delete' | translate"
[type]="circleButtonTypes.dark" [type]="circleButtonTypes.dark"
icon="iqser:trash"
></iqser-circle-button> ></iqser-circle-button>
</ng-template> </ng-template>
@ -36,9 +36,9 @@
<iqser-icon-button <iqser-icon-button
(action)="openAddDossierTemplateDialog()" (action)="openAddDossierTemplateDialog()"
*ngIf="currentUser.isAdmin && userPreferenceService.areDevFeaturesEnabled" *ngIf="currentUser.isAdmin && userPreferenceService.areDevFeaturesEnabled"
[icon]="'iqser:plus'"
[label]="'dossier-templates-listing.add-new' | translate" [label]="'dossier-templates-listing.add-new' | translate"
[type]="iconButtonTypes.primary" [type]="iconButtonTypes.primary"
icon="iqser:plus"
></iqser-icon-button> ></iqser-icon-button>
</div> </div>
</ng-template> </ng-template>

View File

@ -5,12 +5,23 @@ import { SharedModule } from '@shared/shared.module';
import { TableItemComponent } from './table-item/table-item.component'; import { TableItemComponent } from './table-item/table-item.component';
import { DossierTemplatesListingScreenComponent } from './dossier-templates-listing-screen/dossier-templates-listing-screen.component'; import { DossierTemplatesListingScreenComponent } from './dossier-templates-listing-screen/dossier-templates-listing-screen.component';
import { SharedAdminModule } from '../../shared/shared-admin.module'; import { SharedAdminModule } from '../../shared/shared-admin.module';
import { IqserUsersModule } from '@iqser/common-ui'; import { IqserButtonsModule, IqserInputsModule, IqserListingModule, IqserUsersModule } from '@iqser/common-ui';
import { TranslateModule } from '@ngx-translate/core';
const routes = [{ path: '', component: DossierTemplatesListingScreenComponent }]; const routes = [{ path: '', component: DossierTemplatesListingScreenComponent }];
@NgModule({ @NgModule({
declarations: [TableItemComponent, DossierTemplatesListingScreenComponent], declarations: [TableItemComponent, DossierTemplatesListingScreenComponent],
imports: [RouterModule.forChild(routes), CommonModule, SharedModule, SharedAdminModule, IqserUsersModule], imports: [
RouterModule.forChild(routes),
CommonModule,
SharedModule,
SharedAdminModule,
IqserUsersModule,
TranslateModule,
IqserInputsModule,
IqserButtonsModule,
IqserListingModule,
],
}) })
export class DossierTemplatesListingModule {} export class DossierTemplatesListingModule {}

View File

@ -7,6 +7,7 @@ import { PendingChangesGuard } from '@guards/can-deactivate.guard';
import { EntityInfoComponent } from './screens/entity-info/entity-info.component'; import { EntityInfoComponent } from './screens/entity-info/entity-info.component';
import { MonacoEditorModule } from '@materia-ui/ngx-monaco-editor'; import { MonacoEditorModule } from '@materia-ui/ngx-monaco-editor';
import { SharedAdminModule } from '../../shared/shared-admin.module'; import { SharedAdminModule } from '../../shared/shared-admin.module';
import { TranslateModule } from '@ngx-translate/core';
const routes: Routes = [ const routes: Routes = [
{ path: '', redirectTo: 'info', pathMatch: 'full' }, { path: '', redirectTo: 'info', pathMatch: 'full' },
@ -34,6 +35,6 @@ const routes: Routes = [
@NgModule({ @NgModule({
declarations: [DictionaryScreenComponent, EntityInfoComponent], declarations: [DictionaryScreenComponent, EntityInfoComponent],
imports: [RouterModule.forChild(routes), SharedAdminModule, CommonModule, SharedModule, MonacoEditorModule], imports: [RouterModule.forChild(routes), SharedAdminModule, CommonModule, SharedModule, MonacoEditorModule, TranslateModule],
}) })
export class EntitiesModule {} export class EntitiesModule {}

View File

@ -22,7 +22,7 @@
{{ 'entity.info.actions.save' | translate }} {{ 'entity.info.actions.save' | translate }}
</button> </button>
<div (click)="revert()" class="all-caps-label cancel" translate="entity.info.actions.revert"></div> <div (click)="revert()" [translate]="'entity.info.actions.revert'" class="all-caps-label cancel"></div>
</div> </div>
</div> </div>
</div> </div>

View File

@ -6,7 +6,7 @@
<div class="dialog-content"> <div class="dialog-content">
<div class="dialog-content-left"> <div class="dialog-content-left">
<div class="iqser-input-group required"> <div class="iqser-input-group required">
<label translate="general-config-screen.form.host"></label> <label [translate]="'general-config-screen.form.host'"></label>
<input <input
formControlName="host" formControlName="host"
name="host" name="host"
@ -16,12 +16,12 @@
</div> </div>
<div class="iqser-input-group w-100"> <div class="iqser-input-group w-100">
<label translate="general-config-screen.form.port"></label> <label [translate]="'general-config-screen.form.port'"></label>
<input formControlName="port" name="port" type="number" /> <input formControlName="port" name="port" type="number" />
</div> </div>
<div class="iqser-input-group required"> <div class="iqser-input-group required">
<label translate="general-config-screen.form.from"></label> <label [translate]="'general-config-screen.form.from'"></label>
<input <input
formControlName="from" formControlName="from"
name="from" name="from"
@ -31,7 +31,7 @@
</div> </div>
<div class="iqser-input-group"> <div class="iqser-input-group">
<label translate="general-config-screen.form.from-display-name"></label> <label [translate]="'general-config-screen.form.from-display-name'"></label>
<input <input
formControlName="fromDisplayName" formControlName="fromDisplayName"
name="fromDisplayName" name="fromDisplayName"
@ -42,7 +42,7 @@
</div> </div>
<div class="iqser-input-group"> <div class="iqser-input-group">
<label translate="general-config-screen.form.reply-to"></label> <label [translate]="'general-config-screen.form.reply-to'"></label>
<input <input
formControlName="replyTo" formControlName="replyTo"
name="replyTo" name="replyTo"
@ -52,7 +52,7 @@
</div> </div>
<div class="iqser-input-group"> <div class="iqser-input-group">
<label translate="general-config-screen.form.reply-to-display-name"></label> <label [translate]="'general-config-screen.form.reply-to-display-name'"></label>
<input <input
formControlName="replyToDisplayName" formControlName="replyToDisplayName"
name="replyToDisplayName" name="replyToDisplayName"
@ -62,38 +62,38 @@
</div> </div>
<div class="iqser-input-group"> <div class="iqser-input-group">
<label translate="general-config-screen.form.envelope-from"></label> <label [translate]="'general-config-screen.form.envelope-from'"></label>
<input <input
formControlName="envelopeFrom" formControlName="envelopeFrom"
name="envelopeFrom" name="envelopeFrom"
placeholder="{{ 'general-config-screen.form.envelope-from-placeholder' | translate }}" placeholder="{{ 'general-config-screen.form.envelope-from-placeholder' | translate }}"
type="text" type="text"
/> />
<span class="hint" translate="general-config-screen.form.envelope-from-hint"></span> <span [translate]="'general-config-screen.form.envelope-from-hint'" class="hint"></span>
</div> </div>
</div> </div>
<div> <div>
<div class="iqser-input-group"> <div class="iqser-input-group">
<label translate="general-config-screen.form.ssl"></label> <label [translate]="'general-config-screen.form.ssl'"></label>
<mat-slide-toggle color="primary" formControlName="ssl"></mat-slide-toggle> <mat-slide-toggle color="primary" formControlName="ssl"></mat-slide-toggle>
</div> </div>
<div class="iqser-input-group"> <div class="iqser-input-group">
<label translate="general-config-screen.form.starttls"></label> <label [translate]="'general-config-screen.form.starttls'"></label>
<mat-slide-toggle color="primary" formControlName="starttls"></mat-slide-toggle> <mat-slide-toggle color="primary" formControlName="starttls"></mat-slide-toggle>
</div> </div>
<div class="iqser-input-group"> <div class="iqser-input-group">
<label translate="general-config-screen.form.auth"></label> <label [translate]="'general-config-screen.form.auth'"></label>
<mat-slide-toggle <mat-slide-toggle
(change)="onToggleAuthentication($event.checked)"
color="primary" color="primary"
formControlName="auth" formControlName="auth"
(change)="onToggleAuthentication($event.checked)"
></mat-slide-toggle> ></mat-slide-toggle>
</div> </div>
<div <div
(click)="openAuthConfigDialog(true)" (click)="openAuthConfigDialog(true)"
*ngIf="form.get('auth').value" *ngIf="form.get('auth').value"
[translate]="'general-config-screen.form.change-credentials'"
class="link-action" class="link-action"
translate="general-config-screen.form.change-credentials"
></div> ></div>
</div> </div>
</div> </div>

View File

@ -3,12 +3,21 @@ import { CommonModule } from '@angular/common';
import { DossierTemplateInfoScreenComponent } from './info-screen/dossier-template-info-screen.component'; import { DossierTemplateInfoScreenComponent } from './info-screen/dossier-template-info-screen.component';
import { RouterModule } from '@angular/router'; import { RouterModule } from '@angular/router';
import { SharedModule } from '@shared/shared.module'; import { SharedModule } from '@shared/shared.module';
import { IqserUsersModule } from '@iqser/common-ui'; import { IqserButtonsModule, IqserScrollbarModule, IqserUsersModule } from '@iqser/common-ui';
import { TranslateModule } from '@ngx-translate/core';
const routes = [{ path: '', component: DossierTemplateInfoScreenComponent }]; const routes = [{ path: '', component: DossierTemplateInfoScreenComponent }];
@NgModule({ @NgModule({
declarations: [DossierTemplateInfoScreenComponent], declarations: [DossierTemplateInfoScreenComponent],
imports: [RouterModule.forChild(routes), CommonModule, SharedModule, IqserUsersModule], imports: [
RouterModule.forChild(routes),
CommonModule,
SharedModule,
IqserUsersModule,
TranslateModule,
IqserButtonsModule,
IqserScrollbarModule,
],
}) })
export class DossierTemplateInfoModule {} export class DossierTemplateInfoModule {}

View File

@ -2,7 +2,7 @@
<ng-container *ngIf="dossierTemplateStats$ | async as stats"> <ng-container *ngIf="dossierTemplateStats$ | async as stats">
<div class="heading-xl">{{ dossierTemplate.name }}</div> <div class="heading-xl">{{ dossierTemplate.name }}</div>
<div class="all-caps-label mt-24 mb-8" translate="dossier-template-info-screen.created-by"></div> <div [translate]="'dossier-template-info-screen.created-by'" class="all-caps-label mt-24 mb-8"></div>
<iqser-initials-avatar [user]="dossierTemplate.createdBy || 'system'" [withName]="true" size="large"></iqser-initials-avatar> <iqser-initials-avatar [user]="dossierTemplate.createdBy || 'system'" [withName]="true" size="large"></iqser-initials-avatar>
@ -43,7 +43,7 @@
</div> </div>
</div> </div>
<div class="heading mt-40" translate="dossier-template-info-screen.description"> <div [translate]="'dossier-template-info-screen.description'" class="heading mt-40">
<iqser-circle-button <iqser-circle-button
(action)="openEditDossierTemplateDialog($event, dossierTemplate)" (action)="openEditDossierTemplateDialog($event, dossierTemplate)"
*ngIf="permissionsService.isAdmin()" *ngIf="permissionsService.isAdmin()"

View File

@ -6,12 +6,14 @@ import { SharedModule } from '@shared/shared.module';
import { TableItemComponent } from './table-item/table-item.component'; import { TableItemComponent } from './table-item/table-item.component';
import { JustificationsDialogService } from './justifications-dialog.service'; import { JustificationsDialogService } from './justifications-dialog.service';
import { AddEditJustificationDialogComponent } from './add-edit-justification-dialog/add-edit-justification-dialog.component'; import { AddEditJustificationDialogComponent } from './add-edit-justification-dialog/add-edit-justification-dialog.component';
import { TranslateModule } from '@ngx-translate/core';
import { IqserButtonsModule, IqserListingModule } from '@iqser/common-ui';
const routes = [{ path: '', component: JustificationsScreenComponent }]; const routes = [{ path: '', component: JustificationsScreenComponent }];
@NgModule({ @NgModule({
declarations: [JustificationsScreenComponent, TableItemComponent, AddEditJustificationDialogComponent], declarations: [JustificationsScreenComponent, TableItemComponent, AddEditJustificationDialogComponent],
imports: [RouterModule.forChild(routes), CommonModule, SharedModule], imports: [RouterModule.forChild(routes), CommonModule, SharedModule, TranslateModule, IqserButtonsModule, IqserListingModule],
providers: [JustificationsDialogService], providers: [JustificationsDialogService],
}) })
export class JustificationsModule {} export class JustificationsModule {}

View File

@ -4,13 +4,14 @@ import { RouterModule } from '@angular/router';
import { SharedModule } from '@shared/shared.module'; import { SharedModule } from '@shared/shared.module';
import { PermissionsScreenComponent } from './permissions-screen/permissions-screen.component'; import { PermissionsScreenComponent } from './permissions-screen/permissions-screen.component';
import { ConfigService } from './config.service'; import { ConfigService } from './config.service';
import { CommonUiModule } from '@iqser/common-ui'; import { TranslateModule } from '@ngx-translate/core';
import { IqserListingModule } from '@iqser/common-ui';
const routes = [{ path: '', component: PermissionsScreenComponent }]; const routes = [{ path: '', component: PermissionsScreenComponent }];
@NgModule({ @NgModule({
declarations: [PermissionsScreenComponent], declarations: [PermissionsScreenComponent],
imports: [RouterModule.forChild(routes), CommonModule, SharedModule, CommonUiModule], imports: [RouterModule.forChild(routes), CommonModule, SharedModule, TranslateModule, IqserListingModule],
providers: [ConfigService], providers: [ConfigService],
}) })
export class PermissionsModule {} export class PermissionsModule {}

View File

@ -1,12 +1,12 @@
<div class="content-container" iqserHasScrollbar> <div class="content-container" iqserHasScrollbar>
<div class="heading-xl" translate="reports-screen.title"></div> <div [translate]="'reports-screen.title'" class="heading-xl"></div>
<div class="description" translate="reports-screen.setup"></div> <div [translate]="'reports-screen.setup'" class="description"></div>
<div class="description" translate="reports-screen.description"></div> <div [translate]="'reports-screen.description'" class="description"></div>
<div *ngIf="placeholders$ | async as placeholders" class="placeholders"> <div *ngIf="placeholders$ | async as placeholders" class="placeholders">
<div class="all-caps-label" translate="reports-screen.table-header.placeholders"></div> <div [translate]="'reports-screen.table-header.placeholders'" class="all-caps-label"></div>
<div class="all-caps-label" translate="reports-screen.table-header.description"></div> <div [translate]="'reports-screen.table-header.description'" class="all-caps-label"></div>
<ng-container *ngFor="let placeholder of placeholders"> <ng-container *ngFor="let placeholder of placeholders">
<div class="placeholder">{{ placeholder.placeholder }}</div> <div class="placeholder">{{ placeholder.placeholder }}</div>
<div <div
@ -19,7 +19,8 @@
<div *ngIf="availableTemplates$ | async as availableTemplates" class="right-container" iqserHasScrollbar> <div *ngIf="availableTemplates$ | async as availableTemplates" class="right-container" iqserHasScrollbar>
<div class="header"> <div class="header">
<div class="heading" translate="reports-screen.report-documents"></div> <div [translate]="'reports-screen.report-documents'" class="heading"></div>
<iqser-circle-button <iqser-circle-button
(action)="fileInput.click()" (action)="fileInput.click()"
*ngIf="permissionsService.isAdmin()" *ngIf="permissionsService.isAdmin()"
@ -31,8 +32,8 @@
<div <div
(click)="fileInput.click()" (click)="fileInput.click()"
*ngIf="permissionsService.isAdmin() && !availableTemplates?.length" *ngIf="permissionsService.isAdmin() && !availableTemplates?.length"
[translate]="'reports-screen.upload-document'"
class="template upload-button" class="template upload-button"
translate="reports-screen.upload-document"
></div> ></div>
<div *ngFor="let template of availableTemplates" class="template"> <div *ngFor="let template of availableTemplates" class="template">
@ -42,6 +43,7 @@
<div class="actions"> <div class="actions">
<iqser-circle-button (action)="download(template)" [iconSize]="12" [size]="18" icon="iqser:download"></iqser-circle-button> <iqser-circle-button (action)="download(template)" [iconSize]="12" [size]="18" icon="iqser:download"></iqser-circle-button>
<iqser-circle-button <iqser-circle-button
(action)="deleteTemplate(template)" (action)="deleteTemplate(template)"
*ngIf="permissionsService.isAdmin()" *ngIf="permissionsService.isAdmin()"

View File

@ -3,11 +3,13 @@ import { CommonModule } from '@angular/common';
import { RouterModule } from '@angular/router'; import { RouterModule } from '@angular/router';
import { SharedModule } from '@shared/shared.module'; import { SharedModule } from '@shared/shared.module';
import { ReportsScreenComponent } from './reports-screen/reports-screen.component'; import { ReportsScreenComponent } from './reports-screen/reports-screen.component';
import { TranslateModule } from '@ngx-translate/core';
import { IqserButtonsModule, IqserScrollbarModule } from '@iqser/common-ui';
const routes = [{ path: '', component: ReportsScreenComponent }]; const routes = [{ path: '', component: ReportsScreenComponent }];
@NgModule({ @NgModule({
declarations: [ReportsScreenComponent], declarations: [ReportsScreenComponent],
imports: [RouterModule.forChild(routes), CommonModule, SharedModule], imports: [RouterModule.forChild(routes), CommonModule, SharedModule, TranslateModule, IqserButtonsModule, IqserScrollbarModule],
}) })
export class ReportsModule {} export class ReportsModule {}

View File

@ -7,5 +7,6 @@
[type]="iconButtonTypes.primary" [type]="iconButtonTypes.primary"
icon="iqser:check" icon="iqser:check"
></iqser-icon-button> ></iqser-icon-button>
<div (click)="revert()" class="all-caps-label cancel" translate="rules-screen.revert-changes"></div>
<div (click)="revert()" [translate]="'rules-screen.revert-changes'" class="all-caps-label cancel"></div>
</div> </div>

View File

@ -5,11 +5,13 @@ import { SharedModule } from '@shared/shared.module';
import { RulesScreenComponent } from './rules-screen/rules-screen.component'; import { RulesScreenComponent } from './rules-screen/rules-screen.component';
import { MonacoEditorModule } from '@materia-ui/ngx-monaco-editor'; import { MonacoEditorModule } from '@materia-ui/ngx-monaco-editor';
import { PendingChangesGuard } from '@guards/can-deactivate.guard'; import { PendingChangesGuard } from '@guards/can-deactivate.guard';
import { TranslateModule } from '@ngx-translate/core';
import { IqserButtonsModule } from '@iqser/common-ui';
const routes = [{ path: '', component: RulesScreenComponent, canDeactivate: [PendingChangesGuard] }]; const routes = [{ path: '', component: RulesScreenComponent, canDeactivate: [PendingChangesGuard] }];
@NgModule({ @NgModule({
declarations: [RulesScreenComponent], declarations: [RulesScreenComponent],
imports: [RouterModule.forChild(routes), CommonModule, SharedModule, MonacoEditorModule], imports: [RouterModule.forChild(routes), CommonModule, SharedModule, MonacoEditorModule, TranslateModule, IqserButtonsModule],
}) })
export class RulesModule {} export class RulesModule {}

View File

@ -8,19 +8,19 @@
[type]="iconButtonTypes.primary" [type]="iconButtonTypes.primary"
icon="iqser:check" icon="iqser:check"
></iqser-icon-button> ></iqser-icon-button>
<div (click)="revert()" class="all-caps-label cancel" translate="watermark-screen.action.revert"></div> <div (click)="revert()" [translate]="'watermark-screen.action.revert'" class="all-caps-label cancel"></div>
</div> </div>
</div> </div>
<div *ngIf="watermark$ | async" class="right-container" iqserHasScrollbar> <div *ngIf="watermark$ | async" class="right-container" iqserHasScrollbar>
<form (keyup)="configChanged()" [formGroup]="form"> <form (keyup)="configChanged()" [formGroup]="form">
<div class="iqser-input-group required w-300"> <div class="iqser-input-group required w-300">
<label translate="watermark-screen.form.name-label"></label> <label [translate]="'watermark-screen.form.name-label'"></label>
<input [placeholder]="'watermark-screen.form.name-placeholder' | translate" formControlName="name" type="text" /> <input [placeholder]="'watermark-screen.form.name-placeholder' | translate" formControlName="name" type="text" />
</div> </div>
<div class="iqser-input-group required w-300"> <div class="iqser-input-group required w-300">
<label translate="watermark-screen.form.text-label"></label> <label [translate]="'watermark-screen.form.text-label'"></label>
<textarea <textarea
[placeholder]="'watermark-screen.form.text-placeholder' | translate" [placeholder]="'watermark-screen.form.text-placeholder' | translate"
class="w-full" class="w-full"
@ -33,7 +33,7 @@
</div> </div>
<div class="iqser-input-group"> <div class="iqser-input-group">
<label class="all-caps-label mb-8" translate="watermark-screen.form.orientation"></label> <label [translate]="'watermark-screen.form.orientation'" class="all-caps-label mb-8"></label>
<div class="square-options"> <div class="square-options">
<div <div
(click)="setValue('orientation', option)" (click)="setValue('orientation', option)"
@ -48,17 +48,17 @@
</div> </div>
<div class="iqser-input-group"> <div class="iqser-input-group">
<label class="all-caps-label" translate="watermark-screen.form.font-size"></label> <label [translate]="'watermark-screen.form.font-size'" class="all-caps-label"></label>
<mat-slider (change)="configChanged()" color="primary" formControlName="fontSize" max="50" min="5"></mat-slider> <mat-slider (change)="configChanged()" color="primary" formControlName="fontSize" max="50" min="5"></mat-slider>
</div> </div>
<div class="iqser-input-group"> <div class="iqser-input-group">
<label class="all-caps-label" translate="watermark-screen.form.opacity"></label> <label [translate]="'watermark-screen.form.opacity'" class="all-caps-label"></label>
<mat-slider (change)="configChanged()" color="primary" formControlName="opacity" min="1"></mat-slider> <mat-slider (change)="configChanged()" color="primary" formControlName="opacity" min="1"></mat-slider>
</div> </div>
<div class="iqser-input-group w-150"> <div class="iqser-input-group w-150">
<label class="all-caps-label mb-5" translate="watermark-screen.form.color"></label> <label [translate]="'watermark-screen.form.color'" class="all-caps-label mb-5"></label>
<input <input
[placeholder]="'watermark-screen.form.color-placeholder' | translate" [placeholder]="'watermark-screen.form.color-placeholder' | translate"
class="hex-color-input" class="hex-color-input"
@ -85,7 +85,7 @@
</div> </div>
<div class="iqser-input-group"> <div class="iqser-input-group">
<label class="all-caps-label mb-8" translate="watermark-screen.form.font-type"></label> <label [translate]="'watermark-screen.form.font-type'" class="all-caps-label mb-8"></label>
<div class="square-options"> <div class="square-options">
<div <div
(click)="setValue('fontType', option.value)" (click)="setValue('fontType', option.value)"

View File

@ -4,10 +4,11 @@ import { RouterModule } from '@angular/router';
import { SharedModule } from '@shared/shared.module'; import { SharedModule } from '@shared/shared.module';
import { WatermarkScreenComponent } from './watermark-screen/watermark-screen.component'; import { WatermarkScreenComponent } from './watermark-screen/watermark-screen.component';
import { WatermarksListingScreenComponent } from './watermarks-listing/watermarks-listing-screen.component'; import { WatermarksListingScreenComponent } from './watermarks-listing/watermarks-listing-screen.component';
import { CompositeRouteGuard, IqserAuthGuard, IqserUsersModule } from '@iqser/common-ui'; import { CompositeRouteGuard, IqserAuthGuard, IqserButtonsModule, IqserListingModule, IqserUsersModule } from '@iqser/common-ui';
import { RedRoleGuard } from '@users/red-role.guard'; import { RedRoleGuard } from '@users/red-role.guard';
import { WATERMARK_ID } from '@red/domain'; import { WATERMARK_ID } from '@red/domain';
import { WatermarkExistsGuard } from '@guards/watermark-exists.guard'; import { WatermarkExistsGuard } from '@guards/watermark-exists.guard';
import { TranslateModule } from '@ngx-translate/core';
const routes = [ const routes = [
{ {
@ -38,6 +39,14 @@ const routes = [
@NgModule({ @NgModule({
declarations: [WatermarkScreenComponent, WatermarksListingScreenComponent], declarations: [WatermarkScreenComponent, WatermarksListingScreenComponent],
imports: [RouterModule.forChild(routes), CommonModule, SharedModule, IqserUsersModule], imports: [
RouterModule.forChild(routes),
CommonModule,
SharedModule,
IqserUsersModule,
TranslateModule,
IqserButtonsModule,
IqserListingModule,
],
}) })
export class WatermarkModule {} export class WatermarkModule {}

View File

@ -3,6 +3,8 @@ import { CommonModule } from '@angular/common';
import { SharedModule } from '@shared/shared.module'; import { SharedModule } from '@shared/shared.module';
import { DossierTemplateActionsComponent } from './components/dossier-template-actions/dossier-template-actions.component'; import { DossierTemplateActionsComponent } from './components/dossier-template-actions/dossier-template-actions.component';
import { RouterModule } from '@angular/router'; import { RouterModule } from '@angular/router';
import { TranslateModule } from '@ngx-translate/core';
import { IqserButtonsModule } from '@iqser/common-ui';
const components = [DossierTemplateActionsComponent]; const components = [DossierTemplateActionsComponent];
@ -11,6 +13,6 @@ const modules = [CommonModule, SharedModule];
@NgModule({ @NgModule({
declarations: [...components], declarations: [...components],
exports: [...components, ...modules], exports: [...components, ...modules],
imports: [...modules, RouterModule], imports: [...modules, RouterModule, TranslateModule, IqserButtonsModule],
}) })
export class SharedAdminModule {} export class SharedAdminModule {}

View File

@ -6,14 +6,24 @@ import { TableItemComponent } from './components/table-item/table-item.component
import { SharedModule } from '@shared/shared.module'; import { SharedModule } from '@shared/shared.module';
import { ConfigService } from './services/config.service'; import { ConfigService } from './services/config.service';
import { SharedDossiersModule } from '../shared-dossiers/shared-dossiers.module'; import { SharedDossiersModule } from '../shared-dossiers/shared-dossiers.module';
import { IqserHelpModeModule, IqserUsersModule } from '@iqser/common-ui'; import { IqserHelpModeModule, IqserListingModule, IqserUsersModule } from '@iqser/common-ui';
import { TranslateModule } from '@ngx-translate/core';
const components = [TableItemComponent]; const components = [TableItemComponent];
const screens = [ArchivedDossiersScreenComponent]; const screens = [ArchivedDossiersScreenComponent];
@NgModule({ @NgModule({
declarations: [...components, ...screens], declarations: [...components, ...screens],
imports: [CommonModule, ArchiveRoutingModule, SharedModule, SharedDossiersModule, IqserHelpModeModule, IqserUsersModule], imports: [
CommonModule,
ArchiveRoutingModule,
SharedModule,
SharedDossiersModule,
IqserHelpModeModule,
IqserUsersModule,
TranslateModule,
IqserListingModule,
],
providers: [ConfigService], providers: [ConfigService],
}) })
export class ArchiveModule {} export class ArchiveModule {}

View File

@ -67,6 +67,7 @@
{{ 'dashboard.empty-template.description' | translate }} {{ 'dashboard.empty-template.description' | translate }}
</div> </div>
</div> </div>
<iqser-icon-button <iqser-icon-button
(action)="newDossier()" (action)="newDossier()"
*ngIf="permissionsService.canCreateDossier(dossierTemplate)" *ngIf="permissionsService.canCreateDossier(dossierTemplate)"

View File

@ -6,6 +6,8 @@ import { SharedModule } from '../shared/shared.module';
import { TemplateStatsComponent } from './components/template-stats/template-stats.component'; import { TemplateStatsComponent } from './components/template-stats/template-stats.component';
import { BreadcrumbTypes } from '@red/domain'; import { BreadcrumbTypes } from '@red/domain';
import { SharedDossiersModule } from '../shared-dossiers/shared-dossiers.module'; import { SharedDossiersModule } from '../shared-dossiers/shared-dossiers.module';
import { TranslateModule } from '@ngx-translate/core';
import { IqserButtonsModule } from '@iqser/common-ui';
const routes = [ const routes = [
{ {
@ -19,6 +21,6 @@ const routes = [
@NgModule({ @NgModule({
declarations: [DashboardScreenComponent, TemplateStatsComponent], declarations: [DashboardScreenComponent, TemplateStatsComponent],
imports: [RouterModule.forChild(routes), CommonModule, SharedModule, SharedDossiersModule], imports: [RouterModule.forChild(routes), CommonModule, SharedModule, SharedDossiersModule, TranslateModule, IqserButtonsModule],
}) })
export class DashboardModule {} export class DashboardModule {}

View File

@ -2,7 +2,15 @@ import { NgModule } from '@angular/core';
import { CommonModule } from '@angular/common'; import { CommonModule } from '@angular/common';
import { RouterModule, Routes } from '@angular/router'; import { RouterModule, Routes } from '@angular/router';
import { SharedModule } from '@shared/shared.module'; import { SharedModule } from '@shared/shared.module';
import { IqserHelpModeModule, IqserIconsModule, IqserUsersModule } from '@iqser/common-ui'; import {
IqserButtonsModule,
IqserHelpModeModule,
IqserIconsModule,
IqserListingModule,
IqserLoadingModule,
IqserSharedModule,
IqserUsersModule,
} from '@iqser/common-ui';
import { TranslateModule } from '@ngx-translate/core'; import { TranslateModule } from '@ngx-translate/core';
import { DossierOverviewScreenComponent } from './screen/dossier-overview-screen.component'; import { DossierOverviewScreenComponent } from './screen/dossier-overview-screen.component';
import { DossierOverviewBulkActionsComponent } from './components/bulk-actions/dossier-overview-bulk-actions.component'; import { DossierOverviewBulkActionsComponent } from './components/bulk-actions/dossier-overview-bulk-actions.component';
@ -47,6 +55,10 @@ const routes: Routes = [
TranslateModule, TranslateModule,
IqserHelpModeModule, IqserHelpModeModule,
IqserUsersModule, IqserUsersModule,
IqserListingModule,
IqserButtonsModule,
IqserLoadingModule,
IqserSharedModule,
], ],
}) })
export class DossierOverviewModule {} export class DossierOverviewModule {}

View File

@ -1,6 +1,14 @@
import { NgModule } from '@angular/core'; import { NgModule } from '@angular/core';
import { CommonModule } from '@angular/common'; import { CommonModule } from '@angular/common';
import { IqserHelpModeModule, IqserIconsModule, IqserUsersModule } from '@iqser/common-ui'; import {
IqserButtonsModule,
IqserHelpModeModule,
IqserIconsModule,
IqserListingModule,
IqserScrollbarModule,
IqserSharedModule,
IqserUsersModule,
} from '@iqser/common-ui';
import { TranslateModule } from '@ngx-translate/core'; import { TranslateModule } from '@ngx-translate/core';
import { DossiersListingScreenComponent } from './screen/dossiers-listing-screen.component'; import { DossiersListingScreenComponent } from './screen/dossiers-listing-screen.component';
import { RouterModule, Routes } from '@angular/router'; import { RouterModule, Routes } from '@angular/router';
@ -41,6 +49,10 @@ const routes: Routes = [
TranslateModule, TranslateModule,
IqserHelpModeModule, IqserHelpModeModule,
IqserUsersModule, IqserUsersModule,
IqserButtonsModule,
IqserListingModule,
IqserScrollbarModule,
IqserSharedModule,
], ],
}) })
export class DossiersListingModule {} export class DossiersListingModule {}

View File

@ -1,6 +1,17 @@
import { NgModule } from '@angular/core'; import { NgModule } from '@angular/core';
import { CommonModule } from '@angular/common'; import { CommonModule } from '@angular/common';
import { IqserHelpModeModule, IqserIconsModule, IqserUsersModule } from '@iqser/common-ui'; import {
CapitalizePipe,
IqserButtonsModule,
IqserEmptyStatesModule,
IqserFiltersModule,
IqserHelpModeModule,
IqserIconsModule,
IqserInputsModule,
IqserSharedModule,
IqserUploadFileModule,
IqserUsersModule,
} from '@iqser/common-ui';
import { TranslateModule } from '@ngx-translate/core'; import { TranslateModule } from '@ngx-translate/core';
import { RouterModule, Routes } from '@angular/router'; import { RouterModule, Routes } from '@angular/router';
import { SharedModule } from '@shared/shared.module'; import { SharedModule } from '@shared/shared.module';
@ -95,6 +106,13 @@ const components = [
OverlayModule, OverlayModule,
IqserHelpModeModule, IqserHelpModeModule,
IqserUsersModule, IqserUsersModule,
CapitalizePipe,
IqserButtonsModule,
IqserInputsModule,
IqserSharedModule,
IqserUploadFileModule,
IqserEmptyStatesModule,
IqserFiltersModule,
], ],
providers: [FilePreviewDialogService, ManualRedactionService, DocumentUnloadedGuard], providers: [FilePreviewDialogService, ManualRedactionService, DocumentUnloadedGuard],
}) })

View File

@ -2,13 +2,22 @@ import { NgModule } from '@angular/core';
import { CommonModule } from '@angular/common'; import { CommonModule } from '@angular/common';
import { SearchScreenComponent } from './search-screen/search-screen.component'; import { SearchScreenComponent } from './search-screen/search-screen.component';
import { RouterModule } from '@angular/router'; import { RouterModule } from '@angular/router';
import { CommonUiModule, IqserUsersModule } from '@iqser/common-ui'; import { IqserListingModule, IqserSharedModule, IqserUsersModule } from '@iqser/common-ui';
import { SharedModule } from '@shared/shared.module'; import { SharedModule } from '@shared/shared.module';
import { TranslateModule } from '@ngx-translate/core';
const routes = [{ path: '', component: SearchScreenComponent }]; const routes = [{ path: '', component: SearchScreenComponent }];
@NgModule({ @NgModule({
declarations: [SearchScreenComponent], declarations: [SearchScreenComponent],
imports: [CommonModule, RouterModule.forChild(routes), CommonUiModule, SharedModule, IqserUsersModule], imports: [
CommonModule,
RouterModule.forChild(routes),
SharedModule,
IqserUsersModule,
TranslateModule,
IqserListingModule,
IqserSharedModule,
],
}) })
export class SearchModule {} export class SearchModule {}

View File

@ -36,7 +36,9 @@
</ng-container> </ng-container>
</div> </div>
</div> </div>
<div class="separator"></div> <div class="separator"></div>
<div class="image-attributes-container"> <div class="image-attributes-container">
<div *ngIf="imageAttributes.length" class="heading"> <div *ngIf="imageAttributes.length" class="heading">
{{ 'edit-dossier-dialog.attributes.image-attributes' | translate }} {{ 'edit-dossier-dialog.attributes.image-attributes' | translate }}
@ -79,6 +81,7 @@
type="file" type="file"
/> />
</div> </div>
<div *ngIf="currentAttrValue(attr) && !disabled"> <div *ngIf="currentAttrValue(attr) && !disabled">
<iqser-circle-button <iqser-circle-button
(action)="deleteAttr(attr)" (action)="deleteAttr(attr)"
@ -86,6 +89,7 @@
[type]="circleButtonTypes.dark" [type]="circleButtonTypes.dark"
icon="iqser:trash" icon="iqser:trash"
></iqser-circle-button> ></iqser-circle-button>
<iqser-circle-button <iqser-circle-button
(action)="fileInputClick(attr)" (action)="fileInputClick(attr)"
[tooltip]="'edit-dossier-dialog.attributes.upload-image' | translate" [tooltip]="'edit-dossier-dialog.attributes.upload-image' | translate"

View File

@ -46,7 +46,7 @@
<mat-select [placeholder]="statusPlaceholder" formControlName="dossierStatusId"> <mat-select [placeholder]="statusPlaceholder" formControlName="dossierStatusId">
<mat-option *ngFor="let stateId of states" [value]="stateId"> <mat-option *ngFor="let stateId of states" [value]="stateId">
<div [matTooltip]="getStateName(stateId)" class="flex-align-items-center" matTooltipPosition="after"> <div [matTooltip]="getStateName(stateId)" class="flex-align-items-center" matTooltipPosition="after">
<redaction-small-chip *ngIf="!!stateId" [color]="getStateColor(stateId)"></redaction-small-chip> <iqser-small-chip *ngIf="!!stateId" [color]="getStateColor(stateId)"></iqser-small-chip>
<div class="clamp-1">{{ getStateName(stateId) }}</div> <div class="clamp-1">{{ getStateName(stateId) }}</div>
</div> </div>
</mat-option> </mat-option>

View File

@ -13,7 +13,16 @@ import { EditDossierTeamComponent } from './dialogs/edit-dossier-dialog/edit-dos
import { DateColumnComponent } from './components/date-column/date-column.component'; import { DateColumnComponent } from './components/date-column/date-column.component';
import { FileAssignService } from './services/file-assign.service'; import { FileAssignService } from './services/file-assign.service';
import { DictionaryDetailsDialogComponent } from './dialogs/edit-dossier-dialog/dictionary/dictionary-details-dialog/dictionary-details-dialog.component'; import { DictionaryDetailsDialogComponent } from './dialogs/edit-dossier-dialog/dictionary/dictionary-details-dialog/dictionary-details-dialog.component';
import { IqserHelpModeModule, IqserUsersModule } from '@iqser/common-ui'; import {
IqserButtonsModule,
IqserEmptyStatesModule,
IqserHelpModeModule,
IqserInputsModule,
IqserScrollbarModule,
IqserSharedModule,
IqserUsersModule,
} from '@iqser/common-ui';
import { TranslateModule } from '@ngx-translate/core';
const components = [ const components = [
FileActionsComponent, FileActionsComponent,
@ -32,6 +41,17 @@ const services = [DossiersDialogService, FileAssignService];
declarations: [...components, ...dialogs], declarations: [...components, ...dialogs],
exports: [...components, ...dialogs], exports: [...components, ...dialogs],
providers: [...services], providers: [...services],
imports: [CommonModule, SharedModule, IqserHelpModeModule, IqserUsersModule], imports: [
CommonModule,
SharedModule,
IqserHelpModeModule,
IqserUsersModule,
TranslateModule,
IqserButtonsModule,
IqserEmptyStatesModule,
IqserSharedModule,
IqserInputsModule,
IqserScrollbarModule,
],
}) })
export class SharedDossiersModule {} export class SharedDossiersModule {}

View File

@ -2,5 +2,6 @@
<div class="dossier-state-text clamp-1"> <div class="dossier-state-text clamp-1">
{{ (dossierState$ | async)?.name || ('dossier-state.placeholder' | translate) }} {{ (dossierState$ | async)?.name || ('dossier-state.placeholder' | translate) }}
</div> </div>
<redaction-small-chip [color]="(dossierState$ | async)?.color || '#E2E4E9'"></redaction-small-chip>
<iqser-small-chip [color]="(dossierState$ | async)?.color ?? '#E2E4E9'"></iqser-small-chip>
</div> </div>

View File

@ -1,10 +1,10 @@
<section class="dialog"> <section class="dialog">
<form (submit)="save()" [formGroup]="form"> <form (submit)="save()" [formGroup]="form">
<div class="dialog-header heading-l" translate="add-dossier-dialog.header-new"></div> <div [translate]="'add-dossier-dialog.header-new'" class="dialog-header heading-l"></div>
<div class="dialog-content"> <div class="dialog-content">
<div class="iqser-input-group required w-300"> <div class="iqser-input-group required w-300">
<label translate="add-dossier-dialog.form.name.label"></label> <label [translate]="'add-dossier-dialog.form.name.label'"></label>
<input <input
[placeholder]="'add-dossier-dialog.form.name.placeholder' | translate" [placeholder]="'add-dossier-dialog.form.name.placeholder' | translate"
formControlName="dossierName" formControlName="dossierName"
@ -36,7 +36,7 @@
</div> </div>
<div class="iqser-input-group w-400"> <div class="iqser-input-group w-400">
<label translate="add-dossier-dialog.form.description.label"></label> <label [translate]="'add-dossier-dialog.form.description.label'"></label>
<textarea <textarea
[placeholder]="'add-dossier-dialog.form.description.placeholder' | translate" [placeholder]="'add-dossier-dialog.form.description.placeholder' | translate"
formControlName="description" formControlName="description"

View File

@ -8,7 +8,7 @@ import { IconsModule } from '../icons/icons.module';
import { FormsModule, ReactiveFormsModule } from '@angular/forms'; import { FormsModule, ReactiveFormsModule } from '@angular/forms';
import { AnnotationIconComponent } from './components/annotation-icon/annotation-icon.component'; import { AnnotationIconComponent } from './components/annotation-icon/annotation-icon.component';
import { DonutChartComponent } from './components/donut-chart/donut-chart.component'; import { DonutChartComponent } from './components/donut-chart/donut-chart.component';
import { CommonUiModule, IqserHelpModeModule, IqserUsersModule } from '@iqser/common-ui'; import { IqserButtonsModule, IqserHelpModeModule, IqserSharedModule, IqserUsersModule } from '@iqser/common-ui';
import { SelectComponent } from './components/select/select.component'; import { SelectComponent } from './components/select/select.component';
import { NavigateLastDossiersScreenDirective } from './directives/navigate-last-dossiers-screen.directive'; import { NavigateLastDossiersScreenDirective } from './directives/navigate-last-dossiers-screen.directive';
import { DictionaryManagerComponent } from './components/dictionary-manager/dictionary-manager.component'; import { DictionaryManagerComponent } from './components/dictionary-manager/dictionary-manager.component';
@ -70,15 +70,16 @@ const modules = [MatConfigModule, ScrollingModule, IconsModule, FormsModule, Rea
declarations: [...components, ...utils, EditorComponent], declarations: [...components, ...utils, EditorComponent],
imports: [ imports: [
CommonModule, CommonModule,
CommonUiModule,
...modules, ...modules,
MonacoEditorModule, MonacoEditorModule,
TranslateModule, TranslateModule,
RouterModule, RouterModule,
IqserHelpModeModule, IqserHelpModeModule,
IqserUsersModule, IqserUsersModule,
IqserButtonsModule,
IqserSharedModule,
], ],
exports: [...modules, CommonUiModule, ...components, ...utils], exports: [...modules, ...components, ...utils],
providers: [ providers: [
...services, ...services,
{ {

View File

@ -2,16 +2,25 @@ import { NgModule } from '@angular/core';
import { CommonModule } from '@angular/common'; import { CommonModule } from '@angular/common';
import { RouterModule } from '@angular/router'; import { RouterModule } from '@angular/router';
import { TrashScreenComponent } from './trash-screen/trash-screen.component'; import { TrashScreenComponent } from './trash-screen/trash-screen.component';
import { CommonUiModule, IqserUsersModule } from '@iqser/common-ui'; import { IqserButtonsModule, IqserListingModule, IqserUsersModule } from '@iqser/common-ui';
import { TrashTableItemComponent } from './trash-screen/trash-table-item/trash-table-item.component'; import { TrashTableItemComponent } from './trash-screen/trash-table-item/trash-table-item.component';
import { SharedModule } from '@shared/shared.module'; import { SharedModule } from '@shared/shared.module';
import { TrashDialogService } from './services/trash-dialog.service'; import { TrashDialogService } from './services/trash-dialog.service';
import { TranslateModule } from '@ngx-translate/core';
const routes = [{ path: '', component: TrashScreenComponent }]; const routes = [{ path: '', component: TrashScreenComponent }];
@NgModule({ @NgModule({
declarations: [TrashScreenComponent, TrashTableItemComponent], declarations: [TrashScreenComponent, TrashTableItemComponent],
imports: [CommonModule, RouterModule.forChild(routes), CommonUiModule, SharedModule, IqserUsersModule], imports: [
CommonModule,
RouterModule.forChild(routes),
SharedModule,
IqserUsersModule,
TranslateModule,
IqserListingModule,
IqserButtonsModule,
],
providers: [TrashDialogService], providers: [TrashDialogService],
}) })
export class TrashModule {} export class TrashModule {}

View File

@ -1,7 +1,7 @@
<section class="dialog"> <section class="dialog">
<div <div
class="dialog-header heading-l"
[translate]="filename ? 'overwrite-files-dialog.file-title' : 'overwrite-files-dialog.archive-title'" [translate]="filename ? 'overwrite-files-dialog.file-title' : 'overwrite-files-dialog.archive-title'"
class="dialog-header heading-l"
></div> ></div>
<div class="dialog-content"> <div class="dialog-content">
@ -21,28 +21,31 @@
<div class="dialog-actions"> <div class="dialog-actions">
<iqser-icon-button <iqser-icon-button
*ngIf="!filename"
(action)="selectOption()" (action)="selectOption()"
*ngIf="!filename"
[disabled]="rememberChoice" [disabled]="rememberChoice"
[label]="'overwrite-files-dialog.options.proceed' | translate" [label]="'overwrite-files-dialog.options.proceed' | translate"
[type]="iconButtonTypes.primary" [type]="iconButtonTypes.primary"
></iqser-icon-button> ></iqser-icon-button>
<ng-container *ngIf="filename"> <ng-container *ngIf="filename">
<iqser-icon-button <iqser-icon-button
*ngIf="filename"
(action)="selectOption()" (action)="selectOption()"
*ngIf="filename"
[disabled]="rememberChoice" [disabled]="rememberChoice"
[label]="'overwrite-files-dialog.options.current-files' | translate" [label]="'overwrite-files-dialog.options.current-files' | translate"
[type]="iconButtonTypes.primary" [type]="iconButtonTypes.primary"
></iqser-icon-button> ></iqser-icon-button>
<iqser-icon-button <iqser-icon-button
*ngIf="filename"
(action)="selectOption(true)" (action)="selectOption(true)"
*ngIf="filename"
[boldText]="true"
[label]="'overwrite-files-dialog.options.all-files' | translate" [label]="'overwrite-files-dialog.options.all-files' | translate"
[type]="iconButtonTypes.dark" [type]="iconButtonTypes.dark"
[boldText]="true"
></iqser-icon-button> ></iqser-icon-button>
</ng-container> </ng-container>
<div (click)="cancel()" class="all-caps-label cancel" translate="overwrite-files-dialog.options.cancel"></div>
<div (click)="cancel()" [translate]="'overwrite-files-dialog.options.cancel'" class="all-caps-label cancel"></div>
</div> </div>
</section> </section>

View File

@ -10,9 +10,11 @@ import { FileDownloadService } from './services/file-download.service';
import { StatusOverlayService } from './services/status-overlay.service'; import { StatusOverlayService } from './services/status-overlay.service';
import { FileDropOverlayService } from './services/file-drop-overlay.service'; import { FileDropOverlayService } from './services/file-drop-overlay.service';
import { UploadDownloadDialogService } from './services/upload-download-dialog.service'; import { UploadDownloadDialogService } from './services/upload-download-dialog.service';
import { TranslateModule } from '@ngx-translate/core';
import { IqserButtonsModule, IqserInputsModule } from '@iqser/common-ui';
@NgModule({ @NgModule({
imports: [CommonModule, SharedModule, OverlayModule], imports: [CommonModule, SharedModule, OverlayModule, TranslateModule, IqserButtonsModule, IqserInputsModule],
declarations: [FileDropComponent, UploadStatusOverlayComponent, OverwriteFilesDialogComponent], declarations: [FileDropComponent, UploadStatusOverlayComponent, OverwriteFilesDialogComponent],
providers: [UploadDownloadDialogService, FileUploadService, FileDownloadService, StatusOverlayService, FileDropOverlayService], providers: [UploadDownloadDialogService, FileUploadService, FileDownloadService, StatusOverlayService, FileDropOverlayService],
exports: [FileDropComponent, UploadStatusOverlayComponent], exports: [FileDropComponent, UploadStatusOverlayComponent],

View File

@ -3,14 +3,18 @@
<div class="title flex-1"> <div class="title flex-1">
{{ 'upload-status.dialog.title' | translate: { len: uploadService.files.length } }} {{ 'upload-status.dialog.title' | translate: { len: uploadService.files.length } }}
</div> </div>
<iqser-circle-button [icon]="'iqser:status-' + (collapsed ? 'expand' : 'collapse')" id="expand-upload-status"></iqser-circle-button> <iqser-circle-button [icon]="'iqser:status-' + (collapsed ? 'expand' : 'collapse')" id="expand-upload-status"></iqser-circle-button>
<iqser-circle-button (action)="closeDialog()" icon="iqser:close" id="close-upload-status"></iqser-circle-button> <iqser-circle-button (action)="closeDialog()" icon="iqser:close" id="close-upload-status"></iqser-circle-button>
</div> </div>
<div [hidden]="collapsed" class="upload-download-list"> <div [hidden]="collapsed" class="upload-download-list">
<div *ngFor="let dossierId of uploadService.activeDossierKeys"> <div *ngFor="let dossierId of uploadService.activeDossierKeys">
<div class="dossier-name-wrapper all-caps-label"> <div class="dossier-name-wrapper all-caps-label">
<span>{{ uploadService.groupedFiles[dossierId][0].dossierName }}</span> <span>{{ uploadService.groupedFiles[dossierId][0].dossierName }}</span>
</div> </div>
<div *ngFor="let model of uploadService.groupedFiles[dossierId]" [class.error]="model.error" class="upload-download-list-item"> <div *ngFor="let model of uploadService.groupedFiles[dossierId]" [class.error]="model.error" class="upload-download-list-item">
<div> <div>
<div class="upload-download-line"> <div class="upload-download-line">
@ -22,8 +26,10 @@
> >
{{ model.file?.name }} {{ model.file?.name }}
</div> </div>
<div *ngIf="!model.error" class="progress">{{ model.progress }}%</div> <div *ngIf="!model.error" class="progress">{{ model.progress }}%</div>
</div> </div>
<div *ngIf="model.error" class="error-message"> <div *ngIf="model.error" class="error-message">
{{ model.error?.message }} {{ model.error?.message }}
</div> </div>
@ -47,6 +53,7 @@
icon="iqser:refresh" icon="iqser:refresh"
tooltipPosition="before" tooltipPosition="before"
></iqser-circle-button> ></iqser-circle-button>
<iqser-circle-button <iqser-circle-button
(action)="cancelItem(model)" (action)="cancelItem(model)"
[tooltip]="'upload-status.dialog.actions.cancel' | translate" [tooltip]="'upload-status.dialog.actions.cancel' | translate"

@ -1 +1 @@
Subproject commit fc3269cc0c86ce3c26c9c0266e4429f393214d37 Subproject commit 9280ea8e525c2f4e2ee6e5b5b81900d02c8fc662