diff --git a/ui/console-src/layouts/BasicLayout.vue b/ui/console-src/layouts/BasicLayout.vue index 4b89567bb..402e922d0 100644 --- a/ui/console-src/layouts/BasicLayout.vue +++ b/ui/console-src/layouts/BasicLayout.vue @@ -2,55 +2,22 @@ import GlobalSearchModal from "@/components/global-search/GlobalSearchModal.vue"; import { RoutesMenu } from "@/components/menu/RoutesMenu"; import { useRouteMenuGenerator } from "@/composables/use-route-menu-generator"; -import { rbacAnnotations } from "@/constants/annotations"; -import { useUserStore } from "@/stores/user"; +import MobileMenu from "@/layouts/MobileMenu.vue"; +import UserProfileBanner from "@/layouts/UserProfileBanner.vue"; import { isMac } from "@/utils/device"; import { coreMenuGroups } from "@console/router/constant"; -import { - Dialog, - IconAccountCircleLine, - IconArrowDownLine, - IconLogoutCircleRLine, - IconMore, - IconSearch, - IconShieldUser, - VAvatar, - VDropdown, - VTag, -} from "@halo-dev/components"; +import { IconSearch } from "@halo-dev/components"; import { useEventListener } from "@vueuse/core"; import { useOverlayScrollbars, type UseOverlayScrollbarsParams, } from "overlayscrollbars-vue"; -import { defineStore, storeToRefs } from "pinia"; +import { defineStore } from "pinia"; import { onMounted, reactive, ref } from "vue"; -import { useI18n } from "vue-i18n"; -import { RouterView, useRoute, useRouter } from "vue-router"; +import { RouterView, useRoute } from "vue-router"; import IconLogo from "~icons/core/logo?width=5rem&height=2rem"; const route = useRoute(); -const router = useRouter(); -const { t } = useI18n(); - -const moreMenuVisible = ref(false); -const moreMenuRootVisible = ref(false); - -const userStore = useUserStore(); - -const { currentRoles, currentUser } = storeToRefs(userStore); - -const handleLogout = () => { - Dialog.warning({ - title: t("core.sidebar.operations.logout.title"), - description: t("core.sidebar.operations.logout.description"), - confirmText: t("core.common.buttons.confirm"), - cancelText: t("core.common.buttons.cancel"), - onConfirm: async () => { - window.location.href = "/logout"; - }, - }); -}; // Global Search const globalSearchVisible = ref(false); @@ -103,223 +70,49 @@ onMounted(() => { diff --git a/ui/src/components/base-app/BaseApp.vue b/ui/src/components/base-app/BaseApp.vue index edad2d161..0d852e790 100644 --- a/ui/src/components/base-app/BaseApp.vue +++ b/ui/src/components/base-app/BaseApp.vue @@ -4,12 +4,13 @@ import { i18n } from "@/locales"; import { useGlobalInfoStore } from "@/stores/global-info"; import type { FormKitConfig } from "@formkit/core"; import { useFavicon } from "@vueuse/core"; +import type { OverlayScrollbars } from "overlayscrollbars"; import { useOverlayScrollbars, type UseOverlayScrollbarsParams, } from "overlayscrollbars-vue"; import { storeToRefs } from "pinia"; -import { computed, inject, onMounted, reactive } from "vue"; +import { computed, inject, onMounted, provide, reactive } from "vue"; import { RouterView } from "vue-router"; useAppTitle(); @@ -35,11 +36,13 @@ const reactiveParams = reactive({ }, defer: true, }); -const [initialize] = useOverlayScrollbars(reactiveParams); +const [initialize, instance] = useOverlayScrollbars(reactiveParams); onMounted(() => { if (body) initialize({ target: body }); }); +provide<() => OverlayScrollbars | null>("bodyScrollInstance", instance); + // setup formkit locale // see https://formkit.com/essentials/internationalization const formkitLocales = { diff --git a/ui/src/layouts/MobileMenu.vue b/ui/src/layouts/MobileMenu.vue new file mode 100644 index 000000000..f3e701365 --- /dev/null +++ b/ui/src/layouts/MobileMenu.vue @@ -0,0 +1,218 @@ + + + + diff --git a/ui/src/layouts/UserProfileBanner.vue b/ui/src/layouts/UserProfileBanner.vue new file mode 100644 index 000000000..bbf10966d --- /dev/null +++ b/ui/src/layouts/UserProfileBanner.vue @@ -0,0 +1,248 @@ + + + + diff --git a/ui/src/locales/_missing_translations_es.yaml b/ui/src/locales/_missing_translations_es.yaml index 1be31b092..4627cc16a 100644 --- a/ui/src/locales/_missing_translations_es.yaml +++ b/ui/src/locales/_missing_translations_es.yaml @@ -2,6 +2,7 @@ core: sidebar: menu: items: + home: Home tools: Tools operations: logout: @@ -30,7 +31,6 @@ core: label: Enable animation presets: recent_published: - publishTime: Publish Time {publishTime} empty: title: No published posts notification: diff --git a/ui/src/locales/en.yaml b/ui/src/locales/en.yaml index 8aec99116..70f4bf786 100644 --- a/ui/src/locales/en.yaml +++ b/ui/src/locales/en.yaml @@ -9,6 +9,7 @@ core: system: System tool: Tool items: + home: Home dashboard: Dashboard posts: Posts single_pages: Pages diff --git a/ui/src/locales/zh-CN.yaml b/ui/src/locales/zh-CN.yaml index 7c55fc34a..fd4a7098c 100644 --- a/ui/src/locales/zh-CN.yaml +++ b/ui/src/locales/zh-CN.yaml @@ -22,6 +22,7 @@ core: overview: 概览 backup: 备份 tools: 工具 + home: 首页 operations: logout: tooltip: 退出登录 diff --git a/ui/src/locales/zh-TW.yaml b/ui/src/locales/zh-TW.yaml index 7be903509..e0a7bd838 100644 --- a/ui/src/locales/zh-TW.yaml +++ b/ui/src/locales/zh-TW.yaml @@ -22,6 +22,7 @@ core: overview: 概覽 backup: 備份 tools: 工具 + home: 首页 operations: logout: tooltip: 登出 diff --git a/ui/uc-src/layouts/BasicLayout.vue b/ui/uc-src/layouts/BasicLayout.vue index 91c053afb..4a27ebaff 100644 --- a/ui/uc-src/layouts/BasicLayout.vue +++ b/ui/uc-src/layouts/BasicLayout.vue @@ -1,53 +1,19 @@