12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697 |
- <!--
- * @Author: Vben
- * @Description: logo component
- -->
- <template>
- <div class="anticon" :class="getAppLogoClass" @click="goHome">
- <img :src="isEn?logoEn:logo" />
- <!-- <div class="ml-2 truncate md:opacity-100" :class="getTitleClass" v-show="showTitle">
- {{ title }}
- </div> -->
- </div>
- </template>
- <script lang="ts" setup>
- import { computed, unref } from 'vue';
- import { useGlobSetting } from '/@/hooks/setting';
- import { useGo } from '/@/hooks/web/usePage';
- import { useMenuSetting } from '/@/hooks/setting/useMenuSetting';
- import { useDesign } from '/@/hooks/web/useDesign';
- import { PageEnum } from '/@/enums/pageEnum';
- import { useUserStore } from '/@/store/modules/user';
- import { useLocaleStore } from '/@/store/modules/locale';
- import logo from '/@/assets/images/grey-logo.png';
- import logoEn from '/@/assets/images/grey-logo-en.png';
- const props = defineProps({
- /**
- * The theme of the current parent component
- */
- theme: { type: String, validator: (v: string) => ['light', 'dark'].includes(v) },
- /**
- * Whether to show title
- */
- showTitle: { type: Boolean, default: true },
- /**
- * The title is also displayed when the menu is collapsed
- */
- alwaysShowTitle: { type: Boolean },
- });
- const localeStore = useLocaleStore();
- const isEn = computed(() => localeStore.getLocale === 'en');
- const { prefixCls } = useDesign('app-logo');
- const { getCollapsedShowTitle } = useMenuSetting();
- const userStore = useUserStore();
- const { title } = useGlobSetting();
- const go = useGo();
- const getAppLogoClass = computed(() => [
- prefixCls,
- props.theme,
- { 'collapsed-show-title': unref(getCollapsedShowTitle) },
- ]);
- const getTitleClass = computed(() => [
- `${prefixCls}__title`,
- {
- 'xs:opacity-0': !props.alwaysShowTitle,
- },
- ]);
- function goHome() {
- go(userStore.getUserInfo.homePath || PageEnum.BASE_HOME);
- }
- </script>
- <style lang="less" scoped>
- @prefix-cls: ~'@{namespace}-app-logo';
- .@{prefix-cls} {
- display: flex;
- align-items: center;
- padding-left: 7px;
- cursor: pointer;
- transition: all 0.2s ease;
- &.light {
- border-bottom: 1px solid @border-color-base;
- }
- &.collapsed-show-title {
- padding-left: 20px;
- }
- &.light &__title {
- color: @primary-color;
- }
- &.dark &__title {
- color: @white;
- }
- &__title {
- font-size: 16px;
- font-weight: 700;
- transition: all 0.5s;
- line-height: normal;
- }
- }
- </style>
|