From 3d1d3a110cc02603f55bb2058bb9d691367f7741 Mon Sep 17 00:00:00 2001 From: Alex Karpov Date: Fri, 3 Jan 2025 12:03:19 +0200 Subject: [PATCH] NAS-133371: Cleanup OldSlideInService --- .../admin-layout/admin-layout.component.html | 1 - .../admin-layout/admin-layout.component.ts | 2 - .../modal-header/modal-header.component.scss | 12 -- .../old-modal-header.component.html | 24 --- .../old-modal-header.component.scss | 41 ----- .../old-modal-header.component.ts | 46 ------ src/app/modules/slide-ins/old-slide-in-ref.ts | 20 --- .../slide-ins/old-slide-in.component.html | 17 --- .../slide-ins/old-slide-in.component.scss | 79 ---------- .../slide-ins/old-slide-in.component.spec.ts | 68 --------- .../slide-ins/old-slide-in.component.ts | 140 ------------------ src/app/modules/slide-ins/slide-in.token.ts | 4 - .../cloud-credentials-card.component.spec.ts | 2 - .../ssh-connection-card.component.spec.ts | 2 - .../widget-group-form.component.spec.ts | 6 +- .../cloud-backup-card.component.spec.ts | 2 - .../cloud-backup-list.component.spec.ts | 2 - .../cloudsync-list.component.spec.ts | 9 +- .../cloudsync-task-card.component.spec.ts | 9 +- .../cloudsync-provider.component.spec.ts | 2 - .../cloudsync-what-and-when.component.spec.ts | 6 +- .../transport-section.component.spec.ts | 4 - .../replication-list.component.spec.ts | 2 - .../replication-task-card.component.spec.ts | 2 - .../rsync-task-card.component.spec.ts | 2 - .../resilver-config.component.spec.ts | 2 - .../interface-form.component.spec.ts | 6 +- .../initiator-list.component.spec.ts | 6 - src/app/services/old-slide-in.service.spec.ts | 130 ---------------- src/app/services/old-slide-in.service.ts | 113 -------------- src/setup-jest.ts | 4 - tsconfig.strictNullChecks.json | 1 - 32 files changed, 16 insertions(+), 750 deletions(-) delete mode 100644 src/app/modules/slide-ins/components/old-modal-header/old-modal-header.component.html delete mode 100644 src/app/modules/slide-ins/components/old-modal-header/old-modal-header.component.scss delete mode 100644 src/app/modules/slide-ins/components/old-modal-header/old-modal-header.component.ts delete mode 100644 src/app/modules/slide-ins/old-slide-in-ref.ts delete mode 100644 src/app/modules/slide-ins/old-slide-in.component.html delete mode 100644 src/app/modules/slide-ins/old-slide-in.component.scss delete mode 100644 src/app/modules/slide-ins/old-slide-in.component.spec.ts delete mode 100644 src/app/modules/slide-ins/old-slide-in.component.ts delete mode 100644 src/app/modules/slide-ins/slide-in.token.ts delete mode 100644 src/app/services/old-slide-in.service.spec.ts delete mode 100644 src/app/services/old-slide-in.service.ts diff --git a/src/app/modules/layout/admin-layout/admin-layout.component.html b/src/app/modules/layout/admin-layout/admin-layout.component.html index 406661ac52d..c8b80e309f6 100644 --- a/src/app/modules/layout/admin-layout/admin-layout.component.html +++ b/src/app/modules/layout/admin-layout/admin-layout.component.html @@ -102,5 +102,4 @@ - diff --git a/src/app/modules/layout/admin-layout/admin-layout.component.ts b/src/app/modules/layout/admin-layout/admin-layout.component.ts index 3f3148237af..ae91b101d34 100644 --- a/src/app/modules/layout/admin-layout/admin-layout.component.ts +++ b/src/app/modules/layout/admin-layout/admin-layout.component.ts @@ -34,7 +34,6 @@ import { SidenavService } from 'app/modules/layout/sidenav.service'; import { TopbarComponent } from 'app/modules/layout/topbar/topbar.component'; import { DefaultPageHeaderComponent } from 'app/modules/page-header/default-page-header/default-page-header.component'; import { SlideInControllerComponent } from 'app/modules/slide-ins/components/slide-in-controller/slide-in-controller.component'; -import { OldSlideInComponent } from 'app/modules/slide-ins/old-slide-in.component'; import { TestDirective } from 'app/modules/test-id/test.directive'; import { ThemeService } from 'app/modules/theme/theme.service'; import { SentryService } from 'app/services/sentry.service'; @@ -66,7 +65,6 @@ import { selectCopyrightText, selectIsEnterprise, waitForSystemInfo } from 'app/ ConsoleFooterComponent, AlertsPanelComponent, SlideInControllerComponent, - OldSlideInComponent, AsyncPipe, TranslateModule, TestDirective, diff --git a/src/app/modules/slide-ins/components/modal-header/modal-header.component.scss b/src/app/modules/slide-ins/components/modal-header/modal-header.component.scss index 96e87082e25..054402ace1a 100644 --- a/src/app/modules/slide-ins/components/modal-header/modal-header.component.scss +++ b/src/app/modules/slide-ins/components/modal-header/modal-header.component.scss @@ -25,18 +25,6 @@ .ix-form-title { color: var(--fg1); word-break: break-all; - - // TODO: Remove this when we finish with Slide In Migration - &::after { - background-color: var(--primary); - border-radius: 50%; - content: ''; - display: inline-block; - height: 6px; - margin-left: 6px; - vertical-align: middle; - width: 6px; - } } #ix-close-icon { diff --git a/src/app/modules/slide-ins/components/old-modal-header/old-modal-header.component.html b/src/app/modules/slide-ins/components/old-modal-header/old-modal-header.component.html deleted file mode 100644 index 788c3fdbf79..00000000000 --- a/src/app/modules/slide-ins/components/old-modal-header/old-modal-header.component.html +++ /dev/null @@ -1,24 +0,0 @@ -
-

- {{ title() | translate }} - @if (requiredRoles()?.length && !(hasRequiredRoles() | async)) { - - } -

