mirror of
https://github.com/nextcloud/passman.git
synced 2026-01-10 01:24:49 +08:00
update credential edit style to support nc 25
Signed-off-by: binsky <timo@binsky.org>
This commit is contained in:
parent
d3a1e0a6df
commit
04a6cb4158
10 changed files with 343 additions and 325 deletions
219
css/app.css
219
css/app.css
|
|
@ -191,6 +191,9 @@
|
|||
clear: both;
|
||||
padding: 0 1em; }
|
||||
|
||||
.tab-margin-top {
|
||||
margin-top: 12px; }
|
||||
|
||||
/**
|
||||
* Nextcloud - passman
|
||||
*
|
||||
|
|
@ -528,6 +531,114 @@
|
|||
@media only screen and (min-width: 770px) {
|
||||
#app-content {
|
||||
width: calc(100vw - 300px); } }
|
||||
#app-content .edit_credential {
|
||||
padding-top: 10px; }
|
||||
#app-content .edit_credential label {
|
||||
display: block; }
|
||||
#app-content .edit_credential input[type="text"], #app-content .edit_credential input[type="password"] {
|
||||
width: 100%; }
|
||||
#app-content .edit_credential .compromised-button {
|
||||
margin-top: 15px;
|
||||
background-color: #e60000;
|
||||
color: black; }
|
||||
#app-content .edit_credential .compromised-details {
|
||||
margin-top: 15px;
|
||||
display: flex; }
|
||||
#app-content .edit_credential .compromised-details .icon {
|
||||
float: left;
|
||||
height: 20px; }
|
||||
#app-content .edit_credential .compromised-details .text {
|
||||
padding-left: 5px;
|
||||
padding-right: 30px;
|
||||
color: #e9322d; }
|
||||
#app-content .edit_credential .tags {
|
||||
float: left; }
|
||||
#app-content .edit_credential .tags .tag {
|
||||
background-color: rgba(240, 240, 240, 0.9);
|
||||
padding: 4px;
|
||||
font-size: 11px; }
|
||||
#app-content .edit_credential tags-input .tags {
|
||||
width: 100%; }
|
||||
#app-content .edit_credential tags-input .tags .input {
|
||||
width: auto !important; }
|
||||
#app-content .edit_credential tags-input .tags .tag-item {
|
||||
color: var(--color-text-lighter); }
|
||||
#app-content .edit_credential .credential_textarea {
|
||||
width: 100%;
|
||||
height: 100px; }
|
||||
#app-content .edit_credential .password_settings label {
|
||||
overflow: hidden; }
|
||||
#app-content .edit_credential .password_settings label input[type="checkbox"] {
|
||||
width: auto !important;
|
||||
float: left; }
|
||||
#app-content .edit_credential .password_settings label .label {
|
||||
float: left; }
|
||||
#app-content .edit_credential .password_settings label .label.sm {
|
||||
font-size: 12px; }
|
||||
#app-content .edit_credential .password_settings .password-settings-padding-left-fix {
|
||||
padding-left: 0 !important; }
|
||||
#app-content .edit_credential .field-value .valueInput {
|
||||
padding-right: 0; }
|
||||
#app-content .edit_credential .field-value .valueInput input {
|
||||
-webkit-border-bottom-right-radius: 0;
|
||||
border-bottom-right-radius: 0;
|
||||
-webkit-border-top-right-radius: 0;
|
||||
border-top-right-radius: 0;
|
||||
background-clip: padding-box; }
|
||||
#app-content .edit_credential .field-value .valueInput .pw-gen .generate_pw .cell:last-child {
|
||||
-webkit-border-bottom-right-radius: 0;
|
||||
border-bottom-right-radius: 0;
|
||||
-webkit-border-top-right-radius: 0;
|
||||
border-top-right-radius: 0;
|
||||
background-clip: padding-box; }
|
||||
#app-content .edit_credential .field-value .selectType {
|
||||
padding-left: 0;
|
||||
margin-left: 0px; }
|
||||
#app-content .edit_credential .field-value .selectType select {
|
||||
-webkit-border-bottom-left-radius: 0;
|
||||
border-bottom-left-radius: 0;
|
||||
-webkit-border-top-left-radius: 0;
|
||||
border-top-left-radius: 0;
|
||||
background-clip: padding-box; }
|
||||
#app-content .edit_credential .custom_fields, #app-content .edit_credential .files {
|
||||
margin-top: 10px; }
|
||||
#app-content .edit_credential .custom_fields table, #app-content .edit_credential .files table {
|
||||
width: 100%; }
|
||||
#app-content .edit_credential .custom_fields table thead, #app-content .edit_credential .files table thead {
|
||||
background-color: var(--color-background-plain);
|
||||
color: var(--color-primary-text); }
|
||||
#app-content .edit_credential .custom_fields table thead th.dragger, #app-content .edit_credential .files table thead th.dragger {
|
||||
width: 3%; }
|
||||
#app-content .edit_credential .custom_fields table thead th, #app-content .edit_credential .files table thead th {
|
||||
color: #fff; }
|
||||
#app-content .edit_credential .custom_fields table thead th.field_actions, #app-content .edit_credential .files table thead th.field_actions {
|
||||
width: 15%; }
|
||||
#app-content .edit_credential .custom_fields table tr:hover, #app-content .edit_credential .files table tr:hover {
|
||||
background-color: transparent; }
|
||||
#app-content .edit_credential .custom_fields table tr td.dragger, #app-content .edit_credential .files table tr td.dragger {
|
||||
width: 3%;
|
||||
text-align: center;
|
||||
cursor: move;
|
||||
cursor: -webkit-grab;
|
||||
cursor: -moz-grab;
|
||||
cursor: grab; }
|
||||
#app-content .edit_credential .custom_fields table tr td.field_actions, #app-content .edit_credential .files table tr td.field_actions {
|
||||
font-size: 13px;
|
||||
width: 15%; }
|
||||
#app-content .edit_credential .custom_fields table tr td.field_actions i, #app-content .edit_credential .files table tr td.field_actions i {
|
||||
cursor: pointer; }
|
||||
#app-content .edit_credential .custom_fields table tr td, #app-content .edit_credential .custom_fields table tr th, #app-content .edit_credential .files table tr td, #app-content .edit_credential .files table tr th {
|
||||
width: 20%;
|
||||
padding: 5px; }
|
||||
#app-content .edit_credential .custom_fields table tr td .editable-has-buttons.editable-input, #app-content .edit_credential .custom_fields table tr th .editable-has-buttons.editable-input, #app-content .edit_credential .files table tr td .editable-has-buttons.editable-input, #app-content .edit_credential .files table tr th .editable-has-buttons.editable-input {
|
||||
width: 55%; }
|
||||
#app-content .edit_credential .custom_fields table tr td, #app-content .edit_credential .files table tr td {
|
||||
height: 50px;
|
||||
vertical-align: middle; }
|
||||
#app-content .edit_credential .otpText {
|
||||
padding-right: 10px; }
|
||||
#app-content .edit_credential .import-selection select {
|
||||
margin-left: 15px; }
|
||||
#app-content .main_list #passman-controls {
|
||||
text-align: center;
|
||||
border-bottom: 1px solid #c9c9c9; }
|
||||
|
|
@ -742,107 +853,6 @@
|
|||
@media all and (min-width: 78em) {
|
||||
#app-content .main_list .grid-view .credential {
|
||||
width: 20%; } }
|
||||
#app-content .main_list .edit_credential {
|
||||
padding-top: 10px; }
|
||||
#app-content .main_list .edit_credential label {
|
||||
display: block; }
|
||||
#app-content .main_list .edit_credential input[type="text"], #app-content .main_list .edit_credential input[type="password"] {
|
||||
width: 100%; }
|
||||
#app-content .main_list .edit_credential .compromised-button {
|
||||
margin-top: 15px;
|
||||
background-color: #e60000;
|
||||
color: black; }
|
||||
#app-content .main_list .edit_credential .compromised-details {
|
||||
margin-top: 15px;
|
||||
display: flex; }
|
||||
#app-content .main_list .edit_credential .compromised-details .icon {
|
||||
float: left;
|
||||
height: 20px; }
|
||||
#app-content .main_list .edit_credential .compromised-details .text {
|
||||
padding-left: 5px;
|
||||
padding-right: 30px;
|
||||
color: #e9322d; }
|
||||
#app-content .main_list .edit_credential .tags {
|
||||
float: left; }
|
||||
#app-content .main_list .edit_credential .tags .tag {
|
||||
background-color: rgba(240, 240, 240, 0.9);
|
||||
padding: 4px;
|
||||
font-size: 11px; }
|
||||
#app-content .main_list .edit_credential tags-input .tags {
|
||||
width: 100%; }
|
||||
#app-content .main_list .edit_credential .credential_textarea {
|
||||
width: 100%;
|
||||
height: 100px; }
|
||||
#app-content .main_list .edit_credential .password_settings label {
|
||||
overflow: hidden; }
|
||||
#app-content .main_list .edit_credential .password_settings label input[type="checkbox"] {
|
||||
width: auto !important;
|
||||
float: left; }
|
||||
#app-content .main_list .edit_credential .password_settings label .label {
|
||||
float: left; }
|
||||
#app-content .main_list .edit_credential .password_settings label .label.sm {
|
||||
font-size: 12px; }
|
||||
#app-content .main_list .edit_credential .password_settings .password-settings-padding-left-fix {
|
||||
padding-left: 0 !important; }
|
||||
#app-content .main_list .edit_credential .field-value .valueInput {
|
||||
padding-right: 0; }
|
||||
#app-content .main_list .edit_credential .field-value .valueInput input {
|
||||
-webkit-border-bottom-right-radius: 0;
|
||||
border-bottom-right-radius: 0;
|
||||
-webkit-border-top-right-radius: 0;
|
||||
border-top-right-radius: 0;
|
||||
background-clip: padding-box; }
|
||||
#app-content .main_list .edit_credential .field-value .valueInput .pw-gen .generate_pw .cell:last-child {
|
||||
-webkit-border-bottom-right-radius: 0;
|
||||
border-bottom-right-radius: 0;
|
||||
-webkit-border-top-right-radius: 0;
|
||||
border-top-right-radius: 0;
|
||||
background-clip: padding-box; }
|
||||
#app-content .main_list .edit_credential .field-value .selectType {
|
||||
padding-left: 0;
|
||||
margin-left: 0px; }
|
||||
#app-content .main_list .edit_credential .field-value .selectType select {
|
||||
-webkit-border-bottom-left-radius: 0;
|
||||
border-bottom-left-radius: 0;
|
||||
-webkit-border-top-left-radius: 0;
|
||||
border-top-left-radius: 0;
|
||||
background-clip: padding-box; }
|
||||
#app-content .main_list .edit_credential .custom_fields, #app-content .main_list .edit_credential .files {
|
||||
margin-top: 10px; }
|
||||
#app-content .main_list .edit_credential .custom_fields table, #app-content .main_list .edit_credential .files table {
|
||||
width: 100%; }
|
||||
#app-content .main_list .edit_credential .custom_fields table thead th.dragger, #app-content .main_list .edit_credential .files table thead th.dragger {
|
||||
width: 3%; }
|
||||
#app-content .main_list .edit_credential .custom_fields table thead th, #app-content .main_list .edit_credential .files table thead th {
|
||||
color: #fff; }
|
||||
#app-content .main_list .edit_credential .custom_fields table thead th.field_actions, #app-content .main_list .edit_credential .files table thead th.field_actions {
|
||||
width: 15%; }
|
||||
#app-content .main_list .edit_credential .custom_fields table tr:hover, #app-content .main_list .edit_credential .files table tr:hover {
|
||||
background-color: transparent; }
|
||||
#app-content .main_list .edit_credential .custom_fields table tr td.dragger, #app-content .main_list .edit_credential .files table tr td.dragger {
|
||||
width: 3%;
|
||||
text-align: center;
|
||||
cursor: move;
|
||||
cursor: -webkit-grab;
|
||||
cursor: -moz-grab;
|
||||
cursor: grab; }
|
||||
#app-content .main_list .edit_credential .custom_fields table tr td.field_actions, #app-content .main_list .edit_credential .files table tr td.field_actions {
|
||||
font-size: 13px;
|
||||
width: 15%; }
|
||||
#app-content .main_list .edit_credential .custom_fields table tr td.field_actions i, #app-content .main_list .edit_credential .files table tr td.field_actions i {
|
||||
cursor: pointer; }
|
||||
#app-content .main_list .edit_credential .custom_fields table tr td, #app-content .main_list .edit_credential .custom_fields table tr th, #app-content .main_list .edit_credential .files table tr td, #app-content .main_list .edit_credential .files table tr th {
|
||||
width: 20%;
|
||||
padding: 5px; }
|
||||
#app-content .main_list .edit_credential .custom_fields table tr td .editable-has-buttons.editable-input, #app-content .main_list .edit_credential .custom_fields table tr th .editable-has-buttons.editable-input, #app-content .main_list .edit_credential .files table tr td .editable-has-buttons.editable-input, #app-content .main_list .edit_credential .files table tr th .editable-has-buttons.editable-input {
|
||||
width: 55%; }
|
||||
#app-content .main_list .edit_credential .custom_fields table tr td, #app-content .main_list .edit_credential .files table tr td {
|
||||
height: 50px;
|
||||
vertical-align: middle; }
|
||||
#app-content .main_list .edit_credential .otpText {
|
||||
padding-right: 10px; }
|
||||
#app-content .main_list .edit_credential .import-selection select {
|
||||
margin-left: 15px; }
|
||||
#app-content .main_list .share {
|
||||
overflow: hidden; }
|
||||
#app-content .main_list .nopasswords {
|
||||
|
|
@ -1216,8 +1226,6 @@
|
|||
margin-bottom: 50px; }
|
||||
.tab_container.settings textarea {
|
||||
height: 300px; }
|
||||
.tab_container.settings .tab-margin-top {
|
||||
margin-top: 12px; }
|
||||
|
||||
.import-steps {
|
||||
padding-left: 16px;
|
||||
|
|
@ -1243,7 +1251,7 @@ h3 {
|
|||
|
||||
.setting-group label, .setting-group input {
|
||||
display: block; }
|
||||
.setting-group input[type="text"], .setting-group input[type="password"] {
|
||||
.setting-group input[type="text"], .setting-group input[type="password"], .setting-group textarea {
|
||||
width: 100%; }
|
||||
|
||||
.display-grid {
|
||||
|
|
@ -1402,9 +1410,6 @@ h3 {
|
|||
margin-left: 0 !important;
|
||||
margin-right: 0 !important; }
|
||||
|
||||
#app-content #app-content-wrapper #passman-controls {
|
||||
border-bottom: 1px solid #c9c9c9; }
|
||||
|
||||
#passman-controls {
|
||||
display: flow-root;
|
||||
position: sticky;
|
||||
|
|
|
|||
File diff suppressed because one or more lines are too long
|
|
@ -21,7 +21,7 @@ angular.module('views/partials/credential_template.html', []).run(['$templateCac
|
|||
angular.module('views/partials/forms/edit_credential/basics.html', []).run(['$templateCache', function($templateCache) {
|
||||
'use strict';
|
||||
$templateCache.put('views/partials/forms/edit_credential/basics.html',
|
||||
'<div class="row"><div class="col-xs-12 col-md-6"><label>{{ \'label\' | translate}}</label><div class="icon-label"><div class="icon-picker" icon-picker="storedCredential"></div><input type="text" class="form-control" ng-model="storedCredential.label"></div><label>{{ \'username\' | translate}}</label><div><input type="text" ng-model="storedCredential.username"></div><label>{{ \'email\' | translate}}</label><div><input type="text" ng-model="storedCredential.email"></div><label>{{ \'password\' | translate}}</label><div><password-gen ng-model="storedCredential.password" settings="pwSettings" callback="pwGenerated"></password-gen><ng-password-meter password="storedCredential.password"></ng-password-meter></div><div><label>{{ \'password.r\' | translate}}</label> <input type="password" ng-model="storedCredential.password_repeat"></div><label>{{ \'url\' | translate}}</label><div><input type="text" ng-model="storedCredential.url"></div></div><div class="col-xs-12 col-md-6"><label>{{ \'notes\' | translate}}</label><div><textarea class="credential_textarea" ng-model="storedCredential.description"></textarea></div><label>{{ \'add.tag\' | translate}}</label><div class="tags_input"><tags-input ng-model="storedCredential.tags" replace-spaces-with-dashes="false"><auto-complete source="getTags($query)" min-length="0"></auto-complete></tags-input></div></div><div class="col-xs-12 col-md-6"><button class="compromised-button" ng-click="compromise()">{{ \'compromised.label\' | translate}}</button><div class="compromised-details" ng-show="storedCredential.compromised"><div class="icon-error-color icon"></div><div class="text">{{ \'compromised.warning\' | translate }}</div></div></div></div>');
|
||||
'<div class="row"><div class="col-xs-12 col-md-6"><div class="setting-group"><label>{{ \'label\' | translate}}</label><div class="icon-label"><div class="icon-picker" icon-picker="storedCredential"></div><input type="text" class="form-control" ng-model="storedCredential.label"></div></div><div class="setting-group"><label>{{ \'username\' | translate}}</label> <input type="text" ng-model="storedCredential.username"></div><div class="setting-group"><label>{{ \'email\' | translate}}</label> <input type="text" ng-model="storedCredential.email"></div><div class="setting-group"><label>{{ \'password\' | translate}}</label><div><password-gen ng-model="storedCredential.password" settings="pwSettings" callback="pwGenerated"></password-gen><ng-password-meter password="storedCredential.password"></ng-password-meter></div></div><div class="setting-group"><label>{{ \'password.r\' | translate}}</label> <input type="password" ng-model="storedCredential.password_repeat"></div><div class="setting-group"><label>{{ \'url\' | translate}}</label> <input type="text" ng-model="storedCredential.url"></div></div><div class="col-xs-12 col-md-6"><div class="setting-group"><label>{{ \'notes\' | translate}}</label> <textarea class="credential_textarea" ng-model="storedCredential.description"></textarea></div><label>{{ \'add.tag\' | translate}}</label><div class="tags_input"><tags-input ng-model="storedCredential.tags" replace-spaces-with-dashes="false"><auto-complete source="getTags($query)" min-length="0"></auto-complete></tags-input></div></div><div class="col-xs-12 col-md-6"><button class="btn-danger compromised-button" ng-click="compromise()">{{ \'compromised.label\' | translate}}</button><div class="compromised-details" ng-show="storedCredential.compromised"><div class="icon-error-color icon"></div><div class="text">{{ \'compromised.warning\' | translate }}</div></div></div></div>');
|
||||
}]);
|
||||
|
||||
angular.module('views/partials/forms/edit_credential/custom_fields.html', []).run(['$templateCache', function($templateCache) {
|
||||
|
|
@ -33,7 +33,7 @@ angular.module('views/partials/forms/edit_credential/custom_fields.html', []).ru
|
|||
angular.module('views/partials/forms/edit_credential/files.html', []).run(['$templateCache', function($templateCache) {
|
||||
'use strict';
|
||||
$templateCache.put('views/partials/forms/edit_credential/files.html',
|
||||
'<div class="row file_tab"><div class="col-xs-12 col-md-6"><input class="inputfile" id="file" type="file" file-select success="fileLoaded" error="fileLoadError" progress="fileSelectProgress"> <label for="file"><i class="fa fa-upload" aria-hidden="true"></i> {{\'select.file\' | translate}}</label> <span ng-if="fileprogress.file_percent > 0"><div progress-bar="fileprogress.file_percent"></div></span></div></div><div class="row files" ng-if="storedCredential.files.length > 0"><div class="col-xs-12 table"><table><thead use-theme><tr><th class="field_label">{{ \'file.name\' | translate }}</th><th class="field_value">{{ \'upload.date\' | translate}}</th><th class="field_secret">{{ \'size\' | translate}}</th><th class="field_actions">{{ \'actions\' | translate}}</th></tr></thead><tr ng-repeat="file in storedCredential.files"><td><a href="#" editable-text="file.filename">{{ file.filename || "empty" }}</a></td><td>{{file.created * 1000 | date:\'dd-MM-yyyy @ HH:mm:ss\'}}</td><td>{{file.size | bytes}}</td><td class="field_actions"><i class="fa fa-trash" ng-click="deleteFile(file)"></i></td></tr></table></div></div>');
|
||||
'<div class="row file_tab"><div class="col-xs-12 col-md-6"><input class="inputfile" id="file" type="file" file-select success="fileLoaded" error="fileLoadError" progress="fileSelectProgress"> <label for="file"><i class="fa fa-upload" aria-hidden="true"></i> {{\'select.file\' | translate}}</label> <span ng-if="fileprogress.file_percent > 0"><div progress-bar="fileprogress.file_percent"></div></span></div></div><div class="row files" ng-if="storedCredential.files.length > 0"><div class="col-xs-12 table"><table><thead><tr><th class="field_label">{{ \'file.name\' | translate }}</th><th class="field_value">{{ \'upload.date\' | translate}}</th><th class="field_secret">{{ \'size\' | translate}}</th><th class="field_actions">{{ \'actions\' | translate}}</th></tr></thead><tr ng-repeat="file in storedCredential.files"><td><a href="#" editable-text="file.filename">{{ file.filename || "empty" }}</a></td><td>{{file.created * 1000 | date:\'dd-MM-yyyy @ HH:mm:ss\'}}</td><td>{{file.size | bytes}}</td><td class="field_actions"><i class="fa fa-trash" ng-click="deleteFile(file)"></i></td></tr></table></div></div>');
|
||||
}]);
|
||||
|
||||
angular.module('views/partials/forms/edit_credential/otp.html', []).run(['$templateCache', function($templateCache) {
|
||||
|
|
@ -45,7 +45,7 @@ angular.module('views/partials/forms/edit_credential/otp.html', []).run(['$templ
|
|||
angular.module('views/partials/forms/edit_credential/password.html', []).run(['$templateCache', function($templateCache) {
|
||||
'use strict';
|
||||
$templateCache.put('views/partials/forms/edit_credential/password.html',
|
||||
'<div class="row"><div class="col-xs-12 col-md-5 col-lg-5"><label>{{ \'password\' | translate}}</label><div><password-gen ng-model="storedCredential.password" settings="pwSettings" callback="pwGenerated"></password-gen><ng-password-meter password="storedCredential.password"></ng-password-meter></div><label>{{ \'password.r\' | translate}}</label><div><input type="password" ng-model="storedCredential.password_repeat"></div><label>{{ \'expire.date\' | translate}}</label><div><span datetime-picker ng-model="storedCredential.expire_time" class="link" future-only ng-show="storedCredential.expire_time == 0" close-on-select="false">{{\'no.expire.date\' | translate}}</span> <span datetime-picker ng-model="storedCredential.expire_time" class="link" future-only ng-show="storedCredential.expire_time != 0" close-on-select="false">{{ storedCredential.expire_time | date:\'dd-MM-yyyy @ HH:mm:ss\'}}</span></div><label>{{ \'renew.interval\' | translate}}</label><div><input type="number" ng-model="renewIntervalValue" min="0" ng-change="updateInterval(renewIntervalValue, renewIntervalModifier)"> <select ng-model="renewIntervalModifier" ng-change="updateInterval(renewIntervalValue, renewIntervalModifier)"><option value="0">{{ \'disabled\' | translate}}</option><option value="86400">{{ \'days\' | translate }}</option><option value="604800">{{ \'weeks\' | translate}}</option><option value="2592000">{{ \'months\' | translate}}</option><option value="31622400">{{ \'years\' | translate}}</option></select></div></div><div class="col-xs-12 col-md-7 col-lg-7"><b>{{ \'generation.settings\' | translate}}</b><div class="row"><div class="password_settings"><div class="col-xs-12 col-sm-5 col-lg-4"><label><span class="label">{{ \'password.generation.length\' | translate}}</span><br><input type="number" ng-model="pwSettings.length" min="1"></label> <label><span class="label">{{\'password.generation.min_digits\' | translate}}</span><br><input type="number" ng-model="pwSettings.minimumDigitCount" min="0"></label></div><div class="col-xs-12 col-sm-6 col-lg-6"><label><input type="checkbox" ng-model="pwSettings.useUppercase"> <span class="label sm">{{ \'password.generation.uppercase\' | translate}}</span></label> <label><input ng-model="pwSettings.useLowercase" type="checkbox" id="lower"> <span class="label sm">{{ \'password.generation.lowercase\' | translate}}</span></label> <label><input ng-model="pwSettings.useDigits" type="checkbox" id="digits"> <span class="label sm">{{ \'password.generation.digits\' | translate}}</span></label> <label><input type="checkbox" id="special" ng-model="pwSettings.useSpecialChars"> <span class="label sm">{{ \'password.generation.special\' | translate}}</span></label> <label><input type="checkbox" id="ambig" ng-model="pwSettings.avoidAmbiguousCharacters"> <span class="label sm">{{ \'password.generation.ambiguous\' | translate}}</span></label> <label><input type="checkbox" ng-model="pwSettings.requireEveryCharType" id="reqevery"> <span class="label sm">{{ \'password.generation.require_same\' | translate}}</span></label></div></div></div></div></div>');
|
||||
'<div class="row"><div class="col-xs-12 col-md-5 col-lg-5"><div class="setting-group"><label>{{ \'password\' | translate}}</label><div><password-gen ng-model="storedCredential.password" settings="pwSettings" callback="pwGenerated"></password-gen><ng-password-meter password="storedCredential.password"></ng-password-meter></div></div><div class="setting-group"><label>{{ \'password.r\' | translate}}</label> <input type="password" ng-model="storedCredential.password_repeat"></div><label>{{ \'expire.date\' | translate}}</label><div><span datetime-picker ng-model="storedCredential.expire_time" class="link" future-only ng-show="storedCredential.expire_time == 0" close-on-select="false">{{\'no.expire.date\' | translate}}</span> <span datetime-picker ng-model="storedCredential.expire_time" class="link" future-only ng-show="storedCredential.expire_time != 0" close-on-select="false">{{ storedCredential.expire_time | date:\'dd-MM-yyyy @ HH:mm:ss\'}}</span></div><label>{{ \'renew.interval\' | translate}}</label><div><input type="number" ng-model="renewIntervalValue" min="0" ng-change="updateInterval(renewIntervalValue, renewIntervalModifier)"> <select ng-model="renewIntervalModifier" ng-change="updateInterval(renewIntervalValue, renewIntervalModifier)"><option value="0">{{ \'disabled\' | translate}}</option><option value="86400">{{ \'days\' | translate }}</option><option value="604800">{{ \'weeks\' | translate}}</option><option value="2592000">{{ \'months\' | translate}}</option><option value="31622400">{{ \'years\' | translate}}</option></select></div></div><div class="col-xs-12 col-md-7 col-lg-7"><b>{{ \'generation.settings\' | translate}}</b><div class="row"><div class="password_settings"><div class="col-xs-12 col-sm-5 col-lg-4"><label><span class="label">{{ \'password.generation.length\' | translate}}</span><br><input type="number" ng-model="pwSettings.length" min="1"></label><br><label><span class="label">{{\'password.generation.min_digits\' | translate}}</span><br><input type="number" ng-model="pwSettings.minimumDigitCount" min="0"></label></div><div class="col-xs-12 col-sm-6 col-lg-6 display-grid"><input id="pwSettings.useUppercase" class="checkbox" type="checkbox" ng-model="pwSettings.useUppercase"> <label for="pwSettings.useUppercase">{{\'password.generation.uppercase\' | translate}}</label> <input id="pwSettings.useLowercase" class="checkbox" type="checkbox" ng-model="pwSettings.useLowercase"> <label for="pwSettings.useLowercase">{{\'password.generation.lowercase\' | translate}}</label> <input id="pwSettings.useDigits" class="checkbox" type="checkbox" ng-model="pwSettings.useDigits"> <label for="pwSettings.useDigits">{{\'password.generation.digits\' | translate}}</label> <input id="pwSettings.useSpecialChars" class="checkbox" type="checkbox" ng-model="pwSettings.useSpecialChars"> <label for="pwSettings.useSpecialChars">{{\'password.generation.special\' | translate}}</label> <input id="pwSettings.avoidAmbiguousCharacters" class="checkbox" type="checkbox" ng-model="pwSettings.avoidAmbiguousCharacters"> <label for="pwSettings.avoidAmbiguousCharacters">{{\'password.generation.ambiguous\' | translate}}</label> <input id="pwSettings.requireEveryCharType" class="checkbox" type="checkbox" ng-model="pwSettings.requireEveryCharType"> <label for="pwSettings.requireEveryCharType">{{\'password.generation.require_same\' | translate}}</label></div></div></div></div></div>');
|
||||
}]);
|
||||
|
||||
angular.module('views/partials/forms/settings/export.html', []).run(['$templateCache', function($templateCache) {
|
||||
|
|
|
|||
|
|
@ -63,10 +63,6 @@
|
|||
}
|
||||
}
|
||||
|
||||
#app-content #app-content-wrapper #passman-controls {
|
||||
border-bottom: 1px solid #c9c9c9;
|
||||
}
|
||||
|
||||
#passman-controls {
|
||||
display: flow-root;
|
||||
position: sticky;
|
||||
|
|
|
|||
|
|
@ -75,6 +75,160 @@
|
|||
|
||||
overflow-x: hidden;
|
||||
|
||||
.edit_credential {
|
||||
padding-top: 10px;
|
||||
label {
|
||||
display: block;
|
||||
}
|
||||
input[type="text"], input[type="password"] {
|
||||
width: 100%;
|
||||
}
|
||||
.compromised-button{
|
||||
margin-top: 15px;
|
||||
background-color: #e60000;
|
||||
color: black;
|
||||
}
|
||||
|
||||
.compromised-details{
|
||||
margin-top: 15px;
|
||||
display: flex;
|
||||
.icon{
|
||||
float: left;
|
||||
height: 20px;
|
||||
}
|
||||
.text{
|
||||
padding-left: 5px;
|
||||
padding-right: 30px;
|
||||
color: #e9322d;
|
||||
}
|
||||
}
|
||||
|
||||
.tags {
|
||||
float: left;
|
||||
.tag {
|
||||
background-color: rgba(240, 240, 240, .9);
|
||||
padding: 4px;
|
||||
font-size: 11px;
|
||||
}
|
||||
}
|
||||
tags-input {
|
||||
.tags {
|
||||
width: 100%;
|
||||
.input {
|
||||
width: auto!important;
|
||||
}
|
||||
.tag-item {
|
||||
color: var(--color-text-lighter);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.credential_textarea {
|
||||
width: 100%;
|
||||
height: 100px;
|
||||
}
|
||||
.password_settings {
|
||||
label {
|
||||
overflow: hidden;
|
||||
input[type="checkbox"] {
|
||||
width: auto !important;
|
||||
float: left;
|
||||
}
|
||||
.label {
|
||||
&.sm {
|
||||
font-size: 12px;
|
||||
}
|
||||
float: left;
|
||||
}
|
||||
}
|
||||
.password-settings-padding-left-fix{
|
||||
padding-left: 0 !important;
|
||||
}
|
||||
}
|
||||
.field-value {
|
||||
.valueInput {
|
||||
padding-right: 0;
|
||||
input {
|
||||
@include border-right-radius(0);
|
||||
}
|
||||
.pw-gen .generate_pw .cell:last-child {
|
||||
@include border-right-radius(0);
|
||||
}
|
||||
}
|
||||
.selectType {
|
||||
padding-left: 0;
|
||||
margin-left: 0px;
|
||||
select {
|
||||
@include border-left-radius(0);
|
||||
}
|
||||
}
|
||||
}
|
||||
.custom_fields, .files {
|
||||
margin-top: 10px;
|
||||
table {
|
||||
width: 100%;
|
||||
thead {
|
||||
background-color: var(--color-background-plain);
|
||||
color: var(--color-primary-text);
|
||||
|
||||
th.dragger {
|
||||
width: 3%;
|
||||
}
|
||||
th {
|
||||
color: #fff;
|
||||
}
|
||||
th.field_actions {
|
||||
width: 15%;
|
||||
}
|
||||
}
|
||||
tr:hover {
|
||||
background-color: transparent;
|
||||
}
|
||||
tr {
|
||||
td.dragger {
|
||||
width: 3%;
|
||||
text-align: center;
|
||||
cursor: move;
|
||||
cursor: -webkit-grab;
|
||||
cursor: -moz-grab;
|
||||
cursor: grab;
|
||||
}
|
||||
td.field_actions {
|
||||
font-size: 13px;
|
||||
width: 15%;
|
||||
i {
|
||||
cursor: pointer;
|
||||
}
|
||||
}
|
||||
td, th {
|
||||
width: 20%;
|
||||
padding: 5px;
|
||||
.editable-has-buttons.editable-input {
|
||||
width: 55%;
|
||||
}
|
||||
}
|
||||
td {
|
||||
height: 50px;
|
||||
vertical-align: middle;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
.file_tab {
|
||||
|
||||
}
|
||||
.otpText {
|
||||
padding-right: 10px;
|
||||
}
|
||||
|
||||
.import-selection{
|
||||
select{
|
||||
margin-left: 15px;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
//width: 100%;
|
||||
.main_list {
|
||||
//min-height: 95%;
|
||||
|
|
@ -96,7 +250,6 @@
|
|||
}
|
||||
}
|
||||
border-bottom: 1px solid #c9c9c9;
|
||||
|
||||
}
|
||||
|
||||
.title {
|
||||
|
|
@ -108,9 +261,11 @@
|
|||
display: none;
|
||||
}
|
||||
}
|
||||
|
||||
.breadcrumb {
|
||||
float: left;
|
||||
}
|
||||
|
||||
.actions.creatable {
|
||||
float: left;
|
||||
overflow: hidden;
|
||||
|
|
@ -353,152 +508,6 @@
|
|||
|
||||
}
|
||||
|
||||
.edit_credential {
|
||||
padding-top: 10px;
|
||||
label {
|
||||
display: block;
|
||||
}
|
||||
input[type="text"], input[type="password"] {
|
||||
width: 100%;
|
||||
}
|
||||
.compromised-button{
|
||||
margin-top: 15px;
|
||||
background-color: #e60000;
|
||||
color: black;
|
||||
}
|
||||
|
||||
.compromised-details{
|
||||
margin-top: 15px;
|
||||
display: flex;
|
||||
.icon{
|
||||
float: left;
|
||||
height: 20px;
|
||||
}
|
||||
.text{
|
||||
padding-left: 5px;
|
||||
padding-right: 30px;
|
||||
color: #e9322d;
|
||||
}
|
||||
}
|
||||
|
||||
.tags {
|
||||
float: left;
|
||||
.tag {
|
||||
background-color: rgba(240, 240, 240, .9);
|
||||
padding: 4px;
|
||||
font-size: 11px;
|
||||
}
|
||||
}
|
||||
tags-input {
|
||||
.tags {
|
||||
width: 100%;
|
||||
.input {
|
||||
}
|
||||
}
|
||||
}
|
||||
.credential_textarea {
|
||||
width: 100%;
|
||||
height: 100px;
|
||||
}
|
||||
.password_settings {
|
||||
label {
|
||||
overflow: hidden;
|
||||
input[type="checkbox"] {
|
||||
width: auto !important;
|
||||
float: left;
|
||||
}
|
||||
.label {
|
||||
&.sm {
|
||||
font-size: 12px;
|
||||
}
|
||||
float: left;
|
||||
}
|
||||
}
|
||||
.password-settings-padding-left-fix{
|
||||
padding-left: 0 !important;
|
||||
}
|
||||
}
|
||||
.field-value {
|
||||
.valueInput {
|
||||
padding-right: 0;
|
||||
input {
|
||||
@include border-right-radius(0);
|
||||
}
|
||||
.pw-gen .generate_pw .cell:last-child {
|
||||
@include border-right-radius(0);
|
||||
}
|
||||
}
|
||||
.selectType {
|
||||
padding-left: 0;
|
||||
margin-left: 0px;
|
||||
select {
|
||||
@include border-left-radius(0);
|
||||
}
|
||||
}
|
||||
}
|
||||
.custom_fields, .files {
|
||||
margin-top: 10px;
|
||||
table {
|
||||
width: 100%;
|
||||
thead {
|
||||
th.dragger {
|
||||
width: 3%;
|
||||
}
|
||||
th {
|
||||
color: #fff;
|
||||
}
|
||||
th.field_actions {
|
||||
width: 15%;
|
||||
}
|
||||
}
|
||||
tr:hover {
|
||||
background-color: transparent;
|
||||
}
|
||||
tr {
|
||||
td.dragger {
|
||||
width: 3%;
|
||||
text-align: center;
|
||||
cursor: move;
|
||||
cursor: -webkit-grab;
|
||||
cursor: -moz-grab;
|
||||
cursor: grab;
|
||||
}
|
||||
td.field_actions {
|
||||
font-size: 13px;
|
||||
width: 15%;
|
||||
i {
|
||||
cursor: pointer;
|
||||
}
|
||||
}
|
||||
td, th {
|
||||
width: 20%;
|
||||
padding: 5px;
|
||||
.editable-has-buttons.editable-input {
|
||||
width: 55%;
|
||||
}
|
||||
}
|
||||
td {
|
||||
height: 50px;
|
||||
vertical-align: middle;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
.file_tab {
|
||||
|
||||
}
|
||||
.otpText {
|
||||
padding-right: 10px;
|
||||
}
|
||||
|
||||
.import-selection{
|
||||
select{
|
||||
margin-left: 15px;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
.share{
|
||||
overflow:hidden;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -82,3 +82,7 @@
|
|||
clear: both;
|
||||
padding: 0 1em;
|
||||
}
|
||||
|
||||
.tab-margin-top {
|
||||
margin-top: 12px;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -60,10 +60,6 @@
|
|||
height: 300px;
|
||||
}
|
||||
margin-bottom: 50px;
|
||||
|
||||
.tab-margin-top {
|
||||
margin-top: 12px;
|
||||
}
|
||||
}
|
||||
|
||||
.import-steps {
|
||||
|
|
@ -95,7 +91,7 @@ h3 {
|
|||
label, input {
|
||||
display: block;
|
||||
}
|
||||
input[type="text"], input[type="password"] {
|
||||
input[type="text"], input[type="password"], textarea {
|
||||
width: 100%;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,36 +1,46 @@
|
|||
|
||||
<div class="row">
|
||||
<div class="col-xs-12 col-md-6">
|
||||
<label >{{ 'label' | translate}}</label>
|
||||
<div class="icon-label">
|
||||
<div class="icon-picker" icon-picker="storedCredential"></div>
|
||||
<input type="text" class="form-control" ng-model="storedCredential.label">
|
||||
<div class="setting-group">
|
||||
<label >{{ 'label' | translate}}</label>
|
||||
<div class="icon-label">
|
||||
<div class="icon-picker" icon-picker="storedCredential"></div>
|
||||
<input type="text" class="form-control" ng-model="storedCredential.label">
|
||||
</div>
|
||||
</div>
|
||||
<label>{{ 'username' | translate}}</label>
|
||||
<div>
|
||||
|
||||
<div class="setting-group">
|
||||
<label>{{ 'username' | translate}}</label>
|
||||
<input type="text" ng-model="storedCredential.username">
|
||||
</div>
|
||||
<label>{{ 'email' | translate}}</label>
|
||||
<div>
|
||||
|
||||
<div class="setting-group">
|
||||
<label>{{ 'email' | translate}}</label>
|
||||
<input type="text" ng-model="storedCredential.email">
|
||||
</div>
|
||||
<label>{{ 'password' | translate}}</label>
|
||||
<div>
|
||||
<password-gen ng-model="storedCredential.password" settings="pwSettings" callback="pwGenerated"></password-gen>
|
||||
<ng-password-meter password="storedCredential.password"></ng-password-meter>
|
||||
|
||||
<div class="setting-group">
|
||||
<label>{{ 'password' | translate}}</label>
|
||||
<div>
|
||||
<password-gen ng-model="storedCredential.password" settings="pwSettings" callback="pwGenerated"></password-gen>
|
||||
<ng-password-meter password="storedCredential.password"></ng-password-meter>
|
||||
</div>
|
||||
</div>
|
||||
<div>
|
||||
|
||||
<div class="setting-group">
|
||||
<label>{{ 'password.r' | translate}}</label>
|
||||
<input type="password" ng-model="storedCredential.password_repeat">
|
||||
</div>
|
||||
<label>{{ 'url' | translate}}</label>
|
||||
<div>
|
||||
|
||||
<div class="setting-group">
|
||||
<label>{{ 'url' | translate}}</label>
|
||||
<input type="text" ng-model="storedCredential.url">
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="col-xs-12 col-md-6">
|
||||
<label>{{ 'notes' | translate}}</label>
|
||||
<div>
|
||||
<div class="setting-group">
|
||||
<label>{{ 'notes' | translate}}</label>
|
||||
<textarea class="credential_textarea" ng-model="storedCredential.description"></textarea>
|
||||
</div>
|
||||
<label>{{ 'add.tag' | translate}}</label>
|
||||
|
|
@ -40,8 +50,9 @@
|
|||
</tags-input>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="col-xs-12 col-md-6">
|
||||
<button class="compromised-button" ng-click="compromise()">{{ 'compromised.label' | translate}}</button>
|
||||
<button class="btn-danger compromised-button" ng-click="compromise()">{{ 'compromised.label' | translate}}</button>
|
||||
<div class="compromised-details" ng-show="storedCredential.compromised">
|
||||
<div class="icon-error-color icon"></div>
|
||||
<div class="text">{{ 'compromised.warning' | translate }}</div>
|
||||
|
|
|
|||
|
|
@ -10,7 +10,7 @@
|
|||
<div class="row files" ng-if="storedCredential.files.length > 0">
|
||||
<div class="col-xs-12 table">
|
||||
<table>
|
||||
<thead use-theme>
|
||||
<thead>
|
||||
<tr>
|
||||
<th class="field_label">{{ 'file.name' | translate }}</th>
|
||||
<th class="field_value">{{ 'upload.date' | translate}}</th>
|
||||
|
|
@ -32,4 +32,4 @@
|
|||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
|||
|
|
@ -1,17 +1,21 @@
|
|||
<div class="row">
|
||||
<div class="col-xs-12 col-md-5 col-lg-5">
|
||||
|
||||
<label>{{ 'password' | translate}}</label>
|
||||
<div>
|
||||
<password-gen ng-model="storedCredential.password"
|
||||
settings="pwSettings" callback="pwGenerated"></password-gen>
|
||||
<ng-password-meter
|
||||
password="storedCredential.password"></ng-password-meter>
|
||||
<div class="setting-group">
|
||||
<label>{{ 'password' | translate}}</label>
|
||||
<div>
|
||||
<password-gen ng-model="storedCredential.password"
|
||||
settings="pwSettings" callback="pwGenerated"></password-gen>
|
||||
<ng-password-meter
|
||||
password="storedCredential.password"></ng-password-meter>
|
||||
</div>
|
||||
</div>
|
||||
<label>{{ 'password.r' | translate}}</label>
|
||||
<div>
|
||||
|
||||
<div class="setting-group">
|
||||
<label>{{ 'password.r' | translate}}</label>
|
||||
<input type="password" ng-model="storedCredential.password_repeat">
|
||||
</div>
|
||||
|
||||
<label>{{ 'expire.date' | translate}}</label>
|
||||
<div>
|
||||
<span datetime-picker ng-model="storedCredential.expire_time" class="link"
|
||||
|
|
@ -48,44 +52,37 @@
|
|||
<input type="number" ng-model="pwSettings.length" min="1">
|
||||
|
||||
</label>
|
||||
<br>
|
||||
<label>
|
||||
<span class="label">{{'password.generation.min_digits' | translate}}</span><br />
|
||||
<input type="number" ng-model="pwSettings.minimumDigitCount" min="0">
|
||||
|
||||
</label>
|
||||
</div>
|
||||
<div class="col-xs-12 col-sm-6 col-lg-6">
|
||||
<label>
|
||||
<input type="checkbox"
|
||||
ng-model="pwSettings.useUppercase">
|
||||
<span class="label sm">{{ 'password.generation.uppercase' | translate}}</span>
|
||||
</label>
|
||||
<label>
|
||||
<input
|
||||
ng-model="pwSettings.useLowercase" type="checkbox"
|
||||
id="lower">
|
||||
<span class="label sm">{{ 'password.generation.lowercase' | translate}}</span>
|
||||
</label>
|
||||
<label>
|
||||
<input ng-model="pwSettings.useDigits" type="checkbox"
|
||||
id="digits">
|
||||
<span class="label sm">{{ 'password.generation.digits' | translate}}</span>
|
||||
</label>
|
||||
<label>
|
||||
<input type="checkbox" id="special"
|
||||
<div class="col-xs-12 col-sm-6 col-lg-6 display-grid">
|
||||
<input id="pwSettings.useUppercase" class="checkbox" type="checkbox"
|
||||
ng-model="pwSettings.useUppercase">
|
||||
<label for="pwSettings.useUppercase">{{'password.generation.uppercase' | translate}}</label>
|
||||
|
||||
<input id="pwSettings.useLowercase" class="checkbox" type="checkbox"
|
||||
ng-model="pwSettings.useLowercase">
|
||||
<label for="pwSettings.useLowercase">{{'password.generation.lowercase' | translate}}</label>
|
||||
|
||||
<input id="pwSettings.useDigits" class="checkbox" type="checkbox"
|
||||
ng-model="pwSettings.useDigits">
|
||||
<label for="pwSettings.useDigits">{{'password.generation.digits' | translate}}</label>
|
||||
|
||||
<input id="pwSettings.useSpecialChars" class="checkbox" type="checkbox"
|
||||
ng-model="pwSettings.useSpecialChars">
|
||||
<span class="label sm">{{ 'password.generation.special' | translate}}</span>
|
||||
</label>
|
||||
<label>
|
||||
<input type="checkbox" id="ambig"
|
||||
<label for="pwSettings.useSpecialChars">{{'password.generation.special' | translate}}</label>
|
||||
|
||||
<input id="pwSettings.avoidAmbiguousCharacters" class="checkbox" type="checkbox"
|
||||
ng-model="pwSettings.avoidAmbiguousCharacters">
|
||||
<span class="label sm">{{ 'password.generation.ambiguous' | translate}}</span>
|
||||
</label>
|
||||
<label>
|
||||
<input type="checkbox" ng-model="pwSettings.requireEveryCharType"
|
||||
id="reqevery">
|
||||
<span class="label sm">{{ 'password.generation.require_same' | translate}}</span>
|
||||
</label>
|
||||
<label for="pwSettings.avoidAmbiguousCharacters">{{'password.generation.ambiguous' | translate}}</label>
|
||||
|
||||
<input id="pwSettings.requireEveryCharType" class="checkbox" type="checkbox"
|
||||
ng-model="pwSettings.requireEveryCharType">
|
||||
<label for="pwSettings.requireEveryCharType">{{'password.generation.require_same' | translate}}</label>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue