2024-06-17 11:48:00 +07:00
|
|
|
<script setup lang="ts">
|
2024-06-19 16:13:42 +07:00
|
|
|
import { buildTree } from "@/utils/recusive";
|
2024-06-17 11:48:00 +07:00
|
|
|
|
2024-06-19 16:13:42 +07:00
|
|
|
const _props = defineProps<{
|
|
|
|
|
content?: any;
|
|
|
|
|
component?: any;
|
|
|
|
|
}>();
|
2024-06-17 11:48:00 +07:00
|
|
|
|
2024-06-19 16:13:42 +07:00
|
|
|
const SETTING_OPTIONS = {
|
|
|
|
|
MAX_ELEMENT: 4,
|
|
|
|
|
};
|
2024-06-17 11:48:00 +07:00
|
|
|
</script>
|
|
|
|
|
|
|
|
|
|
<template>
|
2024-06-19 16:13:42 +07:00
|
|
|
<div class="mt-4">
|
|
|
|
|
<div class="gap-5 grid" :style="`grid-template-columns: repeat(${SETTING_OPTIONS.MAX_ELEMENT}, minmax(0, 1fr));`">
|
|
|
|
|
<template v-if="_props.content">
|
|
|
|
|
<div v-for="item, index in buildTree(_props.content)" :key="index">
|
|
|
|
|
<div class="submenu-container">
|
|
|
|
|
<h4 class="mb-0" @click="selectNavigationComponent">{{ item.title }}</h4>
|
|
|
|
|
<h4
|
|
|
|
|
v-for="_item, _index in item.childs ? item.childs : []"
|
|
|
|
|
:key="_index"
|
|
|
|
|
class="mb-0"
|
|
|
|
|
@click="selectNavigationComponent"
|
|
|
|
|
>
|
|
|
|
|
{{ _item.title }}
|
|
|
|
|
</h4>
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
</template>
|
2024-06-17 11:48:00 +07:00
|
|
|
</div>
|
2024-06-19 16:13:42 +07:00
|
|
|
</div>
|
2024-06-17 11:48:00 +07:00
|
|
|
</template>
|
|
|
|
|
|
|
|
|
|
<style lang="scss" scoped>
|
2024-06-19 16:13:42 +07:00
|
|
|
.submenu-container {
|
|
|
|
|
display: grid;
|
|
|
|
|
gap: 20px;
|
|
|
|
|
grid-template-columns: repeat(1, minmax(0, 1fr));
|
|
|
|
|
h4 {
|
|
|
|
|
font-size: 14px;
|
|
|
|
|
font-weight: normal;
|
|
|
|
|
cursor: pointer;
|
|
|
|
|
}
|
2024-06-17 11:48:00 +07:00
|
|
|
}
|
|
|
|
|
</style>
|