Page History
...
- visibilityPolicySetId – Determines the visibility of the component based on user permissions and policy sets. For example, setting to
"adminOnlyPolicy"restricts the overflow menu to users with admin privileges.
Guidelines
Common Use Cases
- Row actions in tables – Providing actions like Edit, Delete, Archive for individual table rows
- Page-level actions – Housing secondary actions that don't warrant primary button placement
- Settings menus – Offering configuration options in a compact dropdown
- Export options – Providing various export formats like PDF, Excel, CSV
Design Considerations
- Use consistent iconography that clearly communicates the menu's purpose
- Order menu items by frequency of use or logical grouping
- Consider adding dividers between logical groups of options
- Keep the number of options reasonable (generally fewer than 7–8 items)
- Use clear, concise labels for each option
- Add icons to options when they help with quick visual recognition
- This component helps maintain a clean, uncluttered interface while still providing access to important functionality when needed.
Usage
- Use the menu button icon to match intent. Set
iconNameto a generic “More” icon, or a generic "Settings" icon for configuration menus to set user expectation. - Keep the list focused (≤ 7–8 items) to reduce decision time. Order by frequency or logical groups.
- Provide clear labels with
options[n].text. Use short, action-first verbs (e.g., “Edit”, “Archive”). - Add recognizable affordances where helpful: set
options[n].showMenuLinkIconplusiconPositionKeyand eithermenuLinkLeftIconNameormenuLinkRightIconName. Prefer left-placed icons for faster scanning. - Name the instance meaningfully in authoring tools so teams can find it later: set
displayName(e.g.,"Row actions").
Sizing & Layout
- Control where the dropdown opens with
placement: use"bottom"when the button is near the top edge; use"top"near the bottom; use"left"/"right"to avoid clipping against side gutters. - Adjust hit-target and breathing room with
paddingClass. For touch or glove scenarios, increase padding (e.g.,"p-3"instead of"p-2").
States & Feedback
- Initialize data or compute context on load using
events.ON_INIT(e.g., pre-buildoptions, setdisplayConditionsflags). - Clean up listeners or ephemeral state with
events.ON_DESTROY. - Wire behavior per item with
events.ON_OPTION_CLICK. Attach distinct handlers peroptions[n]to trigger navigation, mutations, or analytics.
Color & Contrast
- Don’t rely on color alone. Use
options[n].showMenuLinkIconwith an appropriate…IconNameto reinforce meaning. Choose icon names with distinct silhouettes viaiconName/menuLink…IconName.
Interactions & Events
- For each menu item, bind a unique action via
events.ON_OPTION_CLICKso telemetry and logic reflect the selected option. - For onboarding, make the button discoverable by enabling its tour hotspot: set
enableAsHotspot: truewithguidedTourHotSpotTitleandguidedTourHotSpotDescriptionfor the callout copy.
Data-Driven Behavior / Thresholds
- Show or hide the menu based on context with
displayConditions(e.g., show only when a row is selected). - Use
events.ON_INITto compute whether to include optionaloptions(e.g., add “Undo” only when last action exists).
Visibility & Authorization
- Enforce permissions with
visibilityPolicySetIdso only authorized users see the menu (e.g.,"adminOnlyPolicy"). - Combine with
displayConditionsto suppress the control in invalid contexts (e.g., non-editable states).
Content & Localization
- Keep
options[n].textconcise (2–3 words) and concrete (“Delete record”, not “Do operation”). - If you highlight the menu in guided tours, localize the hotspot copy using
guidedTourHotSpotTitleandguidedTourHotSpotDescription(both support translations).
Environment & Input Methods
- In industrial/touch contexts, prefer larger tap targets: increase
paddingClass(e.g.,"p-3"), and place icons left viaiconPositionKey: "menuLinkLeftIconName"to support quick visual anchoring. - When space is tight near edges, set
placementto avoid off-screen rendering.
Testing Hooks
- Add stable selectors for automation with
idanddataTestId(e.g.,dataTestId: "row-ovrflow").
Do & Don’t
| Do | Don’t | Relevant settings |
|---|---|---|
Use a purposeful button icon (e.g., iconName: "more-outline" for overflow, "settings-outline" for configuration). | Reuse a generic icon that misleads users about what’s inside. | iconName |
| Keep the menu focused (≤ 7–8 items) and order by frequency. | Dump every action into one long list. | options (length & order) |
| Add helpful item icons to speed recognition (left-aligned). | Rely on color alone to convey meaning. | options[n].showMenuLinkIcon, iconPositionKey, menuLinkLeftIconName |
Choose placement to avoid clipping near screen edges. | Leave default placement that causes off-screen or covered items. | placement |
| Gate visibility by role or context so only valid users see it. | Show the menu to everyone and fail on click. | visibilityPolicySetId, displayConditions |
| Bind distinct handlers per option for clear analytics and behavior. | Handle all clicks with one catch-all that ignores which item was pressed. | events.ON_OPTION_CLICK |
| Precompute dynamic options on init; clean up on destroy. | Build options ad-hoc on first click; leak listeners. | events.ON_INIT, events.ON_DESTROY, options |
| Make it discoverable in tours with clear copy. | Enable hotspot without title/description. | enableAsHotspot, guidedTourHotSpotTitle, guidedTourHotSpotDescription |
| Increase padding for touch/gloves. | Keep small targets that are hard to tap. | paddingClass |
| Use stable hooks for tests. | Target DOM structure or visible text that may change. | id, dataTestId |
Accessibility
...
- Provide textual labels for every option via
options[n].text; avoid icon-only entries so screen reader and low-vision users have clear labels. - Don’t rely on color alone to convey meaning—pair color with an icon by setting
options[n].showMenuLinkIcon,iconPositionKey, andmenuLinkLeftIconName/menuLinkRightIconName. - Increase the hit area for users with motor constraints (e.g., gloves) by using a larger
paddingClassvalue such as"p-3". - Keep the menu fully visible at high zoom or limited visual fields by choosing an appropriate
placement("top" | "right" | "bottom" | "left") to avoid off-screen clipping. - Limit cognitive load: keep
optionsfocused (generally ≤ 7–8 items) and order by frequency so choices are easy to scan and decide. - For guided onboarding, enable the hotspot and provide concise, descriptive copy with
enableAsHotspot,guidedTourHotSpotTitle, andguidedTourHotSpotDescription; include translated text where applicable.