Structural contract a CngxMenu (or a future menu-bar / nested menu
host) exposes to composers. Triggers and submenu directives depend on
this interface rather than on the concrete CngxMenu class so the
coupling stays substitutable.
Submenu companions registered inside this menu's content tree.
Empty when no submenu directive is present. Recursive: each entry's
inner is itself a CngxMenuHost with its own (possibly empty)
submenuItems.
Move DOM focus to the menu container element. Triggers that need to
transfer focus into the menu after open call this. Consumers must
ensure the host element carries a non-negative tabindex; see
CngxMenu.focus().
Register a submenu companion with this menu so ArrowRight / ArrowLeft
focus-stack routing can discover it. Returns a deregister callback the
companion invokes on destroy. Preferred over a content query because DI
registration crosses the component view boundaries that
contentChildren cannot see (a [cngxMenuItemSubmenu] declared inside a
wrapper component's own template is invisible to the surrounding menu's
content query, but its element injector still resolves CNGX_MENU_HOST).