mirror of
https://github.com/MindWorkAI/AI-Studio.git
synced 2026-03-29 19:11:38 +00:00
overhauled switch component
This commit is contained in:
parent
b221d083d2
commit
25eb0cfbe2
@ -103,9 +103,23 @@
|
||||
}
|
||||
break;
|
||||
case AssistantComponentType.SWITCH:
|
||||
if (component is AssistantSwitch assistantSwitch)
|
||||
if (component is AssistantSwitch switchComponent)
|
||||
{
|
||||
<MudTextSwitch Label="@assistantSwitch.Label" @bind-Value="@this.switchFields[assistantSwitch.Name]" LabelOn="@assistantSwitch.LabelOn" LabelOff="@assistantSwitch.LabelOff" />
|
||||
var assistantSwitch = switchComponent;
|
||||
var currentValue = this.switchFields[assistantSwitch.Name];
|
||||
<MudField Label="@assistantSwitch.Label" Variant="Variant.Outlined" Class="mb-3" Disabled="@assistantSwitch.Disabled">
|
||||
<MudSwitch T="bool"
|
||||
Value="@currentValue"
|
||||
ValueChanged="@((bool value) => this.switchFields[assistantSwitch.Name] = value)"
|
||||
LabelPlacement="@assistantSwitch.GetLabelPlacement()"
|
||||
Color="@assistantSwitch.GetColor(assistantSwitch.CheckedColor)"
|
||||
UncheckedColor="@assistantSwitch.GetColor(assistantSwitch.UncheckedColor)"
|
||||
ThumbIcon="@assistantSwitch.GetIconSvg()"
|
||||
ThumbIconColor="@assistantSwitch.GetColor(assistantSwitch.IconColor)"
|
||||
Disabled="@assistantSwitch.Disabled">
|
||||
@(currentValue ? assistantSwitch.LabelOn : assistantSwitch.LabelOff)
|
||||
</MudSwitch>
|
||||
</MudField>
|
||||
}
|
||||
break;
|
||||
case AssistantComponentType.HEADING:
|
||||
|
||||
@ -107,9 +107,15 @@ ASSISTANT = {
|
||||
["Name"] = "<unique identifier of this component>", -- required
|
||||
["Label"] = "<heading of your component>", -- required
|
||||
["Value"] = true, -- initial switch state
|
||||
["Disabled"] = false, -- if true, disables user interaction but the value can still be used in the user prompt (use for presentation purposes)
|
||||
["UserPrompt"] = "<direct input of instructions, questions, or tasks by a user>",
|
||||
["LabelOn"] = "<text if state is true>", -- required
|
||||
["LabelOff"] = "<text if state is false>" -- required
|
||||
["LabelOn"] = "<text if state is true>",
|
||||
["LabelOff"] = "<text if state is false>",
|
||||
["LabelPlacement"] = "<Bottom|End|Left|Right|Start|Top>", -- Defaults to End (right of the switch)
|
||||
["Icon"] = "Icons.Material.Filled.Bolt", -- places a thumb icon inside the switch
|
||||
["IconColor"] = "<Dark|Error|Info|Inherit|Primary|Secondary|Success|Surface|Tertiary|Transparent|Warning>", -- color of the thumb icon. Defaults to `Inherit`
|
||||
["CheckedColor"] = "<Dark|Error|Info|Inherit|Primary|Secondary|Success|Surface|Tertiary|Transparent|Warning>", -- color of the switch if state is true. Defaults to `Inherit`
|
||||
["UncheckedColor"] = "<Dark|Error|Info|Inherit|Primary|Secondary|Success|Surface|Tertiary|Transparent|Warning>", -- color of the switch if state is false. Defaults to `Inherit`
|
||||
}
|
||||
},
|
||||
{
|
||||
|
||||
@ -1,3 +1,5 @@
|
||||
using AIStudio.Tools.PluginSystem.Assistants.Icons;
|
||||
|
||||
namespace AIStudio.Tools.PluginSystem.Assistants.DataModel;
|
||||
|
||||
internal sealed class AssistantSwitch : AssistantComponentBase
|
||||
@ -24,6 +26,12 @@ internal sealed class AssistantSwitch : AssistantComponentBase
|
||||
set => AssistantComponentPropHelper.WriteBool(this.Props, nameof(this.Value), value);
|
||||
}
|
||||
|
||||
public bool Disabled
|
||||
{
|
||||
get => AssistantComponentPropHelper.ReadBool(this.Props, nameof(this.Disabled), false);
|
||||
set => AssistantComponentPropHelper.WriteBool(this.Props, nameof(this.Disabled), value);
|
||||
}
|
||||
|
||||
public string UserPrompt
|
||||
{
|
||||
get => AssistantComponentPropHelper.ReadString(this.Props, nameof(this.UserPrompt));
|
||||
@ -42,4 +50,37 @@ internal sealed class AssistantSwitch : AssistantComponentBase
|
||||
set => AssistantComponentPropHelper.WriteString(this.Props, nameof(this.LabelOff), value);
|
||||
}
|
||||
|
||||
public string LabelPlacement
|
||||
{
|
||||
get => AssistantComponentPropHelper.ReadString(this.Props, nameof(this.LabelPlacement));
|
||||
set => AssistantComponentPropHelper.WriteString(this.Props, nameof(this.LabelPlacement), value);
|
||||
}
|
||||
|
||||
public string CheckedColor
|
||||
{
|
||||
get => AssistantComponentPropHelper.ReadString(this.Props, nameof(this.CheckedColor));
|
||||
set => AssistantComponentPropHelper.WriteString(this.Props, nameof(this.CheckedColor), value);
|
||||
}
|
||||
|
||||
public string UncheckedColor
|
||||
{
|
||||
get => AssistantComponentPropHelper.ReadString(this.Props, nameof(this.UncheckedColor));
|
||||
set => AssistantComponentPropHelper.WriteString(this.Props, nameof(this.UncheckedColor), value);
|
||||
}
|
||||
|
||||
public string Icon
|
||||
{
|
||||
get => AssistantComponentPropHelper.ReadString(this.Props, nameof(this.Icon));
|
||||
set => AssistantComponentPropHelper.WriteString(this.Props, nameof(this.Icon), value);
|
||||
}
|
||||
|
||||
public string IconColor
|
||||
{
|
||||
get => AssistantComponentPropHelper.ReadString(this.Props, nameof(this.IconColor));
|
||||
set => AssistantComponentPropHelper.WriteString(this.Props, nameof(this.IconColor), value);
|
||||
}
|
||||
|
||||
public MudBlazor.Color GetColor(string colorString) => Enum.TryParse<Color>(colorString, out var color) ? color : MudBlazor.Color.Inherit;
|
||||
public Placement GetLabelPlacement() => Enum.TryParse<Placement>(this.LabelPlacement, out var placement) ? placement : Placement.Right;
|
||||
public string GetIconSvg() => MudBlazorIconRegistry.TryGetSvg(this.Icon, out var svg) ? svg : string.Empty;
|
||||
}
|
||||
|
||||
@ -34,8 +34,8 @@ public static class ComponentPropSpecs
|
||||
optional: ["ValidationMessage", "Class", "Style"]
|
||||
),
|
||||
[AssistantComponentType.SWITCH] = new(
|
||||
required: ["Name", "Label", "LabelOn", "LabelOff", "Value"],
|
||||
optional: ["UserPrompt"]
|
||||
required: ["Name", "Label", "Value"],
|
||||
optional: [ "LabelOn", "LabelOff", "LabelPlacement", "Icon", "IconColor", "UserPrompt", "CheckedColor", "UncheckedColor", "Disabled"]
|
||||
),
|
||||
[AssistantComponentType.HEADING] = new(
|
||||
required: ["Text", "Level"],
|
||||
|
||||
Loading…
Reference in New Issue
Block a user