@siliconst/metaui 1.4.21 → 1.4.34

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 (338) hide show
  1. package/package.json +1 -1
  2. package/src/nz/co/siliconst/ui5/metaui/constants/MetaUIConstants-dbg.js +51 -0
  3. package/src/nz/co/siliconst/ui5/metaui/constants/MetaUIConstants-dbg.js.map +1 -0
  4. package/src/nz/co/siliconst/ui5/metaui/constants/MetaUIConstants.d.ts +41 -0
  5. package/src/nz/co/siliconst/ui5/metaui/constants/MetaUIConstants.d.ts.map +1 -0
  6. package/src/nz/co/siliconst/ui5/metaui/constants/MetaUIConstants.js +2 -0
  7. package/src/nz/co/siliconst/ui5/metaui/constants/MetaUIConstants.js.map +1 -0
  8. package/src/nz/co/siliconst/ui5/metaui/constants/MetaUIConstants.ts +44 -0
  9. package/src/nz/co/siliconst/ui5/metaui/controls/BaseHardwareControl-dbg.js.map +1 -1
  10. package/src/nz/co/siliconst/ui5/metaui/controls/BaseHardwareControl.js.map +1 -1
  11. package/src/nz/co/siliconst/ui5/metaui/controls/BaseHardwareControl.ts +1 -1
  12. package/src/nz/co/siliconst/ui5/metaui/controls/BaseHardwareControlRenderer-dbg.js.map +1 -1
  13. package/src/nz/co/siliconst/ui5/metaui/controls/BaseHardwareControlRenderer.d.ts.map +1 -1
  14. package/src/nz/co/siliconst/ui5/metaui/controls/BaseHardwareControlRenderer.js.map +1 -1
  15. package/src/nz/co/siliconst/ui5/metaui/controls/BaseHardwareControlRenderer.ts +2 -1
  16. package/src/nz/co/siliconst/ui5/metaui/controls/CameraControl-dbg.js +2 -2
  17. package/src/nz/co/siliconst/ui5/metaui/controls/CameraControl-dbg.js.map +1 -1
  18. package/src/nz/co/siliconst/ui5/metaui/controls/CameraControl.js +1 -1
  19. package/src/nz/co/siliconst/ui5/metaui/controls/CameraControl.js.map +1 -1
  20. package/src/nz/co/siliconst/ui5/metaui/controls/CameraControl.ts +3 -3
  21. package/src/nz/co/siliconst/ui5/metaui/controls/DynamicHost-dbg.js +5 -1
  22. package/src/nz/co/siliconst/ui5/metaui/controls/DynamicHost-dbg.js.map +1 -1
  23. package/src/nz/co/siliconst/ui5/metaui/controls/DynamicHost.d.ts +6 -2
  24. package/src/nz/co/siliconst/ui5/metaui/controls/DynamicHost.d.ts.map +1 -1
  25. package/src/nz/co/siliconst/ui5/metaui/controls/DynamicHost.js +1 -1
  26. package/src/nz/co/siliconst/ui5/metaui/controls/DynamicHost.js.map +1 -1
  27. package/src/nz/co/siliconst/ui5/metaui/controls/DynamicHost.ts +10 -9
  28. package/src/nz/co/siliconst/ui5/metaui/controls/GeolocationControl-dbg.js +0 -9
  29. package/src/nz/co/siliconst/ui5/metaui/controls/GeolocationControl-dbg.js.map +1 -1
  30. package/src/nz/co/siliconst/ui5/metaui/controls/GeolocationControl.d.ts +0 -9
  31. package/src/nz/co/siliconst/ui5/metaui/controls/GeolocationControl.d.ts.map +1 -1
  32. package/src/nz/co/siliconst/ui5/metaui/controls/GeolocationControl.js +1 -1
  33. package/src/nz/co/siliconst/ui5/metaui/controls/GeolocationControl.js.map +1 -1
  34. package/src/nz/co/siliconst/ui5/metaui/controls/GeolocationControl.ts +3 -9
  35. package/src/nz/co/siliconst/ui5/metaui/controls/RichTextControl-dbg.js +0 -11
  36. package/src/nz/co/siliconst/ui5/metaui/controls/RichTextControl-dbg.js.map +1 -1
  37. package/src/nz/co/siliconst/ui5/metaui/controls/RichTextControl.d.ts +0 -11
  38. package/src/nz/co/siliconst/ui5/metaui/controls/RichTextControl.d.ts.map +1 -1
  39. package/src/nz/co/siliconst/ui5/metaui/controls/RichTextControl.js +1 -1
  40. package/src/nz/co/siliconst/ui5/metaui/controls/RichTextControl.js.map +1 -1
  41. package/src/nz/co/siliconst/ui5/metaui/controls/RichTextControl.ts +2 -9
  42. package/src/nz/co/siliconst/ui5/metaui/controls/SignatureControl-dbg.js +2 -7
  43. package/src/nz/co/siliconst/ui5/metaui/controls/SignatureControl-dbg.js.map +1 -1
  44. package/src/nz/co/siliconst/ui5/metaui/controls/SignatureControl.d.ts +0 -5
  45. package/src/nz/co/siliconst/ui5/metaui/controls/SignatureControl.d.ts.map +1 -1
  46. package/src/nz/co/siliconst/ui5/metaui/controls/SignatureControl.js +1 -1
  47. package/src/nz/co/siliconst/ui5/metaui/controls/SignatureControl.js.map +1 -1
  48. package/src/nz/co/siliconst/ui5/metaui/controls/SignatureControl.ts +3 -7
  49. package/src/nz/co/siliconst/ui5/metaui/controls/VoiceInputControl-dbg.js +1 -6
  50. package/src/nz/co/siliconst/ui5/metaui/controls/VoiceInputControl-dbg.js.map +1 -1
  51. package/src/nz/co/siliconst/ui5/metaui/controls/VoiceInputControl.d.ts +0 -5
  52. package/src/nz/co/siliconst/ui5/metaui/controls/VoiceInputControl.d.ts.map +1 -1
  53. package/src/nz/co/siliconst/ui5/metaui/controls/VoiceInputControl.js +1 -1
  54. package/src/nz/co/siliconst/ui5/metaui/controls/VoiceInputControl.js.map +1 -1
  55. package/src/nz/co/siliconst/ui5/metaui/controls/VoiceInputControl.ts +9 -12
  56. package/src/nz/co/siliconst/ui5/metaui/controls/host/GeneratorHost-dbg.js +51 -12
  57. package/src/nz/co/siliconst/ui5/metaui/controls/host/GeneratorHost-dbg.js.map +1 -1
  58. package/src/nz/co/siliconst/ui5/metaui/controls/host/GeneratorHost.d.ts +13 -0
  59. package/src/nz/co/siliconst/ui5/metaui/controls/host/GeneratorHost.d.ts.map +1 -1
  60. package/src/nz/co/siliconst/ui5/metaui/controls/host/GeneratorHost.js +1 -1
  61. package/src/nz/co/siliconst/ui5/metaui/controls/host/GeneratorHost.js.map +1 -1
  62. package/src/nz/co/siliconst/ui5/metaui/controls/host/GeneratorHost.ts +53 -14
  63. package/src/nz/co/siliconst/ui5/metaui/controls/host/delegates/DataSyncDelegate-dbg.js +2 -2
  64. package/src/nz/co/siliconst/ui5/metaui/controls/host/delegates/DataSyncDelegate-dbg.js.map +1 -1
  65. package/src/nz/co/siliconst/ui5/metaui/controls/host/delegates/DataSyncDelegate.d.ts +1 -1
  66. package/src/nz/co/siliconst/ui5/metaui/controls/host/delegates/DataSyncDelegate.d.ts.map +1 -1
  67. package/src/nz/co/siliconst/ui5/metaui/controls/host/delegates/DataSyncDelegate.js +1 -1
  68. package/src/nz/co/siliconst/ui5/metaui/controls/host/delegates/DataSyncDelegate.js.map +1 -1
  69. package/src/nz/co/siliconst/ui5/metaui/controls/host/delegates/DataSyncDelegate.ts +3 -3
  70. package/src/nz/co/siliconst/ui5/metaui/controls/host/delegates/ODataDelegate-dbg.js.map +1 -1
  71. package/src/nz/co/siliconst/ui5/metaui/controls/host/delegates/ODataDelegate.d.ts +1 -1
  72. package/src/nz/co/siliconst/ui5/metaui/controls/host/delegates/ODataDelegate.d.ts.map +1 -1
  73. package/src/nz/co/siliconst/ui5/metaui/controls/host/delegates/ODataDelegate.js.map +1 -1
  74. package/src/nz/co/siliconst/ui5/metaui/controls/host/delegates/ODataDelegate.ts +8 -7
  75. package/src/nz/co/siliconst/ui5/metaui/controls/host/delegates/ValidationDelegate-dbg.js.map +1 -1
  76. package/src/nz/co/siliconst/ui5/metaui/controls/host/delegates/ValidationDelegate.d.ts +1 -1
  77. package/src/nz/co/siliconst/ui5/metaui/controls/host/delegates/ValidationDelegate.d.ts.map +1 -1
  78. package/src/nz/co/siliconst/ui5/metaui/controls/host/delegates/ValidationDelegate.js.map +1 -1
  79. package/src/nz/co/siliconst/ui5/metaui/controls/host/delegates/ValidationDelegate.ts +3 -3
  80. package/src/nz/co/siliconst/ui5/metaui/core/ConditionEngine-dbg.js.map +1 -1
  81. package/src/nz/co/siliconst/ui5/metaui/core/ConditionEngine.js.map +1 -1
  82. package/src/nz/co/siliconst/ui5/metaui/core/ConditionEngine.ts +4 -4
  83. package/src/nz/co/siliconst/ui5/metaui/core/Engine-dbg.js +3 -4
  84. package/src/nz/co/siliconst/ui5/metaui/core/Engine-dbg.js.map +1 -1
  85. package/src/nz/co/siliconst/ui5/metaui/core/Engine.d.ts +1 -1
  86. package/src/nz/co/siliconst/ui5/metaui/core/Engine.d.ts.map +1 -1
  87. package/src/nz/co/siliconst/ui5/metaui/core/Engine.js +1 -1
  88. package/src/nz/co/siliconst/ui5/metaui/core/Engine.js.map +1 -1
  89. package/src/nz/co/siliconst/ui5/metaui/core/Engine.ts +6 -7
  90. package/src/nz/co/siliconst/ui5/metaui/core/LayoutMutator-dbg.js +84 -0
  91. package/src/nz/co/siliconst/ui5/metaui/core/LayoutMutator-dbg.js.map +1 -0
  92. package/src/nz/co/siliconst/ui5/metaui/core/LayoutMutator.d.ts +16 -0
  93. package/src/nz/co/siliconst/ui5/metaui/core/LayoutMutator.d.ts.map +1 -0
  94. package/src/nz/co/siliconst/ui5/metaui/core/LayoutMutator.js +2 -0
  95. package/src/nz/co/siliconst/ui5/metaui/core/LayoutMutator.js.map +1 -0
  96. package/src/nz/co/siliconst/ui5/metaui/core/LayoutMutator.ts +80 -0
  97. package/src/nz/co/siliconst/ui5/metaui/core/LayoutScorer-dbg.js +137 -0
  98. package/src/nz/co/siliconst/ui5/metaui/core/LayoutScorer-dbg.js.map +1 -0
  99. package/src/nz/co/siliconst/ui5/metaui/core/LayoutScorer.d.ts +24 -0
  100. package/src/nz/co/siliconst/ui5/metaui/core/LayoutScorer.d.ts.map +1 -0
  101. package/src/nz/co/siliconst/ui5/metaui/core/LayoutScorer.js +2 -0
  102. package/src/nz/co/siliconst/ui5/metaui/core/LayoutScorer.js.map +1 -0
  103. package/src/nz/co/siliconst/ui5/metaui/core/LayoutScorer.ts +141 -0
  104. package/src/nz/co/siliconst/ui5/metaui/core/PluginRegistry-dbg.js +26 -0
  105. package/src/nz/co/siliconst/ui5/metaui/core/PluginRegistry-dbg.js.map +1 -1
  106. package/src/nz/co/siliconst/ui5/metaui/core/PluginRegistry.d.ts +2 -0
  107. package/src/nz/co/siliconst/ui5/metaui/core/PluginRegistry.d.ts.map +1 -1
  108. package/src/nz/co/siliconst/ui5/metaui/core/PluginRegistry.js +1 -1
  109. package/src/nz/co/siliconst/ui5/metaui/core/PluginRegistry.js.map +1 -1
  110. package/src/nz/co/siliconst/ui5/metaui/core/PluginRegistry.ts +29 -1
  111. package/src/nz/co/siliconst/ui5/metaui/core/SchemaNormalizer-dbg.js +1 -1
  112. package/src/nz/co/siliconst/ui5/metaui/core/SchemaNormalizer-dbg.js.map +1 -1
  113. package/src/nz/co/siliconst/ui5/metaui/core/SchemaNormalizer.d.ts +4 -4
  114. package/src/nz/co/siliconst/ui5/metaui/core/SchemaNormalizer.d.ts.map +1 -1
  115. package/src/nz/co/siliconst/ui5/metaui/core/SchemaNormalizer.js +1 -1
  116. package/src/nz/co/siliconst/ui5/metaui/core/SchemaNormalizer.js.map +1 -1
  117. package/src/nz/co/siliconst/ui5/metaui/core/SchemaNormalizer.ts +11 -11
  118. package/src/nz/co/siliconst/ui5/metaui/core/StateManager-dbg.js.map +1 -1
  119. package/src/nz/co/siliconst/ui5/metaui/core/StateManager.js.map +1 -1
  120. package/src/nz/co/siliconst/ui5/metaui/core/StateManager.ts +1 -1
  121. package/src/nz/co/siliconst/ui5/metaui/interfaces/ISchema-dbg.js.map +1 -1
  122. package/src/nz/co/siliconst/ui5/metaui/interfaces/ISchema.d.ts +4 -1
  123. package/src/nz/co/siliconst/ui5/metaui/interfaces/ISchema.d.ts.map +1 -1
  124. package/src/nz/co/siliconst/ui5/metaui/interfaces/ISchema.ts +5 -1
  125. package/src/nz/co/siliconst/ui5/metaui/layouts/FormLayout-dbg.js +5 -5
  126. package/src/nz/co/siliconst/ui5/metaui/layouts/FormLayout-dbg.js.map +1 -1
  127. package/src/nz/co/siliconst/ui5/metaui/layouts/FormLayout.d.ts.map +1 -1
  128. package/src/nz/co/siliconst/ui5/metaui/layouts/FormLayout.js +1 -1
  129. package/src/nz/co/siliconst/ui5/metaui/layouts/FormLayout.js.map +1 -1
  130. package/src/nz/co/siliconst/ui5/metaui/layouts/FormLayout.ts +4 -4
  131. package/src/nz/co/siliconst/ui5/metaui/layouts/TableLayout-dbg.js +7 -5
  132. package/src/nz/co/siliconst/ui5/metaui/layouts/TableLayout-dbg.js.map +1 -1
  133. package/src/nz/co/siliconst/ui5/metaui/layouts/TableLayout.d.ts.map +1 -1
  134. package/src/nz/co/siliconst/ui5/metaui/layouts/TableLayout.js +1 -1
  135. package/src/nz/co/siliconst/ui5/metaui/layouts/TableLayout.js.map +1 -1
  136. package/src/nz/co/siliconst/ui5/metaui/layouts/TableLayout.ts +11 -7
  137. package/src/nz/co/siliconst/ui5/metaui/library-preload.js +40 -37
  138. package/src/nz/co/siliconst/ui5/metaui/library-preload.js.map +1 -1
  139. package/src/nz/co/siliconst/ui5/metaui/openapi/OpenApiParserFactory-dbg.js.map +1 -1
  140. package/src/nz/co/siliconst/ui5/metaui/openapi/OpenApiParserFactory.d.ts +1 -1
  141. package/src/nz/co/siliconst/ui5/metaui/openapi/OpenApiParserFactory.d.ts.map +1 -1
  142. package/src/nz/co/siliconst/ui5/metaui/openapi/OpenApiParserFactory.js.map +1 -1
  143. package/src/nz/co/siliconst/ui5/metaui/openapi/OpenApiParserFactory.ts +1 -1
  144. package/src/nz/co/siliconst/ui5/metaui/openapi/OpenApiRefResolver-dbg.js.map +1 -1
  145. package/src/nz/co/siliconst/ui5/metaui/openapi/OpenApiRefResolver.d.ts +1 -1
  146. package/src/nz/co/siliconst/ui5/metaui/openapi/OpenApiRefResolver.d.ts.map +1 -1
  147. package/src/nz/co/siliconst/ui5/metaui/openapi/OpenApiRefResolver.js.map +1 -1
  148. package/src/nz/co/siliconst/ui5/metaui/openapi/OpenApiRefResolver.ts +1 -1
  149. package/src/nz/co/siliconst/ui5/metaui/openapi/OpenApiUIMapper-dbg.js.map +1 -1
  150. package/src/nz/co/siliconst/ui5/metaui/openapi/OpenApiUIMapper.d.ts +1 -1
  151. package/src/nz/co/siliconst/ui5/metaui/openapi/OpenApiUIMapper.d.ts.map +1 -1
  152. package/src/nz/co/siliconst/ui5/metaui/openapi/OpenApiUIMapper.js.map +1 -1
  153. package/src/nz/co/siliconst/ui5/metaui/openapi/OpenApiUIMapper.ts +1 -1
  154. package/src/nz/co/siliconst/ui5/metaui/openapi/heuristics/OpenApiHeuristicEngine-dbg.js +2 -2
  155. package/src/nz/co/siliconst/ui5/metaui/openapi/heuristics/OpenApiHeuristicEngine-dbg.js.map +1 -1
  156. package/src/nz/co/siliconst/ui5/metaui/openapi/heuristics/OpenApiHeuristicEngine.js.map +1 -1
  157. package/src/nz/co/siliconst/ui5/metaui/openapi/heuristics/OpenApiHeuristicEngine.ts +2 -2
  158. package/src/nz/co/siliconst/ui5/metaui/openapi/heuristics/plugins/ProtobufVariantHeuristic-dbg.js.map +1 -1
  159. package/src/nz/co/siliconst/ui5/metaui/openapi/heuristics/plugins/ProtobufVariantHeuristic.d.ts +1 -1
  160. package/src/nz/co/siliconst/ui5/metaui/openapi/heuristics/plugins/ProtobufVariantHeuristic.d.ts.map +1 -1
  161. package/src/nz/co/siliconst/ui5/metaui/openapi/heuristics/plugins/ProtobufVariantHeuristic.js.map +1 -1
  162. package/src/nz/co/siliconst/ui5/metaui/openapi/heuristics/plugins/ProtobufVariantHeuristic.ts +3 -3
  163. package/src/nz/co/siliconst/ui5/metaui/openapi/parsers/OpenApi2Parser-dbg.js.map +1 -1
  164. package/src/nz/co/siliconst/ui5/metaui/openapi/parsers/OpenApi2Parser.d.ts +1 -1
  165. package/src/nz/co/siliconst/ui5/metaui/openapi/parsers/OpenApi2Parser.d.ts.map +1 -1
  166. package/src/nz/co/siliconst/ui5/metaui/openapi/parsers/OpenApi2Parser.js.map +1 -1
  167. package/src/nz/co/siliconst/ui5/metaui/openapi/parsers/OpenApi2Parser.ts +1 -1
  168. package/src/nz/co/siliconst/ui5/metaui/openapi/parsers/OpenApi3Parser-dbg.js.map +1 -1
  169. package/src/nz/co/siliconst/ui5/metaui/openapi/parsers/OpenApi3Parser.d.ts +1 -1
  170. package/src/nz/co/siliconst/ui5/metaui/openapi/parsers/OpenApi3Parser.d.ts.map +1 -1
  171. package/src/nz/co/siliconst/ui5/metaui/openapi/parsers/OpenApi3Parser.js.map +1 -1
  172. package/src/nz/co/siliconst/ui5/metaui/openapi/parsers/OpenApi3Parser.ts +1 -1
  173. package/src/nz/co/siliconst/ui5/metaui/openapi/parsers/OpenApiPropertyMapper-dbg.js +1 -1
  174. package/src/nz/co/siliconst/ui5/metaui/openapi/parsers/OpenApiPropertyMapper-dbg.js.map +1 -1
  175. package/src/nz/co/siliconst/ui5/metaui/openapi/parsers/OpenApiPropertyMapper.d.ts +4 -4
  176. package/src/nz/co/siliconst/ui5/metaui/openapi/parsers/OpenApiPropertyMapper.d.ts.map +1 -1
  177. package/src/nz/co/siliconst/ui5/metaui/openapi/parsers/OpenApiPropertyMapper.js.map +1 -1
  178. package/src/nz/co/siliconst/ui5/metaui/openapi/parsers/OpenApiPropertyMapper.ts +19 -19
  179. package/src/nz/co/siliconst/ui5/metaui/plugins/actions/ClearFormActionPlugin-dbg.js.map +1 -1
  180. package/src/nz/co/siliconst/ui5/metaui/plugins/actions/ClearFormActionPlugin.d.ts.map +1 -1
  181. package/src/nz/co/siliconst/ui5/metaui/plugins/actions/ClearFormActionPlugin.js.map +1 -1
  182. package/src/nz/co/siliconst/ui5/metaui/plugins/actions/ClearFormActionPlugin.ts +2 -1
  183. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/ArrayPlugin-dbg.js +18 -15
  184. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/ArrayPlugin-dbg.js.map +1 -1
  185. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/ArrayPlugin.d.ts.map +1 -1
  186. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/ArrayPlugin.js +1 -1
  187. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/ArrayPlugin.js.map +1 -1
  188. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/ArrayPlugin.ts +18 -18
  189. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/BarcodeScannerPlugin-dbg.js +1 -1
  190. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/BarcodeScannerPlugin-dbg.js.map +1 -1
  191. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/BarcodeScannerPlugin.js +1 -1
  192. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/BarcodeScannerPlugin.js.map +1 -1
  193. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/BarcodeScannerPlugin.ts +2 -2
  194. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/BasePlugin-dbg.js.map +1 -1
  195. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/BasePlugin.d.ts +1 -6
  196. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/BasePlugin.d.ts.map +1 -1
  197. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/BasePlugin.js.map +1 -1
  198. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/BasePlugin.ts +2 -2
  199. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/BooleanPlugin-dbg.js.map +1 -1
  200. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/BooleanPlugin.js.map +1 -1
  201. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/BooleanPlugin.ts +1 -1
  202. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/CameraPlugin-dbg.js +2 -2
  203. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/CameraPlugin-dbg.js.map +1 -1
  204. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/CameraPlugin.js +1 -1
  205. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/CameraPlugin.js.map +1 -1
  206. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/CameraPlugin.ts +2 -2
  207. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/CodeEditorPlugin-dbg.js +4 -4
  208. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/CodeEditorPlugin-dbg.js.map +1 -1
  209. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/CodeEditorPlugin.js +1 -1
  210. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/CodeEditorPlugin.js.map +1 -1
  211. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/CodeEditorPlugin.ts +4 -4
  212. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/DatePlugin-dbg.js +1 -1
  213. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/DatePlugin-dbg.js.map +1 -1
  214. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/DatePlugin.js +1 -1
  215. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/DatePlugin.js.map +1 -1
  216. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/DatePlugin.ts +2 -2
  217. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/DateTimePlugin-dbg.js +1 -1
  218. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/DateTimePlugin-dbg.js.map +1 -1
  219. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/DateTimePlugin.js +1 -1
  220. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/DateTimePlugin.js.map +1 -1
  221. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/DateTimePlugin.ts +2 -2
  222. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/DropdownPlugin-dbg.js.map +1 -1
  223. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/DropdownPlugin.js.map +1 -1
  224. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/DropdownPlugin.ts +1 -1
  225. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/EmailPlugin-dbg.js +1 -1
  226. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/EmailPlugin-dbg.js.map +1 -1
  227. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/EmailPlugin.js +1 -1
  228. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/EmailPlugin.js.map +1 -1
  229. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/EmailPlugin.ts +1 -1
  230. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/FileUploaderPlugin-dbg.js +1 -1
  231. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/FileUploaderPlugin-dbg.js.map +1 -1
  232. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/FileUploaderPlugin.js +1 -1
  233. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/FileUploaderPlugin.js.map +1 -1
  234. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/FileUploaderPlugin.ts +2 -2
  235. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/GeolocationPlugin-dbg.js +2 -2
  236. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/GeolocationPlugin-dbg.js.map +1 -1
  237. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/GeolocationPlugin.js +1 -1
  238. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/GeolocationPlugin.js.map +1 -1
  239. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/GeolocationPlugin.ts +2 -2
  240. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/LinkPlugin-dbg.js +1 -1
  241. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/LinkPlugin-dbg.js.map +1 -1
  242. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/LinkPlugin.js +1 -1
  243. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/LinkPlugin.js.map +1 -1
  244. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/LinkPlugin.ts +1 -1
  245. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/MultiInputPlugin-dbg.js +1 -1
  246. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/MultiInputPlugin-dbg.js.map +1 -1
  247. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/MultiInputPlugin.js +1 -1
  248. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/MultiInputPlugin.js.map +1 -1
  249. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/MultiInputPlugin.ts +3 -3
  250. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/NumberPlugin-dbg.js +3 -3
  251. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/NumberPlugin-dbg.js.map +1 -1
  252. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/NumberPlugin.js +1 -1
  253. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/NumberPlugin.js.map +1 -1
  254. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/NumberPlugin.ts +4 -4
  255. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/ObjectPlugin-dbg.js +5 -4
  256. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/ObjectPlugin-dbg.js.map +1 -1
  257. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/ObjectPlugin.d.ts.map +1 -1
  258. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/ObjectPlugin.js +1 -1
  259. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/ObjectPlugin.js.map +1 -1
  260. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/ObjectPlugin.ts +7 -6
  261. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/PasswordPlugin-dbg.js +1 -1
  262. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/PasswordPlugin-dbg.js.map +1 -1
  263. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/PasswordPlugin.js +1 -1
  264. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/PasswordPlugin.js.map +1 -1
  265. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/PasswordPlugin.ts +1 -1
  266. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/RatingIndicatorPlugin-dbg.js +1 -1
  267. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/RatingIndicatorPlugin-dbg.js.map +1 -1
  268. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/RatingIndicatorPlugin.js +1 -1
  269. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/RatingIndicatorPlugin.js.map +1 -1
  270. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/RatingIndicatorPlugin.ts +2 -2
  271. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/ReferencePlugin-dbg.js +3 -2
  272. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/ReferencePlugin-dbg.js.map +1 -1
  273. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/ReferencePlugin.d.ts.map +1 -1
  274. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/ReferencePlugin.js +1 -1
  275. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/ReferencePlugin.js.map +1 -1
  276. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/ReferencePlugin.ts +3 -2
  277. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/RichTextPlugin-dbg.js +2 -2
  278. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/RichTextPlugin-dbg.js.map +1 -1
  279. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/RichTextPlugin.js +1 -1
  280. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/RichTextPlugin.js.map +1 -1
  281. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/RichTextPlugin.ts +2 -2
  282. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/SignaturePlugin-dbg.js +2 -2
  283. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/SignaturePlugin-dbg.js.map +1 -1
  284. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/SignaturePlugin.js +1 -1
  285. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/SignaturePlugin.js.map +1 -1
  286. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/SignaturePlugin.ts +2 -2
  287. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/SliderPlugin-dbg.js +1 -1
  288. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/SliderPlugin-dbg.js.map +1 -1
  289. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/SliderPlugin.js +1 -1
  290. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/SliderPlugin.js.map +1 -1
  291. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/SliderPlugin.ts +1 -1
  292. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/StepInputPlugin-dbg.js +1 -1
  293. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/StepInputPlugin-dbg.js.map +1 -1
  294. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/StepInputPlugin.js +1 -1
  295. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/StepInputPlugin.js.map +1 -1
  296. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/StepInputPlugin.ts +2 -2
  297. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/StringPlugin-dbg.js +1 -1
  298. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/StringPlugin-dbg.js.map +1 -1
  299. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/StringPlugin.js +1 -1
  300. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/StringPlugin.js.map +1 -1
  301. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/StringPlugin.ts +1 -1
  302. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/TextAreaPlugin-dbg.js +2 -2
  303. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/TextAreaPlugin-dbg.js.map +1 -1
  304. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/TextAreaPlugin.js +1 -1
  305. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/TextAreaPlugin.js.map +1 -1
  306. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/TextAreaPlugin.ts +2 -2
  307. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/TimePlugin-dbg.js +1 -1
  308. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/TimePlugin-dbg.js.map +1 -1
  309. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/TimePlugin.js +1 -1
  310. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/TimePlugin.js.map +1 -1
  311. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/TimePlugin.ts +1 -1
  312. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/VoiceInputPlugin-dbg.js +2 -2
  313. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/VoiceInputPlugin-dbg.js.map +1 -1
  314. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/VoiceInputPlugin.js +1 -1
  315. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/VoiceInputPlugin.js.map +1 -1
  316. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/VoiceInputPlugin.ts +2 -2
  317. package/src/nz/co/siliconst/ui5/metaui/plugins/datasources/LiveSearchPlugin-dbg.js.map +1 -1
  318. package/src/nz/co/siliconst/ui5/metaui/plugins/datasources/LiveSearchPlugin.d.ts.map +1 -1
  319. package/src/nz/co/siliconst/ui5/metaui/plugins/datasources/LiveSearchPlugin.js.map +1 -1
  320. package/src/nz/co/siliconst/ui5/metaui/plugins/datasources/LiveSearchPlugin.ts +109 -108
  321. package/src/nz/co/siliconst/ui5/metaui/plugins/datasources/ODataListBindingPlugin-dbg.js.map +1 -1
  322. package/src/nz/co/siliconst/ui5/metaui/plugins/datasources/ODataListBindingPlugin.d.ts.map +1 -1
  323. package/src/nz/co/siliconst/ui5/metaui/plugins/datasources/ODataListBindingPlugin.js.map +1 -1
  324. package/src/nz/co/siliconst/ui5/metaui/plugins/datasources/ODataListBindingPlugin.ts +64 -63
  325. package/src/nz/co/siliconst/ui5/metaui/plugins/datasources/RemoteDropdownPlugin-dbg.js +1 -1
  326. package/src/nz/co/siliconst/ui5/metaui/plugins/datasources/RemoteDropdownPlugin-dbg.js.map +1 -1
  327. package/src/nz/co/siliconst/ui5/metaui/plugins/datasources/RemoteDropdownPlugin.d.ts +1 -1
  328. package/src/nz/co/siliconst/ui5/metaui/plugins/datasources/RemoteDropdownPlugin.d.ts.map +1 -1
  329. package/src/nz/co/siliconst/ui5/metaui/plugins/datasources/RemoteDropdownPlugin.js.map +1 -1
  330. package/src/nz/co/siliconst/ui5/metaui/plugins/datasources/RemoteDropdownPlugin.ts +118 -117
  331. package/src/nz/co/siliconst/ui5/metaui/plugins/datasources/RemoteValueHelpPlugin-dbg.js.map +1 -1
  332. package/src/nz/co/siliconst/ui5/metaui/plugins/datasources/RemoteValueHelpPlugin.d.ts.map +1 -1
  333. package/src/nz/co/siliconst/ui5/metaui/plugins/datasources/RemoteValueHelpPlugin.js.map +1 -1
  334. package/src/nz/co/siliconst/ui5/metaui/plugins/datasources/RemoteValueHelpPlugin.ts +105 -104
  335. package/src/nz/co/siliconst/ui5/metaui/utils/Logger-dbg.js.map +1 -1
  336. package/src/nz/co/siliconst/ui5/metaui/utils/Logger.d.ts.map +1 -1
  337. package/src/nz/co/siliconst/ui5/metaui/utils/Logger.js.map +1 -1
  338. package/src/nz/co/siliconst/ui5/metaui/utils/Logger.ts +1 -1
