@siliconst/metaui 1.4.4 → 1.4.6

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 (204) hide show
  1. package/package.json +1 -1
  2. package/src/nz/co/siliconst/ui5/metaui/controls/DynamicHost-dbg.js +42 -3
  3. package/src/nz/co/siliconst/ui5/metaui/controls/DynamicHost-dbg.js.map +1 -1
  4. package/src/nz/co/siliconst/ui5/metaui/controls/DynamicHost.d.ts +7 -1
  5. package/src/nz/co/siliconst/ui5/metaui/controls/DynamicHost.d.ts.map +1 -1
  6. package/src/nz/co/siliconst/ui5/metaui/controls/DynamicHost.js +1 -1
  7. package/src/nz/co/siliconst/ui5/metaui/controls/DynamicHost.js.map +1 -1
  8. package/src/nz/co/siliconst/ui5/metaui/controls/DynamicHost.ts +45 -1
  9. package/src/nz/co/siliconst/ui5/metaui/controls/host/GeneratorHost-dbg.js +5 -5
  10. package/src/nz/co/siliconst/ui5/metaui/controls/host/GeneratorHost-dbg.js.map +1 -1
  11. package/src/nz/co/siliconst/ui5/metaui/controls/host/GeneratorHost.d.ts +1 -1
  12. package/src/nz/co/siliconst/ui5/metaui/controls/host/GeneratorHost.js +1 -1
  13. package/src/nz/co/siliconst/ui5/metaui/controls/host/GeneratorHost.js.map +1 -1
  14. package/src/nz/co/siliconst/ui5/metaui/controls/host/GeneratorHost.ts +4 -4
  15. package/src/nz/co/siliconst/ui5/metaui/controls/host/delegates/ODataDelegate-dbg.js +122 -0
  16. package/src/nz/co/siliconst/ui5/metaui/controls/host/delegates/ODataDelegate-dbg.js.map +1 -0
  17. package/src/nz/co/siliconst/ui5/metaui/controls/host/delegates/ODataDelegate.d.ts +49 -0
  18. package/src/nz/co/siliconst/ui5/metaui/controls/host/delegates/ODataDelegate.d.ts.map +1 -0
  19. package/src/nz/co/siliconst/ui5/metaui/controls/host/delegates/ODataDelegate.js +2 -0
  20. package/src/nz/co/siliconst/ui5/metaui/controls/host/delegates/ODataDelegate.js.map +1 -0
  21. package/src/nz/co/siliconst/ui5/metaui/controls/host/delegates/ODataDelegate.ts +118 -0
  22. package/src/nz/co/siliconst/ui5/metaui/core/DefaultLayoutGenerator-dbg.js +24 -8
  23. package/src/nz/co/siliconst/ui5/metaui/core/DefaultLayoutGenerator-dbg.js.map +1 -1
  24. package/src/nz/co/siliconst/ui5/metaui/core/DefaultLayoutGenerator.d.ts +1 -0
  25. package/src/nz/co/siliconst/ui5/metaui/core/DefaultLayoutGenerator.d.ts.map +1 -1
  26. package/src/nz/co/siliconst/ui5/metaui/core/DefaultLayoutGenerator.js +1 -1
  27. package/src/nz/co/siliconst/ui5/metaui/core/DefaultLayoutGenerator.js.map +1 -1
  28. package/src/nz/co/siliconst/ui5/metaui/core/DefaultLayoutGenerator.ts +26 -9
  29. package/src/nz/co/siliconst/ui5/metaui/core/Engine-dbg.js +5 -5
  30. package/src/nz/co/siliconst/ui5/metaui/core/Engine-dbg.js.map +1 -1
  31. package/src/nz/co/siliconst/ui5/metaui/core/Engine.d.ts +3 -3
  32. package/src/nz/co/siliconst/ui5/metaui/core/Engine.d.ts.map +1 -1
  33. package/src/nz/co/siliconst/ui5/metaui/core/Engine.js +1 -1
  34. package/src/nz/co/siliconst/ui5/metaui/core/Engine.js.map +1 -1
  35. package/src/nz/co/siliconst/ui5/metaui/core/Engine.ts +5 -5
  36. package/src/nz/co/siliconst/ui5/metaui/core/SchemaNormalizer-dbg.js +45 -1
  37. package/src/nz/co/siliconst/ui5/metaui/core/SchemaNormalizer-dbg.js.map +1 -1
  38. package/src/nz/co/siliconst/ui5/metaui/core/SchemaNormalizer.d.ts +10 -1
  39. package/src/nz/co/siliconst/ui5/metaui/core/SchemaNormalizer.d.ts.map +1 -1
  40. package/src/nz/co/siliconst/ui5/metaui/core/SchemaNormalizer.js +1 -1
  41. package/src/nz/co/siliconst/ui5/metaui/core/SchemaNormalizer.js.map +1 -1
  42. package/src/nz/co/siliconst/ui5/metaui/core/SchemaNormalizer.ts +45 -2
  43. package/src/nz/co/siliconst/ui5/metaui/interfaces/IPlugin-dbg.js.map +1 -1
  44. package/src/nz/co/siliconst/ui5/metaui/interfaces/IPlugin.d.ts +3 -3
  45. package/src/nz/co/siliconst/ui5/metaui/interfaces/IPlugin.d.ts.map +1 -1
  46. package/src/nz/co/siliconst/ui5/metaui/interfaces/IPlugin.ts +3 -3
  47. package/src/nz/co/siliconst/ui5/metaui/layouts/CompactLayout-dbg.js +10 -6
  48. package/src/nz/co/siliconst/ui5/metaui/layouts/CompactLayout-dbg.js.map +1 -1
  49. package/src/nz/co/siliconst/ui5/metaui/layouts/CompactLayout.d.ts.map +1 -1
  50. package/src/nz/co/siliconst/ui5/metaui/layouts/CompactLayout.js +1 -1
  51. package/src/nz/co/siliconst/ui5/metaui/layouts/CompactLayout.js.map +1 -1
  52. package/src/nz/co/siliconst/ui5/metaui/layouts/CompactLayout.ts +5 -5
  53. package/src/nz/co/siliconst/ui5/metaui/layouts/FormLayout-dbg.js +10 -6
  54. package/src/nz/co/siliconst/ui5/metaui/layouts/FormLayout-dbg.js.map +1 -1
  55. package/src/nz/co/siliconst/ui5/metaui/layouts/FormLayout.d.ts.map +1 -1
  56. package/src/nz/co/siliconst/ui5/metaui/layouts/FormLayout.js +1 -1
  57. package/src/nz/co/siliconst/ui5/metaui/layouts/FormLayout.js.map +1 -1
  58. package/src/nz/co/siliconst/ui5/metaui/layouts/FormLayout.ts +5 -5
  59. package/src/nz/co/siliconst/ui5/metaui/layouts/TableLayout-dbg.js +24 -31
  60. package/src/nz/co/siliconst/ui5/metaui/layouts/TableLayout-dbg.js.map +1 -1
  61. package/src/nz/co/siliconst/ui5/metaui/layouts/TableLayout.d.ts.map +1 -1
  62. package/src/nz/co/siliconst/ui5/metaui/layouts/TableLayout.js +1 -1
  63. package/src/nz/co/siliconst/ui5/metaui/layouts/TableLayout.js.map +1 -1
  64. package/src/nz/co/siliconst/ui5/metaui/layouts/TableLayout.ts +20 -31
  65. package/src/nz/co/siliconst/ui5/metaui/layouts/WizardLayout-dbg.js +8 -4
  66. package/src/nz/co/siliconst/ui5/metaui/layouts/WizardLayout-dbg.js.map +1 -1
  67. package/src/nz/co/siliconst/ui5/metaui/layouts/WizardLayout.d.ts.map +1 -1
  68. package/src/nz/co/siliconst/ui5/metaui/layouts/WizardLayout.js +1 -1
  69. package/src/nz/co/siliconst/ui5/metaui/layouts/WizardLayout.js.map +1 -1
  70. package/src/nz/co/siliconst/ui5/metaui/layouts/WizardLayout.ts +3 -3
  71. package/src/nz/co/siliconst/ui5/metaui/library-preload.js +36 -35
  72. package/src/nz/co/siliconst/ui5/metaui/library-preload.js.map +1 -1
  73. package/src/nz/co/siliconst/ui5/metaui/plugins/actions/ClearFormActionPlugin-dbg.js +2 -2
  74. package/src/nz/co/siliconst/ui5/metaui/plugins/actions/ClearFormActionPlugin-dbg.js.map +1 -1
  75. package/src/nz/co/siliconst/ui5/metaui/plugins/actions/ClearFormActionPlugin.js +1 -1
  76. package/src/nz/co/siliconst/ui5/metaui/plugins/actions/ClearFormActionPlugin.js.map +1 -1
  77. package/src/nz/co/siliconst/ui5/metaui/plugins/actions/ClearFormActionPlugin.ts +2 -2
  78. package/src/nz/co/siliconst/ui5/metaui/plugins/actions/SubmitFormActionPlugin-dbg.js +2 -2
  79. package/src/nz/co/siliconst/ui5/metaui/plugins/actions/SubmitFormActionPlugin-dbg.js.map +1 -1
  80. package/src/nz/co/siliconst/ui5/metaui/plugins/actions/SubmitFormActionPlugin.js +1 -1
  81. package/src/nz/co/siliconst/ui5/metaui/plugins/actions/SubmitFormActionPlugin.js.map +1 -1
  82. package/src/nz/co/siliconst/ui5/metaui/plugins/actions/SubmitFormActionPlugin.ts +2 -2
  83. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/ArrayPlugin-dbg.js +5 -5
  84. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/ArrayPlugin-dbg.js.map +1 -1
  85. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/ArrayPlugin.js +1 -1
  86. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/ArrayPlugin.js.map +1 -1
  87. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/ArrayPlugin.ts +5 -5
  88. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/BarcodeScannerPlugin-dbg.js +2 -2
  89. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/BarcodeScannerPlugin-dbg.js.map +1 -1
  90. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/BarcodeScannerPlugin.js +1 -1
  91. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/BarcodeScannerPlugin.js.map +1 -1
  92. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/BarcodeScannerPlugin.ts +2 -2
  93. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/BasePlugin-dbg.js +6 -6
  94. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/BasePlugin-dbg.js.map +1 -1
  95. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/BasePlugin.d.ts +5 -5
  96. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/BasePlugin.d.ts.map +1 -1
  97. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/BasePlugin.js +1 -1
  98. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/BasePlugin.js.map +1 -1
  99. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/BasePlugin.ts +6 -6
  100. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/BooleanPlugin-dbg.js +2 -2
  101. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/BooleanPlugin-dbg.js.map +1 -1
  102. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/BooleanPlugin.js +1 -1
  103. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/BooleanPlugin.js.map +1 -1
  104. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/BooleanPlugin.ts +2 -2
  105. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/CameraPlugin-dbg.js +2 -2
  106. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/CameraPlugin-dbg.js.map +1 -1
  107. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/CameraPlugin.js +1 -1
  108. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/CameraPlugin.js.map +1 -1
  109. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/CameraPlugin.ts +2 -2
  110. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/CodeEditorPlugin-dbg.js +2 -2
  111. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/CodeEditorPlugin-dbg.js.map +1 -1
  112. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/CodeEditorPlugin.js +1 -1
  113. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/CodeEditorPlugin.js.map +1 -1
  114. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/CodeEditorPlugin.ts +2 -2
  115. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/DatePlugin-dbg.js +2 -2
  116. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/DatePlugin-dbg.js.map +1 -1
  117. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/DatePlugin.js +1 -1
  118. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/DatePlugin.js.map +1 -1
  119. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/DatePlugin.ts +2 -2
  120. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/DateTimePlugin-dbg.js +2 -2
  121. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/DateTimePlugin-dbg.js.map +1 -1
  122. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/DateTimePlugin.js +1 -1
  123. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/DateTimePlugin.js.map +1 -1
  124. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/DateTimePlugin.ts +2 -2
  125. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/DropdownPlugin-dbg.js +2 -2
  126. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/DropdownPlugin-dbg.js.map +1 -1
  127. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/DropdownPlugin.js +1 -1
  128. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/DropdownPlugin.js.map +1 -1
  129. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/DropdownPlugin.ts +2 -2
  130. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/FileUploaderPlugin-dbg.js +2 -2
  131. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/FileUploaderPlugin-dbg.js.map +1 -1
  132. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/FileUploaderPlugin.js +1 -1
  133. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/FileUploaderPlugin.js.map +1 -1
  134. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/FileUploaderPlugin.ts +2 -2
  135. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/GeolocationPlugin-dbg.js +2 -2
  136. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/GeolocationPlugin-dbg.js.map +1 -1
  137. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/GeolocationPlugin.js +1 -1
  138. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/GeolocationPlugin.js.map +1 -1
  139. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/GeolocationPlugin.ts +2 -2
  140. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/MultiSelectPlugin-dbg.js +2 -2
  141. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/MultiSelectPlugin-dbg.js.map +1 -1
  142. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/MultiSelectPlugin.js +1 -1
  143. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/MultiSelectPlugin.js.map +1 -1
  144. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/MultiSelectPlugin.ts +2 -2
  145. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/NumberPlugin-dbg.js +2 -2
  146. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/NumberPlugin-dbg.js.map +1 -1
  147. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/NumberPlugin.js +1 -1
  148. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/NumberPlugin.js.map +1 -1
  149. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/NumberPlugin.ts +2 -2
  150. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/ObjectPlugin-dbg.js +5 -5
  151. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/ObjectPlugin-dbg.js.map +1 -1
  152. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/ObjectPlugin.js +1 -1
  153. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/ObjectPlugin.js.map +1 -1
  154. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/ObjectPlugin.ts +5 -5
  155. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/RatingIndicatorPlugin-dbg.js +2 -2
  156. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/RatingIndicatorPlugin-dbg.js.map +1 -1
  157. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/RatingIndicatorPlugin.js +1 -1
  158. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/RatingIndicatorPlugin.js.map +1 -1
  159. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/RatingIndicatorPlugin.ts +2 -2
  160. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/RichTextPlugin-dbg.js +2 -2
  161. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/RichTextPlugin-dbg.js.map +1 -1
  162. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/RichTextPlugin.js +1 -1
  163. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/RichTextPlugin.js.map +1 -1
  164. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/RichTextPlugin.ts +2 -2
  165. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/SignaturePlugin-dbg.js +2 -2
  166. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/SignaturePlugin-dbg.js.map +1 -1
  167. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/SignaturePlugin.js +1 -1
  168. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/SignaturePlugin.js.map +1 -1
  169. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/SignaturePlugin.ts +2 -2
  170. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/SliderPlugin-dbg.js +2 -2
  171. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/SliderPlugin-dbg.js.map +1 -1
  172. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/SliderPlugin.js +1 -1
  173. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/SliderPlugin.js.map +1 -1
  174. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/SliderPlugin.ts +2 -2
  175. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/StringPlugin-dbg.js +2 -2
  176. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/StringPlugin-dbg.js.map +1 -1
  177. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/StringPlugin.js +1 -1
  178. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/StringPlugin.js.map +1 -1
  179. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/StringPlugin.ts +2 -2
  180. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/SwitchPlugin-dbg.js +2 -2
  181. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/SwitchPlugin-dbg.js.map +1 -1
  182. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/SwitchPlugin.js +1 -1
  183. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/SwitchPlugin.js.map +1 -1
  184. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/SwitchPlugin.ts +2 -2
  185. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/TextAreaPlugin-dbg.js +2 -2
  186. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/TextAreaPlugin-dbg.js.map +1 -1
  187. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/TextAreaPlugin.js +1 -1
  188. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/TextAreaPlugin.js.map +1 -1
  189. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/TextAreaPlugin.ts +2 -2
  190. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/TimePlugin-dbg.js +2 -2
  191. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/TimePlugin-dbg.js.map +1 -1
  192. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/TimePlugin.js +1 -1
  193. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/TimePlugin.js.map +1 -1
  194. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/TimePlugin.ts +2 -2
  195. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/VoiceInputPlugin-dbg.js +2 -2
  196. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/VoiceInputPlugin-dbg.js.map +1 -1
  197. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/VoiceInputPlugin.js +1 -1
  198. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/VoiceInputPlugin.js.map +1 -1
  199. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/VoiceInputPlugin.ts +2 -2
  200. package/src/nz/co/siliconst/ui5/metaui/plugins/datasources/RemoteDropdownPlugin-dbg.js +2 -2
  201. package/src/nz/co/siliconst/ui5/metaui/plugins/datasources/RemoteDropdownPlugin-dbg.js.map +1 -1
  202. package/src/nz/co/siliconst/ui5/metaui/plugins/datasources/RemoteDropdownPlugin.js +1 -1
  203. package/src/nz/co/siliconst/ui5/metaui/plugins/datasources/RemoteDropdownPlugin.js.map +1 -1
  204. package/src/nz/co/siliconst/ui5/metaui/plugins/datasources/RemoteDropdownPlugin.ts +2 -2
