-
Notifications
You must be signed in to change notification settings - Fork 9
/
Copy pathDropdown.razor.cs
73 lines (61 loc) · 2 KB
/
Dropdown.razor.cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
using Headway.Core.Attributes;
using Headway.Core.Model;
using Headway.Core.Notifications;
using Headway.Razor.Controls.Base;
using Headway.RequestApi.Requests;
using MediatR;
using Microsoft.AspNetCore.Components;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
namespace Headway.Razor.Controls.Components
{
[DynamicComponent]
public abstract class DropdownBase : DynamicComponentBase
{
[Inject]
public IStateNotification StateNotification { get; set; }
[Inject]
public IMediator Mediator { get; set; }
protected IEnumerable<OptionItem> optionItems;
private OptionItem selectedItem;
public OptionItem SelectedItem
{
get
{
return selectedItem;
}
set
{
if(selectedItem != value)
{
selectedItem = value;
Field.PropertyInfo.SetValue(Field.Model, SelectedItem.Id);
}
}
}
protected override async Task OnParametersSetAsync()
{
LinkFieldCheck();
var result = await Mediator.Send(new OptionItemsRequest(ComponentArgs)).ConfigureAwait(false);
optionItems = GetResponse(result.OptionItems);
var id = Field.PropertyInfo.GetValue(Field.Model)?.ToString();
if (!string.IsNullOrWhiteSpace(id))
{
SelectedItem = optionItems.FirstOrDefault(o => o.Id != null && o.Id.Equals(id));
}
if(selectedItem == null)
{
selectedItem = optionItems.FirstOrDefault();
}
await base.OnParametersSetAsync().ConfigureAwait(false);
}
public virtual void OnValueChanged(IEnumerable<OptionItem> values)
{
if (Field.HasLinkDependents)
{
StateNotification.NotifyStateHasChanged(Field.ContainerUniqueId);
}
}
}
}