UNPKG

@shopify/polaris

Version:

Shopify’s admin product component library

31 lines (28 loc) 798 B
'use strict'; function scrollOptionIntoView(option, scrollable) { const listTop = scrollable.scrollTop; const listBottom = listTop + scrollable.clientHeight; const { offsetHeight: optionHeight } = option; const { offsetTop: optionTop } = option; const optionBottom = optionTop + optionHeight; const isVisible = optionTop > listTop && optionBottom < listBottom; if (!isVisible) { let top = 0; if (optionBottom > listBottom) { top = optionBottom + optionHeight * 0.85 - listBottom; } else if (optionTop < listTop) { top = optionTop - optionHeight * 0.15 - listTop; } requestAnimationFrame(() => { scrollable.scrollBy({ top, behavior: 'auto' }); }); } } exports.scrollOptionIntoView = scrollOptionIntoView;