@@ -64,6 +64,8 @@ export interface ChromeNavControls {
64
64
registerCenter ( navControl : ChromeNavControl ) : void ;
65
65
/** Register a nav control to be presented on the left-bottom side of the left navigation. */
66
66
registerLeftBottom ( navControl : ChromeNavControl ) : void ;
67
+ /** Register a nav control to be presented on the right side of the primary chrome header. */
68
+ registerPrimaryHeaderRight ( navControl : ChromeNavControl ) : void ;
67
69
/** @internal */
68
70
getLeft$ ( ) : Observable < ChromeNavControl [ ] > ;
69
71
/** @internal */
@@ -72,6 +74,8 @@ export interface ChromeNavControls {
72
74
getCenter$ ( ) : Observable < ChromeNavControl [ ] > ;
73
75
/** @internal */
74
76
getLeftBottom$ ( ) : Observable < ChromeNavControl [ ] > ;
77
+ /** @internal */
78
+ getPrimaryHeaderRight$ ( ) : Observable < ChromeNavControl [ ] > ;
75
79
}
76
80
77
81
/** @internal */
@@ -87,6 +91,9 @@ export class NavControlsService {
87
91
new Set ( )
88
92
) ;
89
93
const navControlsLeftBottom$ = new BehaviorSubject < ReadonlySet < ChromeNavControl > > ( new Set ( ) ) ;
94
+ const navControlsPrimaryHeaderRight$ = new BehaviorSubject < ReadonlySet < ChromeNavControl > > (
95
+ new Set ( )
96
+ ) ;
90
97
91
98
return {
92
99
// In the future, registration should be moved to the setup phase. This
@@ -115,6 +122,11 @@ export class NavControlsService {
115
122
new Set ( [ ...navControlsLeftBottom$ . value . values ( ) , navControl ] )
116
123
) ,
117
124
125
+ registerPrimaryHeaderRight : ( navControl : ChromeNavControl ) =>
126
+ navControlsPrimaryHeaderRight$ . next (
127
+ new Set ( [ ...navControlsPrimaryHeaderRight$ . value . values ( ) , navControl ] )
128
+ ) ,
129
+
118
130
getLeft$ : ( ) =>
119
131
navControlsLeft$ . pipe (
120
132
map ( ( controls ) => sortBy ( [ ...controls . values ( ) ] , 'order' ) ) ,
@@ -145,6 +157,11 @@ export class NavControlsService {
145
157
map ( ( controls ) => sortBy ( [ ...controls . values ( ) ] , 'order' ) ) ,
146
158
takeUntil ( this . stop$ )
147
159
) ,
160
+ getPrimaryHeaderRight$ : ( ) =>
161
+ navControlsPrimaryHeaderRight$ . pipe (
162
+ map ( ( controls ) => sortBy ( [ ...controls . values ( ) ] , 'order' ) ) ,
163
+ takeUntil ( this . stop$ )
164
+ ) ,
148
165
} ;
149
166
}
150
167
0 commit comments