You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
feat: add full roundtrip for pluggable Image widget (com.mendix.widget.web.image.Image)
Implement DESCRIBE → CREATE roundtrip for the pluggable React-based Image
widget, which is the most-used pluggable widget (784 instances across test
projects). The IMAGE keyword now routes to the pluggable engine instead of
the built-in Forms$StaticImageViewer (use STATICIMAGE for the built-in).
- Add image.json template with all 21 properties from the widget XML definition
- Add image.def.json with property mappings for the pluggable engine
- Add opTextTemplate and opAction operations to the widget engine
- Add OnClick source resolver for AST action → serialized BSON
- Export SerializeClientAction for use by the pluggable engine
- Add DESCRIBE extraction: extractImageProperties, extractCustomWidgetPropertyTextTemplate,
extractCustomWidgetPropertyAction helpers
- Add IMAGE output formatting in DESCRIBE with non-default property suppression
- Re-route IMAGE keyword to pluggable engine; STATICIMAGE/DYNAMICIMAGE unchanged
- Update docs: custom-widgets.md skill and engine design doc
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Operations are registered in an `OperationRegistry` and new types can be added without modifying the engine.
148
150
@@ -198,7 +200,7 @@ Therefore, in any mode that uses both, **`datasource` must come before `associat
198
200
199
201
### Operation Validation
200
202
201
-
Operation names in `.def.json` files are validated at load time against the 6 known operations: `attribute`, `association`, `primitive`, `selection`, `datasource`, `widgets`. Invalid operation names produce an error when `NewWidgetRegistry()` or `LoadUserDefinitions()` runs, rather than failing silently at build time.
203
+
Operation names in `.def.json` files are validated at load time against the 8 known operations: `attribute`, `association`, `primitive`, `selection`, `datasource`, `widgets`, `texttemplate`, `action`. Invalid operation names produce an error when `NewWidgetRegistry()` or `LoadUserDefinitions()` runs, rather than failing silently at build time.
0 commit comments