Skip to content

Commit 4bf4a81

Browse files
committed
refactor get draggable element
1 parent d481f36 commit 4bf4a81

File tree

1 file changed

+12
-10
lines changed

1 file changed

+12
-10
lines changed

src/packages/core/sorter/sorter.controller.ts

Lines changed: 12 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -387,16 +387,22 @@ export class UmbSorterController<T, ElementType extends HTMLElement = HTMLElemen
387387
}
388388
};
389389

390+
#getDraggableElement(element: HTMLElement) {
391+
if (this.#config.draggableSelector) {
392+
const queryFromEl = element.shadowRoot ?? element;
393+
return (queryFromEl.querySelector(this.#config.draggableSelector) as HTMLElement | undefined) ?? element;
394+
}
395+
return element;
396+
}
397+
390398
setupItem(element: ElementType) {
391399
if (this.#config.ignorerSelector) {
392400
setupIgnorerElements(element, this.#config.ignorerSelector);
393401
}
394402

395403
if (!this.#config.disabledItemSelector || !element.matches(this.#config.disabledItemSelector)) {
396404
// Idea: to make sure on does not get initialized twice: if ((element as HTMLElement).draggable === true) return;
397-
const draggableElement = this.#config.draggableSelector
398-
? (element.querySelector(this.#config.draggableSelector) as HTMLElement | undefined) ?? element
399-
: element;
405+
const draggableElement = this.#getDraggableElement(element);
400406
(draggableElement as HTMLElement).draggable = true;
401407
draggableElement.addEventListener('dragstart', this.#handleDragStart);
402408
draggableElement.addEventListener('dragend', this.#handleDragEnd);
@@ -419,9 +425,7 @@ export class UmbSorterController<T, ElementType extends HTMLElement = HTMLElemen
419425
destroyIgnorerElements(element, this.#config.ignorerSelector);
420426
}
421427

422-
const draggableElement = this.#config.draggableSelector
423-
? (element.querySelector(this.#config.draggableSelector) as HTMLElement | undefined) ?? element
424-
: element;
428+
const draggableElement = this.#getDraggableElement(element);
425429
draggableElement.removeEventListener('dragstart', this.#handleDragStart);
426430
// We are not ready to remove the dragend or drop, as this is might be the active one just moving container:
427431
//draggableElement.removeEventListener('dragend', this.#handleDragEnd);
@@ -447,9 +451,7 @@ export class UmbSorterController<T, ElementType extends HTMLElement = HTMLElemen
447451
#setCurrentElement(element: ElementType) {
448452
UmbSorterController.activeElement = element;
449453

450-
UmbSorterController.activeDragElement = this.#config.draggableSelector
451-
? element.querySelector(this.#config.draggableSelector) ?? undefined
452-
: element;
454+
UmbSorterController.activeDragElement = this.#getDraggableElement(element);
453455

454456
if (!UmbSorterController.activeDragElement) {
455457
throw new Error(
@@ -629,7 +631,7 @@ export class UmbSorterController<T, ElementType extends HTMLElement = HTMLElemen
629631
const elRect = el.getBoundingClientRect();
630632
// gather elements on the same row.
631633
if (this.#dragY >= elRect.top && this.#dragY <= elRect.bottom) {
632-
const dragElement = this.#config.draggableSelector ? el.querySelector(this.#config.draggableSelector) : el;
634+
const dragElement = this.#getDraggableElement(el);
633635
if (dragElement) {
634636
const dragElementRect = dragElement.getBoundingClientRect();
635637
if (el !== UmbSorterController.activeElement) {

0 commit comments

Comments
 (0)