mirror of
https://github.com/bitwarden/browser
synced 2026-02-17 18:09:17 +00:00
* [EC-73] feat: add inital version of modal using dialog service * [EC-73] feat: create story for dialog * [EC-73] feat: setup story with support for injected data * [EC-73] feat: add inital version of subtitle * [EC-73] feat: add tabs * [EC-73] feat: initial version of collection info form * [EC-73] feat: start of working form * [EC-73] feat: add custom form validator * [EC-73] fix: dialog directive names after rebase * [EC-73] feat: use custom validator * [EC-73] fix: story * [EC-73] feat: allow parent picking * [EC-73] feat: remove tabs to allow for merging * [EC-73] feat: extend story with new and edit dialogs * [EC-73] feat: change title depending on if editing or not * [EC-73] fix: parent not connected to form * [EC-73] feat: add organizationId to dialog data * [EC-73] feat: only allow nesting within collections with access * [EC-73] feat: handle loading with spinner * [EC-73] feat: update collections on submit * [EC-73] feat: reload on save * [EC-73] feat: update story to work with latest changes * [EC-73] feat: always fetch collections from server * [EC-73] fix: do not submit if form invalid * [EC-73] feat: create new collections using new ui * [EC-73] fix: external id not being saved * [EC-73] chore: move calls to separete collection admin service * [EC-73] feat: use new admin views * [EC-73] feat: implement deletion * [EC-73] feat: add support for collection details in service * [EC-73] fix: story * [EC-73] fix: cancel button * [EC-73] feat: re-add tabs * [EC-73] fix: jslib service collection deps * [EC-73] chore: rename component to collection-dialog * [EC-73] chore: clean up collection api service which was replaced * [EC-73] chore: restore collection.service * [EC-73] chore: restore dialog component changes * [EC-73] fix: move subscription to ngOnInit * [EC-73] feat: disable padding when using tabbed content * [EC-73] chore: re-add collections page * [EC-73] chore: move component to shared org module * [EC-73] feat: add empty access selector * [EC-73] feat: add groups to access selector * [EC-73] chore: improve storybook support * [EC-73] feat: tweak item assignment * [EC-73] feat: add support for showing users * [EC-73] feat: use async actions * [EC-73] chore: clean up casting * [EC-73] fix: permissions not loading correctly in access selector * [EC-73] feat: implement saving group permissions * [EC-73] feat: rename to collection access selection view * [EC-73] feat: save users as well * [EC-73] fix: access selector usage * [EC-73] feat: new collection creation * [EC-73] feat: fetch users from collection details * [EC-73] chore: clean up * [EC-73] fix: circular dependency issues * [EC-73] fix: import shared module directly to workaround build issues * [EC-73] fix: missing dependencies in story * [EC-73] chore: move story * [EC-73] feat: hide delete button if no permission * [EC-73] feat: properly handle orgs without groups * [EC-73] fix: use correct functions in template * [EC-73] feat: properly handle non-existing parent * [EC-73] chore: use double ngIf instead of else template * [EC-73] fix: add type to dialog ref * [EC-73] fix: restrict field modifiers * [EC-73] fix: use result enum directly * [EC-73] fix: simplify mapping logic * [EC-73] * [EC-73] feat: add story for free orgs without groups * [EC-73] fix: parametrized i18n * [EC-73] feat: create new shared org module * [EC-73] feat: move collection dialog to shared * [EC-73] feat: move access selector to shared * [EC-73] feat: create core organization module * [EC-73] feat: move collection admin service to web * [EC-73] feat: move collection admin views to web * [EC-73] fix: missing i18n * [EC-73] fix: refactor for type safety * [EC-73] fix: storybook not compiling again * [EC-73] feat: use helper function to open dialog * [EC-73] chore: remove comment * [EC-73] fix: only show delete if in edit mode * [EC-73] chore: remove ngIf else in template * [EC-73] fix: add missing appA11yTitle * [EC-73] chore: rename remove to delete * [EC-73] chore: refactor ngOnInit * [EC-73] fix: dialog position strategy * [EC-73] fix: revert spinner to old way of doing it * Fix remaining errors after rebase/merge * fix: import shared module directly Co-authored-by: Andreas Coroiu <andreas.coroiu@gmail.com>
107 lines
3.2 KiB
HTML
107 lines
3.2 KiB
HTML
<div class="page-header d-flex">
|
|
<h1>{{ "collections" | i18n }}</h1>
|
|
<div class="ml-auto d-flex">
|
|
<div>
|
|
<label class="sr-only" for="search">{{ "search" | i18n }}</label>
|
|
<input
|
|
type="search"
|
|
class="form-control form-control-sm"
|
|
id="search"
|
|
placeholder="{{ 'search' | i18n }}"
|
|
[(ngModel)]="searchText"
|
|
/>
|
|
</div>
|
|
<button
|
|
type="button"
|
|
*ngIf="this.canCreate"
|
|
class="btn btn-sm btn-outline-primary ml-3"
|
|
(click)="add()"
|
|
>
|
|
<i class="bwi bwi-plus bwi-fw" aria-hidden="true"></i>
|
|
{{ "newCollection" | i18n }}
|
|
</button>
|
|
</div>
|
|
</div>
|
|
<ng-container *ngIf="loading">
|
|
<i
|
|
class="bwi bwi-spinner bwi-spin text-muted"
|
|
title="{{ 'loading' | i18n }}"
|
|
aria-hidden="true"
|
|
></i>
|
|
<span class="sr-only">{{ "loading" | i18n }}</span>
|
|
</ng-container>
|
|
<ng-container
|
|
*ngIf="
|
|
!loading &&
|
|
(isPaging()
|
|
? pagedCollections
|
|
: (collections | search: searchText:'name':'id')) as searchedCollections
|
|
"
|
|
>
|
|
<p *ngIf="!searchedCollections.length">{{ "noCollectionsInList" | i18n }}</p>
|
|
<table
|
|
class="table table-hover table-list"
|
|
*ngIf="searchedCollections.length"
|
|
infiniteScroll
|
|
[infiniteScrollDistance]="1"
|
|
[infiniteScrollDisabled]="!isPaging()"
|
|
(scrolled)="loadMore()"
|
|
>
|
|
<tbody>
|
|
<tr *ngFor="let c of searchedCollections">
|
|
<td>
|
|
<a href="#" appStopClick (click)="edit(c)">{{ c.name }}</a>
|
|
</td>
|
|
<td class="table-list-options">
|
|
<div class="dropdown" appListDropdown *ngIf="this.canEdit(c) || this.canDelete(c)">
|
|
<button
|
|
class="btn btn-outline-secondary dropdown-toggle"
|
|
type="button"
|
|
data-toggle="dropdown"
|
|
aria-haspopup="true"
|
|
aria-expanded="false"
|
|
appA11yTitle="{{ 'options' | i18n }}"
|
|
>
|
|
<i class="bwi bwi-cog bwi-lg" aria-hidden="true"></i>
|
|
</button>
|
|
<div class="dropdown-menu dropdown-menu-right">
|
|
<a
|
|
class="dropdown-item"
|
|
href="#"
|
|
appStopClick
|
|
*ngIf="this.canEdit(c)"
|
|
(click)="edit(c)"
|
|
>
|
|
<i class="bwi bwi-fw bwi-pencil-square" aria-hidden="true"></i>
|
|
{{ "edit" | i18n }}
|
|
</a>
|
|
<a
|
|
class="dropdown-item"
|
|
href="#"
|
|
appStopClick
|
|
*ngIf="this.canEdit(c)"
|
|
(click)="users(c)"
|
|
>
|
|
<i class="bwi bwi-fw bwi-users" aria-hidden="true"></i>
|
|
{{ "users" | i18n }}
|
|
</a>
|
|
<a
|
|
class="dropdown-item text-danger"
|
|
href="#"
|
|
appStopClick
|
|
*ngIf="this.canDelete(c)"
|
|
(click)="delete(c)"
|
|
>
|
|
<i class="bwi bwi-fw bwi-trash" aria-hidden="true"></i>
|
|
{{ "delete" | i18n }}
|
|
</a>
|
|
</div>
|
|
</div>
|
|
</td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
</ng-container>
|
|
<ng-template #addEdit></ng-template>
|
|
<ng-template #usersTemplate></ng-template>
|