slickgrid
Version:
A lightning fast JavaScript grid/spreadsheet
9 lines • 1.8 kB
JavaScript
/**
* SlickGrid v3.0.2
* (c) 2009-present Michael Leibman
* homepage: http://github.com/mleibman/slickgrid
* license: MIT
* date: 2022-11-14
* file: ./plugins/slick.headerbuttons.js
*/
!function(u){u.extend(!0,window,{Slick:{Plugins:{HeaderButtons:function(i){var d,s=this,e=new Slick.EventHandler,n={buttonCssClass:"slick-header-button"};function a(t,e){var n=e.column;if(n.header&&n.header.buttons)for(var a=n.header.buttons.length;a--;){var o=n.header.buttons[a],d=r(o.itemVisibilityOverride,e),s=r(o.itemUsabilityOverride,e);d&&(Object.prototype.hasOwnProperty.call(o,"itemUsabilityOverride")&&(o.disabled=!s),d=u("<div></div>").addClass(i.buttonCssClass).data("column",n).data("button",o),o.disabled&&d.addClass("slick-header-button-disabled"),o.showOnHover&&d.addClass("slick-header-button-hidden"),o.image&&d.css("backgroundImage","url("+o.image+")"),o.cssClass&&d.addClass(o.cssClass),o.tooltip&&d.attr("title",o.tooltip),o.command&&d.data("command",o.command),o.handler&&d.on("click",o.handler),d.on("click",l).appendTo(e.node))}}function o(t,e){var n=e.column;n.header&&n.header.buttons&&u(e.node).find("."+i.buttonCssClass).remove()}function l(t){var e=u(this).data("command"),n=u(this).data("column"),a=u(this).data("button"),o={grid:d,column:n,button:a};null!=e&&(o.command=e),"function"==typeof a.action&&a.action.call(this,t,o),null==e||a.disabled||(s.onCommand.notify(o,t,s),d.updateColumnHeader(n.id)),t.preventDefault(),t.stopPropagation()}function r(t,e){return"function"!=typeof t||t.call(this,e)}u.extend(this,{init:function(t){i=u.extend(!0,{},n,i),d=t,e.subscribe(d.onHeaderCellRendered,a).subscribe(d.onBeforeHeaderCellDestroy,o),d.setColumns(d.getColumns())},destroy:function(){e.unsubscribeAll()},pluginName:"HeaderButtons",onCommand:new Slick.Event})}}}})}(jQuery);