Skip to content

Commit 072522b

Browse files
committed
feat: add context menu to configuration setting table
1 parent cd3e7b6 commit 072522b

File tree

3 files changed

+42
-18
lines changed

3 files changed

+42
-18
lines changed

src/AzureAppConfigurationEmulator/Components/ConfigurationSettingTable.razor

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
<AzureTableHeaderCell>Label</AzureTableHeaderCell>
88
<AzureTableHeaderCell>Last modified</AzureTableHeaderCell>
99
<AzureTableHeaderCell>Content type</AzureTableHeaderCell>
10+
<AzureTableHeaderCell class="w-[24px]"></AzureTableHeaderCell>
1011
</HeaderContent>
1112

1213
<RowTemplate>
@@ -15,15 +16,41 @@
1516
<AzureTableDataCell>@(!string.IsNullOrEmpty(context.Label) ? context.Label : "(No label)")</AzureTableDataCell>
1617
<AzureTableDataCell>@context.LastModified.ToString("G")</AzureTableDataCell>
1718
<AzureTableDataCell>@context.ContentType</AzureTableDataCell>
19+
<AzureTableDataCell>
20+
@{ var id = Guid.NewGuid().ToString(); }
21+
22+
<AzureIcon id="@id" Value="@(new AzureIcon.Icons.Regular.Size16.EllipsisHorizontal())"/>
23+
24+
<AzureMenu Anchor="@id" Anchored="@false" Trigger="AzureMenu.MouseButton.Left">
25+
<AzureMenuItem OnClick="@(() => HandleEditClick(context))">Edit</AzureMenuItem>
26+
<AzureMenuItem OnClick="@(() => HandleDeleteClick(context))">Delete</AzureMenuItem>
27+
</AzureMenu>
28+
</AzureTableDataCell>
1829
</RowTemplate>
1930
</AzureTable>
2031

2132
@code {
33+
2234
[Parameter] public IEnumerable<ConfigurationSetting> ConfigurationSettings { get; set; } = [];
2335

2436
[Parameter] public bool IsValuesHidden { get; set; }
2537

38+
[Parameter] public EventCallback<ConfigurationSetting> OnDeleteClick { get; set; }
39+
40+
[Parameter] public EventCallback<ConfigurationSetting> OnEditClick { get; set; }
41+
2642
[Parameter] public ICollection<ConfigurationSetting> SelectedConfigurationSettings { get; set; } = [];
2743

2844
[Parameter] public EventCallback<ICollection<ConfigurationSetting>> SelectedConfigurationSettingsChanged { get; set; }
45+
46+
private async Task HandleDeleteClick(ConfigurationSetting setting)
47+
{
48+
await OnDeleteClick.InvokeAsync(setting);
49+
}
50+
51+
private async Task HandleEditClick(ConfigurationSetting setting)
52+
{
53+
await OnEditClick.InvokeAsync(setting);
54+
}
55+
2956
}

src/AzureAppConfigurationEmulator/Components/Pages/ConfigurationExplorer.razor

Lines changed: 14 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -21,8 +21,8 @@
2121

2222
<AzureToolbarDivider/>
2323

24-
<AzureToolbarButton IsDisabled="@(SelectedConfigurationSettings is not { Count: 1 })" Label="Edit" OnClick="@HandleEditClick"/>
25-
<AzureToolbarButton IsDisabled="@(SelectedConfigurationSettings is { Count: 0 })" Label="Delete" OnClick="@HandleDeleteClick"/>
24+
<AzureToolbarButton IsDisabled="@(SelectedConfigurationSettings is not { Count: 1 })" Label="Edit" OnClick="@(() => HandleEditClick(SelectedConfigurationSettings.Single()))"/>
25+
<AzureToolbarButton IsDisabled="@(SelectedConfigurationSettings is { Count: 0 })" Label="Delete" OnClick="@(() => HandleDeleteClick(SelectedConfigurationSettings.ToArray()))"/>
2626
</AzureToolbar>
2727

2828
<div class="p-5">
@@ -42,7 +42,7 @@
4242
</div>
4343

4444
<div class="mx-5">
45-
<ConfigurationSettingTable @bind-SelectedConfigurationSettings="@SelectedConfigurationSettings" ConfigurationSettings="@FilteredConfigurationSettings" IsValuesHidden="@IsValuesHidden"/>
45+
<ConfigurationSettingTable @bind-SelectedConfigurationSettings="@SelectedConfigurationSettings" ConfigurationSettings="@FilteredConfigurationSettings" IsValuesHidden="@IsValuesHidden" OnDeleteClick="@(setting => HandleDeleteClick(setting))" OnEditClick="@(setting => HandleEditClick(setting))"/>
4646
</div>
4747
</div>
4848

@@ -69,7 +69,7 @@
6969
}
7070
}
7171

72-
private async Task HandleCreateClick(MouseEventArgs args)
72+
private async Task HandleCreateClick()
7373
{
7474
var reference = await DialogService.Show<ConfigurationSettingCreateDialog>();
7575
var result = await reference.Result;
@@ -82,37 +82,34 @@
8282
}
8383
}
8484

85-
private async Task HandleEditClick(MouseEventArgs args)
85+
private async Task HandleEditClick(ConfigurationSetting setting)
8686
{
8787
var parameters = new Dictionary<string, object?>
8888
{
8989
{
9090
nameof(ConfigurationSettingEditDialog.ConfigurationSetting),
91-
SelectedConfigurationSettings.Single()
91+
setting
9292
}
9393
};
9494

9595
var reference = await DialogService.Show<ConfigurationSettingEditDialog>(parameters);
9696
var result = await reference.Result;
97-
if (result is { Data: ConfigurationSetting setting })
97+
if (result is { Data: ConfigurationSetting data })
9898
{
99-
await ConfigurationSettingRepository.Update(setting);
99+
await ConfigurationSettingRepository.Update(data);
100100

101-
if (ConfigurationSettings.IndexOf(SelectedConfigurationSettings.Single()) is var index and not -1)
101+
if (ConfigurationSettings.IndexOf(setting) is var index and not -1)
102102
{
103103
ConfigurationSettings.RemoveAt(index);
104-
ConfigurationSettings.Insert(index, setting);
104+
ConfigurationSettings.Insert(index, data);
105105
StateHasChanged();
106106
}
107-
108-
SelectedConfigurationSettings.Clear();
109-
StateHasChanged();
110107
}
111108
}
112109

113-
private async Task HandleDeleteClick(MouseEventArgs args)
110+
private async Task HandleDeleteClick(params ConfigurationSetting[] settings)
114111
{
115-
foreach (var setting in SelectedConfigurationSettings.ToList())
112+
foreach (var setting in settings)
116113
{
117114
await ConfigurationSettingRepository.Remove(setting);
118115

@@ -123,7 +120,7 @@
123120
}
124121
}
125122

126-
private async Task HandleRefreshClick(MouseEventArgs args)
123+
private async Task HandleRefreshClick()
127124
{
128125
ConfigurationSettings.Clear();
129126
StateHasChanged();
@@ -138,7 +135,7 @@
138135
}
139136
}
140137

141-
private void HandleValuesClick(MouseEventArgs args)
138+
private void HandleValuesClick()
142139
{
143140
IsValuesHidden = !IsValuesHidden;
144141
StateHasChanged();

0 commit comments

Comments
 (0)