@implements IDisposable
@inject IJSRuntime JsRuntime
@for (int i = 0; i < Model.Level; i++)
{
}
@code {
[CascadingParameter]
private ScriptWorkspace Workspace { get; set; } = null!;
[CascadingParameter(Name = "HierachyItemRadioName")]
protected string RadioName { get; set; } = "script-explorer-item";
[Parameter, EditorRequired]
public ScriptFileModel Model { get; set; } = default!;
Guid ItemId = Guid.NewGuid();
private string Icon => "mdi-language-csharp";
protected override void OnAfterRender(bool firstRender)
{
base.OnAfterRender(firstRender);
if (!firstRender) return;
Model.OnModified += OnModified;
Model.OnDiagnosticsChanged += OnDiagnosticsChanged;
}
private void OnModified()
{
this.InvokeAsync(() =>
{
StateHasChanged();
});
}
private void OnDiagnosticsChanged(int warningCount, int errorCount)
{
this.InvokeAsync(() =>
{
StateHasChanged();
});
}
private async Task Click()
{
await JsRuntime.InvokeVoidAsync("SetRadioChecked", ItemId);
await Workspace.SelectFile(this.Model);
}
public void Dispose()
{
Model.OnModified -= OnModified;
Model.OnDiagnosticsChanged -= OnDiagnosticsChanged;
GC.SuppressFinalize(this);
}
}