MenuView.create
function · packages/mixins-ui/src/menuView.ts:526
function create<Item extends string = string>(): MenuBundle<Item>The forked view with upstream's update and helpers.
Mixins / foldkit-mixins-ui
namespace · packages/mixins-ui/src/menuView.ts:14
export * as MenuView from './menuView.js'A Menu view with the consumer toView seam @foldkit/ui/menu lacks.
State, Messages, update, Commands, and Mounts stay upstream (imported
from @foldkit/ui/menu); only markup assembly is transcribed, from
@foldkit/ui@0.165.0 (packages/ui/src/menu/index.ts, MIT (c) 2025
Devin Jameson) at tag @foldkit/ui@0.165.0, with the computed bundles
named (MenuRenderInfo) and handed to toView.
The default toView reproduces upstream's markup; the parity battery
draws both views over the same models, so drift fails loudly. If upstream
gains a seam, delete this module; on a bump, re-transcribe and re-run
the battery.
MenuView.createfunction · packages/mixins-ui/src/menuView.ts:526
function create<Item extends string = string>(): MenuBundle<Item>The forked view with upstream's update and helpers.
MenuView.defaultToViewfunction · packages/mixins-ui/src/menuView.ts:498
function defaultToView(
h: HtmlBuilder<Message>,
): (render: MenuRenderInfo) => HtmlUpstream's markup from the computed bundles: the default toView.
MenuView.MenuBundletype · packages/mixins-ui/src/menuView.ts:517
type MenuBundle<Item extends string = string> = Readonly<{
view: ViewForItem<Item>
update: (model: Model, message: Message) => BundleUpdateReturn<Item>
selectItem: (
model: Model,
item: Item,
index: number,
) => BundleUpdateReturn<Item>
open: (model: Model) => BundleUpdateReturn<Item>
close: (model: Model) => BundleUpdateReturn<Item>
}>Upstream's Bundle with the forked view.
MenuView.MenuGroupRendertype · packages/mixins-ui/src/menuView.ts:44
type MenuGroupRender = Readonly<{
key: string
heading: MenuHeadingRender | undefined
group:
| {
key: string
attributes: ReadonlyArray<ChildAttribute>
}
| undefined
separator:
| {
key: string
attributes: ReadonlyArray<ChildAttribute>
}
| undefined
items: ReadonlyArray<MenuItemRender>
}>MenuView.MenuHeadingRendertype · packages/mixins-ui/src/menuView.ts:38
type MenuHeadingRender = Readonly<{
id: string
attributes: ReadonlyArray<ChildAttribute>
content: Html
}>MenuView.MenuItemRendertype · packages/mixins-ui/src/menuView.ts:32
type MenuItemRender = Readonly<{
key: string
attributes: ReadonlyArray<ChildAttribute>
content: Html
}>MenuView.MenuRenderInfotype · packages/mixins-ui/src/menuView.ts:57
type MenuRenderInfo = Readonly<{
id: string
isVisible: boolean
wrapper: ReadonlyArray<ChildAttribute>
button: ReadonlyArray<ChildAttribute>
buttonContent: Html
backdrop:
| {
key: string
attributes: ReadonlyArray<ChildAttribute>
}
| undefined
items:
| {
key: string
attributes: ReadonlyArray<ChildAttribute>
}
| undefined
scroll: ReadonlyArray<ChildAttribute> | undefined
groups: ReadonlyArray<MenuGroupRender>
}>The menu's computed bundles. backdrop, items, scroll, and groups
are present only while visible; a closed menu carries the rest alone, as
upstream renders it.
MenuView.MenuViewInputstype · packages/mixins-ui/src/menuView.ts:70
type MenuViewInputs<Item extends string> = ViewInputs<Item> &
Readonly<{
toView?: (render: MenuRenderInfo) => Html
}>Upstream ViewInputs plus toView.