UNPKG

azure-devops-ui

Version:

React components for building web UI in Azure DevOps

1 lines 3.73 kB
import"../../CommonImports";import"../../Core/core.css";import"./DropdownList.css";import"./List.css";import"./ListDropIndicator.css";import*as React from"react";import{getPointByEventType}from"../../Util";import{DragDropEffect}from"../../Utilities/DragDrop";import{cellFromEvent}from"./List";import{ListDropIndicator}from"./ListDropIndicator";import{ListDropIndicatorPosition}from"./ListDropIndicator.Props";var ListDropTargetBehavior=function(){function t(t){var n=this;this.initialize=function(t,o,r){n.dragDroppableUI=o,n.eventDispatch=r,n.eventDispatch.addEventListener("dragenter",n.onDragEnter),n.eventDispatch.addEventListener("dragexit",n.onDragExit),n.eventDispatch.addEventListener("dragover",n.onDragOver),n.eventDispatch.addEventListener("drop",n.onDrop),n.itemProvider=t.itemProvider,n.indicatorName=n.options.isTree?"tree-drop-indicator":"drop-indicator"},this.onDragEnter=function(t){n.handlesType(t)&&(n.options.onDragEnter?n.options.onDragEnter(t):t.detail.dataTransfer.dropEffect=DragDropEffect.move)},this.onDragExit=function(t){n.handlesType(t)&&(n.options.onDragExit&&n.options.onDragExit(t),n.dragDroppableUI.removeOverlay(n.indicatorName))},this.onDragOver=function(t){var o,r,e,i;n.handlesType(t)&&(o=n.calculateIndex(t),r=t.detail.dataTransfer.secondaryData.index,e=t.detail.dataTransfer.secondaryData.sourceId,0<=o&&(o!==r||e!==n.options.id||n.options.isTree)?n.options.onDragOver?"number"==typeof(i=n.options.onDragOver(t,{index:n.listIndicatorPosition===ListDropIndicatorPosition.bottom?o+1:o}))&&(o=i):t.detail.dataTransfer.dropEffect=DragDropEffect.move:t.detail.dataTransfer.dropEffect=DragDropEffect.none,t.detail.dataTransfer.dropEffect===DragDropEffect.none?n.dragDroppableUI.removeOverlay(n.indicatorName):("number"==typeof i&&(n.listIndicatorPosition=ListDropIndicatorPosition.bottom),n.dragDroppableUI.addOverlay(n.indicatorName,o,n.renderDropIndicator)))},this.onDrop=function(t){var o,r,e;n.handlesType(t)&&(o=n.calculateIndex(t),r=t.detail.dataTransfer.secondaryData.index,e=t.detail.dataTransfer.secondaryData.sourceId,0<=o&&(o!==r||e!==n.options.id)&&n.options.onDrop&&n.options.onDrop(t,{index:n.listIndicatorPosition===ListDropIndicatorPosition.bottom?o+1:o}),n.dragDroppableUI.removeOverlay(n.indicatorName))},this.renderDropIndicator=function(t){return n.options.isTree?React.createElement("div",{className:"bolt-list-tree-drop-target flex-grow"}):React.createElement(ListDropIndicator,{position:n.listIndicatorPosition})},this.options=t}return t.prototype.componentDidUpdate=function(t){this.itemProvider=t.itemProvider},t.prototype.componentWillUnmount=function(){var t;null!=(t=this.eventDispatch)&&t.removeEventListener("dragenter",this.onDragEnter),null!=(t=this.eventDispatch)&&t.removeEventListener("dragexit",this.onDragExit),null!=(t=this.eventDispatch)&&t.removeEventListener("dragover",this.onDragOver)},t.prototype.calculateIndex=function(t){var o,r,e=cellFromEvent(t),i=e.rowIndex;return this.options.isTree||e.rowElement&&t.detail.dataTransfer.secondaryData&&(o=t.detail.dataTransfer.secondaryData.index,r=t.detail.dataTransfer.secondaryData.sourceId,t=t.detail.nativeEvent,e=e.rowElement.getBoundingClientRect(),t=(t=getPointByEventType(t))?t.y<e.height/2+e.top:i<o,this.options.id!==r?(this.listIndicatorPosition=ListDropIndicatorPosition.top,t||i++,i>=this.itemProvider.length&&(this.listIndicatorPosition=ListDropIndicatorPosition.bottom,i--)):i<o?(this.listIndicatorPosition=ListDropIndicatorPosition.top,t||i++):o<i&&(this.listIndicatorPosition=ListDropIndicatorPosition.bottom,t)&&i--),i},t.prototype.handlesType=function(t){t=(null==(t=t.detail.dataTransfer)?void 0:t.type)||"";return-1!==this.options.allowedTypes.indexOf(t)},t}();export{ListDropTargetBehavior};