| | | 1 | | <RadzenDropDown TValue="ToolApprovalMode" |
| | | 2 | | Data="@(Enum.GetValues<ToolApprovalMode>())" |
| | | 3 | | Value="@Value" |
| | 0 | 4 | | Change="@(args => ValueChanged.InvokeAsync((ToolApprovalMode)args))" |
| | | 5 | | @attributes="AdditionalAttributes" |
| | | 6 | | Style="width: 135px;"> |
| | | 7 | | |
| | | 8 | | <Template> |
| | 0 | 9 | | @render(context) |
| | | 10 | | </Template> |
| | | 11 | | |
| | | 12 | | <ValueTemplate> |
| | 0 | 13 | | @render(context) |
| | | 14 | | </ValueTemplate> |
| | | 15 | | |
| | | 16 | | </RadzenDropDown> |
| | | 17 | | |
| | | 18 | | @code { |
| | 0 | 19 | | [Parameter] public ToolApprovalMode Value { get; set; } |
| | 0 | 20 | | [Parameter] public EventCallback<ToolApprovalMode> ValueChanged { get; set; } |
| | | 21 | | |
| | | 22 | | // Локальный RenderFragment для исключения дублирования кода шаблонов |
| | 0 | 23 | | private RenderFragment render(ToolApprovalMode mode) => __builder => |
| | 0 | 24 | | { |
| | 0 | 25 | | var info = GetModeInfo(mode); |
| | 0 | 26 | | <div style="display: flex; align-items: center; gap: 8px;"> |
| | 0 | 27 | | <RadzenIcon Icon="@info.Icon" Style="@($"color: {info.Color}; vertical-align: middle;")" /> |
| | 0 | 28 | | <span>@info.Text</span> |
| | 0 | 29 | | </div> |
| | 0 | 30 | | }; |
| | 0 | 31 | | |
| | 0 | 32 | | private (string Icon, string Color, string Text) GetModeInfo(ToolApprovalMode mode) => mode switch |
| | 0 | 33 | | { |
| | 0 | 34 | | ToolApprovalMode.Allow => ("check_circle", "var(--rz-success)", SharedResource.ApprovalModeAuto), |
| | 0 | 35 | | ToolApprovalMode.Ask => ("help_outline", "var(--rz-warning)", SharedResource.ApprovalModeAsk), |
| | 0 | 36 | | ToolApprovalMode.Deny => ("cancel", "var(--rz-danger)", SharedResource.ApprovalModeDeny), |
| | 0 | 37 | | // лучше просто выключить вместо Deny, но вдруг захочется показать агенту тулзу, но не давать ее выполнить... |
| | 0 | 38 | | _ => ("info", "gray", mode.ToString()) |
| | 0 | 39 | | }; |
| | 0 | 40 | | |
| | 0 | 41 | | // Позволяет передавать любые другие атрибуты RadzenSwitch (напр. Title, TabIndex) |
| | 0 | 42 | | [Parameter(CaptureUnmatchedValues = true)] |
| | 0 | 43 | | public Dictionary<string, object>? AdditionalAttributes { get; set; } |
| | 0 | 44 | | } |