diff --git a/src/popup/app/accounts/accountsHintController.js b/src/popup/app/accounts/accountsHintController.js index 3458e7d1..d5ce91e8 100644 --- a/src/popup/app/accounts/accountsHintController.js +++ b/src/popup/app/accounts/accountsHintController.js @@ -1,10 +1,10 @@ angular .module('bit.accounts') - .controller('accountsHintController', function ($scope, $state, apiService, toastr, $q) { + .controller('accountsHintController', function ($scope, $state, apiService, toastr, $q, utilsService) { $scope.model = {}; - popupUtils.initListSectionItemListeners(); + utilsService.initListSectionItemListeners($(document)); $('#email').focus(); $scope.submitPromise = null; diff --git a/src/popup/app/accounts/accountsLoginController.js b/src/popup/app/accounts/accountsLoginController.js index 84b8f9a0..fde4deaa 100644 --- a/src/popup/app/accounts/accountsLoginController.js +++ b/src/popup/app/accounts/accountsLoginController.js @@ -1,8 +1,9 @@ angular .module('bit.accounts') - .controller('accountsLoginController', function ($scope, $state, $stateParams, loginService, userService, toastr) { - popupUtils.initListSectionItemListeners(); + .controller('accountsLoginController', function ($scope, $state, $stateParams, loginService, userService, toastr, + utilsService) { + utilsService.initListSectionItemListeners($(document)); if ($stateParams.email) { $('#master-password').focus(); diff --git a/src/popup/app/accounts/accountsLoginTwoFactorController.js b/src/popup/app/accounts/accountsLoginTwoFactorController.js index 880a9680..8ba78db2 100644 --- a/src/popup/app/accounts/accountsLoginTwoFactorController.js +++ b/src/popup/app/accounts/accountsLoginTwoFactorController.js @@ -1,9 +1,9 @@ angular .module('bit.accounts') - .controller('accountsLoginTwoFactorController', function ($scope, $state, loginService, toastr) { + .controller('accountsLoginTwoFactorController', function ($scope, $state, loginService, toastr, utilsService) { $scope.model = {}; - popupUtils.initListSectionItemListeners(); + utilsService.initListSectionItemListeners($(document)); $('#code').focus(); $scope.loginPromise = null; diff --git a/src/popup/app/accounts/accountsRegisterController.js b/src/popup/app/accounts/accountsRegisterController.js index 4ffd5514..55fa7b6d 100644 --- a/src/popup/app/accounts/accountsRegisterController.js +++ b/src/popup/app/accounts/accountsRegisterController.js @@ -1,9 +1,9 @@ angular .module('bit.accounts') - .controller('accountsRegisterController', function ($scope, $state, cryptoService, toastr, $q, apiService) { + .controller('accountsRegisterController', function ($scope, $state, cryptoService, toastr, $q, apiService, utilsService) { $scope.model = {}; - popupUtils.initListSectionItemListeners(); + utilsService.initListSectionItemListeners($(document)); $('#email').focus(); $scope.submitPromise = null; diff --git a/src/popup/app/settings/settingsAddFolderController.js b/src/popup/app/settings/settingsAddFolderController.js index d0d007f2..92e09d60 100644 --- a/src/popup/app/settings/settingsAddFolderController.js +++ b/src/popup/app/settings/settingsAddFolderController.js @@ -1,9 +1,9 @@ angular .module('bit.settings') - .controller('settingsAddFolderController', function ($scope, $q, folderService, $state, toastr) { + .controller('settingsAddFolderController', function ($scope, $q, folderService, $state, toastr, utilsService) { $scope.folder = {}; - popupUtils.initListSectionItemListeners(); + utilsService.initListSectionItemListeners($(document)); $('#name').focus(); $scope.savePromise = null; diff --git a/src/popup/app/settings/settingsEditFolderController.js b/src/popup/app/settings/settingsEditFolderController.js index 78e6d6e6..a251094f 100644 --- a/src/popup/app/settings/settingsEditFolderController.js +++ b/src/popup/app/settings/settingsEditFolderController.js @@ -1,7 +1,8 @@ angular .module('bit.settings') - .controller('settingsEditFolderController', function ($scope, $stateParams, folderService, toastr, $q, $state, SweetAlert) { + .controller('settingsEditFolderController', function ($scope, $stateParams, folderService, toastr, $q, $state, SweetAlert, + utilsService) { $scope.folder = {}; var folderId = $stateParams.folderId; @@ -11,7 +12,7 @@ }); }); - popupUtils.initListSectionItemListeners(); + utilsService.initListSectionItemListeners($(document)); $scope.savePromise = null; $scope.save = function (model) { diff --git a/src/popup/app/tools/toolsPasswordGeneratorController.js b/src/popup/app/tools/toolsPasswordGeneratorController.js index e8b6ecc2..f4d336a8 100644 --- a/src/popup/app/tools/toolsPasswordGeneratorController.js +++ b/src/popup/app/tools/toolsPasswordGeneratorController.js @@ -2,13 +2,13 @@ .module('bit.tools') .controller('toolsPasswordGeneratorController', function ($scope, $state, $stateParams, passwordGenerationService, - toastr, $q) { + toastr, $q, utilsService) { var addState = $stateParams.addState, editState = $stateParams.editState; $scope.showSelect = $stateParams.addState || $stateParams.editState; - popupUtils.initListSectionItemListeners(); + utilsService.initListSectionItemListeners($(document)); $scope.password = '-'; $scope.slider = { diff --git a/src/popup/app/vault/vaultAddSiteController.js b/src/popup/app/vault/vaultAddSiteController.js index 647ad256..7ce22747 100644 --- a/src/popup/app/vault/vaultAddSiteController.js +++ b/src/popup/app/vault/vaultAddSiteController.js @@ -2,7 +2,7 @@ .module('bit.vault') .controller('vaultAddSiteController', function ($scope, $state, $stateParams, siteService, folderService, - cryptoService, $q, toastr) { + cryptoService, $q, toastr, utilsService) { var returnScrollY = $stateParams.returnScrollY; var returnSearchText = $stateParams.returnSearchText; var fromCurrent = $stateParams.fromCurrent || $stateParams.uri !== null; @@ -23,7 +23,7 @@ else { $('#name').focus(); } - popupUtils.initListSectionItemListeners(); + utilsService.initListSectionItemListeners($(document)); $q.when(folderService.getAllDecrypted()).then(function (folders) { $scope.folders = folders; diff --git a/src/popup/app/vault/vaultEditSiteController.js b/src/popup/app/vault/vaultEditSiteController.js index 70a40780..61cfee7a 100644 --- a/src/popup/app/vault/vaultEditSiteController.js +++ b/src/popup/app/vault/vaultEditSiteController.js @@ -2,7 +2,7 @@ angular .module('bit.vault') .controller('vaultEditSiteController', function ($scope, $state, $stateParams, siteService, folderService, - cryptoService, $q, toastr, SweetAlert) { + cryptoService, $q, toastr, SweetAlert, utilsService) { var returnScrollY = $stateParams.returnScrollY; var returnSearchText = $stateParams.returnSearchText; var siteId = $stateParams.siteId; @@ -27,7 +27,7 @@ angular $scope.folders = folders; }); - popupUtils.initListSectionItemListeners(); + utilsService.initListSectionItemListeners($(document)); $scope.savePromise = null; $scope.save = function (model) { diff --git a/src/popup/index.html b/src/popup/index.html index 9d2f728a..07f96dc8 100644 --- a/src/popup/index.html +++ b/src/popup/index.html @@ -13,8 +13,6 @@ - - diff --git a/src/popup/scripts/popup.js b/src/popup/scripts/popup.js deleted file mode 100644 index 6bdd50f3..00000000 --- a/src/popup/scripts/popup.js +++ /dev/null @@ -1,44 +0,0 @@ -var popupUtils = function () { - var self = this; - - self.initListSectionItemListeners = function () { - $('.list-section-item').click(function (e) { - var text = $(this).find('input, textarea').not('input[type="checkbox"], input[type="radio"], input[type="hidden"]'); - var checkbox = $(this).find('input[type="checkbox"]'); - var select = $(this).find('select'); - - if (text.length > 0 && e.target === text[0]) { - return; - } - if (checkbox.length > 0 && e.target === checkbox[0]) { - return; - } - if (select.length > 0 && e.target === select[0]) { - return; - } - - e.preventDefault(); - - if (text.length > 0) { - text.focus(); - } - else if (checkbox.length > 0) { - checkbox.prop('checked', !checkbox.is(':checked')); - if (angular) { - angular.element(checkbox[0]).triggerHandler('click'); - } - } - else if (select.length > 0) { - select.focus(); - } - }); - - $('.list-section-item input, .list-section-item select, .list-section-item textarea').focus(function (e) { - $(this).parent().addClass('active'); - }).blur(function (e) { - $(this).parent().removeClass('active'); - }); - } - - return self; -}(); diff --git a/src/services/utilsService.js b/src/services/utilsService.js index b37860a8..a3c11d97 100644 --- a/src/services/utilsService.js +++ b/src/services/utilsService.js @@ -41,4 +41,48 @@ function initUtilsService() { UtilsService.prototype.isOpera = function () { return this.getBrowser() === 'opera'; } + + UtilsService.prototype.initListSectionItemListeners = function (doc) { + if (!doc) { + throw 'doc parameter required'; + } + + doc.on('click', '.list-section-item', function (e) { + var text = $(this).find('input, textarea').not('input[type="checkbox"], input[type="radio"], input[type="hidden"]'); + var checkbox = $(this).find('input[type="checkbox"]'); + var select = $(this).find('select'); + + if (text.length > 0 && e.target === text[0]) { + return; + } + if (checkbox.length > 0 && e.target === checkbox[0]) { + return; + } + if (select.length > 0 && e.target === select[0]) { + return; + } + + e.preventDefault(); + + if (text.length > 0) { + text.focus(); + } + else if (checkbox.length > 0) { + checkbox.prop('checked', !checkbox.is(':checked')); + if (angular) { + angular.element(checkbox[0]).triggerHandler('click'); + } + } + else if (select.length > 0) { + select.focus(); + } + }); + + doc.on('focus', '.list-section-item input, .list-section-item select, .list-section-item textarea', function (e) { + $(this).parent().addClass('active'); + }); + doc.on('blur', '.list-section-item input, .list-section-item select, .list-section-item textarea', function (e) { + $(this).parent().removeClass('active'); + }); + } };