index.vue 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. <template>
  2. <Drawer
  3. v-if="getIsMobile"
  4. placement="left"
  5. :class="prefixCls"
  6. :width="getMenuWidth"
  7. :getContainer="null"
  8. :visible="!getCollapsed"
  9. @close="handleClose"
  10. >
  11. <Sider />
  12. </Drawer>
  13. <Sider v-else />
  14. </template>
  15. <script lang="ts">
  16. import { defineComponent } from 'vue';
  17. import Sider from './LayoutSider';
  18. import { Drawer } from 'ant-design-vue';
  19. import { useAppInject } from '/@/hooks/web/useAppInject';
  20. import { useMenuSetting } from '/@/hooks/setting/useMenuSetting';
  21. import { useDesign } from '/@/hooks/web/useDesign';
  22. export default defineComponent({
  23. name: 'SiderWrapper',
  24. components: { Sider, Drawer },
  25. setup() {
  26. const { prefixCls } = useDesign('layout-sider-wrapper');
  27. const { getIsMobile } = useAppInject();
  28. const { setMenuSetting, getCollapsed, getMenuWidth } = useMenuSetting();
  29. function handleClose() {
  30. setMenuSetting({
  31. collapsed: true,
  32. });
  33. }
  34. return { prefixCls, getIsMobile, getCollapsed, handleClose, getMenuWidth };
  35. },
  36. });
  37. </script>
  38. <style lang="less">
  39. @import (reference) '../../../design/index.less';
  40. @prefix-cls: ~'@{namespace}-layout-sider-wrapper';
  41. .@{prefix-cls} {
  42. .ant-drawer-body {
  43. height: 100vh;
  44. padding: 0;
  45. }
  46. .ant-drawer-header-no-title {
  47. display: none;
  48. }
  49. }
  50. </style>