mirror of https://github.com/twbs/bootstrap.git
				
				
				
			Merge branch '2.2.3' of github.com:twitter/bootstrap into 2.2.3
This commit is contained in:
		
						commit
						5d776bcfd2
					
				
							
								
								
									
										20
									
								
								Makefile
								
								
								
								
							
							
						
						
									
										20
									
								
								Makefile
								
								
								
								
							| 
						 | 
					@ -18,8 +18,8 @@ build:
 | 
				
			||||||
	@jshint js/*.js --config js/.jshintrc
 | 
						@jshint js/*.js --config js/.jshintrc
 | 
				
			||||||
	@jshint js/tests/unit/*.js --config js/.jshintrc
 | 
						@jshint js/tests/unit/*.js --config js/.jshintrc
 | 
				
			||||||
	@echo "Running JSHint on javascript...             ${CHECK} Done"
 | 
						@echo "Running JSHint on javascript...             ${CHECK} Done"
 | 
				
			||||||
	@recess --compile ${BOOTSTRAP_LESS} > ${BOOTSTRAP}
 | 
						@./node_modules/.bin/recess --compile ${BOOTSTRAP_LESS} > ${BOOTSTRAP}
 | 
				
			||||||
	@recess --compile ${BOOTSTRAP_RESPONSIVE_LESS} > ${BOOTSTRAP_RESPONSIVE}
 | 
						@./node_modules/.bin/recess --compile ${BOOTSTRAP_RESPONSIVE_LESS} > ${BOOTSTRAP_RESPONSIVE}
 | 
				
			||||||
	@echo "Compiling LESS with Recess...               ${CHECK} Done"
 | 
						@echo "Compiling LESS with Recess...               ${CHECK} Done"
 | 
				
			||||||
	@node docs/build
 | 
						@node docs/build
 | 
				
			||||||
	@cp img/* docs/assets/img/
 | 
						@cp img/* docs/assets/img/
 | 
				
			||||||
| 
						 | 
					@ -27,7 +27,7 @@ build:
 | 
				
			||||||
	@cp js/tests/vendor/jquery.js docs/assets/js/
 | 
						@cp js/tests/vendor/jquery.js docs/assets/js/
 | 
				
			||||||
	@echo "Compiling documentation...                  ${CHECK} Done"
 | 
						@echo "Compiling documentation...                  ${CHECK} Done"
 | 
				
			||||||
	@cat js/bootstrap-transition.js js/bootstrap-alert.js js/bootstrap-button.js js/bootstrap-carousel.js js/bootstrap-collapse.js js/bootstrap-dropdown.js js/bootstrap-modal.js js/bootstrap-tooltip.js js/bootstrap-popover.js js/bootstrap-scrollspy.js js/bootstrap-tab.js js/bootstrap-typeahead.js js/bootstrap-affix.js > docs/assets/js/bootstrap.js
 | 
						@cat js/bootstrap-transition.js js/bootstrap-alert.js js/bootstrap-button.js js/bootstrap-carousel.js js/bootstrap-collapse.js js/bootstrap-dropdown.js js/bootstrap-modal.js js/bootstrap-tooltip.js js/bootstrap-popover.js js/bootstrap-scrollspy.js js/bootstrap-tab.js js/bootstrap-typeahead.js js/bootstrap-affix.js > docs/assets/js/bootstrap.js
 | 
				
			||||||
	@uglifyjs docs/assets/js/bootstrap.js -nc > docs/assets/js/bootstrap.min.tmp.js
 | 
						@./node_modules/.bin/uglifyjs -nc docs/assets/js/bootstrap.js > docs/assets/js/bootstrap.min.tmp.js
 | 
				
			||||||
	@echo "/**\n* Bootstrap.js v2.2.3 by @fat & @mdo\n* Copyright 2012 Twitter, Inc.\n* http://www.apache.org/licenses/LICENSE-2.0.txt\n*/" > docs/assets/js/copyright.js
 | 
						@echo "/**\n* Bootstrap.js v2.2.3 by @fat & @mdo\n* Copyright 2012 Twitter, Inc.\n* http://www.apache.org/licenses/LICENSE-2.0.txt\n*/" > docs/assets/js/copyright.js
 | 
				
			||||||
	@cat docs/assets/js/copyright.js docs/assets/js/bootstrap.min.tmp.js > docs/assets/js/bootstrap.min.js
 | 
						@cat docs/assets/js/copyright.js docs/assets/js/bootstrap.min.tmp.js > docs/assets/js/bootstrap.min.js
 | 
				
			||||||
	@rm docs/assets/js/copyright.js docs/assets/js/bootstrap.min.tmp.js
 | 
						@rm docs/assets/js/copyright.js docs/assets/js/bootstrap.min.tmp.js
 | 
				
			||||||
| 
						 | 
					@ -43,8 +43,8 @@ build:
 | 
				
			||||||
#
 | 
					#
 | 
				
			||||||
 | 
					
 | 
				
			||||||
