<template>
	
	<view class="search-content ss-flex ss-col-center ss-row-between" @tap="click" :style="[
      {
        borderRadius: radius + 'px',
        background: elBackground,
        height: height + 'px',
        width: width,
      },
    ]" :class="[{ 'border-content': navbar }]">
	
		<view class="ss-flex ss-col-center" v-if="navbar">
			<view class="search-icon _icon-search ss-m-l-10" :style="[{ color: props.iconColor }]"></view>
			<view class="search-input ss-flex-1 ss-line-1" :style="[{ color: fontColor, width: width }]">
				{{ placeholder }} 
			</view>
		</view>
		
		<uni-search-bar v-if="!navbar" class="ss-flex-1" :radius="data.borderRadius" :placeholder="data.placeholder"
			cancelButton="none" clearButton="none" @confirm="onSearch" v-model="state.searchVal" />
			
		<view class="keyword-link ss-flex">
			<view v-for="(item, index) in data.hotKeywords" :key="index">
				<view class="ss-m-r-16" :style="[{ color: data.textColor }]"
					@tap.stop="sheep.$router.go('/pages/goods/list', { keyword: item })">{{ item }}</view>
			</view>
		</view>
		<view v-if="data.hotKeywords && data.hotKeywords.length && navbar" class="ss-flex">
			<button class="ss-reset-button keyword-btn" v-for="(item, index) in data.hotKeywords" :key="index"
				:style="[{ color: data.textColor, marginRight: '10rpx' }]">
				{{ item }}
			</button>
			
		</view>
	</view>
</template>

<script setup>
	/**
	 * 基础组件 - 搜索栏
	 *
	 * @property {String} elBackground 			- 输入框背景色
	 * @property {String} iconColor 			- 图标颜色
	 * @property {String} fontColor 		  	- 字体颜色
	 * @property {Number} placeholder 			- 默认placeholder
	 * @property {Number} topRadius 			- 组件上圆角
	 * @property {Number} bottomRadius 			- 组件下圆角
	 *
	 * @slot keywords							- 关键字
	 * @event {Function} click 					- 点击组件时触发
	 */

	import {
		computed,
		reactive
	} from 'vue';
	import sheep from '@/sheep';

	// 组件数据
	const state = reactive({
		searchVal: '',
	});

	// 事件页面
	const emits = defineEmits(['click']);
	
	// 接收参数
	const props = defineProps({
		data: {
			type: Object,
			default: () => ({}),
		},
		// 输入框背景色
		elBackground: {
			type: String,
			default: '',
		},
		height: {
			type: Number,
			default: 36,
		},
		// 图标颜色
		iconColor: {
			type: String,
			default: '#b0b3bf',
		},
		// 字体颜色
		fontColor: {
			type: String,
			default: '#b0b3bf',
		},
		// placeholder
		placeholder: {
			type: String,
			default: '这是一个搜索框',
		},
		radius: {
			type: Number,
			default: 10,
		},
		width: {
			type: String,
			default: '100%',
		},
		navbar: {
			type: Boolean,
			default: true,
		},
	});
	
	// 点击
	const click = () => {
		emits('click');
	};

	function onSearch(e) {
		if (e.value) {
			sheep.$router.go('/pages/goods/list', {
				keyword: e.value
			});
			setTimeout(() => {
				state.searchVal = '';
			}, 100);
		}
	}
</script>

<style lang="scss" scoped>
	.border-content {
		border: 2rpx solid #eee;
	}

	.search-content {
		flex: 1;
		// height: 80rpx;
		position: relative;

		.search-icon {
			font-size: 38rpx;
			margin-right: 20rpx;
		}

		.keyword-link {
			position: absolute;
			right: 16rpx;
			top: 18rpx;
		}

		.search-input {
			font-size: 28rpx;
		}
	}
</style>