hitpa-common-navigation
v1.5.0
Published
Shared HITPA MUI sidebar for apps that use the sequence-menu API.
Downloads
149
Readme
@hitpa/common-navigation
Shared HITPA MUI sidebar for apps that use the sequence-menu API.
HitpaSideBar is the recommended integration. It reads the JWT
from sessionStorage.userToken, decodes resource_access, loads the sequence
menu, owns collapse state, and gets pathname/navigate from React Router
inside the package.
Pass loadSequenceMenu as the loader function itself, not only its result.
The package also tolerates a promise or preloaded response.
Common UI Shell
import { HitpaSideBar } from "@hitpa/common-navigation";
import { getmenuSubMenus } from "../api/functions";
<HitpaSideBar loadSequenceMenu={getmenuSubMenus} localModule="commonModule" />;If you want to decide cross-module redirects dynamically from your sequence-menu
payload, pass behavior.isCrossModulePath.
<HitpaSideBar
loadSequenceMenu={getmenuSubMenus}
localModule="commonModule"
behavior={{
isCrossModulePath: ({ item, defaultMatch }) => {
// Keep the built-in dynamic preset match, and add your own rule.
return (
defaultMatch ||
item.meta?.kcUniqueCode?.toLowerCase().includes("external_module") ===
true
);
},
}}
/>Separate Modules
Use the sequence-menu parent kcUniqueCode as localModule.
<HitpaSideBar loadSequenceMenu={getSidebar} localModule="provider_management" />Short aliases are also available for existing integrations:
<HitpaSideBar loadSequenceMenu={getSidebar} />; // product
<HitpaSideBar loadSequenceMenu={getSidebar} localModule="provider" />;For a new module that is not in the preset list yet, pass a config object.
<HitpaSideBar
loadSequenceMenu={getSidebar}
localModule={{
sectionKey: "new_module_key",
menuId: "new-parent-menu-id",
pathPrefix: "/new-module",
}}
/>