Files
luos/resources/assets/js/components/utils/BreadCrumb.vue

88 lines
1.8 KiB
Vue
Raw Normal View History

2021-08-12 19:05:50 +00:00
<template>
<nav aria-label="breadcrumb">
2021-08-16 18:54:43 +00:00
<ol class="vp-breadcrumb">
2021-08-12 19:05:50 +00:00
<li
v-for="item in formatOptions(options)"
:key="item.label"
:class="item.classObject"
>
<span v-if="item.classObject.active === true">{{ item.label }}</span>
<a
v-if="item.classObject.active === false"
href="#"
@click="item.onClick"
>{{ item.label }}</a
>
</li>
2021-08-16 18:54:43 +00:00
<div
v-for="item in settings"
:key="item.id"
class="vp-bread-crumbs-settings vp-float-right vp-inline-block"
>
<span @click="item.onClick">
<i :class="formatClass(item)"></i>
</span>
</div>
2021-08-12 19:05:50 +00:00
</ol>
</nav>
</template>
<script>
import _ from "lodash";
export default {
name: "BreadCrumb",
2021-08-16 18:54:43 +00:00
props: ["options", "settings"],
2021-08-12 19:05:50 +00:00
data() {
return {};
},
methods: {
/**
* format options to Bread Crumbs
*/
formatOptions(data) {
let options = data;
for (let i = 0; i <= options.length - 1; i++) {
if (i === options.length - 1) {
options[i].classObject = {
"breadcrumb-item": true,
active: true,
2021-08-16 18:54:43 +00:00
"vp-inline-block": true,
2021-08-12 19:05:50 +00:00
};
} else {
options[i].classObject = {
"breadcrumb-item": true,
active: false,
2021-08-16 18:54:43 +00:00
"vp-inline-block": true,
2021-08-12 19:05:50 +00:00
};
}
}
return options;
},
2021-08-16 18:54:43 +00:00
formatClass(item) {
return item.class;
},
2021-08-12 19:05:50 +00:00
},
};
</script>
2021-08-16 18:54:43 +00:00
<style scoped>
.vp-float-right {
float: right;
}
.vp-bread-crumbs-settings {
line-height: 20px;
}
.vp-breadcrumb {
padding: 0.75rem 1rem;
margin-bottom: 1rem;
list-style: none;
background-color: #e9ecef;
border-radius: 0.25rem;
}
.vp-inline-block {
display: inline-block;
}
</style>