<template>
    <view :class="['flex search-box',isFocus||searchVal?'search-focus':'']">
        <image 
            class="search-icon" 
            :src="isFocus||searchVal?'../../static/search-icon-s.png':'../../static/search-icon.png'" 
            mode="aspectFill"
        />
        <input 
            type="text" 
            :maxlength="-1"
            v-model="searchVal" 
            :placeholder="placeholder" 
            :focus="isFocus" 
            @focus="handelFocus"
            @blur="handelBlur"
            @confirm="handleSearch"
            @input="handleInput"
            confirm-type="search"
            :disabled="disabled"
        />
        <image 
            class="search-clear" 
            src="../../static/search-del.png" 
            mode="aspectFill"
            v-if="searchVal"
            @click="handleClearSearch"
        />
        <view class="right-btn" v-if="hasRightBtn&&searchVal" @click="handleSearch">搜索</view>
    </view>
</template>

<script>
export default {
    props: {
        hasRightBtn:{
            type:Boolean,
            default:true
        },
        placeholder:{
            type:String,
            default:'请输入搜索关键词'
        },
        focus:{
            type:Boolean,
            default:false
        },
        disabled:{
            type:Boolean,
            default:false
        }
    },
    data () {
        return {
            searchVal:'',
            isFocus:this.focus
        }
    },
    methods: {
        handleClearSearch(){
            this.searchVal=''
            this.$emit('change',this.searchVal)
            this.$emit('search')
        },

        handleInput(){
            this.$emit('change',this.searchVal)
        },

        handelFocus(){
            this.isFocus=true
        },

        handelBlur(){
            this.isFocus=false
        },

        handleSearch(){
            this.$emit('search')
        }
    }
}
</script>

<style lang="scss" scoped>
.search-box{
    border: 1px solid #E5E5E5;
    align-items: center;
    background-color: #F6F6F6;
    border-radius: 43rpx;
    padding: 0 30rpx;
    height: 70rpx;
    .search-icon{
        width: 48rpx;
        height: 48rpx;
        flex-shrink: 0;
        margin-right: 5rpx;
    }
    input{
        flex: 1;
    }
    .search-clear{
        width: 40rpx;
        height: 40rpx;
        flex-shrink: 0;
        margin-left: 5rpx;
        margin-right: 20rpx;
    }
    .right-btn{
        font-size: 28rpx;
        color: #E3B377;
        flex-shrink: 0;
        border-left: 1px solid #999999;
        padding-left: 20rpx;
    }
}
.search-focus{
    border-color: #E3B377;
    background-color: #fff;
}
</style>