@@ -52,6 +52,11 @@ import { Branding } from '../';
5252import { getLogos } from '../../common' ;
5353import type { Logos } from '../../common/types' ;
5454import { OverlayStart } from '../overlays' ;
55+ import {
56+ ChromeNavGroupService ,
57+ ChromeNavGroupServiceSetupContract ,
58+ ChromeNavGroupServiceStartContract ,
59+ } from './nav_group' ;
5560
5661export { ChromeNavControls , ChromeRecentlyAccessed , ChromeDocTitle } ;
5762
@@ -90,6 +95,10 @@ interface ConstructorParams {
9095 browserSupportsCsp : boolean ;
9196}
9297
98+ export interface SetupDeps {
99+ uiSettings : IUiSettingsClient ;
100+ }
101+
93102export interface StartDeps {
94103 application : InternalApplicationStart ;
95104 docLinks : DocLinksStart ;
@@ -111,6 +120,7 @@ export class ChromeService {
111120 private readonly navLinks = new NavLinksService ( ) ;
112121 private readonly recentlyAccessed = new RecentlyAccessedService ( ) ;
113122 private readonly docTitle = new DocTitleService ( ) ;
123+ private readonly navGroup = new ChromeNavGroupService ( ) ;
114124 private collapsibleNavHeaderRender ?: CollapsibleNavHeaderRender ;
115125
116126 constructor ( private readonly params : ConstructorParams ) { }
@@ -147,7 +157,8 @@ export class ChromeService {
147157 ) ;
148158 }
149159
150- public setup ( ) {
160+ public setup ( { uiSettings } : SetupDeps ) : ChromeSetup {
161+ const navGroup = this . navGroup . setup ( { uiSettings } ) ;
151162 return {
152163 registerCollapsibleNavHeader : ( render : CollapsibleNavHeaderRender ) => {
153164 if ( this . collapsibleNavHeaderRender ) {
@@ -158,6 +169,7 @@ export class ChromeService {
158169 }
159170 this . collapsibleNavHeaderRender = render ;
160171 } ,
172+ navGroup,
161173 } ;
162174 }
163175
@@ -186,6 +198,7 @@ export class ChromeService {
186198 const navLinks = this . navLinks . start ( { application, http } ) ;
187199 const recentlyAccessed = await this . recentlyAccessed . start ( { http } ) ;
188200 const docTitle = this . docTitle . start ( { document : window . document } ) ;
201+ const navGroup = await this . navGroup . start ( { navLinks } ) ;
189202
190203 // erase chrome fields from a previous app while switching to a next app
191204 application . currentAppId$ . subscribe ( ( ) => {
@@ -254,6 +267,7 @@ export class ChromeService {
254267 recentlyAccessed,
255268 docTitle,
256269 logos,
270+ navGroup,
257271
258272 getHeaderComponent : ( ) => (
259273 < Header
@@ -344,6 +358,7 @@ export class ChromeService {
344358
345359 public stop ( ) {
346360 this . navLinks . stop ( ) ;
361+ this . navGroup . stop ( ) ;
347362 this . stop$ . next ( ) ;
348363 }
349364}
@@ -360,6 +375,7 @@ export class ChromeService {
360375 */
361376export interface ChromeSetup {
362377 registerCollapsibleNavHeader : ( render : CollapsibleNavHeaderRender ) => void ;
378+ navGroup : ChromeNavGroupServiceSetupContract ;
363379}
364380
365381/**
@@ -397,6 +413,8 @@ export interface ChromeStart {
397413 recentlyAccessed : ChromeRecentlyAccessed ;
398414 /** {@inheritdoc ChromeDocTitle } */
399415 docTitle : ChromeDocTitle ;
416+ /** {@inheritdoc NavGroupService } */
417+ navGroup : ChromeNavGroupServiceStartContract ;
400418 /** {@inheritdoc Logos } */
401419 readonly logos : Logos ;
402420
0 commit comments