<template>
	<view class="view-popup">
		<!-- #ifdef MP-WEIXIN -->
		<view v-if="nav" style="width: 100%;background-color: #fff;" :style="{height: height + 'px'}"></view>
		<!-- #endif -->
		<!-- #ifndef MP-WEIXIN -->
		<view v-if="nav" style="width: 100%;height: calc( var(--status-bar-height) + 44px );background-color: #fff;">
		</view>
		<!-- #endif -->
		<view class="center">
			<slot></slot>
			<view class="up" @click="close">
				<text>点击收起</text>
				<up-icon name="arrow-up"></up-icon>
			</view>
		</view>
	</view>
</template>

<script setup>
	import {
		ref
	} from "vue"

	const props = defineProps({
		nav: {
			type: Boolean,
			default: false
		},
		show: {
			type: Boolean,
			default: false
		}
	})

	const emit = defineEmits(['close', 'click'])
	const close = () => {
		emit('close')
	}

	// #ifdef MP-WEIXIN
	const height = ref(0);
	uni.getSystemInfo({
		success: (res) => {
			// 获取手机顶部状态栏的高度
			const statusBarHeight = res.statusBarHeight || 0;

			// 获取导航栏的高度(手机状态栏高度 + 胶囊高度 + 胶囊的上下间距)
			const menuButtonInfo = uni.getMenuButtonBoundingClientRect();
			const navBarHeight = menuButtonInfo.height + (menuButtonInfo.top - statusBarHeight) * 2;

			// 计算顶部图标距离
			const topIconDistance = statusBarHeight + navBarHeight;

			// 打印顶部图标距离
			console.log('顶部图标距离:', topIconDistance);
			height.value = topIconDistance;
		},
		fail: (err) => {
			console.error('获取系统信息失败:', err);
		},
	});
	// #endif
</script>

<style scoped lang="scss">
	.view-popup {
		height: 100vh;
		width: 100%;
		background-color: rgba(#000, 0.3);
		position: absolute;
		top: 0;
		left: 0;
		z-index: 11;

		.center {
			animation: slideDown 0.3s forwards;
		}

		.up {
			width: 100%;
			height: 80rpx;
			background-color: #fff;
			border-radius: 0 0 28rpx 28rpx;
			border-top: 1rpx solid #f6f6f6;
			display: flex;
			justify-content: center;
			align-items: center;
			font-size: 24rpx;
		}
	}

	@keyframes slideDown {
		from {
			transform: translateY(-100%);
			/* 初始状态:向上偏移100% */
		}

		to {
			transform: translateY(0);
			/* 最终状态:无偏移 */
		}
	}
</style>