vendor/assets/javascripts/bootstrap/modal.js in css-bootstrap-rails-0.0.6 vs vendor/assets/javascripts/bootstrap/modal.js in css-bootstrap-rails-0.0.7
- old
+ new
@@ -1,7 +1,7 @@
/* =========================================================
- * bootstrap-modal.js v1.4.0
+ * bootstrap-modal.js v2.0.0
* http://twitter.github.com/bootstrap/javascript.html#modal
* =========================================================
* Copyright 2011 Twitter, Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License");
@@ -20,62 +20,33 @@
!function( $ ){
"use strict"
- /* CSS TRANSITION SUPPORT (https://gist.github.com/373874)
- * ======================================================= */
+ /* MODAL CLASS DEFINITION
+ * ====================== */
- var transitionEnd
-
- $(document).ready(function () {
-
- $.support.transition = (function () {
- var thisBody = document.body || document.documentElement
- , thisStyle = thisBody.style
- , support = thisStyle.transition !== undefined || thisStyle.WebkitTransition !== undefined || thisStyle.MozTransition !== undefined || thisStyle.MsTransition !== undefined || thisStyle.OTransition !== undefined
- return support
- })()
-
- // set CSS transition event type
- if ( $.support.transition ) {
- transitionEnd = "TransitionEnd"
- if ( $.browser.webkit ) {
- transitionEnd = "webkitTransitionEnd"
- } else if ( $.browser.mozilla ) {
- transitionEnd = "transitionend"
- } else if ( $.browser.opera ) {
- transitionEnd = "oTransitionEnd"
- }
- }
-
- })
-
-
- /* MODAL PUBLIC CLASS DEFINITION
- * ============================= */
-
var Modal = function ( content, options ) {
this.settings = $.extend({}, $.fn.modal.defaults, options)
this.$element = $(content)
- .delegate('.close', 'click.modal', $.proxy(this.hide, this))
-
- if ( this.settings.show ) {
- this.show()
- }
-
- return this
+ .delegate('[data-dismiss="modal"]', 'click.dismiss.modal', $.proxy(this.hide, this))
+ this.settings.show && this.show()
}
Modal.prototype = {
- toggle: function () {
+ constructor: Modal
+
+ , toggle: function () {
return this[!this.isShown ? 'show' : 'hide']()
}
, show: function () {
var that = this
+
+ if (this.isShown) return
+
this.isShown = true
this.$element.trigger('show')
escape.call(this)
backdrop.call(this, function () {
@@ -90,24 +61,20 @@
}
that.$element.addClass('in')
transition ?
- that.$element.one(transitionEnd, function () { that.$element.trigger('shown') }) :
+ that.$element.one($.support.transition.end, function () { that.$element.trigger('shown') }) :
that.$element.trigger('shown')
})
-
- return this
}
- , hide: function (e) {
+ , hide: function ( e ) {
e && e.preventDefault()
- if ( !this.isShown ) {
- return this
- }
+ if (!this.isShown) return
var that = this
this.isShown = false
escape.call(this)
@@ -117,29 +84,26 @@
.removeClass('in')
$.support.transition && this.$element.hasClass('fade') ?
hideWithTransition.call(this) :
hideModal.call(this)
-
- return this
}
}
/* MODAL PRIVATE METHODS
* ===================== */
function hideWithTransition() {
- // firefox drops transitionEnd events :{o
var that = this
, timeout = setTimeout(function () {
- that.$element.unbind(transitionEnd)
+ that.$element.unbind($.support.transition.end)
hideModal.call(that)
}, 500)
- this.$element.one(transitionEnd, function () {
+ this.$element.one($.support.transition.end, function () {
clearTimeout(timeout)
hideModal.call(that)
})
}
@@ -152,109 +116,89 @@
}
function backdrop ( callback ) {
var that = this
, animate = this.$element.hasClass('fade') ? 'fade' : ''
- if ( this.isShown && this.settings.backdrop ) {
+
+ if (this.isShown && this.settings.backdrop) {
var doAnimate = $.support.transition && animate
this.$backdrop = $('<div class="modal-backdrop ' + animate + '" />')
.appendTo(document.body)
- if ( this.settings.backdrop != 'static' ) {
+ if (this.settings.backdrop != 'static') {
this.$backdrop.click($.proxy(this.hide, this))
}
- if ( doAnimate ) {
- this.$backdrop[0].offsetWidth // force reflow
- }
+ if (doAnimate) this.$backdrop[0].offsetWidth // force reflow
this.$backdrop.addClass('in')
doAnimate ?
- this.$backdrop.one(transitionEnd, callback) :
+ this.$backdrop.one($.support.transition.end, callback) :
callback()
- } else if ( !this.isShown && this.$backdrop ) {
+ } else if (!this.isShown && this.$backdrop) {
this.$backdrop.removeClass('in')
$.support.transition && this.$element.hasClass('fade')?
- this.$backdrop.one(transitionEnd, $.proxy(removeBackdrop, this)) :
+ this.$backdrop.one($.support.transition.end, $.proxy(removeBackdrop, this)) :
removeBackdrop.call(this)
- } else if ( callback ) {
- callback()
+ } else if (callback) {
+ callback()
}
}
function removeBackdrop() {
this.$backdrop.remove()
this.$backdrop = null
}
function escape() {
var that = this
- if ( this.isShown && this.settings.keyboard ) {
- $(document).bind('keyup.modal', function ( e ) {
- if ( e.which == 27 ) {
- that.hide()
- }
+ if (this.isShown && this.settings.keyboard) {
+ $(document).bind('keyup.dismiss.modal', function ( e ) {
+ e.which == 27 && that.hide()
})
- } else if ( !this.isShown ) {
- $(document).unbind('keyup.modal')
+ } else if (!this.isShown) {
+ $(document).unbind('keyup.dismiss.modal')
}
}
/* MODAL PLUGIN DEFINITION
* ======================= */
- $.fn.modal = function ( options ) {
- var modal = this.data('modal')
-
- if (!modal) {
-
- if (typeof options == 'string') {
- options = {
- show: /show|toggle/.test(options)
- }
- }
-
- return this.each(function () {
- $(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 = function ( option ) {
+ return this.each(function () {
+ var $this = $(this)
+ , data = $this.data('modal')
+ , options = typeof option == 'object' && option
+ if (!data) $this.data('modal', (data = new Modal(this, options)))
+ if (typeof option == 'string') data[option]()
+ })
}
- $.fn.modal.Modal = Modal
-
$.fn.modal.defaults = {
- backdrop: false
- , keyboard: false
- , show: false
+ backdrop: true
+ , keyboard: true
+ , show: true
}
+ $.fn.modal.Modal = Modal
- /* MODAL DATA- IMPLEMENTATION
- * ========================== */
+ /* MODAL DATA-API
+ * ============== */
+
$(document).ready(function () {
- $('body').delegate('[data-controls-modal]', 'click', function (e) {
+ $('body').delegate('[data-toggle="modal"]', 'click.modal.data-api', function ( e ) {
+ var $this = $(this)
+ , target = $this.attr('data-target') || $this.attr('href')
+ , option = $(target).data('modal') ? 'toggle' : $this.data()
e.preventDefault()
- var $this = $(this).data('show', true)
- $('#' + $this.attr('data-controls-modal')).modal( $this.data() )
+ $(target).modal(option)
})
})
-}( window.jQuery || window.ender );
+}( window.jQuery || window.ender )
\ No newline at end of file