UNPKG

slickgrid

Version:

A lightning fast JavaScript grid/spreadsheet

9 lines 4.91 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.checkboxselectcolumn.js */ !function(R){R.extend(!0,window,{Slick:{CheckboxSelectColumn:function(e){var s,u=null,h=g(),t=new Slick.EventHandler,f={},p=!1,b=R.extend(!0,{},{columnId:"_checkbox_selector",cssClass:null,hideSelectAllCheckbox:!1,toolTip:"Select/Deselect All",width:30,hideInColumnTitleRow:!1,hideInFilterHeaderRow:!0},e);"function"==typeof b.selectableOverride&&C(b.selectableOverride);function l(){s.updateColumnHeader(b.columnId,"","")}function o(){R("#filter-checkbox-selectall-container").hide()}function c(e,t){var l,o=s.getSelectedRows(),c={},n=0;if("function"==typeof u)for(l=0;l<s.getDataLength();l++)m(r,s.getDataItem(l),s)||n++;for(var i=[],r=0;r<o.length;r++){var d=o[r];m(r,s.getDataItem(d),s)?(c[d]=!0,c[d]!==f[d]&&(s.invalidateRow(d),delete f[d])):i.push(d)}for(r in f)s.invalidateRow(r);if(f=c,s.render(),p=o.length&&o.length+n>=s.getDataLength(),b.hideInColumnTitleRow||b.hideSelectAllCheckbox||w(p),b.hideInFilterHeaderRow||R("#header-filter-selector"+h).prop("checked",p),0<i.length){for(r=0;r<i.length;r++){var a=o.indexOf(i[r]);o.splice(a,1)}s.setSelectedRows(o,"click.cleanup")}}function n(e,t){32==e.which&&s.getColumns()[t.cell].id===b.columnId&&(s.getEditorLock().isActive()&&!s.getEditorLock().commitCurrentEdit()||r(t.row),e.preventDefault(),e.stopImmediatePropagation())}function i(e,t){s.getColumns()[t.cell].id===b.columnId&&R(e.target).is(":checkbox")&&(s.getEditorLock().isActive()&&!s.getEditorLock().commitCurrentEdit()?e.preventDefault():(r(t.row),e.stopPropagation()),e.stopImmediatePropagation())}function r(t){var e=s.getDataItem(t);m(t,e,s)&&(f[t]?s.setSelectedRows(R.grep(s.getSelectedRows(),function(e){return e!=t}),"click.toggle"):s.setSelectedRows(s.getSelectedRows().concat(t),"click.toggle"),s.setActiveCell(t,function(){if(null===a){a=0;for(var e=s.getColumns(),t=0;t<e.length;t++)e[t].id==b.columnId&&(a=t)}return a}()))}function d(e,t){if(t.column.id==b.columnId&&R(e.target).is(":checkbox")){if(s.getEditorLock().isActive()&&!s.getEditorLock().commitCurrentEdit())e.preventDefault();else{if(R(e.target).is(":checked")){for(var l=[],o=0;o<s.getDataLength();o++){var c=s.getDataItem(o);c.__group||c.__groupTotals||!m(o,c,s)||l.push(o)}s.setSelectedRows(l,"click.selectAll")}else s.setSelectedRows([],"click.selectAll");e.stopPropagation()}e.stopImmediatePropagation()}}var a=null;function g(){return Math.round(1e7*Math.random())}function k(e,t,l,o,c,n){var i=g()+e;return c&&m(e,c,n)?f[e]?"<input id='selector"+i+"' type='checkbox' checked='checked'><label for='selector"+i+"'></label>":"<input id='selector"+i+"' type='checkbox'><label for='selector"+i+"'></label>":null}function m(e,t,l){return"function"!=typeof u||u(e,t,l)}function w(e){e?s.updateColumnHeader(b.columnId,"<input id='header-selector"+h+"' type='checkbox' checked='checked'><label for='header-selector"+h+"'></label>",b.toolTip):s.updateColumnHeader(b.columnId,"<input id='header-selector"+h+"' type='checkbox'><label for='header-selector"+h+"'></label>",b.toolTip)}function C(e){u=e}R.extend(this,{init:function(e){s=e,t.subscribe(s.onSelectedRowsChanged,c).subscribe(s.onClick,i).subscribe(s.onKeyDown,n),b.hideInFilterHeaderRow||t.subscribe(e.onHeaderRowCellRendered,function(e,t){"sel"===t.column.field&&(R(t.node).empty(),R("<span id='filter-checkbox-selectall-container'><input id='header-filter-selector"+h+"' type='checkbox'><label for='header-filter-selector"+h+"'></label></span>").appendTo(t.node).on("click",function(e){d(e,t)}))}),b.hideInColumnTitleRow||t.subscribe(s.onHeaderClick,d)},destroy:function(){t.unsubscribeAll()},pluginName:"CheckboxSelectColumn",deSelectRows:function(e){for(var t=e.length,l=[],o=0;o<t;o++)f[e[o]]&&(l[l.length]=e[o]);s.setSelectedRows(R.grep(s.getSelectedRows(),function(e){return l.indexOf(e)<0}),"SlickCheckboxSelectColumn.deSelectRows")},selectRows:function(e){for(var t=e.length,l=[],o=0;o<t;o++)f[e[o]]||(l[l.length]=e[o]);s.setSelectedRows(s.getSelectedRows().concat(l),"SlickCheckboxSelectColumn.selectRows")},getColumnDefinition:function(){return{id:b.columnId,name:b.hideSelectAllCheckbox||b.hideInColumnTitleRow?"":"<input id='header-selector"+h+"' type='checkbox'><label for='header-selector"+h+"'></label>",toolTip:b.hideSelectAllCheckbox||b.hideInColumnTitleRow?"":b.toolTip,field:"sel",width:b.width,resizable:!1,sortable:!1,cssClass:b.cssClass,hideSelectAllCheckbox:b.hideSelectAllCheckbox,formatter:k}},getOptions:function(){return b},selectableOverride:C,setOptions:function(e){(b=R.extend(!0,{},b,e)).hideSelectAllCheckbox?(l(),o()):(b.hideInColumnTitleRow?l():(w(p),t.subscribe(s.onHeaderClick,d)),b.hideInFilterHeaderRow?o():((e=R("#filter-checkbox-selectall-container")).show(),e.find('input[type="checkbox"]').prop("checked",p)))}})}}})}(jQuery);