test:
 | 
					test:
 | 
				
			||||||
	jshint js/*.js --config js/.jshintrc
 | 
						./node_modules/.bin/jshint js/*.js --config js/.jshintrc
 | 
				
			||||||
	jshint js/tests/unit/*.js --config js/.jshintrc
 | 
						./node_modules/.bin/jshint js/tests/unit/*.js --config js/.jshintrc
 | 
				
			||||||
	node js/tests/server.js &
 | 
						node js/tests/server.js &
 | 
				
			||||||
	phantomjs js/tests/phantom.js "http://localhost:3000/js/tests"
 | 
						phantomjs js/tests/phantom.js "http://localhost:3000/js/tests"
 | 
				
			||||||
	kill -9 `cat js/tests/pid.txt`
 | 
						kill -9 `cat js/tests/pid.txt`
 | 
				
			||||||
| 
						 | 
					@ -67,12 +67,12 @@ bootstrap:
 | 
				
			||||||
	mkdir -p bootstrap/css
 | 
						mkdir -p bootstrap/css
 | 
				
			||||||
	mkdir -p bootstrap/js
 | 
						mkdir -p bootstrap/js
 | 
				
			||||||
	cp img/* bootstrap/img/
 | 
						cp img/* bootstrap/img/
 | 
				
			||||||
	recess --compile ${BOOTSTRAP_LESS} > bootstrap/css/bootstrap.css
 | 
						./node_modules/.bin/recess --compile ${BOOTSTRAP_LESS} > bootstrap/css/bootstrap.css
 | 
				
			||||||
	recess --compress ${BOOTSTRAP_LESS} > bootstrap/css/bootstrap.min.css
 | 
						./node_modules/.bin/recess --compress ${BOOTSTRAP_LESS} > bootstrap/css/bootstrap.min.css
 | 
				
			||||||
	recess --compile ${BOOTSTRAP_RESPONSIVE_LESS} > bootstrap/css/bootstrap-responsive.css
 | 
						./node_modules/.bin/recess --compile ${BOOTSTRAP_RESPONSIVE_LESS} > bootstrap/css/bootstrap-responsive.css
 | 
				
			||||||
	recess --compress ${BOOTSTRAP_RESPONSIVE_LESS} > bootstrap/css/bootstrap-responsive.min.css
 | 
						./node_modules/.bin/recess --compress ${BOOTSTRAP_RESPONSIVE_LESS} > bootstrap/css/bootstrap-responsive.min.css
 | 
				
			||||||
	cat js/bootstrap-transition.js js/bootstrap-alert.js js/bootstrap-button.js js/bootstrap-carousel.js js/bootstrap-collapse.js js/bootstrap-dropdown.js js/bootstrap-modal.js js/bootstrap-tooltip.js js/bootstrap-popover.js js/bootstrap-scrollspy.js js/bootstrap-tab.js js/bootstrap-typeahead.js js/bootstrap-affix.js > bootstrap/js/bootstrap.js
 | 
						cat js/bootstrap-transition.js js/bootstrap-alert.js js/bootstrap-button.js js/bootstrap-carousel.js js/bootstrap-collapse.js js/bootstrap-dropdown.js js/bootstrap-modal.js js/bootstrap-tooltip.js js/bootstrap-popover.js js/bootstrap-scrollspy.js js/bootstrap-tab.js js/bootstrap-typeahead.js js/bootstrap-affix.js > bootstrap/js/bootstrap.js
 | 
				
			||||||
	uglifyjs bootstrap/js/bootstrap.js -nc > bootstrap/js/bootstrap.min.tmp.js
 | 
						./node_modules/.bin/uglifyjs -nc bootstrap/js/bootstrap.js > bootstrap/js/bootstrap.min.tmp.js
 | 
				
			||||||
	echo "/*!\n* Bootstrap.js by @fat & @mdo\n* Copyright 2012 Twitter, Inc.\n* http://www.apache.org/licenses/LICENSE-2.0.txt\n*/" > bootstrap/js/copyright.js
 | 
						echo "/*!\n* Bootstrap.js by @fat & @mdo\n* Copyright 2012 Twitter, Inc.\n* http://www.apache.org/licenses/LICENSE-2.0.txt\n*/" > bootstrap/js/copyright.js
 | 
				
			||||||
	cat bootstrap/js/copyright.js bootstrap/js/bootstrap.min.tmp.js > bootstrap/js/bootstrap.min.js
 | 
						cat bootstrap/js/copyright.js bootstrap/js/bootstrap.min.tmp.js > bootstrap/js/bootstrap.min.js
 | 
				
			||||||
	rm bootstrap/js/copyright.js bootstrap/js/bootstrap.min.tmp.js
 | 
						rm bootstrap/js/copyright.js bootstrap/js/bootstrap.min.tmp.js
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -14,12 +14,14 @@
 | 
				
			||||||
    })
 | 
					    })
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    // side bar
 | 
					    // side bar
 | 
				
			||||||
    $('.bs-docs-sidenav').affix({
 | 
					    setTimeout(function () {
 | 
				
			||||||
      offset: {
 | 
					      $('.bs-docs-sidenav').affix({
 | 
				
			||||||
        top: function () { return $window.width() <= 980 ? 290 : 210 }
 | 
					        offset: {
 | 
				
			||||||
      , bottom: 270
 | 
					          top: function () { return $window.width() <= 980 ? 290 : 210 }
 | 
				
			||||||
      }
 | 
					        , bottom: 270
 | 
				
			||||||
    })
 | 
					        }
 | 
				
			||||||
 | 
					      })
 | 
				
			||||||
 | 
					    }, 100)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    // make code pretty
 | 
					    // make code pretty
 | 
				
			||||||
    window.prettyPrint && prettyPrint()
 | 
					    window.prettyPrint && prettyPrint()
 | 
				
			||||||
