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.7k stars 3.7k forks source link

[feature] .isInitialized() instead of making developers figure out that they must use internal .el variable? #2407

Open hchiam opened 4 days ago

hchiam commented 4 days ago

Is your feature request related to a problem? Please describe. I found it unclear how to tell whether my object is initialized or not and only recently found that checking whether the object has mySortableObject?.el works, as opposed only checking if mySortableObject exists.

Describe the solution you'd like Maybe some named helper function with a name like .isInitialized() or isUsingSortable()?

Describe alternatives you've considered Otherwise it might be helpful to document that doing mySortableObject?.el is a better check than only mySortableObject (besides it being reported in this issue itself).

Additional context

let mySortableObject = null;
/* ... */
if (isUsingSortable()) {
  mySortableObject.destroy();
} else {
  mySortableObject = new Sortable(element, options);
}

function isUsingSortable() {
  return mySortableObject?.el;
}
hchiam commented 4 days ago

I only thought of this because I was getting an error about this.el being null when I had code trying to run mySortableObject.destroy(); twice because the logic was treating isInitialized = mySortableObject as the check, when really it should be isInitialized = mySortableObject.el, but this.el looks like an internal variable.