@@ -47,7 +47,7 @@ export class RatingIndicatorPlugin extends BasePlugin {
47
47
  enabled: !fieldMetadata.ui?.readOnly,
48
48
  maxValue: fieldMetadata.maximum !== undefined ? fieldMetadata.maximum : 5,
49
49
  change: (oEvent: sap.ui.base.Event) => {
50
- const val = oEvent.getParameter("value");
50
+ const val = (oEvent as any).getParameter("value");
51
51
  const result = this.validateAndApplyVisualState();
52
52
  if (this.onChange) {
53
53
  this.onChange(result.isValid, this.fieldKey);
@@ -65,7 +65,7 @@ export class RatingIndicatorPlugin extends BasePlugin {
65
65
  * @returns {unknown} The rating value.
66
66
  */
67
67
  protected getValue(): unknown {
68
- return this.control ? (this.control as RatingIndicator).getValue() : 0;
68
+ return this.control ? (this.control as RatingIndicator).getProperty('value') : 0;
69
69
  }
70
70
 
71
71
  /**
@@ -1,4 +1,4 @@
1
- sap.ui.define(["./BasePlugin", "sap/m/Button", "../../core/PipelineManager"], function (___BasePlugin, Button, ____core_PipelineManager) {
1
+ sap.ui.define(["./BasePlugin", "sap/m/Button", "../../core/PipelineManager", "../../utils/Logger"], function (___BasePlugin, Button, ____core_PipelineManager, ____utils_Logger) {
2
2
  "use strict";
3
3
 
4
4
  /**
@@ -8,6 +8,7 @@ sap.ui.define(["./BasePlugin", "sap/m/Button", "../../core/PipelineManager"], fu
8
8
  */
9
9
  const BasePlugin = ___BasePlugin["BasePlugin"];
10
10
  const GlobalPipeline = ____core_PipelineManager["GlobalPipeline"];
11
+ const Logger = ____utils_Logger["Logger"];
11
12
  class ReferencePlugin extends BasePlugin {
12
13
  /**
13
14
  * Finds the closest GeneratorHost in the control hierarchy.
@@ -79,7 +80,7 @@ sap.ui.define(["./BasePlugin", "sap/m/Button", "../../core/PipelineManager"], fu
79
80
  parentHost.fireEvent("validationSuccess", e.getParameters());
80
81
  });
81
82
  if (!!this.isEditable) {
82
- host.attachSubmit(e => {
83
+ host.attachEvent("submit", e => {
83
84
  const payload = e.getParameter("payload");
84
85
  parentModel.setProperty(updatePath, payload);
85
86
  if (this.onChange) {
@@ -1 +1 @@
1
- {"version":3,"file":"ReferencePlugin-dbg.js","names":["BasePlugin","___BasePlugin","GlobalPipeline","____core_PipelineManager","ReferencePlugin","findParentHost","control","parent","getParent","getSchemaDefinition","render","field","bindingPath","modelName","engineScopeId","onChange","metadata","propKey","startsWith","substring","label","ui","Button","id","generateStableId","text","isEditable","icon","press","oEvent","btn","getSource","$ref","Logger","error","parentHost","subSchema","getProperty","parentModel","getModel","bindingContext","getBindingContext","updatePath","ctxPath","getPath","endsWith","rawData","nestedData","JSON","parse","stringify","sap","require","DynamicHostModule","DynamicHostClass","default","host","schemaDefinition","schemaDefinitions","data","editable","useMessageManager","attachEvent","e","fireEvent","getParameters","attachSubmit","payload","getParameter","setProperty","buttonText","dialogButtonText","openInDialog","undefined","message","validate","isValid","properties","getAbsoluteBindingPath","key","Object","keys","propMeta","val","required","errMsg","setVisualValidationState","errorMessage","validatorsToRun","argsMap","minLength","maxLength","push","min","max","pattern","regex","minimum","maximum","format","length","res","executeValidation","getValue","applyState","setEnabled","readOnly","__exports","__esModule"],"sources":["ReferencePlugin.ts"],"sourcesContent":["/**\n * @file ReferencePlugin.ts\n * @description Renders a button that lazily loads a referenced schema definition from the global dictionary\n * and opens it in a nested dialog. Implements headless validation for the deferred schema.\n */\n\nimport { BasePlugin } from \"./BasePlugin\";\nimport { IPluginValidationResult } from \"../../interfaces/IPlugin\";\nimport { ISchema, IPropertyMetadata } from \"../../interfaces/ISchema\";\nimport Control from \"sap/ui/core/Control\";\nimport Event from \"sap/ui/base/Event\";\nimport Button from \"sap/m/Button\";\nimport JSONModel from \"sap/ui/model/json/JSONModel\";\nimport { GlobalPipeline } from \"../../core/PipelineManager\";\n\nexport class ReferencePlugin extends BasePlugin {\n /**\n * Finds the closest GeneratorHost in the control hierarchy.\n */\n private findParentHost(control: Control): unknown {\n let parent = control.getParent();\n while (parent) {\n if (typeof (parent as any).getSchemaDefinition === \"function\") {\n return parent;\n }\n parent = parent.getParent();\n }\n return null;\n }\n\n public render(field: IPropertyMetadata, bindingPath: string, modelName: string = \"meta\", engineScopeId?: string, onChange?: (isValid: boolean, fieldKey?: string) => void): Control {\n this.onChange = onChange;\n this.metadata = field;\n const propKey = bindingPath.startsWith(\"/\") ? bindingPath.substring(1) : bindingPath;\n const label = field.ui?.label || propKey;\n\n this.control = new Button({\n id: this.generateStableId(engineScopeId, bindingPath),\n text: !this.isEditable ? `View Link: ${label}` : `Edit Link: ${label}`,\n icon: \"sap-icon://chain-link\",\n press: (oEvent: Event) => {\n const btn = oEvent.getSource() as Button;\n if (!this.metadata?.$ref) {\n Logger.error(`[ReferencePlugin] FATAL: this.metadata.$ref is MISSING or UNDEFINED! Cannot resolve child schema.`);\n return;\n }\n \n const parentHost = this.findParentHost(btn);\n if (!parentHost) {\n Logger.error(\"[ReferencePlugin] FATAL: Could not locate parent GeneratorHost via duck typing `getSchemaDefinition`.\");\n return;\n }\n\n const subSchema = parentHost.getSchemaDefinition(this.metadata.$ref);\n if (!subSchema) {\n Logger.error(`[ReferencePlugin] FATAL: Schema definition not found for reference: ${this.metadata.$ref}. Dumping parent schemaDefinitions:`, parentHost.getProperty(\"schemaDefinitions\"));\n return;\n }\n\n const parentModel = btn.getModel(modelName) as JSONModel;\n if (!parentModel) {\n Logger.error(`[ReferencePlugin] FATAL: Could not get JSONModel named '${modelName}' from the button.`);\n return;\n }\n \n const bindingContext = btn.getBindingContext(modelName);\n let updatePath = bindingPath;\n if (bindingContext && !bindingPath.startsWith(\"/\")) {\n const ctxPath = bindingContext.getPath();\n updatePath = ctxPath.endsWith(\"/\") ? ctxPath + bindingPath : (ctxPath === \"/\" ? \"/\" + bindingPath : ctxPath + \"/\" + bindingPath);\n }\n \n const rawData = parentModel.getProperty(updatePath);\n const nestedData = rawData ? JSON.parse(JSON.stringify(rawData)) : {};\n\n sap.ui.require([\"nz/co/siliconst/ui5/metaui/controls/DynamicHost\"], (DynamicHostModule: unknown) => {\n const DynamicHostClass = DynamicHostModule.default || DynamicHostModule;\n const host = new DynamicHostClass({\n schemaDefinition: subSchema,\n schemaDefinitions: parentHost.getProperty(\"schemaDefinitions\"), // Pass the dictionary down\n data: nestedData,\n editable: this.isEditable,\n useMessageManager: this.useMessageManager\n });\n\n // Event Piping: Bubble validation events up to the parent host\n host.attachEvent(\"validationError\", (e: Event) => {\n parentHost.fireEvent(\"validationError\", e.getParameters());\n });\n host.attachEvent(\"validationSuccess\", (e: Event) => {\n parentHost.fireEvent(\"validationSuccess\", e.getParameters());\n });\n\n if (!!this.isEditable) {\n host.attachSubmit((e: Event) => {\n const payload = (e.getParameter(\"payload\") as unknown);\n parentModel.setProperty(updatePath, payload);\n \n if (this.onChange) {\n this.onChange(true, propKey);\n }\n });\n }\n\n const buttonText = field.ui?.dialogButtonText || (!this.isEditable ? \"Close\" : \"OK\");\n try {\n host.openInDialog(`Nested Link: ${label}`, buttonText, undefined, undefined, btn);\n } catch (e) {\n Logger.error(`[ReferencePlugin] FATAL ERROR CALLING openInDialog:`, (e as Error).message);\n }\n });\n }\n });\n\n return this.control as Control;\n }\n\n /**\n * Headless validation: since child controls are not rendered, we manually validate the nested payload against the lazily resolved schema.\n */\n public validate(): IPluginValidationResult {\n if (!this.metadata?.$ref || !this.control) return { isValid: true };\n \n const parentHost = this.findParentHost(this.control);\n if (!parentHost) return { isValid: true };\n \n const subSchema = parentHost.getSchemaDefinition(this.metadata.$ref);\n if (!subSchema || !subSchema.properties) return { isValid: true };\n \n const parentModel = this.control.getModel(this.modelName) as JSONModel;\n if (!parentModel) return { isValid: true };\n \n let updatePath = this.getAbsoluteBindingPath();\n \n const nestedData = parentModel.getProperty(updatePath) || {};\n \n // Basic headless validation over the subSchema properties\n for (const key of Object.keys(subSchema.properties)) {\n const propMeta = subSchema.properties[key] as IPropertyMetadata;\n const val = nestedData[key];\n \n if (propMeta.required && (val === undefined || val === null || val === \"\")) {\n const errMsg = `Field '${key}' is required in referenced object.`;\n this.setVisualValidationState(false, errMsg);\n return { isValid: false, errorMessage: errMsg };\n }\n \n const validatorsToRun: string[] = [];\n const argsMap: Record<string, unknown> = {};\n\n if (propMeta.minLength !== undefined || propMeta.maxLength !== undefined) {\n validatorsToRun.push(\"length\");\n argsMap[\"length\"] = { min: propMeta.minLength, max: propMeta.maxLength };\n }\n if (propMeta.pattern !== undefined) {\n validatorsToRun.push(\"pattern\");\n argsMap[\"pattern\"] = { regex: propMeta.pattern };\n }\n if (propMeta.minimum !== undefined || propMeta.maximum !== undefined) {\n validatorsToRun.push(\"range\");\n argsMap[\"range\"] = { min: propMeta.minimum, max: propMeta.maximum };\n }\n \n const format = propMeta.ui?.format;\n if (format === \"email\" || format === \"url\" || format === \"iban\") {\n validatorsToRun.push(format);\n }\n \n if (validatorsToRun.length > 0) {\n const res = GlobalPipeline.executeValidation(val, validatorsToRun, argsMap);\n if (!res.isValid) {\n const errMsg = `Field '${key}' in reference: ${res.errorMessage}`;\n this.setVisualValidationState(false, errMsg);\n return { isValid: false, errorMessage: errMsg };\n }\n }\n }\n \n this.setVisualValidationState(true);\n return { isValid: true };\n }\n\n protected getValue(): null {\n return null;\n }\n\n protected applyState(): void {\n if (this.control && this.metadata) {\n (this.control as Button).setEnabled(!this.metadata.ui?.readOnly);\n }\n }\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"ReferencePlugin-dbg.js","names":["BasePlugin","___BasePlugin","GlobalPipeline","____core_PipelineManager","Logger","____utils_Logger","ReferencePlugin","findParentHost","control","parent","getParent","getSchemaDefinition","render","field","bindingPath","modelName","engineScopeId","onChange","metadata","propKey","startsWith","substring","label","ui","Button","id","generateStableId","text","isEditable","icon","press","oEvent","btn","getSource","$ref","error","parentHost","subSchema","getProperty","parentModel","getModel","bindingContext","getBindingContext","updatePath","ctxPath","getPath","endsWith","rawData","nestedData","JSON","parse","stringify","sap","require","DynamicHostModule","DynamicHostClass","default","host","schemaDefinition","schemaDefinitions","data","editable","useMessageManager","attachEvent","e","fireEvent","getParameters","payload","getParameter","setProperty","buttonText","dialogButtonText","openInDialog","undefined","message","validate","isValid","properties","getAbsoluteBindingPath","key","Object","keys","propMeta","val","required","errMsg","setVisualValidationState","errorMessage","validatorsToRun","argsMap","minLength","maxLength","push","min","max","pattern","regex","minimum","maximum","format","length","res","executeValidation","getValue","applyState","setEnabled","readOnly","__exports","__esModule"],"sources":["ReferencePlugin.ts"],"sourcesContent":["/**\n * @file ReferencePlugin.ts\n * @description Renders a button that lazily loads a referenced schema definition from the global dictionary\n * and opens it in a nested dialog. Implements headless validation for the deferred schema.\n */\n\nimport { BasePlugin } from \"./BasePlugin\";\nimport { IPluginValidationResult } from \"../../interfaces/IPlugin\";\nimport { ISchema, IPropertyMetadata } from \"../../interfaces/ISchema\";\nimport Control from \"sap/ui/core/Control\";\nimport Event from \"sap/ui/base/Event\";\nimport Button from \"sap/m/Button\";\nimport JSONModel from \"sap/ui/model/json/JSONModel\";\nimport { GlobalPipeline } from \"../../core/PipelineManager\";\nimport { Logger } from \"../../utils/Logger\";\n\nexport class ReferencePlugin extends BasePlugin {\n /**\n * Finds the closest GeneratorHost in the control hierarchy.\n */\n private findParentHost(control: Control): unknown {\n let parent = control.getParent();\n while (parent) {\n if (typeof (parent as any).getSchemaDefinition === \"function\") {\n return parent;\n }\n parent = parent.getParent();\n }\n return null;\n }\n\n public render(field: IPropertyMetadata, bindingPath: string, modelName: string = \"meta\", engineScopeId?: string, onChange?: (isValid: boolean, fieldKey?: string) => void): Control {\n this.onChange = onChange;\n this.metadata = field;\n const propKey = bindingPath.startsWith(\"/\") ? bindingPath.substring(1) : bindingPath;\n const label = field.ui?.label || propKey;\n\n this.control = new Button({\n id: this.generateStableId(engineScopeId, bindingPath),\n text: !this.isEditable ? `View Link: ${label}` : `Edit Link: ${label}`,\n icon: \"sap-icon://chain-link\",\n press: (oEvent: Event) => {\n const btn = oEvent.getSource() as Button;\n if (!this.metadata?.$ref) {\n Logger.error(`[ReferencePlugin] FATAL: this.metadata.$ref is MISSING or UNDEFINED! Cannot resolve child schema.`);\n return;\n }\n \n const parentHost = this.findParentHost(btn) as any;\n if (!parentHost) {\n Logger.error(\"[ReferencePlugin] FATAL: Could not locate parent GeneratorHost via duck typing `getSchemaDefinition`.\");\n return;\n }\n\n const subSchema = parentHost.getSchemaDefinition(this.metadata.$ref);\n if (!subSchema) {\n Logger.error(`[ReferencePlugin] FATAL: Schema definition not found for reference: ${this.metadata.$ref}. Dumping parent schemaDefinitions:`, parentHost.getProperty(\"schemaDefinitions\"));\n return;\n }\n\n const parentModel = btn.getModel(modelName) as JSONModel;\n if (!parentModel) {\n Logger.error(`[ReferencePlugin] FATAL: Could not get JSONModel named '${modelName}' from the button.`);\n return;\n }\n \n const bindingContext = btn.getBindingContext(modelName);\n let updatePath = bindingPath;\n if (bindingContext && !bindingPath.startsWith(\"/\")) {\n const ctxPath = bindingContext.getPath();\n updatePath = ctxPath.endsWith(\"/\") ? ctxPath + bindingPath : (ctxPath === \"/\" ? \"/\" + bindingPath : ctxPath + \"/\" + bindingPath);\n }\n \n const rawData = parentModel.getProperty(updatePath);\n const nestedData = rawData ? JSON.parse(JSON.stringify(rawData)) : {};\n\n sap.ui.require([\"nz/co/siliconst/ui5/metaui/controls/DynamicHost\"], (DynamicHostModule: unknown) => {\n const DynamicHostClass = DynamicHostModule.default || DynamicHostModule;\n const host = new DynamicHostClass({\n schemaDefinition: subSchema,\n schemaDefinitions: parentHost.getProperty(\"schemaDefinitions\"), // Pass the dictionary down\n data: nestedData,\n editable: this.isEditable,\n useMessageManager: this.useMessageManager\n });\n\n // Event Piping: Bubble validation events up to the parent host\n host.attachEvent(\"validationError\", (e: Event) => {\n parentHost.fireEvent(\"validationError\", e.getParameters());\n });\n host.attachEvent(\"validationSuccess\", (e: Event) => {\n parentHost.fireEvent(\"validationSuccess\", e.getParameters());\n });\n\n if (!!this.isEditable) {\n host.attachEvent(\"submit\", (e: any) => {\n const payload = (e.getParameter(\"payload\") as unknown);\n parentModel.setProperty(updatePath, payload);\n \n if (this.onChange) {\n this.onChange(true, propKey);\n }\n });\n }\n\n const buttonText = field.ui?.dialogButtonText || (!this.isEditable ? \"Close\" : \"OK\");\n try {\n host.openInDialog(`Nested Link: ${label}`, buttonText, undefined, undefined, btn);\n } catch (e) {\n Logger.error(`[ReferencePlugin] FATAL ERROR CALLING openInDialog:`, (e as Error).message);\n }\n });\n }\n });\n\n return this.control as Control;\n }\n\n /**\n * Headless validation: since child controls are not rendered, we manually validate the nested payload against the lazily resolved schema.\n */\n public validate(): IPluginValidationResult {\n if (!this.metadata?.$ref || !this.control) return { isValid: true };\n \n const parentHost = this.findParentHost(this.control);\n if (!parentHost) return { isValid: true };\n \n const subSchema = parentHost.getSchemaDefinition(this.metadata.$ref);\n if (!subSchema || !subSchema.properties) return { isValid: true };\n \n const parentModel = this.control.getModel(this.modelName) as JSONModel;\n if (!parentModel) return { isValid: true };\n \n let updatePath = this.getAbsoluteBindingPath();\n \n const nestedData = parentModel.getProperty(updatePath) || {};\n \n // Basic headless validation over the subSchema properties\n for (const key of Object.keys(subSchema.properties)) {\n const propMeta = subSchema.properties[key] as IPropertyMetadata;\n const val = nestedData[key];\n \n if (propMeta.required && (val === undefined || val === null || val === \"\")) {\n const errMsg = `Field '${key}' is required in referenced object.`;\n this.setVisualValidationState(false, errMsg);\n return { isValid: false, errorMessage: errMsg };\n }\n \n const validatorsToRun: string[] = [];\n const argsMap: Record<string, unknown> = {};\n\n if (propMeta.minLength !== undefined || propMeta.maxLength !== undefined) {\n validatorsToRun.push(\"length\");\n argsMap[\"length\"] = { min: propMeta.minLength, max: propMeta.maxLength };\n }\n if (propMeta.pattern !== undefined) {\n validatorsToRun.push(\"pattern\");\n argsMap[\"pattern\"] = { regex: propMeta.pattern };\n }\n if (propMeta.minimum !== undefined || propMeta.maximum !== undefined) {\n validatorsToRun.push(\"range\");\n argsMap[\"range\"] = { min: propMeta.minimum, max: propMeta.maximum };\n }\n \n const format = propMeta.ui?.format;\n if (format === \"email\" || format === \"url\" || format === \"iban\") {\n validatorsToRun.push(format);\n }\n \n if (validatorsToRun.length > 0) {\n const res = GlobalPipeline.executeValidation(val, validatorsToRun, argsMap);\n if (!res.isValid) {\n const errMsg = `Field '${key}' in reference: ${res.errorMessage}`;\n this.setVisualValidationState(false, errMsg);\n return { isValid: false, errorMessage: errMsg };\n }\n }\n }\n \n this.setVisualValidationState(true);\n return { isValid: true };\n }\n\n protected getValue(): null {\n return null;\n }\n\n protected applyState(): void {\n if (this.control && this.metadata) {\n (this.control as Button).setEnabled(!this.metadata.ui?.readOnly);\n }\n }\n}\n"],"mappings":"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","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"ReferencePlugin.d.ts","sourceRoot":"../../../../../../../../..","sources":["src/nz/co/siliconst/ui5/metaui/plugins/controls/ReferencePlugin.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,6DAA6D,CAAC;IAC7E;;;;OAIG;IAEH,OAAO,EAAE,UAAU,EAAE,MAAM,wDAAwD,CAAC;IACpF,OAAO,EAAE,uBAAuB,EAAE,MAAM,+CAA+C,CAAC;IACxF,OAAO,EAAW,iBAAiB,EAAE,MAAM,+CAA+C,CAAC;IAC3F,OAAO,OAAO,MAAM,qBAAqB,CAAC;IAM1C,MAAa,eAAgB,SAAQ,UAAU;QAC3C;;WAEG;QACH,OAAO,CAAC,cAAc;QAWf,MAAM,CAAC,KAAK,EAAE,iBAAiB,EAAE,WAAW,EAAE,MAAM,EAAE,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;QAuFnL;;WAEG;QACI,QAAQ,IAAI,uBAAuB;QA8D1C,SAAS,CAAC,QAAQ,IAAI,IAAI;QAI1B,SAAS,CAAC,UAAU,IAAI,IAAI;KAK/B;CAEA"}
1
+ {"version":3,"file":"ReferencePlugin.d.ts","sourceRoot":"../../../../../../../../..","sources":["src/nz/co/siliconst/ui5/metaui/plugins/controls/ReferencePlugin.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,6DAA6D,CAAC;IAC7E;;;;OAIG;IAEH,OAAO,EAAE,UAAU,EAAE,MAAM,wDAAwD,CAAC;IACpF,OAAO,EAAE,uBAAuB,EAAE,MAAM,+CAA+C,CAAC;IACxF,OAAO,EAAW,iBAAiB,EAAE,MAAM,+CAA+C,CAAC;IAC3F,OAAO,OAAO,MAAM,qBAAqB,CAAC;IAO1C,MAAa,eAAgB,SAAQ,UAAU;QAC3C;;WAEG;QACH,OAAO,CAAC,cAAc;QAWf,MAAM,CAAC,KAAK,EAAE,iBAAiB,EAAE,WAAW,EAAE,MAAM,EAAE,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;QAuFnL;;WAEG;QACI,QAAQ,IAAI,uBAAuB;QA8D1C,SAAS,CAAC,QAAQ,IAAI,IAAI;QAI1B,SAAS,CAAC,UAAU,IAAI,IAAI;KAK/B;CAEA"}
@@ -1,2 +1,2 @@
1
- sap.ui.define(["./BasePlugin","sap/m/Button","../../core/PipelineManager"],function(e,t,i){"use strict";const n=e["BasePlugin"];const r=i["GlobalPipeline"];class a extends n{findParentHost(e){let t=e.getParent();while(t){if(typeof t.getSchemaDefinition==="function"){return t}t=t.getParent()}return null}render(e,i,n="meta",r,a){this.onChange=a;this.metadata=e;const s=i.startsWith("/")?i.substring(1):i;const o=e.ui?.label||s;this.control=new t({id:this.generateStableId(r,i),text:!this.isEditable?`View Link: ${o}`:`Edit Link: ${o}`,icon:"sap-icon://chain-link",press:t=>{const r=t.getSource();if(!this.metadata?.$ref){Logger.error(`[ReferencePlugin] FATAL: this.metadata.$ref is MISSING or UNDEFINED! Cannot resolve child schema.`);return}const a=this.findParentHost(r);if(!a){Logger.error("[ReferencePlugin] FATAL: Could not locate parent GeneratorHost via duck typing `getSchemaDefinition`.");return}const l=a.getSchemaDefinition(this.metadata.$ref);if(!l){Logger.error(`[ReferencePlugin] FATAL: Schema definition not found for reference: ${this.metadata.$ref}. Dumping parent schemaDefinitions:`,a.getProperty("schemaDefinitions"));return}const u=r.getModel(n);if(!u){Logger.error(`[ReferencePlugin] FATAL: Could not get JSONModel named '${n}' from the button.`);return}const c=r.getBindingContext(n);let d=i;if(c&&!i.startsWith("/")){const e=c.getPath();d=e.endsWith("/")?e+i:e==="/"?"/"+i:e+"/"+i}const f=u.getProperty(d);const g=f?JSON.parse(JSON.stringify(f)):{};sap.ui.require(["nz/co/siliconst/ui5/metaui/controls/DynamicHost"],t=>{const i=t.default||t;const n=new i({schemaDefinition:l,schemaDefinitions:a.getProperty("schemaDefinitions"),data:g,editable:this.isEditable,useMessageManager:this.useMessageManager});n.attachEvent("validationError",e=>{a.fireEvent("validationError",e.getParameters())});n.attachEvent("validationSuccess",e=>{a.fireEvent("validationSuccess",e.getParameters())});if(!!this.isEditable){n.attachSubmit(e=>{const t=e.getParameter("payload");u.setProperty(d,t);if(this.onChange){this.onChange(true,s)}})}const c=e.ui?.dialogButtonText||(!this.isEditable?"Close":"OK");try{n.openInDialog(`Nested Link: ${o}`,c,undefined,undefined,r)}catch(e){Logger.error(`[ReferencePlugin] FATAL ERROR CALLING openInDialog:`,e.message)}})}});return this.control}validate(){if(!this.metadata?.$ref||!this.control)return{isValid:true};const e=this.findParentHost(this.control);if(!e)return{isValid:true};const t=e.getSchemaDefinition(this.metadata.$ref);if(!t||!t.properties)return{isValid:true};const i=this.control.getModel(this.modelName);if(!i)return{isValid:true};let n=this.getAbsoluteBindingPath();const a=i.getProperty(n)||{};for(const e of Object.keys(t.properties)){const i=t.properties[e];const n=a[e];if(i.required&&(n===undefined||n===null||n==="")){const t=`Field '${e}' is required in referenced object.`;this.setVisualValidationState(false,t);return{isValid:false,errorMessage:t}}const s=[];const o={};if(i.minLength!==undefined||i.maxLength!==undefined){s.push("length");o["length"]={min:i.minLength,max:i.maxLength}}if(i.pattern!==undefined){s.push("pattern");o["pattern"]={regex:i.pattern}}if(i.minimum!==undefined||i.maximum!==undefined){s.push("range");o["range"]={min:i.minimum,max:i.maximum}}const l=i.ui?.format;if(l==="email"||l==="url"||l==="iban"){s.push(l)}if(s.length>0){const t=r.executeValidation(n,s,o);if(!t.isValid){const i=`Field '${e}' in reference: ${t.errorMessage}`;this.setVisualValidationState(false,i);return{isValid:false,errorMessage:i}}}}this.setVisualValidationState(true);return{isValid:true}}getValue(){return null}applyState(){if(this.control&&this.metadata){this.control.setEnabled(!this.metadata.ui?.readOnly)}}}var s={__esModule:true};s.ReferencePlugin=a;return s});
1
+ sap.ui.define(["./BasePlugin","sap/m/Button","../../core/PipelineManager","../../utils/Logger"],function(e,t,i,n){"use strict";const a=e["BasePlugin"];const r=i["GlobalPipeline"];const s=n["Logger"];class o extends a{findParentHost(e){let t=e.getParent();while(t){if(typeof t.getSchemaDefinition==="function"){return t}t=t.getParent()}return null}render(e,i,n="meta",a,r){this.onChange=r;this.metadata=e;const o=i.startsWith("/")?i.substring(1):i;const l=e.ui?.label||o;this.control=new t({id:this.generateStableId(a,i),text:!this.isEditable?`View Link: ${l}`:`Edit Link: ${l}`,icon:"sap-icon://chain-link",press:t=>{const a=t.getSource();if(!this.metadata?.$ref){s.error(`[ReferencePlugin] FATAL: this.metadata.$ref is MISSING or UNDEFINED! Cannot resolve child schema.`);return}const r=this.findParentHost(a);if(!r){s.error("[ReferencePlugin] FATAL: Could not locate parent GeneratorHost via duck typing `getSchemaDefinition`.");return}const u=r.getSchemaDefinition(this.metadata.$ref);if(!u){s.error(`[ReferencePlugin] FATAL: Schema definition not found for reference: ${this.metadata.$ref}. Dumping parent schemaDefinitions:`,r.getProperty("schemaDefinitions"));return}const c=a.getModel(n);if(!c){s.error(`[ReferencePlugin] FATAL: Could not get JSONModel named '${n}' from the button.`);return}const d=a.getBindingContext(n);let f=i;if(d&&!i.startsWith("/")){const e=d.getPath();f=e.endsWith("/")?e+i:e==="/"?"/"+i:e+"/"+i}const h=c.getProperty(f);const g=h?JSON.parse(JSON.stringify(h)):{};sap.ui.require(["nz/co/siliconst/ui5/metaui/controls/DynamicHost"],t=>{const i=t.default||t;const n=new i({schemaDefinition:u,schemaDefinitions:r.getProperty("schemaDefinitions"),data:g,editable:this.isEditable,useMessageManager:this.useMessageManager});n.attachEvent("validationError",e=>{r.fireEvent("validationError",e.getParameters())});n.attachEvent("validationSuccess",e=>{r.fireEvent("validationSuccess",e.getParameters())});if(!!this.isEditable){n.attachEvent("submit",e=>{const t=e.getParameter("payload");c.setProperty(f,t);if(this.onChange){this.onChange(true,o)}})}const d=e.ui?.dialogButtonText||(!this.isEditable?"Close":"OK");try{n.openInDialog(`Nested Link: ${l}`,d,undefined,undefined,a)}catch(e){s.error(`[ReferencePlugin] FATAL ERROR CALLING openInDialog:`,e.message)}})}});return this.control}validate(){if(!this.metadata?.$ref||!this.control)return{isValid:true};const e=this.findParentHost(this.control);if(!e)return{isValid:true};const t=e.getSchemaDefinition(this.metadata.$ref);if(!t||!t.properties)return{isValid:true};const i=this.control.getModel(this.modelName);if(!i)return{isValid:true};let n=this.getAbsoluteBindingPath();const a=i.getProperty(n)||{};for(const e of Object.keys(t.properties)){const i=t.properties[e];const n=a[e];if(i.required&&(n===undefined||n===null||n==="")){const t=`Field '${e}' is required in referenced object.`;this.setVisualValidationState(false,t);return{isValid:false,errorMessage:t}}const s=[];const o={};if(i.minLength!==undefined||i.maxLength!==undefined){s.push("length");o["length"]={min:i.minLength,max:i.maxLength}}if(i.pattern!==undefined){s.push("pattern");o["pattern"]={regex:i.pattern}}if(i.minimum!==undefined||i.maximum!==undefined){s.push("range");o["range"]={min:i.minimum,max:i.maximum}}const l=i.ui?.format;if(l==="email"||l==="url"||l==="iban"){s.push(l)}if(s.length>0){const t=r.executeValidation(n,s,o);if(!t.isValid){const i=`Field '${e}' in reference: ${t.errorMessage}`;this.setVisualValidationState(false,i);return{isValid:false,errorMessage:i}}}}this.setVisualValidationState(true);return{isValid:true}}getValue(){return null}applyState(){if(this.control&&this.metadata){this.control.setEnabled(!this.metadata.ui?.readOnly)}}}var l={__esModule:true};l.ReferencePlugin=o;return l});
2
2
  //# sourceMappingURL=ReferencePlugin.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ReferencePlugin.js","names":["BasePlugin","___BasePlugin","GlobalPipeline","____core_PipelineManager","ReferencePlugin","findParentHost","control","parent","getParent","getSchemaDefinition","render","field","bindingPath","modelName","engineScopeId","onChange","this","metadata","propKey","startsWith","substring","label","ui","Button","id","generateStableId","text","isEditable","icon","press","oEvent","btn","getSource","$ref","Logger","error","parentHost","subSchema","getProperty","parentModel","getModel","bindingContext","getBindingContext","updatePath","ctxPath","getPath","endsWith","rawData","nestedData","JSON","parse","stringify","sap","require","DynamicHostModule","DynamicHostClass","default","host","schemaDefinition","schemaDefinitions","data","editable","useMessageManager","attachEvent","e","fireEvent","getParameters","attachSubmit","payload","getParameter","setProperty","buttonText","dialogButtonText","openInDialog","undefined","message","validate","isValid","properties","getAbsoluteBindingPath","key","Object","keys","propMeta","val","required","errMsg","setVisualValidationState","errorMessage","validatorsToRun","argsMap","minLength","maxLength","push","min","max","pattern","regex","minimum","maximum","format","length","res","executeValidation","getValue","applyState","setEnabled","readOnly","__exports","__esModule"],"sources":["ReferencePlugin.ts"],"sourcesContent":["/**\n * @file ReferencePlugin.ts\n * @description Renders a button that lazily loads a referenced schema definition from the global dictionary\n * and opens it in a nested dialog. Implements headless validation for the deferred schema.\n */\n\nimport { BasePlugin } from \"./BasePlugin\";\nimport { IPluginValidationResult } from \"../../interfaces/IPlugin\";\nimport { ISchema, IPropertyMetadata } from \"../../interfaces/ISchema\";\nimport Control from \"sap/ui/core/Control\";\nimport Event from \"sap/ui/base/Event\";\nimport Button from \"sap/m/Button\";\nimport JSONModel from \"sap/ui/model/json/JSONModel\";\nimport { GlobalPipeline } from \"../../core/PipelineManager\";\n\nexport class ReferencePlugin extends BasePlugin {\n /**\n * Finds the closest GeneratorHost in the control hierarchy.\n */\n private findParentHost(control: Control): unknown {\n let parent = control.getParent();\n while (parent) {\n if (typeof (parent as any).getSchemaDefinition === \"function\") {\n return parent;\n }\n parent = parent.getParent();\n }\n return null;\n }\n\n public render(field: IPropertyMetadata, bindingPath: string, modelName: string = \"meta\", engineScopeId?: string, onChange?: (isValid: boolean, fieldKey?: string) => void): Control {\n this.onChange = onChange;\n this.metadata = field;\n const propKey = bindingPath.startsWith(\"/\") ? bindingPath.substring(1) : bindingPath;\n const label = field.ui?.label || propKey;\n\n this.control = new Button({\n id: this.generateStableId(engineScopeId, bindingPath),\n text: !this.isEditable ? `View Link: ${label}` : `Edit Link: ${label}`,\n icon: \"sap-icon://chain-link\",\n press: (oEvent: Event) => {\n const btn = oEvent.getSource() as Button;\n if (!this.metadata?.$ref) {\n Logger.error(`[ReferencePlugin] FATAL: this.metadata.$ref is MISSING or UNDEFINED! Cannot resolve child schema.`);\n return;\n }\n \n const parentHost = this.findParentHost(btn);\n if (!parentHost) {\n Logger.error(\"[ReferencePlugin] FATAL: Could not locate parent GeneratorHost via duck typing `getSchemaDefinition`.\");\n return;\n }\n\n const subSchema = parentHost.getSchemaDefinition(this.metadata.$ref);\n if (!subSchema) {\n Logger.error(`[ReferencePlugin] FATAL: Schema definition not found for reference: ${this.metadata.$ref}. Dumping parent schemaDefinitions:`, parentHost.getProperty(\"schemaDefinitions\"));\n return;\n }\n\n const parentModel = btn.getModel(modelName) as JSONModel;\n if (!parentModel) {\n Logger.error(`[ReferencePlugin] FATAL: Could not get JSONModel named '${modelName}' from the button.`);\n return;\n }\n \n const bindingContext = btn.getBindingContext(modelName);\n let updatePath = bindingPath;\n if (bindingContext && !bindingPath.startsWith(\"/\")) {\n const ctxPath = bindingContext.getPath();\n updatePath = ctxPath.endsWith(\"/\") ? ctxPath + bindingPath : (ctxPath === \"/\" ? \"/\" + bindingPath : ctxPath + \"/\" + bindingPath);\n }\n \n const rawData = parentModel.getProperty(updatePath);\n const nestedData = rawData ? JSON.parse(JSON.stringify(rawData)) : {};\n\n sap.ui.require([\"nz/co/siliconst/ui5/metaui/controls/DynamicHost\"], (DynamicHostModule: unknown) => {\n const DynamicHostClass = DynamicHostModule.default || DynamicHostModule;\n const host = new DynamicHostClass({\n schemaDefinition: subSchema,\n schemaDefinitions: parentHost.getProperty(\"schemaDefinitions\"), // Pass the dictionary down\n data: nestedData,\n editable: this.isEditable,\n useMessageManager: this.useMessageManager\n });\n\n // Event Piping: Bubble validation events up to the parent host\n host.attachEvent(\"validationError\", (e: Event) => {\n parentHost.fireEvent(\"validationError\", e.getParameters());\n });\n host.attachEvent(\"validationSuccess\", (e: Event) => {\n parentHost.fireEvent(\"validationSuccess\", e.getParameters());\n });\n\n if (!!this.isEditable) {\n host.attachSubmit((e: Event) => {\n const payload = (e.getParameter(\"payload\") as unknown);\n parentModel.setProperty(updatePath, payload);\n \n if (this.onChange) {\n this.onChange(true, propKey);\n }\n });\n }\n\n const buttonText = field.ui?.dialogButtonText || (!this.isEditable ? \"Close\" : \"OK\");\n try {\n host.openInDialog(`Nested Link: ${label}`, buttonText, undefined, undefined, btn);\n } catch (e) {\n Logger.error(`[ReferencePlugin] FATAL ERROR CALLING openInDialog:`, (e as Error).message);\n }\n });\n }\n });\n\n return this.control as Control;\n }\n\n /**\n * Headless validation: since child controls are not rendered, we manually validate the nested payload against the lazily resolved schema.\n */\n public validate(): IPluginValidationResult {\n if (!this.metadata?.$ref || !this.control) return { isValid: true };\n \n const parentHost = this.findParentHost(this.control);\n if (!parentHost) return { isValid: true };\n \n const subSchema = parentHost.getSchemaDefinition(this.metadata.$ref);\n if (!subSchema || !subSchema.properties) return { isValid: true };\n \n const parentModel = this.control.getModel(this.modelName) as JSONModel;\n if (!parentModel) return { isValid: true };\n \n let updatePath = this.getAbsoluteBindingPath();\n \n const nestedData = parentModel.getProperty(updatePath) || {};\n \n // Basic headless validation over the subSchema properties\n for (const key of Object.keys(subSchema.properties)) {\n const propMeta = subSchema.properties[key] as IPropertyMetadata;\n const val = nestedData[key];\n \n if (propMeta.required && (val === undefined || val === null || val === \"\")) {\n const errMsg = `Field '${key}' is required in referenced object.`;\n this.setVisualValidationState(false, errMsg);\n return { isValid: false, errorMessage: errMsg };\n }\n \n const validatorsToRun: string[] = [];\n const argsMap: Record<string, unknown> = {};\n\n if (propMeta.minLength !== undefined || propMeta.maxLength !== undefined) {\n validatorsToRun.push(\"length\");\n argsMap[\"length\"] = { min: propMeta.minLength, max: propMeta.maxLength };\n }\n if (propMeta.pattern !== undefined) {\n validatorsToRun.push(\"pattern\");\n argsMap[\"pattern\"] = { regex: propMeta.pattern };\n }\n if (propMeta.minimum !== undefined || propMeta.maximum !== undefined) {\n validatorsToRun.push(\"range\");\n argsMap[\"range\"] = { min: propMeta.minimum, max: propMeta.maximum };\n }\n \n const format = propMeta.ui?.format;\n if (format === \"email\" || format === \"url\" || format === \"iban\") {\n validatorsToRun.push(format);\n }\n \n if (validatorsToRun.length > 0) {\n const res = GlobalPipeline.executeValidation(val, validatorsToRun, argsMap);\n if (!res.isValid) {\n const errMsg = `Field '${key}' in reference: ${res.errorMessage}`;\n this.setVisualValidationState(false, errMsg);\n return { isValid: false, errorMessage: errMsg };\n }\n }\n }\n \n this.setVisualValidationState(true);\n return { isValid: true };\n }\n\n protected getValue(): null {\n return null;\n }\n\n protected applyState(): void {\n if (this.control && this.metadata) {\n (this.control as Button).setEnabled(!this.metadata.ui?.readOnly);\n }\n }\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"ReferencePlugin.js","names":["BasePlugin","___BasePlugin","GlobalPipeline","____core_PipelineManager","Logger","____utils_Logger","ReferencePlugin","findParentHost","control","parent","getParent","getSchemaDefinition","render","field","bindingPath","modelName","engineScopeId","onChange","this","metadata","propKey","startsWith","substring","label","ui","Button","id","generateStableId","text","isEditable","icon","press","oEvent","btn","getSource","$ref","error","parentHost","subSchema","getProperty","parentModel","getModel","bindingContext","getBindingContext","updatePath","ctxPath","getPath","endsWith","rawData","nestedData","JSON","parse","stringify","sap","require","DynamicHostModule","DynamicHostClass","default","host","schemaDefinition","schemaDefinitions","data","editable","useMessageManager","attachEvent","e","fireEvent","getParameters","payload","getParameter","setProperty","buttonText","dialogButtonText","openInDialog","undefined","message","validate","isValid","properties","getAbsoluteBindingPath","key","Object","keys","propMeta","val","required","errMsg","setVisualValidationState","errorMessage","validatorsToRun","argsMap","minLength","maxLength","push","min","max","pattern","regex","minimum","maximum","format","length","res","executeValidation","getValue","applyState","setEnabled","readOnly","__exports","__esModule"],"sources":["ReferencePlugin.ts"],"sourcesContent":["/**\n * @file ReferencePlugin.ts\n * @description Renders a button that lazily loads a referenced schema definition from the global dictionary\n * and opens it in a nested dialog. Implements headless validation for the deferred schema.\n */\n\nimport { BasePlugin } from \"./BasePlugin\";\nimport { IPluginValidationResult } from \"../../interfaces/IPlugin\";\nimport { ISchema, IPropertyMetadata } from \"../../interfaces/ISchema\";\nimport Control from \"sap/ui/core/Control\";\nimport Event from \"sap/ui/base/Event\";\nimport Button from \"sap/m/Button\";\nimport JSONModel from \"sap/ui/model/json/JSONModel\";\nimport { GlobalPipeline } from \"../../core/PipelineManager\";\nimport { Logger } from \"../../utils/Logger\";\n\nexport class ReferencePlugin extends BasePlugin {\n /**\n * Finds the closest GeneratorHost in the control hierarchy.\n */\n private findParentHost(control: Control): unknown {\n let parent = control.getParent();\n while (parent) {\n if (typeof (parent as any).getSchemaDefinition === \"function\") {\n return parent;\n }\n parent = parent.getParent();\n }\n return null;\n }\n\n public render(field: IPropertyMetadata, bindingPath: string, modelName: string = \"meta\", engineScopeId?: string, onChange?: (isValid: boolean, fieldKey?: string) => void): Control {\n this.onChange = onChange;\n this.metadata = field;\n const propKey = bindingPath.startsWith(\"/\") ? bindingPath.substring(1) : bindingPath;\n const label = field.ui?.label || propKey;\n\n this.control = new Button({\n id: this.generateStableId(engineScopeId, bindingPath),\n text: !this.isEditable ? `View Link: ${label}` : `Edit Link: ${label}`,\n icon: \"sap-icon://chain-link\",\n press: (oEvent: Event) => {\n const btn = oEvent.getSource() as Button;\n if (!this.metadata?.$ref) {\n Logger.error(`[ReferencePlugin] FATAL: this.metadata.$ref is MISSING or UNDEFINED! Cannot resolve child schema.`);\n return;\n }\n \n const parentHost = this.findParentHost(btn) as any;\n if (!parentHost) {\n Logger.error(\"[ReferencePlugin] FATAL: Could not locate parent GeneratorHost via duck typing `getSchemaDefinition`.\");\n return;\n }\n\n const subSchema = parentHost.getSchemaDefinition(this.metadata.$ref);\n if (!subSchema) {\n Logger.error(`[ReferencePlugin] FATAL: Schema definition not found for reference: ${this.metadata.$ref}. Dumping parent schemaDefinitions:`, parentHost.getProperty(\"schemaDefinitions\"));\n return;\n }\n\n const parentModel = btn.getModel(modelName) as JSONModel;\n if (!parentModel) {\n Logger.error(`[ReferencePlugin] FATAL: Could not get JSONModel named '${modelName}' from the button.`);\n return;\n }\n \n const bindingContext = btn.getBindingContext(modelName);\n let updatePath = bindingPath;\n if (bindingContext && !bindingPath.startsWith(\"/\")) {\n const ctxPath = bindingContext.getPath();\n updatePath = ctxPath.endsWith(\"/\") ? ctxPath + bindingPath : (ctxPath === \"/\" ? \"/\" + bindingPath : ctxPath + \"/\" + bindingPath);\n }\n \n const rawData = parentModel.getProperty(updatePath);\n const nestedData = rawData ? JSON.parse(JSON.stringify(rawData)) : {};\n\n sap.ui.require([\"nz/co/siliconst/ui5/metaui/controls/DynamicHost\"], (DynamicHostModule: unknown) => {\n const DynamicHostClass = DynamicHostModule.default || DynamicHostModule;\n const host = new DynamicHostClass({\n schemaDefinition: subSchema,\n schemaDefinitions: parentHost.getProperty(\"schemaDefinitions\"), // Pass the dictionary down\n data: nestedData,\n editable: this.isEditable,\n useMessageManager: this.useMessageManager\n });\n\n // Event Piping: Bubble validation events up to the parent host\n host.attachEvent(\"validationError\", (e: Event) => {\n parentHost.fireEvent(\"validationError\", e.getParameters());\n });\n host.attachEvent(\"validationSuccess\", (e: Event) => {\n parentHost.fireEvent(\"validationSuccess\", e.getParameters());\n });\n\n if (!!this.isEditable) {\n host.attachEvent(\"submit\", (e: any) => {\n const payload = (e.getParameter(\"payload\") as unknown);\n parentModel.setProperty(updatePath, payload);\n \n if (this.onChange) {\n this.onChange(true, propKey);\n }\n });\n }\n\n const buttonText = field.ui?.dialogButtonText || (!this.isEditable ? \"Close\" : \"OK\");\n try {\n host.openInDialog(`Nested Link: ${label}`, buttonText, undefined, undefined, btn);\n } catch (e) {\n Logger.error(`[ReferencePlugin] FATAL ERROR CALLING openInDialog:`, (e as Error).message);\n }\n });\n }\n });\n\n return this.control as Control;\n }\n\n /**\n * Headless validation: since child controls are not rendered, we manually validate the nested payload against the lazily resolved schema.\n */\n public validate(): IPluginValidationResult {\n if (!this.metadata?.$ref || !this.control) return { isValid: true };\n \n const parentHost = this.findParentHost(this.control);\n if (!parentHost) return { isValid: true };\n \n const subSchema = parentHost.getSchemaDefinition(this.metadata.$ref);\n if (!subSchema || !subSchema.properties) return { isValid: true };\n \n const parentModel = this.control.getModel(this.modelName) as JSONModel;\n if (!parentModel) return { isValid: true };\n \n let updatePath = this.getAbsoluteBindingPath();\n \n const nestedData = parentModel.getProperty(updatePath) || {};\n \n // Basic headless validation over the subSchema properties\n for (const key of Object.keys(subSchema.properties)) {\n const propMeta = subSchema.properties[key] as IPropertyMetadata;\n const val = nestedData[key];\n \n if (propMeta.required && (val === undefined || val === null || val === \"\")) {\n const errMsg = `Field '${key}' is required in referenced object.`;\n this.setVisualValidationState(false, errMsg);\n return { isValid: false, errorMessage: errMsg };\n }\n \n const validatorsToRun: string[] = [];\n const argsMap: Record<string, unknown> = {};\n\n if (propMeta.minLength !== undefined || propMeta.maxLength !== undefined) {\n validatorsToRun.push(\"length\");\n argsMap[\"length\"] = { min: propMeta.minLength, max: propMeta.maxLength };\n }\n if (propMeta.pattern !== undefined) {\n validatorsToRun.push(\"pattern\");\n argsMap[\"pattern\"] = { regex: propMeta.pattern };\n }\n if (propMeta.minimum !== undefined || propMeta.maximum !== undefined) {\n validatorsToRun.push(\"range\");\n argsMap[\"range\"] = { min: propMeta.minimum, max: propMeta.maximum };\n }\n \n const format = propMeta.ui?.format;\n if (format === \"email\" || format === \"url\" || format === \"iban\") {\n validatorsToRun.push(format);\n }\n \n if (validatorsToRun.length > 0) {\n const res = GlobalPipeline.executeValidation(val, validatorsToRun, argsMap);\n if (!res.isValid) {\n const errMsg = `Field '${key}' in reference: ${res.errorMessage}`;\n this.setVisualValidationState(false, errMsg);\n return { isValid: false, errorMessage: errMsg };\n }\n }\n }\n \n this.setVisualValidationState(true);\n return { isValid: true };\n }\n\n protected getValue(): null {\n return null;\n }\n\n protected applyState(): void {\n if (this.control && this.metadata) {\n (this.control as Button).setEnabled(!this.metadata.ui?.readOnly);\n }\n }\n}\n"],"mappings":"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","ignoreList":[]}
@@ -12,6 +12,7 @@ import Event from "sap/ui/base/Event";
12
12
  import Button from "sap/m/Button";
13
13
  import JSONModel from "sap/ui/model/json/JSONModel";
14
14
  import { GlobalPipeline } from "../../core/PipelineManager";
15
+ import { Logger } from "../../utils/Logger";
15
16
 
16
17
  export class ReferencePlugin extends BasePlugin {
17
18
  /**
@@ -45,7 +46,7 @@ export class ReferencePlugin extends BasePlugin {
45
46
  return;
46
47
  }
47
48
 
48
- const parentHost = this.findParentHost(btn);
49
+ const parentHost = this.findParentHost(btn) as any;
49
50
  if (!parentHost) {
50
51
  Logger.error("[ReferencePlugin] FATAL: Could not locate parent GeneratorHost via duck typing `getSchemaDefinition`.");
51
52
  return;
@@ -92,7 +93,7 @@ export class ReferencePlugin extends BasePlugin {
92
93
  });
93
94
 
94
95
  if (!!this.isEditable) {
95
- host.attachSubmit((e: Event) => {
96
+ host.attachEvent("submit", (e: any) => {
96
97
  const payload = (e.getParameter("payload") as unknown);
97
98
  parentModel.setProperty(updatePath, payload);
98
99
 
@@ -41,7 +41,7 @@ sap.ui.define(["../controls/BasePlugin", "../../controls/RichTextControl", "sap/
41
41
  });
42
42
  this.applyCommonDirectives(this.control, metadata, modelName);
43
43
  if (isValueAccessor(this.control) && this.control.attachCapture) {
44
- this.control.attachCapture(() => {
44
+ this.control.attachEvent('capture', () => {
45
45
  const result = this.validateAndApplyVisualState();
46
46
  if (this.onChange) {
47
47
  this.onChange(result.isValid, this.fieldKey);
@@ -57,7 +57,7 @@ sap.ui.define(["../controls/BasePlugin", "../../controls/RichTextControl", "sap/
57
57
  */
58
58
  getValue() {
59
59
  if (isValueAccessor(this.control)) {
60
- return this.control.getValue();
60
+ return this.control.getProperty('value');
61
61
  }
62
62
  return null;
63
63
  }
@@ -1 +1 @@
1
- {"version":3,"file":"RichTextPlugin-dbg.js","names":["BasePlugin","___controls_BasePlugin","RichTextControl","_interopRequireDefault","__RichTextControl","isValueAccessor","control","getValue","RichTextPlugin","render","metadata","bindingPath","modelName","engineScopeId","onChange","fieldKey","replace","isEditable","FormattedTextControl","id","generateStableId","htmlText","generateBindingInfo","applyCommonDirectives","value","schemaMetadata","readOnly","ui","attachCapture","result","validateAndApplyVisualState","isValid","applyState","setProperty","__exports","__esModule"],"sources":["RichTextPlugin.ts"],"sourcesContent":["import { BasePlugin } from \"../controls/BasePlugin\";\nimport { IPropertyMetadata } from \"../../interfaces/ISchema\";\nimport Control from \"sap/ui/core/Control\";\nimport RichTextControl from \"../../controls/RichTextControl\";\nimport FormattedTextControl from \"sap/m/FormattedText\";\n\ninterface IValueAccessor {\n getValue(): unknown;\n attachCapture?(fn: Function): void;\n}\n\nfunction isValueAccessor(control: unknown): control is IValueAccessor {\n return control !== null && typeof (control as IValueAccessor).getValue === 'function';\n}\n\nexport class RichTextPlugin extends BasePlugin {\n /**\n * Renders a `RichTextControl` 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 RichTextControl.\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 FormattedTextControl({\n id: this.generateStableId(engineScopeId, bindingPath),\n htmlText: this.generateBindingInfo(bindingPath, modelName)\n }) as Control;\n this.applyCommonDirectives(this.control, metadata, modelName);\n return this.control as Control;\n }\n\n this.control = new RichTextControl({\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 if (isValueAccessor(this.control) && this.control.attachCapture) {\n this.control.attachCapture(() => {\n const result = this.validateAndApplyVisualState();\n if (this.onChange) {\n this.onChange(result.isValid, this.fieldKey);\n }\n });\n }\n\n return this.control as Control;\n }\n\n /**\n * Retrieves the current HTML string value.\n * @returns {unknown} The string value.\n */\n protected getValue(): unknown {\n if (isValueAccessor(this.control)) {\n return this.control.getValue();\n }\n return 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":"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","ignoreList":[]}
1
+ {"version":3,"file":"RichTextPlugin-dbg.js","names":["BasePlugin","___controls_BasePlugin","RichTextControl","_interopRequireDefault","__RichTextControl","isValueAccessor","control","getValue","RichTextPlugin","render","metadata","bindingPath","modelName","engineScopeId","onChange","fieldKey","replace","isEditable","FormattedTextControl","id","generateStableId","htmlText","generateBindingInfo","applyCommonDirectives","value","schemaMetadata","readOnly","ui","attachCapture","attachEvent","result","validateAndApplyVisualState","isValid","getProperty","applyState","setProperty","__exports","__esModule"],"sources":["RichTextPlugin.ts"],"sourcesContent":["import { BasePlugin } from \"../controls/BasePlugin\";\nimport { IPropertyMetadata } from \"../../interfaces/ISchema\";\nimport Control from \"sap/ui/core/Control\";\nimport RichTextControl from \"../../controls/RichTextControl\";\nimport FormattedTextControl from \"sap/m/FormattedText\";\n\ninterface IValueAccessor {\n getValue(): unknown;\n attachCapture?(fn: Function): void;\n}\n\nfunction isValueAccessor(control: unknown): control is IValueAccessor {\n return control !== null && typeof (control as IValueAccessor).getValue === 'function';\n}\n\nexport class RichTextPlugin extends BasePlugin {\n /**\n * Renders a `RichTextControl` 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 RichTextControl.\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 FormattedTextControl({\n id: this.generateStableId(engineScopeId, bindingPath),\n htmlText: this.generateBindingInfo(bindingPath, modelName)\n }) as Control;\n this.applyCommonDirectives(this.control, metadata, modelName);\n return this.control as Control;\n }\n\n this.control = new RichTextControl({\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 if (isValueAccessor(this.control) && this.control.attachCapture) {\n this.control.attachEvent('capture', () => {\n const result = this.validateAndApplyVisualState();\n if (this.onChange) {\n this.onChange(result.isValid, this.fieldKey);\n }\n });\n }\n\n return this.control as Control;\n }\n\n /**\n * Retrieves the current HTML string value.\n * @returns {unknown} The string value.\n */\n protected getValue(): unknown {\n if (isValueAccessor(this.control)) {\n return this.control.getProperty('value');\n }\n return 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":"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","ignoreList":[]}
@@ -1,2 +1,2 @@
1
- sap.ui.define(["../controls/BasePlugin","../../controls/RichTextControl","sap/m/FormattedText"],function(t,e,i){"use strict";function n(t){return t&&t.__esModule&&typeof t.default!=="undefined"?t.default:t}const a=t["BasePlugin"];const o=n(e);function s(t){return t!==null&&typeof t.getValue==="function"}class r extends a{render(t,e,n="meta",a,r){this.onChange=r;this.metadata=t;this.fieldKey=e.replace("/","");this.modelName=n;if(!this.isEditable){this.control=new i({id:this.generateStableId(a,e),htmlText:this.generateBindingInfo(e,n)});this.applyCommonDirectives(this.control,t,n);return this.control}this.control=new o({id:this.generateStableId(a,e),value:this.generateBindingInfo(e,n),schemaMetadata:t,readOnly:!!t.ui?.readOnly});this.applyCommonDirectives(this.control,t,n);if(s(this.control)&&this.control.attachCapture){this.control.attachCapture(()=>{const t=this.validateAndApplyVisualState();if(this.onChange){this.onChange(t.isValid,this.fieldKey)}})}return this.control}getValue(){if(s(this.control)){return this.control.getValue()}return null}applyState(){if(this.control&&this.metadata){if(!this.isEditable)return;this.control.setProperty("readOnly",!!this.metadata.ui?.readOnly)}}}var l={__esModule:true};l.RichTextPlugin=r;return l});
1
+ sap.ui.define(["../controls/BasePlugin","../../controls/RichTextControl","sap/m/FormattedText"],function(t,e,i){"use strict";function n(t){return t&&t.__esModule&&typeof t.default!=="undefined"?t.default:t}const a=t["BasePlugin"];const o=n(e);function r(t){return t!==null&&typeof t.getValue==="function"}class s extends a{render(t,e,n="meta",a,s){this.onChange=s;this.metadata=t;this.fieldKey=e.replace("/","");this.modelName=n;if(!this.isEditable){this.control=new i({id:this.generateStableId(a,e),htmlText:this.generateBindingInfo(e,n)});this.applyCommonDirectives(this.control,t,n);return this.control}this.control=new o({id:this.generateStableId(a,e),value:this.generateBindingInfo(e,n),schemaMetadata:t,readOnly:!!t.ui?.readOnly});this.applyCommonDirectives(this.control,t,n);if(r(this.control)&&this.control.attachCapture){this.control.attachEvent("capture",()=>{const t=this.validateAndApplyVisualState();if(this.onChange){this.onChange(t.isValid,this.fieldKey)}})}return this.control}getValue(){if(r(this.control)){return this.control.getProperty("value")}return null}applyState(){if(this.control&&this.metadata){if(!this.isEditable)return;this.control.setProperty("readOnly",!!this.metadata.ui?.readOnly)}}}var l={__esModule:true};l.RichTextPlugin=s;return l});
2
2
  //# sourceMappingURL=RichTextPlugin.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"RichTextPlugin.js","names":["BasePlugin","___controls_BasePlugin","RichTextControl","_interopRequireDefault","__RichTextControl","isValueAccessor","control","getValue","RichTextPlugin","render","metadata","bindingPath","modelName","engineScopeId","onChange","this","fieldKey","replace","isEditable","FormattedTextControl","id","generateStableId","htmlText","generateBindingInfo","applyCommonDirectives","value","schemaMetadata","readOnly","ui","attachCapture","result","validateAndApplyVisualState","isValid","applyState","setProperty","__exports","__esModule"],"sources":["RichTextPlugin.ts"],"sourcesContent":["import { BasePlugin } from \"../controls/BasePlugin\";\nimport { IPropertyMetadata } from \"../../interfaces/ISchema\";\nimport Control from \"sap/ui/core/Control\";\nimport RichTextControl from \"../../controls/RichTextControl\";\nimport FormattedTextControl from \"sap/m/FormattedText\";\n\ninterface IValueAccessor {\n getValue(): unknown;\n attachCapture?(fn: Function): void;\n}\n\nfunction isValueAccessor(control: unknown): control is IValueAccessor {\n return control !== null && typeof (control as IValueAccessor).getValue === 'function';\n}\n\nexport class RichTextPlugin extends BasePlugin {\n /**\n * Renders a `RichTextControl` 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 RichTextControl.\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 FormattedTextControl({\n id: this.generateStableId(engineScopeId, bindingPath),\n htmlText: this.generateBindingInfo(bindingPath, modelName)\n }) as Control;\n this.applyCommonDirectives(this.control, metadata, modelName);\n return this.control as Control;\n }\n\n this.control = new RichTextControl({\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 if (isValueAccessor(this.control) && this.control.attachCapture) {\n this.control.attachCapture(() => {\n const result = this.validateAndApplyVisualState();\n if (this.onChange) {\n this.onChange(result.isValid, this.fieldKey);\n }\n });\n }\n\n return this.control as Control;\n }\n\n /**\n * Retrieves the current HTML string value.\n * @returns {unknown} The string value.\n */\n protected getValue(): unknown {\n if (isValueAccessor(this.control)) {\n return this.control.getValue();\n }\n return 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":"oNAASA,EAAUC,EAAA,oBAGZC,EAAeC,EAAAC,GAQtB,SAASC,EAAgBC,GACrB,OAAOA,IAAY,aAAgBA,EAA2BC,WAAa,UAC/E,CAEO,MAAMC,UAAuBR,EAWzBS,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,KAAKT,QAAU,IAAIa,EAAqB,CACpCC,GAAIL,KAAKM,iBAAiBR,EAAeF,GACzCW,SAAUP,KAAKQ,oBAAoBZ,EAAaC,KAEpDG,KAAKS,sBAAsBT,KAAKT,QAASI,EAAUE,GACnD,OAAOG,KAAKT,OAChB,CAEAS,KAAKT,QAAU,IAAIJ,EAAgB,CAC/BkB,GAAIL,KAAKM,iBAAiBR,EAAeF,GACzCc,MAAOV,KAAKQ,oBAAoBZ,EAAaC,GAC7Cc,eAAgBhB,EAChBiB,WAAYjB,EAASkB,IAAID,WAG7BZ,KAAKS,sBAAsBT,KAAKT,QAASI,EAAUE,GAEnD,GAAIP,EAAgBU,KAAKT,UAAYS,KAAKT,QAAQuB,cAAe,CAC7Dd,KAAKT,QAAQuB,cAAc,KACvB,MAAMC,EAASf,KAAKgB,8BACpB,GAAIhB,KAAKD,SAAU,CACfC,KAAKD,SAASgB,EAAOE,QAASjB,KAAKC,SACvC,GAER,CAEA,OAAOD,KAAKT,OAChB,CAMUC,WACN,GAAIF,EAAgBU,KAAKT,SAAU,CAC/B,OAAOS,KAAKT,QAAQC,UACxB,CACA,OAAO,IACX,CAKU0B,aACN,GAAIlB,KAAKT,SAAWS,KAAKL,SAAU,CAC/B,IAAKK,KAAKG,WAAY,OACrBH,KAAKT,QAAgC4B,YAAY,aAAcnB,KAAKL,SAASkB,IAAID,SACtF,CACJ,EACH,IAAAQ,EAAA,CAAAC,WAAA,MAAAD,EAAA3B,iBAAA,OAAA2B,CAAA","ignoreList":[]}
1
+ {"version":3,"file":"RichTextPlugin.js","names":["BasePlugin","___controls_BasePlugin","RichTextControl","_interopRequireDefault","__RichTextControl","isValueAccessor","control","getValue","RichTextPlugin","render","metadata","bindingPath","modelName","engineScopeId","onChange","this","fieldKey","replace","isEditable","FormattedTextControl","id","generateStableId","htmlText","generateBindingInfo","applyCommonDirectives","value","schemaMetadata","readOnly","ui","attachCapture","attachEvent","result","validateAndApplyVisualState","isValid","getProperty","applyState","setProperty","__exports","__esModule"],"sources":["RichTextPlugin.ts"],"sourcesContent":["import { BasePlugin } from \"../controls/BasePlugin\";\nimport { IPropertyMetadata } from \"../../interfaces/ISchema\";\nimport Control from \"sap/ui/core/Control\";\nimport RichTextControl from \"../../controls/RichTextControl\";\nimport FormattedTextControl from \"sap/m/FormattedText\";\n\ninterface IValueAccessor {\n getValue(): unknown;\n attachCapture?(fn: Function): void;\n}\n\nfunction isValueAccessor(control: unknown): control is IValueAccessor {\n return control !== null && typeof (control as IValueAccessor).getValue === 'function';\n}\n\nexport class RichTextPlugin extends BasePlugin {\n /**\n * Renders a `RichTextControl` 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 RichTextControl.\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 FormattedTextControl({\n id: this.generateStableId(engineScopeId, bindingPath),\n htmlText: this.generateBindingInfo(bindingPath, modelName)\n }) as Control;\n this.applyCommonDirectives(this.control, metadata, modelName);\n return this.control as Control;\n }\n\n this.control = new RichTextControl({\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 if (isValueAccessor(this.control) && this.control.attachCapture) {\n this.control.attachEvent('capture', () => {\n const result = this.validateAndApplyVisualState();\n if (this.onChange) {\n this.onChange(result.isValid, this.fieldKey);\n }\n });\n }\n\n return this.control as Control;\n }\n\n /**\n * Retrieves the current HTML string value.\n * @returns {unknown} The string value.\n */\n protected getValue(): unknown {\n if (isValueAccessor(this.control)) {\n return this.control.getProperty('value');\n }\n return 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":"oNAASA,EAAUC,EAAA,oBAGZC,EAAeC,EAAAC,GAQtB,SAASC,EAAgBC,GACrB,OAAOA,IAAY,aAAgBA,EAA2BC,WAAa,UAC/E,CAEO,MAAMC,UAAuBR,EAWzBS,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,KAAKT,QAAU,IAAIa,EAAqB,CACpCC,GAAIL,KAAKM,iBAAiBR,EAAeF,GACzCW,SAAUP,KAAKQ,oBAAoBZ,EAAaC,KAEpDG,KAAKS,sBAAsBT,KAAKT,QAASI,EAAUE,GACnD,OAAOG,KAAKT,OAChB,CAEAS,KAAKT,QAAU,IAAIJ,EAAgB,CAC/BkB,GAAIL,KAAKM,iBAAiBR,EAAeF,GACzCc,MAAOV,KAAKQ,oBAAoBZ,EAAaC,GAC7Cc,eAAgBhB,EAChBiB,WAAYjB,EAASkB,IAAID,WAG7BZ,KAAKS,sBAAsBT,KAAKT,QAASI,EAAUE,GAEnD,GAAIP,EAAgBU,KAAKT,UAAYS,KAAKT,QAAQuB,cAAe,CAC7Dd,KAAKT,QAAQwB,YAAY,UAAW,KAChC,MAAMC,EAAShB,KAAKiB,8BACpB,GAAIjB,KAAKD,SAAU,CACfC,KAAKD,SAASiB,EAAOE,QAASlB,KAAKC,SACvC,GAER,CAEA,OAAOD,KAAKT,OAChB,CAMUC,WACN,GAAIF,EAAgBU,KAAKT,SAAU,CAC/B,OAAOS,KAAKT,QAAQ4B,YAAY,QACpC,CACA,OAAO,IACX,CAKUC,aACN,GAAIpB,KAAKT,SAAWS,KAAKL,SAAU,CAC/B,IAAKK,KAAKG,WAAY,OACrBH,KAAKT,QAAgC8B,YAAY,aAAcrB,KAAKL,SAASkB,IAAID,SACtF,CACJ,EACH,IAAAU,EAAA,CAAAC,WAAA,MAAAD,EAAA7B,iBAAA,OAAA6B,CAAA","ignoreList":[]}
@@ -50,7 +50,7 @@ export class RichTextPlugin extends BasePlugin {
50
50
  this.applyCommonDirectives(this.control, metadata, modelName);
51
51
 
52
52
  if (isValueAccessor(this.control) && this.control.attachCapture) {
53
- this.control.attachCapture(() => {
53
+ this.control.attachEvent('capture', () => {
54
54
  const result = this.validateAndApplyVisualState();
55
55
  if (this.onChange) {
56
56
  this.onChange(result.isValid, this.fieldKey);
@@ -67,7 +67,7 @@ export class RichTextPlugin extends BasePlugin {
67
67
  */
68
68
  protected getValue(): unknown {
69
69
  if (isValueAccessor(this.control)) {
70
- return this.control.getValue();
70
+ return this.control.getProperty('value');
71
71
  }
72
72
  return null;
73
73
  }
@@ -39,7 +39,7 @@ sap.ui.define(["../controls/BasePlugin", "../../controls/SignatureControl", "sap
39
39
  readOnly: !!metadata.ui?.readOnly
40
40
  });
41
41
  this.applyCommonDirectives(this.control, metadata, modelName);
42
- this.control.attachCapture(() => {
42
+ this.control.attachEvent('capture', () => {
43
43
  const result = this.validateAndApplyVisualState();
44
44
  if (this.onChange) {
45
45
  this.onChange(result.isValid, this.fieldKey);
@@ -53,7 +53,7 @@ sap.ui.define(["../controls/BasePlugin", "../../controls/SignatureControl", "sap
53
53
  * @returns {unknown} The signature image value.
54
54
  */
55
55
  getValue() {
56
- return this.control ? this.control.getValue() : null;
56
+ return this.control ? this.control.getProperty('value') : null;
57
57
  }
58
58
 
59
59
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"SignaturePlugin-dbg.js","names":["BasePlugin","___controls_BasePlugin","SignatureControl","_interopRequireDefault","__SignatureControl","SignaturePlugin","render","metadata","bindingPath","modelName","engineScopeId","onChange","fieldKey","replace","isEditable","control","ImageControl","id","generateStableId","src","generateBindingInfo","width","alt","ui","label","applyCommonDirectives","value","schemaMetadata","readOnly","attachCapture","result","validateAndApplyVisualState","isValid","getValue","applyState","setProperty","__exports","__esModule"],"sources":["SignaturePlugin.ts"],"sourcesContent":["import { BasePlugin } from \"../controls/BasePlugin\";\nimport { IPropertyMetadata } from \"../../interfaces/ISchema\";\nimport Control from \"sap/ui/core/Control\";\nimport SignatureControl from \"../../controls/SignatureControl\";\nimport ImageControl from \"sap/m/Image\";\n\nexport class SignaturePlugin extends BasePlugin {\n /**\n * Renders a `SignatureControl` 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 SignatureControl.\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 ImageControl({\n id: this.generateStableId(engineScopeId, bindingPath),\n src: this.generateBindingInfo(bindingPath, modelName),\n width: \"400px\",\n alt: metadata.ui?.label || \"Signature\"\n }) as Control;\n this.applyCommonDirectives(this.control, metadata, modelName);\n return this.control as Control;\n }\n\n this.control = new SignatureControl({\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 SignatureControl).attachCapture(() => {\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 base64 signature image state.\n * @returns {unknown} The signature image value.\n */\n protected getValue(): unknown {\n return this.control ? (this.control as SignatureControl).getValue() : 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,gBAAgB,GAAAC,sBAAA,CAAAC,kBAAA;EAGhB,MAAMC,eAAe,SAASL,UAAU,CAAC;IAC5C;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,YAAY,CAAC;UAC5BC,EAAE,EAAE,IAAI,CAACC,gBAAgB,CAACR,aAAa,EAAEF,WAAW,CAAC;UACrDW,GAAG,EAAE,IAAI,CAACC,mBAAmB,CAACZ,WAAW,EAAEC,SAAS,CAAC;UACrDY,KAAK,EAAE,OAAO;UACdC,GAAG,EAAEf,QAAQ,CAACgB,EAAE,EAAEC,KAAK,IAAI;QAC/B,CAAC,CAAY;QACb,IAAI,CAACC,qBAAqB,CAAC,IAAI,CAACV,OAAO,EAAER,QAAQ,EAAEE,SAAS,CAAC;QAC7D,OAAO,IAAI,CAACM,OAAO;MACvB;MAEA,IAAI,CAACA,OAAO,GAAG,IAAIb,gBAAgB,CAAC;QAChCe,EAAE,EAAE,IAAI,CAACC,gBAAgB,CAACR,aAAa,EAAEF,WAAW,CAAC;QACrDkB,KAAK,EAAE,IAAI,CAACN,mBAAmB,CAACZ,WAAW,EAAEC,SAAS,CAAC;QACvDkB,cAAc,EAAEpB,QAAQ;QACxBqB,QAAQ,EAAE,CAAC,CAACrB,QAAQ,CAACgB,EAAE,EAAEK;MAC7B,CAAC,CAAY;MAEb,IAAI,CAACH,qBAAqB,CAAC,IAAI,CAACV,OAAO,EAAER,QAAQ,EAAEE,SAAS,CAAC;MAE5D,IAAI,CAACM,OAAO,CAAsBc,aAAa,CAAC,MAAM;QACnD,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,CAAsBkB,QAAQ,CAAC,CAAC,GAAG,IAAI;IAC9E;;IAEA;AACJ;AACA;IACcC,UAAUA,CAAA,EAAS;MACzB,IAAI,IAAI,CAACnB,OAAO,IAAI,IAAI,CAACR,QAAQ,EAAE;QAC/B,IAAI,CAAC,IAAI,CAACO,UAAU,EAAE;QACrB,IAAI,CAACC,OAAO,CAAyBoB,WAAW,CAAC,UAAU,EAAE,CAAC,CAAC,IAAI,CAAC5B,QAAQ,CAACgB,EAAE,EAAEK,QAAQ,CAAC;MAC/F;IACJ;EACJ;EAAC,IAAAQ,SAAA;IAAAC,UAAA;EAAA;EAAAD,SAAA,CAAA/B,eAAA,GAAAA,eAAA;EAAA,OAAA+B,SAAA;AAAA","ignoreList":[]}
1
+ {"version":3,"file":"SignaturePlugin-dbg.js","names":["BasePlugin","___controls_BasePlugin","SignatureControl","_interopRequireDefault","__SignatureControl","SignaturePlugin","render","metadata","bindingPath","modelName","engineScopeId","onChange","fieldKey","replace","isEditable","control","ImageControl","id","generateStableId","src","generateBindingInfo","width","alt","ui","label","applyCommonDirectives","value","schemaMetadata","readOnly","attachEvent","result","validateAndApplyVisualState","isValid","getValue","getProperty","applyState","setProperty","__exports","__esModule"],"sources":["SignaturePlugin.ts"],"sourcesContent":["import { BasePlugin } from \"../controls/BasePlugin\";\nimport { IPropertyMetadata } from \"../../interfaces/ISchema\";\nimport Control from \"sap/ui/core/Control\";\nimport SignatureControl from \"../../controls/SignatureControl\";\nimport ImageControl from \"sap/m/Image\";\n\nexport class SignaturePlugin extends BasePlugin {\n /**\n * Renders a `SignatureControl` 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 SignatureControl.\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 ImageControl({\n id: this.generateStableId(engineScopeId, bindingPath),\n src: this.generateBindingInfo(bindingPath, modelName),\n width: \"400px\",\n alt: metadata.ui?.label || \"Signature\"\n }) as Control;\n this.applyCommonDirectives(this.control, metadata, modelName);\n return this.control as Control;\n }\n\n this.control = new SignatureControl({\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 SignatureControl).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 base64 signature image state.\n * @returns {unknown} The signature image value.\n */\n protected getValue(): unknown {\n return this.control ? (this.control as SignatureControl).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,gBAAgB,GAAAC,sBAAA,CAAAC,kBAAA;EAGhB,MAAMC,eAAe,SAASL,UAAU,CAAC;IAC5C;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,YAAY,CAAC;UAC5BC,EAAE,EAAE,IAAI,CAACC,gBAAgB,CAACR,aAAa,EAAEF,WAAW,CAAC;UACrDW,GAAG,EAAE,IAAI,CAACC,mBAAmB,CAACZ,WAAW,EAAEC,SAAS,CAAC;UACrDY,KAAK,EAAE,OAAO;UACdC,GAAG,EAAEf,QAAQ,CAACgB,EAAE,EAAEC,KAAK,IAAI;QAC/B,CAAC,CAAY;QACb,IAAI,CAACC,qBAAqB,CAAC,IAAI,CAACV,OAAO,EAAER,QAAQ,EAAEE,SAAS,CAAC;QAC7D,OAAO,IAAI,CAACM,OAAO;MACvB;MAEA,IAAI,CAACA,OAAO,GAAG,IAAIb,gBAAgB,CAAC;QAChCe,EAAE,EAAE,IAAI,CAACC,gBAAgB,CAACR,aAAa,EAAEF,WAAW,CAAC;QACrDkB,KAAK,EAAE,IAAI,CAACN,mBAAmB,CAACZ,WAAW,EAAEC,SAAS,CAAC;QACvDkB,cAAc,EAAEpB,QAAQ;QACxBqB,QAAQ,EAAE,CAAC,CAACrB,QAAQ,CAACgB,EAAE,EAAEK;MAC7B,CAAC,CAAY;MAEb,IAAI,CAACH,qBAAqB,CAAC,IAAI,CAACV,OAAO,EAAER,QAAQ,EAAEE,SAAS,CAAC;MAE5D,IAAI,CAACM,OAAO,CAAsBc,WAAW,CAAC,SAAS,EAAE,MAAM;QAC5D,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,CAAsBmB,WAAW,CAAC,OAAO,CAAC,GAAG,IAAI;IACxF;;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,CAACgB,EAAE,EAAEK,QAAQ,CAAC;MAC/F;IACJ;EACJ;EAAC,IAAAS,SAAA;IAAAC,UAAA;EAAA;EAAAD,SAAA,CAAAhC,eAAA,GAAAA,eAAA;EAAA,OAAAgC,SAAA;AAAA","ignoreList":[]}
@@ -1,2 +1,2 @@
1
- sap.ui.define(["../controls/BasePlugin","../../controls/SignatureControl","sap/m/Image"],function(t,e,i){"use strict";function n(t){return t&&t.__esModule&&typeof t.default!=="undefined"?t.default:t}const a=t["BasePlugin"];const s=n(e);class l extends a{render(t,e,n="meta",a,l){this.onChange=l;this.metadata=t;this.fieldKey=e.replace("/","");this.modelName=n;if(!this.isEditable){this.control=new i({id:this.generateStableId(a,e),src:this.generateBindingInfo(e,n),width:"400px",alt:t.ui?.label||"Signature"});this.applyCommonDirectives(this.control,t,n);return this.control}this.control=new s({id:this.generateStableId(a,e),value:this.generateBindingInfo(e,n),schemaMetadata:t,readOnly:!!t.ui?.readOnly});this.applyCommonDirectives(this.control,t,n);this.control.attachCapture(()=>{const t=this.validateAndApplyVisualState();if(this.onChange){this.onChange(t.isValid,this.fieldKey)}});return this.control}getValue(){return this.control?this.control.getValue():null}applyState(){if(this.control&&this.metadata){if(!this.isEditable)return;this.control.setProperty("readOnly",!!this.metadata.ui?.readOnly)}}}var r={__esModule:true};r.SignaturePlugin=l;return r});
1
+ sap.ui.define(["../controls/BasePlugin","../../controls/SignatureControl","sap/m/Image"],function(t,e,i){"use strict";function n(t){return t&&t.__esModule&&typeof t.default!=="undefined"?t.default:t}const a=t["BasePlugin"];const s=n(e);class r extends a{render(t,e,n="meta",a,r){this.onChange=r;this.metadata=t;this.fieldKey=e.replace("/","");this.modelName=n;if(!this.isEditable){this.control=new i({id:this.generateStableId(a,e),src:this.generateBindingInfo(e,n),width:"400px",alt:t.ui?.label||"Signature"});this.applyCommonDirectives(this.control,t,n);return this.control}this.control=new s({id:this.generateStableId(a,e),value:this.generateBindingInfo(e,n),schemaMetadata:t,readOnly:!!t.ui?.readOnly});this.applyCommonDirectives(this.control,t,n);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 l={__esModule:true};l.SignaturePlugin=r;return l});
2
2
  //# sourceMappingURL=SignaturePlugin.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"SignaturePlugin.js","names":["BasePlugin","___controls_BasePlugin","SignatureControl","_interopRequireDefault","__SignatureControl","SignaturePlugin","render","metadata","bindingPath","modelName","engineScopeId","onChange","this","fieldKey","replace","isEditable","control","ImageControl","id","generateStableId","src","generateBindingInfo","width","alt","ui","label","applyCommonDirectives","value","schemaMetadata","readOnly","attachCapture","result","validateAndApplyVisualState","isValid","getValue","applyState","setProperty","__exports","__esModule"],"sources":["SignaturePlugin.ts"],"sourcesContent":["import { BasePlugin } from \"../controls/BasePlugin\";\nimport { IPropertyMetadata } from \"../../interfaces/ISchema\";\nimport Control from \"sap/ui/core/Control\";\nimport SignatureControl from \"../../controls/SignatureControl\";\nimport ImageControl from \"sap/m/Image\";\n\nexport class SignaturePlugin extends BasePlugin {\n /**\n * Renders a `SignatureControl` 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 SignatureControl.\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 ImageControl({\n id: this.generateStableId(engineScopeId, bindingPath),\n src: this.generateBindingInfo(bindingPath, modelName),\n width: \"400px\",\n alt: metadata.ui?.label || \"Signature\"\n }) as Control;\n this.applyCommonDirectives(this.control, metadata, modelName);\n return this.control as Control;\n }\n\n this.control = new SignatureControl({\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 SignatureControl).attachCapture(() => {\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 base64 signature image state.\n * @returns {unknown} The signature image value.\n */\n protected getValue(): unknown {\n return this.control ? (this.control as SignatureControl).getValue() : 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,EAAgBC,EAAAC,GAGhB,MAAMC,UAAwBL,EAW1BM,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,EAAa,CAC5BC,GAAIN,KAAKO,iBAAiBT,EAAeF,GACzCY,IAAKR,KAAKS,oBAAoBb,EAAaC,GAC3Ca,MAAO,QACPC,IAAKhB,EAASiB,IAAIC,OAAS,cAE/Bb,KAAKc,sBAAsBd,KAAKI,QAAST,EAAUE,GACnD,OAAOG,KAAKI,OAChB,CAEAJ,KAAKI,QAAU,IAAId,EAAiB,CAChCgB,GAAIN,KAAKO,iBAAiBT,EAAeF,GACzCmB,MAAOf,KAAKS,oBAAoBb,EAAaC,GAC7CmB,eAAgBrB,EAChBsB,WAAYtB,EAASiB,IAAIK,WAG7BjB,KAAKc,sBAAsBd,KAAKI,QAAST,EAAUE,GAElDG,KAAKI,QAA6Bc,cAAc,KAC7C,MAAMC,EAASnB,KAAKoB,8BAChB,GAAIpB,KAAKD,SAAU,CACfC,KAAKD,SAASoB,EAAOE,QAASrB,KAAKC,SACvC,IAGR,OAAOD,KAAKI,OAChB,CAMUkB,WACN,OAAOtB,KAAKI,QAAWJ,KAAKI,QAA6BkB,WAAa,IAC1E,CAKUC,aACN,GAAIvB,KAAKI,SAAWJ,KAAKL,SAAU,CAC/B,IAAKK,KAAKG,WAAY,OACrBH,KAAKI,QAAgCoB,YAAY,aAAcxB,KAAKL,SAASiB,IAAIK,SACtF,CACJ,EACH,IAAAQ,EAAA,CAAAC,WAAA,MAAAD,EAAAhC,kBAAA,OAAAgC,CAAA","ignoreList":[]}
1
+ {"version":3,"file":"SignaturePlugin.js","names":["BasePlugin","___controls_BasePlugin","SignatureControl","_interopRequireDefault","__SignatureControl","SignaturePlugin","render","metadata","bindingPath","modelName","engineScopeId","onChange","this","fieldKey","replace","isEditable","control","ImageControl","id","generateStableId","src","generateBindingInfo","width","alt","ui","label","applyCommonDirectives","value","schemaMetadata","readOnly","attachEvent","result","validateAndApplyVisualState","isValid","getValue","getProperty","applyState","setProperty","__exports","__esModule"],"sources":["SignaturePlugin.ts"],"sourcesContent":["import { BasePlugin } from \"../controls/BasePlugin\";\nimport { IPropertyMetadata } from \"../../interfaces/ISchema\";\nimport Control from \"sap/ui/core/Control\";\nimport SignatureControl from \"../../controls/SignatureControl\";\nimport ImageControl from \"sap/m/Image\";\n\nexport class SignaturePlugin extends BasePlugin {\n /**\n * Renders a `SignatureControl` 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 SignatureControl.\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 ImageControl({\n id: this.generateStableId(engineScopeId, bindingPath),\n src: this.generateBindingInfo(bindingPath, modelName),\n width: \"400px\",\n alt: metadata.ui?.label || \"Signature\"\n }) as Control;\n this.applyCommonDirectives(this.control, metadata, modelName);\n return this.control as Control;\n }\n\n this.control = new SignatureControl({\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 SignatureControl).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 base64 signature image state.\n * @returns {unknown} The signature image value.\n */\n protected getValue(): unknown {\n return this.control ? (this.control as SignatureControl).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,EAAgBC,EAAAC,GAGhB,MAAMC,UAAwBL,EAW1BM,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,EAAa,CAC5BC,GAAIN,KAAKO,iBAAiBT,EAAeF,GACzCY,IAAKR,KAAKS,oBAAoBb,EAAaC,GAC3Ca,MAAO,QACPC,IAAKhB,EAASiB,IAAIC,OAAS,cAE/Bb,KAAKc,sBAAsBd,KAAKI,QAAST,EAAUE,GACnD,OAAOG,KAAKI,OAChB,CAEAJ,KAAKI,QAAU,IAAId,EAAiB,CAChCgB,GAAIN,KAAKO,iBAAiBT,EAAeF,GACzCmB,MAAOf,KAAKS,oBAAoBb,EAAaC,GAC7CmB,eAAgBrB,EAChBsB,WAAYtB,EAASiB,IAAIK,WAG7BjB,KAAKc,sBAAsBd,KAAKI,QAAST,EAAUE,GAElDG,KAAKI,QAA6Bc,YAAY,UAAW,KACtD,MAAMC,EAASnB,KAAKoB,8BAChB,GAAIpB,KAAKD,SAAU,CACfC,KAAKD,SAASoB,EAAOE,QAASrB,KAAKC,SACvC,IAGR,OAAOD,KAAKI,OAChB,CAMUkB,WACN,OAAOtB,KAAKI,QAAWJ,KAAKI,QAA6BmB,YAAY,SAAW,IACpF,CAKUC,aACN,GAAIxB,KAAKI,SAAWJ,KAAKL,SAAU,CAC/B,IAAKK,KAAKG,WAAY,OACrBH,KAAKI,QAAgCqB,YAAY,aAAczB,KAAKL,SAASiB,IAAIK,SACtF,CACJ,EACH,IAAAS,EAAA,CAAAC,WAAA,MAAAD,EAAAjC,kBAAA,OAAAiC,CAAA","ignoreList":[]}
@@ -42,7 +42,7 @@ export class SignaturePlugin extends BasePlugin {
42
42
 
43
43
  this.applyCommonDirectives(this.control, metadata, modelName);
44
44
 
45
- (this.control as SignatureControl).attachCapture(() => {
45
+ (this.control as SignatureControl).attachEvent('capture', () => {
46
46
  const result = this.validateAndApplyVisualState();
47
47
  if (this.onChange) {
48
48
  this.onChange(result.isValid, this.fieldKey);
@@ -57,7 +57,7 @@ export class SignaturePlugin extends BasePlugin {
57
57
  * @returns {unknown} The signature image value.
58
58
  */
59
59
  protected getValue(): unknown {
60
- return this.control ? (this.control as SignatureControl).getValue() : null;
60
+ return this.control ? (this.control as SignatureControl).getProperty('value') : null;
61
61
  }
62
62
 
63
63
  /**
@@ -60,7 +60,7 @@ sap.ui.define(["./BasePlugin", "sap/m/Slider", "sap/m/Text"], function (___BaseP
60
60
  * @returns {unknown} The numeric value.
61
61
  */
62
62
  getValue() {
63
- return this.control ? this.control.getValue() : 0;
63
+ return this.control ? this.control.getProperty('value') : 0;
64
64
  }
65
65
 
66
66
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"SliderPlugin-dbg.js","names":["BasePlugin","___BasePlugin","SliderPlugin","render","fieldMetadata","bindingPath","modelName","engineScopeId","onChange","metadata","fieldKey","startsWith","substring","isEditable","control","TextControl","id","generateStableId","text","generateBindingInfo","applyCommonDirectives","Slider","value","enabled","ui","readOnly","min","minimum","undefined","max","maximum","step","multipleOf","enableTickmarks","change","oEvent","val","getParameter","result","validateAndApplyVisualState","isValid","getValue","applyState","setEnabled","__exports","__esModule"],"sources":["SliderPlugin.ts"],"sourcesContent":["/**\n * @file SliderPlugin.ts\n * @description Renders a sap.m.Slider for picking numbers in a range.\n */\n\nimport { BasePlugin } from \"./BasePlugin\";\nimport { IPropertyMetadata } from \"../../interfaces/ISchema\";\nimport Slider from \"sap/m/Slider\";\nimport Control from \"sap/ui/core/Control\";\nimport TextControl from \"sap/m/Text\";\n\n/**\n * Handles rendering logic for numeric sliders.\n * \n * @namespace nz.co.siliconst.ui5.metaui.plugins.controls\n * @public\n */\nexport class SliderPlugin extends BasePlugin {\n /**\n * Renders a `sap.m.Slider` 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 Slider 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)\n });\n this.applyCommonDirectives(this.control, fieldMetadata, modelName);\n return this.control as Control;\n }\n\n this.control = new Slider({\n id: this.generateStableId(engineScopeId, bindingPath),\n value: this.generateBindingInfo(bindingPath, modelName),\n enabled: !fieldMetadata.ui?.readOnly,\n min: fieldMetadata.minimum !== undefined ? fieldMetadata.minimum : 0,\n max: fieldMetadata.maximum !== undefined ? fieldMetadata.maximum : 100,\n step: fieldMetadata.multipleOf !== undefined ? fieldMetadata.multipleOf : 1,\n enableTickmarks: true,\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 slider value.\n * @returns {unknown} The numeric value.\n */\n protected getValue(): unknown {\n return this.control ? (this.control as Slider).getValue() : 0;\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 Slider).setEnabled(!this.metadata.ui?.readOnly);\n }\n }\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"SliderPlugin-dbg.js","names":["BasePlugin","___BasePlugin","SliderPlugin","render","fieldMetadata","bindingPath","modelName","engineScopeId","onChange","metadata","fieldKey","startsWith","substring","isEditable","control","TextControl","id","generateStableId","text","generateBindingInfo","applyCommonDirectives","Slider","value","enabled","ui","readOnly","min","minimum","undefined","max","maximum","step","multipleOf","enableTickmarks","change","oEvent","val","getParameter","result","validateAndApplyVisualState","isValid","getValue","getProperty","applyState","setEnabled","__exports","__esModule"],"sources":["SliderPlugin.ts"],"sourcesContent":["/**\n * @file SliderPlugin.ts\n * @description Renders a sap.m.Slider for picking numbers in a range.\n */\n\nimport { BasePlugin } from \"./BasePlugin\";\nimport { IPropertyMetadata } from \"../../interfaces/ISchema\";\nimport Slider from \"sap/m/Slider\";\nimport Control from \"sap/ui/core/Control\";\nimport TextControl from \"sap/m/Text\";\n\n/**\n * Handles rendering logic for numeric sliders.\n * \n * @namespace nz.co.siliconst.ui5.metaui.plugins.controls\n * @public\n */\nexport class SliderPlugin extends BasePlugin {\n /**\n * Renders a `sap.m.Slider` 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 Slider 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)\n });\n this.applyCommonDirectives(this.control, fieldMetadata, modelName);\n return this.control as Control;\n }\n\n this.control = new Slider({\n id: this.generateStableId(engineScopeId, bindingPath),\n value: this.generateBindingInfo(bindingPath, modelName),\n enabled: !fieldMetadata.ui?.readOnly,\n min: fieldMetadata.minimum !== undefined ? fieldMetadata.minimum : 0,\n max: fieldMetadata.maximum !== undefined ? fieldMetadata.maximum : 100,\n step: fieldMetadata.multipleOf !== undefined ? fieldMetadata.multipleOf : 1,\n enableTickmarks: true,\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 slider value.\n * @returns {unknown} The numeric value.\n */\n protected getValue(): unknown {\n return this.control ? (this.control as Slider).getProperty('value') : 0;\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 Slider).setEnabled(!this.metadata.ui?.readOnly);\n }\n }\n}\n"],"mappings":"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","ignoreList":[]}
@@ -1,2 +1,2 @@
1
- sap.ui.define(["./BasePlugin","sap/m/Slider","sap/m/Text"],function(t,e,i){"use strict";const n=t["BasePlugin"];class a extends n{render(t,n,a="meta",s,l){this.onChange=l;this.metadata=t;this.fieldKey=n.startsWith("/")?n.substring(1):n;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),enabled:!t.ui?.readOnly,min:t.minimum!==undefined?t.minimum:0,max:t.maximum!==undefined?t.maximum:100,step:t.multipleOf!==undefined?t.multipleOf:1,enableTickmarks:true,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.getValue():0}applyState(){if(this.control&&this.metadata){if(!this.isEditable)return;this.control.setEnabled(!this.metadata.ui?.readOnly)}}}var s={__esModule:true};s.SliderPlugin=a;return s});
1
+ sap.ui.define(["./BasePlugin","sap/m/Slider","sap/m/Text"],function(t,e,i){"use strict";const n=t["BasePlugin"];class a extends n{render(t,n,a="meta",s,l){this.onChange=l;this.metadata=t;this.fieldKey=n.startsWith("/")?n.substring(1):n;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),enabled:!t.ui?.readOnly,min:t.minimum!==undefined?t.minimum:0,max:t.maximum!==undefined?t.maximum:100,step:t.multipleOf!==undefined?t.multipleOf:1,enableTickmarks:true,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"):0}applyState(){if(this.control&&this.metadata){if(!this.isEditable)return;this.control.setEnabled(!this.metadata.ui?.readOnly)}}}var s={__esModule:true};s.SliderPlugin=a;return s});
2
2
  //# sourceMappingURL=SliderPlugin.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"SliderPlugin.js","names":["BasePlugin","___BasePlugin","SliderPlugin","render","fieldMetadata","bindingPath","modelName","engineScopeId","onChange","this","metadata","fieldKey","startsWith","substring","isEditable","control","TextControl","id","generateStableId","text","generateBindingInfo","applyCommonDirectives","Slider","value","enabled","ui","readOnly","min","minimum","undefined","max","maximum","step","multipleOf","enableTickmarks","change","oEvent","val","getParameter","result","validateAndApplyVisualState","isValid","getValue","applyState","setEnabled","__exports","__esModule"],"sources":["SliderPlugin.ts"],"sourcesContent":["/**\n * @file SliderPlugin.ts\n * @description Renders a sap.m.Slider for picking numbers in a range.\n */\n\nimport { BasePlugin } from \"./BasePlugin\";\nimport { IPropertyMetadata } from \"../../interfaces/ISchema\";\nimport Slider from \"sap/m/Slider\";\nimport Control from \"sap/ui/core/Control\";\nimport TextControl from \"sap/m/Text\";\n\n/**\n * Handles rendering logic for numeric sliders.\n * \n * @namespace nz.co.siliconst.ui5.metaui.plugins.controls\n * @public\n */\nexport class SliderPlugin extends BasePlugin {\n /**\n * Renders a `sap.m.Slider` 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 Slider 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)\n });\n this.applyCommonDirectives(this.control, fieldMetadata, modelName);\n return this.control as Control;\n }\n\n this.control = new Slider({\n id: this.generateStableId(engineScopeId, bindingPath),\n value: this.generateBindingInfo(bindingPath, modelName),\n enabled: !fieldMetadata.ui?.readOnly,\n min: fieldMetadata.minimum !== undefined ? fieldMetadata.minimum : 0,\n max: fieldMetadata.maximum !== undefined ? fieldMetadata.maximum : 100,\n step: fieldMetadata.multipleOf !== undefined ? fieldMetadata.multipleOf : 1,\n enableTickmarks: true,\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 slider value.\n * @returns {unknown} The numeric value.\n */\n protected getValue(): unknown {\n return this.control ? (this.control as Slider).getValue() : 0;\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 Slider).setEnabled(!this.metadata.ui?.readOnly);\n }\n }\n}\n"],"mappings":"wFAAA,MAKSA,EAAUC,EAAA,cAYZ,MAAMC,UAAqBF,EAWvBG,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,KAEhDG,KAAKY,sBAAsBZ,KAAKM,QAASX,EAAeE,GACxD,OAAOG,KAAKM,OAChB,CAEAN,KAAKM,QAAU,IAAIO,EAAO,CACtBL,GAAIR,KAAKS,iBAAiBX,EAAeF,GACzCkB,MAAOd,KAAKW,oBAAoBf,EAAaC,GAC7CkB,SAAUpB,EAAcqB,IAAIC,SAC5BC,IAAKvB,EAAcwB,UAAYC,UAAYzB,EAAcwB,QAAU,EACnEE,IAAK1B,EAAc2B,UAAYF,UAAYzB,EAAc2B,QAAU,IACnEC,KAAM5B,EAAc6B,aAAeJ,UAAYzB,EAAc6B,WAAa,EAC1EC,gBAAiB,KACjBC,OAASC,IACL,MAAMC,EAAOD,EAA6BE,aAAa,SACvD,MAAMC,EAAS9B,KAAK+B,8BACpB,GAAI/B,KAAKD,SAAU,CACfC,KAAKD,SAAS+B,EAAOE,QAAShC,KAAKE,SACvC,KAIRF,KAAKY,sBAAsBZ,KAAKM,QAASX,EAAeE,GAExD,OAAOG,KAAKM,OAChB,CAMU2B,WACN,OAAOjC,KAAKM,QAAWN,KAAKM,QAAmB2B,WAAa,CAChE,CAKUC,aACN,GAAIlC,KAAKM,SAAWN,KAAKC,SAAU,CAC/B,IAAKD,KAAKK,WAAY,OACrBL,KAAKM,QAAmB6B,YAAYnC,KAAKC,SAASe,IAAIC,SAC3D,CACJ,EACH,IAAAmB,EAAA,CAAAC,WAAA,MAAAD,EAAA3C,eAAA,OAAA2C,CAAA","ignoreList":[]}
1
+ {"version":3,"file":"SliderPlugin.js","names":["BasePlugin","___BasePlugin","SliderPlugin","render","fieldMetadata","bindingPath","modelName","engineScopeId","onChange","this","metadata","fieldKey","startsWith","substring","isEditable","control","TextControl","id","generateStableId","text","generateBindingInfo","applyCommonDirectives","Slider","value","enabled","ui","readOnly","min","minimum","undefined","max","maximum","step","multipleOf","enableTickmarks","change","oEvent","val","getParameter","result","validateAndApplyVisualState","isValid","getValue","getProperty","applyState","setEnabled","__exports","__esModule"],"sources":["SliderPlugin.ts"],"sourcesContent":["/**\n * @file SliderPlugin.ts\n * @description Renders a sap.m.Slider for picking numbers in a range.\n */\n\nimport { BasePlugin } from \"./BasePlugin\";\nimport { IPropertyMetadata } from \"../../interfaces/ISchema\";\nimport Slider from \"sap/m/Slider\";\nimport Control from \"sap/ui/core/Control\";\nimport TextControl from \"sap/m/Text\";\n\n/**\n * Handles rendering logic for numeric sliders.\n * \n * @namespace nz.co.siliconst.ui5.metaui.plugins.controls\n * @public\n */\nexport class SliderPlugin extends BasePlugin {\n /**\n * Renders a `sap.m.Slider` 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 Slider 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)\n });\n this.applyCommonDirectives(this.control, fieldMetadata, modelName);\n return this.control as Control;\n }\n\n this.control = new Slider({\n id: this.generateStableId(engineScopeId, bindingPath),\n value: this.generateBindingInfo(bindingPath, modelName),\n enabled: !fieldMetadata.ui?.readOnly,\n min: fieldMetadata.minimum !== undefined ? fieldMetadata.minimum : 0,\n max: fieldMetadata.maximum !== undefined ? fieldMetadata.maximum : 100,\n step: fieldMetadata.multipleOf !== undefined ? fieldMetadata.multipleOf : 1,\n enableTickmarks: true,\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 slider value.\n * @returns {unknown} The numeric value.\n */\n protected getValue(): unknown {\n return this.control ? (this.control as Slider).getProperty('value') : 0;\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 Slider).setEnabled(!this.metadata.ui?.readOnly);\n }\n }\n}\n"],"mappings":"wFAAA,MAKSA,EAAUC,EAAA,cAYZ,MAAMC,UAAqBF,EAWvBG,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,KAEhDG,KAAKY,sBAAsBZ,KAAKM,QAASX,EAAeE,GACxD,OAAOG,KAAKM,OAChB,CAEAN,KAAKM,QAAU,IAAIO,EAAO,CACtBL,GAAIR,KAAKS,iBAAiBX,EAAeF,GACzCkB,MAAOd,KAAKW,oBAAoBf,EAAaC,GAC7CkB,SAAUpB,EAAcqB,IAAIC,SAC5BC,IAAKvB,EAAcwB,UAAYC,UAAYzB,EAAcwB,QAAU,EACnEE,IAAK1B,EAAc2B,UAAYF,UAAYzB,EAAc2B,QAAU,IACnEC,KAAM5B,EAAc6B,aAAeJ,UAAYzB,EAAc6B,WAAa,EAC1EC,gBAAiB,KACjBC,OAASC,IACL,MAAMC,EAAOD,EAA6BE,aAAa,SACvD,MAAMC,EAAS9B,KAAK+B,8BACpB,GAAI/B,KAAKD,SAAU,CACfC,KAAKD,SAAS+B,EAAOE,QAAShC,KAAKE,SACvC,KAIRF,KAAKY,sBAAsBZ,KAAKM,QAASX,EAAeE,GAExD,OAAOG,KAAKM,OAChB,CAMU2B,WACN,OAAOjC,KAAKM,QAAWN,KAAKM,QAAmB4B,YAAY,SAAW,CAC1E,CAKUC,aACN,GAAInC,KAAKM,SAAWN,KAAKC,SAAU,CAC/B,IAAKD,KAAKK,WAAY,OACrBL,KAAKM,QAAmB8B,YAAYpC,KAAKC,SAASe,IAAIC,SAC3D,CACJ,EACH,IAAAoB,EAAA,CAAAC,WAAA,MAAAD,EAAA5C,eAAA,OAAA4C,CAAA","ignoreList":[]}
@@ -68,7 +68,7 @@ export class SliderPlugin extends BasePlugin {
68
68
  * @returns {unknown} The numeric value.
69
69
  */
70
70
  protected getValue(): unknown {
71
- return this.control ? (this.control as Slider).getValue() : 0;
71
+ return this.control ? (this.control as Slider).getProperty('value') : 0;
72
72
  }
73
73
 
74
74
  /**