protected async Task HandleOnChanged(UIChangeEventArgs e) { if (IsMultiple) { // when multiple selection is enabled we need to use javascript to get the list of selected items internalMultiValue = await JSRunner.GetSelectedOptions <TValue>(ElementId); // changed event must be called before validation await SelectedValuesChanged.InvokeAsync(internalMultiValue); ParentValidation?.UpdateInputValue(internalMultiValue); } else { if (Converters.TryChangeType <TValue>(e.Value, out var value)) { internalValue = value; } else { internalValue = default; } // changed event must be called before validation await SelectedValueChanged.InvokeAsync(internalValue); ParentValidation?.UpdateInputValue(internalValue); } }
public async Task SelectOption(string value) { if (!MultiSelection) { // single selection Value = value; isOpen = false; IconContoller(); SelectedValues.Clear(); SelectedValues.Add(value); } else { // multi-selection: menu stays open if (!SelectedValues.Contains(value)) { SelectedValues.Add(value); } else { SelectedValues.Remove(value); } Value = string.Join(", ", SelectedValues); } StateHasChanged(); await SelectedValuesChanged.InvokeAsync(SelectedValues); }
protected override Task OnInternalValueChanged(IReadOnlyList <TValue> value) { if (Multiple) { return(SelectedValuesChanged.InvokeAsync(value)); } else { return(SelectedValueChanged.InvokeAsync(value == null ? default : value.FirstOrDefault())); } }
internal async Task UpdateSelectedItems() { if (_selectedValues == null) { _selectedValues = new HashSet <MudTreeViewItem <T> >(); } //collect selected items _selectedValues.Clear(); foreach (var item in _childItems) { foreach (var selectedItem in item.GetSelectedItems()) { _selectedValues.Add(selectedItem); } } await SelectedValuesChanged.InvokeAsync(new HashSet <T>(_selectedValues.Select(i => i.Value))); }