diff --git a/package.json b/package.json index 954a3ac55..b586ce670 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@hmcts/media-viewer", - "version": "4.1.8", + "version": "4.1.8-exui-2488-1", "scripts": { "ng": "ng", "start": "ng serve", diff --git a/projects/media-viewer/package.json b/projects/media-viewer/package.json index ac88d7e91..0c25c4dbd 100644 --- a/projects/media-viewer/package.json +++ b/projects/media-viewer/package.json @@ -1,6 +1,6 @@ { "name": "@hmcts/media-viewer", - "version": "4.1.8", + "version": "4.1.8-exui-2488-1", "description": "Media Viewer", "keywords": [ "Angular", diff --git a/projects/media-viewer/src/lib/viewers/pdf-viewer/side-bar/side-bar.component.html b/projects/media-viewer/src/lib/viewers/pdf-viewer/side-bar/side-bar.component.html index 6123f3f22..d8bb727ac 100644 --- a/projects/media-viewer/src/lib/viewers/pdf-viewer/side-bar/side-bar.component.html +++ b/projects/media-viewer/src/lib/viewers/pdf-viewer/side-bar/side-bar.component.html @@ -37,7 +37,16 @@ -
+
{ let component: SideBarComponent; @@ -123,4 +124,32 @@ describe('SideBarComponent', () => { component.hasTreeChanged(false); expect(component.treeChanged).toEqual(false) }); -}); + + describe('sidebar focus functionality', () => { + let toolbarEvents: ToolbarEventService; + let sidebarElement: HTMLElement; + + beforeEach(() => { + toolbarEvents = TestBed.inject(ToolbarEventService); + sidebarElement = fixture.nativeElement.querySelector('#sidebarContent'); + }); + + it('should set focus to sidebar when sidebar is opened', fakeAsync(() => { + spyOn(sidebarElement, 'focus'); + + toolbarEvents.sidebarOpen.next(true); + tick(0); + + expect(sidebarElement.focus).toHaveBeenCalled(); + })); + + it('should not set focus to sidebar when sidebar is closed', fakeAsync(() => { + spyOn(sidebarElement, 'focus'); + + toolbarEvents.sidebarOpen.next(false); + tick(0); + + expect(sidebarElement.focus).not.toHaveBeenCalled(); + })); + }); +}); \ No newline at end of file diff --git a/projects/media-viewer/src/lib/viewers/pdf-viewer/side-bar/side-bar.component.ts b/projects/media-viewer/src/lib/viewers/pdf-viewer/side-bar/side-bar.component.ts index 5da7def5a..643665a2f 100644 --- a/projects/media-viewer/src/lib/viewers/pdf-viewer/side-bar/side-bar.component.ts +++ b/projects/media-viewer/src/lib/viewers/pdf-viewer/side-bar/side-bar.component.ts @@ -5,7 +5,7 @@ import { select, Store } from '@ngrx/store'; import * as bookmarksSelectors from '../../../store/selectors/bookmark.selectors'; import { BookmarkNode } from '../../../store/models/bookmarks.interface'; import { CreateBookmark, LoadBookmarks } from '../../../store/actions/bookmark.actions'; -import { take } from 'rxjs/operators'; +import { filter, delay } from 'rxjs/operators'; import { v4 as uuid } from 'uuid'; import { ViewerEventService } from '../../viewer-event.service'; import { BookmarksState } from '../../../store/reducers/bookmarks.reducer'; @@ -51,6 +51,14 @@ export class SideBarComponent implements OnInit, OnChanges, OnDestroy { }), this.toolbarEvents.sidebarOpen.subscribe(toggle => { this.sidebarOpen = toggle; + }), + this.toolbarEvents.sidebarOpen.pipe( + filter(toggle => toggle === true), + delay(0) + ).subscribe(() => { + if (this.sidebarDiv?.nativeElement) { + this.sidebarDiv.nativeElement.focus(); + } }) ); this.subscriptions.push(this.store.pipe(select(bookmarksSelectors.getScrollTop)).subscribe(scrollTopValue => {