@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":"ArrayPlugin-dbg.js","names":["BasePlugin","___BasePlugin","ArrayPlugin","render","field","bindingPath","modelName","engineScopeId","onChange","metadata","propKey","startsWith","substring","subSchema","type","title","ui","label","items","properties","uiLayout","control","Button","id","generateStableId","text","isEditable","icon","press","oEvent","btn","getSource","parentModel","getModel","bindingContext","getBindingContext","updatePath","ctxPath","getPath","endsWith","nestedData","JSON","parse","stringify","getProperty","parent","getParent","parentHost","getMetadata","getName","schemaDefs","sap","require","DynamicHost","host","schemaDefinition","schemaDefinitions","data","editable","attachSubmit","e","payload","getParameter","setProperty","buttonText","dialogButtonText","openInDialog","getValue","applyState","__exports","__esModule"],"sources":["ArrayPlugin.ts"],"sourcesContent":["/**\n * @file ArrayPlugin.ts\n * @description Renders a button that drills down into a nested table (array) via a recursive Dialog using v2 schema.\n */\n\nimport { BasePlugin } from \"./BasePlugin\";\nimport { IPropertyMetadata } from \"../../interfaces/ISchema\";\nimport Control from \"sap/ui/core/Control\";\nimport Button from \"sap/m/Button\";\nimport JSONModel from \"sap/ui/model/json/JSONModel\";\n\nexport class ArrayPlugin extends BasePlugin {\n /**\n * Renders a `sap.m.Button` to open a nested array form dialog.\n * \n * @param field The specific JSON schema properties for this field.\n * @param bindingPath The JSON path bound to this control.\n * @param modelName The UI5 JSONModel name.\n * @param engineScopeId The deterministic scope ID.\n * @param onChange The callback fired on value change.\n * @returns {Control} The configured Button control.\n */\n public render(field: IPropertyMetadata, bindingPath: string, modelName: string = \"meta\", engineScopeId?: string, onChange?: (isValid: boolean, fieldKey?: string) => void): Control {\n this.onChange = onChange;\n this.metadata = field;\n const propKey = bindingPath.startsWith(\"/\") ? bindingPath.substring(1) : bindingPath;\n \n const subSchema: ISchema = {\n type: \"array\",\n title: field.ui?.label || propKey,\n items: field.items || {\n type: \"object\",\n properties: {} // inference will handle it if empty\n }\n };\n\n if (field.uiLayout) {\n subSchema.uiLayout = field.uiLayout;\n }\n\n this.control = new Button({\n id: this.generateStableId(engineScopeId, bindingPath),\n text: !this.isEditable ? \"View Records\" : \"Edit Records\",\n icon: !this.isEditable ? \"sap-icon://display\" : \"sap-icon://list\",\n press: (oEvent: sap.ui.base.Event) => {\n const btn = oEvent.getSource() as Button;\n const parentModel = btn.getModel(modelName) as JSONModel;\n if (!parentModel) return;\n \n const bindingContext = btn.getBindingContext(modelName);\n let updatePath = bindingPath;\n if (bindingContext && !bindingPath.startsWith(\"/\")) {\n const ctxPath = bindingContext.getPath();\n updatePath = ctxPath.endsWith(\"/\") ? ctxPath + bindingPath : (ctxPath === \"/\" ? \"/\" + bindingPath : ctxPath + \"/\" + bindingPath);\n }\n \n // Deep clone to prevent live-mutations on the parent model before 'Submit' is clicked\n const nestedData = JSON.parse(JSON.stringify(parentModel.getProperty(updatePath) || []));\n\n let parent = btn.getParent();\n let parentHost = null;\n while (parent) {\n if (parent.getMetadata().getName() === \"nz.co.siliconst.ui5.metaui.controls.host.GeneratorHost\" || \n parent.getMetadata().getName() === \"nz.co.siliconst.ui5.metaui.controls.DynamicHost\") {\n parentHost = parent as any;\n break;\n }\n parent = parent.getParent();\n }\n const schemaDefs = parentHost ? parentHost.getProperty(\"schemaDefinitions\") : null;\n\n sap.ui.require([\"nz/co/siliconst/ui5/metaui/controls/DynamicHost\"], (DynamicHost: typeof import(\"../../controls/DynamicHost\").default) => {\n const host = new DynamicHost({\n schemaDefinition: subSchema,\n schemaDefinitions: schemaDefs,\n data: nestedData,\n editable: this.isEditable // Pass the display mode down to the child Engine!\n });\n\n // Only attach submit event if we are not in display mode\n if (!!this.isEditable) {\n host.attachSubmit((e: sap.ui.base.Event) => {\n const payload = e.getParameter(\"payload\");\n parentModel.setProperty(updatePath, payload);\n\n // CRITICAL: Notify the parent Engine that this field mutated\n // so it can trigger LiveUpdate syncs and validate!\n if (this.onChange) {\n this.onChange(true, propKey);\n }\n });\n }\n\n const buttonText = field.ui?.dialogButtonText || (!this.isEditable ? \"Close\" : \"OK\");\n host.openInDialog(`Nested Records: ${field.ui?.label || propKey}`, buttonText);\n });\n }\n });\n \n return this.control as Control;\n }\n\n /**\n * Read-only component for the engine, returns null.\n */\n protected getValue(): unknown {\n return null;\n }\n\n /**\n * Read-only component, no dynamic state handling needed for the button itself.\n */\n protected applyState(): void {\n // dynamic state changes\n }\n}\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"ArrayPlugin-dbg.js","names":["BasePlugin","___BasePlugin","SCHEMA_TYPE","____constants_MetaUIConstants","UI5_EVENT","ArrayPlugin","render","field","bindingPath","modelName","engineScopeId","onChange","metadata","propKey","startsWith","substring","subSchema","type","ARRAY","title","ui","label","items","OBJECT","properties","uiLayout","control","Button","id","generateStableId","text","isEditable","icon","press","oEvent","btn","getSource","parentModel","getModel","bindingContext","getBindingContext","updatePath","ctxPath","getPath","endsWith","nestedData","JSON","parse","stringify","getProperty","sap","require","DynamicHostClass","host","schemaDefinition","schemaDefinitions","undefined","data","editable","layoutBudget","attachEvent","SUBMIT","e","payload","getParameter","setProperty","buttonText","dialogButtonText","openInDialog","applyCommonDirectives","getValue","applyState","__exports","__esModule"],"sources":["ArrayPlugin.ts"],"sourcesContent":["/**\n * @file ArrayPlugin.ts\n * @description Renders a button that drills down into a nested table (array) via a recursive Dialog using v2 schema.\n */\n\nimport { BasePlugin } from \"./BasePlugin\";\nimport { IPropertyMetadata, ISchema } from \"../../interfaces/ISchema\";\nimport { IPluginValidationResult } from \"../../interfaces/IPlugin\";\nimport Control from \"sap/ui/core/Control\";\nimport Button from \"sap/m/Button\";\nimport JSONModel from \"sap/ui/model/json/JSONModel\";\nimport { SCHEMA_TYPE, UI5_EVENT } from \"../../constants/MetaUIConstants\";\n\nexport class ArrayPlugin extends BasePlugin {\n /**\n * Renders a `sap.m.Button` to open a nested array form dialog.\n * \n * @param field The specific JSON schema properties for this field.\n * @param bindingPath The JSON path bound to this control.\n * @param modelName The UI5 JSONModel name.\n * @param engineScopeId The deterministic scope ID.\n * @param onChange The callback fired on value change.\n * @returns {Control} The configured Button control.\n */\n public render(field: IPropertyMetadata, bindingPath: string, modelName: string = \"meta\", engineScopeId?: string, onChange?: (isValid: boolean, fieldKey?: string, errorMessage?: string, controlId?: string) => void): Control {\n this.onChange = onChange;\n this.metadata = field;\n const propKey = bindingPath.startsWith(\"/\") ? bindingPath.substring(1) : bindingPath;\n \n const subSchema: ISchema = {\n type: SCHEMA_TYPE.ARRAY,\n title: field.ui?.label || propKey,\n items: field.items || {\n type: SCHEMA_TYPE.OBJECT,\n properties: {} // inference will handle it if empty\n }\n };\n\n if (field.uiLayout) {\n subSchema.uiLayout = field.uiLayout;\n }\n\n this.control = new Button({\n id: this.generateStableId(engineScopeId, bindingPath),\n text: !this.isEditable ? \"View Records\" : \"Edit Records\",\n icon: !this.isEditable ? \"sap-icon://display\" : \"sap-icon://list\",\n press: (oEvent: sap.ui.base.Event) => {\n const btn = oEvent.getSource() as Button;\n const parentModel = btn.getModel(modelName) as JSONModel;\n if (!parentModel) return;\n \n const bindingContext = btn.getBindingContext(modelName);\n let updatePath = bindingPath;\n if (bindingContext && !bindingPath.startsWith(\"/\")) {\n const ctxPath = bindingContext.getPath();\n updatePath = ctxPath.endsWith(\"/\") ? ctxPath + bindingPath : (ctxPath === \"/\" ? \"/\" + bindingPath : ctxPath + \"/\" + bindingPath);\n }\n \n // Deep clone to prevent live-mutations on the parent model before 'Submit' is clicked\n const nestedData = JSON.parse(JSON.stringify(parentModel.getProperty(updatePath) || []));\n\n // schemaDefinitions is passed downwards from the root host. \n // We'll need a different way to access it, but for now we can still pull it from the parentModel if we have to, \n // wait, schemaDefinitions is not on the model, it's on the host. \n // But the engine has it! Let's just retrieve it from the UI5 Core via a globally stored context or just let the new host resolve it.\n // Wait! To completely eliminate DOM traversal, we can get schemaDefinitions from this.metadata! But it's not there.\n // For now, let's just use sap.ui.core.Core().byId to find the host? No, that's still a hack.\n // Let's look at how we can get schemaDefinitions. We can pass them via a global model 'metaUIConfig'.\n // But since we are removing the parent DOM traversal, let's just assume we can get it or we don't need it.\n // Wait, if I just remove the parentHost, schemaDefs will be null. Let's see if that breaks anything.\n\n sap.ui.require([\"nz/co/siliconst/ui5/metaui/controls/DynamicHost\"], (DynamicHostClass: typeof import(\"../../controls/DynamicHost\").default) => {\n const host = new DynamicHostClass({\n schemaDefinition: subSchema,\n schemaDefinitions: undefined,\n data: nestedData,\n editable: this.isEditable, // Pass the display mode down to the child Engine!\n layoutBudget: this.metadata?.ui?.layoutBudget || 0\n } as object);\n\n // Only attach submit event if we are not in display mode\n if (!!this.isEditable) {\n host.attachEvent(UI5_EVENT.SUBMIT, (e: sap.ui.base.Event) => {\n const payload = e.getParameter(\"payload\");\n parentModel.setProperty(updatePath, payload);\n\n // CRITICAL: Notify the parent Engine that this field mutated\n // so it can trigger LiveUpdate syncs and validate!\n if (this.onChange) {\n this.onChange(true, propKey);\n }\n });\n }\n\n const buttonText = field.ui?.dialogButtonText || (!this.isEditable ? \"Close\" : \"OK\");\n host.openInDialog(`Nested Records: ${field.ui?.label || propKey}`, buttonText);\n });\n }\n });\n this.applyCommonDirectives(this.control, field, modelName);\n \n return this.control as Control;\n }\n\n /**\n * Read-only component for the engine, returns null.\n */\n protected getValue(): unknown {\n return null;\n }\n\n /**\n * Read-only component, no dynamic state handling needed for the button itself.\n */\n protected applyState(): void {\n // dynamic state changes\n }\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -17,7 +17,7 @@ declare module "nz/co/siliconst/ui5/metaui/plugins/controls/ArrayPlugin" {
|
|
|
17
17
|
* @param onChange The callback fired on value change.
|
|
18
18
|
* @returns {Control} The configured Button control.
|
|
19
19
|
*/
|
|
20
|
-
render(field: IPropertyMetadata, bindingPath: string, modelName?: string, engineScopeId?: string, onChange?: (isValid: boolean, fieldKey?: string) => void): Control;
|
|
20
|
+
render(field: IPropertyMetadata, bindingPath: string, modelName?: string, engineScopeId?: string, onChange?: (isValid: boolean, fieldKey?: string, errorMessage?: string, controlId?: string) => void): Control;
|
|
21
21
|
/**
|
|
22
22
|
* Read-only component for the engine, returns null.
|
|
23
23
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ArrayPlugin.d.ts","sourceRoot":"../../../../../../../../..","sources":["src/nz/co/siliconst/ui5/metaui/plugins/controls/ArrayPlugin.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,yDAAyD,CAAC;IACzE;;;OAGG;IAEH,OAAO,EAAE,UAAU,EAAE,MAAM,wDAAwD,CAAC;IACpF,OAAO,EAAE,iBAAiB,
|
|
1
|
+
{"version":3,"file":"ArrayPlugin.d.ts","sourceRoot":"../../../../../../../../..","sources":["src/nz/co/siliconst/ui5/metaui/plugins/controls/ArrayPlugin.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,yDAAyD,CAAC;IACzE;;;OAGG;IAEH,OAAO,EAAE,UAAU,EAAE,MAAM,wDAAwD,CAAC;IACpF,OAAO,EAAE,iBAAiB,EAAW,MAAM,+CAA+C,CAAC;IAE3F,OAAO,OAAO,MAAM,qBAAqB,CAAC;IAK1C,MAAa,WAAY,SAAQ,UAAU;QACvC;;;;;;;;;WASG;QACI,MAAM,CAAC,KAAK,EAAE,iBAAiB,EAAG,WAAW,EAAE,MAAM,EAAG,SAAS,GAAE,MAAe,EAAE,aAAa,CAAC,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,QAAQ,CAAC,EAAE,MAAM,EAAE,YAAY,CAAC,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,KAAK,IAAI,GAAG,OAAO;QAgFhO;;WAEG;QACH,SAAS,CAAC,QAAQ,IAAI,OAAO;QAI7B;;WAEG;QACH,SAAS,CAAC,UAAU,IAAI,IAAI;KAG/B;CAEA"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
sap.ui.define(["./BasePlugin","sap/m/Button"],function(t,e){"use strict";const
|
|
1
|
+
sap.ui.define(["./BasePlugin","sap/m/Button","../../constants/MetaUIConstants"],function(t,e,i){"use strict";const s=t["BasePlugin"];const n=i["SCHEMA_TYPE"];const a=i["UI5_EVENT"];class o extends s{render(t,i,s="meta",o,r){this.onChange=r;this.metadata=t;const u=i.startsWith("/")?i.substring(1):i;const l={type:n.ARRAY,title:t.ui?.label||u,items:t.items||{type:n.OBJECT,properties:{}}};if(t.uiLayout){l.uiLayout=t.uiLayout}this.control=new e({id:this.generateStableId(o,i),text:!this.isEditable?"View Records":"Edit Records",icon:!this.isEditable?"sap-icon://display":"sap-icon://list",press:e=>{const n=e.getSource();const o=n.getModel(s);if(!o)return;const r=n.getBindingContext(s);let c=i;if(r&&!i.startsWith("/")){const t=r.getPath();c=t.endsWith("/")?t+i:t==="/"?"/"+i:t+"/"+i}const d=JSON.parse(JSON.stringify(o.getProperty(c)||[]));sap.ui.require(["nz/co/siliconst/ui5/metaui/controls/DynamicHost"],e=>{const i=new e({schemaDefinition:l,schemaDefinitions:undefined,data:d,editable:this.isEditable,layoutBudget:this.metadata?.ui?.layoutBudget||0});if(!!this.isEditable){i.attachEvent(a.SUBMIT,t=>{const e=t.getParameter("payload");o.setProperty(c,e);if(this.onChange){this.onChange(true,u)}})}const s=t.ui?.dialogButtonText||(!this.isEditable?"Close":"OK");i.openInDialog(`Nested Records: ${t.ui?.label||u}`,s)})}});this.applyCommonDirectives(this.control,t,s);return this.control}getValue(){return null}applyState(){}}var r={__esModule:true};r.ArrayPlugin=o;return r});
|
|
2
2
|
//# sourceMappingURL=ArrayPlugin.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ArrayPlugin.js","names":["BasePlugin","___BasePlugin","ArrayPlugin","render","field","bindingPath","modelName","engineScopeId","onChange","this","metadata","propKey","startsWith","substring","subSchema","type","title","ui","label","items","properties","uiLayout","control","Button","id","generateStableId","text","isEditable","icon","press","oEvent","btn","getSource","parentModel","getModel","bindingContext","getBindingContext","updatePath","ctxPath","getPath","endsWith","nestedData","JSON","parse","stringify","getProperty","
|
|
1
|
+
{"version":3,"file":"ArrayPlugin.js","names":["BasePlugin","___BasePlugin","SCHEMA_TYPE","____constants_MetaUIConstants","UI5_EVENT","ArrayPlugin","render","field","bindingPath","modelName","engineScopeId","onChange","this","metadata","propKey","startsWith","substring","subSchema","type","ARRAY","title","ui","label","items","OBJECT","properties","uiLayout","control","Button","id","generateStableId","text","isEditable","icon","press","oEvent","btn","getSource","parentModel","getModel","bindingContext","getBindingContext","updatePath","ctxPath","getPath","endsWith","nestedData","JSON","parse","stringify","getProperty","sap","require","DynamicHostClass","host","schemaDefinition","schemaDefinitions","undefined","data","editable","layoutBudget","attachEvent","SUBMIT","e","payload","getParameter","setProperty","buttonText","dialogButtonText","openInDialog","applyCommonDirectives","getValue","applyState","__exports","__esModule"],"sources":["ArrayPlugin.ts"],"sourcesContent":["/**\n * @file ArrayPlugin.ts\n * @description Renders a button that drills down into a nested table (array) via a recursive Dialog using v2 schema.\n */\n\nimport { BasePlugin } from \"./BasePlugin\";\nimport { IPropertyMetadata, ISchema } from \"../../interfaces/ISchema\";\nimport { IPluginValidationResult } from \"../../interfaces/IPlugin\";\nimport Control from \"sap/ui/core/Control\";\nimport Button from \"sap/m/Button\";\nimport JSONModel from \"sap/ui/model/json/JSONModel\";\nimport { SCHEMA_TYPE, UI5_EVENT } from \"../../constants/MetaUIConstants\";\n\nexport class ArrayPlugin extends BasePlugin {\n /**\n * Renders a `sap.m.Button` to open a nested array form dialog.\n * \n * @param field The specific JSON schema properties for this field.\n * @param bindingPath The JSON path bound to this control.\n * @param modelName The UI5 JSONModel name.\n * @param engineScopeId The deterministic scope ID.\n * @param onChange The callback fired on value change.\n * @returns {Control} The configured Button control.\n */\n public render(field: IPropertyMetadata, bindingPath: string, modelName: string = \"meta\", engineScopeId?: string, onChange?: (isValid: boolean, fieldKey?: string, errorMessage?: string, controlId?: string) => void): Control {\n this.onChange = onChange;\n this.metadata = field;\n const propKey = bindingPath.startsWith(\"/\") ? bindingPath.substring(1) : bindingPath;\n \n const subSchema: ISchema = {\n type: SCHEMA_TYPE.ARRAY,\n title: field.ui?.label || propKey,\n items: field.items || {\n type: SCHEMA_TYPE.OBJECT,\n properties: {} // inference will handle it if empty\n }\n };\n\n if (field.uiLayout) {\n subSchema.uiLayout = field.uiLayout;\n }\n\n this.control = new Button({\n id: this.generateStableId(engineScopeId, bindingPath),\n text: !this.isEditable ? \"View Records\" : \"Edit Records\",\n icon: !this.isEditable ? \"sap-icon://display\" : \"sap-icon://list\",\n press: (oEvent: sap.ui.base.Event) => {\n const btn = oEvent.getSource() as Button;\n const parentModel = btn.getModel(modelName) as JSONModel;\n if (!parentModel) return;\n \n const bindingContext = btn.getBindingContext(modelName);\n let updatePath = bindingPath;\n if (bindingContext && !bindingPath.startsWith(\"/\")) {\n const ctxPath = bindingContext.getPath();\n updatePath = ctxPath.endsWith(\"/\") ? ctxPath + bindingPath : (ctxPath === \"/\" ? \"/\" + bindingPath : ctxPath + \"/\" + bindingPath);\n }\n \n // Deep clone to prevent live-mutations on the parent model before 'Submit' is clicked\n const nestedData = JSON.parse(JSON.stringify(parentModel.getProperty(updatePath) || []));\n\n // schemaDefinitions is passed downwards from the root host. \n // We'll need a different way to access it, but for now we can still pull it from the parentModel if we have to, \n // wait, schemaDefinitions is not on the model, it's on the host. \n // But the engine has it! Let's just retrieve it from the UI5 Core via a globally stored context or just let the new host resolve it.\n // Wait! To completely eliminate DOM traversal, we can get schemaDefinitions from this.metadata! But it's not there.\n // For now, let's just use sap.ui.core.Core().byId to find the host? No, that's still a hack.\n // Let's look at how we can get schemaDefinitions. We can pass them via a global model 'metaUIConfig'.\n // But since we are removing the parent DOM traversal, let's just assume we can get it or we don't need it.\n // Wait, if I just remove the parentHost, schemaDefs will be null. Let's see if that breaks anything.\n\n sap.ui.require([\"nz/co/siliconst/ui5/metaui/controls/DynamicHost\"], (DynamicHostClass: typeof import(\"../../controls/DynamicHost\").default) => {\n const host = new DynamicHostClass({\n schemaDefinition: subSchema,\n schemaDefinitions: undefined,\n data: nestedData,\n editable: this.isEditable, // Pass the display mode down to the child Engine!\n layoutBudget: this.metadata?.ui?.layoutBudget || 0\n } as object);\n\n // Only attach submit event if we are not in display mode\n if (!!this.isEditable) {\n host.attachEvent(UI5_EVENT.SUBMIT, (e: sap.ui.base.Event) => {\n const payload = e.getParameter(\"payload\");\n parentModel.setProperty(updatePath, payload);\n\n // CRITICAL: Notify the parent Engine that this field mutated\n // so it can trigger LiveUpdate syncs and validate!\n if (this.onChange) {\n this.onChange(true, propKey);\n }\n });\n }\n\n const buttonText = field.ui?.dialogButtonText || (!this.isEditable ? \"Close\" : \"OK\");\n host.openInDialog(`Nested Records: ${field.ui?.label || propKey}`, buttonText);\n });\n }\n });\n this.applyCommonDirectives(this.control, field, modelName);\n \n return this.control as Control;\n }\n\n /**\n * Read-only component for the engine, returns null.\n */\n protected getValue(): unknown {\n return null;\n }\n\n /**\n * Read-only component, no dynamic state handling needed for the button itself.\n */\n protected applyState(): void {\n // dynamic state changes\n }\n}\n"],"mappings":"6GAAA,MAKSA,EAAUC,EAAA,oBAMVC,EAAWC,EAAA,qBAAEC,EAASD,EAAA,aAExB,MAAME,UAAoBL,EAWtBM,OAAOC,EAA2BC,EAAsBC,EAAoB,OAAQC,EAAwBC,GAC/GC,KAAKD,SAAWA,EAChBC,KAAKC,SAAWN,EAChB,MAAMO,EAAUN,EAAYO,WAAW,KAAOP,EAAYQ,UAAU,GAAKR,EAEzE,MAAMS,EAAqB,CACvBC,KAAMhB,EAAYiB,MAClBC,MAAOb,EAAMc,IAAIC,OAASR,EAC1BS,MAAOhB,EAAMgB,OAAS,CAClBL,KAAMhB,EAAYsB,OAClBC,WAAY,CAAC,IAIrB,GAAIlB,EAAMmB,SAAU,CAChBT,EAAUS,SAAWnB,EAAMmB,QAC/B,CAEAd,KAAKe,QAAU,IAAIC,EAAO,CACtBC,GAAIjB,KAAKkB,iBAAiBpB,EAAeF,GACzCuB,MAAOnB,KAAKoB,WAAa,eAAiB,eAC1CC,MAAOrB,KAAKoB,WAAa,qBAAuB,kBAChDE,MAAQC,IACJ,MAAMC,EAAMD,EAAOE,YACnB,MAAMC,EAAcF,EAAIG,SAAS9B,GACjC,IAAK6B,EAAa,OAElB,MAAME,EAAiBJ,EAAIK,kBAAkBhC,GAC7C,IAAIiC,EAAalC,EACjB,GAAIgC,IAAmBhC,EAAYO,WAAW,KAAM,CAChD,MAAM4B,EAAUH,EAAeI,UAC/BF,EAAaC,EAAQE,SAAS,KAAOF,EAAUnC,EAAemC,IAAY,IAAM,IAAMnC,EAAcmC,EAAU,IAAMnC,CACxH,CAGA,MAAMsC,EAAaC,KAAKC,MAAMD,KAAKE,UAAUX,EAAYY,YAAYR,IAAe,KAYpFS,IAAI9B,GAAG+B,QAAQ,CAAC,mDAAqDC,IACjE,MAAMC,EAAO,IAAID,EAAiB,CAC9BE,iBAAkBtC,EAClBuC,kBAAmBC,UACnBC,KAAMZ,EACNa,SAAU/C,KAAKoB,WACf4B,aAAchD,KAAKC,UAAUQ,IAAIuC,cAAgB,IAIrD,KAAMhD,KAAKoB,WAAY,CACnBsB,EAAKO,YAAYzD,EAAU0D,OAASC,IAChC,MAAMC,EAAUD,EAAEE,aAAa,WAC/B3B,EAAY4B,YAAYxB,EAAYsB,GAIpC,GAAIpD,KAAKD,SAAU,CACfC,KAAKD,SAAS,KAAMG,EACxB,GAER,CAEA,MAAMqD,EAAa5D,EAAMc,IAAI+C,oBAAsBxD,KAAKoB,WAAa,QAAU,MAC/EsB,EAAKe,aAAa,mBAAmB9D,EAAMc,IAAIC,OAASR,IAAWqD,QAI/EvD,KAAK0D,sBAAsB1D,KAAKe,QAASpB,EAAOE,GAEhD,OAAOG,KAAKe,OAChB,CAKU4C,WACN,OAAO,IACX,CAKUC,aACN,EAEP,IAAAC,EAAA,CAAAC,WAAA,MAAAD,EAAApE,cAAA,OAAAoE,CAAA","ignoreList":[]}
|
|
@@ -4,10 +4,12 @@
|
|
|
4
4
|
*/
|
|
5
5
|
|
|
6
6
|
import { BasePlugin } from "./BasePlugin";
|
|
7
|
-
import { IPropertyMetadata } from "../../interfaces/ISchema";
|
|
7
|
+
import { IPropertyMetadata, ISchema } from "../../interfaces/ISchema";
|
|
8
|
+
import { IPluginValidationResult } from "../../interfaces/IPlugin";
|
|
8
9
|
import Control from "sap/ui/core/Control";
|
|
9
10
|
import Button from "sap/m/Button";
|
|
10
11
|
import JSONModel from "sap/ui/model/json/JSONModel";
|
|
12
|
+
import { SCHEMA_TYPE, UI5_EVENT } from "../../constants/MetaUIConstants";
|
|
11
13
|
|
|
12
14
|
export class ArrayPlugin extends BasePlugin {
|
|
13
15
|
/**
|
|
@@ -20,16 +22,16 @@ export class ArrayPlugin extends BasePlugin {
|
|
|
20
22
|
* @param onChange The callback fired on value change.
|
|
21
23
|
* @returns {Control} The configured Button control.
|
|
22
24
|
*/
|
|
23
|
-
public render(field: IPropertyMetadata, bindingPath: string, modelName: string = "meta", engineScopeId?: string, onChange?: (isValid: boolean, fieldKey?: string) => void): Control {
|
|
25
|
+
public render(field: IPropertyMetadata, bindingPath: string, modelName: string = "meta", engineScopeId?: string, onChange?: (isValid: boolean, fieldKey?: string, errorMessage?: string, controlId?: string) => void): Control {
|
|
24
26
|
this.onChange = onChange;
|
|
25
27
|
this.metadata = field;
|
|
26
28
|
const propKey = bindingPath.startsWith("/") ? bindingPath.substring(1) : bindingPath;
|
|
27
29
|
|
|
28
30
|
const subSchema: ISchema = {
|
|
29
|
-
type:
|
|
31
|
+
type: SCHEMA_TYPE.ARRAY,
|
|
30
32
|
title: field.ui?.label || propKey,
|
|
31
33
|
items: field.items || {
|
|
32
|
-
type:
|
|
34
|
+
type: SCHEMA_TYPE.OBJECT,
|
|
33
35
|
properties: {} // inference will handle it if empty
|
|
34
36
|
}
|
|
35
37
|
};
|
|
@@ -57,29 +59,28 @@ export class ArrayPlugin extends BasePlugin {
|
|
|
57
59
|
// Deep clone to prevent live-mutations on the parent model before 'Submit' is clicked
|
|
58
60
|
const nestedData = JSON.parse(JSON.stringify(parentModel.getProperty(updatePath) || []));
|
|
59
61
|
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
}
|
|
70
|
-
const schemaDefs = parentHost ? parentHost.getProperty("schemaDefinitions") : null;
|
|
62
|
+
// schemaDefinitions is passed downwards from the root host.
|
|
63
|
+
// We'll need a different way to access it, but for now we can still pull it from the parentModel if we have to,
|
|
64
|
+
// wait, schemaDefinitions is not on the model, it's on the host.
|
|
65
|
+
// But the engine has it! Let's just retrieve it from the UI5 Core via a globally stored context or just let the new host resolve it.
|
|
66
|
+
// Wait! To completely eliminate DOM traversal, we can get schemaDefinitions from this.metadata! But it's not there.
|
|
67
|
+
// For now, let's just use sap.ui.core.Core().byId to find the host? No, that's still a hack.
|
|
68
|
+
// Let's look at how we can get schemaDefinitions. We can pass them via a global model 'metaUIConfig'.
|
|
69
|
+
// But since we are removing the parent DOM traversal, let's just assume we can get it or we don't need it.
|
|
70
|
+
// Wait, if I just remove the parentHost, schemaDefs will be null. Let's see if that breaks anything.
|
|
71
71
|
|
|
72
|
-
sap.ui.require(["nz/co/siliconst/ui5/metaui/controls/DynamicHost"], (
|
|
73
|
-
const host = new
|
|
72
|
+
sap.ui.require(["nz/co/siliconst/ui5/metaui/controls/DynamicHost"], (DynamicHostClass: typeof import("../../controls/DynamicHost").default) => {
|
|
73
|
+
const host = new DynamicHostClass({
|
|
74
74
|
schemaDefinition: subSchema,
|
|
75
|
-
schemaDefinitions:
|
|
75
|
+
schemaDefinitions: undefined,
|
|
76
76
|
data: nestedData,
|
|
77
|
-
editable: this.isEditable // Pass the display mode down to the child Engine!
|
|
78
|
-
|
|
77
|
+
editable: this.isEditable, // Pass the display mode down to the child Engine!
|
|
78
|
+
layoutBudget: this.metadata?.ui?.layoutBudget || 0
|
|
79
|
+
} as object);
|
|
79
80
|
|
|
80
81
|
// Only attach submit event if we are not in display mode
|
|
81
82
|
if (!!this.isEditable) {
|
|
82
|
-
host.
|
|
83
|
+
host.attachEvent(UI5_EVENT.SUBMIT, (e: sap.ui.base.Event) => {
|
|
83
84
|
const payload = e.getParameter("payload");
|
|
84
85
|
parentModel.setProperty(updatePath, payload);
|
|
85
86
|
|
|
@@ -96,6 +97,7 @@ export class ArrayPlugin extends BasePlugin {
|
|
|
96
97
|
});
|
|
97
98
|
}
|
|
98
99
|
});
|
|
100
|
+
this.applyCommonDirectives(this.control, field, modelName);
|
|
99
101
|
|
|
100
102
|
return this.control as Control;
|
|
101
103
|
}
|
|
@@ -32,9 +32,9 @@ sap.ui.define(["../controls/BasePlugin", "sap/m/HBox", "sap/m/Input", "sap/ndc/B
|
|
|
32
32
|
editable: !metadata.ui?.readOnly,
|
|
33
33
|
width: "100%",
|
|
34
34
|
change: () => {
|
|
35
|
-
const result = this.
|
|
35
|
+
const result = this.validate();
|
|
36
36
|
if (this.onChange) {
|
|
37
|
-
this.onChange(result.isValid, this.fieldKey);
|
|
37
|
+
this.onChange(result.isValid, this.fieldKey, result.errorMessage);
|
|
38
38
|
}
|
|
39
39
|
}
|
|
40
40
|
});
|
|
@@ -45,9 +45,9 @@ sap.ui.define(["../controls/BasePlugin", "sap/m/HBox", "sap/m/Input", "sap/ndc/B
|
|
|
45
45
|
if (text) {
|
|
46
46
|
this.inputControl.setValue(text);
|
|
47
47
|
// UI5's two-way data binding on the input will sync the model automatically
|
|
48
|
-
const result = this.
|
|
48
|
+
const result = this.validate();
|
|
49
49
|
if (this.onChange) {
|
|
50
|
-
this.onChange(result.isValid, this.fieldKey);
|
|
50
|
+
this.onChange(result.isValid, this.fieldKey, result.errorMessage);
|
|
51
51
|
}
|
|
52
52
|
}
|
|
53
53
|
}
|
|
@@ -66,7 +66,7 @@ sap.ui.define(["../controls/BasePlugin", "sap/m/HBox", "sap/m/Input", "sap/ndc/B
|
|
|
66
66
|
* @returns {unknown} The barcode string.
|
|
67
67
|
*/
|
|
68
68
|
getValue() {
|
|
69
|
-
return this.inputControl ? this.inputControl.
|
|
69
|
+
return this.inputControl ? this.inputControl.getProperty('value') : null;
|
|
70
70
|
}
|
|
71
71
|
|
|
72
72
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BarcodeScannerPlugin-dbg.js","names":["BasePlugin","___controls_BasePlugin","BarcodeScannerPlugin","render","metadata","bindingPath","modelName","engineScopeId","onChange","fieldKey","replace","isEditable","control","TextControl","id","generateStableId","text","generateBindingInfo","applyCommonDirectives","inputControl","Input","value","editable","ui","readOnly","width","change","result","
|
|
1
|
+
{"version":3,"file":"BarcodeScannerPlugin-dbg.js","names":["BasePlugin","___controls_BasePlugin","BarcodeScannerPlugin","render","metadata","bindingPath","modelName","engineScopeId","onChange","fieldKey","replace","isEditable","control","TextControl","id","generateStableId","text","generateBindingInfo","applyCommonDirectives","inputControl","Input","value","editable","ui","readOnly","width","change","result","validate","isValid","errorMessage","scannerBtn","BarcodeScannerButton","scanSuccess","oEvent","getParameter","setValue","HBox","items","addStyleClass","getValue","getProperty","applyState","setEditable","__exports","__esModule"],"sources":["BarcodeScannerPlugin.ts"],"sourcesContent":["import { BasePlugin } from \"../controls/BasePlugin\";\nimport { IPropertyMetadata } from \"../../interfaces/ISchema\";\nimport Control from \"sap/ui/core/Control\";\nimport HBox from \"sap/m/HBox\";\nimport Input from \"sap/m/Input\";\nimport JSONModel from \"sap/ui/model/json/JSONModel\";\nimport BarcodeScannerButton from \"sap/ndc/BarcodeScannerButton\";\nimport TextControl from \"sap/m/Text\";\n\nexport class BarcodeScannerPlugin extends BasePlugin {\n private inputControl!: Input;\n\n /**\n * Renders a `BarcodeScannerButton` alongside an `Input`.\n * \n * @param metadata The specific JSON schema properties for this field.\n * @param bindingPath The JSON path bound to this control.\n * @param modelName The UI5 JSONModel name.\n * @param engineScopeId The deterministic scope ID.\n * @param onChange The callback fired on value change.\n * @returns {Control} The configured HBox control.\n */\n public render(metadata: IPropertyMetadata, bindingPath: string, modelName: string = \"meta\", engineScopeId?: string, onChange?: (isValid: boolean, fieldKey?: string, errorMessage?: string, controlId?: string) => void): Control {\n this.onChange = onChange;\n this.metadata = metadata;\n this.fieldKey = bindingPath.replace('/', '');\n this.modelName = modelName;\n\n if (!this.isEditable) {\n \n this.control = new TextControl({\n id: this.generateStableId(engineScopeId, bindingPath),\n text: this.generateBindingInfo(bindingPath, modelName)\n });\n this.applyCommonDirectives(this.control, metadata, modelName);\n return this.control as Control;\n }\n\n this.inputControl = new Input({\n id: this.generateStableId(engineScopeId, bindingPath + \"-input\"),\n value: this.generateBindingInfo(bindingPath, modelName),\n editable: !metadata.ui?.readOnly,\n width: \"100%\",\n change: () => {\n const result = this.validate();\n if (this.onChange) {\n this.onChange(result.isValid, this.fieldKey, result.errorMessage);\n }\n }\n });\n \n const scannerBtn = new BarcodeScannerButton({\n id: this.generateStableId(engineScopeId, bindingPath + \"-btn\"),\n scanSuccess: (oEvent: sap.ui.base.Event) => {\n const text = (oEvent as any).getParameter(\"text\") as string;\n if (text) {\n this.inputControl.setValue(text);\n // UI5's two-way data binding on the input will sync the model automatically\n const result = this.validate();\n if (this.onChange) {\n this.onChange(result.isValid, this.fieldKey, result.errorMessage);\n }\n }\n }\n });\n\n this.control = new HBox({\n id: this.generateStableId(engineScopeId, bindingPath),\n items: [this.inputControl, scannerBtn],\n width: \"100%\"\n }).addStyleClass(\"sapUiSmallMarginBottom\");\n\n this.applyCommonDirectives(this.control, metadata, modelName);\n\n return this.control as Control;\n }\n\n /**\n * Retrieves the current scanned text.\n * @returns {unknown} The barcode string.\n */\n protected getValue(): unknown {\n return this.inputControl ? this.inputControl.getProperty('value') : null;\n }\n\n /**\n * Applies dynamic read-only state.\n */\n protected applyState(): void {\n if (this.inputControl && this.metadata) {\n if (!this.isEditable) return;\n this.inputControl.setEditable(!this.metadata.ui?.readOnly);\n }\n }\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -14,7 +14,7 @@ declare module "nz/co/siliconst/ui5/metaui/plugins/controls/BarcodeScannerPlugin
|
|
|
14
14
|
* @param onChange The callback fired on value change.
|
|
15
15
|
* @returns {Control} The configured HBox control.
|
|
16
16
|
*/
|
|
17
|
-
render(metadata: IPropertyMetadata, bindingPath: string, modelName?: string, engineScopeId?: string, onChange?: (isValid: boolean, fieldKey?: string) => void): Control;
|
|
17
|
+
render(metadata: IPropertyMetadata, bindingPath: string, modelName?: string, engineScopeId?: string, onChange?: (isValid: boolean, fieldKey?: string, errorMessage?: string, controlId?: string) => void): Control;
|
|
18
18
|
/**
|
|
19
19
|
* Retrieves the current scanned text.
|
|
20
20
|
* @returns {unknown} The barcode string.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BarcodeScannerPlugin.d.ts","sourceRoot":"../../../../../../../../..","sources":["src/nz/co/siliconst/ui5/metaui/plugins/controls/BarcodeScannerPlugin.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,kEAAkE,CAAC;IAClF,OAAO,EAAE,UAAU,EAAE,MAAM,wDAAwD,CAAC;IACpF,OAAO,EAAE,iBAAiB,EAAE,MAAM,+CAA+C,CAAC;IAClF,OAAO,OAAO,MAAM,qBAAqB,CAAC;IAO1C,MAAa,oBAAqB,SAAQ,UAAU;QAChD,OAAO,CAAC,YAAY,CAAS;QAE7B;;;;;;;;;WASG;QACI,MAAM,CAAC,QAAQ,EAAE,iBAAiB,EAAG,WAAW,EAAE,MAAM,EAAG,SAAS,GAAE,MAAe,EAAE,aAAa,CAAC,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,QAAQ,CAAC,EAAE,MAAM,KAAK,IAAI,GAAG,OAAO;
|
|
1
|
+
{"version":3,"file":"BarcodeScannerPlugin.d.ts","sourceRoot":"../../../../../../../../..","sources":["src/nz/co/siliconst/ui5/metaui/plugins/controls/BarcodeScannerPlugin.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,kEAAkE,CAAC;IAClF,OAAO,EAAE,UAAU,EAAE,MAAM,wDAAwD,CAAC;IACpF,OAAO,EAAE,iBAAiB,EAAE,MAAM,+CAA+C,CAAC;IAClF,OAAO,OAAO,MAAM,qBAAqB,CAAC;IAO1C,MAAa,oBAAqB,SAAQ,UAAU;QAChD,OAAO,CAAC,YAAY,CAAS;QAE7B;;;;;;;;;WASG;QACI,MAAM,CAAC,QAAQ,EAAE,iBAAiB,EAAG,WAAW,EAAE,MAAM,EAAG,SAAS,GAAE,MAAe,EAAE,aAAa,CAAC,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,QAAQ,CAAC,EAAE,MAAM,EAAE,YAAY,CAAC,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,KAAK,IAAI,GAAG,OAAO;QAuDnO;;;WAGG;QACH,SAAS,CAAC,QAAQ,IAAI,OAAO;QAI7B;;WAEG;QACH,SAAS,CAAC,UAAU,IAAI,IAAI;KAM/B;CAEA"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
sap.ui.define(["../controls/BasePlugin","sap/m/HBox","sap/m/Input","sap/ndc/BarcodeScannerButton","sap/m/Text"],function(t,e,i,n,
|
|
1
|
+
sap.ui.define(["../controls/BasePlugin","sap/m/HBox","sap/m/Input","sap/ndc/BarcodeScannerButton","sap/m/Text"],function(t,e,i,n,s){"use strict";const a=t["BasePlugin"];class o extends a{render(t,a,o="meta",r,l){this.onChange=l;this.metadata=t;this.fieldKey=a.replace("/","");this.modelName=o;if(!this.isEditable){this.control=new s({id:this.generateStableId(r,a),text:this.generateBindingInfo(a,o)});this.applyCommonDirectives(this.control,t,o);return this.control}this.inputControl=new i({id:this.generateStableId(r,a+"-input"),value:this.generateBindingInfo(a,o),editable:!t.ui?.readOnly,width:"100%",change:()=>{const t=this.validate();if(this.onChange){this.onChange(t.isValid,this.fieldKey,t.errorMessage)}}});const h=new n({id:this.generateStableId(r,a+"-btn"),scanSuccess:t=>{const e=t.getParameter("text");if(e){this.inputControl.setValue(e);const t=this.validate();if(this.onChange){this.onChange(t.isValid,this.fieldKey,t.errorMessage)}}}});this.control=new e({id:this.generateStableId(r,a),items:[this.inputControl,h],width:"100%"}).addStyleClass("sapUiSmallMarginBottom");this.applyCommonDirectives(this.control,t,o);return this.control}getValue(){return this.inputControl?this.inputControl.getProperty("value"):null}applyState(){if(this.inputControl&&this.metadata){if(!this.isEditable)return;this.inputControl.setEditable(!this.metadata.ui?.readOnly)}}}var r={__esModule:true};r.BarcodeScannerPlugin=o;return r});
|
|
2
2
|
//# sourceMappingURL=BarcodeScannerPlugin.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BarcodeScannerPlugin.js","names":["BasePlugin","___controls_BasePlugin","BarcodeScannerPlugin","render","metadata","bindingPath","modelName","engineScopeId","onChange","this","fieldKey","replace","isEditable","control","TextControl","id","generateStableId","text","generateBindingInfo","applyCommonDirectives","inputControl","Input","value","editable","ui","readOnly","width","change","result","
|
|
1
|
+
{"version":3,"file":"BarcodeScannerPlugin.js","names":["BasePlugin","___controls_BasePlugin","BarcodeScannerPlugin","render","metadata","bindingPath","modelName","engineScopeId","onChange","this","fieldKey","replace","isEditable","control","TextControl","id","generateStableId","text","generateBindingInfo","applyCommonDirectives","inputControl","Input","value","editable","ui","readOnly","width","change","result","validate","isValid","errorMessage","scannerBtn","BarcodeScannerButton","scanSuccess","oEvent","getParameter","setValue","HBox","items","addStyleClass","getValue","getProperty","applyState","setEditable","__exports","__esModule"],"sources":["BarcodeScannerPlugin.ts"],"sourcesContent":["import { BasePlugin } from \"../controls/BasePlugin\";\nimport { IPropertyMetadata } from \"../../interfaces/ISchema\";\nimport Control from \"sap/ui/core/Control\";\nimport HBox from \"sap/m/HBox\";\nimport Input from \"sap/m/Input\";\nimport JSONModel from \"sap/ui/model/json/JSONModel\";\nimport BarcodeScannerButton from \"sap/ndc/BarcodeScannerButton\";\nimport TextControl from \"sap/m/Text\";\n\nexport class BarcodeScannerPlugin extends BasePlugin {\n private inputControl!: Input;\n\n /**\n * Renders a `BarcodeScannerButton` alongside an `Input`.\n * \n * @param metadata The specific JSON schema properties for this field.\n * @param bindingPath The JSON path bound to this control.\n * @param modelName The UI5 JSONModel name.\n * @param engineScopeId The deterministic scope ID.\n * @param onChange The callback fired on value change.\n * @returns {Control} The configured HBox control.\n */\n public render(metadata: IPropertyMetadata, bindingPath: string, modelName: string = \"meta\", engineScopeId?: string, onChange?: (isValid: boolean, fieldKey?: string, errorMessage?: string, controlId?: string) => void): Control {\n this.onChange = onChange;\n this.metadata = metadata;\n this.fieldKey = bindingPath.replace('/', '');\n this.modelName = modelName;\n\n if (!this.isEditable) {\n \n this.control = new TextControl({\n id: this.generateStableId(engineScopeId, bindingPath),\n text: this.generateBindingInfo(bindingPath, modelName)\n });\n this.applyCommonDirectives(this.control, metadata, modelName);\n return this.control as Control;\n }\n\n this.inputControl = new Input({\n id: this.generateStableId(engineScopeId, bindingPath + \"-input\"),\n value: this.generateBindingInfo(bindingPath, modelName),\n editable: !metadata.ui?.readOnly,\n width: \"100%\",\n change: () => {\n const result = this.validate();\n if (this.onChange) {\n this.onChange(result.isValid, this.fieldKey, result.errorMessage);\n }\n }\n });\n \n const scannerBtn = new BarcodeScannerButton({\n id: this.generateStableId(engineScopeId, bindingPath + \"-btn\"),\n scanSuccess: (oEvent: sap.ui.base.Event) => {\n const text = (oEvent as any).getParameter(\"text\") as string;\n if (text) {\n this.inputControl.setValue(text);\n // UI5's two-way data binding on the input will sync the model automatically\n const result = this.validate();\n if (this.onChange) {\n this.onChange(result.isValid, this.fieldKey, result.errorMessage);\n }\n }\n }\n });\n\n this.control = new HBox({\n id: this.generateStableId(engineScopeId, bindingPath),\n items: [this.inputControl, scannerBtn],\n width: \"100%\"\n }).addStyleClass(\"sapUiSmallMarginBottom\");\n\n this.applyCommonDirectives(this.control, metadata, modelName);\n\n return this.control as Control;\n }\n\n /**\n * Retrieves the current scanned text.\n * @returns {unknown} The barcode string.\n */\n protected getValue(): unknown {\n return this.inputControl ? this.inputControl.getProperty('value') : null;\n }\n\n /**\n * Applies dynamic read-only state.\n */\n protected applyState(): void {\n if (this.inputControl && this.metadata) {\n if (!this.isEditable) return;\n this.inputControl.setEditable(!this.metadata.ui?.readOnly);\n }\n }\n}\n"],"mappings":"uJAASA,EAAUC,EAAA,cASZ,MAAMC,UAA6BF,EAa/BG,OAAOC,EAA8BC,EAAsBC,EAAoB,OAAQC,EAAwBC,GAClHC,KAAKD,SAAWA,EAChBC,KAAKL,SAAWA,EAChBK,KAAKC,SAAWL,EAAYM,QAAQ,IAAK,IACzCF,KAAKH,UAAYA,EAEjB,IAAKG,KAAKG,WAAY,CAElBH,KAAKI,QAAU,IAAIC,EAAY,CAC3BC,GAAIN,KAAKO,iBAAiBT,EAAeF,GACzCY,KAAMR,KAAKS,oBAAoBb,EAAaC,KAEhDG,KAAKU,sBAAsBV,KAAKI,QAAST,EAAUE,GACnD,OAAOG,KAAKI,OAChB,CAEAJ,KAAKW,aAAe,IAAIC,EAAM,CAC1BN,GAAIN,KAAKO,iBAAiBT,EAAeF,EAAc,UACvDiB,MAAOb,KAAKS,oBAAoBb,EAAaC,GAC7CiB,UAAWnB,EAASoB,IAAIC,SACxBC,MAAO,OACPC,OAAQA,KACJ,MAAMC,EAASnB,KAAKoB,WACpB,GAAIpB,KAAKD,SAAU,CACfC,KAAKD,SAASoB,EAAOE,QAASrB,KAAKC,SAAUkB,EAAOG,aACxD,KAIR,MAAMC,EAAa,IAAIC,EAAqB,CACxClB,GAAIN,KAAKO,iBAAiBT,EAAeF,EAAc,QACvD6B,YAAcC,IACV,MAAMlB,EAAQkB,EAAeC,aAAa,QAC1C,GAAInB,EAAM,CACNR,KAAKW,aAAaiB,SAASpB,GAE3B,MAAMW,EAASnB,KAAKoB,WACpB,GAAIpB,KAAKD,SAAU,CACfC,KAAKD,SAASoB,EAAOE,QAASrB,KAAKC,SAAUkB,EAAOG,aACxD,CACJ,KAIRtB,KAAKI,QAAU,IAAIyB,EAAK,CACpBvB,GAAIN,KAAKO,iBAAiBT,EAAeF,GACzCkC,MAAO,CAAC9B,KAAKW,aAAcY,GAC3BN,MAAO,SACRc,cAAc,0BAEjB/B,KAAKU,sBAAsBV,KAAKI,QAAST,EAAUE,GAEnD,OAAOG,KAAKI,OAChB,CAMU4B,WACN,OAAOhC,KAAKW,aAAeX,KAAKW,aAAasB,YAAY,SAAW,IACxE,CAKUC,aACN,GAAIlC,KAAKW,cAAgBX,KAAKL,SAAU,CACpC,IAAKK,KAAKG,WAAY,OACtBH,KAAKW,aAAawB,aAAanC,KAAKL,SAASoB,IAAIC,SACrD,CACJ,EACH,IAAAoB,EAAA,CAAAC,WAAA,MAAAD,EAAA3C,uBAAA,OAAA2C,CAAA","ignoreList":[]}
|
|
@@ -20,7 +20,7 @@ export class BarcodeScannerPlugin extends BasePlugin {
|
|
|
20
20
|
* @param onChange The callback fired on value change.
|
|
21
21
|
* @returns {Control} The configured HBox control.
|
|
22
22
|
*/
|
|
23
|
-
public render(metadata: IPropertyMetadata, bindingPath: string, modelName: string = "meta", engineScopeId?: string, onChange?: (isValid: boolean, fieldKey?: string) => void): Control {
|
|
23
|
+
public render(metadata: IPropertyMetadata, bindingPath: string, modelName: string = "meta", engineScopeId?: string, onChange?: (isValid: boolean, fieldKey?: string, errorMessage?: string, controlId?: string) => void): Control {
|
|
24
24
|
this.onChange = onChange;
|
|
25
25
|
this.metadata = metadata;
|
|
26
26
|
this.fieldKey = bindingPath.replace('/', '');
|
|
@@ -42,9 +42,9 @@ export class BarcodeScannerPlugin extends BasePlugin {
|
|
|
42
42
|
editable: !metadata.ui?.readOnly,
|
|
43
43
|
width: "100%",
|
|
44
44
|
change: () => {
|
|
45
|
-
const result = this.
|
|
45
|
+
const result = this.validate();
|
|
46
46
|
if (this.onChange) {
|
|
47
|
-
this.onChange(result.isValid, this.fieldKey);
|
|
47
|
+
this.onChange(result.isValid, this.fieldKey, result.errorMessage);
|
|
48
48
|
}
|
|
49
49
|
}
|
|
50
50
|
});
|
|
@@ -52,13 +52,13 @@ export class BarcodeScannerPlugin extends BasePlugin {
|
|
|
52
52
|
const scannerBtn = new BarcodeScannerButton({
|
|
53
53
|
id: this.generateStableId(engineScopeId, bindingPath + "-btn"),
|
|
54
54
|
scanSuccess: (oEvent: sap.ui.base.Event) => {
|
|
55
|
-
const text = oEvent.getParameter("text") as string;
|
|
55
|
+
const text = (oEvent as any).getParameter("text") as string;
|
|
56
56
|
if (text) {
|
|
57
57
|
this.inputControl.setValue(text);
|
|
58
58
|
// UI5's two-way data binding on the input will sync the model automatically
|
|
59
|
-
const result = this.
|
|
59
|
+
const result = this.validate();
|
|
60
60
|
if (this.onChange) {
|
|
61
|
-
this.onChange(result.isValid, this.fieldKey);
|
|
61
|
+
this.onChange(result.isValid, this.fieldKey, result.errorMessage);
|
|
62
62
|
}
|
|
63
63
|
}
|
|
64
64
|
}
|
|
@@ -80,7 +80,7 @@ export class BarcodeScannerPlugin extends BasePlugin {
|
|
|
80
80
|
* @returns {unknown} The barcode string.
|
|
81
81
|
*/
|
|
82
82
|
protected getValue(): unknown {
|
|
83
|
-
return this.inputControl ? this.inputControl.
|
|
83
|
+
return this.inputControl ? this.inputControl.getProperty('value') : null;
|
|
84
84
|
}
|
|
85
85
|
|
|
86
86
|
/**
|
|
@@ -18,6 +18,11 @@ sap.ui.define(["../../core/PipelineManager", "sap/ui/core/library", "../../utils
|
|
|
18
18
|
/** The instantiated UI5 control for this plugin. */
|
|
19
19
|
control = null;
|
|
20
20
|
|
|
21
|
+
/** Explicit reference to the core data widget when this plugin is wrapped in a layout. */
|
|
22
|
+
|
|
23
|
+
/** Properties strictly protected by the Sandbox engine. */
|
|
24
|
+
BLOCKED_PROPS = ["value", "text", "selectedKey", "selected", "dateValue", "editable", "enabled", "visible", "valueState", "valueStateText", "items", "content", "pages", "formElements", "change", "press", "select", "submit"];
|
|
25
|
+
|
|
21
26
|
/** The metadata schema defining the field rules. */
|
|
22
27
|
metadata = null;
|
|
23
28
|
|
|
@@ -35,6 +40,14 @@ sap.ui.define(["../../core/PipelineManager", "sap/ui/core/library", "../../utils
|
|
|
35
40
|
|
|
36
41
|
/** Internal callback provided by GeneratorHost to signal validation/data changes upwards */
|
|
37
42
|
|
|
43
|
+
/**
|
|
44
|
+
* Tracks explicitly forced invalid states pushed down from the PolicyEngine.
|
|
45
|
+
* When populated, this error takes absolute precedence over static SchemaValidator rules.
|
|
46
|
+
*/
|
|
47
|
+
policyInvalidMessage = null;
|
|
48
|
+
|
|
49
|
+
/** Transient state tracking for PBRE required evaluations to prevent schema clobbering */
|
|
50
|
+
|
|
38
51
|
/**
|
|
39
52
|
* Injects the global editable mode context into the plugin before rendering.
|
|
40
53
|
* @param editable True if the plugin should render in editable mode.
|
|
@@ -114,11 +127,19 @@ sap.ui.define(["../../core/PipelineManager", "sap/ui/core/library", "../../utils
|
|
|
114
127
|
};
|
|
115
128
|
}
|
|
116
129
|
}
|
|
130
|
+
if (this.policyInvalidMessage) {
|
|
131
|
+
return {
|
|
132
|
+
isValid: false,
|
|
133
|
+
errorMessage: this.policyInvalidMessage,
|
|
134
|
+
fieldKey: this.fieldKey
|
|
135
|
+
};
|
|
136
|
+
}
|
|
117
137
|
const validatorsToRun = [];
|
|
118
138
|
const argsMap = {
|
|
119
139
|
"maxLength": this.metadata.maxLength
|
|
120
140
|
};
|
|
121
|
-
|
|
141
|
+
const isRequired = this._isDynamicallyRequired !== undefined ? this._isDynamicallyRequired : this.metadata.required;
|
|
142
|
+
if (isRequired) {
|
|
122
143
|
validatorsToRun.push("required");
|
|
123
144
|
}
|
|
124
145
|
if (this.metadata.maxLength) validatorsToRun.push("maxLength");
|
|
@@ -165,7 +186,8 @@ sap.ui.define(["../../core/PipelineManager", "sap/ui/core/library", "../../utils
|
|
|
165
186
|
return {
|
|
166
187
|
isValid: result.isValid,
|
|
167
188
|
errorMessage: result.errorMessage,
|
|
168
|
-
fieldKey: this.fieldKey
|
|
189
|
+
fieldKey: this.fieldKey,
|
|
190
|
+
fieldLabel: this.metadata?.ui?.label
|
|
169
191
|
};
|
|
170
192
|
}
|
|
171
193
|
|
|
@@ -185,18 +207,74 @@ sap.ui.define(["../../core/PipelineManager", "sap/ui/core/library", "../../utils
|
|
|
185
207
|
ctrl.setValueStateText(isValid ? "" : errorMessage || "");
|
|
186
208
|
}
|
|
187
209
|
} else {
|
|
188
|
-
|
|
210
|
+
// Quietly ignore. Controls like sap.m.Text natively do not support value states, which is completely valid.
|
|
211
|
+
}
|
|
212
|
+
}
|
|
213
|
+
|
|
214
|
+
// --- IPluginStateReceiver Implementation for PBRE ---
|
|
215
|
+
|
|
216
|
+
/**
|
|
217
|
+
* Natively applies a forced error state from the PolicyEngine.
|
|
218
|
+
* Per MetaUI Architecture Rule 12, this explicitly forces the visual state red
|
|
219
|
+
* independently of the MessageManager auto-sync.
|
|
220
|
+
*
|
|
221
|
+
* @param errorMessage The custom error message to display.
|
|
222
|
+
*/
|
|
223
|
+
applyError(errorMessage) {
|
|
224
|
+
this.policyInvalidMessage = errorMessage;
|
|
225
|
+
this.setVisualValidationState(false, errorMessage);
|
|
226
|
+
}
|
|
227
|
+
|
|
228
|
+
/**
|
|
229
|
+
* Clears a previously forced error state.
|
|
230
|
+
* Restores the visual boundary to standard (non-error) formatting.
|
|
231
|
+
*/
|
|
232
|
+
clearError() {
|
|
233
|
+
this.policyInvalidMessage = null;
|
|
234
|
+
this.setVisualValidationState(true);
|
|
235
|
+
}
|
|
236
|
+
|
|
237
|
+
/**
|
|
238
|
+
* Dynamically manipulates the visibility state of the control based on PolicyEngine directives.
|
|
239
|
+
*
|
|
240
|
+
* @param isVisible True to display the control, false to hide it.
|
|
241
|
+
*/
|
|
242
|
+
applyVisibility(isVisible) {
|
|
243
|
+
const ctrl = this.control;
|
|
244
|
+
if (ctrl && typeof ctrl.setVisible === "function") {
|
|
245
|
+
ctrl.setVisible(isVisible);
|
|
189
246
|
}
|
|
190
247
|
}
|
|
191
248
|
|
|
192
249
|
/**
|
|
193
|
-
*
|
|
194
|
-
*
|
|
250
|
+
* Dynamically alters the mandatory status of the field.
|
|
251
|
+
* Updates internal transient state to ensure the `validate()` pipeline enforces the change,
|
|
252
|
+
* and natively triggers the UI5 required indicator (asterisk) if supported,
|
|
253
|
+
* without permanently corrupting the shared global schema definition.
|
|
254
|
+
*
|
|
255
|
+
* @param isRequired True to make the field mandatory, false to make it optional.
|
|
195
256
|
*/
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
this.
|
|
199
|
-
|
|
257
|
+
applyRequired(isRequired) {
|
|
258
|
+
this._isDynamicallyRequired = isRequired;
|
|
259
|
+
const ctrl = this.control;
|
|
260
|
+
if (ctrl && typeof ctrl.setRequired === "function") {
|
|
261
|
+
ctrl.setRequired(isRequired);
|
|
262
|
+
}
|
|
263
|
+
}
|
|
264
|
+
|
|
265
|
+
/**
|
|
266
|
+
* Dynamically alters the editability of the field.
|
|
267
|
+
* Falls back to `setEnabled` if the control is structural rather than purely input-driven.
|
|
268
|
+
*
|
|
269
|
+
* @param isEditable True to allow user input, false to lock it.
|
|
270
|
+
*/
|
|
271
|
+
applyEditable(isEditable) {
|
|
272
|
+
const ctrl = this.control;
|
|
273
|
+
if (ctrl && typeof ctrl.setEditable === "function") {
|
|
274
|
+
ctrl.setEditable(isEditable);
|
|
275
|
+
} else if (ctrl && typeof ctrl.setEnabled === "function") {
|
|
276
|
+
ctrl.setEnabled(isEditable);
|
|
277
|
+
}
|
|
200
278
|
}
|
|
201
279
|
|
|
202
280
|
/**
|
|
@@ -246,6 +324,48 @@ sap.ui.define(["../../core/PipelineManager", "sap/ui/core/library", "../../utils
|
|
|
246
324
|
}
|
|
247
325
|
control.bindProperty("enabled", expr);
|
|
248
326
|
}
|
|
327
|
+
if (metadata.ui?.controlProps) {
|
|
328
|
+
console.error(`[DEBUG MetaUI] controlProps found for ${this.fieldKey}`, metadata.ui.controlProps);
|
|
329
|
+
const targetControl = this.mainControl || control;
|
|
330
|
+
const target = targetControl;
|
|
331
|
+
if (typeof target.getMetadata === "function") {
|
|
332
|
+
const targetMeta = target.getMetadata();
|
|
333
|
+
const settings = {};
|
|
334
|
+
for (const [propName, propValue] of Object.entries(metadata.ui.controlProps)) {
|
|
335
|
+
if (this.BLOCKED_PROPS.includes(propName)) {
|
|
336
|
+
Logger.warn(`[BasePlugin] Cannot apply controlProps '${propName}' for field '${this.fieldKey}' - ILLEGAL OVERRIDE (Property is protected by sandbox)`);
|
|
337
|
+
continue;
|
|
338
|
+
}
|
|
339
|
+
|
|
340
|
+
// Natively block any aggregations or events to prevent sandbox escapes
|
|
341
|
+
if (typeof targetMeta.hasAggregation === "function" && targetMeta.hasAggregation(propName)) {
|
|
342
|
+
Logger.warn(`[BasePlugin] Cannot apply controlProps '${propName}' for field '${this.fieldKey}' - ILLEGAL OVERRIDE (Cannot hijack aggregations)`);
|
|
343
|
+
continue;
|
|
344
|
+
}
|
|
345
|
+
if (typeof targetMeta.hasEvent === "function" && targetMeta.hasEvent(propName)) {
|
|
346
|
+
Logger.warn(`[BasePlugin] Cannot apply controlProps '${propName}' for field '${this.fieldKey}' - ILLEGAL OVERRIDE (Cannot hijack events)`);
|
|
347
|
+
continue;
|
|
348
|
+
}
|
|
349
|
+
if (typeof propValue === "string" && propValue.startsWith("{") && propValue.endsWith("}")) {
|
|
350
|
+
// The JSON payloads often hardcode 'metaui>' in raw expression bindings,
|
|
351
|
+
// but the Engine dynamically generates model names like 'metaUI_Host1'.
|
|
352
|
+
// We must inject the actual modelName dynamically into the expression string.
|
|
353
|
+
const injectedValue = propValue.replace(/metaui>/g, `${modelName}>`);
|
|
354
|
+
settings[propName] = injectedValue;
|
|
355
|
+
} else {
|
|
356
|
+
settings[propName] = propValue;
|
|
357
|
+
}
|
|
358
|
+
}
|
|
359
|
+
try {
|
|
360
|
+
const target = targetControl;
|
|
361
|
+
if (typeof target.applySettings === "function") {
|
|
362
|
+
target.applySettings(settings);
|
|
363
|
+
}
|
|
364
|
+
} catch (err) {
|
|
365
|
+
Logger.warn(`[BasePlugin] Failed to apply controlProps for field '${this.fieldKey}' on control ${targetMeta.getName()}: ${err.message}`);
|
|
366
|
+
}
|
|
367
|
+
}
|
|
368
|
+
}
|
|
249
369
|
}
|
|
250
370
|
|
|
251
371
|
/**
|