pelican-jdr/src/components/MarkdownFile.vue
2023-02-13 21:26:47 +01:00

52 lines
1 KiB
Vue

<script setup lang="ts">
import { ref, onMounted, onBeforeUpdate } from "vue";
import axios from "axios";
import MarkdownRender from "./markdown/MarkdownRender.vue";
const props = defineProps<{
path: string;
order?: number;
}>();
const loadedPage = ref("");
const markdown = ref("");
function refresh() {
const markdownFileUrl = `/${props.path}.md`;
if (loadedPage.value === markdownFileUrl) {
return;
}
loadedPage.value = markdownFileUrl;
console.log(`Chargement de l'URL ${markdownFileUrl}`);
axios
.get(markdownFileUrl)
.then((response) => {
markdown.value = response.data;
})
.catch(
() =>
(markdown.value =
"# 404 Not Found \n \n La page recherchée n'a pas pu être trouvée")
);
}
onMounted(() => {
refresh();
});
onBeforeUpdate(() => {
refresh();
});
</script>
<template>
<article>
<MarkdownRender
:markdown="markdown"
:order="order"
v-if="markdown !== ''"
></MarkdownRender>
<slot></slot>
</article>
</template>