/*
 * title: search-input
 * @author 王飞腾
 * date: 2018/12/22
*/
layui.define(['jquery'],function(extend){
    var $ = layui.jquery;

    var map = new Map();

    //  暴露接口
    extend('searchInput',function(options){
        //  搜索框
        var $input = options.searchInput;
        //  搜索接口列表
        var $searchList = options.searchList;

        //  渲染数据
        var renderingFn = function(list,resultMap){
            $searchList.html('');
            if (list.length > 0){
                //  显示列表
                list.forEach(function(item){
                    map.set(item[resultMap.id].toString(),item);
                    var htmlText = '<dd lay-value="' + item[resultMap.id] + '" class="">' + item[resultMap.name] + '</dd>';
                    $searchList.append(htmlText);
                });
            }else {
                $searchList.append('<dd lay-value="" class="">' + "暂无相关数据" + '</dd>');
            }
            // //  显示列表
            // list.length > 0 ? $searchList.show() : $searchList.hide();
        };

        //  输入检索
        $input.on('input propertychange',function () {
            var text = $(this).val();
            if (text){
                //  请求数据回调
                options.getDataFn(text,renderingFn);
            }
        });

        //  选中事件
        $searchList.on('click','dd',function () {
            var $this = $(this);
            //  选中自己
            $this.addClass('layui-this').siblings().removeClass('layui-this');
            var id = $this.attr('lay-value');
            //  执行下拉选中回调
            options.selectedFn(map.get(id));
            $searchList.hide();
        });

        $input.on('focus',function () {
            // if ($(this).val()) {
            //     $searchList.show();
            // }
            var text = $(this).val();
            //如果为空则请求后台
            if (!text){
                options.getDataFn(text,renderingFn);
            }
            $searchList.show();
        });

        $input.on('blur',function () {
            setTimeout(()=>{
                $searchList.hide();
            },150)
        });
    });

});