mirror of https://github.com/calzoneman/sync.git
Update bootstrap
This commit is contained in:
parent
0e2037f308
commit
4f52f48664
|
@ -49,19 +49,6 @@ html(lang="en")
|
||||||
#leftcontrols.col-lg-5.col-md-5
|
#leftcontrols.col-lg-5.col-md-5
|
||||||
button#newpollbtn.btn.btn-sm.btn-default New Poll
|
button#newpollbtn.btn.btn-sm.btn-default New Poll
|
||||||
#rightcontrols.col-lg-7.col-md-7
|
#rightcontrols.col-lg-7.col-md-7
|
||||||
//#qualitywrap.dropdown.btn-group
|
|
||||||
// button#qdrop.btn.btn-sm.btn-default.dropdown-toggle(data-toggle="dropdown") Quality
|
|
||||||
// b.caret
|
|
||||||
// mixin quality_item(id, text)
|
|
||||||
// li(role="presentation")
|
|
||||||
// a(id="#{id}", role="menuitem", href="javascript:void(0)") #{text}
|
|
||||||
// ul.dropdown-menu(role="menu", aria-labelledby="qdrop")
|
|
||||||
// mixin quality_item("quality_auto", "Quality: Auto")
|
|
||||||
// mixin quality_item("quality_240p", "240p")
|
|
||||||
// mixin quality_item("quality_360p", "360p")
|
|
||||||
// mixin quality_item("quality_480p", "480p")
|
|
||||||
// mixin quality_item("quality_720p", "720p")
|
|
||||||
// mixin quality_item("quality_1080p", "1080p")
|
|
||||||
#plcontrol.btn-group
|
#plcontrol.btn-group
|
||||||
button#showsearch.btn.btn-sm.btn-default(title="Search for a video", data-toggle="collapse", data-target="#searchcontrol")
|
button#showsearch.btn.btn-sm.btn-default(title="Search for a video", data-toggle="collapse", data-target="#searchcontrol")
|
||||||
span.glyphicon.glyphicon-search
|
span.glyphicon.glyphicon-search
|
||||||
|
@ -198,7 +185,6 @@ html(lang="en")
|
||||||
button.btn.btn-default(type="button", data-dismiss="modal") Close
|
button.btn.btn-default(type="button", data-dismiss="modal") Close
|
||||||
include footer
|
include footer
|
||||||
mixin footer()
|
mixin footer()
|
||||||
script(src="//code.jquery.com/ui/1.10.3/jquery-ui.js")
|
|
||||||
script(src="/assets/js/iourl.js")
|
script(src="/assets/js/iourl.js")
|
||||||
//script(src="#{ioUrl}/socket.io/socket.io.js")
|
//script(src="#{ioUrl}/socket.io/socket.io.js")
|
||||||
//script(type="text/javascript").
|
//script(type="text/javascript").
|
||||||
|
|
|
@ -4,4 +4,7 @@ mixin footer
|
||||||
p.text-muted.credit.
|
p.text-muted.credit.
|
||||||
Copyright © 2013 Calvin Montgomery
|
Copyright © 2013 Calvin Montgomery
|
||||||
script(src="/js/jquery.js")
|
script(src="/js/jquery.js")
|
||||||
|
// Must be included before jQuery-UI since jQuery-UI overrides jQuery.fn.button
|
||||||
|
// I should really abandon this crap one day
|
||||||
|
script(src="//code.jquery.com/ui/1.10.3/jquery-ui.js")
|
||||||
script(src="/js/bootstrap.js")
|
script(src="/js/bootstrap.js")
|
||||||
|
|
|
@ -465,11 +465,17 @@ $("#cs-chanranks-owner").click(chanrankSubmit.bind(this, 4));
|
||||||
|
|
||||||
["#showmediaurl", "#showsearch", "#showcustomembed"].forEach(function (id) {
|
["#showmediaurl", "#showsearch", "#showcustomembed"].forEach(function (id) {
|
||||||
$(id).click(function () {
|
$(id).click(function () {
|
||||||
|
var wasActive = $(id).hasClass("active");
|
||||||
$(".plcontrol-collapse").collapse("hide");
|
$(".plcontrol-collapse").collapse("hide");
|
||||||
$("#plcontrol button").button("hide");
|
$("#plcontrol button.active").button("toggle");
|
||||||
$(id).button("toggle");
|
if (!wasActive) {
|
||||||
|
console.log($(id)[0].className);
|
||||||
|
$(id).button("toggle");
|
||||||
|
}
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
$("#plcontrol button").button();
|
||||||
|
$("#plcontrol button").button("hide");
|
||||||
$(".plcontrol-collapse").collapse();
|
$(".plcontrol-collapse").collapse();
|
||||||
$(".plcontrol-collapse").collapse("hide");
|
$(".plcontrol-collapse").collapse("hide");
|
||||||
|
|
||||||
|
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because one or more lines are too long
|
@ -1,5 +1,5 @@
|
||||||
/* ========================================================================
|
/* ========================================================================
|
||||||
* Bootstrap: alert.js v3.0.2
|
* Bootstrap: alert.js v3.0.3
|
||||||
* http://getbootstrap.com/javascript/#alerts
|
* http://getbootstrap.com/javascript/#alerts
|
||||||
* ========================================================================
|
* ========================================================================
|
||||||
* Copyright 2013 Twitter, Inc.
|
* Copyright 2013 Twitter, Inc.
|
||||||
|
@ -98,7 +98,7 @@
|
||||||
}(jQuery);
|
}(jQuery);
|
||||||
|
|
||||||
/* ========================================================================
|
/* ========================================================================
|
||||||
* Bootstrap: button.js v3.0.2
|
* Bootstrap: button.js v3.0.3
|
||||||
* http://getbootstrap.com/javascript/#buttons
|
* http://getbootstrap.com/javascript/#buttons
|
||||||
* ========================================================================
|
* ========================================================================
|
||||||
* Copyright 2013 Twitter, Inc.
|
* Copyright 2013 Twitter, Inc.
|
||||||
|
@ -153,15 +153,21 @@
|
||||||
|
|
||||||
Button.prototype.toggle = function () {
|
Button.prototype.toggle = function () {
|
||||||
var $parent = this.$element.closest('[data-toggle="buttons"]')
|
var $parent = this.$element.closest('[data-toggle="buttons"]')
|
||||||
|
var changed = true
|
||||||
|
|
||||||
if ($parent.length) {
|
if ($parent.length) {
|
||||||
var $input = this.$element.find('input')
|
var $input = this.$element.find('input')
|
||||||
.prop('checked', !this.$element.hasClass('active'))
|
if ($input.prop('type') === 'radio') {
|
||||||
.trigger('change')
|
// see if clicking on current one
|
||||||
if ($input.prop('type') === 'radio') $parent.find('.active').removeClass('active')
|
if ($input.prop('checked') && this.$element.hasClass('active'))
|
||||||
|
changed = false
|
||||||
|
else
|
||||||
|
$parent.find('.active').removeClass('active')
|
||||||
|
}
|
||||||
|
if (changed) $input.prop('checked', !this.$element.hasClass('active')).trigger('change')
|
||||||
}
|
}
|
||||||
|
|
||||||
this.$element.toggleClass('active')
|
if (changed) this.$element.toggleClass('active')
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -208,7 +214,225 @@
|
||||||
}(jQuery);
|
}(jQuery);
|
||||||
|
|
||||||
/* ========================================================================
|
/* ========================================================================
|
||||||
* Bootstrap: dropdown.js v3.0.2
|
* Bootstrap: carousel.js v3.0.3
|
||||||
|
* http://getbootstrap.com/javascript/#carousel
|
||||||
|
* ========================================================================
|
||||||
|
* Copyright 2013 Twitter, Inc.
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
* ======================================================================== */
|
||||||
|
|
||||||
|
|
||||||
|
+function ($) { "use strict";
|
||||||
|
|
||||||
|
// CAROUSEL CLASS DEFINITION
|
||||||
|
// =========================
|
||||||
|
|
||||||
|
var Carousel = function (element, options) {
|
||||||
|
this.$element = $(element)
|
||||||
|
this.$indicators = this.$element.find('.carousel-indicators')
|
||||||
|
this.options = options
|
||||||
|
this.paused =
|
||||||
|
this.sliding =
|
||||||
|
this.interval =
|
||||||
|
this.$active =
|
||||||
|
this.$items = null
|
||||||
|
|
||||||
|
this.options.pause == 'hover' && this.$element
|
||||||
|
.on('mouseenter', $.proxy(this.pause, this))
|
||||||
|
.on('mouseleave', $.proxy(this.cycle, this))
|
||||||
|
}
|
||||||
|
|
||||||
|
Carousel.DEFAULTS = {
|
||||||
|
interval: 5000
|
||||||
|
, pause: 'hover'
|
||||||
|
, wrap: true
|
||||||
|
}
|
||||||
|
|
||||||
|
Carousel.prototype.cycle = function (e) {
|
||||||
|
e || (this.paused = false)
|
||||||
|
|
||||||
|
this.interval && clearInterval(this.interval)
|
||||||
|
|
||||||
|
this.options.interval
|
||||||
|
&& !this.paused
|
||||||
|
&& (this.interval = setInterval($.proxy(this.next, this), this.options.interval))
|
||||||
|
|
||||||
|
return this
|
||||||
|
}
|
||||||
|
|
||||||
|
Carousel.prototype.getActiveIndex = function () {
|
||||||
|
this.$active = this.$element.find('.item.active')
|
||||||
|
this.$items = this.$active.parent().children()
|
||||||
|
|
||||||
|
return this.$items.index(this.$active)
|
||||||
|
}
|
||||||
|
|
||||||
|
Carousel.prototype.to = function (pos) {
|
||||||
|
var that = this
|
||||||
|
var activeIndex = this.getActiveIndex()
|
||||||
|
|
||||||
|
if (pos > (this.$items.length - 1) || pos < 0) return
|
||||||
|
|
||||||
|
if (this.sliding) return this.$element.one('slid.bs.carousel', function () { that.to(pos) })
|
||||||
|
if (activeIndex == pos) return this.pause().cycle()
|
||||||
|
|
||||||
|
return this.slide(pos > activeIndex ? 'next' : 'prev', $(this.$items[pos]))
|
||||||
|
}
|
||||||
|
|
||||||
|
Carousel.prototype.pause = function (e) {
|
||||||
|
e || (this.paused = true)
|
||||||
|
|
||||||
|
if (this.$element.find('.next, .prev').length && $.support.transition.end) {
|
||||||
|
this.$element.trigger($.support.transition.end)
|
||||||
|
this.cycle(true)
|
||||||
|
}
|
||||||
|
|
||||||
|
this.interval = clearInterval(this.interval)
|
||||||
|
|
||||||
|
return this
|
||||||
|
}
|
||||||
|
|
||||||
|
Carousel.prototype.next = function () {
|
||||||
|
if (this.sliding) return
|
||||||
|
return this.slide('next')
|
||||||
|
}
|
||||||
|
|
||||||
|
Carousel.prototype.prev = function () {
|
||||||
|
if (this.sliding) return
|
||||||
|
return this.slide('prev')
|
||||||
|
}
|
||||||
|
|
||||||
|
Carousel.prototype.slide = function (type, next) {
|
||||||
|
var $active = this.$element.find('.item.active')
|
||||||
|
var $next = next || $active[type]()
|
||||||
|
var isCycling = this.interval
|
||||||
|
var direction = type == 'next' ? 'left' : 'right'
|
||||||
|
var fallback = type == 'next' ? 'first' : 'last'
|
||||||
|
var that = this
|
||||||
|
|
||||||
|
if (!$next.length) {
|
||||||
|
if (!this.options.wrap) return
|
||||||
|
$next = this.$element.find('.item')[fallback]()
|
||||||
|
}
|
||||||
|
|
||||||
|
this.sliding = true
|
||||||
|
|
||||||
|
isCycling && this.pause()
|
||||||
|
|
||||||
|
var e = $.Event('slide.bs.carousel', { relatedTarget: $next[0], direction: direction })
|
||||||
|
|
||||||
|
if ($next.hasClass('active')) return
|
||||||
|
|
||||||
|
if (this.$indicators.length) {
|
||||||
|
this.$indicators.find('.active').removeClass('active')
|
||||||
|
this.$element.one('slid.bs.carousel', function () {
|
||||||
|
var $nextIndicator = $(that.$indicators.children()[that.getActiveIndex()])
|
||||||
|
$nextIndicator && $nextIndicator.addClass('active')
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($.support.transition && this.$element.hasClass('slide')) {
|
||||||
|
this.$element.trigger(e)
|
||||||
|
if (e.isDefaultPrevented()) return
|
||||||
|
$next.addClass(type)
|
||||||
|
$next[0].offsetWidth // force reflow
|
||||||
|
$active.addClass(direction)
|
||||||
|
$next.addClass(direction)
|
||||||
|
$active
|
||||||
|
.one($.support.transition.end, function () {
|
||||||
|
$next.removeClass([type, direction].join(' ')).addClass('active')
|
||||||
|
$active.removeClass(['active', direction].join(' '))
|
||||||
|
that.sliding = false
|
||||||
|
setTimeout(function () { that.$element.trigger('slid.bs.carousel') }, 0)
|
||||||
|
})
|
||||||
|
.emulateTransitionEnd(600)
|
||||||
|
} else {
|
||||||
|
this.$element.trigger(e)
|
||||||
|
if (e.isDefaultPrevented()) return
|
||||||
|
$active.removeClass('active')
|
||||||
|
$next.addClass('active')
|
||||||
|
this.sliding = false
|
||||||
|
this.$element.trigger('slid.bs.carousel')
|
||||||
|
}
|
||||||
|
|
||||||
|
isCycling && this.cycle()
|
||||||
|
|
||||||
|
return this
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// CAROUSEL PLUGIN DEFINITION
|
||||||
|
// ==========================
|
||||||
|
|
||||||
|
var old = $.fn.carousel
|
||||||
|
|
||||||
|
$.fn.carousel = function (option) {
|
||||||
|
return this.each(function () {
|
||||||
|
var $this = $(this)
|
||||||
|
var data = $this.data('bs.carousel')
|
||||||
|
var options = $.extend({}, Carousel.DEFAULTS, $this.data(), typeof option == 'object' && option)
|
||||||
|
var action = typeof option == 'string' ? option : options.slide
|
||||||
|
|
||||||
|
if (!data) $this.data('bs.carousel', (data = new Carousel(this, options)))
|
||||||
|
if (typeof option == 'number') data.to(option)
|
||||||
|
else if (action) data[action]()
|
||||||
|
else if (options.interval) data.pause().cycle()
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
$.fn.carousel.Constructor = Carousel
|
||||||
|
|
||||||
|
|
||||||
|
// CAROUSEL NO CONFLICT
|
||||||
|
// ====================
|
||||||
|
|
||||||
|
$.fn.carousel.noConflict = function () {
|
||||||
|
$.fn.carousel = old
|
||||||
|
return this
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// CAROUSEL DATA-API
|
||||||
|
// =================
|
||||||
|
|
||||||
|
$(document).on('click.bs.carousel.data-api', '[data-slide], [data-slide-to]', function (e) {
|
||||||
|
var $this = $(this), href
|
||||||
|
var $target = $($this.attr('data-target') || (href = $this.attr('href')) && href.replace(/.*(?=#[^\s]+$)/, '')) //strip for ie7
|
||||||
|
var options = $.extend({}, $target.data(), $this.data())
|
||||||
|
var slideIndex = $this.attr('data-slide-to')
|
||||||
|
if (slideIndex) options.interval = false
|
||||||
|
|
||||||
|
$target.carousel(options)
|
||||||
|
|
||||||
|
if (slideIndex = $this.attr('data-slide-to')) {
|
||||||
|
$target.data('bs.carousel').to(slideIndex)
|
||||||
|
}
|
||||||
|
|
||||||
|
e.preventDefault()
|
||||||
|
})
|
||||||
|
|
||||||
|
$(window).on('load', function () {
|
||||||
|
$('[data-ride="carousel"]').each(function () {
|
||||||
|
var $carousel = $(this)
|
||||||
|
$carousel.carousel($carousel.data())
|
||||||
|
})
|
||||||
|
})
|
||||||
|
|
||||||
|
}(jQuery);
|
||||||
|
|
||||||
|
/* ========================================================================
|
||||||
|
* Bootstrap: dropdown.js v3.0.3
|
||||||
* http://getbootstrap.com/javascript/#dropdowns
|
* http://getbootstrap.com/javascript/#dropdowns
|
||||||
* ========================================================================
|
* ========================================================================
|
||||||
* Copyright 2013 Twitter, Inc.
|
* Copyright 2013 Twitter, Inc.
|
||||||
|
@ -235,7 +459,7 @@
|
||||||
var backdrop = '.dropdown-backdrop'
|
var backdrop = '.dropdown-backdrop'
|
||||||
var toggle = '[data-toggle=dropdown]'
|
var toggle = '[data-toggle=dropdown]'
|
||||||
var Dropdown = function (element) {
|
var Dropdown = function (element) {
|
||||||
var $el = $(element).on('click.bs.dropdown', this.toggle)
|
$(element).on('click.bs.dropdown', this.toggle)
|
||||||
}
|
}
|
||||||
|
|
||||||
Dropdown.prototype.toggle = function (e) {
|
Dropdown.prototype.toggle = function (e) {
|
||||||
|
@ -250,7 +474,7 @@
|
||||||
|
|
||||||
if (!isActive) {
|
if (!isActive) {
|
||||||
if ('ontouchstart' in document.documentElement && !$parent.closest('.navbar-nav').length) {
|
if ('ontouchstart' in document.documentElement && !$parent.closest('.navbar-nav').length) {
|
||||||
// if mobile we we use a backdrop because click events don't delegate
|
// if mobile we use a backdrop because click events don't delegate
|
||||||
$('<div class="dropdown-backdrop"/>').insertAfter($(this)).on('click', clearMenus)
|
$('<div class="dropdown-backdrop"/>').insertAfter($(this)).on('click', clearMenus)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -332,9 +556,9 @@
|
||||||
$.fn.dropdown = function (option) {
|
$.fn.dropdown = function (option) {
|
||||||
return this.each(function () {
|
return this.each(function () {
|
||||||
var $this = $(this)
|
var $this = $(this)
|
||||||
var data = $this.data('dropdown')
|
var data = $this.data('bs.dropdown')
|
||||||
|
|
||||||
if (!data) $this.data('dropdown', (data = new Dropdown(this)))
|
if (!data) $this.data('bs.dropdown', (data = new Dropdown(this)))
|
||||||
if (typeof option == 'string') data[option].call($this)
|
if (typeof option == 'string') data[option].call($this)
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
@ -363,7 +587,7 @@
|
||||||
}(jQuery);
|
}(jQuery);
|
||||||
|
|
||||||
/* ========================================================================
|
/* ========================================================================
|
||||||
* Bootstrap: modal.js v3.0.2
|
* Bootstrap: modal.js v3.0.3
|
||||||
* http://getbootstrap.com/javascript/#modals
|
* http://getbootstrap.com/javascript/#modals
|
||||||
* ========================================================================
|
* ========================================================================
|
||||||
* Copyright 2013 Twitter, Inc.
|
* Copyright 2013 Twitter, Inc.
|
||||||
|
@ -610,7 +834,7 @@
|
||||||
}(jQuery);
|
}(jQuery);
|
||||||
|
|
||||||
/* ========================================================================
|
/* ========================================================================
|
||||||
* Bootstrap: tooltip.js v3.0.2
|
* Bootstrap: tooltip.js v3.0.3
|
||||||
* http://getbootstrap.com/javascript/#tooltip
|
* http://getbootstrap.com/javascript/#tooltip
|
||||||
* Inspired by the original jQuery.tipsy by Jason Frame
|
* Inspired by the original jQuery.tipsy by Jason Frame
|
||||||
* ========================================================================
|
* ========================================================================
|
||||||
|
@ -997,7 +1221,7 @@
|
||||||
}(jQuery);
|
}(jQuery);
|
||||||
|
|
||||||
/* ========================================================================
|
/* ========================================================================
|
||||||
* Bootstrap: popover.js v3.0.2
|
* Bootstrap: popover.js v3.0.3
|
||||||
* http://getbootstrap.com/javascript/#popovers
|
* http://getbootstrap.com/javascript/#popovers
|
||||||
* ========================================================================
|
* ========================================================================
|
||||||
* Copyright 2013 Twitter, Inc.
|
* Copyright 2013 Twitter, Inc.
|
||||||
|
@ -1115,7 +1339,7 @@
|
||||||
}(jQuery);
|
}(jQuery);
|
||||||
|
|
||||||
/* ========================================================================
|
/* ========================================================================
|
||||||
* Bootstrap: tab.js v3.0.2
|
* Bootstrap: tab.js v3.0.3
|
||||||
* http://getbootstrap.com/javascript/#tabs
|
* http://getbootstrap.com/javascript/#tabs
|
||||||
* ========================================================================
|
* ========================================================================
|
||||||
* Copyright 2013 Twitter, Inc.
|
* Copyright 2013 Twitter, Inc.
|
||||||
|
@ -1251,134 +1475,7 @@
|
||||||
}(jQuery);
|
}(jQuery);
|
||||||
|
|
||||||
/* ========================================================================
|
/* ========================================================================
|
||||||
* Bootstrap: affix.js v3.0.2
|
* Bootstrap: collapse.js v3.0.3
|
||||||
* http://getbootstrap.com/javascript/#affix
|
|
||||||
* ========================================================================
|
|
||||||
* Copyright 2013 Twitter, Inc.
|
|
||||||
*
|
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
* you may not use this file except in compliance with the License.
|
|
||||||
* You may obtain a copy of the License at
|
|
||||||
*
|
|
||||||
* http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
*
|
|
||||||
* Unless required by applicable law or agreed to in writing, software
|
|
||||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
* See the License for the specific language governing permissions and
|
|
||||||
* limitations under the License.
|
|
||||||
* ======================================================================== */
|
|
||||||
|
|
||||||
|
|
||||||
+function ($) { "use strict";
|
|
||||||
|
|
||||||
// AFFIX CLASS DEFINITION
|
|
||||||
// ======================
|
|
||||||
|
|
||||||
var Affix = function (element, options) {
|
|
||||||
this.options = $.extend({}, Affix.DEFAULTS, options)
|
|
||||||
this.$window = $(window)
|
|
||||||
.on('scroll.bs.affix.data-api', $.proxy(this.checkPosition, this))
|
|
||||||
.on('click.bs.affix.data-api', $.proxy(this.checkPositionWithEventLoop, this))
|
|
||||||
|
|
||||||
this.$element = $(element)
|
|
||||||
this.affixed =
|
|
||||||
this.unpin = null
|
|
||||||
|
|
||||||
this.checkPosition()
|
|
||||||
}
|
|
||||||
|
|
||||||
Affix.RESET = 'affix affix-top affix-bottom'
|
|
||||||
|
|
||||||
Affix.DEFAULTS = {
|
|
||||||
offset: 0
|
|
||||||
}
|
|
||||||
|
|
||||||
Affix.prototype.checkPositionWithEventLoop = function () {
|
|
||||||
setTimeout($.proxy(this.checkPosition, this), 1)
|
|
||||||
}
|
|
||||||
|
|
||||||
Affix.prototype.checkPosition = function () {
|
|
||||||
if (!this.$element.is(':visible')) return
|
|
||||||
|
|
||||||
var scrollHeight = $(document).height()
|
|
||||||
var scrollTop = this.$window.scrollTop()
|
|
||||||
var position = this.$element.offset()
|
|
||||||
var offset = this.options.offset
|
|
||||||
var offsetTop = offset.top
|
|
||||||
var offsetBottom = offset.bottom
|
|
||||||
|
|
||||||
if (typeof offset != 'object') offsetBottom = offsetTop = offset
|
|
||||||
if (typeof offsetTop == 'function') offsetTop = offset.top()
|
|
||||||
if (typeof offsetBottom == 'function') offsetBottom = offset.bottom()
|
|
||||||
|
|
||||||
var affix = this.unpin != null && (scrollTop + this.unpin <= position.top) ? false :
|
|
||||||
offsetBottom != null && (position.top + this.$element.height() >= scrollHeight - offsetBottom) ? 'bottom' :
|
|
||||||
offsetTop != null && (scrollTop <= offsetTop) ? 'top' : false
|
|
||||||
|
|
||||||
if (this.affixed === affix) return
|
|
||||||
if (this.unpin) this.$element.css('top', '')
|
|
||||||
|
|
||||||
this.affixed = affix
|
|
||||||
this.unpin = affix == 'bottom' ? position.top - scrollTop : null
|
|
||||||
|
|
||||||
this.$element.removeClass(Affix.RESET).addClass('affix' + (affix ? '-' + affix : ''))
|
|
||||||
|
|
||||||
if (affix == 'bottom') {
|
|
||||||
this.$element.offset({ top: document.body.offsetHeight - offsetBottom - this.$element.height() })
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
// AFFIX PLUGIN DEFINITION
|
|
||||||
// =======================
|
|
||||||
|
|
||||||
var old = $.fn.affix
|
|
||||||
|
|
||||||
$.fn.affix = function (option) {
|
|
||||||
return this.each(function () {
|
|
||||||
var $this = $(this)
|
|
||||||
var data = $this.data('bs.affix')
|
|
||||||
var options = typeof option == 'object' && option
|
|
||||||
|
|
||||||
if (!data) $this.data('bs.affix', (data = new Affix(this, options)))
|
|
||||||
if (typeof option == 'string') data[option]()
|
|
||||||
})
|
|
||||||
}
|
|
||||||
|
|
||||||
$.fn.affix.Constructor = Affix
|
|
||||||
|
|
||||||
|
|
||||||
// AFFIX NO CONFLICT
|
|
||||||
// =================
|
|
||||||
|
|
||||||
$.fn.affix.noConflict = function () {
|
|
||||||
$.fn.affix = old
|
|
||||||
return this
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
// AFFIX DATA-API
|
|
||||||
// ==============
|
|
||||||
|
|
||||||
$(window).on('load', function () {
|
|
||||||
$('[data-spy="affix"]').each(function () {
|
|
||||||
var $spy = $(this)
|
|
||||||
var data = $spy.data()
|
|
||||||
|
|
||||||
data.offset = data.offset || {}
|
|
||||||
|
|
||||||
if (data.offsetBottom) data.offset.bottom = data.offsetBottom
|
|
||||||
if (data.offsetTop) data.offset.top = data.offsetTop
|
|
||||||
|
|
||||||
$spy.affix(data)
|
|
||||||
})
|
|
||||||
})
|
|
||||||
|
|
||||||
}(jQuery);
|
|
||||||
|
|
||||||
/* ========================================================================
|
|
||||||
* Bootstrap: collapse.js v3.0.2
|
|
||||||
* http://getbootstrap.com/javascript/#collapse
|
* http://getbootstrap.com/javascript/#collapse
|
||||||
* ========================================================================
|
* ========================================================================
|
||||||
* Copyright 2013 Twitter, Inc.
|
* Copyright 2013 Twitter, Inc.
|
||||||
|
@ -1558,166 +1655,7 @@
|
||||||
}(jQuery);
|
}(jQuery);
|
||||||
|
|
||||||
/* ========================================================================
|
/* ========================================================================
|
||||||
* Bootstrap: scrollspy.js v3.0.2
|
* Bootstrap: transition.js v3.0.3
|
||||||
* http://getbootstrap.com/javascript/#scrollspy
|
|
||||||
* ========================================================================
|
|
||||||
* Copyright 2013 Twitter, Inc.
|
|
||||||
*
|
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
* you may not use this file except in compliance with the License.
|
|
||||||
* You may obtain a copy of the License at
|
|
||||||
*
|
|
||||||
* http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
*
|
|
||||||
* Unless required by applicable law or agreed to in writing, software
|
|
||||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
* See the License for the specific language governing permissions and
|
|
||||||
* limitations under the License.
|
|
||||||
* ======================================================================== */
|
|
||||||
|
|
||||||
|
|
||||||
+function ($) { "use strict";
|
|
||||||
|
|
||||||
// SCROLLSPY CLASS DEFINITION
|
|
||||||
// ==========================
|
|
||||||
|
|
||||||
function ScrollSpy(element, options) {
|
|
||||||
var href
|
|
||||||
var process = $.proxy(this.process, this)
|
|
||||||
|
|
||||||
this.$element = $(element).is('body') ? $(window) : $(element)
|
|
||||||
this.$body = $('body')
|
|
||||||
this.$scrollElement = this.$element.on('scroll.bs.scroll-spy.data-api', process)
|
|
||||||
this.options = $.extend({}, ScrollSpy.DEFAULTS, options)
|
|
||||||
this.selector = (this.options.target
|
|
||||||
|| ((href = $(element).attr('href')) && href.replace(/.*(?=#[^\s]+$)/, '')) //strip for ie7
|
|
||||||
|| '') + ' .nav li > a'
|
|
||||||
this.offsets = $([])
|
|
||||||
this.targets = $([])
|
|
||||||
this.activeTarget = null
|
|
||||||
|
|
||||||
this.refresh()
|
|
||||||
this.process()
|
|
||||||
}
|
|
||||||
|
|
||||||
ScrollSpy.DEFAULTS = {
|
|
||||||
offset: 10
|
|
||||||
}
|
|
||||||
|
|
||||||
ScrollSpy.prototype.refresh = function () {
|
|
||||||
var offsetMethod = this.$element[0] == window ? 'offset' : 'position'
|
|
||||||
|
|
||||||
this.offsets = $([])
|
|
||||||
this.targets = $([])
|
|
||||||
|
|
||||||
var self = this
|
|
||||||
var $targets = this.$body
|
|
||||||
.find(this.selector)
|
|
||||||
.map(function () {
|
|
||||||
var $el = $(this)
|
|
||||||
var href = $el.data('target') || $el.attr('href')
|
|
||||||
var $href = /^#\w/.test(href) && $(href)
|
|
||||||
|
|
||||||
return ($href
|
|
||||||
&& $href.length
|
|
||||||
&& [[ $href[offsetMethod]().top + (!$.isWindow(self.$scrollElement.get(0)) && self.$scrollElement.scrollTop()), href ]]) || null
|
|
||||||
})
|
|
||||||
.sort(function (a, b) { return a[0] - b[0] })
|
|
||||||
.each(function () {
|
|
||||||
self.offsets.push(this[0])
|
|
||||||
self.targets.push(this[1])
|
|
||||||
})
|
|
||||||
}
|
|
||||||
|
|
||||||
ScrollSpy.prototype.process = function () {
|
|
||||||
var scrollTop = this.$scrollElement.scrollTop() + this.options.offset
|
|
||||||
var scrollHeight = this.$scrollElement[0].scrollHeight || this.$body[0].scrollHeight
|
|
||||||
var maxScroll = scrollHeight - this.$scrollElement.height()
|
|
||||||
var offsets = this.offsets
|
|
||||||
var targets = this.targets
|
|
||||||
var activeTarget = this.activeTarget
|
|
||||||
var i
|
|
||||||
|
|
||||||
if (scrollTop >= maxScroll) {
|
|
||||||
return activeTarget != (i = targets.last()[0]) && this.activate(i)
|
|
||||||
}
|
|
||||||
|
|
||||||
for (i = offsets.length; i--;) {
|
|
||||||
activeTarget != targets[i]
|
|
||||||
&& scrollTop >= offsets[i]
|
|
||||||
&& (!offsets[i + 1] || scrollTop <= offsets[i + 1])
|
|
||||||
&& this.activate( targets[i] )
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
ScrollSpy.prototype.activate = function (target) {
|
|
||||||
this.activeTarget = target
|
|
||||||
|
|
||||||
$(this.selector)
|
|
||||||
.parents('.active')
|
|
||||||
.removeClass('active')
|
|
||||||
|
|
||||||
var selector = this.selector
|
|
||||||
+ '[data-target="' + target + '"],'
|
|
||||||
+ this.selector + '[href="' + target + '"]'
|
|
||||||
|
|
||||||
var active = $(selector)
|
|
||||||
.parents('li')
|
|
||||||
.addClass('active')
|
|
||||||
|
|
||||||
if (active.parent('.dropdown-menu').length) {
|
|
||||||
active = active
|
|
||||||
.closest('li.dropdown')
|
|
||||||
.addClass('active')
|
|
||||||
}
|
|
||||||
|
|
||||||
active.trigger('activate')
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
// SCROLLSPY PLUGIN DEFINITION
|
|
||||||
// ===========================
|
|
||||||
|
|
||||||
var old = $.fn.scrollspy
|
|
||||||
|
|
||||||
$.fn.scrollspy = function (option) {
|
|
||||||
return this.each(function () {
|
|
||||||
var $this = $(this)
|
|
||||||
var data = $this.data('bs.scrollspy')
|
|
||||||
var options = typeof option == 'object' && option
|
|
||||||
|
|
||||||
if (!data) $this.data('bs.scrollspy', (data = new ScrollSpy(this, options)))
|
|
||||||
if (typeof option == 'string') data[option]()
|
|
||||||
})
|
|
||||||
}
|
|
||||||
|
|
||||||
$.fn.scrollspy.Constructor = ScrollSpy
|
|
||||||
|
|
||||||
|
|
||||||
// SCROLLSPY NO CONFLICT
|
|
||||||
// =====================
|
|
||||||
|
|
||||||
$.fn.scrollspy.noConflict = function () {
|
|
||||||
$.fn.scrollspy = old
|
|
||||||
return this
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
// SCROLLSPY DATA-API
|
|
||||||
// ==================
|
|
||||||
|
|
||||||
$(window).on('load', function () {
|
|
||||||
$('[data-spy="scroll"]').each(function () {
|
|
||||||
var $spy = $(this)
|
|
||||||
$spy.scrollspy($spy.data())
|
|
||||||
})
|
|
||||||
})
|
|
||||||
|
|
||||||
}(jQuery);
|
|
||||||
|
|
||||||
/* ========================================================================
|
|
||||||
* Bootstrap: transition.js v3.0.2
|
|
||||||
* http://getbootstrap.com/javascript/#transitions
|
* http://getbootstrap.com/javascript/#transitions
|
||||||
* ========================================================================
|
* ========================================================================
|
||||||
* Copyright 2013 Twitter, Inc.
|
* Copyright 2013 Twitter, Inc.
|
||||||
|
|
File diff suppressed because one or more lines are too long
Loading…
Reference in New Issue