checkbox multislect filter, in edit new dash
This commit is contained in:
		
							parent
							
								
									cdd752469c
								
							
						
					
					
						commit
						418b02acd7
					
				| @ -79,12 +79,16 @@ | |||||||
| 
 | 
 | ||||||
|   <!-- Multi-Select Filter --> |   <!-- Multi-Select Filter --> | ||||||
|   <div class="filter-control" *ngIf="filterType === 'multiselect'"> |   <div class="filter-control" *ngIf="filterType === 'multiselect'"> | ||||||
|     <select [(ngModel)]="filterValue"  |     <div class="compact-multiselect-checkboxes" style="max-height: 200px; overflow-y: auto; border: 1px solid #ddd; padding: 10px;"> | ||||||
|             (ngModelChange)="onFilterValueChange($event)" |       <div *ngFor="let option of filterOptions" class="clr-checkbox-wrapper" style="margin-bottom: 5px;"> | ||||||
|             multiple  |         <input type="checkbox"  | ||||||
|             class="clr-select compact-multiselect"> |                [id]="'multiselect-' + option"  | ||||||
|       <option *ngFor="let option of filterOptions" [value]="option">{{ option }}</option> |                [value]="option"  | ||||||
|     </select> |                [checked]="isOptionSelected(option)" | ||||||
|  |                (change)="onMultiselectOptionChange($event, option)"> | ||||||
|  |         <label [for]="'multiselect-' + option" class="clr-control-label">{{ option }}</label> | ||||||
|  |       </div> | ||||||
|  |     </div> | ||||||
|   </div> |   </div> | ||||||
| 
 | 
 | ||||||
|   <!-- Date Range Filter --> |   <!-- Date Range Filter --> | ||||||
|  | |||||||
| @ -331,4 +331,48 @@ export class CompactFilterComponent implements OnInit, OnChanges { | |||||||
|       this.loadAvailableValues(this.configFilterKey); |       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