Refactored footer buttons to allow other, specific buttons

This commit is contained in:
Thorsten Sommer 2024-08-18 11:15:10 +02:00
parent 9fa2fbac32
commit bc0755e363
Signed by: tsommer
GPG Key ID: 371BBA77A02C0108
7 changed files with 28 additions and 16 deletions

View File

@ -34,11 +34,11 @@
@if (this.FooterButtons.Count > 0) @if (this.FooterButtons.Count > 0)
{ {
<MudStack Row="@true" Wrap="Wrap.Wrap" Class="mt-3 mr-2"> <MudStack Row="@true" Wrap="Wrap.Wrap" Class="mt-3 mr-2">
@foreach (var buttonData in this.FooterButtons) @foreach (var button in this.FooterButtons)
{ {
switch (buttonData) switch (button)
{ {
case var _ when !string.IsNullOrWhiteSpace(buttonData.Tooltip): case ButtonData buttonData when !string.IsNullOrWhiteSpace(buttonData.Tooltip):
<MudTooltip Text="@buttonData.Tooltip"> <MudTooltip Text="@buttonData.Tooltip">
<MudButton Variant="Variant.Filled" Color="@buttonData.Color" StartIcon="@GetButtonIcon(buttonData.Icon)" OnClick="async () => await buttonData.AsyncAction()"> <MudButton Variant="Variant.Filled" Color="@buttonData.Color" StartIcon="@GetButtonIcon(buttonData.Icon)" OnClick="async () => await buttonData.AsyncAction()">
@buttonData.Text @buttonData.Text
@ -46,7 +46,7 @@
</MudTooltip> </MudTooltip>
break; break;
default: case ButtonData buttonData:
<MudButton Variant="Variant.Filled" Color="@buttonData.Color" StartIcon="@GetButtonIcon(buttonData.Icon)" OnClick="async () => await buttonData.AsyncAction()"> <MudButton Variant="Variant.Filled" Color="@buttonData.Color" StartIcon="@GetButtonIcon(buttonData.Icon)" OnClick="async () => await buttonData.AsyncAction()">
@buttonData.Text @buttonData.Text
</MudButton> </MudButton>

View File

@ -39,7 +39,7 @@ public abstract partial class AssistantBase : ComponentBase
protected virtual bool ShowDedicatedProgress => false; protected virtual bool ShowDedicatedProgress => false;
protected virtual IReadOnlyList<ButtonData> FooterButtons => []; protected virtual IReadOnlyList<IButtonData> FooterButtons => [];
protected static readonly Dictionary<string, object?> USER_INPUT_ATTRIBUTES = new(); protected static readonly Dictionary<string, object?> USER_INPUT_ATTRIBUTES = new();

View File

@ -25,8 +25,8 @@ public partial class AssistantGrammarSpelling : AssistantBaseCore
protected override bool ShowDedicatedProgress => true; protected override bool ShowDedicatedProgress => true;
protected override IReadOnlyList<ButtonData> FooterButtons => new[] protected override IReadOnlyList<IButtonData> FooterButtons =>
{ [
new ButtonData("Copy result", Icons.Material.Filled.ContentCopy, Color.Default, string.Empty, () => this.CopyToClipboard(this.correctedText)), new ButtonData("Copy result", Icons.Material.Filled.ContentCopy, Color.Default, string.Empty, () => this.CopyToClipboard(this.correctedText)),
}; };

View File

@ -24,17 +24,13 @@ public partial class AssistantRewriteImprove : AssistantBaseCore
protected override bool ShowResult => false; protected override bool ShowResult => false;
#region Overrides of AssistantBase
protected override bool ShowDedicatedProgress => true; protected override bool ShowDedicatedProgress => true;
#endregion protected override IReadOnlyList<IButtonData> FooterButtons =>
[
new ButtonData("Copy result", Icons.Material.Filled.ContentCopy, Color.Default, string.Empty, () => this.CopyToClipboard(this.rewrittenText))
];
protected override IReadOnlyList<ButtonData> FooterButtons => new[]
{
new ButtonData("Copy result", Icons.Material.Filled.ContentCopy, Color.Default, string.Empty, () => this.CopyToClipboard(this.rewrittenText)),
};
#region Overrides of ComponentBase #region Overrides of ComponentBase
protected override async Task OnInitializedAsync() protected override async Task OnInitializedAsync()

View File

@ -1,3 +1,6 @@
namespace AIStudio.Tools; namespace AIStudio.Tools;
public readonly record struct ButtonData(string Text, string Icon, Color Color, string Tooltip, Func<Task> AsyncAction); public readonly record struct ButtonData(string Text, string Icon, Color Color, string Tooltip, Func<Task> AsyncAction) : IButtonData
{
public ButtonTypes Type => ButtonTypes.BUTTON;
}

View File

@ -0,0 +1,7 @@
namespace AIStudio.Tools;
public enum ButtonTypes
{
BUTTON = 0,
SEND_TO,
}

View File

@ -0,0 +1,6 @@
namespace AIStudio.Tools;
public interface IButtonData
{
public ButtonTypes Type { get; }
}