Version: nightly-20260902-89824921 (2026-09-02T07:23:30Z)
Summary:
mxcli widget docs generates per-widget Markdown files that document a curly-brace slot syntax for pluggable widgets with widgets-typed properties. The parser does not implement this syntax — it rejects it at the mxcli check stage with mismatched input.
Steps to reproduce:
- Run mxcli widget docs -p <project.mpr> — this generates a .md file for the Selection Helper widget documenting the following MDL syntax:
PLUGGABLEWIDGET 'com.mendix.widget.web.selectionhelper.SelectionHelper' selectionHelper1 {
customallselected {
-- widgets for customAllSelected
}
customsomeselected {
-- widgets for customSomeSelected
}
customnoneselected {
-- widgets for customNoneSelected
}
}
Steps to reproduce:
- Run mxcli widget docs -p <project.mpr> — this generates a .md file for the Selection Helper widget documenting the following MDL syntax:
PLUGGABLEWIDGET 'com.mendix.widget.web.selectionhelper.SelectionHelper' selectionHelper1 {
customallselected {
-- widgets for customAllSelected
}
customsomeselected {
-- widgets for customSomeSelected
}
customnoneselected {
-- widgets for customNoneSelected
}
}
- Write an MDL script using that syntax inside a CREATE OR REPLACE PAGE or ALTER PAGE ... REPLACE ... WITH { } block.
- Run mxcli check script.mdl.
Actual result:
Syntax errors found:
- line 22:14 mismatched input 'customallselected' expecting '}'
- line 25:14 mismatched input 'customsomeselected' expecting '}'
- line 28:14 missing '}' at 'customnoneselected'
The parser rejects the slot block names in both CREATE OR REPLACE PAGE and ALTER PAGE REPLACE contexts.
Expected result:
The parser accepts slot block syntax as documented in the generated widget docs, creates the corresponding CustomWidgets$WidgetProperty entries in the MPR for each slot, and the project compiles without CE0642 ("Property X is required").
Additional context:
- Without slot syntax support, there is no way to use renderStyle: 'custom' on the Selection Helper widget via mxcli. Setting it produces 3× CE0642 errors (one per required slot: All selected, Some selected, None selected).
- The workaround customAllSelected: [] (array property syntax) passes mxcli check and executes, but only updates the widget type schema metadata — it does not create the actual WidgetProperty value entries in Object.Properties. CE0642 still fires.
- mxcli fix widgets (which resyncs widget definitions for CE0463) does not populate the missing slot properties either.
- A page created via Studio Pro with the same widget and renderStyle: custom compiles cleanly. BSON inspection confirms it has 5 CustomWidgets$WidgetProperty entries (one per property type) vs. 2 produced by mxcli.
- Widget ID: com.mendix.widget.web.selectionhelper.SelectionHelper v3.10.0, Mendix 11.12.0.
Version: nightly-20260902-89824921 (2026-09-02T07:23:30Z)
Summary:
mxcli widget docs generates per-widget Markdown files that document a curly-brace slot syntax for pluggable widgets with widgets-typed properties. The parser does not implement this syntax — it rejects it at the mxcli check stage with mismatched input.
Steps to reproduce:
PLUGGABLEWIDGET 'com.mendix.widget.web.selectionhelper.SelectionHelper' selectionHelper1 {
customallselected {
-- widgets for
customAllSelected}
customsomeselected {
-- widgets for
customSomeSelected}
customnoneselected {
-- widgets for
customNoneSelected}
}
Steps to reproduce:
PLUGGABLEWIDGET 'com.mendix.widget.web.selectionhelper.SelectionHelper' selectionHelper1 {
customallselected {
-- widgets for
customAllSelected}
customsomeselected {
-- widgets for
customSomeSelected}
customnoneselected {
-- widgets for
customNoneSelected}
}
Actual result:
Syntax errors found:
- line 22:14 mismatched input 'customallselected' expecting '}'
- line 25:14 mismatched input 'customsomeselected' expecting '}'
- line 28:14 missing '}' at 'customnoneselected'
The parser rejects the slot block names in both CREATE OR REPLACE PAGE and ALTER PAGE REPLACE contexts.
Expected result:
The parser accepts slot block syntax as documented in the generated widget docs, creates the corresponding CustomWidgets$WidgetProperty entries in the MPR for each slot, and the project compiles without CE0642 ("Property X is required").
Additional context: