diff --git a/src/popup/app/accounts/accountsHintController.js b/src/popup/app/accounts/accountsHintController.js
index 3458e7d1a5..d5ce91e8d9 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 84b8f9a0a9..fde4deaa29 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 880a968016..8ba78db2c3 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 4ffd551492..55fa7b6de3 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 d0d007f2e6..92e09d6022 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 78e6d6e625..a251094f07 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 e8b6ecc2bd..f4d336a835 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 647ad25693..7ce2274731 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 70a40780f6..61cfee7a97 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 9d2f728a6f..07f96dc877 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 6bdd50f3c7..0000000000
--- 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 b37860a83a..a3c11d976f 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');
+ });
+ }
};