Я пытаюсь разработать компонент временной шкалы. Это урезанная версия для демонстрации проблемы:
https://jsfiddle.net/mauron85/5vverasn/
Он должен отображать 48-часовые интервалы между двумя датами (30.01.2007 - 31.01.2007) в заголовке таблицы и маршруты курьера (отображаемые в виде каскада квадратов), часы работы курьера и полосатый фон в теле таблицы.
Моя проблема в том, что прокрутка возможна только до последнего маршрута курьера (15:00). Других маршрутов нет, но я хотел бы включить прокрутку до самого последнего часового интервала (23:00)
Это работает, когда в теле таблицы есть только один компонент, но не когда их больше. В этом случае есть только полосатый фон.
Псевдокод:
это работает отлично:
<ScrollSync>
<AutoSizer disableHeight>
<Grid className={styles.HeaderGrid} /> {/* hour intervals */}
<div className={styles.Body}>
<Grid /> {/* table striped background */}
</div>
</AutoSizer>
</ScrollSync>
но прокрутка ограничена, когда в AutoSizer несколько дочерних элементов:
<ScrollSync>
<AutoSizer disableHeight>
<div>
<Grid className={styles.HeaderGrid} /> {/* hour intervals */}
<div className={styles.Body}>
<Grid /> {/* table striped background */}
<Collection/> {/* courier routes has to be collection */}
<Collection/> {/* courier working hours has to be collection */}
</div>
</div>
</AutoSizer>
</ScrollSync>
Блок комментирования: {/* при следовании комментарию прокрутка работает должным образом */} в примере проекта для получить ожидаемое поведение прокрутки.
Не уверен на 100%, в чем подвох, но я считаю, что это потому, что каждый дочерний компонент Grid, Collection... имеет свой собственный ReactVirtualized__Collection__innerScrollContainer, который имеет разную ширину, и только самый последний в дереве DOM фактически прокручивается/ видимый. Игра с z-индексом компонентов подтверждает это.