diff options
| author | Raphael Collet <rco@openerp.com> | 2012-04-18 12:08:11 +0200 |
|---|---|---|
| committer | Raphael Collet <rco@openerp.com> | 2012-04-18 12:08:11 +0200 |
| commit | 4a4ebf4941c500b57bd8a7ee22943dc70a764c96 (patch) | |
| tree | 663367cbe2443ab3f62f0bb043272e5f6dd30e47 /addons/web/static/lib/jquery.ui.bootstrap/bootstrap/js/bootstrap-scrollspy.js | |
| parent | 876f09224454f1dc5a56ff1ace8fac5d79fe5089 (diff) | |
| parent | e4063efdf27324d91ad2d1a33f042e0c2b192af8 (diff) | |
[MERGE] from trunk
bzr revid: rco@openerp.com-20120418100811-m58udbq5a3ulif5i
Diffstat (limited to 'addons/web/static/lib/jquery.ui.bootstrap/bootstrap/js/bootstrap-scrollspy.js')
| -rw-r--r-- | addons/web/static/lib/jquery.ui.bootstrap/bootstrap/js/bootstrap-scrollspy.js | 107 |
1 files changed, 107 insertions, 0 deletions
diff --git a/addons/web/static/lib/jquery.ui.bootstrap/bootstrap/js/bootstrap-scrollspy.js b/addons/web/static/lib/jquery.ui.bootstrap/bootstrap/js/bootstrap-scrollspy.js new file mode 100644 index 00000000000..efbc4329605 --- /dev/null +++ b/addons/web/static/lib/jquery.ui.bootstrap/bootstrap/js/bootstrap-scrollspy.js @@ -0,0 +1,107 @@ +/* ============================================================= + * bootstrap-scrollspy.js v1.4.0 + * http://twitter.github.com/bootstrap/javascript.html#scrollspy + * ============================================================= + * Copyright 2011 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" + + var $window = $(window) + + function ScrollSpy( topbar, selector ) { + var processScroll = $.proxy(this.processScroll, this) + this.$topbar = $(topbar) + this.selector = selector || 'li > a' + this.refresh() + this.$topbar.delegate(this.selector, 'click', processScroll) + $window.scroll(processScroll) + this.processScroll() + } + + ScrollSpy.prototype = { + + refresh: function () { + this.targets = this.$topbar.find(this.selector).map(function () { + var href = $(this).attr('href') + return /^#\w/.test(href) && $(href).length ? href : null + }) + + this.offsets = $.map(this.targets, function (id) { + return $(id).offset().top + }) + } + + , processScroll: function () { + var scrollTop = $window.scrollTop() + 10 + , offsets = this.offsets + , targets = this.targets + , activeTarget = this.activeTarget + , i + + for (i = offsets.length; i--;) { + activeTarget != targets[i] + && scrollTop >= offsets[i] + && (!offsets[i + 1] || scrollTop <= offsets[i + 1]) + && this.activateButton( targets[i] ) + } + } + + , activateButton: function (target) { + this.activeTarget = target + + this.$topbar + .find(this.selector).parent('.active') + .removeClass('active') + + this.$topbar + .find(this.selector + '[href="' + target + '"]') + .parent('li') + .addClass('active') + } + + } + + /* SCROLLSPY PLUGIN DEFINITION + * =========================== */ + + $.fn.scrollSpy = function( options ) { + var scrollspy = this.data('scrollspy') + + if (!scrollspy) { + return this.each(function () { + $(this).data('scrollspy', new ScrollSpy( this, options )) + }) + } + + if ( options === true ) { + return scrollspy + } + + if ( typeof options == 'string' ) { + scrollspy[options]() + } + + return this + } + + $(document).ready(function () { + $('body').scrollSpy('[data-scrollspy] li > a') + }) + +}( window.jQuery || window.ender );
\ No newline at end of file |
