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