The source code

    /**
     * @ignore
     * filter menu render
     * 1.create filter input
     * 2.change menu contentelement
     * @author yiminghe@gmail.com
     */
    KISSY.add("menu/filtermenu-render", function (S, Node, MenuRender) {
        var $ = Node.all,
            MENU_FILTER = "menu-filter",
            MENU_FILTER_LABEL = "menu-filter-label",
            MENU_CONTENT = "menu-content";

        return MenuRender.extend({
            getContentElement:function () {
                return this.get("menuContent");
            },

            getKeyEventTarget:function () {
                return this.get("filterInput");
            },
            createDom:function () {
                var self = this;
                var prefixCls=self.get('prefixCls');
                var contentEl = MenuRender.prototype.getContentElement.call(this);
                var filterWrap = self.get("filterWrap");
                if (!filterWrap) {
                    self.set("filterWrap",
                        filterWrap = $("<div class='" + prefixCls+MENU_FILTER + "'/>")
                            .appendTo(contentEl, undefined));
                }
                if (!this.get("labelEl")) {
                    this.set("labelEl",
                        $("<div class='" + prefixCls+MENU_FILTER_LABEL + "'/>")
                            .appendTo(filterWrap, undefined));
                }
                if (!self.get("filterInput")) {
                    self.set("filterInput", $("<input "+"autocomplete='off'/>")
                        .appendTo(filterWrap, undefined));
                }
                if (!self.get("menuContent")) {
                    self.set("menuContent",
                        $("<div class='" + prefixCls+MENU_CONTENT + "'/>")
                            .appendTo(contentEl, undefined));
                }
            },

            '_onSetLabel':function (v) {
                this.get("labelEl").html(v);
            }
        }, {

            ATTRS:{
                /* 过滤输入框的提示 */
                label:{}
            },

            HTML_PARSER:{
                labelEl:function (el) {
                    return el.one("." + this.get('prefixCls')+MENU_FILTER)
                        .one("." + this.get('prefixCls')+MENU_FILTER_LABEL)
                },
                filterWrap:function (el) {
                    return el.one("." + this.get('prefixCls')+MENU_FILTER);
                },
                menuContent:function (el) {
                    return el.one("." + this.get('prefixCls')+MENU_CONTENT);
                },
                filterInput:function (el) {
                    return el.one("." + this.get('prefixCls')+MENU_FILTER)
                        .one("input");
                }
            }
        });

    }, {
        requires:['node', './menu-render']
    });