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
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions