perf: menu (#220)

perf: menu
This commit is contained in:
啝裳 2022-03-21 23:15:41 +08:00 committed by GitHub
parent 997711b264
commit 5885706988
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
8 changed files with 43 additions and 41 deletions

View File

@ -82,10 +82,11 @@ function translationEn() {
<el-dropdown-item <el-dropdown-item
:style="getDropdownItemStyle(locale, 'en')" :style="getDropdownItemStyle(locale, 'en')"
@click="translationEn" @click="translationEn"
><el-icon class="check-en" v-show="locale === 'en'"
><IconifyIconOffline icon="check" /></el-icon
>English</el-dropdown-item
> >
<span class="check-en" v-show="locale === 'en'">
<IconifyIconOffline icon="check" /> </span
>English
</el-dropdown-item>
</el-dropdown-menu> </el-dropdown-menu>
</template> </template>
</el-dropdown> </el-dropdown>
@ -106,13 +107,13 @@ function translationEn() {
</el-dropdown-menu> </el-dropdown-menu>
</template> </template>
</el-dropdown> </el-dropdown>
<el-icon <span
class="el-icon-setting" class="el-icon-setting"
:title="t('buttons.hssystemSet')" :title="t('buttons.hssystemSet')"
@click="onPanel" @click="onPanel"
> >
<IconifyIconOffline icon="setting" /> <IconifyIconOffline icon="setting" />
</el-icon> </span>
</div> </div>
</div> </div>
</template> </template>

View File

@ -24,9 +24,9 @@ function tabClick() {
<el-dropdown ref="dropdownDom" trigger="click" placement="bottom-end"> <el-dropdown ref="dropdownDom" trigger="click" placement="bottom-end">
<span class="dropdown-badge"> <span class="dropdown-badge">
<el-badge :value="noticesNum" :max="99"> <el-badge :value="noticesNum" :max="99">
<el-icon class="header-notice-icon" <span class="header-notice-icon">
><IconifyIconOffline icon="bell" <IconifyIconOffline icon="bell" />
/></el-icon> </span>
</el-badge> </el-badge>
</span> </span>
<template #dropdown> <template #dropdown>

View File

@ -139,9 +139,9 @@ onKeyStroke("ArrowDown", handleDown);
@input="handleSearch" @input="handleSearch"
> >
<template #prefix> <template #prefix>
<el-icon class="el-input__icon"> <span class="el-input__icon">
<IconifyIconOffline icon="search" /> <IconifyIconOffline icon="search" />
</el-icon> </span>
</template> </template>
</el-input> </el-input>
<div class="search-result-container"> <div class="search-result-container">

View File

@ -102,15 +102,17 @@ function translationEn() {
<el-dropdown-item <el-dropdown-item
:style="getDropdownItemStyle(locale, 'zh')" :style="getDropdownItemStyle(locale, 'zh')"
@click="translationCh" @click="translationCh"
><el-icon class="check-zh" v-show="locale === 'zh'"
><IconifyIconOffline icon="check" /></el-icon
>简体中文</el-dropdown-item
> >
<span class="check-zh" v-show="locale === 'zh'">
<IconifyIconOffline icon="check" /> </span
>简体中文
</el-dropdown-item>
<el-dropdown-item <el-dropdown-item
:style="getDropdownItemStyle(locale, 'en')" :style="getDropdownItemStyle(locale, 'en')"
@click="translationEn" @click="translationEn"
><el-icon class="check-en" v-show="locale === 'en'" >
><IconifyIconOffline icon="check" /></el-icon <span class="check-en" v-show="locale === 'en'">
<IconifyIconOffline icon="check" /> </span
>English</el-dropdown-item >English</el-dropdown-item
> >
</el-dropdown-menu> </el-dropdown-menu>
@ -134,13 +136,13 @@ function translationEn() {
</el-dropdown-menu> </el-dropdown-menu>
</template> </template>
</el-dropdown> </el-dropdown>
<el-icon <span
class="el-icon-setting" class="el-icon-setting"
:title="t('buttons.hssystemSet')" :title="t('buttons.hssystemSet')"
@click="onPanel" @click="onPanel"
> >
<IconifyIconOffline icon="setting" /> <IconifyIconOffline icon="setting" />
</el-icon> </span>
</div> </div>
</div> </div>
</template> </template>

View File

@ -119,9 +119,9 @@ function translationEn() {
:index="resolvePath(route) || route.redirect" :index="resolvePath(route) || route.redirect"
> >
<template #title> <template #title>
<el-icon v-show="route.meta.icon" :class="route.meta.icon"> <div v-show="route.meta.icon" :class="['el-icon', route.meta.icon]">
<component :is="useRenderIcon(route.meta && route.meta.icon)" /> <component :is="useRenderIcon(route.meta && route.meta.icon)" />
</el-icon> </div>
<span>{{ transformI18n(route.meta.title, route.meta.i18n) }}</span> <span>{{ transformI18n(route.meta.title, route.meta.i18n) }}</span>
<FontIcon <FontIcon
v-if="route.meta.extraIcon" v-if="route.meta.extraIcon"
@ -149,15 +149,15 @@ function translationEn() {
<el-dropdown-item <el-dropdown-item
:style="getDropdownItemStyle(locale, 'zh')" :style="getDropdownItemStyle(locale, 'zh')"
@click="translationCh" @click="translationCh"
><el-icon class="check-zh" v-show="locale === 'zh'" ><span class="check-zh" v-show="locale === 'zh'"
><IconifyIconOffline icon="check" /></el-icon ><IconifyIconOffline icon="check" /></span
>简体中文</el-dropdown-item >简体中文</el-dropdown-item
> >
<el-dropdown-item <el-dropdown-item
:style="getDropdownItemStyle(locale, 'en')" :style="getDropdownItemStyle(locale, 'en')"
@click="translationEn" @click="translationEn"
><el-icon class="check-en" v-show="locale === 'en'" ><span class="check-en" v-show="locale === 'en'"
><IconifyIconOffline icon="check" /></el-icon ><IconifyIconOffline icon="check" /></span
>English</el-dropdown-item >English</el-dropdown-item
> >
</el-dropdown-menu> </el-dropdown-menu>
@ -181,13 +181,13 @@ function translationEn() {
</el-dropdown-menu> </el-dropdown-menu>
</template> </template>
</el-dropdown> </el-dropdown>
<el-icon <span
class="el-icon-setting" class="el-icon-setting"
:title="t('buttons.hssystemSet')" :title="t('buttons.hssystemSet')"
@click="onPanel" @click="onPanel"
> >
<IconifyIconOffline icon="setting" /> <IconifyIconOffline icon="setting" />
</el-icon> </span>
</div> </div>
</div> </div>
</template> </template>

View File

@ -148,7 +148,7 @@ function resolvePath(routePath) {
:class="{ 'submenu-title-noDropdown': !isNest }" :class="{ 'submenu-title-noDropdown': !isNest }"
:style="getNoDropdownStyle" :style="getNoDropdownStyle"
> >
<el-icon v-show="props.item.meta.icon"> <div class="el-icon" v-show="props.item.meta.icon">
<component <component
:is=" :is="
useRenderIcon( useRenderIcon(
@ -157,7 +157,7 @@ function resolvePath(routePath) {
) )
" "
/> />
</el-icon> </div>
<div <div
v-if=" v-if="
!pureApp.sidebar.opened && !pureApp.sidebar.opened &&
@ -216,11 +216,14 @@ function resolvePath(routePath) {
popper-append-to-body popper-append-to-body
> >
<template #title> <template #title>
<el-icon v-show="props.item.meta.icon" :class="props.item.meta.icon"> <div
v-show="props.item.meta.icon"
:class="['el-icon', props.item.meta.icon]"
>
<component <component
:is="useRenderIcon(props.item.meta && props.item.meta.icon)" :is="useRenderIcon(props.item.meta && props.item.meta.icon)"
/> />
</el-icon> </div>
<span v-if="!menuMode">{{ <span v-if="!menuMode">{{
transformI18n(props.item.meta.title, props.item.meta.i18n) transformI18n(props.item.meta.title, props.item.meta.i18n)
}}</span> }}</span>

View File

@ -429,6 +429,7 @@ function onClickDrop(key, item, selectRoute?: RouteConfigs) {
} }
function handleCommand(command: object) { function handleCommand(command: object) {
// @ts-expect-error
const { key, item } = command; const { key, item } = command;
onClickDrop(key, item); onClickDrop(key, item);
} }
@ -663,7 +664,7 @@ const getContextMenuStyle = computed((): CSSProperties => {
<router-link :to="item.path" <router-link :to="item.path"
>{{ transformI18n(item.meta.title, item.meta.i18n) }} >{{ transformI18n(item.meta.title, item.meta.i18n) }}
</router-link> </router-link>
<el-icon <span
v-if=" v-if="
iconIsActive(item, index) || iconIsActive(item, index) ||
(index === activeIndex && index !== 0) (index === activeIndex && index !== 0)
@ -672,7 +673,7 @@ const getContextMenuStyle = computed((): CSSProperties => {
@click.stop="deleteMenu(item)" @click.stop="deleteMenu(item)"
> >
<IconifyIconOffline icon="close-bold" /> <IconifyIconOffline icon="close-bold" />
</el-icon> </span>
<div <div
:ref="'schedule' + index" :ref="'schedule' + index"
v-if="showModel !== 'card'" v-if="showModel !== 'card'"
@ -710,13 +711,13 @@ const getContextMenuStyle = computed((): CSSProperties => {
<!-- 右侧功能按钮 --> <!-- 右侧功能按钮 -->
<ul class="right-button"> <ul class="right-button">
<li> <li>
<el-icon <span
:title="t('buttons.hsrefreshRoute')" :title="t('buttons.hsrefreshRoute')"
class="el-icon-refresh-right rotate" class="el-icon-refresh-right rotate"
@click="onFresh" @click="onFresh"
> >
<IconifyIconOffline icon="refresh-right" /> <IconifyIconOffline icon="refresh-right" />
</el-icon> </span>
</li> </li>
<li> <li>
<el-dropdown <el-dropdown
@ -724,9 +725,7 @@ const getContextMenuStyle = computed((): CSSProperties => {
placement="bottom-end" placement="bottom-end"
@command="handleCommand" @command="handleCommand"
> >
<el-icon> <IconifyIconOffline icon="arrow-down" />
<IconifyIconOffline icon="arrow-down" />
</el-icon>
<template #dropdown> <template #dropdown>
<el-dropdown-menu> <el-dropdown-menu>
<el-dropdown-item <el-dropdown-item

View File

@ -609,15 +609,12 @@ body[layout="vertical"] {
} }
} }
/* 无子菜单 */ /* 有无子菜单 */
.el-sub-menu__title,
.el-menu-item [class^="el-icon"] { .el-menu-item [class^="el-icon"] {
right: 5px; right: 5px;
} }
.el-sub-menu__title [class^="el-icon"] {
right: 2px;
}
.submenu-title-noDropdown { .submenu-title-noDropdown {
background: transparent !important; background: transparent !important;
} }