@@ -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