UnisKB/ui/src/components/layout-container/index.vue

49 lines
1.1 KiB
Vue
Raw Normal View History

2023-10-18 11:06:22 +00:00
<template>
2024-07-01 01:45:59 +00:00
<div class="content-container border-r-4">
2024-05-23 10:41:48 +00:00
<div class="content-container__header flex align-center w-full" v-if="slots.header || header">
2023-12-05 11:21:13 +00:00
<slot name="backButton">
<back-button :to="backTo" v-if="showBack"></back-button>
</slot>
2024-05-23 10:41:48 +00:00
<slot name="header">
2024-07-01 01:45:59 +00:00
<h4>{{ header }}</h4>
2024-05-23 10:41:48 +00:00
</slot>
2023-10-19 10:18:45 +00:00
</div>
2023-12-12 08:00:54 +00:00
<el-scrollbar>
<div class="content-container__main">
<slot></slot>
</div>
</el-scrollbar>
2023-10-19 10:18:45 +00:00
</div>
2023-10-18 11:06:22 +00:00
</template>
<script setup lang="ts">
2023-10-27 09:49:06 +00:00
import { computed, useSlots } from 'vue'
2023-11-03 09:45:01 +00:00
defineOptions({ name: 'LayoutContainer' })
2023-10-18 11:06:22 +00:00
const slots = useSlots()
2023-10-27 09:49:06 +00:00
const props = defineProps({
2023-11-10 11:05:52 +00:00
header: String || null,
2023-10-27 09:49:06 +00:00
backTo: String
})
const showBack = computed(() => {
const { backTo } = props
return backTo
2023-10-18 11:06:22 +00:00
})
</script>
<style lang="scss" scoped>
2023-10-18 11:06:22 +00:00
.content-container {
transition: 0.3s;
2023-11-02 10:25:09 +00:00
padding: 0 var(--app-view-padding) var(--app-view-padding);
2023-10-18 11:06:22 +00:00
.content-container__header {
box-sizing: border-box;
2023-11-03 09:45:01 +00:00
padding: 16px 0;
flex-wrap: wrap;
2023-10-18 11:06:22 +00:00
}
.content-container__main {
background-color: var(--app-view-bg-color);
box-sizing: border-box;
2024-07-22 10:52:56 +00:00
min-width: 847px;
2023-10-18 11:06:22 +00:00
}
}
</style>