From c26eb016fb519964366806a907dcb12d34451957 Mon Sep 17 00:00:00 2001 From: Jacob Thornton Date: Fri, 26 Aug 2011 23:57:35 -0700 Subject: starting up bootstrap-js... --- examples/assets/js/bootstrap-modals.js | 156 +++++++++++++++++++++++++++ examples/bootstrap-js.html | 189 +++++++++++++++++++++++++++++++++ 2 files changed, 345 insertions(+) create mode 100644 examples/assets/js/bootstrap-modals.js create mode 100644 examples/bootstrap-js.html (limited to 'examples') diff --git a/examples/assets/js/bootstrap-modals.js b/examples/assets/js/bootstrap-modals.js new file mode 100644 index 000000000..038588fb4 --- /dev/null +++ b/examples/assets/js/bootstrap-modals.js @@ -0,0 +1,156 @@ +(function( $ ){ + + /* CSS TRANSITION SUPPORT (https://gist.github.com/373874) + * ======================================================= */ + + $.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; + })(); + + + /* SHARED VARS + * =========== */ + + var $window = $(window) + , transitionEnd + + // 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 = { + backdrop: false + , closeOnEscape: false + , content: false + } + + 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 + + _private.onEscape.call(this) + _private.backdrop.call(this) + + this.$element = $(this.settings.content) + .delegate('.close', 'click', function (e) { e.preventDefault(); that.close() }) + .appendTo(document.body) + + setTimeout(function () { + that.$element.addClass('open') + that.$backdrop && that.$backdrop.addClass('open') + }, 1) + + return this + } + + , close: function () { + var that = this + + this.isOpen = false + + _private.onEscape.call(this) + _private.backdrop.call(this) + + this.$element.removeClass('open') + + function removeElement () { + that.$element.remove() + that.$element = null + } + + $.support.transition ? + this.$element.bind(transitionEnd, removeElement) : + removeElement() + + return this + } + + } + + + /* MODAL PRIVATE METHODS + * ===================== */ + + var _private = { + + backdrop: function () { + var that = this + if (this.isOpen && this.settings.backdrop) { + this.$backdrop = $('