@siliconst/metaui 1.4.34 → 1.4.44

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.
Files changed (499) hide show
  1. package/README.md +1 -1
  2. package/package.json +1 -1
  3. package/src/nz/co/siliconst/ui5/metaui/ai/BaseAIGenerator-dbg.js +22 -20
  4. package/src/nz/co/siliconst/ui5/metaui/ai/BaseAIGenerator-dbg.js.map +1 -1
  5. package/src/nz/co/siliconst/ui5/metaui/ai/BaseAIGenerator.d.ts +3 -3
  6. package/src/nz/co/siliconst/ui5/metaui/ai/BaseAIGenerator.d.ts.map +1 -1
  7. package/src/nz/co/siliconst/ui5/metaui/ai/BaseAIGenerator.js +1 -1
  8. package/src/nz/co/siliconst/ui5/metaui/ai/BaseAIGenerator.js.map +1 -1
  9. package/src/nz/co/siliconst/ui5/metaui/ai/BaseAIGenerator.ts +24 -16
  10. package/src/nz/co/siliconst/ui5/metaui/ai/RestLLMProxy-dbg.js.map +1 -1
  11. package/src/nz/co/siliconst/ui5/metaui/ai/RestLLMProxy.js.map +1 -1
  12. package/src/nz/co/siliconst/ui5/metaui/ai/RestLLMProxy.ts +2 -2
  13. package/src/nz/co/siliconst/ui5/metaui/constants/MetaUIConstants-dbg.js +62 -2
  14. package/src/nz/co/siliconst/ui5/metaui/constants/MetaUIConstants-dbg.js.map +1 -1
  15. package/src/nz/co/siliconst/ui5/metaui/constants/MetaUIConstants.d.ts +54 -0
  16. package/src/nz/co/siliconst/ui5/metaui/constants/MetaUIConstants.d.ts.map +1 -1
  17. package/src/nz/co/siliconst/ui5/metaui/constants/MetaUIConstants.js +1 -1
  18. package/src/nz/co/siliconst/ui5/metaui/constants/MetaUIConstants.js.map +1 -1
  19. package/src/nz/co/siliconst/ui5/metaui/constants/MetaUIConstants.ts +59 -2
  20. package/src/nz/co/siliconst/ui5/metaui/controls/DynamicHost-dbg.js +43 -47
  21. package/src/nz/co/siliconst/ui5/metaui/controls/DynamicHost-dbg.js.map +1 -1
  22. package/src/nz/co/siliconst/ui5/metaui/controls/DynamicHost.d.ts +2 -2
  23. package/src/nz/co/siliconst/ui5/metaui/controls/DynamicHost.d.ts.map +1 -1
  24. package/src/nz/co/siliconst/ui5/metaui/controls/DynamicHost.js +1 -1
  25. package/src/nz/co/siliconst/ui5/metaui/controls/DynamicHost.js.map +1 -1
  26. package/src/nz/co/siliconst/ui5/metaui/controls/DynamicHost.ts +61 -66
  27. package/src/nz/co/siliconst/ui5/metaui/controls/host/GeneratorHost-dbg.js +120 -63
  28. package/src/nz/co/siliconst/ui5/metaui/controls/host/GeneratorHost-dbg.js.map +1 -1
  29. package/src/nz/co/siliconst/ui5/metaui/controls/host/GeneratorHost.d.ts +16 -4
  30. package/src/nz/co/siliconst/ui5/metaui/controls/host/GeneratorHost.d.ts.map +1 -1
  31. package/src/nz/co/siliconst/ui5/metaui/controls/host/GeneratorHost.js +1 -1
  32. package/src/nz/co/siliconst/ui5/metaui/controls/host/GeneratorHost.js.map +1 -1
  33. package/src/nz/co/siliconst/ui5/metaui/controls/host/GeneratorHost.ts +126 -65
  34. package/src/nz/co/siliconst/ui5/metaui/controls/host/delegates/DataSyncDelegate-dbg.js +41 -38
  35. package/src/nz/co/siliconst/ui5/metaui/controls/host/delegates/DataSyncDelegate-dbg.js.map +1 -1
  36. package/src/nz/co/siliconst/ui5/metaui/controls/host/delegates/DataSyncDelegate.d.ts +6 -4
  37. package/src/nz/co/siliconst/ui5/metaui/controls/host/delegates/DataSyncDelegate.d.ts.map +1 -1
  38. package/src/nz/co/siliconst/ui5/metaui/controls/host/delegates/DataSyncDelegate.js +1 -1
  39. package/src/nz/co/siliconst/ui5/metaui/controls/host/delegates/DataSyncDelegate.js.map +1 -1
  40. package/src/nz/co/siliconst/ui5/metaui/controls/host/delegates/DataSyncDelegate.ts +47 -39
  41. package/src/nz/co/siliconst/ui5/metaui/controls/host/delegates/DialogDelegate-dbg.js +41 -2
  42. package/src/nz/co/siliconst/ui5/metaui/controls/host/delegates/DialogDelegate-dbg.js.map +1 -1
  43. package/src/nz/co/siliconst/ui5/metaui/controls/host/delegates/DialogDelegate.d.ts +6 -2
  44. package/src/nz/co/siliconst/ui5/metaui/controls/host/delegates/DialogDelegate.d.ts.map +1 -1
  45. package/src/nz/co/siliconst/ui5/metaui/controls/host/delegates/DialogDelegate.js +1 -1
  46. package/src/nz/co/siliconst/ui5/metaui/controls/host/delegates/DialogDelegate.js.map +1 -1
  47. package/src/nz/co/siliconst/ui5/metaui/controls/host/delegates/DialogDelegate.ts +47 -2
  48. package/src/nz/co/siliconst/ui5/metaui/controls/host/delegates/ValidationDelegate-dbg.js +7 -2
  49. package/src/nz/co/siliconst/ui5/metaui/controls/host/delegates/ValidationDelegate-dbg.js.map +1 -1
  50. package/src/nz/co/siliconst/ui5/metaui/controls/host/delegates/ValidationDelegate.d.ts +4 -1
  51. package/src/nz/co/siliconst/ui5/metaui/controls/host/delegates/ValidationDelegate.d.ts.map +1 -1
  52. package/src/nz/co/siliconst/ui5/metaui/controls/host/delegates/ValidationDelegate.js +1 -1
  53. package/src/nz/co/siliconst/ui5/metaui/controls/host/delegates/ValidationDelegate.js.map +1 -1
  54. package/src/nz/co/siliconst/ui5/metaui/controls/host/delegates/ValidationDelegate.ts +7 -2
  55. package/src/nz/co/siliconst/ui5/metaui/core/Engine-dbg.js +212 -34
  56. package/src/nz/co/siliconst/ui5/metaui/core/Engine-dbg.js.map +1 -1
  57. package/src/nz/co/siliconst/ui5/metaui/core/Engine.d.ts +21 -3
  58. package/src/nz/co/siliconst/ui5/metaui/core/Engine.d.ts.map +1 -1
  59. package/src/nz/co/siliconst/ui5/metaui/core/Engine.js +1 -1
  60. package/src/nz/co/siliconst/ui5/metaui/core/Engine.js.map +1 -1
  61. package/src/nz/co/siliconst/ui5/metaui/core/Engine.ts +214 -35
  62. package/src/nz/co/siliconst/ui5/metaui/core/LayoutMutator-dbg.js +3 -1
  63. package/src/nz/co/siliconst/ui5/metaui/core/LayoutMutator-dbg.js.map +1 -1
  64. package/src/nz/co/siliconst/ui5/metaui/core/LayoutMutator.d.ts.map +1 -1
  65. package/src/nz/co/siliconst/ui5/metaui/core/LayoutMutator.js +1 -1
  66. package/src/nz/co/siliconst/ui5/metaui/core/LayoutMutator.js.map +1 -1
  67. package/src/nz/co/siliconst/ui5/metaui/core/LayoutMutator.ts +3 -1
  68. package/src/nz/co/siliconst/ui5/metaui/core/LayoutScorer-dbg.js +5 -0
  69. package/src/nz/co/siliconst/ui5/metaui/core/LayoutScorer-dbg.js.map +1 -1
  70. package/src/nz/co/siliconst/ui5/metaui/core/LayoutScorer.d.ts.map +1 -1
  71. package/src/nz/co/siliconst/ui5/metaui/core/LayoutScorer.js +1 -1
  72. package/src/nz/co/siliconst/ui5/metaui/core/LayoutScorer.js.map +1 -1
  73. package/src/nz/co/siliconst/ui5/metaui/core/LayoutScorer.ts +6 -0
  74. package/src/nz/co/siliconst/ui5/metaui/core/PipelineManager-dbg.js +8 -0
  75. package/src/nz/co/siliconst/ui5/metaui/core/PipelineManager-dbg.js.map +1 -1
  76. package/src/nz/co/siliconst/ui5/metaui/core/PipelineManager.d.ts.map +1 -1
  77. package/src/nz/co/siliconst/ui5/metaui/core/PipelineManager.js +1 -1
  78. package/src/nz/co/siliconst/ui5/metaui/core/PipelineManager.js.map +1 -1
  79. package/src/nz/co/siliconst/ui5/metaui/core/PipelineManager.ts +7 -0
  80. package/src/nz/co/siliconst/ui5/metaui/core/PluginRegistry-dbg.js +127 -50
  81. package/src/nz/co/siliconst/ui5/metaui/core/PluginRegistry-dbg.js.map +1 -1
  82. package/src/nz/co/siliconst/ui5/metaui/core/PluginRegistry.d.ts +13 -0
  83. package/src/nz/co/siliconst/ui5/metaui/core/PluginRegistry.d.ts.map +1 -1
  84. package/src/nz/co/siliconst/ui5/metaui/core/PluginRegistry.js +1 -1
  85. package/src/nz/co/siliconst/ui5/metaui/core/PluginRegistry.js.map +1 -1
  86. package/src/nz/co/siliconst/ui5/metaui/core/PluginRegistry.ts +140 -57
  87. package/src/nz/co/siliconst/ui5/metaui/core/PolicyEngine-dbg.js +229 -0
  88. package/src/nz/co/siliconst/ui5/metaui/core/PolicyEngine-dbg.js.map +1 -0
  89. package/src/nz/co/siliconst/ui5/metaui/core/PolicyEngine.d.ts +68 -0
  90. package/src/nz/co/siliconst/ui5/metaui/core/PolicyEngine.d.ts.map +1 -0
  91. package/src/nz/co/siliconst/ui5/metaui/core/PolicyEngine.js +2 -0
  92. package/src/nz/co/siliconst/ui5/metaui/core/PolicyEngine.js.map +1 -0
  93. package/src/nz/co/siliconst/ui5/metaui/core/PolicyEngine.ts +227 -0
  94. package/src/nz/co/siliconst/ui5/metaui/core/SchemaNormalizer-dbg.js +34 -13
  95. package/src/nz/co/siliconst/ui5/metaui/core/SchemaNormalizer-dbg.js.map +1 -1
  96. package/src/nz/co/siliconst/ui5/metaui/core/SchemaNormalizer.d.ts +4 -4
  97. package/src/nz/co/siliconst/ui5/metaui/core/SchemaNormalizer.d.ts.map +1 -1
  98. package/src/nz/co/siliconst/ui5/metaui/core/SchemaNormalizer.js +1 -1
  99. package/src/nz/co/siliconst/ui5/metaui/core/SchemaNormalizer.js.map +1 -1
  100. package/src/nz/co/siliconst/ui5/metaui/core/SchemaNormalizer.ts +45 -20
  101. package/src/nz/co/siliconst/ui5/metaui/core/SchemaValidator-dbg.js +15 -3
  102. package/src/nz/co/siliconst/ui5/metaui/core/SchemaValidator-dbg.js.map +1 -1
  103. package/src/nz/co/siliconst/ui5/metaui/core/SchemaValidator.d.ts.map +1 -1
  104. package/src/nz/co/siliconst/ui5/metaui/core/SchemaValidator.js +1 -1
  105. package/src/nz/co/siliconst/ui5/metaui/core/SchemaValidator.js.map +1 -1
  106. package/src/nz/co/siliconst/ui5/metaui/core/SchemaValidator.ts +15 -1
  107. package/src/nz/co/siliconst/ui5/metaui/core/StateManager-dbg.js +82 -16
  108. package/src/nz/co/siliconst/ui5/metaui/core/StateManager-dbg.js.map +1 -1
  109. package/src/nz/co/siliconst/ui5/metaui/core/StateManager.d.ts +16 -0
  110. package/src/nz/co/siliconst/ui5/metaui/core/StateManager.d.ts.map +1 -1
  111. package/src/nz/co/siliconst/ui5/metaui/core/StateManager.js +1 -1
  112. package/src/nz/co/siliconst/ui5/metaui/core/StateManager.js.map +1 -1
  113. package/src/nz/co/siliconst/ui5/metaui/core/StateManager.ts +89 -17
  114. package/src/nz/co/siliconst/ui5/metaui/interfaces/IPlugin-dbg.js.map +1 -1
  115. package/src/nz/co/siliconst/ui5/metaui/interfaces/IPlugin.d.ts +12 -1
  116. package/src/nz/co/siliconst/ui5/metaui/interfaces/IPlugin.d.ts.map +1 -1
  117. package/src/nz/co/siliconst/ui5/metaui/interfaces/IPlugin.ts +13 -1
  118. package/src/nz/co/siliconst/ui5/metaui/interfaces/IPolicyPlugin-dbg.js +2 -0
  119. package/src/nz/co/siliconst/ui5/metaui/interfaces/IPolicyPlugin-dbg.js.map +1 -0
  120. package/src/nz/co/siliconst/ui5/metaui/interfaces/IPolicyPlugin.d.ts +50 -0
  121. package/src/nz/co/siliconst/ui5/metaui/interfaces/IPolicyPlugin.d.ts.map +1 -0
  122. package/src/nz/co/siliconst/ui5/metaui/interfaces/IPolicyPlugin.js +2 -0
  123. package/src/nz/co/siliconst/ui5/metaui/interfaces/IPolicyPlugin.js.map +1 -0
  124. package/src/nz/co/siliconst/ui5/metaui/interfaces/IPolicyPlugin.ts +49 -0
  125. package/src/nz/co/siliconst/ui5/metaui/interfaces/ISchema-dbg.js.map +1 -1
  126. package/src/nz/co/siliconst/ui5/metaui/interfaces/ISchema.d.ts +21 -1
  127. package/src/nz/co/siliconst/ui5/metaui/interfaces/ISchema.d.ts.map +1 -1
  128. package/src/nz/co/siliconst/ui5/metaui/interfaces/ISchema.ts +24 -1
  129. package/src/nz/co/siliconst/ui5/metaui/layouts/FormLayout-dbg.js +26 -31
  130. package/src/nz/co/siliconst/ui5/metaui/layouts/FormLayout-dbg.js.map +1 -1
  131. package/src/nz/co/siliconst/ui5/metaui/layouts/FormLayout.d.ts.map +1 -1
  132. package/src/nz/co/siliconst/ui5/metaui/layouts/FormLayout.js +1 -1
  133. package/src/nz/co/siliconst/ui5/metaui/layouts/FormLayout.js.map +1 -1
  134. package/src/nz/co/siliconst/ui5/metaui/layouts/FormLayout.ts +22 -25
  135. package/src/nz/co/siliconst/ui5/metaui/layouts/TableLayout-dbg.js +40 -6
  136. package/src/nz/co/siliconst/ui5/metaui/layouts/TableLayout-dbg.js.map +1 -1
  137. package/src/nz/co/siliconst/ui5/metaui/layouts/TableLayout.d.ts.map +1 -1
  138. package/src/nz/co/siliconst/ui5/metaui/layouts/TableLayout.js +1 -1
  139. package/src/nz/co/siliconst/ui5/metaui/layouts/TableLayout.js.map +1 -1
  140. package/src/nz/co/siliconst/ui5/metaui/layouts/TableLayout.ts +37 -5
  141. package/src/nz/co/siliconst/ui5/metaui/library-preload.js +69 -56
  142. package/src/nz/co/siliconst/ui5/metaui/library-preload.js.map +1 -1
  143. package/src/nz/co/siliconst/ui5/metaui/openapi/OpenApiParserFactory-dbg.js +3 -2
  144. package/src/nz/co/siliconst/ui5/metaui/openapi/OpenApiParserFactory-dbg.js.map +1 -1
  145. package/src/nz/co/siliconst/ui5/metaui/openapi/OpenApiParserFactory.d.ts +1 -1
  146. package/src/nz/co/siliconst/ui5/metaui/openapi/OpenApiParserFactory.d.ts.map +1 -1
  147. package/src/nz/co/siliconst/ui5/metaui/openapi/OpenApiParserFactory.js +1 -1
  148. package/src/nz/co/siliconst/ui5/metaui/openapi/OpenApiParserFactory.js.map +1 -1
  149. package/src/nz/co/siliconst/ui5/metaui/openapi/OpenApiParserFactory.ts +4 -3
  150. package/src/nz/co/siliconst/ui5/metaui/openapi/OpenApiRefResolver-dbg.js.map +1 -1
  151. package/src/nz/co/siliconst/ui5/metaui/openapi/OpenApiRefResolver.d.ts +1 -1
  152. package/src/nz/co/siliconst/ui5/metaui/openapi/OpenApiRefResolver.d.ts.map +1 -1
  153. package/src/nz/co/siliconst/ui5/metaui/openapi/OpenApiRefResolver.js.map +1 -1
  154. package/src/nz/co/siliconst/ui5/metaui/openapi/OpenApiRefResolver.ts +4 -4
  155. package/src/nz/co/siliconst/ui5/metaui/openapi/OpenApiUIMapper-dbg.js +2 -1
  156. package/src/nz/co/siliconst/ui5/metaui/openapi/OpenApiUIMapper-dbg.js.map +1 -1
  157. package/src/nz/co/siliconst/ui5/metaui/openapi/OpenApiUIMapper.d.ts +1 -1
  158. package/src/nz/co/siliconst/ui5/metaui/openapi/OpenApiUIMapper.d.ts.map +1 -1
  159. package/src/nz/co/siliconst/ui5/metaui/openapi/OpenApiUIMapper.js +1 -1
  160. package/src/nz/co/siliconst/ui5/metaui/openapi/OpenApiUIMapper.js.map +1 -1
  161. package/src/nz/co/siliconst/ui5/metaui/openapi/OpenApiUIMapper.ts +4 -3
  162. package/src/nz/co/siliconst/ui5/metaui/openapi/heuristics/plugins/ProtobufVariantHeuristic-dbg.js +12 -8
  163. package/src/nz/co/siliconst/ui5/metaui/openapi/heuristics/plugins/ProtobufVariantHeuristic-dbg.js.map +1 -1
  164. package/src/nz/co/siliconst/ui5/metaui/openapi/heuristics/plugins/ProtobufVariantHeuristic.d.ts +1 -1
  165. package/src/nz/co/siliconst/ui5/metaui/openapi/heuristics/plugins/ProtobufVariantHeuristic.d.ts.map +1 -1
  166. package/src/nz/co/siliconst/ui5/metaui/openapi/heuristics/plugins/ProtobufVariantHeuristic.js +1 -1
  167. package/src/nz/co/siliconst/ui5/metaui/openapi/heuristics/plugins/ProtobufVariantHeuristic.js.map +1 -1
  168. package/src/nz/co/siliconst/ui5/metaui/openapi/heuristics/plugins/ProtobufVariantHeuristic.ts +16 -12
  169. package/src/nz/co/siliconst/ui5/metaui/openapi/parsers/OpenApi2Parser-dbg.js +20 -12
  170. package/src/nz/co/siliconst/ui5/metaui/openapi/parsers/OpenApi2Parser-dbg.js.map +1 -1
  171. package/src/nz/co/siliconst/ui5/metaui/openapi/parsers/OpenApi2Parser.d.ts +5 -5
  172. package/src/nz/co/siliconst/ui5/metaui/openapi/parsers/OpenApi2Parser.d.ts.map +1 -1
  173. package/src/nz/co/siliconst/ui5/metaui/openapi/parsers/OpenApi2Parser.js +1 -1
  174. package/src/nz/co/siliconst/ui5/metaui/openapi/parsers/OpenApi2Parser.js.map +1 -1
  175. package/src/nz/co/siliconst/ui5/metaui/openapi/parsers/OpenApi2Parser.ts +25 -17
  176. package/src/nz/co/siliconst/ui5/metaui/openapi/parsers/OpenApi3Parser-dbg.js +18 -11
  177. package/src/nz/co/siliconst/ui5/metaui/openapi/parsers/OpenApi3Parser-dbg.js.map +1 -1
  178. package/src/nz/co/siliconst/ui5/metaui/openapi/parsers/OpenApi3Parser.d.ts +5 -5
  179. package/src/nz/co/siliconst/ui5/metaui/openapi/parsers/OpenApi3Parser.d.ts.map +1 -1
  180. package/src/nz/co/siliconst/ui5/metaui/openapi/parsers/OpenApi3Parser.js +1 -1
  181. package/src/nz/co/siliconst/ui5/metaui/openapi/parsers/OpenApi3Parser.js.map +1 -1
  182. package/src/nz/co/siliconst/ui5/metaui/openapi/parsers/OpenApi3Parser.ts +23 -16
  183. package/src/nz/co/siliconst/ui5/metaui/openapi/parsers/OpenApiPropertyMapper-dbg.js +24 -100
  184. package/src/nz/co/siliconst/ui5/metaui/openapi/parsers/OpenApiPropertyMapper-dbg.js.map +1 -1
  185. package/src/nz/co/siliconst/ui5/metaui/openapi/parsers/OpenApiPropertyMapper.d.ts +10 -74
  186. package/src/nz/co/siliconst/ui5/metaui/openapi/parsers/OpenApiPropertyMapper.d.ts.map +1 -1
  187. package/src/nz/co/siliconst/ui5/metaui/openapi/parsers/OpenApiPropertyMapper.js +1 -1
  188. package/src/nz/co/siliconst/ui5/metaui/openapi/parsers/OpenApiPropertyMapper.js.map +1 -1
  189. package/src/nz/co/siliconst/ui5/metaui/openapi/parsers/OpenApiPropertyMapper.ts +54 -117
  190. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/ArrayPlugin-dbg.js +7 -4
  191. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/ArrayPlugin-dbg.js.map +1 -1
  192. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/ArrayPlugin.d.ts +1 -1
  193. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/ArrayPlugin.d.ts.map +1 -1
  194. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/ArrayPlugin.js +1 -1
  195. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/ArrayPlugin.js.map +1 -1
  196. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/ArrayPlugin.ts +6 -4
  197. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/BarcodeScannerPlugin-dbg.js +4 -4
  198. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/BarcodeScannerPlugin-dbg.js.map +1 -1
  199. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/BarcodeScannerPlugin.d.ts +1 -1
  200. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/BarcodeScannerPlugin.d.ts.map +1 -1
  201. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/BarcodeScannerPlugin.js +1 -1
  202. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/BarcodeScannerPlugin.js.map +1 -1
  203. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/BarcodeScannerPlugin.ts +5 -5
  204. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/BasePlugin-dbg.js +129 -9
  205. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/BasePlugin-dbg.js.map +1 -1
  206. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/BasePlugin.d.ts +45 -4
  207. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/BasePlugin.d.ts.map +1 -1
  208. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/BasePlugin.js +1 -1
  209. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/BasePlugin.js.map +1 -1
  210. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/BasePlugin.ts +143 -13
  211. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/BooleanPlugin-dbg.js +35 -14
  212. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/BooleanPlugin-dbg.js.map +1 -1
  213. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/BooleanPlugin.d.ts +1 -1
  214. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/BooleanPlugin.d.ts.map +1 -1
  215. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/BooleanPlugin.js +1 -1
  216. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/BooleanPlugin.js.map +1 -1
  217. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/BooleanPlugin.ts +38 -14
  218. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/CameraPlugin-dbg.js +2 -2
  219. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/CameraPlugin-dbg.js.map +1 -1
  220. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/CameraPlugin.d.ts +1 -1
  221. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/CameraPlugin.d.ts.map +1 -1
  222. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/CameraPlugin.js +1 -1
  223. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/CameraPlugin.js.map +1 -1
  224. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/CameraPlugin.ts +3 -3
  225. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/CodeEditorPlugin-dbg.js +69 -20
  226. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/CodeEditorPlugin-dbg.js.map +1 -1
  227. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/CodeEditorPlugin.d.ts +2 -1
  228. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/CodeEditorPlugin.d.ts.map +1 -1
  229. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/CodeEditorPlugin.js +1 -1
  230. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/CodeEditorPlugin.js.map +1 -1
  231. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/CodeEditorPlugin.ts +77 -21
  232. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/DatePlugin-dbg.js +2 -2
  233. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/DatePlugin-dbg.js.map +1 -1
  234. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/DatePlugin.d.ts +1 -1
  235. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/DatePlugin.d.ts.map +1 -1
  236. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/DatePlugin.js +1 -1
  237. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/DatePlugin.js.map +1 -1
  238. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/DatePlugin.ts +3 -3
  239. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/DateTimePlugin-dbg.js +2 -2
  240. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/DateTimePlugin-dbg.js.map +1 -1
  241. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/DateTimePlugin.d.ts +1 -1
  242. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/DateTimePlugin.d.ts.map +1 -1
  243. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/DateTimePlugin.js +1 -1
  244. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/DateTimePlugin.js.map +1 -1
  245. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/DateTimePlugin.ts +3 -3
  246. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/DictionaryMapPlugin-dbg.js +1 -0
  247. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/DictionaryMapPlugin-dbg.js.map +1 -1
  248. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/DictionaryMapPlugin.d.ts.map +1 -1
  249. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/DictionaryMapPlugin.js +1 -1
  250. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/DictionaryMapPlugin.js.map +1 -1
  251. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/DictionaryMapPlugin.ts +6 -5
  252. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/DropdownPlugin-dbg.js +8 -3
  253. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/DropdownPlugin-dbg.js.map +1 -1
  254. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/DropdownPlugin.d.ts +1 -1
  255. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/DropdownPlugin.d.ts.map +1 -1
  256. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/DropdownPlugin.js +1 -1
  257. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/DropdownPlugin.js.map +1 -1
  258. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/DropdownPlugin.ts +9 -4
  259. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/EmailPlugin-dbg.js +2 -2
  260. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/EmailPlugin-dbg.js.map +1 -1
  261. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/EmailPlugin.d.ts +1 -1
  262. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/EmailPlugin.d.ts.map +1 -1
  263. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/EmailPlugin.js +1 -1
  264. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/EmailPlugin.js.map +1 -1
  265. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/EmailPlugin.ts +3 -3
  266. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/FileUploaderPlugin-dbg.js +2 -2
  267. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/FileUploaderPlugin-dbg.js.map +1 -1
  268. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/FileUploaderPlugin.d.ts +1 -1
  269. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/FileUploaderPlugin.d.ts.map +1 -1
  270. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/FileUploaderPlugin.js +1 -1
  271. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/FileUploaderPlugin.js.map +1 -1
  272. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/FileUploaderPlugin.ts +3 -3
  273. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/GeolocationPlugin-dbg.js +2 -2
  274. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/GeolocationPlugin-dbg.js.map +1 -1
  275. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/GeolocationPlugin.d.ts +1 -1
  276. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/GeolocationPlugin.d.ts.map +1 -1
  277. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/GeolocationPlugin.js +1 -1
  278. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/GeolocationPlugin.js.map +1 -1
  279. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/GeolocationPlugin.ts +3 -3
  280. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/LinkPlugin-dbg.js +2 -2
  281. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/LinkPlugin-dbg.js.map +1 -1
  282. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/LinkPlugin.d.ts +1 -1
  283. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/LinkPlugin.d.ts.map +1 -1
  284. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/LinkPlugin.js +1 -1
  285. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/LinkPlugin.js.map +1 -1
  286. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/LinkPlugin.ts +3 -3
  287. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/MessageStripPlugin-dbg.js.map +1 -1
  288. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/MessageStripPlugin.d.ts +1 -1
  289. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/MessageStripPlugin.d.ts.map +1 -1
  290. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/MessageStripPlugin.js.map +1 -1
  291. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/MessageStripPlugin.ts +1 -1
  292. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/MultiInputPlugin-dbg.js +6 -5
  293. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/MultiInputPlugin-dbg.js.map +1 -1
  294. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/MultiInputPlugin.d.ts +1 -1
  295. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/MultiInputPlugin.d.ts.map +1 -1
  296. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/MultiInputPlugin.js +1 -1
  297. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/MultiInputPlugin.js.map +1 -1
  298. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/MultiInputPlugin.ts +9 -8
  299. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/MultiSelectPlugin-dbg.js +2 -2
  300. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/MultiSelectPlugin-dbg.js.map +1 -1
  301. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/MultiSelectPlugin.d.ts +1 -1
  302. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/MultiSelectPlugin.d.ts.map +1 -1
  303. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/MultiSelectPlugin.js +1 -1
  304. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/MultiSelectPlugin.js.map +1 -1
  305. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/MultiSelectPlugin.ts +3 -3
  306. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/NumberPlugin-dbg.js +35 -20
  307. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/NumberPlugin-dbg.js.map +1 -1
  308. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/NumberPlugin.d.ts +1 -1
  309. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/NumberPlugin.d.ts.map +1 -1
  310. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/NumberPlugin.js +1 -1
  311. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/NumberPlugin.js.map +1 -1
  312. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/NumberPlugin.ts +39 -22
  313. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/ObjectPlugin-dbg.js +5 -3
  314. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/ObjectPlugin-dbg.js.map +1 -1
  315. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/ObjectPlugin.d.ts +1 -1
  316. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/ObjectPlugin.d.ts.map +1 -1
  317. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/ObjectPlugin.js +1 -1
  318. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/ObjectPlugin.js.map +1 -1
  319. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/ObjectPlugin.ts +4 -3
  320. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/PasswordPlugin-dbg.js +2 -2
  321. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/PasswordPlugin-dbg.js.map +1 -1
  322. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/PasswordPlugin.d.ts +1 -1
  323. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/PasswordPlugin.d.ts.map +1 -1
  324. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/PasswordPlugin.js +1 -1
  325. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/PasswordPlugin.js.map +1 -1
  326. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/PasswordPlugin.ts +3 -3
  327. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/RatingIndicatorPlugin-dbg.js +2 -2
  328. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/RatingIndicatorPlugin-dbg.js.map +1 -1
  329. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/RatingIndicatorPlugin.d.ts +1 -1
  330. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/RatingIndicatorPlugin.d.ts.map +1 -1
  331. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/RatingIndicatorPlugin.js +1 -1
  332. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/RatingIndicatorPlugin.js.map +1 -1
  333. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/RatingIndicatorPlugin.ts +3 -3
  334. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/ReferencePlugin-dbg.js +28 -12
  335. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/ReferencePlugin-dbg.js.map +1 -1
  336. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/ReferencePlugin.d.ts +5 -1
  337. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/ReferencePlugin.d.ts.map +1 -1
  338. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/ReferencePlugin.js +1 -1
  339. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/ReferencePlugin.js.map +1 -1
  340. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/ReferencePlugin.ts +29 -10
  341. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/RichTextPlugin-dbg.js +2 -2
  342. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/RichTextPlugin-dbg.js.map +1 -1
  343. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/RichTextPlugin.d.ts +1 -1
  344. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/RichTextPlugin.d.ts.map +1 -1
  345. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/RichTextPlugin.js +1 -1
  346. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/RichTextPlugin.js.map +1 -1
  347. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/RichTextPlugin.ts +3 -3
  348. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/SignaturePlugin-dbg.js +2 -2
  349. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/SignaturePlugin-dbg.js.map +1 -1
  350. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/SignaturePlugin.d.ts +1 -1
  351. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/SignaturePlugin.d.ts.map +1 -1
  352. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/SignaturePlugin.js +1 -1
  353. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/SignaturePlugin.js.map +1 -1
  354. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/SignaturePlugin.ts +3 -3
  355. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/SliderPlugin-dbg.js +2 -2
  356. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/SliderPlugin-dbg.js.map +1 -1
  357. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/SliderPlugin.d.ts +1 -1
  358. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/SliderPlugin.d.ts.map +1 -1
  359. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/SliderPlugin.js +1 -1
  360. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/SliderPlugin.js.map +1 -1
  361. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/SliderPlugin.ts +3 -3
  362. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/StepInputPlugin-dbg.js +13 -3
  363. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/StepInputPlugin-dbg.js.map +1 -1
  364. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/StepInputPlugin.d.ts +1 -1
  365. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/StepInputPlugin.d.ts.map +1 -1
  366. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/StepInputPlugin.js +1 -1
  367. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/StepInputPlugin.js.map +1 -1
  368. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/StepInputPlugin.ts +14 -5
  369. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/StringPlugin-dbg.js +2 -2
  370. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/StringPlugin-dbg.js.map +1 -1
  371. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/StringPlugin.d.ts +1 -1
  372. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/StringPlugin.d.ts.map +1 -1
  373. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/StringPlugin.js +1 -1
  374. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/StringPlugin.js.map +1 -1
  375. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/StringPlugin.ts +3 -3
  376. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/SwitchPlugin-dbg.js +2 -2
  377. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/SwitchPlugin-dbg.js.map +1 -1
  378. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/SwitchPlugin.d.ts +1 -1
  379. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/SwitchPlugin.d.ts.map +1 -1
  380. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/SwitchPlugin.js +1 -1
  381. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/SwitchPlugin.js.map +1 -1
  382. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/SwitchPlugin.ts +3 -3
  383. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/TextAreaPlugin-dbg.js +58 -56
  384. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/TextAreaPlugin-dbg.js.map +1 -1
  385. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/TextAreaPlugin.d.ts +2 -5
  386. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/TextAreaPlugin.d.ts.map +1 -1
  387. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/TextAreaPlugin.js +1 -1
  388. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/TextAreaPlugin.js.map +1 -1
  389. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/TextAreaPlugin.ts +66 -55
  390. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/TimePlugin-dbg.js +2 -2
  391. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/TimePlugin-dbg.js.map +1 -1
  392. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/TimePlugin.d.ts +1 -1
  393. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/TimePlugin.d.ts.map +1 -1
  394. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/TimePlugin.js +1 -1
  395. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/TimePlugin.js.map +1 -1
  396. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/TimePlugin.ts +3 -3
  397. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/VoiceInputPlugin-dbg.js +2 -2
  398. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/VoiceInputPlugin-dbg.js.map +1 -1
  399. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/VoiceInputPlugin.d.ts +1 -1
  400. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/VoiceInputPlugin.d.ts.map +1 -1
  401. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/VoiceInputPlugin.js +1 -1
  402. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/VoiceInputPlugin.js.map +1 -1
  403. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/VoiceInputPlugin.ts +3 -3
  404. package/src/nz/co/siliconst/ui5/metaui/plugins/datasources/LiveSearchPlugin-dbg.js.map +1 -1
  405. package/src/nz/co/siliconst/ui5/metaui/plugins/datasources/LiveSearchPlugin.js.map +1 -1
  406. package/src/nz/co/siliconst/ui5/metaui/plugins/datasources/LiveSearchPlugin.ts +110 -109
  407. package/src/nz/co/siliconst/ui5/metaui/plugins/datasources/ODataListBindingPlugin-dbg.js +2 -1
  408. package/src/nz/co/siliconst/ui5/metaui/plugins/datasources/ODataListBindingPlugin-dbg.js.map +1 -1
  409. package/src/nz/co/siliconst/ui5/metaui/plugins/datasources/ODataListBindingPlugin.d.ts.map +1 -1
  410. package/src/nz/co/siliconst/ui5/metaui/plugins/datasources/ODataListBindingPlugin.js +1 -1
  411. package/src/nz/co/siliconst/ui5/metaui/plugins/datasources/ODataListBindingPlugin.js.map +1 -1
  412. package/src/nz/co/siliconst/ui5/metaui/plugins/datasources/ODataListBindingPlugin.ts +66 -64
  413. package/src/nz/co/siliconst/ui5/metaui/plugins/datasources/RemoteDropdownPlugin-dbg.js +29 -8
  414. package/src/nz/co/siliconst/ui5/metaui/plugins/datasources/RemoteDropdownPlugin-dbg.js.map +1 -1
  415. package/src/nz/co/siliconst/ui5/metaui/plugins/datasources/RemoteDropdownPlugin.d.ts +1 -1
  416. package/src/nz/co/siliconst/ui5/metaui/plugins/datasources/RemoteDropdownPlugin.d.ts.map +1 -1
  417. package/src/nz/co/siliconst/ui5/metaui/plugins/datasources/RemoteDropdownPlugin.js +1 -1
  418. package/src/nz/co/siliconst/ui5/metaui/plugins/datasources/RemoteDropdownPlugin.js.map +1 -1
  419. package/src/nz/co/siliconst/ui5/metaui/plugins/datasources/RemoteDropdownPlugin.ts +145 -118
  420. package/src/nz/co/siliconst/ui5/metaui/plugins/datasources/RemoteValueHelpPlugin-dbg.js.map +1 -1
  421. package/src/nz/co/siliconst/ui5/metaui/plugins/datasources/RemoteValueHelpPlugin.js.map +1 -1
  422. package/src/nz/co/siliconst/ui5/metaui/plugins/datasources/RemoteValueHelpPlugin.ts +106 -105
  423. package/src/nz/co/siliconst/ui5/metaui/plugins/policies/conditions/IsNotNullConditionPlugin-dbg.js +41 -0
  424. package/src/nz/co/siliconst/ui5/metaui/plugins/policies/conditions/IsNotNullConditionPlugin-dbg.js.map +1 -0
  425. package/src/nz/co/siliconst/ui5/metaui/plugins/policies/conditions/IsNotNullConditionPlugin.d.ts +24 -0
  426. package/src/nz/co/siliconst/ui5/metaui/plugins/policies/conditions/IsNotNullConditionPlugin.d.ts.map +1 -0
  427. package/src/nz/co/siliconst/ui5/metaui/plugins/policies/conditions/IsNotNullConditionPlugin.js +2 -0
  428. package/src/nz/co/siliconst/ui5/metaui/plugins/policies/conditions/IsNotNullConditionPlugin.js.map +1 -0
  429. package/src/nz/co/siliconst/ui5/metaui/plugins/policies/conditions/IsNotNullConditionPlugin.ts +34 -0
  430. package/src/nz/co/siliconst/ui5/metaui/plugins/policies/conditions/IsNullConditionPlugin-dbg.js +41 -0
  431. package/src/nz/co/siliconst/ui5/metaui/plugins/policies/conditions/IsNullConditionPlugin-dbg.js.map +1 -0
  432. package/src/nz/co/siliconst/ui5/metaui/plugins/policies/conditions/IsNullConditionPlugin.d.ts +24 -0
  433. package/src/nz/co/siliconst/ui5/metaui/plugins/policies/conditions/IsNullConditionPlugin.d.ts.map +1 -0
  434. package/src/nz/co/siliconst/ui5/metaui/plugins/policies/conditions/IsNullConditionPlugin.js +2 -0
  435. package/src/nz/co/siliconst/ui5/metaui/plugins/policies/conditions/IsNullConditionPlugin.js.map +1 -0
  436. package/src/nz/co/siliconst/ui5/metaui/plugins/policies/conditions/IsNullConditionPlugin.ts +34 -0
  437. package/src/nz/co/siliconst/ui5/metaui/plugins/policies/conditions/NumericGreaterThanConditionPlugin-dbg.js +52 -0
  438. package/src/nz/co/siliconst/ui5/metaui/plugins/policies/conditions/NumericGreaterThanConditionPlugin-dbg.js.map +1 -0
  439. package/src/nz/co/siliconst/ui5/metaui/plugins/policies/conditions/NumericGreaterThanConditionPlugin.d.ts +30 -0
  440. package/src/nz/co/siliconst/ui5/metaui/plugins/policies/conditions/NumericGreaterThanConditionPlugin.d.ts.map +1 -0
  441. package/src/nz/co/siliconst/ui5/metaui/plugins/policies/conditions/NumericGreaterThanConditionPlugin.js +2 -0
  442. package/src/nz/co/siliconst/ui5/metaui/plugins/policies/conditions/NumericGreaterThanConditionPlugin.js.map +1 -0
  443. package/src/nz/co/siliconst/ui5/metaui/plugins/policies/conditions/NumericGreaterThanConditionPlugin.ts +45 -0
  444. package/src/nz/co/siliconst/ui5/metaui/plugins/policies/conditions/NumericLessThanConditionPlugin-dbg.js +52 -0
  445. package/src/nz/co/siliconst/ui5/metaui/plugins/policies/conditions/NumericLessThanConditionPlugin-dbg.js.map +1 -0
  446. package/src/nz/co/siliconst/ui5/metaui/plugins/policies/conditions/NumericLessThanConditionPlugin.d.ts +30 -0
  447. package/src/nz/co/siliconst/ui5/metaui/plugins/policies/conditions/NumericLessThanConditionPlugin.d.ts.map +1 -0
  448. package/src/nz/co/siliconst/ui5/metaui/plugins/policies/conditions/NumericLessThanConditionPlugin.js +2 -0
  449. package/src/nz/co/siliconst/ui5/metaui/plugins/policies/conditions/NumericLessThanConditionPlugin.js.map +1 -0
  450. package/src/nz/co/siliconst/ui5/metaui/plugins/policies/conditions/NumericLessThanConditionPlugin.ts +45 -0
  451. package/src/nz/co/siliconst/ui5/metaui/plugins/policies/conditions/StringEqualsConditionPlugin-dbg.js +41 -0
  452. package/src/nz/co/siliconst/ui5/metaui/plugins/policies/conditions/StringEqualsConditionPlugin-dbg.js.map +1 -0
  453. package/src/nz/co/siliconst/ui5/metaui/plugins/policies/conditions/StringEqualsConditionPlugin.d.ts +24 -0
  454. package/src/nz/co/siliconst/ui5/metaui/plugins/policies/conditions/StringEqualsConditionPlugin.d.ts.map +1 -0
  455. package/src/nz/co/siliconst/ui5/metaui/plugins/policies/conditions/StringEqualsConditionPlugin.js +2 -0
  456. package/src/nz/co/siliconst/ui5/metaui/plugins/policies/conditions/StringEqualsConditionPlugin.js.map +1 -0
  457. package/src/nz/co/siliconst/ui5/metaui/plugins/policies/conditions/StringEqualsConditionPlugin.ts +34 -0
  458. package/src/nz/co/siliconst/ui5/metaui/plugins/policies/effects/EditableEffectPlugin-dbg.js +40 -0
  459. package/src/nz/co/siliconst/ui5/metaui/plugins/policies/effects/EditableEffectPlugin-dbg.js.map +1 -0
  460. package/src/nz/co/siliconst/ui5/metaui/plugins/policies/effects/EditableEffectPlugin.d.ts +28 -0
  461. package/src/nz/co/siliconst/ui5/metaui/plugins/policies/effects/EditableEffectPlugin.d.ts.map +1 -0
  462. package/src/nz/co/siliconst/ui5/metaui/plugins/policies/effects/EditableEffectPlugin.js +2 -0
  463. package/src/nz/co/siliconst/ui5/metaui/plugins/policies/effects/EditableEffectPlugin.js.map +1 -0
  464. package/src/nz/co/siliconst/ui5/metaui/plugins/policies/effects/EditableEffectPlugin.ts +34 -0
  465. package/src/nz/co/siliconst/ui5/metaui/plugins/policies/effects/RequirementEffectPlugin-dbg.js +40 -0
  466. package/src/nz/co/siliconst/ui5/metaui/plugins/policies/effects/RequirementEffectPlugin-dbg.js.map +1 -0
  467. package/src/nz/co/siliconst/ui5/metaui/plugins/policies/effects/RequirementEffectPlugin.d.ts +28 -0
  468. package/src/nz/co/siliconst/ui5/metaui/plugins/policies/effects/RequirementEffectPlugin.d.ts.map +1 -0
  469. package/src/nz/co/siliconst/ui5/metaui/plugins/policies/effects/RequirementEffectPlugin.js +2 -0
  470. package/src/nz/co/siliconst/ui5/metaui/plugins/policies/effects/RequirementEffectPlugin.js.map +1 -0
  471. package/src/nz/co/siliconst/ui5/metaui/plugins/policies/effects/RequirementEffectPlugin.ts +34 -0
  472. package/src/nz/co/siliconst/ui5/metaui/plugins/policies/effects/ValidityEffectPlugin-dbg.js +40 -0
  473. package/src/nz/co/siliconst/ui5/metaui/plugins/policies/effects/ValidityEffectPlugin-dbg.js.map +1 -0
  474. package/src/nz/co/siliconst/ui5/metaui/plugins/policies/effects/ValidityEffectPlugin.d.ts +28 -0
  475. package/src/nz/co/siliconst/ui5/metaui/plugins/policies/effects/ValidityEffectPlugin.d.ts.map +1 -0
  476. package/src/nz/co/siliconst/ui5/metaui/plugins/policies/effects/ValidityEffectPlugin.js +2 -0
  477. package/src/nz/co/siliconst/ui5/metaui/plugins/policies/effects/ValidityEffectPlugin.js.map +1 -0
  478. package/src/nz/co/siliconst/ui5/metaui/plugins/policies/effects/ValidityEffectPlugin.ts +34 -0
  479. package/src/nz/co/siliconst/ui5/metaui/plugins/policies/effects/VisibilityEffectPlugin-dbg.js +40 -0
  480. package/src/nz/co/siliconst/ui5/metaui/plugins/policies/effects/VisibilityEffectPlugin-dbg.js.map +1 -0
  481. package/src/nz/co/siliconst/ui5/metaui/plugins/policies/effects/VisibilityEffectPlugin.d.ts +28 -0
  482. package/src/nz/co/siliconst/ui5/metaui/plugins/policies/effects/VisibilityEffectPlugin.d.ts.map +1 -0
  483. package/src/nz/co/siliconst/ui5/metaui/plugins/policies/effects/VisibilityEffectPlugin.js +2 -0
  484. package/src/nz/co/siliconst/ui5/metaui/plugins/policies/effects/VisibilityEffectPlugin.js.map +1 -0
  485. package/src/nz/co/siliconst/ui5/metaui/plugins/policies/effects/VisibilityEffectPlugin.ts +34 -0
  486. package/src/nz/co/siliconst/ui5/metaui/services/SchemaProvider-dbg.js +33 -0
  487. package/src/nz/co/siliconst/ui5/metaui/services/SchemaProvider-dbg.js.map +1 -0
  488. package/src/nz/co/siliconst/ui5/metaui/services/SchemaProvider.d.ts +14 -0
  489. package/src/nz/co/siliconst/ui5/metaui/services/SchemaProvider.d.ts.map +1 -0
  490. package/src/nz/co/siliconst/ui5/metaui/services/SchemaProvider.js +2 -0
  491. package/src/nz/co/siliconst/ui5/metaui/services/SchemaProvider.js.map +1 -0
  492. package/src/nz/co/siliconst/ui5/metaui/services/SchemaProvider.ts +24 -0
  493. package/src/nz/co/siliconst/ui5/metaui/core/ConditionEngine-dbg.js +0 -75
  494. package/src/nz/co/siliconst/ui5/metaui/core/ConditionEngine-dbg.js.map +0 -1
  495. package/src/nz/co/siliconst/ui5/metaui/core/ConditionEngine.d.ts +0 -47
  496. package/src/nz/co/siliconst/ui5/metaui/core/ConditionEngine.d.ts.map +0 -1
  497. package/src/nz/co/siliconst/ui5/metaui/core/ConditionEngine.js +0 -2
  498. package/src/nz/co/siliconst/ui5/metaui/core/ConditionEngine.js.map +0 -1
  499. package/src/nz/co/siliconst/ui5/metaui/core/ConditionEngine.ts +0 -72
