Commit 173be3f1 authored by Jacob Thornton's avatar Jacob Thornton

change hella js... broke all the tests. i <3 wip

parent d9cbcfc2
$(document).ready(function(){ $(document).ready(function(){
// Dropdown example for topbar nav
// ===============================
$('body').dropdown() // catch any dropdowns on the page
// Scrollspy // Scrollspy
// ========= // =========
......
...@@ -1233,7 +1233,7 @@ ...@@ -1233,7 +1233,7 @@
</div> </div>
<h2>Fixed topbar</h2> <h2>Fixed topbar</h2>
<div class="topbar-wrapper" style="z-index: 5;"> <div class="topbar-wrapper" style="z-index: 5;">
<div class="topbar"> <div class="topbar" data-dropdown>
<div class="topbar-inner"> <div class="topbar-inner">
<div class="container"> <div class="container">
<h3><a href="#">Project Name</a></h3> <h3><a href="#">Project Name</a></h3>
......
This diff is collapsed.
...@@ -20,22 +20,23 @@ ...@@ -20,22 +20,23 @@
(function( $ ){ (function( $ ){
var selector = 'a.menu, .dropdown-toggle' var d = 'a.menu, .dropdown-toggle'
function clearMenus() { function clearMenus() {
$(selector).parent('li').removeClass('open') $(d).parent('li').removeClass('open')
} }
$(function () { $(function () {
$('body').bind("click", clearMenus) $('html').bind("click", clearMenus)
$('body').dropdown( '[data-dropdown] a.menu, [data-dropdown] .dropdown-toggle' )
}) })
/* DROPDOWN PLUGIN DEFINITION /* DROPDOWN PLUGIN DEFINITION
* ========================== */ * ========================== */
$.fn.dropdown = function ( options ) { $.fn.dropdown = function ( selector ) {
return this.each(function () { return this.each(function () {
$(this).delegate(selector, 'click', function (e) { $(this).delegate(selector || d, 'click', function (e) {
var li = $(this).parent('li') var li = $(this).parent('li')
, isActive = li.hasClass('open') , isActive = li.hasClass('open')
......
...@@ -54,16 +54,16 @@ ...@@ -54,16 +54,16 @@
var Modal = function ( content, options ) { var Modal = function ( content, options ) {
this.settings = $.extend({}, $.fn.modal.defaults) this.settings = $.extend({}, $.fn.modal.defaults)
this.$element = $(content)
.delegate('.close', 'click.modal', $.proxy(this.hide, this))
if ( options ) { if ( options ) {
$.extend( this.settings, options ) $.extend( this.settings, options )
}
this.$element = $(content) if ( options.show ) {
.bind('modal:show', $.proxy(this.show, this)) this.show()
.bind('modal:hide', $.proxy(this.hide, this)) }
.bind('modal:toggle', $.proxy(this.toggle, this)) }
.delegate('.close', 'click', $.proxy(this.hide, this))
return this return this
} }
...@@ -77,10 +77,10 @@ ...@@ -77,10 +77,10 @@
, show: function () { , show: function () {
var that = this var that = this
this.isShown = true this.isShown = true
this.$element.trigger('show')
_.escape.call(this) escape.call(this)
backdrop.call(this, function () {
_.backdrop.call(this, function () {
that.$element that.$element
.appendTo(document.body) .appendTo(document.body)
.show() .show()
...@@ -88,7 +88,7 @@ ...@@ -88,7 +88,7 @@
setTimeout(function () { setTimeout(function () {
that.$element that.$element
.addClass('in') .addClass('in')
.trigger('modal:shown') .trigger('shown')
}, 1) }, 1)
}) })
...@@ -99,19 +99,20 @@ ...@@ -99,19 +99,20 @@
e && e.preventDefault() e && e.preventDefault()
var that = this var that = this
this.isShown = false this.isShown = false
_.escape.call(this) escape.call(this)
this.$element.removeClass('in') this.$element
.trigger('hide')
.removeClass('in')
function removeElement () { function removeElement () {
that.$element that.$element
.detach() .hide()
.trigger('modal:hidden') .trigger('hidden')
_.backdrop.call(that) backdrop.call(that)
} }
$.support.transition && this.$element.hasClass('fade') ? $.support.transition && this.$element.hasClass('fade') ?
...@@ -127,9 +128,7 @@ ...@@ -127,9 +128,7 @@
/* MODAL PRIVATE METHODS /* MODAL PRIVATE METHODS
* ===================== */ * ===================== */
var _ = { function backdrop ( callback ) {
backdrop: function ( callback ) {
var that = this var that = this
, animate = this.$element.hasClass('fade') ? 'fade' : '' , animate = this.$element.hasClass('fade') ? 'fade' : ''
if ( this.isShown && this.settings.backdrop ) { if ( this.isShown && this.settings.backdrop ) {
...@@ -154,24 +153,22 @@ ...@@ -154,24 +153,22 @@
$.support.transition && this.$element.hasClass('fade')? $.support.transition && this.$element.hasClass('fade')?
this.$backdrop.one(transitionEnd, removeElement) : this.$backdrop.one(transitionEnd, removeElement) :
removeElement() removeElement()
} else { } else if ( callback ) {
callback() callback()
} }
} }
, escape: function () { function escape() {
var that = this var that = this
if ( this.isShown && this.settings.closeOnEscape ) { if ( this.isShown && this.settings.keyboard ) {
$('body').bind('keyup.modal.escape', function ( e ) { $('body').bind('keyup.modal', function ( e ) {
if ( e.which == 27 ) { if ( e.which == 27 ) {
that.hide() that.hide()
} }
}) })
} else if ( !this.isShown ) { } else if ( !this.isShown ) {
$('body').unbind('keyup.modal.escape') $('body').unbind('keyup.modal')
}
} }
} }
...@@ -179,17 +176,52 @@ ...@@ -179,17 +176,52 @@
* ======================= */ * ======================= */
$.fn.modal = function ( options ) { $.fn.modal = function ( options ) {
options = options || {} var modal = this.data('modal')
if (!modal) {
if (typeof options == 'string') {
options = {
show: /show|toggle/.test(options)
}
}
return this.each(function () { return this.each(function () {
return new Modal(this, options) $(this).data('modal', new Modal(this, options))
}) })
} }
if ( options === true ) {
return modal
}
if ( typeof options == 'string' ) {
modal[options]()
} else if ( modal ) {
modal.toggle()
}
return this
}
$.fn.modal.Modal = Modal $.fn.modal.Modal = Modal
$.fn.modal.defaults = { $.fn.modal.defaults = {
backdrop: false backdrop: false
, hideOnEscape: false , keyboard: false
, show: true
} }
/* MODAL DATA- IMPLEMENTATION
* ========================== */
$(function () {
$('body').delegate('[data-controls-modal]', 'click', function (e) {
e.preventDefault()
var $this = $(this).data('show', true)
$('#' + $this.attr('data-controls-modal')).modal( $this.data() )
})
})
})( jQuery || ender ) })( jQuery || ender )
\ No newline at end of file
...@@ -22,21 +22,20 @@ ...@@ -22,21 +22,20 @@
var $window = $(window) var $window = $(window)
function ScrollSpy( topbar ) { function ScrollSpy( topbar, selector ) {
var processScroll = $.proxy(this.processScroll, this) var processScroll = $.proxy(this.processScroll, this)
this.$topbar = $(topbar) this.$topbar = $(topbar)
this.setup() this.selector = selector || 'li > a'
this.$topbar this.refresh()
.delegate('li > a', 'click', processScroll) this.$topbar.delegate(this.selector, 'click', processScroll)
.bind('topbar:refresh', $.proxy(this.setup, this))
$window.scroll(processScroll) $window.scroll(processScroll)
this.processScroll() this.processScroll()
} }
ScrollSpy.prototype = { ScrollSpy.prototype = {
setup: function () { refresh: function () {
this.targets = this.$topbar.find('li > a').map(function () { this.targets = this.$topbar.find(this.selector).map(function () {
var href = $(this).attr('href') var href = $(this).attr('href')
return /^#\w/.test(href) && $(href).length ? href : null return /^#\w/.test(href) && $(href).length ? href : null
}) })
...@@ -65,11 +64,11 @@ ...@@ -65,11 +64,11 @@
this.activeTarget = target this.activeTarget = target
this.$topbar this.$topbar
.find('.active') .find(this.selector).parent('.active')
.removeClass('active') .removeClass('active')
this.$topbar this.$topbar
.find('a[href=' + target + ']') .find(this.selector + '[href="' + target + '"]')
.parent('li') .parent('li')
.addClass('active') .addClass('active')
} }
...@@ -79,10 +78,28 @@ ...@@ -79,10 +78,28 @@
/* SCROLLSPY PLUGIN DEFINITION /* SCROLLSPY PLUGIN DEFINITION
* =========================== */ * =========================== */
$.fn.scrollSpy = function() { $.fn.scrollSpy = function( options ) {
var scrollspy = this.data('scrollspy')
if (!scrollspy) {
return this.each(function () { return this.each(function () {
new ScrollSpy(this) $(this).data('scrollspy', new ScrollSpy( this, options ))
}) })
} }
if ( options === true ) {
return scrollspy
}
if ( typeof options == 'string' ) {
scrollspy[options]()
}
return this
}
$(function () {
$('body').scrollSpy('[data-scrollspy] li > a')
})
}( jQuery || ender ) }( jQuery || ender )
\ No newline at end of file
...@@ -49,10 +49,14 @@ ...@@ -49,10 +49,14 @@
/* TABS/PILLS PLUGIN DEFINITION /* TABS/PILLS PLUGIN DEFINITION
* ============================ */ * ============================ */
$.fn.tabs = $.fn.pills = function () { $.fn.tabs = $.fn.pills = function ( selector ) {
return this.each(function () { return this.each(function () {
$(this).delegate('.tabs > li > a, .pills > li > a, .dropdown-menu > li > a', 'click', tab) $(this).delegate(selector || '.tabs li > a, .pills > li > a', 'click', tab)
}) })
} }
$(function () {
$('body').tabs('ul[data-tabs] li > a, ul[data-pills] > li > a')
})
})( jQuery || ender ) })( jQuery || ender )
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment