-/* Actions */
-Mousetrap.bind('g n', () => {
+import Mousetrap from 'mousetrap';
+import $ from 'jquery';
+
+function toggleFocus(cardToToogleFocus) {
+ if (cardToToogleFocus) {
+ $(cardToToogleFocus).toggleClass('z-depth-4');
+ }
+}
+
+$(document).ready(() => {
+ let cardIndex = 0;
+ const cardNumber = $('#content ul.data > li').length;
+ let card = $('#content ul.data > li')[cardIndex];
+ const pagination = $('.pagination');
+
+ /* Show nothing on quickstart */
+ if ($('#content > div.quickstart').length > 0) {
+ return;
+ }
+
+ /* If we come from next page */
+ if (window.location.hash === '#prev') {
+ cardIndex = cardNumber - 1;
+ card = $('ul.data > li')[cardIndex];
+ }
+
+ /* Focus current card */
+ toggleFocus(card);
+
+ /* Actions */
+ Mousetrap.bind('g n', () => {
$('#nav-btn-add').trigger('click');
-});
+ return false;
+ });
+
+ Mousetrap.bind('s', () => {
+ $('#nav-btn-search').trigger('click');
+ return false;
+ });
-Mousetrap.bind('esc', () => {
+ Mousetrap.bind('esc', () => {
$('.close').trigger('click');
-});
+ });
+
+ /* Select right card. If there's a next page, go to next page */
+ Mousetrap.bind('right', () => {
+ if (cardIndex >= 0 && cardIndex < cardNumber - 1) {
+ toggleFocus(card);
+ cardIndex += 1;
+ card = $('ul.data > li')[cardIndex];
+ toggleFocus(card);
+ return;
+ }
+ if (pagination.length > 0 && pagination.find('li.next:not(.disabled)').length > 0 && cardIndex === cardNumber - 1) {
+ window.location.href = window.location.origin + $(pagination).find('li.next a').attr('href');
+ }
+ });
+
+ /* Select previous card. If there's a previous page, go to next page */
+ Mousetrap.bind('left', () => {
+ if (cardIndex > 0 && cardIndex < cardNumber) {
+ toggleFocus(card);
+ cardIndex -= 1;
+ card = $('ul.data > li')[cardIndex];
+ toggleFocus(card);
+ return;
+ }
+ if (pagination.length > 0 && $(pagination).find('li.prev:not(.disabled)').length > 0 && cardIndex === 0) {
+ window.location.href = `${window.location.origin + $(pagination).find('li.prev a').attr('href')}#prev`;
+ }
+ });
-// Display the first element of the current view
-Mousetrap.bind('right', () => {
- $('ul.data li:first-child span.dot-ellipsis a')[0].click();
+ Mousetrap.bind('enter', () => {
+ window.location.href = window.location.origin + $(card).find('span.card-title a').attr('href');
+ });
});