checkbox multislect filter, in edit new dash
This commit is contained in:
		
							parent
							
								
									cdd752469c
								
							
						
					
					
						commit
						418b02acd7
					
				| @ -79,12 +79,16 @@ | ||||
| 
 | ||||
|   <!-- Multi-Select Filter --> | ||||
|   <div class="filter-control" *ngIf="filterType === 'multiselect'"> | ||||
|     <select [(ngModel)]="filterValue"  | ||||
|             (ngModelChange)="onFilterValueChange($event)" | ||||
|             multiple  | ||||
|             class="clr-select compact-multiselect"> | ||||
|       <option *ngFor="let option of filterOptions" [value]="option">{{ option }}</option> | ||||
|     </select> | ||||
|     <div class="compact-multiselect-checkboxes" style="max-height: 200px; overflow-y: auto; border: 1px solid #ddd; padding: 10px;"> | ||||
|       <div *ngFor="let option of filterOptions" class="clr-checkbox-wrapper" style="margin-bottom: 5px;"> | ||||
|         <input type="checkbox"  | ||||
|                [id]="'multiselect-' + option"  | ||||
|                [value]="option"  | ||||
|                [checked]="isOptionSelected(option)" | ||||
|                (change)="onMultiselectOptionChange($event, option)"> | ||||
|         <label [for]="'multiselect-' + option" class="clr-control-label">{{ option }}</label> | ||||
|       </div> | ||||
|     </div> | ||||
|   </div> | ||||
| 
 | ||||
|   <!-- Date Range Filter --> | ||||
|  | ||||
| @ -331,4 +331,48 @@ export class CompactFilterComponent implements OnInit, OnChanges { | ||||
|       this.loadAvailableValues(this.configFilterKey); | ||||
|     } | ||||
|   } | ||||
|    | ||||
|   // Add method to check if an option is selected for checkboxes
 | ||||
|   isOptionSelected(option: string): boolean { | ||||
|     if (!this.filterValue) { | ||||
|       return false; | ||||
|     } | ||||
|      | ||||
|     // Ensure filterValue is an array for multiselect
 | ||||
|     if (!Array.isArray(this.filterValue)) { | ||||
|       this.filterValue = []; | ||||
|       return false; | ||||
|     } | ||||
|      | ||||
|     return this.filterValue.includes(option); | ||||
|   } | ||||
|    | ||||
|   // Add method to handle multiselect option change
 | ||||
|   onMultiselectOptionChange(event: any, option: string): void { | ||||
|     // Initialize filterValue array if it doesn't exist
 | ||||
|     if (!this.filterValue) { | ||||
|       this.filterValue = []; | ||||
|     } | ||||
|      | ||||
|     // Ensure filterValue is an array
 | ||||
|     if (!Array.isArray(this.filterValue)) { | ||||
|       this.filterValue = []; | ||||
|     } | ||||
|      | ||||
|     if (event.target.checked) { | ||||
|       // Add option if not already in array
 | ||||
|       if (!this.filterValue.includes(option)) { | ||||
|         this.filterValue.push(option); | ||||
|       } | ||||
|     } else { | ||||
|       // Remove option from array
 | ||||
|       const index = this.filterValue.indexOf(option); | ||||
|       if (index > -1) { | ||||
|         this.filterValue.splice(index, 1); | ||||
|       } | ||||
|     } | ||||
|      | ||||
|     // Emit the change event
 | ||||
|     this.onFilterValueChange(this.filterValue); | ||||
|   } | ||||
| } | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user