<!--
 * @Description: 
 * @Author: zenghua.wang
 * @Date: 2023-06-20 14:29:45
 * @LastEditors: zenghua.wang
 * @LastEditTime: 2024-02-19 21:11:20
-->
<template>
  <div class="layout-header-placeholder" :style="stylePlaceholder()"></div>
  <div
    class="layout-header"
    :class="{
      'fixed-header': themeConfig.fixedHeader,
      collapse: themeConfig.fixedHeader && isCollapse,
      'no-collapse': themeConfig.fixedHeader && !isCollapse,
    }"
  >
    <div class="layout-header-inner">
      <div class="layout-header-left">
        <Hamburger />
        <Breadcrumb />
      </div>
      <div class="layout-header-right">
        <Size class="layout-header-tool" />
        <ScreenFull class="layout-header-tool" />
        <Avatar class="layout-header-tool" />
      </div>
    </div>
    <TagsView v-if="themeConfig.showTag" />
  </div>
</template>

<script setup name="layout-header">
import { computed } from 'vue';
import { useSettingStore } from '@/store/modules/setting';
import { setPx } from '@/utils';
import Hamburger from '../Hamburger';
import Breadcrumb from '../Breadcrumb';
import Size from '../Size';
import ScreenFull from '../ScreenFull';
import Avatar from '../Avatar';
import TagsView from '../TagsView';

const SettingStore = useSettingStore();

// 主题配置
const themeConfig = computed(() => SettingStore.themeConfig);
const isCollapse = computed(() => !SettingStore.isCollapse);

const stylePlaceholder = () => {
  return { height: themeConfig.value.showTag ? setPx(90) : setPx(50) };
};
</script>

<style lang="scss" scoped>
.layout-header {
  width: 100%;
  background: white;
  transition: width 0.28s;
  flex-shrink: 0;
  box-sizing: border-box;
  box-shadow: 0 1px 4px rgb(0 21 41 / 8%);

  &.fixed-header {
    position: fixed;
    top: 0;
    right: 0;
    z-index: 9;
  }
  &.collapse {
    width: calc(100% - 60px);
  }
  &.no-collapse {
    width: calc(100% - 210px);
  }

  &-placeholder {
    height: 50px;
  }

  &-inner {
    @include flex-row();
    align-items: center;
    justify-content: space-between;
    height: 50px;
    width: 100%;
    padding: 0 10px 0 0;
    border-bottom: 1px solid #eee;
    box-sizing: border-box;
  }

  &-left {
    @include flex-row();
    align-items: center;
    height: 100%;
  }

  &-right {
    @include flex-row();
    align-items: center;
  }

  &-tool {
    padding: 4px;
    margin-right: 10px;
    cursor: pointer;

    :deep(.el-icon) {
      font-size: 20px;
      color: #333;
    }
  }
}
</style>
