@siliconst/metaui 1.4.21 → 1.4.37
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/package.json +1 -1
- package/src/nz/co/siliconst/ui5/metaui/ai/BaseAIGenerator-dbg.js +22 -20
- package/src/nz/co/siliconst/ui5/metaui/ai/BaseAIGenerator-dbg.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/ai/BaseAIGenerator.d.ts +3 -3
- package/src/nz/co/siliconst/ui5/metaui/ai/BaseAIGenerator.d.ts.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/ai/BaseAIGenerator.js +1 -1
- package/src/nz/co/siliconst/ui5/metaui/ai/BaseAIGenerator.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/ai/BaseAIGenerator.ts +24 -16
- package/src/nz/co/siliconst/ui5/metaui/ai/RestLLMProxy-dbg.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/ai/RestLLMProxy.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/ai/RestLLMProxy.ts +2 -2
- package/src/nz/co/siliconst/ui5/metaui/constants/MetaUIConstants-dbg.js +111 -0
- package/src/nz/co/siliconst/ui5/metaui/constants/MetaUIConstants-dbg.js.map +1 -0
- package/src/nz/co/siliconst/ui5/metaui/constants/MetaUIConstants.d.ts +95 -0
- package/src/nz/co/siliconst/ui5/metaui/constants/MetaUIConstants.d.ts.map +1 -0
- package/src/nz/co/siliconst/ui5/metaui/constants/MetaUIConstants.js +2 -0
- package/src/nz/co/siliconst/ui5/metaui/constants/MetaUIConstants.js.map +1 -0
- package/src/nz/co/siliconst/ui5/metaui/constants/MetaUIConstants.ts +101 -0
- package/src/nz/co/siliconst/ui5/metaui/controls/BaseHardwareControl-dbg.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/controls/BaseHardwareControl.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/controls/BaseHardwareControl.ts +1 -1
- package/src/nz/co/siliconst/ui5/metaui/controls/BaseHardwareControlRenderer-dbg.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/controls/BaseHardwareControlRenderer.d.ts.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/controls/BaseHardwareControlRenderer.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/controls/BaseHardwareControlRenderer.ts +2 -1
- package/src/nz/co/siliconst/ui5/metaui/controls/CameraControl-dbg.js +2 -2
- package/src/nz/co/siliconst/ui5/metaui/controls/CameraControl-dbg.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/controls/CameraControl.js +1 -1
- package/src/nz/co/siliconst/ui5/metaui/controls/CameraControl.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/controls/CameraControl.ts +3 -3
- package/src/nz/co/siliconst/ui5/metaui/controls/DynamicHost-dbg.js +47 -47
- package/src/nz/co/siliconst/ui5/metaui/controls/DynamicHost-dbg.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/controls/DynamicHost.d.ts +6 -2
- package/src/nz/co/siliconst/ui5/metaui/controls/DynamicHost.d.ts.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/controls/DynamicHost.js +1 -1
- package/src/nz/co/siliconst/ui5/metaui/controls/DynamicHost.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/controls/DynamicHost.ts +62 -66
- package/src/nz/co/siliconst/ui5/metaui/controls/GeolocationControl-dbg.js +0 -9
- package/src/nz/co/siliconst/ui5/metaui/controls/GeolocationControl-dbg.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/controls/GeolocationControl.d.ts +0 -9
- package/src/nz/co/siliconst/ui5/metaui/controls/GeolocationControl.d.ts.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/controls/GeolocationControl.js +1 -1
- package/src/nz/co/siliconst/ui5/metaui/controls/GeolocationControl.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/controls/GeolocationControl.ts +3 -9
- package/src/nz/co/siliconst/ui5/metaui/controls/RichTextControl-dbg.js +0 -11
- package/src/nz/co/siliconst/ui5/metaui/controls/RichTextControl-dbg.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/controls/RichTextControl.d.ts +0 -11
- package/src/nz/co/siliconst/ui5/metaui/controls/RichTextControl.d.ts.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/controls/RichTextControl.js +1 -1
- package/src/nz/co/siliconst/ui5/metaui/controls/RichTextControl.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/controls/RichTextControl.ts +2 -9
- package/src/nz/co/siliconst/ui5/metaui/controls/SignatureControl-dbg.js +2 -7
- package/src/nz/co/siliconst/ui5/metaui/controls/SignatureControl-dbg.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/controls/SignatureControl.d.ts +0 -5
- package/src/nz/co/siliconst/ui5/metaui/controls/SignatureControl.d.ts.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/controls/SignatureControl.js +1 -1
- package/src/nz/co/siliconst/ui5/metaui/controls/SignatureControl.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/controls/SignatureControl.ts +3 -7
- package/src/nz/co/siliconst/ui5/metaui/controls/VoiceInputControl-dbg.js +1 -6
- package/src/nz/co/siliconst/ui5/metaui/controls/VoiceInputControl-dbg.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/controls/VoiceInputControl.d.ts +0 -5
- package/src/nz/co/siliconst/ui5/metaui/controls/VoiceInputControl.d.ts.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/controls/VoiceInputControl.js +1 -1
- package/src/nz/co/siliconst/ui5/metaui/controls/VoiceInputControl.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/controls/VoiceInputControl.ts +9 -12
- package/src/nz/co/siliconst/ui5/metaui/controls/host/GeneratorHost-dbg.js +170 -74
- package/src/nz/co/siliconst/ui5/metaui/controls/host/GeneratorHost-dbg.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/controls/host/GeneratorHost.d.ts +29 -4
- package/src/nz/co/siliconst/ui5/metaui/controls/host/GeneratorHost.d.ts.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/controls/host/GeneratorHost.js +1 -1
- package/src/nz/co/siliconst/ui5/metaui/controls/host/GeneratorHost.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/controls/host/GeneratorHost.ts +179 -79
- package/src/nz/co/siliconst/ui5/metaui/controls/host/delegates/DataSyncDelegate-dbg.js +41 -38
- package/src/nz/co/siliconst/ui5/metaui/controls/host/delegates/DataSyncDelegate-dbg.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/controls/host/delegates/DataSyncDelegate.d.ts +5 -3
- package/src/nz/co/siliconst/ui5/metaui/controls/host/delegates/DataSyncDelegate.d.ts.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/controls/host/delegates/DataSyncDelegate.js +1 -1
- package/src/nz/co/siliconst/ui5/metaui/controls/host/delegates/DataSyncDelegate.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/controls/host/delegates/DataSyncDelegate.ts +46 -38
- package/src/nz/co/siliconst/ui5/metaui/controls/host/delegates/DialogDelegate-dbg.js +41 -2
- package/src/nz/co/siliconst/ui5/metaui/controls/host/delegates/DialogDelegate-dbg.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/controls/host/delegates/DialogDelegate.d.ts +6 -2
- package/src/nz/co/siliconst/ui5/metaui/controls/host/delegates/DialogDelegate.d.ts.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/controls/host/delegates/DialogDelegate.js +1 -1
- package/src/nz/co/siliconst/ui5/metaui/controls/host/delegates/DialogDelegate.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/controls/host/delegates/DialogDelegate.ts +47 -2
- package/src/nz/co/siliconst/ui5/metaui/controls/host/delegates/ODataDelegate-dbg.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/controls/host/delegates/ODataDelegate.d.ts +1 -1
- package/src/nz/co/siliconst/ui5/metaui/controls/host/delegates/ODataDelegate.d.ts.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/controls/host/delegates/ODataDelegate.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/controls/host/delegates/ODataDelegate.ts +8 -7
- package/src/nz/co/siliconst/ui5/metaui/controls/host/delegates/ValidationDelegate-dbg.js +7 -2
- package/src/nz/co/siliconst/ui5/metaui/controls/host/delegates/ValidationDelegate-dbg.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/controls/host/delegates/ValidationDelegate.d.ts +5 -2
- package/src/nz/co/siliconst/ui5/metaui/controls/host/delegates/ValidationDelegate.d.ts.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/controls/host/delegates/ValidationDelegate.js +1 -1
- package/src/nz/co/siliconst/ui5/metaui/controls/host/delegates/ValidationDelegate.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/controls/host/delegates/ValidationDelegate.ts +10 -5
- package/src/nz/co/siliconst/ui5/metaui/core/Engine-dbg.js +215 -38
- package/src/nz/co/siliconst/ui5/metaui/core/Engine-dbg.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/core/Engine.d.ts +21 -3
- package/src/nz/co/siliconst/ui5/metaui/core/Engine.d.ts.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/core/Engine.js +1 -1
- package/src/nz/co/siliconst/ui5/metaui/core/Engine.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/core/Engine.ts +218 -40
- package/src/nz/co/siliconst/ui5/metaui/core/LayoutMutator-dbg.js +86 -0
- package/src/nz/co/siliconst/ui5/metaui/core/LayoutMutator-dbg.js.map +1 -0
- package/src/nz/co/siliconst/ui5/metaui/core/LayoutMutator.d.ts +16 -0
- package/src/nz/co/siliconst/ui5/metaui/core/LayoutMutator.d.ts.map +1 -0
- package/src/nz/co/siliconst/ui5/metaui/core/LayoutMutator.js +2 -0
- package/src/nz/co/siliconst/ui5/metaui/core/LayoutMutator.js.map +1 -0
- package/src/nz/co/siliconst/ui5/metaui/core/LayoutMutator.ts +82 -0
- package/src/nz/co/siliconst/ui5/metaui/core/LayoutScorer-dbg.js +142 -0
- package/src/nz/co/siliconst/ui5/metaui/core/LayoutScorer-dbg.js.map +1 -0
- package/src/nz/co/siliconst/ui5/metaui/core/LayoutScorer.d.ts +24 -0
- package/src/nz/co/siliconst/ui5/metaui/core/LayoutScorer.d.ts.map +1 -0
- package/src/nz/co/siliconst/ui5/metaui/core/LayoutScorer.js +2 -0
- package/src/nz/co/siliconst/ui5/metaui/core/LayoutScorer.js.map +1 -0
- package/src/nz/co/siliconst/ui5/metaui/core/LayoutScorer.ts +147 -0
- package/src/nz/co/siliconst/ui5/metaui/core/PipelineManager-dbg.js +8 -0
- package/src/nz/co/siliconst/ui5/metaui/core/PipelineManager-dbg.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/core/PipelineManager.d.ts.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/core/PipelineManager.js +1 -1
- package/src/nz/co/siliconst/ui5/metaui/core/PipelineManager.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/core/PipelineManager.ts +7 -0
- package/src/nz/co/siliconst/ui5/metaui/core/PluginRegistry-dbg.js +153 -50
- package/src/nz/co/siliconst/ui5/metaui/core/PluginRegistry-dbg.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/core/PluginRegistry.d.ts +15 -0
- package/src/nz/co/siliconst/ui5/metaui/core/PluginRegistry.d.ts.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/core/PluginRegistry.js +1 -1
- package/src/nz/co/siliconst/ui5/metaui/core/PluginRegistry.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/core/PluginRegistry.ts +164 -53
- package/src/nz/co/siliconst/ui5/metaui/core/PolicyEngine-dbg.js +310 -0
- package/src/nz/co/siliconst/ui5/metaui/core/PolicyEngine-dbg.js.map +1 -0
- package/src/nz/co/siliconst/ui5/metaui/core/PolicyEngine.d.ts +73 -0
- package/src/nz/co/siliconst/ui5/metaui/core/PolicyEngine.d.ts.map +1 -0
- package/src/nz/co/siliconst/ui5/metaui/core/PolicyEngine.js +2 -0
- package/src/nz/co/siliconst/ui5/metaui/core/PolicyEngine.js.map +1 -0
- package/src/nz/co/siliconst/ui5/metaui/core/PolicyEngine.ts +307 -0
- package/src/nz/co/siliconst/ui5/metaui/core/SchemaNormalizer-dbg.js +35 -14
- package/src/nz/co/siliconst/ui5/metaui/core/SchemaNormalizer-dbg.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/core/SchemaNormalizer.d.ts.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/core/SchemaNormalizer.js +1 -1
- package/src/nz/co/siliconst/ui5/metaui/core/SchemaNormalizer.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/core/SchemaNormalizer.ts +40 -15
- package/src/nz/co/siliconst/ui5/metaui/core/SchemaValidator-dbg.js +15 -3
- package/src/nz/co/siliconst/ui5/metaui/core/SchemaValidator-dbg.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/core/SchemaValidator.d.ts.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/core/SchemaValidator.js +1 -1
- package/src/nz/co/siliconst/ui5/metaui/core/SchemaValidator.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/core/SchemaValidator.ts +15 -1
- package/src/nz/co/siliconst/ui5/metaui/core/StateManager-dbg.js +82 -16
- package/src/nz/co/siliconst/ui5/metaui/core/StateManager-dbg.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/core/StateManager.d.ts +16 -0
- package/src/nz/co/siliconst/ui5/metaui/core/StateManager.d.ts.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/core/StateManager.js +1 -1
- package/src/nz/co/siliconst/ui5/metaui/core/StateManager.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/core/StateManager.ts +89 -17
- package/src/nz/co/siliconst/ui5/metaui/interfaces/IPlugin-dbg.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/interfaces/IPlugin.d.ts +12 -1
- package/src/nz/co/siliconst/ui5/metaui/interfaces/IPlugin.d.ts.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/interfaces/IPlugin.ts +13 -1
- package/src/nz/co/siliconst/ui5/metaui/interfaces/IPolicyPlugin-dbg.js +2 -0
- package/src/nz/co/siliconst/ui5/metaui/interfaces/IPolicyPlugin-dbg.js.map +1 -0
- package/src/nz/co/siliconst/ui5/metaui/interfaces/IPolicyPlugin.d.ts +50 -0
- package/src/nz/co/siliconst/ui5/metaui/interfaces/IPolicyPlugin.d.ts.map +1 -0
- package/src/nz/co/siliconst/ui5/metaui/interfaces/IPolicyPlugin.js +2 -0
- package/src/nz/co/siliconst/ui5/metaui/interfaces/IPolicyPlugin.js.map +1 -0
- package/src/nz/co/siliconst/ui5/metaui/interfaces/IPolicyPlugin.ts +49 -0
- package/src/nz/co/siliconst/ui5/metaui/interfaces/ISchema-dbg.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/interfaces/ISchema.d.ts +23 -1
- package/src/nz/co/siliconst/ui5/metaui/interfaces/ISchema.d.ts.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/interfaces/ISchema.ts +27 -1
- package/src/nz/co/siliconst/ui5/metaui/layouts/FormLayout-dbg.js +31 -36
- package/src/nz/co/siliconst/ui5/metaui/layouts/FormLayout-dbg.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/layouts/FormLayout.d.ts.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/layouts/FormLayout.js +1 -1
- package/src/nz/co/siliconst/ui5/metaui/layouts/FormLayout.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/layouts/FormLayout.ts +26 -29
- package/src/nz/co/siliconst/ui5/metaui/layouts/TableLayout-dbg.js +47 -11
- package/src/nz/co/siliconst/ui5/metaui/layouts/TableLayout-dbg.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/layouts/TableLayout.d.ts.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/layouts/TableLayout.js +1 -1
- package/src/nz/co/siliconst/ui5/metaui/layouts/TableLayout.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/layouts/TableLayout.ts +48 -12
- package/src/nz/co/siliconst/ui5/metaui/library-preload.js +74 -58
- package/src/nz/co/siliconst/ui5/metaui/library-preload.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/openapi/OpenApiParserFactory-dbg.js +3 -2
- package/src/nz/co/siliconst/ui5/metaui/openapi/OpenApiParserFactory-dbg.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/openapi/OpenApiParserFactory.d.ts.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/openapi/OpenApiParserFactory.js +1 -1
- package/src/nz/co/siliconst/ui5/metaui/openapi/OpenApiParserFactory.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/openapi/OpenApiParserFactory.ts +3 -2
- package/src/nz/co/siliconst/ui5/metaui/openapi/OpenApiRefResolver-dbg.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/openapi/OpenApiRefResolver.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/openapi/OpenApiRefResolver.ts +3 -3
- package/src/nz/co/siliconst/ui5/metaui/openapi/OpenApiUIMapper-dbg.js +2 -1
- package/src/nz/co/siliconst/ui5/metaui/openapi/OpenApiUIMapper-dbg.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/openapi/OpenApiUIMapper.d.ts +1 -1
- package/src/nz/co/siliconst/ui5/metaui/openapi/OpenApiUIMapper.d.ts.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/openapi/OpenApiUIMapper.js +1 -1
- package/src/nz/co/siliconst/ui5/metaui/openapi/OpenApiUIMapper.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/openapi/OpenApiUIMapper.ts +4 -3
- package/src/nz/co/siliconst/ui5/metaui/openapi/heuristics/OpenApiHeuristicEngine-dbg.js +2 -2
- package/src/nz/co/siliconst/ui5/metaui/openapi/heuristics/OpenApiHeuristicEngine-dbg.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/openapi/heuristics/OpenApiHeuristicEngine.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/openapi/heuristics/OpenApiHeuristicEngine.ts +2 -2
- package/src/nz/co/siliconst/ui5/metaui/openapi/heuristics/plugins/ProtobufVariantHeuristic-dbg.js +12 -8
- package/src/nz/co/siliconst/ui5/metaui/openapi/heuristics/plugins/ProtobufVariantHeuristic-dbg.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/openapi/heuristics/plugins/ProtobufVariantHeuristic.d.ts.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/openapi/heuristics/plugins/ProtobufVariantHeuristic.js +1 -1
- package/src/nz/co/siliconst/ui5/metaui/openapi/heuristics/plugins/ProtobufVariantHeuristic.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/openapi/heuristics/plugins/ProtobufVariantHeuristic.ts +15 -11
- package/src/nz/co/siliconst/ui5/metaui/openapi/parsers/OpenApi2Parser-dbg.js +20 -12
- package/src/nz/co/siliconst/ui5/metaui/openapi/parsers/OpenApi2Parser-dbg.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/openapi/parsers/OpenApi2Parser.d.ts +4 -4
- package/src/nz/co/siliconst/ui5/metaui/openapi/parsers/OpenApi2Parser.d.ts.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/openapi/parsers/OpenApi2Parser.js +1 -1
- package/src/nz/co/siliconst/ui5/metaui/openapi/parsers/OpenApi2Parser.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/openapi/parsers/OpenApi2Parser.ts +24 -16
- package/src/nz/co/siliconst/ui5/metaui/openapi/parsers/OpenApi3Parser-dbg.js +18 -11
- package/src/nz/co/siliconst/ui5/metaui/openapi/parsers/OpenApi3Parser-dbg.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/openapi/parsers/OpenApi3Parser.d.ts +4 -4
- package/src/nz/co/siliconst/ui5/metaui/openapi/parsers/OpenApi3Parser.d.ts.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/openapi/parsers/OpenApi3Parser.js +1 -1
- package/src/nz/co/siliconst/ui5/metaui/openapi/parsers/OpenApi3Parser.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/openapi/parsers/OpenApi3Parser.ts +22 -15
- package/src/nz/co/siliconst/ui5/metaui/openapi/parsers/OpenApiPropertyMapper-dbg.js +24 -100
- package/src/nz/co/siliconst/ui5/metaui/openapi/parsers/OpenApiPropertyMapper-dbg.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/openapi/parsers/OpenApiPropertyMapper.d.ts +8 -72
- package/src/nz/co/siliconst/ui5/metaui/openapi/parsers/OpenApiPropertyMapper.d.ts.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/openapi/parsers/OpenApiPropertyMapper.js +1 -1
- package/src/nz/co/siliconst/ui5/metaui/openapi/parsers/OpenApiPropertyMapper.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/openapi/parsers/OpenApiPropertyMapper.ts +45 -108
- package/src/nz/co/siliconst/ui5/metaui/plugins/actions/ClearFormActionPlugin-dbg.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/actions/ClearFormActionPlugin.d.ts.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/actions/ClearFormActionPlugin.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/actions/ClearFormActionPlugin.ts +2 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/ArrayPlugin-dbg.js +24 -18
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/ArrayPlugin-dbg.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/ArrayPlugin.d.ts +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/ArrayPlugin.d.ts.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/ArrayPlugin.js +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/ArrayPlugin.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/ArrayPlugin.ts +23 -21
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/BarcodeScannerPlugin-dbg.js +5 -5
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/BarcodeScannerPlugin-dbg.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/BarcodeScannerPlugin.d.ts +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/BarcodeScannerPlugin.d.ts.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/BarcodeScannerPlugin.js +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/BarcodeScannerPlugin.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/BarcodeScannerPlugin.ts +7 -7
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/BasePlugin-dbg.js +129 -9
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/BasePlugin-dbg.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/BasePlugin.d.ts +46 -10
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/BasePlugin.d.ts.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/BasePlugin.js +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/BasePlugin.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/BasePlugin.ts +145 -15
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/BooleanPlugin-dbg.js +35 -14
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/BooleanPlugin-dbg.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/BooleanPlugin.d.ts +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/BooleanPlugin.d.ts.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/BooleanPlugin.js +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/BooleanPlugin.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/BooleanPlugin.ts +38 -14
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/CameraPlugin-dbg.js +4 -4
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/CameraPlugin-dbg.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/CameraPlugin.d.ts +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/CameraPlugin.d.ts.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/CameraPlugin.js +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/CameraPlugin.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/CameraPlugin.ts +5 -5
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/CodeEditorPlugin-dbg.js +69 -20
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/CodeEditorPlugin-dbg.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/CodeEditorPlugin.d.ts +2 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/CodeEditorPlugin.d.ts.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/CodeEditorPlugin.js +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/CodeEditorPlugin.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/CodeEditorPlugin.ts +77 -21
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/DatePlugin-dbg.js +3 -3
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/DatePlugin-dbg.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/DatePlugin.d.ts +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/DatePlugin.d.ts.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/DatePlugin.js +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/DatePlugin.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/DatePlugin.ts +5 -5
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/DateTimePlugin-dbg.js +3 -3
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/DateTimePlugin-dbg.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/DateTimePlugin.d.ts +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/DateTimePlugin.d.ts.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/DateTimePlugin.js +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/DateTimePlugin.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/DateTimePlugin.ts +5 -5
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/DictionaryMapPlugin-dbg.js +1 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/DictionaryMapPlugin-dbg.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/DictionaryMapPlugin.d.ts.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/DictionaryMapPlugin.js +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/DictionaryMapPlugin.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/DictionaryMapPlugin.ts +6 -5
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/DropdownPlugin-dbg.js +8 -3
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/DropdownPlugin-dbg.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/DropdownPlugin.d.ts +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/DropdownPlugin.d.ts.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/DropdownPlugin.js +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/DropdownPlugin.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/DropdownPlugin.ts +10 -5
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/EmailPlugin-dbg.js +3 -3
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/EmailPlugin-dbg.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/EmailPlugin.d.ts +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/EmailPlugin.d.ts.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/EmailPlugin.js +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/EmailPlugin.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/EmailPlugin.ts +4 -4
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/FileUploaderPlugin-dbg.js +3 -3
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/FileUploaderPlugin-dbg.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/FileUploaderPlugin.d.ts +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/FileUploaderPlugin.d.ts.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/FileUploaderPlugin.js +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/FileUploaderPlugin.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/FileUploaderPlugin.ts +5 -5
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/GeolocationPlugin-dbg.js +4 -4
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/GeolocationPlugin-dbg.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/GeolocationPlugin.d.ts +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/GeolocationPlugin.d.ts.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/GeolocationPlugin.js +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/GeolocationPlugin.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/GeolocationPlugin.ts +5 -5
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/LinkPlugin-dbg.js +3 -3
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/LinkPlugin-dbg.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/LinkPlugin.d.ts +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/LinkPlugin.d.ts.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/LinkPlugin.js +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/LinkPlugin.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/LinkPlugin.ts +4 -4
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/MessageStripPlugin-dbg.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/MessageStripPlugin.d.ts +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/MessageStripPlugin.d.ts.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/MessageStripPlugin.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/MessageStripPlugin.ts +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/MultiInputPlugin-dbg.js +7 -6
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/MultiInputPlugin-dbg.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/MultiInputPlugin.d.ts +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/MultiInputPlugin.d.ts.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/MultiInputPlugin.js +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/MultiInputPlugin.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/MultiInputPlugin.ts +9 -8
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/MultiSelectPlugin-dbg.js +2 -2
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/MultiSelectPlugin-dbg.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/MultiSelectPlugin.d.ts +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/MultiSelectPlugin.d.ts.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/MultiSelectPlugin.js +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/MultiSelectPlugin.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/MultiSelectPlugin.ts +3 -3
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/NumberPlugin-dbg.js +36 -21
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/NumberPlugin-dbg.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/NumberPlugin.d.ts +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/NumberPlugin.d.ts.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/NumberPlugin.js +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/NumberPlugin.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/NumberPlugin.ts +40 -23
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/ObjectPlugin-dbg.js +9 -6
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/ObjectPlugin-dbg.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/ObjectPlugin.d.ts +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/ObjectPlugin.d.ts.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/ObjectPlugin.js +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/ObjectPlugin.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/ObjectPlugin.ts +10 -8
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/PasswordPlugin-dbg.js +3 -3
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/PasswordPlugin-dbg.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/PasswordPlugin.d.ts +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/PasswordPlugin.d.ts.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/PasswordPlugin.js +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/PasswordPlugin.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/PasswordPlugin.ts +4 -4
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/RatingIndicatorPlugin-dbg.js +3 -3
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/RatingIndicatorPlugin-dbg.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/RatingIndicatorPlugin.d.ts +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/RatingIndicatorPlugin.d.ts.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/RatingIndicatorPlugin.js +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/RatingIndicatorPlugin.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/RatingIndicatorPlugin.ts +5 -5
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/ReferencePlugin-dbg.js +29 -12
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/ReferencePlugin-dbg.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/ReferencePlugin.d.ts +5 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/ReferencePlugin.d.ts.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/ReferencePlugin.js +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/ReferencePlugin.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/ReferencePlugin.ts +30 -10
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/RichTextPlugin-dbg.js +4 -4
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/RichTextPlugin-dbg.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/RichTextPlugin.d.ts +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/RichTextPlugin.d.ts.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/RichTextPlugin.js +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/RichTextPlugin.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/RichTextPlugin.ts +5 -5
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/SignaturePlugin-dbg.js +4 -4
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/SignaturePlugin-dbg.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/SignaturePlugin.d.ts +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/SignaturePlugin.d.ts.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/SignaturePlugin.js +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/SignaturePlugin.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/SignaturePlugin.ts +5 -5
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/SliderPlugin-dbg.js +3 -3
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/SliderPlugin-dbg.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/SliderPlugin.d.ts +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/SliderPlugin.d.ts.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/SliderPlugin.js +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/SliderPlugin.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/SliderPlugin.ts +4 -4
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/StepInputPlugin-dbg.js +3 -3
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/StepInputPlugin-dbg.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/StepInputPlugin.d.ts +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/StepInputPlugin.d.ts.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/StepInputPlugin.js +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/StepInputPlugin.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/StepInputPlugin.ts +5 -5
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/StringPlugin-dbg.js +3 -3
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/StringPlugin-dbg.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/StringPlugin.d.ts +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/StringPlugin.d.ts.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/StringPlugin.js +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/StringPlugin.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/StringPlugin.ts +4 -4
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/SwitchPlugin-dbg.js +2 -2
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/SwitchPlugin-dbg.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/SwitchPlugin.d.ts +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/SwitchPlugin.d.ts.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/SwitchPlugin.js +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/SwitchPlugin.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/SwitchPlugin.ts +3 -3
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/TextAreaPlugin-dbg.js +58 -56
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/TextAreaPlugin-dbg.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/TextAreaPlugin.d.ts +2 -5
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/TextAreaPlugin.d.ts.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/TextAreaPlugin.js +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/TextAreaPlugin.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/TextAreaPlugin.ts +66 -55
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/TimePlugin-dbg.js +3 -3
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/TimePlugin-dbg.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/TimePlugin.d.ts +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/TimePlugin.d.ts.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/TimePlugin.js +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/TimePlugin.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/TimePlugin.ts +4 -4
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/VoiceInputPlugin-dbg.js +4 -4
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/VoiceInputPlugin-dbg.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/VoiceInputPlugin.d.ts +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/VoiceInputPlugin.d.ts.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/VoiceInputPlugin.js +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/VoiceInputPlugin.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/VoiceInputPlugin.ts +5 -5
- package/src/nz/co/siliconst/ui5/metaui/plugins/datasources/LiveSearchPlugin-dbg.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/datasources/LiveSearchPlugin.d.ts.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/datasources/LiveSearchPlugin.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/datasources/LiveSearchPlugin.ts +5 -3
- package/src/nz/co/siliconst/ui5/metaui/plugins/datasources/ODataListBindingPlugin-dbg.js +2 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/datasources/ODataListBindingPlugin-dbg.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/datasources/ODataListBindingPlugin.d.ts.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/datasources/ODataListBindingPlugin.js +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/datasources/ODataListBindingPlugin.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/datasources/ODataListBindingPlugin.ts +6 -3
- package/src/nz/co/siliconst/ui5/metaui/plugins/datasources/RemoteDropdownPlugin-dbg.js +30 -9
- package/src/nz/co/siliconst/ui5/metaui/plugins/datasources/RemoteDropdownPlugin-dbg.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/datasources/RemoteDropdownPlugin.d.ts +2 -2
- package/src/nz/co/siliconst/ui5/metaui/plugins/datasources/RemoteDropdownPlugin.d.ts.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/datasources/RemoteDropdownPlugin.js +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/datasources/RemoteDropdownPlugin.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/datasources/RemoteDropdownPlugin.ts +41 -13
- package/src/nz/co/siliconst/ui5/metaui/plugins/datasources/RemoteValueHelpPlugin-dbg.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/datasources/RemoteValueHelpPlugin.d.ts.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/datasources/RemoteValueHelpPlugin.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/datasources/RemoteValueHelpPlugin.ts +5 -3
- package/src/nz/co/siliconst/ui5/metaui/plugins/policies/conditions/IsNotNullConditionPlugin-dbg.js +41 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/policies/conditions/IsNotNullConditionPlugin-dbg.js.map +1 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/policies/conditions/IsNotNullConditionPlugin.d.ts +24 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/policies/conditions/IsNotNullConditionPlugin.d.ts.map +1 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/policies/conditions/IsNotNullConditionPlugin.js +2 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/policies/conditions/IsNotNullConditionPlugin.js.map +1 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/policies/conditions/IsNotNullConditionPlugin.ts +34 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/policies/conditions/IsNullConditionPlugin-dbg.js +41 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/policies/conditions/IsNullConditionPlugin-dbg.js.map +1 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/policies/conditions/IsNullConditionPlugin.d.ts +24 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/policies/conditions/IsNullConditionPlugin.d.ts.map +1 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/policies/conditions/IsNullConditionPlugin.js +2 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/policies/conditions/IsNullConditionPlugin.js.map +1 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/policies/conditions/IsNullConditionPlugin.ts +34 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/policies/conditions/NumericGreaterThanConditionPlugin-dbg.js +52 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/policies/conditions/NumericGreaterThanConditionPlugin-dbg.js.map +1 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/policies/conditions/NumericGreaterThanConditionPlugin.d.ts +30 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/policies/conditions/NumericGreaterThanConditionPlugin.d.ts.map +1 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/policies/conditions/NumericGreaterThanConditionPlugin.js +2 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/policies/conditions/NumericGreaterThanConditionPlugin.js.map +1 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/policies/conditions/NumericGreaterThanConditionPlugin.ts +45 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/policies/conditions/NumericLessThanConditionPlugin-dbg.js +52 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/policies/conditions/NumericLessThanConditionPlugin-dbg.js.map +1 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/policies/conditions/NumericLessThanConditionPlugin.d.ts +30 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/policies/conditions/NumericLessThanConditionPlugin.d.ts.map +1 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/policies/conditions/NumericLessThanConditionPlugin.js +2 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/policies/conditions/NumericLessThanConditionPlugin.js.map +1 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/policies/conditions/NumericLessThanConditionPlugin.ts +45 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/policies/conditions/StringEqualsConditionPlugin-dbg.js +41 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/policies/conditions/StringEqualsConditionPlugin-dbg.js.map +1 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/policies/conditions/StringEqualsConditionPlugin.d.ts +24 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/policies/conditions/StringEqualsConditionPlugin.d.ts.map +1 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/policies/conditions/StringEqualsConditionPlugin.js +2 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/policies/conditions/StringEqualsConditionPlugin.js.map +1 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/policies/conditions/StringEqualsConditionPlugin.ts +34 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/policies/effects/EditableEffectPlugin-dbg.js +40 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/policies/effects/EditableEffectPlugin-dbg.js.map +1 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/policies/effects/EditableEffectPlugin.d.ts +28 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/policies/effects/EditableEffectPlugin.d.ts.map +1 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/policies/effects/EditableEffectPlugin.js +2 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/policies/effects/EditableEffectPlugin.js.map +1 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/policies/effects/EditableEffectPlugin.ts +34 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/policies/effects/RequirementEffectPlugin-dbg.js +40 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/policies/effects/RequirementEffectPlugin-dbg.js.map +1 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/policies/effects/RequirementEffectPlugin.d.ts +28 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/policies/effects/RequirementEffectPlugin.d.ts.map +1 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/policies/effects/RequirementEffectPlugin.js +2 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/policies/effects/RequirementEffectPlugin.js.map +1 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/policies/effects/RequirementEffectPlugin.ts +34 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/policies/effects/ValidityEffectPlugin-dbg.js +40 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/policies/effects/ValidityEffectPlugin-dbg.js.map +1 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/policies/effects/ValidityEffectPlugin.d.ts +28 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/policies/effects/ValidityEffectPlugin.d.ts.map +1 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/policies/effects/ValidityEffectPlugin.js +2 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/policies/effects/ValidityEffectPlugin.js.map +1 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/policies/effects/ValidityEffectPlugin.ts +34 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/policies/effects/VisibilityEffectPlugin-dbg.js +40 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/policies/effects/VisibilityEffectPlugin-dbg.js.map +1 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/policies/effects/VisibilityEffectPlugin.d.ts +28 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/policies/effects/VisibilityEffectPlugin.d.ts.map +1 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/policies/effects/VisibilityEffectPlugin.js +2 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/policies/effects/VisibilityEffectPlugin.js.map +1 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/policies/effects/VisibilityEffectPlugin.ts +34 -0
- package/src/nz/co/siliconst/ui5/metaui/services/SchemaProvider-dbg.js +33 -0
- package/src/nz/co/siliconst/ui5/metaui/services/SchemaProvider-dbg.js.map +1 -0
- package/src/nz/co/siliconst/ui5/metaui/services/SchemaProvider.d.ts +14 -0
- package/src/nz/co/siliconst/ui5/metaui/services/SchemaProvider.d.ts.map +1 -0
- package/src/nz/co/siliconst/ui5/metaui/services/SchemaProvider.js +2 -0
- package/src/nz/co/siliconst/ui5/metaui/services/SchemaProvider.js.map +1 -0
- package/src/nz/co/siliconst/ui5/metaui/services/SchemaProvider.ts +24 -0
- package/src/nz/co/siliconst/ui5/metaui/utils/Logger-dbg.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/utils/Logger.d.ts.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/utils/Logger.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/utils/Logger.ts +1 -1
- package/src/nz/co/siliconst/ui5/metaui/core/ConditionEngine-dbg.js +0 -75
- package/src/nz/co/siliconst/ui5/metaui/core/ConditionEngine-dbg.js.map +0 -1
- package/src/nz/co/siliconst/ui5/metaui/core/ConditionEngine.d.ts +0 -47
- package/src/nz/co/siliconst/ui5/metaui/core/ConditionEngine.d.ts.map +0 -1
- package/src/nz/co/siliconst/ui5/metaui/core/ConditionEngine.js +0 -2
- package/src/nz/co/siliconst/ui5/metaui/core/ConditionEngine.js.map +0 -1
- package/src/nz/co/siliconst/ui5/metaui/core/ConditionEngine.ts +0 -72
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TableLayout-dbg.js","names":["SchemaNormalizer","___core_SchemaNormalizer","Logger","___utils_Logger","TableLayout","render","schema","modelName","engine","onSubmit","bindingPath","itemsSchema","items","properties","ui","widget","$ref","debug","host","getSchemaDefinition","resolved","Object","keys","error","getMetadata","getName","type","Error","tableTitle","title","actualModelName","actualPath","table","Table","headerToolbar","Toolbar","content","Title","text","ToolbarSpacer","isEditable","Button","icon","press","oEvent","btn","getSource","tbl","getParent","model","getModel","info","getBindingInfo","path","rawData","getProperty","data","Array","isArray","newData","setProperty","onChange","replace","fixedLayout","mode","delete","item","getParameter","getBindingContext","getPath","splitPaths","split","index","parseInt","pop","arrayPath","join","splice","templateCells","props","layoutElements","uiLayout","forEach","element","scope","meta","fieldMeta","propKey","resolveScope","addColumn","Column","header","Text","label","demandPopin","isKey","minScreenWidth","popinDisplay","effectiveMeta","control","generateField","push","warn","key","column","msg","message","showErrorPopup","rowTemplate","ColumnListItem","cells","bindItems","template","templateShareable","__exports","__esModule"],"sources":["TableLayout.ts"],"sourcesContent":["/**\n * @file TableLayout.ts\n * @description Generates a responsive SAP Fiori Table layout for v2 schema.\n */\n\nimport Table from \"sap/m/Table\";\nimport Column from \"sap/m/Column\";\nimport Text from \"sap/m/Text\";\nimport ColumnListItem from \"sap/m/ColumnListItem\";\nimport Toolbar from \"sap/m/Toolbar\";\nimport Title from \"sap/m/Title\";\nimport ToolbarSpacer from \"sap/m/ToolbarSpacer\";\nimport Button from \"sap/m/Button\";\nimport JSONModel from \"sap/ui/model/json/JSONModel\";\nimport Control from \"sap/ui/core/Control\";\nimport { IPropertyMetadata, ISchema, ILayoutElement } from \"../interfaces/ISchema\";\nimport { ILayoutManager } from \"../interfaces/ILayoutManager\";\nimport { Engine } from \"../core/Engine\";\nimport { SchemaNormalizer } from \"../core/SchemaNormalizer\";\nimport { Logger } from \"../utils/Logger\";\n\n/**\n * Layout Manager responsible for generating a responsive SAP Fiori Table.\n * It is automatically utilized by the Engine when the schema root or property is of type 'array'.\n * Includes built-in support for adding and deleting rows via dynamic data binding manipulation.\n * \n * @namespace nz.co.siliconst.ui5.metaui.layouts\n * @public\n */\nexport class TableLayout implements ILayoutManager {\n /**\n * Renders the JSON Schema array properties into a UI5 Table.\n * \n * @param schema The active JSON schema array definition.\n * @param modelName The UI5 JSONModel name used for data binding.\n * @param engine The central orchestrator for delegating column plugin generation.\n * @param onSubmit Optional submit hook.\n * @param bindingPath The JSON path representing the array within the payload.\n * @returns {Control} The generated sap.m.Table control.\n * @throws {Error} If the provided schema is not of type 'array'.\n */\n public render(schema: ISchema, modelName: string, engine: Engine, onSubmit?: () => void, bindingPath: string = \"/\"): Control {\n let itemsSchema = schema.items;\n if (itemsSchema && !itemsSchema.properties && itemsSchema.ui?.widget === \"reference\" && itemsSchema.$ref) {\n Logger.debug(`[MetaUI] TableLayout detecting reference widget for ${bindingPath}. Resolving ${itemsSchema.$ref}`, \"\", \"TableLayout\");\n if (engine.host && engine.host.getSchemaDefinition) {\n const resolved = engine.host.getSchemaDefinition(itemsSchema.$ref);\n Logger.debug(`[MetaUI] Resolved schema for ${itemsSchema.$ref}: ${!!resolved} ${resolved ? Object.keys(resolved) : \"\"}`, \"\", \"TableLayout\");\n if (resolved && resolved.properties) {\n itemsSchema = resolved;\n } else {\n Logger.error(`[MetaUI] TableLayout resolved schema but it has no properties!`, \"\", \"TableLayout\");\n }\n } else {\n Logger.error(`[MetaUI] TableLayout cannot resolve ${itemsSchema.$ref} because engine.host.getSchemaDefinition is missing! host: ${engine.host?.getMetadata().getName()}`, \"\", \"TableLayout\");\n }\n }\n\n if (schema.type !== \"array\" || !itemsSchema || !itemsSchema.properties) {\n Logger.error(`[MetaUI] TableLayout fatal error! schema.type: ${schema.type}, itemsSchema: ${!!itemsSchema}, properties: ${itemsSchema ? !!itemsSchema.properties : false}`, \"\", \"TableLayout\");\n throw new Error(\"[MetaUI] TableLayout requires an array schema with items.properties.\");\n }\n\n const tableTitle = schema.title || \"Table\";\n const actualModelName = modelName;\n const actualPath = bindingPath;\n\n const table = new Table({\n headerToolbar: new Toolbar({\n content: [\n new Title({ text: tableTitle }),\n new ToolbarSpacer(),\n ...(!engine.isEditable ? [] : [\n new Button({\n text: \"Add Row\",\n icon: \"sap-icon://add\",\n press: (oEvent: sap.ui.base.Event) => {\n const btn = oEvent.getSource();\n const tbl = btn.getParent().getParent() as Table;\n const model = tbl.getModel(actualModelName) as JSONModel;\n const info = tbl.getBindingInfo(\"items\");\n if (!info || !info.path) return;\n\n const rawData = model.getProperty(info.path);\n const data = Array.isArray(rawData) ? rawData : [];\n const newData = [...data, {}];\n model.setProperty(info.path, newData);\n\n // CRITICAL: Notify the engine so it extracts payload and triggers liveUpdate\n if (engine.onChange) {\n engine.onChange(true, actualPath.replace(/^\\//, \"\"));\n }\n }\n })\n ])\n ]\n }),\n fixedLayout: false,\n mode: !engine.isEditable ? \"None\" : \"Delete\",\n delete: (oEvent: sap.ui.base.Event) => {\n const item = oEvent.getParameter(\"listItem\");\n const path = item.getBindingContext(actualModelName).getPath();\n const model = item.getModel(actualModelName) as JSONModel;\n\n const splitPaths = path.split(\"/\");\n const index = parseInt(splitPaths.pop() || \"0\", 10);\n let arrayPath = splitPaths.join(\"/\");\n if (arrayPath === \"\") arrayPath = \"/\";\n\n const rawData = model.getProperty(arrayPath);\n const data = Array.isArray(rawData) ? rawData : [];\n const newData = [...data];\n newData.splice(index, 1);\n model.setProperty(arrayPath, newData);\n\n // CRITICAL: Notify the engine so it extracts payload and triggers liveUpdate\n if (engine.onChange) {\n engine.onChange(true, actualPath.replace(/^\\//, \"\"));\n }\n }\n });\n\n const templateCells: Control[] = [];\n const props = itemsSchema.properties;\n const layoutElements = schema.uiLayout;\n\n if (layoutElements && Array.isArray(layoutElements)) {\n // Only render columns defined in uiLayout\n layoutElements.forEach((element: ILayoutElement) => {\n if (element.type === \"Control\" && element.scope) {\n const { meta: fieldMeta, bindingPath, propKey } = SchemaNormalizer.resolveScope(\n { type: \"object\", properties: props } as ISchema, \n element.scope\n );\n \n if (!fieldMeta) {\n Logger.error(`[MetaUI] Property '${propKey}' not found in schema definitions for Table.`, \"\", \"TableLayout\");\n } else {\n // The architectural boundary: Table Layout orchestrates the columns and aggregation binding,\n // but delegates the actual cell rendering to the Engine's Field Plugins.\n table.addColumn(new Column({\n header: new Text({ text: element.label || fieldMeta.ui?.label || propKey }),\n demandPopin: !fieldMeta.ui?.isKey,\n minScreenWidth: fieldMeta.ui?.isKey ? \"\" : \"Tablet\",\n popinDisplay: \"Inline\"\n }));\n\n const effectiveMeta = { ...fieldMeta };\n if (element.widget) {\n effectiveMeta.ui = { ...fieldMeta.ui, widget: element.widget };\n }\n\n // We pass the activeModel as actualModelName down. But the path must be relative to the \n // table row binding context, so we just use the bindingPath (e.g. \"id\" or \"header/id\")\n const control = engine.generateField(effectiveMeta, bindingPath, actualModelName || \"meta\", true);\n templateCells.push(control);\n }\n } else {\n Logger.warn(`[MetaUI] Unsupported layout element type '${element.type}' in Table.`, \"\", \"TableLayout\");\n }\n });\n } else {\n Logger.debug(\"[MetaUI TableLayout]\", \"No uiLayout provided. Falling back to rendering all properties as columns.\", \"TableLayout\");\n // Fallback: If no uiLayout is provided, render all properties as columns\n Object.keys(props).forEach((key) => {\n try {\n const fieldMeta = props[key];\n const isKey = !!fieldMeta.ui?.isKey;\n\n const column = new Column({\n header: new Text({ text: fieldMeta.ui?.label || key }),\n demandPopin: !isKey,\n minScreenWidth: isKey ? \"\" : \"Tablet\",\n popinDisplay: \"Inline\"\n });\n table.addColumn(column);\n\n const control = engine.generateField(fieldMeta, key, actualModelName || \"meta\", true);\n templateCells.push(control);\n } catch (error) {\n const msg = (error as Error).message;\n Logger.error(`[MetaUI] Failed to render fallback column ${key}`, msg, \"TableLayout\");\n Logger.showErrorPopup(`Failed to render fallback table column '${key}'.\\n\\nDetails: ${msg}`);\n templateCells.push(new Text({ text: \"Error\" }));\n }\n });\n }\n\n\n\n const rowTemplate = new ColumnListItem({\n cells: templateCells\n });\n\n table.bindItems({\n path: actualPath,\n model: actualModelName,\n template: rowTemplate,\n templateShareable: false\n });\n\n return table;\n }\n}\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"TableLayout-dbg.js","names":["SchemaNormalizer","___core_SchemaNormalizer","Logger","___utils_Logger","WIDGET_TYPE","___constants_MetaUIConstants","SCHEMA_TYPE","TableLayout","render","schema","modelName","engine","onSubmit","bindingPath","itemsSchema","items","properties","ui","widget","REFERENCE","$ref","debug","host","getSchemaDefinition","resolved","Object","keys","error","getMetadata","getName","isPrimitive","includes","type","ARRAY","Error","createSkeleton","meta","obj","key","default","undefined","enum","tableTitle","title","actualModelName","actualPath","table","Table","headerToolbar","Toolbar","content","Title","text","ToolbarSpacer","isEditable","Button","icon","press","oEvent","btn","getSource","tbl","getParent","model","getModel","info","getBindingInfo","path","rawData","getProperty","data","Array","isArray","newData","setProperty","onChange","replace","fixedLayout","mode","delete","item","getParameter","getBindingContext","getPath","splitPaths","split","index","parseInt","pop","arrayPath","join","splice","onArrayMutated","templateCells","props","layoutElements","uiLayout","addColumn","Column","header","Text","control","generateField","push","forEach","element","scope","fieldMeta","propKey","resolveScope","label","demandPopin","isKey","minScreenWidth","popinDisplay","effectiveMeta","warn","column","msg","message","showErrorPopup","rowTemplate","ColumnListItem","cells","bindItems","template","templateShareable","__exports","__esModule"],"sources":["TableLayout.ts"],"sourcesContent":["/**\n * @file TableLayout.ts\n * @description Generates a responsive SAP Fiori Table layout for v2 schema.\n */\n\nimport Table from \"sap/m/Table\";\nimport Column from \"sap/m/Column\";\nimport Text from \"sap/m/Text\";\nimport ColumnListItem from \"sap/m/ColumnListItem\";\nimport Toolbar from \"sap/m/Toolbar\";\nimport Title from \"sap/m/Title\";\nimport ToolbarSpacer from \"sap/m/ToolbarSpacer\";\nimport Button from \"sap/m/Button\";\nimport JSONModel from \"sap/ui/model/json/JSONModel\";\nimport Control from \"sap/ui/core/Control\";\nimport { IPropertyMetadata, ISchema, ILayoutElement } from \"../interfaces/ISchema\";\nimport { ILayoutManager } from \"../interfaces/ILayoutManager\";\nimport { Engine } from \"../core/Engine\";\nimport GeneratorHost from \"../controls/host/GeneratorHost\";\nimport { SchemaNormalizer } from \"../core/SchemaNormalizer\";\nimport { Logger } from \"../utils/Logger\";\nimport { WIDGET_TYPE, SCHEMA_TYPE } from \"../constants/MetaUIConstants\";\n\n/**\n * Layout Manager responsible for generating a responsive SAP Fiori Table.\n * It is automatically utilized by the Engine when the schema root or property is of type 'array'.\n * Includes built-in support for adding and deleting rows via dynamic data binding manipulation.\n * \n * @namespace nz.co.siliconst.ui5.metaui.layouts\n * @public\n */\nexport class TableLayout implements ILayoutManager {\n /**\n * Renders the JSON Schema array properties into a UI5 Table.\n * \n * @param schema The active JSON schema array definition.\n * @param modelName The UI5 JSONModel name used for data binding.\n * @param engine The central orchestrator for delegating column plugin generation.\n * @param onSubmit Optional submit hook.\n * @param bindingPath The JSON path representing the array within the payload.\n * @returns {Control} The generated sap.m.Table control.\n * @throws {Error} If the provided schema is not of type 'array'.\n */\n public render(schema: ISchema, modelName: string, engine: Engine, onSubmit?: () => void, bindingPath: string = \"/\"): Control {\n let itemsSchema = schema.items;\n if (itemsSchema && !itemsSchema.properties && itemsSchema.ui?.widget === WIDGET_TYPE.REFERENCE && itemsSchema.$ref) {\n Logger.debug(`[MetaUI] TableLayout detecting reference widget for ${bindingPath}. Resolving ${itemsSchema.$ref}`, \"\", \"TableLayout\");\n \n const host = engine.host as unknown as GeneratorHost;\n if (host && typeof host.getSchemaDefinition === \"function\") {\n const resolved = host.getSchemaDefinition(itemsSchema.$ref);\n Logger.debug(`[MetaUI] Resolved schema for ${itemsSchema.$ref}: ${!!resolved} ${resolved ? Object.keys(resolved) : \"\"}`, \"\", \"TableLayout\");\n if (resolved && resolved.properties) {\n itemsSchema = resolved;\n } else {\n Logger.error(`[MetaUI] TableLayout resolved schema but it has no properties!`, \"\", \"TableLayout\");\n }\n } else {\n Logger.error(`[MetaUI] TableLayout cannot resolve ${itemsSchema.$ref} because engine.host.getSchemaDefinition is missing! host: ${host?.getMetadata().getName()}`, \"\", \"TableLayout\");\n }\n }\n\n const isPrimitive = itemsSchema && !itemsSchema.properties && [\"string\", \"number\", \"boolean\"].includes(itemsSchema.type as string);\n if (schema.type !== SCHEMA_TYPE.ARRAY || !itemsSchema || (!itemsSchema.properties && !isPrimitive)) {\n Logger.error(`[MetaUI] TableLayout fatal error! schema.type: ${schema.type}, itemsSchema: ${!!itemsSchema}, properties: ${itemsSchema ? !!itemsSchema.properties : false}`, \"\", \"TableLayout\");\n throw new Error(\"[MetaUI] TableLayout requires an array schema with items.properties or primitive items.\");\n }\n\n const createSkeleton = (meta: ISchema | IPropertyMetadata): any => {\n if (meta.type === \"object\" && meta.properties) {\n const obj: any = {};\n for (const key of Object.keys(meta.properties)) {\n obj[key] = createSkeleton(meta.properties[key] as ISchema | IPropertyMetadata);\n }\n return obj;\n } else if (meta.type === \"array\") {\n return [];\n } else if (meta.type === \"string\") {\n return (meta as any).default !== undefined ? (meta as any).default : ((meta as any).enum ? (meta as any).enum[0] : \"\");\n } else if (meta.type === \"number\") {\n return (meta as any).default !== undefined ? (meta as any).default : 0;\n } else if (meta.type === \"boolean\") {\n return (meta as any).default !== undefined ? (meta as any).default : false;\n }\n return \"\";\n };\n\n const tableTitle = schema.title || \"Table\";\n const actualModelName = modelName;\n const actualPath = bindingPath;\n\n const table = new Table({\n headerToolbar: new Toolbar({\n content: [\n new Title({ text: tableTitle }),\n new ToolbarSpacer(),\n ...(!engine.isEditable ? [] : [\n new Button({\n text: \"Add Row\",\n icon: \"sap-icon://add\",\n press: (oEvent: sap.ui.base.Event) => {\n const btn = oEvent.getSource() as Button;\n const tbl = btn.getParent()?.getParent() as Table;\n const model = tbl.getModel(actualModelName) as JSONModel;\n const info = tbl.getBindingInfo(\"items\");\n if (!info || !info.path) return;\n\n const rawData = model.getProperty(info.path);\n const data = Array.isArray(rawData) ? rawData : [];\n const newData = [...data, createSkeleton(itemsSchema)];\n model.setProperty(info.path, newData);\n\n // CRITICAL: Notify the engine so it extracts payload and triggers liveUpdate\n if (engine.onChange) {\n engine.onChange(true, actualPath.replace(/^\\//, \"\"));\n }\n }\n })\n ])\n ]\n }),\n fixedLayout: false,\n mode: !engine.isEditable ? \"None\" : \"Delete\",\n delete: (oEvent: sap.ui.base.Event) => {\n const item = oEvent.getParameter(\"listItem\") as ColumnListItem;\n const path = item.getBindingContext(actualModelName)?.getPath();\n if (!path) return;\n const model = item.getModel(actualModelName) as JSONModel;\n\n const splitPaths = path.split(\"/\");\n const index = parseInt(splitPaths.pop() || \"0\", 10);\n let arrayPath = splitPaths.join(\"/\");\n if (arrayPath === \"\") arrayPath = \"/\";\n\n const rawData = model.getProperty(arrayPath);\n const data = Array.isArray(rawData) ? rawData : [];\n const newData = [...data];\n newData.splice(index, 1);\n model.setProperty(arrayPath, newData);\n\n // CRITICAL: Notify the engine so it extracts payload and triggers liveUpdate\n if (engine.onChange) {\n engine.onChange(true, actualPath.replace(/^\\//, \"\"));\n }\n\n // CRITICAL: Clear ghost errors that shifted due to array mutation\n if (typeof (engine as any).onArrayMutated === \"function\") {\n (engine as any).onArrayMutated(arrayPath);\n }\n }\n });\n\n const templateCells: Control[] = [];\n const props = itemsSchema.properties;\n const layoutElements = schema.uiLayout;\n\n if (isPrimitive) {\n table.addColumn(new Column({\n header: new Text({ text: \"Value\" })\n }));\n const control = engine.generateField(itemsSchema as IPropertyMetadata, \"\", actualModelName || \"meta\", true);\n templateCells.push(control);\n } else if (layoutElements && Array.isArray(layoutElements)) {\n // Only render columns defined in uiLayout\n layoutElements.forEach((element: ILayoutElement) => {\n if (element.type === \"Control\" && element.scope) {\n const { meta: fieldMeta, bindingPath, propKey } = SchemaNormalizer.resolveScope(\n { type: \"object\", properties: props } as ISchema, \n element.scope\n );\n \n if (!fieldMeta) {\n Logger.error(`[MetaUI] Property '${propKey}' not found in schema definitions for Table.`, \"\", \"TableLayout\");\n } else {\n // The architectural boundary: Table Layout orchestrates the columns and aggregation binding,\n // but delegates the actual cell rendering to the Engine's Field Plugins.\n table.addColumn(new Column({\n header: new Text({ text: element.label || fieldMeta.ui?.label || propKey }),\n demandPopin: !fieldMeta.ui?.isKey,\n minScreenWidth: fieldMeta.ui?.isKey ? \"\" : \"Tablet\",\n popinDisplay: \"Inline\"\n }));\n\n const effectiveMeta = { ...fieldMeta };\n if (element.widget) {\n effectiveMeta.ui = { ...fieldMeta.ui, widget: element.widget };\n }\n\n // We pass the activeModel as actualModelName down. But the path must be relative to the \n // table row binding context, so we just use the bindingPath (e.g. \"id\" or \"header/id\")\n const control = engine.generateField(effectiveMeta, bindingPath, actualModelName || \"meta\", true);\n templateCells.push(control);\n }\n } else {\n Logger.warn(`[MetaUI] Unsupported layout element type '${element.type}' in Table.`, \"\", \"TableLayout\");\n }\n });\n } else {\n Logger.debug(\"[MetaUI TableLayout]\", \"No uiLayout provided. Falling back to rendering all properties as columns.\", \"TableLayout\");\n // Fallback: If no uiLayout is provided, render all properties as columns\n Object.keys(props).forEach((key) => {\n try {\n const fieldMeta = props[key];\n const isKey = !!fieldMeta.ui?.isKey;\n\n const column = new Column({\n header: new Text({ text: fieldMeta.ui?.label || key }),\n demandPopin: !isKey,\n minScreenWidth: isKey ? \"\" : \"Tablet\",\n popinDisplay: \"Inline\"\n });\n table.addColumn(column);\n\n const control = engine.generateField(fieldMeta, key, actualModelName || \"meta\", true);\n templateCells.push(control);\n } catch (error) {\n const msg = (error as Error).message;\n Logger.error(`[MetaUI] Failed to render fallback column ${key}`, msg, \"TableLayout\");\n Logger.showErrorPopup(`Failed to render fallback table column '${key}'.\\n\\nDetails: ${msg}`);\n templateCells.push(new Text({ text: \"Error\" }));\n }\n });\n }\n\n\n\n const rowTemplate = new ColumnListItem({\n cells: templateCells\n });\n\n table.bindItems({\n path: actualPath,\n model: actualModelName,\n template: rowTemplate,\n templateShareable: false\n });\n\n return table;\n }\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TableLayout.d.ts","sourceRoot":"../../../../../../../..","sources":["src/nz/co/siliconst/ui5/metaui/layouts/TableLayout.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,gDAAgD,CAAC;IAehE,OAAO,OAAO,MAAM,qBAAqB,CAAC;IAC1C,OAAO,EAAqB,OAAO,EAAkB,MAAM,+CAA+C,CAAC;IAC3G,OAAO,EAAE,cAAc,EAAE,MAAM,sDAAsD,CAAC;IACtF,OAAO,EAAE,MAAM,EAAE,MAAM,wCAAwC,CAAC;
|
|
1
|
+
{"version":3,"file":"TableLayout.d.ts","sourceRoot":"../../../../../../../..","sources":["src/nz/co/siliconst/ui5/metaui/layouts/TableLayout.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,gDAAgD,CAAC;IAehE,OAAO,OAAO,MAAM,qBAAqB,CAAC;IAC1C,OAAO,EAAqB,OAAO,EAAkB,MAAM,+CAA+C,CAAC;IAC3G,OAAO,EAAE,cAAc,EAAE,MAAM,sDAAsD,CAAC;IACtF,OAAO,EAAE,MAAM,EAAE,MAAM,wCAAwC,CAAC;IAMhE;;;;;;;OAOG;IACH,MAAa,WAAY,YAAW,cAAc;QAC9C;;;;;;;;;;WAUG;QACI,MAAM,CAAC,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,IAAI,EAAE,WAAW,GAAE,MAAY,GAAG,OAAO;KAoM/H;CAEA"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
sap.ui.define(["sap/m/Table","sap/m/Column","sap/m/Text","sap/m/ColumnListItem","sap/m/Toolbar","sap/m/Title","sap/m/ToolbarSpacer","sap/m/Button","../core/SchemaNormalizer","../utils/Logger"],function(e,t,a,
|
|
1
|
+
sap.ui.define(["sap/m/Table","sap/m/Column","sap/m/Text","sap/m/ColumnListItem","sap/m/Toolbar","sap/m/Title","sap/m/ToolbarSpacer","sap/m/Button","../core/SchemaNormalizer","../utils/Logger","../constants/MetaUIConstants"],function(e,t,o,a,r,n,s,i,l,p,c){"use strict";const u=l["SchemaNormalizer"];const d=p["Logger"];const f=c["WIDGET_TYPE"];const y=c["SCHEMA_TYPE"];class m{render(l,p,c,m,b="/"){let g=l.items;if(g&&!g.properties&&g.ui?.widget===f.REFERENCE&&g.$ref){d.debug(`[MetaUI] TableLayout detecting reference widget for ${b}. Resolving ${g.$ref}`,"","TableLayout");const e=c.host;if(e&&typeof e.getSchemaDefinition==="function"){const t=e.getSchemaDefinition(g.$ref);d.debug(`[MetaUI] Resolved schema for ${g.$ref}: ${!!t} ${t?Object.keys(t):""}`,"","TableLayout");if(t&&t.properties){g=t}else{d.error(`[MetaUI] TableLayout resolved schema but it has no properties!`,"","TableLayout")}}else{d.error(`[MetaUI] TableLayout cannot resolve ${g.$ref} because engine.host.getSchemaDefinition is missing! host: ${e?.getMetadata().getName()}`,"","TableLayout")}}const h=g&&!g.properties&&["string","number","boolean"].includes(g.type);if(l.type!==y.ARRAY||!g||!g.properties&&!h){d.error(`[MetaUI] TableLayout fatal error! schema.type: ${l.type}, itemsSchema: ${!!g}, properties: ${g?!!g.properties:false}`,"","TableLayout");throw new Error("[MetaUI] TableLayout requires an array schema with items.properties or primitive items.")}const T=e=>{if(e.type==="object"&&e.properties){const t={};for(const o of Object.keys(e.properties)){t[o]=T(e.properties[o])}return t}else if(e.type==="array"){return[]}else if(e.type==="string"){return e.default!==undefined?e.default:e.enum?e.enum[0]:""}else if(e.type==="number"){return e.default!==undefined?e.default:0}else if(e.type==="boolean"){return e.default!==undefined?e.default:false}return""};const w=l.title||"Table";const L=p;const $=b;const I=new e({headerToolbar:new r({content:[new n({text:w}),new s,...!c.isEditable?[]:[new i({text:"Add Row",icon:"sap-icon://add",press:e=>{const t=e.getSource();const o=t.getParent()?.getParent();const a=o.getModel(L);const r=o.getBindingInfo("items");if(!r||!r.path)return;const n=a.getProperty(r.path);const s=Array.isArray(n)?n:[];const i=[...s,T(g)];a.setProperty(r.path,i);if(c.onChange){c.onChange(true,$.replace(/^\//,""))}}})]]}),fixedLayout:false,mode:!c.isEditable?"None":"Delete",delete:e=>{const t=e.getParameter("listItem");const o=t.getBindingContext(L)?.getPath();if(!o)return;const a=t.getModel(L);const r=o.split("/");const n=parseInt(r.pop()||"0",10);let s=r.join("/");if(s==="")s="/";const i=a.getProperty(s);const l=Array.isArray(i)?i:[];const p=[...l];p.splice(n,1);a.setProperty(s,p);if(c.onChange){c.onChange(true,$.replace(/^\//,""))}if(typeof c.onArrayMutated==="function"){c.onArrayMutated(s)}}});const M=[];const E=g.properties;const P=l.uiLayout;if(h){I.addColumn(new t({header:new o({text:"Value"})}));const e=c.generateField(g,"",L||"meta",true);M.push(e)}else if(P&&Array.isArray(P)){P.forEach(e=>{if(e.type==="Control"&&e.scope){const{meta:a,bindingPath:r,propKey:n}=u.resolveScope({type:"object",properties:E},e.scope);if(!a){d.error(`[MetaUI] Property '${n}' not found in schema definitions for Table.`,"","TableLayout")}else{I.addColumn(new t({header:new o({text:e.label||a.ui?.label||n}),demandPopin:!a.ui?.isKey,minScreenWidth:a.ui?.isKey?"":"Tablet",popinDisplay:"Inline"}));const s={...a};if(e.widget){s.ui={...a.ui,widget:e.widget}}const i=c.generateField(s,r,L||"meta",true);M.push(i)}}else{d.warn(`[MetaUI] Unsupported layout element type '${e.type}' in Table.`,"","TableLayout")}})}else{d.debug("[MetaUI TableLayout]","No uiLayout provided. Falling back to rendering all properties as columns.","TableLayout");Object.keys(E).forEach(e=>{try{const a=E[e];const r=!!a.ui?.isKey;const n=new t({header:new o({text:a.ui?.label||e}),demandPopin:!r,minScreenWidth:r?"":"Tablet",popinDisplay:"Inline"});I.addColumn(n);const s=c.generateField(a,e,L||"meta",true);M.push(s)}catch(t){const a=t.message;d.error(`[MetaUI] Failed to render fallback column ${e}`,a,"TableLayout");d.showErrorPopup(`Failed to render fallback table column '${e}'.\n\nDetails: ${a}`);M.push(new o({text:"Error"}))}})}const C=new a({cells:M});I.bindItems({path:$,model:L,template:C,templateShareable:false});return I}}var b={__esModule:true};b.TableLayout=m;return b});
|
|
2
2
|
//# sourceMappingURL=TableLayout.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TableLayout.js","names":["SchemaNormalizer","___core_SchemaNormalizer","Logger","___utils_Logger","TableLayout","render","schema","modelName","engine","onSubmit","bindingPath","itemsSchema","items","properties","ui","widget","$ref","debug","host","getSchemaDefinition","resolved","Object","keys","error","getMetadata","getName","type","Error","tableTitle","title","actualModelName","actualPath","table","Table","headerToolbar","Toolbar","content","Title","text","ToolbarSpacer","isEditable","Button","icon","press","oEvent","btn","getSource","tbl","getParent","model","getModel","info","getBindingInfo","path","rawData","getProperty","data","Array","isArray","newData","setProperty","onChange","replace","fixedLayout","mode","delete","item","getParameter","getBindingContext","getPath","splitPaths","split","index","parseInt","pop","arrayPath","join","splice","templateCells","props","layoutElements","uiLayout","forEach","element","scope","meta","fieldMeta","propKey","resolveScope","addColumn","Column","header","Text","label","demandPopin","isKey","minScreenWidth","popinDisplay","effectiveMeta","control","generateField","push","warn","key","column","msg","message","showErrorPopup","rowTemplate","ColumnListItem","cells","bindItems","template","templateShareable","__exports","__esModule"],"sources":["TableLayout.ts"],"sourcesContent":["/**\n * @file TableLayout.ts\n * @description Generates a responsive SAP Fiori Table layout for v2 schema.\n */\n\nimport Table from \"sap/m/Table\";\nimport Column from \"sap/m/Column\";\nimport Text from \"sap/m/Text\";\nimport ColumnListItem from \"sap/m/ColumnListItem\";\nimport Toolbar from \"sap/m/Toolbar\";\nimport Title from \"sap/m/Title\";\nimport ToolbarSpacer from \"sap/m/ToolbarSpacer\";\nimport Button from \"sap/m/Button\";\nimport JSONModel from \"sap/ui/model/json/JSONModel\";\nimport Control from \"sap/ui/core/Control\";\nimport { IPropertyMetadata, ISchema, ILayoutElement } from \"../interfaces/ISchema\";\nimport { ILayoutManager } from \"../interfaces/ILayoutManager\";\nimport { Engine } from \"../core/Engine\";\nimport { SchemaNormalizer } from \"../core/SchemaNormalizer\";\nimport { Logger } from \"../utils/Logger\";\n\n/**\n * Layout Manager responsible for generating a responsive SAP Fiori Table.\n * It is automatically utilized by the Engine when the schema root or property is of type 'array'.\n * Includes built-in support for adding and deleting rows via dynamic data binding manipulation.\n * \n * @namespace nz.co.siliconst.ui5.metaui.layouts\n * @public\n */\nexport class TableLayout implements ILayoutManager {\n /**\n * Renders the JSON Schema array properties into a UI5 Table.\n * \n * @param schema The active JSON schema array definition.\n * @param modelName The UI5 JSONModel name used for data binding.\n * @param engine The central orchestrator for delegating column plugin generation.\n * @param onSubmit Optional submit hook.\n * @param bindingPath The JSON path representing the array within the payload.\n * @returns {Control} The generated sap.m.Table control.\n * @throws {Error} If the provided schema is not of type 'array'.\n */\n public render(schema: ISchema, modelName: string, engine: Engine, onSubmit?: () => void, bindingPath: string = \"/\"): Control {\n let itemsSchema = schema.items;\n if (itemsSchema && !itemsSchema.properties && itemsSchema.ui?.widget === \"reference\" && itemsSchema.$ref) {\n Logger.debug(`[MetaUI] TableLayout detecting reference widget for ${bindingPath}. Resolving ${itemsSchema.$ref}`, \"\", \"TableLayout\");\n if (engine.host && engine.host.getSchemaDefinition) {\n const resolved = engine.host.getSchemaDefinition(itemsSchema.$ref);\n Logger.debug(`[MetaUI] Resolved schema for ${itemsSchema.$ref}: ${!!resolved} ${resolved ? Object.keys(resolved) : \"\"}`, \"\", \"TableLayout\");\n if (resolved && resolved.properties) {\n itemsSchema = resolved;\n } else {\n Logger.error(`[MetaUI] TableLayout resolved schema but it has no properties!`, \"\", \"TableLayout\");\n }\n } else {\n Logger.error(`[MetaUI] TableLayout cannot resolve ${itemsSchema.$ref} because engine.host.getSchemaDefinition is missing! host: ${engine.host?.getMetadata().getName()}`, \"\", \"TableLayout\");\n }\n }\n\n if (schema.type !== \"array\" || !itemsSchema || !itemsSchema.properties) {\n Logger.error(`[MetaUI] TableLayout fatal error! schema.type: ${schema.type}, itemsSchema: ${!!itemsSchema}, properties: ${itemsSchema ? !!itemsSchema.properties : false}`, \"\", \"TableLayout\");\n throw new Error(\"[MetaUI] TableLayout requires an array schema with items.properties.\");\n }\n\n const tableTitle = schema.title || \"Table\";\n const actualModelName = modelName;\n const actualPath = bindingPath;\n\n const table = new Table({\n headerToolbar: new Toolbar({\n content: [\n new Title({ text: tableTitle }),\n new ToolbarSpacer(),\n ...(!engine.isEditable ? [] : [\n new Button({\n text: \"Add Row\",\n icon: \"sap-icon://add\",\n press: (oEvent: sap.ui.base.Event) => {\n const btn = oEvent.getSource();\n const tbl = btn.getParent().getParent() as Table;\n const model = tbl.getModel(actualModelName) as JSONModel;\n const info = tbl.getBindingInfo(\"items\");\n if (!info || !info.path) return;\n\n const rawData = model.getProperty(info.path);\n const data = Array.isArray(rawData) ? rawData : [];\n const newData = [...data, {}];\n model.setProperty(info.path, newData);\n\n // CRITICAL: Notify the engine so it extracts payload and triggers liveUpdate\n if (engine.onChange) {\n engine.onChange(true, actualPath.replace(/^\\//, \"\"));\n }\n }\n })\n ])\n ]\n }),\n fixedLayout: false,\n mode: !engine.isEditable ? \"None\" : \"Delete\",\n delete: (oEvent: sap.ui.base.Event) => {\n const item = oEvent.getParameter(\"listItem\");\n const path = item.getBindingContext(actualModelName).getPath();\n const model = item.getModel(actualModelName) as JSONModel;\n\n const splitPaths = path.split(\"/\");\n const index = parseInt(splitPaths.pop() || \"0\", 10);\n let arrayPath = splitPaths.join(\"/\");\n if (arrayPath === \"\") arrayPath = \"/\";\n\n const rawData = model.getProperty(arrayPath);\n const data = Array.isArray(rawData) ? rawData : [];\n const newData = [...data];\n newData.splice(index, 1);\n model.setProperty(arrayPath, newData);\n\n // CRITICAL: Notify the engine so it extracts payload and triggers liveUpdate\n if (engine.onChange) {\n engine.onChange(true, actualPath.replace(/^\\//, \"\"));\n }\n }\n });\n\n const templateCells: Control[] = [];\n const props = itemsSchema.properties;\n const layoutElements = schema.uiLayout;\n\n if (layoutElements && Array.isArray(layoutElements)) {\n // Only render columns defined in uiLayout\n layoutElements.forEach((element: ILayoutElement) => {\n if (element.type === \"Control\" && element.scope) {\n const { meta: fieldMeta, bindingPath, propKey } = SchemaNormalizer.resolveScope(\n { type: \"object\", properties: props } as ISchema, \n element.scope\n );\n \n if (!fieldMeta) {\n Logger.error(`[MetaUI] Property '${propKey}' not found in schema definitions for Table.`, \"\", \"TableLayout\");\n } else {\n // The architectural boundary: Table Layout orchestrates the columns and aggregation binding,\n // but delegates the actual cell rendering to the Engine's Field Plugins.\n table.addColumn(new Column({\n header: new Text({ text: element.label || fieldMeta.ui?.label || propKey }),\n demandPopin: !fieldMeta.ui?.isKey,\n minScreenWidth: fieldMeta.ui?.isKey ? \"\" : \"Tablet\",\n popinDisplay: \"Inline\"\n }));\n\n const effectiveMeta = { ...fieldMeta };\n if (element.widget) {\n effectiveMeta.ui = { ...fieldMeta.ui, widget: element.widget };\n }\n\n // We pass the activeModel as actualModelName down. But the path must be relative to the \n // table row binding context, so we just use the bindingPath (e.g. \"id\" or \"header/id\")\n const control = engine.generateField(effectiveMeta, bindingPath, actualModelName || \"meta\", true);\n templateCells.push(control);\n }\n } else {\n Logger.warn(`[MetaUI] Unsupported layout element type '${element.type}' in Table.`, \"\", \"TableLayout\");\n }\n });\n } else {\n Logger.debug(\"[MetaUI TableLayout]\", \"No uiLayout provided. Falling back to rendering all properties as columns.\", \"TableLayout\");\n // Fallback: If no uiLayout is provided, render all properties as columns\n Object.keys(props).forEach((key) => {\n try {\n const fieldMeta = props[key];\n const isKey = !!fieldMeta.ui?.isKey;\n\n const column = new Column({\n header: new Text({ text: fieldMeta.ui?.label || key }),\n demandPopin: !isKey,\n minScreenWidth: isKey ? \"\" : \"Tablet\",\n popinDisplay: \"Inline\"\n });\n table.addColumn(column);\n\n const control = engine.generateField(fieldMeta, key, actualModelName || \"meta\", true);\n templateCells.push(control);\n } catch (error) {\n const msg = (error as Error).message;\n Logger.error(`[MetaUI] Failed to render fallback column ${key}`, msg, \"TableLayout\");\n Logger.showErrorPopup(`Failed to render fallback table column '${key}'.\\n\\nDetails: ${msg}`);\n templateCells.push(new Text({ text: \"Error\" }));\n }\n });\n }\n\n\n\n const rowTemplate = new ColumnListItem({\n cells: templateCells\n });\n\n table.bindItems({\n path: actualPath,\n model: actualModelName,\n template: rowTemplate,\n templateShareable: false\n });\n\n return table;\n }\n}\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"TableLayout.js","names":["SchemaNormalizer","___core_SchemaNormalizer","Logger","___utils_Logger","WIDGET_TYPE","___constants_MetaUIConstants","SCHEMA_TYPE","TableLayout","render","schema","modelName","engine","onSubmit","bindingPath","itemsSchema","items","properties","ui","widget","REFERENCE","$ref","debug","host","getSchemaDefinition","resolved","Object","keys","error","getMetadata","getName","isPrimitive","includes","type","ARRAY","Error","createSkeleton","meta","obj","key","default","undefined","enum","tableTitle","title","actualModelName","actualPath","table","Table","headerToolbar","Toolbar","content","Title","text","ToolbarSpacer","isEditable","Button","icon","press","oEvent","btn","getSource","tbl","getParent","model","getModel","info","getBindingInfo","path","rawData","getProperty","data","Array","isArray","newData","setProperty","onChange","replace","fixedLayout","mode","delete","item","getParameter","getBindingContext","getPath","splitPaths","split","index","parseInt","pop","arrayPath","join","splice","onArrayMutated","templateCells","props","layoutElements","uiLayout","addColumn","Column","header","Text","control","generateField","push","forEach","element","scope","fieldMeta","propKey","resolveScope","label","demandPopin","isKey","minScreenWidth","popinDisplay","effectiveMeta","warn","column","msg","message","showErrorPopup","rowTemplate","ColumnListItem","cells","bindItems","template","templateShareable","__exports","__esModule"],"sources":["TableLayout.ts"],"sourcesContent":["/**\n * @file TableLayout.ts\n * @description Generates a responsive SAP Fiori Table layout for v2 schema.\n */\n\nimport Table from \"sap/m/Table\";\nimport Column from \"sap/m/Column\";\nimport Text from \"sap/m/Text\";\nimport ColumnListItem from \"sap/m/ColumnListItem\";\nimport Toolbar from \"sap/m/Toolbar\";\nimport Title from \"sap/m/Title\";\nimport ToolbarSpacer from \"sap/m/ToolbarSpacer\";\nimport Button from \"sap/m/Button\";\nimport JSONModel from \"sap/ui/model/json/JSONModel\";\nimport Control from \"sap/ui/core/Control\";\nimport { IPropertyMetadata, ISchema, ILayoutElement } from \"../interfaces/ISchema\";\nimport { ILayoutManager } from \"../interfaces/ILayoutManager\";\nimport { Engine } from \"../core/Engine\";\nimport GeneratorHost from \"../controls/host/GeneratorHost\";\nimport { SchemaNormalizer } from \"../core/SchemaNormalizer\";\nimport { Logger } from \"../utils/Logger\";\nimport { WIDGET_TYPE, SCHEMA_TYPE } from \"../constants/MetaUIConstants\";\n\n/**\n * Layout Manager responsible for generating a responsive SAP Fiori Table.\n * It is automatically utilized by the Engine when the schema root or property is of type 'array'.\n * Includes built-in support for adding and deleting rows via dynamic data binding manipulation.\n * \n * @namespace nz.co.siliconst.ui5.metaui.layouts\n * @public\n */\nexport class TableLayout implements ILayoutManager {\n /**\n * Renders the JSON Schema array properties into a UI5 Table.\n * \n * @param schema The active JSON schema array definition.\n * @param modelName The UI5 JSONModel name used for data binding.\n * @param engine The central orchestrator for delegating column plugin generation.\n * @param onSubmit Optional submit hook.\n * @param bindingPath The JSON path representing the array within the payload.\n * @returns {Control} The generated sap.m.Table control.\n * @throws {Error} If the provided schema is not of type 'array'.\n */\n public render(schema: ISchema, modelName: string, engine: Engine, onSubmit?: () => void, bindingPath: string = \"/\"): Control {\n let itemsSchema = schema.items;\n if (itemsSchema && !itemsSchema.properties && itemsSchema.ui?.widget === WIDGET_TYPE.REFERENCE && itemsSchema.$ref) {\n Logger.debug(`[MetaUI] TableLayout detecting reference widget for ${bindingPath}. Resolving ${itemsSchema.$ref}`, \"\", \"TableLayout\");\n \n const host = engine.host as unknown as GeneratorHost;\n if (host && typeof host.getSchemaDefinition === \"function\") {\n const resolved = host.getSchemaDefinition(itemsSchema.$ref);\n Logger.debug(`[MetaUI] Resolved schema for ${itemsSchema.$ref}: ${!!resolved} ${resolved ? Object.keys(resolved) : \"\"}`, \"\", \"TableLayout\");\n if (resolved && resolved.properties) {\n itemsSchema = resolved;\n } else {\n Logger.error(`[MetaUI] TableLayout resolved schema but it has no properties!`, \"\", \"TableLayout\");\n }\n } else {\n Logger.error(`[MetaUI] TableLayout cannot resolve ${itemsSchema.$ref} because engine.host.getSchemaDefinition is missing! host: ${host?.getMetadata().getName()}`, \"\", \"TableLayout\");\n }\n }\n\n const isPrimitive = itemsSchema && !itemsSchema.properties && [\"string\", \"number\", \"boolean\"].includes(itemsSchema.type as string);\n if (schema.type !== SCHEMA_TYPE.ARRAY || !itemsSchema || (!itemsSchema.properties && !isPrimitive)) {\n Logger.error(`[MetaUI] TableLayout fatal error! schema.type: ${schema.type}, itemsSchema: ${!!itemsSchema}, properties: ${itemsSchema ? !!itemsSchema.properties : false}`, \"\", \"TableLayout\");\n throw new Error(\"[MetaUI] TableLayout requires an array schema with items.properties or primitive items.\");\n }\n\n const createSkeleton = (meta: ISchema | IPropertyMetadata): any => {\n if (meta.type === \"object\" && meta.properties) {\n const obj: any = {};\n for (const key of Object.keys(meta.properties)) {\n obj[key] = createSkeleton(meta.properties[key] as ISchema | IPropertyMetadata);\n }\n return obj;\n } else if (meta.type === \"array\") {\n return [];\n } else if (meta.type === \"string\") {\n return (meta as any).default !== undefined ? (meta as any).default : ((meta as any).enum ? (meta as any).enum[0] : \"\");\n } else if (meta.type === \"number\") {\n return (meta as any).default !== undefined ? (meta as any).default : 0;\n } else if (meta.type === \"boolean\") {\n return (meta as any).default !== undefined ? (meta as any).default : false;\n }\n return \"\";\n };\n\n const tableTitle = schema.title || \"Table\";\n const actualModelName = modelName;\n const actualPath = bindingPath;\n\n const table = new Table({\n headerToolbar: new Toolbar({\n content: [\n new Title({ text: tableTitle }),\n new ToolbarSpacer(),\n ...(!engine.isEditable ? [] : [\n new Button({\n text: \"Add Row\",\n icon: \"sap-icon://add\",\n press: (oEvent: sap.ui.base.Event) => {\n const btn = oEvent.getSource() as Button;\n const tbl = btn.getParent()?.getParent() as Table;\n const model = tbl.getModel(actualModelName) as JSONModel;\n const info = tbl.getBindingInfo(\"items\");\n if (!info || !info.path) return;\n\n const rawData = model.getProperty(info.path);\n const data = Array.isArray(rawData) ? rawData : [];\n const newData = [...data, createSkeleton(itemsSchema)];\n model.setProperty(info.path, newData);\n\n // CRITICAL: Notify the engine so it extracts payload and triggers liveUpdate\n if (engine.onChange) {\n engine.onChange(true, actualPath.replace(/^\\//, \"\"));\n }\n }\n })\n ])\n ]\n }),\n fixedLayout: false,\n mode: !engine.isEditable ? \"None\" : \"Delete\",\n delete: (oEvent: sap.ui.base.Event) => {\n const item = oEvent.getParameter(\"listItem\") as ColumnListItem;\n const path = item.getBindingContext(actualModelName)?.getPath();\n if (!path) return;\n const model = item.getModel(actualModelName) as JSONModel;\n\n const splitPaths = path.split(\"/\");\n const index = parseInt(splitPaths.pop() || \"0\", 10);\n let arrayPath = splitPaths.join(\"/\");\n if (arrayPath === \"\") arrayPath = \"/\";\n\n const rawData = model.getProperty(arrayPath);\n const data = Array.isArray(rawData) ? rawData : [];\n const newData = [...data];\n newData.splice(index, 1);\n model.setProperty(arrayPath, newData);\n\n // CRITICAL: Notify the engine so it extracts payload and triggers liveUpdate\n if (engine.onChange) {\n engine.onChange(true, actualPath.replace(/^\\//, \"\"));\n }\n\n // CRITICAL: Clear ghost errors that shifted due to array mutation\n if (typeof (engine as any).onArrayMutated === \"function\") {\n (engine as any).onArrayMutated(arrayPath);\n }\n }\n });\n\n const templateCells: Control[] = [];\n const props = itemsSchema.properties;\n const layoutElements = schema.uiLayout;\n\n if (isPrimitive) {\n table.addColumn(new Column({\n header: new Text({ text: \"Value\" })\n }));\n const control = engine.generateField(itemsSchema as IPropertyMetadata, \"\", actualModelName || \"meta\", true);\n templateCells.push(control);\n } else if (layoutElements && Array.isArray(layoutElements)) {\n // Only render columns defined in uiLayout\n layoutElements.forEach((element: ILayoutElement) => {\n if (element.type === \"Control\" && element.scope) {\n const { meta: fieldMeta, bindingPath, propKey } = SchemaNormalizer.resolveScope(\n { type: \"object\", properties: props } as ISchema, \n element.scope\n );\n \n if (!fieldMeta) {\n Logger.error(`[MetaUI] Property '${propKey}' not found in schema definitions for Table.`, \"\", \"TableLayout\");\n } else {\n // The architectural boundary: Table Layout orchestrates the columns and aggregation binding,\n // but delegates the actual cell rendering to the Engine's Field Plugins.\n table.addColumn(new Column({\n header: new Text({ text: element.label || fieldMeta.ui?.label || propKey }),\n demandPopin: !fieldMeta.ui?.isKey,\n minScreenWidth: fieldMeta.ui?.isKey ? \"\" : \"Tablet\",\n popinDisplay: \"Inline\"\n }));\n\n const effectiveMeta = { ...fieldMeta };\n if (element.widget) {\n effectiveMeta.ui = { ...fieldMeta.ui, widget: element.widget };\n }\n\n // We pass the activeModel as actualModelName down. But the path must be relative to the \n // table row binding context, so we just use the bindingPath (e.g. \"id\" or \"header/id\")\n const control = engine.generateField(effectiveMeta, bindingPath, actualModelName || \"meta\", true);\n templateCells.push(control);\n }\n } else {\n Logger.warn(`[MetaUI] Unsupported layout element type '${element.type}' in Table.`, \"\", \"TableLayout\");\n }\n });\n } else {\n Logger.debug(\"[MetaUI TableLayout]\", \"No uiLayout provided. Falling back to rendering all properties as columns.\", \"TableLayout\");\n // Fallback: If no uiLayout is provided, render all properties as columns\n Object.keys(props).forEach((key) => {\n try {\n const fieldMeta = props[key];\n const isKey = !!fieldMeta.ui?.isKey;\n\n const column = new Column({\n header: new Text({ text: fieldMeta.ui?.label || key }),\n demandPopin: !isKey,\n minScreenWidth: isKey ? \"\" : \"Tablet\",\n popinDisplay: \"Inline\"\n });\n table.addColumn(column);\n\n const control = engine.generateField(fieldMeta, key, actualModelName || \"meta\", true);\n templateCells.push(control);\n } catch (error) {\n const msg = (error as Error).message;\n Logger.error(`[MetaUI] Failed to render fallback column ${key}`, msg, \"TableLayout\");\n Logger.showErrorPopup(`Failed to render fallback table column '${key}'.\\n\\nDetails: ${msg}`);\n templateCells.push(new Text({ text: \"Error\" }));\n }\n });\n }\n\n\n\n const rowTemplate = new ColumnListItem({\n cells: templateCells\n });\n\n table.bindItems({\n path: actualPath,\n model: actualModelName,\n template: rowTemplate,\n templateShareable: false\n });\n\n return table;\n }\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -16,8 +16,10 @@ import Control from "sap/ui/core/Control";
|
|
|
16
16
|
import { IPropertyMetadata, ISchema, ILayoutElement } from "../interfaces/ISchema";
|
|
17
17
|
import { ILayoutManager } from "../interfaces/ILayoutManager";
|
|
18
18
|
import { Engine } from "../core/Engine";
|
|
19
|
+
import GeneratorHost from "../controls/host/GeneratorHost";
|
|
19
20
|
import { SchemaNormalizer } from "../core/SchemaNormalizer";
|
|
20
21
|
import { Logger } from "../utils/Logger";
|
|
22
|
+
import { WIDGET_TYPE, SCHEMA_TYPE } from "../constants/MetaUIConstants";
|
|
21
23
|
|
|
22
24
|
/**
|
|
23
25
|
* Layout Manager responsible for generating a responsive SAP Fiori Table.
|
|
@@ -41,10 +43,12 @@ export class TableLayout implements ILayoutManager {
|
|
|
41
43
|
*/
|
|
42
44
|
public render(schema: ISchema, modelName: string, engine: Engine, onSubmit?: () => void, bindingPath: string = "/"): Control {
|
|
43
45
|
let itemsSchema = schema.items;
|
|
44
|
-
if (itemsSchema && !itemsSchema.properties && itemsSchema.ui?.widget ===
|
|
46
|
+
if (itemsSchema && !itemsSchema.properties && itemsSchema.ui?.widget === WIDGET_TYPE.REFERENCE && itemsSchema.$ref) {
|
|
45
47
|
Logger.debug(`[MetaUI] TableLayout detecting reference widget for ${bindingPath}. Resolving ${itemsSchema.$ref}`, "", "TableLayout");
|
|
46
|
-
|
|
47
|
-
|
|
48
|
+
|
|
49
|
+
const host = engine.host as unknown as GeneratorHost;
|
|
50
|
+
if (host && typeof host.getSchemaDefinition === "function") {
|
|
51
|
+
const resolved = host.getSchemaDefinition(itemsSchema.$ref);
|
|
48
52
|
Logger.debug(`[MetaUI] Resolved schema for ${itemsSchema.$ref}: ${!!resolved} ${resolved ? Object.keys(resolved) : ""}`, "", "TableLayout");
|
|
49
53
|
if (resolved && resolved.properties) {
|
|
50
54
|
itemsSchema = resolved;
|
|
@@ -52,15 +56,35 @@ export class TableLayout implements ILayoutManager {
|
|
|
52
56
|
Logger.error(`[MetaUI] TableLayout resolved schema but it has no properties!`, "", "TableLayout");
|
|
53
57
|
}
|
|
54
58
|
} else {
|
|
55
|
-
Logger.error(`[MetaUI] TableLayout cannot resolve ${itemsSchema.$ref} because engine.host.getSchemaDefinition is missing! host: ${
|
|
59
|
+
Logger.error(`[MetaUI] TableLayout cannot resolve ${itemsSchema.$ref} because engine.host.getSchemaDefinition is missing! host: ${host?.getMetadata().getName()}`, "", "TableLayout");
|
|
56
60
|
}
|
|
57
61
|
}
|
|
58
62
|
|
|
59
|
-
|
|
63
|
+
const isPrimitive = itemsSchema && !itemsSchema.properties && ["string", "number", "boolean"].includes(itemsSchema.type as string);
|
|
64
|
+
if (schema.type !== SCHEMA_TYPE.ARRAY || !itemsSchema || (!itemsSchema.properties && !isPrimitive)) {
|
|
60
65
|
Logger.error(`[MetaUI] TableLayout fatal error! schema.type: ${schema.type}, itemsSchema: ${!!itemsSchema}, properties: ${itemsSchema ? !!itemsSchema.properties : false}`, "", "TableLayout");
|
|
61
|
-
throw new Error("[MetaUI] TableLayout requires an array schema with items.properties.");
|
|
66
|
+
throw new Error("[MetaUI] TableLayout requires an array schema with items.properties or primitive items.");
|
|
62
67
|
}
|
|
63
68
|
|
|
69
|
+
const createSkeleton = (meta: ISchema | IPropertyMetadata): any => {
|
|
70
|
+
if (meta.type === "object" && meta.properties) {
|
|
71
|
+
const obj: any = {};
|
|
72
|
+
for (const key of Object.keys(meta.properties)) {
|
|
73
|
+
obj[key] = createSkeleton(meta.properties[key] as ISchema | IPropertyMetadata);
|
|
74
|
+
}
|
|
75
|
+
return obj;
|
|
76
|
+
} else if (meta.type === "array") {
|
|
77
|
+
return [];
|
|
78
|
+
} else if (meta.type === "string") {
|
|
79
|
+
return (meta as any).default !== undefined ? (meta as any).default : ((meta as any).enum ? (meta as any).enum[0] : "");
|
|
80
|
+
} else if (meta.type === "number") {
|
|
81
|
+
return (meta as any).default !== undefined ? (meta as any).default : 0;
|
|
82
|
+
} else if (meta.type === "boolean") {
|
|
83
|
+
return (meta as any).default !== undefined ? (meta as any).default : false;
|
|
84
|
+
}
|
|
85
|
+
return "";
|
|
86
|
+
};
|
|
87
|
+
|
|
64
88
|
const tableTitle = schema.title || "Table";
|
|
65
89
|
const actualModelName = modelName;
|
|
66
90
|
const actualPath = bindingPath;
|
|
@@ -75,15 +99,15 @@ export class TableLayout implements ILayoutManager {
|
|
|
75
99
|
text: "Add Row",
|
|
76
100
|
icon: "sap-icon://add",
|
|
77
101
|
press: (oEvent: sap.ui.base.Event) => {
|
|
78
|
-
const btn = oEvent.getSource();
|
|
79
|
-
const tbl = btn.getParent()
|
|
102
|
+
const btn = oEvent.getSource() as Button;
|
|
103
|
+
const tbl = btn.getParent()?.getParent() as Table;
|
|
80
104
|
const model = tbl.getModel(actualModelName) as JSONModel;
|
|
81
105
|
const info = tbl.getBindingInfo("items");
|
|
82
106
|
if (!info || !info.path) return;
|
|
83
107
|
|
|
84
108
|
const rawData = model.getProperty(info.path);
|
|
85
109
|
const data = Array.isArray(rawData) ? rawData : [];
|
|
86
|
-
const newData = [...data,
|
|
110
|
+
const newData = [...data, createSkeleton(itemsSchema)];
|
|
87
111
|
model.setProperty(info.path, newData);
|
|
88
112
|
|
|
89
113
|
// CRITICAL: Notify the engine so it extracts payload and triggers liveUpdate
|
|
@@ -98,8 +122,9 @@ export class TableLayout implements ILayoutManager {
|
|
|
98
122
|
fixedLayout: false,
|
|
99
123
|
mode: !engine.isEditable ? "None" : "Delete",
|
|
100
124
|
delete: (oEvent: sap.ui.base.Event) => {
|
|
101
|
-
const item = oEvent.getParameter("listItem");
|
|
102
|
-
const path = item.getBindingContext(actualModelName)
|
|
125
|
+
const item = oEvent.getParameter("listItem") as ColumnListItem;
|
|
126
|
+
const path = item.getBindingContext(actualModelName)?.getPath();
|
|
127
|
+
if (!path) return;
|
|
103
128
|
const model = item.getModel(actualModelName) as JSONModel;
|
|
104
129
|
|
|
105
130
|
const splitPaths = path.split("/");
|
|
@@ -117,6 +142,11 @@ export class TableLayout implements ILayoutManager {
|
|
|
117
142
|
if (engine.onChange) {
|
|
118
143
|
engine.onChange(true, actualPath.replace(/^\//, ""));
|
|
119
144
|
}
|
|
145
|
+
|
|
146
|
+
// CRITICAL: Clear ghost errors that shifted due to array mutation
|
|
147
|
+
if (typeof (engine as any).onArrayMutated === "function") {
|
|
148
|
+
(engine as any).onArrayMutated(arrayPath);
|
|
149
|
+
}
|
|
120
150
|
}
|
|
121
151
|
});
|
|
122
152
|
|
|
@@ -124,7 +154,13 @@ export class TableLayout implements ILayoutManager {
|
|
|
124
154
|
const props = itemsSchema.properties;
|
|
125
155
|
const layoutElements = schema.uiLayout;
|
|
126
156
|
|
|
127
|
-
if (
|
|
157
|
+
if (isPrimitive) {
|
|
158
|
+
table.addColumn(new Column({
|
|
159
|
+
header: new Text({ text: "Value" })
|
|
160
|
+
}));
|
|
161
|
+
const control = engine.generateField(itemsSchema as IPropertyMetadata, "", actualModelName || "meta", true);
|
|
162
|
+
templateCells.push(control);
|
|
163
|
+
} else if (layoutElements && Array.isArray(layoutElements)) {
|
|
128
164
|
// Only render columns defined in uiLayout
|
|
129
165
|
layoutElements.forEach((element: ILayoutElement) => {
|
|
130
166
|
if (element.type === "Control" && element.scope) {
|