示例#1
0
        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);
            }
        }
示例#2
0
 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);
 }
示例#3
0
 protected override Task OnInternalValueChanged(IReadOnlyList <TValue> value)
 {
     if (Multiple)
     {
         return(SelectedValuesChanged.InvokeAsync(value));
     }
     else
     {
         return(SelectedValueChanged.InvokeAsync(value == null ? default : value.FirstOrDefault()));
     }
 }
示例#4
0
        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)));
        }