LP1831390: Don't clobber startId of combobox with null values
authorJane Sandberg <sandbej@linnbenton.edu>
Fri, 26 Jul 2019 18:28:13 +0000 (11:28 -0700)
committerGalen Charlton <gmc@equinoxinitiative.org>
Thu, 1 Aug 2019 14:03:06 +0000 (10:03 -0400)
Also ensures that writeValue accepts only ComboboxEntry values,
so [(ngModel)] both gives and receives ComboboxEntry values, rather
than a confusing mix.

Signed-off-by: Jane Sandberg <sandbej@linnbenton.edu>
Signed-off-by: Galen Charlton <gmc@equinoxinitiative.org>
Open-ILS/src/eg2/src/app/share/combobox/combobox.component.ts
Open-ILS/src/eg2/src/app/staff/sandbox/sandbox.component.html
Open-ILS/src/eg2/src/app/staff/sandbox/sandbox.component.ts

index 2139e5b..0696a98 100644 (file)
@@ -303,9 +303,10 @@ export class ComboboxComponent implements ControlValueAccessor, OnInit {
         );
     }
 
-    writeValue(value: any) {
-        if (value !== undefined) {
-            this.startId = value;
+    writeValue(value: ComboboxEntry) {
+        if (value !== undefined && value !== null) {
+            this.startId = value.id;
+            this.applySelection();
         }
     }
 
index cc778ce..0bba0e5 100644 (file)
         </eg-org-family-select>
         The best libraries are: {{bestOnes.value | json}}
         <hr>
-        <eg-combobox ngModel #templateEntry="ngModel" [allowFreeText]="true">
+        <eg-combobox [(ngModel)]="kingdom" [allowFreeText]="true">
           <eg-combobox-entry entryId="Bacteria"></eg-combobox-entry>
           <eg-combobox-entry entryId="Archaea"></eg-combobox-entry>
           <eg-combobox-entry entryId="Protozoa"></eg-combobox-entry>
           <eg-combobox-entry entryId="Fungi"></eg-combobox-entry>
           <eg-combobox-entry entryId="Animalia"></eg-combobox-entry>
         </eg-combobox>
-      Result: {{templateEntry.value | json}}
+      Result: {{kingdom | json}}
         <hr>
         <eg-date-select [(ngModel)]="dateObject">
         </eg-date-select>
index d5b37bf..db4d58f 100644 (file)
@@ -86,6 +86,7 @@ export class SandboxComponent implements OnInit {
     dateObject: Date = new Date();
 
     simpleCombo: ComboboxEntry;
+    kingdom: ComboboxEntry;
 
     complimentEvergreen: (rows: IdlObject[]) => void;
     notOneSelectedRow: (rows: IdlObject[]) => boolean;
@@ -144,6 +145,8 @@ export class SandboxComponent implements OnInit {
             this.toast.success('You chose: ' + l.label);
         });
 
+        this.kingdom = {id: 'Bacteria', label: 'Bacteria'};
+
         this.gridDataSource.data = [
             {name: 'Jane', state: 'AZ'},
             {name: 'Al', state: 'CA'},