useSticky.js 1.3 KB

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