@@ -47,6 +47,70 @@ export class ArrowNavigation {
47
47
* Adds all arrow key navigation shortcuts to the registry.
48
48
*/
49
49
install ( ) {
50
+ const navigateIn = (
51
+ workspace : WorkspaceSvg ,
52
+ e : Event ,
53
+ shortcut : ShortcutRegistry . KeyboardShortcut ,
54
+ ) : boolean => {
55
+ const toolbox = workspace . getToolbox ( ) as Toolbox ;
56
+ let isHandled = false ;
57
+ switch ( this . navigation . getState ( workspace ) ) {
58
+ case Constants . STATE . WORKSPACE :
59
+ isHandled = this . fieldShortcutHandler ( workspace , shortcut ) ;
60
+ if ( ! isHandled && workspace ) {
61
+ if (
62
+ ! this . navigation . defaultWorkspaceCursorPositionIfNeeded ( workspace )
63
+ ) {
64
+ workspace . getCursor ( ) ?. in ( ) ;
65
+ }
66
+ isHandled = true ;
67
+ }
68
+ return isHandled ;
69
+ case Constants . STATE . TOOLBOX :
70
+ isHandled =
71
+ toolbox && typeof toolbox . onShortcut === 'function'
72
+ ? toolbox . onShortcut ( shortcut )
73
+ : false ;
74
+ if ( ! isHandled ) {
75
+ this . navigation . focusFlyout ( workspace ) ;
76
+ }
77
+ return true ;
78
+ default :
79
+ return false ;
80
+ }
81
+ } ;
82
+
83
+ const navigateOut = (
84
+ workspace : WorkspaceSvg ,
85
+ e : Event ,
86
+ shortcut : ShortcutRegistry . KeyboardShortcut ,
87
+ ) : boolean => {
88
+ const toolbox = workspace . getToolbox ( ) as Toolbox ;
89
+ let isHandled = false ;
90
+ switch ( this . navigation . getState ( workspace ) ) {
91
+ case Constants . STATE . WORKSPACE :
92
+ isHandled = this . fieldShortcutHandler ( workspace , shortcut ) ;
93
+ if ( ! isHandled && workspace ) {
94
+ if (
95
+ ! this . navigation . defaultWorkspaceCursorPositionIfNeeded ( workspace )
96
+ ) {
97
+ workspace . getCursor ( ) ?. out ( ) ;
98
+ }
99
+ isHandled = true ;
100
+ }
101
+ return isHandled ;
102
+ case Constants . STATE . FLYOUT :
103
+ this . navigation . focusToolbox ( workspace ) ;
104
+ return true ;
105
+ case Constants . STATE . TOOLBOX :
106
+ return toolbox && typeof toolbox . onShortcut === 'function'
107
+ ? toolbox . onShortcut ( shortcut )
108
+ : false ;
109
+ default :
110
+ return false ;
111
+ }
112
+ } ;
113
+
50
114
const shortcuts : {
51
115
[ name : string ] : ShortcutRegistry . KeyboardShortcut ;
52
116
} = {
@@ -56,34 +120,9 @@ export class ArrowNavigation {
56
120
preconditionFn : ( workspace ) =>
57
121
this . navigation . canCurrentlyNavigate ( workspace ) ,
58
122
callback : ( workspace , e , shortcut ) => {
59
- const toolbox = workspace . getToolbox ( ) as Toolbox ;
60
- let isHandled = false ;
61
- switch ( this . navigation . getState ( workspace ) ) {
62
- case Constants . STATE . WORKSPACE :
63
- isHandled = this . fieldShortcutHandler ( workspace , shortcut ) ;
64
- if ( ! isHandled && workspace ) {
65
- if (
66
- ! this . navigation . defaultWorkspaceCursorPositionIfNeeded (
67
- workspace ,
68
- )
69
- ) {
70
- workspace . getCursor ( ) ?. in ( ) ;
71
- }
72
- isHandled = true ;
73
- }
74
- return isHandled ;
75
- case Constants . STATE . TOOLBOX :
76
- isHandled =
77
- toolbox && typeof toolbox . onShortcut === 'function'
78
- ? toolbox . onShortcut ( shortcut )
79
- : false ;
80
- if ( ! isHandled ) {
81
- this . navigation . focusFlyout ( workspace ) ;
82
- }
83
- return true ;
84
- default :
85
- return false ;
86
- }
123
+ return workspace . RTL
124
+ ? navigateOut ( workspace , e , shortcut )
125
+ : navigateIn ( workspace , e , shortcut ) ;
87
126
} ,
88
127
keyCodes : [ KeyCodes . RIGHT ] ,
89
128
} ,
@@ -94,32 +133,9 @@ export class ArrowNavigation {
94
133
preconditionFn : ( workspace ) =>
95
134
this . navigation . canCurrentlyNavigate ( workspace ) ,
96
135
callback : ( workspace , e , shortcut ) => {
97
- const toolbox = workspace . getToolbox ( ) as Toolbox ;
98
- let isHandled = false ;
99
- switch ( this . navigation . getState ( workspace ) ) {
100
- case Constants . STATE . WORKSPACE :
101
- isHandled = this . fieldShortcutHandler ( workspace , shortcut ) ;
102
- if ( ! isHandled && workspace ) {
103
- if (
104
- ! this . navigation . defaultWorkspaceCursorPositionIfNeeded (
105
- workspace ,
106
- )
107
- ) {
108
- workspace . getCursor ( ) ?. out ( ) ;
109
- }
110
- isHandled = true ;
111
- }
112
- return isHandled ;
113
- case Constants . STATE . FLYOUT :
114
- this . navigation . focusToolbox ( workspace ) ;
115
- return true ;
116
- case Constants . STATE . TOOLBOX :
117
- return toolbox && typeof toolbox . onShortcut === 'function'
118
- ? toolbox . onShortcut ( shortcut )
119
- : false ;
120
- default :
121
- return false ;
122
- }
136
+ return workspace . RTL
137
+ ? navigateIn ( workspace , e , shortcut )
138
+ : navigateOut ( workspace , e , shortcut ) ;
123
139
} ,
124
140
keyCodes : [ KeyCodes . LEFT ] ,
125
141
} ,
0 commit comments