Esempio n. 1
0
        private async Task SelectAdjacentItem(int direction)
        {
            if (_items == null || _items.Count == 0)
            {
                return;
            }
            var index = _items.FindIndex(x => x.ItemId == (string)_activeItemId);

            if (direction < 0 && index < 0)
            {
                index = 0;
            }
            MudSelectItem <T> item = null;

            // the loop allows us to jump over disabled items until we reach the next non-disabled one
            for (int i = 0; i < _items.Count; i++)
            {
                index += direction;
                if (index < 0)
                {
                    index = 0;
                }
                if (index >= _items.Count)
                {
                    index = _items.Count - 1;
                }
                if (_items[index].Disabled)
                {
                    continue;
                }
                item = _items[index];
                if (!MultiSelection)
                {
                    _selectedValues.Clear();
                    _selectedValues.Add(item.Value);
                    await SetValueAsync(item.Value, updateText : true);

                    HilightItem(item);
                    break;
                }
                else
                {
                    // in multiselect mode don't select anything, just hilight.
                    // selecting is done by Enter
                    HilightItem(item);
                    break;
                }
            }
            await _elementReference.SetText(Text);

            if (item != null)
            {
                await ScrollManager.ScrollToListItemAsync(item.ItemId, direction, true);
            }
        }
Esempio n. 2
0
 private ValueTask ScrollToItemAsync(MudSelectItem <T> item)
 => item != null?ScrollManager.ScrollToListItemAsync(item.ItemId) : ValueTask.CompletedTask;