@@ -387,16 +387,22 @@ export class UmbSorterController<T, ElementType extends HTMLElement = HTMLElemen
387
387
}
388
388
} ;
389
389
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
+
390
398
setupItem ( element : ElementType ) {
391
399
if ( this . #config. ignorerSelector ) {
392
400
setupIgnorerElements ( element , this . #config. ignorerSelector ) ;
393
401
}
394
402
395
403
if ( ! this . #config. disabledItemSelector || ! element . matches ( this . #config. disabledItemSelector ) ) {
396
404
// 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 ) ;
400
406
( draggableElement as HTMLElement ) . draggable = true ;
401
407
draggableElement . addEventListener ( 'dragstart' , this . #handleDragStart) ;
402
408
draggableElement . addEventListener ( 'dragend' , this . #handleDragEnd) ;
@@ -419,9 +425,7 @@ export class UmbSorterController<T, ElementType extends HTMLElement = HTMLElemen
419
425
destroyIgnorerElements ( element , this . #config. ignorerSelector ) ;
420
426
}
421
427
422
- const draggableElement = this . #config. draggableSelector
423
- ? ( element . querySelector ( this . #config. draggableSelector ) as HTMLElement | undefined ) ?? element
424
- : element ;
428
+ const draggableElement = this . #getDraggableElement( element ) ;
425
429
draggableElement . removeEventListener ( 'dragstart' , this . #handleDragStart) ;
426
430
// We are not ready to remove the dragend or drop, as this is might be the active one just moving container:
427
431
//draggableElement.removeEventListener('dragend', this.#handleDragEnd);
@@ -447,9 +451,7 @@ export class UmbSorterController<T, ElementType extends HTMLElement = HTMLElemen
447
451
#setCurrentElement( element : ElementType ) {
448
452
UmbSorterController . activeElement = element ;
449
453
450
- UmbSorterController . activeDragElement = this . #config. draggableSelector
451
- ? element . querySelector ( this . #config. draggableSelector ) ?? undefined
452
- : element ;
454
+ UmbSorterController . activeDragElement = this . #getDraggableElement( element ) ;
453
455
454
456
if ( ! UmbSorterController . activeDragElement ) {
455
457
throw new Error (
@@ -629,7 +631,7 @@ export class UmbSorterController<T, ElementType extends HTMLElement = HTMLElemen
629
631
const elRect = el . getBoundingClientRect ( ) ;
630
632
// gather elements on the same row.
631
633
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 ) ;
633
635
if ( dragElement ) {
634
636
const dragElementRect = dragElement . getBoundingClientRect ( ) ;
635
637
if ( el !== UmbSorterController . activeElement ) {
0 commit comments