Skip to content

Commit

Permalink
fix: get item offset with height as function
Browse files Browse the repository at this point in the history
Refs: #47
  • Loading branch information
Marco Cesarato committed Aug 31, 2021
1 parent 1bd0385 commit 435fe48
Showing 1 changed file with 46 additions and 8 deletions.
54 changes: 46 additions & 8 deletions lib/BigList.jsx
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,13 @@ import BigListItem, { BigListItemType } from "./BigListItem";
import BigListPlaceholder from "./BigListPlaceholder";
import BigListProcessor from "./BigListProcessor";
import BigListSection from "./BigListSection";
import { autobind, createElement, mergeViewStyle, processBlock } from "./utils";
import {
autobind,
createElement,
isNumeric,
mergeViewStyle,
processBlock,
} from "./utils";

class BigList extends PureComponent {
/**
Expand Down Expand Up @@ -563,18 +569,50 @@ class BigList extends PureComponent {
itemHeight,
numColumns,
} = this.props;

const headers = this.hasSections() ? section + 1 : 1;

const roundedIndex =
index % numColumns ? index - (index % numColumns) + numColumns : index;

return (
insetTop +
headerHeight +
headers * sectionHeaderHeight +
section * sectionFooterHeight +
roundedIndex * itemHeight
);
let sectionHeadersHeight = 0;
let sectionFootersHeight = 0;
let itemsHeight = 0;

if (isNumeric(sectionHeaderHeight)) {
sectionHeadersHeight = headers * sectionHeaderHeight;
} else {
for (let i = 0; i < headers; i++) {
sectionHeadersHeight += sectionHeaderHeight(i);
}
}

if (isNumeric(sectionFooterHeight)) {
sectionFootersHeight = section * sectionFooterHeight;
} else {
for (let i = 0; i < section; i++) {
sectionHeadersHeight += sectionHeaderHeight(i);
}
}

if (isNumeric(itemHeight)) {
itemsHeight = roundedIndex * itemHeight;
} else {
for (let s = 0; s <= section; s++) {
for (let i = 0; i <= roundedIndex; i++) {
itemsHeight += isNumeric(itemHeight)
? Number(itemHeight)
: itemHeight(s, i);
}
}
}

return insetTop + isNumeric(headerHeight)
? Number(headerHeight)
: headerHeight() +
sectionHeadersHeight +
sectionFootersHeight +
itemsHeight;
}

/**
Expand Down

0 comments on commit 435fe48

Please sign in to comment.