diff options
author | Jacob Thornton <jacobthornton@gmail.com> | 2011-09-07 10:20:56 +0400 |
---|---|---|
committer | Jacob Thornton <jacobthornton@gmail.com> | 2011-09-07 10:20:56 +0400 |
commit | fb8987148aeae4b9aa2b4c28fa3ad5346b8c56b1 (patch) | |
tree | add30766dfc07105e3154cc848c60b7f9171a248 /docs/assets/js/bootstrap-modal.js | |
parent | d0882c580de1fc2d5c52b684671b554bb8941ddf (diff) |
move javascript from examples into docs
Diffstat (limited to 'docs/assets/js/bootstrap-modal.js')
-rw-r--r-- | docs/assets/js/bootstrap-modal.js | 157 |
1 files changed, 157 insertions, 0 deletions
diff --git a/docs/assets/js/bootstrap-modal.js b/docs/assets/js/bootstrap-modal.js new file mode 100644 index 0000000000..4bc395e1c4 --- /dev/null +++ b/docs/assets/js/bootstrap-modal.js @@ -0,0 +1,157 @@ +(function( $ ){ + + /* CSS TRANSITION SUPPORT (https://gist.github.com/373874) + * ======================================================= */ + + var transitionEnd + + $(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 ( options ) { + this.settings = $.extend({}, $.fn.modal.defaults) + + if ( typeof options == 'string' ) { + this.settings.content = options + } else if ( options ) { + $.extend( this.settings, options ) + } + + return this + } + + Modal.prototype = { + + toggle: function () { + return this[!this.isOpen ? 'open' : 'close']() + } + + , open: function () { + var that = this + this.isOpen = true + + this.$element = $(this.settings.content) + + _.escape.call(this) + _.backdrop.call(this) + + this.$element + .delegate('.close', 'click', function (e) { e.preventDefault(); that.close() }) + .appendTo(document.body) + .show() + + setTimeout(function () { + that.$element.addClass('in') + that.$backdrop && that.$backdrop.addClass('in') + }, 1) + + return this + } + + , close: function () { + var that = this + + this.isOpen = false + + _.escape.call(this) + _.backdrop.call(this) + + this.$element.removeClass('in') + + function removeElement () { + that.$element.remove() + that.$element = null + } + + $.support.transition && this.$element.hasClass('fade') ? + this.$element.bind(transitionEnd, removeElement) : + removeElement() + + return this + } + + } + + + /* MODAL PRIVATE METHODS + * ===================== */ + + var _ = { + + backdrop: function () { + var that = this + , animate = this.$element.hasClass('fade') ? 'fade' : '' + if ( this.isOpen && this.settings.backdrop ) { + this.$backdrop = $('<div class="modal-backdrop ' + animate + '" />') + .click(function () { that.close() }) + .appendTo(document.body) + } else if ( !this.isOpen && this.$backdrop ) { + this.$backdrop.removeClass('in') + + function removeElement() { + that.$backdrop.remove() + that.$backdrop = null + } + + $.support.transition && this.$element.hasClass('fade')? + this.$backdrop.bind(transitionEnd, removeElement) : + removeElement() + } + } + + , escape: function () { + var that = this + if ( this.isOpen && this.settings.closeOnEscape ) { + $('body').bind('keyup.modal.escape', function ( e ) { + if ( e.which == 27 ) { + that.close() + } + }) + } else if ( !this.isOpen ) { + $('body').unbind('keyup.modal.escape') + } + } + + } + + + /* MODAL PLUGIN DEFINITION + * ======================= */ + + $.fn.modal = function ( options ) { + options = options || {} + options.content = this + return new Modal(options) + } + + $.fn.modal.defaults = { + backdrop: false + , closeOnEscape: false + , content: false + } + +})( jQuery || ender )
\ No newline at end of file |