summaryrefslogtreecommitdiff
path: root/addons/website/static/src/snippets
diff options
context:
space:
mode:
Diffstat (limited to 'addons/website/static/src/snippets')
-rw-r--r--addons/website/static/src/snippets/s_table_of_content/000.js36
1 files changed, 13 insertions, 23 deletions
diff --git a/addons/website/static/src/snippets/s_table_of_content/000.js b/addons/website/static/src/snippets/s_table_of_content/000.js
index ac610304e48..68250bc88fa 100644
--- a/addons/website/static/src/snippets/s_table_of_content/000.js
+++ b/addons/website/static/src/snippets/s_table_of_content/000.js
@@ -11,18 +11,18 @@ const TableOfContent = publicWidget.Widget.extend({
/**
* @override
*/
- start: function () {
- this._initializeNavbarTopPosition();
+ async start() {
+ await this._super(...arguments);
+ this._updateTableOfContentNavbarPosition();
extraMenuUpdateCallbacks.push(this._updateTableOfContentNavbarPosition.bind(this));
- return this._super.apply(this, arguments);
},
/**
* @override
*/
- destroy: function () {
+ destroy() {
this.$target.css('top', '');
this.$target.find('.s_table_of_content_navbar').css('top', '');
- this._super.apply(this, arguments);
+ this._super(...arguments);
},
//--------------------------------------------------------------------------
@@ -30,26 +30,16 @@ const TableOfContent = publicWidget.Widget.extend({
//--------------------------------------------------------------------------
/**
- * Initialize the top position of the snippet navbar according to the height
- * of the headers of the page.
- *
* @private
*/
- _initializeNavbarTopPosition: function () {
- let headerHeight = 0;
+ _updateTableOfContentNavbarPosition() {
+ let position = 0;
const $fixedElements = $('.o_top_fixed_element');
- _.each($fixedElements, el => headerHeight += $(el).outerHeight());
- this._updateTableOfContentNavbarPosition(headerHeight);
- },
- /**
- * @private
- * @param {number} position
- */
- _updateTableOfContentNavbarPosition: function (position) {
+ _.each($fixedElements, el => position += $(el).outerHeight());
const isHorizontalNavbar = this.$target.hasClass('s_table_of_content_horizontal_navbar');
this.$target.css('top', isHorizontalNavbar ? position : '');
this.$target.find('.s_table_of_content_navbar').css('top', isHorizontalNavbar ? '' : position + 20);
- $('body').scrollspy({target: '.s_table_of_content_navbar', offset: position + 100});
+ $().getScrollingElement().scrollspy({target: '.s_table_of_content_navbar', method: 'offset', offset: position + 100});
},
});
@@ -66,15 +56,15 @@ publicWidget.registry.anchorSlide.include({
* @override
* @private
*/
- _computeHeaderHeight: function () {
- let headerHeight = this._super(...arguments);
+ _computeExtraOffset() {
+ let extraOffset = this._super(...arguments);
if (this.$el.hasClass('table_of_content_link')) {
const tableOfContentNavbarEl = this.$el.closest('.s_table_of_content_navbar_sticky.s_table_of_content_horizontal_navbar');
if (tableOfContentNavbarEl.length > 0) {
- headerHeight += $(tableOfContentNavbarEl).outerHeight();
+ extraOffset += $(tableOfContentNavbarEl).outerHeight();
}
}
- return headerHeight;
+ return extraOffset;
},
});