@using LANCommander.UI.Components @inject ModalService ModalService String Option Boolean Option Integer Option Choice Option List Option
@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(); } }