@@ -1 +1 @@
1
- {"version":3,"file":"TextAreaPlugin-dbg.js","names":["BasePlugin","___BasePlugin","TextAreaPlugin","render","fieldMetadata","bindingPath","modelName","engineScopeId","onChange","metadata","fieldKey","replace","isEditable","control","TextControl","id","generateStableId","text","generateBindingInfo","applyCommonDirectives","TextArea","value","maxLength","required","rows","growing","change","oEvent","updateHeight","getSource","result","validateAndApplyVisualState","isValid","liveChange","attachEventOnce","oBinding","getBinding","initLogic","attachChange","oTextArea","val","getProperty","numLines","split","length","wrappedLines","Math","ceil","totalLines","max","setRows","getValue","applyState","input","setEditable","ui","readOnly","setRequired","__exports","__esModule"],"sources":["TextAreaPlugin.ts"],"sourcesContent":["/**\n * @file TextAreaPlugin.ts\n * @description Renders a sap.m.TextArea for string data specifically marked with the textArea widget.\n */\n\nimport { BasePlugin } from \"./BasePlugin\";\nimport { IPropertyMetadata } from \"../../interfaces/ISchema\";\nimport TextArea from \"sap/m/TextArea\";\nimport Control from \"sap/ui/core/Control\";\nimport TextControl from \"sap/m/Text\";\n\n/**\n * Handles rendering and logic for multi-line text areas.\n */\nexport class TextAreaPlugin extends BasePlugin {\n /**\n * Renders a `sap.m.TextArea` component.\n * \n * @param fieldMetadata 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 TextArea control.\n */\n public render(fieldMetadata: IPropertyMetadata, bindingPath: string, modelName: string = \"meta\", engineScopeId?: string, onChange?: (isValid: boolean, fieldKey?: string) => void): Control {\n this.onChange = onChange;\n this.metadata = fieldMetadata;\n this.fieldKey = bindingPath.replace(\"/\", \"\"); // For EventBus\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, fieldMetadata, modelName);\n return this.control as Control;\n }\n\n this.control = new TextArea({\n id: this.generateStableId(engineScopeId, bindingPath),\n value: this.generateBindingInfo(bindingPath, modelName),\n maxLength: fieldMetadata.maxLength || 0,\n required: !!fieldMetadata.required,\n rows: 3, // Start with at least 3 lines\n growing: false, // We manage height manually to maintain the +2 lines requirement\n change: (oEvent: sap.ui.base.Event) => {\n this.updateHeight(oEvent.getSource() as TextArea);\n const result = this.validateAndApplyVisualState();\n if (this.onChange) {\n this.onChange(result.isValid, this.fieldKey);\n }\n },\n liveChange: (oEvent: sap.ui.base.Event) => {\n this.updateHeight(oEvent.getSource() as TextArea);\n }\n });\n\n // Clean architecture: Wait for the model context, then calculate initial height\n (this.control as TextArea).attachEventOnce(\"modelContextChange\", () => {\n const oBinding = (this.control as TextArea).getBinding(\"value\");\n \n const initLogic = () => {\n if (this.control) {\n this.updateHeight(this.control as TextArea);\n }\n };\n\n if (oBinding) {\n oBinding.attachChange(initLogic);\n }\n // Execute immediately in case the model is synchronous (JSONModel)\n initLogic();\n });\n\n this.applyCommonDirectives(this.control, fieldMetadata, modelName);\n\n return this.control as Control;\n }\n\n /**\n * Dynamically sets the rows to the content length + 2\n */\n private updateHeight(oTextArea: TextArea): void {\n const val = oTextArea.getProperty('value') || \"\";\n // Count actual newlines in the string\n const numLines = val.split(/\\r\\n|\\r|\\n/).length;\n // Also estimate word wrapping if they type a really long single line without pressing enter\n // A standard character width approximation, assuming ~80 chars per line for full width\n const wrappedLines = Math.ceil(val.length / 80);\n \n const totalLines = Math.max(numLines, wrappedLines);\n \n // Ensure there is always 2 lines of extra breathing room\n oTextArea.setRows(Math.max(3, totalLines + 2));\n }\n\n /**\n * Retrieves the current text string.\n * @returns {unknown} The text string.\n */\n protected getValue(): unknown {\n return this.control ? (this.control as TextArea).getProperty('value') : null;\n }\n\n /**\n * Applies dynamic read-only state.\n */\n protected applyState(): void {\n if (this.control && this.metadata) {\n if (!this.isEditable) return;\n const input = this.control as TextArea;\n input.setEditable(!this.metadata.ui?.readOnly);\n input.setRequired(this.metadata.required);\n }\n }\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"TextAreaPlugin-dbg.js","names":["BasePlugin","___BasePlugin","TextAreaPlugin","render","fieldMetadata","bindingPath","modelName","engineScopeId","onChange","metadata","fieldKey","replace","schemaRows","ui","rows","useDialog","expandable","textArea","TextArea","id","generateStableId","value","generateBindingInfo","maxLength","required","editable","isEditable","readOnly","growing","growingMaxLines","width","change","result","validate","isValid","errorMessage","textAreaRef","mainControl","expandBtn","Button","icon","type","tooltip","press","dlg","Dialog","title","label","contentWidth","contentHeight","verticalScrolling","resizable","content","height","beginButton","text","close","afterClose","destroy","control","addDependent","open","setLayoutData","FlexItemData","growFactor","HBox","alignItems","items","applyCommonDirectives","getValue","getProperty","applyState","setEditable","setRequired","__exports","__esModule"],"sources":["TextAreaPlugin.ts"],"sourcesContent":["/**\n * @file TextAreaPlugin.ts\n * @description Renders a sap.m.TextArea for string data specifically marked with the textArea widget.\n */\n\nimport { BasePlugin } from \"./BasePlugin\";\nimport { IPropertyMetadata } from \"../../interfaces/ISchema\";\nimport TextArea from \"sap/m/TextArea\";\nimport Control from \"sap/ui/core/Control\";\nimport TextControl from \"sap/m/Text\";\nimport HBox from \"sap/m/HBox\";\nimport Button from \"sap/m/Button\";\nimport Dialog from \"sap/m/Dialog\";\nimport FlexItemData from \"sap/m/FlexItemData\";\n\n/**\n * Handles rendering and logic for multi-line text areas.\n */\nexport class TextAreaPlugin extends BasePlugin {\n private textAreaRef?: TextArea;\n \n /**\n * Renders a `sap.m.TextArea` component.\n * \n * @param fieldMetadata 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 TextArea control.\n */\n public render(fieldMetadata: 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 = fieldMetadata;\n this.fieldKey = bindingPath.replace(\"/\", \"\"); // For EventBus\n \n\n\n const schemaRows = fieldMetadata.ui?.rows;\n const useDialog = fieldMetadata.ui?.expandable !== false;\n\n const textArea = new TextArea({\n id: this.generateStableId(engineScopeId, bindingPath),\n value: this.generateBindingInfo(bindingPath, modelName),\n maxLength: fieldMetadata.maxLength || 0,\n required: !!fieldMetadata.required,\n editable: !this.isEditable ? false : !fieldMetadata.ui?.readOnly,\n rows: schemaRows || 10,\n growing: true,\n growingMaxLines: schemaRows || 15,\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 this.textAreaRef = textArea;\n this.mainControl = textArea;\n\n if (useDialog) {\n const expandBtn = new Button({\n icon: \"sap-icon://full-screen\",\n type: \"Transparent\",\n tooltip: \"Expand Editor\",\n press: () => {\n const dlg = new Dialog({\n title: fieldMetadata.title || fieldMetadata.ui?.label || \"Edit Text\",\n contentWidth: \"80%\",\n contentHeight: \"80%\",\n verticalScrolling: false,\n resizable: true,\n content: new TextArea({\n value: this.generateBindingInfo(bindingPath, modelName),\n width: \"100%\",\n height: \"100%\",\n editable: !this.isEditable ? false : !fieldMetadata.ui?.readOnly,\n growing: false\n }),\n beginButton: new Button({\n text: \"Close\",\n press: () => dlg.close()\n }),\n afterClose: () => dlg.destroy()\n });\n this.control?.addDependent(dlg);\n dlg.open();\n }\n });\n\n textArea.setLayoutData(new FlexItemData({ growFactor: 1 }));\n\n this.control = new HBox({\n width: \"100%\",\n alignItems: \"Start\",\n items: [textArea, expandBtn]\n });\n } else {\n this.control = textArea;\n }\n\n this.mainControl = textArea;\n this.applyCommonDirectives(this.control, fieldMetadata, modelName);\n\n return this.control as Control;\n }\n\n\n\n /**\n * Retrieves the current text string.\n * @returns {unknown} The text string.\n */\n protected getValue(): unknown {\n return this.textAreaRef ? this.textAreaRef.getProperty('value') : null;\n }\n\n /**\n * Applies dynamic read-only state.\n */\n protected applyState(): void {\n if (this.textAreaRef && this.metadata) {\n if (!this.isEditable) return;\n this.textAreaRef.setEditable(!this.metadata.ui?.readOnly);\n this.textAreaRef.setRequired(!!this.metadata.required);\n }\n }\n}\n"],"mappings":"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","ignoreList":[]}
@@ -10,6 +10,7 @@ declare module "nz/co/siliconst/ui5/metaui/plugins/controls/TextAreaPlugin" {
10
10
  * Handles rendering and logic for multi-line text areas.
11
11
  */
12
12
  export class TextAreaPlugin extends BasePlugin {
13
+ private textAreaRef?;
13
14
  /**
14
15
  * Renders a `sap.m.TextArea` component.
15
16
  *
@@ -20,11 +21,7 @@ declare module "nz/co/siliconst/ui5/metaui/plugins/controls/TextAreaPlugin" {
20
21
  * @param onChange The callback fired on value change.
21
22
  * @returns {Control} The configured TextArea control.
22
23
  */
23
- render(fieldMetadata: IPropertyMetadata, bindingPath: string, modelName?: string, engineScopeId?: string, onChange?: (isValid: boolean, fieldKey?: string) => void): Control;
24
- /**
25
- * Dynamically sets the rows to the content length + 2
26
- */
27
- private updateHeight;
24
+ render(fieldMetadata: IPropertyMetadata, bindingPath: string, modelName?: string, engineScopeId?: string, onChange?: (isValid: boolean, fieldKey?: string, errorMessage?: string, controlId?: string) => void): Control;
28
25
  /**
29
26
  * Retrieves the current text string.
30
27
  * @returns {unknown} The text string.
@@ -1 +1 @@
1
- {"version":3,"file":"TextAreaPlugin.d.ts","sourceRoot":"../../../../../../../../..","sources":["src/nz/co/siliconst/ui5/metaui/plugins/controls/TextAreaPlugin.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,4DAA4D,CAAC;IAC5E;;;OAGG;IAEH,OAAO,EAAE,UAAU,EAAE,MAAM,wDAAwD,CAAC;IACpF,OAAO,EAAE,iBAAiB,EAAE,MAAM,+CAA+C,CAAC;IAElF,OAAO,OAAO,MAAM,qBAAqB,CAAC;IAG1C;;OAEG;IACH,MAAa,cAAe,SAAQ,UAAU;QAC1C;;;;;;;;;WASG;QACI,MAAM,CAAC,aAAa,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;QAwD7L;;WAEG;QACH,OAAO,CAAC,YAAY;QAcpB;;;WAGG;QACH,SAAS,CAAC,QAAQ,IAAI,OAAO;QAI7B;;WAEG;QACH,SAAS,CAAC,UAAU,IAAI,IAAI;KAQ/B;CAEA"}
1
+ {"version":3,"file":"TextAreaPlugin.d.ts","sourceRoot":"../../../../../../../../..","sources":["src/nz/co/siliconst/ui5/metaui/plugins/controls/TextAreaPlugin.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,4DAA4D,CAAC;IAC5E;;;OAGG;IAEH,OAAO,EAAE,UAAU,EAAE,MAAM,wDAAwD,CAAC;IACpF,OAAO,EAAE,iBAAiB,EAAE,MAAM,+CAA+C,CAAC;IAElF,OAAO,OAAO,MAAM,qBAAqB,CAAC;IAO1C;;OAEG;IACH,MAAa,cAAe,SAAQ,UAAU;QAC1C,OAAO,CAAC,WAAW,CAAC,CAAW;QAE/B;;;;;;;;;WASG;QACI,MAAM,CAAC,aAAa,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;QA+ExO;;;WAGG;QACH,SAAS,CAAC,QAAQ,IAAI,OAAO;QAI7B;;WAEG;QACH,SAAS,CAAC,UAAU,IAAI,IAAI;KAO/B;CAEA"}
@@ -1,2 +1,2 @@
1
- sap.ui.define(["./BasePlugin","sap/m/TextArea","sap/m/Text"],function(t,e,i){"use strict";const n=t["BasePlugin"];class a extends n{render(t,n,a="meta",s,o){this.onChange=o;this.metadata=t;this.fieldKey=n.replace("/","");if(!this.isEditable){this.control=new i({id:this.generateStableId(s,n),text:this.generateBindingInfo(n,a)});this.applyCommonDirectives(this.control,t,a);return this.control}this.control=new e({id:this.generateStableId(s,n),value:this.generateBindingInfo(n,a),maxLength:t.maxLength||0,required:!!t.required,rows:3,growing:false,change:t=>{this.updateHeight(t.getSource());const e=this.validateAndApplyVisualState();if(this.onChange){this.onChange(e.isValid,this.fieldKey)}},liveChange:t=>{this.updateHeight(t.getSource())}});this.control.attachEventOnce("modelContextChange",()=>{const t=this.control.getBinding("value");const e=()=>{if(this.control){this.updateHeight(this.control)}};if(t){t.attachChange(e)}e()});this.applyCommonDirectives(this.control,t,a);return this.control}updateHeight(t){const e=t.getProperty("value")||"";const i=e.split(/\r\n|\r|\n/).length;const n=Math.ceil(e.length/80);const a=Math.max(i,n);t.setRows(Math.max(3,a+2))}getValue(){return this.control?this.control.getProperty("value"):null}applyState(){if(this.control&&this.metadata){if(!this.isEditable)return;const t=this.control;t.setEditable(!this.metadata.ui?.readOnly);t.setRequired(this.metadata.required)}}}var s={__esModule:true};s.TextAreaPlugin=a;return s});
1
+ sap.ui.define(["./BasePlugin","sap/m/TextArea","sap/m/HBox","sap/m/Button","sap/m/Dialog","sap/m/FlexItemData"],function(e,t,i,a,s,n){"use strict";const r=e["BasePlugin"];class l extends r{render(e,r,l="meta",o,h){this.onChange=h;this.metadata=e;this.fieldKey=r.replace("/","");const d=e.ui?.rows;const u=e.ui?.expandable!==false;const g=new t({id:this.generateStableId(o,r),value:this.generateBindingInfo(r,l),maxLength:e.maxLength||0,required:!!e.required,editable:!this.isEditable?false:!e.ui?.readOnly,rows:d||10,growing:true,growingMaxLines:d||15,width:"100%",change:()=>{const e=this.validate();if(this.onChange){this.onChange(e.isValid,this.fieldKey,e.errorMessage)}}});this.textAreaRef=g;this.mainControl=g;if(u){const o=new a({icon:"sap-icon://full-screen",type:"Transparent",tooltip:"Expand Editor",press:()=>{const i=new s({title:e.title||e.ui?.label||"Edit Text",contentWidth:"80%",contentHeight:"80%",verticalScrolling:false,resizable:true,content:new t({value:this.generateBindingInfo(r,l),width:"100%",height:"100%",editable:!this.isEditable?false:!e.ui?.readOnly,growing:false}),beginButton:new a({text:"Close",press:()=>i.close()}),afterClose:()=>i.destroy()});this.control?.addDependent(i);i.open()}});g.setLayoutData(new n({growFactor:1}));this.control=new i({width:"100%",alignItems:"Start",items:[g,o]})}else{this.control=g}this.mainControl=g;this.applyCommonDirectives(this.control,e,l);return this.control}getValue(){return this.textAreaRef?this.textAreaRef.getProperty("value"):null}applyState(){if(this.textAreaRef&&this.metadata){if(!this.isEditable)return;this.textAreaRef.setEditable(!this.metadata.ui?.readOnly);this.textAreaRef.setRequired(!!this.metadata.required)}}}var o={__esModule:true};o.TextAreaPlugin=l;return o});
2
2
  //# sourceMappingURL=TextAreaPlugin.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"TextAreaPlugin.js","names":["BasePlugin","___BasePlugin","TextAreaPlugin","render","fieldMetadata","bindingPath","modelName","engineScopeId","onChange","this","metadata","fieldKey","replace","isEditable","control","TextControl","id","generateStableId","text","generateBindingInfo","applyCommonDirectives","TextArea","value","maxLength","required","rows","growing","change","oEvent","updateHeight","getSource","result","validateAndApplyVisualState","isValid","liveChange","attachEventOnce","oBinding","getBinding","initLogic","attachChange","oTextArea","val","getProperty","numLines","split","length","wrappedLines","Math","ceil","totalLines","max","setRows","getValue","applyState","input","setEditable","ui","readOnly","setRequired","__exports","__esModule"],"sources":["TextAreaPlugin.ts"],"sourcesContent":["/**\n * @file TextAreaPlugin.ts\n * @description Renders a sap.m.TextArea for string data specifically marked with the textArea widget.\n */\n\nimport { BasePlugin } from \"./BasePlugin\";\nimport { IPropertyMetadata } from \"../../interfaces/ISchema\";\nimport TextArea from \"sap/m/TextArea\";\nimport Control from \"sap/ui/core/Control\";\nimport TextControl from \"sap/m/Text\";\n\n/**\n * Handles rendering and logic for multi-line text areas.\n */\nexport class TextAreaPlugin extends BasePlugin {\n /**\n * Renders a `sap.m.TextArea` component.\n * \n * @param fieldMetadata 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 TextArea control.\n */\n public render(fieldMetadata: IPropertyMetadata, bindingPath: string, modelName: string = \"meta\", engineScopeId?: string, onChange?: (isValid: boolean, fieldKey?: string) => void): Control {\n this.onChange = onChange;\n this.metadata = fieldMetadata;\n this.fieldKey = bindingPath.replace(\"/\", \"\"); // For EventBus\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, fieldMetadata, modelName);\n return this.control as Control;\n }\n\n this.control = new TextArea({\n id: this.generateStableId(engineScopeId, bindingPath),\n value: this.generateBindingInfo(bindingPath, modelName),\n maxLength: fieldMetadata.maxLength || 0,\n required: !!fieldMetadata.required,\n rows: 3, // Start with at least 3 lines\n growing: false, // We manage height manually to maintain the +2 lines requirement\n change: (oEvent: sap.ui.base.Event) => {\n this.updateHeight(oEvent.getSource() as TextArea);\n const result = this.validateAndApplyVisualState();\n if (this.onChange) {\n this.onChange(result.isValid, this.fieldKey);\n }\n },\n liveChange: (oEvent: sap.ui.base.Event) => {\n this.updateHeight(oEvent.getSource() as TextArea);\n }\n });\n\n // Clean architecture: Wait for the model context, then calculate initial height\n (this.control as TextArea).attachEventOnce(\"modelContextChange\", () => {\n const oBinding = (this.control as TextArea).getBinding(\"value\");\n \n const initLogic = () => {\n if (this.control) {\n this.updateHeight(this.control as TextArea);\n }\n };\n\n if (oBinding) {\n oBinding.attachChange(initLogic);\n }\n // Execute immediately in case the model is synchronous (JSONModel)\n initLogic();\n });\n\n this.applyCommonDirectives(this.control, fieldMetadata, modelName);\n\n return this.control as Control;\n }\n\n /**\n * Dynamically sets the rows to the content length + 2\n */\n private updateHeight(oTextArea: TextArea): void {\n const val = oTextArea.getProperty('value') || \"\";\n // Count actual newlines in the string\n const numLines = val.split(/\\r\\n|\\r|\\n/).length;\n // Also estimate word wrapping if they type a really long single line without pressing enter\n // A standard character width approximation, assuming ~80 chars per line for full width\n const wrappedLines = Math.ceil(val.length / 80);\n \n const totalLines = Math.max(numLines, wrappedLines);\n \n // Ensure there is always 2 lines of extra breathing room\n oTextArea.setRows(Math.max(3, totalLines + 2));\n }\n\n /**\n * Retrieves the current text string.\n * @returns {unknown} The text string.\n */\n protected getValue(): unknown {\n return this.control ? (this.control as TextArea).getProperty('value') : null;\n }\n\n /**\n * Applies dynamic read-only state.\n */\n protected applyState(): void {\n if (this.control && this.metadata) {\n if (!this.isEditable) return;\n const input = this.control as TextArea;\n input.setEditable(!this.metadata.ui?.readOnly);\n input.setRequired(this.metadata.required);\n }\n }\n}\n"],"mappings":"0FAAA,MAKSA,EAAUC,EAAA,cASZ,MAAMC,UAAuBF,EAWzBG,OAAOC,EAAmCC,EAAsBC,EAAoB,OAAQC,EAAwBC,GACvHC,KAAKD,SAAWA,EAChBC,KAAKC,SAAWN,EAChBK,KAAKE,SAAWN,EAAYO,QAAQ,IAAK,IAEzC,IAAKH,KAAKI,WAAY,CAElBJ,KAAKK,QAAU,IAAIC,EAAY,CAC3BC,GAAIP,KAAKQ,iBAAiBV,EAAeF,GACzCa,KAAMT,KAAKU,oBAAoBd,EAAaC,KAEhDG,KAAKW,sBAAsBX,KAAKK,QAASV,EAAeE,GACxD,OAAOG,KAAKK,OAChB,CAEAL,KAAKK,QAAU,IAAIO,EAAS,CACxBL,GAAIP,KAAKQ,iBAAiBV,EAAeF,GACzCiB,MAAOb,KAAKU,oBAAoBd,EAAaC,GAC7CiB,UAAWnB,EAAcmB,WAAa,EACtCC,WAAYpB,EAAcoB,SAC1BC,KAAM,EACNC,QAAS,MACTC,OAASC,IACLnB,KAAKoB,aAAaD,EAAOE,aACzB,MAAMC,EAAStB,KAAKuB,8BACpB,GAAIvB,KAAKD,SAAU,CACfC,KAAKD,SAASuB,EAAOE,QAASxB,KAAKE,SACvC,GAEJuB,WAAaN,IACTnB,KAAKoB,aAAaD,EAAOE,gBAKhCrB,KAAKK,QAAqBqB,gBAAgB,qBAAsB,KAC7D,MAAMC,EAAY3B,KAAKK,QAAqBuB,WAAW,SAEvD,MAAMC,EAAYA,KACd,GAAI7B,KAAKK,QAAS,CACdL,KAAKoB,aAAapB,KAAKK,QAC3B,GAGJ,GAAIsB,EAAU,CACVA,EAASG,aAAaD,EAC1B,CAEAA,MAGJ7B,KAAKW,sBAAsBX,KAAKK,QAASV,EAAeE,GAExD,OAAOG,KAAKK,OAChB,CAKQe,aAAaW,GACjB,MAAMC,EAAMD,EAAUE,YAAY,UAAY,GAE9C,MAAMC,EAAWF,EAAIG,MAAM,cAAcC,OAGzC,MAAMC,EAAeC,KAAKC,KAAKP,EAAII,OAAS,IAE5C,MAAMI,EAAaF,KAAKG,IAAIP,EAAUG,GAGtCN,EAAUW,QAAQJ,KAAKG,IAAI,EAAGD,EAAa,GAC/C,CAMUG,WACN,OAAO3C,KAAKK,QAAWL,KAAKK,QAAqB4B,YAAY,SAAW,IAC5E,CAKUW,aACN,GAAI5C,KAAKK,SAAWL,KAAKC,SAAU,CAC/B,IAAKD,KAAKI,WAAY,OACtB,MAAMyC,EAAQ7C,KAAKK,QACnBwC,EAAMC,aAAa9C,KAAKC,SAAS8C,IAAIC,UACrCH,EAAMI,YAAYjD,KAAKC,SAASc,SACpC,CACJ,EACH,IAAAmC,EAAA,CAAAC,WAAA,MAAAD,EAAAzD,iBAAA,OAAAyD,CAAA","ignoreList":[]}
