AgGrid 自定义 html 拖动

IT技术 reactjs drag-and-drop ag-grid
2021-05-11 02:47:54

我正在考虑更改 aggrid 组件的拖动悬停。我找不到太多关于它的东西......有人知道如何在拖动模式下更改行的样式吗?

我的目标是拥有不同的动画(整行),如材质 UI/UX

https://material.io/design/components/lists.html#behavior

在此处输入图片说明

2个回答

因此,实际上,现在无法修改“ghost”模板,您可以尝试比我更深入地探索,这是一个切入点:ag-grid\src\ts\dragAndDrop\dragAndDropService.tscreateGhost方法 - 正是您需要的。您可以做的一件事就是为自己覆盖这个地方并使用而不是原始库。

可以通过以下方式替换创建的幽灵:

  • 通过添加 body 类来全局隐藏鼠标悬停时的幽灵以防止幽灵闪烁(记得在鼠标悬停时删除类以允许其他网格使用幽灵)
  • 在拖动时设置新内容或更改 ghost 的样式并删除 body 类以显示新的 ghost(请记住,ghost 仅在拖动过程中出现在 DOM 中)

在鼠标悬停和鼠标移开时隐藏幽灵:

function onCellMouseOver(event) {
  document.body.classList.add('cellDragRendererOn');
}

function onCellMouseOut(){
  document.body.classList.remove('cellDragRendererOn');
}

gridOptions.onCellMouseOver = onCellMouseOver;
gridOptions.onCellMouseOut = onCellMouseOut;

替换 ghost 和 style,并取消隐藏 ghost:

function onRowDragEnter() {
  var ghost = document.querySelector('.ag-dnd-ghost');
  ghost.style.background = 'red';
  ghost.innerHTML = '<span class="myClass">My message</span>';
  document.body.classList.remove('cellDragRendererOn');
}

gridOptions.onRowDragEnter = onRowDragEnter; 

body -> ghost CSS 样式:

.cellDragRendererOn .ag-dnd-ghost{
  display: none !important;
}

在此处输入图片说明