Skip to content

Commit 2c3d39b

Browse files
committed
Fix "Show cleared items" sticky behavior
1 parent 0a88928 commit 2c3d39b

File tree

1 file changed

+24
-7
lines changed

1 file changed

+24
-7
lines changed

packages/components/src/hooks/use-cards-props.tsx

Lines changed: 24 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ import {
1111
} from '@devhub/core'
1212
import _ from 'lodash'
1313
import React, { useCallback, useMemo, useRef } from 'react'
14-
import { View } from 'react-native'
14+
import { Dimensions, View } from 'react-native'
1515

1616
import {
1717
getCardPropsForItem,
@@ -32,6 +32,7 @@ import {
3232
cardsWatchingOwnerFilterBarTotalHeight,
3333
} from '../components/cards/CardsWatchingOwnerFilterBar'
3434
import { EmptyCards } from '../components/cards/EmptyCards'
35+
import { columnHeaderHeight } from '../components/columns/ColumnHeader'
3536
import { ColumnLoadingIndicator } from '../components/columns/ColumnLoadingIndicator'
3637
import { ButtonLink } from '../components/common/ButtonLink'
3738
import { QuickFeedbackRow } from '../components/common/QuickFeedbackRow'
@@ -275,12 +276,28 @@ export function useCardsProps<ItemT extends EnhancedItem>({
275276
refresh,
276277
topSpacing: (!data.length && header && header.size) || 0,
277278
}
278-
const sticky = !!(!fetchNextPage && cardsFooterProps.clearedAt)
279-
// && // TODO
280-
// itemLayouts[itemLayouts.length - 1] &&
281-
// itemLayouts[itemLayouts.length - 1]!.offset +
282-
// itemLayouts[itemLayouts.length - 1]!.length <
283-
// windowHeight - ((header && header.size) || 0) - columnHeaderHeight
279+
280+
let _tempTotalOffset = 0
281+
const sticky = !!(
282+
!fetchNextPage &&
283+
cardsFooterProps.clearedAt &&
284+
itemNodeIdOrIds &&
285+
!itemNodeIdOrIds.some((nodeIdOrId, index) => {
286+
const itemSize = getItemSize(nodeIdOrId, index)
287+
if (!itemSize) return
288+
289+
_tempTotalOffset += itemSize
290+
291+
if (
292+
_tempTotalOffset >
293+
Dimensions.get('window').height -
294+
((header && header.size) || 0) -
295+
columnHeaderHeight
296+
) {
297+
return true
298+
}
299+
})
300+
)
284301

285302
const footer = useMemo<OneListProps<DataItemT>['footer']>(() => {
286303
if (isOverMaxColumnLimit || isOverPlanColumnLimit) return undefined

0 commit comments

Comments
 (0)