- - @if (!disableClose()) { - - } -
- -@if (loading()) { - -} diff --git a/src/app/modules/slide-ins/components/old-modal-header/old-modal-header.component.scss b/src/app/modules/slide-ins/components/old-modal-header/old-modal-header.component.scss deleted file mode 100644 index 036b7b239bd..00000000000 --- a/src/app/modules/slide-ins/components/old-modal-header/old-modal-header.component.scss +++ /dev/null @@ -1,41 +0,0 @@ -:host { - display: block; - position: sticky; - top: 0; - width: 100%; - z-index: 20000; -} - -.ix-slidein-title-bar { - align-items: center; - background-color: var(--bg2); - border-bottom: 2px solid var(--lines); - display: flex; - height: 75px; - margin: 0 -20px; - padding: 0 30px; - place-content: center space-between; -} - -.ix-formtitle { - color: var(--fg1); - word-break: break-all; -} - -#ix-close-icon { - color: var(--fg1); - cursor: pointer; - - &:focus { - border-radius: 50%; - outline: 1.5px solid var(--primary); - } -} - -mat-progress-bar { - bottom: 0; - left: -20px; - position: absolute; - width: calc(100% + 40px); - z-index: 10005; -} diff --git a/src/app/modules/slide-ins/components/old-modal-header/old-modal-header.component.ts b/src/app/modules/slide-ins/components/old-modal-header/old-modal-header.component.ts deleted file mode 100644 index bebef78edee..00000000000 --- a/src/app/modules/slide-ins/components/old-modal-header/old-modal-header.component.ts +++ /dev/null @@ -1,46 +0,0 @@ -import { AsyncPipe } from '@angular/common'; -import { - ChangeDetectionStrategy, Component, computed, input, -} from '@angular/core'; -import { MatProgressBar } from '@angular/material/progress-bar'; -import { TranslateModule } from '@ngx-translate/core'; -import { Role } from 'app/enums/role.enum'; -import { AuthService } from 'app/modules/auth/auth.service'; -import { ReadOnlyComponent } from 'app/modules/forms/ix-forms/components/readonly-badge/readonly-badge.component'; -import { IxIconComponent } from 'app/modules/ix-icon/ix-icon.component'; -import { OldSlideInRef } from 'app/modules/slide-ins/old-slide-in-ref'; - -/** - * @deprecated Use SlideIn and ix-modal-header. - */ -@Component({ - selector: 'ix-old-modal-header', - templateUrl: './old-modal-header.component.html', - styleUrls: ['./old-modal-header.component.scss'], - changeDetection: ChangeDetectionStrategy.OnPush, - standalone: true, - imports: [ - ReadOnlyComponent, - IxIconComponent, - MatProgressBar, - AsyncPipe, - TranslateModule, - ], -}) -export class OldModalHeaderComponent { - readonly title = input(); - readonly loading = input(); - readonly disableClose = input(false); - readonly requiredRoles = input([]); - - readonly hasRequiredRoles = computed(() => this.authService.hasRole(this.requiredRoles())); - - constructor( - private slideInRef: OldSlideInRef, - private authService: AuthService, - ) {} - - close(): void { - this.slideInRef.close(); - } -} diff --git a/src/app/modules/slide-ins/old-slide-in-ref.ts b/src/app/modules/slide-ins/old-slide-in-ref.ts deleted file mode 100644 index 8c9d0131249..00000000000 --- a/src/app/modules/slide-ins/old-slide-in-ref.ts +++ /dev/null @@ -1,20 +0,0 @@ -import { ComponentRef } from '@angular/core'; -import { Subject } from 'rxjs'; - -/** - * @deprecated Use `SlideIn` and `SlideInRef` instead. - */ -export class OldSlideInRef { - readonly slideInClosed$ = new Subject(); - componentRef: ComponentRef; - id: string; - - get componentInstance(): T { - return this.componentRef.instance; - } - - close(response?: D): void { - this.slideInClosed$.next(response); - this.slideInClosed$.complete(); - } -} diff --git a/src/app/modules/slide-ins/old-slide-in.component.html b/src/app/modules/slide-ins/old-slide-in.component.html deleted file mode 100644 index 8b3993a4af4..00000000000 --- a/src/app/modules/slide-ins/old-slide-in.component.html +++ /dev/null @@ -1,17 +0,0 @@ -
-
- -
-
- -
diff --git a/src/app/modules/slide-ins/old-slide-in.component.scss b/src/app/modules/slide-ins/old-slide-in.component.scss deleted file mode 100644 index 672b3c8c8e7..00000000000 --- a/src/app/modules/slide-ins/old-slide-in.component.scss +++ /dev/null @@ -1,79 +0,0 @@ -@import 'scss-imports/cssvars'; - -/* MODAL STYLES --------------------------------*/ - -.ix-slide-in-form { - bottom: 0; - min-width: 480px; - - /* enables scrolling for tall modals */ - overflow: auto; - position: fixed; - right: -480px; - top: 48px; - transition: 200ms; - width: 480px; - - /* z-index must be higher than .ix-slide-in-background */ - /* ...but less than 1000 otherwise you cover select */ - z-index: 999; -} - -.ix-slide-in-form.open { - overflow-x: hidden; - overflow-y: auto; - right: 0; - transition: 200ms; -} - -.ix-slide-in-form.open.wide { - width: 800px; - - @media(max-width: $breakpoint-sm) { - width: 100%; - } -} - -.ix-slide-in-body { - background: #fff; - - /* margin exposes part of the modal background */ - margin: 40px; - padding: 0 20px 20px; -} - -.ix-slide-in-form .ix-slide-in-body { - background-color: var(--bg2); - margin: 0; - min-height: 100%; -} - -.ix-slide-in-background { - /* semi-transparent black */ - background-color: #000; - bottom: 0; - left: 0; - opacity: 0.75; - /* modal background fixed across whole screen */ - position: fixed; - right: 0; - top: 48px; - transition: 100ms; - - /* z-index must be below .ix-slide-in and above everything else */ - z-index: -10; -} - -.ix-slide-in-background.open { - transition: 200ms; - z-index: 900; -} - -@media #{$media-lt-sm} { - .ix-slide-in-form { - min-width: 100%; - right: -100%; - width: 100%; - } -} diff --git a/src/app/modules/slide-ins/old-slide-in.component.spec.ts b/src/app/modules/slide-ins/old-slide-in.component.spec.ts deleted file mode 100644 index 60fa3d13eb5..00000000000 --- a/src/app/modules/slide-ins/old-slide-in.component.spec.ts +++ /dev/null @@ -1,68 +0,0 @@ -import { A11yModule } from '@angular/cdk/a11y'; -import { - ChangeDetectionStrategy, - Component, ElementRef, Inject, -} from '@angular/core'; -import { fakeAsync } from '@angular/core/testing'; -import { createComponentFactory, mockProvider, Spectator } from '@ngneat/spectator/jest'; -import { OldSlideInComponent } from 'app/modules/slide-ins/old-slide-in.component'; -import { SLIDE_IN_DATA } from 'app/modules/slide-ins/slide-in.token'; - -/** Simple component for testing IxSlideInComponent */ -@Component({ - selector: 'ix-test', - template: '

{{text}}

', - standalone: true, - changeDetection: ChangeDetectionStrategy.OnPush, -}) -class TestClassComponent { - text: string; - constructor( - @Inject(SLIDE_IN_DATA) value: string, - ) { - this.text = value; - } -} - -describe('SlideInComponent', () => { - let spectator: Spectator; - - const createComponent = createComponentFactory({ - component: OldSlideInComponent, - imports: [ - A11yModule, - TestClassComponent, - ], - providers: [ - mockProvider(ElementRef, { - nativeElement: {} as HTMLElement, - }), - - ], - }); - - beforeEach(() => { - spectator = createComponent(); - spectator.inject(ElementRef); - }); - - it('call \'openSlideIn\' should create a host element in the body of the slide', () => { - spectator.component.openSlideIn(TestClassComponent, { wide: true, data: 'Component created dynamically' }); - const dynamicElement = (spectator.debugElement.nativeElement as Element).querySelector('h1'); - spectator.fixture.detectChanges(); - - expect(dynamicElement).toHaveText('Component created dynamically'); - }); - - it('call \'closeSlideIn\' should remove a created host element after 200ms', fakeAsync(() => { - spectator.component.openSlideIn( - TestClassComponent, - { wide: true, data: 'Component created dynamically' }, - ); - spectator.component.closeSlideIn(); - - spectator.tick(200); - const dynamicElement = (spectator.debugElement.nativeElement as Element).querySelector('.ix-slide-in-body'); - expect(dynamicElement).toBeEmpty(); - })); -}); diff --git a/src/app/modules/slide-ins/old-slide-in.component.ts b/src/app/modules/slide-ins/old-slide-in.component.ts deleted file mode 100644 index 32418a77f1b..00000000000 --- a/src/app/modules/slide-ins/old-slide-in.component.ts +++ /dev/null @@ -1,140 +0,0 @@ -import { CdkTrapFocus } from '@angular/cdk/a11y'; -import { - ChangeDetectionStrategy, ChangeDetectorRef, - Component, - ElementRef, - HostListener, - Injector, - OnDestroy, - OnInit, - Renderer2, - Type, - ViewContainerRef, - viewChild, - input, -} from '@angular/core'; -import { UntilDestroy, untilDestroyed } from '@ngneat/until-destroy'; -import { UUID } from 'angular2-uuid'; -import { Subscription, timer } from 'rxjs'; -import { OldSlideInRef } from 'app/modules/slide-ins/old-slide-in-ref'; -import { SLIDE_IN_DATA } from 'app/modules/slide-ins/slide-in.token'; -import { OldSlideInService } from 'app/services/old-slide-in.service'; - -@UntilDestroy() -@Component({ - selector: 'ix-old-slide-in', - templateUrl: './old-slide-in.component.html', - styleUrls: ['./old-slide-in.component.scss'], - changeDetection: ChangeDetectionStrategy.OnPush, - standalone: true, - imports: [CdkTrapFocus], -}) -export class OldSlideInComponent implements OnInit, OnDestroy { - readonly id = input(); - - private readonly slideInBody = viewChild.required('body', { read: ViewContainerRef }); - - @HostListener('document:keydown.escape') onKeydownHandler(): void { - this.onBackdropClicked(); - } - - isSlideInOpen = false; - wide = false; - private element: HTMLElement; - private wasBodyCleared = false; - private timeOutOfClear: Subscription; - - constructor( - private el: ElementRef, - private slideInService: OldSlideInService, - private renderer: Renderer2, - private cdr: ChangeDetectorRef, - private defaultInjector: Injector, - ) { - this.element = this.el.nativeElement as HTMLElement; - } - - ngOnInit(): void { - // ensure id attribute exists - if (!this.id()) { - return; - } - - // move element to bottom of page (just before ) so it can be displayed above everything else - document.body.appendChild(this.element); - this.slideInService.setSlideComponent(this); - } - - onBackdropClicked(): void { - if (!this.element || !this.isSlideInOpen) { - return; - } - this.slideInService.closeLast(); - } - - closeSlideIn(): void { - this.isSlideInOpen = false; - this.renderer.removeStyle(document.body, 'overflow'); - this.wasBodyCleared = true; - this.cdr.markForCheck(); - this.timeOutOfClear = timer(200).pipe(untilDestroyed(this)).subscribe(() => { - // Destroying child component later improves performance a little bit. - // 200ms matches transition duration - this.slideInBody().clear(); - this.wasBodyCleared = false; - this.cdr.markForCheck(); - }); - } - - openSlideIn( - componentType: Type, - params?: { wide?: boolean; data?: D; injector?: Injector }, - ): OldSlideInRef { - if (this.isSlideInOpen) { - console.error('SlideIn is already open'); - } - - this.isSlideInOpen = true; - this.renderer.setStyle(document.body, 'overflow', 'hidden'); - this.wide = !!params?.wide; - - if (this.wasBodyCleared) { - this.timeOutOfClear.unsubscribe(); - } - this.slideInBody().clear(); - this.wasBodyCleared = false; - // clear body and close all slides - - this.cdr.markForCheck(); - - return this.createSlideInRef( - componentType, - params?.data, - params?.injector || this.defaultInjector, - ); - } - - private createSlideInRef( - componentType: Type, - data?: D, - parentInjector?: Injector, - ): OldSlideInRef { - const slideInRef = new OldSlideInRef(); - const injector = Injector.create({ - providers: [ - { provide: SLIDE_IN_DATA, useValue: data }, - { provide: OldSlideInRef, useValue: slideInRef }, - ], - parent: parentInjector, - }); - slideInRef.componentRef = this.slideInBody().createComponent(componentType, { injector }); - slideInRef.id = UUID.UUID(); - - return slideInRef; - } - - ngOnDestroy(): void { - this.element.remove(); - this.slideInService.closeAll(); - } -} diff --git a/src/app/modules/slide-ins/slide-in.token.ts b/src/app/modules/slide-ins/slide-in.token.ts deleted file mode 100644 index 0fc9ba02877..00000000000 --- a/src/app/modules/slide-ins/slide-in.token.ts +++ /dev/null @@ -1,4 +0,0 @@ -import { InjectionToken } from '@angular/core'; - -// eslint-disable-next-line @typescript-eslint/naming-convention -export const SLIDE_IN_DATA = new InjectionToken('SLIDE_IN_DATA'); diff --git a/src/app/pages/credentials/backup-credentials/cloud-credentials-card/cloud-credentials-card.component.spec.ts b/src/app/pages/credentials/backup-credentials/cloud-credentials-card/cloud-credentials-card.component.spec.ts index 9ea20cccb10..78d70cd12a8 100644 --- a/src/app/pages/credentials/backup-credentials/cloud-credentials-card/cloud-credentials-card.component.spec.ts +++ b/src/app/pages/credentials/backup-credentials/cloud-credentials-card/cloud-credentials-card.component.spec.ts @@ -15,7 +15,6 @@ import { IxTableHarness } from 'app/modules/ix-table/components/ix-table/ix-tabl import { IxTablePagerShowMoreComponent, } from 'app/modules/ix-table/components/ix-table-pager-show-more/ix-table-pager-show-more.component'; -import { OldSlideInRef } from 'app/modules/slide-ins/old-slide-in-ref'; import { SlideIn } from 'app/modules/slide-ins/slide-in'; import { ApiService } from 'app/modules/websocket/api.service'; import { CloudCredentialsCardComponent } from 'app/pages/credentials/backup-credentials/cloud-credentials-card/cloud-credentials-card.component'; @@ -75,7 +74,6 @@ describe('CloudCredentialsCardComponent', () => { mockProvider(SlideIn, { open: jest.fn(() => of()), }), - mockProvider(OldSlideInRef), mockProvider(MatDialog, { open: jest.fn(() => ({ afterClosed: () => of(true), diff --git a/src/app/pages/credentials/backup-credentials/ssh-connection-card/ssh-connection-card.component.spec.ts b/src/app/pages/credentials/backup-credentials/ssh-connection-card/ssh-connection-card.component.spec.ts index b4147f769b7..c8d9b537aa2 100644 --- a/src/app/pages/credentials/backup-credentials/ssh-connection-card/ssh-connection-card.component.spec.ts +++ b/src/app/pages/credentials/backup-credentials/ssh-connection-card/ssh-connection-card.component.spec.ts @@ -13,7 +13,6 @@ import { IxTableHarness } from 'app/modules/ix-table/components/ix-table/ix-tabl import { IxTablePagerShowMoreComponent, } from 'app/modules/ix-table/components/ix-table-pager-show-more/ix-table-pager-show-more.component'; -import { OldSlideInRef } from 'app/modules/slide-ins/old-slide-in-ref'; import { SlideIn } from 'app/modules/slide-ins/slide-in'; import { ApiService } from 'app/modules/websocket/api.service'; import { SshConnectionCardComponent } from 'app/pages/credentials/backup-credentials/ssh-connection-card/ssh-connection-card.component'; @@ -69,7 +68,6 @@ describe('SshConnectionCardComponent', () => { mockProvider(SlideIn, { open: jest.fn(() => of()), }), - mockProvider(OldSlideInRef), mockProvider(MatDialog, { open: jest.fn(() => ({ afterClosed: () => of(true), diff --git a/src/app/pages/dashboard/components/widget-group-form/widget-group-form.component.spec.ts b/src/app/pages/dashboard/components/widget-group-form/widget-group-form.component.spec.ts index 86b5addba13..ac3a016a6b7 100644 --- a/src/app/pages/dashboard/components/widget-group-form/widget-group-form.component.spec.ts +++ b/src/app/pages/dashboard/components/widget-group-form/widget-group-form.component.spec.ts @@ -10,6 +10,7 @@ import { of } from 'rxjs'; import { mockAuth } from 'app/core/testing/utils/mock-auth.utils'; import { IxIconGroupHarness } from 'app/modules/forms/ix-forms/components/ix-icon-group/ix-icon-group.harness'; import { FormErrorHandlerService } from 'app/modules/forms/ix-forms/services/form-error-handler.service'; +import { SlideIn } from 'app/modules/slide-ins/slide-in'; import { SlideInRef } from 'app/modules/slide-ins/slide-in-ref'; import { SnackbarService } from 'app/modules/snackbar/services/snackbar.service'; import { WidgetEditorGroupComponent } from 'app/pages/dashboard/components/widget-group-form/widget-editor-group/widget-editor-group.component'; @@ -18,7 +19,6 @@ import { WidgetGroupSlotFormComponent } from 'app/pages/dashboard/components/wid import { SlotPosition } from 'app/pages/dashboard/types/slot-position.enum'; import { WidgetGroup, WidgetGroupLayout } from 'app/pages/dashboard/types/widget-group.interface'; import { SlotSize, WidgetType } from 'app/pages/dashboard/types/widget.interface'; -import { OldSlideInService } from 'app/services/old-slide-in.service'; describe('WidgetGroupFormComponent', () => { let spectator: Spectator; @@ -43,7 +43,9 @@ describe('WidgetGroupFormComponent', () => { providers: [ mockAuth(), mockProvider(SlideInRef, slideInRef), - mockProvider(OldSlideInService), + mockProvider(SlideIn, { + components$: of([]), + }), mockProvider(FormErrorHandlerService), mockProvider(SnackbarService), ], diff --git a/src/app/pages/data-protection/cloud-backup/cloud-backup-card/cloud-backup-card.component.spec.ts b/src/app/pages/data-protection/cloud-backup/cloud-backup-card/cloud-backup-card.component.spec.ts index 2b6e19f8cea..5684eac9043 100644 --- a/src/app/pages/data-protection/cloud-backup/cloud-backup-card/cloud-backup-card.component.spec.ts +++ b/src/app/pages/data-protection/cloud-backup/cloud-backup-card/cloud-backup-card.component.spec.ts @@ -14,7 +14,6 @@ import { DialogService } from 'app/modules/dialog/dialog.service'; import { IxIconHarness } from 'app/modules/ix-icon/ix-icon.harness'; import { IxTableHarness } from 'app/modules/ix-table/components/ix-table/ix-table.harness'; import { selectJobs } from 'app/modules/jobs/store/job.selectors'; -import { OldSlideInRef } from 'app/modules/slide-ins/old-slide-in-ref'; import { SlideIn } from 'app/modules/slide-ins/slide-in'; import { ApiService } from 'app/modules/websocket/api.service'; import { @@ -62,7 +61,6 @@ describe('CloudBackupCardComponent', () => { mockProvider(DialogService, { confirm: jest.fn(() => of(true)), }), - mockProvider(OldSlideInRef), mockProvider(SlideIn, { open: jest.fn(() => of({ response: true, diff --git a/src/app/pages/data-protection/cloud-backup/cloud-backup-list/cloud-backup-list.component.spec.ts b/src/app/pages/data-protection/cloud-backup/cloud-backup-list/cloud-backup-list.component.spec.ts index 73ae1d57b3b..abc85596b4e 100644 --- a/src/app/pages/data-protection/cloud-backup/cloud-backup-list/cloud-backup-list.component.spec.ts +++ b/src/app/pages/data-protection/cloud-backup/cloud-backup-list/cloud-backup-list.component.spec.ts @@ -19,7 +19,6 @@ import { IxTableHarness } from 'app/modules/ix-table/components/ix-table/ix-tabl import { SortDirection } from 'app/modules/ix-table/enums/sort-direction.enum'; import { selectJobs } from 'app/modules/jobs/store/job.selectors'; import { PageHeaderComponent } from 'app/modules/page-header/page-title-header/page-header.component'; -import { OldSlideInRef } from 'app/modules/slide-ins/old-slide-in-ref'; import { SlideIn } from 'app/modules/slide-ins/slide-in'; import { ApiService } from 'app/modules/websocket/api.service'; import { CloudBackupDetailsComponent } from 'app/pages/data-protection/cloud-backup/cloud-backup-details/cloud-backup-details.component'; @@ -74,7 +73,6 @@ describe('CloudBackupListComponent', () => { mockProvider(DialogService, { confirm: jest.fn(() => of(true)), }), - mockProvider(OldSlideInRef), mockProvider(SlideIn, { open: jest.fn(() => of({ response: true, diff --git a/src/app/pages/data-protection/cloudsync/cloudsync-list/cloudsync-list.component.spec.ts b/src/app/pages/data-protection/cloudsync/cloudsync-list/cloudsync-list.component.spec.ts index cc2872ed24e..7a39237d4b6 100644 --- a/src/app/pages/data-protection/cloudsync/cloudsync-list/cloudsync-list.component.spec.ts +++ b/src/app/pages/data-protection/cloudsync/cloudsync-list/cloudsync-list.component.spec.ts @@ -29,14 +29,12 @@ import { IxTableDetailsRowDirective } from 'app/modules/ix-table/directives/ix-t import { selectJob } from 'app/modules/jobs/store/job.selectors'; import { LocaleService } from 'app/modules/language/locale.service'; import { PageHeaderComponent } from 'app/modules/page-header/page-title-header/page-header.component'; -import { OldSlideInRef } from 'app/modules/slide-ins/old-slide-in-ref'; import { SlideIn } from 'app/modules/slide-ins/slide-in'; import { SnackbarService } from 'app/modules/snackbar/services/snackbar.service'; import { ApiService } from 'app/modules/websocket/api.service'; import { CloudSyncFormComponent } from 'app/pages/data-protection/cloudsync/cloudsync-form/cloudsync-form.component'; import { CloudSyncListComponent } from 'app/pages/data-protection/cloudsync/cloudsync-list/cloudsync-list.component'; import { CloudSyncRestoreDialogComponent } from 'app/pages/data-protection/cloudsync/cloudsync-restore-dialog/cloudsync-restore-dialog.component'; -import { OldSlideInService } from 'app/services/old-slide-in.service'; import { TaskService } from 'app/services/task.service'; describe('CloudSyncListComponent', () => { @@ -124,12 +122,9 @@ describe('CloudSyncListComponent', () => { mockProvider(DialogService, { confirm: jest.fn(() => of(true)), }), - mockProvider(OldSlideInService, { - open: jest.fn(() => { - return { slideInClosed$: of() }; - }), + mockProvider(SlideIn, { + open: jest.fn(() => of()), }), - mockProvider(OldSlideInRef), mockProvider(MatDialog, { open: jest.fn(() => ({ afterClosed: () => of(true), diff --git a/src/app/pages/data-protection/cloudsync/cloudsync-task-card/cloudsync-task-card.component.spec.ts b/src/app/pages/data-protection/cloudsync/cloudsync-task-card/cloudsync-task-card.component.spec.ts index 7c171f3f2d4..0ea20b86f04 100644 --- a/src/app/pages/data-protection/cloudsync/cloudsync-task-card/cloudsync-task-card.component.spec.ts +++ b/src/app/pages/data-protection/cloudsync/cloudsync-task-card/cloudsync-task-card.component.spec.ts @@ -25,7 +25,6 @@ import { } from 'app/modules/ix-table/components/ix-table-body/cells/ix-cell-schedule/ix-cell-schedule.component'; import { selectJobs } from 'app/modules/jobs/store/job.selectors'; import { LocaleService } from 'app/modules/language/locale.service'; -import { OldSlideInRef } from 'app/modules/slide-ins/old-slide-in-ref'; import { SlideIn } from 'app/modules/slide-ins/slide-in'; import { SnackbarService } from 'app/modules/snackbar/services/snackbar.service'; import { ApiService } from 'app/modules/websocket/api.service'; @@ -37,7 +36,6 @@ import { CloudSyncTaskCardComponent, } from 'app/pages/data-protection/cloudsync/cloudsync-task-card/cloudsync-task-card.component'; import { CloudSyncWizardComponent } from 'app/pages/data-protection/cloudsync/cloudsync-wizard/cloudsync-wizard.component'; -import { OldSlideInService } from 'app/services/old-slide-in.service'; import { TaskService } from 'app/services/task.service'; import { selectSystemConfigState } from 'app/store/system-config/system-config.selectors'; @@ -134,11 +132,8 @@ describe('CloudSyncTaskCardComponent', () => { mockProvider(SlideIn, { open: jest.fn(() => of()), }), - mockProvider(OldSlideInRef), - mockProvider(OldSlideInService, { - open: jest.fn(() => ({ - slideInClosed$: of(), - })), + mockProvider(SlideIn, { + open: jest.fn(() => of()), }), mockProvider(MatDialog, { open: jest.fn(() => ({ diff --git a/src/app/pages/data-protection/cloudsync/cloudsync-wizard/steps/cloudsync-provider/cloudsync-provider.component.spec.ts b/src/app/pages/data-protection/cloudsync/cloudsync-wizard/steps/cloudsync-provider/cloudsync-provider.component.spec.ts index fc1d5815ea5..4a6c6fe970f 100644 --- a/src/app/pages/data-protection/cloudsync/cloudsync-wizard/steps/cloudsync-provider/cloudsync-provider.component.spec.ts +++ b/src/app/pages/data-protection/cloudsync/cloudsync-wizard/steps/cloudsync-provider/cloudsync-provider.component.spec.ts @@ -12,7 +12,6 @@ import { CloudCredentialsSelectComponent, } from 'app/modules/forms/custom-selects/cloud-credentials-select/cloud-credentials-select.component'; import { IxFormHarness } from 'app/modules/forms/ix-forms/testing/ix-form.harness'; -import { OldSlideInRef } from 'app/modules/slide-ins/old-slide-in-ref'; import { SlideIn } from 'app/modules/slide-ins/slide-in'; import { SlideInRef } from 'app/modules/slide-ins/slide-in-ref'; import { ApiService } from 'app/modules/websocket/api.service'; @@ -73,7 +72,6 @@ describe('CloudSyncProviderComponent', () => { afterClosed: () => of(), })), }), - mockProvider(OldSlideInRef), mockProvider(DialogService, { confirm: jest.fn(() => of()), }), diff --git a/src/app/pages/data-protection/cloudsync/cloudsync-wizard/steps/cloudsync-what-and-when/cloudsync-what-and-when.component.spec.ts b/src/app/pages/data-protection/cloudsync/cloudsync-wizard/steps/cloudsync-what-and-when/cloudsync-what-and-when.component.spec.ts index 624ad6a8720..c520aaf21f2 100644 --- a/src/app/pages/data-protection/cloudsync/cloudsync-wizard/steps/cloudsync-what-and-when/cloudsync-what-and-when.component.spec.ts +++ b/src/app/pages/data-protection/cloudsync/cloudsync-wizard/steps/cloudsync-what-and-when/cloudsync-what-and-when.component.spec.ts @@ -12,13 +12,13 @@ import { DialogService } from 'app/modules/dialog/dialog.service'; import { IxInputHarness } from 'app/modules/forms/ix-forms/components/ix-input/ix-input.harness'; import { IxSelectHarness } from 'app/modules/forms/ix-forms/components/ix-select/ix-select.harness'; import { IxFormHarness } from 'app/modules/forms/ix-forms/testing/ix-form.harness'; +import { SlideIn } from 'app/modules/slide-ins/slide-in'; import { SlideInRef } from 'app/modules/slide-ins/slide-in-ref'; import { CloudSyncFormComponent } from 'app/pages/data-protection/cloudsync/cloudsync-form/cloudsync-form.component'; import { googlePhotosCreds, googlePhotosProvider } from 'app/pages/data-protection/cloudsync/cloudsync-wizard/cloudsync-wizard.testing.utils'; import { CloudSyncWhatAndWhenComponent } from 'app/pages/data-protection/cloudsync/cloudsync-wizard/steps/cloudsync-what-and-when/cloudsync-what-and-when.component'; import { TransferModeExplanationComponent } from 'app/pages/data-protection/cloudsync/transfer-mode-explanation/transfer-mode-explanation.component'; import { DatasetService } from 'app/services/dataset-service/dataset.service'; -import { OldSlideInService } from 'app/services/old-slide-in.service'; describe('CloudSyncWhatAndWhenComponent', () => { let spectator: Spectator; @@ -47,7 +47,9 @@ describe('CloudSyncWhatAndWhenComponent', () => { mockCall('cloudsync.credentials.query', [googlePhotosCreds]), mockCall('cloudsync.providers', [googlePhotosProvider]), ]), - mockProvider(OldSlideInService), + mockProvider(SlideIn, { + components$: of([]), + }), mockProvider(DatasetService), mockProvider(MatDialog, { open: jest.fn(() => ({ diff --git a/src/app/pages/data-protection/replication/replication-form/sections/transport-section/transport-section.component.spec.ts b/src/app/pages/data-protection/replication/replication-form/sections/transport-section/transport-section.component.spec.ts index 00b6f17c887..bea45651252 100644 --- a/src/app/pages/data-protection/replication/replication-form/sections/transport-section/transport-section.component.spec.ts +++ b/src/app/pages/data-protection/replication/replication-form/sections/transport-section/transport-section.component.spec.ts @@ -15,8 +15,6 @@ import { } from 'app/modules/forms/custom-selects/ssh-credentials-select/ssh-credentials-select.component'; import { IxCheckboxHarness } from 'app/modules/forms/ix-forms/components/ix-checkbox/ix-checkbox.harness'; import { IxFieldsetHarness } from 'app/modules/forms/ix-forms/components/ix-fieldset/ix-fieldset.harness'; -import { OldSlideInRef } from 'app/modules/slide-ins/old-slide-in-ref'; -import { SLIDE_IN_DATA } from 'app/modules/slide-ins/slide-in.token'; import { TransportSectionComponent, } from 'app/pages/data-protection/replication/replication-form/sections/transport-section/transport-section.component'; @@ -43,8 +41,6 @@ describe('TransportSectionComponent', () => { afterClosed: () => of(true), })), }), - mockProvider(OldSlideInRef), - { provide: SLIDE_IN_DATA, useValue: undefined }, ], }); diff --git a/src/app/pages/data-protection/replication/replication-list/replication-list.component.spec.ts b/src/app/pages/data-protection/replication/replication-list/replication-list.component.spec.ts index 736d2a5abfc..ccb9342f06b 100644 --- a/src/app/pages/data-protection/replication/replication-list/replication-list.component.spec.ts +++ b/src/app/pages/data-protection/replication/replication-list/replication-list.component.spec.ts @@ -32,7 +32,6 @@ import { import { IxTableDetailsRowDirective } from 'app/modules/ix-table/directives/ix-table-details-row.directive'; import { selectJobs } from 'app/modules/jobs/store/job.selectors'; import { PageHeaderComponent } from 'app/modules/page-header/page-title-header/page-header.component'; -import { OldSlideInRef } from 'app/modules/slide-ins/old-slide-in-ref'; import { SlideIn } from 'app/modules/slide-ins/slide-in'; import { ApiService } from 'app/modules/websocket/api.service'; import { ReplicationFormComponent } from 'app/pages/data-protection/replication/replication-form/replication-form.component'; @@ -155,7 +154,6 @@ describe('ReplicationListComponent', () => { mockProvider(DialogService, { confirm: jest.fn(() => of(true)), }), - mockProvider(OldSlideInRef), mockProvider(MatDialog, { open: jest.fn(() => ({ afterClosed: () => of(true), diff --git a/src/app/pages/data-protection/replication/replication-task-card/replication-task-card.component.spec.ts b/src/app/pages/data-protection/replication/replication-task-card/replication-task-card.component.spec.ts index da8d36f30aa..b02eb92eaad 100644 --- a/src/app/pages/data-protection/replication/replication-task-card/replication-task-card.component.spec.ts +++ b/src/app/pages/data-protection/replication/replication-task-card/replication-task-card.component.spec.ts @@ -13,7 +13,6 @@ import { ReplicationTask } from 'app/interfaces/replication-task.interface'; import { DialogService } from 'app/modules/dialog/dialog.service'; import { IxIconHarness } from 'app/modules/ix-icon/ix-icon.harness'; import { IxTableHarness } from 'app/modules/ix-table/components/ix-table/ix-table.harness'; -import { OldSlideInRef } from 'app/modules/slide-ins/old-slide-in-ref'; import { SlideIn } from 'app/modules/slide-ins/slide-in'; import { ApiService } from 'app/modules/websocket/api.service'; import { ReplicationFormComponent } from 'app/pages/data-protection/replication/replication-form/replication-form.component'; @@ -92,7 +91,6 @@ describe('ReplicationTaskCardComponent', () => { mockProvider(SlideIn, { open: jest.fn(() => of()), }), - mockProvider(OldSlideInRef), mockProvider(MatDialog, { open: jest.fn(() => ({ afterClosed: () => of(true), diff --git a/src/app/pages/data-protection/rsync-task/rsync-task-card/rsync-task-card.component.spec.ts b/src/app/pages/data-protection/rsync-task/rsync-task-card/rsync-task-card.component.spec.ts index 80b347c593d..265a289de82 100644 --- a/src/app/pages/data-protection/rsync-task/rsync-task-card/rsync-task-card.component.spec.ts +++ b/src/app/pages/data-protection/rsync-task/rsync-task-card/rsync-task-card.component.spec.ts @@ -16,7 +16,6 @@ import { IxIconHarness } from 'app/modules/ix-icon/ix-icon.harness'; import { IxTableHarness } from 'app/modules/ix-table/components/ix-table/ix-table.harness'; import { selectJobs } from 'app/modules/jobs/store/job.selectors'; import { LocaleService } from 'app/modules/language/locale.service'; -import { OldSlideInRef } from 'app/modules/slide-ins/old-slide-in-ref'; import { SlideIn } from 'app/modules/slide-ins/slide-in'; import { ApiService } from 'app/modules/websocket/api.service'; import { RsyncTaskCardComponent } from 'app/pages/data-protection/rsync-task/rsync-task-card/rsync-task-card.component'; @@ -101,7 +100,6 @@ describe('RsyncTaskCardComponent', () => { mockProvider(SlideIn, { open: jest.fn(() => of()), }), - mockProvider(OldSlideInRef), mockProvider(MatDialog, { open: jest.fn(() => ({ afterClosed: () => of(true), diff --git a/src/app/pages/data-protection/scrub-task/resilver-config/resilver-config.component.spec.ts b/src/app/pages/data-protection/scrub-task/resilver-config/resilver-config.component.spec.ts index 1eb12f5a691..ef4e5686d61 100644 --- a/src/app/pages/data-protection/scrub-task/resilver-config/resilver-config.component.spec.ts +++ b/src/app/pages/data-protection/scrub-task/resilver-config/resilver-config.component.spec.ts @@ -13,7 +13,6 @@ import { IxFormHarness } from 'app/modules/forms/ix-forms/testing/ix-form.harnes import { LanguageService } from 'app/modules/language/language.service'; import { LocaleService } from 'app/modules/language/locale.service'; import { ApiService } from 'app/modules/websocket/api.service'; -import { OldSlideInService } from 'app/services/old-slide-in.service'; import { ResilverConfigComponent } from './resilver-config.component'; describe('ResilverConfigComponent', () => { @@ -36,7 +35,6 @@ describe('ResilverConfigComponent', () => { } as ResilverConfig), mockCall('pool.resilver.update'), ]), - mockProvider(OldSlideInService), mockProvider(FormErrorHandlerService), mockProvider(DialogService), mockProvider(Router), diff --git a/src/app/pages/network/components/interface-form/interface-form.component.spec.ts b/src/app/pages/network/components/interface-form/interface-form.component.spec.ts index 0f32ec24ca5..ec768bd2332 100644 --- a/src/app/pages/network/components/interface-form/interface-form.component.spec.ts +++ b/src/app/pages/network/components/interface-form/interface-form.component.spec.ts @@ -26,6 +26,7 @@ import { import { IxListHarness } from 'app/modules/forms/ix-forms/components/ix-list/ix-list.harness'; import { IxSelectHarness } from 'app/modules/forms/ix-forms/components/ix-select/ix-select.harness'; import { IxFormHarness } from 'app/modules/forms/ix-forms/testing/ix-form.harness'; +import { SlideIn } from 'app/modules/slide-ins/slide-in'; import { SlideInRef } from 'app/modules/slide-ins/slide-in-ref'; import { ApiService } from 'app/modules/websocket/api.service'; import { @@ -33,7 +34,6 @@ import { } from 'app/pages/network/components/default-gateway-dialog/default-gateway-dialog.component'; import { InterfaceFormComponent } from 'app/pages/network/components/interface-form/interface-form.component'; import { NetworkService } from 'app/services/network.service'; -import { OldSlideInService } from 'app/services/old-slide-in.service'; import { SystemGeneralService } from 'app/services/system-general.service'; import { haInfoReducer } from 'app/store/ha-info/ha-info.reducer'; import { haInfoStateKey } from 'app/store/ha-info/ha-info.selectors'; @@ -133,7 +133,9 @@ describe('InterfaceFormComponent', () => { ], }), mockProvider(DialogService), - mockProvider(OldSlideInService), + mockProvider(SlideIn, { + components$: of([]), + }), mockProvider(SystemGeneralService, { getProductType: () => ProductType.ScaleEnterprise, }), diff --git a/src/app/pages/sharing/iscsi/initiator/initiator-list/initiator-list.component.spec.ts b/src/app/pages/sharing/iscsi/initiator/initiator-list/initiator-list.component.spec.ts index b2aba435bf8..97ae13b51b0 100644 --- a/src/app/pages/sharing/iscsi/initiator/initiator-list/initiator-list.component.spec.ts +++ b/src/app/pages/sharing/iscsi/initiator/initiator-list/initiator-list.component.spec.ts @@ -18,10 +18,8 @@ import { IxTableColumnsSelectorComponent, } from 'app/modules/ix-table/components/ix-table-columns-selector/ix-table-columns-selector.component'; import { FakeProgressBarComponent } from 'app/modules/loader/components/fake-progress-bar/fake-progress-bar.component'; -import { OldSlideInRef } from 'app/modules/slide-ins/old-slide-in-ref'; import { ApiService } from 'app/modules/websocket/api.service'; import { InitiatorListComponent } from 'app/pages/sharing/iscsi/initiator/initiator-list/initiator-list.component'; -import { OldSlideInService } from 'app/services/old-slide-in.service'; const initiators: IscsiInitiatorGroup[] = [ { @@ -49,13 +47,9 @@ describe('InitiatorListComponent', () => { mockCall('iscsi.initiator.query', initiators), mockCall('iscsi.initiator.delete'), ]), - mockProvider(OldSlideInRef), mockProvider(DialogService, { confirm: jest.fn(() => of(true)), }), - mockProvider(OldSlideInService, { - open: jest.fn(() => ({ slideInClosed$: of(true) })), - }), mockProvider(MatDialog, { open: jest.fn(), }), diff --git a/src/app/services/old-slide-in.service.spec.ts b/src/app/services/old-slide-in.service.spec.ts deleted file mode 100644 index 76bd8ed558e..00000000000 --- a/src/app/services/old-slide-in.service.spec.ts +++ /dev/null @@ -1,130 +0,0 @@ -import { A11yModule } from '@angular/cdk/a11y'; -import { Location } from '@angular/common'; -import { - ChangeDetectionStrategy, Component, ElementRef, Inject, -} from '@angular/core'; -import { fakeAsync, tick } from '@angular/core/testing'; -import { Router } from '@angular/router'; -import { - createServiceFactory, mockProvider, SpectatorService, createComponentFactory, Spectator, -} from '@ngneat/spectator/jest'; -import { OldSlideInRef } from 'app/modules/slide-ins/old-slide-in-ref'; -import { OldSlideInComponent } from 'app/modules/slide-ins/old-slide-in.component'; -import { SLIDE_IN_DATA } from 'app/modules/slide-ins/slide-in.token'; -import { DiskFormComponent } from 'app/pages/storage/modules/disks/components/disk-form/disk-form.component'; -import { OldSlideInService } from 'app/services/old-slide-in.service'; - -/** Simple component for testing IxSlideInComponent */ -@Component({ - selector: 'ix-test', - template: '

{{text}}

', - standalone: true, - changeDetection: ChangeDetectionStrategy.OnPush, -}) -class TestComponent { - text: string; - constructor( - public slideInRef: OldSlideInRef, - @Inject(SLIDE_IN_DATA) private value: string, - ) { - this.text = value; - } - - close(): void { - this.slideInRef.close(); - } -} - -describe('IxSlideInService', () => { - let spectator: SpectatorService; - let service: OldSlideInService; - let spectatorComponent: Spectator; - - const createService = createServiceFactory({ - service: OldSlideInService, - providers: [ - Location, - Router, - ], - }); - const createComponent = createComponentFactory({ - component: OldSlideInComponent, - providers: [ - mockProvider(ElementRef), - OldSlideInService, - ], - imports: [ - A11yModule, - ], - }); - - beforeEach(() => { - spectator = createService(); - service = spectator.service; - spectatorComponent = createComponent({ - props: { id: 'ix-slide-in-form' }, - }); - }); - - describe('slideInService', () => { - it('the \'open\' method should return instance of IxSlideInRef', () => { - jest.spyOn(service.slideInComponent, 'openSlideIn'); - - const instanceRef = service.open(TestComponent, { wide: true, data: 'Component created dynamically' }); - - expect(service.slideInComponent.openSlideIn).toHaveBeenCalledWith(TestComponent, { wide: true, data: 'Component created dynamically' }); - expect(instanceRef).toBeInstanceOf(OldSlideInRef); - }); - - it('should be call \'closeAll\' method after route navigation', async () => { - jest.spyOn(service, 'closeAll'); - service.open(TestComponent); - - await spectator.inject(Router).navigate(['/']); - - expect(service.closeAll).toHaveBeenCalled(); - }); - - it('should be call \'closeAll\' method after changing URL using location service', fakeAsync(() => { - const location = spectator.inject(Location); - location.go('/'); - jest.spyOn(service, 'closeAll'); - service.open(TestComponent, { wide: true, data: '' }); - - location.back(); - tick(200); - expect(service.closeAll).toHaveBeenCalled(); - })); - }); - - describe('IxSlideInRef', () => { - it('should be passed the correct data to the dynamically created component after call \'open\'', () => { - const slideInRef = service.open(TestComponent, { wide: true, data: 'Component created dynamically' }); - // check injected (SLIDE_IN_DATA) - const componentInstance = slideInRef.componentInstance; - - expect(componentInstance.text).toBe('Component created dynamically'); - }); - - it('should be injected IxSlideInRef to the dynamically created component after calling \'open\',', () => { - const slideInRef = service.open(TestComponent, { wide: true, data: 'Component created dynamically' }); - // check injected SlideInRef - - expect(slideInRef.componentInstance.slideInRef).toBeInstanceOf(OldSlideInRef); - }); - - it('after close slide observable \'slideInClosed$\' should emit response', () => { - jest.spyOn(spectatorComponent.component, 'closeSlideIn'); - - let response; - const data = { value: true }; - const slideInRef = service.open(TestComponent); - - slideInRef.slideInClosed$.subscribe((val) => response = val); - slideInRef.close(data); - - expect(response).toBe(data); - expect(spectatorComponent.component.closeSlideIn).toHaveBeenCalled(); - }); - }); -}); diff --git a/src/app/services/old-slide-in.service.ts b/src/app/services/old-slide-in.service.ts deleted file mode 100644 index 3eca31c93bf..00000000000 --- a/src/app/services/old-slide-in.service.ts +++ /dev/null @@ -1,113 +0,0 @@ -import { Location } from '@angular/common'; -import { Injectable, Injector, Type } from '@angular/core'; -import { NavigationEnd, Router } from '@angular/router'; -import { UntilDestroy, untilDestroyed } from '@ngneat/until-destroy'; -import { - merge, Observable, Subject, timer, -} from 'rxjs'; -import { filter, take } from 'rxjs/operators'; -import { OldSlideInRef } from 'app/modules/slide-ins/old-slide-in-ref'; -import { OldSlideInComponent } from 'app/modules/slide-ins/old-slide-in.component'; -import { FocusService } from 'app/services/focus.service'; - -/** - * @deprecated Use SlideInService instead. - */ -@UntilDestroy() -@Injectable({ - providedIn: 'root', -}) -export class OldSlideInService { - slideInComponent: OldSlideInComponent; - slideInRefMap = new Map>(); - /** - * Emits when any slide in has been closed. - * Prefer to use slideInClosed$ in slideInRef to tell when an individual slide in is closed. - */ - readonly onClose$ = new Subject(); - - constructor( - private location: Location, - private router: Router, - private focusService: FocusService, - ) { - this.closeOnNavigation(); - } - - get isSlideInOpen(): boolean { - return this.slideInComponent?.isSlideInOpen; - } - - // TODO: Rework via cdk overlays or something else that would make it easier to use in tests. - setSlideComponent(slideComponent: OldSlideInComponent): void { - this.slideInComponent = slideComponent; - } - - open( - component: Type, - params?: { wide?: boolean; data?: D; injector?: Injector }, - ): OldSlideInRef { - this.slideInRefMap.forEach((ref) => ref.close()); - - const slideInRef = this.slideInComponent.openSlideIn(component, params); - this.slideInRefMap.set(slideInRef.id, slideInRef); - slideInRef.slideInClosed$.pipe(untilDestroyed(this)).subscribe((response?: D) => { - this.deleteRef(slideInRef.id); - if (response === undefined) { - response = null; - } - this.onClose$.next(); - }); - - this.focusService.captureCurrentFocus(); - this.focusOnTheCloseButton(); - - return slideInRef; - } - - closeLast(): void { - if (!this.isSlideInOpen) { - return; - } - - const lastSlideInRef = Array.from(this.slideInRefMap.values()).pop(); - lastSlideInRef?.close(); - } - - closeAll(): void { - if (!this.isSlideInOpen) { - return; - } - - this.slideInRefMap.forEach((ref) => ref.close()); - } - - deleteRef(id: string): void { - this.slideInRefMap.delete(id); - - if (this.isSlideInOpen) { - this.slideInComponent.closeSlideIn(); - } - - this.focusService.restoreFocus(); - } - - private closeOnNavigation(): void { - merge( - new Observable((observer) => { - this.location.subscribe((event) => { - observer.next(event); - }); - }), - this.router.events.pipe(filter((event) => event instanceof NavigationEnd)), - ) - .pipe(untilDestroyed(this)) - .subscribe(() => { - this.closeAll(); - }); - } - - private focusOnTheCloseButton(): void { - timer(100).pipe(take(1)).subscribe(() => this.focusService.focusElementById('ix-close-icon')); - } -} diff --git a/src/setup-jest.ts b/src/setup-jest.ts index 4e03d60bad8..4ff7b9487b8 100644 --- a/src/setup-jest.ts +++ b/src/setup-jest.ts @@ -84,9 +84,6 @@ import { import { ModalHeaderComponent, } from 'app/modules/slide-ins/components/modal-header/modal-header.component'; -import { - OldModalHeaderComponent, -} from 'app/modules/slide-ins/components/old-modal-header/old-modal-header.component'; import { TestOverrideDirective } from 'app/modules/test-id/test-override/test-override.directive'; import { TestDirective } from 'app/modules/test-id/test.directive'; import { ApiService } from 'app/modules/websocket/api.service'; @@ -130,7 +127,6 @@ defineGlobalsInjections({ IxRadioGroupComponent, IxSelectComponent, IxFieldsetComponent, - OldModalHeaderComponent, ModalHeaderComponent, IxFormSectionComponent, RegisteredControlDirective, diff --git a/tsconfig.strictNullChecks.json b/tsconfig.strictNullChecks.json index 26355112f03..d708a8359c2 100644 --- a/tsconfig.strictNullChecks.json +++ b/tsconfig.strictNullChecks.json @@ -437,7 +437,6 @@ "./src/app/modules/forms/ix-forms/components/ix-select/ix-select.harness.ts", "./src/app/modules/forms/ix-forms/components/ix-select/option.harness.ts", "./src/app/modules/forms/ix-forms/components/ix-select/select.harness.ts", - "./src/app/modules/slide-ins/slide-in.token.ts", "./src/app/modules/forms/ix-forms/components/ix-slide-toggle/ix-slide-toggle.component.ts", "./src/app/modules/forms/ix-forms/components/ix-slide-toggle/ix-slide-toggle.harness.ts", "./src/app/modules/forms/ix-forms/components/ix-star-rating/ix-star-rating.component.ts",