1 /**
  2  * @fileOverview filter menu render
  3  * 1.create filter input
  4  * 2.change menu contentelement
  5  * @author yiminghe@gmail.com
  6  */
  7 KISSY.add("menu/filtermenuRender", function (S, Node, MenuRender) {
  8     var $ = Node.all,
  9         MENU_FILTER = "ks-menu-filter",
 10         MENU_FILTER_LABEL = "ks-menu-filter-label",
 11         MENU_CONTENT = "ks-menu-content";
 12 
 13     return MenuRender.extend({
 14         getContentElement:function () {
 15             return this.get("menuContent");
 16         },
 17 
 18         getKeyEventTarget:function () {
 19             return this.get("filterInput");
 20         },
 21         createDom:function () {
 22             var self = this;
 23             var contentEl = MenuRender.prototype.getContentElement.call(this);
 24             var filterWrap = self.get("filterWrap");
 25             if (!filterWrap) {
 26                 self.set("filterWrap",
 27                     filterWrap = $("<div class='" + MENU_FILTER + "'/>")
 28                         .appendTo(contentEl, undefined));
 29             }
 30             if (!this.get("labelEl")) {
 31                 this.set("labelEl",
 32                     $("<div class='" + MENU_FILTER_LABEL + "'/>")
 33                         .appendTo(filterWrap, undefined));
 34             }
 35             if (!self.get("filterInput")) {
 36                 self.set("filterInput", $("<input autocomplete='off'/>")
 37                     .appendTo(filterWrap, undefined));
 38             }
 39             if (!self.get("menuContent")) {
 40                 self.set("menuContent",
 41                     $("<div class='" + MENU_CONTENT + "'/>")
 42                         .appendTo(contentEl, undefined));
 43             }
 44         },
 45 
 46         _uiSetLabel:function (v) {
 47             this.get("labelEl").html(v);
 48         }
 49     }, {
 50 
 51         ATTRS:{
 52             /* 过滤输入框的提示 */
 53             label:{}
 54         },
 55 
 56         HTML_PARSER:{
 57             labelEl:function (el) {
 58                 return el.one("." + MENU_FILTER).one("." + MENU_FILTER_LABEL)
 59             },
 60             filterWrap:function (el) {
 61                 return el.one("." + MENU_FILTER);
 62             },
 63             menuContent:function (el) {
 64                 return el.one("." + MENU_CONTENT);
 65             },
 66             filterInput:function (el) {
 67                 return el.one("." + MENU_FILTER).one("input");
 68             }
 69         }
 70     });
 71 
 72 }, {
 73     requires:['node', './menuRender']
 74 });