common_sider.html 3.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283
  1. {{define "menuItems"}}
  2. <a-menu-item key="{{ .base_path }}panel/">
  3. <a-icon type="dashboard"></a-icon>
  4. <span><b>{{ i18n "menu.dashboard"}}</b></span>
  5. </a-menu-item>
  6. <a-menu-item key="{{ .base_path }}panel/inbounds">
  7. <a-icon type="user"></a-icon>
  8. <span><b>{{ i18n "menu.inbounds"}}</b></span>
  9. </a-menu-item>
  10. <a-menu-item key="{{ .base_path }}panel/settings">
  11. <a-icon type="setting"></a-icon>
  12. <span><b>{{ i18n "menu.settings"}}</b></span>
  13. </a-menu-item>
  14. <a-menu-item key="{{ .base_path }}panel/xray">
  15. <a-icon type="tool"></a-icon>
  16. <span><b>{{ i18n "menu.xray"}}</b></span>
  17. </a-menu-item>
  18. <a-menu-item key="{{ .base_path }}logout">
  19. <a-icon type="logout"></a-icon>
  20. <span><b>{{ i18n "menu.logout"}}</b></span>
  21. </a-menu-item>
  22. {{end}}
  23. {{define "commonSider"}}
  24. <a-layout-sider :theme="themeSwitcher.currentTheme" id="sider" collapsible breakpoint="md" collapsed-width="0">
  25. <a-menu :theme="themeSwitcher.currentTheme" mode="inline" selected-keys="">
  26. <a-menu-item mode="inline">
  27. <a-icon type="bulb" :theme="themeSwitcher.isDarkTheme ? 'filled' : 'outlined'"></a-icon>
  28. <theme-switch>
  29. </theme-switch>
  30. <a-checkbox v-if="themeSwitcher.isDarkTheme" style="padding-left: 1rem; vertical-align: middle;"
  31. :checked="themeSwitcher.isUltra"
  32. @click="themeSwitcher.toggleUltra()">
  33. Ultra
  34. </a-checkbox>
  35. </a-menu-item>
  36. </a-menu>
  37. <a-menu :theme="themeSwitcher.currentTheme" mode="inline" :selected-keys="['{{ .request_uri }}']"
  38. @click="({key}) => key.startsWith('http') ? window.open(key) : location.href = key">
  39. {{template "menuItems" .}}
  40. </a-menu>
  41. </a-layout-sider>
  42. <a-drawer id="sider-drawer" placement="left" :closable="false"
  43. @close="siderDrawer.close()"
  44. :visible="siderDrawer.visible"
  45. :wrap-class-name="themeSwitcher.currentTheme"
  46. :wrap-style="{ padding: 0 }">
  47. <div class="drawer-handle" @click="siderDrawer.change()" slot="handle">
  48. <a-icon :type="siderDrawer.visible ? 'close' : 'menu-fold'"></a-icon>
  49. </div>
  50. <a-menu :theme="themeSwitcher.currentTheme" mode="inline" selected-keys="">
  51. <a-menu-item mode="inline">
  52. <a-icon type="bulb" :theme="themeSwitcher.isDarkTheme ? 'filled' : 'outlined'"></a-icon>
  53. <theme-switch>
  54. </theme-switch>
  55. <a-checkbox v-if="themeSwitcher.isDarkTheme" style="padding-left: 1rem; vertical-align: middle;"
  56. :checked="themeSwitcher.isUltra"
  57. @click="themeSwitcher.toggleUltra()">
  58. Ultra
  59. </a-checkbox>
  60. </a-menu-item>
  61. </a-menu>
  62. <a-menu :theme="themeSwitcher.currentTheme" mode="inline" :selected-keys="['{{ .request_uri }}']"
  63. @click="({key}) => key.startsWith('http') ? window.open(key) : location.href = key">
  64. {{template "menuItems" .}}
  65. </a-menu>
  66. </a-drawer>
  67. <script>
  68. const siderDrawer = {
  69. visible: false,
  70. show() {
  71. this.visible = true;
  72. },
  73. close() {
  74. this.visible = false;
  75. },
  76. change() {
  77. this.visible = !this.visible;
  78. },
  79. };
  80. </script>
  81. {{end}}