Files
atom/src/stdlib/jquery-extensions.coffee
Corey Johnson & Kevin Sawicki 8f030cd97e Always calculate dimensions with editor on DOM
Closes #206
2013-01-31 10:31:13 -08:00

85 lines
2.0 KiB
CoffeeScript

$ = require 'jquery'
_ = require 'underscore'
$.fn.scrollBottom = (newValue) ->
if newValue?
@scrollTop(newValue - @height())
else
@scrollTop() + @height()
$.fn.scrollToTop = ->
@scrollTop(0)
$.fn.scrollToBottom = ->
@scrollTop(@prop('scrollHeight'))
$.fn.scrollRight = (newValue) ->
if newValue?
@scrollLeft(newValue - @width())
else
@scrollLeft() + @width()
$.fn.pageUp = ->
@scrollTop(@scrollTop() - @height())
$.fn.pageDown = ->
@scrollTop(@scrollTop() + @height())
$.fn.isOnDom = ->
@closest(document.body).length is 1
$.fn.containsElement = (element) ->
(element[0].compareDocumentPosition(this[0]) & 8) == 8
$.fn.preempt = (eventName, handler) ->
@on eventName, (e, args...) ->
if handler(e, args...) == false then e.stopImmediatePropagation()
eventNameWithoutNamespace = eventName.split('.')[0]
handlers = @data('events')[eventNameWithoutNamespace]
handlers.unshift(handlers.pop())
$.fn.hasParent = ->
@parent()[0]?
$.fn.flashError = ->
@addClass 'error'
removeErrorClass = => @removeClass 'error'
window.setTimeout(removeErrorClass, 300)
$.fn.trueHeight = ->
this[0].getBoundingClientRect().height
$.fn.trueWidth = ->
this[0].getBoundingClientRect().width
$.fn.document = (eventDescriptions) ->
@data('documentation', {}) unless @data('documentation')
_.extend(@data('documentation'), eventDescriptions)
$.fn.events = ->
documentation = @data('documentation') ? {}
events = {}
for eventName of @data('events') ? {}
events[eventName] = documentation[eventName] ? null
if @hasParent()
_.extend(@parent().events(), events)
else
events
$.fn.command = (args...) ->
eventName = args[0]
documentation = {}
documentation[eventName] = _.humanizeEventName(eventName)
@document(documentation)
@on(args...)
$.fn.iconSize = (size) ->
@width(size).height(size).css('font-size', size)
$.Event.prototype.abortKeyBinding = ->
$.Event.prototype.currentTargetView = -> $(this.currentTarget).view()
$.Event.prototype.targetView = -> $(this.target).view()