@using LANCommander.UI.Components
@inject ModalService ModalService
@code {
[Parameter] public string? Value { get; set; }
[Parameter] public EventCallback ValueChanged { get; set; }
[Parameter] public EventCallback OnSave { get; set; }
CodeInput? _codeInput;
ConfigImportDialog _configImport;
async Task AddStringOption() => await OpenAddOptionDialog("string");
async Task AddBoolOption() => await OpenAddOptionDialog("bool");
async Task AddIntOption() => await OpenAddOptionDialog("int");
async Task AddChoiceOption() => await OpenAddOptionDialog("choice");
async Task AddListOption() => await OpenAddOptionDialog("list");
async Task OpenAddOptionDialog(string optionType)
{
var modalOptions = new ModalOptions
{
Title = $"Add {optionType.Substring(0, 1).ToUpper() + optionType.Substring(1)} Option",
Maximizable = false,
Closable = true,
OkText = "Insert",
};
var dialogOptions = new AddOptionDialogOptions
{
OptionType = optionType
};
var modalRef = await ModalService.CreateModalAsync(modalOptions, dialogOptions);
modalRef.OnOk = async (yaml) =>
{
if (_codeInput != null)
await _codeInput.InsertText(yaml);
};
}
async Task OnEditorValueChanged(string? newValue)
{
Value = newValue;
if (ValueChanged.HasDelegate)
await ValueChanged.InvokeAsync(Value);
}
async Task OnConfigImported(string yaml)
{
Value = yaml;
if (ValueChanged.HasDelegate)
await ValueChanged.InvokeAsync(Value);
}
async Task OnSaveCallback(string value)
{
if (OnSave.HasDelegate)
await OnSave.InvokeAsync();
}
}