JAVASCRIPT   9

menu.js

Guest on 25th July 2021 04:18:55 PM

  1.  
  2. // create KMenu class
  3. function KMenu(options) {
  4.         this.init(options);
  5. }
  6. _extend(KMenu, KWidget, {
  7.         init : function(options) {
  8.                 var self = this;
  9.                 options.z = options.z || 811213;
  10.                 KMenu.parent.init.call(self, options);
  11.                 self.centerLineMode = _undef(options.centerLineMode, true);
  12.                 self.div.addClass('ke-menu').bind('click,mousedown', function(e){
  13.                         e.stopPropagation();
  14.                 }).attr('unselectable', 'on');
  15.         },
  16.         addItem : function(item) {
  17.                 var self = this;
  18.                 if (item.title === '-') {
  19.                         self.div.append(K('<div class="ke-menu-separator"></div>'));
  20.                         return;
  21.                 }
  22.                 var itemDiv = K('<div class="ke-menu-item" unselectable="on"></div>'),
  23.                         leftDiv = K('<div class="ke-inline-block ke-menu-item-left"></div>'),
  24.                         rightDiv = K('<div class="ke-inline-block ke-menu-item-right"></div>'),
  25.                         height = _addUnit(item.height),
  26.                         iconClass = _undef(item.iconClass, '');
  27.                 self.div.append(itemDiv);
  28.                 if (height) {
  29.                         itemDiv.css('height', height);
  30.                         rightDiv.css('line-height', height);
  31.                 }
  32.                 var centerDiv;
  33.                 if (self.centerLineMode) {
  34.                         centerDiv = K('<div class="ke-inline-block ke-menu-item-center"></div>');
  35.                         if (height) {
  36.                                 centerDiv.css('height', height);
  37.                         }
  38.                 }
  39.                 itemDiv.mouseover(function(e) {
  40.                         K(this).addClass('ke-menu-item-on');
  41.                         if (centerDiv) {
  42.                                 centerDiv.addClass('ke-menu-item-center-on');
  43.                         }
  44.                 })
  45.                 .mouseout(function(e) {
  46.                         K(this).removeClass('ke-menu-item-on');
  47.                         if (centerDiv) {
  48.                                 centerDiv.removeClass('ke-menu-item-center-on');
  49.                         }
  50.                 })
  51.                 .click(function(e) {
  52.                         item.click.call(K(this));
  53.                         e.stopPropagation();
  54.                 })
  55.                 .append(leftDiv);
  56.                 if (centerDiv) {
  57.                         itemDiv.append(centerDiv);
  58.                 }
  59.                 itemDiv.append(rightDiv);
  60.                 if (item.checked) {
  61.                         iconClass = 'ke-icon-checked';
  62.                 }
  63.                 if (iconClass !== '') {
  64.                         leftDiv.html('<span class="ke-inline-block ke-toolbar-icon ke-toolbar-icon-url ' + iconClass + '"></span>');
  65.                 }
  66.                 rightDiv.html(item.title);
  67.                 return self;
  68.         },
  69.         remove : function() {
  70.                 var self = this;
  71.                 if (self.options.beforeRemove) {
  72.                         self.options.beforeRemove.call(self);
  73.                 }
  74.                 K('.ke-menu-item', self.div[0]).unbind();
  75.                 KMenu.parent.remove.call(self);
  76.                 return self;
  77.         }
  78. });
  79.  
  80. function _menu(options) {
  81.         return new KMenu(options);
  82. }
  83.  
  84. K.MenuClass = KMenu;
  85. K.menu = _menu;

Raw Paste


Login or Register to edit or fork this paste. It's free.