SortableJS / Sortable

Reorderable drag-and-drop lists for modern browsers and touch devices. No jQuery or framework required.
https://sortablejs.github.io/Sortable/
MIT License
29.51k stars 3.69k forks source link

[bug] `draggable` params doesn't behave the same if it's not present vs undefined / null / empty / false #2378

Open jamesst20 opened 4 months ago

jamesst20 commented 4 months ago

Versions

SortableJS 1.15.2

Reproduction

CodeSandbox

Why this is trouble

I need to write a wrapper in my app that takes optional params like

type SortableItem = { position: number };
type UseSortableProps = { draggable?: string; handle?: string };

export const useSortable = ({ draggable, handle }: UseSortableProps) => {
  ...
  new Sortable(node, {
      animation: 150,
      dragClass: "bg-slate-200",
      ghostClass: "bg-slate-200",
      handle,
      draggable,
      onEnd: (e) => (items = updatePosition(items, e.oldIndex!, e.newIndex!, offset)),
    });
}

I have an ugly workaround for now but I don't think this should behave like this.