-
Notifications
You must be signed in to change notification settings - Fork 459
Closed
Labels
triageNew issue. Needs to be looked atNew issue. Needs to be looked at
Description
🐛 Bug Report
When setting a custom collection yourself with FluentSelect and multiple enabled, the collection gets overriden because of the internal value of single select gets set.
💻 Repro or Code Sample
<FluentSelect TOption="Issues" Multiple="true" Items="_allIssues" SelectedOptions="FlagsAsEnumerable" SelectedOptionsChanged="OnSelectionChanged">
<OptionTemplate>
@context.ToString()
</OptionTemplate>
</FluentSelect>
@code{
private Issues _issues;
[Parameter]
public Issues Values { get; set; }
[Parameter]
public EventCallback<Issues> ValuesChanged { get; set; }
[Flags]
public enum Issues
{
NoIssues = 0,
FullyBroken = NoIssues << 1,
SettingsMissing = FullyBroken << 1,
MaintenanceNeeded = SettingsMissing << 1,
}
private readonly static Issues[] _allIssues = Enum.GetValues<Issues>();
protected override void OnParametersSet()
{
_issues = Values;
base.OnParametersSet();
}
protected IEnumerable<Issues> FlagsAsEnumerable
{
get
{
if (_issues == Issues.NoIssues)
return [Issues.NoIssues];
if (_issues == Issues.FullyBroken)
return [Issues.FullyBroken];
return _allIssues.Where(e => _issues.HasFlag(e) && e != Issues.NoIssues && e != Issues.FullyBroken);
}
}
private Task OnSelectionChanged(IEnumerable<Issues> issues)
{
if (issues.Contains(IssueTypes.None) && _issues != Issues.NoIssues)
_issues = Issues.NoIssues;
else if (issues.Contains(IssueTypes.Defect) && _issues != Issues.FullyBroken)
_issues = Issues.FullyBroken;
else
_issues = issues.Aggregate(default(Issues), (a, b) => a |= b);
return ValuesChanged.InvokeAsync(_issues);
}
}
🤔 Expected Behavior
I can choose the selected values and ListComponentBase should not override them.
😯 Current Behavior
The values changed gets raised before the new values are set.
💁 Possible Solution
🔦 Context
The component does not work correctly in its current state.
🌍 Your Environment
Metadata
Metadata
Assignees
Labels
triageNew issue. Needs to be looked atNew issue. Needs to be looked at