Main Menu Configuration Interface Documentation

Overview

This documentation describes the interface structure for a configurable menu system that supports both sidebar and top menu layouts, with customizable styling options using Emotion’s interpolation.

Core Interfaces

IMainMenu

The root interface that defines the complete menu structure.

PropertyTypeDescription
settingsIMainMenuConfigurationGlobal configuration settings for the menu
itemsIMainMenuItem[]Array of menu items that compose the menu structure

IMainMenuConfiguration

Defines the overall configuration for the menu system.

PropertyTypeDescription
layoutMainMenuLayoutDefines the menu layout type (SIDEBAR or TOPMENU)
sidebarISidebarConfigurationConfiguration specific to sidebar layout
topMenuITopMenuConfigurationConfiguration specific to top menu layout
hideSpAppBarbooleanControls visibility of the application bar
hamburguerMenuIHamburguerMenuConfigurationConfiguration for hamburger menu
isDisplaySearchbooleanControls visibility of search functionality

IMainMenuItem

Represents an individual menu item.

PropertyTypeDescription
uniqueIdstringUnique identifier for the menu item
textstring?Display text for the menu item
actionNamestring?Action identifier associated with the item
ordernumberPosition order of the item
iconstring?Icon identifier/path
expandedImagestring?Image to show when expanded
urlstring?Navigation URL
openInNewTabboolean?Whether to open URL in new tab
parentIdstring?ID of parent menu item
isTopboolean?Whether item appears in top section
stylesIMainMenuItemStyles?Custom styles for this item
itemsIMainMenuItem[]?Submenu items
namestring?Alternative name identifier

Style Configuration Interfaces

IMainMenuItemStyles

Defines styling options for menu items.

PropertyTypeDescription
sidebarMenuInterpolation?Styles for sidebar menu container
itemInterpolation?Styles for menu item container
iconInterpolation?Styles for item icon
textInterpolation?Styles for item text
imgInterpolation?Styles for item images

ISidebarConfiguration

Configuration specific to sidebar layout.

PropertyTypeDescription
isCollapsablebooleanWhether sidebar can be collapsed
collapsedMenuItemStyleIMainMenuItemStylesStyles for collapsed state
expandedMenuItemStyleIMainMenuItemStylesStyles for expanded state
selectedMenuItemCollapsedStyleInterpolationStyles for selected items when collapsed
selectedMenuItemExpandedStyleInterpolationStyles for selected items when expanded
sidebarExpandedStyleInterpolationStyles for expanded sidebar
sidebarCollapseStyleInterpolationStyles for collapsed sidebar
styleMenuItemIMainMenuItemStylesDefault styles for menu items
defaultDisplayMenuDisplayDefault display state

ITopMenuConfiguration

Configuration specific to top menu layout.

PropertyTypeDescription
styleMenuItemIMainMenuItemStylesStyles for menu items
selectedMenuItemStyleInterpolationStyles for selected menu items

IHamburguerMenuConfiguration

Configuration for hamburger menu.

PropertyTypeDescription
styleMenuItemIMainMenuItemStylesStyles for menu items
selectedMenuItemStyleInterpolationStyles for selected menu items

Enums

Defines possible menu layout types.

  • SIDEBAR: Vertical sidebar layout
  • TOPMENU: Horizontal top menu layout

Defines sidebar display states.

  • COLLAPSED: Minimized sidebar state
  • EXPANDED: Full-width sidebar state

Defines possible positions for menu items.

  • TOP: Top position
  • BOTTOM: Bottom position
  • LEFT: Left position (same as TOP)
  • RIGHT: Right position (same as BOTTOM)

Usage Example

const menuConfig: IMainMenu = {
  settings: {
    layout: MainMenuLayout.SIDEBAR,
    hideSpAppBar: false,
    isDisplaySearch: true,
    sidebar: {
      isCollapsable: true,
      defaultDisplay: MenuDisplay.EXPANDED,
      // ... other sidebar configurations
    },
    topMenu: {
      styleMenuItem: {
        // ... style configurations
      },
      selectedMenuItemStyle: {
        // ... selected item styles
      }
    },
    hamburguerMenu: {
      // ... hamburger menu configurations
    }
  },
  items: [
    {
      uniqueId: "home",
      text: "Home",
      order: 1,
      icon: "home-icon",
      url: "/home"
    }
    // ... other menu items
  ]
};