MarkdownViewer.razor 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. @using Markdig
  2. <div class="border border-zinc-800 rounded p-4 bg-zinc-900">
  3. @if (ShowEditButton)
  4. {
  5. <div class="flex justify-end mb-2 text-xs">
  6. <button class="text-blue-400 hover:text-blue-300 transition"
  7. @onclick="HandleEdit">
  8. Edit
  9. </button>
  10. </div>
  11. }
  12. @if (string.IsNullOrWhiteSpace(Value))
  13. {
  14. <div class="text-sm text-zinc-500 italic">
  15. No notes
  16. </div>
  17. }
  18. else
  19. {
  20. <div class="markdown text-sm">
  21. @((MarkupString)_html)
  22. </div>
  23. }
  24. </div>
  25. @code {
  26. [Parameter] public string? Value { get; set; }
  27. [Parameter] public bool ShowEditButton { get; set; }
  28. [Parameter] public EventCallback OnEdit { get; set; }
  29. private string _html = "";
  30. private static readonly MarkdownPipeline Pipeline =
  31. new MarkdownPipelineBuilder()
  32. .UseAdvancedExtensions()
  33. .Build();
  34. protected override void OnParametersSet()
  35. {
  36. _html = Markdown.ToHtml(Value ?? "", Pipeline);
  37. }
  38. private async Task HandleEdit()
  39. {
  40. if (OnEdit.HasDelegate)
  41. await OnEdit.InvokeAsync();
  42. }
  43. }