mirror of
https://github.com/bitwarden/web
synced 2025-12-29 22:53:17 +00:00
273 lines
15 KiB
HTML
273 lines
15 KiB
HTML
<section class="content-header">
|
|
<div class="btn-group pull-right">
|
|
<button type="button" class="btn btn-link dropdown-toggle" data-toggle="dropdown"
|
|
ng-disabled="bulkActionLoading">
|
|
<i class="fa fa-refresh fa-spin" ng-show="bulkActionLoading"></i>
|
|
Bulk Actions <span class="caret"></span>
|
|
</button>
|
|
<ul class="dropdown-menu">
|
|
<li>
|
|
<a href="#" stop-click ng-click="bulkMove()">
|
|
<i class="fa fa-fw fa-share"></i> Move Selected
|
|
</a>
|
|
</li>
|
|
<li>
|
|
<a href="#" stop-click ng-click="bulkDelete()">
|
|
<i class="fa fa-fw fa-trash"></i> Delete Selected
|
|
</a>
|
|
</li>
|
|
<li role="separator" class="divider"></li>
|
|
<li>
|
|
<a href="#" stop-click ng-click="unselectAll()">
|
|
<i class="fa fa-fw fa-minus-square-o"></i> Unselect All
|
|
</a>
|
|
</li>
|
|
</ul>
|
|
</div>
|
|
<h1>
|
|
My Vault
|
|
<small>
|
|
<span ng-pluralize
|
|
count="vaultFolders.length > 0 ? vaultFolders.length - 1 : 0"
|
|
when="{'1': '{} folder', 'other': '{} folders'}"></span>,
|
|
<span ng-pluralize count="logins.length" when="{'1': '{} login', 'other': '{} logins'}"></span>
|
|
</small>
|
|
</h1>
|
|
</section>
|
|
<section class="content">
|
|
<div ng-show="loading && !vaultFolders.length">
|
|
<p>Loading...</p>
|
|
</div>
|
|
<div class="box box-primary" ng-class="{'collapsed-box': favoriteCollapsed}" style="margin-bottom: 40px;"
|
|
ng-show="vaultFolders.length && folderIdFilter === undefined && (!main.searchVaultText || favoriteLogins.length)">
|
|
<div class="box-header with-border">
|
|
<h3 class="box-title">
|
|
<i class="fa fa-star"></i>
|
|
Favorites
|
|
<small ng-pluralize count="favoriteLogins.length" when="{'1': '{} login', 'other': '{} logins'}"></small>
|
|
</h3>
|
|
<div class="box-tools">
|
|
<div class="btn-group">
|
|
<button type="button" class="btn btn-box-tool dropdown-toggle" data-toggle="dropdown">
|
|
<i class="fa fa-cog"></i> <span class="caret"></span>
|
|
</button>
|
|
<ul class="dropdown-menu dropdown-menu-right">
|
|
<li>
|
|
<a href="#" stop-click ng-click="addLogin(null, true)">
|
|
<i class="fa fa-fw fa-plus-circle"></i> Add Login
|
|
</a>
|
|
</li>
|
|
</ul>
|
|
</div>
|
|
<button type="button" class="btn btn-box-tool" data-widget="collapse" title="Collapse/Expand"
|
|
ng-click="collapseExpand(null, true)">
|
|
<i class="fa" ng-class="{'fa-minus': !favoriteCollapsed, 'fa-plus': favoriteCollapsed}"></i>
|
|
</button>
|
|
</div>
|
|
</div>
|
|
<div class="box-body" ng-class="{'no-padding': favoriteLogins.length}">
|
|
<div ng-show="!favoriteLogins.length">
|
|
<p>No favorite logins.</p>
|
|
<button type="button" ng-click="addLogin(null, true)" class="btn btn-default btn-flat">Add a Login</button>
|
|
</div>
|
|
<div class="table-responsive" ng-show="favoriteLogins.length">
|
|
<table class="table table-striped table-hover table-vmiddle">
|
|
<tbody>
|
|
<tr ng-repeat="login in favoriteLogins = (logins | filter: { favorite: true } |
|
|
filter: (main.searchVaultText || '')) track by login.id">
|
|
<td style="width: 70px;">
|
|
<div class="btn-group" data-append-to="body">
|
|
<button type="button" class="btn btn-default dropdown-toggle" data-toggle="dropdown">
|
|
<i class="fa fa-cog"></i> <span class="caret"></span>
|
|
</button>
|
|
<ul class="dropdown-menu">
|
|
<li>
|
|
<a href="#" stop-click ng-click="editLogin(login)">
|
|
<i class="fa fa-fw fa-pencil"></i> Edit
|
|
</a>
|
|
</li>
|
|
<li>
|
|
<a href="#" stop-click ng-click="attachments(login)">
|
|
<i class="fa fa-fw fa-paperclip"></i> Attachments
|
|
</a>
|
|
</li>
|
|
<li ng-show="!login.organizationId">
|
|
<a href="#" stop-click ng-click="share(login)">
|
|
<i class="fa fa-fw fa-share-alt"></i> Share
|
|
</a>
|
|
</li>
|
|
<li ng-show="login.organizationId && login.edit">
|
|
<a href="#" stop-click ng-click="collections(login)">
|
|
<i class="fa fa-fw fa-cubes"></i> Collections
|
|
</a>
|
|
</li>
|
|
<li ng-show="login.password">
|
|
<a href="#" stop-click ngclipboard ngclipboard-error="clipboardError(e)"
|
|
data-clipboard-text="{{login.password}}">
|
|
<i class="fa fa-fw fa-clipboard"></i> Copy Password
|
|
</a>
|
|
</li>
|
|
<li ng-show="login.edit">
|
|
<a href="#" stop-click ng-click="deleteLogin(login)" class="text-red">
|
|
<i class="fa fa-fw fa-trash"></i> Delete
|
|
</a>
|
|
</li>
|
|
</ul>
|
|
</div>
|
|
</td>
|
|
<td class="action-select">
|
|
<input type="checkbox" value="{{::login.id}}" name="loginSelection" />
|
|
</td>
|
|
<td ng-click="select($event)">
|
|
<a href="#" stop-click ng-click="editLogin(login)" stop-prop>{{login.name}}</a>
|
|
<i class="fa fa-share-alt text-muted" title="Shared" ng-if="login.organizationId"
|
|
stop-prop></i>
|
|
<i class="fa fa-paperclip text-muted" title="Attachments" ng-if="login.hasAttachments"
|
|
stop-prop></i><br />
|
|
<span class="text-sm text-muted" stop-prop>{{login.username}}</span>
|
|
</td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="box" ng-class="{'collapsed-box': folder.collapsed}"
|
|
ng-repeat="folder in filteredVaultFolders = (vaultFolders | filter: folderFilter) track by folder.id"
|
|
ng-show="vaultFolders.length && (!main.searchVaultText || folderLogins.length)">
|
|
<div class="box-header with-border">
|
|
<h3 class="box-title">
|
|
<i class="fa" ng-class="{'fa-folder-open': folder.id !== null, 'fa-folder-open-o': folder.id === null}"></i>
|
|
{{folder.name}}
|
|
<small ng-pluralize count="folderLogins.length" when="{'1': '{} login', 'other': '{} logins'}"></small>
|
|
</h3>
|
|
<div class="box-tools">
|
|
<div class="btn-group">
|
|
<button type="button" class="btn btn-box-tool dropdown-toggle" data-toggle="dropdown">
|
|
<i class="fa fa-cog"></i> <span class="caret"></span>
|
|
</button>
|
|
<ul class="dropdown-menu dropdown-menu-right">
|
|
<li>
|
|
<a href="#" stop-click ng-click="addLogin(folder)">
|
|
<i class="fa fa-fw fa-plus-circle"></i> Add Login
|
|
</a>
|
|
</li>
|
|
<li ng-show="folder.id">
|
|
<a href="#" stop-click ng-click="editFolder(folder)">
|
|
<i class="fa fa-fw fa-pencil"></i> Edit Folder
|
|
</a>
|
|
</li>
|
|
<li>
|
|
<a href="#" stop-click ng-click="selectFolder(folder, $event)">
|
|
<i class="fa fa-fw fa-check-square-o"></i> Select All
|
|
</a>
|
|
</li>
|
|
<li ng-show="canDeleteFolder(folder)">
|
|
<a href="#" stop-click ng-click="deleteFolder(folder)" class="text-red">
|
|
<i class="fa fa-fw fa-trash"></i> Delete Folder
|
|
</a>
|
|
</li>
|
|
</ul>
|
|
</div>
|
|
<button type="button" class="btn btn-box-tool" data-widget="collapse" title="Collapse/Expand"
|
|
ng-click="collapseExpand(folder)">
|
|
<i class="fa" ng-class="{'fa-minus': !folder.collapsed, 'fa-plus': folder.collapsed}"></i>
|
|
</button>
|
|
</div>
|
|
</div>
|
|
<div class="box-body" ng-class="{'no-padding': folderLogins.length}">
|
|
<div ng-show="!folderLogins.length">
|
|
<p>No logins in this folder.</p>
|
|
<button type="button" ng-click="addLogin(folder)" class="btn btn-default btn-flat">Add a Login</button>
|
|
</div>
|
|
<div class="table-responsive" ng-show="folderLogins.length">
|
|
<table class="table table-striped table-hover table-vmiddle">
|
|
<tbody>
|
|
<tr ng-repeat="login in folderLogins = (logins | filter: { folderId: folder.id } |
|
|
filter: (main.searchVaultText || '')) track by login.id">
|
|
<td style="width: 70px;">
|
|
<div class="btn-group" data-append-to="body">
|
|
<button type="button" class="btn btn-default dropdown-toggle" data-toggle="dropdown">
|
|
<i class="fa fa-cog"></i> <span class="caret"></span>
|
|
</button>
|
|
<ul class="dropdown-menu">
|
|
<li>
|
|
<a href="#" stop-click ng-click="editLogin(login)">
|
|
<i class="fa fa-fw fa-pencil"></i> Edit
|
|
</a>
|
|
</li>
|
|
<li>
|
|
<a href="#" stop-click ng-click="attachments(login)">
|
|
<i class="fa fa-fw fa-paperclip"></i> Attachments
|
|
</a>
|
|
</li>
|
|
<li ng-show="!login.organizationId">
|
|
<a href="#" stop-click ng-click="share(login)">
|
|
<i class="fa fa-fw fa-share-alt"></i> Share
|
|
</a>
|
|
</li>
|
|
<li ng-show="login.organizationId && login.edit">
|
|
<a href="#" stop-click ng-click="collections(login)">
|
|
<i class="fa fa-fw fa-cubes"></i> Collections
|
|
</a>
|
|
</li>
|
|
<li ng-show="login.password">
|
|
<a href="#" stop-click ngclipboard ngclipboard-error="clipboardError(e)"
|
|
data-clipboard-text="{{login.password}}">
|
|
<i class="fa fa-fw fa-clipboard"></i> Copy Password
|
|
</a>
|
|
</li>
|
|
<li ng-show="login.edit">
|
|
<a href="#" stop-click ng-click="deleteLogin(login)" class="text-red">
|
|
<i class="fa fa-fw fa-trash"></i> Delete
|
|
</a>
|
|
</li>
|
|
</ul>
|
|
</div>
|
|
</td>
|
|
<td class="action-select" ng-click="select($event)">
|
|
<input type="checkbox" value="{{::login.id}}" name="loginSelection" stop-prop />
|
|
</td>
|
|
<td ng-click="select($event)">
|
|
<a href="#" stop-click ng-click="editLogin(login)" stop-prop>{{login.name}}</a>
|
|
<i class="fa fa-star text-muted" title="Favorite" ng-show="login.favorite" stop-prop></i>
|
|
<i class="fa fa-share-alt text-muted" title="Shared" ng-show="login.organizationId"
|
|
stop-prop></i>
|
|
<i class="fa fa-paperclip text-muted" title="Attachments" ng-if="login.hasAttachments"
|
|
stop-prop></i>
|
|
<br />
|
|
<span class="text-sm text-muted" stop-prop>{{login.username}}</span>
|
|
</td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</section>
|
|
<aside class="control-sidebar control-sidebar-light">
|
|
<div class="tab-content">
|
|
<ul class="control-sidebar-menu">
|
|
<li>
|
|
<a href="#" stop-click ng-click="clearFilters()">
|
|
Clear All Filters
|
|
</a>
|
|
</li>
|
|
</ul>
|
|
<h3 class="control-sidebar-heading">
|
|
<i class="fa fa-folder fa-fw"></i> Folders
|
|
</h3>
|
|
<div ng-show="loading && !vaultFolders.length">
|
|
<p>Loading...</p>
|
|
</div>
|
|
<ul class="control-sidebar-menu" ng-show="!loading && vaultFolders.length">
|
|
<li ng-repeat="folder in vaultFolders track by folder.id">
|
|
<a href="#" stop-click ng-click="filterFolder(folder)">
|
|
<i class="fa fa-check" ng-if="folder.id === folderIdFilter"></i>
|
|
{{folder.name}}
|
|
</a>
|
|
</li>
|
|
</ul>
|
|
</div>
|
|
</aside>
|