4df1c799创建于 2023年1月17日历史提交
<script setup lang="ts">
import { Fold, Expand } from '@element-plus/icons-vue';
import Lang from '../i18n/Lang.vue';

const props = withDefaults(defineProps<{
    showIcon: boolean
}>(), {
    showIcon: true
})

const themeText = ref("dark")
const collapse = ref(false)
const myEmit = defineEmits<{
    (event: 'collapse', collapse: boolean): void,
    (event: 'changeTheme'): void
}>()
const emitCollapse = (c: boolean) => {
    myEmit('collapse', c)
    collapse.value = c
}
const onChangeTheme = () => {
    myEmit('changeTheme')
    themeText.value = themeText.value === 'dark' ? 'light' : 'dark';
}
</script>

<template>
    <div class="header-container">
        <div class="left">
            <el-icon :size="18" v-if="collapse && props.showIcon" style="cursor: pointer;" @click="() => emitCollapse(false)"><Expand /></el-icon>
            <el-icon :size="18" v-if="!collapse && props.showIcon" style="cursor: pointer;" @click="() => emitCollapse(true)"><Fold /></el-icon>
            <my-breadcrumb class="bread" />
        </div>
        <div class="right">
            <span v-if="false" class="header-change-theme" @click.stop="onChangeTheme()">{{ themeText }}</span>
            <Lang />
        </div>
    </div>
</template>

<style scoped lang="scss">
.header-container {
    height: var(--vem-header-height);
    background-color: var(--el-bg-color-sub);
    font-size: 16px;
    padding: 0 16px;
    letter-spacing: 1px;
    display: flex;
    align-items: center;
    justify-content: space-between;
    flex-wrap: nowrap;
    flex-shrink: 0;
}
.left {
    display: flex;
    align-items: center;
}
.right {
    display: flex;
    align-items: center;
}
.bread {
    margin-left: 10px;
}
.header-change-theme {
    font-size: 12px;
    margin-right: 20px;
    cursor: pointer;
}
</style>