JAVASCRIPT   8

toolbar.js

Guest on 25th July 2021 04:23:59 PM

  1.  
  2. function _selectToolbar(name, fn) {
  3.         var self = this,
  4.                 knode = self.get(name);
  5.         if (knode) {
  6.                 if (knode.hasClass('ke-disabled')) {
  7.                         return;
  8.                 }
  9.                 fn(knode);
  10.         }
  11. }
  12.  
  13. // create KToolbar class
  14. function KToolbar(options) {
  15.         this.init(options);
  16. }
  17. _extend(KToolbar, KWidget, {
  18.         init : function(options) {
  19.                 var self = this;
  20.                 KToolbar.parent.init.call(self, options);
  21.                 self.disableMode = _undef(options.disableMode, false);
  22.                 self.noDisableItemMap = _toMap(_undef(options.noDisableItems, []));
  23.                 self._itemMap = {};
  24.                 self.div.addClass('ke-toolbar').bind('contextmenu,mousedown,mousemove', function(e) {
  25.                         e.preventDefault();
  26.                 }).attr('unselectable', 'on');
  27.                 function find(target) {
  28.                         var knode = K(target);
  29.                         if (knode.hasClass('ke-outline')) {
  30.                                 return knode;
  31.                         }
  32.                         if (knode.hasClass('ke-toolbar-icon')) {
  33.                                 return knode.parent();
  34.                         }
  35.                 }
  36.                 function hover(e, method) {
  37.                         var knode = find(e.target);
  38.                         if (knode) {
  39.                                 if (knode.hasClass('ke-disabled')) {
  40.                                         return;
  41.                                 }
  42.                                 if (knode.hasClass('ke-selected')) {
  43.                                         return;
  44.                                 }
  45.                                 knode[method]('ke-on');
  46.                         }
  47.                 }
  48.                 self.div.mouseover(function(e) {
  49.                         hover(e, 'addClass');
  50.                 })
  51.                 .mouseout(function(e) {
  52.                         hover(e, 'removeClass');
  53.                 })
  54.                 .click(function(e) {
  55.                         var knode = find(e.target);
  56.                         if (knode) {
  57.                                 if (knode.hasClass('ke-disabled')) {
  58.                                         return;
  59.                                 }
  60.                                 self.options.click.call(this, e, knode.attr('data-name'));
  61.                         }
  62.                 });
  63.         },
  64.         get : function(name) {
  65.                 // cache
  66.                 if (this._itemMap[name]) {
  67.                         return this._itemMap[name];
  68.                 }
  69.                 return (this._itemMap[name] = K('span.ke-icon-' + name, this.div).parent());
  70.         },
  71.         select : function(name) {
  72.                 _selectToolbar.call(this, name, function(knode) {
  73.                         knode.addClass('ke-selected');
  74.                 });
  75.                 return self;
  76.         },
  77.         unselect : function(name) {
  78.                 _selectToolbar.call(this, name, function(knode) {
  79.                         knode.removeClass('ke-selected').removeClass('ke-on');
  80.                 });
  81.                 return self;
  82.         },
  83.         enable : function(name) {
  84.                 var self = this,
  85.                         knode = name.get ? name : self.get(name);
  86.                 if (knode) {
  87.                         knode.removeClass('ke-disabled');
  88.                         knode.opacity(1);
  89.                 }
  90.                 return self;
  91.         },
  92.         disable : function(name) {
  93.                 var self = this,
  94.                         knode = name.get ? name : self.get(name);
  95.                 if (knode) {
  96.                         knode.removeClass('ke-selected').addClass('ke-disabled');
  97.                         knode.opacity(0.5);
  98.                 }
  99.                 return self;
  100.         },
  101.         disableAll : function(bool, noDisableItems) {
  102.                 var self = this, map = self.noDisableItemMap, item;
  103.                 if (noDisableItems) {
  104.                         map = _toMap(noDisableItems);
  105.                 }
  106.                 // disable toolbar
  107.                 if (bool === undefined ? !self.disableMode : bool) {
  108.                         K('span.ke-outline', self.div).each(function() {
  109.                                 var knode = K(this),
  110.                                         name = knode[0].getAttribute('data-name', 2);
  111.                                 if (!map[name]) {
  112.                                         self.disable(knode);
  113.                                 }
  114.                         });
  115.                         self.disableMode = true;
  116.                 // enable toolbar
  117.                 } else {
  118.                         K('span.ke-outline', self.div).each(function() {
  119.                                 var knode = K(this),
  120.                                         name = knode[0].getAttribute('data-name', 2);
  121.                                 if (!map[name]) {
  122.                                         self.enable(knode);
  123.                                 }
  124.                         });
  125.                         self.disableMode = false;
  126.                 }
  127.                 return self;
  128.         }
  129. });
  130.  
  131. function _toolbar(options) {
  132.         return new KToolbar(options);
  133. }
  134.  
  135. K.ToolbarClass = KToolbar;
  136. K.toolbar = _toolbar;

Raw Paste


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