import { computed, defineComponent, ref } from 'vue';
import { IndexViewModel } from '@ibiz-template/model';
import { useNamespace } from '@ibiz-template/vue-util';
import { Namespace } from '@ibiz-template/core';
import '@ibiz-template/theme/style/components/layout/app-layout/app-layout.scss';
function renderLogo(ns: Namespace, model: IndexViewModel) {
return (
{model.appIconPath ? (

) : null}
{model.caption}
);
}
export const AppLayout = defineComponent({
name: 'AppLayout',
props: {
model: {
type: IndexViewModel,
required: true,
},
// 视图是否完成加载
isComplete: {
type: Boolean,
default: false,
},
},
setup(props, { emit }) {
const ns = useNamespace('layout');
// 菜单收缩变化
const collapseChange = ref(false);
const collapseMenus = () => {
collapseChange.value = !collapseChange.value;
emit('onCollapseChange', collapseChange.value);
};
const isBlank = computed(() => props.model.source.blankMode === true);
return { ns, collapseChange, isBlank, collapseMenus };
},
render() {
return this.isComplete ? (
{renderLogo(this.ns, this.model)}
{this.$slots.menu}
{this.$slots.default}
{/* */}
) : null;
},
});