mirror of
https://github.com/nextcloud/passman.git
synced 2025-09-12 07:54:45 +08:00
v2 update main style to support nc 25
Signed-off-by: binsky <timo@binsky.org>
This commit is contained in:
parent
5318a77436
commit
5cbfbafa92
9 changed files with 782 additions and 726 deletions
796
css/app.css
796
css/app.css
|
@ -416,7 +416,7 @@
|
|||
cursor: pointer; }
|
||||
|
||||
.vault_wrapper {
|
||||
margin: 5em auto auto auto;
|
||||
margin: 0 auto auto auto;
|
||||
max-width: 420px;
|
||||
-webkit-border-radius: 5px;
|
||||
border-radius: 5px;
|
||||
|
@ -490,6 +490,12 @@
|
|||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*
|
||||
*/
|
||||
#inner-app-content {
|
||||
padding-top: 58px !important;
|
||||
height: 100%;
|
||||
width: 100%;
|
||||
display: flex; }
|
||||
|
||||
.icon-image-size {
|
||||
width: 16px; }
|
||||
|
||||
|
@ -521,380 +527,394 @@
|
|||
margin-left: 0px !important; }
|
||||
|
||||
#app-content {
|
||||
position: sticky;
|
||||
overflow-x: hidden; }
|
||||
@media only screen and (max-width: 769px) {
|
||||
@media only screen and (max-width: 1024px) {
|
||||
#app-content {
|
||||
width: 100vw; } }
|
||||
@media only screen and (min-width: 770px) {
|
||||
@media only screen and (min-width: 1025px) {
|
||||
#app-content {
|
||||
width: calc(100vw - 300px); } }
|
||||
#app-content .main_list #passman-controls {
|
||||
text-align: center;
|
||||
border-bottom: 1px solid #c9c9c9; }
|
||||
@media screen and (max-width: 765px) {
|
||||
#app-content .main_list #passman-controls.sidebar-shown .title {
|
||||
display: none; } }
|
||||
@media screen and (min-width: 769px) and (max-width: 1120px) {
|
||||
#app-content .main_list #passman-controls.sidebar-shown .title {
|
||||
display: none; } }
|
||||
#app-content .main_list .title {
|
||||
text-align: center;
|
||||
display: inline-flex;
|
||||
font-weight: bold;
|
||||
margin-top: 10px; }
|
||||
@media screen and (max-width: 820px) {
|
||||
#app-content .main_list .title {
|
||||
display: none; } }
|
||||
#app-content .main_list .breadcrumb {
|
||||
float: left; }
|
||||
#app-content .main_list .actions.creatable {
|
||||
float: left;
|
||||
overflow: hidden; }
|
||||
#app-content .main_list .actions.creatable .bubble {
|
||||
position: relative;
|
||||
width: 185px;
|
||||
-webkit-border-radius: 5px;
|
||||
border-radius: 5px;
|
||||
background-clip: padding-box;
|
||||
/* stops bg color from leaking outside the border: */
|
||||
box-shadow: 0 1px 10px rgba(50, 50, 50, 0.7); }
|
||||
#app-content .main_list .actions.creatable .bubble ul li {
|
||||
padding-left: 10px; }
|
||||
#app-content .main_list .actions.creatable .bubble ul .menuitem {
|
||||
font-size: 12px;
|
||||
display: inline; }
|
||||
#app-content .main_list .actions.creatable .bubble:after {
|
||||
right: inherit;
|
||||
left: 10px;
|
||||
top: -19px; }
|
||||
#app-content .main_list .viewModes {
|
||||
float: right;
|
||||
margin-right: 5px;
|
||||
margin-top: 3px; }
|
||||
#app-content .main_list .viewModes .view-mode:first-child {
|
||||
-webkit-border-bottom-left-radius: 5px;
|
||||
border-bottom-left-radius: 5px;
|
||||
-webkit-border-top-left-radius: 5px;
|
||||
border-top-left-radius: 5px;
|
||||
background-clip: padding-box;
|
||||
border: 1px solid rgba(240, 240, 240, 0.9); }
|
||||
#app-content .main_list .viewModes .view-mode:last-child {
|
||||
-webkit-border-bottom-right-radius: 5px;
|
||||
border-bottom-right-radius: 5px;
|
||||
-webkit-border-top-right-radius: 5px;
|
||||
border-top-right-radius: 5px;
|
||||
background-clip: padding-box;
|
||||
border: 1px solid rgba(240, 240, 240, 0.9); }
|
||||
#app-content .main_list .viewModes .view-mode {
|
||||
display: inline-block;
|
||||
padding: 7px;
|
||||
background-color: rgba(240, 240, 240, 0.9); }
|
||||
#app-content .main_list .viewModes .view-mode.active {
|
||||
display: inline-block;
|
||||
padding: 7px;
|
||||
background-color: rgba(226, 226, 226, 0.9); }
|
||||
#app-content .main_list .viewModes .view-mode {
|
||||
cursor: pointer;
|
||||
display: inline-block;
|
||||
padding: 7px; }
|
||||
#app-content .main_list .searchboxContainer {
|
||||
display: inline-block;
|
||||
visibility: visible;
|
||||
float: right; }
|
||||
#app-content .main_list .searchboxContainer .searchbox {
|
||||
display: inline-block;
|
||||
width: calc(100% - 3px); }
|
||||
#app-content .main_list .searchboxContainer .searchclear {
|
||||
color: #ccc;
|
||||
cursor: pointer;
|
||||
font-size: 18px;
|
||||
height: 14px;
|
||||
margin: auto;
|
||||
position: absolute !important;
|
||||
right: 10px;
|
||||
top: 12px;
|
||||
z-index: 99999999; }
|
||||
#app-content .main_list .searchboxContainer .searchOptions {
|
||||
position: relative;
|
||||
bottom: 5px;
|
||||
background: #fff;
|
||||
border: 1px solid #ddd;
|
||||
padding: 5px;
|
||||
/*width: calc(100% - 3px);*/
|
||||
box-shadow: 3px 3px 5px #888888;
|
||||
-webkit-border-bottom-right-radius: 3px;
|
||||
border-bottom-right-radius: 3px;
|
||||
-webkit-border-bottom-left-radius: 3px;
|
||||
border-bottom-left-radius: 3px;
|
||||
background-clip: padding-box; }
|
||||
#app-content .main_list .searchboxContainer .searchOptions input {
|
||||
cursor: pointer; }
|
||||
#app-content .main_list .credential-table {
|
||||
width: 100%; }
|
||||
#app-content .main_list .credential-table tr:hover {
|
||||
background-color: whitesmoke; }
|
||||
#app-content .main_list .credential-table tr.selected {
|
||||
background-color: #f8f8f8; }
|
||||
#app-content .main_list .credential-table tr .compromised {
|
||||
background-color: #f74040; }
|
||||
#app-content .main_list .credential-table tr .compromised:hover {
|
||||
background-color: #e10909; }
|
||||
#app-content .main_list .credential-table tr .compromised-list {
|
||||
display: inline-block;
|
||||
margin-left: 50px; }
|
||||
#app-content .main_list .credential-table tr .compromised-list .icon {
|
||||
height: 18px; }
|
||||
#app-content .main_list .credential-table tr .compromised-list .text {
|
||||
font-style: italic;
|
||||
font-weight: bold; }
|
||||
#app-content .main_list .credential-table tr td {
|
||||
cursor: pointer;
|
||||
padding: 5px;
|
||||
border-bottom: 1px solid #eeeeee; }
|
||||
#app-content .main_list .credential-table tr td .icon {
|
||||
font-size: 19px;
|
||||
float: left;
|
||||
margin-right: 5px;
|
||||
margin-left: 3px; }
|
||||
#app-content .main_list .credential-table tr td .icon-more {
|
||||
display: inline-block;
|
||||
float: right;
|
||||
margin-left: 5px;
|
||||
margin-top: 1px;
|
||||
opacity: 0.4;
|
||||
height: 20px;
|
||||
width: 32px;
|
||||
cursor: pointer; }
|
||||
#app-content .main_list .credential-table tr td .icon-more:hover {
|
||||
opacity: 1; }
|
||||
#app-content .main_list .credential-table tr td .popovermenu {
|
||||
margin-top: 25px;
|
||||
height: 100px;
|
||||
width: 100px;
|
||||
right: -2px !important;
|
||||
box-shadow: 0 1px 10px rgba(50, 50, 50, 0.7); }
|
||||
#app-content .main_list .credential-table tr td .popovermenu ul {
|
||||
display: block;
|
||||
width: 100px;
|
||||
height: 75px; }
|
||||
#app-content .main_list .credential-table tr td .popovermenu ul li {
|
||||
padding: 0px; }
|
||||
#app-content .main_list .credential-table tr td .popovermenu ul .menuitem {
|
||||
font-size: 12px;
|
||||
display: inline; }
|
||||
#app-content .main_list .credential-table tr td .popovermenu .action {
|
||||
padding: 10px;
|
||||
margin: -10px; }
|
||||
#app-content .main_list .tags {
|
||||
float: right; }
|
||||
#app-content .main_list .tags .tag {
|
||||
background-color: rgba(240, 240, 240, 0.9);
|
||||
padding: 4px;
|
||||
font-size: 12px;
|
||||
margin-right: 3px;
|
||||
-webkit-border-radius: 5px;
|
||||
border-radius: 5px;
|
||||
background-clip: padding-box;
|
||||
/* stops bg color from leaking outside the border: */ }
|
||||
#app-content .main_list .tags .tag:last-child {
|
||||
margin-right: 8px; }
|
||||
#app-content .main_list .grid-view {
|
||||
width: 100%;
|
||||
#app-content #app-content-wrapper {
|
||||
height: 100%;
|
||||
display: flex;
|
||||
flex-wrap: wrap; }
|
||||
#app-content .main_list .grid-view .credential {
|
||||
display: flex;
|
||||
width: 100%;
|
||||
border: 2px solid rgba(240, 240, 240, 0.9);
|
||||
margin: 25px;
|
||||
-webkit-border-radius: 10px;
|
||||
border-radius: 10px;
|
||||
background-clip: padding-box;
|
||||
/* stops bg color from leaking outside the border: */ }
|
||||
#app-content .main_list .grid-view .credential .credential_content {
|
||||
display: flex;
|
||||
padding: 2px;
|
||||
flex-direction: column;
|
||||
width: 100%;
|
||||
cursor: pointer;
|
||||
font-size: 1.75em; }
|
||||
#app-content .main_list .grid-view .credential .credential_content .label {
|
||||
padding-top: 0.5em;
|
||||
padding-right: 1em;
|
||||
line-height: 1.3em;
|
||||
word-wrap: break-word;
|
||||
float: right; }
|
||||
#app-content .main_list .grid-view .credential .credential_content .tags {
|
||||
margin: 0 0 auto;
|
||||
text-align: right; }
|
||||
#app-content .main_list .grid-view .credential .credential_content .tags .tag {
|
||||
color: #000 !important;
|
||||
margin-top: 5px;
|
||||
display: inline-block;
|
||||
left: 0; }
|
||||
@media all and (min-width: 40em) {
|
||||
#app-content .main_list .grid-view .credential {
|
||||
width: 40%; } }
|
||||
@media all and (min-width: 58em) {
|
||||
#app-content .main_list .grid-view .credential {
|
||||
width: 26%; } }
|
||||
@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 {
|
||||
width: 100%;
|
||||
padding-right: 15px; }
|
||||
#app-content #app-content-wrapper #passman-controls {
|
||||
text-align: center;
|
||||
border-bottom: 1px solid #c9c9c9; }
|
||||
@media screen and (max-width: 765px) {
|
||||
#app-content #app-content-wrapper #passman-controls.sidebar-shown .title {
|
||||
display: none; } }
|
||||
@media screen and (min-width: 769px) and (max-width: 1120px) {
|
||||
#app-content #app-content-wrapper #passman-controls.sidebar-shown .title {
|
||||
display: none; } }
|
||||
#app-content #app-content-wrapper .title {
|
||||
text-align: center;
|
||||
display: inline-block;
|
||||
font-weight: bold;
|
||||
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 {
|
||||
margin-right: auto;
|
||||
margin-left: auto;
|
||||
margin-top: 10%;
|
||||
text-align: center; }
|
||||
#app-content .main_list .belowList {
|
||||
margin-right: auto;
|
||||
margin-left: auto;
|
||||
margin-top: 1%;
|
||||
text-align: center; }
|
||||
#app-content .main_list .app_sidebar {
|
||||
float: right;
|
||||
padding: 10px;
|
||||
overflow-y: auto; }
|
||||
#app-content .main_list .app_sidebar h2 {
|
||||
margin-bottom: 10px;
|
||||
font-weight: 400;
|
||||
white-space: nowrap;
|
||||
overflow: hidden;
|
||||
text-overflow: ellipsis;
|
||||
max-width: 90%; }
|
||||
#app-content .main_list .app_sidebar .close.icon-close {
|
||||
position: absolute;
|
||||
top: 10px;
|
||||
right: 10px;
|
||||
cursor: pointer; }
|
||||
#app-content .main_list .app_sidebar.item_selected {
|
||||
height: 25%;
|
||||
display: inline-block; }
|
||||
#app-content .main_list .app_sidebar .credential-data .compromised-details {
|
||||
margin-top: 15px;
|
||||
margin-bottom: 15px;
|
||||
display: flex; }
|
||||
#app-content .main_list .app_sidebar .credential-data .compromised-details .icon {
|
||||
float: left;
|
||||
height: 20px; }
|
||||
#app-content .main_list .app_sidebar .credential-data .compromised-details .text {
|
||||
padding-left: 5px;
|
||||
padding-right: 30px;
|
||||
color: #e9322d; }
|
||||
#app-content .main_list .app_sidebar .credential-data .row {
|
||||
margin-bottom: 11px; }
|
||||
#app-content .main_list .app_sidebar .credential-data .tags {
|
||||
margin-top: 15px;
|
||||
margin-bottom: 15px;
|
||||
float: none; }
|
||||
#app-content .main_list .app_sidebar .credential-data .tags .tag {
|
||||
@media screen and (max-width: 820px) {
|
||||
#app-content #app-content-wrapper .title {
|
||||
display: none; } }
|
||||
#app-content #app-content-wrapper .breadcrumb {
|
||||
float: left; }
|
||||
#app-content #app-content-wrapper .actions.creatable {
|
||||
float: left;
|
||||
overflow: hidden; }
|
||||
#app-content #app-content-wrapper .actions.creatable .bubble {
|
||||
position: relative;
|
||||
width: 185px;
|
||||
-webkit-border-radius: 5px;
|
||||
border-radius: 5px;
|
||||
background-clip: padding-box;
|
||||
/* stops bg color from leaking outside the border: */
|
||||
box-shadow: 0 1px 10px rgba(50, 50, 50, 0.7); }
|
||||
#app-content #app-content-wrapper .actions.creatable .bubble ul li {
|
||||
padding-left: 10px; }
|
||||
#app-content #app-content-wrapper .actions.creatable .bubble ul .menuitem {
|
||||
font-size: 12px;
|
||||
display: inline; }
|
||||
#app-content #app-content-wrapper .actions.creatable .bubble:after {
|
||||
right: inherit;
|
||||
left: 10px;
|
||||
top: -19px; }
|
||||
#app-content #app-content-wrapper .viewModes {
|
||||
float: right;
|
||||
margin-right: 5px;
|
||||
margin-top: 3px; }
|
||||
#app-content #app-content-wrapper .viewModes .view-mode:first-child {
|
||||
-webkit-border-bottom-left-radius: 5px;
|
||||
border-bottom-left-radius: 5px;
|
||||
-webkit-border-top-left-radius: 5px;
|
||||
border-top-left-radius: 5px;
|
||||
background-clip: padding-box;
|
||||
border: 1px solid rgba(240, 240, 240, 0.9); }
|
||||
#app-content #app-content-wrapper .viewModes .view-mode:last-child {
|
||||
-webkit-border-bottom-right-radius: 5px;
|
||||
border-bottom-right-radius: 5px;
|
||||
-webkit-border-top-right-radius: 5px;
|
||||
border-top-right-radius: 5px;
|
||||
background-clip: padding-box;
|
||||
border: 1px solid rgba(240, 240, 240, 0.9); }
|
||||
#app-content #app-content-wrapper .viewModes .view-mode {
|
||||
display: inline-block;
|
||||
padding: 7px;
|
||||
background-color: rgba(240, 240, 240, 0.9); }
|
||||
#app-content #app-content-wrapper .viewModes .view-mode.active {
|
||||
display: inline-block;
|
||||
padding: 7px;
|
||||
background-color: rgba(226, 226, 226, 0.9); }
|
||||
#app-content #app-content-wrapper .viewModes .view-mode {
|
||||
cursor: pointer;
|
||||
display: inline-block;
|
||||
padding: 7px; }
|
||||
#app-content #app-content-wrapper .searchboxContainer {
|
||||
display: inline-block;
|
||||
visibility: visible;
|
||||
float: right; }
|
||||
#app-content #app-content-wrapper .searchboxContainer .searchbox {
|
||||
display: inline-block;
|
||||
width: calc(100% - 3px); }
|
||||
#app-content #app-content-wrapper .searchboxContainer .searchclear {
|
||||
color: #ccc;
|
||||
cursor: pointer;
|
||||
font-size: 18px;
|
||||
height: 14px;
|
||||
margin: auto;
|
||||
position: absolute !important;
|
||||
right: 10px;
|
||||
top: 12px;
|
||||
z-index: 99999999; }
|
||||
#app-content #app-content-wrapper .searchboxContainer .searchOptions {
|
||||
position: relative;
|
||||
bottom: 5px;
|
||||
background: #fff;
|
||||
border: 1px solid #ddd;
|
||||
padding: 5px;
|
||||
/*width: calc(100% - 3px);*/
|
||||
box-shadow: 3px 3px 5px #888888;
|
||||
-webkit-border-bottom-right-radius: 3px;
|
||||
border-bottom-right-radius: 3px;
|
||||
-webkit-border-bottom-left-radius: 3px;
|
||||
border-bottom-left-radius: 3px;
|
||||
background-clip: padding-box; }
|
||||
#app-content #app-content-wrapper .searchboxContainer .searchOptions input {
|
||||
cursor: pointer; }
|
||||
#app-content #app-content-wrapper .credential-table {
|
||||
width: 100%; }
|
||||
#app-content #app-content-wrapper .credential-table tr:hover {
|
||||
background-color: whitesmoke; }
|
||||
#app-content #app-content-wrapper .credential-table tr.selected {
|
||||
background-color: #f8f8f8; }
|
||||
#app-content #app-content-wrapper .credential-table tr .compromised {
|
||||
background-color: #f74040; }
|
||||
#app-content #app-content-wrapper .credential-table tr .compromised:hover {
|
||||
background-color: #e10909; }
|
||||
#app-content #app-content-wrapper .credential-table tr .compromised-list {
|
||||
display: inline-block;
|
||||
margin-left: 50px; }
|
||||
#app-content #app-content-wrapper .credential-table tr .compromised-list .icon {
|
||||
height: 18px; }
|
||||
#app-content #app-content-wrapper .credential-table tr .compromised-list .text {
|
||||
font-style: italic;
|
||||
font-weight: bold; }
|
||||
#app-content #app-content-wrapper .credential-table tr td {
|
||||
cursor: pointer;
|
||||
padding: 5px;
|
||||
border-bottom: 1px solid #eeeeee; }
|
||||
#app-content #app-content-wrapper .credential-table tr td .icon {
|
||||
font-size: 19px;
|
||||
float: left;
|
||||
margin-right: 5px;
|
||||
margin-left: 3px; }
|
||||
#app-content #app-content-wrapper .credential-table tr td .icon-more {
|
||||
display: inline-block;
|
||||
float: right;
|
||||
margin-left: 5px;
|
||||
margin-top: 1px;
|
||||
opacity: 0.4;
|
||||
height: 20px;
|
||||
width: 32px;
|
||||
cursor: pointer; }
|
||||
#app-content #app-content-wrapper .credential-table tr td .icon-more:hover {
|
||||
opacity: 1; }
|
||||
#app-content #app-content-wrapper .credential-table tr td .popovermenu {
|
||||
margin-top: 25px;
|
||||
height: 100px;
|
||||
width: 100px;
|
||||
right: -2px !important;
|
||||
box-shadow: 0 1px 10px rgba(50, 50, 50, 0.7); }
|
||||
#app-content #app-content-wrapper .credential-table tr td .popovermenu ul {
|
||||
display: block;
|
||||
width: 100px;
|
||||
height: 75px; }
|
||||
#app-content #app-content-wrapper .credential-table tr td .popovermenu ul li {
|
||||
padding: 0px; }
|
||||
#app-content #app-content-wrapper .credential-table tr td .popovermenu ul .menuitem {
|
||||
font-size: 12px;
|
||||
display: inline; }
|
||||
#app-content #app-content-wrapper .credential-table tr td .popovermenu .action {
|
||||
padding: 10px;
|
||||
margin: -10px; }
|
||||
#app-content #app-content-wrapper .tags {
|
||||
float: right; }
|
||||
#app-content #app-content-wrapper .tags .tag {
|
||||
background-color: rgba(240, 240, 240, 0.9);
|
||||
padding: 4px;
|
||||
margin-right: 3px; }
|
||||
font-size: 12px;
|
||||
margin-right: 3px;
|
||||
-webkit-border-radius: 5px;
|
||||
border-radius: 5px;
|
||||
background-clip: padding-box;
|
||||
/* stops bg color from leaking outside the border: */ }
|
||||
#app-content #app-content-wrapper .tags .tag:last-child {
|
||||
margin-right: 8px; }
|
||||
#app-content #app-content-wrapper .grid-view {
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
display: flex;
|
||||
flex-wrap: wrap; }
|
||||
#app-content #app-content-wrapper .grid-view .credential {
|
||||
display: flex;
|
||||
width: 100%;
|
||||
border: 2px solid rgba(240, 240, 240, 0.9);
|
||||
margin: 25px;
|
||||
-webkit-border-radius: 10px;
|
||||
border-radius: 10px;
|
||||
background-clip: padding-box;
|
||||
/* stops bg color from leaking outside the border: */ }
|
||||
#app-content #app-content-wrapper .grid-view .credential .credential_content {
|
||||
display: flex;
|
||||
padding: 2px;
|
||||
flex-direction: column;
|
||||
width: 100%;
|
||||
cursor: pointer;
|
||||
font-size: 1.75em; }
|
||||
#app-content #app-content-wrapper .grid-view .credential .credential_content .label {
|
||||
padding-top: 0.5em;
|
||||
padding-right: 1em;
|
||||
line-height: 1.3em;
|
||||
word-wrap: break-word;
|
||||
float: right; }
|
||||
#app-content #app-content-wrapper .grid-view .credential .credential_content .tags {
|
||||
margin: 0 0 auto;
|
||||
text-align: right; }
|
||||
#app-content #app-content-wrapper .grid-view .credential .credential_content .tags .tag {
|
||||
color: #000 !important;
|
||||
margin-top: 5px;
|
||||
display: inline-block;
|
||||
left: 0; }
|
||||
@media all and (min-width: 40em) {
|
||||
#app-content #app-content-wrapper .grid-view .credential {
|
||||
width: 40%; } }
|
||||
@media all and (min-width: 58em) {
|
||||
#app-content #app-content-wrapper .grid-view .credential {
|
||||
width: 26%; } }
|
||||
@media all and (min-width: 78em) {
|
||||
#app-content #app-content-wrapper .grid-view .credential {
|
||||
width: 20%; } }
|
||||
#app-content #app-content-wrapper .edit_credential {
|
||||
padding-top: 10px; }
|
||||
#app-content #app-content-wrapper .edit_credential label {
|
||||
display: block; }
|
||||
#app-content #app-content-wrapper .edit_credential input[type="text"], #app-content #app-content-wrapper .edit_credential input[type="password"] {
|
||||
width: 100%; }
|
||||
#app-content #app-content-wrapper .edit_credential .compromised-button {
|
||||
margin-top: 15px;
|
||||
background-color: #e60000;
|
||||
color: black; }
|
||||
#app-content #app-content-wrapper .edit_credential .compromised-details {
|
||||
margin-top: 15px;
|
||||
display: flex; }
|
||||
#app-content #app-content-wrapper .edit_credential .compromised-details .icon {
|
||||
float: left;
|
||||
height: 20px; }
|
||||
#app-content #app-content-wrapper .edit_credential .compromised-details .text {
|
||||
padding-left: 5px;
|
||||
padding-right: 30px;
|
||||
color: #e9322d; }
|
||||
#app-content #app-content-wrapper .edit_credential .tags {
|
||||
float: left; }
|
||||
#app-content #app-content-wrapper .edit_credential .tags .tag {
|
||||
background-color: rgba(240, 240, 240, 0.9);
|
||||
padding: 4px;
|
||||
font-size: 11px; }
|
||||
#app-content #app-content-wrapper .edit_credential tags-input .tags {
|
||||
width: 100%; }
|
||||
#app-content #app-content-wrapper .edit_credential .credential_textarea {
|
||||
width: 100%;
|
||||
height: 100px; }
|
||||
#app-content #app-content-wrapper .edit_credential .password_settings label {
|
||||
overflow: hidden; }
|
||||
#app-content #app-content-wrapper .edit_credential .password_settings label input[type="checkbox"] {
|
||||
width: auto !important;
|
||||
float: left; }
|
||||
#app-content #app-content-wrapper .edit_credential .password_settings label .label {
|
||||
float: left; }
|
||||
#app-content #app-content-wrapper .edit_credential .password_settings label .label.sm {
|
||||
font-size: 12px; }
|
||||
#app-content #app-content-wrapper .edit_credential .password_settings .password-settings-padding-left-fix {
|
||||
padding-left: 0 !important; }
|
||||
#app-content #app-content-wrapper .edit_credential .field-value .valueInput {
|
||||
padding-right: 0; }
|
||||
#app-content #app-content-wrapper .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 #app-content-wrapper .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 #app-content-wrapper .edit_credential .field-value .selectType {
|
||||
padding-left: 0;
|
||||
margin-left: 0px; }
|
||||
#app-content #app-content-wrapper .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 #app-content-wrapper .edit_credential .custom_fields, #app-content #app-content-wrapper .edit_credential .files {
|
||||
margin-top: 10px; }
|
||||
#app-content #app-content-wrapper .edit_credential .custom_fields table, #app-content #app-content-wrapper .edit_credential .files table {
|
||||
width: 100%; }
|
||||
#app-content #app-content-wrapper .edit_credential .custom_fields table thead th.dragger, #app-content #app-content-wrapper .edit_credential .files table thead th.dragger {
|
||||
width: 3%; }
|
||||
#app-content #app-content-wrapper .edit_credential .custom_fields table thead th, #app-content #app-content-wrapper .edit_credential .files table thead th {
|
||||
color: #fff; }
|
||||
#app-content #app-content-wrapper .edit_credential .custom_fields table thead th.field_actions, #app-content #app-content-wrapper .edit_credential .files table thead th.field_actions {
|
||||
width: 15%; }
|
||||
#app-content #app-content-wrapper .edit_credential .custom_fields table tr:hover, #app-content #app-content-wrapper .edit_credential .files table tr:hover {
|
||||
background-color: transparent; }
|
||||
#app-content #app-content-wrapper .edit_credential .custom_fields table tr td.dragger, #app-content #app-content-wrapper .edit_credential .files table tr td.dragger {
|
||||
width: 3%;
|
||||
text-align: center;
|
||||
cursor: move;
|
||||
cursor: -webkit-grab;
|
||||
cursor: -moz-grab;
|
||||
cursor: grab; }
|
||||
#app-content #app-content-wrapper .edit_credential .custom_fields table tr td.field_actions, #app-content #app-content-wrapper .edit_credential .files table tr td.field_actions {
|
||||
font-size: 13px;
|
||||
width: 15%; }
|
||||
#app-content #app-content-wrapper .edit_credential .custom_fields table tr td.field_actions i, #app-content #app-content-wrapper .edit_credential .files table tr td.field_actions i {
|
||||
cursor: pointer; }
|
||||
#app-content #app-content-wrapper .edit_credential .custom_fields table tr td, #app-content #app-content-wrapper .edit_credential .custom_fields table tr th, #app-content #app-content-wrapper .edit_credential .files table tr td, #app-content #app-content-wrapper .edit_credential .files table tr th {
|
||||
width: 20%;
|
||||
padding: 5px; }
|
||||
#app-content #app-content-wrapper .edit_credential .custom_fields table tr td .editable-has-buttons.editable-input, #app-content #app-content-wrapper .edit_credential .custom_fields table tr th .editable-has-buttons.editable-input, #app-content #app-content-wrapper .edit_credential .files table tr td .editable-has-buttons.editable-input, #app-content #app-content-wrapper .edit_credential .files table tr th .editable-has-buttons.editable-input {
|
||||
width: 55%; }
|
||||
#app-content #app-content-wrapper .edit_credential .custom_fields table tr td, #app-content #app-content-wrapper .edit_credential .files table tr td {
|
||||
height: 50px;
|
||||
vertical-align: middle; }
|
||||
#app-content #app-content-wrapper .edit_credential .otpText {
|
||||
padding-right: 10px; }
|
||||
#app-content #app-content-wrapper .edit_credential .import-selection select {
|
||||
margin-left: 15px; }
|
||||
#app-content #app-content-wrapper .credential-revisions div.crumb > a {
|
||||
max-width: initial !important; }
|
||||
#app-content #app-content-wrapper .main_list {
|
||||
flex: 1;
|
||||
float: left;
|
||||
height: auto;
|
||||
overflow: auto;
|
||||
width: 100%; }
|
||||
#app-content #app-content-wrapper .main_list .share {
|
||||
overflow: hidden; }
|
||||
#app-content #app-content-wrapper .main_list .nopasswords {
|
||||
margin-right: auto;
|
||||
margin-left: auto;
|
||||
margin-top: 10%;
|
||||
text-align: center; }
|
||||
#app-content #app-content-wrapper .main_list .belowList {
|
||||
margin-right: auto;
|
||||
margin-left: auto;
|
||||
margin-top: 1%;
|
||||
text-align: center; }
|
||||
#app-content #app-content-wrapper .app_sidebar {
|
||||
float: right;
|
||||
padding: 10px;
|
||||
overflow-y: auto; }
|
||||
#app-content #app-content-wrapper .app_sidebar h2 {
|
||||
margin-bottom: 10px;
|
||||
font-weight: 400;
|
||||
white-space: nowrap;
|
||||
overflow: hidden;
|
||||
text-overflow: ellipsis;
|
||||
max-width: 90%; }
|
||||
#app-content #app-content-wrapper .app_sidebar .close.icon-close {
|
||||
position: absolute;
|
||||
top: 10px;
|
||||
right: 10px;
|
||||
cursor: pointer; }
|
||||
#app-content #app-content-wrapper .app_sidebar.item_selected {
|
||||
height: 25%;
|
||||
display: inline-block; }
|
||||
#app-content #app-content-wrapper .app_sidebar .credential-data .compromised-details {
|
||||
margin-top: 15px;
|
||||
margin-bottom: 15px;
|
||||
display: flex; }
|
||||
#app-content #app-content-wrapper .app_sidebar .credential-data .compromised-details .icon {
|
||||
float: left;
|
||||
height: 20px; }
|
||||
#app-content #app-content-wrapper .app_sidebar .credential-data .compromised-details .text {
|
||||
padding-left: 5px;
|
||||
padding-right: 30px;
|
||||
color: #e9322d; }
|
||||
#app-content #app-content-wrapper .app_sidebar .credential-data .row {
|
||||
margin-bottom: 11px; }
|
||||
#app-content #app-content-wrapper .app_sidebar .credential-data .tags {
|
||||
margin-top: 15px;
|
||||
margin-bottom: 15px;
|
||||
float: none; }
|
||||
#app-content #app-content-wrapper .app_sidebar .credential-data .tags .tag {
|
||||
background-color: rgba(240, 240, 240, 0.9);
|
||||
padding: 4px;
|
||||
margin-right: 3px; }
|
||||
|
||||
.credential_field {
|
||||
overflow: hidden; }
|
||||
|
@ -1065,7 +1085,7 @@
|
|||
opacity: 1 !important;
|
||||
z-index: 140; }
|
||||
.nav-trashbin a.active {
|
||||
background-image: var(--icon-delete-e9322d); }
|
||||
background-image: var(--icon-delete-color-red); }
|
||||
.nav-trashbin a .fa {
|
||||
margin-right: 15px; }
|
||||
|
||||
|
@ -1164,6 +1184,20 @@
|
|||
.shared_table .fa-trash:hover {
|
||||
color: #ce3702; }
|
||||
|
||||
.tags {
|
||||
float: left; }
|
||||
.tags .tag {
|
||||
background-color: rgba(240, 240, 240, 0.9);
|
||||
padding: 4px;
|
||||
font-size: 11px; }
|
||||
|
||||
tags-input .tags {
|
||||
width: 100%; }
|
||||
tags-input .tags .input {
|
||||
width: auto !important; }
|
||||
tags-input .tags .tag-item {
|
||||
color: var(--color-text-lighter); }
|
||||
|
||||
/**
|
||||
* Nextcloud - passman
|
||||
*
|
||||
|
@ -1185,6 +1219,9 @@
|
|||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*
|
||||
*/
|
||||
.ng-app-frame {
|
||||
display: block !important; }
|
||||
|
||||
.spacer-top-30 {
|
||||
margin-top: 30px; }
|
||||
|
||||
|
@ -1239,6 +1276,17 @@
|
|||
h3 {
|
||||
font-weight: bold; }
|
||||
|
||||
.setting-group label, .setting-group input {
|
||||
display: block; }
|
||||
.setting-group input[type="text"], .setting-group input[type="password"], .setting-group textarea {
|
||||
width: 100%; }
|
||||
|
||||
.display-grid {
|
||||
display: grid; }
|
||||
|
||||
.password-settings-padding-left-fix {
|
||||
padding-left: 0 !important; }
|
||||
|
||||
/**
|
||||
* Nextcloud - passman
|
||||
*
|
||||
|
@ -1393,18 +1441,18 @@ h3 {
|
|||
border-bottom: 1px solid #c9c9c9; }
|
||||
|
||||
#passman-controls {
|
||||
display: flow-root;
|
||||
position: sticky;
|
||||
width: 100%;
|
||||
box-sizing: border-box;
|
||||
position: fixed;
|
||||
margin: -58px 8px 0 0;
|
||||
right: 0;
|
||||
left: 0;
|
||||
border-bottom: 1px solid #c9c9c9;
|
||||
background-color: rgba(255, 255, 255, 0.95);
|
||||
z-index: 50;
|
||||
-webkit-user-select: none;
|
||||
-moz-user-select: none;
|
||||
-ms-user-select: none;
|
||||
user-select: none;
|
||||
height: 54px !important;
|
||||
min-height: 58px !important;
|
||||
padding-right: 20px !important; }
|
||||
@media only screen and (max-width: 769px) {
|
||||
#passman-controls .breadcrumb {
|
||||
|
@ -1415,10 +1463,14 @@ h3 {
|
|||
@media only screen and (max-width: 768px) {
|
||||
#passman-controls {
|
||||
width: 100%; } }
|
||||
@media only screen and (min-width: 1024px) {
|
||||
#app-navigation + #app-content #passman-controls {
|
||||
left: 308px; } }
|
||||
#passman-controls .button, #passman-controls, #passman-controls input[type='submit'], #passman-controls input[type='text'], #passman-controls input[type='password'], #passman-controls select {
|
||||
box-sizing: border-box;
|
||||
display: inline-block;
|
||||
height: 36px;
|
||||
padding: 5px 10px; }
|
||||
padding: 7px 10px; }
|
||||
|
||||
.nopadding {
|
||||
padding-right: 0;
|
||||
|
|
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
|
@ -70,19 +70,20 @@
|
|||
#passman-controls {
|
||||
box-sizing: border-box;
|
||||
position: fixed;
|
||||
margin: -45px 0 0;
|
||||
margin: -58px 8px 0 0;
|
||||
right: 0;
|
||||
left: 0;
|
||||
border-bottom: 1px solid #c9c9c9;
|
||||
padding: 0 !important;
|
||||
background-color: rgba(255, 255, 255, .95);
|
||||
//background-color: rgba(255, 255, 255, .95);
|
||||
z-index: 50;
|
||||
-webkit-user-select: none;
|
||||
-moz-user-select: none;
|
||||
-ms-user-select: none;
|
||||
user-select: none;
|
||||
min-height: 58px !important;
|
||||
//height: auto!important;
|
||||
padding-right: 20px !important;
|
||||
|
||||
height: 44px !important;
|
||||
.breadcrumb{
|
||||
//Move Homeicon to the right to prevent overlap with burgermenu
|
||||
@media only screen and (max-width: 769px) {
|
||||
|
@ -100,8 +101,8 @@
|
|||
}
|
||||
@media only screen and (min-width: 1024px){
|
||||
#app-navigation+#app-content #passman-controls {
|
||||
left: 300px;
|
||||
width: calc( 100% - 300px ) !important;
|
||||
left: 308px;
|
||||
//width: calc( 100% - 300px ) !important;
|
||||
}
|
||||
}
|
||||
#passman-controls .button, #passman-controls, #passman-controls input[type='submit'], #passman-controls input[type='text'], #passman-controls input[type='password'], #passman-controls select {
|
||||
|
|
|
@ -24,7 +24,7 @@ header {
|
|||
display: none;
|
||||
}
|
||||
|
||||
#content {
|
||||
#inner-app-content {
|
||||
|
||||
}
|
||||
|
||||
|
|
|
@ -21,10 +21,11 @@
|
|||
*/
|
||||
|
||||
//override nc style to fix wrong offset
|
||||
#content {
|
||||
padding-top: 47px !important; // 45px but +2 because of borders
|
||||
#inner-app-content {
|
||||
padding-top: 58px !important; // 45px but +2 because of borders
|
||||
height: 100%;
|
||||
width: 100%;
|
||||
display: flex;
|
||||
}
|
||||
|
||||
//fix for different heights of passwordicon
|
||||
|
@ -72,13 +73,12 @@
|
|||
margin-left: 0px !important;
|
||||
}
|
||||
#app-content {
|
||||
position: sticky;
|
||||
|
||||
margin-left: 300px;
|
||||
|
||||
@media only screen and (max-width: 769px) {
|
||||
@media only screen and (max-width: 1024px) {
|
||||
width: 100vw;
|
||||
}
|
||||
@media only screen and (min-width: 770px) {
|
||||
@media only screen and (min-width: 1025px) {
|
||||
width: calc(100vw - 300px);
|
||||
}
|
||||
|
||||
|
@ -86,10 +86,11 @@
|
|||
|
||||
//width: 100%;
|
||||
#app-content-wrapper {
|
||||
min-height: 95%;
|
||||
height: 100%;
|
||||
display:flex;
|
||||
//hack for missing separatorbar when app-sidebar is opened
|
||||
height: calc(100vh - 49px);
|
||||
width: 100%;
|
||||
padding-right: 15px;
|
||||
|
||||
#passman-controls {
|
||||
text-align: center;
|
||||
|
@ -508,6 +509,12 @@
|
|||
|
||||
}
|
||||
|
||||
.credential-revisions {
|
||||
div.crumb > a {
|
||||
max-width: initial!important;
|
||||
}
|
||||
}
|
||||
|
||||
.main_list{
|
||||
flex:1;
|
||||
float:left;
|
||||
|
|
|
@ -119,7 +119,7 @@ style('passman', 'app');
|
|||
/*build-css-end*/
|
||||
?>
|
||||
|
||||
<div id="app" ng-app="passmanApp" ng-controller="MainCtrl">
|
||||
<div id="app" ng-app="passmanApp" ng-controller="MainCtrl" style="display: flex;">
|
||||
<div id="logoutTimer"></div>
|
||||
<div id="warning_bar" class="warning_bar template-hidden" ng-if="using_http && http_warning_hidden == false" ng-init="removeHiddenStyles()">
|
||||
{{ 'http.warning' | translate }}
|
||||
|
@ -232,7 +232,7 @@ style('passman', 'app');
|
|||
|
||||
<div id="app-content" ng-class="{'vaultlist_sidebar_hidden': !selectedVault}">
|
||||
<div id="app-content-wrapper">
|
||||
<div id="content" ng-view="">
|
||||
<div id="inner-app-content" ng-view="">
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
<div class="main_list" off-click-filter="'.download-js-link, .sidebar-shown, #app-sidebar'">
|
||||
<div class="main_list credential-revisions" off-click-filter="'.download-js-link, .sidebar-shown, #app-sidebar'">
|
||||
<div id="passman-controls">
|
||||
<div class="actions creatable">
|
||||
<div class="breadcrumb">
|
||||
|
@ -10,236 +10,231 @@
|
|||
<a ng-click="cancelRevision()">{{active_vault.name}}</a>
|
||||
</div>
|
||||
<div class="crumb svg last">
|
||||
<a ng-if="storedCredential.credential_id">{{ 'showing.revisions' | translate}} "{{revision.credential_data.label}}"</a>
|
||||
<a ng-if="storedCredential.credential_id">{{ 'showing.revisions' | translate}} "{{storedCredential.label}}"</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="credential-list">
|
||||
<div class="credential-table-wrapper">
|
||||
<table class="credential-table" ng-init="menuOpen = false;">
|
||||
<tr ng-repeat="revision in revisions | orderBy:'-created'"
|
||||
ng-click="selectRevision(revision)"
|
||||
ng-class="{'selected': selectedRevision.revision_id == revision.revision_id}">
|
||||
<td>
|
||||
<span class="icon"><i class="fa fa-lock"></i> </span>
|
||||
<span class="label">
|
||||
<table class="credential-table" ng-init="menuOpen = false;">
|
||||
<tr ng-repeat="revision in revisions | orderBy:'-created'"
|
||||
ng-click="selectRevision(revision)"
|
||||
ng-class="{'selected': selectedRevision.revision_id == revision.revision_id}">
|
||||
<td>
|
||||
<span class="icon"><i class="fa fa-lock"></i> </span>
|
||||
<span class="label">
|
||||
{{ 'revision.of' | translate}} {{revision.created * 1000 | date:'dd-MM-yyyy @ HH:mm:ss'}} ({{revision.credential_data.label}})
|
||||
<span ng-if="revision.edited_by">{{ 'revision.edited.by' | translate}} {{revision.edited_by}}</span></span>
|
||||
</td>
|
||||
</tr>
|
||||
<tr ng-show="revisions.length == 0">
|
||||
<td>{{ 'no.revisions' | translate}}</td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
<div id="app-sidebar" class="detailsView scroll-container app_sidebar" off-click="closeSelected()"
|
||||
ng-show="selectedRevision">
|
||||
</td>
|
||||
</tr>
|
||||
<tr ng-show="revisions.length == 0">
|
||||
<td>{{ 'no.revisions' | translate}}</td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
|
||||
<div id="app-sidebar" class="detailsView scroll-container app_sidebar" off-click="closeSelected()"
|
||||
ng-show="selectedRevision">
|
||||
<span class="close icon-close" ng-click="closeSelected()"
|
||||
alt="Close"></span>
|
||||
<b ng-show="selectedRevision">{{ 'revision.of' | translate}} {{selectedRevision.created * 1000 | date:'dd-MM-yyyy @ HH:mm:ss'}}</b>
|
||||
<div class="credential-data">
|
||||
<div class="row" ng-show="selectedRevision.credential_data.label">
|
||||
<div class="col-xs-4 col-md-3 col-lg-3">{{ 'label' | translate }}</div>
|
||||
<div class="col-xs-8 col-md-9 col-lg-9"><span credential-field
|
||||
value="selectedRevision.credential_data.label"></span></div>
|
||||
</div>
|
||||
<b ng-show="selectedRevision">{{ 'revision.of' | translate}} {{selectedRevision.created * 1000 | date:'dd-MM-yyyy @ HH:mm:ss'}}</b>
|
||||
<div class="credential-data">
|
||||
<div class="row" ng-show="selectedRevision.credential_data.label">
|
||||
<div class="col-xs-4 col-md-3 col-lg-3">{{ 'label' | translate }}</div>
|
||||
<div class="col-xs-8 col-md-9 col-lg-9"><span credential-field
|
||||
value="selectedRevision.credential_data.label"></span></div>
|
||||
</div>
|
||||
|
||||
<div class="row" ng-show="selectedRevision.credential_data.username">
|
||||
<div class="col-xs-4 col-md-3 col-lg-3">{{ 'account' | translate }}</div>
|
||||
<div class="col-xs-8 col-md-9 col-lg-9"><span credential-field
|
||||
value="selectedRevision.credential_data.username"></span></div>
|
||||
</div>
|
||||
<div class="row" ng-show="selectedRevision.credential_data.username">
|
||||
<div class="col-xs-4 col-md-3 col-lg-3">{{ 'account' | translate }}</div>
|
||||
<div class="col-xs-8 col-md-9 col-lg-9"><span credential-field
|
||||
value="selectedRevision.credential_data.username"></span></div>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="row" ng-show="selectedRevision.credential_data.password">
|
||||
<div class="col-xs-4 col-md-3 col-lg-3">{{ 'password' | translate }}</div>
|
||||
<div class="col-xs-8 col-md-9 col-lg-9">
|
||||
<div class="row" ng-show="selectedRevision.credential_data.password">
|
||||
<div class="col-xs-4 col-md-3 col-lg-3">{{ 'password' | translate }}</div>
|
||||
<div class="col-xs-8 col-md-9 col-lg-9">
|
||||
<span credential-field value="selectedRevision.credential_data.password" secret="'true'">
|
||||
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="row" ng-show="selectedRevision.credential_data.otp.secret">
|
||||
<div class="col-xs-4 col-md-3 col-lg-3">{{'otp' | translate}}</div>
|
||||
<div class="col-xs-8 col-md-9 col-lg-9"><span otp-generator
|
||||
secret="selectedRevision.credential_data.otp.secret"></span></div>
|
||||
</div>
|
||||
<div class="row" ng-show="selectedRevision.credential_data.otp.secret">
|
||||
<div class="col-xs-4 col-md-3 col-lg-3">{{'otp' | translate}}</div>
|
||||
<div class="col-xs-8 col-md-9 col-lg-9"><span otp-generator
|
||||
secret="selectedRevision.credential_data.otp.secret"></span></div>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="row" ng-show="selectedRevision.credential_data.email">
|
||||
<div class="col-xs-4 col-md-3 col-lg-3">{{'email' | translate}}</div>
|
||||
<div class="col-xs-8 col-md-9 col-lg-9"><span credential-field
|
||||
value="selectedRevision.credential_data.email"></span></div>
|
||||
</div>
|
||||
<div class="row" ng-show="selectedRevision.credential_data.email">
|
||||
<div class="col-xs-4 col-md-3 col-lg-3">{{'email' | translate}}</div>
|
||||
<div class="col-xs-8 col-md-9 col-lg-9"><span credential-field
|
||||
value="selectedRevision.credential_data.email"></span></div>
|
||||
</div>
|
||||
|
||||
<div class="row" ng-show="selectedRevision.credential_data.url">
|
||||
<div class="col-xs-4 col-md-3 col-lg-3">{{ 'url' | translate}}</div>
|
||||
<div class="col-xs-8 col-md-9 col-lg-9"><span credential-field
|
||||
value="selectedRevision.credential_data.url"></span></div>
|
||||
</div>
|
||||
<div class="row" ng-show="selectedRevision.credential_data.url">
|
||||
<div class="col-xs-4 col-md-3 col-lg-3">{{ 'url' | translate}}</div>
|
||||
<div class="col-xs-8 col-md-9 col-lg-9"><span credential-field
|
||||
value="selectedRevision.credential_data.url"></span></div>
|
||||
</div>
|
||||
|
||||
<div class="row" ng-show="selectedRevision.credential_data.description">
|
||||
<div class="col-xs-4 col-md-3 col-lg-3">{{'notes' | translate}}</div>
|
||||
<div class="col-xs-8 col-md-9 col-lg-9"><span credential-field value="selectedRevision.credential_data.description_html"></span></div>
|
||||
</div>
|
||||
<div class="row" ng-show="selectedRevision.credential_data.description">
|
||||
<div class="col-xs-4 col-md-3 col-lg-3">{{'notes' | translate}}</div>
|
||||
<div class="col-xs-8 col-md-9 col-lg-9"><span credential-field value="selectedRevision.credential_data.description_html"></span></div>
|
||||
</div>
|
||||
|
||||
<div class="row" ng-show="selectedRevision.credential_data.files.length > 0">
|
||||
<div class="col-xs-4 col-md-3 col-lg-3">{{ 'files' | translate}}</div>
|
||||
<div class="col-xs-8 col-md-9 col-lg-9"><div ng-repeat="file in selectedRevision.credential_data.files"
|
||||
class="link" ng-click="downloadFile(selectedRevision.credential_data, file)">
|
||||
{{file.filename}} ({{file.size | bytes}})
|
||||
</div></div>
|
||||
</div>
|
||||
<div class="row" ng-show="selectedRevision.credential_data.files.length > 0">
|
||||
<div class="col-xs-4 col-md-3 col-lg-3">{{ 'files' | translate}}</div>
|
||||
<div class="col-xs-8 col-md-9 col-lg-9"><div ng-repeat="file in selectedRevision.credential_data.files"
|
||||
class="link" ng-click="downloadFile(selectedRevision.credential_data, file)">
|
||||
{{file.filename}} ({{file.size | bytes}})
|
||||
</div></div>
|
||||
</div>
|
||||
|
||||
<div class="row" ng-repeat="field in selectedRevision.credential_data.custom_fields">
|
||||
<div class="col-xs-4 col-md-3 col-lg-3">{{field.label}}</div>
|
||||
<div class="col-xs-8 col-md-9 col-lg-9">
|
||||
<span credential-field value="field.value" secret="field.secret" ng-if="field.field_type !== 'file' || !field.field_type"></span>
|
||||
<span ng-if="field.field_type === 'file'" class="link" ng-click="downloadFile(selectedCredential, field.value)">{{field.value.filename}} ({{field.value.size | bytes}})</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row" ng-repeat="field in selectedRevision.credential_data.custom_fields">
|
||||
<div class="col-xs-4 col-md-3 col-lg-3">{{field.label}}</div>
|
||||
<div class="col-xs-8 col-md-9 col-lg-9">
|
||||
<span credential-field value="field.value" secret="field.secret" ng-if="field.field_type !== 'file' || !field.field_type"></span>
|
||||
<span ng-if="field.field_type === 'file'" class="link" ng-click="downloadFile(selectedCredential, field.value)">{{field.value.filename}} ({{field.value.size | bytes}})</span>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="row" ng-show="selectedRevision.credential_data.expire_time > 0">
|
||||
<div class="col-xs-4 col-md-3 col-lg-3">{{ 'expire.time' | translate }}</div>
|
||||
<div class="col-xs-8 col-md-9 col-lg-9">
|
||||
{{selectedRevision.credential_data.expire_time * 1000 | date:'dd-MM-yyyy @ HH:mm:ss'}}
|
||||
</div>
|
||||
</div>
|
||||
<div class="row" ng-show="selectedRevision.credential_data.expire_time > 0">
|
||||
<div class="col-xs-4 col-md-3 col-lg-3">{{ 'expire.time' | translate }}</div>
|
||||
<div class="col-xs-8 col-md-9 col-lg-9">
|
||||
{{selectedRevision.credential_data.expire_time * 1000 | date:'dd-MM-yyyy @ HH:mm:ss'}}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="row" ng-show="selectedRevision.credential_data.changed">
|
||||
<div class="col-xs-4 col-md-3 col-lg-3">{{ 'changed' | translate}}</div>
|
||||
<div class="col-xs-8 col-md-9 col-lg-9">
|
||||
{{selectedRevision.credential_data.changed * 1000 | date:'dd-MM-yyyy @ HH:mm:ss'}}
|
||||
</div>
|
||||
</div>
|
||||
<div class="row" ng-show="selectedRevision.credential_data.changed">
|
||||
<div class="col-xs-4 col-md-3 col-lg-3">{{ 'changed' | translate}}</div>
|
||||
<div class="col-xs-8 col-md-9 col-lg-9">
|
||||
{{selectedRevision.credential_data.changed * 1000 | date:'dd-MM-yyyy @ HH:mm:ss'}}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="row" ng-show="selectedRevision.credential_data.created">
|
||||
<div class="col-xs-4 col-md-3 col-lg-3">{{ 'created' | translate}}</div>
|
||||
<div class="col-xs-8 col-md-9 col-lg-9">
|
||||
{{selectedRevision.credential_data.created * 1000 | date:'dd-MM-yyyy @ HH:mm:ss'}}
|
||||
</div>
|
||||
</div>
|
||||
<div class="row" ng-show="selectedRevision.credential_data.created">
|
||||
<div class="col-xs-4 col-md-3 col-lg-3">{{ 'created' | translate}}</div>
|
||||
<div class="col-xs-8 col-md-9 col-lg-9">
|
||||
{{selectedRevision.credential_data.created * 1000 | date:'dd-MM-yyyy @ HH:mm:ss'}}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="row">
|
||||
<div class="col-xs-12">
|
||||
<div class="tags">
|
||||
<span class="tag" ng-repeat="tag in selectedRevision.credential_data.tags">{{tag.text}}</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-xs-12">
|
||||
<div class="tags">
|
||||
<span class="tag" ng-repeat="tag in selectedRevision.credential_data.tags">{{tag.text}}</span>
|
||||
</div>
|
||||
</div>
|
||||
<!--
|
||||
<table class="revision-details">
|
||||
<tr ng-show="selectedRevision.credential_data.label">
|
||||
<td>
|
||||
{{ 'label' | translate}}
|
||||
</td>
|
||||
<td>
|
||||
{{selectedRevision.credential_data.label}}
|
||||
</td>
|
||||
</tr>
|
||||
<tr ng-show="selectedRevision.credential_data.username">
|
||||
<td>
|
||||
{{ 'account' | translate}}
|
||||
</td>
|
||||
<td>
|
||||
<span credential-field
|
||||
value="selectedRevision.credential_data.username"></span>
|
||||
</td>
|
||||
</tr>
|
||||
<tr ng-show="selectedRevision.credential_data.password">
|
||||
<td>
|
||||
{{ 'password' | translate}}
|
||||
</td>
|
||||
<td>
|
||||
<span credential-field value="selectedRevision.credential_data.password"
|
||||
secret="'true'"></span>
|
||||
</td>
|
||||
</tr>
|
||||
<tr ng-show="selectedRevision.credential_data.otp.secret">
|
||||
<td>
|
||||
{{ 'otp' | translate}}
|
||||
</td>
|
||||
<td>
|
||||
<span otp-generator
|
||||
secret="selectedRevision.credential_data.otp.secret"></span>
|
||||
</td>
|
||||
</tr>
|
||||
<tr ng-show="selectedRevision.credential_data.email">
|
||||
<td>
|
||||
{{ 'email' | translate}}
|
||||
</td>
|
||||
<td>
|
||||
<span credential-field
|
||||
value="selectedRevision.credential_data.email"></span>
|
||||
</td>
|
||||
</tr>
|
||||
<tr ng-show="selectedRevision.credential_data.url">
|
||||
<td>
|
||||
{{ 'url' | translate}}
|
||||
</td>
|
||||
<td>
|
||||
<span credential-field
|
||||
value="selectedRevision.url"></span>
|
||||
</td>
|
||||
</tr>
|
||||
<tr ng-show="selectedRevision.credential_data.files.length > 0">
|
||||
<td>
|
||||
{{ 'files' | translate}}
|
||||
</td>
|
||||
<td>
|
||||
<div ng-repeat="file in selectedRevision.credential_data.files"
|
||||
class="link" ng-click="downloadFile(file)">
|
||||
{{file.filename}} ({{file.size | bytes}})
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr ng-repeat="field in selectedRevision.credential_data.custom_fields">
|
||||
<td>
|
||||
{{field.label}}
|
||||
</td>
|
||||
<td>
|
||||
<span credential-field value="field.value"
|
||||
secret="field.secret"></span>
|
||||
</td>
|
||||
</tr>
|
||||
<tr ng-show="selectedRevision.credential_data.changed">
|
||||
<td>
|
||||
{{ 'changed' | translate}}
|
||||
</td>
|
||||
<td>
|
||||
{{selectedRevision.credential_data.changed * 1000 | date:'dd-MM-yyyy @ HH:mm:ss'}}
|
||||
</td>
|
||||
</tr>
|
||||
<tr ng-show="selectedRevision.credential_data.created">
|
||||
<td>
|
||||
{{ 'created' | translate}}
|
||||
</td>
|
||||
<td>
|
||||
{{selectedRevision.credential_data.created * 1000 | date:'dd-MM-yyyy @ HH:mm:ss'}}
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
</table>
|
||||
-->
|
||||
<div ng-show="selectedRevision">
|
||||
<button class="button" ng-click="restoreRevision(selectedRevision)" >
|
||||
<span class="fa fa-edit"></span> {{ 'restore.revision' | translate}}
|
||||
</button>
|
||||
<button class="button" ng-click="deleteRevision(selectedRevision)" >
|
||||
<span class="fa fa-trash"></span> {{ 'delete.revision' | translate}}
|
||||
</button>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<!--
|
||||
<table class="revision-details">
|
||||
<tr ng-show="selectedRevision.credential_data.label">
|
||||
<td>
|
||||
{{ 'label' | translate}}
|
||||
</td>
|
||||
<td>
|
||||
{{selectedRevision.credential_data.label}}
|
||||
</td>
|
||||
</tr>
|
||||
<tr ng-show="selectedRevision.credential_data.username">
|
||||
<td>
|
||||
{{ 'account' | translate}}
|
||||
</td>
|
||||
<td>
|
||||
<span credential-field
|
||||
value="selectedRevision.credential_data.username"></span>
|
||||
</td>
|
||||
</tr>
|
||||
<tr ng-show="selectedRevision.credential_data.password">
|
||||
<td>
|
||||
{{ 'password' | translate}}
|
||||
</td>
|
||||
<td>
|
||||
<span credential-field value="selectedRevision.credential_data.password"
|
||||
secret="'true'"></span>
|
||||
</td>
|
||||
</tr>
|
||||
<tr ng-show="selectedRevision.credential_data.otp.secret">
|
||||
<td>
|
||||
{{ 'otp' | translate}}
|
||||
</td>
|
||||
<td>
|
||||
<span otp-generator
|
||||
secret="selectedRevision.credential_data.otp.secret"></span>
|
||||
</td>
|
||||
</tr>
|
||||
<tr ng-show="selectedRevision.credential_data.email">
|
||||
<td>
|
||||
{{ 'email' | translate}}
|
||||
</td>
|
||||
<td>
|
||||
<span credential-field
|
||||
value="selectedRevision.credential_data.email"></span>
|
||||
</td>
|
||||
</tr>
|
||||
<tr ng-show="selectedRevision.credential_data.url">
|
||||
<td>
|
||||
{{ 'url' | translate}}
|
||||
</td>
|
||||
<td>
|
||||
<span credential-field
|
||||
value="selectedRevision.url"></span>
|
||||
</td>
|
||||
</tr>
|
||||
<tr ng-show="selectedRevision.credential_data.files.length > 0">
|
||||
<td>
|
||||
{{ 'files' | translate}}
|
||||
</td>
|
||||
<td>
|
||||
<div ng-repeat="file in selectedRevision.credential_data.files"
|
||||
class="link" ng-click="downloadFile(file)">
|
||||
{{file.filename}} ({{file.size | bytes}})
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr ng-repeat="field in selectedRevision.credential_data.custom_fields">
|
||||
<td>
|
||||
{{field.label}}
|
||||
</td>
|
||||
<td>
|
||||
<span credential-field value="field.value"
|
||||
secret="field.secret"></span>
|
||||
</td>
|
||||
</tr>
|
||||
<tr ng-show="selectedRevision.credential_data.changed">
|
||||
<td>
|
||||
{{ 'changed' | translate}}
|
||||
</td>
|
||||
<td>
|
||||
{{selectedRevision.credential_data.changed * 1000 | date:'dd-MM-yyyy @ HH:mm:ss'}}
|
||||
</td>
|
||||
</tr>
|
||||
<tr ng-show="selectedRevision.credential_data.created">
|
||||
<td>
|
||||
{{ 'created' | translate}}
|
||||
</td>
|
||||
<td>
|
||||
{{selectedRevision.credential_data.created * 1000 | date:'dd-MM-yyyy @ HH:mm:ss'}}
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
</table>
|
||||
-->
|
||||
<div ng-show="selectedRevision">
|
||||
<button class="button" ng-click="restoreRevision(selectedRevision)" >
|
||||
<span class="fa fa-edit"></span> {{ 'restore.revision' | translate}}
|
||||
</button>
|
||||
<button class="button" ng-click="deleteRevision(selectedRevision)" >
|
||||
<span class="fa fa-trash"></span> {{ 'delete.revision' | translate}}
|
||||
</button>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
|
|
|
@ -2,20 +2,20 @@
|
|||
<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 class="crumb svg crumbhome">
|
||||
<a ng-click="logout()" class="icon-home">Home</a>
|
||||
<span style="display: none;"></span>
|
||||
</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 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>
|
||||
|
@ -23,8 +23,10 @@
|
|||
<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 }}
|
||||
<input id="filterOptions.useRegex" class="checkbox" type="checkbox" ng-model="filterOptions.useRegex">
|
||||
<label for="filterOptions.useRegex">{{'use.regex' | translate}}</label>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
@ -39,161 +41,160 @@
|
|||
<div class="loaderContainer" ng-if="show_spinner">
|
||||
<div class="loader" use-theme type="'border-bottom-color'"></div>
|
||||
</div>
|
||||
<div class="credential-list">
|
||||
<div class="credential-table-wrapper" 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 }">
|
||||
<div class="credential-table-wrapper" 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)">
|
||||
<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))">
|
||||
<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">
|
||||
<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>
|
||||
</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)">
|
||||
<div class="credential_content">
|
||||
<div>
|
||||
<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)">
|
||||
<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">
|
||||
<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 class="label">{{ ::credential.label}}</div>
|
||||
</div>
|
||||
<div class="tags">
|
||||
<div class="tag" ng-repeat="tag in credential.tags_raw">
|
||||
{{ ::tag.text}}
|
||||
</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>
|
||||
</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>
|
||||
|
||||
<!--nopassword-hint for missing tagresults -->
|
||||
<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>
|
||||
|
||||
<!--nopassword-hint for missing searchresults -->
|
||||
<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>
|
||||
|
||||
|
||||
|
||||
<!--nopassword-hint for good strength -->
|
||||
<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>
|
||||
|
||||
<!--nopassword-hint for medium strength -->
|
||||
<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>
|
||||
|
||||
<!--nopassword-hint for bad strength -->
|
||||
|
||||
<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>
|
||||
|
||||
<!--nopassword-hint for expired -->
|
||||
<div class="nopasswords" ng-if="no_credentials_label.expired" ng-hide="getListSizes().listsize_wout_deleted>0">
|
||||
<div>{{ 'vault.hint.list.noexpired' | translate}}</div>
|
||||
</div>
|
||||
|
||||
<!--nopassword-hint for deleted -->
|
||||
<div class="nopasswords" ng-if="getListSizes().listsize_deleted==0" ng-hide="delete_time==0">
|
||||
<div>{{ 'vault.hint.list.nodeleted' | translate}}</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>
|
||||
<!--nopassword-hint for missing tagresults -->
|
||||
<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 class="sidebar">
|
||||
<!--nopassword-hint for missing searchresults -->
|
||||
<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>
|
||||
|
||||
|
||||
|
||||
<!--nopassword-hint for good strength -->
|
||||
<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>
|
||||
|
||||
<!--nopassword-hint for medium strength -->
|
||||
<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>
|
||||
|
||||
<!--nopassword-hint for bad strength -->
|
||||
|
||||
<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>
|
||||
|
||||
<!--nopassword-hint for expired -->
|
||||
<div class="nopasswords" ng-if="no_credentials_label.expired" ng-hide="getListSizes().listsize_wout_deleted>0">
|
||||
<div>{{ 'vault.hint.list.noexpired' | translate}}</div>
|
||||
</div>
|
||||
|
||||
<!--nopassword-hint for deleted -->
|
||||
<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))">
|
||||
<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-size"></i>
|
||||
</span>
|
||||
<h2 class="sidebar-label">{{selectedCredential.label}}</h2>
|
||||
</div>
|
||||
<h2 class="sidebar-label">{{selectedCredential.label}}</h2>
|
||||
</div>
|
||||
|
||||
<div credential-template="selectedCredential"></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 &&
|
||||
<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 &&
|
||||
(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>
|
||||
<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-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>
|
||||
<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>
|
||||
|
|
Loading…
Add table
Reference in a new issue