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 });