Add $.fn.scrollUp and .scrollDown

These scroll the element by a small amount up or down.
This commit is contained in:
Corey Johnson & Nathan Sobo
2013-03-11 17:31:17 -06:00
parent 140b22737e
commit 7e03880bd0
2 changed files with 36 additions and 0 deletions

View File

@@ -1,4 +1,5 @@
$ = require 'jquery'
_ = require 'underscore'
{View, $$} = require 'space-pen'
describe 'jQuery extensions', ->
@@ -76,6 +77,35 @@ describe 'jQuery extensions', ->
'a1': "A1: Waste perfectly-good steak"
'a2': null
describe "$.fn.scrollUp/Down/ToTop/ToBottom", ->
it "scrolls the element in the specified way if possible", ->
view = $$ -> @div => _.times 20, => @div('A')
view.css(height: 100, width: 100, overflow: 'scroll')
view.attachToDom()
view.scrollUp()
expect(view.scrollTop()).toBe 0
view.scrollDown()
expect(view.scrollTop()).toBeGreaterThan 0
previousScrollTop = view.scrollTop()
view.scrollDown()
expect(view.scrollTop()).toBeGreaterThan previousScrollTop
view.scrollToBottom()
expect(view.scrollTop()).toBe view.prop('scrollHeight') - 100
previousScrollTop = view.scrollTop()
view.scrollDown()
expect(view.scrollTop()).toBe previousScrollTop
view.scrollUp()
expect(view.scrollTop()).toBeLessThan previousScrollTop
previousScrollTop = view.scrollTop()
view.scrollUp()
expect(view.scrollTop()).toBeLessThan previousScrollTop
view.scrollToTop()
expect(view.scrollTop()).toBe 0
describe "Event.prototype", ->
class GrandchildView extends View
@content: -> @div class: 'grandchild'

View File

@@ -7,6 +7,12 @@ $.fn.scrollBottom = (newValue) ->
else
@scrollTop() + @height()
$.fn.scrollDown = ->
@scrollTop(@scrollTop() + $(window).height() / 20)
$.fn.scrollUp = ->
@scrollTop(@scrollTop() - $(window).height() / 20)
$.fn.scrollToTop = ->
@scrollTop(0)