@@ -27,7 +27,6 @@ interface NestedSectionsTableProps {
2727 dropContextName : string
2828 hoveredRowID ?: null | number | string
2929 initialOffset ?: number
30- invalidTargetIDs ?: Set < number | string >
3130 isDragging ?: boolean
3231 loadingRowIDs ?: Set < number | string >
3332 onDroppableHover : ( params : {
@@ -60,8 +59,8 @@ interface DivTableSectionProps {
6059 firstCellRef ?: React . RefObject < HTMLDivElement >
6160 firstCellWidth : number
6261 firstCellXOffset : number
62+ hasSelectedAncestor ?: boolean
6363 hoveredRowID : null | number | string
64- invalidTargetIDs ?: Set < number | string >
6564 isDragging : boolean
6665 isLastRowOfRoot ?: boolean
6766 level ?: number
@@ -101,7 +100,6 @@ export const NestedSectionsTable: React.FC<NestedSectionsTableProps> = ({
101100 disabledRowIDs,
102101 dropContextName,
103102 hoveredRowID,
104- invalidTargetIDs,
105103 isDragging = false ,
106104 loadingRowIDs,
107105 onDroppableHover,
@@ -161,7 +159,6 @@ export const NestedSectionsTable: React.FC<NestedSectionsTableProps> = ({
161159 firstCellWidth = { firstCellWidth }
162160 firstCellXOffset = { firstCellXOffset }
163161 hoveredRowID = { hoveredRowID }
164- invalidTargetIDs = { invalidTargetIDs }
165162 isDragging = { isDragging }
166163 loadingRowIDs = { loadingRowIDs }
167164 onDroppableHover = { onDroppableHover }
@@ -188,8 +185,8 @@ export const DivTableSection: React.FC<DivTableSectionProps> = ({
188185 firstCellRef,
189186 firstCellWidth,
190187 firstCellXOffset,
188+ hasSelectedAncestor = false ,
191189 hoveredRowID,
192- invalidTargetIDs,
193190 isDragging,
194191 isLastRowOfRoot = false ,
195192 level = 0 ,
@@ -264,8 +261,8 @@ export const DivTableSection: React.FC<DivTableSectionProps> = ({
264261 : firstCellWidth + segmentWidth * ( hasNestedRows ? level + 1 : level ) + 28
265262
266263 const isOdd = absoluteRowIndex % 2 === 1
267-
268- const isInvalidTarget = invalidTargetIDs ?. has ( rowItem . rowID )
264+ const isRowSelected = selectedRowIDs . includes ( rowItem . rowID )
265+ const isInvalidTarget = hasSelectedAncestor || isRowSelected
269266
270267 const renderResult = (
271268 < React . Fragment key = { rowItem . rowID } >
@@ -276,7 +273,7 @@ export const DivTableSection: React.FC<DivTableSectionProps> = ({
276273 isDragging && isInvalidTarget && `${ baseClass } __section--invalid-target` ,
277274 isOdd && `${ baseClass } __section--odd` ,
278275 targetParentID === rowItem . rowID && `${ baseClass } __section--target` ,
279- selectedRowIDs . includes ( rowItem . rowID ) && `${ baseClass } __section--selected` ,
276+ isRowSelected && `${ baseClass } __section--selected` ,
280277 ]
281278 . filter ( Boolean )
282279 . join ( ' ' ) }
@@ -387,8 +384,8 @@ export const DivTableSection: React.FC<DivTableSectionProps> = ({
387384 ) }
388385 < div >
389386 < RowDropArea
387+ disabled = { isInvalidTarget }
390388 dropContextName = { dropContextName }
391- invalidTargetIDs = { invalidTargetIDs }
392389 isDragging = { isDragging }
393390 onHover = { ( data ) => {
394391 onDroppableHover ( { ...data , hoveredRowID : rowItem . rowID } )
@@ -400,8 +397,8 @@ export const DivTableSection: React.FC<DivTableSectionProps> = ({
400397 />
401398
402399 < RowDropArea
400+ disabled = { isInvalidTarget }
403401 dropContextName = { dropContextName }
404- invalidTargetIDs = { invalidTargetIDs }
405402 isDragging = { isDragging }
406403 onHover = { ( data ) => {
407404 onDroppableHover ( { ...data , hoveredRowID : rowItem . rowID } )
@@ -439,8 +436,8 @@ export const DivTableSection: React.FC<DivTableSectionProps> = ({
439436 dropContextName = { dropContextName }
440437 firstCellWidth = { firstCellWidth }
441438 firstCellXOffset = { firstCellXOffset }
439+ hasSelectedAncestor = { hasSelectedAncestor || isRowSelected }
442440 hoveredRowID = { hoveredRowID }
443- invalidTargetIDs = { invalidTargetIDs }
444441 isDragging = { isDragging }
445442 isLastRowOfRoot = { isRowAtRootLevel }
446443 level = { level + 1 }
0 commit comments