<template>
	<view class="nav-bar" :class="{ 'nav-bar-transparent': transparent }">
		<view class="nav-bar-status" :style="{ height: statusBarHeight + 'px' }">
		</view>
		<view class="nav-bar-title" :style="{ height: titleBarHeight +'px' }">
			<template v-if="showTitle">
				<view class="btn-back" @click="goBack">
					<van-icon v-if="hasParent" name="arrow-left" />
				</view>
				<view class="nav-bar-title-text">{{ title }}</view>
				<view></view>
			</template>
			<template v-else>
				 <slot></slot>
			</template>
		</view>
	</view>
	
</template>

<script>
	export default {
		props: {
			title: String,
			transparent: Boolean,
			showTitle: {
				type: Boolean,
				default: true
			}
		},
		computed: {
			hasParent() {
				return getCurrentPages().length > 1
			}
		},
		data() {
			return {
				titleBarHeight: 0,
				statusBarHeight: 0,
				isNotchScreen: false
			}
		},
		created() {
			const windowInfo = uni.getWindowInfo()
			this.statusBarHeight = windowInfo.statusBarHeight
			const menuButtonInfo = uni.getMenuButtonBoundingClientRect()
			this.titleBarHeight = (menuButtonInfo.top - this.statusBarHeight) * 2 + menuButtonInfo.height + (windowInfo.screenWidth / 750 * 16)
			this.$emit('init', {
				detail: {
					navbarHeight: this.statusBarHeight + this.titleBarHeight,
					pageHeight: windowInfo.screenHeight - (this.statusBarHeight + this.titleBarHeight)
				}
			})
		},
		methods: {
			hasSlot() {
				const nodes = this.getRelationNodes(`view`);
				return nodes.length > 0;
			},
			goBack() {
				uni.navigateBack()
			}
		}
	}
</script>

<style lang="scss">
	.nav-bar {
		background: linear-gradient( 270deg, #2b2359 9%, #405491 44%, #2b2359 92%), rgba(0,0,0,0.2);
		&.nav-bar-transparent{
			background: none;
			.nav-bar-title{
				view{
					color: #333333;
				}
			}
		}
		.nav-bar-title{
			display: flex;
			justify-content: space-between;
			align-items: center;
			padding: 0 32rpx;
			view{
				color: #ffffff;
			}
		}
		.nav-bar-title-text{
			flex: 1;
			font-weight: 500;
			font-size: $fontSize6;
			line-height: 42rpx;
			text-align: left;
			text-transform: none;
			padding-left: 8rpx;
		}
		.btn-back{
			padding: 0 6rpx;
		}
	}
</style>