slickgrid
Version:
A lightning fast JavaScript grid/spreadsheet
9 lines • 3.61 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.crossgridrowmovemanager.js
*/
!function(M){M.extend(!0,window,{Slick:{CrossGridRowMoveManager:function(i){var s,r,c,a,d,n=this,l=null,o=new Slick.EventHandler,t={columnId:"_move",cssClass:null,cancelEditOnDrag:!1,disableRowSelection:!1,hideRowMoveShadow:!0,rowMoveShadowMarginTop:0,rowMoveShadowMarginLeft:0,rowMoveShadowOpacity:.95,rowMoveShadowScale:.75,singleRowMove:!1,width:40};i&&"function"==typeof i.usabilityOverride&&h(i.usabilityOverride);function w(e){e.stopImmediatePropagation()}function u(e,o){var t=s.getCellFromEvent(e),n=t&&t.row;if(f(n,s.getDataItem(n),s)){if(i.cancelEditOnDrag&&s.getEditorLock().isActive()&&s.getEditorLock().cancelCurrentEdit(),s.getEditorLock().isActive()||!p(t.cell))return!1;d=!0,e.stopImmediatePropagation(),i.hideRowMoveShadow||(n=M(s.getCellNode(t.row,t.cell)).closest(".slick-row"))&&(o.clonedSlickRow=n.clone(),o.clonedSlickRow.addClass("slick-reorder-shadow-row").css("marginTop",i.rowMoveShadowMarginTop||0).css("marginLeft",i.rowMoveShadowMarginLeft||0).css("opacity",i.rowMoveShadowOpacity||.95).css("transform","scale("+i.rowMoveShadowScale+")").hide().appendTo(r));e=i.singleRowMove?[t.row]:s.getSelectedRows(),n=(0!==e.length&&-1!=M.inArray(t.row,e)||(e=[t.row],i.disableRowSelection||s.setSelectedRows(e)),e.sort(function(e,o){return e-o}),s.getOptions().rowHeight);o.fromGrid=s,o.toGrid=c,o.selectedRows=e,o.selectionProxy=M("<div class='slick-reorder-proxy'/>").css("position","absolute").css("zIndex","99999").css("width",M(a).innerWidth()).css("height",n*e.length).hide().appendTo(a),o.guide=M("<div class='slick-reorder-guide'/>").css("position","absolute").css("zIndex","99998").css("width",M(a).innerWidth()).css("top",-1e3).appendTo(a),o.insertBefore=-1}}function g(e,o){var t;d&&(e.stopImmediatePropagation(),t=e.pageY-M(a).offset().top,o.selectionProxy.css("top",t-5).show(),o.clonedSlickRow&&(e=e.pageY-M(r).offset().top,o.clonedSlickRow.css("top",e-6).show()),(e=Math.max(0,Math.min(Math.round(t/c.getOptions().rowHeight),c.getDataLength())))!==o.insertBefore&&(!(t={fromGrid:s,toGrid:c,rows:o.selectedRows,insertBefore:e})===n.onBeforeMoveRows.notify(t)?o.canMove=!1:o.canMove=!0,l&&o.canMove&&(t=c.getDataItem(e),o.canMove=f(e,t,c)),o.canMove?o.guide.css("top",e*c.getOptions().rowHeight):o.guide.css("top",-1e3),o.insertBefore=e))}function v(e,o){d&&(d=!1,e.stopImmediatePropagation(),o.guide.remove(),o.selectionProxy.remove(),o.clonedSlickRow&&(o.clonedSlickRow.remove(),o.clonedSlickRow=null),o.canMove&&(e={fromGrid:s,toGrid:c,rows:o.selectedRows,insertBefore:o.insertBefore},n.onMoveRows.notify(e)))}function e(e,o,t,n,i,s){return f(e,i,s)?{addClasses:"cell-reorder dnd",text:""}:null}function f(e,o,t){return"function"!=typeof l||l(e,o,t)}function h(e){l=e}function p(e){return/move|selectAndMove/.test(s.getColumns()[e].behavior)}M.extend(this,{onBeforeMoveRows:new Slick.Event,onMoveRows:new Slick.Event,init:function(e){i=M.extend(!0,{},t,i),r=(s=e).getCanvasNode(),c=i.toGrid,a=c.getCanvasNode(),o.subscribe(s.onDragInit,w).subscribe(s.onDragStart,u).subscribe(s.onDrag,g).subscribe(s.onDragEnd,v)},destroy:function(){o.unsubscribeAll()},getColumnDefinition:function(){return{id:i.columnId||"_move",name:"",field:"move",width:i.width||40,behavior:"selectAndMove",selectable:!1,resizable:!1,cssClass:i.cssClass,formatter:e}},setOptions:function(e){i=M.extend({},i,e)},usabilityOverride:h,isHandlerColumn:p,pluginName:"CrossGridRowMoveManager"})}}})}(jQuery);