File tree 3 files changed +32
-20
lines changed
3 files changed +32
-20
lines changed Original file line number Diff line number Diff line change 4
4
isSpace ,
5
5
isUp ,
6
6
isDown ,
7
- isRight ,
8
- isLeft ,
9
7
isEnter ,
10
8
} from "@ui5/webcomponents-base/src/events/PseudoEvents" ;
11
9
import ShadowDOM from "@ui5/webcomponents-base/src/compatibility/ShadowDOM" ;
@@ -183,12 +181,14 @@ class Select extends WebComponent {
183
181
return ;
184
182
}
185
183
186
- if ( isUp ( event ) || isLeft ( event ) ) {
187
- return this . Suggestions . onUp ( event ) ;
184
+ if ( isUp ( event ) ) {
185
+ this . Suggestions . onUp ( event ) ;
186
+ this . _changeSelectionWhileClosed ( ) ;
188
187
}
189
188
190
- if ( isDown ( event ) || isRight ( event ) ) {
191
- return this . Suggestions . onDown ( event ) ;
189
+ if ( isDown ( event ) ) {
190
+ this . Suggestions . onDown ( event ) ;
191
+ this . _changeSelectionWhileClosed ( ) ;
192
192
}
193
193
194
194
if ( isSpace ( event ) ) {
@@ -303,6 +303,13 @@ class Select extends WebComponent {
303
303
}
304
304
}
305
305
306
+ _changeSelectionWhileClosed ( ) {
307
+ if ( this . items . length > 1 && ! this . _opened ) {
308
+ this . _select ( this . _getPreviewedItem ( ) ) ;
309
+ this . _fireChange ( this . _getSelectedItem ( ) ) ;
310
+ }
311
+ }
312
+
306
313
_setSelectedItem ( item ) {
307
314
if ( item ) {
308
315
item . selected = true ;
Original file line number Diff line number Diff line change @@ -37,20 +37,14 @@ class Suggestions {
37
37
38
38
/* Public methods */
39
39
onUp ( event ) {
40
- if ( this . isOpened ( ) ) {
41
- event . preventDefault ( ) ;
42
- this . _handleItemNavigation ( false /* forward */ ) ;
43
- return true ;
44
- }
40
+ event . preventDefault ( ) ;
41
+ this . _handleItemNavigation ( false /* forward */ ) ;
45
42
return true ;
46
43
}
47
44
48
45
onDown ( event ) {
49
- if ( this . isOpened ( ) ) {
50
- event . preventDefault ( ) ;
51
- this . _handleItemNavigation ( true /* forward */ ) ;
52
- return true ;
53
- }
46
+ event . preventDefault ( ) ;
47
+ this . _handleItemNavigation ( true /* forward */ ) ;
54
48
return true ;
55
49
}
56
50
@@ -171,10 +165,6 @@ class Suggestions {
171
165
}
172
166
173
167
_handleItemNavigation ( forward ) {
174
- if ( ! this . isOpened ( ) ) {
175
- return ;
176
- }
177
-
178
168
if ( ! this . _getItems ( ) . length ) {
179
169
return ;
180
170
}
Original file line number Diff line number Diff line change @@ -52,6 +52,21 @@ describe("Select general interaction", () => {
52
52
assert . ok ( selectText . getHTML ( false ) . indexOf ( EXPECTED_SELECTION_TEXT2 ) !== - 1 , "Select label is correct." ) ;
53
53
} ) ;
54
54
55
+ it ( "changes selection while closed with Arrow Up/Down" , ( ) => {
56
+ const btn = $ ( "#myBtn2" ) ;
57
+ const select = $ ( "#mySelect" ) ;
58
+ const selectText = browser . findElementDeep ( "#mySelect2 >>> ui5-label" ) ;
59
+ const EXPECTED_SELECTION_TEXT1 = "Compact" ;
60
+ const EXPECTED_SELECTION_TEXT2 = "Condensed" ;
61
+
62
+ select . keys ( "ArrowUp" ) ;
63
+ assert . ok ( selectText . getHTML ( false ) . indexOf ( EXPECTED_SELECTION_TEXT1 ) > - 1 , "Arrow Up should change selected item" ) ;
64
+
65
+ select . keys ( "ArrowDown" ) ;
66
+ assert . ok ( selectText . getHTML ( false ) . indexOf ( EXPECTED_SELECTION_TEXT2 ) > - 1 , "Arrow Down should change selected item" ) ;
67
+ } ) ;
68
+
69
+
55
70
it ( "opens upon space" , ( ) => {
56
71
const btn = $ ( "#myBtn2" ) ;
57
72
const select = $ ( "#mySelect" ) ;
You can’t perform that action at this time.
0 commit comments