useSticky.js 1.3 KB

12345678910111213141516171819202122232425262728293031
  1. import _typeof from "@babel/runtime/helpers/esm/typeof";
  2. import canUseDom from '../../_util/canUseDom';
  3. import { computed } from 'vue';
  4. // fix ssr render
  5. var defaultContainer = canUseDom() ? window : null;
  6. /** Sticky header hooks */
  7. export default function useSticky(stickyRef, prefixClsRef) {
  8. return computed(function () {
  9. var _ref = _typeof(stickyRef.value) === 'object' ? stickyRef.value : {},
  10. _ref$offsetHeader = _ref.offsetHeader,
  11. offsetHeader = _ref$offsetHeader === void 0 ? 0 : _ref$offsetHeader,
  12. _ref$offsetSummary = _ref.offsetSummary,
  13. offsetSummary = _ref$offsetSummary === void 0 ? 0 : _ref$offsetSummary,
  14. _ref$offsetScroll = _ref.offsetScroll,
  15. offsetScroll = _ref$offsetScroll === void 0 ? 0 : _ref$offsetScroll,
  16. _ref$getContainer = _ref.getContainer,
  17. getContainer = _ref$getContainer === void 0 ? function () {
  18. return defaultContainer;
  19. } : _ref$getContainer;
  20. var container = getContainer() || defaultContainer;
  21. var isSticky = !!stickyRef.value;
  22. return {
  23. isSticky: isSticky,
  24. stickyClassName: isSticky ? "".concat(prefixClsRef.value, "-sticky-holder") : '',
  25. offsetHeader: offsetHeader,
  26. offsetSummary: offsetSummary,
  27. offsetScroll: offsetScroll,
  28. container: container
  29. };
  30. });
  31. }