feat(17-01): menu item type registry and dependent dropdown binding

- pact: HasMenuItemTypes, MenuItemType, MenuItemReference, MenuItemResolve,
  ResolvedMenuItem, MenuItemAlternate, DependentOptionsProvider,
  DependentOptionSet; Option gains Depth (omitempty)
- signpost (new module): boot-time registry with fail-loud key and pattern
  checks, layered URL patterns incl. PatternFrom for list types, host
  overrides at menu_items.patterns, Resolve and ReferenceOptions
- party: signpost.Activate after postcard, before Boot
- cabana: dependsOn on dropdowns (boot checks, controller-only), GET
  fields/{field}/dependent-options with swag, inventories, conformance case
- companions fixture, TestSignpostSmoke, TestCompanionsDependentSmoke, docs
This commit is contained in:
2026-10-12 15:09:14 +02:00
parent 9016e2a6fd
commit 0cdff4c258
29 changed files with 1752 additions and 14 deletions

View File

@@ -0,0 +1,4 @@
name: New link
form: ~/plugins/acme/companions/models/link/fields.yaml
modelClass: Link
defaultRedirect: acme/companions/links

View File

@@ -0,0 +1,7 @@
list: ~/plugins/acme/companions/models/link/columns.yaml
modelClass: Link
title: Links
recordUrl: acme/companions/links/update/:id
recordsPerPage: 20
toolbar:
buttons: [create]

View File

@@ -0,0 +1,6 @@
columns:
title:
label: Title
searchable: true
type:
label: Type

View File

@@ -0,0 +1,14 @@
fields:
title:
label: Title
type: text
required: true
type:
label: Type
type: dropdown
options: typeOptions
reference:
label: Reference
type: dropdown
dependsOn: type
emptyOption: backend::lang.form.none