Updated Breadcrumbs to composition api & typescript.
This commit is contained in:
parent
baf204259b
commit
723ace4dc2
@ -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>
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user