| 
						 | 
					@ -34,7 +36,7 @@
 | 
				
			||||||
    // add tipsies to grid for scaffolding
 | 
					    // add tipsies to grid for scaffolding
 | 
				
			||||||
    if ($('#gridSystem').length) {
 | 
					    if ($('#gridSystem').length) {
 | 
				
			||||||
      $('#gridSystem').tooltip({
 | 
					      $('#gridSystem').tooltip({
 | 
				
			||||||
          selector: '.show-grid > div'
 | 
					          selector: '.show-grid > div:not(.tooltip)'
 | 
				
			||||||
        , title: function () { return $(this).width() + 'px' }
 | 
					        , title: function () { return $(this).width() + 'px' }
 | 
				
			||||||
      })
 | 
					      })
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -28,6 +28,7 @@
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  var Carousel = function (element, options) {
 | 
					  var Carousel = function (element, options) {
 | 
				
			||||||
    this.$element = $(element)
 | 
					    this.$element = $(element)
 | 
				
			||||||
 | 
					    this.$indicators = this.$element.find('.carousel-indicators')
 | 
				
			||||||
    this.options = options
 | 
					    this.options = options
 | 
				
			||||||
    this.options.pause == 'hover' && this.$element
 | 
					    this.options.pause == 'hover' && this.$element
 | 
				
			||||||
      .on('mouseenter', $.proxy(this.pause, this))
 | 
					      .on('mouseenter', $.proxy(this.pause, this))
 | 
				
			||||||
| 
						 | 
					@ -44,13 +45,17 @@
 | 
				
			||||||
      return this
 | 
					      return this
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  , getActiveIndex: function () {
 | 
				
			||||||
 | 
					      this.$active = this.$element.find('.item.active')
 | 
				
			||||||
 | 
					      this.$items = this.$active.parent().children()
 | 
				
			||||||
 | 
					      return this.$items.index(this.$active)
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  , to: function (pos) {
 | 
					  , to: function (pos) {
 | 
				
			||||||
      var $active = this.$element.find('.item.active')
 | 
					      var activeIndex = this.getActiveIndex()
 | 
				
			||||||
        , children = $active.parent().children()
 | 
					 | 
				
			||||||
        , activePos = children.index($active)
 | 
					 | 
				
			||||||
        , that = this
 | 
					        , that = this
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      if (pos > (children.length - 1) || pos < 0) return
 | 
					      if (pos > (this.$items.length - 1) || pos < 0) return
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      if (this.sliding) {
 | 
					      if (this.sliding) {
 | 
				
			||||||
        return this.$element.one('slid', function () {
 | 
					        return this.$element.one('slid', function () {
 | 
				
			||||||
| 
						 | 
					@ -58,11 +63,11 @@
 | 
				
			||||||
        })
 | 
					        })
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      if (activePos == pos) {
 | 
					      if (activeIndex == pos) {
 | 
				
			||||||
        return this.pause().cycle()
 | 
					        return this.pause().cycle()
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      return this.slide(pos > activePos ? 'next' : 'prev', $(children[pos]))
 | 
					      return this.slide(pos > activeIndex ? 'next' : 'prev', $(this.$items[pos]))
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  , pause: function (e) {
 | 
					  , pause: function (e) {
 | 
				
			||||||
| 
						 | 
					@ -107,6 +112,14 @@
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      if ($next.hasClass('active')) return
 | 
					      if ($next.hasClass('active')) return
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      if (this.$indicators.length) {
 | 
				
			||||||
 | 
					        this.$indicators.find('.active').removeClass('active')
 | 
				
			||||||
 | 
					        this.$element.one('slid', function () {
 | 
				
			||||||
 | 
					          var $nextIndicator = $(that.$indicators.children()[that.getActiveIndex()])
 | 
				
			||||||
 | 
					          $nextIndicator && $nextIndicator.addClass('active')
 | 
				
			||||||
 | 
					        })
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      if ($.support.transition && this.$element.hasClass('slide')) {
 | 
					      if ($.support.transition && this.$element.hasClass('slide')) {
 | 
				
			||||||
        this.$element.trigger(e)
 | 
					        this.$element.trigger(e)
 | 
				
			||||||
        if (e.isDefaultPrevented()) return
 | 
					        if (e.isDefaultPrevented()) return
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -115,8 +115,9 @@
 | 
				
			||||||
      selector = selector && /#/.test(selector) && selector.replace(/.*(?=#[^\s]*$)/, '') //strip for ie7
 | 
					      selector = selector && /#/.test(selector) && selector.replace(/.*(?=#[^\s]*$)/, '') //strip for ie7
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    $parent = $(selector)
 | 
					    $parent = selector && $(selector)
 | 
				
			||||||
    $parent.length || ($parent = $this.parent())
 | 
					
 | 
				
			||||||
 | 
					    if (!$parent || !$parent.length) $parent = $this.parent()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    return $parent
 | 
					    return $parent
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -60,8 +60,7 @@
 | 
				
			||||||
            that.$element.appendTo(document.body) //don't move modals dom position
 | 
					            that.$element.appendTo(document.body) //don't move modals dom position
 | 
				
			||||||
          }
 | 
					          }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
          that.$element
 | 
					          that.$element.show()
 | 
				
			||||||
            .show()
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
          if (transition) {
 | 
					          if (transition) {
 | 
				
			||||||
            that.$element[0].offsetWidth // force reflow
 | 
					            that.$element[0].offsetWidth // force reflow
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -97,7 +97,6 @@
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  , show: function () {
 | 
					  , show: function () {
 | 
				
			||||||
      var $tip
 | 
					      var $tip
 | 
				
			||||||
        , inside
 | 
					 | 
				
			||||||
        , pos
 | 
					        , pos
 | 
				
			||||||
        , actualWidth
 | 
					        , actualWidth
 | 
				
			||||||
        , actualHeight
 | 
					        , actualHeight
 | 
				
			||||||
| 
						 | 
					@ -116,19 +115,17 @@
 | 
				
			||||||
          this.options.placement.call(this, $tip[0], this.$element[0]) :
 | 
					          this.options.placement.call(this, $tip[0], this.$element[0]) :
 | 
				
			||||||
          this.options.placement
 | 
					          this.options.placement
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        inside = /in/.test(placement)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        $tip
 | 
					        $tip
 | 
				
			||||||
          .detach()
 | 
					          .detach()
 | 
				
			||||||
          .css({ top: 0, left: 0, display: 'block' })
 | 
					          .css({ top: 0, left: 0, display: 'block' })
 | 
				
			||||||
          .insertAfter(this.$element)
 | 
					          .insertAfter(this.$element)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        pos = this.getPosition(inside)
 | 
					        pos = this.getPosition()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        actualWidth = $tip[0].offsetWidth
 | 
					        actualWidth = $tip[0].offsetWidth
 | 
				
			||||||
        actualHeight = $tip[0].offsetHeight
 | 
					        actualHeight = $tip[0].offsetHeight
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        switch (inside ? placement.split(' ')[1] : placement) {
 | 
					        switch (placement) {
 | 
				
			||||||
          case 'bottom':
 | 
					          case 'bottom':
 | 
				
			||||||
            tp = {top: pos.top + pos.height, left: pos.left + pos.width / 2 - actualWidth / 2}
 | 
					            tp = {top: pos.top + pos.height, left: pos.left + pos.width / 2 - actualWidth / 2}
 | 
				
			||||||
            break
 | 
					            break
 | 
				
			||||||
| 
						 | 
					@ -193,11 +190,12 @@
 | 
				
			||||||
      return this.getTitle()
 | 
					      return this.getTitle()
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  , getPosition: function (inside) {
 | 
					  , getPosition: function () {
 | 
				
			||||||
      return $.extend({}, (inside ? {top: 0, left: 0} : this.$element.offset()), {
 | 
					      var el = this.$element[0]
 | 
				
			||||||
        width: this.$element[0].offsetWidth
 | 
					      return $.extend({}, el.getBoundingClientRect ? el.getBoundingClientRect() : {
 | 
				
			||||||
      , height: this.$element[0].offsetHeight
 | 
					        width: el.offsetWidth
 | 
				
			||||||
      })
 | 
					      , height: el.offsetHeight
 | 
				
			||||||
 | 
					      }, this.$element.offset())
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  , getTitle: function () {
 | 
					  , getTitle: function () {
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -172,6 +172,7 @@
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  , listen: function () {
 | 
					  , listen: function () {
 | 
				
			||||||
      this.$element
 | 
					      this.$element
 | 
				
			||||||
 | 
					        .on('focus',    $.proxy(this.focus, this))
 | 
				
			||||||
        .on('blur',     $.proxy(this.blur, this))
 | 
					        .on('blur',     $.proxy(this.blur, this))
 | 
				
			||||||
        .on('keypress', $.proxy(this.keypress, this))
 | 
					        .on('keypress', $.proxy(this.keypress, this))
 | 
				
			||||||
        .on('keyup',    $.proxy(this.keyup, this))
 | 
					        .on('keyup',    $.proxy(this.keyup, this))
 | 
				
			||||||
| 
						 | 
					@ -183,6 +184,7 @@
 | 
				
			||||||
      this.$menu
 | 
					      this.$menu
 | 
				
			||||||
        .on('click', $.proxy(this.click, this))
 | 
					        .on('click', $.proxy(this.click, this))
 | 
				
			||||||
        .on('mouseenter', 'li', $.proxy(this.mouseenter, this))
 | 
					        .on('mouseenter', 'li', $.proxy(this.mouseenter, this))
 | 
				
			||||||
 | 
					        .on('mouseleave', 'li', $.proxy(this.mouseleave, this))
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  , eventSupported: function(eventName) {
 | 
					  , eventSupported: function(eventName) {
 | 
				
			||||||
| 
						 | 
					@ -256,9 +258,13 @@
 | 
				
			||||||
      e.preventDefault()
 | 
					      e.preventDefault()
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  , focus: function (e) {
 | 
				
			||||||
 | 
					      this.focused = true
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  , blur: function (e) {
 | 
					  , blur: function (e) {
 | 
				
			||||||
      var that = this
 | 
					      this.focused = false
 | 
				
			||||||
      setTimeout(function () { that.hide() }, 150)
 | 
					      if (!this.mousedover && this.shown) this.hide()
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  , click: function (e) {
 | 
					  , click: function (e) {
 | 
				
			||||||
| 
						 | 
					@ -268,10 +274,16 @@
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  , mouseenter: function (e) {
 | 
					  , mouseenter: function (e) {
 | 
				
			||||||
 | 
					      this.mousedover = true
 | 
				
			||||||
      this.$menu.find('.active').removeClass('active')
 | 
					      this.$menu.find('.active').removeClass('active')
 | 
				
			||||||
      $(e.currentTarget).addClass('active')
 | 
					      $(e.currentTarget).addClass('active')
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  , mouseleave: function (e) {
 | 
				
			||||||
 | 
					      this.mousedover = false
 | 
				
			||||||
 | 
					      if (!this.focused && this.shown) this.hide()
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -289,6 +289,7 @@
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  var Carousel = function (element, options) {
 | 
					  var Carousel = function (element, options) {
 | 
				
			||||||
    this.$element = $(element)
 | 
					    this.$element = $(element)
 | 
				
			||||||
 | 
					    this.$indicators = this.$element.find('.carousel-indicators')
 | 
				
			||||||
    this.options = options
 | 
					    this.options = options
 | 
				
			||||||
    this.options.pause == 'hover' && this.$element
 | 
					    this.options.pause == 'hover' && this.$element
 | 
				
			||||||
      .on('mouseenter', $.proxy(this.pause, this))
 | 
					      .on('mouseenter', $.proxy(this.pause, this))
 | 
				
			||||||
| 
						 | 
					@ -305,13 +306,17 @@
 | 
				
			||||||
      return this
 | 
					      return this
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  , getActiveIndex: function () {
 | 
				
			||||||
 | 
					      this.$active = this.$element.find('.item.active')
 | 
				
			||||||
 | 
					      this.$items = this.$active.parent().children()
 | 
				
			||||||
 | 
					      return this.$items.index(this.$active)
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  , to: function (pos) {
 | 
					  , to: function (pos) {
 | 
				
			||||||
      var $active = this.$element.find('.item.active')
 | 
					      var activeIndex = this.getActiveIndex()
 | 
				
			||||||
        , children = $active.parent().children()
 | 
					 | 
				
			||||||
        , activePos = children.index($active)
 | 
					 | 
				
			||||||
        , that = this
 | 
					        , that = this
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      if (pos > (children.length - 1) || pos < 0) return
 | 
					      if (pos > (this.$items.length - 1) || pos < 0) return
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      if (this.sliding) {
 | 
					      if (this.sliding) {
 | 
				
			||||||
        return this.$element.one('slid', function () {
 | 
					        return this.$element.one('slid', function () {
 | 
				
			||||||
| 
						 | 
					@ -319,11 +324,11 @@
 | 
				
			||||||
        })
 | 
					        })
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      if (activePos == pos) {
 | 
					      if (activeIndex == pos) {
 | 
				
			||||||
        return this.pause().cycle()
 | 
					        return this.pause().cycle()
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      return this.slide(pos > activePos ? 'next' : 'prev', $(children[pos]))
 | 
					      return this.slide(pos > activeIndex ? 'next' : 'prev', $(this.$items[pos]))
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  , pause: function (e) {
 | 
					  , pause: function (e) {
 | 
				
			||||||
| 
						 | 
					@ -368,6 +373,14 @@
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      if ($next.hasClass('active')) return
 | 
					      if ($next.hasClass('active')) return
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      if (this.$indicators.length) {
 | 
				
			||||||
 | 
					        this.$indicators.find('.active').removeClass('active')
 | 
				
			||||||
 | 
					        this.$element.one('slid', function () {
 | 
				
			||||||
 | 
					          var $nextIndicator = $(that.$indicators.children()[that.getActiveIndex()])
 | 
				
			||||||
 | 
					          $nextIndicator && $nextIndicator.addClass('active')
 | 
				
			||||||
 | 
					        })
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      if ($.support.transition && this.$element.hasClass('slide')) {
 | 
					      if ($.support.transition && this.$element.hasClass('slide')) {
 | 
				
			||||||
        this.$element.trigger(e)
 | 
					        this.$element.trigger(e)
 | 
				
			||||||
        if (e.isDefaultPrevented()) return
 | 
					        if (e.isDefaultPrevented()) return
 | 
				
			||||||
| 
						 | 
					@ -726,8 +739,9 @@
 | 
				
			||||||
      selector = selector && /#/.test(selector) && selector.replace(/.*(?=#[^\s]*$)/, '') //strip for ie7
 | 
					      selector = selector && /#/.test(selector) && selector.replace(/.*(?=#[^\s]*$)/, '') //strip for ie7
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    $parent = $(selector)
 | 
					    $parent = selector && $(selector)
 | 
				
			||||||
    $parent.length || ($parent = $this.parent())
 | 
					
 | 
				
			||||||
 | 
					    if (!$parent || !$parent.length) $parent = $this.parent()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    return $parent
 | 
					    return $parent
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
| 
						 | 
					@ -831,8 +845,7 @@
 | 
				
			||||||
            that.$element.appendTo(document.body) //don't move modals dom position
 | 
					            that.$element.appendTo(document.body) //don't move modals dom position
 | 
				
			||||||
          }
 | 
					          }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
          that.$element
 | 
					          that.$element.show()
 | 
				
			||||||
            .show()
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
          if (transition) {
 | 
					          if (transition) {
 | 
				
			||||||
            that.$element[0].offsetWidth // force reflow
 | 
					            that.$element[0].offsetWidth // force reflow
 | 
				
			||||||
| 
						 | 
					@ -1113,7 +1126,6 @@
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  , show: function () {
 | 
					  , show: function () {
 | 
				
			||||||
      var $tip
 | 
					      var $tip
 | 
				
			||||||
        , inside
 | 
					 | 
				
			||||||
        , pos
 | 
					        , pos
 | 
				
			||||||
        , actualWidth
 | 
					        , actualWidth
 | 
				
			||||||
        , actualHeight
 | 
					        , actualHeight
 | 
				
			||||||
| 
						 | 
					@ -1132,19 +1144,17 @@
 | 
				
			||||||
          this.options.placement.call(this, $tip[0], this.$element[0]) :
 | 
					          this.options.placement.call(this, $tip[0], this.$element[0]) :
 | 
				
			||||||
          this.options.placement
 | 
					          this.options.placement
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        inside = /in/.test(placement)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        $tip
 | 
					        $tip
 | 
				
			||||||
          .detach()
 | 
					          .detach()
 | 
				
			||||||
          .css({ top: 0, left: 0, display: 'block' })
 | 
					          .css({ top: 0, left: 0, display: 'block' })
 | 
				
			||||||
          .insertAfter(this.$element)
 | 
					          .insertAfter(this.$element)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        pos = this.getPosition(inside)
 | 
					        pos = this.getPosition()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        actualWidth = $tip[0].offsetWidth
 | 
					        actualWidth = $tip[0].offsetWidth
 | 
				
			||||||
        actualHeight = $tip[0].offsetHeight
 | 
					        actualHeight = $tip[0].offsetHeight
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        switch (inside ? placement.split(' ')[1] : placement) {
 | 
					        switch (placement) {
 | 
				
			||||||
          case 'bottom':
 | 
					          case 'bottom':
 | 
				
			||||||
            tp = {top: pos.top + pos.height, left: pos.left + pos.width / 2 - actualWidth / 2}
 | 
					            tp = {top: pos.top + pos.height, left: pos.left + pos.width / 2 - actualWidth / 2}
 | 
				
			||||||
            break
 | 
					            break
 | 
				
			||||||
| 
						 | 
					@ -1209,11 +1219,12 @@
 | 
				
			||||||
      return this.getTitle()
 | 
					      return this.getTitle()
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  , getPosition: function (inside) {
 | 
					  , getPosition: function () {
 | 
				
			||||||
      return $.extend({}, (inside ? {top: 0, left: 0} : this.$element.offset()), {
 | 
					      var el = this.$element[0]
 | 
				
			||||||
        width: this.$element[0].offsetWidth
 | 
					      return $.extend({}, el.getBoundingClientRect ? el.getBoundingClientRect() : {
 | 
				
			||||||
      , height: this.$element[0].offsetHeight
 | 
					        width: el.offsetWidth
 | 
				
			||||||
      })
 | 
					      , height: el.offsetHeight
 | 
				
			||||||
 | 
					      }, this.$element.offset())
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  , getTitle: function () {
 | 
					  , getTitle: function () {
 | 
				
			||||||
| 
						 | 
					@ -1891,6 +1902,7 @@
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  , listen: function () {
 | 
					  , listen: function () {
 | 
				
			||||||
      this.$element
 | 
					      this.$element
 | 
				
			||||||
 | 
					        .on('focus',    $.proxy(this.focus, this))
 | 
				
			||||||
        .on('blur',     $.proxy(this.blur, this))
 | 
					        .on('blur',     $.proxy(this.blur, this))
 | 
				
			||||||
        .on('keypress', $.proxy(this.keypress, this))
 | 
					        .on('keypress', $.proxy(this.keypress, this))
 | 
				
			||||||
        .on('keyup',    $.proxy(this.keyup, this))
 | 
					        .on('keyup',    $.proxy(this.keyup, this))
 | 
				
			||||||
| 
						 | 
					@ -1902,6 +1914,7 @@
 | 
				
			||||||
      this.$menu
 | 
					      this.$menu
 | 
				
			||||||
        .on('click', $.proxy(this.click, this))
 | 
					        .on('click', $.proxy(this.click, this))
 | 
				
			||||||
        .on('mouseenter', 'li', $.proxy(this.mouseenter, this))
 | 
					        .on('mouseenter', 'li', $.proxy(this.mouseenter, this))
 | 
				
			||||||
 | 
					        .on('mouseleave', 'li', $.proxy(this.mouseleave, this))
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  , eventSupported: function(eventName) {
 | 
					  , eventSupported: function(eventName) {
 | 
				
			||||||
| 
						 | 
					@ -1975,9 +1988,13 @@
 | 
				
			||||||
      e.preventDefault()
 | 
					      e.preventDefault()
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  , focus: function (e) {
 | 
				
			||||||
 | 
					      this.focused = true
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  , blur: function (e) {
 | 
					  , blur: function (e) {
 | 
				
			||||||
      var that = this
 | 
					      this.focused = false
 | 
				
			||||||
      setTimeout(function () { that.hide() }, 150)
 | 
					      if (!this.mousedover && this.shown) this.hide()
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  , click: function (e) {
 | 
					  , click: function (e) {
 | 
				
			||||||
| 
						 | 
					@ -1987,10 +2004,16 @@
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  , mouseenter: function (e) {
 | 
					  , mouseenter: function (e) {
 | 
				
			||||||
 | 
					      this.mousedover = true
 | 
				
			||||||
      this.$menu.find('.active').removeClass('active')
 | 
					      this.$menu.find('.active').removeClass('active')
 | 
				
			||||||
      $(e.currentTarget).addClass('active')
 | 
					      $(e.currentTarget).addClass('active')
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  , mouseleave: function (e) {
 | 
				
			||||||
 | 
					      this.mousedover = false
 | 
				
			||||||
 | 
					      if (!this.focused && this.shown) this.hide()
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							| 
						 | 
					@ -1422,6 +1422,11 @@ $('#myCollapsible').on('hidden', function () {
 | 
				
			||||||
            <p>The slideshow below shows a generic plugin and component for cycling through elements like a carousel.</p>
 | 
					            <p>The slideshow below shows a generic plugin and component for cycling through elements like a carousel.</p>
 | 
				
			||||||
            <div class="bs-docs-example">
 | 
					            <div class="bs-docs-example">
 | 
				
			||||||
              <div id="myCarousel" class="carousel slide">
 | 
					              <div id="myCarousel" class="carousel slide">
 | 
				
			||||||
 | 
					                <ol class="carousel-indicators">
 | 
				
			||||||
 | 
					                  <li class="active"></li>
 | 
				
			||||||
 | 
					                  <li></li>
 | 
				
			||||||
 | 
					                  <li></li>
 | 
				
			||||||
 | 
					                </ol>
 | 
				
			||||||
                <div class="carousel-inner">
 | 
					                <div class="carousel-inner">
 | 
				
			||||||
                  <div class="item active">
 | 
					                  <div class="item active">
 | 
				
			||||||
                    <img src="assets/img/bootstrap-mdo-sfmoma-01.jpg" alt="">
 | 
					                    <img src="assets/img/bootstrap-mdo-sfmoma-01.jpg" alt="">
 | 
				
			||||||
| 
						 | 
					@ -1671,14 +1676,6 @@ $('.carousel').carousel({
 | 
				
			||||||
            <p>Call the affix plugin via JavaScript:</p>
 | 
					            <p>Call the affix plugin via JavaScript:</p>
 | 
				
			||||||
            <pre class="prettyprint linenums">$('#navbar').affix()</pre>
 | 
					            <pre class="prettyprint linenums">$('#navbar').affix()</pre>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            <h3>Methods</h3>
 | 
					 | 
				
			||||||
            <h4>.affix('refresh')</h4>
 | 
					 | 
				
			||||||
            <p>When using affix in conjunction with adding or removing of elements from the DOM, you'll want to call the refresh method:</p>
 | 
					 | 
				
			||||||
<pre class="prettyprint linenums">
 | 
					 | 
				
			||||||
$('[data-spy="affix"]').each(function () {
 | 
					 | 
				
			||||||
  $(this).affix('refresh')
 | 
					 | 
				
			||||||
});
 | 
					 | 
				
			||||||
</pre>
 | 
					 | 
				
			||||||
          <h3>Options</h3>
 | 
					          <h3>Options</h3>
 | 
				
			||||||
          <p>Options can be passed via data attributes or JavaScript. For data attributes, append the option name to <code>data-</code>, as in <code>data-offset-top="200"</code>.</p>
 | 
					          <p>Options can be passed via data attributes or JavaScript. For data attributes, append the option name to <code>data-</code>, as in <code>data-offset-top="200"</code>.</p>
 | 
				
			||||||
          <table class="table table-bordered table-striped">
 | 
					          <table class="table table-bordered table-striped">
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1352,6 +1352,11 @@ $('#myCollapsible').on('hidden', function () {
 | 
				
			||||||
            <p>{{_i}}The slideshow below shows a generic plugin and component for cycling through elements like a carousel.{{/i}}</p>
 | 
					            <p>{{_i}}The slideshow below shows a generic plugin and component for cycling through elements like a carousel.{{/i}}</p>
 | 
				
			||||||
            <div class="bs-docs-example">
 | 
					            <div class="bs-docs-example">
 | 
				
			||||||
              <div id="myCarousel" class="carousel slide">
 | 
					              <div id="myCarousel" class="carousel slide">
 | 
				
			||||||
 | 
					                <ol class="carousel-indicators">
 | 
				
			||||||
 | 
					                  <li class="active"></li>
 | 
				
			||||||
 | 
					                  <li></li>
 | 
				
			||||||
 | 
					                  <li></li>
 | 
				
			||||||
 | 
					                </ol>
 | 
				
			||||||
                <div class="carousel-inner">
 | 
					                <div class="carousel-inner">
 | 
				
			||||||
                  <div class="item active">
 | 
					                  <div class="item active">
 | 
				
			||||||
                    <img src="assets/img/bootstrap-mdo-sfmoma-01.jpg" alt="">
 | 
					                    <img src="assets/img/bootstrap-mdo-sfmoma-01.jpg" alt="">
 | 
				
			||||||
| 
						 | 
					@ -1601,14 +1606,6 @@ $('.carousel').carousel({
 | 
				
			||||||
            <p>{{_i}}Call the affix plugin via JavaScript:{{/i}}</p>
 | 
					            <p>{{_i}}Call the affix plugin via JavaScript:{{/i}}</p>
 | 
				
			||||||
            <pre class="prettyprint linenums">$('#navbar').affix()</pre>
 | 
					            <pre class="prettyprint linenums">$('#navbar').affix()</pre>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            <h3>{{_i}}Methods{{/i}}</h3>
 | 
					 | 
				
			||||||
            <h4>.affix('refresh')</h4>
 | 
					 | 
				
			||||||
            <p>{{_i}}When using affix in conjunction with adding or removing of elements from the DOM, you'll want to call the refresh method:{{/i}}</p>
 | 
					 | 
				
			||||||
<pre class="prettyprint linenums">
 | 
					 | 
				
			||||||
$('[data-spy="affix"]').each(function () {
 | 
					 | 
				
			||||||
  $(this).affix('refresh')
 | 
					 | 
				
			||||||
});
 | 
					 | 
				
			||||||
</pre>
 | 
					 | 
				
			||||||
          <h3>{{_i}}Options{{/i}}</h3>
 | 
					          <h3>{{_i}}Options{{/i}}</h3>
 | 
				
			||||||
          <p>{{_i}}Options can be passed via data attributes or JavaScript. For data attributes, append the option name to <code>data-</code>, as in <code>data-offset-top="200"</code>.{{/i}}</p>
 | 
					          <p>{{_i}}Options can be passed via data attributes or JavaScript. For data attributes, append the option name to <code>data-</code>, as in <code>data-offset-top="200"</code>.{{/i}}</p>
 | 
				
			||||||
          <table class="table table-bordered table-striped">
 | 
					          <table class="table table-bordered table-striped">
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -28,6 +28,7 @@
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  var Carousel = function (element, options) {
 | 
					  var Carousel = function (element, options) {
 | 
				
			||||||
    this.$element = $(element)
 | 
					    this.$element = $(element)
 | 
				
			||||||
 | 
					    this.$indicators = this.$element.find('.carousel-indicators')
 | 
				
			||||||
    this.options = options
 | 
					    this.options = options
 | 
				
			||||||
    this.options.pause == 'hover' && this.$element
 | 
					    this.options.pause == 'hover' && this.$element
 | 
				
			||||||
      .on('mouseenter', $.proxy(this.pause, this))
 | 
					      .on('mouseenter', $.proxy(this.pause, this))
 | 
				
			||||||
| 
						 | 
					@ -44,13 +45,17 @@
 | 
				
			||||||
      return this
 | 
					      return this
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  , getActiveIndex: function () {
 | 
				
			||||||
 | 
					      this.$active = this.$element.find('.item.active')
 | 
				
			||||||
 | 
					      this.$items = this.$active.parent().children()
 | 
				
			||||||
 | 
					      return this.$items.index(this.$active)
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  , to: function (pos) {
 | 
					  , to: function (pos) {
 | 
				
			||||||
      var $active = this.$element.find('.item.active')
 | 
					      var activeIndex = this.getActiveIndex()
 | 
				
			||||||
        , children = $active.parent().children()
 | 
					 | 
				
			||||||
        , activePos = children.index($active)
 | 
					 | 
				
			||||||
        , that = this
 | 
					        , that = this
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      if (pos > (children.length - 1) || pos < 0) return
 | 
					      if (pos > (this.$items.length - 1) || pos < 0) return
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      if (this.sliding) {
 | 
					      if (this.sliding) {
 | 
				
			||||||
        return this.$element.one('slid', function () {
 | 
					        return this.$element.one('slid', function () {
 | 
				
			||||||
| 
						 | 
					@ -58,11 +63,11 @@
 | 
				
			||||||
        })
 | 
					        })
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      if (activePos == pos) {
 | 
					      if (activeIndex == pos) {
 | 
				
			||||||
        return this.pause().cycle()
 | 
					        return this.pause().cycle()
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      return this.slide(pos > activePos ? 'next' : 'prev', $(children[pos]))
 | 
					      return this.slide(pos > activeIndex ? 'next' : 'prev', $(this.$items[pos]))
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  , pause: function (e) {
 | 
					  , pause: function (e) {
 | 
				
			||||||
| 
						 | 
					@ -107,6 +112,14 @@
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      if ($next.hasClass('active')) return
 | 
					      if ($next.hasClass('active')) return
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      if (this.$indicators.length) {
 | 
				
			||||||
 | 
					        this.$indicators.find('.active').removeClass('active')
 | 
				
			||||||
 | 
					        this.$element.one('slid', function () {
 | 
				
			||||||
 | 
					          var $nextIndicator = $(that.$indicators.children()[that.getActiveIndex()])
 | 
				
			||||||
 | 
					          $nextIndicator && $nextIndicator.addClass('active')
 | 
				
			||||||
 | 
					        })
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      if ($.support.transition && this.$element.hasClass('slide')) {
 | 
					      if ($.support.transition && this.$element.hasClass('slide')) {
 | 
				
			||||||
        this.$element.trigger(e)
 | 
					        this.$element.trigger(e)
 | 
				
			||||||
        if (e.isDefaultPrevented()) return
 | 
					        if (e.isDefaultPrevented()) return
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -115,8 +115,9 @@
 | 
				
			||||||
      selector = selector && /#/.test(selector) && selector.replace(/.*(?=#[^\s]*$)/, '') //strip for ie7
 | 
					      selector = selector && /#/.test(selector) && selector.replace(/.*(?=#[^\s]*$)/, '') //strip for ie7
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    $parent = $(selector)
 | 
					    $parent = selector && $(selector)
 | 
				
			||||||
    $parent.length || ($parent = $this.parent())
 | 
					
 | 
				
			||||||
 | 
					    if (!$parent || !$parent.length) $parent = $this.parent()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    return $parent
 | 
					    return $parent
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -60,8 +60,7 @@
 | 
				
			||||||
            that.$element.appendTo(document.body) //don't move modals dom position
 | 
					            that.$element.appendTo(document.body) //don't move modals dom position
 | 
				
			||||||
          }
 | 
					          }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
          that.$element
 | 
					          that.$element.show()
 | 
				
			||||||
            .show()
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
          if (transition) {
 | 
					          if (transition) {
 | 
				
			||||||
            that.$element[0].offsetWidth // force reflow
 | 
					            that.$element[0].offsetWidth // force reflow
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -97,7 +97,6 @@
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  , show: function () {
 | 
					  , show: function () {
 | 
				
			||||||
      var $tip
 | 
					      var $tip
 | 
				
			||||||
        , inside
 | 
					 | 
				
			||||||
        , pos
 | 
					        , pos
 | 
				
			||||||
        , actualWidth
 | 
					        , actualWidth
 | 
				
			||||||
        , actualHeight
 | 
					        , actualHeight
 | 
				
			||||||
| 
						 | 
					@ -116,19 +115,17 @@
 | 
				
			||||||
          this.options.placement.call(this, $tip[0], this.$element[0]) :
 | 
					          this.options.placement.call(this, $tip[0], this.$element[0]) :
 | 
				
			||||||
          this.options.placement
 | 
					          this.options.placement
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        inside = /in/.test(placement)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        $tip
 | 
					        $tip
 | 
				
			||||||
          .detach()
 | 
					          .detach()
 | 
				
			||||||
          .css({ top: 0, left: 0, display: 'block' })
 | 
					          .css({ top: 0, left: 0, display: 'block' })
 | 
				
			||||||
          .insertAfter(this.$element)
 | 
					          .insertAfter(this.$element)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        pos = this.getPosition(inside)
 | 
					        pos = this.getPosition()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        actualWidth = $tip[0].offsetWidth
 | 
					        actualWidth = $tip[0].offsetWidth
 | 
				
			||||||
        actualHeight = $tip[0].offsetHeight
 | 
					        actualHeight = $tip[0].offsetHeight
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        switch (inside ? placement.split(' ')[1] : placement) {
 | 
					        switch (placement) {
 | 
				
			||||||
          case 'bottom':
 | 
					          case 'bottom':
 | 
				
			||||||
            tp = {top: pos.top + pos.height, left: pos.left + pos.width / 2 - actualWidth / 2}
 | 
					            tp = {top: pos.top + pos.height, left: pos.left + pos.width / 2 - actualWidth / 2}
 | 
				
			||||||
            break
 | 
					            break
 | 
				
			||||||
| 
						 | 
					@ -193,11 +190,12 @@
 | 
				
			||||||
      return this.getTitle()
 | 
					      return this.getTitle()
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  , getPosition: function (inside) {
 | 
					  , getPosition: function () {
 | 
				
			||||||
      return $.extend({}, (inside ? {top: 0, left: 0} : this.$element.offset()), {
 | 
					      var el = this.$element[0]
 | 
				
			||||||
        width: this.$element[0].offsetWidth
 | 
					      return $.extend({}, el.getBoundingClientRect ? el.getBoundingClientRect() : {
 | 
				
			||||||
      , height: this.$element[0].offsetHeight
 | 
					        width: el.offsetWidth
 | 
				
			||||||
      })
 | 
					      , height: el.offsetHeight
 | 
				
			||||||
 | 
					      }, this.$element.offset())
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  , getTitle: function () {
 | 
					  , getTitle: function () {
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -172,6 +172,7 @@
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  , listen: function () {
 | 
					  , listen: function () {
 | 
				
			||||||
      this.$element
 | 
					      this.$element
 | 
				
			||||||
 | 
					        .on('focus',    $.proxy(this.focus, this))
 | 
				
			||||||
        .on('blur',     $.proxy(this.blur, this))
 | 
					        .on('blur',     $.proxy(this.blur, this))
 | 
				
			||||||
        .on('keypress', $.proxy(this.keypress, this))
 | 
					        .on('keypress', $.proxy(this.keypress, this))
 | 
				
			||||||
        .on('keyup',    $.proxy(this.keyup, this))
 | 
					        .on('keyup',    $.proxy(this.keyup, this))
 | 
				
			||||||
| 
						 | 
					@ -183,6 +184,7 @@
 | 
				
			||||||
      this.$menu
 | 
					      this.$menu
 | 
				
			||||||
        .on('click', $.proxy(this.click, this))
 | 
					        .on('click', $.proxy(this.click, this))
 | 
				
			||||||
        .on('mouseenter', 'li', $.proxy(this.mouseenter, this))
 | 
					        .on('mouseenter', 'li', $.proxy(this.mouseenter, this))
 | 
				
			||||||
 | 
					        .on('mouseleave', 'li', $.proxy(this.mouseleave, this))
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  , eventSupported: function(eventName) {
 | 
					  , eventSupported: function(eventName) {
 | 
				
			||||||
| 
						 | 
					@ -256,9 +258,13 @@
 | 
				
			||||||
      e.preventDefault()
 | 
					      e.preventDefault()
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  , focus: function (e) {
 | 
				
			||||||
 | 
					      this.focused = true
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  , blur: function (e) {
 | 
					  , blur: function (e) {
 | 
				
			||||||
      var that = this
 | 
					      this.focused = false
 | 
				
			||||||
      setTimeout(function () { that.hide() }, 150)
 | 
					      if (!this.mousedover && this.shown) this.hide()
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  , click: function (e) {
 | 
					  , click: function (e) {
 | 
				
			||||||
| 
						 | 
					@ -268,10 +274,16 @@
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  , mouseenter: function (e) {
 | 
					  , mouseenter: function (e) {
 | 
				
			||||||
 | 
					      this.mousedover = true
 | 
				
			||||||
      this.$menu.find('.active').removeClass('active')
 | 
					      this.$menu.find('.active').removeClass('active')
 | 
				
			||||||
      $(e.currentTarget).addClass('active')
 | 
					      $(e.currentTarget).addClass('active')
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  , mouseleave: function (e) {
 | 
				
			||||||
 | 
					      this.mousedover = false
 | 
				
			||||||
 | 
					      if (!this.focused && this.shown) this.hide()
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -17,7 +17,7 @@
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
  ]
 | 
					  ]
 | 
				
			||||||
  , "devDependencies": {
 | 
					  , "devDependencies": {
 | 
				
			||||||
      "uglify-js": "1.2.6"
 | 
					      "uglify-js": "1.3.4"
 | 
				
			||||||
    , "jshint": "0.6.1"
 | 
					    , "jshint": "0.6.1"
 | 
				
			||||||
    , "recess": "1.0.3"
 | 
					    , "recess": "1.0.3"
 | 
				
			||||||
    , "connect": "2.1.3"
 | 
					    , "connect": "2.1.3"
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in New Issue