UNPKG

slickgrid

Version:

A lightning fast JavaScript grid/spreadsheet

9 lines 3.4 kB
/** * SlickGrid v3.0.2 * (c) 2009-present Michael Leibman * homepage: http://github.com/mleibman/slickgrid * license: MIT * date: 2022-11-14 * file: ./plugins/slick.headermenu.js */ !function(g){g.extend(!0,window,{Slick:{Plugins:{HeaderMenu:function(m){var f,h,v,p=this,t=new Slick.EventHandler,n={buttonCssClass:null,buttonImage:null,minWidth:100,autoAlign:!0,autoAlignOffset:0};function i(e){h&&h[0]!=e.target&&!g.contains(h[0],e.target)&&a()}function a(){h&&(h.remove(),h=null,v.removeClass("slick-header-column-active"))}function o(e,t){var n=t.column,i=n.header&&n.header.menu;i&&b(m.menuUsabilityOverride,t)&&(n=g("<div></div>").addClass("slick-header-menubutton").data("column",n).data("menu",i),m.buttonCssClass&&n.addClass(m.buttonCssClass),m.buttonImage&&n.css("background-image","url("+m.buttonImage+")"),m.tooltip&&n.attr("title",m.tooltip),n.on("click",d).appendTo(t.node))}function s(e,t){var n=t.column;n.header&&n.header.menu&&g(t.node).find(".slick-header-menubutton").remove()}function d(e){var t=g(this),n=t.data("menu"),i=t.data("column"),a={grid:f,column:i,menu:n};if(0!=p.onBeforeMenuShow.notify(a,e,p)){(h=h||g("<div class='slick-header-menu' style='min-width: "+m.minWidth+"px'></div>").appendTo(f.getContainerNode())).empty();for(var o=0;o<n.items.length;o++){var s,d=n.items[o],l=b(d.itemVisibilityOverride,a),u=b(d.itemUsabilityOverride,a);l&&(Object.prototype.hasOwnProperty.call(d,"itemUsabilityOverride")&&(d.disabled=!u),l=g("<div class='slick-header-menuitem'></div>").data("command",void 0!==d.command?d.command:"").data("column",i).data("item",d).on("click",C).appendTo(h),d.divider||"divider"===d?l.addClass("slick-header-menuitem-divider"):(d.disabled&&l.addClass("slick-header-menuitem-disabled"),d.hidden&&l.addClass("slick-header-menuitem-hidden"),d.cssClass&&l.addClass(d.cssClass),d.tooltip&&l.attr("title",d.tooltip),u=g("<div class='slick-header-menuicon'></div>").appendTo(l),d.iconCssClass&&u.addClass(d.iconCssClass),d.iconImage&&u.css("background-image","url("+d.iconImage+")"),s=g("<span class='slick-header-menucontent'></span>").text(d.title).appendTo(l),d.textCssClass&&s.addClass(d.textCssClass),l=s=u=null))}var r,c=g(this).offset().left;m.autoAlign&&(r=f.getGridPosition(),c+h.width()>=r.width&&(c=c+t.outerWidth()-h.outerWidth()+m.autoAlignOffset)),h.offset({top:g(this).offset().top+g(this).height(),left:c}),(v=t.closest(".slick-header-column")).addClass("slick-header-column-active"),0!=p.onAfterMenuShow.notify(a,e,p)&&(e.preventDefault(),e.stopPropagation())}}function C(e){var t=g(this).data("command"),n=g(this).data("column"),i=g(this).data("item");i.disabled||i.divider||"divider"===i||(null!=t&&""!==t&&(n={grid:f,column:n,command:t,item:i},p.onCommand.notify(n,e,p),"function"==typeof i.action&&i.action.call(this,e,n)),e.isDefaultPrevented()||a(),e.preventDefault(),e.stopPropagation())}function b(e,t){return"function"!=typeof e||e.call(this,t)}g.extend(this,{init:function(e){m=g.extend(!0,{},n,m),f=e,t.subscribe(f.onHeaderCellRendered,o).subscribe(f.onBeforeHeaderCellDestroy,s),f.setColumns(f.getColumns()),g(document.body).on("mousedown",i)},destroy:function(){t.unsubscribeAll(),g(document.body).off("mousedown",i),h&&h.remove(),h=v=h=null},pluginName:"HeaderMenu",setOptions:function(e){m=g.extend(!0,{},m,e)},onAfterMenuShow:new Slick.Event,onBeforeMenuShow:new Slick.Event,onCommand:new Slick.Event})}}}})}(jQuery);