Vue.Draggable で並び替えたときのイベントハンドラの呼び出し順

最近、Vue.Draggable を使う機会があったのですが、ドラッグ&ドロップで要素を並び替えたときにどのような順序でイベントハンドラが呼ばれるのか気になったので調べてみました。とりあえず、以下に記載されているイベントハンドラを対象にします。ちなみに、move イベントは SortableJS の move プロパティを利用するようです。

github.com

サンプルコードはこちら。

gist.github.com

結果

呼び出しの順序は以下の通り。右端の数字は操作の番号と対応する。

パターン1

1) クリック ⇒ 2) ドラッグ ⇒ 3) 入れ替え ⇒ 4) ドロップ

  1. onchoose > (1)
  2. onclone > (2)
  3. onstart > (2)
  4. onmove > (3)
  5. onupdate > (4)
  6. onsort > (4)
  7. onend > (4)

パターン2

1) クリック ⇒ 2) ドロップ (※ドラッグなし)

  1. onchoose > (1)

パターン3

1) クリック ⇒ 2) ドラッグ ⇒ 3) ドロップ (※入れ替えなし)

  1. onchoose > (1)
  2. onclone > (2)
  3. onstart > (2)
  4. onend > (3)

パターン4

1) クリック ⇒ 2) ドラッグ ⇒ 3) 入れ替え ⇒ 4) 戻す ⇒ 5) ドロップ

  1. onchoose > (1)
  2. onclone > (2)
  3. onstart > (2)
  4. onmove > (3)
  5. onmove > (4)
  6. onend > (5)

パターン5

1) クリック ⇒ 2) ドラッグ ⇒ 3) 入れ替え ⇒ 4) 入れ替え ⇒ 5) ドロップ (※2行移動)

  1. onchoose > (1)
  2. onclone > (2)
  3. onstart > (2)
  4. onmove > (3)
  5. onmove > (4)
  6. onupdate > (5)
  7. onsort > (5)
  8. onend > (5)

まとめ

調べてはみたけど、Sortable の README.md などを読めばなんとなくイメージできるかもしれないですね...。

github.com

現場からは以上です。