diff options
author | Marcos Zuriaga <wolfi@wolfi.es> | 2021-08-22 14:45:17 +0300 |
---|---|---|
committer | Marcos Zuriaga <wolfi@wolfi.es> | 2021-08-22 14:45:17 +0300 |
commit | 88fef6029bfaddaf82395d7893cc401487aba554 (patch) | |
tree | 8045a2b3cc8dc6963b2a0097b499170942cb41f6 | |
parent | 337f8cf32e254d48c554013e38509b6001960cbc (diff) | |
parent | 796b3091ffb27e12858a5e7d156ca502d743c6b8 (diff) |
Merge branch 'ui-improvements' into next
-rw-r--r-- | controller/translationcontroller.php | 1 | ||||
-rw-r--r-- | css/app.css | 86 | ||||
-rw-r--r-- | css/app.css.map | 2 | ||||
-rw-r--r-- | css/bookmarklet.css | 17 | ||||
-rw-r--r-- | css/bookmarklet.css.map | 2 | ||||
-rw-r--r-- | js/app/controllers/bookmarklet.js | 6 | ||||
-rw-r--r-- | js/app/controllers/export.js | 20 | ||||
-rw-r--r-- | js/app/controllers/settings.js | 6 | ||||
-rw-r--r-- | js/exporters/exporter-csv.js | 4 | ||||
-rw-r--r-- | js/exporters/exporter-json.js | 4 | ||||
-rw-r--r-- | js/exporters/exporter-main.js | 177 | ||||
-rw-r--r-- | js/templates.js | 8 | ||||
-rw-r--r-- | sass/bookmarklet.scss | 49 | ||||
-rw-r--r-- | sass/menu.scss | 33 | ||||
-rw-r--r-- | sass/partials/tabs.scss | 78 | ||||
-rw-r--r-- | templates/bookmarklet.php | 61 | ||||
-rw-r--r-- | templates/main.php | 6 | ||||
-rw-r--r-- | templates/views/edit_credential.html | 61 | ||||
-rw-r--r-- | templates/views/settings.html | 24 | ||||
-rw-r--r-- | templates/views/share_credential.html | 68 | ||||
-rw-r--r-- | templates/views/show_vault.html | 8 |
21 files changed, 417 insertions, 304 deletions
diff --git a/controller/translationcontroller.php b/controller/translationcontroller.php index d06e1de8..9e123c39 100644 --- a/controller/translationcontroller.php +++ b/controller/translationcontroller.php @@ -65,6 +65,7 @@ class TranslationController extends ApiController { // js/app/controllers/export.js 'export.starting' => $this->trans->t('Starting export'), 'export.decrypt' => $this->trans->t('Decrypting credentials'), + 'export.decrypt.error' => $this->trans->t('Failed to decrypt {{credential}}'), 'done' => $this->trans->t('Done'), // js/app/controllers/import.js diff --git a/css/app.css b/css/app.css index 0071e930..f96f3fa3 100644 --- a/css/app.css +++ b/css/app.css @@ -140,38 +140,42 @@ * along with this program. If not, see <http://www.gnu.org/licenses/>. * */ -.tab_header { - width: calc(100vw - 300px); - margin: 0 0 0; - list-style: none; - padding: 0; } - .tab_header li.tab:first-child { - margin-left: 0; } - .tab_header li.tab { - /*@include border-top-radius(2px);*/ - float: left; - border-bottom-width: 0; - margin: 0; - padding: 10px 10px 10px 10px; - cursor: pointer; - border-right: 1px solid #eee; - -webkit-transition: background-color 250ms linear; - -moz-transition: background-color 250ms linear; - -o-transition: background-color 250ms linear; - -ms-transition: background-color 250ms linear; - transition: background-color 250ms linear; } - .tab_header li.tab .indicator { - display: none; } - .tab_header li.inactive { - background-color: #fff !important; - color: unset !important; } - .tab_header li.active .indicator { - display: inline-block; - position: absolute; - height: 7px; - left: 0; - right: 0; - bottom: -1px; } +.app-sidebar-tabs { + display: flex; + flex-direction: column; + min-height: 0; + flex: 1 1 100%; } + +.app-sidebar-tabs__nav ul { + display: flex; + justify-content: stretch; } + +.app-sidebar-tabs__tab.active { + color: var(--color-text-light); + border-bottom-color: var(--color-primary-element); + box-shadow: inset 0 -1px 0 var(--color-primary-element); + font-weight: bold; } + +.app-sidebar-tabs__tab:not(.active):hover, .app-sidebar-tabs__tab:not(.active):focus { + border-bottom-color: var(--color-background-darker); + box-shadow: inset 0 -1px 0 var(--color-background-darker); } + +.app-sidebar-tabs__tab:hover, .app-sidebar-tabs__tab:focus, .app-sidebar-tabs__tab:active, .app-sidebar-tabs__tab.active { + opacity: 1; + cursor: pointer; } + +.app-sidebar-tabs__tab { + position: relative; + display: block; + overflow: hidden; + padding: 10px 10px 10px 10px; + transition: color var(--animation-quick), opacity var(--animation-quick), border-color var(--animation-quick); + text-align: center; + white-space: nowrap; + text-overflow: ellipsis; + opacity: .7; + color: var(--color-main-text); + border-bottom: 1px solid var(--color-border); } .tab_container { border: 1px solid #eee; @@ -1067,7 +1071,6 @@ width: inherit !important; border-right: 1px solid #eee; } .nav-trashbin a { - background-color: #fff !important; opacity: 1 !important; z-index: 140; } .nav-trashbin a.active { @@ -1075,8 +1078,21 @@ .nav-trashbin a .fa { margin-right: 15px; } -#app-navigation .collapsible:hover .app-navigation-entry-bullet { - background: var(--color-primary) !important; } +#app-navigation { + /* Custom bullet icon */ } + #app-navigation .collapsible:hover .app-navigation-entry-bullet { + background: var(--color-primary) !important; } + #app-navigation .app-navigation-entry-bullet-with-hover { + position: absolute; + display: block; + margin: 16px; + width: 12px; + height: 12px; + border: none; + border-radius: 50%; + cursor: pointer; + transition: background 100ms ease-in-out; + z-index: 101; } #app-navigation a .selected { opacity: 1 !important; diff --git a/css/app.css.map b/css/app.css.map index f819c34f..de086ec5 100644 --- a/css/app.css.map +++ b/css/app.css.map @@ -1,6 +1,6 @@ { "version": 3, -"mappings": "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", +"mappings": "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", "sources": ["../sass/app.scss","../sass/variables.scss","../sass/mixins.scss","../sass/partials/button.scss","../sass/partials/popovermenu.scss","../sass/partials/tabs.scss","../sass/partials/pwgen.scss","../sass/partials/icon-picker.scss","../sass/partials/share-incoming.scss","../sass/vaults.scss","../sass/credentials.scss","../sass/menu.scss","../sass/share_credential.scss","../sass/settings.scss","../sass/searchboxexpander.scss"], "names": [], "file": "app.css" diff --git a/css/bookmarklet.css b/css/bookmarklet.css index 58742fab..7d436955 100644 --- a/css/bookmarklet.css +++ b/css/bookmarklet.css @@ -19,18 +19,27 @@ * along with this program. If not, see <http://www.gnu.org/licenses/>. * */ -header, nav { +header { display: none; } #content-wrapper { padding-top: 0; } +#app-content { + margin-left: 0; + overflow-x: auto; } + #app-content-wrapper { min-height: inherit !important; } .warning_bar .fa-times { margin-right: 20px; } +#passman-controls .breadcrumb { + padding-left: 0; } + #passman-controls .breadcrumb a, #passman-controls .breadcrumb a i { + cursor: default; } + .tab_container { padding-top: 10px; margin-bottom: 20px; } @@ -47,10 +56,10 @@ header, nav { padding-right: 5px; font-size: 10px; } -.tab_header { - margin: 0; } - .angularjs-datetime-picker { z-index: 9999; } +.icon-picker { + display: none; } + /*# sourceMappingURL=bookmarklet.css.map */ diff --git a/css/bookmarklet.css.map b/css/bookmarklet.css.map index 965bcb8c..c37211e7 100644 --- a/css/bookmarklet.css.map +++ b/css/bookmarklet.css.map @@ -1,6 +1,6 @@ { "version": 3, -"mappings": "AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH,WAAW;EACT,OAAO,EAAE,IAAI;;AAKf,gBAAgB;EACd,WAAW,EAAE,CAAC;;AAIhB,oBAAoB;EAClB,UAAU,EAAE,kBAAkB;;AAGhC,sBAAuB;EACtB,YAAY,EAAE,IAAI;;AAEnB,cAAc;EACZ,WAAW,EAAE,IAAI;EAKjB,aAAa,EAAE,IAAI;EAJnB,kBAAG;IACD,aAAa,EAAE,GAAG;IAClB,QAAQ,EAAE,MAAM;;AAIpB,cAAc;EACZ,UAAU,EAAE,IAAI;;AAElB,aAAa;EACX,KAAK,EAAE,KAAK;EACZ,UAAU,EAAE,KAAK;EACjB,aAAa,EAAE,GAAG;EAClB,SAAS,EAAE,IAAI;;AAEjB,WAAW;EACT,MAAM,EAAE,CAAC;;AAEX,0BAA0B;EACxB,OAAO,EAAE,IAAI", +"mappings": "AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH,MAAO;EACL,OAAO,EAAE,IAAI;;AAOf,gBAAiB;EACf,WAAW,EAAE,CAAC;;AAIhB,YAAa;EACX,WAAW,EAAE,CAAC;EACd,UAAU,EAAE,IAAI;;AAGlB,oBAAqB;EACnB,UAAU,EAAE,kBAAkB;;AAGhC,sBAAuB;EACrB,YAAY,EAAE,IAAI;;AAGpB,6BAA8B;EAC5B,YAAY,EAAE,CAAC;EACf,kEAAO;IACL,MAAM,EAAE,OAAO;;AAInB,cAAe;EACb,WAAW,EAAE,IAAI;EAOjB,aAAa,EAAE,IAAI;EALnB,kBAAI;IACF,aAAa,EAAE,GAAG;IAClB,QAAQ,EAAE,MAAM;;AAMpB,cAAe;EACb,UAAU,EAAE,IAAI;;AAGlB,aAAc;EACZ,KAAK,EAAE,KAAK;EACZ,UAAU,EAAE,KAAK;EACjB,aAAa,EAAE,GAAG;EAClB,SAAS,EAAE,IAAI;;AAGjB,0BAA2B;EACzB,OAAO,EAAE,IAAI;;AAGf,YAAa;EACX,OAAO,EAAE,IAAI", "sources": ["../sass/bookmarklet.scss"], "names": [], "file": "bookmarklet.css" diff --git a/js/app/controllers/bookmarklet.js b/js/app/controllers/bookmarklet.js index a1d292bd..6673dba2 100644 --- a/js/app/controllers/bookmarklet.js +++ b/js/app/controllers/bookmarklet.js @@ -411,9 +411,13 @@ NotificationService.showNotification($translate.instant('credential.created'), 5000); }); } + setTimeout(() => window.close(), 3000); }; + $scope.cancel = function () { + window.close(); + }; } ]); -}());
\ No newline at end of file +}()); diff --git a/js/app/controllers/export.js b/js/app/controllers/export.js index b284048c..f152b506 100644 --- a/js/app/controllers/export.js +++ b/js/app/controllers/export.js @@ -72,15 +72,19 @@ if (vault.hasOwnProperty('credentials')) { if (vault.credentials.length > 0) { for (var i = 0; i < vault.credentials.length; i++) { - var _credential = angular.copy(vault.credentials[i]); - if (_credential.hidden === 0) { - var key = CredentialService.getSharedKeyFromCredential(_credential); - _credential = CredentialService.decryptCredential(_credential, key); - _credential.vault_key = key; - _credentials.push(_credential); + try { + var _credential = angular.copy(vault.credentials[i]); + if (_credential.hidden === 0) { + var key = CredentialService.getSharedKeyFromCredential(_credential); + _credential = CredentialService.decryptCredential(_credential, key); + _credential.vault_key = key; + _credentials.push(_credential); + } + } catch (e) { + _log($translate.instant('export.decrypt.error', {credential: (vault.credentials[i].label !== undefined) ? vault.credentials[i].label : i})); } } - $window.PassmanExporter[$scope.selectedExporter.id].export(_credentials, FileService, EncryptService).then(function () { + $window.PassmanExporter[$scope.selectedExporter.id].export(_credentials, FileService, EncryptService, $scope.log, $translate).then(function () { _log($translate.instant('done')); }); } @@ -92,4 +96,4 @@ }]); -}());
\ No newline at end of file +}()); diff --git a/js/app/controllers/settings.js b/js/app/controllers/settings.js index 750b41a4..9fa1f155 100644 --- a/js/app/controllers/settings.js +++ b/js/app/controllers/settings.js @@ -87,8 +87,8 @@ }); var btn_txt = $translate.instant('bookmarklet.text'); - var http = location.protocol, slashes = http.concat("//"), host = slashes.concat(window.location.hostname), complete = host + location.pathname; - $scope.bookmarklet = $sce.trustAsHtml("<a class=\"button\" href=\"javascript:(function(){var a=window,b=document,c=encodeURIComponent,e=c(document.title),d=a.open('" + complete + "bookmarklet?url='+c(b.location)+'&title='+e,'bkmk_popup','left='+((a.screenX||a.screenLeft)+10)+',top='+((a.screenY||a.screenTop)+10)+',height=750px,width=475px,resizable=0,alwaysRaised=1');a.setTimeout(function(){d.focus()},300);})();\">" + btn_txt + "</a>"); + var http = location.protocol, slashes = http.concat("//"), host = slashes.concat(window.location.hostname + ":" + window.location.port), complete = host + location.pathname; + $scope.bookmarklet = $sce.trustAsHtml("<a class=\"button\" href=\"javascript:(function(){var a=window,b=document,c=encodeURIComponent,e=c(document.title),d=a.open('" + complete + "/bookmarklet?url='+c(b.location)+'&title='+e,'bkmk_popup','left='+((a.screenX||a.screenLeft)+10)+',top='+((a.screenY||a.screenTop)+10)+',height=750px,width=475px,resizable=0,alwaysRaised=1');a.setTimeout(function(){d.focus()},300);})();\">" + btn_txt + "</a>"); $scope.saveVaultSettings = function () { @@ -322,4 +322,4 @@ }]); -}());
\ No newline at end of file +}()); diff --git a/js/exporters/exporter-csv.js b/js/exporters/exporter-csv.js index 25fbc67c..0d348406 100644 --- a/js/exporters/exporter-csv.js +++ b/js/exporters/exporter-csv.js @@ -30,10 +30,10 @@ PassmanExporter.csv = { } }; -PassmanExporter.csv.export = function (credentials, FileService, EncryptService) { +PassmanExporter.csv.export = function (credentials, FileService, EncryptService, _log, $translate) { /** global: C_Promise */ return new C_Promise(function () { - PassmanExporter.getCredentialsWithFiles(credentials, FileService, EncryptService).then((function(){ + PassmanExporter.getCredentialsWithFiles(credentials, FileService, EncryptService, _log, $translate).then((function(){ var headers = ['label', 'username', 'password', 'email', 'description', 'tags', 'url', 'custom_fields', 'files']; var file_data = '"' + headers.join('","') + '"\n'; for (var i = 0; i < credentials.length; i++) { diff --git a/js/exporters/exporter-json.js b/js/exporters/exporter-json.js index dc20b68b..17a29259 100644 --- a/js/exporters/exporter-json.js +++ b/js/exporters/exporter-json.js @@ -30,10 +30,10 @@ PassmanExporter.json = { } }; -PassmanExporter.json.export = function (credentials, FileService, EncryptService) { +PassmanExporter.json.export = function (credentials, FileService, EncryptService, _log, $translate) { /** global: C_Promise */ return new C_Promise(function () { - PassmanExporter.getCredentialsWithFiles(credentials, FileService, EncryptService).then((function(){ + PassmanExporter.getCredentialsWithFiles(credentials, FileService, EncryptService, _log, $translate).then((function(){ var _output = []; for (var i = 0; i < credentials.length; i++) { var _credential = angular.copy(credentials[i]); diff --git a/js/exporters/exporter-main.js b/js/exporters/exporter-main.js index 48cccc5f..296cce11 100644 --- a/js/exporters/exporter-main.js +++ b/js/exporters/exporter-main.js @@ -23,87 +23,104 @@ // Importers should always start with this if (!window['PassmanExporter']) { var PassmanExporter = { - getCredentialsWithFiles: function(credentials, FileService, EncryptService) { - var t = { - cred: credentials, - FS: FileService, - ES: EncryptService - }; - /** global: C_Promise */ - return new C_Promise(function() { - var _this = this.parent; - var credentials = _this.cred; - this.parent.total = 0; - this.parent.finished = 0; - this.parent.fileGUID_cred = []; - this.parent.files = []; - this.parent.step = (function(file) { - this.parent.finished ++; - this.call_progress({ - total: this.parent.total, - finished: this.parent.finished - }); - - var dta = this.parent.fileGUID_cred[file.guid]; - - file.filename = this.parent.ES.decryptString(file.filename, this.parent.cred[dta.cred_pos].vault_key); - file.file_data = this.parent.ES.decryptString(file.file_data, this.parent.cred[dta.cred_pos].vault_key); - - // Files and custom_fields have different field structure - if (dta.on === 'files') { - this.parent.cred[dta.cred_pos][dta.on][dta.at] = file; - } - else { - this.parent.cred[dta.cred_pos][dta.on][dta.at].value = file; - } - - // We have finished downloading everything, so let's hand over job to somewhere else! - if (this.parent.total === this.parent.finished) { - this.call_then(this.parent.cred); - } - }).bind(this); + getCredentialsWithFiles: function (credentials, FileService, EncryptService, _log, $translate) { + var t = { + cred: credentials, + FS: FileService, + ES: EncryptService + }; + /** global: C_Promise */ + return new C_Promise(function () { + var _this = this.parent; + var credentials = _this.cred; + this.parent.total = 0; + this.parent.finished = 0; + this.parent.fileGUID_cred = []; + this.parent.files = []; + this.parent.step = (function (file) { + this.parent.finished++; + this.call_progress({ + total: this.parent.total, + finished: this.parent.finished + }); - for (var i = 0; i < credentials.length; i++) { - - var item = credentials[i]; - - // Custom fields - for (c = 0; c < item.custom_fields.length; c++) { - var cf = item.custom_fields[c]; - if (cf.field_type === 'file') { - this.parent.total ++; - this.parent.fileGUID_cred[cf.value.guid] = { - cred_pos: i, - on: 'custom_fields', - at: c - }; + var dta = this.parent.fileGUID_cred[file.guid]; - this.parent.FS.getFile(cf.value).then((function(data){ - this.parent.step(data); - }).bind(this)); - } - } - - // Also get all files - for (var c = 0; c < item.files.length; c++) { - this.parent.total ++; - this.parent.fileGUID_cred[item.files[c].guid] = { - cred_pos: i, - on: 'files', - at: c - }; + file.filename = this.parent.ES.decryptString(file.filename, this.parent.cred[dta.cred_pos].vault_key); + file.file_data = this.parent.ES.decryptString(file.file_data, this.parent.cred[dta.cred_pos].vault_key); - this.parent.FS.getFile(item.files[c]).then((function(data){ - this.parent.step(data); - }).bind(this)); - } - } - - // We have finished downloading everything, so let's hand over job to somewhere else! - if (this.parent.total === 0) { - this.call_then(this.parent.cred); - } - }, t); - } + // Files and custom_fields have different field structure + if (dta.on === 'files') { + this.parent.cred[dta.cred_pos][dta.on][dta.at] = file; + } else { + this.parent.cred[dta.cred_pos][dta.on][dta.at].value = file; + } + + // We have finished downloading everything, so let's hand over job to somewhere else! + if (this.parent.total === this.parent.finished) { + this.call_then(this.parent.cred); + } + }).bind(this); + this.parent.stepFailed = (function (error) { + _log.push($translate.instant('export.decrypt.error', {credential: error.config.filename})); + this.parent.finished++; + this.call_progress({ + total: this.parent.total, + finished: this.parent.finished + }); + + // We have finished downloading everything, so let's hand over job to somewhere else! + if (this.parent.total === this.parent.finished) { + this.call_then(this.parent.cred); + } + }).bind(this); + + for (var i = 0; i < credentials.length; i++) { + + var item = credentials[i]; + + // Custom fields + for (c = 0; c < item.custom_fields.length; c++) { + var cf = item.custom_fields[c]; + if (cf.field_type === 'file') { + this.parent.total++; + this.parent.fileGUID_cred[cf.value.guid] = { + cred_pos: i, + on: 'custom_fields', + at: c + }; + + this.parent.FS.getFile(cf.value).then((function (data) { + this.parent.step(data); + }).bind(this), (function (error) { + this.parent.stepFailed(error); + }).bind(this)); + } + } + + // Also get all files + for (var c = 0; c < item.files.length; c++) { + this.parent.total++; + this.parent.fileGUID_cred[item.files[c].guid] = { + cred_pos: i, + on: 'files', + at: c + }; + + this.parent.FS.getFile(item.files[c]).then((function (data) { + this.parent.step(data); + }).bind(this), (function (error) { + this.parent.stepFailed(error); + }).bind(this)); + } + } + + // We have finished downloading everything, so let's hand over job to somewhere else! + console.warn("parent.total " + this.parent.total); + if (this.parent.total === 0) { + this.call_then(this.parent.cred); + } + }, t); + } }; -}
\ No newline at end of file +} diff --git a/js/templates.js b/js/templates.js index 1ea17bfe..34c2e989 100644 --- a/js/templates.js +++ b/js/templates.js @@ -9,7 +9,7 @@ angular.module('views/credential_revisions.html', []).run(['$templateCache', fun angular.module('views/edit_credential.html', []).run(['$templateCache', function($templateCache) { 'use strict'; $templateCache.put('views/edit_credential.html', - '<div id="passman-controls"><div class="breadcrumb"><div class="breadcrumb"><div class="crumb svg ui-droppable" data-dir="/"><a ng-click="logout()"><i class="fa fa-home"></i></a></div><div class="crumb svg" data-dir="/Test"><a ng-click="cancel()">{{active_vault.name}}</a></div><div class="crumb svg last" data-dir="/Test"><a ng-if="storedCredential.credential_id">{{ \'edit.credential\' | translate}} "{{storedCredential.label}}"</a> <a ng-if="!storedCredential.credential_id">{{ \'create.credential\' | translate}}</a></div></div></div></div><div><ul class="tab_header"><li ng-repeat="tab in tabs track by $index" class="tab" ng-class="isActiveTab(tab)? \'active\' : \'inactive\'" ng-click="onClickTab(tab)" use-theme color="\'true\'">{{tab.title}}<div class="indicator" use-theme negative="\'true\'"></div></li></ul><div class="tab_container edit_credential" use-theme type="\'border-top-color\'"><div ng-include="currentTab.url"></div><button ng-click="saveCredential()" ng-disabled="saving"><i class="fa fa-spinner fa-spin" ng-show="saving"></i> {{ \'save\' | translate}}</button> <button ng-click="cancel()">{{ \'cancel\' | translate}}</button></div></div>'); + '<div id="passman-controls"><div class="breadcrumb"><div class="breadcrumb"><div class="crumb svg ui-droppable" data-dir="/"><a ng-click="logout()"><i class="fa fa-home"></i></a></div><div class="crumb svg" data-dir="/Test"><a ng-click="cancel()">{{ active_vault.name }}</a></div><div class="crumb svg last" data-dir="/Test"><a ng-if="storedCredential.credential_id">{{ \'edit.credential\' | translate }} "{{ storedCredential.label }}"</a> <a ng-if="!storedCredential.credential_id">{{ \'create.credential\' | translate }}</a></div></div></div></div><div class="app-sidebar-tabs"><nav class="app-sidebar-tabs__nav"><ul><li ng-repeat="tab in tabs track by $index" class="app-sidebar-tabs__tab" ng-class="isActiveTab(tab)? \'active\' : \'inactive\'" ng-click="onClickTab(tab)">{{ tab.title }}</li></ul></nav><div class="tab_container edit_credential" use-theme type="\'border-top-color\'"><div ng-include="currentTab.url"></div><button ng-click="saveCredential()" ng-disabled="saving"><i class="fa fa-spinner fa-spin" ng-show="saving"></i> {{ \'save\' | translate }}</button> <button ng-click="cancel()">{{ \'cancel\' | translate }}</button></div></div>'); }]); angular.module('views/partials/credential_template.html', []).run(['$templateCache', function($templateCache) { @@ -119,19 +119,19 @@ angular.module('views/partials/password-meter.html', []).run(['$templateCache', angular.module('views/settings.html', []).run(['$templateCache', function($templateCache) { 'use strict'; $templateCache.put('views/settings.html', - '<div id="passman-controls"><div class="breadcrumb"><div class="breadcrumb"><div class="crumb svg ui-droppable" data-dir="/"><a ng-click="logout()"><i class="fa fa-home"></i></a></div><div class="crumb svg"><a ng-click="cancel()">{{active_vault.name}}</a></div><div class="crumb svg last"><a>{{ \'settings\' | translate}}</a></div></div></div></div><div><ul class="tab_header"><li ng-repeat="tab in tabs track by $index" class="tab" ng-class="isActiveTab(tab)? \'active\' : \'inactive\'" ng-click="onClickTab(tab)" use-theme color="\'true\'">{{tab.title | translate}}<div class="indicator" use-theme negative="\'true\'"></div></li></ul><div class="tab_container settings edit_credential" use-theme type="\'border-top-color\'"><div ng-include="currentTab.url"></div></div></div>'); + '<div id="passman-controls"><div class="breadcrumb"><div class="breadcrumb"><div class="crumb svg ui-droppable" data-dir="/"><a ng-click="logout()"><i class="fa fa-home"></i></a></div><div class="crumb svg"><a ng-click="cancel()">{{ active_vault.name }}</a></div><div class="crumb svg last"><a>{{ \'settings\' | translate }}</a></div></div></div></div><div class="app-sidebar-tabs"><nav class="app-sidebar-tabs__nav"><ul><li ng-repeat="tab in tabs track by $index" class="app-sidebar-tabs__tab" ng-class="isActiveTab(tab)? \'active\' : \'inactive\'" ng-click="onClickTab(tab)">{{ tab.title | translate }}</li></ul></nav><div class="tab_container settings edit_credential" use-theme type="\'border-top-color\'"><div ng-include="currentTab.url"></div></div></div>'); }]); angular.module('views/share_credential.html', []).run(['$templateCache', function($templateCache) { 'use strict'; $templateCache.put('views/share_credential.html', - '<div class="main_list.share"><div id="passman-controls"><div class="actions creatable"><div class="breadcrumb"><div class="crumb svg ui-droppable" data-dir="/"><a ng-click="logout()"><i class="fa fa-home"></i></a></div><div class="crumb svg" data-dir="/Test"><a ng-click="cancel()">{{active_vault.name}}</a></div><div class="crumb svg last" data-dir="/Test"><a ng-if="storedCredential.credential_id">{{ \'share.credential\' | translate}} {{storedCredential.label}}</a></div></div></div></div><ul class="tab_header"><li ng-repeat="tab in tabs track by $index" class="tab" ng-class="{active:isActiveTab(tab)}" ng-click="onClickTab(tab)" use-theme color="\'true\'">{{tab.title | translate}}<div class="indicator" use-theme negative="\'true\'"></div></li></ul><div class="tab_container share_credential" ng-show="currentTab"><div ng-include="currentTab.url"></div><button ng-click="applyShare()" ng-disabled="share_settings.linkSharing.enabled === false && share_settings.credentialSharedWithUserAndGroup.length === 0">{{ \'share\' | translate}}</button> <button ng-click="cancel()">{{ \'cancel\' | translate}}</button> <button class="btn btn-danger" ng-disabled="!storedCredential.shared_key" ng-click="unshareCredential(storedCredential)">{{ \'unshare\' | translate}}</button></div></div>'); + '<div id="passman-controls"><div class="actions creatable"><div class="breadcrumb"><div class="crumb svg ui-droppable" data-dir="/"><a ng-click="logout()"><i class="fa fa-home"></i></a></div><div class="crumb svg" data-dir="/Test"><a ng-click="cancel()">{{ active_vault.name }}</a></div><div class="crumb svg last" data-dir="/Test"><a ng-if="storedCredential.credential_id">{{ \'share.credential\' | translate }} {{ storedCredential.label }}</a></div></div></div></div><div class="app-sidebar-tabs"><nav class="app-sidebar-tabs__nav"><ul><li ng-repeat="tab in tabs track by $index" class="app-sidebar-tabs__tab" ng-class="isActiveTab(tab)? \'active\' : \'inactive\'" ng-click="onClickTab(tab)">{{ tab.title | translate }}</li></ul></nav><div class="tab_container share_credential" ng-show="currentTab"><div ng-include="currentTab.url"></div><button ng-click="applyShare()" ng-disabled="share_settings.linkSharing.enabled === false && share_settings.credentialSharedWithUserAndGroup.length === 0">{{ \'share\' | translate }}</button> <button ng-click="cancel()">{{ \'cancel\' | translate }}</button> <button class="btn btn-danger" ng-disabled="!storedCredential.shared_key" ng-click="unshareCredential(storedCredential)">{{ \'unshare\' | translate }}</button></div></div>'); }]); angular.module('views/show_vault.html', []).run(['$templateCache', function($templateCache) { 'use strict'; $templateCache.put('views/show_vault.html', - '<div class="main_list" off-click-filter="\'.download-js-link, .sidebar-shown, #app-sidebar\'"><div id="passman-controls" ng-class="{ \'sidebar-shown\': selectedCredential }"><div class="breadcrumb"><div class="breadcrumb"><div class="crumb svg ui-droppable" data-dir="/"><a ng-click="logout()"><i class="fa fa-home"></i></a></div><div class="crumb svg" ng-click="clearState()"><a>{{active_vault.name}}</a></div></div><div class="addCredential" ng-hide="delete_time>0"><button ng-click="addCredential()"><i class="fa fa-plus"></i></button></div><div class="addCredential" ng-hide="delete_time>0"><button ng-click="refresh()"><i class="fa fa-refresh"></i></button></div></div><div class="title" credential-counter="filtered_credentials" vault="active_vault" delete-time="delete_time" filters="filterOptions"></div><div class="searchboxContainer" ng-init="filterOptionShown = false;" off-click="filterOptionShown = false;"><input type="text" ng-model="filterOptions.filterText" class="searchbox" id="searchBox" placeholder="{{\'search.credential\' | translate}}" select-on-click clear-btn ng-click="filterOptionShown = true;"><div class="searchOptions" ng-show="filterOptionShown"><input type="checkbox" ng-model="filterOptions.useRegex"> {{ \'use.regex\' | translate }}</div></div><div class="viewModes"><div class="view-mode" ng-class="{\'active\': view_mode === \'list\' }" ng-click="switchViewMode(\'list\')"><i class="fa fa-list"></i></div><div class="view-mode" ng-class="{\'active\': view_mode === \'grid\' }" ng-click="switchViewMode(\'grid\')"><i class="fa fa-th-large"></i></div></div></div><div class="loaderContainer" ng-if="show_spinner"><div class="loader" use-theme type="\'border-bottom-color\'"></div></div><div ng-init="menuOpen = false;"><table class="credential-table" ng-if="view_mode === \'list\'"><tr ng-repeat="credential in filtered_credentials | orderBy:\'label\'" ng-if="showCredentialRow(credential)" ng-click="selectCredential(credential)" ng-dblclick="editCredential(credential)" ng-class="{\'selected\': selectedCredential.credential_id == credential.credential_id}"><td ng-class="{\'compromised\': credential.compromised }"><span class="tags"><span class="tag" ng-repeat="tag in credential.tags_raw">{{ ::tag.text}}</span> </span><span class="icon" ng-if="credential.url || credential.icon"><credential-icon credential="credential"></credential-icon></span><span class="icon" ng-if="!credential.url && !credential.icon"><i class="fa fa-lock" ng-if="!credential.acl && !credential.shared_key"></i> <i class="fa fa-share-alt" ng-if="credential.acl"></i> <i class="fa fa-share-alt-square" ng-if="credential.shared_key"></i> </span><a class="label">{{ ::credential.label}}</a> <span ng-if="credential.compromised" class="compromised-list"><i class="icon-error icon"></i> <span class="text">{{ \'compromised.warning.list\' | translate}}</span></span></td></tr></table><ul class="grid-view" ng-if="view_mode === \'grid\'"><li class="credential" ng-repeat="credential in filtered_credentials | orderBy:\'label\'" ng-if="credential.hidden == 0 && showCredentialRow(credential)" ng-click="selectCredential(credential)" use-theme type="\'border-color\'"><div class="credential_content"><div><span class="icon" ng-if="credential.url"><credential-icon credential="credential"></credential-icon></span><span class="icon" ng-if="!credential.url"><i class="fa fa-lock" ng-if="!credential.acl && !credential.shared_key"></i> <i class="fa fa-share-alt" ng-if="credential.acl"></i> <i class="fa fa-share-alt-square" ng-if="credential.shared_key"></i></span><div class="label">{{ ::credential.label}}</div></div><div class="tags"><div class="tag" ng-repeat="tag in credential.tags_raw">{{ ::tag.text}}</div></div></div></li></ul><div ng-if="getListSizes().listsize_wout_deleted==0 && no_credentials_label.all && !show_spinner && selectedtags.length==0 && filterOptions.filterText==\'\'" class="nopasswords" ng-hide="delete_time>0"><b>{{\'vault.hint.hello\' | translate}}</b><br><div>{{\'vault.hint.hello.add\' | translate}}</div><div class=""><button ng-click="addCredential()">+</button></div></div><div ng-if="getListSizes().listsize_wout_deleted==0 && no_credentials_label.all && !show_spinner && selectedtags.length>0" class="nopasswords" ng-hide="delete_time>0"><div>{{ \'vault.hint.list.notags\' | translate}}</div></div><div ng-if="getListSizes().listsize_wout_deleted==0 && no_credentials_label.all && !show_spinner && selectedtags.length==0 && filterOptions.filterText!=\'\'" class="nopasswords" ng-hide="delete_time>0"><div>{{ \'vault.hint.list.nosearch\' | translate}} <b>\'{{filterOptions.filterText}}\'</b></div></div><div class="nopasswords" ng-if="no_credentials_label.s_good" ng-hide="getListSizes().listsize_wout_deleted>0"><div>{{ \'vault.hint.list.nogood\' | translate}}</div></div><div class="nopasswords" ng-if="no_credentials_label.s_medium" ng-hide="getListSizes().listsize_wout_deleted>0"><div>{{ \'vault.hint.list.nomedium\' | translate}}</div></div><div class="nopasswords" ng-if="no_credentials_label.s_low" ng-hide="getListSizes().listsize_wout_deleted>0"><div>{{ \'vault.hint.list.nobad\' | translate}}</div></div><div class="nopasswords" ng-if="no_credentials_label.expired" ng-hide="getListSizes().listsize_wout_deleted>0"><div>{{ \'vault.hint.list.noexpired\' | translate}}</div></div><div class="nopasswords" ng-if="getListSizes().listsize_deleted==0" ng-hide="delete_time==0"><div>{{ \'vault.hint.list.nodeleted\' | translate}}</div></div></div></div><div id="app-sidebar" class="app_sidebar" ng-show="selectedCredential" off-click="closeSelected()"><span class="close icon-close" ng-click="closeSelected()" alt="Close"></span><div class="sidebar"><span class="icon sidebar-icon" ng-if="selectedCredential.url || selectedCredential.icon"><credential-icon credential="selectedCredential"></credential-icon></span><span class="icon sidebar-icon" ng-if="!selectedCredential.url && !selectedCredential.icon"><i class="fa fa-lock fa-3x icon-image"></i></span><h2 class="sidebar-label">{{selectedCredential.label}}</h2></div><div credential-template="selectedCredential"></div><div ng-show="selectedCredential"><div><button class="button" ng-click="editCredential(selectedCredential)" ng-if="selectedCredential.delete_time == 0 && hasPermission(selectedCredential.acl.permissions, permissions.permissions.WRITE)"><span class="fa fa-edit"></span> {{ \'edit\' | translate}}</button> <button class="button" ng-click="deleteCredential(selectedCredential)" ng-if="selectedCredential.delete_time == 0 && hasPermission(selectedCredential.acl.permissions, permissions.permissions.WRITE)"><span class="fa fa-trash"></span> {{ \'delete\' | translate}}</button> <button class="button" ng-click="shareCredential(selectedCredential)" ng-if="selectedCredential.delete_time == 0 && selectedCredential.acl === undefined &&\n' + + '<div class="main_list" off-click-filter="\'.download-js-link, .sidebar-shown, #app-sidebar\'"><div id="passman-controls" ng-class="{ \'sidebar-shown\': selectedCredential }"><div class="breadcrumb"><div class="breadcrumb"><div class="crumb svg ui-droppable" data-dir="/"><a ng-click="logout()"><i class="fa fa-home"></i></a></div><div class="crumb svg" ng-click="clearState()"><a>{{active_vault.name}}</a></div></div><div class="addCredential" ng-hide="delete_time>0"><button ng-click="addCredential()"><i class="fa fa-plus"></i></button></div><div class="addCredential" ng-hide="delete_time>0"><button ng-click="refresh()"><i class="fa fa-refresh"></i></button></div></div><div class="title" credential-counter="filtered_credentials" vault="active_vault" delete-time="delete_time" filters="filterOptions"></div><div class="searchboxContainer" ng-init="filterOptionShown = false;" off-click="filterOptionShown = false;"><input type="text" ng-model="filterOptions.filterText" class="searchbox" id="searchBox" placeholder="{{\'search.credential\' | translate}}" select-on-click clear-btn ng-click="filterOptionShown = true;"><div class="searchOptions" ng-show="filterOptionShown"><input type="checkbox" ng-model="filterOptions.useRegex"> {{ \'use.regex\' | translate }}</div></div><div class="viewModes"><div class="view-mode" ng-class="{\'active\': view_mode === \'list\' }" ng-click="switchViewMode(\'list\')"><i class="fa fa-list"></i></div><div class="view-mode" ng-class="{\'active\': view_mode === \'grid\' }" ng-click="switchViewMode(\'grid\')"><i class="fa fa-th-large"></i></div></div></div><div class="loaderContainer" ng-if="show_spinner"><div class="loader" use-theme type="\'border-bottom-color\'"></div></div><div ng-init="menuOpen = false;"><table class="credential-table" ng-if="view_mode === \'list\'"><tr ng-repeat="credential in filtered_credentials | orderBy:\'label\'" ng-if="showCredentialRow(credential)" ng-click="selectCredential(credential)" ng-dblclick="editCredential(credential)" ng-class="{\'selected\': selectedCredential.credential_id == credential.credential_id}"><td ng-class="{\'compromised\': credential.compromised }"><span class="tags"><span class="tag" ng-repeat="tag in credential.tags_raw">{{ ::tag.text}}</span> </span><span class="icon" ng-if="credential.url || (credential.icon && credential.icon.type !== false)"><credential-icon credential="credential"></credential-icon></span><span class="icon" ng-if="!credential.url && (!credential.icon || (credential.icon && !credential.icon.type))"><i class="fa fa-lock" ng-if="!credential.acl && !credential.shared_key"></i> <i class="fa fa-share-alt" ng-if="credential.acl"></i> <i class="fa fa-share-alt-square" ng-if="credential.shared_key"></i> </span><a class="label">{{ ::credential.label}}</a> <span ng-if="credential.compromised" class="compromised-list"><i class="icon-error icon"></i> <span class="text">{{ \'compromised.warning.list\' | translate}}</span></span></td></tr></table><ul class="grid-view" ng-if="view_mode === \'grid\'"><li class="credential" ng-repeat="credential in filtered_credentials | orderBy:\'label\'" ng-if="credential.hidden == 0 && showCredentialRow(credential)" ng-click="selectCredential(credential)" use-theme type="\'border-color\'"><div class="credential_content"><div><span class="icon" ng-if="credential.url"><credential-icon credential="credential"></credential-icon></span><span class="icon" ng-if="!credential.url"><i class="fa fa-lock" ng-if="!credential.acl && !credential.shared_key"></i> <i class="fa fa-share-alt" ng-if="credential.acl"></i> <i class="fa fa-share-alt-square" ng-if="credential.shared_key"></i></span><div class="label">{{ ::credential.label}}</div></div><div class="tags"><div class="tag" ng-repeat="tag in credential.tags_raw">{{ ::tag.text}}</div></div></div></li></ul><div ng-if="getListSizes().listsize_wout_deleted==0 && no_credentials_label.all && !show_spinner && selectedtags.length==0 && filterOptions.filterText==\'\'" class="nopasswords" ng-hide="delete_time>0"><b>{{\'vault.hint.hello\' | translate}}</b><br><div>{{\'vault.hint.hello.add\' | translate}}</div><div class=""><button ng-click="addCredential()">+</button></div></div><div ng-if="getListSizes().listsize_wout_deleted==0 && no_credentials_label.all && !show_spinner && selectedtags.length>0" class="nopasswords" ng-hide="delete_time>0"><div>{{ \'vault.hint.list.notags\' | translate}}</div></div><div ng-if="getListSizes().listsize_wout_deleted==0 && no_credentials_label.all && !show_spinner && selectedtags.length==0 && filterOptions.filterText!=\'\'" class="nopasswords" ng-hide="delete_time>0"><div>{{ \'vault.hint.list.nosearch\' | translate}} <b>\'{{filterOptions.filterText}}\'</b></div></div><div class="nopasswords" ng-if="no_credentials_label.s_good" ng-hide="getListSizes().listsize_wout_deleted>0"><div>{{ \'vault.hint.list.nogood\' | translate}}</div></div><div class="nopasswords" ng-if="no_credentials_label.s_medium" ng-hide="getListSizes().listsize_wout_deleted>0"><div>{{ \'vault.hint.list.nomedium\' | translate}}</div></div><div class="nopasswords" ng-if="no_credentials_label.s_low" ng-hide="getListSizes().listsize_wout_deleted>0"><div>{{ \'vault.hint.list.nobad\' | translate}}</div></div><div class="nopasswords" ng-if="no_credentials_label.expired" ng-hide="getListSizes().listsize_wout_deleted>0"><div>{{ \'vault.hint.list.noexpired\' | translate}}</div></div><div class="nopasswords" ng-if="getListSizes().listsize_deleted==0" ng-hide="delete_time==0"><div>{{ \'vault.hint.list.nodeleted\' | translate}}</div></div></div></div><div id="app-sidebar" class="app_sidebar" ng-show="selectedCredential" off-click="closeSelected()"><span class="close icon-close" ng-click="closeSelected()" alt="Close"></span><div class="sidebar"><span class="icon sidebar-icon" ng-if="selectedCredential.url || (selectedCredential.icon && selectedCredential.icon.type !== false)"><credential-icon credential="selectedCredential"></credential-icon></span><span class="icon sidebar-icon" ng-if="!selectedCredential.url && (!selectedCredential.icon || (selectedCredential.icon && !selectedCredential.icon.type))"><i class="fa fa-lock fa-3x icon-image"></i></span><h2 class="sidebar-label">{{selectedCredential.label}}</h2></div><div credential-template="selectedCredential"></div><div ng-show="selectedCredential"><div><button class="button" ng-click="editCredential(selectedCredential)" ng-if="selectedCredential.delete_time == 0 && hasPermission(selectedCredential.acl.permissions, permissions.permissions.WRITE)"><span class="fa fa-edit"></span> {{ \'edit\' | translate}}</button> <button class="button" ng-click="deleteCredential(selectedCredential)" ng-if="selectedCredential.delete_time == 0 && hasPermission(selectedCredential.acl.permissions, permissions.permissions.WRITE)"><span class="fa fa-trash"></span> {{ \'delete\' | translate}}</button> <button class="button" ng-click="shareCredential(selectedCredential)" ng-if="selectedCredential.delete_time == 0 && selectedCredential.acl === undefined &&\n' + ' (settings.user_sharing_enabled === 1 || settings.user_sharing_enabled === \'1\' || settings.link_sharing_enabled === 1 || settings.link_sharing_enabled === \'1\')"><span class="fa fa-share"></span> {{ \'share\' | translate}}</button> <button class="button" ng-click="getRevisions(selectedCredential)" ng-if="selectedCredential.delete_time == 0 && hasPermission(selectedCredential.acl.permissions, permissions.permissions.HISTORY)"><span class="fa fa-undo"></span> {{ \'revisions\' | translate}}</button> <button class="button" ng-if="selectedCredential.delete_time > 0" ng-click="recoverCredential(selectedCredential) && hasPermission(selectedCredential.acl.permissions, permissions.permissions.WRITE)"><span class="fa fa-recycle"></span> {{\'recover\' | translate}}</button> <button class="button" ng-if="selectedCredential.delete_time > 0" ng-click="destroyCredential(selectedCredential)"><span class="fa fa-bomb"></span> {{\'destroy\' | translate}}</button></div></div></div><div class="share_popup" style="display: none" title="{{ \'sharereq.title\' | translate }}"><p>{{ \'sharereq.line1\' | translate}} {{ \'sharereq.line2\' | translate}}</p><br><table class="table"><thead><tr><td><b>{{ \'label\' | translate}}</b></td><td><b>{{ \'permissions\' | translate}}</b></td><td><b>{{ \'received.from\' | translate}}</b></td><td><b>{{ \'date\' | translate}}</b></td></tr></thead><tr ng-repeat="share_request in incoming_share_requests" ng-if="share_request.target_vault_id == active_vault.vault_id"><td>{{share_request.credential_label}}</td><td>{{share_request.permissions}}</td><td>{{share_request.from_user_id}}</td><td>{{share_request.created * 1000 | date:\'dd-MM-yyyy @ HH:mm:ss\'}}</td><td><span class="link" ng-click="acceptShareRequest(share_request)"><b>{{ \'accept\' | translate}}</b></span> | <span class="link" ng-click="declineShareRequest(share_request)">{{ \'decline\' | translate}}</span></td></tr></table></div>'); }]); diff --git a/sass/bookmarklet.scss b/sass/bookmarklet.scss index fca8bc17..50e63061 100644 --- a/sass/bookmarklet.scss +++ b/sass/bookmarklet.scss @@ -20,44 +20,65 @@ * */ -header, nav{ +header { display: none; } -#content{ + +#content { } -#content-wrapper{ + +#content-wrapper { padding-top: 0; } -#app-content-wrapper{ +#app-content { + margin-left: 0; + overflow-x: auto; +} + +#app-content-wrapper { min-height: inherit !important; } .warning_bar .fa-times { - margin-right: 20px; + margin-right: 20px; } -.tab_container{ + +#passman-controls .breadcrumb { + padding-left: 0; + a, a i { + cursor: default; + } +} + +.tab_container { padding-top: 10px; - div{ + + div { margin-bottom: 5px; overflow: hidden; } + margin-bottom: 20px; } -.vault_wrapper{ + +.vault_wrapper { margin-top: 70px; } -.active_vault{ + +.active_vault { float: right; text-align: right; padding-right: 5px; font-size: 10px; } -.tab_header{ - margin: 0; -} -.angularjs-datetime-picker{ + +.angularjs-datetime-picker { z-index: 9999; -}
\ No newline at end of file +} + +.icon-picker { + display: none; +} diff --git a/sass/menu.scss b/sass/menu.scss index 66a268a7..8d849417 100644 --- a/sass/menu.scss +++ b/sass/menu.scss @@ -55,7 +55,7 @@ //border-left: 3px solid #0082c9; background-image: var(--icon-delete-e9322d); } - background-color: #fff !important; + //background-color: #fff !important; opacity: 1 !important; z-index: 140; //padding: 0 20px; @@ -70,6 +70,19 @@ .collapsible:hover .app-navigation-entry-bullet{ background: var(--color-primary) !important; } + /* Custom bullet icon */ + .app-navigation-entry-bullet-with-hover { + position: absolute; + display: block; + margin: 16px; + width: 12px; + height: 12px; + border: none; + border-radius: 50%; + cursor: pointer; + transition: background 100ms ease-in-out; + z-index: 101; + } } @@ -82,7 +95,7 @@ } } - li{ + li { .app-navigation-entry-bullet-color { background-color: var(--color-primary); } @@ -99,22 +112,22 @@ background-color: #4db728; } - .highlight-selected{ - background-color: var(--color-primary); + .highlight-selected { + background-color: var(--color-primary); } - .autocomplete{ + .autocomplete { position: relative; } - a.taginput{ + a.taginput { opacity: 1; } - a{ + a { overflow: visible; - tags-input{ + tags-input { opacity: 1.0; - li{ + li { width: auto !important; } } @@ -129,4 +142,4 @@ //source https://material.io/tools/icons/?icon=restore&style=baseline .icon-expired{ background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24'><path d='M0 0h24v24H0z' fill='none'/><path d='M13 3c-4.97 0-9 4.03-9 9H1l3.89 3.89.07.14L9 12H6c0-3.87 3.13-7 7-7s7 3.13 7 7-3.13 7-7 7c-1.93 0-3.68-.79-4.94-2.06l-1.42 1.42C8.27 19.99 10.51 21 13 21c4.97 0 9-4.03 9-9s-4.03-9-9-9zm-1 5v5l4.28 2.54.72-1.21-3.5-2.08V8H12z'/></svg>"); -}
\ No newline at end of file +} diff --git a/sass/partials/tabs.scss b/sass/partials/tabs.scss index 7a5a0ca6..3ba79aa7 100644 --- a/sass/partials/tabs.scss +++ b/sass/partials/tabs.scss @@ -20,51 +20,47 @@ * */ -.tab_header { - width: calc(100vw - 300px); - // margin: 44px 0 0; - margin: 0 0 0; - list-style: none; - padding: 0; - li.tab:first-child { - margin-left: 0; - } - li.tab { - /*@include border-top-radius(2px);*/ - float: left; - border-bottom-width: 0; - margin: 0; - padding: 10px 10px 10px 10px; +.app-sidebar-tabs { + display: flex; + flex-direction: column; + min-height: 0; + flex: 1 1 100%; +} + +.app-sidebar-tabs__nav ul { + display: flex; + justify-content: stretch; +} - cursor: pointer; - border-right: 1px solid #eee; - -webkit-transition: background-color 250ms linear; - -moz-transition: background-color 250ms linear; - -o-transition: background-color 250ms linear; - -ms-transition: background-color 250ms linear; - transition: background-color 250ms linear; - .indicator { - display: none; - } - } +.app-sidebar-tabs__tab.active { + color: var(--color-text-light); + border-bottom-color: var(--color-primary-element); + box-shadow: inset 0 -1px 0 var(--color-primary-element); + font-weight: bold; +} - li.inactive { - background-color: #fff !important; - color: unset !important; - } +.app-sidebar-tabs__tab:not(.active):hover, .app-sidebar-tabs__tab:not(.active):focus { + border-bottom-color: var(--color-background-darker); + box-shadow: inset 0 -1px 0 var(--color-background-darker); +} - li.active { +.app-sidebar-tabs__tab:hover, .app-sidebar-tabs__tab:focus, .app-sidebar-tabs__tab:active, .app-sidebar-tabs__tab.active { + opacity: 1; + cursor: pointer; +} - //position: relative; - .indicator { - display: inline-block; - position: absolute; - height: 7px; - left: 0; - right: 0; - bottom: -1px; - } - } +.app-sidebar-tabs__tab { + position: relative; + display: block; + overflow: hidden; + padding: 10px 10px 10px 10px; + transition: color var(--animation-quick), opacity var(--animation-quick), border-color var(--animation-quick); + text-align: center; + white-space: nowrap; + text-overflow: ellipsis; + opacity: .7; + color: var(--color-main-text); + border-bottom: 1px solid var(--color-border); } .tab_container { diff --git a/templates/bookmarklet.php b/templates/bookmarklet.php index 0d89e76a..dd65d678 100644 --- a/templates/bookmarklet.php +++ b/templates/bookmarklet.php @@ -17,7 +17,6 @@ script('passman', 'vendor/angular-translate/angular-translate.min'); script('passman', 'vendor/angular-translate/angular-translate-loader-url.min'); script('passman', 'vendor/ng-password-meter/ng-password-meter'); script('passman', 'vendor/sjcl/sjcl'); -script('passman', 'vendor/ui-sortable/sortable'); script('passman', 'vendor/zxcvbn/zxcvbn'); script('passman', 'vendor/ng-clipboard/clipboard.min'); script('passman', 'vendor/ng-clipboard/ngclipboard'); @@ -26,6 +25,9 @@ script('passman', 'vendor/angular-xeditable/xeditable.min'); script('passman', 'vendor/sha/sha'); script('passman', 'vendor/llqrcode/llqrcode'); script('passman', 'vendor/forge.0.6.9.min'); +script('passman', 'vendor/download'); +script('passman', 'vendor/ui-sortable/sortable'); +script('passman', 'vendor/papa-parse/papaparse.min'); script('passman', 'lib/promise'); script('passman', 'lib/crypto_wrap'); @@ -37,6 +39,9 @@ script('passman', 'app/controllers/bookmarklet'); script('passman', 'app/filters/range'); script('passman', 'app/filters/propsfilter'); script('passman', 'app/filters/byte'); +script('passman', 'app/filters/tagfilter'); +script('passman', 'app/filters/escapeHTML'); +script('passman', 'app/filters/as'); script('passman', 'app/services/vaultservice'); script('passman', 'app/services/credentialservice'); script('passman', 'app/services/settingsservice'); @@ -88,23 +93,43 @@ style('passman', 'bookmarklet'); <div ng-include="'views/vaults.html'"></div> </div> <div id="app-content-wrapper" ng-if="active_vault !== false"> - <div class="active_vault"> - {{ 'bm.active.vault' | translate}} {{active_vault.name}}<br /> - <span class="link" ng-click="logout()">{{ 'change.vault' | translate }}</span> - </div> - <ul class="tab_header"> - <li ng-repeat="tab in tabs track by $index" class="tab" - ng-class="{active:isActiveTab(tab)}" - ng-click="onClickTab(tab)" use-theme - >{{tab.title}} - </li> - </ul> + <div id="content"> + <div id="passman-controls"> + <div class="breadcrumb"> + <div class="breadcrumb"> + <div class="crumb svg ui-droppable" data-dir="/"> + <a><i class="fa fa-home"></i></a> + </div> + <div class="crumb svg" data-dir="/Test"> + <a>{{ active_vault.name }}</a> + </div> + <div class="crumb svg last" data-dir="/Test"> + <a ng-if="storedCredential.credential_id">{{ 'edit.credential' | translate }} + "{{ storedCredential.label }}"</a> + <a ng-if="!storedCredential.credential_id">{{ 'create.credential' | translate }}</a> + </div> + </div> + + </div> + </div> + + <div class="app-sidebar-tabs"> + <nav class="app-sidebar-tabs__nav"> + <ul> + <li ng-repeat="tab in tabs track by $index" class="app-sidebar-tabs__tab" + ng-class="isActiveTab(tab)? 'active' : 'inactive'" + ng-click="onClickTab(tab)">{{ tab.title }} + </li> + </ul> + </nav> - <div class="tab_container edit_credential"> - <div ng-include="currentTab.url"></div> - <button ng-click="saveCredential()">{{ 'save' | translate }}</button> - <button ng-click="cancel()">{{ 'cancel' | translate }}</button> - </div> + <div class="tab_container edit_credential"> + <div ng-include="currentTab.url"></div> + <button ng-click="saveCredential()">{{ 'save' | translate }}</button> + <button ng-click="cancel()">{{ 'cancel' | translate }}</button> + </div> + </div> + </div> </div> </div> -</div>
\ No newline at end of file +</div> diff --git a/templates/main.php b/templates/main.php index 7300e4c1..b81d0a71 100644 --- a/templates/main.php +++ b/templates/main.php @@ -155,15 +155,15 @@ style('passman', 'app'); </ul> </li> <li> - <div class="app-navigation-entry-bullet bullet-color-red"></div> + <div class="app-navigation-entry-bullet-with-hover bullet-color-red"></div> <a ng-class="{selected: clickedNavigationItem=='strength_low'}" ng-click="filterCredentialBySpecial('strength_low')">{{ 'navigation.strength.bad' | translate }}</a> </li> <li> - <div class="app-navigation-entry-bullet bullet-color-yellow"></div> + <div class="app-navigation-entry-bullet-with-hover bullet-color-yellow"></div> <a ng-class="{selected: clickedNavigationItem=='strength_medium'}" ng-click="filterCredentialBySpecial('strength_medium')">{{ 'navigation.strength.medium' | translate }}</a> </li> <li> - <div class="app-navigation-entry-bullet bullet-color-green"></div> + <div class="app-navigation-entry-bullet-with-hover bullet-color-green"></div> <a ng-class="{selected: clickedNavigationItem=='strength_good'}" ng-click="filterCredentialBySpecial('strength_good')">{{ 'navigation.strength.good' | translate }}</a> </li> <li> diff --git a/templates/views/edit_credential.html b/templates/views/edit_credential.html index b03e8031..7dbc3606 100644 --- a/templates/views/edit_credential.html +++ b/templates/views/edit_credential.html @@ -1,35 +1,36 @@ <div id="passman-controls"> + <div class="breadcrumb"> + <div class="breadcrumb"> + <div class="crumb svg ui-droppable" data-dir="/"> + <a ng-click="logout()"><i class="fa fa-home"></i></a> + </div> + <div class="crumb svg" data-dir="/Test"> + <a ng-click="cancel()">{{ active_vault.name }}</a> + </div> + <div class="crumb svg last" data-dir="/Test"> + <a ng-if="storedCredential.credential_id">{{ 'edit.credential' | translate }} + "{{ storedCredential.label }}"</a> + <a ng-if="!storedCredential.credential_id">{{ 'create.credential' | translate }}</a> + </div> + </div> - <div class="breadcrumb"> - <div class="breadcrumb"> - <div class="crumb svg ui-droppable" data-dir="/"> - <a ng-click="logout()"><i class="fa fa-home"></i></a> - </div> - <div class="crumb svg" data-dir="/Test"> - <a ng-click="cancel()">{{active_vault.name}}</a> - </div> - <div class="crumb svg last" data-dir="/Test"> - <a ng-if="storedCredential.credential_id">{{ 'edit.credential' | translate}} - "{{storedCredential.label}}"</a> - <a ng-if="!storedCredential.credential_id">{{ 'create.credential' | translate}}</a> - </div> - </div> - - </div> + </div> </div> -<div> -<ul class="tab_header"> - <li ng-repeat="tab in tabs track by $index" class="tab" - ng-class="isActiveTab(tab)? 'active' : 'inactive'" - ng-click="onClickTab(tab)" use-theme color="'true'" - >{{tab.title}} - <div class="indicator" use-theme negative="'true'"></div> - </li> -</ul> +<div class="app-sidebar-tabs"> + <nav class="app-sidebar-tabs__nav"> + <ul> + <li ng-repeat="tab in tabs track by $index" class="app-sidebar-tabs__tab" + ng-class="isActiveTab(tab)? 'active' : 'inactive'" + ng-click="onClickTab(tab)">{{ tab.title }} + </li> + </ul> + </nav> -<div class="tab_container edit_credential" use-theme type="'border-top-color'"> - <div ng-include="currentTab.url"></div> - <button ng-click="saveCredential()" ng-disabled="saving"><i class="fa fa-spinner fa-spin" ng-show="saving"></i> {{ 'save' | translate}}</button> - <button ng-click="cancel()">{{ 'cancel' | translate}}</button> -</div> + <div class="tab_container edit_credential" use-theme type="'border-top-color'"> + <div ng-include="currentTab.url"></div> + <button ng-click="saveCredential()" ng-disabled="saving"><i class="fa fa-spinner fa-spin" ng-show="saving"></i> + {{ 'save' | translate }} + </button> + <button ng-click="cancel()">{{ 'cancel' | translate }}</button> + </div> </div> diff --git a/templates/views/settings.html b/templates/views/settings.html index b9601cd5..f54353f7 100644 --- a/templates/views/settings.html +++ b/templates/views/settings.html @@ -5,26 +5,26 @@ <a ng-click="logout()"><i class="fa fa-home"></i></a> </div> <div class="crumb svg"> - <a ng-click="cancel()">{{active_vault.name}}</a> + <a ng-click="cancel()">{{ active_vault.name }}</a> </div> <div class="crumb svg last"> - <a>{{ 'settings' | translate}}</a> + <a>{{ 'settings' | translate }}</a> </div> </div> </div> </div> -<div> - <ul class="tab_header"> - <li ng-repeat="tab in tabs track by $index" class="tab" - ng-class="isActiveTab(tab)? 'active' : 'inactive'" - ng-click="onClickTab(tab)" use-theme color="'true'">{{tab.title | translate}} - <div class="indicator" use-theme negative="'true'"></div> - </li> - - </ul> +<div class="app-sidebar-tabs"> + <nav class="app-sidebar-tabs__nav"> + <ul> + <li ng-repeat="tab in tabs track by $index" class="app-sidebar-tabs__tab" + ng-class="isActiveTab(tab)? 'active' : 'inactive'" + ng-click="onClickTab(tab)">{{ tab.title | translate }} + </li> + </ul> + </nav> <div class="tab_container settings edit_credential" use-theme type="'border-top-color'"> <div ng-include="currentTab.url"></div> </div> -</div>
\ No newline at end of file +</div> diff --git a/templates/views/share_credential.html b/templates/views/share_credential.html index d0ac326e..65443c1e 100644 --- a/templates/views/share_credential.html +++ b/templates/views/share_credential.html @@ -1,34 +1,40 @@ -<div class="main_list.share"> - <div id="passman-controls"> - <div class="actions creatable"> - <div class="breadcrumb"> - <div class="crumb svg ui-droppable" data-dir="/"> - <a ng-click="logout()"><i class="fa fa-home"></i></a> - </div> - <div class="crumb svg" data-dir="/Test"> - <a ng-click="cancel()">{{active_vault.name}}</a> - </div> - <div class="crumb svg last" data-dir="/Test"> - <a ng-if="storedCredential.credential_id"> - {{ 'share.credential' | translate}} {{storedCredential.label}} - </a> - </div> - </div> - </div> +<div id="passman-controls"> + <div class="actions creatable"> + <div class="breadcrumb"> + <div class="crumb svg ui-droppable" data-dir="/"> + <a ng-click="logout()"><i class="fa fa-home"></i></a> + </div> + <div class="crumb svg" data-dir="/Test"> + <a ng-click="cancel()">{{ active_vault.name }}</a> + </div> + <div class="crumb svg last" data-dir="/Test"> + <a ng-if="storedCredential.credential_id"> + {{ 'share.credential' | translate }} {{ storedCredential.label }} + </a> + </div> + </div> + </div> </div> - <ul class="tab_header"> - <li ng-repeat="tab in tabs track by $index" class="tab" - ng-class="{active:isActiveTab(tab)}" - ng-click="onClickTab(tab)" use-theme color="'true'">{{tab.title | translate}} - <div class="indicator" use-theme negative="'true'"></div> - </li> - </ul> - <div class="tab_container share_credential" ng-show="currentTab"> - <div ng-include="currentTab.url"></div> +<div class="app-sidebar-tabs"> + <nav class="app-sidebar-tabs__nav"> + <ul> + <li ng-repeat="tab in tabs track by $index" class="app-sidebar-tabs__tab" + ng-class="isActiveTab(tab)? 'active' : 'inactive'" + ng-click="onClickTab(tab)">{{ tab.title | translate }} + </li> + </ul> + </nav> - <button ng-click="applyShare()" ng-disabled="share_settings.linkSharing.enabled === false && share_settings.credentialSharedWithUserAndGroup.length === 0">{{ 'share' | translate}}</button> - <button ng-click="cancel()">{{ 'cancel' | translate}}</button> - <button class="btn btn-danger" ng-disabled="!storedCredential.shared_key" ng-click="unshareCredential(storedCredential)">{{ 'unshare' | translate}}</button> -</div> -</div> + <div class="tab_container share_credential" ng-show="currentTab"> + <div ng-include="currentTab.url"></div> + <button ng-click="applyShare()" + ng-disabled="share_settings.linkSharing.enabled === false && share_settings.credentialSharedWithUserAndGroup.length === 0"> + {{ 'share' | translate }} + </button> + <button ng-click="cancel()">{{ 'cancel' | translate }}</button> + <button class="btn btn-danger" ng-disabled="!storedCredential.shared_key" + ng-click="unshareCredential(storedCredential)">{{ 'unshare' | translate }} + </button> + </div> +</div> diff --git a/templates/views/show_vault.html b/templates/views/show_vault.html index d4bcccb1..442540bf 100644 --- a/templates/views/show_vault.html +++ b/templates/views/show_vault.html @@ -51,10 +51,10 @@ <span class="tag" ng-repeat="tag in credential.tags_raw">{{ ::tag.text}}</span> </span> - <span class="icon" ng-if="credential.url || credential.icon"> + <span class="icon" ng-if="credential.url || (credential.icon && credential.icon.type !== false)"> <credential-icon credential="credential"></credential-icon> </span> - <span class="icon" ng-if="!credential.url && !credential.icon"> + <span class="icon" ng-if="!credential.url && (!credential.icon || (credential.icon && !credential.icon.type))"> <i class="fa fa-lock" ng-if="!credential.acl && !credential.shared_key"></i> <i class="fa fa-share-alt" ng-if="credential.acl"></i> <i class="fa fa-share-alt-square" ng-if="credential.shared_key"> </i> @@ -148,10 +148,10 @@ <span class="close icon-close" ng-click="closeSelected()" alt="Close"></span> <div class="sidebar"> - <span class="icon sidebar-icon" ng-if="selectedCredential.url || selectedCredential.icon"> + <span class="icon sidebar-icon" ng-if="selectedCredential.url || (selectedCredential.icon && selectedCredential.icon.type !== false)"> <credential-icon credential="selectedCredential"></credential-icon> </span> - <span class="icon sidebar-icon" ng-if="!selectedCredential.url && !selectedCredential.icon"> + <span class="icon sidebar-icon" ng-if="!selectedCredential.url && (!selectedCredential.icon || (selectedCredential.icon && !selectedCredential.icon.type))"> <i class="fa fa-lock fa-3x icon-image"></i> </span> <h2 class="sidebar-label">{{selectedCredential.label}}</h2> |