index.vue 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  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. <MixSider v-else-if="getIsMixSidebar" />
  14. <Sider v-else />
  15. </template>
  16. <script lang="ts">
  17. import { defineComponent } from 'vue';
  18. import Sider from './LayoutSider.vue';
  19. import MixSider from './MixSider.vue';
  20. import { Drawer } from 'ant-design-vue';
  21. import { useAppInject } from '/@/hooks/web/useAppInject';
  22. import { useMenuSetting } from '/@/hooks/setting/useMenuSetting';
  23. import { useDesign } from '/@/hooks/web/useDesign';
  24. export default defineComponent({
  25. name: 'SiderWrapper',
  26. components: { Sider, Drawer, MixSider },
  27. setup() {
  28. const { prefixCls } = useDesign('layout-sider-wrapper');
  29. const { getIsMobile } = useAppInject();
  30. const { setMenuSetting, getCollapsed, getMenuWidth, getIsMixSidebar } = useMenuSetting();
  31. function handleClose() {
  32. setMenuSetting({
  33. collapsed: true,
  34. });
  35. }
  36. return { prefixCls, getIsMobile, getCollapsed, handleClose, getMenuWidth, getIsMixSidebar };
  37. },
  38. });
  39. </script>
  40. <style lang="less">
  41. @prefix-cls: ~'@{namespace}-layout-sider-wrapper';
  42. .@{prefix-cls} {
  43. .ant-drawer-body {
  44. height: 100vh;
  45. padding: 0;
  46. }
  47. .ant-drawer-header-no-title {
  48. display: none;
  49. }
  50. }
  51. </style>