diff --git a/app/scripts/helpers/add.js b/app/scripts/helpers/add.js new file mode 100644 index 00000000..6dbae6bb --- /dev/null +++ b/app/scripts/helpers/add.js @@ -0,0 +1,6 @@ +const Handlebars = require('hbs'); + +// inspired by https://stackoverflow.com/questions/22103989/adding-offset-to-index-when-looping-through-items-in-handlebars/39588001#39588001 +Handlebars.registerHelper('add', (lvalue, rvalue) => ( + parseInt(lvalue) + parseInt(rvalue) +)); diff --git a/app/scripts/helpers/index.js b/app/scripts/helpers/index.js index 79bbd4f9..f55cd385 100644 --- a/app/scripts/helpers/index.js +++ b/app/scripts/helpers/index.js @@ -1,3 +1,4 @@ +require('./add'); require('./cmp'); require('./ifeq'); require('./ifneq'); diff --git a/app/scripts/views/open-view.js b/app/scripts/views/open-view.js index bd6f3c4e..a533b34e 100644 --- a/app/scripts/views/open-view.js +++ b/app/scripts/views/open-view.js @@ -24,20 +24,30 @@ const OpenView = Backbone.View.extend({ events: { 'change .open__file-ctrl': 'fileSelected', 'click .open__icon-open': 'openFile', + 'keydown .open__icon-open': 'labelOnKeydown', 'click .open__icon-new': 'createNew', + 'keydown .open__icon-new': 'labelOnKeydown', 'click .open__icon-import-xml': 'importFromXml', + 'keydown .open__icon-import-xml': 'labelOnKeydown', 'click .open__icon-demo': 'createDemo', + 'keydown .open__icon-demo': 'labelOnKeydown', 'click .open__icon-more': 'toggleMore', + 'keydown .open__icon-more': 'labelOnKeydown', 'click .open__icon-storage': 'openStorage', + 'keydown .open__icon-storage': 'labelOnKeydown', 'click .open__icon-settings': 'openSettings', + 'keydown .open__icon-settings': 'labelOnKeydown', 'click .open__pass-input[readonly]': 'openFile', 'input .open__pass-input': 'inputInput', 'keydown .open__pass-input': 'inputKeydown', 'keyup .open__pass-input': 'inputKeyup', 'keypress .open__pass-input': 'inputKeypress', 'click .open__pass-enter-btn': 'openDb', + 'keydown .open__pass-enter-btn': 'labelOnKeydown', 'click .open__settings-key-file': 'openKeyFile', + 'keydown .open__settings-key-file': 'labelOnKeydown', 'click .open__last-item': 'openLast', + 'keydown .open__last-item': 'labelOnKeydown', 'dragover': 'dragover', 'dragleave': 'dragleave', 'drop': 'drop' @@ -287,6 +297,37 @@ const OpenView = Backbone.View.extend({ } }, + labelOnKeydown: function(e) { + const code = e.keyCode || e.which; + if (code === Keys.DOM_VK_RETURN) { + this.labelOnEnter(e); + } + }, + + labelOnEnter: function(e) { + if ($(e.target).hasClass('open__icon-open')) { + this.openFile(); + } else if (($(e.target).hasClass('open__icon-new'))) { + this.createNew(); + } else if (($(e.target).hasClass('open__icon-demo'))) { + this.createDemo(); + } else if (($(e.target).hasClass('open__icon-more'))) { + this.toggleMore(); + } else if (($(e.target).hasClass('open__icon-storage'))) { + this.openStorage(e); + } else if (($(e.target).hasClass('open__icon-settings'))) { + this.openSettings(); + } else if (($(e.target).hasClass('open__icon-import-xml'))) { + this.importFromXml(); + } else if (($(e.target).hasClass('open__pass-enter-btn'))) { + this.openDb(); + } else if (($(e.target).hasClass('open__settings-key-file'))) { + this.openKeyFile(e); + } else if (($(e.target).hasClass('open__last-item'))) { + this.openLast(e); + } + }, + importFromXml: function() { if (!this.busy) { this.closeConfig(); diff --git a/app/templates/open.hbs b/app/templates/open.hbs index 3d92c66e..52944fcf 100644 --- a/app/templates/open.hbs +++ b/app/templates/open.hbs @@ -2,30 +2,30 @@