UNPKG

slickgrid

Version:

A lightning fast JavaScript grid/spreadsheet

9 lines 4.11 kB
/** * SlickGrid v3.0.2 * (c) 2009-present Michael Leibman * homepage: http://github.com/mleibman/slickgrid * license: MIT * date: 2022-11-14 * file: ./controls/slick.columnpicker.js */ !function(y){"use strict";y.extend(!0,window,{Slick:{Controls:{ColumnPicker:function(r,e,n){var o,u,s,a,d=e,m=n,p=e&&e.getUID?e.getUID():"",t=new Slick.Event,k={fadeSpeed:250,hideForceFitButton:!1,hideSyncResizeButton:!1,forceFitTitle:"Force fit columns",syncResizeTitle:"Synchronous resize",headerColumnValueExtractor:function(e){return e.name}};function c(e){e.onHeaderContextMenu.subscribe(h),e.onColumnsReordered.subscribe(f),m=y.extend({},k,n),s=y("<div class='slick-columnpicker "+p+"' style='display:none' />").appendTo(document.body),y("<button type='button' class='close' data-dismiss='slick-columnpicker' aria-label='Close'><span class='close' aria-hidden='true'>&times;</span></button>").appendTo(s),(m.columnPickerTitle||m.columnPicker&&m.columnPicker.columnTitle)&&(e=m.columnPickerTitle||m.columnPicker.columnTitle,(o=y("<div class='title'/>").append(e)).appendTo(s)),s.on("click",g),u=y("<span class='slick-columnpicker-list' />"),y(document.body).on("mousedown",l),y(window).on("beforeunload",i)}function i(){d.onHeaderContextMenu.unsubscribe(h),d.onColumnsReordered.unsubscribe(f),u&&u.remove(),s&&s.off("click").remove(),y(document.body).off("mousedown",l),y(".slick-columnpicker."+p).hide(m&&m.columnPicker&&m.columnPicker.fadeSpeed),s=u=o=null,y(window).off("beforeunload")}function l(e){(s&&s[0]!=e.target&&!y.contains(s[0],e.target)||"close"==e.target.className)&&s.hide(m&&m.columnPicker&&m.columnPicker.fadeSpeed)}function h(e){var n,o;e.preventDefault(),u.empty(),f(),a=[];for(var c,t,i,l=0;l<r.length;l++)n=r[l].id,o=r[l].excludeFromColumnPicker?"hidden":"",c=y('<li class="'+o+'" />').appendTo(u),t=y("<input type='checkbox' id='"+p+"colpicker-"+n+"' />").data("column-id",n).appendTo(c),a.push(t),null!=d.getColumnIndex(n)&&t.attr("checked","checked"),o=(m&&m.columnPicker&&m.columnPicker.headerColumnValueExtractor?m.columnPicker:k).headerColumnValueExtractor(r[l],m),y("<label for='"+p+"colpicker-"+n+"' />").html(o).appendTo(c);!m.columnPicker||m.columnPicker.hideForceFitButton&&m.columnPicker.hideSyncResizeButton||y("<hr/>").appendTo(u),m.columnPicker&&m.columnPicker.hideForceFitButton||(i=m.columnPicker&&m.columnPicker.forceFitTitle||m.forceFitTitle,c=y("<li />").appendTo(u),t=y("<input type='checkbox' id='"+p+"colpicker-forcefit' />").data("option","autoresize").appendTo(c),y("<label for='"+p+"colpicker-forcefit' />").text(i).appendTo(c),d.getOptions().forceFitColumns&&t.attr("checked","checked")),m.columnPicker&&m.columnPicker.hideSyncResizeButton||(i=m.columnPicker&&m.columnPicker.syncResizeTitle||m.syncResizeTitle,c=y("<li />").appendTo(u),t=y("<input type='checkbox' id='"+p+"colpicker-syncresize' />").data("option","syncresize").appendTo(c),y("<label for='"+p+"colpicker-syncresize' />").text(i).appendTo(c),d.getOptions().syncColumnCellResize&&t.attr("checked","checked")),s.css("top",e.pageY-10).css("left",e.pageX-10).css("max-height",y(window).height()-e.pageY-10).fadeIn(m&&m.columnPicker&&m.columnPicker.fadeSpeed),u.appendTo(s),c=null}function f(){for(var e=d.getColumns().slice(0),n=new Array(r.length),o=0;o<n.length;o++)void 0===d.getColumnIndex(r[o].id)?n[o]=r[o]:n[o]=e.shift();r=n}function g(e){var n,o,c;"autoresize"==y(e.target).data("option")?(o=C(),n=e.target.checked,d.setOptions({forceFitColumns:n}),d.setColumns(o)):"syncresize"==y(e.target).data("option")?e.target.checked?d.setOptions({syncColumnCellResize:!0}):d.setOptions({syncColumnCellResize:!1}):y(e.target).is(":checkbox")&&(n=e.target.checked,o=y(e.target).data("column-id")||"",c=[],y.each(a,function(e){y(this).is(":checked")&&c.push(r[e])}),c.length?(d.setColumns(c),t.notify({columnId:o,showing:n,allColumns:r,columns:c,grid:d})):y(e.target).attr("checked","checked"))}function C(){return d.getColumns()}return c(d),{init:c,getAllColumns:function(){return r},getVisibleColumns:C,destroy:i,updateAllTitles:function(e){o&&o.text&&o.text(e.columnTitle)},onColumnsChanged:t}}}}})}(jQuery);