| 
					
				 | 
			
			
				@@ -18,17 +18,18 @@ export class SelectorModalComponent<T> { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     @Input() selectedIndex = 0 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     hasGroups = false 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     @ViewChildren('item') itemChildren: QueryList<ElementRef> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    private preventEdit: boolean 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    constructor ( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        public modalInstance: NgbActiveModal, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    ) { } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    constructor (public modalInstance: NgbActiveModal) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        this.preventEdit = false 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     ngOnInit (): void { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         this.onFilterChange() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         this.hasGroups = this.options.some(x => x.group) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    @HostListener('keydown', ['$event']) onKeyUp (event: KeyboardEvent): void { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    @HostListener('keydown', ['$event']) onKeyDown (event: KeyboardEvent): void { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         if (event.key === 'Escape') { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             this.close() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } else if (this.filteredOptions.length > 0) { 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -46,10 +47,14 @@ export class SelectorModalComponent<T> { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 event.preventDefault() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             } else if (event.key === 'Enter') { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 this.selectOption(this.filteredOptions[this.selectedIndex]) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            } else if (event.key === 'Backspace' && this.canEditSelected()) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                event.preventDefault() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                this.filter = this.filteredOptions[this.selectedIndex].freeInputEquivalent! 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                this.onFilterChange() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } else if (event.key === 'Backspace' && !this.preventEdit) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                if (this.canEditSelected()) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    event.preventDefault() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    this.filter = this.filteredOptions[this.selectedIndex].freeInputEquivalent! 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    this.onFilterChange() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                } else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    this.preventEdit = true 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             this.selectedIndex = (this.selectedIndex + this.filteredOptions.length) % this.filteredOptions.length 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -61,6 +66,12 @@ export class SelectorModalComponent<T> { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    @HostListener('keyup', ['$event']) onKeyUp (event: KeyboardEvent): void { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if (event.key === 'Backspace' && this.preventEdit) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            this.preventEdit = false 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     onFilterChange (): void { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         const f = this.filter.trim().toLowerCase() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         if (!f) { 
			 |