Skip to content

[bug] Destroy Sortable not remove all data from elements. #2469

@duhvir

Description

@duhvir

I have two Sortables with shared 'group' to drag between them.
Also I have filter on lists. So when filtering I must destroy sortable and then re-create them. Or it will not work correctly.

And when I do so, I get

Uncaught TypeError: can't access property "lastElementChild", el is null
    lastChild https://my_site.com/js/sortable/sortable.js:378
    _onDragOver https://my_site.com/js/sortable/sortable.js:1768
    handleEvent https://my_site.com/js/sortable/sortable.js:2063
    on https://my_site.com/js/sortable/sortable.js:138
    Sortable https://my_site.com/js/sortable/sortable.js:1147
    createSortables https://my_site.com/js/vue/vue_components/music_playlists_component.js:774
    playlistSelected_result https://my_site.com/js/vue/vue_components/music_playlists_component.js:568
    success https://my_site.com/js/common.js:75
    jQuery 6
    send_request https://my_site.com/js/common.js:30
    playlistSelected https://my_site.com/js/vue/vue_components/music_playlists_component.js:512
    load_playlist https://my_site.com/js/vue/vue_components/music_playlists_component.js:810
    setTimeout handler*load_playlist https://my_site.com/js/vue/vue_components/music_playlists_component.js:797
    load_playlist https://my_site.com/js/vue/vue_components/music_playlists_component.js:801
    setTimeout handler*load_playlist https://my_site.com/js/vue/vue_components/music_playlists_component.js:797
    load_playlist https://my_site.com/js/vue/vue_components/music_playlists_component.js:801
    setTimeout handler*load_playlist https://my_site.com/js/vue/vue_components/music_playlists_component.js:797
    load_playlist https://my_site.com/js/vue/vue_components/music_playlists_component.js:801
    setTimeout handler*load_playlist https://my_site.com/js/vue/vue_components/music_playlists_component.js:797
    load_playlist https://my_site.com/js/vue/vue_components/music_playlists_component.js:801
    setTimeout handler*load_playlist https://my_site.com/js/vue/vue_components/music_playlists_component.js:797
    load_playlist https://my_site.com/js/vue/vue_components/music_playlists_component.js:801
    setTimeout handler*load_playlist https://my_site.com/js/vue/vue_components/music_playlists_component.js:797
    load_playlist https://my_site.com/js/vue/vue_components/music_playlists_component.js:801
    setTimeout handler*load_playlist https://my_site.com/js/vue/vue_components/music_playlists_component.js:797
    load_playlist https://my_site.com/js/vue/vue_components/music_playlists_component.js:801
    setTimeout handler*load_playlist https://my_site.com/js/vue/vue_components/music_playlists_component.js:797
    load_playlist https://my_site.com/js/vue/vue_components/music_playlists_component.js:801
    setTimeout handler*load_playlist https://my_site.com/js/vue/vue_components/music_playlists_component.js:797
    load_playlist https://my_site.com/js/vue/vue_components/music_playlists_component.js:801
    setTimeout handler*load_playlist https://my_site.com/js/vue/vue_components/music_playlists_component.js:797
    mounted https://my_site.com/js/vue/vue_components/music_playlists_component.js:815
    VueJS 14
    finalizeNavigation https://my_site.com/js/vue/vue-router.global.js:3511
    VueRouter https://my_site.com/js/vue/vue-router.global.js:3376
    promise callback*pushWithRedirect https://my_site.com/js/vue/vue-router.global.js:3344
    push https://my_site.com/js/vue/vue-router.global.js:3270
    install https://my_site.com/js/vue/vue-router.global.js:3709
    use VueJS
    <anonymous> https://my_site.com/js/vue_data.js:315
