<template>
|
<NavBar v-bind="props" dark class="transparent-navigation-bar" :style="wrapperStyle">
|
<div :class="['common-navigation-bar-wrapper', { dark: mode == 'dark' }]" :style="barStyle">
|
<slot name="left">
|
<div
|
class="menu-btn-wrapper"
|
v-if="(!isLastPage || !isTabbarPage) && showLeftArrow"
|
@click="goBack()"
|
>
|
<img v-if="props.navigationArrowWhite" class="menu-btn" :src="IconArrowWhite" />
|
<img v-else class="menu-btn" :src="IconArrow" />
|
</div>
|
</slot>
|
<span class="common-navigation-bar-title">{{ title }}</span>
|
</div>
|
</NavBar>
|
</template>
|
|
<script setup lang="ts">
|
import NavBar from './NavBar.vue';
|
import { commonNavigationBarProps } from './commonNavigationBar';
|
import { useSystemStore } from '@/stores/modules/system';
|
import { CSSProperties } from 'vue';
|
import IconArrow from '@/assets/common/icon-navi-arrow.png';
|
import IconArrowWhite from '@/assets/common/icon-navi-arrow-white.png';
|
import Taro from '@tarojs/taro';
|
import { goBack } from '@/utils';
|
import { TabBarPageRouterForCheck } from '@/constants';
|
|
defineOptions({
|
name: 'TransparentNavigationBar',
|
});
|
|
const systemStore = useSystemStore();
|
|
const props = defineProps(commonNavigationBarProps);
|
|
const router = Taro.useRouter();
|
console.log('router: ', router);
|
|
const isLastPage = computed(() => {
|
const pages = Taro.getCurrentPages();
|
return pages.length <= 1;
|
});
|
|
const isTabbarPage = computed(() =>
|
Object.values(TabBarPageRouterForCheck).some((x) =>
|
router.path.toLowerCase().includes(x.toLowerCase())
|
)
|
);
|
|
const barStyle = computed(() => {
|
const distance = systemStore.menuButtonWidth + systemStore.menuButtonRightDistance + 4;
|
return {
|
paddingLeft: `${distance}px`,
|
paddingRight: `${distance}px`,
|
height: systemStore.navigationBarHeight + 'px',
|
} as CSSProperties;
|
});
|
|
const wrapperStyle = computed(() => {
|
return props.isAbsolute
|
? ({
|
position: 'absolute',
|
} as CSSProperties)
|
: {};
|
});
|
</script>
|
|
<style lang="scss">
|
.transparent-navigation-bar.navigation-bar-wrapper {
|
background-color: transparent;
|
/* position: absolute; */
|
width: 100%;
|
|
.common-navigation-bar-title {
|
height: 36px;
|
}
|
}
|
</style>
|