UNPKG

slickgrid

Version:

A lightning fast JavaScript grid/spreadsheet

9 lines 5.72 kB
/** * SlickGrid v3.0.4 * (c) 2009-present Michael Leibman * homepage: http://github.com/mleibman/slickgrid * license: MIT * date: 2023-02-15 * file: ./plugins/slick.checkboxselectcolumn.js */ !function(x){x.extend(!0,window,{Slick:{CheckboxSelectColumn:function(e){var s,u,h=!1,d=null,a=C(),t=new Slick.EventHandler,f={},g=!1,p=x.extend(!0,{},{columnId:"_checkbox_selector",cssClass:null,hideSelectAllCheckbox:!1,toolTip:"Select/Deselect All",width:30,applySelectOnAllPages:!1,hideInColumnTitleRow:!1,hideInFilterHeaderRow:!0},e);"function"==typeof p.selectableOverride&&R(p.selectableOverride);function l(){u.updateColumnHeader(p.columnId,"","")}function o(){x("#filter-checkbox-selectall-container").hide()}function n(){var e,t=u.getSelectedRows(),l={},o=0;if("function"==typeof d)for(e=0;e<u.getDataLength();e++)I(c,u.getDataItem(e),u)||o++;for(var n=[],c=0;c<t.length;c++){var i=t[c];I(c,u.getDataItem(i),u)?(l[i]=!0,l[i]!==f[i]&&(u.invalidateRow(i),delete f[i])):n.push(i)}for(c in f)u.invalidateRow(c);if(f=l,u.render(),g=t&&t.length+o>=u.getDataLength(),h&&p.applySelectOnAllPages||(p.hideInColumnTitleRow||p.hideSelectAllCheckbox||S(g),p.hideInFilterHeaderRow||x("#header-filter-selector"+a).prop("checked",g)),0<n.length){for(c=0;c<n.length;c++){var r=t.indexOf(n[c]);t.splice(r,1)}u.setSelectedRows(t,"click.cleanup")}}function c(){var e=s.getAllSelectedFilteredIds(),t=s.getFilteredItems(),l=0;if("function"==typeof d&&0<e.length)for(var o=0;o<s.getItemCount();o++){var n=s.getItemByIdx(o),c=s.getIdPropertyName(),i=n[c];0<=t.findIndex(function(e){return e[c]===i})&&!I(o,n,u)&&l++}g=(e&&e.length)+l>=t.length,p.hideInColumnTitleRow||p.hideSelectAllCheckbox||S(g),p.hideInFilterHeaderRow||x("#header-filter-selector"+a).prop("checked",g)}function i(e,t){32==e.which&&u.getColumns()[t.cell].id===p.columnId&&(u.getEditorLock().isActive()&&!u.getEditorLock().commitCurrentEdit()||b(t.row),e.preventDefault(),e.stopImmediatePropagation())}function r(e,t){u.getColumns()[t.cell].id===p.columnId&&x(e.target).is(":checkbox")&&(u.getEditorLock().isActive()&&!u.getEditorLock().commitCurrentEdit()?e.preventDefault():(b(t.row),e.stopPropagation()),e.stopImmediatePropagation())}function b(t){var e=u.getDataItem(t);I(t,e,u)&&(f[t]?u.setSelectedRows(x.grep(u.getSelectedRows(),function(e){return e!=t}),"click.toggle"):u.setSelectedRows(u.getSelectedRows().concat(t),"click.toggle"),u.setActiveCell(t,function(){if(null===k){k=0;for(var e=u.getColumns(),t=0;t<e.length;t++)e[t].id==p.columnId&&(k=t)}return k}()))}function m(e,t){if(t.column.id==p.columnId&&x(e.target).is(":checkbox")){if(u.getEditorLock().isActive()&&!u.getEditorLock().commitCurrentEdit())e.preventDefault();else{var t=x(e.target).is(":checked")||!1,l=t?"click.selectAll":"click.unselectAll",o=[];if(t){for(var n=0;n<u.getDataLength();n++){var c=u.getDataItem(n);c.__group||c.__groupTotals||!I(n,c,u)||o.push(n)}t=!0}if(h&&s&&p.applySelectOnAllPages){for(var i=[],r=s.getFilteredItems(),d=0;d<r.length;d++){var a=r[d];I(d,a,u)&&i.push(a[s.getIdPropertyName()])}s.setSelectedIds(i,{isRowBeingAdded:t})}u.setSelectedRows(o,l),e.stopPropagation()}e.stopImmediatePropagation()}}var k=null;function C(){return Math.round(1e7*Math.random())}function w(e,t,l,o,n,c){var i=C()+e;return n&&I(e,n,c)?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 I(e,t,l){return"function"!=typeof d||d(e,t,l)}function S(e){e?u.updateColumnHeader(p.columnId,"<input id='header-selector"+a+"' type='checkbox' checked='checked'><label for='header-selector"+a+"'></label>",p.toolTip):u.updateColumnHeader(p.columnId,"<input id='header-selector"+a+"' type='checkbox'><label for='header-selector"+a+"'></label>",p.toolTip)}function R(e){d=e}x.extend(this,{init:function(e){u=e,(h=!Array.isArray(e.getData()))&&(s=e.getData()),t.subscribe(u.onSelectedRowsChanged,n).subscribe(u.onClick,r).subscribe(u.onKeyDown,i),h&&s&&p.applySelectOnAllPages&&t.subscribe(s.onSelectedRowIdsChanged,c).subscribe(s.onPagingInfoChanged,c),p.hideInFilterHeaderRow||t.subscribe(e.onHeaderRowCellRendered,function(e,t){"sel"===t.column.field&&(x(t.node).empty(),x("<span id='filter-checkbox-selectall-container'><input id='header-filter-selector"+a+"' type='checkbox'><label for='header-filter-selector"+a+"'></label></span>").appendTo(t.node).on("click",function(e){m(e,t)}))}),p.hideInColumnTitleRow||t.subscribe(u.onHeaderClick,m)},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]);u.setSelectedRows(x.grep(u.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]);u.setSelectedRows(u.getSelectedRows().concat(l),"SlickCheckboxSelectColumn.selectRows")},getColumnDefinition:function(){return{id:p.columnId,name:p.hideSelectAllCheckbox||p.hideInColumnTitleRow?"":"<input id='header-selector"+a+"' type='checkbox'><label for='header-selector"+a+"'></label>",toolTip:p.hideSelectAllCheckbox||p.hideInColumnTitleRow?"":p.toolTip,field:"sel",width:p.width,resizable:!1,sortable:!1,cssClass:p.cssClass,hideSelectAllCheckbox:p.hideSelectAllCheckbox,formatter:w}},getOptions:function(){return p},selectableOverride:R,setOptions:function(e){(p=x.extend(!0,{},p,e)).hideSelectAllCheckbox?(l(),o()):(p.hideInColumnTitleRow?l():(S(g),t.subscribe(u.onHeaderClick,m)),p.hideInFilterHeaderRow?o():((e=x("#filter-checkbox-selectall-container")).show(),e.find('input[type="checkbox"]').prop("checked",g)))}})}}})}(jQuery);