useSticky.js 985 B

1234567891011121314151617181920212223242526272829303132
  1. "use strict";
  2. var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
  3. Object.defineProperty(exports, "__esModule", {
  4. value: true
  5. });
  6. exports.default = useSticky;
  7. var _canUseDom = _interopRequireDefault(require("../../_util/canUseDom"));
  8. var _vue = require("vue");
  9. // fix ssr render
  10. const defaultContainer = (0, _canUseDom.default)() ? window : null;
  11. /** Sticky header hooks */
  12. function useSticky(stickyRef, prefixClsRef) {
  13. return (0, _vue.computed)(() => {
  14. const {
  15. offsetHeader = 0,
  16. offsetSummary = 0,
  17. offsetScroll = 0,
  18. getContainer = () => defaultContainer
  19. } = typeof stickyRef.value === 'object' ? stickyRef.value : {};
  20. const container = getContainer() || defaultContainer;
  21. const isSticky = !!stickyRef.value;
  22. return {
  23. isSticky,
  24. stickyClassName: isSticky ? `${prefixClsRef.value}-sticky-holder` : '',
  25. offsetHeader,
  26. offsetSummary,
  27. offsetScroll,
  28. container
  29. };
  30. });
  31. }