slickgrid
Version:
A lightning fast JavaScript grid/spreadsheet
9 lines • 3.49 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.rowmovemanager.js
*/
!function(h){h.extend(!0,window,{Slick:{RowMoveManager:function(i){var s,r,c,n=this,a=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&&v(i.usabilityOverride);function l(e){e.stopImmediatePropagation()}function d(e,o){var t=s.getCellFromEvent(e),n=t&&t.row;if(u(n,s.getDataItem(n),s)){if(i.cancelEditOnDrag&&s.getEditorLock().isActive()&&s.getEditorLock().cancelCurrentEdit(),s.getEditorLock().isActive()||!f(t.cell))return!1;c=!0,e.stopImmediatePropagation(),i.hideRowMoveShadow||(n=h(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!=h.inArray(t.row,e)||(e=[t.row],i.disableRowSelection||s.setSelectedRows(e)),s.getOptions().rowHeight);o.selectedRows=e,o.selectionProxy=h("<div class='slick-reorder-proxy'/>").css("position","absolute").css("zIndex","99999").css("width",h(r).innerWidth()).css("height",n*e.length).hide().appendTo(r),o.guide=h("<div class='slick-reorder-guide'/>").css("position","absolute").css("zIndex","99998").css("width",h(r).innerWidth()).css("top",-1e3).appendTo(r),o.insertBefore=-1}}function w(e,o){var t;c&&(e.stopImmediatePropagation(),t=(e.touches?e.touches[0]:e).pageY-h(r).offset().top,o.selectionProxy.css("top",t-5).show(),o.clonedSlickRow&&(e=e.pageY-h(r).offset().top,o.clonedSlickRow.css("top",e-6).show()),(e=Math.max(0,Math.min(Math.round(t/s.getOptions().rowHeight),s.getDataLength())))!==o.insertBefore&&(!(t={grid:s,rows:o.selectedRows,insertBefore:e})===n.onBeforeMoveRows.notify(t)?o.canMove=!1:o.canMove=!0,a&&o.canMove&&(t=s.getDataItem(e),o.canMove=u(e,t,s)),o.canMove?o.guide.css("top",e*s.getOptions().rowHeight):o.guide.css("top",-1e3),o.insertBefore=e))}function g(e,o){c&&(c=!1,e.stopImmediatePropagation(),o.guide.remove(),o.selectionProxy.remove(),o.clonedSlickRow&&(o.clonedSlickRow.remove(),o.clonedSlickRow=null),o.canMove&&(e={grid:s,rows:o.selectedRows,insertBefore:o.insertBefore},n.onMoveRows.notify(e)))}function e(e,o,t,n,i,s){return u(e,i,s)?{addClasses:"cell-reorder dnd",text:""}:null}function u(e,o,t){return"function"!=typeof a||a(e,o,t)}function v(e){a=e}function f(e){return/move|selectAndMove/.test(s.getColumns()[e].behavior)}h.extend(this,{onBeforeMoveRows:new Slick.Event,onMoveRows:new Slick.Event,init:function(e){i=h.extend(!0,{},t,i),r=(s=e).getCanvasNode(),o.subscribe(s.onDragInit,l).subscribe(s.onDragStart,d).subscribe(s.onDrag,w).subscribe(s.onDragEnd,g)},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=h.extend({},i,e)},usabilityOverride:v,isHandlerColumn:f,pluginName:"RowMoveManager"})}}})}(jQuery);