|
89 | 89 | var nextFeed = function (navigationArea) {
|
90 | 90 | var current = navigationArea.find('.active');
|
91 | 91 | var elements = navigationArea.find('.explore-feed,' +
|
92 |
| - '.subscriptions-feed:visible,' + |
93 |
| - '.starred-feed:visible,' + |
94 |
| - '.feed:visible'); |
| 92 | + '.subscriptions-feed:visible,' + |
| 93 | + '.starred-feed:visible,' + |
| 94 | + '.feed:visible'); |
95 | 95 |
|
96 | 96 | if (current.hasClass('folder')) {
|
97 | 97 | while (current.length > 0) {
|
|
109 | 109 |
|
110 | 110 | // FIXME: O(n) runtime. If someone creates a nice and not fugly solution
|
111 | 111 | // please create a PR
|
112 |
| - for (var i=0; i<elements.length-1; i+=1) { |
| 112 | + for (var i = 0; i < elements.length - 1; i += 1) { |
113 | 113 | var element = elements[i];
|
114 | 114 |
|
115 | 115 | if (element === current[0]) {
|
116 |
| - var next = elements[i+1]; |
| 116 | + var next = elements[i + 1]; |
117 | 117 | activateNavigationEntry($(next), navigationArea);
|
118 | 118 | break;
|
119 | 119 | }
|
|
184 | 184 | var previousFeed = function (navigationArea) {
|
185 | 185 | var current = navigationArea.find('.active');
|
186 | 186 | var elements = navigationArea.find('.explore-feed,' +
|
187 |
| - '.subscriptions-feed:visible,' + |
188 |
| - '.starred-feed:visible,' + |
189 |
| - '.feed:visible'); |
| 187 | + '.subscriptions-feed:visible,' + |
| 188 | + '.starred-feed:visible,' + |
| 189 | + '.feed:visible'); |
190 | 190 |
|
191 | 191 | // special case: folder selected
|
192 | 192 | if (current.hasClass('folder')) {
|
|
195 | 195 | while (previousFolder.length > 0) {
|
196 | 196 | var subfeeds = previousFolder.find('.feed:visible');
|
197 | 197 | if (subfeeds.length > 0) {
|
198 |
| - activateNavigationEntry($(subfeeds[subfeeds.length-1]), |
| 198 | + activateNavigationEntry($(subfeeds[subfeeds.length - 1]), |
199 | 199 | navigationArea);
|
200 | 200 | return;
|
201 | 201 | }
|
|
206 | 206 | var feeds = current.siblings('.feed');
|
207 | 207 |
|
208 | 208 | if (feeds.length > 0) {
|
209 |
| - activateNavigationEntry($(feeds[feeds.length-1]), |
| 209 | + activateNavigationEntry($(feeds[feeds.length - 1]), |
210 | 210 | navigationArea);
|
211 | 211 | return;
|
212 | 212 | }
|
|
223 | 223 |
|
224 | 224 | // FIXME: O(n) runtime. If someone creates a nice and not fugly solution
|
225 | 225 | // please create a PR
|
226 |
| - for (var i=elements.length-1; i>0; i-=1) { |
| 226 | + for (var i = elements.length - 1; i > 0; i -= 1) { |
227 | 227 | var element = elements[i];
|
228 | 228 |
|
229 | 229 | if (element === current[0]) {
|
230 |
| - var previous = elements[i-1]; |
| 230 | + var previous = elements[i - 1]; |
231 | 231 | activateNavigationEntry($(previous), navigationArea);
|
232 | 232 | break;
|
233 | 233 | }
|
|
281 | 281 | setItemActive(item[0]);
|
282 | 282 |
|
283 | 283 | if (expandItemInCompact) {
|
284 |
| - onActiveItem(scrollArea, function (item) { |
285 |
| - if (!item.hasClass('open')) { |
286 |
| - item.find('.utils').trigger('click'); |
287 |
| - } |
288 |
| - }); |
| 284 | + if (!item.hasClass('open')) { |
| 285 | + item.find('.utils').trigger('click'); |
| 286 | + } |
289 | 287 | }
|
290 | 288 | };
|
291 | 289 |
|
292 | 290 | var scrollToNextItem = function (scrollArea, expandItemInCompact) {
|
293 | 291 | var activeElement = getActiveElement(scrollArea);
|
294 |
| - var nextElement = activeElement.next(); |
295 |
| - if (nextElement.length > 0) { |
296 |
| - scrollToItem(scrollArea, nextElement, expandItemInCompact); |
| 292 | + // in expand in compact mode, jumping to the next item should open |
| 293 | + // the current one if it's not open yet |
| 294 | + if (!activeElement.hasClass('open')) { |
| 295 | + activeElement.find('.utils').trigger('click'); |
297 | 296 | } else {
|
298 |
| - // in case this is the last item it should still scroll below the |
299 |
| - scrollArea.scrollTop(scrollArea.prop('scrollHeight')); |
| 297 | + var nextElement = activeElement.next(); |
| 298 | + if (nextElement.length > 0) { |
| 299 | + scrollToItem(scrollArea, nextElement, expandItemInCompact); |
| 300 | + } else { |
| 301 | + // in case this is the last item it should still scroll below |
| 302 | + // the |
| 303 | + scrollArea.scrollTop(scrollArea.prop('scrollHeight')); |
| 304 | + } |
300 | 305 | }
|
301 | 306 | };
|
302 | 307 |
|
|
324 | 329 | items.each(function (index, item) {
|
325 | 330 | var $item = $(item);
|
326 | 331 | var bottom = $item.position().top + $item.outerHeight(true);
|
327 |
| - if ((bottom - 20) >= 0){ |
| 332 | + if ((bottom - 20) >= 0) { |
328 | 333 | setItemActive(item);
|
329 | 334 | return false;
|
330 | 335 | }
|
|
339 | 344 | var navigationArea = $('#app-navigation');
|
340 | 345 | var isCompactView = $('#articles.compact').length > 0;
|
341 | 346 | var isExpandItem = $('#articles')
|
342 |
| - .attr('news-compact-expand') === 'true'; |
| 347 | + .attr('news-compact-expand') === 'true'; |
343 | 348 | var expandItemInCompact = isCompactView && isExpandItem;
|
344 | 349 |
|
345 | 350 | if (noInputFocused($(':focus')) && noModifierKey(event)) {
|
|
349 | 354 | event.preventDefault();
|
350 | 355 | scrollToNextItem(scrollArea, expandItemInCompact);
|
351 | 356 |
|
352 |
| - // k, p, left arrow |
| 357 | + // k, p, left arrow |
353 | 358 | } else if ([75, 80, 37].indexOf(keyCode) >= 0) {
|
354 | 359 |
|
355 | 360 | event.preventDefault();
|
356 | 361 | scrollToPreviousItem(navigationArea, scrollArea,
|
357 |
| - expandItemInCompact); |
| 362 | + expandItemInCompact); |
358 | 363 |
|
359 |
| - // u |
| 364 | + // u |
360 | 365 | } else if ([85].indexOf(keyCode) >= 0) {
|
361 | 366 |
|
362 | 367 | event.preventDefault();
|
363 | 368 | toggleUnread(scrollArea);
|
364 | 369 |
|
365 |
| - // e |
| 370 | + // e |
366 | 371 | } else if ([69].indexOf(keyCode) >= 0) {
|
367 | 372 |
|
368 | 373 | event.preventDefault();
|
369 | 374 | expandItem(scrollArea);
|
370 | 375 |
|
371 |
| - // s, i, l |
| 376 | + // s, i, l |
372 | 377 | } else if ([73, 83, 76].indexOf(keyCode) >= 0) {
|
373 | 378 |
|
374 | 379 | event.preventDefault();
|
375 | 380 | toggleStar(scrollArea);
|
376 | 381 |
|
377 |
| - // h |
| 382 | + // h |
378 | 383 | } else if ([72].indexOf(keyCode) >= 0) {
|
379 | 384 |
|
380 | 385 | event.preventDefault();
|
381 | 386 | toggleStar(scrollArea);
|
382 | 387 | scrollToNextItem(scrollArea);
|
383 | 388 |
|
384 |
| - // o |
| 389 | + // o |
385 | 390 | } else if ([79].indexOf(keyCode) >= 0) {
|
386 | 391 |
|
387 | 392 | event.preventDefault();
|
388 | 393 | openLink(scrollArea);
|
389 | 394 |
|
390 |
| - // r |
| 395 | + // r |
391 | 396 | } else if ([82].indexOf(keyCode) >= 0) {
|
392 | 397 |
|
393 | 398 | event.preventDefault();
|
394 | 399 | reloadFeed(navigationArea);
|
395 | 400 |
|
396 |
| - // f |
| 401 | + // f |
397 | 402 | } else if ([70].indexOf(keyCode) >= 0) {
|
398 | 403 |
|
399 | 404 | event.preventDefault();
|
400 | 405 | nextFeed(navigationArea);
|
401 | 406 |
|
402 |
| - // d |
| 407 | + // d |
403 | 408 | } else if ([68].indexOf(keyCode) >= 0) {
|
404 | 409 |
|
405 | 410 | event.preventDefault();
|
406 | 411 | previousFeed(navigationArea);
|
407 | 412 |
|
408 |
| - // c |
| 413 | + // c |
409 | 414 | } else if ([67].indexOf(keyCode) >= 0) {
|
410 | 415 |
|
411 | 416 | event.preventDefault();
|
412 | 417 | previousFolder(navigationArea);
|
413 | 418 |
|
414 |
| - // a |
| 419 | + // a |
415 | 420 | } else if ([65].indexOf(keyCode) >= 0) {
|
416 | 421 |
|
417 | 422 | event.preventDefault();
|
418 | 423 | scrollToActiveNavigationEntry(navigationArea);
|
419 | 424 |
|
420 |
| - // v |
| 425 | + // v |
421 | 426 | } else if ([86].indexOf(keyCode) >= 0) {
|
422 | 427 |
|
423 | 428 | event.preventDefault();
|
424 | 429 | nextFolder(navigationArea);
|
425 | 430 |
|
426 |
| - // q |
| 431 | + // q |
427 | 432 | } else if ([81].indexOf(keyCode) >= 0) {
|
428 | 433 |
|
429 | 434 | event.preventDefault();
|
430 | 435 | $('#searchbox').focus();
|
431 | 436 |
|
432 |
| - // page up |
| 437 | + // page up |
433 | 438 | } else if ([33].indexOf(keyCode) >= 0) {
|
434 | 439 |
|
435 | 440 | tryReload(navigationArea, scrollArea);
|
436 | 441 |
|
437 | 442 | }
|
438 | 443 |
|
439 |
| - // everything with shift |
| 444 | + // everything with shift |
440 | 445 | } else if (noInputFocused($(':focus')) && event.shiftKey) {
|
441 | 446 |
|
442 | 447 | // shift + a
|
|
0 commit comments