119 lines
2.6 KiB
Vue
Raw Normal View History

2022-01-06 13:45:51 +08:00
<template>
2022-01-08 21:01:52 +08:00
<ContentBox
class="go-content-charts"
:class="{ scoped: !getCharts }"
2022-01-12 10:41:26 +08:00
title="组件"
2022-01-11 20:56:19 +08:00
:depth="1"
:backIcon="false"
2022-01-08 21:01:52 +08:00
>
<template #icon>
<n-icon size="14" :depth="2">
2022-01-12 10:41:26 +08:00
<BarChartIcon />
2022-01-08 21:01:52 +08:00
</n-icon>
</template>
2022-01-11 20:56:19 +08:00
<!-- 图表 -->
<aside>
<div class="menu-width-box">
<n-menu
class="menu-width"
v-model:value="selectValue"
:options="menuOptions"
:icon-size="16"
:indent="18"
@update:value="clickItemHandle"
/>
<div class="menu-component-box">
2022-01-14 22:07:02 +08:00
<Skeleton
:load="!selectOptions"
round
text
:repeat="2"
style="width: 90%;"
/>
2022-01-14 22:18:47 +08:00
<OptionContent
v-if="selectOptions"
:selectOptions="selectOptions"
:key="selectValue"
/>
2022-01-11 20:56:19 +08:00
</div>
</div>
</aside>
2022-01-06 13:45:51 +08:00
</ContentBox>
</template>
<script setup lang="ts">
2022-01-13 16:20:25 +08:00
import { reactive, ref, toRefs } from 'vue'
2022-01-06 13:45:51 +08:00
import { ContentBox } from '../ContentBox/index'
2022-01-14 22:07:02 +08:00
import { OptionContent } from './components/OptionContent'
2022-01-14 16:17:14 +08:00
import {
getCharts,
BarChartIcon,
themeColor,
2022-01-14 22:07:02 +08:00
selectOptions,
2022-01-14 16:17:14 +08:00
selectValue,
clickItemHandle,
menuOptions
} from './hooks/asideHook'
2022-01-06 13:45:51 +08:00
</script>
<style lang="scss" scoped>
2022-01-12 10:41:26 +08:00
/* 整体宽度 */
2022-01-14 16:17:14 +08:00
$width: 330px;
2022-01-12 10:41:26 +08:00
/* 列表的宽度 */
$widthScoped: 65px;
2022-01-11 20:56:19 +08:00
/* 此高度与 ContentBox 组件关联*/
$topHeight: 36px;
2022-01-12 10:41:26 +08:00
2022-01-06 13:45:51 +08:00
@include go(content-charts) {
2022-01-11 20:56:19 +08:00
width: $width;
2022-01-08 21:01:52 +08:00
@extend .go-transition;
2022-01-11 20:56:19 +08:00
&.scoped,
.menu-width {
width: $widthScoped;
}
.menu-width-box {
display: flex;
height: calc(100vh - #{$--header-height} - #{$topHeight});
.menu-width {
2022-01-13 16:20:25 +08:00
flex-shrink: 0;
2022-01-13 18:01:33 +08:00
@include filter-bg-color('background-color2');
2022-01-11 20:56:19 +08:00
}
.menu-component-box {
2022-01-13 16:20:25 +08:00
flex-shrink: 0;
2022-01-11 20:56:19 +08:00
width: $width - $widthScoped;
overflow: hidden;
}
}
@include deep() {
2022-01-13 16:20:25 +08:00
.menu-width {
.n-menu-item {
height: auto !important;
&.n-menu-item--selected {
&::after {
content: '';
position: absolute;
left: 2px;
top: 0;
height: 100%;
width: 3px;
background-color: v-bind('themeColor');
border-top-right-radius: 3px;
border-bottom-right-radius: 3px;
}
}
.n-menu-item-content {
display: flex;
flex-direction: column;
padding: 6px 12px !important;
2022-01-14 16:17:14 +08:00
font-size: 14px !important;
2022-01-13 16:20:25 +08:00
}
.n-menu-item-content__icon {
font-size: 18px !important;
margin-right: 0 !important;
2022-01-12 10:41:26 +08:00
}
}
2022-01-11 20:56:19 +08:00
}
2022-01-08 21:01:52 +08:00
}
2022-01-06 13:45:51 +08:00
}
</style>