@openui5/sap.m
Version:
OpenUI5 UI Library sap.m
47 lines (39 loc) • 1.49 kB
JavaScript
/*!
* OpenUI5
* (c) Copyright 2009-2023 SAP SE or an SAP affiliate company.
* Licensed under the Apache License, Version 2.0 - see LICENSE.txt.
*/
/*
* IMPORTANT: This is a private module, its API must not be used and is subject to change.
* Code other than the OpenUI5 libraries must not introduce dependencies to this module.
*/
sap.ui.define([], function () {
"use strict";
/**
* Scrolls an item into the visual viewport.
*
* @param {sap.m.ListItemBase} oItem The list item
* @param {sap.m.Popover | sap.m.Dialog} oPicker The picker control
* @public
*/
var scrollToItem = function(oItem, oPicker) {
var oItemDomRef = oItem && oItem.getDomRef && oItem.getDomRef(),
oPickerContentDomRef = oPicker && oPicker.getDomRef && oPicker.getDomRef('cont');
if (!oPickerContentDomRef || !oItemDomRef) {
return;
}
var iPickerScrollTop = oPickerContentDomRef.scrollTop,
iItemOffsetTop = oItemDomRef.offsetTop,
iPickerHeight = oPickerContentDomRef.clientHeight,
iItemHeight = oItemDomRef.offsetHeight;
if (iPickerScrollTop > iItemOffsetTop) {
// scroll up
oPickerContentDomRef.scrollTop = iItemOffsetTop;
// bottom edge of item > bottom edge of viewport
} else if ((iItemOffsetTop + iItemHeight) > (iPickerScrollTop + iPickerHeight)) {
// scroll down, the item is partly below the viewport of the list
oPickerContentDomRef.scrollTop = Math.ceil(iItemOffsetTop + iItemHeight - iPickerHeight);
}
};
return scrollToItem;
});