vben
2021-02-09 23657547ab28fa65c2369ded8e73929dee76c750
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
<script lang="ts">
  import type { PropType } from 'vue';
  import { defineComponent, toRefs, ref } from 'vue';
 
  import { createAppProviderContext } from './useAppContext';
 
  import designSetting from '/@/settings/designSetting';
  import { createBreakpointListen } from '/@/hooks/event/useBreakpoint';
 
  export default defineComponent({
    name: 'AppProvider',
    inheritAttrs: false,
    props: {
      prefixCls: {
        type: String as PropType<string>,
        default: designSetting.prefixCls,
      },
    },
    setup(props, { slots }) {
      const isMobileRef = ref(false);
 
      createBreakpointListen(({ screenMap, sizeEnum, width }) => {
        const lgWidth = screenMap.get(sizeEnum.LG);
        if (lgWidth) {
          isMobileRef.value = width.value - 1 < lgWidth;
        }
      });
 
      const { prefixCls } = toRefs(props);
      createAppProviderContext({ prefixCls, isMobile: isMobileRef });
      return () => slots.default?.();
    },
  });
</script>