@@ -10,7 +10,7 @@ interface ItemWithChildrenProps {
1010  firstCellRef ?: React . RefObject < HTMLDivElement > 
1111  firstCellWidth : number 
1212  firstCellXOffset : number 
13-   focusedItemIndex ?: number 
13+   focusedItemKey ?: ItemKey   |   null 
1414  hasSelectedAncestor ?: boolean 
1515  hoveredItemKey : ItemKey  |  null 
1616  isDragging : boolean 
@@ -23,10 +23,8 @@ interface ItemWithChildrenProps {
2323    placement ?: string 
2424    targetItem : null  |  SectionItem 
2525  } )  =>  void 
26-   onFocusChange : ( focusedIndex : number )  =>  void 
27-   onItemDrag : ( params : {  event : PointerEvent ;  item : null  |  SectionItem  } )  =>  void 
28-   onItemKeyPress : ( params : {  event : React . KeyboardEvent ;  item : SectionItem  } )  =>  void 
29-   onSelectionChange : ( { 
26+   onFocusChange : ( indexPath : number [ ] )  =>  void 
27+   onItemClick : ( { 
3028    itemKey, 
3129    options, 
3230  } : { 
@@ -37,8 +35,11 @@ interface ItemWithChildrenProps {
3735      shiftKey : boolean 
3836    } 
3937  } )  =>  void 
38+   onItemDrag : ( params : {  event : PointerEvent ;  item : null  |  SectionItem  } )  =>  void 
39+   onItemKeyDown : ( params : {  event : React . KeyboardEvent ;  item : SectionItem  } )  =>  void 
4040  openItemKeys ?: Set < ItemKey > 
4141  parentIndex ?: number 
42+   parentIndexPath : number [ ] 
4243  parentItems ?: SectionItem [ ] 
4344  segmentWidth : number 
4445  selectedItemKeys ?: Set < ItemKey > 
@@ -52,7 +53,7 @@ export const NestedItems: React.FC<ItemWithChildrenProps> = ({
5253  firstCellRef, 
5354  firstCellWidth, 
5455  firstCellXOffset, 
55-   focusedItemIndex , 
56+   focusedItemKey , 
5657  hasSelectedAncestor =  false , 
5758  hoveredItemKey, 
5859  isDragging, 
@@ -62,11 +63,12 @@ export const NestedItems: React.FC<ItemWithChildrenProps> = ({
6263  loadingItemKeys, 
6364  onDroppableHover, 
6465  onFocusChange, 
66+   onItemClick, 
6567  onItemDrag, 
66-   onItemKeyPress, 
67-   onSelectionChange, 
68+   onItemKeyDown, 
6869  openItemKeys, 
6970  parentIndex =  0 , 
71+   parentIndexPath =  [ ] , 
7072  parentItems =  [ ] , 
7173  segmentWidth, 
7274  selectedItemKeys =  new  Set < ItemKey > ( ) , 
@@ -97,15 +99,14 @@ export const NestedItems: React.FC<ItemWithChildrenProps> = ({
9799  return  ( 
98100    < > 
99101      { items . map ( ( sectionItem ,  sectionItemIndex : number )  =>  { 
102+         const  itemIndexPath  =  [ ...parentIndexPath ,  sectionItemIndex ] 
100103        const  absoluteItemIndex  =  getAbsoluteItemIndex ( sectionItemIndex ) 
101104        const  isLastSiblingItem  =  items . length  -  1  ===  sectionItemIndex 
102105        const  hasNestedItems  = 
103106          Boolean ( sectionItem ?. rows ?. length )  &&  openItemKeys ?. has ( sectionItem . itemKey ) 
104107
105108        const  isItemSelected  =  selectedItemKeys . has ( sectionItem . itemKey ) 
106-         const  isInvalidTarget  =  hasSelectedAncestor  ||  isItemSelected 
107109        const  isItemAtRootLevel  =  level  ===  0  ||  ( isLastSiblingItem  &&  isLastItemOfRoot ) 
108-         const  isFirstItemAtRootLevel  =  level  ===  0  &&  sectionItemIndex  ===  0 
109110
110111        // Calculate drop target items based on position in hierarchy 
111112        let  targetItems : ( null  |  SectionItem ) [ ]  =  [ ] 
@@ -144,27 +145,29 @@ export const NestedItems: React.FC<ItemWithChildrenProps> = ({
144145              firstCellWidth = { firstCellWidth } 
145146              firstCellXOffset = { firstCellXOffset } 
146147              hasSelectedAncestor = { hasSelectedAncestor } 
148+               indexPath = { itemIndexPath } 
147149              isDragging = { isDragging } 
148-               isFirstRootItem = { isFirstItemAtRootLevel } 
149-               isFocused = { focusedItemIndex  !==  undefined  &&  focusedItemIndex  ===  absoluteItemIndex } 
150+               isFocused = { focusedItemKey  !==  undefined  &&  focusedItemKey  ===  sectionItem . itemKey } 
150151              isHovered = { hoveredItemKey  ===  sectionItem . itemKey } 
151-               isInvalidTarget = { isInvalidTarget } 
152+               isInvalidTarget = { hasSelectedAncestor   ||   isItemSelected } 
152153              isSelected = { isItemSelected } 
153154              item = { sectionItem } 
154155              level = { level } 
155156              loadingItemKeys = { loadingItemKeys } 
156-               onClick = { onSelectionChange } 
157+               onClick = { onItemClick } 
157158              onDrag = { onItemDrag } 
158159              onDroppableHover = { onDroppableHover } 
159160              onFocusChange = { onFocusChange } 
160-               onKeyPress = { onItemKeyPress } 
161+               onKeyDown = { onItemKeyDown } 
161162              openItemKeys = { openItemKeys } 
162163              segmentWidth = { segmentWidth } 
163164              selectedItemKeys = { selectedItemKeys } 
164165              startOffset = { startOffset } 
165166              targetItems = { targetItems } 
166167              targetParentItemKey = { targetParentItemKey } 
167168              toggleExpand = { toggleItemExpand } 
169+               // isFirstSiblingItem={isFirstSiblingItem} 
170+               // isLastSiblingItem={isLastSiblingItem} 
168171            /> 
169172
170173            { hasNestedItems  &&  sectionItem . rows  &&  ( 
@@ -173,7 +176,7 @@ export const NestedItems: React.FC<ItemWithChildrenProps> = ({
173176                dropContextName = { dropContextName } 
174177                firstCellWidth = { firstCellWidth } 
175178                firstCellXOffset = { firstCellXOffset } 
176-                 focusedItemIndex = { focusedItemIndex } 
179+                 focusedItemKey = { focusedItemKey } 
177180                hasSelectedAncestor = { hasSelectedAncestor  ||  isItemSelected } 
178181                hoveredItemKey = { hoveredItemKey } 
179182                isDragging = { isDragging } 
@@ -183,11 +186,12 @@ export const NestedItems: React.FC<ItemWithChildrenProps> = ({
183186                loadingItemKeys = { loadingItemKeys } 
184187                onDroppableHover = { onDroppableHover } 
185188                onFocusChange = { onFocusChange } 
189+                 onItemClick = { onItemClick } 
186190                onItemDrag = { onItemDrag } 
187-                 onItemKeyPress = { onItemKeyPress } 
188-                 onSelectionChange = { onSelectionChange } 
191+                 onItemKeyDown = { onItemKeyDown } 
189192                openItemKeys = { openItemKeys } 
190193                parentIndex = { absoluteItemIndex  +  1 } 
194+                 parentIndexPath = { itemIndexPath } 
191195                parentItems = { [ ...parentItems ,  sectionItem ] } 
192196                segmentWidth = { segmentWidth } 
193197                selectedItemKeys = { selectedItemKeys } 
0 commit comments