Widgets
Custom Menu
Custom Menu

The widget arcCustomMenu
is a flexible menu system that allows you to display navigation elements, filters, or toggle options directly on your interface. It's ideal for switching between views, setting data fields, or triggering popups – all without complex UI building in Ninox.
The menu can be visually customized to suit your design: colors, font sizes, icons, active states, and hover effects are freely configurable. Buttons can also carry badges and be assigned different actions (update
, popup
, delete
).
💡 The widget can be embedded in existing layouts or presented as its own component – depending on the use case.
🔧 Structure of the arcCustomMenu Widget
The arcCustomMenu
consists of a central configuration object with the following areas:
General Settings
Directly at the top level (
uniqueId
,embedded
,hoverActions
)Menu Configuration (
menu[…]
)Controls the layout of the menu bar – e.g., positioning, font size, and colors for normal and active states
Menu Items (
menu[…].menuItems[…]
)Individual buttons with title, icon, active state, and actions (e.g., change field value, open popup)

General Parameter Settings
uniqueId
Type: text
Required: yes
Defines a unique ID for each menu instance. This ID is used internally for targeted CSS addressing and is necessary for multiple menus on the same page to function independently.
💡 Tip: Set the ID dynamically, e.g., with uniqueId: "menu-" + Nr
, when you use the widget multiple times.
embedded
Type: boolean
Default: false
Determines whether the widget is embedded in an existing widget (e.g., Layout) or integrated as a standalone widget on the Ninox interface.
💡 Note: If you set embedded: true
, you must ensure that the surrounding element provides a suitable height and possibly its own layout. The widget will then fully adapt to this frame.
hoverActions
Type: object
Default: no hover behavior
Defines the behavior when hovering over a menu item with the mouse.
You can set specific colors and animations here to be applied during the hover effect. All fields are optional – if you do not specify anything, the default design remains.
Field | Type | Description |
---|---|---|
|
| Background color on hover. E.g., HEX value: |
|
| Font color on hover. E.g., HEX value: |
|
| Border color on hover. E.g., HEX value: |
|
| Color of the icon on hover. E.g., HEX value: |
|
| Transition time, e.g., |
💡 Tip: Hover effects significantly improve user guidance – they provide visual feedback and indicate that an element is interactive. Even a single value like backgroundColor
is enough to make this feedback noticeable.
borderRadius
Type: text
Default: no radius (sharp corners)
Defines the corner radius of the menu buttons. With this value, you can make the buttons rounded – from slightly soft corners to pill-shaped.
Typical values:
"4px"
for slightly rounded"12px"
for clearly rounded"50%"
for circular buttons
💡 Tip: A small borderRadius
often gives a more modern, friendlier appearance – especially in combination with hover colors.
Menu Settings (menu[…]
)
In this block, you control the layout and design of the menu bar – i.e., alignment, size, and colors. It is part of the first element in the menu
array:
tableId
Type: text
Required: yes
Defines the table to which actions within the menu refer. Even though the tableId
value is not currently processed directly, it is part of the expected data structure and should always be set.
settings block
Type: object
Required: yes
Contains the visual settings for the menu bar and the display of the buttons – in both normal and active states.
The settings
block consists of three sub-objects:
menuBar
→ Layout & alignment of the barstateNormal
→ Design of inactive buttonsstateActive
→ Design of active buttons
💡 Tip: If you leave values empty, sensible default values will automatically apply – so you can configure the menu minimally and it still looks good.
menuItems[]
The second part of the menu
array contains the actual menu entries. Each menu item is defined as an object in the menuItems
list. A menu entry usually consists of a title, an icon, an active state, and one or more actions to be executed.
item
This value is a running number that is used internally for sorting or identifying menu entries.
Type: number
Required: yes
title
Here you set the text that will be displayed on the button. The title is visible to users and should clearly indicate the function of the button.
Type: text
Required: yes
activeState defines when your menu item should be active. In this example: when the text "A" is in the text field menuText, then the button should be active.
icon
With the icon
field, you can add an icon to your button. Icons are typically defined via arcCustomIcon({ name: "..." })
. If no icon is specified, the button will consist only of text.
Type: function
Required: no
active
The active
field determines whether a menu item is currently marked as active. Usually, this is an expression that compares the current state – e.g., Menu = "A"
or Menu=1
. Active menu items are visually highlighted (e.g., with a different background color) and help users recognize which area is currently selected.
Type: boolean
or expression
Required: yes
actions
In actions
, you define what should happen when the button is clicked. You can define one or more actions here. Each action entry is an object with a type
and possibly additional parameters like recordId
, field
, or value
.
Type: array
Required: yes
💡 Note: Each action is executed in the order in which it appears in the array. You can combine multiple actions – for example, set a field value first and then open a popup.
Possible Actions
| Description | Code Structure |
---|---|---|
| Sets the value of a field in the specified record |
|
| Opens the specified record as a popup |
|
| Deletes the specified record from the database |
|
Action: update
Action: popup
Action: delete
Conclusion ✅
With arcCustomMenu
, you can create flexible menu bars in your Ninox interface – ideal for toggling views, setting field values, or opening popups.
The widget can be fully adapted to your design: from colors and fonts to hover and active states.
Let’s build smarter interfaces – with arcWidgets.
Questions or feedback? → office@arc-rider.com