diff --git a/packages/ui-default/components/sticky/sticky.page.js b/packages/ui-default/components/sticky/sticky.page.js index ba41385c2..3ea559873 100644 --- a/packages/ui-default/components/sticky/sticky.page.js +++ b/packages/ui-default/components/sticky/sticky.page.js @@ -1,5 +1,3 @@ -import 'sticky-kit/dist/sticky-kit'; - import $ from 'jquery'; import _ from 'lodash'; import responsiveCutoff from 'vj/breakpoints.json'; @@ -10,38 +8,24 @@ const navHeight = isBelow(responsiveCutoff.mobile) ? 0 : $('.nav').height(); -function updateStickies($stickies) { - $stickies.get().forEach((element) => { - const $sticky = $(element); - const shouldEnableSticky = (isAbove($sticky.data('sticky-cutoff-min'))); - const stickyEnabled = $sticky.data('sticky-enabled'); - if (shouldEnableSticky && !stickyEnabled) { - const stickyOptions = {}; - const $stickyParent = $sticky.closest('[data-sticky-parent]'); - if ($stickyParent.length > 0) { - stickyOptions.parent = $stickyParent; - } - stickyOptions.offset_top = 10 + navHeight; - $sticky.stick_in_parent(stickyOptions); - $sticky.data('sticky-enabled', true); - } else if (!shouldEnableSticky && stickyEnabled) { - $sticky.trigger('sticky_kit:detach'); - $sticky.data('sticky-enabled', false); - } - }); -} - function getCutoff(str) { - if (str === 'medium') { - return responsiveCutoff.mobile; - } if (str === 'large') { - return responsiveCutoff.desktop; - } + if (str === 'medium') return responsiveCutoff.mobile; + if (str === 'large') return responsiveCutoff.desktop; return 0; } -function stickyRelayout() { - $('body').trigger('sticky_kit:recalc'); +function updateStickies($stickies) { + $stickies.get().forEach((element) => { + const $sticky = $(element); + const shouldEnableSticky = isAbove($sticky.data('sticky-cutoff-min')); + if (shouldEnableSticky) { + element.style.position = 'sticky'; + element.style.top = `${10 + navHeight}px`; + } else { + element.style.position = ''; + element.style.top = ''; + } + }); } const stickyPage = new AutoloadPage('stickyPage', () => { @@ -54,13 +38,11 @@ const stickyPage = new AutoloadPage('stickyPage', () => { shouldListenResize = true; } $sticky.data('sticky-cutoff-min', getCutoff(minEnabledSize)); - $sticky.data('sticky-enabled', false); }); updateStickies($stickies); if (shouldListenResize) { $(window).on('resize', _.throttle(() => updateStickies($stickies), 300)); } - $(document).on('vjLayout', _.throttle(stickyRelayout, 100)); }); export default stickyPage; diff --git a/packages/ui-default/components/sticky/sticky.page.styl b/packages/ui-default/components/sticky/sticky.page.styl new file mode 100644 index 000000000..8814ec861 --- /dev/null +++ b/packages/ui-default/components/sticky/sticky.page.styl @@ -0,0 +1,11 @@ +[data-sticky-parent] + display: flex + flex-wrap: wrap + + &::before, + &::after + display: none + + > .columns, + > .column + float: none diff --git a/packages/ui-default/components/table/StyledTable.js b/packages/ui-default/components/table/StyledTable.js index 6b06781d1..6e9baeaff 100644 --- a/packages/ui-default/components/table/StyledTable.js +++ b/packages/ui-default/components/table/StyledTable.js @@ -1,7 +1,4 @@ -import 'sticky-kit/dist/sticky-kit'; - import $ from 'jquery'; -import _ from 'lodash'; import responsiveCutoff from 'vj/breakpoints.json'; import DOMAttachedObject from 'vj/components/DOMAttachedObject'; import { isBelow } from 'vj/utils/mediaQuery'; @@ -23,29 +20,53 @@ export default class StyledTable extends DOMAttachedObject { super($dom); - this.$container = $('