Ben Lin
2024-06-27 dfd2d0218bbcea93b4bfb0e7ca7ac9b1cc1cc7da
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
import { ref, computed, unref } from 'vue';
import { createPageContext } from '@/hooks/component/usePageContext';
import { useWindowSizeFn } from '@vben/hooks';
 
const headerHeightRef = ref(0);
const footerHeightRef = ref(0);
 
export function useLayoutHeight() {
  function setHeaderHeight(val) {
    headerHeightRef.value = val;
  }
  function setFooterHeight(val) {
    footerHeightRef.value = val;
  }
  return { headerHeightRef, footerHeightRef, setHeaderHeight, setFooterHeight };
}
 
export function useContentViewHeight() {
  const contentHeight = ref(window.innerHeight);
  const pageHeight = ref(window.innerHeight);
  const getViewHeight = computed(() => {
    return unref(contentHeight) - unref(headerHeightRef) - unref(footerHeightRef) || 0;
  });
 
  useWindowSizeFn(
    () => {
      contentHeight.value = window.innerHeight;
    },
    { wait: 100, immediate: true },
  );
 
  async function setPageHeight(height: number) {
    pageHeight.value = height;
  }
 
  createPageContext({
    contentHeight: getViewHeight,
    setPageHeight,
    pageHeight,
  });
}