MiniSiderMenu.vue 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  1. <template>
  2. <a-layout-sider
  3. :class="['sider', isMobile ? null : 'shadow', theme ]"
  4. width="256px"
  5. :collapsible="collapsible"
  6. v-model="collapsed"
  7. :trigger="null">
  8. <div class="logo">
  9. <router-link :to="{name:'dashboard'}">
  10. <img src="~@/assets/logo.svg" alt="logo">
  11. <h1>Ant Design Pro</h1>
  12. </router-link>
  13. </div>
  14. <s-menu
  15. :collapsed="collapsed"
  16. :menu="menus"
  17. :theme="theme"
  18. @select="onSelect"
  19. :mode="mode"
  20. style="padding: 16px 0px;"></s-menu>
  21. </a-layout-sider>
  22. </template>
  23. <script>
  24. import ALayoutSider from "ant-design-vue/es/layout/Sider"
  25. import SMenu from './index'
  26. export default {
  27. name: "SiderMenu",
  28. components: { ALayoutSider, SMenu },
  29. props: {
  30. mode: {
  31. type: String,
  32. required: false,
  33. default: 'inline'
  34. },
  35. theme: {
  36. type: String,
  37. required: false,
  38. default: 'dark'
  39. },
  40. collapsible: {
  41. type: Boolean,
  42. required: false,
  43. default: false
  44. },
  45. collapsed: {
  46. type: Boolean,
  47. required: false,
  48. default: false
  49. },
  50. menus: {
  51. type: Array,
  52. required: true
  53. }
  54. },
  55. created () {
  56. },
  57. computed: {
  58. isMobile () {
  59. return this.$store.state.app.device !== 'desktop'
  60. }
  61. },
  62. methods: {
  63. onSelect (obj) {
  64. this.$emit('menuSelect', obj)
  65. }
  66. }
  67. }
  68. </script>