列表元素拖动方案

林一二2022年05月14日 13:49

plate 编辑器默认禁止部分元素在出现嵌套时有拖动抓手,因为这可能会导致 p > widget 这样的情况下,两层元素的两个抓手贴得很近重叠在一起。还有列表的 ol 的抓手和 li 的抓手冲突也是。 不过

plate 默认也不支持 li 的拖动,因为可能会把 li 直接拖到列表外面,丢失外层是 ol 还是 ul 的信息。

方案

  • 对于 widget 这种可能会被 p 包裹的元素,限制其只能出现在 level 0(文档根的直接子节点)
  • 对于 ol 下的第一个 li,不出现抓手,直接拖动 ol
    • 对于其它 li 显示抓手并在 drag 的时候记录其外层是 ol 还是 ul,drop 的时候包裹上新的父级