Record actions menu
The ⋮ „Další akce" in the top bar of a record detail (person, company, deal, meeting, document, Datamart segment, project) and in the head of the preview drawer. RecordActionsMenu (apps/web/src/components/record/RecordActionsMenu.tsx) for person / company / deal; the meeting (RecordMenu) and the project use the same trigger kebabTrigger (components/record/kebab-trigger.tsx). The menu itself is the canonical Menu button. Owner approval 6 Oct 2026 (acrm !4800, prototype proto/record-actions-menu@eabe09c8d).
When to use
- Managing the record as a whole: merge, copy link, permissions („Nastavení práv"), change owner, delete.
- Contextual record actions that do not belong as a button in the header (create an order from a deal, „Nezájem" from the status flow).
- Rare, destructive or administrative actions — always in ⋮, never as a visible button in the bar. Owner 12 Oct 2026 (delete a user): „Jedná se o akci, která se nedělá běžně, ale jen jednou za čas. Není potřeba, aby byla stále vidět jako primární.“
When not to use
- The record's primary action — that is a Button in the header or the page.
- Actions on one row or one section — the row's own ⋮ (Menu button
iconOnlysm). - Choosing a value — Picker menu.
Anatomy
- Trigger — the canonical
IconButtondots-vertical⋮ in the default size (30 px, control height), the same asSectionTopBarsecondary actions, so the bar has one height and one symbol.aria-label„Další akce". Never ⋯, neversmin the top bar. - Menu — Menu button rows,
align="end". Order: contextual and non-destructive first → separator → „Smazat …" last,danger(--critical, trash glyph). - An item the user may not run is not drawn (no disabled „Smazat"); the backend enforces the permission anyway.
- Height — the menu takes the room in the window (Popover
fit-height); if it must scroll, it ends on a whole row. - Phone — the same items in the bottom sheet „Další akce" with handle, title and the full-width „Hotovo"; the sheet also carries the record's view switch (Aktivity / Profil) and „Rozložení sekcí".
Best practices
Do
- Feed items as data (
RecordMenuItem,extraItemsslot) so a foreign flow cannot draw its own look. - Name the item by what it does („Nastavení práv", „Změnit vlastníka"), never by state.
- Confirm a destructive item through
useConfirm.
Don't
- No second menu or loose icon buttons for the same record actions in the header.
- No „Sdílet" next to „Nastavení práv" — it is the same panel.
- No greyed-out „Smazat" for a user without the right — leave it out (meeting aligned 6 Oct 2026).
Content
Verb first, sentence case: „Sloučit s jinou firmou…" (ellipsis when a dialog follows), „Zkopírovat odkaz", „Smazat firmu".
Related
Menu button · Section top bar · Bottom sheet · Popover
Source: docs/section-top-bar/record-actions-menu.usage.md · GitLab