Added functionality for a viewport option, so that boundaries other than the window can be used to dynamically position the list