@siliconst/metaui 1.4.17 → 1.4.21
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/package.json +1 -1
- package/src/nz/co/siliconst/ui5/metaui/ai/AIConfig-dbg.js +47 -0
- package/src/nz/co/siliconst/ui5/metaui/ai/AIConfig-dbg.js.map +1 -0
- package/src/nz/co/siliconst/ui5/metaui/ai/AIConfig.d.ts +28 -0
- package/src/nz/co/siliconst/ui5/metaui/ai/AIConfig.d.ts.map +1 -0
- package/src/nz/co/siliconst/ui5/metaui/ai/AIConfig.js +2 -0
- package/src/nz/co/siliconst/ui5/metaui/ai/AIConfig.js.map +1 -0
- package/src/nz/co/siliconst/ui5/metaui/ai/AIConfig.ts +39 -0
- package/src/nz/co/siliconst/ui5/metaui/ai/BaseAIGenerator-dbg.js +83 -0
- package/src/nz/co/siliconst/ui5/metaui/ai/BaseAIGenerator-dbg.js.map +1 -0
- package/src/nz/co/siliconst/ui5/metaui/ai/BaseAIGenerator.d.ts +30 -0
- package/src/nz/co/siliconst/ui5/metaui/ai/BaseAIGenerator.d.ts.map +1 -0
- package/src/nz/co/siliconst/ui5/metaui/ai/BaseAIGenerator.js +2 -0
- package/src/nz/co/siliconst/ui5/metaui/ai/BaseAIGenerator.js.map +1 -0
- package/src/nz/co/siliconst/ui5/metaui/ai/BaseAIGenerator.ts +74 -0
- package/src/nz/co/siliconst/ui5/metaui/ai/MockLLMProxy-dbg.js +61 -0
- package/src/nz/co/siliconst/ui5/metaui/ai/MockLLMProxy-dbg.js.map +1 -0
- package/src/nz/co/siliconst/ui5/metaui/ai/MockLLMProxy.d.ts +13 -0
- package/src/nz/co/siliconst/ui5/metaui/ai/MockLLMProxy.d.ts.map +1 -0
- package/src/nz/co/siliconst/ui5/metaui/ai/MockLLMProxy.js +2 -0
- package/src/nz/co/siliconst/ui5/metaui/ai/MockLLMProxy.js.map +1 -0
- package/src/nz/co/siliconst/ui5/metaui/ai/MockLLMProxy.ts +59 -0
- package/src/nz/co/siliconst/ui5/metaui/ai/RestLLMProxy-dbg.js +50 -0
- package/src/nz/co/siliconst/ui5/metaui/ai/RestLLMProxy-dbg.js.map +1 -0
- package/src/nz/co/siliconst/ui5/metaui/ai/RestLLMProxy.d.ts +12 -0
- package/src/nz/co/siliconst/ui5/metaui/ai/RestLLMProxy.d.ts.map +1 -0
- package/src/nz/co/siliconst/ui5/metaui/ai/RestLLMProxy.js +2 -0
- package/src/nz/co/siliconst/ui5/metaui/ai/RestLLMProxy.js.map +1 -0
- package/src/nz/co/siliconst/ui5/metaui/ai/RestLLMProxy.ts +44 -0
- package/src/nz/co/siliconst/ui5/metaui/controls/DynamicHost-dbg.js +87 -16
- 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 +20 -0
- 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 +79 -18
- package/src/nz/co/siliconst/ui5/metaui/controls/host/GeneratorHost-dbg.js +44 -4
- 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 +23 -0
- 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 +35 -5
- package/src/nz/co/siliconst/ui5/metaui/controls/host/delegates/DataSyncDelegate-dbg.js +35 -0
- 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 +8 -0
- 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 +37 -0
- package/src/nz/co/siliconst/ui5/metaui/controls/host/delegates/ODataDelegate-dbg.js +13 -0
- 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 +4 -0
- 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 +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 +13 -0
- package/src/nz/co/siliconst/ui5/metaui/core/DefaultLayoutGenerator-dbg.js +11 -32
- package/src/nz/co/siliconst/ui5/metaui/core/DefaultLayoutGenerator-dbg.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/core/DefaultLayoutGenerator.d.ts.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/core/DefaultLayoutGenerator.js +1 -1
- package/src/nz/co/siliconst/ui5/metaui/core/DefaultLayoutGenerator.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/core/DefaultLayoutGenerator.ts +9 -13
- package/src/nz/co/siliconst/ui5/metaui/core/Engine-dbg.js +14 -6
- 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 +7 -1
- 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 +21 -11
- package/src/nz/co/siliconst/ui5/metaui/core/PluginRegistry-dbg.js +6 -0
- 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.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 +6 -0
- package/src/nz/co/siliconst/ui5/metaui/core/SchemaBuilderRegistry-dbg.js +3 -3
- package/src/nz/co/siliconst/ui5/metaui/core/SchemaBuilderRegistry-dbg.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/core/SchemaBuilderRegistry.d.ts +1 -1
- package/src/nz/co/siliconst/ui5/metaui/core/SchemaBuilderRegistry.d.ts.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/core/SchemaBuilderRegistry.js +1 -1
- package/src/nz/co/siliconst/ui5/metaui/core/SchemaBuilderRegistry.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/core/SchemaBuilderRegistry.ts +3 -3
- package/src/nz/co/siliconst/ui5/metaui/core/SchemaNormalizer-dbg.js +4 -4
- 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 +2 -2
- 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 +10 -10
- package/src/nz/co/siliconst/ui5/metaui/core/SchemaValidator-dbg.js +1 -1
- package/src/nz/co/siliconst/ui5/metaui/core/SchemaValidator-dbg.js.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 +1 -1
- 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 +1 -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 +1 -1
- 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 +19 -3
- package/src/nz/co/siliconst/ui5/metaui/interfaces/ISchema.d.ts.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/interfaces/ISchema.ts +22 -3
- package/src/nz/co/siliconst/ui5/metaui/interfaces/ISchemaBuilderPlugin-dbg.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/interfaces/ISchemaBuilderPlugin.d.ts +3 -2
- package/src/nz/co/siliconst/ui5/metaui/interfaces/ISchemaBuilderPlugin.d.ts.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/interfaces/ISchemaBuilderPlugin.ts +3 -2
- package/src/nz/co/siliconst/ui5/metaui/layouts/TableLayout-dbg.js +18 -2
- 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 +19 -2
- package/src/nz/co/siliconst/ui5/metaui/library-dbg.js +1 -1
- package/src/nz/co/siliconst/ui5/metaui/library-dbg.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/library-preload.js +66 -44
- package/src/nz/co/siliconst/ui5/metaui/library-preload.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/library.d.ts +4 -0
- package/src/nz/co/siliconst/ui5/metaui/library.d.ts.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/library.js +1 -1
- package/src/nz/co/siliconst/ui5/metaui/library.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/library.ts +6 -0
- package/src/nz/co/siliconst/ui5/metaui/openapi/OpenApiBuilder-dbg.js +93 -0
- package/src/nz/co/siliconst/ui5/metaui/openapi/OpenApiBuilder-dbg.js.map +1 -0
- package/src/nz/co/siliconst/ui5/metaui/openapi/OpenApiBuilder.d.ts +52 -0
- package/src/nz/co/siliconst/ui5/metaui/openapi/OpenApiBuilder.d.ts.map +1 -0
- package/src/nz/co/siliconst/ui5/metaui/openapi/OpenApiBuilder.js +2 -0
- package/src/nz/co/siliconst/ui5/metaui/openapi/OpenApiBuilder.js.map +1 -0
- package/src/nz/co/siliconst/ui5/metaui/openapi/OpenApiBuilder.ts +88 -0
- package/src/nz/co/siliconst/ui5/metaui/openapi/OpenApiParserFactory-dbg.js +47 -0
- package/src/nz/co/siliconst/ui5/metaui/openapi/OpenApiParserFactory-dbg.js.map +1 -0
- package/src/nz/co/siliconst/ui5/metaui/openapi/OpenApiParserFactory.d.ts +25 -0
- package/src/nz/co/siliconst/ui5/metaui/openapi/OpenApiParserFactory.d.ts.map +1 -0
- package/src/nz/co/siliconst/ui5/metaui/openapi/OpenApiParserFactory.js +2 -0
- package/src/nz/co/siliconst/ui5/metaui/openapi/OpenApiParserFactory.js.map +1 -0
- package/src/nz/co/siliconst/ui5/metaui/openapi/OpenApiParserFactory.ts +43 -0
- package/src/nz/co/siliconst/ui5/metaui/openapi/OpenApiRefResolver-dbg.js +68 -0
- package/src/nz/co/siliconst/ui5/metaui/openapi/OpenApiRefResolver-dbg.js.map +1 -0
- package/src/nz/co/siliconst/ui5/metaui/openapi/OpenApiRefResolver.d.ts +21 -0
- package/src/nz/co/siliconst/ui5/metaui/openapi/OpenApiRefResolver.d.ts.map +1 -0
- package/src/nz/co/siliconst/ui5/metaui/openapi/OpenApiRefResolver.js +2 -0
- package/src/nz/co/siliconst/ui5/metaui/openapi/OpenApiRefResolver.js.map +1 -0
- package/src/nz/co/siliconst/ui5/metaui/openapi/OpenApiRefResolver.ts +61 -0
- package/src/nz/co/siliconst/ui5/metaui/openapi/OpenApiTypeMapper-dbg.js +45 -0
- package/src/nz/co/siliconst/ui5/metaui/openapi/OpenApiTypeMapper-dbg.js.map +1 -0
- package/src/nz/co/siliconst/ui5/metaui/openapi/OpenApiTypeMapper.d.ts +25 -0
- package/src/nz/co/siliconst/ui5/metaui/openapi/OpenApiTypeMapper.d.ts.map +1 -0
- package/src/nz/co/siliconst/ui5/metaui/{swagger/SwaggerTypeMapper.js → openapi/OpenApiTypeMapper.js} +2 -2
- package/src/nz/co/siliconst/ui5/metaui/openapi/OpenApiTypeMapper.js.map +1 -0
- package/src/nz/co/siliconst/ui5/metaui/openapi/OpenApiTypeMapper.ts +36 -0
- package/src/nz/co/siliconst/ui5/metaui/{swagger/SwaggerUIMapper-dbg.js → openapi/OpenApiUIMapper-dbg.js} +29 -17
- package/src/nz/co/siliconst/ui5/metaui/openapi/OpenApiUIMapper-dbg.js.map +1 -0
- package/src/nz/co/siliconst/ui5/metaui/openapi/OpenApiUIMapper.d.ts +34 -0
- package/src/nz/co/siliconst/ui5/metaui/openapi/OpenApiUIMapper.d.ts.map +1 -0
- package/src/nz/co/siliconst/ui5/metaui/openapi/OpenApiUIMapper.js +2 -0
- package/src/nz/co/siliconst/ui5/metaui/openapi/OpenApiUIMapper.js.map +1 -0
- package/src/nz/co/siliconst/ui5/metaui/{swagger/SwaggerUIMapper.ts → openapi/OpenApiUIMapper.ts} +28 -16
- package/src/nz/co/siliconst/ui5/metaui/openapi/heuristics/OpenApiHeuristicEngine-dbg.js +50 -0
- package/src/nz/co/siliconst/ui5/metaui/openapi/heuristics/OpenApiHeuristicEngine-dbg.js.map +1 -0
- package/src/nz/co/siliconst/ui5/metaui/openapi/heuristics/OpenApiHeuristicEngine.d.ts +25 -0
- package/src/nz/co/siliconst/ui5/metaui/openapi/heuristics/OpenApiHeuristicEngine.d.ts.map +1 -0
- package/src/nz/co/siliconst/ui5/metaui/openapi/heuristics/OpenApiHeuristicEngine.js +2 -0
- package/src/nz/co/siliconst/ui5/metaui/openapi/heuristics/OpenApiHeuristicEngine.js.map +1 -0
- package/src/nz/co/siliconst/ui5/metaui/openapi/heuristics/OpenApiHeuristicEngine.ts +43 -0
- package/src/nz/co/siliconst/ui5/metaui/openapi/heuristics/interfaces/IHeuristicPlugin-dbg.js +2 -0
- package/src/nz/co/siliconst/ui5/metaui/openapi/heuristics/interfaces/IHeuristicPlugin-dbg.js.map +1 -0
- package/src/nz/co/siliconst/ui5/metaui/openapi/heuristics/interfaces/IHeuristicPlugin.d.ts +23 -0
- package/src/nz/co/siliconst/ui5/metaui/openapi/heuristics/interfaces/IHeuristicPlugin.d.ts.map +1 -0
- package/src/nz/co/siliconst/ui5/metaui/openapi/heuristics/interfaces/IHeuristicPlugin.js +2 -0
- package/src/nz/co/siliconst/ui5/metaui/openapi/heuristics/interfaces/IHeuristicPlugin.js.map +1 -0
- package/src/nz/co/siliconst/ui5/metaui/openapi/heuristics/interfaces/IHeuristicPlugin.ts +21 -0
- package/src/nz/co/siliconst/ui5/metaui/openapi/heuristics/plugins/ProtobufVariantHeuristic-dbg.js +117 -0
- package/src/nz/co/siliconst/ui5/metaui/openapi/heuristics/plugins/ProtobufVariantHeuristic-dbg.js.map +1 -0
- package/src/nz/co/siliconst/ui5/metaui/openapi/heuristics/plugins/ProtobufVariantHeuristic.d.ts +47 -0
- package/src/nz/co/siliconst/ui5/metaui/openapi/heuristics/plugins/ProtobufVariantHeuristic.d.ts.map +1 -0
- package/src/nz/co/siliconst/ui5/metaui/openapi/heuristics/plugins/ProtobufVariantHeuristic.js +2 -0
- package/src/nz/co/siliconst/ui5/metaui/openapi/heuristics/plugins/ProtobufVariantHeuristic.js.map +1 -0
- package/src/nz/co/siliconst/ui5/metaui/openapi/heuristics/plugins/ProtobufVariantHeuristic.ts +113 -0
- package/src/nz/co/siliconst/ui5/metaui/openapi/interfaces/IOpenApiParserPlugin-dbg.js +2 -0
- package/src/nz/co/siliconst/ui5/metaui/openapi/interfaces/IOpenApiParserPlugin-dbg.js.map +1 -0
- package/src/nz/co/siliconst/ui5/metaui/openapi/interfaces/IOpenApiParserPlugin.d.ts +26 -0
- package/src/nz/co/siliconst/ui5/metaui/openapi/interfaces/IOpenApiParserPlugin.d.ts.map +1 -0
- package/src/nz/co/siliconst/ui5/metaui/openapi/interfaces/IOpenApiParserPlugin.js +2 -0
- package/src/nz/co/siliconst/ui5/metaui/openapi/interfaces/IOpenApiParserPlugin.js.map +1 -0
- package/src/nz/co/siliconst/ui5/metaui/openapi/interfaces/IOpenApiParserPlugin.ts +25 -0
- package/src/nz/co/siliconst/ui5/metaui/openapi/parsers/OpenApi2Parser-dbg.js +106 -0
- package/src/nz/co/siliconst/ui5/metaui/openapi/parsers/OpenApi2Parser-dbg.js.map +1 -0
- package/src/nz/co/siliconst/ui5/metaui/openapi/parsers/OpenApi2Parser.d.ts +27 -0
- package/src/nz/co/siliconst/ui5/metaui/openapi/parsers/OpenApi2Parser.d.ts.map +1 -0
- package/src/nz/co/siliconst/ui5/metaui/openapi/parsers/OpenApi2Parser.js +2 -0
- package/src/nz/co/siliconst/ui5/metaui/openapi/parsers/OpenApi2Parser.js.map +1 -0
- package/src/nz/co/siliconst/ui5/metaui/openapi/parsers/OpenApi2Parser.ts +104 -0
- package/src/nz/co/siliconst/ui5/metaui/openapi/parsers/OpenApi3Parser-dbg.js +107 -0
- package/src/nz/co/siliconst/ui5/metaui/openapi/parsers/OpenApi3Parser-dbg.js.map +1 -0
- package/src/nz/co/siliconst/ui5/metaui/openapi/parsers/OpenApi3Parser.d.ts +27 -0
- package/src/nz/co/siliconst/ui5/metaui/openapi/parsers/OpenApi3Parser.d.ts.map +1 -0
- package/src/nz/co/siliconst/ui5/metaui/openapi/parsers/OpenApi3Parser.js +2 -0
- package/src/nz/co/siliconst/ui5/metaui/openapi/parsers/OpenApi3Parser.js.map +1 -0
- package/src/nz/co/siliconst/ui5/metaui/openapi/parsers/OpenApi3Parser.ts +105 -0
- package/src/nz/co/siliconst/ui5/metaui/openapi/parsers/OpenApiPropertyMapper-dbg.js +347 -0
- package/src/nz/co/siliconst/ui5/metaui/openapi/parsers/OpenApiPropertyMapper-dbg.js.map +1 -0
- package/src/nz/co/siliconst/ui5/metaui/openapi/parsers/OpenApiPropertyMapper.d.ts +110 -0
- package/src/nz/co/siliconst/ui5/metaui/openapi/parsers/OpenApiPropertyMapper.d.ts.map +1 -0
- package/src/nz/co/siliconst/ui5/metaui/openapi/parsers/OpenApiPropertyMapper.js +2 -0
- package/src/nz/co/siliconst/ui5/metaui/openapi/parsers/OpenApiPropertyMapper.js.map +1 -0
- package/src/nz/co/siliconst/ui5/metaui/openapi/parsers/OpenApiPropertyMapper.ts +377 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/ArrayPlugin-dbg.js +11 -0
- 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.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 +13 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/BarcodeScannerPlugin-dbg.js +2 -2
- 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.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 +2 -2
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/BasePlugin-dbg.js +31 -7
- 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 +17 -1
- 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 +33 -8
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/BooleanPlugin-dbg.js +3 -4
- 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.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 +3 -4
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/CameraPlugin-dbg.js +2 -2
- 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.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 +2 -2
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/CodeEditorPlugin-dbg.js +1 -1
- 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.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 +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/DatePlugin-dbg.js +4 -8
- 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.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 +4 -8
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/DateTimePlugin-dbg.js +4 -8
- 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.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 +4 -8
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/DictionaryMapPlugin-dbg.js +217 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/DictionaryMapPlugin-dbg.js.map +1 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/DictionaryMapPlugin.d.ts +26 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/DictionaryMapPlugin.d.ts.map +1 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/DictionaryMapPlugin.js +2 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/DictionaryMapPlugin.js.map +1 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/DictionaryMapPlugin.ts +249 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/DropdownPlugin-dbg.js +3 -4
- 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.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 +3 -4
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/EmailPlugin-dbg.js +48 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/EmailPlugin-dbg.js.map +1 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/EmailPlugin.d.ts +11 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/EmailPlugin.d.ts.map +1 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/EmailPlugin.js +2 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/EmailPlugin.js.map +1 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/EmailPlugin.ts +48 -0
- 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.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 +3 -3
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/GeolocationPlugin-dbg.js +3 -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.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 +4 -5
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/LinkPlugin-dbg.js +58 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/LinkPlugin-dbg.js.map +1 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/LinkPlugin.d.ts +11 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/LinkPlugin.d.ts.map +1 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/LinkPlugin.js +2 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/LinkPlugin.js.map +1 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/LinkPlugin.ts +57 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/MessageStripPlugin-dbg.js +1 -1
- 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.js +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 +115 -49
- 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 +17 -2
- 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 +114 -54
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/MultiSelectPlugin-dbg.js +3 -4
- 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.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 -4
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/NumberPlugin-dbg.js +3 -2
- 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.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 +3 -2
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/PasswordPlugin-dbg.js +49 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/PasswordPlugin-dbg.js.map +1 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/PasswordPlugin.d.ts +11 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/PasswordPlugin.d.ts.map +1 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/PasswordPlugin.js +2 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/PasswordPlugin.js.map +1 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/PasswordPlugin.ts +49 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/RatingIndicatorPlugin-dbg.js +2 -2
- 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.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 +2 -2
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/ReferencePlugin-dbg.js +194 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/ReferencePlugin-dbg.js.map +1 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/ReferencePlugin.d.ts +25 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/ReferencePlugin.d.ts.map +1 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/ReferencePlugin.js +2 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/ReferencePlugin.js.map +1 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/ReferencePlugin.ts +192 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/RichTextPlugin-dbg.js +2 -2
- 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.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 +2 -2
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/SignaturePlugin-dbg.js +2 -2
- 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.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 +2 -2
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/SliderPlugin-dbg.js +2 -2
- 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.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 +2 -2
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/StepInputPlugin-dbg.js +2 -2
- 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.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 +2 -2
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/StringPlugin-dbg.js +2 -2
- 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.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 +2 -2
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/SwitchPlugin-dbg.js +3 -4
- 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.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 -4
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/TextAreaPlugin-dbg.js +2 -2
- 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.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 +2 -2
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/TimePlugin-dbg.js +4 -8
- 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.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 -8
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/VoiceInputPlugin-dbg.js +3 -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.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 +3 -4
- package/src/nz/co/siliconst/ui5/metaui/plugins/datasources/LiveSearchPlugin-dbg.js +2 -2
- 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.js +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 +2 -2
- package/src/nz/co/siliconst/ui5/metaui/plugins/datasources/RemoteValueHelpPlugin-dbg.js +2 -2
- 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.js +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 +2 -2
- package/src/nz/co/siliconst/ui5/metaui/swagger/OpenApiExtractor-dbg.js +146 -0
- package/src/nz/co/siliconst/ui5/metaui/swagger/OpenApiExtractor-dbg.js.map +1 -0
- package/src/nz/co/siliconst/ui5/metaui/swagger/OpenApiExtractor.d.ts +27 -0
- package/src/nz/co/siliconst/ui5/metaui/swagger/OpenApiExtractor.d.ts.map +1 -0
- package/src/nz/co/siliconst/ui5/metaui/swagger/OpenApiExtractor.js +2 -0
- package/src/nz/co/siliconst/ui5/metaui/swagger/OpenApiExtractor.js.map +1 -0
- package/src/nz/co/siliconst/ui5/metaui/swagger/OpenApiExtractor.ts +160 -0
- package/src/nz/co/siliconst/ui5/metaui/swagger/SwaggerBuilder-dbg.js +0 -226
- package/src/nz/co/siliconst/ui5/metaui/swagger/SwaggerBuilder-dbg.js.map +0 -1
- package/src/nz/co/siliconst/ui5/metaui/swagger/SwaggerBuilder.d.ts +0 -63
- package/src/nz/co/siliconst/ui5/metaui/swagger/SwaggerBuilder.d.ts.map +0 -1
- package/src/nz/co/siliconst/ui5/metaui/swagger/SwaggerBuilder.js +0 -2
- package/src/nz/co/siliconst/ui5/metaui/swagger/SwaggerBuilder.js.map +0 -1
- package/src/nz/co/siliconst/ui5/metaui/swagger/SwaggerBuilder.ts +0 -233
- package/src/nz/co/siliconst/ui5/metaui/swagger/SwaggerRefResolver-dbg.js +0 -43
- package/src/nz/co/siliconst/ui5/metaui/swagger/SwaggerRefResolver-dbg.js.map +0 -1
- package/src/nz/co/siliconst/ui5/metaui/swagger/SwaggerRefResolver.d.ts +0 -15
- package/src/nz/co/siliconst/ui5/metaui/swagger/SwaggerRefResolver.d.ts.map +0 -1
- package/src/nz/co/siliconst/ui5/metaui/swagger/SwaggerRefResolver.js +0 -2
- package/src/nz/co/siliconst/ui5/metaui/swagger/SwaggerRefResolver.js.map +0 -1
- package/src/nz/co/siliconst/ui5/metaui/swagger/SwaggerRefResolver.ts +0 -37
- package/src/nz/co/siliconst/ui5/metaui/swagger/SwaggerTypeMapper-dbg.js +0 -37
- package/src/nz/co/siliconst/ui5/metaui/swagger/SwaggerTypeMapper-dbg.js.map +0 -1
- package/src/nz/co/siliconst/ui5/metaui/swagger/SwaggerTypeMapper.d.ts +0 -18
- package/src/nz/co/siliconst/ui5/metaui/swagger/SwaggerTypeMapper.d.ts.map +0 -1
- package/src/nz/co/siliconst/ui5/metaui/swagger/SwaggerTypeMapper.js.map +0 -1
- package/src/nz/co/siliconst/ui5/metaui/swagger/SwaggerTypeMapper.ts +0 -28
- package/src/nz/co/siliconst/ui5/metaui/swagger/SwaggerUIMapper-dbg.js.map +0 -1
- package/src/nz/co/siliconst/ui5/metaui/swagger/SwaggerUIMapper.d.ts +0 -27
- package/src/nz/co/siliconst/ui5/metaui/swagger/SwaggerUIMapper.d.ts.map +0 -1
- package/src/nz/co/siliconst/ui5/metaui/swagger/SwaggerUIMapper.js +0 -2
- package/src/nz/co/siliconst/ui5/metaui/swagger/SwaggerUIMapper.js.map +0 -1
|
@@ -0,0 +1,217 @@
|
|
|
1
|
+
sap.ui.define(["./BasePlugin", "../../core/PluginRegistry", "sap/m/VBox", "sap/m/HBox", "sap/m/Input", "sap/m/Button", "sap/m/Title", "sap/m/Table", "sap/m/Column", "sap/m/Label", "sap/m/ColumnListItem", "sap/ui/model/json/JSONModel", "sap/m/Dialog"], function (___BasePlugin, ____core_PluginRegistry, VBox, HBox, Input, Button, Title, Table, Column, Label, ColumnListItem, JSONModel, Dialog) {
|
|
2
|
+
"use strict";
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* @file DictionaryMapPlugin.ts
|
|
6
|
+
* @description Plugin for rendering open-ended JSON Dictionaries (additionalProperties).
|
|
7
|
+
*/
|
|
8
|
+
const BasePlugin = ___BasePlugin["BasePlugin"];
|
|
9
|
+
const PluginRegistry = ____core_PluginRegistry["PluginRegistry"];
|
|
10
|
+
/**
|
|
11
|
+
* Plugin for rendering open-ended JSON Dictionaries (additionalProperties).
|
|
12
|
+
* Uses a local JSONModel and sap.m.Table to provide a stable, zero-hack UI5 two-way binding experience.
|
|
13
|
+
*
|
|
14
|
+
* @public
|
|
15
|
+
*/
|
|
16
|
+
class DictionaryMapPlugin extends BasePlugin {
|
|
17
|
+
_isSyncing = false;
|
|
18
|
+
_binding = null;
|
|
19
|
+
canHandle(schema) {
|
|
20
|
+
return schema.type === "object" && typeof schema.additionalProperties === "object";
|
|
21
|
+
}
|
|
22
|
+
render(schema, bindingPath, modelName, engineScopeId, onChange, model) {
|
|
23
|
+
this.onChange = onChange;
|
|
24
|
+
this.metadata = schema;
|
|
25
|
+
const valueSchema = schema.additionalProperties || {
|
|
26
|
+
type: "string"
|
|
27
|
+
};
|
|
28
|
+
const container = new VBox({
|
|
29
|
+
width: "100%"
|
|
30
|
+
}).addStyleClass("sapUiSmallMarginTopBottom");
|
|
31
|
+
const absolutePath = bindingPath.startsWith("/") ? bindingPath : `/${bindingPath}`;
|
|
32
|
+
|
|
33
|
+
// 1. Initialize local flat array model for the Table
|
|
34
|
+
const currentData = model ? model.getProperty(absolutePath) || {} : {};
|
|
35
|
+
const localItems = Object.keys(currentData).map(k => ({
|
|
36
|
+
key: k,
|
|
37
|
+
value: currentData[k]
|
|
38
|
+
}));
|
|
39
|
+
const localModel = new JSONModel({
|
|
40
|
+
items: localItems
|
|
41
|
+
});
|
|
42
|
+
|
|
43
|
+
// Setup listener to flush local model back to parent dictionary model
|
|
44
|
+
const syncToParent = () => {
|
|
45
|
+
if (!model) return;
|
|
46
|
+
this._isSyncing = true;
|
|
47
|
+
const items = localModel.getProperty("/items");
|
|
48
|
+
const newDict = {};
|
|
49
|
+
items.forEach(item => {
|
|
50
|
+
if (item.key && item.key.trim() !== "") {
|
|
51
|
+
newDict[item.key] = item.value;
|
|
52
|
+
}
|
|
53
|
+
});
|
|
54
|
+
model.setProperty(absolutePath, newDict);
|
|
55
|
+
if (this.onChange) this.onChange();
|
|
56
|
+
this._isSyncing = false;
|
|
57
|
+
};
|
|
58
|
+
if (model) {
|
|
59
|
+
this._binding = model.bindProperty(absolutePath);
|
|
60
|
+
this._binding.attachChange(() => {
|
|
61
|
+
if (this._isSyncing) return;
|
|
62
|
+
const currentData = model.getProperty(absolutePath) || {};
|
|
63
|
+
const localItems = Object.keys(currentData).map(k => ({
|
|
64
|
+
key: k,
|
|
65
|
+
value: currentData[k]
|
|
66
|
+
}));
|
|
67
|
+
localModel.setProperty("/items", localItems);
|
|
68
|
+
});
|
|
69
|
+
this._binding.initialize();
|
|
70
|
+
}
|
|
71
|
+
const headerItems = [new Title({
|
|
72
|
+
text: schema.title || schema.ui?.label || "Dictionary Map",
|
|
73
|
+
level: "H5"
|
|
74
|
+
})];
|
|
75
|
+
if (this.isEditable) {
|
|
76
|
+
headerItems.push(new Button({
|
|
77
|
+
text: "Add Property",
|
|
78
|
+
icon: "sap-icon://add",
|
|
79
|
+
press: () => {
|
|
80
|
+
const items = localModel.getProperty("/items");
|
|
81
|
+
items.push({
|
|
82
|
+
key: "",
|
|
83
|
+
value: null
|
|
84
|
+
});
|
|
85
|
+
localModel.setProperty("/items", items);
|
|
86
|
+
syncToParent();
|
|
87
|
+
}
|
|
88
|
+
}));
|
|
89
|
+
}
|
|
90
|
+
const header = new HBox({
|
|
91
|
+
justifyContent: "SpaceBetween",
|
|
92
|
+
alignItems: "Center",
|
|
93
|
+
items: headerItems
|
|
94
|
+
}).addStyleClass("sapUiSmallMarginBottom");
|
|
95
|
+
container.addItem(header);
|
|
96
|
+
|
|
97
|
+
// 2. Build the Table
|
|
98
|
+
const columns = [new Column({
|
|
99
|
+
header: new Label({
|
|
100
|
+
text: "Key"
|
|
101
|
+
})
|
|
102
|
+
}), new Column({
|
|
103
|
+
header: new Label({
|
|
104
|
+
text: "Value"
|
|
105
|
+
})
|
|
106
|
+
})];
|
|
107
|
+
if (this.isEditable) {
|
|
108
|
+
columns.push(new Column({
|
|
109
|
+
width: "4rem",
|
|
110
|
+
hAlign: "Center"
|
|
111
|
+
}));
|
|
112
|
+
}
|
|
113
|
+
const table = new Table({
|
|
114
|
+
mode: "None",
|
|
115
|
+
noDataText: "No metadata properties defined.",
|
|
116
|
+
columns: columns
|
|
117
|
+
});
|
|
118
|
+
table.setModel(localModel, "localDict");
|
|
119
|
+
table.bindItems({
|
|
120
|
+
path: "localDict>/items",
|
|
121
|
+
factory: (sId, oContext) => {
|
|
122
|
+
const rowPath = oContext.getPath();
|
|
123
|
+
|
|
124
|
+
// Key Input
|
|
125
|
+
const keyInput = new Input({
|
|
126
|
+
value: "{localDict>key}",
|
|
127
|
+
editable: this.isEditable,
|
|
128
|
+
change: () => syncToParent()
|
|
129
|
+
});
|
|
130
|
+
|
|
131
|
+
// Value Control
|
|
132
|
+
const plugin = PluginRegistry.getInstance().getPlugin(valueSchema.type || "string", valueSchema.ui?.widget);
|
|
133
|
+
|
|
134
|
+
// Temporarily override value schema readOnly state if the dictionary as a whole is readOnly
|
|
135
|
+
const effectiveValueSchema = {
|
|
136
|
+
...valueSchema
|
|
137
|
+
};
|
|
138
|
+
if (!this.isEditable) {
|
|
139
|
+
if (!effectiveValueSchema.ui) effectiveValueSchema.ui = {};
|
|
140
|
+
effectiveValueSchema.ui.readOnly = true;
|
|
141
|
+
}
|
|
142
|
+
const valueControl = plugin.render(effectiveValueSchema, `${rowPath}/value`, "localDict", "dict_" + Date.now(), () => syncToParent(), localModel);
|
|
143
|
+
const cells = [keyInput, valueControl];
|
|
144
|
+
if (this.isEditable) {
|
|
145
|
+
const delBtn = new Button({
|
|
146
|
+
icon: "sap-icon://delete",
|
|
147
|
+
type: "Reject",
|
|
148
|
+
press: () => {
|
|
149
|
+
const items = localModel.getProperty("/items");
|
|
150
|
+
const matchIndex = parseInt(rowPath.split("/").pop() || "0", 10);
|
|
151
|
+
items.splice(matchIndex, 1);
|
|
152
|
+
localModel.setProperty("/items", items);
|
|
153
|
+
syncToParent();
|
|
154
|
+
}
|
|
155
|
+
});
|
|
156
|
+
cells.push(delBtn);
|
|
157
|
+
}
|
|
158
|
+
return new ColumnListItem({
|
|
159
|
+
cells
|
|
160
|
+
});
|
|
161
|
+
}
|
|
162
|
+
});
|
|
163
|
+
container.addItem(table);
|
|
164
|
+
this.control = new Button({
|
|
165
|
+
id: this.generateStableId(engineScopeId, bindingPath),
|
|
166
|
+
text: !this.isEditable ? "View Dictionary" : "Edit Dictionary",
|
|
167
|
+
icon: !this.isEditable ? "sap-icon://display" : "sap-icon://form",
|
|
168
|
+
press: () => {
|
|
169
|
+
const dialog = new Dialog({
|
|
170
|
+
title: schema.title || schema.ui?.label || "Dictionary Map",
|
|
171
|
+
contentWidth: "600px",
|
|
172
|
+
contentHeight: "400px",
|
|
173
|
+
horizontalScrolling: false,
|
|
174
|
+
content: [container],
|
|
175
|
+
buttons: [new Button({
|
|
176
|
+
text: !this.isEditable ? "Close" : "OK",
|
|
177
|
+
type: "Emphasized",
|
|
178
|
+
press: () => {
|
|
179
|
+
dialog.close();
|
|
180
|
+
}
|
|
181
|
+
})],
|
|
182
|
+
afterClose: () => {
|
|
183
|
+
// Remove container so it isn't destroyed when the dialog is destroyed
|
|
184
|
+
dialog.removeAllContent();
|
|
185
|
+
dialog.destroy();
|
|
186
|
+
}
|
|
187
|
+
});
|
|
188
|
+
|
|
189
|
+
// Add dependent to ensure models are inherited properly if needed
|
|
190
|
+
if (this.control) {
|
|
191
|
+
this.control.addDependent(dialog);
|
|
192
|
+
}
|
|
193
|
+
dialog.open();
|
|
194
|
+
}
|
|
195
|
+
});
|
|
196
|
+
return this.control;
|
|
197
|
+
}
|
|
198
|
+
getValue() {
|
|
199
|
+
return null;
|
|
200
|
+
}
|
|
201
|
+
validate() {
|
|
202
|
+
return {
|
|
203
|
+
isValid: true
|
|
204
|
+
};
|
|
205
|
+
}
|
|
206
|
+
applyState() {}
|
|
207
|
+
destroy() {
|
|
208
|
+
if (this._binding) {
|
|
209
|
+
this._binding.destroy();
|
|
210
|
+
this._binding = null;
|
|
211
|
+
}
|
|
212
|
+
super.destroy();
|
|
213
|
+
}
|
|
214
|
+
}
|
|
215
|
+
return DictionaryMapPlugin;
|
|
216
|
+
});
|
|
217
|
+
//# sourceMappingURL=DictionaryMapPlugin-dbg.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DictionaryMapPlugin-dbg.js","names":["BasePlugin","___BasePlugin","PluginRegistry","____core_PluginRegistry","DictionaryMapPlugin","_isSyncing","_binding","canHandle","schema","type","additionalProperties","render","bindingPath","modelName","engineScopeId","onChange","model","metadata","valueSchema","container","VBox","width","addStyleClass","absolutePath","startsWith","currentData","getProperty","localItems","Object","keys","map","k","key","value","localModel","JSONModel","items","syncToParent","newDict","forEach","item","trim","setProperty","bindProperty","attachChange","initialize","headerItems","Title","text","title","ui","label","level","isEditable","push","Button","icon","press","header","HBox","justifyContent","alignItems","addItem","columns","Column","Label","hAlign","table","Table","mode","noDataText","setModel","bindItems","path","factory","sId","oContext","rowPath","getPath","keyInput","Input","editable","change","plugin","getInstance","getPlugin","widget","effectiveValueSchema","readOnly","valueControl","Date","now","cells","delBtn","matchIndex","parseInt","split","pop","splice","ColumnListItem","control","id","generateStableId","dialog","Dialog","contentWidth","contentHeight","horizontalScrolling","content","buttons","close","afterClose","removeAllContent","destroy","addDependent","open","getValue","validate","isValid","applyState"],"sources":["DictionaryMapPlugin.ts"],"sourcesContent":["/**\n * @file DictionaryMapPlugin.ts\n * @description Plugin for rendering open-ended JSON Dictionaries (additionalProperties).\n */\n\nimport { BasePlugin } from \"./BasePlugin\";\nimport { ISchema, IPropertyMetadata } from \"../../interfaces/ISchema\";\nimport { PluginRegistry } from \"../../core/PluginRegistry\";\nimport VBox from \"sap/m/VBox\";\nimport HBox from \"sap/m/HBox\";\nimport Input from \"sap/m/Input\";\nimport Button from \"sap/m/Button\";\nimport Title from \"sap/m/Title\";\nimport Table from \"sap/m/Table\";\nimport Column from \"sap/m/Column\";\nimport Label from \"sap/m/Label\";\nimport ColumnListItem from \"sap/m/ColumnListItem\";\nimport JSONModel from \"sap/ui/model/json/JSONModel\";\nimport Control from \"sap/ui/core/Control\";\nimport Dialog from \"sap/m/Dialog\";\nimport Toolbar from \"sap/m/Toolbar\";\nimport ToolbarSpacer from \"sap/m/ToolbarSpacer\";\n\n/**\n * Plugin for rendering open-ended JSON Dictionaries (additionalProperties).\n * Uses a local JSONModel and sap.m.Table to provide a stable, zero-hack UI5 two-way binding experience.\n * \n * @public\n */\nexport default class DictionaryMapPlugin extends BasePlugin {\n private _isSyncing: boolean = false;\n private _binding: sap.ui.model.PropertyBinding | null = null;\n\n public canHandle(schema: ISchema | IPropertyMetadata): boolean {\n return schema.type === \"object\" && typeof schema.additionalProperties === \"object\";\n }\n\n public render(\n schema: ISchema | IPropertyMetadata, \n bindingPath: string, \n modelName: string, \n engineScopeId: string, \n onChange?: () => void, \n model?: sap.ui.model.Model\n ): Control {\n this.onChange = onChange;\n this.metadata = schema as IPropertyMetadata;\n\n\n\n const valueSchema = (schema.additionalProperties as IPropertyMetadata) || { type: \"string\" };\n const container = new VBox({ width: \"100%\" }).addStyleClass(\"sapUiSmallMarginTopBottom\");\n \n const absolutePath = bindingPath.startsWith(\"/\") ? bindingPath : `/${bindingPath}`;\n \n // 1. Initialize local flat array model for the Table\n const currentData = model ? model.getProperty(absolutePath) || {} : {};\n\n \n const localItems = Object.keys(currentData).map(k => ({ key: k, value: currentData[k] }));\n const localModel = new JSONModel({ items: localItems });\n \n // Setup listener to flush local model back to parent dictionary model\n const syncToParent = () => {\n if (!model) return;\n this._isSyncing = true;\n const items = localModel.getProperty(\"/items\") as any[];\n const newDict: Record<string, any> = {};\n items.forEach(item => {\n if (item.key && item.key.trim() !== \"\") {\n newDict[item.key] = item.value;\n }\n });\n\n model.setProperty(absolutePath, newDict);\n if (this.onChange) this.onChange();\n this._isSyncing = false;\n };\n\n if (model) {\n this._binding = model.bindProperty(absolutePath);\n this._binding.attachChange(() => {\n if (this._isSyncing) return;\n const currentData = model.getProperty(absolutePath) || {};\n\n const localItems = Object.keys(currentData).map(k => ({ key: k, value: currentData[k] }));\n localModel.setProperty(\"/items\", localItems);\n });\n this._binding.initialize();\n }\n\n const headerItems: Control[] = [\n new Title({ text: schema.title || schema.ui?.label || \"Dictionary Map\", level: \"H5\" })\n ];\n\n if (this.isEditable) {\n headerItems.push(\n new Button({\n text: \"Add Property\",\n icon: \"sap-icon://add\",\n press: () => {\n const items = localModel.getProperty(\"/items\") as any[];\n items.push({ key: \"\", value: null });\n localModel.setProperty(\"/items\", items);\n syncToParent();\n }\n })\n );\n }\n\n const header = new HBox({\n justifyContent: \"SpaceBetween\",\n alignItems: \"Center\",\n items: headerItems\n }).addStyleClass(\"sapUiSmallMarginBottom\");\n\n container.addItem(header);\n\n // 2. Build the Table\n const columns = [\n new Column({ header: new Label({ text: \"Key\" }) }),\n new Column({ header: new Label({ text: \"Value\" }) })\n ];\n\n if (this.isEditable) {\n columns.push(new Column({ width: \"4rem\", hAlign: \"Center\" }));\n }\n\n const table = new Table({\n mode: \"None\",\n noDataText: \"No metadata properties defined.\",\n columns: columns\n });\n\n table.setModel(localModel, \"localDict\");\n\n table.bindItems({\n path: \"localDict>/items\",\n factory: (sId: string, oContext: sap.ui.model.Context) => {\n const rowPath = oContext.getPath();\n \n // Key Input\n const keyInput = new Input({\n value: \"{localDict>key}\",\n editable: this.isEditable,\n change: () => syncToParent()\n });\n\n // Value Control\n const plugin = PluginRegistry.getInstance().getPlugin(valueSchema.type || \"string\", valueSchema.ui?.widget);\n \n // Temporarily override value schema readOnly state if the dictionary as a whole is readOnly\n const effectiveValueSchema = { ...valueSchema };\n if (!this.isEditable) {\n if (!effectiveValueSchema.ui) effectiveValueSchema.ui = {};\n effectiveValueSchema.ui.readOnly = true;\n }\n\n const valueControl = plugin.render(\n effectiveValueSchema,\n `${rowPath}/value`,\n \"localDict\",\n \"dict_\" + Date.now(),\n () => syncToParent(),\n localModel\n );\n\n const cells: Control[] = [keyInput, valueControl];\n\n if (this.isEditable) {\n const delBtn = new Button({\n icon: \"sap-icon://delete\",\n type: \"Reject\",\n press: () => {\n const items = localModel.getProperty(\"/items\") as any[];\n const matchIndex = parseInt(rowPath.split(\"/\").pop() || \"0\", 10);\n items.splice(matchIndex, 1);\n localModel.setProperty(\"/items\", items);\n syncToParent();\n }\n });\n cells.push(delBtn);\n }\n\n return new ColumnListItem({ cells });\n }\n });\n\n container.addItem(table);\n\n this.control = new Button({\n id: this.generateStableId(engineScopeId, bindingPath),\n text: !this.isEditable ? \"View Dictionary\" : \"Edit Dictionary\",\n icon: !this.isEditable ? \"sap-icon://display\" : \"sap-icon://form\",\n press: () => {\n\n const dialog = new Dialog({\n title: schema.title || schema.ui?.label || \"Dictionary Map\",\n contentWidth: \"600px\",\n contentHeight: \"400px\",\n horizontalScrolling: false,\n content: [container],\n buttons: [\n new Button({\n text: !this.isEditable ? \"Close\" : \"OK\",\n type: \"Emphasized\",\n press: () => {\n dialog.close();\n }\n })\n ],\n afterClose: () => {\n // Remove container so it isn't destroyed when the dialog is destroyed\n dialog.removeAllContent();\n dialog.destroy();\n }\n });\n \n // Add dependent to ensure models are inherited properly if needed\n if (this.control) {\n this.control.addDependent(dialog);\n }\n \n dialog.open();\n }\n });\n\n return this.control as Control;\n }\n\n protected getValue(): unknown {\n return null;\n }\n\n public validate(): import(\"../../interfaces/IPlugin\").IPluginValidationResult {\n return { isValid: true };\n }\n\n protected applyState(): void {\n }\n\n public destroy(): void {\n if (this._binding) {\n this._binding.destroy();\n this._binding = null;\n }\n super.destroy();\n }\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
declare module "nz/co/siliconst/ui5/metaui/plugins/controls/DictionaryMapPlugin" {
|
|
2
|
+
/**
|
|
3
|
+
* @file DictionaryMapPlugin.ts
|
|
4
|
+
* @description Plugin for rendering open-ended JSON Dictionaries (additionalProperties).
|
|
5
|
+
*/
|
|
6
|
+
import { BasePlugin } from "nz/co/siliconst/ui5/metaui/plugins/controls/BasePlugin";
|
|
7
|
+
import { ISchema, IPropertyMetadata } from "nz/co/siliconst/ui5/metaui/interfaces/ISchema";
|
|
8
|
+
import Control from "sap/ui/core/Control";
|
|
9
|
+
/**
|
|
10
|
+
* Plugin for rendering open-ended JSON Dictionaries (additionalProperties).
|
|
11
|
+
* Uses a local JSONModel and sap.m.Table to provide a stable, zero-hack UI5 two-way binding experience.
|
|
12
|
+
*
|
|
13
|
+
* @public
|
|
14
|
+
*/
|
|
15
|
+
export default class DictionaryMapPlugin extends BasePlugin {
|
|
16
|
+
private _isSyncing;
|
|
17
|
+
private _binding;
|
|
18
|
+
canHandle(schema: ISchema | IPropertyMetadata): boolean;
|
|
19
|
+
render(schema: ISchema | IPropertyMetadata, bindingPath: string, modelName: string, engineScopeId: string, onChange?: () => void, model?: sap.ui.model.Model): Control;
|
|
20
|
+
protected getValue(): unknown;
|
|
21
|
+
validate(): import("nz/co/siliconst/ui5/metaui/interfaces/IPlugin").IPluginValidationResult;
|
|
22
|
+
protected applyState(): void;
|
|
23
|
+
destroy(): void;
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
//# sourceMappingURL=DictionaryMapPlugin.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DictionaryMapPlugin.d.ts","sourceRoot":"../../../../../../../../..","sources":["src/nz/co/siliconst/ui5/metaui/plugins/controls/DictionaryMapPlugin.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,iEAAiE,CAAC;IACjF;;;OAGG;IAEH,OAAO,EAAE,UAAU,EAAE,MAAM,wDAAwD,CAAC;IACpF,OAAO,EAAE,OAAO,EAAE,iBAAiB,EAAE,MAAM,+CAA+C,CAAC;IAY3F,OAAO,OAAO,MAAM,qBAAqB,CAAC;IAK1C;;;;;OAKG;IACH,MAAM,CAAC,OAAO,OAAO,mBAAoB,SAAQ,UAAU;QACvD,OAAO,CAAC,UAAU,CAAkB;QACpC,OAAO,CAAC,QAAQ,CAA6C;QAEtD,SAAS,CAAC,MAAM,EAAE,OAAO,GAAG,iBAAiB,GAAG,OAAO;QAIvD,MAAM,CACT,MAAM,EAAE,OAAO,GAAG,iBAAiB,EACnC,WAAW,EAAE,MAAM,EACnB,SAAS,EAAE,MAAM,EACjB,aAAa,EAAE,MAAM,EACrB,QAAQ,CAAC,EAAE,MAAM,IAAI,EACrB,KAAK,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,KAAK,CAAC,KAAK,GAC3B,OAAO;QA0LV,SAAS,CAAC,QAAQ,IAAI,OAAO;QAItB,QAAQ,IAAI,OAAO,+CAA+C,EAAE,uBAAuB;QAIlG,SAAS,CAAC,UAAU,IAAI,IAAI;QAGrB,OAAO,IAAI,IAAI;KAOzB;CAEA"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
sap.ui.define(["./BasePlugin","../../core/PluginRegistry","sap/m/VBox","sap/m/HBox","sap/m/Input","sap/m/Button","sap/m/Title","sap/m/Table","sap/m/Column","sap/m/Label","sap/m/ColumnListItem","sap/ui/model/json/JSONModel","sap/m/Dialog"],function(t,e,i,n,s,o,a,l,r,c,d,p,u){"use strict";const h=t["BasePlugin"];const y=e["PluginRegistry"];class g extends h{_isSyncing=false;_binding=null;canHandle(t){return t.type==="object"&&typeof t.additionalProperties==="object"}render(t,e,h,g,m,b){this.onChange=m;this.metadata=t;const f=t.additionalProperties||{type:"string"};const w=new i({width:"100%"}).addStyleClass("sapUiSmallMarginTopBottom");const P=e.startsWith("/")?e:`/${e}`;const C=b?b.getProperty(P)||{}:{};const S=Object.keys(C).map(t=>({key:t,value:C[t]}));const x=new p({items:S});const D=()=>{if(!b)return;this._isSyncing=true;const t=x.getProperty("/items");const e={};t.forEach(t=>{if(t.key&&t.key.trim()!==""){e[t.key]=t.value}});b.setProperty(P,e);if(this.onChange)this.onChange();this._isSyncing=false};if(b){this._binding=b.bindProperty(P);this._binding.attachChange(()=>{if(this._isSyncing)return;const t=b.getProperty(P)||{};const e=Object.keys(t).map(e=>({key:e,value:t[e]}));x.setProperty("/items",e)});this._binding.initialize()}const _=[new a({text:t.title||t.ui?.label||"Dictionary Map",level:"H5"})];if(this.isEditable){_.push(new o({text:"Add Property",icon:"sap-icon://add",press:()=>{const t=x.getProperty("/items");t.push({key:"",value:null});x.setProperty("/items",t);D()}}))}const E=new n({justifyContent:"SpaceBetween",alignItems:"Center",items:_}).addStyleClass("sapUiSmallMarginBottom");w.addItem(E);const k=[new r({header:new c({text:"Key"})}),new r({header:new c({text:"Value"})})];if(this.isEditable){k.push(new r({width:"4rem",hAlign:"Center"}))}const v=new l({mode:"None",noDataText:"No metadata properties defined.",columns:k});v.setModel(x,"localDict");v.bindItems({path:"localDict>/items",factory:(t,e)=>{const i=e.getPath();const n=new s({value:"{localDict>key}",editable:this.isEditable,change:()=>D()});const a=y.getInstance().getPlugin(f.type||"string",f.ui?.widget);const l={...f};if(!this.isEditable){if(!l.ui)l.ui={};l.ui.readOnly=true}const r=a.render(l,`${i}/value`,"localDict","dict_"+Date.now(),()=>D(),x);const c=[n,r];if(this.isEditable){const t=new o({icon:"sap-icon://delete",type:"Reject",press:()=>{const t=x.getProperty("/items");const e=parseInt(i.split("/").pop()||"0",10);t.splice(e,1);x.setProperty("/items",t);D()}});c.push(t)}return new d({cells:c})}});w.addItem(v);this.control=new o({id:this.generateStableId(g,e),text:!this.isEditable?"View Dictionary":"Edit Dictionary",icon:!this.isEditable?"sap-icon://display":"sap-icon://form",press:()=>{const e=new u({title:t.title||t.ui?.label||"Dictionary Map",contentWidth:"600px",contentHeight:"400px",horizontalScrolling:false,content:[w],buttons:[new o({text:!this.isEditable?"Close":"OK",type:"Emphasized",press:()=>{e.close()}})],afterClose:()=>{e.removeAllContent();e.destroy()}});if(this.control){this.control.addDependent(e)}e.open()}});return this.control}getValue(){return null}validate(){return{isValid:true}}applyState(){}destroy(){if(this._binding){this._binding.destroy();this._binding=null}super.destroy()}}return g});
|
|
2
|
+
//# sourceMappingURL=DictionaryMapPlugin.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DictionaryMapPlugin.js","names":["BasePlugin","___BasePlugin","PluginRegistry","____core_PluginRegistry","DictionaryMapPlugin","_isSyncing","_binding","canHandle","schema","type","additionalProperties","render","bindingPath","modelName","engineScopeId","onChange","model","this","metadata","valueSchema","container","VBox","width","addStyleClass","absolutePath","startsWith","currentData","getProperty","localItems","Object","keys","map","k","key","value","localModel","JSONModel","items","syncToParent","newDict","forEach","item","trim","setProperty","bindProperty","attachChange","initialize","headerItems","Title","text","title","ui","label","level","isEditable","push","Button","icon","press","header","HBox","justifyContent","alignItems","addItem","columns","Column","Label","hAlign","table","Table","mode","noDataText","setModel","bindItems","path","factory","sId","oContext","rowPath","getPath","keyInput","Input","editable","change","plugin","getInstance","getPlugin","widget","effectiveValueSchema","readOnly","valueControl","Date","now","cells","delBtn","matchIndex","parseInt","split","pop","splice","ColumnListItem","control","id","generateStableId","dialog","Dialog","contentWidth","contentHeight","horizontalScrolling","content","buttons","close","afterClose","removeAllContent","destroy","addDependent","open","getValue","validate","isValid","applyState","super"],"sources":["DictionaryMapPlugin.ts"],"sourcesContent":["/**\n * @file DictionaryMapPlugin.ts\n * @description Plugin for rendering open-ended JSON Dictionaries (additionalProperties).\n */\n\nimport { BasePlugin } from \"./BasePlugin\";\nimport { ISchema, IPropertyMetadata } from \"../../interfaces/ISchema\";\nimport { PluginRegistry } from \"../../core/PluginRegistry\";\nimport VBox from \"sap/m/VBox\";\nimport HBox from \"sap/m/HBox\";\nimport Input from \"sap/m/Input\";\nimport Button from \"sap/m/Button\";\nimport Title from \"sap/m/Title\";\nimport Table from \"sap/m/Table\";\nimport Column from \"sap/m/Column\";\nimport Label from \"sap/m/Label\";\nimport ColumnListItem from \"sap/m/ColumnListItem\";\nimport JSONModel from \"sap/ui/model/json/JSONModel\";\nimport Control from \"sap/ui/core/Control\";\nimport Dialog from \"sap/m/Dialog\";\nimport Toolbar from \"sap/m/Toolbar\";\nimport ToolbarSpacer from \"sap/m/ToolbarSpacer\";\n\n/**\n * Plugin for rendering open-ended JSON Dictionaries (additionalProperties).\n * Uses a local JSONModel and sap.m.Table to provide a stable, zero-hack UI5 two-way binding experience.\n * \n * @public\n */\nexport default class DictionaryMapPlugin extends BasePlugin {\n private _isSyncing: boolean = false;\n private _binding: sap.ui.model.PropertyBinding | null = null;\n\n public canHandle(schema: ISchema | IPropertyMetadata): boolean {\n return schema.type === \"object\" && typeof schema.additionalProperties === \"object\";\n }\n\n public render(\n schema: ISchema | IPropertyMetadata, \n bindingPath: string, \n modelName: string, \n engineScopeId: string, \n onChange?: () => void, \n model?: sap.ui.model.Model\n ): Control {\n this.onChange = onChange;\n this.metadata = schema as IPropertyMetadata;\n\n\n\n const valueSchema = (schema.additionalProperties as IPropertyMetadata) || { type: \"string\" };\n const container = new VBox({ width: \"100%\" }).addStyleClass(\"sapUiSmallMarginTopBottom\");\n \n const absolutePath = bindingPath.startsWith(\"/\") ? bindingPath : `/${bindingPath}`;\n \n // 1. Initialize local flat array model for the Table\n const currentData = model ? model.getProperty(absolutePath) || {} : {};\n\n \n const localItems = Object.keys(currentData).map(k => ({ key: k, value: currentData[k] }));\n const localModel = new JSONModel({ items: localItems });\n \n // Setup listener to flush local model back to parent dictionary model\n const syncToParent = () => {\n if (!model) return;\n this._isSyncing = true;\n const items = localModel.getProperty(\"/items\") as any[];\n const newDict: Record<string, any> = {};\n items.forEach(item => {\n if (item.key && item.key.trim() !== \"\") {\n newDict[item.key] = item.value;\n }\n });\n\n model.setProperty(absolutePath, newDict);\n if (this.onChange) this.onChange();\n this._isSyncing = false;\n };\n\n if (model) {\n this._binding = model.bindProperty(absolutePath);\n this._binding.attachChange(() => {\n if (this._isSyncing) return;\n const currentData = model.getProperty(absolutePath) || {};\n\n const localItems = Object.keys(currentData).map(k => ({ key: k, value: currentData[k] }));\n localModel.setProperty(\"/items\", localItems);\n });\n this._binding.initialize();\n }\n\n const headerItems: Control[] = [\n new Title({ text: schema.title || schema.ui?.label || \"Dictionary Map\", level: \"H5\" })\n ];\n\n if (this.isEditable) {\n headerItems.push(\n new Button({\n text: \"Add Property\",\n icon: \"sap-icon://add\",\n press: () => {\n const items = localModel.getProperty(\"/items\") as any[];\n items.push({ key: \"\", value: null });\n localModel.setProperty(\"/items\", items);\n syncToParent();\n }\n })\n );\n }\n\n const header = new HBox({\n justifyContent: \"SpaceBetween\",\n alignItems: \"Center\",\n items: headerItems\n }).addStyleClass(\"sapUiSmallMarginBottom\");\n\n container.addItem(header);\n\n // 2. Build the Table\n const columns = [\n new Column({ header: new Label({ text: \"Key\" }) }),\n new Column({ header: new Label({ text: \"Value\" }) })\n ];\n\n if (this.isEditable) {\n columns.push(new Column({ width: \"4rem\", hAlign: \"Center\" }));\n }\n\n const table = new Table({\n mode: \"None\",\n noDataText: \"No metadata properties defined.\",\n columns: columns\n });\n\n table.setModel(localModel, \"localDict\");\n\n table.bindItems({\n path: \"localDict>/items\",\n factory: (sId: string, oContext: sap.ui.model.Context) => {\n const rowPath = oContext.getPath();\n \n // Key Input\n const keyInput = new Input({\n value: \"{localDict>key}\",\n editable: this.isEditable,\n change: () => syncToParent()\n });\n\n // Value Control\n const plugin = PluginRegistry.getInstance().getPlugin(valueSchema.type || \"string\", valueSchema.ui?.widget);\n \n // Temporarily override value schema readOnly state if the dictionary as a whole is readOnly\n const effectiveValueSchema = { ...valueSchema };\n if (!this.isEditable) {\n if (!effectiveValueSchema.ui) effectiveValueSchema.ui = {};\n effectiveValueSchema.ui.readOnly = true;\n }\n\n const valueControl = plugin.render(\n effectiveValueSchema,\n `${rowPath}/value`,\n \"localDict\",\n \"dict_\" + Date.now(),\n () => syncToParent(),\n localModel\n );\n\n const cells: Control[] = [keyInput, valueControl];\n\n if (this.isEditable) {\n const delBtn = new Button({\n icon: \"sap-icon://delete\",\n type: \"Reject\",\n press: () => {\n const items = localModel.getProperty(\"/items\") as any[];\n const matchIndex = parseInt(rowPath.split(\"/\").pop() || \"0\", 10);\n items.splice(matchIndex, 1);\n localModel.setProperty(\"/items\", items);\n syncToParent();\n }\n });\n cells.push(delBtn);\n }\n\n return new ColumnListItem({ cells });\n }\n });\n\n container.addItem(table);\n\n this.control = new Button({\n id: this.generateStableId(engineScopeId, bindingPath),\n text: !this.isEditable ? \"View Dictionary\" : \"Edit Dictionary\",\n icon: !this.isEditable ? \"sap-icon://display\" : \"sap-icon://form\",\n press: () => {\n\n const dialog = new Dialog({\n title: schema.title || schema.ui?.label || \"Dictionary Map\",\n contentWidth: \"600px\",\n contentHeight: \"400px\",\n horizontalScrolling: false,\n content: [container],\n buttons: [\n new Button({\n text: !this.isEditable ? \"Close\" : \"OK\",\n type: \"Emphasized\",\n press: () => {\n dialog.close();\n }\n })\n ],\n afterClose: () => {\n // Remove container so it isn't destroyed when the dialog is destroyed\n dialog.removeAllContent();\n dialog.destroy();\n }\n });\n \n // Add dependent to ensure models are inherited properly if needed\n if (this.control) {\n this.control.addDependent(dialog);\n }\n \n dialog.open();\n }\n });\n\n return this.control as Control;\n }\n\n protected getValue(): unknown {\n return null;\n }\n\n public validate(): import(\"../../interfaces/IPlugin\").IPluginValidationResult {\n return { isValid: true };\n }\n\n protected applyState(): void {\n }\n\n public destroy(): void {\n if (this._binding) {\n this._binding.destroy();\n this._binding = null;\n }\n super.destroy();\n }\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,249 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @file DictionaryMapPlugin.ts
|
|
3
|
+
* @description Plugin for rendering open-ended JSON Dictionaries (additionalProperties).
|
|
4
|
+
*/
|
|
5
|
+
|
|
6
|
+
import { BasePlugin } from "./BasePlugin";
|
|
7
|
+
import { ISchema, IPropertyMetadata } from "../../interfaces/ISchema";
|
|
8
|
+
import { PluginRegistry } from "../../core/PluginRegistry";
|
|
9
|
+
import VBox from "sap/m/VBox";
|
|
10
|
+
import HBox from "sap/m/HBox";
|
|
11
|
+
import Input from "sap/m/Input";
|
|
12
|
+
import Button from "sap/m/Button";
|
|
13
|
+
import Title from "sap/m/Title";
|
|
14
|
+
import Table from "sap/m/Table";
|
|
15
|
+
import Column from "sap/m/Column";
|
|
16
|
+
import Label from "sap/m/Label";
|
|
17
|
+
import ColumnListItem from "sap/m/ColumnListItem";
|
|
18
|
+
import JSONModel from "sap/ui/model/json/JSONModel";
|
|
19
|
+
import Control from "sap/ui/core/Control";
|
|
20
|
+
import Dialog from "sap/m/Dialog";
|
|
21
|
+
import Toolbar from "sap/m/Toolbar";
|
|
22
|
+
import ToolbarSpacer from "sap/m/ToolbarSpacer";
|
|
23
|
+
|
|
24
|
+
/**
|
|
25
|
+
* Plugin for rendering open-ended JSON Dictionaries (additionalProperties).
|
|
26
|
+
* Uses a local JSONModel and sap.m.Table to provide a stable, zero-hack UI5 two-way binding experience.
|
|
27
|
+
*
|
|
28
|
+
* @public
|
|
29
|
+
*/
|
|
30
|
+
export default class DictionaryMapPlugin extends BasePlugin {
|
|
31
|
+
private _isSyncing: boolean = false;
|
|
32
|
+
private _binding: sap.ui.model.PropertyBinding | null = null;
|
|
33
|
+
|
|
34
|
+
public canHandle(schema: ISchema | IPropertyMetadata): boolean {
|
|
35
|
+
return schema.type === "object" && typeof schema.additionalProperties === "object";
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
public render(
|
|
39
|
+
schema: ISchema | IPropertyMetadata,
|
|
40
|
+
bindingPath: string,
|
|
41
|
+
modelName: string,
|
|
42
|
+
engineScopeId: string,
|
|
43
|
+
onChange?: () => void,
|
|
44
|
+
model?: sap.ui.model.Model
|
|
45
|
+
): Control {
|
|
46
|
+
this.onChange = onChange;
|
|
47
|
+
this.metadata = schema as IPropertyMetadata;
|
|
48
|
+
|
|
49
|
+
|
|
50
|
+
|
|
51
|
+
const valueSchema = (schema.additionalProperties as IPropertyMetadata) || { type: "string" };
|
|
52
|
+
const container = new VBox({ width: "100%" }).addStyleClass("sapUiSmallMarginTopBottom");
|
|
53
|
+
|
|
54
|
+
const absolutePath = bindingPath.startsWith("/") ? bindingPath : `/${bindingPath}`;
|
|
55
|
+
|
|
56
|
+
// 1. Initialize local flat array model for the Table
|
|
57
|
+
const currentData = model ? model.getProperty(absolutePath) || {} : {};
|
|
58
|
+
|
|
59
|
+
|
|
60
|
+
const localItems = Object.keys(currentData).map(k => ({ key: k, value: currentData[k] }));
|
|
61
|
+
const localModel = new JSONModel({ items: localItems });
|
|
62
|
+
|
|
63
|
+
// Setup listener to flush local model back to parent dictionary model
|
|
64
|
+
const syncToParent = () => {
|
|
65
|
+
if (!model) return;
|
|
66
|
+
this._isSyncing = true;
|
|
67
|
+
const items = localModel.getProperty("/items") as any[];
|
|
68
|
+
const newDict: Record<string, any> = {};
|
|
69
|
+
items.forEach(item => {
|
|
70
|
+
if (item.key && item.key.trim() !== "") {
|
|
71
|
+
newDict[item.key] = item.value;
|
|
72
|
+
}
|
|
73
|
+
});
|
|
74
|
+
|
|
75
|
+
model.setProperty(absolutePath, newDict);
|
|
76
|
+
if (this.onChange) this.onChange();
|
|
77
|
+
this._isSyncing = false;
|
|
78
|
+
};
|
|
79
|
+
|
|
80
|
+
if (model) {
|
|
81
|
+
this._binding = model.bindProperty(absolutePath);
|
|
82
|
+
this._binding.attachChange(() => {
|
|
83
|
+
if (this._isSyncing) return;
|
|
84
|
+
const currentData = model.getProperty(absolutePath) || {};
|
|
85
|
+
|
|
86
|
+
const localItems = Object.keys(currentData).map(k => ({ key: k, value: currentData[k] }));
|
|
87
|
+
localModel.setProperty("/items", localItems);
|
|
88
|
+
});
|
|
89
|
+
this._binding.initialize();
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
const headerItems: Control[] = [
|
|
93
|
+
new Title({ text: schema.title || schema.ui?.label || "Dictionary Map", level: "H5" })
|
|
94
|
+
];
|
|
95
|
+
|
|
96
|
+
if (this.isEditable) {
|
|
97
|
+
headerItems.push(
|
|
98
|
+
new Button({
|
|
99
|
+
text: "Add Property",
|
|
100
|
+
icon: "sap-icon://add",
|
|
101
|
+
press: () => {
|
|
102
|
+
const items = localModel.getProperty("/items") as any[];
|
|
103
|
+
items.push({ key: "", value: null });
|
|
104
|
+
localModel.setProperty("/items", items);
|
|
105
|
+
syncToParent();
|
|
106
|
+
}
|
|
107
|
+
})
|
|
108
|
+
);
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
const header = new HBox({
|
|
112
|
+
justifyContent: "SpaceBetween",
|
|
113
|
+
alignItems: "Center",
|
|
114
|
+
items: headerItems
|
|
115
|
+
}).addStyleClass("sapUiSmallMarginBottom");
|
|
116
|
+
|
|
117
|
+
container.addItem(header);
|
|
118
|
+
|
|
119
|
+
// 2. Build the Table
|
|
120
|
+
const columns = [
|
|
121
|
+
new Column({ header: new Label({ text: "Key" }) }),
|
|
122
|
+
new Column({ header: new Label({ text: "Value" }) })
|
|
123
|
+
];
|
|
124
|
+
|
|
125
|
+
if (this.isEditable) {
|
|
126
|
+
columns.push(new Column({ width: "4rem", hAlign: "Center" }));
|
|
127
|
+
}
|
|
128
|
+
|
|
129
|
+
const table = new Table({
|
|
130
|
+
mode: "None",
|
|
131
|
+
noDataText: "No metadata properties defined.",
|
|
132
|
+
columns: columns
|
|
133
|
+
});
|
|
134
|
+
|
|
135
|
+
table.setModel(localModel, "localDict");
|
|
136
|
+
|
|
137
|
+
table.bindItems({
|
|
138
|
+
path: "localDict>/items",
|
|
139
|
+
factory: (sId: string, oContext: sap.ui.model.Context) => {
|
|
140
|
+
const rowPath = oContext.getPath();
|
|
141
|
+
|
|
142
|
+
// Key Input
|
|
143
|
+
const keyInput = new Input({
|
|
144
|
+
value: "{localDict>key}",
|
|
145
|
+
editable: this.isEditable,
|
|
146
|
+
change: () => syncToParent()
|
|
147
|
+
});
|
|
148
|
+
|
|
149
|
+
// Value Control
|
|
150
|
+
const plugin = PluginRegistry.getInstance().getPlugin(valueSchema.type || "string", valueSchema.ui?.widget);
|
|
151
|
+
|
|
152
|
+
// Temporarily override value schema readOnly state if the dictionary as a whole is readOnly
|
|
153
|
+
const effectiveValueSchema = { ...valueSchema };
|
|
154
|
+
if (!this.isEditable) {
|
|
155
|
+
if (!effectiveValueSchema.ui) effectiveValueSchema.ui = {};
|
|
156
|
+
effectiveValueSchema.ui.readOnly = true;
|
|
157
|
+
}
|
|
158
|
+
|
|
159
|
+
const valueControl = plugin.render(
|
|
160
|
+
effectiveValueSchema,
|
|
161
|
+
`${rowPath}/value`,
|
|
162
|
+
"localDict",
|
|
163
|
+
"dict_" + Date.now(),
|
|
164
|
+
() => syncToParent(),
|
|
165
|
+
localModel
|
|
166
|
+
);
|
|
167
|
+
|
|
168
|
+
const cells: Control[] = [keyInput, valueControl];
|
|
169
|
+
|
|
170
|
+
if (this.isEditable) {
|
|
171
|
+
const delBtn = new Button({
|
|
172
|
+
icon: "sap-icon://delete",
|
|
173
|
+
type: "Reject",
|
|
174
|
+
press: () => {
|
|
175
|
+
const items = localModel.getProperty("/items") as any[];
|
|
176
|
+
const matchIndex = parseInt(rowPath.split("/").pop() || "0", 10);
|
|
177
|
+
items.splice(matchIndex, 1);
|
|
178
|
+
localModel.setProperty("/items", items);
|
|
179
|
+
syncToParent();
|
|
180
|
+
}
|
|
181
|
+
});
|
|
182
|
+
cells.push(delBtn);
|
|
183
|
+
}
|
|
184
|
+
|
|
185
|
+
return new ColumnListItem({ cells });
|
|
186
|
+
}
|
|
187
|
+
});
|
|
188
|
+
|
|
189
|
+
container.addItem(table);
|
|
190
|
+
|
|
191
|
+
this.control = new Button({
|
|
192
|
+
id: this.generateStableId(engineScopeId, bindingPath),
|
|
193
|
+
text: !this.isEditable ? "View Dictionary" : "Edit Dictionary",
|
|
194
|
+
icon: !this.isEditable ? "sap-icon://display" : "sap-icon://form",
|
|
195
|
+
press: () => {
|
|
196
|
+
|
|
197
|
+
const dialog = new Dialog({
|
|
198
|
+
title: schema.title || schema.ui?.label || "Dictionary Map",
|
|
199
|
+
contentWidth: "600px",
|
|
200
|
+
contentHeight: "400px",
|
|
201
|
+
horizontalScrolling: false,
|
|
202
|
+
content: [container],
|
|
203
|
+
buttons: [
|
|
204
|
+
new Button({
|
|
205
|
+
text: !this.isEditable ? "Close" : "OK",
|
|
206
|
+
type: "Emphasized",
|
|
207
|
+
press: () => {
|
|
208
|
+
dialog.close();
|
|
209
|
+
}
|
|
210
|
+
})
|
|
211
|
+
],
|
|
212
|
+
afterClose: () => {
|
|
213
|
+
// Remove container so it isn't destroyed when the dialog is destroyed
|
|
214
|
+
dialog.removeAllContent();
|
|
215
|
+
dialog.destroy();
|
|
216
|
+
}
|
|
217
|
+
});
|
|
218
|
+
|
|
219
|
+
// Add dependent to ensure models are inherited properly if needed
|
|
220
|
+
if (this.control) {
|
|
221
|
+
this.control.addDependent(dialog);
|
|
222
|
+
}
|
|
223
|
+
|
|
224
|
+
dialog.open();
|
|
225
|
+
}
|
|
226
|
+
});
|
|
227
|
+
|
|
228
|
+
return this.control as Control;
|
|
229
|
+
}
|
|
230
|
+
|
|
231
|
+
protected getValue(): unknown {
|
|
232
|
+
return null;
|
|
233
|
+
}
|
|
234
|
+
|
|
235
|
+
public validate(): import("../../interfaces/IPlugin").IPluginValidationResult {
|
|
236
|
+
return { isValid: true };
|
|
237
|
+
}
|
|
238
|
+
|
|
239
|
+
protected applyState(): void {
|
|
240
|
+
}
|
|
241
|
+
|
|
242
|
+
public destroy(): void {
|
|
243
|
+
if (this._binding) {
|
|
244
|
+
this._binding.destroy();
|
|
245
|
+
this._binding = null;
|
|
246
|
+
}
|
|
247
|
+
super.destroy();
|
|
248
|
+
}
|
|
249
|
+
}
|
|
@@ -35,20 +35,19 @@ sap.ui.define(["./BasePlugin", "sap/m/Select", "sap/ui/core/Item", "sap/m/Text"]
|
|
|
35
35
|
})) : [];
|
|
36
36
|
this.control = new TextControl({
|
|
37
37
|
id: this.generateStableId(engineScopeId, bindingPath),
|
|
38
|
-
text: {
|
|
39
|
-
path: `${modelName}>${bindingPath}`,
|
|
38
|
+
text: this.generateBindingInfo(bindingPath, modelName, undefined, {
|
|
40
39
|
formatter: key => {
|
|
41
40
|
const match = valueHelpArray.find(vh => vh.key === key);
|
|
42
41
|
return match ? match.text : key;
|
|
43
42
|
}
|
|
44
|
-
}
|
|
43
|
+
})
|
|
45
44
|
});
|
|
46
45
|
this.applyCommonDirectives(this.control, fieldMetadata, modelName);
|
|
47
46
|
return this.control;
|
|
48
47
|
}
|
|
49
48
|
const select = new Select({
|
|
50
49
|
id: this.generateStableId(engineScopeId, bindingPath),
|
|
51
|
-
selectedKey:
|
|
50
|
+
selectedKey: this.generateBindingInfo(bindingPath, modelName),
|
|
52
51
|
enabled: !fieldMetadata.ui?.readOnly,
|
|
53
52
|
forceSelection: false,
|
|
54
53
|
change: oEvent => {
|