@@ -139,14 +139,14 @@ export default class IgcSplitterBarComponent extends EventEmitterMixin<
139139 } ) ;
140140
141141 addKeybindings ( this )
142- . set ( arrowUp , this . resizePanes )
143- . set ( arrowDown , this . resizePanes )
144- . set ( arrowLeft , this . resizePanes )
145- . set ( arrowRight , this . resizePanes )
146- . set ( [ ctrlKey , arrowUp ] , ( ) => this . _handleExpanderClick ( true ) )
147- . set ( [ ctrlKey , arrowDown ] , ( ) => this . _handleExpanderClick ( false ) )
148- . set ( [ ctrlKey , arrowLeft ] , ( ) => this . _handleExpanderClick ( true ) )
149- . set ( [ ctrlKey , arrowRight ] , ( ) => this . _handleExpanderClick ( false ) ) ;
142+ . set ( arrowUp , this . _handleResizePanes )
143+ . set ( arrowDown , this . _handleResizePanes )
144+ . set ( arrowLeft , this . _handleResizePanes )
145+ . set ( arrowRight , this . _handleResizePanes )
146+ . set ( [ ctrlKey , arrowUp ] , this . _handleExpandPanes )
147+ . set ( [ ctrlKey , arrowDown ] , this . _handleExpandPanes )
148+ . set ( [ ctrlKey , arrowLeft ] , this . _handleExpandPanes )
149+ . set ( [ ctrlKey , arrowRight ] , this . _handleExpandPanes ) ;
150150 //addThemingController(this, all);
151151 }
152152
@@ -157,7 +157,7 @@ export default class IgcSplitterBarComponent extends EventEmitterMixin<
157157 } ) ;
158158 }
159159
160- private resizePanes ( event : KeyboardEvent ) {
160+ private _handleResizePanes ( event : KeyboardEvent ) {
161161 if ( this . _resizeDisallowed ) {
162162 return false ;
163163 }
@@ -185,6 +185,29 @@ export default class IgcSplitterBarComponent extends EventEmitterMixin<
185185 return true ;
186186 }
187187
188+ private _handleExpandPanes ( event : KeyboardEvent ) {
189+ if ( this . _splitter ?. nonCollapsible ) {
190+ return ;
191+ }
192+ const { prevButtonHidden, nextButtonHidden } =
193+ this . _getExpanderHiddenState ( ) ;
194+
195+ if (
196+ ( ( event . key === arrowUp && this . _orientation === 'vertical' ) ||
197+ ( event . key === arrowLeft && this . _orientation === 'horizontal' ) ) &&
198+ ! prevButtonHidden
199+ ) {
200+ this . _handleExpanderClick ( true ) ;
201+ }
202+ if (
203+ ( ( event . key === arrowDown && this . _orientation === 'vertical' ) ||
204+ ( event . key === arrowRight && this . _orientation === 'horizontal' ) ) &&
205+ ! nextButtonHidden
206+ ) {
207+ this . _handleExpanderClick ( false ) ;
208+ }
209+ }
210+
188211 private _createSiblingPaneMutationController ( pane : IgcSplitterPaneComponent ) {
189212 createMutationController ( pane , {
190213 callback : ( ) => {
@@ -215,6 +238,7 @@ export default class IgcSplitterBarComponent extends EventEmitterMixin<
215238
216239 const prevSibling = this . _siblingPanes [ 0 ] ! ;
217240 const nextSibling = this . _siblingPanes [ 1 ] ! ;
241+
218242 let target : IgcSplitterPaneComponent ;
219243 if ( start ) {
220244 // if prev is clicked when next pane is hidden, show next pane, else hide prev pane.
@@ -224,15 +248,23 @@ export default class IgcSplitterBarComponent extends EventEmitterMixin<
224248 target = prevSibling . collapsed ? prevSibling : nextSibling ;
225249 }
226250 target . toggle ( ) ;
251+ target . emitEvent ( 'igcToggle' , { detail : target } ) ;
252+ }
253+
254+ private _getExpanderHiddenState ( ) {
255+ const [ prev , next ] = this . _siblingPanes ;
256+ return {
257+ prevButtonHidden : ! ! ( prev ?. collapsed && ! next ?. collapsed ) ,
258+ nextButtonHidden : ! ! ( next ?. collapsed && ! prev ?. collapsed ) ,
259+ } ;
227260 }
228261
229262 private _renderBarControls ( ) {
230263 if ( this . _splitter ?. nonCollapsible ) {
231264 return nothing ;
232265 }
233- const siblings = this . _siblingPanes ;
234- const prevButtonHidden = siblings [ 0 ] ?. collapsed && ! siblings [ 1 ] ?. collapsed ;
235- const nextButtonHidden = siblings [ 1 ] ?. collapsed && ! siblings [ 0 ] ?. collapsed ;
266+ const { prevButtonHidden, nextButtonHidden } =
267+ this . _getExpanderHiddenState ( ) ;
236268 return html `
237269 < div
238270 part ="expander-start "
0 commit comments