@@ -16,6 +16,7 @@ import Control from "sap/ui/core/Control";
16
16
  import { IPropertyMetadata, ISchema, ILayoutElement } from "../interfaces/ISchema";
17
17
  import { ILayoutManager } from "../interfaces/ILayoutManager";
18
18
  import { Engine } from "../core/Engine";
19
+ import { SchemaNormalizer } from "../core/SchemaNormalizer";
19
20
  import { Logger } from "../utils/Logger";
20
21
 
21
22
  /**
@@ -52,7 +53,7 @@ export class TableLayout implements ILayoutManager {
52
53
  content: [
53
54
  new Title({ text: tableTitle }),
54
55
  new ToolbarSpacer(),
55
- ...(engine.isDisplayMode ? [] : [
56
+ ...(!engine.isEditable ? [] : [
56
57
  new Button({
57
58
  text: "Add Row",
58
59
  icon: "sap-icon://add",
@@ -73,7 +74,7 @@ export class TableLayout implements ILayoutManager {
73
74
  ]
74
75
  }),
75
76
  fixedLayout: false,
76
- mode: engine.isDisplayMode ? "None" : "Delete",
77
+ mode: !engine.isEditable ? "None" : "Delete",
77
78
  delete: (oEvent: sap.ui.base.Event) => {
78
79
  const item = oEvent.getParameter("listItem");
79
80
  const path = item.getBindingContext(actualModelName).getPath();
@@ -99,48 +100,36 @@ export class TableLayout implements ILayoutManager {
99
100
  if (layoutElements && Array.isArray(layoutElements)) {
100
101
  // Only render columns defined in uiLayout
101
102
  layoutElements.forEach((element: ILayoutElement) => {
102
- if (element.type === "Control") {
103
- if (!element.scope || !element.scope.startsWith("#/properties/")) {
104
- Logger.error(`[MetaUI] Invalid scope '${element.scope}' in uiLayout Control for Table.`, "", "TableLayout");
105
- return;
106
- }
107
-
108
- const propKey = element.scope.replace("#/properties/", "");
109
- const fieldMeta = props[propKey];
110
-
103
+ if (element.type === "Control" && element.scope) {
104
+ const { meta: fieldMeta, bindingPath, propKey } = SchemaNormalizer.resolveScope(
105
+ { type: "object", properties: props } as ISchema,
106
+ element.scope
107
+ );
108
+
111
109
  if (!fieldMeta) {
112
110
  Logger.error(`[MetaUI] Property '${propKey}' not found in schema definitions for Table.`, "", "TableLayout");
113
- return;
114
- }
115
-
116
- try {
117
- const isKey = !!fieldMeta.ui?.isKey;
118
-
119
- const column = new Column({
111
+ } else {
112
+ // The architectural boundary: Table Layout orchestrates the columns and aggregation binding,
113
+ // but delegates the actual cell rendering to the Engine's Field Plugins.
114
+ table.addColumn(new Column({
120
115
  header: new Text({ text: element.label || fieldMeta.ui?.label || propKey }),
121
- demandPopin: !isKey,
122
- minScreenWidth: isKey ? "" : "Tablet",
116
+ demandPopin: !fieldMeta.ui?.isKey,
117
+ minScreenWidth: fieldMeta.ui?.isKey ? "" : "Tablet",
123
118
  popinDisplay: "Inline"
124
- });
125
- table.addColumn(column);
119
+ }));
126
120
 
127
- // Override widget if specified in the layout element
128
121
  const effectiveMeta = { ...fieldMeta };
129
122
  if (element.widget) {
130
123
  effectiveMeta.ui = { ...fieldMeta.ui, widget: element.widget };
131
124
  }
132
125
 
133
- // Use engine to generate fields natively and track validation
134
- const control = engine.generateField(effectiveMeta, propKey, actualModelName || "meta", true);
126
+ // We pass the activeModel as actualModelName down. But the path must be relative to the
127
+ // table row binding context, so we just use the bindingPath (e.g. "id" or "header/id")
128
+ const control = engine.generateField(effectiveMeta, bindingPath, actualModelName || "meta", true);
135
129
  templateCells.push(control);
136
- } catch (error) {
137
- const msg = (error as Error).message;
138
- Logger.error(`[MetaUI] Failed to render column ${propKey}`, msg, "TableLayout");
139
- Logger.showErrorPopup(`Failed to render table column '${propKey}'.\n\nDetails: ${msg}`);
140
- templateCells.push(new Text({ text: "Error" }));
141
130
  }
142
131
  } else {
143
- Logger.warn(`[MetaUI] Unsupported layout element type '${element.type}' inside TableLayout. Only 'Control' is supported for columns.`, "", "TableLayout");
132
+ Logger.warn(`[MetaUI] Unsupported layout element type '${element.type}' in Table.`, "", "TableLayout");
144
133
  }
145
134
  });
146
135
  } else {
@@ -1,6 +1,7 @@
1
- sap.ui.define(["sap/m/Wizard", "sap/m/WizardStep", "sap/ui/layout/form/SimpleForm", "sap/m/Label", "../utils/Logger"], function (Wizard, WizardStep, SimpleForm, Label, ___utils_Logger) {
1
+ sap.ui.define(["sap/m/Wizard", "sap/m/WizardStep", "sap/ui/layout/form/SimpleForm", "sap/m/Label", "../core/SchemaNormalizer", "../utils/Logger"], function (Wizard, WizardStep, SimpleForm, Label, ___core_SchemaNormalizer, ___utils_Logger) {
2
2
  "use strict";
3
3
 
4
+ const SchemaNormalizer = ___core_SchemaNormalizer["SchemaNormalizer"];
4
5
  const Logger = ___utils_Logger["Logger"];
5
6
  /**
6
7
  * Layout Manager responsible for generating a responsive SAP Fiori Wizard.
@@ -74,8 +75,11 @@ sap.ui.define(["sap/m/Wizard", "sap/m/WizardStep", "sap/ui/layout/form/SimpleFor
74
75
  Logger.error(`[MetaUI] Invalid scope '${element.scope}' in uiLayout Control.`, "", "WizardLayout");
75
76
  return;
76
77
  }
77
- const propKey = element.scope.replace("#/properties/", "");
78
- const meta = schema.properties?.[propKey];
78
+ const {
79
+ meta,
80
+ bindingPath,
81
+ propKey
82
+ } = SchemaNormalizer.resolveScope(schema, element.scope);
79
83
  if (!meta) {
80
84
  Logger.error(`[MetaUI] Property '${propKey}' not found in schema definitions.`, "", "WizardLayout");
81
85
  return;
@@ -95,7 +99,7 @@ sap.ui.define(["sap/m/Wizard", "sap/m/WizardStep", "sap/ui/layout/form/SimpleFor
95
99
  widget: element.widget
96
100
  };
97
101
  }
98
- const control = engine.generateField(effectiveMeta, `/${propKey}`, modelName);
102
+ const control = engine.generateField(effectiveMeta, `/${bindingPath}`, modelName);
99
103
  if (effectiveMeta.ui?.fullWidth) {
100
104
  sap.ui.require(["sap/ui/layout/GridData"], GridData => {
101
105
  control.setLayoutData(new GridData({
@@ -1 +1 @@
1
- {"version":3,"file":"WizardLayout-dbg.js","names":["Logger","___utils_Logger","WizardLayout","render","schema","modelName","engine","onSubmit","wizard","Wizard","renderMode","showNextButton","complete","uiLayout","Array","isArray","warn","forEach","element","type","step","WizardStep","title","label","validated","form","SimpleForm","editable","layout","labelSpanXL","labelSpanL","labelSpanM","labelSpanS","adjustLabelSpan","emptySpanXL","emptySpanL","emptySpanM","emptySpanS","columnsXL","columnsL","columnsM","singleContainerFullSize","elements","childElement","_renderElementInForm","addContent","addStep","scope","startsWith","error","propKey","replace","meta","properties","labelText","ui","Label","text","required","effectiveMeta","widget","control","generateField","fullWidth","sap","require","GridData","setLayoutData","span","message","__exports","__esModule"],"sources":["WizardLayout.ts"],"sourcesContent":["/**\n * @file WizardLayout.ts\n * @description Generates a fully responsive SAP Fiori Wizard layout.\n */\n\nimport Wizard from \"sap/m/Wizard\";\nimport WizardStep from \"sap/m/WizardStep\";\nimport SimpleForm from \"sap/ui/layout/form/SimpleForm\";\nimport Label from \"sap/m/Label\";\nimport VBox from \"sap/m/VBox\";\nimport { IPropertyMetadata, ISchema, ILayoutElement } from \"../interfaces/ISchema\";\nimport { ILayoutManager } from \"../interfaces/ILayoutManager\";\nimport { Engine } from \"../core/Engine\";\nimport { Logger } from \"../utils/Logger\";\nimport Control from \"sap/ui/core/Control\";\n\n/**\n * Layout Manager responsible for generating a responsive SAP Fiori Wizard.\n * It segments the schema fields into discrete Wizard Steps based on `uiLayout` elements \n * of type `Group` or `WizardStep`.\n * \n * @namespace nz.co.siliconst.ui5.metaui.layouts\n * @public\n */\nexport class WizardLayout implements ILayoutManager {\n /**\n * Renders the JSON Schema properties into a paginated UI5 Wizard using uiLayout.\n * \n * @param schema The active JSON schema object.\n * @param modelName The bound UI5 model name.\n * @param engine The central orchestrator for delegating plugin generation.\n * @param onSubmit Hook executed when the Wizard's native 'complete' event is fired.\n * @returns {Control} The generated sap.m.Wizard control.\n */\n public render(schema: ISchema, modelName: string, engine: Engine, onSubmit?: () => void): Control {\n const wizard = new Wizard({\n renderMode: \"Page\",\n showNextButton: true,\n complete: function() {\n if (onSubmit) onSubmit();\n }\n });\n\n if (!schema.uiLayout || !Array.isArray(schema.uiLayout)) {\n Logger.warn(\"[MetaUI] Missing 'uiLayout' array in wizard schema. Wizard will not render any steps.\");\n return wizard;\n }\n\n schema.uiLayout.forEach((element: ILayoutElement) => {\n if (element.type === \"Group\" || element.type === \"WizardStep\") {\n const step = new WizardStep({\n title: element.label || \"Step\",\n validated: true // The PipelineManager handles global validation, wizard step validation can be local later\n });\n\n const form = new SimpleForm({\n editable: true,\n layout: \"ResponsiveGridLayout\",\n labelSpanXL: 4, labelSpanL: 4, labelSpanM: 4, labelSpanS: 12,\n adjustLabelSpan: false,\n emptySpanXL: 0, emptySpanL: 0, emptySpanM: 0, emptySpanS: 0,\n columnsXL: 1, columnsL: 1, columnsM: 1,\n singleContainerFullSize: false\n });\n \n if (element.elements && Array.isArray(element.elements)) {\n element.elements.forEach(childElement => {\n this._renderElementInForm(form, childElement, schema, modelName, engine);\n });\n }\n\n step.addContent(form);\n wizard.addStep(step);\n } else {\n Logger.warn(`[MetaUI] Top-level element '${element.type}' inside WizardLayout must be 'Group' or 'WizardStep'.`, \"\", \"WizardLayout\");\n }\n });\n\n return wizard;\n }\n\n private _renderElementInForm(form: SimpleForm, element: ILayoutElement, schema: ISchema, modelName: string, engine: Engine): void {\n if (element.type === \"Control\") {\n if (!element.scope || !element.scope.startsWith(\"#/properties/\")) {\n Logger.error(`[MetaUI] Invalid scope '${element.scope}' in uiLayout Control.`, \"\", \"WizardLayout\");\n return;\n }\n \n const propKey = element.scope.replace(\"#/properties/\", \"\");\n const meta = schema.properties?.[propKey];\n \n if (!meta) {\n Logger.error(`[MetaUI] Property '${propKey}' not found in schema definitions.`, \"\", \"WizardLayout\");\n return;\n }\n\n try {\n const labelText = element.label || meta.ui?.label || propKey;\n const label = new Label({\n text: labelText,\n required: meta.required\n });\n\n const effectiveMeta = { ...meta };\n if (element.widget) {\n effectiveMeta.ui = { ...meta.ui, widget: element.widget };\n }\n\n const control = engine.generateField(effectiveMeta, `/${propKey}`, modelName);\n\n if (effectiveMeta.ui?.fullWidth) {\n sap.ui.require([\"sap/ui/layout/GridData\"], (GridData: any) => {\n control.setLayoutData(new GridData({ span: \"XL12 L12 M12 S12\" }));\n });\n }\n\n form.addContent(label);\n form.addContent(control);\n } catch (error) {\n Logger.error(`[MetaUI] Failed to render Wizard field ${propKey}`, (error as Error).message, \"WizardLayout\");\n form.addContent(new Label({ text: propKey }));\n }\n } else {\n Logger.warn(`[MetaUI] Nested groups within Wizard steps are not fully supported in SimpleForm yet.`, \"\", \"WizardLayout\");\n }\n }\n}\n"],"mappings":";;;QAaSA,MAAM,GAAAC,eAAA;EAGf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACO,MAAMC,YAAY,CAA2B;IAChD;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;IACWC,MAAMA,CAACC,MAAe,EAAEC,SAAiB,EAAEC,MAAc,EAAEC,QAAqB,EAAW;MAC9F,MAAMC,MAAM,GAAG,IAAIC,MAAM,CAAC;QACtBC,UAAU,EAAE,MAAM;QAClBC,cAAc,EAAE,IAAI;QACpBC,QAAQ,EAAE,SAAAA,CAAA,EAAW;UACjB,IAAIL,QAAQ,EAAEA,QAAQ,CAAC,CAAC;QAC5B;MACJ,CAAC,CAAC;MAEF,IAAI,CAACH,MAAM,CAACS,QAAQ,IAAI,CAACC,KAAK,CAACC,OAAO,CAACX,MAAM,CAACS,QAAQ,CAAC,EAAE;QACrDb,MAAM,CAACgB,IAAI,CAAC,uFAAuF,CAAC;QACpG,OAAOR,MAAM;MACjB;MAEAJ,MAAM,CAACS,QAAQ,CAACI,OAAO,CAAEC,OAAuB,IAAK;QACjD,IAAIA,OAAO,CAACC,IAAI,KAAK,OAAO,IAAID,OAAO,CAACC,IAAI,KAAK,YAAY,EAAE;UAC3D,MAAMC,IAAI,GAAG,IAAIC,UAAU,CAAC;YACxBC,KAAK,EAAEJ,OAAO,CAACK,KAAK,IAAI,MAAM;YAC9BC,SAAS,EAAE,IAAI,CAAC;UACpB,CAAC,CAAC;UAEF,MAAMC,IAAI,GAAG,IAAIC,UAAU,CAAC;YACxBC,QAAQ,EAAE,IAAI;YACdC,MAAM,EAAE,sBAAsB;YAC9BC,WAAW,EAAE,CAAC;YAAEC,UAAU,EAAE,CAAC;YAAEC,UAAU,EAAE,CAAC;YAAEC,UAAU,EAAE,EAAE;YAC5DC,eAAe,EAAE,KAAK;YACtBC,WAAW,EAAE,CAAC;YAAEC,UAAU,EAAE,CAAC;YAAEC,UAAU,EAAE,CAAC;YAAEC,UAAU,EAAE,CAAC;YAC3DC,SAAS,EAAE,CAAC;YAAEC,QAAQ,EAAE,CAAC;YAAEC,QAAQ,EAAE,CAAC;YACtCC,uBAAuB,EAAE;UAC7B,CAAC,CAAC;UAEF,IAAIvB,OAAO,CAACwB,QAAQ,IAAI5B,KAAK,CAACC,OAAO,CAACG,OAAO,CAACwB,QAAQ,CAAC,EAAE;YACrDxB,OAAO,CAACwB,QAAQ,CAACzB,OAAO,CAAC0B,YAAY,IAAI;cACrC,IAAI,CAACC,oBAAoB,CAACnB,IAAI,EAAEkB,YAAY,EAAEvC,MAAM,EAAEC,SAAS,EAAEC,MAAM,CAAC;YAC5E,CAAC,CAAC;UACN;UAEAc,IAAI,CAACyB,UAAU,CAACpB,IAAI,CAAC;UACrBjB,MAAM,CAACsC,OAAO,CAAC1B,IAAI,CAAC;QACxB,CAAC,MAAM;UACHpB,MAAM,CAACgB,IAAI,CAAC,+BAA+BE,OAAO,CAACC,IAAI,wDAAwD,EAAE,EAAE,EAAE,cAAc,CAAC;QACxI;MACJ,CAAC,CAAC;MAEF,OAAOX,MAAM;IACjB;IAEQoC,oBAAoBA,CAACnB,IAAgB,EAAEP,OAAuB,EAAEd,MAAe,EAAEC,SAAiB,EAAEC,MAAc,EAAQ;MAC9H,IAAIY,OAAO,CAACC,IAAI,KAAK,SAAS,EAAE;QAC5B,IAAI,CAACD,OAAO,CAAC6B,KAAK,IAAI,CAAC7B,OAAO,CAAC6B,KAAK,CAACC,UAAU,CAAC,eAAe,CAAC,EAAE;UAC9DhD,MAAM,CAACiD,KAAK,CAAC,2BAA2B/B,OAAO,CAAC6B,KAAK,wBAAwB,EAAE,EAAE,EAAE,cAAc,CAAC;UAClG;QACJ;QAEA,MAAMG,OAAO,GAAGhC,OAAO,CAAC6B,KAAK,CAACI,OAAO,CAAC,eAAe,EAAE,EAAE,CAAC;QAC1D,MAAMC,IAAI,GAAGhD,MAAM,CAACiD,UAAU,GAAGH,OAAO,CAAC;QAEzC,IAAI,CAACE,IAAI,EAAE;UACPpD,MAAM,CAACiD,KAAK,CAAC,sBAAsBC,OAAO,oCAAoC,EAAE,EAAE,EAAE,cAAc,CAAC;UACnG;QACJ;QAEA,IAAI;UACA,MAAMI,SAAS,GAAGpC,OAAO,CAACK,KAAK,IAAI6B,IAAI,CAACG,EAAE,EAAEhC,KAAK,IAAI2B,OAAO;UAC5D,MAAM3B,KAAK,GAAG,IAAIiC,KAAK,CAAC;YACpBC,IAAI,EAAEH,SAAS;YACfI,QAAQ,EAAEN,IAAI,CAACM;UACnB,CAAC,CAAC;UAEF,MAAMC,aAAa,GAAG;YAAE,GAAGP;UAAK,CAAC;UACjC,IAAIlC,OAAO,CAAC0C,MAAM,EAAE;YAChBD,aAAa,CAACJ,EAAE,GAAG;cAAE,GAAGH,IAAI,CAACG,EAAE;cAAEK,MAAM,EAAE1C,OAAO,CAAC0C;YAAO,CAAC;UAC7D;UAEA,MAAMC,OAAO,GAAGvD,MAAM,CAACwD,aAAa,CAACH,aAAa,EAAE,IAAIT,OAAO,EAAE,EAAE7C,SAAS,CAAC;UAE7E,IAAIsD,aAAa,CAACJ,EAAE,EAAEQ,SAAS,EAAE;YAC7BC,GAAG,CAACT,EAAE,CAACU,OAAO,CAAC,CAAC,wBAAwB,CAAC,EAAGC,QAAa,IAAK;cAC1DL,OAAO,CAACM,aAAa,CAAC,IAAID,QAAQ,CAAC;gBAAEE,IAAI,EAAE;cAAmB,CAAC,CAAC,CAAC;YACrE,CAAC,CAAC;UACN;UAEA3C,IAAI,CAACoB,UAAU,CAACtB,KAAK,CAAC;UACtBE,IAAI,CAACoB,UAAU,CAACgB,OAAO,CAAC;QAC5B,CAAC,CAAC,OAAOZ,KAAK,EAAE;UACZjD,MAAM,CAACiD,KAAK,CAAC,0CAA0CC,OAAO,EAAE,EAAGD,KAAK,CAAWoB,OAAO,EAAE,cAAc,CAAC;UAC3G5C,IAAI,CAACoB,UAAU,CAAC,IAAIW,KAAK,CAAC;YAAEC,IAAI,EAAEP;UAAQ,CAAC,CAAC,CAAC;QACjD;MACJ,CAAC,MAAM;QACHlD,MAAM,CAACgB,IAAI,CAAC,uFAAuF,EAAE,EAAE,EAAE,cAAc,CAAC;MAC5H;IACJ;EACJ;EAAC,IAAAsD,SAAA;IAAAC,UAAA;EAAA;EAAAD,SAAA,CAAApE,YAAA,GAAAA,YAAA;EAAA,OAAAoE,SAAA;AAAA","ignoreList":[]}
1
+ {"version":3,"file":"WizardLayout-dbg.js","names":["SchemaNormalizer","___core_SchemaNormalizer","Logger","___utils_Logger","WizardLayout","render","schema","modelName","engine","onSubmit","wizard","Wizard","renderMode","showNextButton","complete","uiLayout","Array","isArray","warn","forEach","element","type","step","WizardStep","title","label","validated","form","SimpleForm","editable","layout","labelSpanXL","labelSpanL","labelSpanM","labelSpanS","adjustLabelSpan","emptySpanXL","emptySpanL","emptySpanM","emptySpanS","columnsXL","columnsL","columnsM","singleContainerFullSize","elements","childElement","_renderElementInForm","addContent","addStep","scope","startsWith","error","meta","bindingPath","propKey","resolveScope","labelText","ui","Label","text","required","effectiveMeta","widget","control","generateField","fullWidth","sap","require","GridData","setLayoutData","span","message","__exports","__esModule"],"sources":["WizardLayout.ts"],"sourcesContent":["/**\n * @file WizardLayout.ts\n * @description Generates a fully responsive SAP Fiori Wizard layout.\n */\n\nimport Wizard from \"sap/m/Wizard\";\nimport WizardStep from \"sap/m/WizardStep\";\nimport SimpleForm from \"sap/ui/layout/form/SimpleForm\";\nimport Label from \"sap/m/Label\";\nimport VBox from \"sap/m/VBox\";\nimport { IPropertyMetadata, ISchema, ILayoutElement } from \"../interfaces/ISchema\";\nimport { ILayoutManager } from \"../interfaces/ILayoutManager\";\nimport { Engine } from \"../core/Engine\";\nimport { SchemaNormalizer } from \"../core/SchemaNormalizer\";\nimport { Logger } from \"../utils/Logger\";\nimport Control from \"sap/ui/core/Control\";\n\n/**\n * Layout Manager responsible for generating a responsive SAP Fiori Wizard.\n * It segments the schema fields into discrete Wizard Steps based on `uiLayout` elements \n * of type `Group` or `WizardStep`.\n * \n * @namespace nz.co.siliconst.ui5.metaui.layouts\n * @public\n */\nexport class WizardLayout implements ILayoutManager {\n /**\n * Renders the JSON Schema properties into a paginated UI5 Wizard using uiLayout.\n * \n * @param schema The active JSON schema object.\n * @param modelName The bound UI5 model name.\n * @param engine The central orchestrator for delegating plugin generation.\n * @param onSubmit Hook executed when the Wizard's native 'complete' event is fired.\n * @returns {Control} The generated sap.m.Wizard control.\n */\n public render(schema: ISchema, modelName: string, engine: Engine, onSubmit?: () => void): Control {\n const wizard = new Wizard({\n renderMode: \"Page\",\n showNextButton: true,\n complete: function() {\n if (onSubmit) onSubmit();\n }\n });\n\n if (!schema.uiLayout || !Array.isArray(schema.uiLayout)) {\n Logger.warn(\"[MetaUI] Missing 'uiLayout' array in wizard schema. Wizard will not render any steps.\");\n return wizard;\n }\n\n schema.uiLayout.forEach((element: ILayoutElement) => {\n if (element.type === \"Group\" || element.type === \"WizardStep\") {\n const step = new WizardStep({\n title: element.label || \"Step\",\n validated: true // The PipelineManager handles global validation, wizard step validation can be local later\n });\n\n const form = new SimpleForm({\n editable: true,\n layout: \"ResponsiveGridLayout\",\n labelSpanXL: 4, labelSpanL: 4, labelSpanM: 4, labelSpanS: 12,\n adjustLabelSpan: false,\n emptySpanXL: 0, emptySpanL: 0, emptySpanM: 0, emptySpanS: 0,\n columnsXL: 1, columnsL: 1, columnsM: 1,\n singleContainerFullSize: false\n });\n \n if (element.elements && Array.isArray(element.elements)) {\n element.elements.forEach(childElement => {\n this._renderElementInForm(form, childElement, schema, modelName, engine);\n });\n }\n\n step.addContent(form);\n wizard.addStep(step);\n } else {\n Logger.warn(`[MetaUI] Top-level element '${element.type}' inside WizardLayout must be 'Group' or 'WizardStep'.`, \"\", \"WizardLayout\");\n }\n });\n\n return wizard;\n }\n\n private _renderElementInForm(form: SimpleForm, element: ILayoutElement, schema: ISchema, modelName: string, engine: Engine): void {\n if (element.type === \"Control\") {\n if (!element.scope || !element.scope.startsWith(\"#/properties/\")) {\n Logger.error(`[MetaUI] Invalid scope '${element.scope}' in uiLayout Control.`, \"\", \"WizardLayout\");\n return;\n }\n \n const { meta, bindingPath, propKey } = SchemaNormalizer.resolveScope(schema, element.scope);\n \n if (!meta) {\n Logger.error(`[MetaUI] Property '${propKey}' not found in schema definitions.`, \"\", \"WizardLayout\");\n return;\n }\n\n try {\n const labelText = element.label || meta.ui?.label || propKey;\n const label = new Label({\n text: labelText,\n required: meta.required\n });\n\n const effectiveMeta = { ...meta };\n if (element.widget) {\n effectiveMeta.ui = { ...meta.ui, widget: element.widget };\n }\n\n const control = engine.generateField(effectiveMeta, `/${bindingPath}`, modelName);\n\n if (effectiveMeta.ui?.fullWidth) {\n sap.ui.require([\"sap/ui/layout/GridData\"], (GridData: any) => {\n control.setLayoutData(new GridData({ span: \"XL12 L12 M12 S12\" }));\n });\n }\n\n form.addContent(label);\n form.addContent(control);\n } catch (error) {\n Logger.error(`[MetaUI] Failed to render Wizard field ${propKey}`, (error as Error).message, \"WizardLayout\");\n form.addContent(new Label({ text: propKey }));\n }\n } else {\n Logger.warn(`[MetaUI] Nested groups within Wizard steps are not fully supported in SimpleForm yet.`, \"\", \"WizardLayout\");\n }\n }\n}\n"],"mappings":"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","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"WizardLayout.d.ts","sourceRoot":"../../../../../../../..","sources":["src/nz/co/siliconst/ui5/metaui/layouts/WizardLayout.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,iDAAiD,CAAC;IAWjE,OAAO,EAAqB,OAAO,EAAkB,MAAM,+CAA+C,CAAC;IAC3G,OAAO,EAAE,cAAc,EAAE,MAAM,sDAAsD,CAAC;IACtF,OAAO,EAAE,MAAM,EAAE,MAAM,wCAAwC,CAAC;IAEhE,OAAO,OAAO,MAAM,qBAAqB,CAAC;IAE1C;;;;;;;OAOG;IACH,MAAa,YAAa,YAAW,cAAc;QAC/C;;;;;;;;WAQG;QACI,MAAM,CAAC,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,IAAI,GAAG,OAAO;QA+CjG,OAAO,CAAC,oBAAoB;KA6C/B;CAEA"}
1
+ {"version":3,"file":"WizardLayout.d.ts","sourceRoot":"../../../../../../../..","sources":["src/nz/co/siliconst/ui5/metaui/layouts/WizardLayout.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,iDAAiD,CAAC;IAWjE,OAAO,EAAqB,OAAO,EAAkB,MAAM,+CAA+C,CAAC;IAC3G,OAAO,EAAE,cAAc,EAAE,MAAM,sDAAsD,CAAC;IACtF,OAAO,EAAE,MAAM,EAAE,MAAM,wCAAwC,CAAC;IAGhE,OAAO,OAAO,MAAM,qBAAqB,CAAC;IAE1C;;;;;;;OAOG;IACH,MAAa,YAAa,YAAW,cAAc;QAC/C;;;;;;;;WAQG;QACI,MAAM,CAAC,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,IAAI,GAAG,OAAO;QA+CjG,OAAO,CAAC,oBAAoB;KA4C/B;CAEA"}
@@ -1,2 +1,2 @@
1
- sap.ui.define(["sap/m/Wizard","sap/m/WizardStep","sap/ui/layout/form/SimpleForm","sap/m/Label","../utils/Logger"],function(e,t,a,r,n){"use strict";const i=n["Logger"];class o{render(r,n,o,s){const u=new e({renderMode:"Page",showNextButton:true,complete:function(){if(s)s()}});if(!r.uiLayout||!Array.isArray(r.uiLayout)){i.warn("[MetaUI] Missing 'uiLayout' array in wizard schema. Wizard will not render any steps.");return u}r.uiLayout.forEach(e=>{if(e.type==="Group"||e.type==="WizardStep"){const i=new t({title:e.label||"Step",validated:true});const s=new a({editable:true,layout:"ResponsiveGridLayout",labelSpanXL:4,labelSpanL:4,labelSpanM:4,labelSpanS:12,adjustLabelSpan:false,emptySpanXL:0,emptySpanL:0,emptySpanM:0,emptySpanS:0,columnsXL:1,columnsL:1,columnsM:1,singleContainerFullSize:false});if(e.elements&&Array.isArray(e.elements)){e.elements.forEach(e=>{this._renderElementInForm(s,e,r,n,o)})}i.addContent(s);u.addStep(i)}else{i.warn(`[MetaUI] Top-level element '${e.type}' inside WizardLayout must be 'Group' or 'WizardStep'.`,"","WizardLayout")}});return u}_renderElementInForm(e,t,a,n,o){if(t.type==="Control"){if(!t.scope||!t.scope.startsWith("#/properties/")){i.error(`[MetaUI] Invalid scope '${t.scope}' in uiLayout Control.`,"","WizardLayout");return}const s=t.scope.replace("#/properties/","");const u=a.properties?.[s];if(!u){i.error(`[MetaUI] Property '${s}' not found in schema definitions.`,"","WizardLayout");return}try{const a=t.label||u.ui?.label||s;const i=new r({text:a,required:u.required});const l={...u};if(t.widget){l.ui={...u.ui,widget:t.widget}}const d=o.generateField(l,`/${s}`,n);if(l.ui?.fullWidth){sap.ui.require(["sap/ui/layout/GridData"],e=>{d.setLayoutData(new e({span:"XL12 L12 M12 S12"}))})}e.addContent(i);e.addContent(d)}catch(t){i.error(`[MetaUI] Failed to render Wizard field ${s}`,t.message,"WizardLayout");e.addContent(new r({text:s}))}}else{i.warn(`[MetaUI] Nested groups within Wizard steps are not fully supported in SimpleForm yet.`,"","WizardLayout")}}}var s={__esModule:true};s.WizardLayout=o;return s});
1
+ sap.ui.define(["sap/m/Wizard","sap/m/WizardStep","sap/ui/layout/form/SimpleForm","sap/m/Label","../core/SchemaNormalizer","../utils/Logger"],function(e,t,a,r,n,i){"use strict";const o=n["SchemaNormalizer"];const s=i["Logger"];class l{render(r,n,i,o){const l=new e({renderMode:"Page",showNextButton:true,complete:function(){if(o)o()}});if(!r.uiLayout||!Array.isArray(r.uiLayout)){s.warn("[MetaUI] Missing 'uiLayout' array in wizard schema. Wizard will not render any steps.");return l}r.uiLayout.forEach(e=>{if(e.type==="Group"||e.type==="WizardStep"){const o=new t({title:e.label||"Step",validated:true});const s=new a({editable:true,layout:"ResponsiveGridLayout",labelSpanXL:4,labelSpanL:4,labelSpanM:4,labelSpanS:12,adjustLabelSpan:false,emptySpanXL:0,emptySpanL:0,emptySpanM:0,emptySpanS:0,columnsXL:1,columnsL:1,columnsM:1,singleContainerFullSize:false});if(e.elements&&Array.isArray(e.elements)){e.elements.forEach(e=>{this._renderElementInForm(s,e,r,n,i)})}o.addContent(s);l.addStep(o)}else{s.warn(`[MetaUI] Top-level element '${e.type}' inside WizardLayout must be 'Group' or 'WizardStep'.`,"","WizardLayout")}});return l}_renderElementInForm(e,t,a,n,i){if(t.type==="Control"){if(!t.scope||!t.scope.startsWith("#/properties/")){s.error(`[MetaUI] Invalid scope '${t.scope}' in uiLayout Control.`,"","WizardLayout");return}const{meta:l,bindingPath:u,propKey:d}=o.resolveScope(a,t.scope);if(!l){s.error(`[MetaUI] Property '${d}' not found in schema definitions.`,"","WizardLayout");return}try{const a=t.label||l.ui?.label||d;const o=new r({text:a,required:l.required});const s={...l};if(t.widget){s.ui={...l.ui,widget:t.widget}}const p=i.generateField(s,`/${u}`,n);if(s.ui?.fullWidth){sap.ui.require(["sap/ui/layout/GridData"],e=>{p.setLayoutData(new e({span:"XL12 L12 M12 S12"}))})}e.addContent(o);e.addContent(p)}catch(t){s.error(`[MetaUI] Failed to render Wizard field ${d}`,t.message,"WizardLayout");e.addContent(new r({text:d}))}}else{s.warn(`[MetaUI] Nested groups within Wizard steps are not fully supported in SimpleForm yet.`,"","WizardLayout")}}}var u={__esModule:true};u.WizardLayout=l;return u});
2
2
  //# sourceMappingURL=WizardLayout.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"WizardLayout.js","names":["Logger","___utils_Logger","WizardLayout","render","schema","modelName","engine","onSubmit","wizard","Wizard","renderMode","showNextButton","complete","uiLayout","Array","isArray","warn","forEach","element","type","step","WizardStep","title","label","validated","form","SimpleForm","editable","layout","labelSpanXL","labelSpanL","labelSpanM","labelSpanS","adjustLabelSpan","emptySpanXL","emptySpanL","emptySpanM","emptySpanS","columnsXL","columnsL","columnsM","singleContainerFullSize","elements","childElement","this","_renderElementInForm","addContent","addStep","scope","startsWith","error","propKey","replace","meta","properties","labelText","ui","Label","text","required","effectiveMeta","widget","control","generateField","fullWidth","sap","require","GridData","setLayoutData","span","message","__exports","__esModule"],"sources":["WizardLayout.ts"],"sourcesContent":["/**\n * @file WizardLayout.ts\n * @description Generates a fully responsive SAP Fiori Wizard layout.\n */\n\nimport Wizard from \"sap/m/Wizard\";\nimport WizardStep from \"sap/m/WizardStep\";\nimport SimpleForm from \"sap/ui/layout/form/SimpleForm\";\nimport Label from \"sap/m/Label\";\nimport VBox from \"sap/m/VBox\";\nimport { IPropertyMetadata, ISchema, ILayoutElement } from \"../interfaces/ISchema\";\nimport { ILayoutManager } from \"../interfaces/ILayoutManager\";\nimport { Engine } from \"../core/Engine\";\nimport { Logger } from \"../utils/Logger\";\nimport Control from \"sap/ui/core/Control\";\n\n/**\n * Layout Manager responsible for generating a responsive SAP Fiori Wizard.\n * It segments the schema fields into discrete Wizard Steps based on `uiLayout` elements \n * of type `Group` or `WizardStep`.\n * \n * @namespace nz.co.siliconst.ui5.metaui.layouts\n * @public\n */\nexport class WizardLayout implements ILayoutManager {\n /**\n * Renders the JSON Schema properties into a paginated UI5 Wizard using uiLayout.\n * \n * @param schema The active JSON schema object.\n * @param modelName The bound UI5 model name.\n * @param engine The central orchestrator for delegating plugin generation.\n * @param onSubmit Hook executed when the Wizard's native 'complete' event is fired.\n * @returns {Control} The generated sap.m.Wizard control.\n */\n public render(schema: ISchema, modelName: string, engine: Engine, onSubmit?: () => void): Control {\n const wizard = new Wizard({\n renderMode: \"Page\",\n showNextButton: true,\n complete: function() {\n if (onSubmit) onSubmit();\n }\n });\n\n if (!schema.uiLayout || !Array.isArray(schema.uiLayout)) {\n Logger.warn(\"[MetaUI] Missing 'uiLayout' array in wizard schema. Wizard will not render any steps.\");\n return wizard;\n }\n\n schema.uiLayout.forEach((element: ILayoutElement) => {\n if (element.type === \"Group\" || element.type === \"WizardStep\") {\n const step = new WizardStep({\n title: element.label || \"Step\",\n validated: true // The PipelineManager handles global validation, wizard step validation can be local later\n });\n\n const form = new SimpleForm({\n editable: true,\n layout: \"ResponsiveGridLayout\",\n labelSpanXL: 4, labelSpanL: 4, labelSpanM: 4, labelSpanS: 12,\n adjustLabelSpan: false,\n emptySpanXL: 0, emptySpanL: 0, emptySpanM: 0, emptySpanS: 0,\n columnsXL: 1, columnsL: 1, columnsM: 1,\n singleContainerFullSize: false\n });\n \n if (element.elements && Array.isArray(element.elements)) {\n element.elements.forEach(childElement => {\n this._renderElementInForm(form, childElement, schema, modelName, engine);\n });\n }\n\n step.addContent(form);\n wizard.addStep(step);\n } else {\n Logger.warn(`[MetaUI] Top-level element '${element.type}' inside WizardLayout must be 'Group' or 'WizardStep'.`, \"\", \"WizardLayout\");\n }\n });\n\n return wizard;\n }\n\n private _renderElementInForm(form: SimpleForm, element: ILayoutElement, schema: ISchema, modelName: string, engine: Engine): void {\n if (element.type === \"Control\") {\n if (!element.scope || !element.scope.startsWith(\"#/properties/\")) {\n Logger.error(`[MetaUI] Invalid scope '${element.scope}' in uiLayout Control.`, \"\", \"WizardLayout\");\n return;\n }\n \n const propKey = element.scope.replace(\"#/properties/\", \"\");\n const meta = schema.properties?.[propKey];\n \n if (!meta) {\n Logger.error(`[MetaUI] Property '${propKey}' not found in schema definitions.`, \"\", \"WizardLayout\");\n return;\n }\n\n try {\n const labelText = element.label || meta.ui?.label || propKey;\n const label = new Label({\n text: labelText,\n required: meta.required\n });\n\n const effectiveMeta = { ...meta };\n if (element.widget) {\n effectiveMeta.ui = { ...meta.ui, widget: element.widget };\n }\n\n const control = engine.generateField(effectiveMeta, `/${propKey}`, modelName);\n\n if (effectiveMeta.ui?.fullWidth) {\n sap.ui.require([\"sap/ui/layout/GridData\"], (GridData: any) => {\n control.setLayoutData(new GridData({ span: \"XL12 L12 M12 S12\" }));\n });\n }\n\n form.addContent(label);\n form.addContent(control);\n } catch (error) {\n Logger.error(`[MetaUI] Failed to render Wizard field ${propKey}`, (error as Error).message, \"WizardLayout\");\n form.addContent(new Label({ text: propKey }));\n }\n } else {\n Logger.warn(`[MetaUI] Nested groups within Wizard steps are not fully supported in SimpleForm yet.`, \"\", \"WizardLayout\");\n }\n }\n}\n"],"mappings":"yJAaSA,EAAMC,EAAA,UAWR,MAAMC,EAUFC,OAAOC,EAAiBC,EAAmBC,EAAgBC,GAC9D,MAAMC,EAAS,IAAIC,EAAO,CACtBC,WAAY,OACZC,eAAgB,KAChBC,SAAU,WACN,GAAIL,EAAUA,GAClB,IAGJ,IAAKH,EAAOS,WAAaC,MAAMC,QAAQX,EAAOS,UAAW,CACrDb,EAAOgB,KAAK,yFACZ,OAAOR,CACX,CAEAJ,EAAOS,SAASI,QAASC,IACrB,GAAIA,EAAQC,OAAS,SAAWD,EAAQC,OAAS,aAAc,CAC3D,MAAMC,EAAO,IAAIC,EAAW,CACxBC,MAAOJ,EAAQK,OAAS,OACxBC,UAAW,OAGf,MAAMC,EAAO,IAAIC,EAAW,CACxBC,SAAU,KACVC,OAAQ,uBACRC,YAAa,EAAGC,WAAY,EAAGC,WAAY,EAAGC,WAAY,GAC1DC,gBAAiB,MACjBC,YAAa,EAAGC,WAAY,EAAGC,WAAY,EAAGC,WAAY,EAC1DC,UAAW,EAAGC,SAAU,EAAGC,SAAU,EACrCC,wBAAyB,QAG7B,GAAIvB,EAAQwB,UAAY5B,MAAMC,QAAQG,EAAQwB,UAAW,CACrDxB,EAAQwB,SAASzB,QAAQ0B,IACrBC,KAAKC,qBAAqBpB,EAAMkB,EAAcvC,EAAQC,EAAWC,IAEzE,CAEAc,EAAK0B,WAAWrB,GAChBjB,EAAOuC,QAAQ3B,EACnB,KAAO,CACHpB,EAAOgB,KAAK,+BAA+BE,EAAQC,6DAA8D,GAAI,eACzH,IAGJ,OAAOX,CACX,CAEQqC,qBAAqBpB,EAAkBP,EAAyBd,EAAiBC,EAAmBC,GACxG,GAAIY,EAAQC,OAAS,UAAW,CAC5B,IAAKD,EAAQ8B,QAAU9B,EAAQ8B,MAAMC,WAAW,iBAAkB,CAC9DjD,EAAOkD,MAAM,2BAA2BhC,EAAQ8B,8BAA+B,GAAI,gBACnF,MACJ,CAEA,MAAMG,EAAUjC,EAAQ8B,MAAMI,QAAQ,gBAAiB,IACvD,MAAMC,EAAOjD,EAAOkD,aAAaH,GAEjC,IAAKE,EAAM,CACPrD,EAAOkD,MAAM,sBAAsBC,sCAA6C,GAAI,gBACpF,MACJ,CAEA,IACI,MAAMI,EAAYrC,EAAQK,OAAS8B,EAAKG,IAAIjC,OAAS4B,EACrD,MAAM5B,EAAQ,IAAIkC,EAAM,CACpBC,KAAMH,EACNI,SAAUN,EAAKM,WAGnB,MAAMC,EAAgB,IAAKP,GAC3B,GAAInC,EAAQ2C,OAAQ,CAChBD,EAAcJ,GAAK,IAAKH,EAAKG,GAAIK,OAAQ3C,EAAQ2C,OACrD,CAEA,MAAMC,EAAUxD,EAAOyD,cAAcH,EAAe,IAAIT,IAAW9C,GAEnE,GAAIuD,EAAcJ,IAAIQ,UAAW,CAC7BC,IAAIT,GAAGU,QAAQ,CAAC,0BAA4BC,IACxCL,EAAQM,cAAc,IAAID,EAAS,CAAEE,KAAM,uBAEnD,CAEA5C,EAAKqB,WAAWvB,GAChBE,EAAKqB,WAAWgB,EACpB,CAAE,MAAOZ,GACLlD,EAAOkD,MAAM,0CAA0CC,IAAYD,EAAgBoB,QAAS,gBAC5F7C,EAAKqB,WAAW,IAAIW,EAAM,CAAEC,KAAMP,IACtC,CACJ,KAAO,CACHnD,EAAOgB,KAAK,wFAAyF,GAAI,eAC7G,CACJ,EACH,IAAAuD,EAAA,CAAAC,WAAA,MAAAD,EAAArE,eAAA,OAAAqE,CAAA","ignoreList":[]}
1
+ {"version":3,"file":"WizardLayout.js","names":["SchemaNormalizer","___core_SchemaNormalizer","Logger","___utils_Logger","WizardLayout","render","schema","modelName","engine","onSubmit","wizard","Wizard","renderMode","showNextButton","complete","uiLayout","Array","isArray","warn","forEach","element","type","step","WizardStep","title","label","validated","form","SimpleForm","editable","layout","labelSpanXL","labelSpanL","labelSpanM","labelSpanS","adjustLabelSpan","emptySpanXL","emptySpanL","emptySpanM","emptySpanS","columnsXL","columnsL","columnsM","singleContainerFullSize","elements","childElement","this","_renderElementInForm","addContent","addStep","scope","startsWith","error","meta","bindingPath","propKey","resolveScope","labelText","ui","Label","text","required","effectiveMeta","widget","control","generateField","fullWidth","sap","require","GridData","setLayoutData","span","message","__exports","__esModule"],"sources":["WizardLayout.ts"],"sourcesContent":["/**\n * @file WizardLayout.ts\n * @description Generates a fully responsive SAP Fiori Wizard layout.\n */\n\nimport Wizard from \"sap/m/Wizard\";\nimport WizardStep from \"sap/m/WizardStep\";\nimport SimpleForm from \"sap/ui/layout/form/SimpleForm\";\nimport Label from \"sap/m/Label\";\nimport VBox from \"sap/m/VBox\";\nimport { IPropertyMetadata, ISchema, ILayoutElement } from \"../interfaces/ISchema\";\nimport { ILayoutManager } from \"../interfaces/ILayoutManager\";\nimport { Engine } from \"../core/Engine\";\nimport { SchemaNormalizer } from \"../core/SchemaNormalizer\";\nimport { Logger } from \"../utils/Logger\";\nimport Control from \"sap/ui/core/Control\";\n\n/**\n * Layout Manager responsible for generating a responsive SAP Fiori Wizard.\n * It segments the schema fields into discrete Wizard Steps based on `uiLayout` elements \n * of type `Group` or `WizardStep`.\n * \n * @namespace nz.co.siliconst.ui5.metaui.layouts\n * @public\n */\nexport class WizardLayout implements ILayoutManager {\n /**\n * Renders the JSON Schema properties into a paginated UI5 Wizard using uiLayout.\n * \n * @param schema The active JSON schema object.\n * @param modelName The bound UI5 model name.\n * @param engine The central orchestrator for delegating plugin generation.\n * @param onSubmit Hook executed when the Wizard's native 'complete' event is fired.\n * @returns {Control} The generated sap.m.Wizard control.\n */\n public render(schema: ISchema, modelName: string, engine: Engine, onSubmit?: () => void): Control {\n const wizard = new Wizard({\n renderMode: \"Page\",\n showNextButton: true,\n complete: function() {\n if (onSubmit) onSubmit();\n }\n });\n\n if (!schema.uiLayout || !Array.isArray(schema.uiLayout)) {\n Logger.warn(\"[MetaUI] Missing 'uiLayout' array in wizard schema. Wizard will not render any steps.\");\n return wizard;\n }\n\n schema.uiLayout.forEach((element: ILayoutElement) => {\n if (element.type === \"Group\" || element.type === \"WizardStep\") {\n const step = new WizardStep({\n title: element.label || \"Step\",\n validated: true // The PipelineManager handles global validation, wizard step validation can be local later\n });\n\n const form = new SimpleForm({\n editable: true,\n layout: \"ResponsiveGridLayout\",\n labelSpanXL: 4, labelSpanL: 4, labelSpanM: 4, labelSpanS: 12,\n adjustLabelSpan: false,\n emptySpanXL: 0, emptySpanL: 0, emptySpanM: 0, emptySpanS: 0,\n columnsXL: 1, columnsL: 1, columnsM: 1,\n singleContainerFullSize: false\n });\n \n if (element.elements && Array.isArray(element.elements)) {\n element.elements.forEach(childElement => {\n this._renderElementInForm(form, childElement, schema, modelName, engine);\n });\n }\n\n step.addContent(form);\n wizard.addStep(step);\n } else {\n Logger.warn(`[MetaUI] Top-level element '${element.type}' inside WizardLayout must be 'Group' or 'WizardStep'.`, \"\", \"WizardLayout\");\n }\n });\n\n return wizard;\n }\n\n private _renderElementInForm(form: SimpleForm, element: ILayoutElement, schema: ISchema, modelName: string, engine: Engine): void {\n if (element.type === \"Control\") {\n if (!element.scope || !element.scope.startsWith(\"#/properties/\")) {\n Logger.error(`[MetaUI] Invalid scope '${element.scope}' in uiLayout Control.`, \"\", \"WizardLayout\");\n return;\n }\n \n const { meta, bindingPath, propKey } = SchemaNormalizer.resolveScope(schema, element.scope);\n \n if (!meta) {\n Logger.error(`[MetaUI] Property '${propKey}' not found in schema definitions.`, \"\", \"WizardLayout\");\n return;\n }\n\n try {\n const labelText = element.label || meta.ui?.label || propKey;\n const label = new Label({\n text: labelText,\n required: meta.required\n });\n\n const effectiveMeta = { ...meta };\n if (element.widget) {\n effectiveMeta.ui = { ...meta.ui, widget: element.widget };\n }\n\n const control = engine.generateField(effectiveMeta, `/${bindingPath}`, modelName);\n\n if (effectiveMeta.ui?.fullWidth) {\n sap.ui.require([\"sap/ui/layout/GridData\"], (GridData: any) => {\n control.setLayoutData(new GridData({ span: \"XL12 L12 M12 S12\" }));\n });\n }\n\n form.addContent(label);\n form.addContent(control);\n } catch (error) {\n Logger.error(`[MetaUI] Failed to render Wizard field ${propKey}`, (error as Error).message, \"WizardLayout\");\n form.addContent(new Label({ text: propKey }));\n }\n } else {\n Logger.warn(`[MetaUI] Nested groups within Wizard steps are not fully supported in SimpleForm yet.`, \"\", \"WizardLayout\");\n }\n }\n}\n"],"mappings":"sLAaSA,EAAgBC,EAAA,0BAChBC,EAAMC,EAAA,UAWR,MAAMC,EAUFC,OAAOC,EAAiBC,EAAmBC,EAAgBC,GAC9D,MAAMC,EAAS,IAAIC,EAAO,CACtBC,WAAY,OACZC,eAAgB,KAChBC,SAAU,WACN,GAAIL,EAAUA,GAClB,IAGJ,IAAKH,EAAOS,WAAaC,MAAMC,QAAQX,EAAOS,UAAW,CACrDb,EAAOgB,KAAK,yFACZ,OAAOR,CACX,CAEAJ,EAAOS,SAASI,QAASC,IACrB,GAAIA,EAAQC,OAAS,SAAWD,EAAQC,OAAS,aAAc,CAC3D,MAAMC,EAAO,IAAIC,EAAW,CACxBC,MAAOJ,EAAQK,OAAS,OACxBC,UAAW,OAGf,MAAMC,EAAO,IAAIC,EAAW,CACxBC,SAAU,KACVC,OAAQ,uBACRC,YAAa,EAAGC,WAAY,EAAGC,WAAY,EAAGC,WAAY,GAC1DC,gBAAiB,MACjBC,YAAa,EAAGC,WAAY,EAAGC,WAAY,EAAGC,WAAY,EAC1DC,UAAW,EAAGC,SAAU,EAAGC,SAAU,EACrCC,wBAAyB,QAG7B,GAAIvB,EAAQwB,UAAY5B,MAAMC,QAAQG,EAAQwB,UAAW,CACrDxB,EAAQwB,SAASzB,QAAQ0B,IACrBC,KAAKC,qBAAqBpB,EAAMkB,EAAcvC,EAAQC,EAAWC,IAEzE,CAEAc,EAAK0B,WAAWrB,GAChBjB,EAAOuC,QAAQ3B,EACnB,KAAO,CACHpB,EAAOgB,KAAK,+BAA+BE,EAAQC,6DAA8D,GAAI,eACzH,IAGJ,OAAOX,CACX,CAEQqC,qBAAqBpB,EAAkBP,EAAyBd,EAAiBC,EAAmBC,GACxG,GAAIY,EAAQC,OAAS,UAAW,CAC5B,IAAKD,EAAQ8B,QAAU9B,EAAQ8B,MAAMC,WAAW,iBAAkB,CAC9DjD,EAAOkD,MAAM,2BAA2BhC,EAAQ8B,8BAA+B,GAAI,gBACnF,MACJ,CAEA,MAAMG,KAAEA,EAAIC,YAAEA,EAAWC,QAAEA,GAAYvD,EAAiBwD,aAAalD,EAAQc,EAAQ8B,OAErF,IAAKG,EAAM,CACPnD,EAAOkD,MAAM,sBAAsBG,sCAA6C,GAAI,gBACpF,MACJ,CAEA,IACI,MAAME,EAAYrC,EAAQK,OAAS4B,EAAKK,IAAIjC,OAAS8B,EACrD,MAAM9B,EAAQ,IAAIkC,EAAM,CACpBC,KAAMH,EACNI,SAAUR,EAAKQ,WAGnB,MAAMC,EAAgB,IAAKT,GAC3B,GAAIjC,EAAQ2C,OAAQ,CAChBD,EAAcJ,GAAK,IAAKL,EAAKK,GAAIK,OAAQ3C,EAAQ2C,OACrD,CAEA,MAAMC,EAAUxD,EAAOyD,cAAcH,EAAe,IAAIR,IAAe/C,GAEvE,GAAIuD,EAAcJ,IAAIQ,UAAW,CAC7BC,IAAIT,GAAGU,QAAQ,CAAC,0BAA4BC,IACxCL,EAAQM,cAAc,IAAID,EAAS,CAAEE,KAAM,uBAEnD,CAEA5C,EAAKqB,WAAWvB,GAChBE,EAAKqB,WAAWgB,EACpB,CAAE,MAAOZ,GACLlD,EAAOkD,MAAM,0CAA0CG,IAAYH,EAAgBoB,QAAS,gBAC5F7C,EAAKqB,WAAW,IAAIW,EAAM,CAAEC,KAAML,IACtC,CACJ,KAAO,CACHrD,EAAOgB,KAAK,wFAAyF,GAAI,eAC7G,CACJ,EACH,IAAAuD,EAAA,CAAAC,WAAA,MAAAD,EAAArE,eAAA,OAAAqE,CAAA","ignoreList":[]}
@@ -11,6 +11,7 @@ import VBox from "sap/m/VBox";
11
11
  import { IPropertyMetadata, ISchema, ILayoutElement } from "../interfaces/ISchema";
12
12
  import { ILayoutManager } from "../interfaces/ILayoutManager";
13
13
  import { Engine } from "../core/Engine";
14
+ import { SchemaNormalizer } from "../core/SchemaNormalizer";
14
15
  import { Logger } from "../utils/Logger";
15
16
  import Control from "sap/ui/core/Control";
16
17
 
@@ -86,8 +87,7 @@ export class WizardLayout implements ILayoutManager {
86
87
  return;
87
88
  }
88
89
 
89
- const propKey = element.scope.replace("#/properties/", "");
90
- const meta = schema.properties?.[propKey];
90
+ const { meta, bindingPath, propKey } = SchemaNormalizer.resolveScope(schema, element.scope);
91
91
 
92
92
  if (!meta) {
93
93
  Logger.error(`[MetaUI] Property '${propKey}' not found in schema definitions.`, "", "WizardLayout");
@@ -106,7 +106,7 @@ export class WizardLayout implements ILayoutManager {
106
106
  effectiveMeta.ui = { ...meta.ui, widget: element.widget };
107
107
  }
108
108
 
109
- const control = engine.generateField(effectiveMeta, `/${propKey}`, modelName);
109
+ const control = engine.generateField(effectiveMeta, `/${bindingPath}`, modelName);
110
110
 
111
111
  if (effectiveMeta.ui?.fullWidth) {
112
112
  sap.ui.require(["sap/ui/layout/GridData"], (GridData: any) => {