<template>
	<view v-if="!hideNavbar" 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 {
				hideNavbar: false,
				titleBarHeight: 0,
				statusBarHeight: 0,
				isNotchScreen: false
			}
		},
		created() {
			const self = this
			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)
			if (this.showTitle) {
				uni.getSystemInfo({
					success(res) {
						const os = res.system.toLowerCase()
						self.$config.os = os
						if (os.includes('windows') || os.includes('mac')) {
							// 可在pc端隐藏导航
							self.$emit('init', {
								detail: {
									navbarHeight: 0,
									pageHeight: windowInfo.screenHeight
								}
							})
							self.hideNavbar = true
							
							// self.statusBarHeight = 0
							// self.titleBarHeight = (windowInfo.screenWidth / 750 * 100)
							// self.$emit('init', {
							// 	detail: {
							// 		navbarHeight: (windowInfo.screenWidth / 750 * 100),
							// 		pageHeight: windowInfo.screenHeight -  (windowInfo.screenWidth / 750 * 100)
							// 	}
							// })
						}
					}
				})
			} else {
				uni.getSystemInfo({
					success(res) {
						const os = res.system.toLowerCase()
						self.$config.os = os
						if (os.includes('windows') || os.includes('mac')) {
							self.statusBarHeight = 0
							self.titleBarHeight = (windowInfo.screenWidth / 750 * 120)
							self.$emit('init', {
								detail: {
									navbarHeight: (windowInfo.screenWidth / 750 * 120),
									pageHeight: windowInfo.screenHeight -  (windowInfo.screenWidth / 750 * 120)
								}
							})
						}
					}
				})
			}
			this.$emit('init', {
				detail: {
					navbarHeight: self.hideNavbar ? 0 : (this.statusBarHeight + this.titleBarHeight),
					pageHeight: windowInfo.screenHeight - (self.hideNavbar ? 0 : (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;
			cursor: pointer;
		}
	}
</style>