- Name
disabled- Kind
- property
- Type
boolean- Requirement
- optional
Docs/API reference/UI machines/menubar
menubar machine
The public state machine contract for @grassroot/ui-machines/menubar. The machine owns behaviour; the matching headless layer owns composition.
@grassroot/ui-machines/menubar
Package
View source
packages/ui-machines/src/menubar/index.ts
Service example
menubar.tsts
1
2
3
4
5
6
7
import { createService } from "@grassroot/statechart";import { menubarMachine } from "@grassroot/ui-machines/menubar"; const service = createService(menubarMachine, { input: {} });service.start();service.send({ type: "…" });service.stop();19 of 19
Exports
MenubarActionable
interfaceDeclarationView source
MenubarActionablets
interface MenubarActionable { readonly id: string; readonly disabled?: boolean; readonly textValue?: string;}Name
Kind
Type
Requirement
disabledproperty
booleanoptional
idproperty
stringrequired
textValueproperty
stringoptional
- Name
id- Kind
- property
- Type
string- Requirement
- required
- Name
textValue- Kind
- property
- Type
string- Requirement
- optional
MenubarChangeReason
typeDeclarationView source
MenubarChangeReasonts
type MenubarChangeReason = MenubarOpenReason | MenubarCloseReason;MenubarCloseReason
typeDeclarationView source
MenubarCloseReasonts
type MenubarCloseReason = "escape" | "outside-click" | "select" | "trigger" | "programmatic";MenubarCommand
typeDeclarationView source
MenubarCommandts
type MenubarCommand = CommandObject & ({ readonly type: "VALUE_CHANGE_REQUEST"; readonly value: string | null; readonly reason: MenubarChangeReason;} | { readonly type: "SELECT_ITEM"; readonly menuValue: string; readonly id: string;} | { readonly type: "FOCUS_TRIGGER"; readonly key: string;});MenubarContext
typeDeclarationView source
MenubarContextts
type MenubarContext = { readonly mode: "controlled" | "uncontrolled"; /** The one committed open-menu binding; null means all menus are closed. */ readonly value: string | null; /** Original index into the current menu's item list. */ readonly highlightedIndex: number; /** Roving-focus target among top-level triggers. */ readonly focusedValue: string | null;};Name
Kind
Type
Requirement
Description
focusedValueproperty
string | nullrequired
Roving-focus target among top-level triggers.
highlightedIndexproperty
numberrequired
Original index into the current menu's item list.
modeproperty
"controlled" | "uncontrolled"required
—
valueproperty
string | nullrequired
The one committed open-menu binding; null means all menus are closed.
- Name
focusedValue- Kind
- property
- Type
string | null- Requirement
- required
- Description
- Roving-focus target among top-level triggers.
- Name
highlightedIndex- Kind
- property
- Type
number- Requirement
- required
- Description
- Original index into the current menu's item list.
- Name
mode- Kind
- property
- Type
"controlled" | "uncontrolled"- Requirement
- required
- Description
- —
- Name
value- Kind
- property
- Type
string | null- Requirement
- required
- Description
- The one committed open-menu binding; null means all menus are closed.
MenubarDiagnosticCodes
valueDeclarationView source
MenubarDiagnosticCodests
export declare const MenubarDiagnosticCodes: readonly DiagnosticCatalogueEntry[];MenubarDivider
interfaceDeclarationView source
MenubarDividerts
interface MenubarDivider { readonly divider: true;}Name
Kind
Type
Requirement
dividerproperty
truerequired
- Name
divider- Kind
- property
- Type
true- Requirement
- required
MenubarEvent
typeDeclarationView source
MenubarEventts
type MenubarEvent = { readonly type: "OPEN_MENU"; readonly value: string; readonly reason: MenubarOpenReason;} | { readonly type: "TOGGLE_MENU"; readonly value: string; readonly reason: "trigger";} | { readonly type: "CLOSE"; readonly reason: MenubarCloseReason;} | { readonly type: "MOVE_TRIGGER"; readonly direction: -1 | 1;} | { readonly type: "MOVE_ITEM"; readonly direction: -1 | 1;} | { readonly type: "HIGHLIGHT"; readonly index: number;} | { readonly type: "SELECT";} | { readonly type: "FOCUS_TRIGGER"; readonly value: string;};MenubarInput
typeDeclarationView source
MenubarInputts
type MenubarInput = { readonly menus: readonly MenubarMenu[]; /** Controlled open-menu value. Defining it fixes controlled mode at start. */ readonly value?: string | null; /** Uncontrolled initial open-menu value. */ readonly defaultValue?: string | null;};Name
Kind
Type
Requirement
Description
defaultValueproperty
string | nulloptional
Uncontrolled initial open-menu value.
menusproperty
readonly MenubarMenu[]required
—
valueproperty
string | nulloptional
Controlled open-menu value. Defining it fixes controlled mode at start.
- Name
defaultValue- Kind
- property
- Type
string | null- Requirement
- optional
- Description
- Uncontrolled initial open-menu value.
- Name
menus- Kind
- property
- Type
readonly MenubarMenu[]- Requirement
- required
- Description
- —
- Name
value- Kind
- property
- Type
string | null- Requirement
- optional
- Description
- Controlled open-menu value. Defining it fixes controlled mode at start.
MenubarItem
typeDeclarationView source
MenubarItemts
type MenubarItem = MenubarActionable | MenubarDivider;menubarMachine
valueDeclarationView source
menubarMachinets
export declare const menubarMachine: MenubarMachine;MenubarMachine
typeDeclarationView source
MenubarMachinets
type MenubarMachine = Machine<MenubarInput, MenubarStateValue, MenubarContext, MenubarEvent, MenubarCommand>;MenubarMenu
interfaceDeclarationView source
MenubarMenuts
interface MenubarMenu { readonly value: string; readonly items: readonly MenubarItem[];}Name
Kind
Type
Requirement
itemsproperty
readonly MenubarItem[]required
valueproperty
stringrequired
- Name
items- Kind
- property
- Type
readonly MenubarItem[]- Requirement
- required
- Name
value- Kind
- property
- Type
string- Requirement
- required
menubarNavigableIndices
functionEquivalent to the frozen `menubarNavigableIndices` helper.
DeclarationView source
menubarNavigableIndicests
declare function menubarNavigableIndices(items: readonly MenubarItem[]): readonly number[];Name
Kind
Type
Requirement
itemsparameter
readonly MenubarItem[]required
returnreturn value
readonly number[]n/a
- Name
items- Kind
- parameter
- Type
readonly MenubarItem[]- Requirement
- required
- Name
return- Kind
- return value
- Type
readonly number[]- Requirement
- n/a
MenubarOpenReason
typeDeclarationView source
MenubarOpenReasonts
type MenubarOpenReason = "trigger" | "pointer" | "keyboard" | "programmatic";menubarReplaySequence
valueDeclarationView source
menubarReplaySequencets
export declare const menubarReplaySequence: readonly MenubarEvent[];menubarSelectors
valueDeclarationView source
menubarSelectorsts
export declare const menubarSelectors: { value: (snapshot: MenubarSnapshot) => string | null; open: (snapshot: MenubarSnapshot) => boolean; highlightedIndex: (snapshot: MenubarSnapshot) => number; focusedValue: (snapshot: MenubarSnapshot) => string | null; isOpen: (snapshot: MenubarSnapshot, value: string) => boolean;};Name
Kind
Type
Requirement
focusedValueproperty
(snapshot: MenubarSnapshot) => string | nullrequired
highlightedIndexproperty
(snapshot: MenubarSnapshot) => numberrequired
isOpenproperty
(snapshot: MenubarSnapshot, value: string) => booleanrequired
openproperty
(snapshot: MenubarSnapshot) => booleanrequired
valueproperty
(snapshot: MenubarSnapshot) => string | nullrequired
- Name
focusedValue- Kind
- property
- Type
(snapshot: MenubarSnapshot) => string | null- Requirement
- required
- Name
highlightedIndex- Kind
- property
- Type
(snapshot: MenubarSnapshot) => number- Requirement
- required
- Name
isOpen- Kind
- property
- Type
(snapshot: MenubarSnapshot, value: string) => boolean- Requirement
- required
- Name
open- Kind
- property
- Type
(snapshot: MenubarSnapshot) => boolean- Requirement
- required
- Name
value- Kind
- property
- Type
(snapshot: MenubarSnapshot) => string | null- Requirement
- required
MenubarSnapshot
typeDeclarationView source
MenubarSnapshotts
type MenubarSnapshot = Snapshot<MenubarStateValue, MenubarContext>;MenubarStateValue
typeDeclarationView source
MenubarStateValuets
type MenubarStateValue = "ready";