1
+ {"version":3,"file":"TextAreaPlugin.js","names":["BasePlugin","___BasePlugin","TextAreaPlugin","render","fieldMetadata","bindingPath","modelName","engineScopeId","onChange","this","metadata","fieldKey","replace","schemaRows","ui","rows","useDialog","expandable","textArea","TextArea","id","generateStableId","value","generateBindingInfo","maxLength","required","editable","isEditable","readOnly","growing","growingMaxLines","width","change","result","validate","isValid","errorMessage","textAreaRef","mainControl","expandBtn","Button","icon","type","tooltip","press","dlg","Dialog","title","label","contentWidth","contentHeight","verticalScrolling","resizable","content","height","beginButton","text","close","afterClose","destroy","control","addDependent","open","setLayoutData","FlexItemData","growFactor","HBox","alignItems","items","applyCommonDirectives","getValue","getProperty","applyState","setEditable","setRequired","__exports","__esModule"],"sources":["TextAreaPlugin.ts"],"sourcesContent":["/**\n * @file TextAreaPlugin.ts\n * @description Renders a sap.m.TextArea for string data specifically marked with the textArea widget.\n */\n\nimport { BasePlugin } from \"./BasePlugin\";\nimport { IPropertyMetadata } from \"../../interfaces/ISchema\";\nimport TextArea from \"sap/m/TextArea\";\nimport Control from \"sap/ui/core/Control\";\nimport TextControl from \"sap/m/Text\";\nimport HBox from \"sap/m/HBox\";\nimport Button from \"sap/m/Button\";\nimport Dialog from \"sap/m/Dialog\";\nimport FlexItemData from \"sap/m/FlexItemData\";\n\n/**\n * Handles rendering and logic for multi-line text areas.\n */\nexport class TextAreaPlugin extends BasePlugin {\n private textAreaRef?: TextArea;\n \n /**\n * Renders a `sap.m.TextArea` component.\n * \n * @param fieldMetadata 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 TextArea control.\n */\n public render(fieldMetadata: 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 = fieldMetadata;\n this.fieldKey = bindingPath.replace(\"/\", \"\"); // For EventBus\n \n\n\n const schemaRows = fieldMetadata.ui?.rows;\n const useDialog = fieldMetadata.ui?.expandable !== false;\n\n const textArea = new TextArea({\n id: this.generateStableId(engineScopeId, bindingPath),\n value: this.generateBindingInfo(bindingPath, modelName),\n maxLength: fieldMetadata.maxLength || 0,\n required: !!fieldMetadata.required,\n editable: !this.isEditable ? false : !fieldMetadata.ui?.readOnly,\n rows: schemaRows || 10,\n growing: true,\n growingMaxLines: schemaRows || 15,\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 this.textAreaRef = textArea;\n this.mainControl = textArea;\n\n if (useDialog) {\n const expandBtn = new Button({\n icon: \"sap-icon://full-screen\",\n type: \"Transparent\",\n tooltip: \"Expand Editor\",\n press: () => {\n const dlg = new Dialog({\n title: fieldMetadata.title || fieldMetadata.ui?.label || \"Edit Text\",\n contentWidth: \"80%\",\n contentHeight: \"80%\",\n verticalScrolling: false,\n resizable: true,\n content: new TextArea({\n value: this.generateBindingInfo(bindingPath, modelName),\n width: \"100%\",\n height: \"100%\",\n editable: !this.isEditable ? false : !fieldMetadata.ui?.readOnly,\n growing: false\n }),\n beginButton: new Button({\n text: \"Close\",\n press: () => dlg.close()\n }),\n afterClose: () => dlg.destroy()\n });\n this.control?.addDependent(dlg);\n dlg.open();\n }\n });\n\n textArea.setLayoutData(new FlexItemData({ growFactor: 1 }));\n\n this.control = new HBox({\n width: \"100%\",\n alignItems: \"Start\",\n items: [textArea, expandBtn]\n });\n } else {\n this.control = textArea;\n }\n\n this.mainControl = textArea;\n this.applyCommonDirectives(this.control, fieldMetadata, modelName);\n\n return this.control as Control;\n }\n\n\n\n /**\n * Retrieves the current text string.\n * @returns {unknown} The text string.\n */\n protected getValue(): unknown {\n return this.textAreaRef ? this.textAreaRef.getProperty('value') : null;\n }\n\n /**\n * Applies dynamic read-only state.\n */\n protected applyState(): void {\n if (this.textAreaRef && this.metadata) {\n if (!this.isEditable) return;\n this.textAreaRef.setEditable(!this.metadata.ui?.readOnly);\n this.textAreaRef.setRequired(!!this.metadata.required);\n }\n }\n}\n"],"mappings":"mJAAA,MAKSA,EAAUC,EAAA,cAaZ,MAAMC,UAAuBF,EAazBG,OAAOC,EAAmCC,EAAsBC,EAAoB,OAAQC,EAAwBC,GACvHC,KAAKD,SAAWA,EAChBC,KAAKC,SAAWN,EAChBK,KAAKE,SAAWN,EAAYO,QAAQ,IAAK,IAIzC,MAAMC,EAAaT,EAAcU,IAAIC,KACrC,MAAMC,EAAYZ,EAAcU,IAAIG,aAAe,MAEnD,MAAMC,EAAW,IAAIC,EAAS,CAC1BC,GAAIX,KAAKY,iBAAiBd,EAAeF,GACzCiB,MAAOb,KAAKc,oBAAoBlB,EAAaC,GAC7CkB,UAAWpB,EAAcoB,WAAa,EACtCC,WAAYrB,EAAcqB,SAC1BC,UAAWjB,KAAKkB,WAAa,OAASvB,EAAcU,IAAIc,SACxDb,KAAMF,GAAc,GACpBgB,QAAS,KACTC,gBAAiBjB,GAAc,GAC/BkB,MAAO,OACPC,OAAQA,KACJ,MAAMC,EAASxB,KAAKyB,WACpB,GAAIzB,KAAKD,SAAU,CACfC,KAAKD,SAASyB,EAAOE,QAAS1B,KAAKE,SAAUsB,EAAOG,aACxD,KAGR3B,KAAK4B,YAAcnB,EACnBT,KAAK6B,YAAcpB,EAEnB,GAAIF,EAAW,CACX,MAAMuB,EAAY,IAAIC,EAAO,CACzBC,KAAM,yBACNC,KAAM,cACNC,QAAS,gBACTC,MAAOA,KACH,MAAMC,EAAM,IAAIC,EAAO,CACnBC,MAAO3C,EAAc2C,OAAS3C,EAAcU,IAAIkC,OAAS,YACzDC,aAAc,MACdC,cAAe,MACfC,kBAAmB,MACnBC,UAAW,KACXC,QAAS,IAAIlC,EAAS,CAClBG,MAAOb,KAAKc,oBAAoBlB,EAAaC,GAC7CyB,MAAO,OACPuB,OAAQ,OACR5B,UAAWjB,KAAKkB,WAAa,OAASvB,EAAcU,IAAIc,SACxDC,QAAS,QAEb0B,YAAa,IAAIf,EAAO,CACpBgB,KAAM,QACNZ,MAAOA,IAAMC,EAAIY,UAErBC,WAAYA,IAAMb,EAAIc,YAE1BlD,KAAKmD,SAASC,aAAahB,GAC3BA,EAAIiB,UAIZ5C,EAAS6C,cAAc,IAAIC,EAAa,CAAEC,WAAY,KAEtDxD,KAAKmD,QAAU,IAAIM,EAAK,CACpBnC,MAAO,OACPoC,WAAY,QACZC,MAAO,CAAClD,EAAUqB,IAE1B,KAAO,CACH9B,KAAKmD,QAAU1C,CACnB,CAEAT,KAAK6B,YAAcpB,EACnBT,KAAK4D,sBAAsB5D,KAAKmD,QAASxD,EAAeE,GAExD,OAAOG,KAAKmD,OAChB,CAQUU,WACN,OAAO7D,KAAK4B,YAAc5B,KAAK4B,YAAYkC,YAAY,SAAW,IACtE,CAKUC,aACN,GAAI/D,KAAK4B,aAAe5B,KAAKC,SAAU,CACnC,IAAKD,KAAKkB,WAAY,OACtBlB,KAAK4B,YAAYoC,aAAahE,KAAKC,SAASI,IAAIc,UAChDnB,KAAK4B,YAAYqC,cAAcjE,KAAKC,SAASe,SACjD,CACJ,EACH,IAAAkD,EAAA,CAAAC,WAAA,MAAAD,EAAAzE,iBAAA,OAAAyE,CAAA","ignoreList":[]}
@@ -8,11 +8,17 @@ import { IPropertyMetadata } from "../../interfaces/ISchema";
8
8
  import TextArea from "sap/m/TextArea";
