From 6f684f80705e715ad36b2c0fc823695c80912865 Mon Sep 17 00:00:00 2001
From: Michael Shamoon <4887959+nikonratm@users.noreply.github.com>
Date: Sun, 13 Dec 2020 10:24:20 -0800
Subject: [PATCH] Dropdown components now accept lists not observables

---
 .../filter-dropdown/filter-dropdown.component.html         | 2 +-
 .../filter-dropdown/filter-dropdown.component.ts           | 7 +------
 .../components/filter-editor/filter-editor.component.html  | 6 +++---
 src-ui/src/app/services/filter-editor-view.service.ts      | 6 +++---
 4 files changed, 8 insertions(+), 13 deletions(-)

diff --git a/src-ui/src/app/components/filter-editor/filter-dropdown/filter-dropdown.component.html b/src-ui/src/app/components/filter-editor/filter-dropdown/filter-dropdown.component.html
index 47a46762d..8c48f0e2f 100644
--- a/src-ui/src/app/components/filter-editor/filter-dropdown/filter-dropdown.component.html
+++ b/src-ui/src/app/components/filter-editor/filter-dropdown/filter-dropdown.component.html
@@ -3,7 +3,7 @@
   <div class="dropdown-menu quick-filter shadow" ngbDropdownMenu attr.aria-labelledby="dropdown{{title}}">
     <div class="list-group list-group-flush">
       <input class="list-group-item form-control form-control-sm" type="text" [(ngModel)]="filterText" placeholder="Filter {{title}}" (keyup.enter)="listFilterEnter()" #listFilterTextInput>
-      <ng-container *ngIf="(items$ | async)?.results as items">
+      <ng-container *ngIf="items">
         <ng-container *ngFor="let item of items | filter: filterText; let i = index">
           <app-filter-dropdown-button [item]="item" [selected]="isItemSelected(item)" (toggle)="toggleItem($event)"></app-filter-dropdown-button>
         </ng-container>
diff --git a/src-ui/src/app/components/filter-editor/filter-dropdown/filter-dropdown.component.ts b/src-ui/src/app/components/filter-editor/filter-dropdown/filter-dropdown.component.ts
index 4c80bfb66..a54455153 100644
--- a/src-ui/src/app/components/filter-editor/filter-dropdown/filter-dropdown.component.ts
+++ b/src-ui/src/app/components/filter-editor/filter-dropdown/filter-dropdown.component.ts
@@ -14,7 +14,7 @@ export class FilterDropdownComponent implements OnInit {
   constructor(private filterPipe: FilterPipe) { }
 
   @Input()
-  items$: Observable<Results<ObjectWithId>>
+  items: ObjectWithId[]
 
   @Input()
   itemsSelected: ObjectWithId[]
@@ -31,11 +31,6 @@ export class FilterDropdownComponent implements OnInit {
   @ViewChild('listFilterTextInput') listFilterTextInput: ElementRef
 
   filterText: string
-  items: ObjectWithId[]
-
-  ngOnInit() {
-    this.items$.subscribe(result => this.items = result.results)
-  }
 
   toggleItem(item: ObjectWithId): void {
     this.toggle.emit(item)
diff --git a/src-ui/src/app/components/filter-editor/filter-editor.component.html b/src-ui/src/app/components/filter-editor/filter-editor.component.html
index 4c2e61d46..9c55c1e7e 100644
--- a/src-ui/src/app/components/filter-editor/filter-editor.component.html
+++ b/src-ui/src/app/components/filter-editor/filter-editor.component.html
@@ -6,9 +6,9 @@
     <input class="form-control form-control-sm" type="text" [(ngModel)]="filterEditorService.filterText" placeholder="Title" #filterTextInput>
   </div>
 
-  <app-filter-dropdown class="col-auto" [(items$)]="filterEditorService.tags$" [itemsSelected]="filterEditorService.selectedTags" [title]="'Tags'" [display]="'tag'" (toggle)="onToggleTag($event)"></app-filter-dropdown>
-  <app-filter-dropdown class="col-auto" [(items$)]="filterEditorService.correspondents$" [itemsSelected]="filterEditorService.selectedCorrespondents" [title]="'Correspondents'" (toggle)="onToggleCorrespondent($event)"></app-filter-dropdown>
-  <app-filter-dropdown class="col-auto" [(items$)]="filterEditorService.documentTypes$" [itemsSelected]="filterEditorService.selectedDocumentTypes" [title]="'Document Types'" (toggle)="onToggleDocumentType($event)"></app-filter-dropdown>
+  <app-filter-dropdown class="col-auto" [(items)]="filterEditorService.tags" [itemsSelected]="filterEditorService.selectedTags" [title]="'Tags'" [display]="'tag'" (toggle)="onToggleTag($event)"></app-filter-dropdown>
+  <app-filter-dropdown class="col-auto" [(items)]="filterEditorService.correspondents" [itemsSelected]="filterEditorService.selectedCorrespondents" [title]="'Correspondents'" (toggle)="onToggleCorrespondent($event)"></app-filter-dropdown>
+  <app-filter-dropdown class="col-auto" [(items)]="filterEditorService.documentTypes" [itemsSelected]="filterEditorService.selectedDocumentTypes" [title]="'Document Types'" (toggle)="onToggleDocumentType($event)"></app-filter-dropdown>
 
   <app-filter-dropdown-date class="col-auto" [dateBefore]="filterEditorService.dateCreatedBefore" [dateAfter]="filterEditorService.dateCreatedAfter" [title]="'Created'" (dateBeforeSet)="onDateCreatedBeforeSet($event)" (dateAfterSet)="onDateCreatedAfterSet($event)"></app-filter-dropdown-date>
   <app-filter-dropdown-date class="col-auto" [dateBefore]="filterEditorService.dateAddedBefore" [dateAfter]="filterEditorService.dateAddedAfter" [title]="'Added'"  (dateBeforeSet)="onDateAddedBeforeSet($event)" (dateAfterSet)="onDateAddedAfterSet($event)"></app-filter-dropdown-date>
diff --git a/src-ui/src/app/services/filter-editor-view.service.ts b/src-ui/src/app/services/filter-editor-view.service.ts
index ba7b6dd24..b436ecde4 100644
--- a/src-ui/src/app/services/filter-editor-view.service.ts
+++ b/src-ui/src/app/services/filter-editor-view.service.ts
@@ -16,9 +16,9 @@ import { NgbDate, NgbDateStruct } from '@ng-bootstrap/ng-bootstrap';
   providedIn: 'root'
 })
 export class FilterEditorViewService {
-  tags$: Observable<Results<PaperlessTag>>
-  correspondents$: Observable<Results<PaperlessCorrespondent>>
-  documentTypes$: Observable<Results<PaperlessDocumentType>>
+  private tags$: Observable<Results<PaperlessTag>>
+  private correspondents$: Observable<Results<PaperlessCorrespondent>>
+  private documentTypes$: Observable<Results<PaperlessDocumentType>>
 
   tags: PaperlessTag[] = []
   correspondents: PaperlessCorrespondent[]