@@ -269,22 +269,14 @@ define(["../notjQuery"], function ($) {
269269 let directionalNextItem = this . getDirectionalNext ( lastActivatedItem , event . key ) ;
270270
271271 if ( activeItems . length === 0 ) {
272- toActiveItem = pressedArrowDownKey ? firstListItem : lastListItem ;
272+ toActiveItem = directionalNextItem ;
273273 // reset all on manual page refresh
274274 this . clearSelection ( activeItems ) ;
275275 } else if ( this . isMultiSelectable && event . shiftKey ) {
276276 if ( activeItems . length === 1 ) {
277277 toActiveItem = directionalNextItem ;
278- } else if ( wasAllSelected && (
279- ( lastActivatedItem !== firstListItem && pressedArrowDownKey )
280- || ( lastActivatedItem !== lastListItem && pressedArrowUpKey )
281- ) ) {
282- if ( pressedArrowDownKey ) {
283- toActiveItem = lastActivatedItem === lastListItem ? null : lastListItem ;
284- } else {
285- toActiveItem = lastActivatedItem === firstListItem ? null : lastListItem ;
286- }
287-
278+ } else if ( wasAllSelected && ( lastActivatedItem !== firstListItem && pressedArrowDownKey ) ) {
279+ toActiveItem = lastActivatedItem === lastListItem ? null : lastListItem ;
288280 } else if ( directionalNextItem && directionalNextItem . classList . contains ( 'active' ) ) {
289281 // deactivate last activated by down to up select
290282 this . clearSelection ( [ lastActivatedItem ] ) ;
@@ -327,7 +319,15 @@ define(["../notjQuery"], function ($) {
327319 */
328320 getDirectionalNext ( item , eventKey ) {
329321 if ( ! item ) {
330- return null ;
322+ item = eventKey === 'ArrowUp' ? this . list . lastChild : this . list . firstChild ;
323+
324+ if ( ! item ) {
325+ return null ;
326+ }
327+
328+ if ( item . hasAttribute ( this . removeBrackets ( LIST_ITEM_IDENTIFIER ) ) ) {
329+ return item ;
330+ }
331331 }
332332
333333 let nextItem = null ;
0 commit comments