Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Browserify adapter #87

Open
wants to merge 1 commit into
base: develop
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
151 changes: 151 additions & 0 deletions src/adapter-browserify.coffee
Original file line number Diff line number Diff line change
@@ -0,0 +1,151 @@
# jQuery Opentip Adapter
# ======================
#
# Uses jQuery

# Because $ is my favorite character
module.exports = ((Opentip, $) ->


# Augment jQuery
$.fn.opentip = (content, title, options) ->
new Opentip this, content, title, options


# And now the class
class Adapter

name: "browserify"

# Simply using $.domReady
domReady: (callback) -> $ callback


# DOM
# ===

# Using bonzo to create html
create: (html) -> $ html


# Element handling
# ----------------

# Wraps the element in ender
wrap: (element) ->
element = $ element
throw new Error "Multiple elements provided." if element.length > 1
element

# Returns the unwrapped element
unwrap: (element) -> $(element)[0]

# Returns the tag name of the element
tagName: (element) -> @unwrap(element).tagName

# Returns or sets the given attribute of element
#
# It's important not to simply forward name and value because the value
# is set whether or not the value argument is present
attr: (element, args...) -> $(element).attr args...

# Returns or sets the given data of element
# It's important not to simply forward name and value because the value
# is set whether or not the value argument is present
data: (element, args...) -> $(element).data args...

# Finds elements by selector
find: (element, selector) -> $(element).find(selector).get(0)

# Finds all elements by selector
findAll: (element, selector) -> $(element).find selector

# Updates the content of the element
update: (element, content, escape) ->
element = $ element
if escape
element.text content
else
element.html content

# Appends given child to element
append: (element, child) -> $(element).append child

# Removes element
remove: (element) -> $(element).remove()

# Add a class
addClass: (element, className) -> $(element).addClass className

# Remove a class
removeClass: (element, className) -> $(element).removeClass className

# Set given css properties
css: (element, properties) -> $(element).css properties

# Returns an object with given dimensions
dimensions: (element) ->
{
width: $(element).outerWidth()
height: $(element).outerHeight()
}

# Returns the scroll offsets of current document
scrollOffset: ->
[
window.pageXOffset or document.documentElement.scrollLeft or document.body.scrollLeft
window.pageYOffset or document.documentElement.scrollTop or document.body.scrollTop
]

# Returns the dimensions of the viewport (currently visible browser area)
viewportDimensions: ->
{
width: document.documentElement.clientWidth
height: document.documentElement.clientHeight
}

# Returns an object with x and y
mousePosition: (e) ->
return null unless e?
x: e.pageX, y: e.pageY


# Returns the offset of the element
offset: (element) ->
offset = $(element).offset()
{
left: offset.left
top: offset.top
}

# Observe given eventName
observe: (element, eventName, observer) -> $(element).bind eventName, observer

# Stop observing event
stopObserving: (element, eventName, observer) -> $(element).unbind eventName, observer

# Perform an AJAX request and call the appropriate callbacks.
ajax: (options) ->
throw new Error "No url provided" unless options.url?
$.ajax(
url: options.url
type: options.method?.toUpperCase() ? "GET"
)
.done((content) -> options.onSuccess? content)
.fail((request) -> options.onError? "Server responded with status #{request.status}")
.always(-> options.onComplete?())


# Utility functions
# =================

# Creates a shallow copy of the object
clone: (object) -> $.extend { }, object

# Copies all properties from sources to target
extend: (target, sources...) -> $.extend target, sources...

# Add the adapter to the list
Opentip.addAdapter new Adapter

)
6 changes: 4 additions & 2 deletions test/src/200-adapters.coffee
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,8 @@ $ = jQuery

if Opentip.adapters.component
adapters = [ "component" ]
else if Opentip.adapters.browserify
adapters = [ "browserify" ]
else
adapters = [
"native"
Expand Down Expand Up @@ -180,8 +182,8 @@ describe "Generic adapter", ->

describe "viewportDimensions()", ->
it "should return the viewportDimensions", ->
origDimensions =

origDimensions =
width: document.documentElement.clientWidth
height: document.documentElement.clientHeight

Expand Down
3 changes: 2 additions & 1 deletion test/test.html
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@
<script src="../lib/adapter-native.js"></script>

<!-- <script src="../lib/adapter-component.js"></script> -->
<!-- <script src="../lib/adapter-browserify.js"></script> -->

<script src="../lib/adapter-ender.js"></script>

Expand All @@ -32,7 +33,7 @@


<script>
mocha.ui('bdd');
mocha.ui('bdd');
mocha.reporter('html');


Expand Down
Loading