| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253 |
- /* eslint-disable
- max-len,
- */
- // TODO: This file was created by bulk-decaffeinate.
- // Fix any style issues and re-enable lint.
- /*
- * decaffeinate suggestions:
- * DS102: Remove unnecessary code created because of implicit returns
- * DS207: Consider shorter variations of null checks
- * Full docs: https://github.com/decaffeinate/decaffeinate/blob/master/docs/suggestions.md
- */
- import App from '../../../base'
- export default App.directive('infiniteScroll', () => ({
- link(scope, element, attrs, ctrl) {
- const innerElement = element.find('.infinite-scroll-inner')
- element.css({ 'overflow-y': 'auto' })
- const atEndOfListView = function () {
- if (attrs.infiniteScrollUpwards != null) {
- return atTopOfListView()
- } else {
- return atBottomOfListView()
- }
- }
- var atTopOfListView = () => element.scrollTop() < 30
- var atBottomOfListView = () =>
- element.scrollTop() + element.height() >= innerElement.height() - 30
- const listShorterThanContainer = () =>
- element.height() > innerElement.height()
- var loadUntilFull = function () {
- if (
- (listShorterThanContainer() || atEndOfListView()) &&
- !scope.$eval(attrs.infiniteScrollDisabled)
- ) {
- const promise = scope.$eval(attrs.infiniteScroll)
- return promise.then(() => setTimeout(() => loadUntilFull(), 0))
- }
- }
- element.on('scroll', event => loadUntilFull())
- return scope.$watch(attrs.infiniteScrollInitialize, function (value) {
- if (value) {
- return loadUntilFull()
- }
- })
- },
- }))
|