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 @@
{{#if canOpen}} -
- -
{{res 'openOpen'}}
-
+
+ +
{{res 'openOpen'}}
+
{{/if}} {{#if canCreate}} -
- -
{{res 'openNew'}}
-
+
+ +
{{res 'openNew'}}
+
{{/if}} {{#if canOpenDemo}} {{#ifeq demoOpened false}} -
- -
{{res 'openDemo'}}
-
+
+ +
{{res 'openDemo'}}
+
{{/ifeq}} {{/if}} {{#if showMore}} -
- -
{{res 'openMore'}}
-
+
+ +
{{res 'openMore'}}
+
{{/if}} {{#if showLogo}}
@@ -36,31 +36,31 @@
{{#each storageProviders as |prv|}} -
- {{#if prv.icon}}{{/if}} - {{#if prv.iconSvg}}
{{{prv.iconSvg}}}
{{/if}} -
{{res prv.name}}
-
+
+ {{#if prv.icon}}{{/if}} + {{#if prv.iconSvg}}
{{{prv.iconSvg}}}
{{/if}} +
{{res prv.name}}
+
{{/each}} {{#if canImportXml}} -
- -
{{ res 'openXml' }}
-
+
+ +
{{ res 'openXml' }}
+
{{/if}} {{#if canOpenDemo}} {{#if demoOpened}} -
- -
{{res 'openDemo'}}
-
+
+ +
{{res 'openDemo'}}
+
{{/if}} {{/if}} {{#if canOpenSettings}} -
- -
{{res 'settings'}}
-
+
+ +
{{res 'settings'}}
+
{{/if}}
@@ -74,12 +74,12 @@
-
+ placeholder="{{#if canOpen}}{{res 'openClickToOpen'}}{{/if}}" readonly tabindex="13" /> +
-
+
{{res 'openKeyFile'}} {{#if canOpenKeyFromDropbox}} {{res 'openKeyFileDropbox'}}{{/if}} @@ -87,12 +87,12 @@
{{#each lastOpenFiles as |file|}} -
- {{#if file.icon}}{{/if}} - {{#if file.iconSvg}}
{{{file.iconSvg}}}
{{/if}} - {{file.name}} - {{#if ../canRemoveLatest}}{{/if}} -
+
+ {{#if file.icon}}{{/if}} + {{#if file.iconSvg}}
{{{file.iconSvg}}}
{{/if}} + {{file.name}} + {{#if ../canRemoveLatest}}{{/if}} +
{{/each}}
diff --git a/package.json b/package.json index e3440d77..210df6fb 100644 --- a/package.json +++ b/package.json @@ -70,7 +70,8 @@ "test": "grunt test", "postinstall": "cd desktop && npm install", "copy-beta": "grunt --skip-sign && sed 's///' dist/index.html > ../keeweb-beta/index.html && cd ../keeweb-beta && git add index.html && git commit -a -m 'beta' && git push origin master", - "electron": "electron desktop --htmlpath=http://localhost:8085/tmp/" + "electron": "electron desktop --htmlpath=http://localhost:8085/tmp/", + "dev": "grunt dev --skip-sign" }, "author": { "name": "Antelle",