Skip to content

MDL parser does not support pluggable widget slot syntax documented by mxcli widget docs #1056

Description

@acarum

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:

  1. 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:

  1. 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
}
}

  1. Write an MDL script using that syntax inside a CREATE OR REPLACE PAGE or ALTER PAGE ... REPLACE ... WITH { } block.
  2. 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.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions