[调整] 优化 layout 组件代码结构

This commit is contained in:
就眠儀式
2021-11-16 22:32:45 +08:00
parent 3715898049
commit 117ef91144
11 changed files with 131 additions and 135 deletions

View File

@@ -0,0 +1,12 @@
.layui-layout {
display: flex;
flex: 1;
flex-basis: auto;
height: 100%;
width: 100%;
box-sizing: border-box;
}
.layui-layout-vertical {
flex-direction: column;
}

View File

@@ -1,54 +1,41 @@
<script lang="ts">
export default {
name: "LayLayout",
};
</script>
<script setup lang="ts">
import { Component, computed, useSlots } from "vue";
import Header from "../header/index.vue";
import "./index.less";
export interface LayLayoutProps {
isVertical?: boolean;
}
const slots = useSlots();
const props = withDefaults(defineProps<LayLayoutProps>(), {
isVertical: false,
});
const isVertical = computed(() => {
if (!slots.default) return false;
const vNodes = slots.default();
return vNodes.some((vNode) => {
const componentName = (vNode.type as Component).name;
if (!componentName) return false;
return [Header.name].includes(componentName);
});
});
const classes = computed(() => {
return ["layui-layout", { "layui-layout-vertical": isVertical.value }];
});
</script>
<template>
<section :class="classes">
<slot />
</section>
</template>
<script lang="ts">
export default {
name: 'LayLayout',
}
</script>
<script setup lang="ts">
import { Component, computed, useSlots } from 'vue'
import Header from '../header/index.vue'
const props = withDefaults(
defineProps<{
isVertical?: boolean
}>(),
{
isVertical: false,
}
)
const slots = useSlots()
const isVertical = computed(() => {
if (!slots.default) return false
const vNodes = slots.default()
return vNodes.some((vNode) => {
const componentName = (vNode.type as Component).name
if (!componentName) return false
return [Header.name].includes(componentName)
})
})
const classes = computed(() => {
return ['layui-layout', { 'layui-layout-vertical': isVertical.value }]
})
</script>
<style>
.layui-layout {
display: flex;
flex: 1;
flex-basis: auto;
height: 100%;
width: 100%;
box-sizing: border-box;
}
.layui-layout-vertical {
flex-direction: column;
}
</style>
</template>