Updated Breadcrumbs to composition api & typescript.

This commit is contained in:
Joep 2023-10-07 14:00:33 +02:00
parent baf204259b
commit 723ace4dc2
No known key found for this signature in database
GPG Key ID: 6F5588F1DC2A8209

View File

@ -3,8 +3,8 @@
<component <component
:is="element" :is="element"
:to="base || ''" :to="base || ''"
:aria-label="$t('files.home')" :aria-label="t('files.home')"
:title="$t('files.home')" :title="t('files.home')"
> >
<i class="material-icons">home</i> <i class="material-icons">home</i>
</component> </component>
@ -18,13 +18,22 @@
</div> </div>
</template> </template>
<script> <script setup lang="ts">
export default { import { computed } from "vue";
name: "breadcrumbs", import { useI18n } from "vue-i18n";
props: ["base", "noLink"], import { useRoute } from "vue-router";
computed: {
items() { const { t } = useI18n();
const relativePath = this.$route.path.replace(this.base, "");
const route = useRoute();
const props = defineProps<{
base: string;
noLink: boolean;
}>();
const items = computed(() => {
const relativePath = route.path.replace(props.base, "");
let parts = relativePath.split("/"); let parts = relativePath.split("/");
if (parts[0] === "") { if (parts[0] === "") {
@ -35,13 +44,13 @@ export default {
parts.pop(); parts.pop();
} }
let breadcrumbs = []; let breadcrumbs: any[] = [];
for (let i = 0; i < parts.length; i++) { for (let i = 0; i < parts.length; i++) {
if (i === 0) { if (i === 0) {
breadcrumbs.push({ breadcrumbs.push({
name: decodeURIComponent(parts[i]), name: decodeURIComponent(parts[i]),
url: this.base + "/" + parts[i] + "/", url: props.base + "/" + parts[i] + "/",
}); });
} else { } else {
breadcrumbs.push({ breadcrumbs.push({
@ -60,16 +69,15 @@ export default {
} }
return breadcrumbs; return breadcrumbs;
}, });
element() {
if (this.noLink !== undefined) { const element = computed(() => {
if (props.noLink !== undefined) {
return "span"; return "span";
} }
return "router-link"; return "router-link";
}, });
},
};
</script> </script>
<style></style> <style></style>