select.js 1.46 KB
/**
 * 选择框组件
 *
 * @author: shenzm<zhimin.shen@yoho.cn>
 * @date: 2016/07/26
 */

'use strict';

const $ = require('yoho-jquery');
const template = require('components/select.hbs');
const Overlay = require('./overlay');

function Select(items) {
    if (!$.isArray(items) || items.length === 0) {
        return;
    }

    // 初始化参数
    const tpl = template({
        items: items
    });

    // 生成模版
    const elem = $(tpl);
    const del = elem.find('.item-del');

    // 覆盖层
    const overlay = new Overlay({
        onClose: function() {
            elem.hide();
        }
    });

    $(del).click(function() {
        overlay.hide();
        elem.hide();
    });

    return {
        show: function(cb) {
            if (elem.parent().length === 0) {
                const lis = elem.find('.item-li');

                lis.each(function() {
                    $(this).click(function(e) {
                        overlay.hide();
                        elem.hide();
                        cb({
                            key: $(e.target).attr('key'),
                            val: e.target.innerHTML
                        });
                    });
                });
                elem.appendTo('body').addClass('animation-target');
            }

            overlay.show();
            elem.show();
        },
        hide: function() {
            overlay.hide();
            elem.hide();
        }
    };
}

module.exports = Select;