9
9
  import Control from "sap/ui/core/Control";
10
10
  import TextControl from "sap/m/Text";
11
+ import HBox from "sap/m/HBox";
12
+ import Button from "sap/m/Button";
13
+ import Dialog from "sap/m/Dialog";
14
+ import FlexItemData from "sap/m/FlexItemData";
11
15
 
12
16
  /**
13
17
  * Handles rendering and logic for multi-line text areas.
14
18
  */
15
19
  export class TextAreaPlugin extends BasePlugin {
20
+ private textAreaRef?: TextArea;
21
+
16
22
  /**
17
23
  * Renders a `sap.m.TextArea` component.
18
24
  *
@@ -23,96 +29,101 @@ export class TextAreaPlugin extends BasePlugin {
23
29
  * @param onChange The callback fired on value change.
24
30
  * @returns {Control} The configured TextArea control.
25
31
  */
26
- public render(fieldMetadata: IPropertyMetadata, bindingPath: string, modelName: string = "meta", engineScopeId?: string, onChange?: (isValid: boolean, fieldKey?: string) => void): Control {
32
+ public render(fieldMetadata: IPropertyMetadata, bindingPath: string, modelName: string = "meta", engineScopeId?: string, onChange?: (isValid: boolean, fieldKey?: string, errorMessage?: string, controlId?: string) => void): Control {
27
33
  this.onChange = onChange;
28
34
  this.metadata = fieldMetadata;
29
35
  this.fieldKey = bindingPath.replace("/", ""); // For EventBus
30
36
 
31
- if (!this.isEditable) {
32
-
33
- this.control = new TextControl({
34
- id: this.generateStableId(engineScopeId, bindingPath),
35
- text: this.generateBindingInfo(bindingPath, modelName)
36
- });
37
- this.applyCommonDirectives(this.control, fieldMetadata, modelName);
38
- return this.control as Control;
39
- }
40
37
 
41
- this.control = new TextArea({
38
+
39
+ const schemaRows = fieldMetadata.ui?.rows;
40
+ const useDialog = fieldMetadata.ui?.expandable !== false;
41
+
42
+ const textArea = new TextArea({
42
43
  id: this.generateStableId(engineScopeId, bindingPath),
43
44
  value: this.generateBindingInfo(bindingPath, modelName),
44
45
  maxLength: fieldMetadata.maxLength || 0,
45
46
  required: !!fieldMetadata.required,
46
- rows: 3, // Start with at least 3 lines
47
- growing: false, // We manage height manually to maintain the +2 lines requirement
48
- change: (oEvent: sap.ui.base.Event) => {
49
- this.updateHeight(oEvent.getSource() as TextArea);
50
- const result = this.validateAndApplyVisualState();
47
+ editable: !this.isEditable ? false : !fieldMetadata.ui?.readOnly,
48
+ rows: schemaRows || 10,
49
+ growing: true,
50
+ growingMaxLines: schemaRows || 15,
51
+ width: "100%",
52
+ change: () => {
53
+ const result = this.validate();
51
54
  if (this.onChange) {
52
- this.onChange(result.isValid, this.fieldKey);
55
+ this.onChange(result.isValid, this.fieldKey, result.errorMessage);
53
56
  }
54
- },
55
- liveChange: (oEvent: sap.ui.base.Event) => {
56
- this.updateHeight(oEvent.getSource() as TextArea);
57
57
  }
58
58
  });
59
+ this.textAreaRef = textArea;
60
+ this.mainControl = textArea;
59
61
 
60
- // Clean architecture: Wait for the model context, then calculate initial height
61
- (this.control as TextArea).attachEventOnce("modelContextChange", () => {
62
- const oBinding = (this.control as TextArea).getBinding("value");
63
-
64
- const initLogic = () => {
65
- if (this.control) {
66
- this.updateHeight(this.control as TextArea);
62
+ if (useDialog) {
63
+ const expandBtn = new Button({
64
+ icon: "sap-icon://full-screen",
65
+ type: "Transparent",
66
+ tooltip: "Expand Editor",
67
+ press: () => {
68
+ const dlg = new Dialog({
69
+ title: fieldMetadata.title || fieldMetadata.ui?.label || "Edit Text",
70
+ contentWidth: "80%",
71
+ contentHeight: "80%",
72
+ verticalScrolling: false,
73
+ resizable: true,
74
+ content: new TextArea({
75
+ value: this.generateBindingInfo(bindingPath, modelName),
76
+ width: "100%",
77
+ height: "100%",
78
+ editable: !this.isEditable ? false : !fieldMetadata.ui?.readOnly,
79
+ growing: false
80
+ }),
81
+ beginButton: new Button({
82
+ text: "Close",
83
+ press: () => dlg.close()
84
+ }),
85
+ afterClose: () => dlg.destroy()
86
+ });
87
+ this.control?.addDependent(dlg);
88
+ dlg.open();
67
89
  }
68
- };
90
+ });
69
91
 
70
- if (oBinding) {
71
- oBinding.attachChange(initLogic);
72
- }
73
- // Execute immediately in case the model is synchronous (JSONModel)
74
- initLogic();
75
- });
92
+ textArea.setLayoutData(new FlexItemData({ growFactor: 1 }));
93
+
94
+ this.control = new HBox({
95
+ width: "100%",
96
+ alignItems: "Start",
97
+ items: [textArea, expandBtn]
98
+ });
99
+ } else {
100
+ this.control = textArea;
101
+ }
76
102
 
103
+ this.mainControl = textArea;
77
104
  this.applyCommonDirectives(this.control, fieldMetadata, modelName);
78
105
 
79
106
  return this.control as Control;
80
107
  }
81
108
 
82
- /**
83
- * Dynamically sets the rows to the content length + 2
84
- */
85
- private updateHeight(oTextArea: TextArea): void {
86
- const val = oTextArea.getProperty('value') || "";
87
- // Count actual newlines in the string
88
- const numLines = val.split(/\r\n|\r|\n/).length;
89
- // Also estimate word wrapping if they type a really long single line without pressing enter
90
- // A standard character width approximation, assuming ~80 chars per line for full width
91
- const wrappedLines = Math.ceil(val.length / 80);
92
-
93
- const totalLines = Math.max(numLines, wrappedLines);
94
-
95
- // Ensure there is always 2 lines of extra breathing room
96
- oTextArea.setRows(Math.max(3, totalLines + 2));
97
- }
109
+
98
110
 
99
111
  /**
100
112
  * Retrieves the current text string.
101
113
  * @returns {unknown} The text string.
102
114
  */
103
115
  protected getValue(): unknown {
104
- return this.control ? (this.control as TextArea).getProperty('value') : null;
116
+ return this.textAreaRef ? this.textAreaRef.getProperty('value') : null;
105
117
  }
106
118
 
107
119
  /**
108
120
  * Applies dynamic read-only state.
109
121
  */
110
122
  protected applyState(): void {
111
- if (this.control && this.metadata) {
123
+ if (this.textAreaRef && this.metadata) {
112
124
  if (!this.isEditable) return;
113
- const input = this.control as TextArea;
114
- input.setEditable(!this.metadata.ui?.readOnly);
115
- input.setRequired(this.metadata.required);
125
+ this.textAreaRef.setEditable(!this.metadata.ui?.readOnly);
126
+ this.textAreaRef.setRequired(!!this.metadata.required);
116
127
  }
117
128
  }
118
129
  }
@@ -54,9 +54,9 @@ sap.ui.define(["./BasePlugin", "sap/m/TimePicker", "sap/m/Text"], function (___B
54
54
  required: fieldMetadata.required,
55
55
  change: oEvent => {
56
56
  const val = oEvent.getParameter("value");
57
- const result = this.validateAndApplyVisualState();
57
+ const result = this.validate();
58
58
  if (this.onChange) {
59
- this.onChange(result.isValid, this.fieldKey);
59
+ this.onChange(result.isValid, this.fieldKey, result.errorMessage);
60
60
  }
61
61
  }
62
62
  });
@@ -1 +1 @@
1
- {"version":3,"file":"TimePlugin-dbg.js","names":["BasePlugin","___BasePlugin","TimePlugin","render","fieldMetadata","bindingPath","modelName","engineScopeId","onChange","metadata","fieldKey","startsWith","substring","isEditable","control","TextControl","id","generateStableId","text","generateBindingInfo","formatOptions","source","pattern","applyCommonDirectives","TimePicker","value","displayFormat","editable","ui","readOnly","required","change","oEvent","val","getParameter","result","validateAndApplyVisualState","isValid","getValue","getProperty","applyState","input","setEditable","setRequired","__exports","__esModule"],"sources":["TimePlugin.ts"],"sourcesContent":["/**\n * @file TimePlugin.ts\n * @description Handles rendering logic for Time strings.\n */\n\nimport { BasePlugin } from \"./BasePlugin\";\nimport { IPropertyMetadata } from \"../../interfaces/ISchema\";\nimport TimePicker from \"sap/m/TimePicker\";\nimport Control from \"sap/ui/core/Control\";\nimport TextControl from \"sap/m/Text\";\n\n/**\n * Handles rendering and logic for time inputs.\n */\nexport class TimePlugin extends BasePlugin {\n /**\n * Renders a `sap.m.TimePicker` component.\n * \n * @param fieldMetadata 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 TimePicker control.\n */\n public render(fieldMetadata: IPropertyMetadata, bindingPath: string, modelName: string = \"meta\", engineScopeId?: string, onChange?: (isValid: boolean, fieldKey?: string) => void): Control {\n this.onChange = onChange;\n this.metadata = fieldMetadata;\n this.fieldKey = bindingPath.startsWith('/') ? bindingPath.substring(1) : bindingPath;\n \n if (!this.isEditable) {\n \n this.control = new TextControl({\n id: this.generateStableId(engineScopeId, bindingPath),\n text: this.generateBindingInfo(bindingPath, modelName, \"sap.ui.model.type.Time\", {\n formatOptions: {\n source: { pattern: \"HH:mm:ss\" },\n pattern: \"HH:mm:ss\"\n }\n })\n });\n this.applyCommonDirectives(this.control, fieldMetadata, modelName);\n return this.control as Control;\n }\n\n this.control = new TimePicker({\n id: this.generateStableId(engineScopeId, bindingPath),\n value: this.generateBindingInfo(bindingPath, modelName, \"sap.ui.model.type.Time\", {\n formatOptions: {\n source: { pattern: \"HH:mm:ss\" },\n pattern: \"HH:mm:ss\"\n }\n }),\n displayFormat: \"HH:mm:ss\",\n editable: !fieldMetadata.ui?.readOnly,\n required: fieldMetadata.required,\n change: (oEvent: sap.ui.base.Event) => {\n const val = (oEvent as sap.ui.base.Event).getParameter(\"value\");\n const result = this.validateAndApplyVisualState();\n if (this.onChange) {\n this.onChange(result.isValid, this.fieldKey);\n }\n }\n });\n\n this.applyCommonDirectives(this.control, fieldMetadata, modelName);\n\n return this.control as Control;\n }\n\n /**\n * Retrieves the current time string.\n * @returns {unknown} The time string.\n */\n protected getValue(): unknown {\n return this.control ? (this.control as TimePicker).getProperty('value') : null;\n }\n\n /**\n * Applies dynamic read-only state.\n */\n protected applyState(): void {\n if (this.control && this.metadata) {\n if (!this.isEditable) return;\n const input = this.control as TimePicker;\n input.setEditable(!this.metadata.ui?.readOnly);\n input.setRequired(this.metadata.required);\n }\n }\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"TimePlugin-dbg.js","names":["BasePlugin","___BasePlugin","TimePlugin","render","fieldMetadata","bindingPath","modelName","engineScopeId","onChange","metadata","fieldKey","startsWith","substring","isEditable","control","TextControl","id","generateStableId","text","generateBindingInfo","formatOptions","source","pattern","applyCommonDirectives","TimePicker","value","displayFormat","editable","ui","readOnly","required","change","oEvent","val","getParameter","result","validate","isValid","errorMessage","getValue","getProperty","applyState","input","setEditable","setRequired","__exports","__esModule"],"sources":["TimePlugin.ts"],"sourcesContent":["/**\n * @file TimePlugin.ts\n * @description Handles rendering logic for Time strings.\n */\n\nimport { BasePlugin } from \"./BasePlugin\";\nimport { IPropertyMetadata } from \"../../interfaces/ISchema\";\nimport TimePicker from \"sap/m/TimePicker\";\nimport Control from \"sap/ui/core/Control\";\nimport TextControl from \"sap/m/Text\";\n\n/**\n * Handles rendering and logic for time inputs.\n */\nexport class TimePlugin extends BasePlugin {\n /**\n * Renders a `sap.m.TimePicker` component.\n * \n * @param fieldMetadata 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 TimePicker control.\n */\n public render(fieldMetadata: 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 = fieldMetadata;\n this.fieldKey = bindingPath.startsWith('/') ? bindingPath.substring(1) : bindingPath;\n \n if (!this.isEditable) {\n \n this.control = new TextControl({\n id: this.generateStableId(engineScopeId, bindingPath),\n text: this.generateBindingInfo(bindingPath, modelName, \"sap.ui.model.type.Time\", {\n formatOptions: {\n source: { pattern: \"HH:mm:ss\" },\n pattern: \"HH:mm:ss\"\n }\n })\n });\n this.applyCommonDirectives(this.control, fieldMetadata, modelName);\n return this.control as Control;\n }\n\n this.control = new TimePicker({\n id: this.generateStableId(engineScopeId, bindingPath),\n value: this.generateBindingInfo(bindingPath, modelName, \"sap.ui.model.type.Time\", {\n formatOptions: {\n source: { pattern: \"HH:mm:ss\" },\n pattern: \"HH:mm:ss\"\n }\n }),\n displayFormat: \"HH:mm:ss\",\n editable: !fieldMetadata.ui?.readOnly,\n required: fieldMetadata.required,\n change: (oEvent: sap.ui.base.Event) => {\n const val = (oEvent as sap.ui.base.Event).getParameter(\"value\");\n const result = this.validate();\n if (this.onChange) {\n this.onChange(result.isValid, this.fieldKey, result.errorMessage);\n }\n }\n });\n\n this.applyCommonDirectives(this.control, fieldMetadata, modelName);\n\n return this.control as Control;\n }\n\n /**\n * Retrieves the current time string.\n * @returns {unknown} The time string.\n */\n protected getValue(): unknown {\n return this.control ? (this.control as TimePicker).getProperty('value') : null;\n }\n\n /**\n * Applies dynamic read-only state.\n */\n protected applyState(): void {\n if (this.control && this.metadata) {\n if (!this.isEditable) return;\n const input = this.control as TimePicker;\n input.setEditable(!this.metadata.ui?.readOnly);\n input.setRequired(this.metadata.required);\n }\n }\n}\n"],"mappings":"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","ignoreList":[]}
@@ -20,7 +20,7 @@ declare module "nz/co/siliconst/ui5/metaui/plugins/controls/TimePlugin" {
20
20
  * @param onChange The callback fired on value change.
21
21
  * @returns {Control} The configured TimePicker control.
22
22
  */
23
- render(fieldMetadata: IPropertyMetadata, bindingPath: string, modelName?: string, engineScopeId?: string, onChange?: (isValid: boolean, fieldKey?: string) => void): Control;
23
+ render(fieldMetadata: IPropertyMetadata, bindingPath: string, modelName?: string, engineScopeId?: string, onChange?: (isValid: boolean, fieldKey?: string, errorMessage?: string, controlId?: string) => void): Control;
24
24
  /**
25
25
  * Retrieves the current time string.
26
26
  * @returns {unknown} The time string.
@@ -1 +1 @@
1
- {"version":3,"file":"TimePlugin.d.ts","sourceRoot":"../../../../../../../../..","sources":["src/nz/co/siliconst/ui5/metaui/plugins/controls/TimePlugin.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,wDAAwD,CAAC;IACxE;;;OAGG;IAEH,OAAO,EAAE,UAAU,EAAE,MAAM,wDAAwD,CAAC;IACpF,OAAO,EAAE,iBAAiB,EAAE,MAAM,+CAA+C,CAAC;IAElF,OAAO,OAAO,MAAM,qBAAqB,CAAC;IAG1C;;OAEG;IACH,MAAa,UAAW,SAAQ,UAAU;QACtC;;;;;;;;;WASG;QACI,MAAM,CAAC,aAAa,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;QA6C7L;;;WAGG;QACH,SAAS,CAAC,QAAQ,IAAI,OAAO;QAI7B;;WAEG;QACH,SAAS,CAAC,UAAU,IAAI,IAAI;KAQ/B;CAEA"}
1
+ {"version":3,"file":"TimePlugin.d.ts","sourceRoot":"../../../../../../../../..","sources":["src/nz/co/siliconst/ui5/metaui/plugins/controls/TimePlugin.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,wDAAwD,CAAC;IACxE;;;OAGG;IAEH,OAAO,EAAE,UAAU,EAAE,MAAM,wDAAwD,CAAC;IACpF,OAAO,EAAE,iBAAiB,EAAE,MAAM,+CAA+C,CAAC;IAElF,OAAO,OAAO,MAAM,qBAAqB,CAAC;IAG1C;;OAEG;IACH,MAAa,UAAW,SAAQ,UAAU;QACtC;;;;;;;;;WASG;QACI,MAAM,CAAC,aAAa,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;QA6CxO;;;WAGG;QACH,SAAS,CAAC,QAAQ,IAAI,OAAO;QAI7B;;WAEG;QACH,SAAS,CAAC,UAAU,IAAI,IAAI;KAQ/B;CAEA"}
@@ -1,2 +1,2 @@
1
- sap.ui.define(["./BasePlugin","sap/m/TimePicker","sap/m/Text"],function(t,e,i){"use strict";const s=t["BasePlugin"];class a extends s{render(t,s,a="meta",n,r){this.onChange=r;this.metadata=t;this.fieldKey=s.startsWith("/")?s.substring(1):s;if(!this.isEditable){this.control=new i({id:this.generateStableId(n,s),text:this.generateBindingInfo(s,a,"sap.ui.model.type.Time",{formatOptions:{source:{pattern:"HH:mm:ss"},pattern:"HH:mm:ss"}})});this.applyCommonDirectives(this.control,t,a);return this.control}this.control=new e({id:this.generateStableId(n,s),value:this.generateBindingInfo(s,a,"sap.ui.model.type.Time",{formatOptions:{source:{pattern:"HH:mm:ss"},pattern:"HH:mm:ss"}}),displayFormat:"HH:mm:ss",editable:!t.ui?.readOnly,required:t.required,change:t=>{const e=t.getParameter("value");const i=this.validateAndApplyVisualState();if(this.onChange){this.onChange(i.isValid,this.fieldKey)}}});this.applyCommonDirectives(this.control,t,a);return this.control}getValue(){return this.control?this.control.getProperty("value"):null}applyState(){if(this.control&&this.metadata){if(!this.isEditable)return;const t=this.control;t.setEditable(!this.metadata.ui?.readOnly);t.setRequired(this.metadata.required)}}}var n={__esModule:true};n.TimePlugin=a;return n});
1
+ sap.ui.define(["./BasePlugin","sap/m/TimePicker","sap/m/Text"],function(t,e,i){"use strict";const s=t["BasePlugin"];class a extends s{render(t,s,a="meta",r,n){this.onChange=n;this.metadata=t;this.fieldKey=s.startsWith("/")?s.substring(1):s;if(!this.isEditable){this.control=new i({id:this.generateStableId(r,s),text:this.generateBindingInfo(s,a,"sap.ui.model.type.Time",{formatOptions:{source:{pattern:"HH:mm:ss"},pattern:"HH:mm:ss"}})});this.applyCommonDirectives(this.control,t,a);return this.control}this.control=new e({id:this.generateStableId(r,s),value:this.generateBindingInfo(s,a,"sap.ui.model.type.Time",{formatOptions:{source:{pattern:"HH:mm:ss"},pattern:"HH:mm:ss"}}),displayFormat:"HH:mm:ss",editable:!t.ui?.readOnly,required:t.required,change:t=>{const e=t.getParameter("value");const i=this.validate();if(this.onChange){this.onChange(i.isValid,this.fieldKey,i.errorMessage)}}});this.applyCommonDirectives(this.control,t,a);return this.control}getValue(){return this.control?this.control.getProperty("value"):null}applyState(){if(this.control&&this.metadata){if(!this.isEditable)return;const t=this.control;t.setEditable(!this.metadata.ui?.readOnly);t.setRequired(this.metadata.required)}}}var r={__esModule:true};r.TimePlugin=a;return r});
2
2
  //# sourceMappingURL=TimePlugin.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"TimePlugin.js","names":["BasePlugin","___BasePlugin","TimePlugin","render","fieldMetadata","bindingPath","modelName","engineScopeId","onChange","this","metadata","fieldKey","startsWith","substring","isEditable","control","TextControl","id","generateStableId","text","generateBindingInfo","formatOptions","source","pattern","applyCommonDirectives","TimePicker","value","displayFormat","editable","ui","readOnly","required","change","oEvent","val","getParameter","result","validateAndApplyVisualState","isValid","getValue","getProperty","applyState","input","setEditable","setRequired","__exports","__esModule"],"sources":["TimePlugin.ts"],"sourcesContent":["/**\n * @file TimePlugin.ts\n * @description Handles rendering logic for Time strings.\n */\n\nimport { BasePlugin } from \"./BasePlugin\";\nimport { IPropertyMetadata } from \"../../interfaces/ISchema\";\nimport TimePicker from \"sap/m/TimePicker\";\nimport Control from \"sap/ui/core/Control\";\nimport TextControl from \"sap/m/Text\";\n\n/**\n * Handles rendering and logic for time inputs.\n */\nexport class TimePlugin extends BasePlugin {\n /**\n * Renders a `sap.m.TimePicker` component.\n * \n * @param fieldMetadata 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 TimePicker control.\n */\n public render(fieldMetadata: IPropertyMetadata, bindingPath: string, modelName: string = \"meta\", engineScopeId?: string, onChange?: (isValid: boolean, fieldKey?: string) => void): Control {\n this.onChange = onChange;\n this.metadata = fieldMetadata;\n this.fieldKey = bindingPath.startsWith('/') ? bindingPath.substring(1) : bindingPath;\n \n if (!this.isEditable) {\n \n this.control = new TextControl({\n id: this.generateStableId(engineScopeId, bindingPath),\n text: this.generateBindingInfo(bindingPath, modelName, \"sap.ui.model.type.Time\", {\n formatOptions: {\n source: { pattern: \"HH:mm:ss\" },\n pattern: \"HH:mm:ss\"\n }\n })\n });\n this.applyCommonDirectives(this.control, fieldMetadata, modelName);\n return this.control as Control;\n }\n\n this.control = new TimePicker({\n id: this.generateStableId(engineScopeId, bindingPath),\n value: this.generateBindingInfo(bindingPath, modelName, \"sap.ui.model.type.Time\", {\n formatOptions: {\n source: { pattern: \"HH:mm:ss\" },\n pattern: \"HH:mm:ss\"\n }\n }),\n displayFormat: \"HH:mm:ss\",\n editable: !fieldMetadata.ui?.readOnly,\n required: fieldMetadata.required,\n change: (oEvent: sap.ui.base.Event) => {\n const val = (oEvent as sap.ui.base.Event).getParameter(\"value\");\n const result = this.validateAndApplyVisualState();\n if (this.onChange) {\n this.onChange(result.isValid, this.fieldKey);\n }\n }\n });\n\n this.applyCommonDirectives(this.control, fieldMetadata, modelName);\n\n return this.control as Control;\n }\n\n /**\n * Retrieves the current time string.\n * @returns {unknown} The time string.\n */\n protected getValue(): unknown {\n return this.control ? (this.control as TimePicker).getProperty('value') : null;\n }\n\n /**\n * Applies dynamic read-only state.\n */\n protected applyState(): void {\n if (this.control && this.metadata) {\n if (!this.isEditable) return;\n const input = this.control as TimePicker;\n input.setEditable(!this.metadata.ui?.readOnly);\n input.setRequired(this.metadata.required);\n }\n }\n}\n"],"mappings":"4FAAA,MAKSA,EAAUC,EAAA,cASZ,MAAMC,UAAmBF,EAWrBG,OAAOC,EAAmCC,EAAsBC,EAAoB,OAAQC,EAAwBC,GACvHC,KAAKD,SAAWA,EAChBC,KAAKC,SAAWN,EAChBK,KAAKE,SAAWN,EAAYO,WAAW,KAAOP,EAAYQ,UAAU,GAAKR,EAEzE,IAAKI,KAAKK,WAAY,CAElBL,KAAKM,QAAU,IAAIC,EAAY,CAC3BC,GAAIR,KAAKS,iBAAiBX,EAAeF,GACzCc,KAAMV,KAAKW,oBAAoBf,EAAaC,EAAW,yBAA0B,CAC7Ee,cAAe,CACXC,OAAQ,CAAEC,QAAS,YACnBA,QAAS,gBAIrBd,KAAKe,sBAAsBf,KAAKM,QAASX,EAAeE,GACxD,OAAOG,KAAKM,OAChB,CAEAN,KAAKM,QAAU,IAAIU,EAAW,CAC1BR,GAAIR,KAAKS,iBAAiBX,EAAeF,GACzCqB,MAAOjB,KAAKW,oBAAoBf,EAAaC,EAAW,yBAA0B,CAC9Ee,cAAe,CACXC,OAAQ,CAAEC,QAAS,YACnBA,QAAS,cAGjBI,cAAe,WACfC,UAAWxB,EAAcyB,IAAIC,SAC7BC,SAAU3B,EAAc2B,SACxBC,OAASC,IACL,MAAMC,EAAOD,EAA6BE,aAAa,SACvD,MAAMC,EAAS3B,KAAK4B,8BACpB,GAAI5B,KAAKD,SAAU,CACfC,KAAKD,SAAS4B,EAAOE,QAAS7B,KAAKE,SACvC,KAIRF,KAAKe,sBAAsBf,KAAKM,QAASX,EAAeE,GAExD,OAAOG,KAAKM,OAChB,CAMUwB,WACN,OAAO9B,KAAKM,QAAWN,KAAKM,QAAuByB,YAAY,SAAW,IAC9E,CAKUC,aACN,GAAIhC,KAAKM,SAAWN,KAAKC,SAAU,CAC/B,IAAKD,KAAKK,WAAY,OACtB,MAAM4B,EAAQjC,KAAKM,QACnB2B,EAAMC,aAAalC,KAAKC,SAASmB,IAAIC,UACrCY,EAAME,YAAYnC,KAAKC,SAASqB,SACpC,CACJ,EACH,IAAAc,EAAA,CAAAC,WAAA,MAAAD,EAAA3C,aAAA,OAAA2C,CAAA","ignoreList":[]}
1
+ {"version":3,"file":"TimePlugin.js","names":["BasePlugin","___BasePlugin","TimePlugin","render","fieldMetadata","bindingPath","modelName","engineScopeId","onChange","this","metadata","fieldKey","startsWith","substring","isEditable","control","TextControl","id","generateStableId","text","generateBindingInfo","formatOptions","source","pattern","applyCommonDirectives","TimePicker","value","displayFormat","editable","ui","readOnly","required","change","oEvent","val","getParameter","result","validate","isValid","errorMessage","getValue","getProperty","applyState","input","setEditable","setRequired","__exports","__esModule"],"sources":["TimePlugin.ts"],"sourcesContent":["/**\n * @file TimePlugin.ts\n * @description Handles rendering logic for Time strings.\n */\n\nimport { BasePlugin } from \"./BasePlugin\";\nimport { IPropertyMetadata } from \"../../interfaces/ISchema\";\nimport TimePicker from \"sap/m/TimePicker\";\nimport Control from \"sap/ui/core/Control\";\nimport TextControl from \"sap/m/Text\";\n\n/**\n * Handles rendering and logic for time inputs.\n */\nexport class TimePlugin extends BasePlugin {\n /**\n * Renders a `sap.m.TimePicker` component.\n * \n * @param fieldMetadata 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 TimePicker control.\n */\n public render(fieldMetadata: 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 = fieldMetadata;\n this.fieldKey = bindingPath.startsWith('/') ? bindingPath.substring(1) : bindingPath;\n \n if (!this.isEditable) {\n \n this.control = new TextControl({\n id: this.generateStableId(engineScopeId, bindingPath),\n text: this.generateBindingInfo(bindingPath, modelName, \"sap.ui.model.type.Time\", {\n formatOptions: {\n source: { pattern: \"HH:mm:ss\" },\n pattern: \"HH:mm:ss\"\n }\n })\n });\n this.applyCommonDirectives(this.control, fieldMetadata, modelName);\n return this.control as Control;\n }\n\n this.control = new TimePicker({\n id: this.generateStableId(engineScopeId, bindingPath),\n value: this.generateBindingInfo(bindingPath, modelName, \"sap.ui.model.type.Time\", {\n formatOptions: {\n source: { pattern: \"HH:mm:ss\" },\n pattern: \"HH:mm:ss\"\n }\n }),\n displayFormat: \"HH:mm:ss\",\n editable: !fieldMetadata.ui?.readOnly,\n required: fieldMetadata.required,\n change: (oEvent: sap.ui.base.Event) => {\n const val = (oEvent as sap.ui.base.Event).getParameter(\"value\");\n const result = this.validate();\n if (this.onChange) {\n this.onChange(result.isValid, this.fieldKey, result.errorMessage);\n }\n }\n });\n\n this.applyCommonDirectives(this.control, fieldMetadata, modelName);\n\n return this.control as Control;\n }\n\n /**\n * Retrieves the current time string.\n * @returns {unknown} The time string.\n */\n protected getValue(): unknown {\n return this.control ? (this.control as TimePicker).getProperty('value') : null;\n }\n\n /**\n * Applies dynamic read-only state.\n */\n protected applyState(): void {\n if (this.control && this.metadata) {\n if (!this.isEditable) return;\n const input = this.control as TimePicker;\n input.setEditable(!this.metadata.ui?.readOnly);\n input.setRequired(this.metadata.required);\n }\n }\n}\n"],"mappings":"4FAAA,MAKSA,EAAUC,EAAA,cASZ,MAAMC,UAAmBF,EAWrBG,OAAOC,EAAmCC,EAAsBC,EAAoB,OAAQC,EAAwBC,GACvHC,KAAKD,SAAWA,EAChBC,KAAKC,SAAWN,EAChBK,KAAKE,SAAWN,EAAYO,WAAW,KAAOP,EAAYQ,UAAU,GAAKR,EAEzE,IAAKI,KAAKK,WAAY,CAElBL,KAAKM,QAAU,IAAIC,EAAY,CAC3BC,GAAIR,KAAKS,iBAAiBX,EAAeF,GACzCc,KAAMV,KAAKW,oBAAoBf,EAAaC,EAAW,yBAA0B,CAC7Ee,cAAe,CACXC,OAAQ,CAAEC,QAAS,YACnBA,QAAS,gBAIrBd,KAAKe,sBAAsBf,KAAKM,QAASX,EAAeE,GACxD,OAAOG,KAAKM,OAChB,CAEAN,KAAKM,QAAU,IAAIU,EAAW,CAC1BR,GAAIR,KAAKS,iBAAiBX,EAAeF,GACzCqB,MAAOjB,KAAKW,oBAAoBf,EAAaC,EAAW,yBAA0B,CAC9Ee,cAAe,CACXC,OAAQ,CAAEC,QAAS,YACnBA,QAAS,cAGjBI,cAAe,WACfC,UAAWxB,EAAcyB,IAAIC,SAC7BC,SAAU3B,EAAc2B,SACxBC,OAASC,IACL,MAAMC,EAAOD,EAA6BE,aAAa,SACvD,MAAMC,EAAS3B,KAAK4B,WACpB,GAAI5B,KAAKD,SAAU,CACfC,KAAKD,SAAS4B,EAAOE,QAAS7B,KAAKE,SAAUyB,EAAOG,aACxD,KAIR9B,KAAKe,sBAAsBf,KAAKM,QAASX,EAAeE,GAExD,OAAOG,KAAKM,OAChB,CAMUyB,WACN,OAAO/B,KAAKM,QAAWN,KAAKM,QAAuB0B,YAAY,SAAW,IAC9E,CAKUC,aACN,GAAIjC,KAAKM,SAAWN,KAAKC,SAAU,CAC/B,IAAKD,KAAKK,WAAY,OACtB,MAAM6B,EAAQlC,KAAKM,QACnB4B,EAAMC,aAAanC,KAAKC,SAASmB,IAAIC,UACrCa,EAAME,YAAYpC,KAAKC,SAASqB,SACpC,CACJ,EACH,IAAAe,EAAA,CAAAC,WAAA,MAAAD,EAAA5C,aAAA,OAAA4C,CAAA","ignoreList":[]}
@@ -23,7 +23,7 @@ export class TimePlugin extends BasePlugin {
23
23
  * @param onChange The callback fired on value change.
24
24
  * @returns {Control} The configured TimePicker control.
25
25
  */
26
- public render(fieldMetadata: IPropertyMetadata, bindingPath: string, modelName: string = "meta", engineScopeId?: string, onChange?: (isValid: boolean, fieldKey?: string) => void): Control {
26
+ public render(fieldMetadata: IPropertyMetadata, bindingPath: string, modelName: string = "meta", engineScopeId?: string, onChange?: (isValid: boolean, fieldKey?: string, errorMessage?: string, controlId?: string) => void): Control {
27
27
  this.onChange = onChange;
28
28
  this.metadata = fieldMetadata;
29
29
  this.fieldKey = bindingPath.startsWith('/') ? bindingPath.substring(1) : bindingPath;
@@ -56,9 +56,9 @@ export class TimePlugin extends BasePlugin {
56
56
  required: fieldMetadata.required,
57
57
  change: (oEvent: sap.ui.base.Event) => {
58
58
  const val = (oEvent as sap.ui.base.Event).getParameter("value");
59
- const result = this.validateAndApplyVisualState();
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
  });
@@ -43,9 +43,9 @@ sap.ui.define(["../controls/BasePlugin", "../../controls/VoiceInputControl", "sa
43
43
  });
44
44
  this.applyCommonDirectives(this.control, metadata, modelName);
45
45
  this.control.attachEvent('capture', () => {
46
- const result = this.validateAndApplyVisualState();
46
+ const result = this.validate();
47
47
  if (this.onChange) {
48
- this.onChange(result.isValid, this.fieldKey);
48
+ this.onChange(result.isValid, this.fieldKey, result.errorMessage);
49
49
  }
50
50
  });
51
51
  return this.control;
@@ -1 +1 @@
1
- {"version":3,"file":"VoiceInputPlugin-dbg.js","names":["BasePlugin","___controls_BasePlugin","VoiceInputControl","_interopRequireDefault","__VoiceInputControl","VoiceInputPlugin","render","metadata","bindingPath","modelName","engineScopeId","onChange","fieldKey","replace","isEditable","control","TextControl","id","generateStableId","text","generateBindingInfo","undefined","formatter","val","applyCommonDirectives","value","schemaMetadata","readOnly","ui","attachEvent","result","validateAndApplyVisualState","isValid","getValue","getProperty","applyState","setProperty","__exports","__esModule"],"sources":["VoiceInputPlugin.ts"],"sourcesContent":["import { BasePlugin } from \"../controls/BasePlugin\";\nimport { IPropertyMetadata } from \"../../interfaces/ISchema\";\nimport Control from \"sap/ui/core/Control\";\nimport VoiceInputControl from \"../../controls/VoiceInputControl\";\nimport TextControl from \"sap/m/Text\";\n\nexport class VoiceInputPlugin extends BasePlugin {\n /**\n * Renders a `VoiceInputControl` component.\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 VoiceInputControl.\n */\n public render(metadata: IPropertyMetadata, bindingPath: string, modelName: string = \"meta\", engineScopeId?: string, onChange?: (isValid: boolean, fieldKey?: 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, undefined, {\n formatter: (val: unknown) => {\n if (!val || val === \"undefined\" || val === \"null\") return \"\";\n return val;\n }\n })\n }) as Control;\n this.applyCommonDirectives(this.control, metadata, modelName);\n return this.control as Control;\n }\n\n this.control = new VoiceInputControl({\n id: this.generateStableId(engineScopeId, bindingPath),\n value: this.generateBindingInfo(bindingPath, modelName),\n schemaMetadata: metadata,\n readOnly: !!metadata.ui?.readOnly\n }) as Control;\n\n this.applyCommonDirectives(this.control, metadata, modelName);\n\n (this.control as VoiceInputControl).attachEvent('capture', () => {\n const result = this.validateAndApplyVisualState();\n if (this.onChange) {\n this.onChange(result.isValid, this.fieldKey);\n }\n });\n\n return this.control as Control;\n }\n\n /**\n * Retrieves the current voice transcription text.\n * @returns {unknown} The text string.\n */\n protected getValue(): unknown {\n return this.control ? (this.control as VoiceInputControl).getProperty('value') : null;\n }\n\n /**\n * Applies dynamic read-only state.\n */\n protected applyState(): void {\n if (this.control && this.metadata) {\n if (!this.isEditable) return;\n (this.control as sap.ui.core.Control).setProperty(\"readOnly\", !!this.metadata.ui?.readOnly);\n }\n }\n}\n"],"mappings":";;;;;;QAASA,UAAU,GAAAC,sBAAA;EAAA,MAGZC,iBAAiB,GAAAC,sBAAA,CAAAC,mBAAA;EAGjB,MAAMC,gBAAgB,SAASL,UAAU,CAAC;IAC7C;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;IACWM,MAAMA,CAACC,QAA2B,EAAGC,WAAmB,EAAGC,SAAiB,GAAG,MAAM,EAAEC,aAAsB,EAAEC,QAAwD,EAAW;MACrL,IAAI,CAACA,QAAQ,GAAGA,QAAQ;MACxB,IAAI,CAACJ,QAAQ,GAAGA,QAAQ;MACxB,IAAI,CAACK,QAAQ,GAAGJ,WAAW,CAACK,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC;MAC5C,IAAI,CAACJ,SAAS,GAAGA,SAAS;MAE1B,IAAI,CAAC,IAAI,CAACK,UAAU,EAAE;QAElB,IAAI,CAACC,OAAO,GAAG,IAAIC,WAAW,CAAC;UAC3BC,EAAE,EAAE,IAAI,CAACC,gBAAgB,CAACR,aAAa,EAAEF,WAAW,CAAC;UACrDW,IAAI,EAAE,IAAI,CAACC,mBAAmB,CAACZ,WAAW,EAAEC,SAAS,EAAEY,SAAS,EAAE;YAC9DC,SAAS,EAAGC,GAAY,IAAK;cACzB,IAAI,CAACA,GAAG,IAAIA,GAAG,KAAK,WAAW,IAAIA,GAAG,KAAK,MAAM,EAAE,OAAO,EAAE;cAC5D,OAAOA,GAAG;YACd;UACJ,CAAC;QACL,CAAC,CAAY;QACb,IAAI,CAACC,qBAAqB,CAAC,IAAI,CAACT,OAAO,EAAER,QAAQ,EAAEE,SAAS,CAAC;QAC7D,OAAO,IAAI,CAACM,OAAO;MACvB;MAEA,IAAI,CAACA,OAAO,GAAG,IAAIb,iBAAiB,CAAC;QACjCe,EAAE,EAAE,IAAI,CAACC,gBAAgB,CAACR,aAAa,EAAEF,WAAW,CAAC;QACrDiB,KAAK,EAAE,IAAI,CAACL,mBAAmB,CAACZ,WAAW,EAAEC,SAAS,CAAC;QACvDiB,cAAc,EAAEnB,QAAQ;QACxBoB,QAAQ,EAAE,CAAC,CAACpB,QAAQ,CAACqB,EAAE,EAAED;MAC7B,CAAC,CAAY;MAEb,IAAI,CAACH,qBAAqB,CAAC,IAAI,CAACT,OAAO,EAAER,QAAQ,EAAEE,SAAS,CAAC;MAE5D,IAAI,CAACM,OAAO,CAAuBc,WAAW,CAAC,SAAS,EAAE,MAAM;QAC7D,MAAMC,MAAM,GAAG,IAAI,CAACC,2BAA2B,CAAC,CAAC;QAC7C,IAAI,IAAI,CAACpB,QAAQ,EAAE;UACf,IAAI,CAACA,QAAQ,CAACmB,MAAM,CAACE,OAAO,EAAE,IAAI,CAACpB,QAAQ,CAAC;QAChD;MACR,CAAC,CAAC;MAEF,OAAO,IAAI,CAACG,OAAO;IACvB;;IAEA;AACJ;AACA;AACA;IACckB,QAAQA,CAAA,EAAY;MAC1B,OAAO,IAAI,CAAClB,OAAO,GAAI,IAAI,CAACA,OAAO,CAAuBmB,WAAW,CAAC,OAAO,CAAC,GAAG,IAAI;IACzF;;IAEA;AACJ;AACA;IACcC,UAAUA,CAAA,EAAS;MACzB,IAAI,IAAI,CAACpB,OAAO,IAAI,IAAI,CAACR,QAAQ,EAAE;QAC/B,IAAI,CAAC,IAAI,CAACO,UAAU,EAAE;QACrB,IAAI,CAACC,OAAO,CAAyBqB,WAAW,CAAC,UAAU,EAAE,CAAC,CAAC,IAAI,CAAC7B,QAAQ,CAACqB,EAAE,EAAED,QAAQ,CAAC;MAC/F;IACJ;EACJ;EAAC,IAAAU,SAAA;IAAAC,UAAA;EAAA;EAAAD,SAAA,CAAAhC,gBAAA,GAAAA,gBAAA;EAAA,OAAAgC,SAAA;AAAA","ignoreList":[]}
1
+ {"version":3,"file":"VoiceInputPlugin-dbg.js","names":["BasePlugin","___controls_BasePlugin","VoiceInputControl","_interopRequireDefault","__VoiceInputControl","VoiceInputPlugin","render","metadata","bindingPath","modelName","engineScopeId","onChange","fieldKey","replace","isEditable","control","TextControl","id","generateStableId","text","generateBindingInfo","undefined","formatter","val","applyCommonDirectives","value","schemaMetadata","readOnly","ui","attachEvent","result","validate","isValid","errorMessage","getValue","getProperty","applyState","setProperty","__exports","__esModule"],"sources":["VoiceInputPlugin.ts"],"sourcesContent":["import { BasePlugin } from \"../controls/BasePlugin\";\nimport { IPropertyMetadata } from \"../../interfaces/ISchema\";\nimport Control from \"sap/ui/core/Control\";\nimport VoiceInputControl from \"../../controls/VoiceInputControl\";\nimport TextControl from \"sap/m/Text\";\n\nexport class VoiceInputPlugin extends BasePlugin {\n /**\n * Renders a `VoiceInputControl` component.\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 VoiceInputControl.\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, undefined, {\n formatter: (val: unknown) => {\n if (!val || val === \"undefined\" || val === \"null\") return \"\";\n return val;\n }\n })\n }) as Control;\n this.applyCommonDirectives(this.control, metadata, modelName);\n return this.control as Control;\n }\n\n this.control = new VoiceInputControl({\n id: this.generateStableId(engineScopeId, bindingPath),\n value: this.generateBindingInfo(bindingPath, modelName),\n schemaMetadata: metadata,\n readOnly: !!metadata.ui?.readOnly\n }) as Control;\n\n this.applyCommonDirectives(this.control, metadata, modelName);\n\n (this.control as VoiceInputControl).attachEvent('capture', () => {\n const result = this.validate();\n if (this.onChange) {\n this.onChange(result.isValid, this.fieldKey, result.errorMessage);\n }\n });\n\n return this.control as Control;\n }\n\n /**\n * Retrieves the current voice transcription text.\n * @returns {unknown} The text string.\n */\n protected getValue(): unknown {\n return this.control ? (this.control as VoiceInputControl).getProperty('value') : null;\n }\n\n /**\n * Applies dynamic read-only state.\n */\n protected applyState(): void {\n if (this.control && this.metadata) {\n if (!this.isEditable) return;\n (this.control as sap.ui.core.Control).setProperty(\"readOnly\", !!this.metadata.ui?.readOnly);\n }\n }\n}\n"],"mappings":";;;;;;QAASA,UAAU,GAAAC,sBAAA;EAAA,MAGZC,iBAAiB,GAAAC,sBAAA,CAAAC,mBAAA;EAGjB,MAAMC,gBAAgB,SAASL,UAAU,CAAC;IAC7C;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;IACWM,MAAMA,CAACC,QAA2B,EAAGC,WAAmB,EAAGC,SAAiB,GAAG,MAAM,EAAEC,aAAsB,EAAEC,QAAmG,EAAW;MAChO,IAAI,CAACA,QAAQ,GAAGA,QAAQ;MACxB,IAAI,CAACJ,QAAQ,GAAGA,QAAQ;MACxB,IAAI,CAACK,QAAQ,GAAGJ,WAAW,CAACK,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC;MAC5C,IAAI,CAACJ,SAAS,GAAGA,SAAS;MAE1B,IAAI,CAAC,IAAI,CAACK,UAAU,EAAE;QAElB,IAAI,CAACC,OAAO,GAAG,IAAIC,WAAW,CAAC;UAC3BC,EAAE,EAAE,IAAI,CAACC,gBAAgB,CAACR,aAAa,EAAEF,WAAW,CAAC;UACrDW,IAAI,EAAE,IAAI,CAACC,mBAAmB,CAACZ,WAAW,EAAEC,SAAS,EAAEY,SAAS,EAAE;YAC9DC,SAAS,EAAGC,GAAY,IAAK;cACzB,IAAI,CAACA,GAAG,IAAIA,GAAG,KAAK,WAAW,IAAIA,GAAG,KAAK,MAAM,EAAE,OAAO,EAAE;cAC5D,OAAOA,GAAG;YACd;UACJ,CAAC;QACL,CAAC,CAAY;QACb,IAAI,CAACC,qBAAqB,CAAC,IAAI,CAACT,OAAO,EAAER,QAAQ,EAAEE,SAAS,CAAC;QAC7D,OAAO,IAAI,CAACM,OAAO;MACvB;MAEA,IAAI,CAACA,OAAO,GAAG,IAAIb,iBAAiB,CAAC;QACjCe,EAAE,EAAE,IAAI,CAACC,gBAAgB,CAACR,aAAa,EAAEF,WAAW,CAAC;QACrDiB,KAAK,EAAE,IAAI,CAACL,mBAAmB,CAACZ,WAAW,EAAEC,SAAS,CAAC;QACvDiB,cAAc,EAAEnB,QAAQ;QACxBoB,QAAQ,EAAE,CAAC,CAACpB,QAAQ,CAACqB,EAAE,EAAED;MAC7B,CAAC,CAAY;MAEb,IAAI,CAACH,qBAAqB,CAAC,IAAI,CAACT,OAAO,EAAER,QAAQ,EAAEE,SAAS,CAAC;MAE5D,IAAI,CAACM,OAAO,CAAuBc,WAAW,CAAC,SAAS,EAAE,MAAM;QAC7D,MAAMC,MAAM,GAAG,IAAI,CAACC,QAAQ,CAAC,CAAC;QAC1B,IAAI,IAAI,CAACpB,QAAQ,EAAE;UACf,IAAI,CAACA,QAAQ,CAACmB,MAAM,CAACE,OAAO,EAAE,IAAI,CAACpB,QAAQ,EAAEkB,MAAM,CAACG,YAAY,CAAC;QACrE;MACR,CAAC,CAAC;MAEF,OAAO,IAAI,CAAClB,OAAO;IACvB;;IAEA;AACJ;AACA;AACA;IACcmB,QAAQA,CAAA,EAAY;MAC1B,OAAO,IAAI,CAACnB,OAAO,GAAI,IAAI,CAACA,OAAO,CAAuBoB,WAAW,CAAC,OAAO,CAAC,GAAG,IAAI;IACzF;;IAEA;AACJ;AACA;IACcC,UAAUA,CAAA,EAAS;MACzB,IAAI,IAAI,CAACrB,OAAO,IAAI,IAAI,CAACR,QAAQ,EAAE;QAC/B,IAAI,CAAC,IAAI,CAACO,UAAU,EAAE;QACrB,IAAI,CAACC,OAAO,CAAyBsB,WAAW,CAAC,UAAU,EAAE,CAAC,CAAC,IAAI,CAAC9B,QAAQ,CAACqB,EAAE,EAAED,QAAQ,CAAC;MAC/F;IACJ;EACJ;EAAC,IAAAW,SAAA;IAAAC,UAAA;EAAA;EAAAD,SAAA,CAAAjC,gBAAA,GAAAA,gBAAA;EAAA,OAAAiC,SAAA;AAAA","ignoreList":[]}
@@ -13,7 +13,7 @@ declare module "nz/co/siliconst/ui5/metaui/plugins/controls/VoiceInputPlugin" {
13
13
  * @param onChange The callback fired on value change.
14
14
  * @returns {Control} The configured VoiceInputControl.
15
15
  */
16
- render(metadata: IPropertyMetadata, bindingPath: string, modelName?: string, engineScopeId?: string, onChange?: (isValid: boolean, fieldKey?: string) => void): Control;
16
+ render(metadata: IPropertyMetadata, bindingPath: string, modelName?: string, engineScopeId?: string, onChange?: (isValid: boolean, fieldKey?: string, errorMessage?: string, controlId?: string) => void): Control;
17
17
  /**
18
18
  * Retrieves the current voice transcription text.
19
19
  * @returns {unknown} The text string.
@@ -1 +1 @@
1
- {"version":3,"file":"VoiceInputPlugin.d.ts","sourceRoot":"../../../../../../../../..","sources":["src/nz/co/siliconst/ui5/metaui/plugins/controls/VoiceInputPlugin.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,8DAA8D,CAAC;IAC9E,OAAO,EAAE,UAAU,EAAE,MAAM,wDAAwD,CAAC;IACpF,OAAO,EAAE,iBAAiB,EAAE,MAAM,+CAA+C,CAAC;IAClF,OAAO,OAAO,MAAM,qBAAqB,CAAC;IAI1C,MAAa,gBAAiB,SAAQ,UAAU;QAC5C;;;;;;;;;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;QAwCxL;;;WAGG;QACH,SAAS,CAAC,QAAQ,IAAI,OAAO;QAI7B;;WAEG;QACH,SAAS,CAAC,UAAU,IAAI,IAAI;KAM/B;CAEA"}
1
+ {"version":3,"file":"VoiceInputPlugin.d.ts","sourceRoot":"../../../../../../../../..","sources":["src/nz/co/siliconst/ui5/metaui/plugins/controls/VoiceInputPlugin.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,8DAA8D,CAAC;IAC9E,OAAO,EAAE,UAAU,EAAE,MAAM,wDAAwD,CAAC;IACpF,OAAO,EAAE,iBAAiB,EAAE,MAAM,+CAA+C,CAAC;IAClF,OAAO,OAAO,MAAM,qBAAqB,CAAC;IAI1C,MAAa,gBAAiB,SAAQ,UAAU;QAC5C;;;;;;;;;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;QAwCnO;;;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","../../controls/VoiceInputControl","sap/m/Text"],function(t,e,n){"use strict";function i(t){return t&&t.__esModule&&typeof t.default!=="undefined"?t.default:t}const a=t["BasePlugin"];const r=i(e);class s extends a{render(t,e,i="meta",a,s){this.onChange=s;this.metadata=t;this.fieldKey=e.replace("/","");this.modelName=i;if(!this.isEditable){this.control=new n({id:this.generateStableId(a,e),text:this.generateBindingInfo(e,i,undefined,{formatter:t=>{if(!t||t==="undefined"||t==="null")return"";return t}})});this.applyCommonDirectives(this.control,t,i);return this.control}this.control=new r({id:this.generateStableId(a,e),value:this.generateBindingInfo(e,i),schemaMetadata:t,readOnly:!!t.ui?.readOnly});this.applyCommonDirectives(this.control,t,i);this.control.attachEvent("capture",()=>{const t=this.validateAndApplyVisualState();if(this.onChange){this.onChange(t.isValid,this.fieldKey)}});return this.control}getValue(){return this.control?this.control.getProperty("value"):null}applyState(){if(this.control&&this.metadata){if(!this.isEditable)return;this.control.setProperty("readOnly",!!this.metadata.ui?.readOnly)}}}var o={__esModule:true};o.VoiceInputPlugin=s;return o});
1
+ sap.ui.define(["../controls/BasePlugin","../../controls/VoiceInputControl","sap/m/Text"],function(t,e,n){"use strict";function i(t){return t&&t.__esModule&&typeof t.default!=="undefined"?t.default:t}const r=t["BasePlugin"];const a=i(e);class s extends r{render(t,e,i="meta",r,s){this.onChange=s;this.metadata=t;this.fieldKey=e.replace("/","");this.modelName=i;if(!this.isEditable){this.control=new n({id:this.generateStableId(r,e),text:this.generateBindingInfo(e,i,undefined,{formatter:t=>{if(!t||t==="undefined"||t==="null")return"";return t}})});this.applyCommonDirectives(this.control,t,i);return this.control}this.control=new a({id:this.generateStableId(r,e),value:this.generateBindingInfo(e,i),schemaMetadata:t,readOnly:!!t.ui?.readOnly});this.applyCommonDirectives(this.control,t,i);this.control.attachEvent("capture",()=>{const t=this.validate();if(this.onChange){this.onChange(t.isValid,this.fieldKey,t.errorMessage)}});return this.control}getValue(){return this.control?this.control.getProperty("value"):null}applyState(){if(this.control&&this.metadata){if(!this.isEditable)return;this.control.setProperty("readOnly",!!this.metadata.ui?.readOnly)}}}var o={__esModule:true};o.VoiceInputPlugin=s;return o});
2
2
  //# sourceMappingURL=VoiceInputPlugin.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"VoiceInputPlugin.js","names":["BasePlugin","___controls_BasePlugin","VoiceInputControl","_interopRequireDefault","__VoiceInputControl","VoiceInputPlugin","render","metadata","bindingPath","modelName","engineScopeId","onChange","this","fieldKey","replace","isEditable","control","TextControl","id","generateStableId","text","generateBindingInfo","undefined","formatter","val","applyCommonDirectives","value","schemaMetadata","readOnly","ui","attachEvent","result","validateAndApplyVisualState","isValid","getValue","getProperty","applyState","setProperty","__exports","__esModule"],"sources":["VoiceInputPlugin.ts"],"sourcesContent":["import { BasePlugin } from \"../controls/BasePlugin\";\nimport { IPropertyMetadata } from \"../../interfaces/ISchema\";\nimport Control from \"sap/ui/core/Control\";\nimport VoiceInputControl from \"../../controls/VoiceInputControl\";\nimport TextControl from \"sap/m/Text\";\n\nexport class VoiceInputPlugin extends BasePlugin {\n /**\n * Renders a `VoiceInputControl` component.\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 VoiceInputControl.\n */\n public render(metadata: IPropertyMetadata, bindingPath: string, modelName: string = \"meta\", engineScopeId?: string, onChange?: (isValid: boolean, fieldKey?: 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, undefined, {\n formatter: (val: unknown) => {\n if (!val || val === \"undefined\" || val === \"null\") return \"\";\n return val;\n }\n })\n }) as Control;\n this.applyCommonDirectives(this.control, metadata, modelName);\n return this.control as Control;\n }\n\n this.control = new VoiceInputControl({\n id: this.generateStableId(engineScopeId, bindingPath),\n value: this.generateBindingInfo(bindingPath, modelName),\n schemaMetadata: metadata,\n readOnly: !!metadata.ui?.readOnly\n }) as Control;\n\n this.applyCommonDirectives(this.control, metadata, modelName);\n\n (this.control as VoiceInputControl).attachEvent('capture', () => {\n const result = this.validateAndApplyVisualState();\n if (this.onChange) {\n this.onChange(result.isValid, this.fieldKey);\n }\n });\n\n return this.control as Control;\n }\n\n /**\n * Retrieves the current voice transcription text.\n * @returns {unknown} The text string.\n */\n protected getValue(): unknown {\n return this.control ? (this.control as VoiceInputControl).getProperty('value') : null;\n }\n\n /**\n * Applies dynamic read-only state.\n */\n protected applyState(): void {\n if (this.control && this.metadata) {\n if (!this.isEditable) return;\n (this.control as sap.ui.core.Control).setProperty(\"readOnly\", !!this.metadata.ui?.readOnly);\n }\n }\n}\n"],"mappings":"6MAASA,EAAUC,EAAA,oBAGZC,EAAiBC,EAAAC,GAGjB,MAAMC,UAAyBL,EAW3BM,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,EAAWa,UAAW,CAC9DC,UAAYC,IACR,IAAKA,GAAOA,IAAQ,aAAeA,IAAQ,OAAQ,MAAO,GAC1D,OAAOA,OAInBZ,KAAKa,sBAAsBb,KAAKI,QAAST,EAAUE,GACnD,OAAOG,KAAKI,OAChB,CAEAJ,KAAKI,QAAU,IAAId,EAAkB,CACjCgB,GAAIN,KAAKO,iBAAiBT,EAAeF,GACzCkB,MAAOd,KAAKS,oBAAoBb,EAAaC,GAC7CkB,eAAgBpB,EAChBqB,WAAYrB,EAASsB,IAAID,WAG7BhB,KAAKa,sBAAsBb,KAAKI,QAAST,EAAUE,GAElDG,KAAKI,QAA8Bc,YAAY,UAAW,KACvD,MAAMC,EAASnB,KAAKoB,8BAChB,GAAIpB,KAAKD,SAAU,CACfC,KAAKD,SAASoB,EAAOE,QAASrB,KAAKC,SACvC,IAGR,OAAOD,KAAKI,OAChB,CAMUkB,WACN,OAAOtB,KAAKI,QAAWJ,KAAKI,QAA8BmB,YAAY,SAAW,IACrF,CAKUC,aACN,GAAIxB,KAAKI,SAAWJ,KAAKL,SAAU,CAC/B,IAAKK,KAAKG,WAAY,OACrBH,KAAKI,QAAgCqB,YAAY,aAAczB,KAAKL,SAASsB,IAAID,SACtF,CACJ,EACH,IAAAU,EAAA,CAAAC,WAAA,MAAAD,EAAAjC,mBAAA,OAAAiC,CAAA","ignoreList":[]}
1
+ {"version":3,"file":"VoiceInputPlugin.js","names":["BasePlugin","___controls_BasePlugin","VoiceInputControl","_interopRequireDefault","__VoiceInputControl","VoiceInputPlugin","render","metadata","bindingPath","modelName","engineScopeId","onChange","this","fieldKey","replace","isEditable","control","TextControl","id","generateStableId","text","generateBindingInfo","undefined","formatter","val","applyCommonDirectives","value","schemaMetadata","readOnly","ui","attachEvent","result","validate","isValid","errorMessage","getValue","getProperty","applyState","setProperty","__exports","__esModule"],"sources":["VoiceInputPlugin.ts"],"sourcesContent":["import { BasePlugin } from \"../controls/BasePlugin\";\nimport { IPropertyMetadata } from \"../../interfaces/ISchema\";\nimport Control from \"sap/ui/core/Control\";\nimport VoiceInputControl from \"../../controls/VoiceInputControl\";\nimport TextControl from \"sap/m/Text\";\n\nexport class VoiceInputPlugin extends BasePlugin {\n /**\n * Renders a `VoiceInputControl` component.\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 VoiceInputControl.\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, undefined, {\n formatter: (val: unknown) => {\n if (!val || val === \"undefined\" || val === \"null\") return \"\";\n return val;\n }\n })\n }) as Control;\n this.applyCommonDirectives(this.control, metadata, modelName);\n return this.control as Control;\n }\n\n this.control = new VoiceInputControl({\n id: this.generateStableId(engineScopeId, bindingPath),\n value: this.generateBindingInfo(bindingPath, modelName),\n schemaMetadata: metadata,\n readOnly: !!metadata.ui?.readOnly\n }) as Control;\n\n this.applyCommonDirectives(this.control, metadata, modelName);\n\n (this.control as VoiceInputControl).attachEvent('capture', () => {\n const result = this.validate();\n if (this.onChange) {\n this.onChange(result.isValid, this.fieldKey, result.errorMessage);\n }\n });\n\n return this.control as Control;\n }\n\n /**\n * Retrieves the current voice transcription text.\n * @returns {unknown} The text string.\n */\n protected getValue(): unknown {\n return this.control ? (this.control as VoiceInputControl).getProperty('value') : null;\n }\n\n /**\n * Applies dynamic read-only state.\n */\n protected applyState(): void {\n if (this.control && this.metadata) {\n if (!this.isEditable) return;\n (this.control as sap.ui.core.Control).setProperty(\"readOnly\", !!this.metadata.ui?.readOnly);\n }\n }\n}\n"],"mappings":"6MAASA,EAAUC,EAAA,oBAGZC,EAAiBC,EAAAC,GAGjB,MAAMC,UAAyBL,EAW3BM,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,EAAWa,UAAW,CAC9DC,UAAYC,IACR,IAAKA,GAAOA,IAAQ,aAAeA,IAAQ,OAAQ,MAAO,GAC1D,OAAOA,OAInBZ,KAAKa,sBAAsBb,KAAKI,QAAST,EAAUE,GACnD,OAAOG,KAAKI,OAChB,CAEAJ,KAAKI,QAAU,IAAId,EAAkB,CACjCgB,GAAIN,KAAKO,iBAAiBT,EAAeF,GACzCkB,MAAOd,KAAKS,oBAAoBb,EAAaC,GAC7CkB,eAAgBpB,EAChBqB,WAAYrB,EAASsB,IAAID,WAG7BhB,KAAKa,sBAAsBb,KAAKI,QAAST,EAAUE,GAElDG,KAAKI,QAA8Bc,YAAY,UAAW,KACvD,MAAMC,EAASnB,KAAKoB,WAChB,GAAIpB,KAAKD,SAAU,CACfC,KAAKD,SAASoB,EAAOE,QAASrB,KAAKC,SAAUkB,EAAOG,aACxD,IAGR,OAAOtB,KAAKI,OAChB,CAMUmB,WACN,OAAOvB,KAAKI,QAAWJ,KAAKI,QAA8BoB,YAAY,SAAW,IACrF,CAKUC,aACN,GAAIzB,KAAKI,SAAWJ,KAAKL,SAAU,CAC/B,IAAKK,KAAKG,WAAY,OACrBH,KAAKI,QAAgCsB,YAAY,aAAc1B,KAAKL,SAASsB,IAAID,SACtF,CACJ,EACH,IAAAW,EAAA,CAAAC,WAAA,MAAAD,EAAAlC,mBAAA,OAAAkC,CAAA","ignoreList":[]}