RED-9321: refactored shared and file-upload-download modules.
This commit is contained in:
parent
5d3af7e3cb
commit
c3662f6bc5
@ -2,7 +2,7 @@ import { APP_BASE_HREF, DatePipe as BaseDatePipe } from '@angular/common';
|
|||||||
import { HTTP_INTERCEPTORS } from '@angular/common/http';
|
import { HTTP_INTERCEPTORS } from '@angular/common/http';
|
||||||
import { ENVIRONMENT_INITIALIZER, ErrorHandler, inject, NgModule } from '@angular/core';
|
import { ENVIRONMENT_INITIALIZER, ErrorHandler, inject, NgModule } from '@angular/core';
|
||||||
import { MatDividerModule } from '@angular/material/divider';
|
import { MatDividerModule } from '@angular/material/divider';
|
||||||
import { MAT_TOOLTIP_DEFAULT_OPTIONS } from '@angular/material/tooltip';
|
import { MAT_TOOLTIP_DEFAULT_OPTIONS, MatTooltip } from '@angular/material/tooltip';
|
||||||
import { BrowserModule } from '@angular/platform-browser';
|
import { BrowserModule } from '@angular/platform-browser';
|
||||||
import { BrowserAnimationsModule } from '@angular/platform-browser/animations';
|
import { BrowserAnimationsModule } from '@angular/platform-browser/animations';
|
||||||
import { ServiceWorkerModule } from '@angular/service-worker';
|
import { ServiceWorkerModule } from '@angular/service-worker';
|
||||||
@ -55,8 +55,6 @@ import { ArchivedDossiersService } from '@services/dossiers/archived-dossiers.se
|
|||||||
import { GlobalErrorHandler } from '@services/global-error-handler.service';
|
import { GlobalErrorHandler } from '@services/global-error-handler.service';
|
||||||
import { LoggerRulesService } from '@services/logger-rules.service';
|
import { LoggerRulesService } from '@services/logger-rules.service';
|
||||||
import { DatePipe } from '@shared/pipes/date.pipe';
|
import { DatePipe } from '@shared/pipes/date.pipe';
|
||||||
import { SharedModule } from '@shared/shared.module';
|
|
||||||
import { FileUploadDownloadModule } from '@upload-download/file-upload-download.module';
|
|
||||||
import { RedRoleGuard } from '@users/red-role.guard';
|
import { RedRoleGuard } from '@users/red-role.guard';
|
||||||
import { UserPreferenceService } from '@users/user-preference.service';
|
import { UserPreferenceService } from '@users/user-preference.service';
|
||||||
import { UserService } from '@users/user.service';
|
import { UserService } from '@users/user.service';
|
||||||
@ -71,7 +69,11 @@ import { PdfViewerModule } from './modules/pdf-viewer/pdf-viewer.module';
|
|||||||
import { ACTIVE_DOSSIERS_SERVICE, ARCHIVED_DOSSIERS_SERVICE } from './tokens';
|
import { ACTIVE_DOSSIERS_SERVICE, ARCHIVED_DOSSIERS_SERVICE } from './tokens';
|
||||||
import { AuthErrorComponent } from '@components/auth-error/auth-error.component';
|
import { AuthErrorComponent } from '@components/auth-error/auth-error.component';
|
||||||
import { provideCustomDateFormatter } from '@shared/custom-date-formatting.provider';
|
import { provideCustomDateFormatter } from '@shared/custom-date-formatting.provider';
|
||||||
import { provideHelpMode } from '@iqser/common-ui';
|
import { provideHelpMode } from '@iqser/common-ui/lib/help-mode/utils/help-mode.provider';
|
||||||
|
import { MatMenu, MatMenuContent, MatMenuItem, MatMenuTrigger } from '@angular/material/menu';
|
||||||
|
import { MatIcon } from '@angular/material/icon';
|
||||||
|
import { MatProgressSpinner } from '@angular/material/progress-spinner';
|
||||||
|
import { IconsModule } from './modules/icons/icons.module';
|
||||||
|
|
||||||
export const appModuleFactory = (config: AppConfig) => {
|
export const appModuleFactory = (config: AppConfig) => {
|
||||||
@NgModule({
|
@NgModule({
|
||||||
@ -93,8 +95,6 @@ export const appModuleFactory = (config: AppConfig) => {
|
|||||||
imports: [
|
imports: [
|
||||||
BrowserModule,
|
BrowserModule,
|
||||||
BrowserAnimationsModule,
|
BrowserAnimationsModule,
|
||||||
SharedModule,
|
|
||||||
FileUploadDownloadModule,
|
|
||||||
AppRoutingModule,
|
AppRoutingModule,
|
||||||
MonacoEditorModule,
|
MonacoEditorModule,
|
||||||
CommonUiModule.forRoot({
|
CommonUiModule.forRoot({
|
||||||
@ -191,6 +191,14 @@ export const appModuleFactory = (config: AppConfig) => {
|
|||||||
InitialsAvatarComponent,
|
InitialsAvatarComponent,
|
||||||
HelpModeComponent,
|
HelpModeComponent,
|
||||||
HelpButtonComponent,
|
HelpButtonComponent,
|
||||||
|
MatMenuTrigger,
|
||||||
|
MatMenuItem,
|
||||||
|
MatIcon,
|
||||||
|
MatMenu,
|
||||||
|
MatMenuContent,
|
||||||
|
MatTooltip,
|
||||||
|
MatProgressSpinner,
|
||||||
|
IconsModule,
|
||||||
],
|
],
|
||||||
providers: [
|
providers: [
|
||||||
{
|
{
|
||||||
|
|||||||
@ -1,8 +1,19 @@
|
|||||||
import { Component, Inject, OnInit } from '@angular/core';
|
import { Component, Inject, OnInit } from '@angular/core';
|
||||||
import { Validators } from '@angular/forms';
|
import { ReactiveFormsModule, Validators } from '@angular/forms';
|
||||||
import { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog';
|
import { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog';
|
||||||
import { Router } from '@angular/router';
|
import { Router } from '@angular/router';
|
||||||
import { BaseDialogComponent, getConfig, IconButtonTypes, IqserPermissionsService, SaveOptions } from '@iqser/common-ui';
|
import {
|
||||||
|
BaseDialogComponent,
|
||||||
|
CircleButtonComponent,
|
||||||
|
getConfig,
|
||||||
|
HasScrollbarDirective,
|
||||||
|
HelpButtonComponent,
|
||||||
|
IconButtonComponent,
|
||||||
|
IconButtonTypes,
|
||||||
|
IqserDenyDirective,
|
||||||
|
IqserPermissionsService,
|
||||||
|
SaveOptions,
|
||||||
|
} from '@iqser/common-ui';
|
||||||
import { DOSSIER_TEMPLATE_ID, DownloadFileType, IDossierRequest, IDossierTemplate, IReportTemplate } from '@red/domain';
|
import { DOSSIER_TEMPLATE_ID, DownloadFileType, IDossierRequest, IDossierTemplate, IReportTemplate } from '@red/domain';
|
||||||
import { DossierTemplatesService } from '@services/dossier-templates/dossier-templates.service';
|
import { DossierTemplatesService } from '@services/dossier-templates/dossier-templates.service';
|
||||||
import { ActiveDossiersService } from '@services/dossiers/active-dossiers.service';
|
import { ActiveDossiersService } from '@services/dossiers/active-dossiers.service';
|
||||||
@ -12,6 +23,16 @@ import { Roles } from '@users/roles';
|
|||||||
import dayjs from 'dayjs';
|
import dayjs from 'dayjs';
|
||||||
import { firstValueFrom } from 'rxjs';
|
import { firstValueFrom } from 'rxjs';
|
||||||
import { DossiersDialogService } from '../../../shared-dossiers/services/dossiers-dialog.service';
|
import { DossiersDialogService } from '../../../shared-dossiers/services/dossiers-dialog.service';
|
||||||
|
import { NgForOf, NgIf } from '@angular/common';
|
||||||
|
import { TranslateModule } from '@ngx-translate/core';
|
||||||
|
import { MatFormField, MatSuffix } from '@angular/material/form-field';
|
||||||
|
import { MatOption, MatSelect } from '@angular/material/select';
|
||||||
|
import { MatTooltip } from '@angular/material/tooltip';
|
||||||
|
import { WatermarkSelectorComponent } from '@shared/components/dossier-watermark-selector/watermark-selector.component';
|
||||||
|
import { MatCheckbox } from '@angular/material/checkbox';
|
||||||
|
import { MatDatepickerModule } from '@angular/material/datepicker';
|
||||||
|
import { MatIcon } from '@angular/material/icon';
|
||||||
|
import { SelectComponent } from '@shared/components/select/select.component';
|
||||||
|
|
||||||
interface DialogData {
|
interface DialogData {
|
||||||
readonly dossierTemplateId?: string;
|
readonly dossierTemplateId?: string;
|
||||||
@ -20,6 +41,28 @@ interface DialogData {
|
|||||||
@Component({
|
@Component({
|
||||||
templateUrl: './add-dossier-dialog.component.html',
|
templateUrl: './add-dossier-dialog.component.html',
|
||||||
styleUrls: ['./add-dossier-dialog.component.scss'],
|
styleUrls: ['./add-dossier-dialog.component.scss'],
|
||||||
|
standalone: true,
|
||||||
|
imports: [
|
||||||
|
ReactiveFormsModule,
|
||||||
|
NgIf,
|
||||||
|
TranslateModule,
|
||||||
|
MatFormField,
|
||||||
|
MatSelect,
|
||||||
|
MatOption,
|
||||||
|
NgForOf,
|
||||||
|
MatTooltip,
|
||||||
|
HasScrollbarDirective,
|
||||||
|
WatermarkSelectorComponent,
|
||||||
|
MatCheckbox,
|
||||||
|
MatDatepickerModule,
|
||||||
|
MatIcon,
|
||||||
|
SelectComponent,
|
||||||
|
IqserDenyDirective,
|
||||||
|
IconButtonComponent,
|
||||||
|
HelpButtonComponent,
|
||||||
|
CircleButtonComponent,
|
||||||
|
MatSuffix,
|
||||||
|
],
|
||||||
})
|
})
|
||||||
export class AddDossierDialogComponent extends BaseDialogComponent implements OnInit {
|
export class AddDossierDialogComponent extends BaseDialogComponent implements OnInit {
|
||||||
readonly config = getConfig();
|
readonly config = getConfig();
|
||||||
|
|||||||
@ -3,6 +3,7 @@ import { RouterHistoryService } from '@services/router-history.service';
|
|||||||
|
|
||||||
@Directive({
|
@Directive({
|
||||||
selector: '[redactionNavigateLastDossiersScreen]',
|
selector: '[redactionNavigateLastDossiersScreen]',
|
||||||
|
standalone: true,
|
||||||
})
|
})
|
||||||
export class NavigateLastDossiersScreenDirective {
|
export class NavigateLastDossiersScreenDirective {
|
||||||
constructor(private readonly _routerHistoryService: RouterHistoryService) {}
|
constructor(private readonly _routerHistoryService: RouterHistoryService) {}
|
||||||
|
|||||||
@ -1,66 +0,0 @@
|
|||||||
import { NgModule } from '@angular/core';
|
|
||||||
import { CommonModule } from '@angular/common';
|
|
||||||
import { ScrollingModule } from '@angular/cdk/scrolling';
|
|
||||||
import { MatConfigModule } from '../mat-config/mat-config.module';
|
|
||||||
import { IconsModule } from '../icons/icons.module';
|
|
||||||
import { FormsModule, ReactiveFormsModule } from '@angular/forms';
|
|
||||||
import { DonutChartComponent } from './components/donut-chart/donut-chart.component';
|
|
||||||
import {
|
|
||||||
CircleButtonComponent,
|
|
||||||
DynamicInputComponent,
|
|
||||||
HasScrollbarDirective,
|
|
||||||
HelpButtonComponent,
|
|
||||||
IconButtonComponent,
|
|
||||||
IqserAllowDirective,
|
|
||||||
IqserDenyDirective,
|
|
||||||
RoundCheckboxComponent,
|
|
||||||
StopPropagationDirective,
|
|
||||||
} from '@iqser/common-ui';
|
|
||||||
import { NavigateLastDossiersScreenDirective } from './directives/navigate-last-dossiers-screen.directive';
|
|
||||||
import { MonacoEditorModule } from '@materia-ui/ngx-monaco-editor';
|
|
||||||
import { TranslateModule } from '@ngx-translate/core';
|
|
||||||
import { RouterModule } from '@angular/router';
|
|
||||||
import { AddDossierDialogComponent } from './dialogs/add-dossier-dialog/add-dossier-dialog.component';
|
|
||||||
import { ColorPickerModule } from 'ngx-color-picker';
|
|
||||||
import { WatermarkSelectorComponent } from './components/dossier-watermark-selector/watermark-selector.component';
|
|
||||||
import { IqserUsersModule } from '@iqser/common-ui/lib/users';
|
|
||||||
import { SmallChipComponent } from '@iqser/common-ui/lib/shared';
|
|
||||||
import { SelectComponent } from '@shared/components/select/select.component';
|
|
||||||
import { FileAttributeComponent } from '../dossier-overview/components/file-attribute/file-attribute.component';
|
|
||||||
import { MatDividerModule } from '@angular/material/divider';
|
|
||||||
|
|
||||||
const components = [AddDossierDialogComponent];
|
|
||||||
|
|
||||||
const utils = [NavigateLastDossiersScreenDirective];
|
|
||||||
|
|
||||||
const modules = [MatConfigModule, ScrollingModule, IconsModule, FormsModule, ReactiveFormsModule, ColorPickerModule];
|
|
||||||
|
|
||||||
const deleteThisWhenAllComponentsAreStandalone = [DonutChartComponent, FileAttributeComponent];
|
|
||||||
|
|
||||||
@NgModule({
|
|
||||||
declarations: [...components, ...utils],
|
|
||||||
imports: [
|
|
||||||
CommonModule,
|
|
||||||
...modules,
|
|
||||||
MonacoEditorModule,
|
|
||||||
TranslateModule,
|
|
||||||
RouterModule,
|
|
||||||
IqserUsersModule,
|
|
||||||
...deleteThisWhenAllComponentsAreStandalone,
|
|
||||||
CircleButtonComponent,
|
|
||||||
IconButtonComponent,
|
|
||||||
SmallChipComponent,
|
|
||||||
StopPropagationDirective,
|
|
||||||
HasScrollbarDirective,
|
|
||||||
IqserAllowDirective,
|
|
||||||
IqserDenyDirective,
|
|
||||||
SelectComponent,
|
|
||||||
RoundCheckboxComponent,
|
|
||||||
DynamicInputComponent,
|
|
||||||
MatDividerModule,
|
|
||||||
WatermarkSelectorComponent,
|
|
||||||
HelpButtonComponent,
|
|
||||||
],
|
|
||||||
exports: [...modules, ...components, ...utils, ...deleteThisWhenAllComponentsAreStandalone],
|
|
||||||
})
|
|
||||||
export class SharedModule {}
|
|
||||||
@ -1,15 +1,19 @@
|
|||||||
import { Component, Inject } from '@angular/core';
|
import { Component, Inject } from '@angular/core';
|
||||||
import { TranslateService } from '@ngx-translate/core';
|
import { TranslateModule, TranslateService } from '@ngx-translate/core';
|
||||||
import { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog';
|
import { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog';
|
||||||
import { DetailsRadioOption, IconButtonTypes } from '@iqser/common-ui';
|
import { DetailsRadioComponent, DetailsRadioOption, IconButtonComponent, IconButtonTypes } from '@iqser/common-ui';
|
||||||
import { UntypedFormBuilder, UntypedFormGroup, Validators } from '@angular/forms';
|
import { ReactiveFormsModule, UntypedFormBuilder, UntypedFormGroup, Validators } from '@angular/forms';
|
||||||
import { marker as _ } from '@biesbjerg/ngx-translate-extract-marker';
|
import { marker as _ } from '@biesbjerg/ngx-translate-extract-marker';
|
||||||
import { OverwriteFileOption, OverwriteFileOptions } from '@red/domain';
|
import { OverwriteFileOption, OverwriteFileOptions } from '@red/domain';
|
||||||
|
import { NgIf } from '@angular/common';
|
||||||
|
import { MatCheckbox } from '@angular/material/checkbox';
|
||||||
|
|
||||||
@Component({
|
@Component({
|
||||||
selector: 'redaction-overwrite-files-dialog',
|
selector: 'redaction-overwrite-files-dialog',
|
||||||
templateUrl: './overwrite-files-dialog.component.html',
|
templateUrl: './overwrite-files-dialog.component.html',
|
||||||
styleUrls: ['./overwrite-files-dialog.component.scss'],
|
styleUrls: ['./overwrite-files-dialog.component.scss'],
|
||||||
|
standalone: true,
|
||||||
|
imports: [NgIf, TranslateModule, ReactiveFormsModule, DetailsRadioComponent, MatCheckbox, IconButtonComponent],
|
||||||
})
|
})
|
||||||
export class OverwriteFilesDialogComponent {
|
export class OverwriteFilesDialogComponent {
|
||||||
readonly iconButtonTypes = IconButtonTypes;
|
readonly iconButtonTypes = IconButtonTypes;
|
||||||
|
|||||||
@ -6,9 +6,13 @@ import { ActiveDossiersService } from '@services/dossiers/active-dossiers.servic
|
|||||||
import { handleFileDrop } from '@utils/file-drop-utils';
|
import { handleFileDrop } from '@utils/file-drop-utils';
|
||||||
import { FileUploadModel } from '@upload-download/model/file-upload.model';
|
import { FileUploadModel } from '@upload-download/model/file-upload.model';
|
||||||
import { DOSSIER_ID } from '../../../tokens';
|
import { DOSSIER_ID } from '../../../tokens';
|
||||||
|
import { MatIcon } from '@angular/material/icon';
|
||||||
|
import { TranslateModule } from '@ngx-translate/core';
|
||||||
|
|
||||||
@Component({
|
@Component({
|
||||||
templateUrl: './file-drop.component.html',
|
templateUrl: './file-drop.component.html',
|
||||||
|
standalone: true,
|
||||||
|
imports: [MatIcon, TranslateModule],
|
||||||
})
|
})
|
||||||
export class FileDropComponent {
|
export class FileDropComponent {
|
||||||
constructor(
|
constructor(
|
||||||
|
|||||||
@ -1,30 +0,0 @@
|
|||||||
import { NgModule } from '@angular/core';
|
|
||||||
import { CommonModule } from '@angular/common';
|
|
||||||
import { FileDropComponent } from './file-drop/file-drop.component';
|
|
||||||
import { OverlayModule } from '@angular/cdk/overlay';
|
|
||||||
import { UploadStatusOverlayComponent } from './upload-status-overlay/upload-status-overlay.component';
|
|
||||||
import { SharedModule } from '@shared/shared.module';
|
|
||||||
import { OverwriteFilesDialogComponent } from './dialogs/overwrite-files-dialog/overwrite-files-dialog.component';
|
|
||||||
import { FileUploadService } from './services/file-upload.service';
|
|
||||||
import { FileDownloadService } from './services/file-download.service';
|
|
||||||
import { StatusOverlayService } from './services/status-overlay.service';
|
|
||||||
import { FileDropOverlayService } from './services/file-drop-overlay.service';
|
|
||||||
import { UploadDownloadDialogService } from './services/upload-download-dialog.service';
|
|
||||||
import { TranslateModule } from '@ngx-translate/core';
|
|
||||||
import { CircleButtonComponent, DetailsRadioComponent, IconButtonComponent } from '@iqser/common-ui';
|
|
||||||
|
|
||||||
@NgModule({
|
|
||||||
imports: [
|
|
||||||
CommonModule,
|
|
||||||
SharedModule,
|
|
||||||
OverlayModule,
|
|
||||||
TranslateModule,
|
|
||||||
CircleButtonComponent,
|
|
||||||
IconButtonComponent,
|
|
||||||
DetailsRadioComponent,
|
|
||||||
],
|
|
||||||
declarations: [FileDropComponent, UploadStatusOverlayComponent, OverwriteFilesDialogComponent],
|
|
||||||
providers: [UploadDownloadDialogService, FileUploadService, FileDownloadService, StatusOverlayService, FileDropOverlayService],
|
|
||||||
exports: [FileDropComponent, UploadStatusOverlayComponent],
|
|
||||||
})
|
|
||||||
export class FileUploadDownloadModule {}
|
|
||||||
@ -8,13 +8,16 @@ import { NGXLogger } from 'ngx-logger';
|
|||||||
import { mapEach } from '@iqser/common-ui/lib/utils';
|
import { mapEach } from '@iqser/common-ui/lib/utils';
|
||||||
import { TenantsService } from '@iqser/common-ui/lib/tenants';
|
import { TenantsService } from '@iqser/common-ui/lib/tenants';
|
||||||
|
|
||||||
@Injectable()
|
@Injectable({ providedIn: 'root' })
|
||||||
export class FileDownloadService extends EntitiesService<IDownloadStatus, DownloadStatus> {
|
export class FileDownloadService extends EntitiesService<IDownloadStatus, DownloadStatus> {
|
||||||
protected readonly _defaultModelPath = 'async/download';
|
protected readonly _defaultModelPath = 'async/download';
|
||||||
protected readonly _entityClass = DownloadStatus;
|
protected readonly _entityClass = DownloadStatus;
|
||||||
protected readonly _tenantsService = inject(TenantsService);
|
protected readonly _tenantsService = inject(TenantsService);
|
||||||
|
|
||||||
constructor(private readonly _configService: ConfigService, private readonly _logger: NGXLogger) {
|
constructor(
|
||||||
|
private readonly _configService: ConfigService,
|
||||||
|
private readonly _logger: NGXLogger,
|
||||||
|
) {
|
||||||
super();
|
super();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -5,13 +5,16 @@ import { ComponentPortal } from '@angular/cdk/portal';
|
|||||||
import { DOSSIER_ID } from '../../../tokens';
|
import { DOSSIER_ID } from '../../../tokens';
|
||||||
import { BehaviorSubject } from 'rxjs';
|
import { BehaviorSubject } from 'rxjs';
|
||||||
|
|
||||||
@Injectable()
|
@Injectable({ providedIn: 'root' })
|
||||||
export class FileDropOverlayService {
|
export class FileDropOverlayService {
|
||||||
readonly #dropOverlayRef: OverlayRef;
|
readonly #dropOverlayRef: OverlayRef;
|
||||||
readonly #importingRedactions$ = new BehaviorSubject(false);
|
readonly #importingRedactions$ = new BehaviorSubject(false);
|
||||||
#dossierId: string;
|
#dossierId: string;
|
||||||
|
|
||||||
constructor(private readonly _overlay: Overlay, private readonly _injector: Injector) {
|
constructor(
|
||||||
|
private readonly _overlay: Overlay,
|
||||||
|
private readonly _injector: Injector,
|
||||||
|
) {
|
||||||
this.#dropOverlayRef = this._overlay.create({
|
this.#dropOverlayRef = this._overlay.create({
|
||||||
height: '100vh',
|
height: '100vh',
|
||||||
width: '100vw',
|
width: '100vw',
|
||||||
|
|||||||
@ -21,7 +21,7 @@ export interface ActiveUpload {
|
|||||||
fileUploadModel: FileUploadModel;
|
fileUploadModel: FileUploadModel;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Injectable()
|
@Injectable({ providedIn: 'root' })
|
||||||
export class FileUploadService extends GenericService<IFileUploadResult> implements OnDestroy {
|
export class FileUploadService extends GenericService<IFileUploadResult> implements OnDestroy {
|
||||||
static readonly MAX_PARALLEL_UPLOADS = 5;
|
static readonly MAX_PARALLEL_UPLOADS = 5;
|
||||||
#pendingUploads: FileUploadModel[] = [];
|
#pendingUploads: FileUploadModel[] = [];
|
||||||
|
|||||||
@ -3,11 +3,14 @@ import { Overlay, OverlayRef } from '@angular/cdk/overlay';
|
|||||||
import { ComponentPortal } from '@angular/cdk/portal';
|
import { ComponentPortal } from '@angular/cdk/portal';
|
||||||
import { UploadStatusOverlayComponent } from '../upload-status-overlay/upload-status-overlay.component';
|
import { UploadStatusOverlayComponent } from '../upload-status-overlay/upload-status-overlay.component';
|
||||||
|
|
||||||
@Injectable()
|
@Injectable({ providedIn: 'root' })
|
||||||
export class StatusOverlayService {
|
export class StatusOverlayService {
|
||||||
private readonly _uploadStatusOverlayRef: OverlayRef;
|
private readonly _uploadStatusOverlayRef: OverlayRef;
|
||||||
|
|
||||||
constructor(private readonly _overlay: Overlay, private readonly _injector: Injector) {
|
constructor(
|
||||||
|
private readonly _overlay: Overlay,
|
||||||
|
private readonly _injector: Injector,
|
||||||
|
) {
|
||||||
this._uploadStatusOverlayRef = this._overlay.create();
|
this._uploadStatusOverlayRef = this._overlay.create();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -10,7 +10,7 @@ const dialogConfig = {
|
|||||||
autoFocus: false,
|
autoFocus: false,
|
||||||
};
|
};
|
||||||
|
|
||||||
@Injectable()
|
@Injectable({ providedIn: 'root' })
|
||||||
export class UploadDownloadDialogService {
|
export class UploadDownloadDialogService {
|
||||||
constructor(private readonly _dialog: MatDialog) {}
|
constructor(private readonly _dialog: MatDialog) {}
|
||||||
|
|
||||||
|
|||||||
@ -2,11 +2,19 @@ import { OverlayRef } from '@angular/cdk/overlay';
|
|||||||
import { ChangeDetectorRef, Component, OnInit } from '@angular/core';
|
import { ChangeDetectorRef, Component, OnInit } from '@angular/core';
|
||||||
import { FileUploadModel } from '../model/file-upload.model';
|
import { FileUploadModel } from '../model/file-upload.model';
|
||||||
import { FileUploadService } from '../services/file-upload.service';
|
import { FileUploadService } from '../services/file-upload.service';
|
||||||
|
import { MatIcon } from '@angular/material/icon';
|
||||||
|
import { TranslateModule } from '@ngx-translate/core';
|
||||||
|
import { CircleButtonComponent } from '@iqser/common-ui';
|
||||||
|
import { NgForOf, NgIf } from '@angular/common';
|
||||||
|
import { MatTooltip } from '@angular/material/tooltip';
|
||||||
|
import { MatProgressBar } from '@angular/material/progress-bar';
|
||||||
|
|
||||||
@Component({
|
@Component({
|
||||||
selector: 'redaction-upload-status-overlay',
|
selector: 'redaction-upload-status-overlay',
|
||||||
templateUrl: './upload-status-overlay.component.html',
|
templateUrl: './upload-status-overlay.component.html',
|
||||||
styleUrls: ['./upload-status-overlay.component.scss'],
|
styleUrls: ['./upload-status-overlay.component.scss'],
|
||||||
|
standalone: true,
|
||||||
|
imports: [MatIcon, TranslateModule, CircleButtonComponent, NgForOf, MatTooltip, NgIf, MatProgressBar],
|
||||||
})
|
})
|
||||||
export class UploadStatusOverlayComponent implements OnInit {
|
export class UploadStatusOverlayComponent implements OnInit {
|
||||||
collapsed = true;
|
collapsed = true;
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user