🧭 应用启动器(OneMenu)

基于 Salesforce GlobalNavigationBar 构建,集成 App Launcher 和导航标签栏,是用户在前台切换应用和浏览数据的主要导航入口。

概述

OneMenu 是 One Platform 前台的导航菜单组件,基于 Salesforce Lightning Design System 的 GlobalNavigationBar 构建。它集成了应用启动器(App Launcher)和导航标签栏(Navigation Bar),是用户在前台切换应用和浏览数据的主要导航入口。

🖼️
OneMenu 导航栏截图 — 待插入
../../images/product/one_platform/one-menu-overview.png

页面结构

GlobalNavigationBar 结构
App Launcher
[当前应用名 ▼]
导航标签栏
Tab1   Tab2 (高亮)   Tab3   ...
▼ 点击展开 App Launcher Modal
App Launcher Modal
[搜索应用...]
Applications
App1 App2 App3
All Items
Tab1 · Tab2 · Tab3

核心功能

1. 应用启动器(App Launcher)

  • 搜索栏:实时过滤应用和 Tab 列表
  • Applications 区域:以卡片(Tile)形式展示所有应用
  • All Items 区域:展示所有 Tab,点击跳转到对应对象列表视图
  • 触发按钮:显示当前选中应用的名称

2. 导航标签栏(Navigation Bar)

  • 高亮当前激活的 Tab
  • 点击 Tab 触发 SPA 导航或路由导航

3. 导航模式

支持两种导航模式,优先级从高到低:

  1. SPA 模式(优先):当父组件传入 onNavigate 回调时使用,不改变 URL
  2. 路由模式(后备):当没有 onNavigate 回调时使用 Next.js Router

4. 数据来源优先级

  1. Redux 当前应用:reduxState.currentApplication
  2. 本地缓存:reduxState.cache 中的第一个缓存应用
  3. 默认应用:{ name: "Loading", tabs: [] }

数据流

OneMenu 组件挂载
getAllApplications() → dispatch(setApplications) → Redux
getAllTabs() → dispatch(setTabs) → Redux
useSelector → 获取 applications, tabs, activeMenu
路由检测: usePathname() → dispatch(setActiveMenu)
渲染: AppLauncher + NavigationBar

技术要点

  • 状态管理:Redux (applicationSlice)
  • 路由检测:Next.js usePathname() + useRouter()
  • Tab 数据兼容:同时支持 Tab 对象数组和 Tab ID 字符串数组
  • 图标生成:取应用名前两个字符作为 Tile 图标文本
  • 组件库:@salesforce/design-system-reactGlobalNavigationBar, AppLauncher, AppLauncherTile
  • 搜索过滤:AppLauncher 内置的搜索过滤功能

截图

🖼️
OneMenu 导航栏完整视图 — 待插入
../../images/product/one_platform/one-menu-navbar.png
🖼️
App Launcher 模态窗展开状态 — 待插入
../../images/product/one_platform/one-menu-launcher.png
🖼️
搜索过滤效果 — 待插入
../../images/product/one_platform/one-menu-search.png
🖼️
Tab 高亮状态 — 待插入
../../images/product/one_platform/one-menu-tab-active.png

需要定制化解决方案?

我们的团队可基于现有产品为您量身打造专属 Salesforce 工具链。

联系我们