diff --git a/src/app/app.module.ts b/src/app/app.module.ts
index ce4794a7..0124db38 100644
--- a/src/app/app.module.ts
+++ b/src/app/app.module.ts
@@ -38,6 +38,7 @@ import { AttachmentsComponent } from './vault/attachments.component';
import { CiphersComponent } from './vault/ciphers.component';
import { FolderAddEditComponent } from './vault/folder-add-edit.component';
import { GroupingsComponent } from './vault/groupings.component';
+import { OrganizationsComponent } from './vault/organizations.component';
import { VaultComponent } from './vault/vault.component';
import { IconComponent } from 'jslib/angular/components/icon.component';
@@ -94,6 +95,7 @@ import { Folder } from 'jslib/models/domain';
LoginComponent,
ModalComponent,
NavbarComponent,
+ OrganizationsComponent,
OrganizationLayoutComponent,
RegisterComponent,
SearchCiphersPipe,
diff --git a/src/app/vault/groupings.component.html b/src/app/vault/groupings.component.html
index 84adf2c9..dc421910 100644
--- a/src/app/vault/groupings.component.html
+++ b/src/app/vault/groupings.component.html
@@ -5,7 +5,7 @@
-
+
{{'types' | i18n}}
-
+
-
{{'typeLogin' | i18n}}
@@ -50,7 +50,7 @@
-
+
{{'collections' | i18n}}
-
+
-
{{c.name}}
diff --git a/src/app/vault/organizations.component.html b/src/app/vault/organizations.component.html
new file mode 100644
index 00000000..3f84b94e
--- /dev/null
+++ b/src/app/vault/organizations.component.html
@@ -0,0 +1,10 @@
+
+
diff --git a/src/app/vault/organizations.component.ts b/src/app/vault/organizations.component.ts
new file mode 100644
index 00000000..3367d60a
--- /dev/null
+++ b/src/app/vault/organizations.component.ts
@@ -0,0 +1,31 @@
+import {
+ Component,
+ EventEmitter,
+ Output,
+} from '@angular/core';
+
+import { ToasterService } from 'angular2-toaster';
+import { Angulartics2 } from 'angulartics2';
+
+import { UserService } from 'jslib/abstractions/user.service';
+
+@Component({
+ selector: 'app-vault-organizations',
+ templateUrl: 'organizations.component.html',
+})
+export class OrganizationsComponent {
+ @Output() onOrganizationClicked = new EventEmitter();
+ organizations: any;
+
+ constructor(private userService: UserService, private analytics: Angulartics2,
+ private toasterService: ToasterService) {
+ }
+
+ async load() {
+ this.organizations = await this.userService.getAllOrganizations();
+ }
+
+ selectOrganization(o: any) {
+ this.onOrganizationClicked.emit(0);
+ }
+}
diff --git a/src/app/vault/vault.component.html b/src/app/vault/vault.component.html
index 93997672..ecd1e543 100644
--- a/src/app/vault/vault.component.html
+++ b/src/app/vault/vault.component.html
@@ -58,7 +58,8 @@
Organizations
- Your organizations.
+
+
diff --git a/src/app/vault/vault.component.ts b/src/app/vault/vault.component.ts
index 0d879906..34ec49fa 100644
--- a/src/app/vault/vault.component.ts
+++ b/src/app/vault/vault.component.ts
@@ -23,6 +23,7 @@ import { AttachmentsComponent } from './attachments.component';
import { CiphersComponent } from './ciphers.component';
import { FolderAddEditComponent } from './folder-add-edit.component';
import { GroupingsComponent } from './groupings.component';
+import { OrganizationsComponent } from './organizations.component';
import { I18nService } from 'jslib/abstractions/i18n.service';
import { SyncService } from 'jslib/abstractions/sync.service';
@@ -34,6 +35,7 @@ import { SyncService } from 'jslib/abstractions/sync.service';
export class VaultComponent implements OnInit {
@ViewChild(GroupingsComponent) groupingsComponent: GroupingsComponent;
@ViewChild(CiphersComponent) ciphersComponent: CiphersComponent;
+ @ViewChild(OrganizationsComponent) organizationsComponent: OrganizationsComponent;
@ViewChild('attachments', { read: ViewContainerRef }) attachmentsModalRef: ViewContainerRef;
@ViewChild('folderAddEdit', { read: ViewContainerRef }) folderAddEditModalRef: ViewContainerRef;
@ViewChild('cipherAddEdit', { read: ViewContainerRef }) cipherAddEditRef: ViewContainerRef;
@@ -53,7 +55,10 @@ export class VaultComponent implements OnInit {
async ngOnInit() {
this.route.queryParams.subscribe(async (params) => {
await this.syncService.fullSync(true);
- await this.groupingsComponent.load();
+ await Promise.all([
+ this.groupingsComponent.load(),
+ this.organizationsComponent.load(),
+ ]);
if (params == null) {
this.groupingsComponent.selectedAll = true;
diff --git a/src/locales/en/messages.json b/src/locales/en/messages.json
index b7109035..8b3c2bbe 100644
--- a/src/locales/en/messages.json
+++ b/src/locales/en/messages.json
@@ -548,6 +548,9 @@
"noItemsInList": {
"message": "There are no items to list."
},
+ "newOrganization": {
+ "message": "New Organization"
+ },
"versionNumber": {
"message": "Version $VERSION_NUMBER$",
"placeholders": {
diff --git a/src/scss/styles.scss b/src/scss/styles.scss
index 6013049d..9b4c1d13 100644
--- a/src/scss/styles.scss
+++ b/src/scss/styles.scss
@@ -121,6 +121,22 @@ body {
}
}
+.card ul.fa-ul.card-ul {
+ margin-left: 1.9em;
+
+ .fa-li {
+ top: 4px;
+ }
+
+ &.carets {
+ margin-left: 1.1em;
+
+ .fa-li {
+ left: -24px;
+ }
+ }
+}
+
.modal-body {
h3 {
font-weight: normal;
@@ -237,22 +253,6 @@ app-vault-groupings {
}
}
}
-
- ul.fa-ul {
- margin-left: 1.9em;
-
- .fa-li {
- top: 4px;
- }
-
- &.carets {
- margin-left: 1.1em;
-
- .fa-li {
- left: -24px;
- }
- }
- }
.show-active {
display: none;