You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
65 lines
1.8 KiB
65 lines
1.8 KiB
@inject HttpClient httpClient |
|
|
|
@if (content == null) |
|
{ |
|
<LoadingComponent/> |
|
} |
|
else |
|
{ |
|
<div class="note"> |
|
<div class="noteHeader"> |
|
<div class="noteTitle">@noteFrontMatter.Title</div> |
|
<div class="noteDates"> |
|
<div class="noteDateUpdated"><b>Updated</b>: @noteFrontMatter.UpdatedDate.ToString("MM/dd/yyyy")</div> |
|
<div class="noteDateCreated"><b>Created</b>: @noteFrontMatter.CreatedDate.ToString("MM/dd/yyyy")</div> |
|
</div> |
|
</div> |
|
<div class="noteContent">@((MarkupString)Markdown.ToHtml(content, Pipeline))</div> |
|
<div class="noteFooter"><EditLinkComponent Href="@GitUrl"></EditLinkComponent></div> |
|
</div> |
|
} |
|
|
|
<style> |
|
.noteTitle { |
|
font-weight: bold; |
|
} |
|
|
|
.noteHeader { |
|
display: flex; |
|
justify-content: space-between; |
|
} |
|
|
|
.noteDates { |
|
display: flex; |
|
flex-direction: column; |
|
} |
|
|
|
|
|
.noteFooter { |
|
display: flex; |
|
justify-content: flex-end; |
|
} |
|
|
|
</style> |
|
|
|
@code { |
|
[Parameter] public NoteContentModel NoteContentModel { get; set; } = default!; |
|
|
|
NoteFrontMatterModel noteFrontMatter = null!; |
|
private string? content = null; |
|
|
|
private string Filepath => $"content/notes/{NoteContentModel.Content}.md"; |
|
private string GitUrl => $"{Project.GitResourcesUrl}/{Filepath}"; |
|
private MarkdownPipeline Pipeline => MarkdownFiles.Pipeline; |
|
|
|
private async Task<NoteFrontMatterModel> LoadContent() { |
|
content = await MarkdownFiles.LoadMarkdown(httpClient, Filepath); |
|
|
|
return noteFrontMatter = |
|
await MarkdownFiles.LoadFrontMatter<NoteFrontMatterModel>(httpClient, Filepath); |
|
} |
|
|
|
protected override async Task OnParametersSetAsync() => await LoadContent(); |
|
protected override async Task OnInitializedAsync() => await LoadContent(); |
|
|
|
} |