kdf
Version:
91 lines (55 loc) • 2.22 kB
text/coffeescript
require('jquery-mousewheel') $
KDView = require './../../core/view.coffee'
module.exports = class KDScrollView extends KDView
constructor: (options = {}, data) ->
options.bind = KD.utils.curry 'mousewheel scroll', options.bind
options.cssClass = KD.utils.curry 'kdscrollview', options.cssClass
super options, data
= no
hasScrollBars: -> or
hasVerticalScrollBars: -> >
hasHorizontalScrollBars: -> >
getScrollHeight: -> .scrollHeight
getScrollWidth: -> .scrollWidth
getScrollTop: -> .scrollTop
getScrollLeft: -> .scrollLeft
setScrollHeight: (val) -> .scrollHeight = val
setScrollWidth: (val) -> .scrollWidth = val
setScrollTop: (val) -> .scrollTop = val
setScrollLeft: (val) -> .scrollLeft = val
scrollTo: (options, callback) ->
{ top, left, duration } = options
top or= 0
left or= 0
if duration?
@$().animate
scrollTop : top
scrollLeft : left
, duration
, callback
else
top
left
callback?()
scrollToBottom: -> top : -
scrollToSubView: (subView) ->
viewTop =
viewHeight =
viewScrollTop =
subViewTop = subView.getY()
subViewHeight = subView.getHeight()
subViewRelTop = subViewTop - viewTop + viewScrollTop
# subview is in visible area
if subViewTop - viewTop + subViewHeight < viewHeight and subViewTop - viewTop >= 0
# subview is in visible area
return
# subview is above visible area
else if subViewTop - viewTop < 0
top : subViewRelTop
# subview is below visible area
else if subViewTop - viewTop + subViewHeight > viewHeight
top : subViewRelTop - viewHeight + subViewHeight
isAtBottom: -> + >=
mouseWheel: ->
return no if
return yes