sortable.js:378:16
    lastChild https://my_site.com/js/sortable/sortable.js:378
    _onDragOver https://my_site.com/js/sortable/sortable.js:1768
    handleEvent https://my_site.com/js/sortable/sortable.js:2063
    (Асинхронный: EventListener.handleEvent)
    on https://my_site.com/js/sortable/sortable.js:138
    Sortable https://my_site.com/js/sortable/sortable.js:1147
    createSortables https://my_site.com/js/vue/vue_components/music_playlists_component.js:774
    playlistSelected_result https://my_site.com/js/vue/vue_components/music_playlists_component.js:568
    success https://my_site.com/js/common.js:75
    jQuery 6
    send_request https://my_site.com/js/common.js:30
    playlistSelected https://my_site.com/js/vue/vue_components/music_playlists_component.js:512
    load_playlist https://my_site.com/js/vue/vue_components/music_playlists_component.js:810
    (Асинхронный: setTimeout handler)
    load_playlist https://my_site.com/js/vue/vue_components/music_playlists_component.js:797
    load_playlist https://my_site.com/js/vue/vue_components/music_playlists_component.js:801
    (Асинхронный: setTimeout handler)
    load_playlist https://my_site.com/js/vue/vue_components/music_playlists_component.js:797
    load_playlist https://my_site.com/js/vue/vue_components/music_playlists_component.js:801
    (Асинхронный: setTimeout handler)
    load_playlist https://my_site.com/js/vue/vue_components/music_playlists_component.js:797
    load_playlist https://my_site.com/js/vue/vue_components/music_playlists_component.js:801
    (Асинхронный: setTimeout handler)
    load_playlist https://my_site.com/js/vue/vue_components/music_playlists_component.js:797
    load_playlist https://my_site.com/js/vue/vue_components/music_playlists_component.js:801
    (Асинхронный: setTimeout handler)
    load_playlist https://my_site.com/js/vue/vue_components/music_playlists_component.js:797
    load_playlist https://my_site.com/js/vue/vue_components/music_playlists_component.js:801
    (Асинхронный: setTimeout handler)
    load_playlist https://my_site.com/js/vue/vue_components/music_playlists_component.js:797
    load_playlist https://my_site.com/js/vue/vue_components/music_playlists_component.js:801
    (Асинхронный: setTimeout handler)
    load_playlist https://my_site.com/js/vue/vue_components/music_playlists_component.js:797
    load_playlist https://my_site.com/js/vue/vue_components/music_playlists_component.js:801
    (Асинхронный: setTimeout handler)
    load_playlist https://my_site.com/js/vue/vue_components/music_playlists_component.js:797
    load_playlist https://my_site.com/js/vue/vue_components/music_playlists_component.js:801
    (Асинхронный: setTimeout handler)
    load_playlist https://my_site.com/js/vue/vue_components/music_playlists_component.js:797
    load_playlist https://my_site.com/js/vue/vue_components/music_playlists_component.js:801
    (Асинхронный: setTimeout handler)
    load_playlist https://my_site.com/js/vue/vue_components/music_playlists_component.js:797
    mounted https://my_site.com/js/vue/vue_components/music_playlists_component.js:815
    VueJS 14
    finalizeNavigation https://my_site.com/js/vue/vue-router.global.js:3511
    VueRouter https://my_site.com/js/vue/vue-router.global.js:3376
    (Асинхронный: promise callback)
    pushWithRedirect https://my_site.com/js/vue/vue-router.global.js:3344
    push https://my_site.com/js/vue/vue-router.global.js:3270
    install https://my_site.com/js/vue/vue-router.global.js:3709
    use VueJS
    <анонимный> https://my_site.com/js/vue_data.js:315

Do not look at Vue. It's not part of the problem, Sortable is standalone module (1.15.7)

What helps to evade problem => Use another 'group' name. Than no error raised.
So somewhere name of the group and maybe something else stored.

Reproduce:

  1. Create two shared Sortable.
  2. Destroy them.
  3. Create again with same group name.
  4. Profit )

Versions - 1.15.7

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions